@arthai/agents 1.0.5 → 1.0.6
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/README.md +33 -3
- package/VERSION +1 -1
- package/agents/troubleshooter.md +132 -0
- package/bin/cli.js +297 -0
- package/bundles/canvas.json +1 -1
- package/bundles/compass.json +1 -1
- package/bundles/counsel.json +1 -0
- package/bundles/cruise.json +1 -1
- package/bundles/forge.json +12 -1
- package/bundles/prism.json +1 -0
- package/bundles/scalpel.json +5 -2
- package/bundles/sentinel.json +8 -2
- package/bundles/shield.json +1 -0
- package/bundles/spark.json +1 -0
- package/compiler.sh +14 -0
- package/dist/plugins/canvas/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/canvas/VERSION +1 -0
- package/dist/plugins/canvas/commands/planning.md +100 -11
- package/dist/plugins/canvas/hooks/hooks.json +16 -0
- package/dist/plugins/canvas/hooks/project-setup.sh +109 -0
- package/dist/plugins/canvas/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/canvas/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/compass/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/compass/VERSION +1 -0
- package/dist/plugins/compass/commands/planning.md +100 -11
- package/dist/plugins/compass/hooks/hooks.json +16 -0
- package/dist/plugins/compass/hooks/project-setup.sh +109 -0
- package/dist/plugins/compass/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/compass/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/counsel/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/counsel/VERSION +1 -0
- package/dist/plugins/counsel/hooks/hooks.json +10 -0
- package/dist/plugins/counsel/hooks/project-setup.sh +109 -0
- package/dist/plugins/counsel/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/counsel/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/cruise/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/cruise/VERSION +1 -0
- package/dist/plugins/cruise/hooks/hooks.json +16 -0
- package/dist/plugins/cruise/hooks/project-setup.sh +109 -0
- package/dist/plugins/cruise/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/cruise/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/forge/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/forge/VERSION +1 -0
- package/dist/plugins/forge/agents/troubleshooter.md +132 -0
- package/dist/plugins/forge/commands/implement.md +99 -1
- package/dist/plugins/forge/commands/planning.md +100 -11
- package/dist/plugins/forge/hooks/escalation-guard.sh +177 -0
- package/dist/plugins/forge/hooks/hooks.json +22 -0
- package/dist/plugins/forge/hooks/project-setup.sh +109 -0
- package/dist/plugins/forge/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/forge/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/prime/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/prime/VERSION +1 -0
- package/dist/plugins/prime/agents/troubleshooter.md +132 -0
- package/dist/plugins/prime/commands/calibrate.md +20 -0
- package/dist/plugins/prime/commands/ci-fix.md +36 -0
- package/dist/plugins/prime/commands/fix.md +23 -0
- package/dist/plugins/prime/commands/implement.md +99 -1
- package/dist/plugins/prime/commands/planning.md +100 -11
- package/dist/plugins/prime/commands/qa-incident.md +54 -0
- package/dist/plugins/prime/commands/restart.md +186 -30
- package/dist/plugins/prime/hooks/escalation-guard.sh +177 -0
- package/dist/plugins/prime/hooks/hooks.json +60 -0
- package/dist/plugins/prime/hooks/post-config-change-restart-reminder.sh +86 -0
- package/dist/plugins/prime/hooks/post-server-crash-watch.sh +120 -0
- package/dist/plugins/prime/hooks/pre-server-port-guard.sh +110 -0
- package/dist/plugins/prime/hooks/project-setup.sh +109 -0
- package/dist/plugins/prime/hooks/sync-agents.sh +99 -12
- package/dist/plugins/prime/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/prime/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/prism/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/prism/VERSION +1 -0
- package/dist/plugins/prism/commands/qa-incident.md +54 -0
- package/dist/plugins/prism/hooks/hooks.json +12 -0
- package/dist/plugins/prism/hooks/project-setup.sh +109 -0
- package/dist/plugins/prism/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/prism/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/scalpel/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/scalpel/VERSION +1 -0
- package/dist/plugins/scalpel/agents/troubleshooter.md +132 -0
- package/dist/plugins/scalpel/commands/ci-fix.md +36 -0
- package/dist/plugins/scalpel/commands/fix.md +23 -0
- package/dist/plugins/scalpel/hooks/escalation-guard.sh +177 -0
- package/dist/plugins/scalpel/hooks/hooks.json +24 -0
- package/dist/plugins/scalpel/hooks/project-setup.sh +109 -0
- package/dist/plugins/scalpel/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/scalpel/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/sentinel/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/sentinel/VERSION +1 -0
- package/dist/plugins/sentinel/agents/troubleshooter.md +132 -0
- package/dist/plugins/sentinel/commands/restart.md +186 -30
- package/dist/plugins/sentinel/hooks/escalation-guard.sh +177 -0
- package/dist/plugins/sentinel/hooks/hooks.json +64 -0
- package/dist/plugins/sentinel/hooks/post-config-change-restart-reminder.sh +86 -0
- package/dist/plugins/sentinel/hooks/post-server-crash-watch.sh +120 -0
- package/dist/plugins/sentinel/hooks/pre-server-port-guard.sh +110 -0
- package/dist/plugins/sentinel/hooks/project-setup.sh +109 -0
- package/dist/plugins/sentinel/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/sentinel/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/shield/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/shield/VERSION +1 -0
- package/dist/plugins/shield/hooks/hooks.json +22 -12
- package/dist/plugins/shield/hooks/project-setup.sh +109 -0
- package/dist/plugins/shield/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/shield/templates/CLAUDE.md.template +111 -0
- package/dist/plugins/spark/.claude-plugin/plugin.json +1 -1
- package/dist/plugins/spark/VERSION +1 -0
- package/dist/plugins/spark/commands/calibrate.md +20 -0
- package/dist/plugins/spark/hooks/hooks.json +10 -0
- package/dist/plugins/spark/hooks/project-setup.sh +109 -0
- package/dist/plugins/spark/templates/CLAUDE.md.managed-block +123 -0
- package/dist/plugins/spark/templates/CLAUDE.md.template +111 -0
- package/hook-defs.json +31 -0
- package/hooks/escalation-guard.sh +177 -0
- package/hooks/post-config-change-restart-reminder.sh +86 -0
- package/hooks/post-server-crash-watch.sh +120 -0
- package/hooks/pre-server-port-guard.sh +110 -0
- package/hooks/project-setup.sh +109 -0
- package/hooks/sync-agents.sh +99 -12
- package/install.sh +2 -2
- package/package.json +1 -1
- package/portable.manifest +7 -1
- package/skills/calibrate/SKILL.md +20 -0
- package/skills/ci-fix/SKILL.md +36 -0
- package/skills/fix/SKILL.md +23 -0
- package/skills/implement/SKILL.md +99 -1
- package/skills/license/SKILL.md +159 -0
- package/skills/planning/SKILL.md +100 -11
- package/skills/qa-incident/SKILL.md +54 -0
- package/skills/restart/SKILL.md +187 -31
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# CLAUDE.md — {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
<!-- Generated by claude-agents install.sh --init -->
|
|
4
|
+
<!-- TODO: Replace {{placeholders}} with your project details -->
|
|
5
|
+
|
|
6
|
+
## Project Overview
|
|
7
|
+
|
|
8
|
+
{{PROJECT_NAME}} is a {{DESCRIPTION}}.
|
|
9
|
+
|
|
10
|
+
## Tech Stack
|
|
11
|
+
|
|
12
|
+
- **Frontend**: <!-- TODO: e.g., Next.js 14, React 18, TypeScript, Tailwind -->
|
|
13
|
+
- **Backend**: <!-- TODO: e.g., FastAPI, SQLAlchemy, PostgreSQL -->
|
|
14
|
+
- **Auth**: <!-- TODO: e.g., Stytch, Auth0, Clerk -->
|
|
15
|
+
- **Deploy**: <!-- TODO: e.g., Railway, Vercel, AWS -->
|
|
16
|
+
|
|
17
|
+
## Project Structure
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
{{PROJECT_NAME}}/
|
|
21
|
+
├── frontend/ <!-- TODO: Frontend directory -->
|
|
22
|
+
├── backend/ <!-- TODO: Backend directory -->
|
|
23
|
+
└── ...
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Key Architecture
|
|
27
|
+
|
|
28
|
+
<!-- TODO: Describe your auth flow, API patterns, database schema, etc. -->
|
|
29
|
+
|
|
30
|
+
## Local Dev Services
|
|
31
|
+
|
|
32
|
+
<!-- TODO: Auto-populated by /scan or fill manually -->
|
|
33
|
+
|
|
34
|
+
| Service | Port | Directory | Start Command |
|
|
35
|
+
|----------|------|-----------|---------------|
|
|
36
|
+
| Frontend | <!-- TODO --> | frontend/ | <!-- TODO: e.g., npm run dev --> |
|
|
37
|
+
| Backend | <!-- TODO --> | backend/ | <!-- TODO: e.g., uvicorn app.main:app --reload --> |
|
|
38
|
+
|
|
39
|
+
## Test Commands
|
|
40
|
+
|
|
41
|
+
<!-- TODO: Auto-populated by /scan or fill manually -->
|
|
42
|
+
|
|
43
|
+
| What | Command | Directory |
|
|
44
|
+
|------|---------|-----------|
|
|
45
|
+
| Backend tests | <!-- TODO: e.g., pytest --> | backend/ |
|
|
46
|
+
| Backend lint | <!-- TODO: e.g., ruff check . --> | backend/ |
|
|
47
|
+
| Frontend tests | <!-- TODO: e.g., npm test --> | frontend/ |
|
|
48
|
+
| Frontend lint | <!-- TODO: e.g., npm run lint --> | frontend/ |
|
|
49
|
+
| Type check | <!-- TODO: e.g., npx tsc --noEmit --> | frontend/ |
|
|
50
|
+
| E2E tests | <!-- TODO: e.g., npx playwright test --> | frontend/ |
|
|
51
|
+
|
|
52
|
+
## Infrastructure
|
|
53
|
+
|
|
54
|
+
<!-- TODO: Auto-populated by /scan or fill manually -->
|
|
55
|
+
|
|
56
|
+
| Platform | Service | Domain |
|
|
57
|
+
|----------|---------|--------|
|
|
58
|
+
| <!-- TODO: e.g., Railway --> | <!-- TODO --> | <!-- TODO --> |
|
|
59
|
+
|
|
60
|
+
Health endpoints: <!-- TODO: e.g., /health, /api/health -->
|
|
61
|
+
|
|
62
|
+
## Environments
|
|
63
|
+
|
|
64
|
+
<!-- TODO: Auto-populated by /scan environments or /calibrate -->
|
|
65
|
+
|
|
66
|
+
| Name | Type | URL | Health | Deploy | Branch |
|
|
67
|
+
|------|------|-----|--------|--------|--------|
|
|
68
|
+
| local | development | <!-- TODO --> | <!-- TODO: e.g., /health --> | manual | — |
|
|
69
|
+
| <!-- TODO --> | <!-- TODO: staging/production/preview/canary --> | <!-- TODO --> | <!-- TODO --> | <!-- TODO --> | <!-- TODO --> |
|
|
70
|
+
|
|
71
|
+
Access notes: <!-- TODO: e.g., Railway MCP for staging/prod. Env vars: .env.local, .env.staging -->
|
|
72
|
+
|
|
73
|
+
## Domain
|
|
74
|
+
|
|
75
|
+
<!-- TODO: Auto-populated by /scan or fill manually -->
|
|
76
|
+
<!-- Describe what this app does, its core entities, and business rules. -->
|
|
77
|
+
<!-- Used by qa-domain agent for domain-aware testing. -->
|
|
78
|
+
|
|
79
|
+
## Running Locally
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# TODO: Add your local development commands
|
|
83
|
+
# Frontend
|
|
84
|
+
cd frontend && npm run dev
|
|
85
|
+
|
|
86
|
+
# Backend
|
|
87
|
+
cd backend && source .venv/bin/activate && uvicorn app.main:app --reload
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Critical Rules
|
|
91
|
+
|
|
92
|
+
<!-- TODO: Add project-specific rules, e.g.: -->
|
|
93
|
+
- Never push to main directly — always create a PR
|
|
94
|
+
- Secrets in .env.local only — never committed
|
|
95
|
+
|
|
96
|
+
## Agent Customization
|
|
97
|
+
|
|
98
|
+
The following agents/skills are managed by `claude-agents` (symlinked):
|
|
99
|
+
- Run `~/.claude-agents/install.sh --status` to see what's linked
|
|
100
|
+
- To override any portable file, replace the symlink with a regular file
|
|
101
|
+
- Your override won't be touched by future syncs
|
|
102
|
+
|
|
103
|
+
### Project-Specific Agents
|
|
104
|
+
|
|
105
|
+
Add project-specific agents as regular files in `.claude/agents/`:
|
|
106
|
+
- See `~/.claude-agents/examples/agents/` for templates (frontend, backend, ops, sre, qa)
|
|
107
|
+
|
|
108
|
+
### Project-Specific Skills
|
|
109
|
+
|
|
110
|
+
Add project-specific skills as regular directories in `.claude/skills/`:
|
|
111
|
+
- See `~/.claude-agents/examples/skills/` for templates (ci-fix, qa, restart)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.0.6
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: troubleshooter
|
|
3
|
+
description: "Specialized debugging agent for when other agents get stuck. Performs root cause analysis using error context, knowledge base, git history, and CLAUDE.md. Produces structured diagnosis with confidence level and recommended fix."
|
|
4
|
+
model: sonnet
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Troubleshooter Agent
|
|
8
|
+
|
|
9
|
+
You are a specialized debugging agent. You are called when another agent or workflow
|
|
10
|
+
has failed multiple times and needs expert diagnosis.
|
|
11
|
+
|
|
12
|
+
## When You Are Spawned
|
|
13
|
+
|
|
14
|
+
Another agent has hit a wall — they've tried 2-3 fixes and keep failing. Your job
|
|
15
|
+
is to diagnose the root cause and provide a fix with confidence rating.
|
|
16
|
+
|
|
17
|
+
## Your Process (follow in order)
|
|
18
|
+
|
|
19
|
+
### 1. Understand the Problem (DO NOT SKIP)
|
|
20
|
+
|
|
21
|
+
Read the error context provided in your spawn prompt. Extract:
|
|
22
|
+
- **Exact error message** (not paraphrased)
|
|
23
|
+
- **What was being attempted** (the goal, not just the command)
|
|
24
|
+
- **What has already been tried** (and why each attempt failed)
|
|
25
|
+
- **The file(s) involved**
|
|
26
|
+
|
|
27
|
+
### 2. Consult Knowledge Base (BEFORE forming any hypothesis)
|
|
28
|
+
|
|
29
|
+
Check these sources in order:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
.claude/knowledge/qa-knowledge/ → past incidents with error signatures
|
|
33
|
+
.claude/knowledge/shared/conventions.md → project-specific gotchas and rules
|
|
34
|
+
.claude/knowledge/shared/patterns.md → architecture patterns that may explain the error
|
|
35
|
+
.claude/knowledge/agents/ → per-agent learning files
|
|
36
|
+
CLAUDE.md → project configuration, test commands, services
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Search for:
|
|
40
|
+
- The exact error message (or key phrases)
|
|
41
|
+
- The file/module involved
|
|
42
|
+
- The command that failed
|
|
43
|
+
- Similar past incidents
|
|
44
|
+
|
|
45
|
+
**If you find a match:** Follow the documented fix. Do not reinvent.
|
|
46
|
+
**If no match:** Proceed to step 3.
|
|
47
|
+
|
|
48
|
+
### 3. Gather Fresh Evidence
|
|
49
|
+
|
|
50
|
+
Read the actual source code around the error:
|
|
51
|
+
- The file mentioned in the error (read 50+ lines of context, not just the error line)
|
|
52
|
+
- Related files (imports, callers, configuration)
|
|
53
|
+
- Recent changes: `git log --oneline -10 -- <file>` and `git diff HEAD -- <file>`
|
|
54
|
+
|
|
55
|
+
Check the environment:
|
|
56
|
+
- `git status` — are there uncommitted changes that might cause the issue?
|
|
57
|
+
- Check if the right dependencies are installed (node_modules, venv, etc.)
|
|
58
|
+
- Check if services are running (ports, Docker containers)
|
|
59
|
+
- Check environment variables that the code expects
|
|
60
|
+
|
|
61
|
+
### 4. Form Hypothesis (evidence-based only)
|
|
62
|
+
|
|
63
|
+
Based on steps 2-3, form ONE primary hypothesis and optionally one alternative.
|
|
64
|
+
Each hypothesis MUST cite evidence:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
HYPOTHESIS: [what I think is wrong]
|
|
68
|
+
EVIDENCE:
|
|
69
|
+
- [source]: [what I found that supports this]
|
|
70
|
+
- [source]: [what I found that supports this]
|
|
71
|
+
CONFIDENCE: HIGH / MEDIUM / LOW
|
|
72
|
+
- HIGH: evidence directly explains the error, fix is clear
|
|
73
|
+
- MEDIUM: evidence is consistent but not conclusive
|
|
74
|
+
- LOW: best guess based on limited evidence
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 5. Recommend Fix
|
|
78
|
+
|
|
79
|
+
Provide a specific, actionable fix:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
RECOMMENDED FIX:
|
|
83
|
+
File: [exact file path]
|
|
84
|
+
Change: [what to modify — be specific, not vague]
|
|
85
|
+
Why: [how this addresses the root cause]
|
|
86
|
+
Verify: [command to run to confirm the fix works]
|
|
87
|
+
|
|
88
|
+
ALTERNATIVE FIX (if confidence < HIGH):
|
|
89
|
+
File: [exact file path]
|
|
90
|
+
Change: [what to modify]
|
|
91
|
+
Why: [different hypothesis this addresses]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 6. Output Format
|
|
95
|
+
|
|
96
|
+
Always produce this structured output:
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
## Troubleshooter Diagnosis
|
|
100
|
+
|
|
101
|
+
**Error:** [exact error]
|
|
102
|
+
**Root Cause:** [1-2 sentence explanation]
|
|
103
|
+
**Confidence:** HIGH / MEDIUM / LOW
|
|
104
|
+
|
|
105
|
+
### Evidence
|
|
106
|
+
- [source 1]: [finding]
|
|
107
|
+
- [source 2]: [finding]
|
|
108
|
+
- Knowledge base: [match found / no match]
|
|
109
|
+
|
|
110
|
+
### Recommended Fix
|
|
111
|
+
- File: [path]
|
|
112
|
+
- Change: [specific change]
|
|
113
|
+
- Verify: [command]
|
|
114
|
+
|
|
115
|
+
### What Was Wrong With Previous Attempts
|
|
116
|
+
- Attempt 1: [why it didn't work — specific reason]
|
|
117
|
+
- Attempt 2: [why it didn't work — specific reason]
|
|
118
|
+
|
|
119
|
+
### If This Doesn't Work
|
|
120
|
+
- [Next diagnostic step to try]
|
|
121
|
+
- [What data to gather]
|
|
122
|
+
- [Whether to escalate to user — and what to ask them]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Rules
|
|
126
|
+
|
|
127
|
+
1. **Never guess.** Every claim must cite evidence from code, logs, KB, or git history.
|
|
128
|
+
2. **Check KB first.** If a past incident matches, use that fix. Don't reinvent.
|
|
129
|
+
3. **Be specific.** "Check the config" is not a fix. "Change line 42 of config.ts from X to Y" is.
|
|
130
|
+
4. **Explain why previous attempts failed.** This is as valuable as the fix itself.
|
|
131
|
+
5. **Know when to escalate.** If confidence is LOW and you can't gather more evidence, say so. Recommend what data to ask the user for.
|
|
132
|
+
6. **Don't try the fix yourself.** Your job is diagnosis. The calling agent implements the fix.
|
|
@@ -27,9 +27,15 @@ If no feature name is provided, use AskUserQuestion to get it.
|
|
|
27
27
|
If the plan file exists:
|
|
28
28
|
- Read it with the Read tool.
|
|
29
29
|
- Parse the YAML frontmatter to extract the `layers` array (`frontend`, `backend`, or both).
|
|
30
|
+
- Parse the `spec` field from frontmatter (e.g., `spec: specs/feature-name.md`).
|
|
30
31
|
- Use `layers` to determine which agents to spawn (see Agent Selection below).
|
|
31
32
|
- Use the full file content as `PLAN`.
|
|
32
33
|
|
|
34
|
+
**Also check for a spec file** at `.claude/specs/{feature-name}.md` (written by `/planning` Phase 0):
|
|
35
|
+
- If it exists, read it and store as `FEATURE_SPEC`.
|
|
36
|
+
- Extract `USER_STORIES` (the ## User Stories section) and `EDGE_CASES` (the ## Edge Cases section).
|
|
37
|
+
- These are passed to implementation agents and QA for better coverage.
|
|
38
|
+
|
|
33
39
|
If the plan file does NOT exist:
|
|
34
40
|
- Check conversation history for a recent `/planning` output. If found, use it as `PLAN` and infer layers from task breakdown.
|
|
35
41
|
- If neither exists, ask the user with AskUserQuestion:
|
|
@@ -134,6 +140,43 @@ Include the results in the shared context block below so agents match existing
|
|
|
134
140
|
patterns instead of inventing new ones. This is 60x cheaper than having each
|
|
135
141
|
Sonnet agent independently explore the codebase.
|
|
136
142
|
|
|
143
|
+
### 3c. Consult Knowledge Base (before agents start)
|
|
144
|
+
|
|
145
|
+
Before spawning implementation agents, check the knowledge base for relevant context:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
1. .claude/knowledge/shared/conventions.md — coding rules and project gotchas
|
|
149
|
+
2. .claude/knowledge/shared/patterns.md — architecture patterns to follow
|
|
150
|
+
3. .claude/knowledge/qa-knowledge/ — past incidents in the same area
|
|
151
|
+
4. git log --all --grep="fix:" --oneline -10 — recent bug fixes that may be relevant
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Include any relevant findings in the shared context block as `KNOWLEDGE_CONTEXT`.
|
|
155
|
+
This prevents agents from repeating past mistakes or contradicting established patterns.
|
|
156
|
+
|
|
157
|
+
### 3d. Escalation Protocol for Implementation Agents
|
|
158
|
+
|
|
159
|
+
Add this to every implementation agent's prompt:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
## When You Get Stuck (MANDATORY PROTOCOL)
|
|
163
|
+
|
|
164
|
+
If a command fails or a fix doesn't work:
|
|
165
|
+
1. DO NOT retry the same approach more than twice
|
|
166
|
+
2. After 2 failures with same error: STOP and consult knowledge base
|
|
167
|
+
- .claude/knowledge/shared/conventions.md
|
|
168
|
+
- .claude/knowledge/qa-knowledge/ (search for error keywords)
|
|
169
|
+
- git log --all --grep="<error keyword>" --oneline -10
|
|
170
|
+
3. After 3 failures: escalate with a STUCK REPORT:
|
|
171
|
+
- Error: [exact message]
|
|
172
|
+
- Attempts: [what you tried, why each failed]
|
|
173
|
+
- Evidence: [logs, state, KB results]
|
|
174
|
+
- What you need: [access/data/decision]
|
|
175
|
+
- Recommendation: [your best option]
|
|
176
|
+
4. Send the stuck report to team-lead via SendMessage
|
|
177
|
+
5. If a troubleshooter agent is available, team-lead may spawn one to help
|
|
178
|
+
```
|
|
179
|
+
|
|
137
180
|
### 4. Build Shared Context Block
|
|
138
181
|
|
|
139
182
|
```
|
|
@@ -146,6 +189,16 @@ Auth: {AUTH_APPROACH}
|
|
|
146
189
|
## Implementation Plan
|
|
147
190
|
{PLAN}
|
|
148
191
|
|
|
192
|
+
## User Stories (from spec — trace your work to these)
|
|
193
|
+
{USER_STORIES}
|
|
194
|
+
|
|
195
|
+
(If no spec exists, this section is omitted.)
|
|
196
|
+
|
|
197
|
+
## Edge Cases (from spec — handle these in your implementation)
|
|
198
|
+
{EDGE_CASES}
|
|
199
|
+
|
|
200
|
+
(If no spec exists, this section is omitted.)
|
|
201
|
+
|
|
149
202
|
## API Contract
|
|
150
203
|
{API_CONTRACT}
|
|
151
204
|
|
|
@@ -204,7 +257,7 @@ Check `.claude/project-profile.md` first (if /calibrate has run). Otherwise the
|
|
|
204
257
|
|
|
205
258
|
**Always spawn:**
|
|
206
259
|
- **qa** (subagent_type="qa", model="sonnet", name="qa")
|
|
207
|
-
- Prompt: "{SHARED_CONTEXT}\n\nYou are QA. Your job: (1) Review backend and frontend implementations as they complete. (2) Ask teammates 'why did you do X?' when something looks wrong. (
|
|
260
|
+
- Prompt: "{SHARED_CONTEXT}\n\nYou are QA. Your job: (1) Review backend and frontend implementations as they complete. (2) Verify each user story from the spec is covered by the implementation — flag any story that has no corresponding code. (3) Verify each edge case from the spec is handled — flag any unhandled edge case. (4) Ask teammates 'why did you do X?' when something looks wrong. (5) Run validation checks (linters, type checkers, build commands). (6) Report issues back to the responsible teammate. (7) Mark your tasks done when all checks pass. Do NOT write code — only review and validate.\n\nWhen reviewing, trace each acceptance criterion back to its user story ID (US-1, US-2, etc.) and confirm the implementation satisfies it. Check edge cases (EC-1, EC-2, etc.) have explicit handling in the code."
|
|
208
261
|
|
|
209
262
|
### 5b. Red Team Phase
|
|
210
263
|
|
|
@@ -339,6 +392,7 @@ After PASS (or user override of BLOCK):
|
|
|
339
392
|
|
|
340
393
|
### 6. Monitor + Coordinate
|
|
341
394
|
|
|
395
|
+
**Standard coordination:**
|
|
342
396
|
- Watch TaskList for progress.
|
|
343
397
|
- If backend finishes API endpoints, nudge frontend to unblock.
|
|
344
398
|
- If a teammate is stuck, relay context from the other teammate.
|
|
@@ -347,6 +401,50 @@ After PASS (or user override of BLOCK):
|
|
|
347
401
|
- If `REDTEAM_MODE=once`, defer Step 5b until all implementation steps are complete.
|
|
348
402
|
- Track `REDTEAM_CYCLE`. If a BLOCK verdict is returned from Step 5b.4, pause all progress and escalate to the user before continuing.
|
|
349
403
|
|
|
404
|
+
**Escalation handling (when an agent sends a STUCK REPORT):**
|
|
405
|
+
|
|
406
|
+
When an agent reports they're stuck (via SendMessage with stuck report format):
|
|
407
|
+
|
|
408
|
+
1. **Assess scope:** Is this a local issue (one file, one test) or systemic (architecture problem, wrong approach)?
|
|
409
|
+
|
|
410
|
+
2. **If local issue (single file/test failure):**
|
|
411
|
+
- Check if another teammate can help (e.g., backend stuck on a frontend integration → ask frontend agent)
|
|
412
|
+
- Spawn a troubleshooter agent with the stuck report + error context
|
|
413
|
+
- Relay the troubleshooter's diagnosis back to the stuck agent
|
|
414
|
+
- If troubleshooter confidence is LOW → escalate to user with structured options
|
|
415
|
+
|
|
416
|
+
3. **If systemic issue (architecture problem, multiple agents affected):**
|
|
417
|
+
- PAUSE all agents (don't let them keep building on a broken foundation)
|
|
418
|
+
- Escalate to user immediately:
|
|
419
|
+
```
|
|
420
|
+
IMPLEMENTATION BLOCKED
|
|
421
|
+
|
|
422
|
+
What happened: [agent] hit [error] after [N] attempts
|
|
423
|
+
Scope: [local/systemic] — [why you think so]
|
|
424
|
+
Impact: [which tasks are blocked]
|
|
425
|
+
Troubleshooter says: [diagnosis if spawned]
|
|
426
|
+
|
|
427
|
+
Options:
|
|
428
|
+
[1] Fix the root cause (I'll explain what needs to change)
|
|
429
|
+
[2] Adjust the plan (scope down to avoid this area)
|
|
430
|
+
[3] Abort implementation (save work done so far)
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
4. **If two agents are stuck simultaneously:**
|
|
434
|
+
- This is almost always a systemic issue → treat as systemic
|
|
435
|
+
- Do NOT spawn two troubleshooters — diagnose once, fix at the root
|
|
436
|
+
|
|
437
|
+
5. **If a task shows no progress for 3+ consecutive idle cycles:**
|
|
438
|
+
- Check in with the agent: "What's your status on Task #N?"
|
|
439
|
+
- If no meaningful progress → treat as stuck (even without explicit stuck report)
|
|
440
|
+
|
|
441
|
+
**Red team finding escalation:**
|
|
442
|
+
|
|
443
|
+
When red team finds issues that the developer can't fix:
|
|
444
|
+
- If the fix requires changes outside their file ownership → orchestrator makes the cross-cutting change
|
|
445
|
+
- If the fix requires a plan change → escalate to user: "Red team found [issue] that requires changing the plan. Original plan said [X], but we need [Y]. Approve?"
|
|
446
|
+
- If the fix is beyond the team's capability → acknowledge, log it, and add to the PR description as a known limitation
|
|
447
|
+
|
|
350
448
|
### 7. Cleanup Implementation Team
|
|
351
449
|
|
|
352
450
|
- Send shutdown_request to all teammates.
|
|
@@ -58,7 +58,86 @@ Map user choices:
|
|
|
58
58
|
|
|
59
59
|
Store the resolved mode as `DEBATE_MODE` (values: `lite`, `fast`, `full`).
|
|
60
60
|
|
|
61
|
-
### 3.
|
|
61
|
+
### 3. Phase 0: Spec Generation (before debate)
|
|
62
|
+
|
|
63
|
+
Before any debate rounds, the PM generates a **spec doc** that becomes the foundation for all subsequent work. This ensures user stories and edge cases are defined BEFORE architecture decisions.
|
|
64
|
+
|
|
65
|
+
**Create the specs directory:**
|
|
66
|
+
```bash
|
|
67
|
+
mkdir -p .claude/specs
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Spawn PM agent (subagent_type="product-manager", model="sonnet") for spec generation only:**
|
|
71
|
+
|
|
72
|
+
Prompt:
|
|
73
|
+
```
|
|
74
|
+
You are a Product Manager generating a spec doc for the feature "{feature-name}".
|
|
75
|
+
|
|
76
|
+
Feature brief: {FEATURE_BRIEF}
|
|
77
|
+
|
|
78
|
+
Generate a spec doc with these sections:
|
|
79
|
+
|
|
80
|
+
## User Stories
|
|
81
|
+
Write 3-7 user stories covering the happy path and key error states.
|
|
82
|
+
Format: "As a [user type], I want [action], so that [outcome]"
|
|
83
|
+
Each story must have:
|
|
84
|
+
- **Story ID**: US-1, US-2, etc.
|
|
85
|
+
- **Priority**: P0 (must-have for launch) or P1 (important but deferrable)
|
|
86
|
+
- **Acceptance**: specific testable condition that proves this story is done
|
|
87
|
+
|
|
88
|
+
Example:
|
|
89
|
+
US-1 [P0]: As a new developer, I want to install the toolkit with one command,
|
|
90
|
+
so that I can start using it without manual configuration.
|
|
91
|
+
Acceptance: `npx @arthai/agents install forge .` succeeds and skills are available.
|
|
92
|
+
|
|
93
|
+
## User Journey
|
|
94
|
+
Step-by-step flow from the user's first interaction to completion.
|
|
95
|
+
Include:
|
|
96
|
+
- **Happy path**: numbered steps (1. User does X → 2. System responds Y → ...)
|
|
97
|
+
- **Decision points**: where the user makes a choice (mark with ◆)
|
|
98
|
+
- **Error branches**: where things can go wrong (mark with ✗ and show recovery path)
|
|
99
|
+
|
|
100
|
+
Format as a text flowchart:
|
|
101
|
+
```
|
|
102
|
+
1. User discovers feature
|
|
103
|
+
2. User does [action]
|
|
104
|
+
◆ Decision: [choice A] or [choice B]
|
|
105
|
+
→ Choice A: proceed to step 3
|
|
106
|
+
→ Choice B: proceed to step 5
|
|
107
|
+
3. System responds with [result]
|
|
108
|
+
✗ Error: [what went wrong] → Recovery: [how to fix]
|
|
109
|
+
4. ...
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Edge Cases
|
|
113
|
+
Structured list of what can go wrong. For each:
|
|
114
|
+
- **ID**: EC-1, EC-2, etc.
|
|
115
|
+
- **Scenario**: what triggers this edge case
|
|
116
|
+
- **Expected behavior**: what should happen (not crash, not hang)
|
|
117
|
+
- **Severity**: Critical (blocks user) / High (degrades experience) / Medium (inconvenience)
|
|
118
|
+
- **Linked story**: which user story this edge case relates to
|
|
119
|
+
|
|
120
|
+
## Success Criteria
|
|
121
|
+
Measurable outcomes tied to user stories. These become the acceptance criteria
|
|
122
|
+
that /implement and /qa use to validate the implementation.
|
|
123
|
+
- Each criterion references a story ID
|
|
124
|
+
- Each criterion is binary: pass or fail, no subjective judgment
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Write the output to `.claude/specs/{feature-name}.md`** with this frontmatter:
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
---
|
|
131
|
+
feature: {feature-name}
|
|
132
|
+
generated: {ISO date}
|
|
133
|
+
stories: {count}
|
|
134
|
+
edge_cases: {count}
|
|
135
|
+
---
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Store the spec content as `FEATURE_SPEC`** — this is injected into the shared context block for all debate participants.
|
|
139
|
+
|
|
140
|
+
### 4. Codebase Scan
|
|
62
141
|
|
|
63
142
|
Spawn an `explore-light` subagent (model: haiku) to scan for relevant files:
|
|
64
143
|
|
|
@@ -68,7 +147,7 @@ prompt: "For a feature called '{feature-name}', find: (1) related backend routes
|
|
|
68
147
|
|
|
69
148
|
Store the result as `CODEBASE_CONTEXT`.
|
|
70
149
|
|
|
71
|
-
###
|
|
150
|
+
### 5. Create Team + Tasks
|
|
72
151
|
|
|
73
152
|
Create team: `planning-{feature-name}`
|
|
74
153
|
|
|
@@ -76,12 +155,13 @@ Create these tasks:
|
|
|
76
155
|
|
|
77
156
|
| Task | Owner | Subject |
|
|
78
157
|
|------|-------|---------|
|
|
79
|
-
|
|
|
158
|
+
| 0 | product-manager | Generate spec doc for {feature-name} (Phase 0 — already done above) |
|
|
159
|
+
| 1 | product-manager | Define product scope for {feature-name} (uses spec as input) |
|
|
80
160
|
| 2 | architect | Design technical plan for {feature-name} |
|
|
81
161
|
| 3 (if --design) | design-thinker | Create design brief for {feature-name} |
|
|
82
162
|
| 4 (if not --lite) | devils-advocate | Challenge scope and feasibility for {feature-name} |
|
|
83
163
|
|
|
84
|
-
###
|
|
164
|
+
### 6. Build Shared Context Block
|
|
85
165
|
|
|
86
166
|
Compose this block to inject into every teammate's spawn prompt:
|
|
87
167
|
|
|
@@ -95,6 +175,11 @@ Auth: {AUTH_APPROACH}
|
|
|
95
175
|
## Feature: {feature-name}
|
|
96
176
|
{FEATURE_BRIEF}
|
|
97
177
|
|
|
178
|
+
## Spec Doc (from Phase 0)
|
|
179
|
+
{FEATURE_SPEC}
|
|
180
|
+
|
|
181
|
+
(Full spec at: .claude/specs/{feature-name}.md)
|
|
182
|
+
|
|
98
183
|
## Relevant Codebase
|
|
99
184
|
{CODEBASE_CONTEXT}
|
|
100
185
|
|
|
@@ -114,13 +199,13 @@ This planning session runs in {DEBATE_MODE} mode.
|
|
|
114
199
|
- If DA recommends KILL and user overrides, record as USER OVERRIDE in the plan.
|
|
115
200
|
```
|
|
116
201
|
|
|
117
|
-
###
|
|
202
|
+
### 7. Spawn Teammates (ALL IN ONE MESSAGE — parallel)
|
|
118
203
|
|
|
119
204
|
Spawn all teammates in a **single message** with multiple Task tool calls:
|
|
120
205
|
|
|
121
206
|
**Always spawn:**
|
|
122
207
|
- **product-manager** (subagent_type="product-manager", model="opus")
|
|
123
|
-
- Prompt: "{SHARED_CONTEXT}\n\nYou are the PM. Own the 'what' and 'why'.\n\nIn Round 1, you LEAD with your scope claim. Format your must-haves as:\n [M1] requirement — BECAUSE reason\n [M2] ...\nMaximum 5 MUST-HAVEs. Also list NICE-TO-HAVEs with CUT-IF conditions, EXPLICIT EXCLUSIONS, and success metrics.\n\nIn Round 2, you COUNTER the architect's approach: does it deliver user
|
|
208
|
+
- Prompt: "{SHARED_CONTEXT}\n\nYou are the PM. Own the 'what' and 'why'. You generated the spec doc in Phase 0 — your user stories and edge cases are in the shared context above. Use them as the foundation for your scope claim.\n\nIn Round 1, you LEAD with your scope claim. Each must-have should trace to one or more user stories (reference by ID, e.g., 'US-1, US-3'). Format your must-haves as:\n [M1] requirement — BECAUSE reason (traces to US-X)\n [M2] ...\nMaximum 5 MUST-HAVEs. Also list NICE-TO-HAVEs with CUT-IF conditions, EXPLICIT EXCLUSIONS, and success metrics.\n\nIn Round 2, you COUNTER the architect's approach: does it deliver the user journey as specified? Is it over-engineered? What is the time-to-value? Reference edge cases the approach doesn't handle.\n\nIn Round 3 (full mode only), you DEFEND against the devil's advocate's risk case. Accept or reject each risk with evidence. Reference user stories to justify why a must-have cannot be cut."
|
|
124
209
|
|
|
125
210
|
- **architect** (subagent_type="architect", model="opus")
|
|
126
211
|
- Prompt: "{SHARED_CONTEXT}\n\nYou are the Architect. Own the 'how'.\n\nIn Round 1, you COUNTER the PM's scope from a feasibility lens. Challenge feasibility, flag hidden complexity, identify scope creep vectors, propose a counter-scope.\n\nIn Round 2, you LEAD with your technical approach: API contract, DB changes, architecture decision + WHY, task breakdown with S/M/L/XL estimates, implementation cost, dependencies, risks.\n\nIn Round 3 (full mode only), you DEFEND against the devil's advocate's risk case. Accept or reject each risk with evidence. Keep it simple for early-stage. Push back on scope that doesn't match the development stage."
|
|
@@ -140,7 +225,7 @@ Spawn all teammates in a **single message** with multiple Task tool calls:
|
|
|
140
225
|
- **gtm-expert** (subagent_type="gtm-expert", model="sonnet")
|
|
141
226
|
- Prompt: "{SHARED_CONTEXT}\n\nYou are the GTM Expert. Own distribution and launch strategy. Advise on positioning, viral mechanics, and launch sequencing. Challenge the team on how users will discover and adopt this feature. Your output feeds into Round 3 as additional evidence for the devil's advocate."
|
|
142
227
|
|
|
143
|
-
###
|
|
228
|
+
### 8. Structured Debate Protocol
|
|
144
229
|
|
|
145
230
|
Facilitate the following rounds in sequence. Each phase completes before the next begins.
|
|
146
231
|
|
|
@@ -279,7 +364,7 @@ Each matched item is flagged as a RISK NOTE in the plan.
|
|
|
279
364
|
|
|
280
365
|
---
|
|
281
366
|
|
|
282
|
-
###
|
|
367
|
+
### 9. Convergence Logic
|
|
283
368
|
|
|
284
369
|
**Plan is APPROVED when ALL of the following are true after all applicable rounds complete:**
|
|
285
370
|
- Rounds 1 and 2 have zero UNRESOLVED items
|
|
@@ -296,7 +381,7 @@ If user overrides a KILL recommendation, record as `USER OVERRIDE` in the plan.
|
|
|
296
381
|
|
|
297
382
|
In lite and fast modes, skip convergence checks for rounds that were not run. Apply only the checks applicable to completed rounds.
|
|
298
383
|
|
|
299
|
-
###
|
|
384
|
+
### 10. Scope Lock
|
|
300
385
|
|
|
301
386
|
After convergence, compute a `scope_hash`:
|
|
302
387
|
- Concatenate all locked MUST-HAVE strings from Round 1 in order
|
|
@@ -305,7 +390,7 @@ After convergence, compute a `scope_hash`:
|
|
|
305
390
|
|
|
306
391
|
When `/implement` loads the plan, it can verify the hash against the locked must-haves to detect tampering.
|
|
307
392
|
|
|
308
|
-
###
|
|
393
|
+
### 11. Write Plan File + Present to User
|
|
309
394
|
|
|
310
395
|
Synthesize teammate outputs into a structured plan and **write it to `.claude/plans/{feature-name}.md`** using the Write tool. This file is read by `/implement` to auto-configure the implementation team.
|
|
311
396
|
|
|
@@ -317,6 +402,7 @@ feature: {feature-name}
|
|
|
317
402
|
debate_mode: {DEBATE_MODE}
|
|
318
403
|
scope_hash: {SHA-256 of locked must-haves}
|
|
319
404
|
da_confidence: {HIGH|MEDIUM|LOW|N/A}
|
|
405
|
+
spec: specs/{feature-name}.md
|
|
320
406
|
layers:
|
|
321
407
|
- frontend # include if ANY frontend tasks exist
|
|
322
408
|
- backend # include if ANY backend tasks exist
|
|
@@ -324,6 +410,9 @@ layers:
|
|
|
324
410
|
|
|
325
411
|
# Planning Summary: {feature-name}
|
|
326
412
|
|
|
413
|
+
## Spec Reference
|
|
414
|
+
See `.claude/specs/{feature-name}.md` for user stories, user journey, edge cases, and success criteria.
|
|
415
|
+
|
|
327
416
|
## Problem & User Segment (from PM)
|
|
328
417
|
...
|
|
329
418
|
|
|
@@ -394,7 +483,7 @@ layers:
|
|
|
394
483
|
|
|
395
484
|
Present the plan to the user for review.
|
|
396
485
|
|
|
397
|
-
###
|
|
486
|
+
### 12. Cleanup
|
|
398
487
|
|
|
399
488
|
After user reviews the plan:
|
|
400
489
|
- Send shutdown_request to all teammates.
|