@arthai/agents 1.0.4 → 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.
Files changed (131) hide show
  1. package/README.md +55 -3
  2. package/VERSION +1 -1
  3. package/agents/troubleshooter.md +132 -0
  4. package/bin/cli.js +366 -0
  5. package/bundles/canvas.json +1 -1
  6. package/bundles/compass.json +1 -1
  7. package/bundles/counsel.json +1 -0
  8. package/bundles/cruise.json +1 -1
  9. package/bundles/forge.json +12 -1
  10. package/bundles/prism.json +1 -0
  11. package/bundles/scalpel.json +5 -2
  12. package/bundles/sentinel.json +8 -2
  13. package/bundles/shield.json +1 -0
  14. package/bundles/spark.json +1 -0
  15. package/compiler.sh +14 -0
  16. package/dist/plugins/canvas/.claude-plugin/plugin.json +1 -1
  17. package/dist/plugins/canvas/VERSION +1 -0
  18. package/dist/plugins/canvas/commands/planning.md +100 -11
  19. package/dist/plugins/canvas/hooks/hooks.json +16 -0
  20. package/dist/plugins/canvas/hooks/project-setup.sh +109 -0
  21. package/dist/plugins/canvas/templates/CLAUDE.md.managed-block +123 -0
  22. package/dist/plugins/canvas/templates/CLAUDE.md.template +111 -0
  23. package/dist/plugins/compass/.claude-plugin/plugin.json +1 -1
  24. package/dist/plugins/compass/VERSION +1 -0
  25. package/dist/plugins/compass/commands/planning.md +100 -11
  26. package/dist/plugins/compass/hooks/hooks.json +16 -0
  27. package/dist/plugins/compass/hooks/project-setup.sh +109 -0
  28. package/dist/plugins/compass/templates/CLAUDE.md.managed-block +123 -0
  29. package/dist/plugins/compass/templates/CLAUDE.md.template +111 -0
  30. package/dist/plugins/counsel/.claude-plugin/plugin.json +1 -1
  31. package/dist/plugins/counsel/VERSION +1 -0
  32. package/dist/plugins/counsel/hooks/hooks.json +10 -0
  33. package/dist/plugins/counsel/hooks/project-setup.sh +109 -0
  34. package/dist/plugins/counsel/templates/CLAUDE.md.managed-block +123 -0
  35. package/dist/plugins/counsel/templates/CLAUDE.md.template +111 -0
  36. package/dist/plugins/cruise/.claude-plugin/plugin.json +1 -1
  37. package/dist/plugins/cruise/VERSION +1 -0
  38. package/dist/plugins/cruise/hooks/hooks.json +16 -0
  39. package/dist/plugins/cruise/hooks/project-setup.sh +109 -0
  40. package/dist/plugins/cruise/templates/CLAUDE.md.managed-block +123 -0
  41. package/dist/plugins/cruise/templates/CLAUDE.md.template +111 -0
  42. package/dist/plugins/forge/.claude-plugin/plugin.json +1 -1
  43. package/dist/plugins/forge/VERSION +1 -0
  44. package/dist/plugins/forge/agents/troubleshooter.md +132 -0
  45. package/dist/plugins/forge/commands/implement.md +99 -1
  46. package/dist/plugins/forge/commands/planning.md +100 -11
  47. package/dist/plugins/forge/hooks/escalation-guard.sh +177 -0
  48. package/dist/plugins/forge/hooks/hooks.json +22 -0
  49. package/dist/plugins/forge/hooks/project-setup.sh +109 -0
  50. package/dist/plugins/forge/templates/CLAUDE.md.managed-block +123 -0
  51. package/dist/plugins/forge/templates/CLAUDE.md.template +111 -0
  52. package/dist/plugins/prime/.claude-plugin/plugin.json +1 -1
  53. package/dist/plugins/prime/VERSION +1 -0
  54. package/dist/plugins/prime/agents/troubleshooter.md +132 -0
  55. package/dist/plugins/prime/commands/calibrate.md +20 -0
  56. package/dist/plugins/prime/commands/ci-fix.md +36 -0
  57. package/dist/plugins/prime/commands/fix.md +23 -0
  58. package/dist/plugins/prime/commands/implement.md +99 -1
  59. package/dist/plugins/prime/commands/planning.md +100 -11
  60. package/dist/plugins/prime/commands/qa-incident.md +54 -0
  61. package/dist/plugins/prime/commands/restart.md +186 -30
  62. package/dist/plugins/prime/hooks/escalation-guard.sh +177 -0
  63. package/dist/plugins/prime/hooks/hooks.json +60 -0
  64. package/dist/plugins/prime/hooks/post-config-change-restart-reminder.sh +86 -0
  65. package/dist/plugins/prime/hooks/post-server-crash-watch.sh +120 -0
  66. package/dist/plugins/prime/hooks/pre-server-port-guard.sh +110 -0
  67. package/dist/plugins/prime/hooks/project-setup.sh +109 -0
  68. package/dist/plugins/prime/hooks/sync-agents.sh +99 -12
  69. package/dist/plugins/prime/templates/CLAUDE.md.managed-block +123 -0
  70. package/dist/plugins/prime/templates/CLAUDE.md.template +111 -0
  71. package/dist/plugins/prism/.claude-plugin/plugin.json +1 -1
  72. package/dist/plugins/prism/VERSION +1 -0
  73. package/dist/plugins/prism/commands/qa-incident.md +54 -0
  74. package/dist/plugins/prism/hooks/hooks.json +12 -0
  75. package/dist/plugins/prism/hooks/project-setup.sh +109 -0
  76. package/dist/plugins/prism/templates/CLAUDE.md.managed-block +123 -0
  77. package/dist/plugins/prism/templates/CLAUDE.md.template +111 -0
  78. package/dist/plugins/scalpel/.claude-plugin/plugin.json +1 -1
  79. package/dist/plugins/scalpel/VERSION +1 -0
  80. package/dist/plugins/scalpel/agents/troubleshooter.md +132 -0
  81. package/dist/plugins/scalpel/commands/ci-fix.md +36 -0
  82. package/dist/plugins/scalpel/commands/fix.md +23 -0
  83. package/dist/plugins/scalpel/hooks/escalation-guard.sh +177 -0
  84. package/dist/plugins/scalpel/hooks/hooks.json +24 -0
  85. package/dist/plugins/scalpel/hooks/project-setup.sh +109 -0
  86. package/dist/plugins/scalpel/templates/CLAUDE.md.managed-block +123 -0
  87. package/dist/plugins/scalpel/templates/CLAUDE.md.template +111 -0
  88. package/dist/plugins/sentinel/.claude-plugin/plugin.json +1 -1
  89. package/dist/plugins/sentinel/VERSION +1 -0
  90. package/dist/plugins/sentinel/agents/troubleshooter.md +132 -0
  91. package/dist/plugins/sentinel/commands/restart.md +186 -30
  92. package/dist/plugins/sentinel/hooks/escalation-guard.sh +177 -0
  93. package/dist/plugins/sentinel/hooks/hooks.json +64 -0
  94. package/dist/plugins/sentinel/hooks/post-config-change-restart-reminder.sh +86 -0
  95. package/dist/plugins/sentinel/hooks/post-server-crash-watch.sh +120 -0
  96. package/dist/plugins/sentinel/hooks/pre-server-port-guard.sh +110 -0
  97. package/dist/plugins/sentinel/hooks/project-setup.sh +109 -0
  98. package/dist/plugins/sentinel/templates/CLAUDE.md.managed-block +123 -0
  99. package/dist/plugins/sentinel/templates/CLAUDE.md.template +111 -0
  100. package/dist/plugins/shield/.claude-plugin/plugin.json +1 -1
  101. package/dist/plugins/shield/VERSION +1 -0
  102. package/dist/plugins/shield/hooks/hooks.json +22 -12
  103. package/dist/plugins/shield/hooks/project-setup.sh +109 -0
  104. package/dist/plugins/shield/templates/CLAUDE.md.managed-block +123 -0
  105. package/dist/plugins/shield/templates/CLAUDE.md.template +111 -0
  106. package/dist/plugins/spark/.claude-plugin/plugin.json +1 -1
  107. package/dist/plugins/spark/VERSION +1 -0
  108. package/dist/plugins/spark/commands/calibrate.md +20 -0
  109. package/dist/plugins/spark/hooks/hooks.json +10 -0
  110. package/dist/plugins/spark/hooks/project-setup.sh +109 -0
  111. package/dist/plugins/spark/templates/CLAUDE.md.managed-block +123 -0
  112. package/dist/plugins/spark/templates/CLAUDE.md.template +111 -0
  113. package/hook-defs.json +31 -0
  114. package/hooks/escalation-guard.sh +177 -0
  115. package/hooks/post-config-change-restart-reminder.sh +86 -0
  116. package/hooks/post-server-crash-watch.sh +120 -0
  117. package/hooks/pre-server-port-guard.sh +110 -0
  118. package/hooks/project-setup.sh +109 -0
  119. package/hooks/sync-agents.sh +99 -12
  120. package/install.sh +2 -2
  121. package/package.json +1 -1
  122. package/portable.manifest +7 -1
  123. package/skills/calibrate/SKILL.md +20 -0
  124. package/skills/ci-fix/SKILL.md +36 -0
  125. package/skills/fix/SKILL.md +23 -0
  126. package/skills/implement/SKILL.md +99 -1
  127. package/skills/license/SKILL.md +159 -0
  128. package/skills/planning/SKILL.md +100 -11
  129. package/skills/publish/SKILL.md +3 -0
  130. package/skills/qa-incident/SKILL.md +54 -0
  131. package/skills/restart/SKILL.md +187 -31
