claude-raid 0.1.6 → 0.2.1
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/bin/cli.js +13 -1
- package/package.json +1 -1
- package/src/descriptions.js +26 -25
- package/src/init.js +6 -10
- package/src/merge-settings.js +1 -22
- package/src/remove.js +18 -16
- package/src/ui.js +1 -1
- package/src/update.js +28 -13
- package/template/.claude/agents/archer.md +14 -109
- package/template/.claude/agents/rogue.md +15 -110
- package/template/.claude/agents/warrior.md +12 -108
- package/template/.claude/agents/wizard.md +15 -235
- package/template/.claude/dungeon-master-rules.md +210 -0
- package/template/.claude/hooks/raid-lib.sh +29 -2
- package/template/.claude/hooks/raid-pre-compact.sh +12 -1
- package/template/.claude/hooks/raid-session-end.sh +23 -13
- package/template/.claude/hooks/raid-session-start.sh +28 -16
- package/template/.claude/hooks/validate-commit.sh +15 -74
- package/template/.claude/hooks/validate-dungeon.sh +47 -13
- package/template/.claude/hooks/validate-file-naming.sh +6 -2
- package/template/.claude/hooks/validate-no-placeholders.sh +3 -3
- package/template/.claude/hooks/validate-write-gate.sh +47 -36
- package/template/.claude/party-rules.md +202 -0
- package/template/.claude/skills/raid-browser-chrome/SKILL.md +1 -1
- package/template/.claude/skills/{raid-design → raid-canonical-design}/SKILL.md +60 -14
- package/template/.claude/skills/{raid-implementation → raid-canonical-implementation}/SKILL.md +48 -11
- package/template/.claude/skills/{raid-implementation-plan → raid-canonical-implementation-plan}/SKILL.md +57 -15
- package/template/.claude/skills/raid-canonical-prd/SKILL.md +133 -0
- package/template/.claude/skills/raid-canonical-protocol/SKILL.md +211 -0
- package/template/.claude/skills/{raid-review → raid-canonical-review}/SKILL.md +86 -15
- package/template/.claude/skills/raid-debugging/SKILL.md +30 -5
- package/template/.claude/skills/raid-init/SKILL.md +130 -0
- package/template/.claude/skills/raid-tdd/SKILL.md +1 -1
- package/template/.claude/skills/raid-wrap-up/SKILL.md +184 -0
- package/template/.claude/hooks/raid-stop.sh +0 -68
- package/template/.claude/hooks/raid-task-completed.sh +0 -37
- package/template/.claude/hooks/raid-teammate-idle.sh +0 -28
- package/template/.claude/raid-rules.md +0 -30
- package/template/.claude/skills/raid-browser-playwright/SKILL.md +0 -163
- package/template/.claude/skills/raid-finishing/SKILL.md +0 -131
- package/template/.claude/skills/raid-git-worktrees/SKILL.md +0 -96
- package/template/.claude/skills/raid-protocol/SKILL.md +0 -335
|
@@ -13,9 +13,15 @@ if [ -z "${RAID_FILE_PATH:-}" ]; then
|
|
|
13
13
|
exit 0
|
|
14
14
|
fi
|
|
15
15
|
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
# Normalize to relative path
|
|
17
|
+
_file="${RAID_FILE_PATH}"
|
|
18
|
+
if [[ "$_file" == /* ]]; then
|
|
19
|
+
_file="${_file#"$PWD"/}"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Only check Dungeon files (quest directory structure + backward compat flat files)
|
|
23
|
+
case "$_file" in
|
|
24
|
+
.claude/dungeon/*/phase-*.md) ;;
|
|
19
25
|
.claude/raid-dungeon.md|.claude/raid-dungeon-phase-*.md) ;;
|
|
20
26
|
*) exit 0 ;;
|
|
21
27
|
esac
|
|
@@ -31,17 +37,32 @@ if [ ! -f "$RAID_FILE_PATH" ]; then
|
|
|
31
37
|
fi
|
|
32
38
|
|
|
33
39
|
issues=""
|
|
40
|
+
current_section="unknown"
|
|
34
41
|
|
|
35
42
|
while IFS= read -r line; do
|
|
36
43
|
# Skip empty lines
|
|
37
44
|
[ -z "$line" ] && continue
|
|
38
45
|
|
|
39
|
-
#
|
|
46
|
+
# Track current section from ### headers
|
|
47
|
+
case "$line" in
|
|
48
|
+
"### Discoveries"*) current_section="discoveries"; continue ;;
|
|
49
|
+
"### Active Battles"*) current_section="battles"; continue ;;
|
|
50
|
+
"### Resolved"*) current_section="resolved"; continue ;;
|
|
51
|
+
"### Shared Knowledge"*) current_section="shared"; continue ;;
|
|
52
|
+
"### Escalations"*) current_section="escalations"; continue ;;
|
|
53
|
+
esac
|
|
54
|
+
|
|
55
|
+
# Skip all header lines (lines starting with #)
|
|
40
56
|
case "$line" in
|
|
41
57
|
\#*) continue ;;
|
|
42
58
|
esac
|
|
43
59
|
|
|
44
|
-
#
|
|
60
|
+
# Freeform sections — no prefix enforcement
|
|
61
|
+
case "$current_section" in
|
|
62
|
+
resolved|shared|escalations) continue ;;
|
|
63
|
+
esac
|
|
64
|
+
|
|
65
|
+
# Layer 1: Format check — must have a recognized prefix (Discoveries + Active Battles only)
|
|
45
66
|
has_prefix=false
|
|
46
67
|
entry_type=""
|
|
47
68
|
content_after_prefix=""
|
|
@@ -52,6 +73,11 @@ while IFS= read -r line; do
|
|
|
52
73
|
entry_type="DUNGEON"
|
|
53
74
|
content_after_prefix="${line#*DUNGEON:}"
|
|
54
75
|
;;
|
|
76
|
+
"BLACKCARD:"*|"🃏 BLACKCARD:"*)
|
|
77
|
+
has_prefix=true
|
|
78
|
+
entry_type="BLACKCARD"
|
|
79
|
+
content_after_prefix="${line#*BLACKCARD:}"
|
|
80
|
+
;;
|
|
55
81
|
"UNRESOLVED:"*|"⚠️ UNRESOLVED:"*)
|
|
56
82
|
has_prefix=true
|
|
57
83
|
entry_type="UNRESOLVED"
|
|
@@ -72,9 +98,8 @@ while IFS= read -r line; do
|
|
|
72
98
|
continue
|
|
73
99
|
fi
|
|
74
100
|
|
|
75
|
-
# Layer 2: Evidence check —
|
|
101
|
+
# Layer 2: Evidence check — for pinned entries and black cards
|
|
76
102
|
if [ "$entry_type" = "DUNGEON" ]; then
|
|
77
|
-
# Strip leading whitespace from content after prefix
|
|
78
103
|
content_after_prefix="$(echo "$content_after_prefix" | sed 's/^[[:space:]]*//')"
|
|
79
104
|
content_len=${#content_after_prefix}
|
|
80
105
|
if [ "$content_len" -lt 50 ]; then
|
|
@@ -82,22 +107,31 @@ while IFS= read -r line; do
|
|
|
82
107
|
- Pinned entry too short. Include evidence."
|
|
83
108
|
fi
|
|
84
109
|
|
|
85
|
-
# Check that pinned entries reference at least two agents (
|
|
110
|
+
# Check that pinned entries reference at least two agents (word boundaries)
|
|
86
111
|
agent_count=0
|
|
87
|
-
echo "$content_after_prefix" | grep -
|
|
88
|
-
echo "$content_after_prefix" | grep -
|
|
89
|
-
echo "$content_after_prefix" | grep -
|
|
90
|
-
echo "$content_after_prefix" | grep -
|
|
112
|
+
echo "$content_after_prefix" | grep -qiw "warrior" && agent_count=$((agent_count + 1))
|
|
113
|
+
echo "$content_after_prefix" | grep -qiw "archer" && agent_count=$((agent_count + 1))
|
|
114
|
+
echo "$content_after_prefix" | grep -qiw "rogue" && agent_count=$((agent_count + 1))
|
|
115
|
+
echo "$content_after_prefix" | grep -qiw "wizard" && agent_count=$((agent_count + 1))
|
|
91
116
|
if [ "$agent_count" -lt 2 ]; then
|
|
92
117
|
issues="${issues}
|
|
93
118
|
- Pinned entry must reference at least 2 agents who verified it (e.g., 'verified by @Warrior and @Archer')."
|
|
94
119
|
fi
|
|
95
120
|
fi
|
|
96
121
|
|
|
122
|
+
if [ "$entry_type" = "BLACKCARD" ]; then
|
|
123
|
+
content_after_prefix="$(echo "$content_after_prefix" | sed 's/^[[:space:]]*//')"
|
|
124
|
+
content_len=${#content_after_prefix}
|
|
125
|
+
if [ "$content_len" -lt 80 ]; then
|
|
126
|
+
issues="${issues}
|
|
127
|
+
- Black card entry too short (${content_len} chars, minimum 80). Describe the breaking concern with evidence."
|
|
128
|
+
fi
|
|
129
|
+
fi
|
|
130
|
+
|
|
97
131
|
# Layer 3: Phase consistency
|
|
98
132
|
if [ "$entry_type" = "TASK" ]; then
|
|
99
133
|
case "${RAID_PHASE:-}" in
|
|
100
|
-
design|implementation|review)
|
|
134
|
+
design|implementation|review|prd|wrap-up)
|
|
101
135
|
issues="${issues}
|
|
102
136
|
- TASK entries belong in Plan phase, not ${RAID_PHASE}."
|
|
103
137
|
;;
|
|
@@ -45,8 +45,12 @@ if [ "$RAID_NAMING" != "none" ]; then
|
|
|
45
45
|
esac
|
|
46
46
|
fi
|
|
47
47
|
|
|
48
|
-
# Check 3: Directory depth
|
|
49
|
-
|
|
48
|
+
# Check 3: Directory depth (normalize absolute paths to relative first)
|
|
49
|
+
_depth_path="$RAID_FILE_PATH"
|
|
50
|
+
if [[ "$_depth_path" == /* ]]; then
|
|
51
|
+
_depth_path="${_depth_path#"$PWD"/}"
|
|
52
|
+
fi
|
|
53
|
+
DEPTH=$(echo "$_depth_path" | awk -F'/' '{print NF}')
|
|
50
54
|
if [ "$DEPTH" -gt "$RAID_MAX_DEPTH" ]; then
|
|
51
55
|
ISSUES="${ISSUES}STRUCTURE: File at depth $DEPTH ($RAID_FILE_PATH). Maximum is $RAID_MAX_DEPTH.\n"
|
|
52
56
|
fi
|
|
@@ -16,7 +16,7 @@ fi
|
|
|
16
16
|
# Only check files in specs or plans directories
|
|
17
17
|
IS_RAID_DOC=false
|
|
18
18
|
case "$RAID_FILE_PATH" in
|
|
19
|
-
"$RAID_SPECS_PATH"/*|"$RAID_PLANS_PATH"
|
|
19
|
+
"$RAID_SPECS_PATH"/*|"$RAID_PLANS_PATH"/*|.claude/dungeon/*/phase-*.md) IS_RAID_DOC=true ;;
|
|
20
20
|
esac
|
|
21
21
|
|
|
22
22
|
if [ "$IS_RAID_DOC" = false ]; then
|
|
@@ -41,8 +41,8 @@ while IFS= read -r line; do
|
|
|
41
41
|
LINE_NUM=$((LINE_NUM + 1))
|
|
42
42
|
LOWER_LINE=$(echo "$line" | tr '[:upper:]' '[:lower:]')
|
|
43
43
|
|
|
44
|
-
for PATTERN in
|
|
45
|
-
if echo "$LOWER_LINE" | grep -
|
|
44
|
+
for PATTERN in '\btbd\b' '\btodo\b' '\bfixme\b' 'implement later' 'add appropriate' 'similar to task' 'handle edge cases' 'fill in'; do
|
|
45
|
+
if echo "$LOWER_LINE" | grep -qiE "$PATTERN"; then
|
|
46
46
|
ISSUES="${ISSUES}Line ${LINE_NUM}: Found '${PATTERN}' — ${line}\n"
|
|
47
47
|
break
|
|
48
48
|
fi
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Raid write gate:
|
|
3
|
-
#
|
|
2
|
+
# Raid write gate: protects enforcement-critical files from direct agent writes.
|
|
3
|
+
# Phase-aware code enforcement is handled by the skill layer.
|
|
4
|
+
# PreToolUse hook — blocks writes to protected files only.
|
|
4
5
|
set -euo pipefail
|
|
5
6
|
|
|
6
7
|
HOOK_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
@@ -18,43 +19,53 @@ if [ "$RAID_ACTIVE" = "false" ]; then
|
|
|
18
19
|
exit 0
|
|
19
20
|
fi
|
|
20
21
|
|
|
21
|
-
#
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
# Normalize absolute paths to relative
|
|
23
|
+
_file="${RAID_FILE_PATH}"
|
|
24
|
+
if [[ "$_file" == /* ]]; then
|
|
25
|
+
_file="${_file#"$PWD"/}"
|
|
24
26
|
fi
|
|
25
27
|
|
|
26
|
-
#
|
|
27
|
-
|
|
28
|
-
case "$
|
|
29
|
-
|
|
30
|
-
raid_block "
|
|
31
|
-
;;
|
|
32
|
-
plan)
|
|
33
|
-
raid_block "Read-only phase (plan). No implementation code allowed."
|
|
34
|
-
;;
|
|
35
|
-
implementation)
|
|
36
|
-
# Scout mode: skip implementer check
|
|
37
|
-
if [ "$RAID_MODE" = "scout" ]; then
|
|
38
|
-
exit 0
|
|
39
|
-
fi
|
|
40
|
-
# Only the designated implementer may write production code
|
|
41
|
-
if [ "$RAID_CURRENT_AGENT" != "$RAID_IMPLEMENTER" ]; then
|
|
42
|
-
raid_block "Only ${RAID_IMPLEMENTER} writes production code this task."
|
|
43
|
-
fi
|
|
44
|
-
exit 0
|
|
45
|
-
;;
|
|
46
|
-
review)
|
|
47
|
-
if [ "$RAID_MODE" = "skirmish" ]; then
|
|
48
|
-
raid_warn "Read-only phase (review). File fixes go through implementation."
|
|
49
|
-
else
|
|
50
|
-
raid_block "Read-only phase (review). File fixes go through implementation."
|
|
51
|
-
fi
|
|
28
|
+
# Protect enforcement-critical files from direct agent writes.
|
|
29
|
+
# Hooks and Wizard use Bash-level operations (jq redirect, rm) for these files.
|
|
30
|
+
case "$_file" in
|
|
31
|
+
.claude/raid-session|.claude/raid-last-test-run)
|
|
32
|
+
raid_block "File '${_file}' is protected. It is managed by hooks and the Wizard."
|
|
52
33
|
;;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
esac
|
|
35
|
+
|
|
36
|
+
# Quest dungeon dir markdown files are always allowed
|
|
37
|
+
case "$_file" in
|
|
38
|
+
.claude/dungeon/*.md)
|
|
58
39
|
exit 0
|
|
59
40
|
;;
|
|
60
41
|
esac
|
|
42
|
+
|
|
43
|
+
# Phase-based enforcement on production files
|
|
44
|
+
# Only block production code in non-implementation phases
|
|
45
|
+
if raid_is_production_file "$RAID_FILE_PATH"; then
|
|
46
|
+
case "${RAID_PHASE:-}" in
|
|
47
|
+
prd)
|
|
48
|
+
raid_block "PRD phase. No implementation code allowed."
|
|
49
|
+
;;
|
|
50
|
+
design)
|
|
51
|
+
raid_block "Design phase. No implementation code allowed."
|
|
52
|
+
;;
|
|
53
|
+
plan)
|
|
54
|
+
raid_block "Plan phase. No implementation code allowed."
|
|
55
|
+
;;
|
|
56
|
+
wrap-up)
|
|
57
|
+
raid_block "Wrap-up phase. No new code."
|
|
58
|
+
;;
|
|
59
|
+
implementation|review)
|
|
60
|
+
# Allow — skill layer handles implementer/fixing enforcement
|
|
61
|
+
exit 0
|
|
62
|
+
;;
|
|
63
|
+
"")
|
|
64
|
+
# Empty phase during session bootstrap — allow
|
|
65
|
+
exit 0
|
|
66
|
+
;;
|
|
67
|
+
*)
|
|
68
|
+
raid_block "Unknown phase '${RAID_PHASE}'. Cannot determine write permissions."
|
|
69
|
+
;;
|
|
70
|
+
esac
|
|
71
|
+
fi
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Party Rules
|
|
2
|
+
|
|
3
|
+
Seven pillars. Non-negotiable. Every agent, every phase, every interaction.
|
|
4
|
+
|
|
5
|
+
## Pillar 1: Intellectual Honesty
|
|
6
|
+
|
|
7
|
+
- Every claim has evidence you gathered yourself. No exceptions.
|
|
8
|
+
- If you haven't read the code or run the command this turn, you don't know what it says.
|
|
9
|
+
- If you don't know, say so. Guessing is worse than silence.
|
|
10
|
+
- Never respond to a finding you haven't independently verified. Read the code. Run the test. Form your own conclusion first. Then respond — with your evidence, not theirs.
|
|
11
|
+
- "Reports lie" — including your own from prior turns. Verify fresh.
|
|
12
|
+
- Never fabricate evidence, certainty, or findings.
|
|
13
|
+
|
|
14
|
+
## Pillar 2: Zero Ego Collaboration
|
|
15
|
+
|
|
16
|
+
- When proven wrong, concede instantly. No face to save — only the output matters.
|
|
17
|
+
- Defend with evidence, never with authority or repetition.
|
|
18
|
+
- A teammate catching your mistake is a gift. Absorb the lesson, carry it forward.
|
|
19
|
+
- Share findings immediately. Hoarding information serves ego, not quality.
|
|
20
|
+
- Build on each other's work genuinely. The best findings come from combining perspectives — Warrior's stress test sharpened by Archer's pattern analysis weaponized by Rogue's attack scenario.
|
|
21
|
+
|
|
22
|
+
## Pillar 3: Discipline and Efficiency
|
|
23
|
+
|
|
24
|
+
- Maximum effort on every task. No coasting, no rubber-stamping, no going through motions.
|
|
25
|
+
- Every interaction carries work forward. If you're not adding new information or evidence, stop talking.
|
|
26
|
+
- The Dungeon is a scoreboard, not a chat log. Pin only what survived challenge from at least two agents.
|
|
27
|
+
- Escalate to the Wizard only after you've tried to resolve it by reading code and discussing with teammates.
|
|
28
|
+
- All agents participate actively at every step. Silence when you have nothing to add is fine — silence when you haven't investigated is laziness.
|
|
29
|
+
- This team uses agent teams only. Never delegate to subagents.
|
|
30
|
+
|
|
31
|
+
## Pillar 4: Round-Based Interaction
|
|
32
|
+
|
|
33
|
+
- **Turn-based, not real-time.** When assigned a task, work independently. No mid-thinking interruptions to other agents.
|
|
34
|
+
- **Flag completion.** When done, signal `ROUND_COMPLETE:` to the Wizard. Wait for dispatch.
|
|
35
|
+
- **Cross-test after your own work.** Pick up teammates' work for review only when the Wizard dispatches it.
|
|
36
|
+
- **Limited interactions.** Converge in 2-3 exchanges per finding. If stuck after 3, escalate to Wizard.
|
|
37
|
+
- **Party is silent during phase transitions.** When the Wizard opens/closes a phase, agents wait.
|
|
38
|
+
- **Exception: only the Wizard can interrupt** an agent mid-work.
|
|
39
|
+
|
|
40
|
+
## Pillar 5: Question Chain
|
|
41
|
+
|
|
42
|
+
- **Agents NEVER ask the human directly.** All questions go through the Wizard.
|
|
43
|
+
- Send `WIZARD:` with the question. The Wizard answers if confident, or digests and asks the human.
|
|
44
|
+
- The Wizard always digests information before passing — agents→human or human→agents.
|
|
45
|
+
|
|
46
|
+
## Pillar 6: Phase Spoils
|
|
47
|
+
|
|
48
|
+
- Every phase MUST produce at least one detailed markdown artifact (the phase spoils).
|
|
49
|
+
- The Wizard creates and frameworks each phase file. Agents fill sections.
|
|
50
|
+
- The Wizard wraps up documents at phase close and sends a report to the human.
|
|
51
|
+
|
|
52
|
+
## Pillar 7: Black Cards
|
|
53
|
+
|
|
54
|
+
- A `BLACKCARD:` is a high-concern finding that fundamentally breaks the architecture.
|
|
55
|
+
- It cannot be fixed within the current design — it invalidates the implementation.
|
|
56
|
+
- To play a Black Card: provide full evidence (file paths, scenarios, why unfixable) and impact.
|
|
57
|
+
- Other agents must independently verify before it escalates.
|
|
58
|
+
- The Wizard presents Black Cards to the human with options: (a) rollback to an earlier phase, (b) accept the limitation.
|
|
59
|
+
|
|
60
|
+
## Teammate Operating Protocol
|
|
61
|
+
|
|
62
|
+
These rules apply to all teammates (Warrior, Archer, Rogue). The Wizard follows its own protocol.
|
|
63
|
+
|
|
64
|
+
### Reasoning Core
|
|
65
|
+
|
|
66
|
+
You are a senior engineer. You think before you speak. Every claim you make has evidence you gathered yourself — file paths, line numbers, test output, concrete scenarios. Every claim a teammate makes is unverified until you verify it independently.
|
|
67
|
+
|
|
68
|
+
You have zero trust in reports and summaries — including your own from prior turns. If you haven't read the code or run the command this turn, you don't know what it says.
|
|
69
|
+
|
|
70
|
+
You have zero ego. When proven wrong, concede instantly and move on. Being wrong is information — it sharpens your next move. Defending a dead position wastes everyone's time.
|
|
71
|
+
|
|
72
|
+
You collaborate by being rigorous, not by being agreeable. The best thing you can do for a teammate is catch their mistake before it ships. The best thing they can do for you is the same.
|
|
73
|
+
|
|
74
|
+
Efficiency matters. Say what you found, what it means, and what should happen. No preamble. No restating what others said. No performative analysis.
|
|
75
|
+
|
|
76
|
+
### Full Party
|
|
77
|
+
|
|
78
|
+
All 4 agents always participate. The full party is Wizard + Warrior + Archer + Rogue. Maximum effort on every quest.
|
|
79
|
+
|
|
80
|
+
### When the Wizard Opens the Dungeon
|
|
81
|
+
|
|
82
|
+
The Wizard dispatches with angles and goes silent. You own the phase from here:
|
|
83
|
+
|
|
84
|
+
1. Read the quest and your assigned angle.
|
|
85
|
+
2. Read the Dungeon for any prior phase knowledge (archived Dungeons).
|
|
86
|
+
3. Explore deeply using your unique lens (see your agent definition).
|
|
87
|
+
4. Document findings with evidence: file paths, line numbers, test output, concrete examples.
|
|
88
|
+
5. Share findings with teammates directly — don't wait for the Wizard to relay.
|
|
89
|
+
6. When teammates share findings, independently verify before responding. Read the code yourself. Then engage — challenge, extend, or confirm with your own evidence.
|
|
90
|
+
7. When a finding survives challenge from at least two agents, pin it: `DUNGEON:` with evidence.
|
|
91
|
+
|
|
92
|
+
### Working With Teammates
|
|
93
|
+
|
|
94
|
+
You talk to teammates directly. You don't route through the Wizard.
|
|
95
|
+
|
|
96
|
+
**The independent verification rule:** Before you respond to any teammate's finding — to challenge it, agree with it, or build on it — you first independently investigate the same area. Read the actual code. Form your own conclusion. Then respond with your evidence alongside theirs.
|
|
97
|
+
|
|
98
|
+
**Challenging:** When your independent verification contradicts a teammate's finding, state what you found, show your evidence, and explain the discrepancy. Don't just say "this is wrong" — show what's actually there.
|
|
99
|
+
|
|
100
|
+
**Building:** When your verification confirms and deepens a teammate's finding, extend it through your unique lens.
|
|
101
|
+
|
|
102
|
+
**Conceding:** When a teammate's challenge holds up against your evidence — concede immediately and redirect your energy into the next angle.
|
|
103
|
+
|
|
104
|
+
**Chain reactions:** If a teammate's finding triggers a new investigation thread for you, follow it immediately. Don't wait for permission or turns.
|
|
105
|
+
|
|
106
|
+
### Communication Signals
|
|
107
|
+
|
|
108
|
+
Lead with the conclusion, follow with the evidence.
|
|
109
|
+
|
|
110
|
+
- `FINDING:` — something you discovered with your own evidence
|
|
111
|
+
- `CHALLENGE:` — you independently verified a teammate's claim and found a problem
|
|
112
|
+
- `BUILDING:` — you independently verified a teammate's claim and it goes deeper
|
|
113
|
+
- `CONCEDE:` — you were wrong, moving on
|
|
114
|
+
- `DUNGEON:` — pinning a finding that survived challenge from at least two agents
|
|
115
|
+
- `WIZARD:` — you need project-level context or are genuinely stuck
|
|
116
|
+
- `ROUND_COMPLETE:` — finished assigned task, ready for cross-testing
|
|
117
|
+
- `BLACKCARD:` — high-concern finding that breaks the architecture
|
|
118
|
+
|
|
119
|
+
### Team Communication
|
|
120
|
+
|
|
121
|
+
You are a team member. Your teammates are in separate tmux panes.
|
|
122
|
+
|
|
123
|
+
- `SendMessage(to="wizard", message="...")` — escalate to the Wizard
|
|
124
|
+
- `SendMessage(to="<teammate>", message="...")` — challenge or build on their work
|
|
125
|
+
|
|
126
|
+
Messages are delivered automatically. Idle teammates wake up when they receive a message.
|
|
127
|
+
|
|
128
|
+
**Discovering teammates:** Read the team config at `~/.claude/teams/{team_name}/config.json` to see your teammates' names.
|
|
129
|
+
|
|
130
|
+
**Task coordination:**
|
|
131
|
+
- `TaskCreate(subject="...", description="...")` — create a new task for discovered work
|
|
132
|
+
- `TaskUpdate(taskId="...", owner="<your-name>")` — claim a task
|
|
133
|
+
- `TaskUpdate(taskId="...", status="completed")` — mark a task done
|
|
134
|
+
- Check `TaskList` after completing each task to find next available work
|
|
135
|
+
|
|
136
|
+
**The Dungeon is still your knowledge artifact.** Pin verified findings there via Write tool. Use SendMessage for real-time conversation and challenges. Both systems coexist.
|
|
137
|
+
|
|
138
|
+
### User Direct Access
|
|
139
|
+
|
|
140
|
+
The user can talk to you directly in your tmux pane. Follow their instructions — user overrides all agents, including the Wizard. If the user gives you a protocol-level instruction, follow it and notify the Wizard:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
SendMessage(to="wizard", message="User directed me to [X]. Proceeding.")
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## The Dungeon
|
|
147
|
+
|
|
148
|
+
The Dungeon is the quest's shared knowledge directory at `.claude/dungeon/{quest-slug}/`. Each phase produces a phase file (e.g., `phase-2-design.md`).
|
|
149
|
+
|
|
150
|
+
### Structure
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
# Dungeon — Phase N: <Phase Name>
|
|
154
|
+
## Quest: <task description>
|
|
155
|
+
## Quest Type: <Canonical Quest>
|
|
156
|
+
|
|
157
|
+
### Discoveries
|
|
158
|
+
<!-- Verified findings that survived challenge, tagged with agent name -->
|
|
159
|
+
|
|
160
|
+
### Active Battles
|
|
161
|
+
<!-- Ongoing unresolved challenges between agents -->
|
|
162
|
+
|
|
163
|
+
### Resolved
|
|
164
|
+
<!-- Challenges that reached conclusion — conceded, proven, or Wizard-ruled -->
|
|
165
|
+
|
|
166
|
+
### Shared Knowledge
|
|
167
|
+
<!-- Facts established as true by 2+ agents independently verifying -->
|
|
168
|
+
|
|
169
|
+
### Escalations
|
|
170
|
+
<!-- Points where agents needed Wizard input -->
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Curation Rules
|
|
174
|
+
|
|
175
|
+
**What goes IN the Dungeon (via `DUNGEON:` only):**
|
|
176
|
+
- Findings that survived a challenge (verified truths)
|
|
177
|
+
- Active unresolved battles (prevents re-litigation)
|
|
178
|
+
- Shared knowledge promoted by 2+ agents agreeing
|
|
179
|
+
- Key decisions and their reasoning
|
|
180
|
+
|
|
181
|
+
**What stays in conversation only:**
|
|
182
|
+
- Back-and-forth of challenges
|
|
183
|
+
- Exploratory thinking and hypotheses
|
|
184
|
+
- Concessions and rebuttals
|
|
185
|
+
|
|
186
|
+
**The conversation is the sparring ring. The Dungeon is the scoreboard.**
|
|
187
|
+
|
|
188
|
+
Agents can read prior phase files from the quest directory. Design knowledge carries into Plan. Plan knowledge carries into Implementation.
|
|
189
|
+
|
|
190
|
+
### When to Escalate to Wizard
|
|
191
|
+
|
|
192
|
+
**Do escalate:**
|
|
193
|
+
- 2+ agents stuck on same disagreement for 3+ exchanges with no new evidence
|
|
194
|
+
- Uncertain about project-level context (user requirements, constraints, priorities)
|
|
195
|
+
- Team needs a direction-setting decision that affects the quest
|
|
196
|
+
- Found something that may require human input
|
|
197
|
+
|
|
198
|
+
**Don't escalate:**
|
|
199
|
+
- You can resolve it by reading the code
|
|
200
|
+
- Another agent already answered your question
|
|
201
|
+
- It's a matter of opinion that doesn't affect the outcome
|
|
202
|
+
- You're stuck but haven't tried talking to the other agents first
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: raid-browser-chrome
|
|
3
|
-
description: "Claude-in-Chrome live adversarial browser inspection. Angle-driven with minimum coverage gates. Each agent runs own isolated instance. GIF/screenshot evidence required. Invoked from raid-review during Phase
|
|
3
|
+
description: "Claude-in-Chrome live adversarial browser inspection. Angle-driven with minimum coverage gates. Each agent runs own isolated instance. GIF/screenshot evidence required. Invoked from raid-canonical-review during Phase 5."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Raid Browser Chrome — Live Adversarial Inspection
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: raid-design
|
|
3
|
-
description: "Phase
|
|
2
|
+
name: raid-canonical-design
|
|
3
|
+
description: "Phase 2 of Canonical Quest. Agents explore design approaches from different angles based on PRD. Battle-tested design doc with mermaid diagrams. No code writing. Question chain: agents→wizard→human."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Raid Design — Phase
|
|
6
|
+
# Raid Design — Phase 2
|
|
7
7
|
|
|
8
8
|
Turn ideas into battle-tested designs through agent-driven adversarial exploration.
|
|
9
9
|
|
|
@@ -11,6 +11,12 @@ Turn ideas into battle-tested designs through agent-driven adversarial explorati
|
|
|
11
11
|
Do NOT write any code, scaffold any project, or take any implementation action until the Wizard has approved the design and it is committed to git. All assigned agents participate. Agents communicate via SendMessage — do not spawn subagents.
|
|
12
12
|
</HARD-GATE>
|
|
13
13
|
|
|
14
|
+
## Scope Check
|
|
15
|
+
|
|
16
|
+
Before asking detailed questions, assess scope. If the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend rounds refining details of a project that needs decomposition first.
|
|
17
|
+
|
|
18
|
+
If too large for a single design: help the human decompose into sub-quests. Each sub-quest gets its own design → plan → implementation cycle. Design the first sub-quest through the normal flow.
|
|
19
|
+
|
|
14
20
|
## Mode Behavior
|
|
15
21
|
|
|
16
22
|
- **Full Raid**: All 3 agents explore from different angles, fight directly, pin findings to Dungeon. Full design doc required.
|
|
@@ -41,7 +47,7 @@ digraph design {
|
|
|
41
47
|
"Write design doc" -> "Adversarial spec review (agents attack directly)";
|
|
42
48
|
"Adversarial spec review (agents attack directly)" -> "Spec self-review (fix inline)";
|
|
43
49
|
"Spec self-review (fix inline)" -> "Human reviews written spec";
|
|
44
|
-
"Human reviews written spec" -> "Commit + invoke raid-implementation-plan" [shape=doublecircle];
|
|
50
|
+
"Human reviews written spec" -> "Commit + invoke raid-canonical-implementation-plan" [shape=doublecircle];
|
|
45
51
|
}
|
|
46
52
|
```
|
|
47
53
|
|
|
@@ -54,7 +60,7 @@ Complete in order:
|
|
|
54
60
|
3. **Explore project context** — files, docs, recent commits, dependencies, conventions, patterns
|
|
55
61
|
4. **Research dependencies** — API surface, versioning, compatibility, known issues. Read docs COMPLETELY.
|
|
56
62
|
5. **Ask clarifying questions** — one at a time to the human, eliminate every ambiguity
|
|
57
|
-
6. **Open the Dungeon** — create
|
|
63
|
+
6. **Open the Dungeon** — create `{questDir}/phase-2-design.md` with Phase 2 header, quest, mode. Read PRD doc if it exists.
|
|
58
64
|
7. **Dispatch with angles** — send each agent their angle via SendMessage, then go silent:
|
|
59
65
|
```
|
|
60
66
|
SendMessage(to="warrior", message="DISPATCH: [quest]. Your angle: [X]...")
|
|
@@ -64,23 +70,35 @@ Complete in order:
|
|
|
64
70
|
8. **Observe** — agents explore in their own panes, challenge each other via SendMessage, and pin findings to Dungeon. You receive messages automatically. Intervene only on protocol violations.
|
|
65
71
|
9. **Close the phase** — when Dungeon has sufficient verified findings to form 2-3 approaches
|
|
66
72
|
10. **Synthesize approaches** — propose 2-3 approaches from Dungeon evidence, with trade-offs and recommendation
|
|
67
|
-
11. **Present design** —
|
|
68
|
-
12. **Write design doc** — save to
|
|
73
|
+
11. **Present design section by section** — scale each section to its complexity (a few sentences if straightforward, up to 200-300 words if nuanced). Ask the human after each section: "Does this look right so far?" Be ready to revise before moving on. Cover: architecture, components, data flow, error handling, testing.
|
|
74
|
+
12. **Write design doc** — save to `{questDir}/phase-2-design.md`. May also create `{questDir}/phase-2-diagrams.md` for mermaid charts.
|
|
69
75
|
13. **Adversarial spec review** — agents attack the written spec directly, challenging each other
|
|
70
76
|
14. **Spec self-review** — fix issues inline (see checklist below)
|
|
71
77
|
15. **Human reviews written spec** — human approves before proceeding
|
|
72
|
-
16. **Commit** — `docs(
|
|
73
|
-
17. **
|
|
74
|
-
18. **Transition** — invoke `raid-implementation-plan`
|
|
78
|
+
16. **Commit** — `docs(quest-{slug}): phase 2 design — {summary}`
|
|
79
|
+
17. **Transition** — invoke `raid-canonical-implementation-plan`
|
|
75
80
|
|
|
76
81
|
## Opening the Dungeon
|
|
77
82
|
|
|
78
|
-
Create
|
|
83
|
+
Create `{questDir}/phase-2-design.md` (where `{questDir}` is from raid-session):
|
|
79
84
|
|
|
80
85
|
```markdown
|
|
81
|
-
#
|
|
86
|
+
# Phase 2: Design
|
|
82
87
|
## Quest: <task description from human>
|
|
83
88
|
## Mode: <Full Raid | Skirmish>
|
|
89
|
+
## PRD: <link to phase-1-prd.md if it exists>
|
|
90
|
+
|
|
91
|
+
### Architecture Overview
|
|
92
|
+
|
|
93
|
+
### Data Flow
|
|
94
|
+
|
|
95
|
+
### Component Design
|
|
96
|
+
|
|
97
|
+
### API Contracts
|
|
98
|
+
|
|
99
|
+
### Edge Cases & Error Handling
|
|
100
|
+
|
|
101
|
+
### Trade-offs & Decisions
|
|
84
102
|
|
|
85
103
|
### Discoveries
|
|
86
104
|
|
|
@@ -93,6 +111,16 @@ Create `.claude/raid-dungeon.md`:
|
|
|
93
111
|
### Escalations
|
|
94
112
|
```
|
|
95
113
|
|
|
114
|
+
## Question Chain
|
|
115
|
+
|
|
116
|
+
**Agents NEVER ask the human directly.** The question flow is:
|
|
117
|
+
1. Agent discovers they need clarification → sends `WIZARD:` with the question
|
|
118
|
+
2. Wizard reasons: can I answer this confidently from the PRD, codebase, or prior context?
|
|
119
|
+
3. If yes → answer the agent directly via SendMessage
|
|
120
|
+
4. If unsure → digest the question, formulate it clearly for the human, ask human
|
|
121
|
+
5. Wizard passes human's answer back to agents with his own interpretation added
|
|
122
|
+
6. Goal: minimize questions to human, batch related questions
|
|
123
|
+
|
|
96
124
|
## Dispatch Pattern
|
|
97
125
|
|
|
98
126
|
Each agent gets the same objective but a different starting angle. After dispatch, the Wizard goes silent.
|
|
@@ -107,6 +135,13 @@ Each agent gets the same objective but a different starting angle. After dispatc
|
|
|
107
135
|
>
|
|
108
136
|
> **All**: Read the Dungeon. Build on each other's discoveries. Challenge everything. Pin only what survives. Escalate to me with `WIZARD:` only when genuinely stuck.
|
|
109
137
|
|
|
138
|
+
## Design Principles
|
|
139
|
+
|
|
140
|
+
- **Isolation:** Break into units with one clear purpose, well-defined interfaces, testable independently. For each unit: what does it do, how do you use it, what does it depend on?
|
|
141
|
+
- **Encapsulation:** Can someone understand a unit without reading its internals? Can you change internals without breaking consumers? If not, the boundaries need work.
|
|
142
|
+
- **Size:** Smaller, well-bounded units are easier to reason about. When a file grows large, that's a signal it's doing too much.
|
|
143
|
+
- **Existing codebases:** Explore current structure first. Follow existing patterns. Only include targeted improvements where they serve the current goal — no unrelated refactoring.
|
|
144
|
+
|
|
110
145
|
## What Agents Must Cover
|
|
111
146
|
|
|
112
147
|
Every agent addresses ALL of these from their assigned angle:
|
|
@@ -164,7 +199,7 @@ Fix issues inline.
|
|
|
164
199
|
|
|
165
200
|
## Design Document Structure
|
|
166
201
|
|
|
167
|
-
Save to:
|
|
202
|
+
Save to: `{questDir}/phase-2-design.md`
|
|
168
203
|
|
|
169
204
|
```markdown
|
|
170
205
|
# [Feature Name] Design Specification
|
|
@@ -210,4 +245,15 @@ If the team is stuck on a fundamental design choice after genuine direct debate:
|
|
|
210
245
|
2. Let the human decide
|
|
211
246
|
3. Never ask the human to resolve something the team should handle
|
|
212
247
|
|
|
213
|
-
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Phase Transition
|
|
251
|
+
|
|
252
|
+
When the design is approved and committed:
|
|
253
|
+
|
|
254
|
+
1. Update `.claude/raid-session` phase to `"plan"`
|
|
255
|
+
2. **Commit:** `docs(quest-{slug}): phase 2 design — {summary}`
|
|
256
|
+
3. **Send phase report to human:** summarize key design decisions, trade-offs resolved, what's next
|
|
257
|
+
4. **Load the `raid-canonical-implementation-plan` skill now and begin Phase 3.**
|
|
258
|
+
|
|
259
|
+
Do not wait. Do not ask. The next action after committing the design doc is loading the next skill.
|