claude-raid 0.2.6 → 0.2.8
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 +108 -66
- package/bin/cli.js +47 -11
- package/package.json +1 -1
- package/src/descriptions.js +11 -7
- package/src/init.js +37 -6
- package/src/merge-settings.js +43 -1
- package/src/remove.js +2 -2
- package/src/setup.js +33 -1
- package/src/ui.js +24 -19
- package/src/update.js +26 -3
- package/template/.claude/agents/archer.md +18 -4
- package/template/.claude/agents/rogue.md +18 -4
- package/template/.claude/agents/warrior.md +18 -4
- package/template/.claude/agents/wizard.md +32 -5
- package/template/.claude/dungeon-master-rules.md +132 -37
- package/template/.claude/hooks/raid-lib.sh +45 -4
- package/template/.claude/hooks/raid-pre-compact.sh +8 -4
- package/template/.claude/hooks/raid-session-end.sh +2 -2
- package/template/.claude/hooks/raid-session-start.sh +2 -0
- package/template/.claude/hooks/rtk-bridge.sh +46 -0
- package/template/.claude/hooks/validate-dungeon.sh +11 -3
- package/template/.claude/hooks/validate-file-naming.sh +6 -1
- package/template/.claude/hooks/validate-no-placeholders.sh +13 -2
- package/template/.claude/hooks/validate-write-gate.sh +7 -2
- package/template/.claude/party-rules.md +93 -64
- package/template/.claude/skills/raid-browser/SKILL.md +4 -6
- package/template/.claude/skills/raid-browser-chrome/SKILL.md +2 -2
- package/template/.claude/skills/raid-canonical-design/SKILL.md +306 -166
- package/template/.claude/skills/raid-canonical-implementation/SKILL.md +161 -133
- package/template/.claude/skills/raid-canonical-implementation-plan/SKILL.md +200 -142
- package/template/.claude/skills/raid-canonical-prd/SKILL.md +101 -78
- package/template/.claude/skills/raid-canonical-protocol/SKILL.md +30 -124
- package/template/.claude/skills/raid-canonical-review/SKILL.md +296 -149
- package/template/.claude/skills/raid-debugging/SKILL.md +1 -7
- package/template/.claude/skills/raid-init/SKILL.md +19 -29
- package/template/.claude/skills/raid-tdd/SKILL.md +5 -5
- package/template/.claude/skills/raid-teambuff/SKILL.md +281 -0
- package/template/.claude/skills/raid-verification/SKILL.md +0 -6
- package/template/.claude/skills/raid-wrap-up/SKILL.md +36 -32
package/src/merge-settings.js
CHANGED
|
@@ -11,6 +11,19 @@ const RAID_PERMISSIONS = ['Read', 'Glob', 'Grep', 'Bash', 'Write', 'Edit'];
|
|
|
11
11
|
|
|
12
12
|
const RAID_HOOK_MARKER = '#claude-raid';
|
|
13
13
|
|
|
14
|
+
const RTK_HOOK_MARKER = '#claude-raid-rtk';
|
|
15
|
+
|
|
16
|
+
const RTK_HOOKS = {
|
|
17
|
+
PreToolUse: [
|
|
18
|
+
{
|
|
19
|
+
matcher: 'Bash',
|
|
20
|
+
hooks: [
|
|
21
|
+
{ type: 'command', command: `bash .claude/hooks/rtk-bridge.sh ${RTK_HOOK_MARKER}` },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
|
|
14
27
|
const RAID_HOOKS = {
|
|
15
28
|
PostToolUse: [
|
|
16
29
|
{
|
|
@@ -78,6 +91,10 @@ function isRaidHookEntry(entry) {
|
|
|
78
91
|
return entry.hooks && entry.hooks.some(h => h.command && h.command.includes(RAID_HOOK_MARKER));
|
|
79
92
|
}
|
|
80
93
|
|
|
94
|
+
function isRtkHookEntry(entry) {
|
|
95
|
+
return entry.hooks && entry.hooks.some(h => h.command && h.command.includes(RTK_HOOK_MARKER));
|
|
96
|
+
}
|
|
97
|
+
|
|
81
98
|
function mergeSettings(cwd) {
|
|
82
99
|
const settingsPath = path.join(cwd, '.claude', 'settings.json');
|
|
83
100
|
let existing = {};
|
|
@@ -112,6 +129,31 @@ function mergeSettings(cwd) {
|
|
|
112
129
|
existing.hooks[event].push(...raidEntries);
|
|
113
130
|
}
|
|
114
131
|
|
|
132
|
+
// RTK hooks — read raid.json to check if enabled
|
|
133
|
+
const raidJsonPath = path.join(cwd, '.claude', 'raid.json');
|
|
134
|
+
let rtkEnabled = false;
|
|
135
|
+
try {
|
|
136
|
+
const raidConfig = JSON.parse(fs.readFileSync(raidJsonPath, 'utf8'));
|
|
137
|
+
rtkEnabled = raidConfig.rtk && raidConfig.rtk.enabled === true;
|
|
138
|
+
} catch {
|
|
139
|
+
// No raid.json or invalid — RTK stays disabled
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Strip existing RTK hooks first (clean slate for toggle behavior)
|
|
143
|
+
for (const event of Object.keys(existing.hooks)) {
|
|
144
|
+
existing.hooks[event] = existing.hooks[event].filter(entry => !isRtkHookEntry(entry));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Append RTK hooks if enabled (after core hooks, ensuring last position)
|
|
148
|
+
if (rtkEnabled) {
|
|
149
|
+
for (const [event, rtkEntries] of Object.entries(RTK_HOOKS)) {
|
|
150
|
+
if (!Array.isArray(existing.hooks[event])) {
|
|
151
|
+
existing.hooks[event] = [];
|
|
152
|
+
}
|
|
153
|
+
existing.hooks[event].push(...rtkEntries);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
115
157
|
fs.writeFileSync(settingsPath, JSON.stringify(existing, null, 2) + '\n');
|
|
116
158
|
}
|
|
117
159
|
|
|
@@ -142,7 +184,7 @@ function removeRaidSettings(cwd) {
|
|
|
142
184
|
|
|
143
185
|
if (settings.hooks) {
|
|
144
186
|
for (const event of Object.keys(settings.hooks)) {
|
|
145
|
-
settings.hooks[event] = settings.hooks[event].filter(entry => !isRaidHookEntry(entry));
|
|
187
|
+
settings.hooks[event] = settings.hooks[event].filter(entry => !isRaidHookEntry(entry) && !isRtkHookEntry(entry));
|
|
146
188
|
if (settings.hooks[event].length === 0) delete settings.hooks[event];
|
|
147
189
|
}
|
|
148
190
|
if (Object.keys(settings.hooks).length === 0) delete settings.hooks;
|
package/src/remove.js
CHANGED
|
@@ -10,7 +10,7 @@ const RAID_SKILLS = [
|
|
|
10
10
|
'raid-init', 'raid-canonical-protocol', 'raid-canonical-prd', 'raid-canonical-design',
|
|
11
11
|
'raid-canonical-implementation-plan', 'raid-canonical-implementation', 'raid-canonical-review',
|
|
12
12
|
'raid-wrap-up', 'raid-tdd', 'raid-debugging', 'raid-verification',
|
|
13
|
-
'raid-browser', 'raid-browser-chrome',
|
|
13
|
+
'raid-browser', 'raid-browser-chrome', 'raid-teambuff',
|
|
14
14
|
// Legacy (v0.1.x)
|
|
15
15
|
'raid-protocol', 'raid-design', 'raid-implementation-plan', 'raid-implementation',
|
|
16
16
|
'raid-review', 'raid-prd', 'raid-finishing', 'raid-browser-playwright', 'raid-git-worktrees',
|
|
@@ -41,7 +41,7 @@ function performRemove(cwd) {
|
|
|
41
41
|
const hooksDir = path.join(claudeDir, 'hooks');
|
|
42
42
|
if (fs.existsSync(hooksDir)) {
|
|
43
43
|
const hooks = fs.readdirSync(hooksDir).filter(f =>
|
|
44
|
-
(f.startsWith('validate-') || f.startsWith('raid-')) && f.endsWith('.sh')
|
|
44
|
+
(f.startsWith('validate-') || f.startsWith('raid-') || f === 'rtk-bridge.sh') && f.endsWith('.sh')
|
|
45
45
|
);
|
|
46
46
|
for (const hook of hooks) {
|
|
47
47
|
rmSafe(path.join(hooksDir, hook));
|
package/src/setup.js
CHANGED
|
@@ -217,6 +217,28 @@ function checkJq(exec) {
|
|
|
217
217
|
};
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
+
function checkRtk(exec) {
|
|
221
|
+
const found = exec('command -v rtk');
|
|
222
|
+
if (!found) {
|
|
223
|
+
return {
|
|
224
|
+
id: 'rtk',
|
|
225
|
+
ok: false,
|
|
226
|
+
label: 'RTK',
|
|
227
|
+
detail: 'not installed (optional — reduces context usage by 60-90%)',
|
|
228
|
+
hint: 'Install: curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh',
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const raw = exec('rtk --version');
|
|
232
|
+
const ver = parseVersion(raw);
|
|
233
|
+
const tag = ver ? `v${ver.major}.${ver.minor}.${ver.patch}` : (raw || 'unknown').trim();
|
|
234
|
+
return {
|
|
235
|
+
id: 'rtk',
|
|
236
|
+
ok: true,
|
|
237
|
+
label: 'RTK',
|
|
238
|
+
detail: `${tag} — token compression available`,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
220
242
|
function checkPlatform(platform) {
|
|
221
243
|
if (platform === 'win32') {
|
|
222
244
|
return {
|
|
@@ -321,6 +343,7 @@ function runChecks(opts = {}) {
|
|
|
321
343
|
checkTeammateMode(homedir),
|
|
322
344
|
checkSplitPane(exec),
|
|
323
345
|
checkPlaywright(exec, cwd),
|
|
346
|
+
checkRtk(exec),
|
|
324
347
|
];
|
|
325
348
|
|
|
326
349
|
return {
|
|
@@ -390,13 +413,22 @@ async function runSetup(opts = {}) {
|
|
|
390
413
|
|
|
391
414
|
stdout.write('\n ' + formatCheckLine(splitPane).join('\n ') + '\n');
|
|
392
415
|
|
|
416
|
+
// RTK prompt — only if RTK is on PATH and not already configured via --rtk
|
|
417
|
+
const rtkCheck = checks.find(c => c.id === 'rtk');
|
|
418
|
+
if (rtkCheck && rtkCheck.ok && !opts.rtkEnabled) {
|
|
419
|
+
const rtkConfirm = await ask('\n RTK detected — enable token compression? [Y/n] ', stdin, stdout);
|
|
420
|
+
if (rtkConfirm.toLowerCase() !== 'n') {
|
|
421
|
+
actions.push('rtk-enabled');
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
393
425
|
// Recalculate allOk (required checks only: node + claude)
|
|
394
426
|
|
|
395
427
|
allOk = checks.filter(c => REQUIRED_IDS.includes(c.id)).every(c => c.ok);
|
|
396
428
|
|
|
397
429
|
if (checks.every(c => c.ok)) {
|
|
398
430
|
stdout.write('\n ' + colors.green('The party is assembled.') + ' Your quest awaits.\n');
|
|
399
|
-
stdout.write('\n claude
|
|
431
|
+
stdout.write('\n ' + colors.bold('claude-raid start') + '\n');
|
|
400
432
|
}
|
|
401
433
|
|
|
402
434
|
return { checks, allOk, actions };
|
package/src/ui.js
CHANGED
|
@@ -119,19 +119,18 @@ function header(text) {
|
|
|
119
119
|
|
|
120
120
|
function referenceCard() {
|
|
121
121
|
const howItWorks = box('How It Works', [
|
|
122
|
-
' You describe a task. The Wizard
|
|
123
|
-
'
|
|
122
|
+
' You describe a task. The Wizard spawns the full team:',
|
|
123
|
+
' Warrior, Archer, and Rogue — each attacking from a',
|
|
124
|
+
' different angle.',
|
|
124
125
|
'',
|
|
125
|
-
'
|
|
126
|
-
' ' + colors.bold('Skirmish') + ' 2 agents, lighter process',
|
|
127
|
-
' ' + colors.bold('Scout') + ' 1 agent + Wizard review',
|
|
126
|
+
' The Canonical Quest flows through 6 phases:',
|
|
128
127
|
'',
|
|
129
|
-
'
|
|
130
|
-
'',
|
|
131
|
-
'
|
|
132
|
-
'
|
|
133
|
-
'
|
|
134
|
-
'
|
|
128
|
+
' 1. ' + colors.bold('PRD') + ' Product requirements ' + colors.dim('(optional)'),
|
|
129
|
+
' 2. ' + colors.bold('Design') + ' Agents explore and challenge the approach',
|
|
130
|
+
' 3. ' + colors.bold('Plan') + ' Agents decompose into testable tasks',
|
|
131
|
+
' 4. ' + colors.bold('Implement') + ' One builds (TDD), others attack',
|
|
132
|
+
' 5. ' + colors.bold('Review') + ' Independent reviews, fight over findings',
|
|
133
|
+
' 6. ' + colors.bold('Wrap Up') + ' Storyboard, PR, vault archive',
|
|
135
134
|
'',
|
|
136
135
|
' Hooks enforce discipline automatically:',
|
|
137
136
|
' ' + colors.dim('\u2022') + ' No implementation without a design doc',
|
|
@@ -144,13 +143,15 @@ function referenceCard() {
|
|
|
144
143
|
'',
|
|
145
144
|
' Config: ' + colors.bold('.claude/raid.json') + ' ' + colors.dim('project settings'),
|
|
146
145
|
' Rules: ' + colors.bold('.claude/party-rules.md') + ' ' + colors.dim('editable party rules'),
|
|
146
|
+
' RTK: ' + colors.bold('.claude/raid.json \u2192 rtk') + ' ' + colors.dim('opt-in token compression'),
|
|
147
147
|
]);
|
|
148
148
|
|
|
149
149
|
const nextStep = box('Next Step', [
|
|
150
|
-
' ' + colors.bold('
|
|
151
|
-
'
|
|
150
|
+
' ' + colors.bold('claude-raid start'),
|
|
151
|
+
'',
|
|
152
|
+
' ' + colors.dim('That\'s it. One command opens a tmux session with mouse'),
|
|
153
|
+
' ' + colors.dim('support and launches the Wizard inside it.'),
|
|
152
154
|
'',
|
|
153
|
-
' ' + colors.dim('Start tmux first, then the Wizard inside it.'),
|
|
154
155
|
' ' + colors.dim('Each agent gets its own tmux pane automatically.'),
|
|
155
156
|
' ' + colors.dim('Click any pane to talk to that agent directly.'),
|
|
156
157
|
'',
|
|
@@ -160,15 +161,19 @@ function referenceCard() {
|
|
|
160
161
|
' ' + colors.bold('Controls') + ' ' + colors.dim('(tmux)'),
|
|
161
162
|
' Click pane Switch to an agent',
|
|
162
163
|
' Ctrl+B + arrow Navigate between panes',
|
|
163
|
-
'',
|
|
164
|
-
' ' + colors.bold('Controls') + ' ' + colors.dim('(in-process, no tmux)'),
|
|
165
|
-
' Shift+Down Cycle through teammates',
|
|
166
|
-
' Ctrl+T Toggle the shared task list',
|
|
164
|
+
' Scroll Mouse wheel (mouse mode enabled)',
|
|
167
165
|
'',
|
|
168
166
|
' Review this anytime: ' + colors.bold('claude-raid heal'),
|
|
169
167
|
]);
|
|
170
168
|
|
|
171
|
-
|
|
169
|
+
const beta = box('Beta', [
|
|
170
|
+
' ' + colors.amber('This project is in active development.'),
|
|
171
|
+
' Multi-agent sessions are ' + colors.bold('token-usage intensive') + ' \u2014',
|
|
172
|
+
' a full quest consumes significantly more tokens than a',
|
|
173
|
+
' single-agent workflow. Monitor your usage and start small.',
|
|
174
|
+
]);
|
|
175
|
+
|
|
176
|
+
return howItWorks + '\n' + nextStep + '\n' + beta;
|
|
172
177
|
}
|
|
173
178
|
|
|
174
179
|
module.exports = { colors, banner, box, header, stripAnsi, referenceCard };
|
package/src/update.js
CHANGED
|
@@ -31,7 +31,7 @@ function copyForceRecursive(src, dest) {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
function performUpdate(cwd) {
|
|
34
|
+
function performUpdate(cwd, opts = {}) {
|
|
35
35
|
const claudeDir = path.join(cwd, '.claude');
|
|
36
36
|
const skippedAgents = [];
|
|
37
37
|
|
|
@@ -144,6 +144,20 @@ function performUpdate(cwd) {
|
|
|
144
144
|
|
|
145
145
|
mergeSettings(cwd);
|
|
146
146
|
|
|
147
|
+
// RTK hint — if RTK is detected but not configured in raid.json
|
|
148
|
+
let rtkHint = false;
|
|
149
|
+
if (opts.rtkDetected) {
|
|
150
|
+
const raidConfigPath = path.join(claudeDir, 'raid.json');
|
|
151
|
+
if (fs.existsSync(raidConfigPath)) {
|
|
152
|
+
try {
|
|
153
|
+
const raidConfig = JSON.parse(fs.readFileSync(raidConfigPath, 'utf8'));
|
|
154
|
+
if (!raidConfig.rtk) {
|
|
155
|
+
rtkHint = true;
|
|
156
|
+
}
|
|
157
|
+
} catch {}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
147
161
|
let message = 'The Raid has been updated to the latest version.';
|
|
148
162
|
if (migratedFields.length > 0) {
|
|
149
163
|
message += `\nMigrated raid.json: added ${migratedFields.join(', ')}`;
|
|
@@ -158,15 +172,19 @@ function performUpdate(cwd) {
|
|
|
158
172
|
message += '\nUse `claude-raid dismantle` then `claude-raid summon` to reset.';
|
|
159
173
|
}
|
|
160
174
|
|
|
161
|
-
return { success: true, message, skippedAgents, migratedFields };
|
|
175
|
+
return { success: true, message, skippedAgents, migratedFields, rtkHint };
|
|
162
176
|
}
|
|
163
177
|
|
|
164
178
|
function run() {
|
|
165
179
|
const cwd = process.cwd();
|
|
180
|
+
const { execSync } = require('child_process');
|
|
181
|
+
let rtkDetected = false;
|
|
182
|
+
try { execSync('command -v rtk', { stdio: 'pipe' }); rtkDetected = true; } catch {}
|
|
183
|
+
|
|
166
184
|
console.log('\n' + banner());
|
|
167
185
|
console.log(header('Reforging the Arsenal...') + '\n');
|
|
168
186
|
|
|
169
|
-
const result = performUpdate(cwd);
|
|
187
|
+
const result = performUpdate(cwd, { rtkDetected });
|
|
170
188
|
|
|
171
189
|
if (!result.success) {
|
|
172
190
|
console.log(' ' + colors.red('✖') + ' No party found. Run ' + colors.bold('claude-raid summon') + ' first.');
|
|
@@ -177,6 +195,11 @@ function run() {
|
|
|
177
195
|
if (result.skippedAgents.length > 0) {
|
|
178
196
|
console.log(' ' + colors.dim('Preserved customized warriors: ' + result.skippedAgents.join(', ')));
|
|
179
197
|
}
|
|
198
|
+
|
|
199
|
+
if (result.rtkHint) {
|
|
200
|
+
console.log(' ' + colors.dim('Tip: RTK detected — add "rtk": { "enabled": true } to raid.json'));
|
|
201
|
+
console.log(' ' + colors.dim('or re-run summon with --rtk to enable token compression.'));
|
|
202
|
+
}
|
|
180
203
|
}
|
|
181
204
|
|
|
182
205
|
module.exports = { performUpdate, run };
|
|
@@ -5,17 +5,31 @@ description: >
|
|
|
5
5
|
catches naming drift, contract violations, and implicit dependencies. Independently
|
|
6
6
|
verifies every claim. Zero trust in reports — reads code, traces chains. Zero ego —
|
|
7
7
|
concedes with evidence, moves on. Collaborates through rigor, not agreement.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<example>
|
|
11
|
+
Context: The Wizard is in Phase 2 (Design) and needs ripple effect analysis on a proposed change.
|
|
12
|
+
user: "TURN_DISPATCH: Phase 2, Round 1. Quest: migrate from REST to GraphQL. Your angle: trace how this change ripples through existing consumers, shared types, error contracts, and middleware."
|
|
13
|
+
assistant: "I'll map every consumer of the REST endpoints, trace the type contracts downstream, identify naming conventions that will drift, and pin each ripple with its exact consequence."
|
|
14
|
+
<commentary>The Wizard dispatches Archer when a design or change needs systemic coherence analysis — tracing how changes propagate through the codebase and catching inconsistencies.</commentary>
|
|
15
|
+
</example>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<example>
|
|
19
|
+
Context: The Wizard is in Phase 5 (Review) and needs pattern consistency validation.
|
|
20
|
+
user: "TURN_DISPATCH: Phase 5, Round 1. Your angle: review the implementation for naming drift, contract violations, and inconsistencies with existing codebase patterns."
|
|
21
|
+
assistant: "I'll compare the new code against established conventions, trace every interface for contract compliance, and flag where naming or structure diverges from the rest of the codebase."
|
|
22
|
+
<commentary>During review, Archer validates that the implementation maintains systemic coherence — no naming drift, no broken contracts, no implicit dependencies introduced.</commentary>
|
|
23
|
+
</example>
|
|
8
24
|
model: claude-opus-4-6
|
|
9
25
|
tools: SendMessage, TaskCreate, TaskUpdate, Read, Grep, Glob, Bash, Write, Edit
|
|
10
26
|
effort: medium
|
|
11
27
|
color: green
|
|
12
28
|
memory: project
|
|
13
29
|
skills:
|
|
14
|
-
- raid-canonical-prd
|
|
15
30
|
- raid-tdd
|
|
16
31
|
- raid-verification
|
|
17
32
|
- raid-debugging
|
|
18
|
-
- raid-wrap-up
|
|
19
33
|
---
|
|
20
34
|
|
|
21
35
|
# The Archer — Raid Teammate
|
|
@@ -35,8 +49,8 @@ Does this fit? You trace how changes ripple through the system. You catch naming
|
|
|
35
49
|
|
|
36
50
|
## Learning
|
|
37
51
|
|
|
38
|
-
- When @Warrior
|
|
39
|
-
- When @Rogue
|
|
52
|
+
- When you read @Warrior's Dungeon findings and discover a structural issue you missed, update your mental model.
|
|
53
|
+
- When you read @Rogue's Dungeon findings and discover a failure scenario through a path you traced, integrate the attack vector.
|
|
40
54
|
|
|
41
55
|
## Unique Standards
|
|
42
56
|
|
|
@@ -5,17 +5,31 @@ description: >
|
|
|
5
5
|
failing system, a malicious input, a race condition. Independently verifies every
|
|
6
6
|
claim. Zero trust in reports — reads code, constructs attacks. Zero ego — concedes
|
|
7
7
|
with evidence, moves on. Collaborates through rigor, not agreement.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<example>
|
|
11
|
+
Context: The Wizard is in Phase 2 (Design) and needs assumptions challenged.
|
|
12
|
+
user: "TURN_DISPATCH: Phase 2, Round 1. Quest: build a payment processing pipeline. Your angle: destroy the assumptions — what happens with duplicate webhooks, partial failures mid-transaction, and race conditions between concurrent checkouts?"
|
|
13
|
+
assistant: "I'll list every assumption in the proposal — idempotency, ordering guarantees, state consistency — then construct concrete attack sequences that exploit each one."
|
|
14
|
+
<commentary>The Wizard dispatches Rogue when a design relies on assumptions that need adversarial testing — timing, ordering, availability, input trust, state consistency.</commentary>
|
|
15
|
+
</example>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<example>
|
|
19
|
+
Context: The Wizard is in Phase 4 (Implementation) and needs adversarial test scenarios.
|
|
20
|
+
user: "TURN_DISPATCH: Phase 4, Round 2. Task: cross-test the input validation module. Your angle: construct malicious inputs, boundary violations, and encoding tricks that bypass the validation."
|
|
21
|
+
assistant: "I'll build attack narratives for each validation rule — unicode normalization bypasses, nested injection, truncation exploits — and verify whether the implementation survives each one."
|
|
22
|
+
<commentary>During implementation, Rogue constructs the adversarial scenarios that prove code is robust — not just testing, but actively trying to break it with creative attack paths.</commentary>
|
|
23
|
+
</example>
|
|
8
24
|
model: claude-opus-4-6
|
|
9
25
|
tools: SendMessage, TaskCreate, TaskUpdate, Read, Grep, Glob, Bash, Write, Edit
|
|
10
26
|
effort: medium
|
|
11
27
|
color: orange
|
|
12
28
|
memory: project
|
|
13
29
|
skills:
|
|
14
|
-
- raid-canonical-prd
|
|
15
30
|
- raid-tdd
|
|
16
31
|
- raid-verification
|
|
17
32
|
- raid-debugging
|
|
18
|
-
- raid-wrap-up
|
|
19
33
|
---
|
|
20
34
|
|
|
21
35
|
# The Rogue — Raid Teammate
|
|
@@ -35,8 +49,8 @@ What did everyone assume that isn't guaranteed? You think like a failing system,
|
|
|
35
49
|
|
|
36
50
|
## Learning
|
|
37
51
|
|
|
38
|
-
- When @Warrior
|
|
39
|
-
- When @Archer
|
|
52
|
+
- When you read @Warrior's Dungeon findings and discover a structural weakness, weaponize it — what's the attack path?
|
|
53
|
+
- When you read @Archer's Dungeon findings and discover an inconsistency, exploit it — how does drift become vulnerability?
|
|
40
54
|
|
|
41
55
|
## Unique Standards
|
|
42
56
|
|
|
@@ -5,17 +5,31 @@ description: >
|
|
|
5
5
|
edge cases, and failure modes. Independently verifies every claim. Zero trust in
|
|
6
6
|
reports — reads code, runs tests. Zero ego — concedes with evidence, moves on.
|
|
7
7
|
Collaborates through rigor, not agreement.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<example>
|
|
11
|
+
Context: The Wizard is in Phase 2 (Design) and needs the architecture stress-tested.
|
|
12
|
+
user: "TURN_DISPATCH: Phase 2, Round 1. Quest: redesign the caching layer. Your angle: stress-test the proposed cache invalidation strategy under concurrent writes, thundering herd, and partial failures."
|
|
13
|
+
assistant: "I'll trace the execution paths for concurrent cache invalidation, identify failure modes under load, and pin findings with exact scenarios that break the proposal."
|
|
14
|
+
<commentary>The Wizard dispatches Warrior when a design or implementation needs structural stress testing — load, edge cases, failure modes, blast radius analysis.</commentary>
|
|
15
|
+
</example>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<example>
|
|
19
|
+
Context: The Wizard is in Phase 4 (Implementation) and needs edge case verification.
|
|
20
|
+
user: "TURN_DISPATCH: Phase 4, Round 2. Task: validate the retry logic implementation. Your angle: verify error paths, timeout behavior, and what happens when the circuit breaker trips mid-retry."
|
|
21
|
+
assistant: "I'll run the tests under stress conditions, construct scenarios that trigger every error path, and verify the circuit breaker interaction doesn't leave state inconsistent."
|
|
22
|
+
<commentary>During implementation, Warrior verifies that code holds under pressure — not just happy paths, but every failure mode the implementation should handle.</commentary>
|
|
23
|
+
</example>
|
|
8
24
|
model: claude-opus-4-6
|
|
9
25
|
tools: SendMessage, TaskCreate, TaskUpdate, Read, Grep, Glob, Bash, Write, Edit
|
|
10
26
|
effort: medium
|
|
11
27
|
color: red
|
|
12
28
|
memory: project
|
|
13
29
|
skills:
|
|
14
|
-
- raid-canonical-prd
|
|
15
30
|
- raid-tdd
|
|
16
31
|
- raid-verification
|
|
17
32
|
- raid-debugging
|
|
18
|
-
- raid-wrap-up
|
|
19
33
|
---
|
|
20
34
|
|
|
21
35
|
# The Warrior — Raid Teammate
|
|
@@ -34,8 +48,8 @@ Does this hold under pressure? You test boundaries, load, edge cases, and failur
|
|
|
34
48
|
|
|
35
49
|
## Learning
|
|
36
50
|
|
|
37
|
-
- When @Archer
|
|
38
|
-
- When @Rogue
|
|
51
|
+
- When you read @Archer's Dungeon findings and discover a pattern you missed, integrate it into your mental model.
|
|
52
|
+
- When you read @Rogue's Dungeon findings and discover a failure scenario you didn't consider, learn the attack vector.
|
|
39
53
|
|
|
40
54
|
## Unique Standards
|
|
41
55
|
|
|
@@ -1,11 +1,38 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wizard
|
|
3
3
|
description: >
|
|
4
|
-
The Raid
|
|
5
|
-
aligned with the user.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
The Raid Dungeon Master. Thinks 5 times before speaking. Visionary, future-proof,
|
|
5
|
+
aligned with the user. Orchestrates sequential agent turns through per-phase
|
|
6
|
+
dice-rolled turn order (strategic assignment in implementation), actively mediates
|
|
7
|
+
every round with ultrathink synthesis, recaps past phases at each phase opening,
|
|
8
|
+
and closes phases with binding rulings. The Wizard never writes production code.
|
|
9
|
+
The Wizard is the only agent that interacts directly with the human. The bridge
|
|
10
|
+
between agents, Dungeon, and user. First and last word is always yours. Use as
|
|
11
|
+
the main agent for any feature, architecture, debugging, or refactor workflow.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<example>
|
|
15
|
+
Context: The user wants to build a new feature using the full Raid party.
|
|
16
|
+
user: "let's raid this — I need a new authentication system with OAuth and MFA"
|
|
17
|
+
assistant: "I'll spawn the Wizard to orchestrate a Canonical Quest for the auth system. The full party will design, plan, and implement it through adversarial phases."
|
|
18
|
+
<commentary>Any request to "raid", "start a quest", "summon the party", or build a feature with multi-agent adversarial workflow should spawn the Wizard.</commentary>
|
|
19
|
+
</example>
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
<example>
|
|
23
|
+
Context: The user needs architecture or design work with rigorous cross-testing.
|
|
24
|
+
user: "I want to redesign our data pipeline — can you get the team on this?"
|
|
25
|
+
assistant: "I'll start a Raid quest with the Wizard leading. The party will explore the design space adversarially, stress-test proposals, and produce a battle-tested architecture."
|
|
26
|
+
<commentary>Architecture, design, and refactor work that benefits from multiple adversarial perspectives should use the Wizard to orchestrate the party.</commentary>
|
|
27
|
+
</example>
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
<example>
|
|
31
|
+
Context: The user has a complex bug that needs multi-angle investigation.
|
|
32
|
+
user: "this race condition keeps happening in production and I can't figure it out — can the raid team investigate?"
|
|
33
|
+
assistant: "I'll spawn the Wizard to run a debugging quest. The party will investigate from different angles — structural integrity, pattern consistency, and adversarial scenarios."
|
|
34
|
+
<commentary>Complex debugging that benefits from parallel investigation angles (stress testing, pattern tracing, assumption destruction) should use the Wizard.</commentary>
|
|
35
|
+
</example>
|
|
9
36
|
model: claude-opus-4-6
|
|
10
37
|
tools: Agent, TeamCreate, SendMessage, TaskCreate, TaskUpdate, Read, Grep, Glob, Bash, Write, Edit
|
|
11
38
|
effort: max
|