imsg-rpc
Set up, maintain, and debug the imsg-rpc Unix socket daemon that gives the gateway iMessage access via JSON-RPC. Covers FDA setup, code signing, launchd service, and the imsg source repo.
adr-skill
Create and maintain Architecture Decision Records (ADRs) optimized for agentic coding workflows. Use when you need to propose, write, update, accept/reject, deprecate, or supersede an ADR; bootstrap an adr folder and index; consult existing ADRs before implementing changes; or enforce ADR convent...
Full skill instructions
ADRs created with this skill are executable specifications for coding agents. A human approves the decision; an agent implements it. The ADR must contain everything the agent needs to write correct code without asking follow-up questions.
This means:
Write an ADR when a decision:
Do NOT write an ADR for:
When in doubt: if a future agent working in this codebase would benefit from knowing why this choice was made, write the ADR.
If you are an agent coding in a repo and you encounter any of these situations, stop and propose an ADR before continuing:
How to propose: Tell the human what decision you've hit, why it matters, and ask if they want to capture it as an ADR. If yes, run the full four-phase workflow. If no, note the decision in a code comment and move on.
Every ADR goes through four phases. Do not skip phases.
Before asking any questions, gather context from the repo:
Find existing ADRs. Check docs/decisions/, adr/, docs/adr/, decisions/ for existing records. Read them. Note:
Check the tech stack. Read package.json, go.mod, requirements.txt, Cargo.toml, or equivalent. Note relevant dependencies and versions.
Find related code patterns. If the decision involves a specific area (e.g., "how we handle auth"), scan for existing implementations. Identify the specific files, directories, and patterns that will be affected by the decision.
Check for ADR references in code. Look for ADR-NNNN references in comments and docs (see "Code ↔ ADR Linking" below). This reveals which existing decisions govern which parts of the codebase.
Draft required-skills preflight. Based on impacted areas, list the skills that must be loaded before implementation starts. Use canonical skill names and include a one-line reason per skill.
Note what you found. Carry this context into Phase 1 — it will sharpen your questions and prevent the ADR from contradicting existing decisions.
Capture a visual baseline when helpful. If visual-explainer is available, run /project-recap for unfamiliar systems or /generate-web-diagram for current architecture. Use this as pre-decision context, not as a replacement for written reasoning.
Interview the human to understand the decision space. Ask questions one at a time, building on previous answers. Do not dump a list of questions.
Core questions (ask in roughly this order, skip what's already clear from context or Phase 0):
find-skills./generate-web-diagram, /plan-review, /diff-review) and where links should live.Adaptive follow-ups: Based on answers, probe deeper where the decision is fuzzy. Common follow-ups:
When to stop: You have enough when you can fill every section of the ADR — including the Implementation Plan — without making things up. If you're guessing at any section, ask another question.
Intent Summary Gate: Before moving to Phase 2, present a structured summary of what you captured and ask the human to confirm or correct it:
Here's what I'm capturing for the ADR:
- Title: {title}
- Trigger: {why now}
- Constraints: {list}
- Required skills (preflight): {skill names + why needed}
- Options: {option 1} vs {option 2} [vs ...]
- Lean: {which option and why}
- Non-goals: {what's explicitly out of scope}
- Related ADRs/code: {what exists that this interacts with}
- Affected files/areas: {where in the codebase this lands}
- Verification: {how we'll know it's implemented correctly}
- Visual artifacts: {which diagrams/reviews to generate, if any}
Does this capture your intent? Anything to add or correct?
Do NOT proceed to Phase 2 until the human confirms the summary.
Choose the ADR directory.
docs/decisions/ (MADR default) or adr/ (simpler repos).Choose a filename strategy.
0001-...), continue that.choose-database.md).Choose a template.
assets/templates/adr-simple.md for straightforward decisions (one clear winner, minimal tradeoffs).assets/templates/adr-madr.md when you need to document multiple options with structured pros/cons/drivers.references/template-variants.md for guidance.Fill every section from the confirmed intent summary. Do not leave placeholder text. Every section should contain real content or be removed (optional sections only).
Write the Implementation Plan (including required skills preflight). This is the most important section for agent-first ADRs. It tells the next agent exactly what to do and which skills to load before starting. See the template for structure.
Write Verification criteria as checkboxes. These must be specific enough that an agent can programmatically or manually check each one.
Generate visual artifacts (recommended for architecture-impacting ADRs).
/generate-web-diagram for proposed architecture or flow./plan-review <adr-file> after drafting to validate Implementation Plan coverage./diff-review for before/after comparison.## Visual Artifacts (or ## More Information if the section is omitted).Generate the file.
scripts/new_adr.js (handles directory, naming, and optional index updates).assets/templates/ and fill it manually.After drafting, review the ADR against the agent-readiness checklist in references/review-checklist.md.
Present the review as a summary, not a raw checklist dump. Format:
ADR Review
✅ Passes: {list what's solid — e.g., "context is self-contained, implementation plan covers affected files, verification criteria are checkable"}
⚠️ Gaps found:
- {specific gap 1 — e.g., "Implementation Plan doesn't mention test files — which test suite should cover this?"}
- {specific gap 2}
Recommendation: {Ship it / Fix the gaps first / Needs more Phase 1 work}
Only surface failures and notable strengths — do not recite every passing checkbox.
If there are gaps, propose specific fixes. Do not just flag problems — offer solutions and ask the human to approve.
Do not finalize until the ADR passes the checklist or the human explicitly accepts the gaps.
For ADRs with visuals, run /fact-check <visual-or-adr-output> if available before final recommendation to verify claims against the codebase.
Agents should read existing ADRs before implementing changes in a codebase that has them. This is not part of the create-an-ADR workflow — it's a standalone operation any agent should do.
ADR-NNNN reference in a code commentFind the ADR directory. Check docs/decisions/, adr/, docs/adr/, decisions/. Also check for an index file (README.md or index.md).
Scan titles and statuses. Read the index or list filenames. Focus on accepted ADRs — these are active decisions.
Read relevant ADRs fully. Don't just read the title — read context, decision, consequences, non-goals, AND the Implementation Plan. The Implementation Plan tells you what patterns to follow and what files are governed by this decision.
Respect the decisions. If an accepted ADR says "use PostgreSQL," don't propose switching to MongoDB without creating a new ADR that supersedes it. If you find a conflict between what the code does and what the ADR says, flag it to the human.
Follow the Implementation Plan. When implementing code in an area governed by an ADR, follow the patterns specified in its Implementation Plan. If the plan says "all new queries go through the data-access layer in src/db/," do that.
Reference ADRs in your work. Add ADR-NNNN references in code comments and PR descriptions (see "Code ↔ ADR Linking" below).
ADRs should be bidirectionally linked to the code they govern.
The Implementation Plan section names specific files, directories, and patterns:
## Implementation Plan
- **Required skills (load before implementation starts)**: `inngest-steps` (durable step patterns), `system-bus` (repo conventions)
- **Affected paths**: `src/db/`, `src/config/database.ts`, `tests/integration/`
- **Pattern**: all database queries go through `src/db/client.ts`
When implementing code guided by an ADR, add a comment referencing it:
// ADR-0004: Using better-sqlite3 for test database
// See: docs/decisions/0004-use-sqlite-for-test-database.md
import Database from 'better-sqlite3';
Keep these lightweight — one comment at the entry point, not on every line. The goal is discoverability: when a future agent reads this code, they can find the reasoning.
src/db/ can find which ADRs govern that areaArchitecture-changing ADRs should also link to generated visual artifacts.
Include a ## Visual Artifacts section (or use ## More Information) with stable paths to generated HTML, for example:
## Visual Artifacts
- Proposed architecture: `docs/decisions/diagrams/0007-auth-flow.html`
- Plan validation: `docs/decisions/diagrams/0007-plan-review.html`
Name visual files with ADR IDs/slugs where possible (for example 0007-auth-flow.html) so future agents can map pages back to the decision quickly.
When the current task is done and it's time to pick the next ADR, use the rubric-based ranking.
joelclaw vault adr next
Returns the top 3 candidates from proposed/accepted ADRs, sorted by the NRC+Novelty rubric (Need × 0.5 + Readiness × 0.3 + Confidence × 0.2, adjusted by Novelty). Each candidate shows score, band, axis breakdown, and rationale.
When choosing between candidates:
# See all open ADRs with rubric ranking
joelclaw vault adr rank
# Show 10 candidates
joelclaw vault adr next --count 10
# Read a specific candidate
joelclaw vault read ADR-0194
joelclaw vault read ADR-XXXXstatus: accepted in frontmattershipped when done, with a verification sectionIdentify the intent:
deprecated, explain replacement path.## More Information with a date stamp. Do not rewrite history.Use scripts/set_adr_status.js for status changes (supports YAML front matter, bullet status, and section status).
After ANY ADR create, update, accept, reject, deprecate, or supersede:
joelclaw send system/adr.sync.requested -d '{"source":"adr-skill"}'
This syncs the ADR to the system_knowledge Typesense collection so agents can find it via semantic search. This is not optional. If you skip it, the brain is stale and agents make decisions without current context.
For bulk sync (e.g., after editing multiple ADRs):
joelclaw knowledge sync
After an ADR is accepted:
ADR-NNNN comments at key implementation points.## More Information.If the repo has an ADR index/log file (often README.md or index.md in the ADR dir), keep it updated.
Preferred: let scripts/new_adr.js --update-index do it. Otherwise:
When introducing ADRs to a repo that has none:
node /path/to/adr-skill/scripts/bootstrap_adr.js
This creates the directory, an index file, and a filled-out first ADR ("Adopt architecture decision records") with real content explaining why the team is using ADRs. Use --json for machine-readable output. Use --dir to override the directory name.
For repos with many ADRs, organize by subdirectory:
docs/decisions/
backend/
0001-use-postgres.md
frontend/
0001-use-react.md
infrastructure/
0001-use-terraform.md
Numbers are local to each category. Choose a categorization scheme early (by layer, by domain, by team) and document it in the index.
If visual-explainer is installed as a skill, use it to generate rich HTML visualizations of ADR content.
Install:
pi install https://github.com/nicobailon/visual-explainer
Primary commands:
/diff-review — before/after architecture diagrams when an ADR changes system design/plan-review <adr-file> — cross-reference ADR implementation plan against actual codebase/project-recap — architecture snapshot useful when writing new ADRs for unfamiliar areas/generate-web-diagram — Mermaid architecture diagrams to embed or reference from ADRs/fact-check <doc-or-html> — verify review/plan claims against the current codebaseThese produce self-contained HTML pages in ~/.agent/diagrams/ with light/dark themes and interactive Mermaid diagrams.
Recommended ADR flow:
Phase 0: /project-recap (optional baseline)Phase 2: /generate-web-diagram (proposed architecture)Phase 3: /plan-review <adr-file> and /fact-check <output>docs/decisions/diagrams/) and link from the ADRscripts/new_adr.js — create a new ADR file from a template, using repo conventions.scripts/set_adr_status.js — update an ADR status in-place (YAML front matter or inline). Use --json for machine output.scripts/bootstrap_adr.js — create ADR dir, README.md, and initial "Adopt ADRs" decision.references/review-checklist.md — agent-readiness checklist for Phase 3 review.references/adr-conventions.md — directory, filename, status, and lifecycle conventions.references/template-variants.md — when to use simple vs MADR-style templates.references/examples.md — filled-out short and long ADR examples with implementation plans.assets/templates/adr-simple.md — lean template for straightforward decisions.assets/templates/adr-madr.md — MADR 4.0 template for decisions with multiple options and structured tradeoffs.assets/templates/adr-readme.md — default ADR index scaffold used by scripts/bootstrap_adr.js.From the target repo root:
# Simple ADR
node /path/to/adr-skill/scripts/new_adr.js --title "Choose database" --status proposed
# MADR-style with options
node /path/to/adr-skill/scripts/new_adr.js --title "Choose database" --template madr --status proposed
# With index update
node /path/to/adr-skill/scripts/new_adr.js --title "Choose database" --status proposed --update-index
# Bootstrap a new repo
node /path/to/adr-skill/scripts/bootstrap_adr.js --dir docs/decisions
Notes:
--dir and --strategy to override.--json to emit machine-readable output.Set up, maintain, and debug the imsg-rpc Unix socket daemon that gives the gateway iMessage access via JSON-RPC. Covers FDA setup, code signing, launchd service, and the imsg source repo.
Design and send Inngest events. Covers event schema and payload format, naming conventions, IDs for idempotency, the ts param, fan-out patterns, and system events like inngest/function.failed.
Set up self-hosted Inngest on macOS as a durable background task manager for AI agents. Interactive Q&A to match intent — from Docker one-liner to full k8s deployment with persistent state. Use when: 'set up inngest', 'background tasks', 'durable workflows', 'self-host inngest', 'event-driven fun...
Manage feed subscriptions that track blogs, repos, and living pages for changes. Use when adding, listing, removing, or checking monitored resources. Also use when the discovery skill flags a resource as monitorable. Triggers on: 'monitor this', 'subscribe to', 'track this repo', 'watch this blog...
Upload, manage, and embed videos via Mux. Covers direct uploads, API asset management, webhook event flow, playback embedding, and the Mux CLI. Use when uploading video, creating assets, checking encoding status, embedding playback, or handling Mux webhook events.
Generate a daily system activity summary across all joelclaw subsystems. Triggers on 'daily summary', 'what happened today', 'system report', 'today's tally', 'activity summary', 'what did we do', 'daily report'.
Operate Joel's Obsidian Vault through the joelclaw CLI. Use when reading ADRs/projects, searching notes, listing PARA sections, or auditing ADR hygiene with `vault adr` commands. Triggers on: 'check the vault', 'read ADR', 'find this note', 'vault search', 'ADR collisions', 'ADR audit', 'decision...
Operate and extend the joelclaw agent memory system — observation pipeline, write gates, vector store, retrieval, reflection, and nightly maintenance. Use when working on memory functions, debugging recall, tuning observation quality, or evolving the memory architecture.
Operate the joelclaw event bus, gateway, observability, and agent loop infrastructure via the joelclaw CLI. Use for: sending events, checking runs, starting/monitoring/cancelling agent loops, debugging failed runs, checking health, restarting the worker, inspecting step traces, managing subscript...
Monitor running agent loops, triage failures, clean up after completion, and decide when to intervene. Use when a loop is running and needs babysitting, when a loop just finished and needs post-merge verification, when stories are skipping/failing and need diagnosis, or when stale test artifacts ...
Transform Obsidian video notes from the Vault into published notes on joelclaw.com. Use when publishing video notes, converting vault video content to the site, or when asked to 'publish a video note,' 'turn this video into a note,' 'publish from vault/videos,' or any task involving /Vault/Resour...
Research and library synthesis from the docs/PDF corpus, mapped to joelclaw system philosophy and concrete operational actions (especially k8s reliability). Trigger on: 'research this', 'from the library', 'from the books', 'pdf brain', 'correlate this', 'synthesize', or any request to derive pra...
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience