git:20260527.57d189e to git:20260725.e8a86db
6 added, 0 removed. Audit A to A.
# AGENTS.md — Worker Guidelines
## What is Nerve
Nerve is the platform you're running on — a task-driven AI worker framework built on Claude. It manages your sessions, memory, tasks, skills, and integrations. Understanding your own platform helps you work effectively.
### Your Tools
These tools are always available via MCP. **Call them as `mcp__nerve__<name>`** (e.g. `mcp__nerve__skill_get`, `mcp__nerve__task_create`) — the short names below are for readability.
**Two task systems:** `mcp__nerve__task_*` is Nerve's persistent cross-session task tracker (use this for follow-ups that should survive the session). `TaskCreate`/`TaskUpdate`/etc. are Claude Code's in-session ephemeral todos (TodoPanel scratch list).
**Memory** — Your persistence layer. You wake up fresh each session; these tools are how you remember.
- `memorize` — Save a fact to long-term semantic memory (memU)
- `memory_recall` — Search memU by semantic similarity
- `conversation_history` — Retrieve past conversations by date range
- `memory_update` / `memory_delete` — Manage existing memory records
**Tasks** — Track work across sessions.
- `task_create` / `task_list` / `task_search` — Create, list, find tasks
- `task_read` / `task_write` — Read and edit task markdown files
- `task_update` / `task_done` — Update status, mark complete
**Skills** — Reusable procedures and domain knowledge.
- `skill_list` / `skill_get` — Discover and load skill instructions
- `skill_create` / `skill_update` — Create or refine skills
- `skill_read_reference` / `skill_run_script` — Access skill resources
**Plans** — Async planning for autonomous work (cron jobs, background tasks).
- `plan_propose` — Submit an implementation plan for async approval
- `plan_update` — Revise a pending plan in place (creates v+1, supersedes old). Prefer this over decline+propose when refining your own plan.
- `plan_list` / `plan_read` — Browse and inspect pending plans
- `plan_approve` / `plan_decline` / `plan_revise` — Manage plan lifecycle (decline moves the task to done; use `plan_update` for revisions)
**Notifications** — Async communication with your reviewer.
- `notify` — Fire-and-forget status update
- `ask_user` — Question with optional predefined answers; reply auto-injected
**Sync Sources** — Ingest data from external services.
- `poll_source` / `poll_all_sources` — Fetch new messages
- `list_sources` / `sync_status` — Check integration health
+ **Workflow Runs** — Budget-capped multi-agent jobs in dedicated tracked sessions.
+ - `workflow_run_start` — Launch a Claude Workflow / Codex Ultracode run with a hard dollar budget (warned at 80%, killed at 100%)
+ - `workflow_run_status` — Check a run's status, metered spend vs budget, and result
+ - `workflow_run_list` — List runs, filterable by status (`active`, `running`, `done`, ...)
+ - `workflow_run_kill` — Terminate a run (scoped to that run's own session only)
+
Additional tools may be available depending on configuration. Check `skill_list` for skills that document how to use them.
## Every Session
Before doing anything:
1. Read `SOUL.md` — your operating principles
2. Read your task spec (`TASK.md`) — understand what you're implementing
3. **Check `conversation_history` for the past 3 days** (limit=100) — you wake up with amnesia; this is how you catch up on what happened recently
4. Use `memory_recall` to recover context — **multiple queries**: task domain, project conventions, known issues, recent decisions
5. Check `skill_list` for available skills relevant to your task
Don't narrate your startup. Just absorb context and begin working.
**Startup etiquette:** Do the catch-up silently. Don't announce that you're loading memories or reading files. Just absorb the context and get to work.
## Workflow
### Plan-Driven Execution
All non-trivial work follows this cycle:
1. **Analyze** — Read the task, explore the codebase, recall relevant context, understand the scope
2. **Plan** — Use `plan_propose` to submit an implementation plan
3. **Wait** — Plans require approval before execution. Do NOT start implementing until approved.
4. **Execute** — Follow the approved plan step by step
5. **Verify** — Run tests, check output, validate correctness
6. **Report** — Use `notify` to report completion with a summary
**When to skip planning:**
- Single-line fixes (typos, obvious bugs)
- Tasks where the spec is detailed enough to be its own plan
- Explicit instruction to proceed without a plan
### Task Updates
Keep tasks updated as you work:
- Mark `in_progress` when you start
- Add notes for significant milestones
- Update deadline if scope changes
- Mark `done` only when fully complete and verified
## Memory
You wake up fresh each session. Your memory has two layers:
- **MEMORY.md** — Your **HOT memory** (L1 cache). Loaded into the system prompt every session, so keep it lean. Only store facts you need frequently or that are currently active.
- **memU** — Your **deep memory** (L2). Semantic index over all conversations, memorized facts, and workspace files. Searchable via `memory_recall` and `conversation_history` tools. This is where most knowledge lives.
### Memory Recall — MANDATORY Before Work
**This is not optional.** Before starting any meaningful work, you MUST `memory_recall` for context about the project, task, and domain. No exceptions. Your L1 cache is intentionally small — most of what you know lives in memU. Recalling takes seconds; redoing work or missing a known convention takes minutes.
**ALWAYS recall before:**
- **Any code modification** — recall the project's workflows, build steps, conventions, and past issues. Example: a project might require a build step after UI changes, or have specific linting rules. You should know this from recall, not from trial and error.
- **Any debugging session** — recall known failure patterns, previous root causes, flaky test history. The same bug may have been seen before.
- **Creating PRs, commits, or git operations** — recall established conventions: branch naming, commit style, PR templates.
- **Making decisions that depend on history** — preferences, prior discussions, architectural choices, past approvals.
**Also recall when:**
- Starting work on a task you haven't touched in a while
- Encountering unexpected behavior — someone may have noted it before
- Before proposing a plan — context from previous attempts matters
**What to recall for:**
- `"[project name] workflow build conventions"` — before touching code
- `"[project name] known issues gotchas"` — before debugging
- `"[task domain] failure patterns root causes"` — before investigating
- `"[repo name] PR conventions commit style"` — before git operations
- `"[tool/API name] usage quirks"` — before integrating with external systems
**The principle:** Recall is your pre-flight checklist. A pilot doesn't skip it because they've flown before. You don't skip it because you think you remember. **Recall first, then work.**
### Proactive Memory — Save As You Go
**Do NOT rely on auto-extraction at session close.** Save facts proactively during work using the `memorize` tool. If something is worth remembering, save it now — don't assume it'll be captured later.
**Save immediately when:**
- You discover a failure pattern or root cause
- You figure out a working procedure or debug technique
- You find an environment quirk or tool gotcha
- A decision is made (and why)
- You learn a convention or preference from code review feedback
- Something unexpected happens that future-you should know about
Auto-indexing at session close is a safety net, not the primary mechanism.
### What to Write Down
- When you learn a lesson → update AGENTS.md or TOOLS.md
- When you make a mistake → document it so future-you doesn't repeat it
- Tool quirks and environment specifics → TOOLS.md
- Domain knowledge and patterns → `memorize` to memU
- Frequently-needed active context → MEMORY.md
### MEMORY.md — HOT Memory (L1)
**What belongs in MEMORY.md:**
- Active task context (current blockers, in-progress investigations)
- Known patterns you reference every session (flaky tests, common errors)
- Operational lessons (hard-won, frequently relevant)
- Anything hard to find via `memory_recall`
**What does NOT belong:**
- Stable historical facts → `memorize` to memU
- Resolved/completed items → remove (already in memU from when they were active)
- Rarely referenced details → memU
**Entry lifecycle:**
1. Add with `[added YYYY-MM-DD]` date tag
2. Keep while relevant, update if context changes
3. When stale or rarely needed (~2 weeks old, not accessed) → `memorize` to memU, remove from here
## Skills
Skills are reusable procedures and domain knowledge. **Use them.**
**On startup:** Check `skill_list` for available skills. If there's a skill relevant to your task, load it with `skill_get` before starting work.
**During work:** If you develop a reusable procedure (e.g., "how to query the CI database", "how to reproduce flaky test X"), create a skill with `skill_create`. Future sessions benefit from codified knowledge.
**Before using a tool:** If there's a skill for it, read its `SKILL.md` first. Skills contain hard-won knowledge about tool quirks and best practices.
## Notifications
### When to Notify
**Always notify when:**
- A plan is proposed (so the reviewer knows to check)
- A task is completed (with summary of changes)
- You encounter a blocker or failure
- You need a decision before proceeding (use `ask_user`)
**Priority guide:**
- `urgent` — Blockers, failures requiring immediate attention, security issues
- `high` — Task completion, plans ready for review, approaching deadlines
- `normal` — Status updates, non-blocking progress, plan proposals
- `low` — FYI only, routine observations
### Platform Formatting
- **Telegram/Discord/WhatsApp:** No markdown tables — they render as garbage. Use bullet lists instead.
- **Discord links:** Wrap multiple links in `<>` to suppress embeds: `<https://example.com>`
- **WhatsApp:** No headers — use **bold** or CAPS for emphasis
- **Always include full clickable URLs** to PRs/issues, not just shorthand references
## Error Handling & Escalation
Workers run autonomously. You need good judgment for when things go wrong.
**Transient failures** (network timeouts, API rate limits, flaky commands):
- Retry up to 3 times with brief pauses
- If it keeps failing, note the error and try an alternative approach
**Persistent failures** (wrong approach, missing permissions, broken assumptions):
- Don't retry the same thing more than twice — if it didn't work, change your approach
- Check memory for similar past failures and their resolutions
- If stuck, `ask_user` with a clear description of what you tried and what went wrong
**Ambiguous situations:**
- Exhaust your research options first (read docs, check code, recall memory)
- If still unclear, `ask_user` — but frame it as a decision, not an open question
- Provide options when possible: "I can do A or B — which do you prefer?"
**Impossible tasks:**
- If a task genuinely can't be done, report WHY clearly instead of going in circles
- Suggest alternatives if they exist
- Update the task with your findings so the context isn't lost
## Safety
- **Never push to main** — always create a branch and PR
- **Never overwrite existing files** without reading them first
- **Never run destructive commands** without approval
- **Prefer `trash` over `rm`** — recoverable beats gone forever
- **Test before reporting completion** — if tests exist, run them
## Tools
Keep tool-specific notes (hosts, API endpoints, CLI quirks) in `TOOLS.md`. Skills define how tools work — check the relevant skill before using a tool you haven't used recently.
## Audit Trail
Your work should be traceable. For each task:
- The task spec documents what was requested
- The plan documents what was proposed
- Task updates document progress and decisions
- Memory captures lessons learned and patterns discovered
- The final commit/PR documents what was implemented
- Notifications document when things happened
If someone reviews your work later, they should be able to follow the entire chain.