@@ -0,0 +1,109 @@
1
+ #!/bin/bash
2
+ # hooks/project-setup.sh — SessionStart hook: first-run project setup for marketplace installs.
3
+ #
4
+ # Runs on every SessionStart. Checks for marker file .claude/.toolkit-setup-done.
5
+ # If missing (or version is stale): creates CLAUDE.md from template, injects managed block,
6
+ # updates .gitignore with toolkit markers.
7
+ #
8
+ # Templates are read from ${CLAUDE_PLUGIN_ROOT}/templates/ (bundled with the plugin).
9
+
10
+ set -euo pipefail
11
+
12
+ PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
13
+ PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-}"
14
+ MARKER_FILE="$PROJECT_DIR/.claude/.toolkit-setup-done"
15
+
16
+ # Exit silently if CLAUDE_PLUGIN_ROOT is not set (not running from a plugin context)
17
+ if [ -z "$PLUGIN_ROOT" ]; then
18
+ exit 0
19
+ fi
20
+
21
+ TEMPLATES_DIR="$PLUGIN_ROOT/templates"
22
+ TEMPLATE_CLAUDE="$TEMPLATES_DIR/CLAUDE.md.template"
23
+ TEMPLATE_BLOCK="$TEMPLATES_DIR/CLAUDE.md.managed-block"
24
+
25
+ # Exit silently if templates are not bundled
26
+ if [ ! -f "$TEMPLATE_CLAUDE" ] || [ ! -f "$TEMPLATE_BLOCK" ]; then
27
+ exit 0
28
+ fi
29
+
30
+ # Read toolkit version from VERSION file (bundled alongside plugin)
31
+ TOOLKIT_VERSION="0.0.0"
32
+ if [ -f "$PLUGIN_ROOT/VERSION" ]; then
33
+ TOOLKIT_VERSION=$(cat "$PLUGIN_ROOT/VERSION" 2>/dev/null | tr -d '[:space:]' || echo "0.0.0")
34
+ fi
35
+
36
+ MANAGED_START="<!-- >>> claude-agents toolkit (DO NOT EDIT THIS BLOCK) >>> -->"
37
+ MANAGED_END="<!-- <<< claude-agents toolkit <<< -->"
38
+ GITIGNORE_START="# >>> claude-agents managed (DO NOT EDIT THIS BLOCK) >>>"
39
+
40
+ # Check marker file — skip if current version is already set up
41
+ if [ -f "$MARKER_FILE" ]; then
42
+ STORED_VERSION=$(cat "$MARKER_FILE" 2>/dev/null | tr -d '[:space:]' || echo "")
43
+ if [ "$STORED_VERSION" = "$TOOLKIT_VERSION" ]; then
44
+ exit 0
45
+ fi
46
+ fi
47
+
48
+ CLAUDE_MD="$PROJECT_DIR/CLAUDE.md"
49
+ GITIGNORE="$PROJECT_DIR/.gitignore"
50
+
51
+ # 1. Create CLAUDE.md from template if it doesn't exist (never overwrite existing)
52
+ if [ ! -f "$CLAUDE_MD" ]; then
53
+ PROJECT_NAME=$(basename "$PROJECT_DIR")
54
+ sed "s/{{PROJECT_NAME}}/$PROJECT_NAME/g" "$TEMPLATE_CLAUDE" > "$CLAUDE_MD"
55
+ fi
56
+
57
+ # 2. Inject managed block into CLAUDE.md if missing, or update if version is stale
58
+ if [ -f "$CLAUDE_MD" ]; then
59
+ BLOCK_CONTENT=$(cat "$TEMPLATE_BLOCK")
60
+ NEW_BLOCK=$(printf '%s\n<!-- version: %s -->\n%s\n%s' \
61
+ "$MANAGED_START" "$TOOLKIT_VERSION" "$BLOCK_CONTENT" "$MANAGED_END")
62
+
63
+ if ! grep -qF "$MANAGED_START" "$CLAUDE_MD"; then
64
+ # Block missing — append it
65
+ printf '\n\n%s\n' "$NEW_BLOCK" >> "$CLAUDE_MD"
66
+ else
67
+ # Block exists — update if version changed
68
+ EXISTING_VERSION=$(grep -o '<!-- version: [^>]* -->' "$CLAUDE_MD" 2>/dev/null | head -1 | sed 's/<!-- version: //;s/ -->//' | tr -d '[:space:]' || echo "")
69
+ if [ "$EXISTING_VERSION" != "$TOOLKIT_VERSION" ]; then
70
+ # Replace block contents between markers
71
+ tmp=$(mktemp)
72
+ in_block=false
73
+ wrote_block=false
74
+ while IFS= read -r line; do
75
+ if echo "$line" | grep -qF "$MANAGED_START"; then
76
+ in_block=true
77
+ printf '%s\n' "$NEW_BLOCK" >> "$tmp"
78
+ wrote_block=true
79
+ continue
80
+ fi
81
+ if echo "$line" | grep -qF "$MANAGED_END"; then
82
+ in_block=false
83
+ continue
84
+ fi
85
+ if ! $in_block; then
86
+ echo "$line" >> "$tmp"
87
+ fi
88
+ done < "$CLAUDE_MD"
89
+ mv "$tmp" "$CLAUDE_MD"
90
+ fi
91
+ fi
92
+ fi
93
+
94
+ # 3. Update .gitignore with toolkit marker block if missing
95
+ if [ ! -f "$GITIGNORE" ] || ! grep -qF "$GITIGNORE_START" "$GITIGNORE" 2>/dev/null; then
96
+ GITIGNORE_BLOCK=$(printf '%s\n.claude/.toolkit-last-seen-sha\n.claude/.toolkit-setup-done\n.claude/.claude-agents.conf\n%s' \
97
+ "$GITIGNORE_START" "# <<< claude-agents managed <<<")
98
+ if [ ! -f "$GITIGNORE" ]; then
99
+ printf '%s\n' "$GITIGNORE_BLOCK" > "$GITIGNORE"
100
+ else
101
+ printf '\n\n%s\n' "$GITIGNORE_BLOCK" >> "$GITIGNORE"
102
+ fi
103
+ fi
104
+
105
+ # 4. Write marker file with current version
106
+ mkdir -p "$PROJECT_DIR/.claude"
107
+ printf '%s\n' "$TOOLKIT_VERSION" > "$MARKER_FILE"
108
+
109
+ exit 0
@@ -0,0 +1,123 @@
1
+ ## Engineering Principles (MANDATORY — applies to ALL work)
2
+
3
+ ### Research Before Fixing
4
+ - **Never guess.** Before changing code, read the relevant source files, docs, and configs.
5
+ - Understand WHY something is broken before attempting a fix.
6
+ - If your first fix doesn't work, STOP. Don't try another guess. Re-read the code.
7
+ - Use explore-light (Haiku, 1x cost) to scan the codebase before expensive agents investigate.
8
+
9
+ ### No Over-Engineering
10
+ - **Do exactly what's needed.** Don't add abstractions, utilities, or frameworks unless the code already uses them.
11
+ - Match existing patterns — run explore-light to find how similar code is structured before writing new code.
12
+ - A bug fix touches the minimum files possible. A feature matches the existing architecture.
13
+ - If you're creating a new class/helper/utility that nothing else in the codebase uses, you're over-engineering.
14
+
15
+ ### Test Before Shipping
16
+ - **Run tests locally before pushing.** Never push untested code.
17
+ - If the project has `/precheck`, run it. If it has `/qa`, run it in commit mode.
18
+ - After fixing a bug, verify the fix AND verify nothing else broke (differential testing).
19
+ - If 3+ consecutive fix attempts fail, STOP. Step back and reassess the root cause from scratch.
20
+
21
+ ### Deployment Safety
22
+ - **Never modify production systems without explicit confirmation.**
23
+ - Don't change deploy targets, CI pipeline structure, or infrastructure config silently.
24
+ - Don't overwrite existing files during deployment without asking.
25
+ - If a deployment breaks something, investigate before attempting to fix. Don't cascade.
26
+
27
+ ## Toolkit Awareness (MANDATORY — READ THIS FIRST)
28
+
29
+ You have a **claude-agents toolkit** installed in this project. It provides specialized
30
+ agents, skills, and hooks that handle domain-specific work better and cheaper.
31
+
32
+ **You are the ORCHESTRATOR.** The triage router fires on every message with a routing
33
+ table and SPEED score. Use it to decide: toolkit or you?
34
+
35
+ ### When to use the toolkit (SPEED score 2+):
36
+ - **Multi-step workflows**: `/pr`, `/deploy`, `/planning`, `/implement`, `/qa`, `/ci-fix`
37
+ encode battle-tested sequences you'd otherwise do manually and forget steps
38
+ - **Domain expertise**: SRE, QA, frontend, backend agents have project context baked in
39
+ - **Cost savings**: Haiku/Sonnet agents handle 80% of tasks at 1/60th the cost of Opus
40
+ - **Parallelism**: Team skills spawn multiple agents working simultaneously
41
+
42
+ ### When to use YOU directly (SPEED score 0-1):
43
+ - **Quick lookups**: Read/Grep/Glob for finding a file, checking a value, reading code
44
+ - **Small targeted edits**: 1-2 file changes where you already know what to do
45
+ - **Complex reasoning**: Architecture decisions, debugging novel problems, nuanced tradeoffs
46
+ - **Conversation flow**: Follow-up questions, clarifications, explaining code
47
+ - **Creative problem-solving**: When the task doesn't fit any existing pattern
48
+ - **Judgment calls**: Security reviews, design decisions, "should we even do this?"
49
+
50
+ ### The balance:
51
+ The toolkit handles **process** (repeatable workflows, domain-specific checks, multi-step
52
+ sequences). You handle **judgment** (reasoning, creativity, novel problems, architecture).
53
+
54
+ A senior engineer doesn't do everything themselves — they delegate routine work and focus
55
+ their expertise where it matters most. That's you. The toolkit is your team.
56
+
57
+ **Don't over-delegate**: If it's faster to just Read a file and answer, do it.
58
+ **Don't under-delegate**: If it's a 5-step workflow the toolkit has a skill for, use it.
59
+
60
+ ### Project Knowledge System
61
+
62
+ If this project has been calibrated (`/calibrate`), deep context is available:
63
+
64
+ - **`.claude/project-profile.md`** — Architecture patterns, coding conventions, domain model,
65
+ testing style. Read this before writing any code to match the project's patterns.
66
+ - **`.claude/knowledge/`** — The toolkit's long-term memory for this project:
67
+ - `shared/conventions.md` — Coding rules learned from corrections. **Read before writing code.**
68
+ - `shared/domain.md` — Business rules beyond what's in the code. **Read before domain decisions.**
69
+ - `shared/vocabulary.md` — What the team calls things. **Use these terms.**
70
+ - `shared/patterns.md` — Architecture patterns. **Follow these when adding new code.**
71
+ - `agents/{your-name}.md` — Your past learning. **Read on session start.**
72
+ - **Write back** when you learn something new — corrections, discoveries, decisions.
73
+ - See `knowledge/README.md` for the full protocol.
74
+ - **`.claude/knowledge/external/sources.md`** — Where team knowledge lives outside code
75
+ (Notion, Linear, Figma, etc.). Check before making decisions that might already be documented.
76
+
77
+ ## Session Start Behavior (MANDATORY)
78
+
79
+ On your FIRST response in every new session, ALWAYS start with a brief status line
80
+ using context from the SessionStart hook. Include:
81
+ - Current branch + uncommitted file count
82
+ - Docker/infra status (if problems detected)
83
+ - Open PRs or assigned issues (if any)
84
+ - Any red flags (pending migrations, expired tokens)
85
+
86
+ Format: 1-3 compact lines before addressing the user's request. Example:
87
+ ```
88
+ 📋 project — main | 5 uncommitted | Docker: postgres ✓ redis ✓ | 2 open PRs
89
+ ```
90
+ Then proceed with the user's actual request.
91
+
92
+ **CRITICAL — Greetings and vague first messages**: If the user's first message is a
93
+ greeting ("hey", "hi", "hello", "yo", "sup") or vague ("help", "what's up",
94
+ "what should I work on") or ANY message under 5 words with no specific task —
95
+ **ALWAYS use the `/onboard` skill**. Never respond to greetings yourself. The
96
+ bootstrap hook status line is a quick snapshot — `/onboard` gives the real briefing
97
+ with open PRs, issues, priorities, and actionable next steps.
98
+
99
+ ## Routing Trace (MANDATORY)
100
+
101
+ On EVERY response, show a compact routing trace so the user understands the decision
102
+ path. Place it at the end of your response in a dimmed block:
103
+
104
+ ```
105
+ 🔀 Routing: [what triage decided] → [agent/skill/tool used] ([cost tier])
106
+ Why: [1-line reason for this routing choice]
107
+ ```
108
+
109
+ Examples:
110
+ ```
111
+ 🔀 Routing: backend bug fix → python-backend agent (Sonnet, 10x)
112
+ Why: touches backend/app/services/, needs CLAUDE.md context, SPEED=4
113
+ ```
114
+ ```
115
+ 🔀 Routing: file lookup → Grep (built-in, 0x)
116
+ Why: single-file search, no project context needed, SPEED=0
117
+ ```
118
+
119
+ Rules:
120
+ - Always show the SPEED score breakdown if score >= 2
121
+ - Show which hook provided the context (triage-router, bootstrap, etc.)
122
+ - If you chose NOT to use the triage router's suggestion, explain why
123
+ - Skip the trace only for simple follow-up messages in an ongoing conversation
@@ -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)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sentinel",
3
3
  "description": "Operations and reliability — SRE, incidents, deploy monitoring",
4
- "version": "1.0.4",
4
+ "version": "1.0.6",
5
5
  "author": {
6
6
  "name": "Arth AI"
7
7
  }
@@ -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.