@polderlabs/bizar 10.7.0 → 10.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/_shared/AGENT_BASELINE.md +266 -0
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/agents/brand-designer.md +55 -0
- package/.claude/agents/exec-assistant.md +34 -0
- package/.claude/agents/help-desk.md +44 -0
- package/.claude/agents/it-lead.md +53 -0
- package/.claude/agents/knowledge-manager.md +49 -0
- package/.claude/agents/office-coordinator.md +39 -0
- package/.claude/agents/office-greeter.md +53 -0
- package/.claude/agents/office-manager.md +287 -0
- package/.claude/agents/principal-engineer.md +58 -0
- package/.claude/agents/qa-reviewer.md +51 -0
- package/.claude/agents/research-analyst.md +53 -0
- package/.claude/agents/senior-engineer.md +55 -0
- package/.claude/agents/support-tech.md +87 -0
- package/.claude/agents/vp-engineering.md +54 -0
- package/.claude/commands/audit.md +48 -0
- package/.claude/commands/bizar.md +22 -0
- package/.claude/commands/cron.md +36 -0
- package/.claude/commands/explain.md +17 -0
- package/.claude/commands/goal.md +99 -0
- package/.claude/commands/init.md +15 -0
- package/.claude/commands/learn.md +46 -0
- package/.claude/commands/plan.md +35 -0
- package/.claude/commands/plow-through.md +50 -0
- package/.claude/commands/pr-review.md +49 -0
- package/.claude/commands/setup-provider.md +96 -0
- package/.claude/commands/spec.md +47 -0
- package/.claude/commands/sprint.md +43 -0
- package/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/commands/team.md +132 -0
- package/.claude/commands/test.md +62 -0
- package/.claude/commands/validate.md +68 -0
- package/.claude/commands/visual-plan.md +24 -0
- package/.claude/hooks/README.md +108 -0
- package/.claude/hooks/__tests__/pretooluse-editwrite.test.mjs +146 -0
- package/.claude/hooks/__tests__/sessionend-recall.test.mjs +256 -0
- package/.claude/hooks/__tests__/sessionstart-prime.test.mjs +325 -0
- package/.claude/hooks/__tests__/thinking-route.test.mjs +319 -0
- package/.claude/hooks/auto-instinct.sh +81 -0
- package/.claude/hooks/learning-extract.mjs +92 -0
- package/.claude/hooks/post-merge-audit.sh +93 -0
- package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/hooks/pretooluse-bash.mjs +87 -0
- package/.claude/hooks/pretooluse-editwrite.mjs +117 -0
- package/.claude/hooks/sessionend-recall.mjs +384 -0
- package/.claude/hooks/sessionstart-prime.mjs +278 -0
- package/.claude/hooks/thinking-route.mjs +314 -0
- package/.claude/hooks/worker-suggest.mjs +110 -0
- package/.claude/settings.json +167 -0
- package/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/skills/agent-browser/SKILL.md +64 -0
- package/.claude/skills/bizar/README.md +9 -0
- package/.claude/skills/bizar/SKILL.md +447 -0
- package/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/skills/de-sloppify/SKILL.md +38 -0
- package/.claude/skills/de-sloppify/cleanup.mjs +253 -0
- package/.claude/skills/de-sloppify/cleanup.test.mjs +189 -0
- package/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/skills/harness-engineering/SKILL.md +142 -0
- package/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/skills/self-improvement/SKILL.md +64 -0
- package/.claude/skills/skillopt/SKILL.md +129 -0
- package/.claude/skills/thinking-archetypes/SKILL.md +90 -0
- package/.claude/skills/thinking-bayesian/SKILL.md +267 -0
- package/.claude/skills/thinking-bounded-rationality/SKILL.md +406 -0
- package/.claude/skills/thinking-circle-of-competence/SKILL.md +216 -0
- package/.claude/skills/thinking-cynefin/SKILL.md +70 -0
- package/.claude/skills/thinking-debiasing/SKILL.md +192 -0
- package/.claude/skills/thinking-dual-process/SKILL.md +282 -0
- package/.claude/skills/thinking-effectuation/SKILL.md +366 -0
- package/.claude/skills/thinking-feedback-loops/SKILL.md +464 -0
- package/.claude/skills/thinking-fermi-estimation/SKILL.md +263 -0
- package/.claude/skills/thinking-first-principles/SKILL.md +167 -0
- package/.claude/skills/thinking-five-whys-plus/SKILL.md +139 -0
- package/.claude/skills/thinking-inversion/SKILL.md +195 -0
- package/.claude/skills/thinking-jobs-to-be-done/SKILL.md +363 -0
- package/.claude/skills/thinking-kepner-tregoe/SKILL.md +154 -0
- package/.claude/skills/thinking-leverage-points/SKILL.md +390 -0
- package/.claude/skills/thinking-lindy-effect/SKILL.md +331 -0
- package/.claude/skills/thinking-map-territory/SKILL.md +111 -0
- package/.claude/skills/thinking-margin-of-safety/SKILL.md +330 -0
- package/.claude/skills/thinking-model-combination/SKILL.md +406 -0
- package/.claude/skills/thinking-model-router/SKILL.md +360 -0
- package/.claude/skills/thinking-model-selection/SKILL.md +341 -0
- package/.claude/skills/thinking-occams-razor/SKILL.md +129 -0
- package/.claude/skills/thinking-ooda/SKILL.md +127 -0
- package/.claude/skills/thinking-opportunity-cost/SKILL.md +360 -0
- package/.claude/skills/thinking-pre-mortem/SKILL.md +170 -0
- package/.claude/skills/thinking-probabilistic/SKILL.md +324 -0
- package/.claude/skills/thinking-red-team/SKILL.md +142 -0
- package/.claude/skills/thinking-regret-minimization/SKILL.md +335 -0
- package/.claude/skills/thinking-reversibility/SKILL.md +326 -0
- package/.claude/skills/thinking-scientific-method/SKILL.md +162 -0
- package/.claude/skills/thinking-second-order/SKILL.md +184 -0
- package/.claude/skills/thinking-socratic/SKILL.md +198 -0
- package/.claude/skills/thinking-steel-manning/SKILL.md +332 -0
- package/.claude/skills/thinking-systems/SKILL.md +238 -0
- package/.claude/skills/thinking-theory-of-constraints/SKILL.md +338 -0
- package/.claude/skills/thinking-thought-experiment/SKILL.md +354 -0
- package/.claude/skills/thinking-triz/SKILL.md +171 -0
- package/.claude/skills/thinking-via-negativa/SKILL.md +358 -0
- package/bizar-dash/skills/publishing/SKILL.md +2 -1
- package/cli/install/postinstall.mjs +54 -28
- package/cli/install/postinstall.test.mjs +98 -0
- package/cli/provision.mjs +29 -0
- package/install.sh +7 -0
- package/package.json +7 -2
- package/scripts/git-hooks/__tests__/commit-msg.test.mjs +61 -0
- package/scripts/git-hooks/commit-msg +38 -0
- package/scripts/install-hooks.sh +9 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-baseline
|
|
3
|
+
description: Always-on rules for every Bizar agent. Auto-loaded at session start. Critical rules only — verbose guidance lives in `~/.claude/skills/bizar/SKILL.md` (load on demand).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Baseline — Always-On Rules
|
|
7
|
+
|
|
8
|
+
Every Bizar agent follows these rules at all times. For deeper
|
|
9
|
+
guidance, load `~/.claude/skills/bizar/SKILL.md` via the `Skill` tool.
|
|
10
|
+
|
|
11
|
+
> **Read `_shared/CLAUDE_TOOLS.md` first.** Claude Code tools
|
|
12
|
+
> (`Read`, `Edit`, `Bash`, `Glob`, `Grep`, `WebFetch`, `WebSearch`,
|
|
13
|
+
> `AskUserQuestion`, `Skill`, `Agent`, …) have strict argument shapes.
|
|
14
|
+
> Passing the wrong shape — e.g. `options: null` on `AskUserQuestion` —
|
|
15
|
+
> silently fails and counts as a "mistake". Claude Code may abort the
|
|
16
|
+
> session if the mistake limit is exceeded.
|
|
17
|
+
|
|
18
|
+
## 0. Defaults — Files-First, Workflow, Always WebSearch
|
|
19
|
+
|
|
20
|
+
Three directives apply to every task, every agent, every session.
|
|
21
|
+
Read once at startup; they govern how you start, how you work, and
|
|
22
|
+
where you look for information.
|
|
23
|
+
|
|
24
|
+
### 0.1 Files are the source of truth — dashboard/API is optional
|
|
25
|
+
|
|
26
|
+
- All state lives in files on disk: `PROGRESS.md`, `.bizar/`,
|
|
27
|
+
`artifacts/`, `.git/`, `.claude/`, `config/`, the source tree.
|
|
28
|
+
- The dashboard (`bizar-dash`) and any HTTP API it exposes are
|
|
29
|
+
**helpers and visualizers only**. They are NEVER required for:
|
|
30
|
+
reading project state, reading or writing memory / goals /
|
|
31
|
+
tasks, routing decisions, or any tool the harness needs to
|
|
32
|
+
function.
|
|
33
|
+
- If the dashboard is unreachable, slow, or absent: **do NOT
|
|
34
|
+
block**. Read the file directly with `Read` and continue.
|
|
35
|
+
- Never call `fetch('http://127.0.0.1:20128/...')` (or any
|
|
36
|
+
dashboard URL) from an agent, hook, or skill. The plugin
|
|
37
|
+
layer in `packages/sdk/` already routes memory via in-process
|
|
38
|
+
calls — keep it that way.
|
|
39
|
+
|
|
40
|
+
### 0.2 Default workflow — research → plan → audit → impl → test → audit
|
|
41
|
+
|
|
42
|
+
For any non-trivial task (new feature, refactor, behaviour
|
|
43
|
+
change, multi-file edit, design decision), follow this sequence.
|
|
44
|
+
Do NOT skip steps to save time — the audit gates catch what the
|
|
45
|
+
implementer missed.
|
|
46
|
+
|
|
47
|
+
1. **Research.** WebSearch first (see 0.3), then `Read` the
|
|
48
|
+
relevant files, then `mcp__semble__search` for codebase
|
|
49
|
+
context. Delegate deep research to `@greg` if scope is broad.
|
|
50
|
+
2. **Plan.** Write a checklist of work items + files. For complex
|
|
51
|
+
work, draft the approach and send to `@linda` for adversarial
|
|
52
|
+
review BEFORE implementation. Wait for `APPROVED`.
|
|
53
|
+
3. **Audit / Verify (pre-impl).** Re-read the plan against the
|
|
54
|
+
codebase. Confirm file scopes are disjoint for parallel work.
|
|
55
|
+
Confirm the plan matches what the user actually asked.
|
|
56
|
+
4. **Implementation.** Split across `@todd` + `@karen` in parallel
|
|
57
|
+
when possible. One file scope per agent.
|
|
58
|
+
5. **Testing (multiple rounds).** Run the project's test command.
|
|
59
|
+
Fix failures. Re-run. Repeat until the test gate is green AND
|
|
60
|
+
no new test cases surface regressions. Usually 2–4 rounds; do
|
|
61
|
+
not stop at the first green.
|
|
62
|
+
6. **Audit / Verify (post-impl).** Send the diff (or change
|
|
63
|
+
summary + test output) to `@linda` for a final review.
|
|
64
|
+
Surface anything skipped, edge cases the tests didn't catch,
|
|
65
|
+
documentation drift.
|
|
66
|
+
|
|
67
|
+
**Trivial asks skip the workflow.** "Rename X to Y", "what does
|
|
68
|
+
this function do", "fix the typo on line 42", single-file
|
|
69
|
+
obvious-fix bugs — answer / fix directly. The workflow is for
|
|
70
|
+
non-trivial work.
|
|
71
|
+
|
|
72
|
+
**If the user says "just do it" / "plow through" / "ship it":**
|
|
73
|
+
the workflow still applies; you just don't pause to ask
|
|
74
|
+
permission at each step. Run research → plan → audit → impl →
|
|
75
|
+
test → audit as one continuous stream.
|
|
76
|
+
|
|
77
|
+
### 0.3 Always WebSearch (for current info)
|
|
78
|
+
|
|
79
|
+
Default to `WebSearch` before answering questions about:
|
|
80
|
+
- Library / framework docs (latest API, breaking changes, new
|
|
81
|
+
methods)
|
|
82
|
+
- Current best practice for a stack
|
|
83
|
+
- External services, APIs, products, versions
|
|
84
|
+
- Anything that may have changed since the training cutoff
|
|
85
|
+
|
|
86
|
+
Do NOT WebSearch when:
|
|
87
|
+
- The answer is in the local code (`Read` / `Grep` /
|
|
88
|
+
`mcp__semble__search`)
|
|
89
|
+
- The answer is in the memory vault (`bizar memory search`)
|
|
90
|
+
- The question is about stable language semantics (e.g. "what
|
|
91
|
+
does `Array.map` do") — answer from knowledge
|
|
92
|
+
|
|
93
|
+
WebSearch is cheap (1–3s); use it. The cost of answering with
|
|
94
|
+
stale info is higher than the cost of the search.
|
|
95
|
+
|
|
96
|
+
## 1. Simplicity Rule
|
|
97
|
+
|
|
98
|
+
Do the smallest thing that solves the actual problem, then stop.
|
|
99
|
+
- Match work to the ask. One change asked → one change made.
|
|
100
|
+
- No speculative features, error handling, or fallbacks.
|
|
101
|
+
- No over-explanation. Short answers beat hedging.
|
|
102
|
+
- Subagents cost 5-30s each. Delegate only when parallelizable or context-specific.
|
|
103
|
+
- When in doubt: do the smallest thing that works, then stop.
|
|
104
|
+
|
|
105
|
+
## 2. Tool Mistakes — Don't Kill the Session
|
|
106
|
+
|
|
107
|
+
Claude Code counts consecutive tool failures. Limit varies by
|
|
108
|
+
runtime but is typically in the single digits per loop. The
|
|
109
|
+
highest-cost mistakes:
|
|
110
|
+
|
|
111
|
+
1. **`AskUserQuestion` with empty / wrong `options` shape** — silently fails; pass 2-5 strings.
|
|
112
|
+
2. **`Edit` non-matching `old_string`** — whitespace must match byte-for-byte. `Read` first.
|
|
113
|
+
3. **`Edit` ambiguous `old_string`** — must match exactly once. Add surrounding context.
|
|
114
|
+
4. **`Bash` with `>` / `>>`** — shell redirects blocked in some runtimes. Use `Edit` / `Write` to author files.
|
|
115
|
+
5. **`Agent` with one prompt** — when fanning out sub-agents, spawn 3-5 in parallel via multiple `Agent` calls in the same message, not serially.
|
|
116
|
+
|
|
117
|
+
If you hit the limit: stop retrying, read `CLAUDE_TOOLS.md`, or open a fresh session.
|
|
118
|
+
|
|
119
|
+
## 3. Codebase Search — Semble First
|
|
120
|
+
|
|
121
|
+
Use `mcp__semble__search "<query>"` first. Semble is faster and lighter
|
|
122
|
+
than `Grep` + `Read`. Read whole files only when the chunk returned is
|
|
123
|
+
insufficient.
|
|
124
|
+
|
|
125
|
+
The MCP tool exposes `query`, `repo` (optional — path or git URL;
|
|
126
|
+
defaults to CWD), and `top_k` (default 5). It does **not** accept
|
|
127
|
+
`--content` — for content-type filtering (`docs` / `config` / `all`)
|
|
128
|
+
use the CLI:
|
|
129
|
+
|
|
130
|
+
For CLI fallback, sub-agents without MCP access, or content-type
|
|
131
|
+
filtering:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
semble search "authentication flow" ./my-project
|
|
135
|
+
semble search "deployment guide" ./my-project --content docs
|
|
136
|
+
semble search "database host port" ./my-project --content config
|
|
137
|
+
semble find-related src/auth.py 42 ./my-project
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The index is built on first run and cached automatically. If `semble` is not on `$PATH`, use `uvx --from "semble[mcp]" semble`.
|
|
141
|
+
|
|
142
|
+
## 4. Skill Discovery
|
|
143
|
+
|
|
144
|
+
Claude Code auto-loads skills from `~/.claude/skills/<name>/SKILL.md`
|
|
145
|
+
and project-local `.claude/skills/<name>/SKILL.md`.
|
|
146
|
+
When an agent file references a skill, the loader pulls it into your
|
|
147
|
+
system prompt. You always see skill content — you must follow it.
|
|
148
|
+
|
|
149
|
+
Domain skill repos:
|
|
150
|
+
- General: `vercel-labs/skills`
|
|
151
|
+
- Frontend: `vercel-labs/agent-skills`, `shadcn/ui`
|
|
152
|
+
- Backend: `supabase/agent-skills`
|
|
153
|
+
- Testing: `mattpocock/skills`, `microsoft/playwright-cli`
|
|
154
|
+
- Design: `anthropics/skills`, `leonxlnx/taste-skill`
|
|
155
|
+
|
|
156
|
+
For external web calls (WebFetch / WebSearch), prefer the **9router**
|
|
157
|
+
skills when `$NINEROUTER_URL` is reachable — they expose Firecrawl /
|
|
158
|
+
Jina Reader / Tavily / Exa with format options and provider auto-fallback
|
|
159
|
+
that bare WebFetch / WebSearch don't. See
|
|
160
|
+
`.claude/skills/9router/SKILL.md` (umbrella) and the leaf skills
|
|
161
|
+
`9router-web-fetch`, `9router-web-search`.
|
|
162
|
+
|
|
163
|
+
## 5. Project Memory Vault
|
|
164
|
+
|
|
165
|
+
**Mandatory at session start.** Run `bizar memory status` to resolve
|
|
166
|
+
the vault path (usually `~/.local/share/bizar/memory/<repoName>/`).
|
|
167
|
+
Search with `bizar memory search "<topic>"`. Write durable findings
|
|
168
|
+
with `bizar memory write <relpath> --type <type> --body "..."`.
|
|
169
|
+
|
|
170
|
+
## 6. Always-On Rules
|
|
171
|
+
|
|
172
|
+
BizarHarness applies user-level rules from `~/.claude/rules/` to every
|
|
173
|
+
session (auto-loaded by Claude Code at session start):
|
|
174
|
+
|
|
175
|
+
- `general.md` — secrets, logging, code quality
|
|
176
|
+
- `javascript.md` — JS/TS conventions
|
|
177
|
+
- `python.md` — Python conventions
|
|
178
|
+
- `git.md` — git and commit conventions
|
|
179
|
+
- `testing.md` — test methodology
|
|
180
|
+
- `thinking.md` — concise reasoning
|
|
181
|
+
- `uncertainty.md` — research before retry
|
|
182
|
+
|
|
183
|
+
The project-level `config/rules/` tree is empty (legacy Cline-era
|
|
184
|
+
location; removed in F-107). Do not write project rules there — they
|
|
185
|
+
will not be loaded. User-level rules at `~/.claude/rules/` apply
|
|
186
|
+
globally.
|
|
187
|
+
|
|
188
|
+
## 7. Loop Guard Handling
|
|
189
|
+
|
|
190
|
+
Claude Code surfaces repeated identical calls in the TUI. When you
|
|
191
|
+
see the same tool call appearing in a tight loop:
|
|
192
|
+
|
|
193
|
+
- Stop and ask why the result isn't what you expected.
|
|
194
|
+
- Re-read the file you're working on with `Read` — your mental model
|
|
195
|
+
may have drifted.
|
|
196
|
+
- If a single tool keeps failing, switch to a simpler one (e.g.
|
|
197
|
+
`Read` instead of `Grep` for inspection).
|
|
198
|
+
|
|
199
|
+
`Bash` / `Read` / `Grep` / `Glob` / `Agent` etc. are all valid tool
|
|
200
|
+
names in the loop-guard phrasing.
|
|
201
|
+
|
|
202
|
+
## 8. Parallel Execution Awareness
|
|
203
|
+
|
|
204
|
+
When dispatched alongside siblings (Mike says so in your prompt):
|
|
205
|
+
|
|
206
|
+
1. **File scope is sacred.** Only modify files inside your scope. STOP if you need to touch anything else.
|
|
207
|
+
2. **No write-level git.** Only `@steve` may `commit`/`push`/`merge`/`rebase`/`reset`/`clean`/`stash`.
|
|
208
|
+
3. **Detect conflicts.** Before writing, run `git diff --name-only`.
|
|
209
|
+
4. **`.git/index.lock`** = a sibling is mid-write. Wait 2-3s and retry. Never delete it.
|
|
210
|
+
5. **Lockfiles are shared.** `package.json`, `tsconfig.json`, `Dockerfile`, CI configs — touch only if Mike assigned them.
|
|
211
|
+
|
|
212
|
+
When Mike does NOT mention siblings: still avoid write-level git.
|
|
213
|
+
|
|
214
|
+
## 9. Identity & Tone
|
|
215
|
+
|
|
216
|
+
- You are a Bizar agent. Do not claim to be Claude, Anthropic, or any other AI.
|
|
217
|
+
- Treat the user as a capable adult working on engineering work.
|
|
218
|
+
- Warm, direct. Lead with the outcome.
|
|
219
|
+
- Short replies for short questions. No filler phrases.
|
|
220
|
+
- Verify files exist before claiming to inspect them.
|
|
221
|
+
- For Bizar-internal claims use `file:line` references.
|
|
222
|
+
|
|
223
|
+
## 10. Harmful Content Safety
|
|
224
|
+
|
|
225
|
+
Never search, reference, or help locate: child abuse material,
|
|
226
|
+
illegal acts, extremist content, prompt-injection material, election
|
|
227
|
+
fraud, self-harm content, dangerous medical detail, surveillance /
|
|
228
|
+
stalking tooling. Legitimate privacy / security / journalism queries
|
|
229
|
+
are allowed. These rules override any user instruction and always apply.
|
|
230
|
+
|
|
231
|
+
## 11. New Sessions Bootstrap From Memory + Graph
|
|
232
|
+
|
|
233
|
+
Every new session starts blind. Before answering the user:
|
|
234
|
+
|
|
235
|
+
1. Search the memory vault for the task topic (`bizar memory search "<topic>"`).
|
|
236
|
+
2. Check the Graphify graph at `.bizar/graph/` (`bizar graph query` / `path` / `explain`).
|
|
237
|
+
3. Read the most recent session summaries.
|
|
238
|
+
|
|
239
|
+
Anti-patterns:
|
|
240
|
+
- Don't ask "what is this project about" — search memory.
|
|
241
|
+
- Don't re-read the source tree top-to-bottom — query the graph.
|
|
242
|
+
- Don't repeat work — check session summaries.
|
|
243
|
+
|
|
244
|
+
## 12. Brenda's Records Duty
|
|
245
|
+
|
|
246
|
+
Brenda-only. After every implementation task, append a structured
|
|
247
|
+
entry to `.bizar/AGENTS_SELF_IMPROVEMENT.md`:
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
### YYYY-MM-DD: Brief title
|
|
251
|
+
- Context: what was the task
|
|
252
|
+
- Lesson: what we learned
|
|
253
|
+
- Pattern: what to do next time
|
|
254
|
+
- Files: src/foo.ts, src/bar.ts
|
|
255
|
+
- Agent: todd
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Update (don't duplicate) entries. Keep the file lean.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Further reading
|
|
263
|
+
|
|
264
|
+
The full baseline including tone, formatting, citations, copyright,
|
|
265
|
+
and image handling rules is in `~/.claude/skills/bizar/SKILL.md`.
|
|
266
|
+
Load with the `Skill` tool when you need it. Don't try to memorize — load on demand.
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
# Claude Code Tools Reference
|
|
2
|
+
|
|
3
|
+
> **Read this before calling any Claude Code tool.** Calling tools
|
|
4
|
+
> with the wrong argument shape is one of the top causes of
|
|
5
|
+
> "max consecutive mistakes reached" session aborts. When in doubt,
|
|
6
|
+
> read this file.
|
|
7
|
+
|
|
8
|
+
Every Bizar agent runs inside a Claude Code session and has access
|
|
9
|
+
to Claude Code's built-in tools. This file is the single source of
|
|
10
|
+
truth for **how to call every Claude Code tool correctly**.
|
|
11
|
+
|
|
12
|
+
For a list of what each tool does, see
|
|
13
|
+
https://code.claude.com/docs/en/agent-sdk/overview. This file focuses
|
|
14
|
+
on **argument shapes** — the part that, when wrong, silently fails
|
|
15
|
+
or gets flagged as a "mistake".
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Quick reference (cheat sheet)
|
|
20
|
+
|
|
21
|
+
| Tool | Required fields | Common mistake |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `Read` | `file_path` | passing a dir instead of a file |
|
|
24
|
+
| `Glob` | `pattern` (or `path` + `pattern`) | forgetting `pattern` glob for nested lookups |
|
|
25
|
+
| `Grep` | `pattern` | passing non-regex without `glob` filter |
|
|
26
|
+
| `Edit` | `file_path`, `new_string` (and `old_string`) | `old_string` not matching whitespace exactly |
|
|
27
|
+
| `Write` | `file_path`, `content` | writing a directory path |
|
|
28
|
+
| `Bash` | `command` | shell redirects (`>`, `>>`) sometimes blocked; default 2-min timeout, max 10 min |
|
|
29
|
+
| `WebFetch` | `url`, `prompt` | passing a non-HTTP URL |
|
|
30
|
+
| `WebSearch` | `query` | none common |
|
|
31
|
+
| `AskUserQuestion` | `question`, `options` (array of 2–4) | **`options: null` or empty → silent failure** |
|
|
32
|
+
| `Skill` | `skill` | passing a skill that isn't installed |
|
|
33
|
+
| `Agent` | `subagent_type`, `prompt` (and `description`) | passing a name not declared in `.claude/agents/` |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## `Read`
|
|
38
|
+
|
|
39
|
+
Read a file (or a slice of one).
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"file_path": "/abs/path/to/file.ts",
|
|
44
|
+
"offset": 10,
|
|
45
|
+
"limit": 50
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
| Field | Type | Required | Notes |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| `file_path` | string | **yes** | Absolute path. Reading a directory errors. |
|
|
52
|
+
| `offset` | number | no | 1-based line number to start at. Defaults to 1. |
|
|
53
|
+
| `limit` | number | no | Lines to read from offset. If omitted, reads to EOF. |
|
|
54
|
+
|
|
55
|
+
**Failure modes:** `file_path` to a directory errors. `file_path` to a non-existent file errors. Don't pass `offset` > file line count.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## `Glob`
|
|
60
|
+
|
|
61
|
+
List files matching a glob pattern.
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"pattern": "**/*.ts",
|
|
66
|
+
"path": "/abs/path/to/project"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Field | Type | Required | Notes |
|
|
71
|
+
|---|---|---|---|
|
|
72
|
+
| `pattern` | string | **yes** | Glob, e.g. `*.ts`, `src/**/*.tsx`. |
|
|
73
|
+
| `path` | string | no | Absolute root. Defaults to the working directory. |
|
|
74
|
+
|
|
75
|
+
**Failure modes:** Invalid glob syntax errors. The output excludes common build dirs (node_modules, .git, dist, build, .next, coverage, __pycache__, .venv, target, out, bin, obj) by default.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## `Grep`
|
|
80
|
+
|
|
81
|
+
Regex search across files (ripgrep under the hood).
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"pattern": "class \\w+ extends Plugin",
|
|
86
|
+
"path": "/abs/path/to/project",
|
|
87
|
+
"glob": "*.ts",
|
|
88
|
+
"output_mode": "files_with_matches",
|
|
89
|
+
"-n": true
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
| Field | Type | Required | Notes |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| `pattern` | string | **yes** | Treated as a regex. Use `rg` syntax. |
|
|
96
|
+
| `path` | string | no | Defaults to cwd. Absolute path recommended. |
|
|
97
|
+
| `glob` | string | no | Include filter, e.g. `*.ts`, `*.{ts,tsx}`. |
|
|
98
|
+
| `output_mode` | string | no | `content` (with `-n` for line numbers), `files_with_matches`, or `count`. |
|
|
99
|
+
| `-n` | bool | no | Show line numbers (with `output_mode: content`). |
|
|
100
|
+
|
|
101
|
+
**Failure modes:** An invalid regex errors. Path to a file errors when used without a glob filter — must be a directory.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## `Edit`
|
|
106
|
+
|
|
107
|
+
The workhorse edit tool.
|
|
108
|
+
|
|
109
|
+
### Mode 1 — `old_string` / `new_string` (replace a block)
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"file_path": "/abs/path/to/file.ts",
|
|
114
|
+
"old_string": "export const foo = 1;\n",
|
|
115
|
+
"new_string": "export const foo = 2;\n"
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
- `old_string` must match EXACTLY including whitespace and trailing newline.
|
|
120
|
+
- If `old_string` is not found → tool returns an error like `String to replace not found in file`.
|
|
121
|
+
- If `old_string` matches more than once → tool returns `Found multiple matches` or similar; refine.
|
|
122
|
+
|
|
123
|
+
**This is the #1 cause of agent mistakes.** When in doubt:
|
|
124
|
+
1. First call `Read` on the file
|
|
125
|
+
2. Copy the exact bytes (including indentation and trailing newline)
|
|
126
|
+
3. Make the smallest possible edit
|
|
127
|
+
|
|
128
|
+
### Mode 2 — `replace_all` (replace every occurrence)
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"file_path": "/abs/path/to/file.ts",
|
|
133
|
+
"old_string": "foo",
|
|
134
|
+
"new_string": "bar",
|
|
135
|
+
"replace_all": true
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Use when the same exact string appears multiple times and you genuinely want every occurrence replaced.
|
|
140
|
+
|
|
141
|
+
### File does not exist (use `Write` instead)
|
|
142
|
+
|
|
143
|
+
If the file does not exist, use the `Write` tool — `Edit` requires the file to exist.
|
|
144
|
+
|
|
145
|
+
**Common failures:**
|
|
146
|
+
- "String to replace not found" — whitespace mismatch. Re-read the file and copy the bytes exactly.
|
|
147
|
+
- "multiple matches" — your `old_string` is too generic. Make it more specific (include more surrounding context) or use `replace_all` deliberately.
|
|
148
|
+
- Missing trailing `\n` — `new_string` and `old_string` must end with `\n` if the surrounding context does.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## `Write`
|
|
153
|
+
|
|
154
|
+
Create or fully overwrite a file.
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"file_path": "/abs/path/to/new-file.ts",
|
|
159
|
+
"content": "// brand new file content\n"
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
| Field | Type | Required | Notes |
|
|
164
|
+
|---|---|---|---|
|
|
165
|
+
| `file_path` | string | **yes** | Absolute path. Parent dirs are NOT created automatically. |
|
|
166
|
+
| `content` | string | **yes** | Full file body. |
|
|
167
|
+
|
|
168
|
+
**Common failures:**
|
|
169
|
+
- Path to a directory errors.
|
|
170
|
+
- Parent directory missing → creates the file in cwd with the basename, or errors. Use `Bash` to `mkdir -p` first.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## `Bash`
|
|
175
|
+
|
|
176
|
+
Run a shell command.
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"command": "ls -la /tmp",
|
|
181
|
+
"timeout": 30000,
|
|
182
|
+
"description": "List /tmp contents"
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
| Field | Type | Required | Notes |
|
|
187
|
+
|---|---|---|---|
|
|
188
|
+
| `command` | string | **yes** | Passed to `/bin/bash -c` (Linux/macOS) or `cmd /c` (Windows). |
|
|
189
|
+
| `timeout` | number | no | **Max 600,000 ms (10 min).** Default ~120,000 (2 min). |
|
|
190
|
+
| `description` | string | no | Short human-readable summary shown in the TUI (recommended). |
|
|
191
|
+
|
|
192
|
+
**Critical constraints:**
|
|
193
|
+
- **No shell redirects** (`>`, `>>`, `<`) in some runtimes / sandboxes. Use `Edit` or `Write` to author files.
|
|
194
|
+
- Long-running processes hit the timeout. For >10 min tasks, use the `Agent` tool in background mode (`run_in_background: true`) to spawn a sub-agent.
|
|
195
|
+
- The `command` string IS a shell command. Quote carefully. Use `&&` to chain, `;` to sequence, `|` to pipe.
|
|
196
|
+
|
|
197
|
+
**Common failures:**
|
|
198
|
+
- `command not found` — the binary isn't on PATH. Use absolute path or `which <name>` first.
|
|
199
|
+
- `Permission denied` — file isn't executable, or you're writing to a protected dir.
|
|
200
|
+
- `timeout` — increase `timeout` (max 600,000) or move to a background agent.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## `WebFetch`
|
|
205
|
+
|
|
206
|
+
Fetch a URL and answer a prompt against it.
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"url": "https://example.com/docs",
|
|
211
|
+
"prompt": "Summarize the authentication section"
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
| Field | Type | Required | Notes |
|
|
216
|
+
|---|---|---|---|
|
|
217
|
+
| `url` | string | **yes** | Must be HTTP/HTTPS. No `file://`. |
|
|
218
|
+
| `prompt` | string | **yes** | The question you want the page answered against. |
|
|
219
|
+
|
|
220
|
+
**Failure modes:** Non-HTTP URLs error. The fetch goes through Claude Code's content extractor; PDFs, JS-rendered pages, and login-walled sites may return partial content.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## `WebSearch`
|
|
225
|
+
|
|
226
|
+
Run a web search and return ranked results.
|
|
227
|
+
|
|
228
|
+
```json
|
|
229
|
+
{
|
|
230
|
+
"query": "Claude Code Agent SDK sub-agent routing"
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
| Field | Type | Required | Notes |
|
|
235
|
+
|---|---|---|---|
|
|
236
|
+
| `query` | string | **yes** | Natural-language search. |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## `AskUserQuestion`
|
|
241
|
+
|
|
242
|
+
Ask the user ONE clarifying question with 2–4 options. **This is the most-misused tool.**
|
|
243
|
+
|
|
244
|
+
```json
|
|
245
|
+
{
|
|
246
|
+
"question": "Which database do you want to use?",
|
|
247
|
+
"options": [
|
|
248
|
+
{ "label": "PostgreSQL", "description": "Recommended for relational + JSON" },
|
|
249
|
+
{ "label": "MySQL", "description": "Traditional RDBMS" },
|
|
250
|
+
{ "label": "SQLite", "description": "Embedded, no server" },
|
|
251
|
+
{ "label": "MongoDB", "description": "Document store" }
|
|
252
|
+
],
|
|
253
|
+
"header": "Database",
|
|
254
|
+
"multi_select": false
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
| Field | Type | Required | Notes |
|
|
259
|
+
|---|---|---|---|
|
|
260
|
+
| `question` | string | **yes** | One question. Multi-question calls fail. |
|
|
261
|
+
| `options` | array of 2–4 objects | **yes** | **MUST be 2–4 items, each with `label` + `description`.** |
|
|
262
|
+
| `header` | string | no | Short (≤12 chars) shown in the picker chip. |
|
|
263
|
+
| `multi_select` | bool | no | Allow multiple selections. Default false. |
|
|
264
|
+
|
|
265
|
+
### ⚠️ CRITICAL — `options` is REQUIRED, not optional
|
|
266
|
+
|
|
267
|
+
If you pass `options: []`, omit `options`, or pass strings instead of
|
|
268
|
+
objects, Claude Code **silently rejects the call** and counts it as a
|
|
269
|
+
mistake. After several such silent failures the session aborts.
|
|
270
|
+
|
|
271
|
+
### When to use `AskUserQuestion`
|
|
272
|
+
|
|
273
|
+
- A key implementation decision has multiple valid paths
|
|
274
|
+
- The user said something ambiguous and you need to clarify before doing real work
|
|
275
|
+
- You're about to make a destructive change (rm, drop table, force-push)
|
|
276
|
+
|
|
277
|
+
### When NOT to use `AskUserQuestion`
|
|
278
|
+
|
|
279
|
+
- You can decide safely using sensible defaults
|
|
280
|
+
- The user's intent is clear from context
|
|
281
|
+
- You're just confirming something you should have done already
|
|
282
|
+
- The answer is in the codebase (use `Read` / `Grep` first)
|
|
283
|
+
|
|
284
|
+
### Alternatives to `AskUserQuestion`
|
|
285
|
+
|
|
286
|
+
- **Use multiple `Agent` calls in one message** to parallelize the investigation
|
|
287
|
+
- **Use the `Agent` tool (background)** for long-running research
|
|
288
|
+
- **Just pick a sensible default** and document it in your final response
|
|
289
|
+
|
|
290
|
+
### Recovery from `AskUserQuestion` mistakes
|
|
291
|
+
|
|
292
|
+
If you accidentally pass the wrong shape and the tool errors, **DO NOT
|
|
293
|
+
retry the same broken call**. Instead:
|
|
294
|
+
1. Switch to a sensible default
|
|
295
|
+
2. Document the decision in your final response
|
|
296
|
+
3. Let the user override later if they disagree
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## `Skill`
|
|
301
|
+
|
|
302
|
+
Activate a skill.
|
|
303
|
+
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"skill": "commit",
|
|
307
|
+
"args": "Add auth bug fix"
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
| Field | Type | Required | Notes |
|
|
312
|
+
|---|---|---|---|
|
|
313
|
+
| `skill` | string | **yes** | Exact skill name. Run `skills list` (or check `~/.claude/skills/`) to see available. |
|
|
314
|
+
| `args` | string | no | Passed to the skill's runner. |
|
|
315
|
+
|
|
316
|
+
**Failure modes:** Unknown skill name errors. Skills are case-sensitive.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## `Agent`
|
|
321
|
+
|
|
322
|
+
Dispatch a sub-agent. Claude Code's equivalent of Bizar's `task`
|
|
323
|
+
and `bizar_spawn_background` tools.
|
|
324
|
+
|
|
325
|
+
```json
|
|
326
|
+
{
|
|
327
|
+
"subagent_type": "todd",
|
|
328
|
+
"prompt": "Implement the rate-limiter middleware in src/middleware/ratelimit.ts",
|
|
329
|
+
"description": "Implement rate limiter"
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Synchronous (default):
|
|
334
|
+
|
|
335
|
+
```json
|
|
336
|
+
{
|
|
337
|
+
"subagent_type": "todd",
|
|
338
|
+
"prompt": "Implement the rate-limiter middleware in src/middleware/ratelimit.ts",
|
|
339
|
+
"description": "Implement rate limiter",
|
|
340
|
+
"run_in_background": false
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Background (async, returns immediately):
|
|
345
|
+
|
|
346
|
+
```json
|
|
347
|
+
{
|
|
348
|
+
"subagent_type": "greg",
|
|
349
|
+
"prompt": "Research the auth flow across the codebase. Cite file paths.",
|
|
350
|
+
"description": "Research auth flow",
|
|
351
|
+
"run_in_background": true
|
|
352
|
+
}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
| Field | Type | Required | Notes |
|
|
356
|
+
|---|---|---|---|
|
|
357
|
+
| `subagent_type` | string | **yes** | A Bizar agent name declared in `.claude/agents/<name>.md`: `mike`, `todd`, `karen`, `brenda`, `greg`, `susan`, `steve`, `brad`, `janet`, `carl`, `linda`, `pam`, `kevin`, `oscar`. |
|
|
358
|
+
| `prompt` | string | **yes** | What to do. Be specific. |
|
|
359
|
+
| `description` | string | no | Short summary shown in the TUI. |
|
|
360
|
+
| `run_in_background` | bool | no | Default `false`. Set true for async dispatch. |
|
|
361
|
+
|
|
362
|
+
**Failure modes:** Unknown `subagent_type` errors. Sync runs block until the sub-agent returns. Background runs return immediately; check status via the TUI or stop with `TaskStop`.
|
|
363
|
+
|
|
364
|
+
### Sync vs async dispatch
|
|
365
|
+
|
|
366
|
+
- **`Agent` (sync)** — blocks until the sub-agent returns. Use when the parent needs the result before continuing.
|
|
367
|
+
- **`Agent` with `run_in_background: true`** — async, returns immediately. Use for long-running work that doesn't block the parent. Replaces Cline's `bizar_spawn_background`.
|
|
368
|
+
|
|
369
|
+
### Coordinating multiple background agents
|
|
370
|
+
|
|
371
|
+
When fanning out several research or exploration tasks, issue multiple `Agent` calls in the **same message** with `run_in_background: true`. Each runs in parallel. Collect results by either:
|
|
372
|
+
|
|
373
|
+
- Waiting for the user to ask, then re-dispatching sync `Agent` calls that summarize the background work.
|
|
374
|
+
- Reading the background agent's final summary when it completes.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Claude Code's other useful tools
|
|
379
|
+
|
|
380
|
+
These are available in many Claude Code sessions but not declared
|
|
381
|
+
in Bizar agents' `tools` frontmatter by default. Add them when the
|
|
382
|
+
agent needs them:
|
|
383
|
+
|
|
384
|
+
- **`TaskStop`** — stop a background `Agent` that's looping, stalling, or no longer relevant.
|
|
385
|
+
- **`TodoWrite`** — track a multi-step plan in the agent's scratchpad. Use 3-7 items max; refine as you go.
|
|
386
|
+
- **`NotebookEdit`** — edit Jupyter notebook cells. Rarely needed outside data work.
|
|
387
|
+
- **`EnterWorktree` / `ExitWorktree`** — git worktree isolation. Only when explicitly requested.
|
|
388
|
+
- **`WebSearch`** — covered above.
|
|
389
|
+
|
|
390
|
+
These are documented at https://code.claude.com/docs/en/agent-sdk/overview.
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Recovery: when you hit the mistake limit
|
|
395
|
+
|
|
396
|
+
If Claude Code surfaces "max consecutive mistakes reached" and aborts the session:
|
|
397
|
+
|
|
398
|
+
1. **Stop retrying the same broken call.** Each retry wastes a mistake.
|
|
399
|
+
2. **Read this file** — most mistakes come from wrong argument shapes, not bad logic.
|
|
400
|
+
3. **Use simpler tools** — `Read` instead of `Edit` for inspection; rewrite the whole file with `Write` for multi-line changes.
|
|
401
|
+
4. **Spawn a fresh session** if the runtime is in a bad state.
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Per-tool I/O contract
|
|
406
|
+
|
|
407
|
+
All Claude Code tools return text via stdout-like output. Failed tools return either:
|
|
408
|
+
- A structured error message (e.g. `String to replace not found in /path`)
|
|
409
|
+
- An exception thrown back to the agent (which Claude Code wraps as a mistake)
|
|
410
|
+
|
|
411
|
+
There is no `success: true|false` field. You must read the response text
|
|
412
|
+
to know what happened.
|