@rune-kit/rune 2.2.6 → 2.3.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/README.md +395 -389
- package/compiler/__tests__/tier-override.test.js +158 -0
- package/compiler/adapters/antigravity.js +3 -8
- package/compiler/adapters/codex.js +3 -8
- package/compiler/adapters/cursor.js +3 -8
- package/compiler/adapters/generic.js +3 -8
- package/compiler/adapters/openclaw.js +4 -9
- package/compiler/adapters/opencode.js +3 -8
- package/compiler/adapters/windsurf.js +3 -8
- package/compiler/bin/rune.js +34 -1
- package/compiler/emitter.js +94 -5
- package/compiler/transforms/branding.js +10 -3
- package/docs/ARCHITECTURE.md +3 -3
- package/docs/SKILL-TEMPLATE.md +15 -0
- package/docs/VISION.md +3 -3
- package/docs/guides/index.html +14 -14
- package/docs/index.html +82 -13
- package/docs/script.js +33 -6
- package/docs/skills/index.html +832 -832
- package/docs/style.css +62 -0
- package/extensions/ai-ml/PACK.md +7 -0
- package/extensions/content/PACK.md +7 -0
- package/extensions/mobile/PACK.md +9 -9
- package/extensions/zalo/PACK.md +9 -0
- package/package.json +8 -6
- package/skills/adversary/SKILL.md +12 -0
- package/skills/audit/SKILL.md +526 -467
- package/skills/autopsy/SKILL.md +12 -0
- package/skills/ba/SKILL.md +349 -342
- package/skills/brainstorm/SKILL.md +11 -0
- package/skills/completion-gate/SKILL.md +260 -249
- package/skills/context-engine/SKILL.md +77 -1
- package/skills/context-pack/SKILL.md +160 -0
- package/skills/cook/SKILL.md +648 -958
- package/skills/cook/references/deviation-rules.md +19 -0
- package/skills/cook/references/error-recovery.md +37 -0
- package/skills/cook/references/exit-conditions.md +31 -0
- package/skills/cook/references/loop-detection.md +39 -0
- package/skills/cook/references/mid-run-signals.md +31 -0
- package/skills/cook/references/output-format.md +40 -0
- package/skills/cook/references/pack-detection.md +82 -0
- package/skills/cook/references/pause-resume-template.md +38 -0
- package/skills/cook/references/rfc-template.md +52 -0
- package/skills/cook/references/sharp-edges.md +24 -0
- package/skills/cook/references/subagent-status.md +38 -0
- package/skills/db/SKILL.md +12 -0
- package/skills/debug/SKILL.md +392 -362
- package/skills/deploy/SKILL.md +10 -0
- package/skills/deploy/references/post-deploy-integration.md +192 -0
- package/skills/design/SKILL.md +9 -0
- package/skills/docs/SKILL.md +12 -0
- package/skills/docs-seeker/SKILL.md +11 -0
- package/skills/fix/SKILL.md +281 -249
- package/skills/incident/SKILL.md +10 -0
- package/skills/launch/SKILL.md +12 -0
- package/skills/logic-guardian/SKILL.md +11 -0
- package/skills/marketing/SKILL.md +13 -0
- package/skills/mcp-builder/SKILL.md +13 -0
- package/skills/onboard/SKILL.md +50 -2
- package/skills/perf/SKILL.md +11 -0
- package/skills/plan/SKILL.md +342 -688
- package/skills/plan/references/completeness-scoring.md +36 -0
- package/skills/plan/references/outcome-block.md +40 -0
- package/skills/plan/references/plan-templates.md +193 -0
- package/skills/plan/references/wave-planning.md +44 -0
- package/skills/plan/references/workflow-registry.md +52 -0
- package/skills/preflight/SKILL.md +360 -280
- package/skills/rescue/SKILL.md +11 -0
- package/skills/research/SKILL.md +149 -150
- package/skills/retro/SKILL.md +11 -0
- package/skills/review/SKILL.md +489 -396
- package/skills/review-intake/SKILL.md +11 -0
- package/skills/safeguard/SKILL.md +12 -0
- package/skills/scaffold/SKILL.md +10 -0
- package/skills/scope-guard/SKILL.md +11 -0
- package/skills/scout/SKILL.md +9 -0
- package/skills/sentinel/SKILL.md +296 -425
- package/skills/sentinel/references/config-protection.md +52 -0
- package/skills/sentinel/references/destructive-commands.md +39 -0
- package/skills/sentinel/references/domain-hooks.md +73 -0
- package/skills/sentinel/references/framework-patterns.md +46 -0
- package/skills/sentinel/references/owasp-patterns.md +69 -0
- package/skills/sentinel/references/secret-patterns.md +40 -0
- package/skills/sentinel/references/skill-content-guard.md +54 -0
- package/skills/session-bridge/SKILL.md +56 -2
- package/skills/skill-forge/SKILL.md +47 -2
- package/skills/skill-router/{SKILL.md → skill.md} +446 -365
- package/skills/surgeon/SKILL.md +12 -0
- package/skills/team/SKILL.md +34 -1
- package/skills/test/SKILL.md +585 -427
- package/skills/watchdog/references/webhook-health-checks.md +243 -0
package/skills/cook/SKILL.md
CHANGED
|
@@ -1,958 +1,648 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cook
|
|
3
|
-
description: "Feature implementation orchestrator. ALWAYS use this skill for ANY code change — implement, build, add feature, create, fix bug, or any task that modifies source code. This is the default route for 70% of all requests. Runs full TDD cycle: understand → plan → test → implement → quality → verify → commit."
|
|
4
|
-
context: fork
|
|
5
|
-
agent: general-purpose
|
|
6
|
-
metadata:
|
|
7
|
-
author: runedev
|
|
8
|
-
version: "1.
|
|
9
|
-
layer: L1
|
|
10
|
-
model: sonnet
|
|
11
|
-
group: orchestrator
|
|
12
|
-
tools: "Read, Write, Edit, Bash, Glob, Grep"
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# cook
|
|
16
|
-
|
|
17
|
-
## Purpose
|
|
18
|
-
|
|
19
|
-
The primary orchestrator for feature implementation. Coordinates the entire L2 mesh in a phased TDD workflow. Handles 70% of all user requests — any task that modifies source code routes through cook.
|
|
20
|
-
|
|
21
|
-
<HARD-GATE>
|
|
22
|
-
Before starting ANY implementation:
|
|
23
|
-
1. You MUST understand the codebase first (Phase 1)
|
|
24
|
-
2. You MUST have a plan before writing code (Phase 2)
|
|
25
|
-
3. You MUST write failing tests before implementation (Phase 3) — unless explicitly skipped
|
|
26
|
-
This applies to EVERY feature regardless of perceived simplicity.
|
|
27
|
-
</HARD-GATE>
|
|
28
|
-
|
|
29
|
-
## Workflow Chains (Predefined)
|
|
30
|
-
|
|
31
|
-
Cook supports predefined workflow chains for common task types. Use these as shortcuts instead of manually determining phases:
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
/rune cook feature → Full TDD pipeline (all phases)
|
|
35
|
-
/rune cook bugfix → Diagnose → fix → verify (Phase 1 → 4 → 6 → 7)
|
|
36
|
-
/rune cook refactor → Understand → plan → implement → quality (Phase 1 → 2 → 4 → 5 → 6 → 7)
|
|
37
|
-
/rune cook security → Full pipeline + sentinel@opus + sast (all phases, security-escalated)
|
|
38
|
-
/rune cook hotfix → Minimal: fix → verify → commit (Phase 4 → 6 → 7, skip scout if user provides context)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- Contains "
|
|
44
|
-
- Contains "
|
|
45
|
-
- Contains "
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
##
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
- `
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
**
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
**
|
|
207
|
-
|
|
208
|
-
1.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
**
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
**
|
|
254
|
-
|
|
255
|
-
**
|
|
256
|
-
-
|
|
257
|
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
##
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
If
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
-
|
|
458
|
-
|
|
459
|
-
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
**
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
4
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
**Stage 2 — Context Classification** (if no keyword match AND message >60 chars):
|
|
651
|
-
|
|
652
|
-
| Intent | Signal | Action |
|
|
653
|
-
|--------|--------|--------|
|
|
654
|
-
| `Steer` | Modifies scope but keeps goal ("actually use Redis instead of Memcached") | Update plan inline, note deviation in Cook Report |
|
|
655
|
-
| `NewTask` | Unrelated to current work ("also fix the login page") | Log to `.rune/backlog.md`, continue current task. Announce: "Noted for later — staying on current task." |
|
|
656
|
-
| `Clarification` | Answers a question cook asked, or provides missing context | Absorb into current phase context, resume |
|
|
657
|
-
|
|
658
|
-
> Source: goclaw (832★) — two-stage intent classification prevents expensive LLM calls for simple signals like "stop" or "status".
|
|
659
|
-
|
|
660
|
-
<HARD-GATE>
|
|
661
|
-
NEVER treat a Cancel/Pause signal as a Steer or NewTask. User safety signals take absolute priority.
|
|
662
|
-
If ambiguous between Cancel and Steer → ask user: "Did you mean stop, or change approach?"
|
|
663
|
-
</HARD-GATE>
|
|
664
|
-
|
|
665
|
-
### Exit Conditions (Mandatory for Autonomous Runs)
|
|
666
|
-
|
|
667
|
-
Every cook invocation inside `team` or autonomous workflows MUST have exit conditions:
|
|
668
|
-
|
|
669
|
-
```
|
|
670
|
-
MAX_DEBUG_LOOPS: 3 per error area (already enforced)
|
|
671
|
-
MAX_QUALITY_LOOPS: 2 re-runs of Phase 5 (fix→recheck cycle)
|
|
672
|
-
MAX_REPLAN: 1 re-plan per cook session (Phase 4 re-plan check)
|
|
673
|
-
MAX_PIVOT: 1 approach pivot per cook session (Approach Pivot Gate)
|
|
674
|
-
MAX_FIXES: 30 per session (hard cap — fix's WTF-likelihood self-regulation)
|
|
675
|
-
WTF_THRESHOLD: 20% quality decay risk → STOP fixing, commit progress, re-assess
|
|
676
|
-
TIMEOUT_SIGNAL: If context-watch reports ORANGE, wrap up current phase and checkpoint
|
|
677
|
-
```
|
|
678
|
-
|
|
679
|
-
**Escalation chain**: debug-fix (3x) → re-plan (1x) → **approach pivot via brainstorm rescue (1x)** → THEN escalate to user. Never surrender before exhausting the pivot.
|
|
680
|
-
|
|
681
|
-
If any exit condition triggers without resolution → cook emits `BLOCKED` status with details and stops. Never spin indefinitely.
|
|
682
|
-
|
|
683
|
-
### Subagent Status Protocol
|
|
684
|
-
|
|
685
|
-
When cook completes (whether standalone or invoked by `team`), it MUST return one of four statuses. Sub-skills invoked by cook (fix, test, review, sentinel, etc.) MUST also return one of these statuses so cook can route accordingly.
|
|
686
|
-
|
|
687
|
-
| Status | Meaning | Cook Action |
|
|
688
|
-
|--------|---------|-------------|
|
|
689
|
-
| `DONE` | Task complete, no issues | Proceed to next phase |
|
|
690
|
-
| `DONE_WITH_CONCERNS` | Task complete but issues noted (e.g., "tests pass but a performance regression observed") | Proceed, but append concern to `.rune/progress.md` and surface in Cook Report; address in Phase 5 (QUALITY) or next review cycle |
|
|
691
|
-
| `NEEDS_CONTEXT` | Cannot proceed without more information (missing requirement, ambiguous spec, unknown environment) | Pause execution. Ask user the specific question(s) blocking progress. Resume from the same phase after answer received. |
|
|
692
|
-
| `BLOCKED` | Hard blocker — cannot continue regardless of context (broken dependency, fundamental incompatibility, exhausted escalation chain) | Trigger escalation chain: debug-fix (3x) → re-plan (1x) → brainstorm rescue (1x) → then escalate to user with full details |
|
|
693
|
-
|
|
694
|
-
**DONE_WITH_CONCERNS logging format** (append to `.rune/progress.md`):
|
|
695
|
-
```
|
|
696
|
-
[CONCERN][phase][timestamp] <sub-skill>: <concern description>
|
|
697
|
-
```
|
|
698
|
-
|
|
699
|
-
**NEEDS_CONTEXT format**: State exactly what is unknown, why it blocks progress, and what the two most likely answers are (to help the user respond quickly).
|
|
700
|
-
|
|
701
|
-
**BLOCKED format**: Include the phase, the sub-skill that emitted BLOCKED, the specific blocker, and what was already attempted.
|
|
702
|
-
|
|
703
|
-
## Deviation Rules
|
|
704
|
-
|
|
705
|
-
When implementation diverges from plan:
|
|
706
|
-
|
|
707
|
-
| Rule | Scope | Action | Example |
|
|
708
|
-
|------|-------|--------|---------|
|
|
709
|
-
| R1: Bug fix | Code doesn't work as planned | Auto-fix, continue | Test fails due to typo, missing import |
|
|
710
|
-
| R2: Security fix | Vulnerability discovered | Auto-fix, continue | SQL injection, XSS, hardcoded secret |
|
|
711
|
-
| R3: Blocking fix | Can't proceed without change | Auto-fix, continue | Missing dependency, wrong API signature |
|
|
712
|
-
| R4: Architectural change | Different approach than planned | **ASK user first** | New database table, changed API contract, different library |
|
|
713
|
-
|
|
714
|
-
R1-R3: security primitives and correctness fixes are NOT features — fix silently.
|
|
715
|
-
R4: if you catch yourself thinking "this is a better way" — STOP and ask. The plan was approved for a reason.
|
|
716
|
-
|
|
717
|
-
## Error Recovery
|
|
718
|
-
|
|
719
|
-
| Phase | If this fails... | Do this... |
|
|
720
|
-
|-------|-----------------|------------|
|
|
721
|
-
| 1 UNDERSTAND | scout finds nothing relevant | Proceed with plan, note limited context |
|
|
722
|
-
| 2 PLAN | Task too complex | Break into smaller tasks, consider `rune:team` |
|
|
723
|
-
| 3 TEST | Can't write tests (no test framework) | Skip TDD, write tests after implementation |
|
|
724
|
-
| 4 IMPLEMENT | Fix hits repeated bugs | `rune:debug` (max 3 loops) → re-plan → if still blocked → **Approach Pivot Gate** → `rune:brainstorm(rescue)` |
|
|
725
|
-
| 5a PREFLIGHT | Logic issues found | Fix → re-run preflight |
|
|
726
|
-
| 5b SENTINEL | Security CRITICAL found | Fix immediately → re-run (mandatory) |
|
|
727
|
-
| 5c REVIEW | Code quality issues | Fix CRITICAL/HIGH → re-review (max 2 loops) |
|
|
728
|
-
| 6 VERIFY | Build/lint/type fails | Fix → re-run verification |
|
|
729
|
-
|
|
730
|
-
### Repair Operators (before escalation)
|
|
731
|
-
|
|
732
|
-
When a task fails during Phase 4 (IMPLEMENT):
|
|
733
|
-
|
|
734
|
-
| Operator | When | Action |
|
|
735
|
-
|----------|------|--------|
|
|
736
|
-
| **RETRY** | Transient failure (network, timeout, flaky test) | Re-run same approach, max 2 attempts |
|
|
737
|
-
| **DECOMPOSE** | Task too complex, partial progress | Split into 2-3 smaller tasks, continue |
|
|
738
|
-
| **PRUNE** | Approach fundamentally wrong | Remove failed code, try different approach from plan |
|
|
739
|
-
|
|
740
|
-
**Budget**: 2 repair attempts per task. After 2 failures → escalate:
|
|
741
|
-
- Same error both times → `debug` for root cause
|
|
742
|
-
- Different errors → `plan` to redesign the task
|
|
743
|
-
- All approaches exhausted → `brainstorm(rescue)` for alternative category
|
|
744
|
-
|
|
745
|
-
Do NOT ask user until repair budget is spent.
|
|
746
|
-
|
|
747
|
-
## Called By (inbound)
|
|
748
|
-
|
|
749
|
-
- User: `/rune cook` direct invocation — primary entry point
|
|
750
|
-
- `team` (L1): parallel workstream execution (meta-orchestration)
|
|
751
|
-
|
|
752
|
-
## Calls (outbound)
|
|
753
|
-
|
|
754
|
-
- `neural-memory` (external): Phase 0 (resume) + Phase 8 (complete) — Recall project context at start, capture learnings at end
|
|
755
|
-
- `sentinel-env` (L3): Phase 0.5 — environment pre-flight (first run only)
|
|
756
|
-
- `scout` (L2): Phase 1 — scan codebase before planning
|
|
757
|
-
- `onboard` (L2): Phase 1 — if no CLAUDE.md exists, initialize project context first
|
|
758
|
-
- `plan` (L2): Phase 2 — create implementation plan
|
|
759
|
-
- `brainstorm` (L2): Phase 2 — trade-off analysis when multiple approaches exist
|
|
760
|
-
- `design` (L2): Phase 2 — UI/design phase when building frontend features
|
|
761
|
-
- `adversary` (L2): Phase 2.5 — red-team challenge on approved plan before implementation
|
|
762
|
-
- `test` (L2): Phase 3 — write failing tests (RED phase)
|
|
763
|
-
- `fix` (L2): Phase 4 — implement code changes (GREEN phase)
|
|
764
|
-
- `debug` (L2): Phase 4 — when implementation hits unexpected errors (max 3 loops)
|
|
765
|
-
- `db` (L2): Phase 4 — when schema changes are detected in the diff
|
|
766
|
-
- `preflight` (L2): Phase 5a — logic and completeness review
|
|
767
|
-
- `sentinel` (L2): Phase 5b — security scan
|
|
768
|
-
- `review` (L2): Phase 5c — code quality review
|
|
769
|
-
- `perf` (L2): Phase 5 — performance regression check before PR (optional)
|
|
770
|
-
- `completion-gate` (L3): Phase 5d — validate agent claims against evidence trail
|
|
771
|
-
- `constraint-check` (L3): Phase 5 — audit HARD-GATE compliance across workflow
|
|
772
|
-
- `verification` (L3): Phase 6 — automated checks (lint, types, tests, build)
|
|
773
|
-
- `hallucination-guard` (L3): Phase 6 — verify imports and API calls are real
|
|
774
|
-
- `journal` (L3): Phase 7 — record architectural decisions made during feature
|
|
775
|
-
- `session-bridge` (L3): Phase 8 — save context for future sessions
|
|
776
|
-
- `audit` (L2): Phase 5 — project health audit when scope warrants it
|
|
777
|
-
- `review-intake` (L2): Phase 5 — structured review intake for complex PRs
|
|
778
|
-
- `sast` (L3): Phase 5 — static analysis security testing
|
|
779
|
-
- `skill-forge` (L2): when new skill creation detected during cook flow
|
|
780
|
-
- `worktree` (L3): Phase 4 — worktree isolation for parallel implementation
|
|
781
|
-
- L4 extension packs: Phase 1.5 — domain-specific patterns when stack matches (see Phase 1.5 mapping table)
|
|
782
|
-
|
|
783
|
-
## Data Flow
|
|
784
|
-
|
|
785
|
-
### Feeds Into →
|
|
786
|
-
|
|
787
|
-
- `journal` (L3): architectural decisions made during cook → ADR entries for future sessions
|
|
788
|
-
- `session-bridge` (L3): cook's context (plan, decisions, progress) → .rune/ state files for next session
|
|
789
|
-
- `neural-memory` (external): learnings from this cook run → persistent cross-session memory
|
|
790
|
-
|
|
791
|
-
### Fed By ←
|
|
792
|
-
|
|
793
|
-
- `ba` (L2): Requirements Document → cook's Phase 1 UNDERSTAND input
|
|
794
|
-
- `plan` (L2): master plan + phase files → cook's Phase 2-4 execution roadmap
|
|
795
|
-
- `session-bridge` (L3): .rune/.continue-here.md → cook's Phase 0 resume context
|
|
796
|
-
- `neural-memory` (external): past project decisions → cook's Phase 0 context recall
|
|
797
|
-
|
|
798
|
-
### Feedback Loops ↻
|
|
799
|
-
|
|
800
|
-
- `cook` ↔ `debug`: cook encounters bug during Phase 4 → debug diagnoses → cook resumes with fix. Debug may discover the plan is wrong → cook triggers Approach Pivot
|
|
801
|
-
- `cook` ↔ `test`: cook writes tests in Phase 3 (RED), implements in Phase 4 (GREEN), runs tests again → failures loop back to Phase 4 fix
|
|
802
|
-
|
|
803
|
-
## Analysis Paralysis Guard
|
|
804
|
-
|
|
805
|
-
<HARD-GATE>
|
|
806
|
-
5+ consecutive read-only tool calls (Read, Grep, Glob) without a single write action (Edit, Write, Bash) = STUCK.
|
|
807
|
-
|
|
808
|
-
You MUST either:
|
|
809
|
-
1. **Act** — write code, run a command, create a file
|
|
810
|
-
2. **Report BLOCKED** — state the specific missing piece: "Cannot proceed because [X]"
|
|
811
|
-
|
|
812
|
-
Stuck patterns (all banned):
|
|
813
|
-
- Reading 10+ files to "fully understand" before acting
|
|
814
|
-
- Grepping every variation of a string across the entire repo
|
|
815
|
-
- Reading the same file twice in one investigation
|
|
816
|
-
- "Let me check one more thing" — repeated after 5 reads
|
|
817
|
-
|
|
818
|
-
A wrong first attempt that produces feedback beats perfect understanding that never ships.
|
|
819
|
-
</HARD-GATE>
|
|
820
|
-
|
|
821
|
-
### Hash-Based Tool Loop Detection (Content-Aware)
|
|
822
|
-
|
|
823
|
-
The 5-read counter above catches obvious paralysis. This catches **same-input-same-output loops** — where the agent keeps calling the same tool with the same arguments and getting the same result, making zero progress.
|
|
824
|
-
|
|
825
|
-
**Detection logic** (conceptual — tracked mentally, not via actual SHA256):
|
|
826
|
-
|
|
827
|
-
```
|
|
828
|
-
For each tool call, track:
|
|
829
|
-
argsHash = fingerprint(tool_name + arguments)
|
|
830
|
-
resultHash = fingerprint(result content)
|
|
831
|
-
|
|
832
|
-
IF same argsHash AND same resultHash seen before:
|
|
833
|
-
consecutive_identical += 1
|
|
834
|
-
ELSE:
|
|
835
|
-
consecutive_identical = 0
|
|
836
|
-
|
|
837
|
-
Thresholds:
|
|
838
|
-
3 identical calls → WARN: "Loop detected — same tool, same args, same result 3x. Change approach."
|
|
839
|
-
5 identical calls → FORCE STOP: "True stuck loop. Must try different tool or different arguments."
|
|
840
|
-
```
|
|
841
|
-
|
|
842
|
-
**Key distinction**: retry-with-different-result is NOT a loop (e.g., re-running tests after a fix). Only same-input-AND-same-output counts.
|
|
843
|
-
|
|
844
|
-
> Source: goclaw (832★) — SHA256-based loop detection distinguishes true stuck loops from productive retries.
|
|
845
|
-
|
|
846
|
-
**Common loop patterns to catch**:
|
|
847
|
-
| Pattern | Looks Like | Actually |
|
|
848
|
-
|---------|-----------|----------|
|
|
849
|
-
| Re-reading same file after failed edit | `Read(file.ts)` → same content 3x | Agent forgot what it read — act on existing knowledge |
|
|
850
|
-
| Re-running same failing test without code change | `Bash(npm test)` → same failure 3x | No code was changed between runs — fix first, then test |
|
|
851
|
-
| Grepping same pattern across different paths | `Grep("pattern", src/)` → `Grep("pattern", lib/)` → same 0 results | Pattern doesn't exist — change search terms |
|
|
852
|
-
|
|
853
|
-
## Constraints
|
|
854
|
-
|
|
855
|
-
1. MUST run scout before planning — no plan based on assumptions alone
|
|
856
|
-
2. MUST present plan to user and get approval before writing code
|
|
857
|
-
3. MUST write failing tests before implementation (TDD) unless explicitly skipped by user
|
|
858
|
-
4. MUST NOT commit with failing tests — fix or revert first
|
|
859
|
-
5. MUST NOT modify files outside the approved plan scope without user confirmation
|
|
860
|
-
6. MUST run verification (lint + type-check + tests + build) before commit — not optional
|
|
861
|
-
7. MUST NOT say "all tests pass" without showing the actual test output
|
|
862
|
-
8. MUST NOT contradict active decisions from `.rune/decisions.md` without explicit user override — if the plan conflicts with a prior decision, flag it and ask user before proceeding
|
|
863
|
-
|
|
864
|
-
## Mesh Gates
|
|
865
|
-
|
|
866
|
-
| Gate | Requires | If Missing |
|
|
867
|
-
|------|----------|------------|
|
|
868
|
-
| Resume Gate | Phase 0 checks for existing master plan before starting | Proceed to Phase 1 if no plan exists |
|
|
869
|
-
| Scout Gate | scout output (files examined, patterns found) before Phase 2 | Invoke rune:scout first |
|
|
870
|
-
| Plan Gate | User-approved plan with file paths before Phase 3 | Cannot proceed to TEST |
|
|
871
|
-
| Adversary Gate | adversary verdict (PROCEED/HARDEN) before Phase 3 for features | Skip for bugfix/hotfix/refactor/fast-mode |
|
|
872
|
-
| Phase File Gate | Current phase file loaded (not full plan) for multi-session | Load only the active phase file |
|
|
873
|
-
| Test-First Gate | Failing tests exist before Phase 4 IMPLEMENT | Write tests first or get explicit skip from user |
|
|
874
|
-
| Quality Gate | preflight + sentinel + review passed before Phase 7 COMMIT | Fix findings, re-run |
|
|
875
|
-
| Verification Gate | lint + types + tests + build all green before commit | Fix failures, re-run |
|
|
876
|
-
|
|
877
|
-
## Output Format
|
|
878
|
-
|
|
879
|
-
```
|
|
880
|
-
## Cook Report: [Task Name]
|
|
881
|
-
- **Status**: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
|
|
882
|
-
- **Phases**: [list of completed phases]
|
|
883
|
-
- **Files Changed**: [count] ([list])
|
|
884
|
-
- **Tests**: [passed]/[total] ([coverage]%)
|
|
885
|
-
- **Quality**: preflight [PASS/WARN] | sentinel [PASS/WARN] | review [PASS/WARN]
|
|
886
|
-
- **Commit**: [hash] — [message]
|
|
887
|
-
|
|
888
|
-
### Deliverables (NEXUS response — when invoked by team)
|
|
889
|
-
| # | Deliverable | Status | Evidence |
|
|
890
|
-
|---|-------------|--------|----------|
|
|
891
|
-
| 1 | [from handoff] | DELIVERED | [file path or test output quote] |
|
|
892
|
-
| 2 | [from handoff] | DELIVERED | [file path or test output quote] |
|
|
893
|
-
| 3 | [from handoff] | PARTIAL | [what's missing and why] |
|
|
894
|
-
|
|
895
|
-
### Concerns (if DONE_WITH_CONCERNS)
|
|
896
|
-
- [concern]: [impact assessment] — [suggested remediation]
|
|
897
|
-
|
|
898
|
-
### Decisions Made
|
|
899
|
-
- [decision]: [rationale]
|
|
900
|
-
|
|
901
|
-
### Session State
|
|
902
|
-
- Saved to .rune/decisions.md
|
|
903
|
-
- Saved to .rune/progress.md
|
|
904
|
-
```
|
|
905
|
-
|
|
906
|
-
> When cook is invoked standalone (not by team), the Deliverables table is optional. When invoked by team with a NEXUS Handoff, the Deliverables table is MANDATORY — team uses it to track acceptance criteria across streams.
|
|
907
|
-
|
|
908
|
-
## Sharp Edges
|
|
909
|
-
|
|
910
|
-
Known failure modes for this skill. Check these before declaring done.
|
|
911
|
-
|
|
912
|
-
| Failure Mode | Severity | Mitigation |
|
|
913
|
-
|---|---|---|
|
|
914
|
-
| Skipping scout to "save time" on a simple task | CRITICAL | Scout Gate blocks this — Phase 1 is mandatory regardless of perceived simplicity |
|
|
915
|
-
| Writing code without user-approved plan | HIGH | Plan Gate: do NOT proceed to Phase 3 without explicit approval ("go", "proceed", "yes") |
|
|
916
|
-
| Claiming "all tests pass" without showing output | HIGH | Constraint 7 blocks this — show actual test runner output via completion-gate |
|
|
917
|
-
| Entering debug↔fix loop more than 3 times without escalating | MEDIUM | After 3 loops → re-plan → if still blocked → Approach Pivot Gate → brainstorm(rescue) |
|
|
918
|
-
| Surrendering "no solution" without triggering Approach Pivot Gate | CRITICAL | MUST invoke brainstorm(rescue) before telling user "can't be done" — pivot to different category first |
|
|
919
|
-
| Re-planning with the same approach category after it fundamentally failed | HIGH | Re-plan = revise steps within same approach. If CATEGORY is wrong → Approach Pivot Gate, not re-plan |
|
|
920
|
-
| Not escalating to sentinel:opus on security-sensitive tasks | MEDIUM | Auth, crypto, payment code → sentinel must run at opus, not sonnet |
|
|
921
|
-
| Running Phase 5 checks sequentially instead of parallel | MEDIUM | Launch preflight+sentinel+review as parallel Task agents for speed |
|
|
922
|
-
| Saying "done" without evidence trail | CRITICAL | completion-gate validates claims — UNCONFIRMED = BLOCK |
|
|
923
|
-
| Analysis paralysis — 5+ reads without writing | HIGH | Analysis Paralysis Guard: act on incomplete info or report BLOCKED with specific missing piece |
|
|
924
|
-
| Fast mode on security-relevant code | HIGH | Fast mode auto-excludes auth/crypto/payments — never fast-track security code |
|
|
925
|
-
| Loading all phase files at once into context | HIGH | Phase File Gate: load ONLY the active phase file — one phase per session |
|
|
926
|
-
| Resuming without checking master plan | MEDIUM | Phase 0 (RESUME CHECK) runs before Phase 1 — detects existing plans |
|
|
927
|
-
| Treating user "stop"/"cancel" as scope change | CRITICAL | Mid-Run Signal Detection: Cancel/Pause are safety signals with absolute priority — never reinterpret as Steer or NewTask |
|
|
928
|
-
| Same tool+args+result called 3+ times without progress | HIGH | Hash-Based Loop Detection: 3x warn, 5x force stop. Only same-input-AND-same-output counts — retries with different results are fine |
|
|
929
|
-
| Ignoring mid-run user messages during autonomous execution | HIGH | Two-stage intent classification: keyword fast-path for simple signals, context classification for longer messages. Never queue user messages — process immediately |
|
|
930
|
-
| Breaking change shipped without RFC review | CRITICAL | Phase 2.5 RFC Gate: any breaking change MUST have RFC artifact + user approval before implementation |
|
|
931
|
-
| Runaway fix loop — fix introduces more bugs than it resolves | HIGH | fix v0.5.0 WTF-likelihood self-regulation: >20% decay = STOP. Hard cap 30 fixes/session via MAX_FIXES exit condition. Regressions +15%, blast radius +5%/file |
|
|
932
|
-
|
|
933
|
-
## Self-Validation
|
|
934
|
-
|
|
935
|
-
```
|
|
936
|
-
SELF-VALIDATION (run before emitting Cook Report):
|
|
937
|
-
- [ ] Every phase in Phase Skip Rules was either executed or explicitly skipped with reason
|
|
938
|
-
- [ ] Plan approval gate was not bypassed — user said "go" (check conversation history)
|
|
939
|
-
- [ ] No Phase 4 code was written before Phase 3 tests (TDD order preserved)
|
|
940
|
-
- [ ] All Phase 5 quality gates (preflight, sentinel, review) ran — not just claimed
|
|
941
|
-
- [ ] Cook Report contains actual commit hash, not placeholder
|
|
942
|
-
```
|
|
943
|
-
|
|
944
|
-
## Done When
|
|
945
|
-
|
|
946
|
-
- All applicable phases complete per Phase Skip Rules (determined before starting)
|
|
947
|
-
- User has approved the plan (Phase 2 gate — explicit "go" received)
|
|
948
|
-
- All tests PASS — actual test runner output shown
|
|
949
|
-
- preflight + sentinel + review all PASS or findings addressed
|
|
950
|
-
- verification (lint + types + build) green
|
|
951
|
-
- Commit created with semantic message
|
|
952
|
-
- Cook Report emitted with commit hash and phase list
|
|
953
|
-
- Session state saved to .rune/ via session-bridge
|
|
954
|
-
- Self-Validation: all checks passed
|
|
955
|
-
|
|
956
|
-
## Cost Profile
|
|
957
|
-
|
|
958
|
-
~$0.05-0.15 per feature. Haiku for scanning (Phase 1), sonnet for coding (Phase 3-4), opus for complex planning (Phase 2 when needed).
|
|
1
|
+
---
|
|
2
|
+
name: cook
|
|
3
|
+
description: "Feature implementation orchestrator. ALWAYS use this skill for ANY code change — implement, build, add feature, create, fix bug, or any task that modifies source code. This is the default route for 70% of all requests. Runs full TDD cycle: understand → plan → test → implement → quality → verify → commit."
|
|
4
|
+
context: fork
|
|
5
|
+
agent: general-purpose
|
|
6
|
+
metadata:
|
|
7
|
+
author: runedev
|
|
8
|
+
version: "1.7.0"
|
|
9
|
+
layer: L1
|
|
10
|
+
model: sonnet
|
|
11
|
+
group: orchestrator
|
|
12
|
+
tools: "Read, Write, Edit, Bash, Glob, Grep"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# cook
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
The primary orchestrator for feature implementation. Coordinates the entire L2 mesh in a phased TDD workflow. Handles 70% of all user requests — any task that modifies source code routes through cook.
|
|
20
|
+
|
|
21
|
+
<HARD-GATE>
|
|
22
|
+
Before starting ANY implementation:
|
|
23
|
+
1. You MUST understand the codebase first (Phase 1)
|
|
24
|
+
2. You MUST have a plan before writing code (Phase 2)
|
|
25
|
+
3. You MUST write failing tests before implementation (Phase 3) — unless explicitly skipped
|
|
26
|
+
This applies to EVERY feature regardless of perceived simplicity.
|
|
27
|
+
</HARD-GATE>
|
|
28
|
+
|
|
29
|
+
## Workflow Chains (Predefined)
|
|
30
|
+
|
|
31
|
+
Cook supports predefined workflow chains for common task types. Use these as shortcuts instead of manually determining phases:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
/rune cook feature → Full TDD pipeline (all phases)
|
|
35
|
+
/rune cook bugfix → Diagnose → fix → verify (Phase 1 → 4 → 6 → 7)
|
|
36
|
+
/rune cook refactor → Understand → plan → implement → quality (Phase 1 → 2 → 4 → 5 → 6 → 7)
|
|
37
|
+
/rune cook security → Full pipeline + sentinel@opus + sast (all phases, security-escalated)
|
|
38
|
+
/rune cook hotfix → Minimal: fix → verify → commit (Phase 4 → 6 → 7, skip scout if user provides context)
|
|
39
|
+
/rune cook nano → Trivial: do → verify → done (no phases, ≤3 steps)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Chain selection**: If user invokes `/rune cook` without a chain type, auto-detect from the task description:
|
|
43
|
+
- Contains "bug", "fix", "broken", "error" → `bugfix`
|
|
44
|
+
- Contains "refactor", "clean", "restructure" → `refactor`
|
|
45
|
+
- Contains "security", "auth", "vulnerability", "CVE" → `security`
|
|
46
|
+
- Contains "urgent", "hotfix", "production" → `hotfix`
|
|
47
|
+
- Contains "quick", "just", "chỉ cần", "copy", "move", "rename", "bump" → `nano`
|
|
48
|
+
- Default → `feature`
|
|
49
|
+
|
|
50
|
+
## Phase Skip Rules
|
|
51
|
+
|
|
52
|
+
Not every task needs every phase:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Nano task: DO → VERIFY → DONE (no phases, auto-detected)
|
|
56
|
+
Simple bug fix: Phase 1 → 4 → 6 → 7
|
|
57
|
+
Small refactor: Phase 1 → 4 → 5 → 6 → 7
|
|
58
|
+
New feature: Phase 1 → 1.5 → 2 → 3 → 4 → 5 → 6 → 7 → 8
|
|
59
|
+
Complex feature: All phases + brainstorm in Phase 2
|
|
60
|
+
Security-sensitive: All phases + sentinel escalated to opus
|
|
61
|
+
Fast mode: Phase 1 → 4 → 6 → 7 (auto-detected, see below)
|
|
62
|
+
Multi-session: Phase 0 (resume) → 3 → 4 → 5 → 6 → 7 (one plan phase per session)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Determine complexity BEFORE starting using the Rigor Assessment below. Create TodoWrite with applicable phases.
|
|
66
|
+
|
|
67
|
+
### Rigor Assessment (Progressive Scaling)
|
|
68
|
+
|
|
69
|
+
Before selecting a workflow chain or phase set, compute the task's **rigor level** from risk signals. This prevents over-engineering trivial changes while ensuring full ceremony for critical ones.
|
|
70
|
+
|
|
71
|
+
| Risk Signal | Weight | Detection |
|
|
72
|
+
|-------------|--------|-----------|
|
|
73
|
+
| Files affected: 1 | 0 | Estimate from task description + scout |
|
|
74
|
+
| Files affected: 2-3 | +1 | |
|
|
75
|
+
| Files affected: 4+ | +3 | |
|
|
76
|
+
| Cross-module impact (changes span 2+ directories) | +2 | scout identifies touch points across boundaries |
|
|
77
|
+
| Security-sensitive code (auth, crypto, payments, secrets) | +3 | Keyword match in file paths or task description |
|
|
78
|
+
| Public API change (exports, routes, schema) | +2 | Task modifies interfaces consumed by external code |
|
|
79
|
+
| Database schema change | +2 | Task mentions migration, schema, ALTER, column |
|
|
80
|
+
| New dependency added | +1 | Task requires `npm install` or equivalent |
|
|
81
|
+
| Code will be imported by other modules | +1 | New exports or modifications to shared utilities |
|
|
82
|
+
|
|
83
|
+
**Rigor level mapping:**
|
|
84
|
+
|
|
85
|
+
| Score | Level | Maps To | Phases |
|
|
86
|
+
|-------|-------|---------|--------|
|
|
87
|
+
| 0 | Nano | `nano` chain | DO → VERIFY → DONE |
|
|
88
|
+
| 1-2 | Fast | `fast` mode | Phase 1 → 4 → 6 → 7 |
|
|
89
|
+
| 3-5 | Standard | `bugfix` / `refactor` | Phase 1 → 2 → 4 → 5 → 6 → 7 |
|
|
90
|
+
| 6-8 | Full | `feature` | Phase 1 → 1.5 → 2 → 3 → 4 → 5 → 6 → 7 → 8 |
|
|
91
|
+
| 9+ | Critical | `security` / full + adversary | All phases + sentinel@opus + adversary |
|
|
92
|
+
|
|
93
|
+
**Rules:**
|
|
94
|
+
- Security signal (+3) automatically floors rigor at Standard — NEVER nano/fast for security code
|
|
95
|
+
- User can override: "full pipeline" forces Full, "just do it" forces Nano
|
|
96
|
+
- If rigor upgrades mid-task (e.g., scout reveals cross-module impact not obvious from description), announce: "Rigor upgrade: [signal detected] — upgrading from Fast to Standard."
|
|
97
|
+
- Announce chosen level: "Rigor: Fast (score 2 — single file, no security)"
|
|
98
|
+
|
|
99
|
+
## Nano Mode (Auto-Detect)
|
|
100
|
+
|
|
101
|
+
For trivial tasks that don't need any pipeline at all:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
IF all of these are true:
|
|
105
|
+
- Task is ≤3 discrete steps (e.g., run command, edit 1 file, commit)
|
|
106
|
+
- Task description < 60 chars OR user prefixes with "quick:", "just", "chỉ cần"
|
|
107
|
+
- No code logic changes (copy files, config edits, version bumps, git ops, run scripts)
|
|
108
|
+
- No new functions/classes/components created
|
|
109
|
+
THEN: Nano Mode activated
|
|
110
|
+
- Execute directly: DO → VERIFY → DONE
|
|
111
|
+
- No phases. No plan. No test. No review.
|
|
112
|
+
- Still verify output (check exit codes, confirm file exists, etc.)
|
|
113
|
+
- Still use semantic commit message if committing
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Announce**: "Nano mode: trivial task, executing directly."
|
|
117
|
+
**Override**: User can say "full pipeline" or "cook feature" to force phases.
|
|
118
|
+
**Escape hatch**: If during execution the task turns out more complex than expected → announce upgrade: "Upgrading to Fast/Full mode — task is more complex than detected." Resume from Phase 1.
|
|
119
|
+
|
|
120
|
+
<HARD-GATE>
|
|
121
|
+
Nano mode MUST NOT be used for:
|
|
122
|
+
- Any code that will be imported/called by other code
|
|
123
|
+
- Security-relevant files (auth, crypto, payments, .env, secrets)
|
|
124
|
+
- Database schema changes
|
|
125
|
+
- Public API changes
|
|
126
|
+
If any of these are detected mid-task, STOP and upgrade to Fast/Full mode.
|
|
127
|
+
</HARD-GATE>
|
|
128
|
+
|
|
129
|
+
## Fast Mode (Auto-Detect)
|
|
130
|
+
|
|
131
|
+
Cook auto-detects small changes and streamlines the pipeline:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
IF all of these are true:
|
|
135
|
+
- Total estimated change < 30 LOC
|
|
136
|
+
- Single file affected
|
|
137
|
+
- No security-relevant code (auth, crypto, payments, .env)
|
|
138
|
+
- No public API changes
|
|
139
|
+
- No database schema changes
|
|
140
|
+
THEN: Fast Mode activated
|
|
141
|
+
- Skip Phase 2 (PLAN) — change is too small for a formal plan
|
|
142
|
+
- Skip Phase 3 (TEST) — unless existing tests cover the area
|
|
143
|
+
- Skip Phase 5b (SENTINEL) — non-security code
|
|
144
|
+
- Skip Phase 8 (BRIDGE) — not worth persisting
|
|
145
|
+
- KEEP Phase 5a (PREFLIGHT) and Phase 6 (VERIFY) — always run quality checks
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Announce fast mode**: "Fast mode: small change detected (<30 LOC, single file, non-security). Streamlined pipeline."
|
|
149
|
+
**Override**: User can say "full pipeline" to force all phases even on small changes.
|
|
150
|
+
|
|
151
|
+
## Phase 0.5: ENVIRONMENT CHECK (First Run Only)
|
|
152
|
+
|
|
153
|
+
**SUB-SKILL**: Use `rune:sentinel-env` — verify the environment can run the project before planning.
|
|
154
|
+
|
|
155
|
+
Auto-trigger: no `.rune/` dir (first run) OR build just failed with env-looking errors AND NOT fast mode. Skip silently on subsequent runs. Force with `/rune env-check`.
|
|
156
|
+
|
|
157
|
+
## Phase 1: UNDERSTAND
|
|
158
|
+
|
|
159
|
+
**Goal**: Know what exists before changing anything.
|
|
160
|
+
|
|
161
|
+
**REQUIRED SUB-SKILLS**: Use `rune:scout`. For non-trivial tasks, use `rune:ba`.
|
|
162
|
+
|
|
163
|
+
1. Create TodoWrite with all applicable phases for this task
|
|
164
|
+
2. Mark Phase 1 as `in_progress`
|
|
165
|
+
3. **BA gate**: Feature Request / Integration / Greenfield → invoke `rune:ba`. Task > 50 words or business terms (users, revenue, workflow) → invoke `rune:ba`. Bug Fix / simple Refactor → skip. BA produces `.rune/features/<name>/requirements.md` for Phase 2.
|
|
166
|
+
4. **Decision enforcement**: `Glob` for `.rune/decisions.md`; if exists, `Read` + extract constraints for Phase 2. Plan MUST NOT contradict active decisions without explicit user override.
|
|
167
|
+
|
|
168
|
+
### Phase 1 Step 3.5 — Clarification Gate
|
|
169
|
+
|
|
170
|
+
Ask **2 questions** before planning: (1) "What does success look like?" (2) "What should NOT change?"
|
|
171
|
+
|
|
172
|
+
Skip if: bug fix with clear repro steps | user said "just do it" | fast mode + <10 LOC | hotfix chain active. Complexity revealed → escalate to `rune:ba`.
|
|
173
|
+
|
|
174
|
+
5. Invoke scout to scan the codebase (Glob + Grep + Read on relevant files)
|
|
175
|
+
6. Summarize: what exists, project conventions, files likely to change, active decision constraints
|
|
176
|
+
7. **Python async detection**: if Python project detected, `Grep` for async indicators (`async def`, `await`, `aiosqlite`, `aiohttp`, `asyncio.run`). If ≥3 matches → flag as **"async-first Python"** — new code defaults to `async def`
|
|
177
|
+
8. Mark Phase 1 as `completed`
|
|
178
|
+
|
|
179
|
+
**Gate**: If scout finds the feature already exists → STOP and inform user.
|
|
180
|
+
|
|
181
|
+
## Phase 1.5: DOMAIN CONTEXT (L4 Pack Detection)
|
|
182
|
+
|
|
183
|
+
**Goal**: Detect if domain-specific L4 extension packs apply to this task.
|
|
184
|
+
|
|
185
|
+
<MUST-READ path="references/pack-detection.md" trigger="Phase 1.5 — before checking L4 pack mapping"/>
|
|
186
|
+
|
|
187
|
+
After scout completes, check if the detected tech stack or task description matches any L4 extension pack. This phase is lightweight — a Read + pattern match. It does NOT replace Phase 1 (scout) or Phase 2 (plan). If 0 packs match: skip silently.
|
|
188
|
+
|
|
189
|
+
## Phase 1.7: WORKFLOW ORCHESTRATION (Multi-Skill Sequences)
|
|
190
|
+
|
|
191
|
+
**Goal**: If Phase 1.5 detected a pack AND the task maps to a named workflow, orchestrate the multi-skill sequence.
|
|
192
|
+
|
|
193
|
+
**Trigger**: Only runs if Phase 1.5 found a pack match AND the pack's Workflows table has a matching command.
|
|
194
|
+
|
|
195
|
+
<MUST-READ path="references/pack-detection.md" trigger="Phase 1.7 — workflow command detection section"/>
|
|
196
|
+
|
|
197
|
+
1. Read the matched PACK.md's Workflows section
|
|
198
|
+
2. Identify the workflow name and skill sequence
|
|
199
|
+
3. For each skill in sequence:
|
|
200
|
+
a. Load the skill file from the pack's `skills/` directory
|
|
201
|
+
b. Execute the skill's workflow steps
|
|
202
|
+
c. Write output artifact to `.rune/<domain>/` (e.g., `.rune/hr/jd-[role]-[date].md`)
|
|
203
|
+
d. The next skill reads the previous artifact as input context
|
|
204
|
+
4. After all skills complete: summarize the workflow results to the user
|
|
205
|
+
|
|
206
|
+
**Threading state**: Each skill in the sequence produces an artifact file. The next skill's Step 1 reads existing artifacts from `.rune/<domain>/`. This is already built into each skill — no new plumbing needed.
|
|
207
|
+
|
|
208
|
+
**Skip if**: No workflow match found in Phase 1.5. Single-skill tasks proceed directly to Phase 2 (PLAN) as normal.
|
|
209
|
+
|
|
210
|
+
## Phase 0: RESUME CHECK (Before Phase 1)
|
|
211
|
+
|
|
212
|
+
**Goal**: Detect if a master plan already exists for this task. If so, skip Phase 1-2 and resume from the current phase.
|
|
213
|
+
|
|
214
|
+
**Step 0.5 — Cross-Project Recall**: Call `neural-memory` (Recall Mode) with 3-5 topics relevant to the current task. Always prefix queries with the project name (e.g., `"ProjectName auth pattern"` not `"auth pattern"`).
|
|
215
|
+
|
|
216
|
+
1. Use `Glob` to check for `.rune/plan-*.md` files
|
|
217
|
+
2. If a master plan exists matching the current task: Read it → find first `⬚ Pending` or `🔄 Active` phase → load ONLY that phase file → announce "Resuming from Phase N" → skip to Phase 4
|
|
218
|
+
3. If no master plan exists → proceed to Phase 1 as normal
|
|
219
|
+
|
|
220
|
+
**This enables multi-session workflows**: Opus plans once → each session picks up the next phase.
|
|
221
|
+
|
|
222
|
+
## Phase 2: PLAN
|
|
223
|
+
|
|
224
|
+
**Goal**: Break the task into concrete implementation steps before writing code.
|
|
225
|
+
|
|
226
|
+
**REQUIRED SUB-SKILL**: Use `rune:plan`
|
|
227
|
+
|
|
228
|
+
1. Mark Phase 2 as `in_progress`
|
|
229
|
+
2. **Feature workspace** (opt-in) — for non-trivial features (3+ phases), suggest creating `.rune/features/<feature-name>/` with `spec.md`, `plan.md`, `decisions.md`, `status.md`. Skip for simple bug fixes, fast mode.
|
|
230
|
+
3. Create implementation plan: exact files to create/modify, change order, dependencies, active decision constraints
|
|
231
|
+
4. If multiple valid approaches exist → invoke `rune:brainstorm` for trade-off analysis
|
|
232
|
+
5. Present plan to user for approval
|
|
233
|
+
6. If feature workspace was created, write approved plan to `.rune/features/<name>/plan.md`
|
|
234
|
+
7. Mark Phase 2 as `completed`
|
|
235
|
+
|
|
236
|
+
**Gate**: User MUST approve the plan before proceeding. Do NOT skip this.
|
|
237
|
+
|
|
238
|
+
### Phase 2.5: RFC GATE (Breaking Changes Only)
|
|
239
|
+
|
|
240
|
+
**Goal**: Formal change management for breaking changes. Prevents unreviewed breaking changes from reaching production.
|
|
241
|
+
|
|
242
|
+
<MUST-READ path="references/rfc-template.md" trigger="Phase 2.5 — any time a breaking change is detected in the plan"/>
|
|
243
|
+
|
|
244
|
+
<HARD-GATE>
|
|
245
|
+
Breaking change without RFC = BLOCKED. No exceptions.
|
|
246
|
+
"It's just a small change" is the #1 excuse for production incidents from unreviewed breaking changes.
|
|
247
|
+
</HARD-GATE>
|
|
248
|
+
|
|
249
|
+
### Phase 2.5: ADVERSARY (Red-Team Challenge)
|
|
250
|
+
|
|
251
|
+
**Goal**: Stress-test the approved plan BEFORE writing code — catch flaws at plan time, not implementation time.
|
|
252
|
+
|
|
253
|
+
**REQUIRED SUB-SKILL**: Use `rune:adversary`
|
|
254
|
+
|
|
255
|
+
1. **Skip conditions**: bug fixes, hotfixes, simple refactors (< 3 files, no new logic), fast mode
|
|
256
|
+
2. **Run adversary** — Full Red-Team mode for new features/architectural changes; Quick Challenge mode for smaller plans
|
|
257
|
+
3. **Handle verdict**:
|
|
258
|
+
- **REVISE** → return to Phase 2 with adversary findings as constraints; user must re-approve
|
|
259
|
+
- **HARDEN** → present remediations, update plan inline, then proceed to Phase 3
|
|
260
|
+
- **PROCEED** → pass findings as implementation notes to Phase 3
|
|
261
|
+
4. **Max 1 REVISE loop** per cook session — if revised plan also gets REVISE, ask user to decide
|
|
262
|
+
|
|
263
|
+
### Phase-Aware Execution (Master Plan + Phase Files)
|
|
264
|
+
|
|
265
|
+
When `rune:plan` produces a **master plan + phase files** (non-trivial tasks):
|
|
266
|
+
|
|
267
|
+
1. After plan approval: load ONLY Phase 1's file — do NOT load all phase files
|
|
268
|
+
2. Execute through cook Phase 3-6 (test → implement → quality → verify)
|
|
269
|
+
3. After phase complete: mark tasks done, update master plan status `⬚ → ✅`, announce "Phase N complete. Phase N+1 ready for next session."
|
|
270
|
+
4. Next session: Phase 0 detects master plan → loads next phase → executes
|
|
271
|
+
|
|
272
|
+
<HARD-GATE>
|
|
273
|
+
NEVER load multiple phase files at once. One phase per session = small context = better code.
|
|
274
|
+
If the coder model needs info from other phases, it's in the Cross-Phase Context section of the current phase file.
|
|
275
|
+
</HARD-GATE>
|
|
276
|
+
|
|
277
|
+
## Phase 3: TEST (TDD Red)
|
|
278
|
+
|
|
279
|
+
**Goal**: Define expected behavior with failing tests BEFORE writing implementation.
|
|
280
|
+
|
|
281
|
+
**REQUIRED SUB-SKILL**: Use `rune:test`
|
|
282
|
+
|
|
283
|
+
1. Mark Phase 3 as `in_progress`
|
|
284
|
+
2. **Eval definitions** (Full/Critical rigor only): Before writing tests, define capability evals (pass@k) and regression evals (pass^k) in `.rune/evals/<feature>.md`. Capability evals test "can the system do this new thing?" — regression evals test "did we break existing behavior?" Skip for Fast/Standard rigor levels.
|
|
285
|
+
3. Write test files based on the plan — cover primary use case + edge cases; tests MUST be runnable
|
|
286
|
+
4. **Python async pre-check** (if async-first Python flagged in Phase 1): verify `pytest-asyncio` is installed and `asyncio_mode = "auto"` is in `pyproject.toml` — if missing, warn user before writing async tests
|
|
287
|
+
5. Run tests to verify they FAIL — expected: RED because implementation doesn't exist yet
|
|
288
|
+
6. Mark Phase 3 as `completed`
|
|
289
|
+
|
|
290
|
+
**Gate**: Tests MUST exist and MUST fail. If tests pass without implementation → tests are wrong, rewrite them.
|
|
291
|
+
|
|
292
|
+
## Phase 4: IMPLEMENT (TDD Green)
|
|
293
|
+
|
|
294
|
+
**Goal**: Write the minimum code to make tests pass.
|
|
295
|
+
|
|
296
|
+
**REQUIRED SUB-SKILL**: Use `rune:fix`
|
|
297
|
+
|
|
298
|
+
1. Mark Phase 4 as `in_progress`
|
|
299
|
+
2. **Phase-file execution** — if working from a master plan + phase file:
|
|
300
|
+
- Execute tasks from `## Tasks` section wave-by-wave
|
|
301
|
+
- Wave N only starts after ALL Wave N-1 tasks complete
|
|
302
|
+
- Follow Code Contracts, Rejection Criteria, Failure Scenarios from the phase file
|
|
303
|
+
- Mark each task `[x]` as completed
|
|
304
|
+
3. Implement the feature following the plan (Write for new files, Edit for existing)
|
|
305
|
+
4. Run tests after each significant change — if fail → debug and fix
|
|
306
|
+
- **Python async** (if async-first flagged): no blocking calls in async functions — `time.sleep` → `asyncio.sleep`, `requests` → `httpx.AsyncClient`, use `asyncio.gather()` for parallel I/O
|
|
307
|
+
5. If stuck → invoke `rune:debug` (max 3 debug↔fix loops). Fixes outside plan scope require user approval (R4).
|
|
308
|
+
6. **Re-plan check** — evaluate before Phase 5: max debug loops hit? out-of-scope files changed? new dep changes approach? user scope change? If any fire → invoke `rune:plan` with delta context, get user approval before resuming.
|
|
309
|
+
7. **Approach Pivot Gate** — if re-plan ALSO fails:
|
|
310
|
+
|
|
311
|
+
<HARD-GATE>
|
|
312
|
+
Do NOT surrender. Do NOT tell user "no solution exists."
|
|
313
|
+
Do NOT try a 4th variant of the same approach.
|
|
314
|
+
MUST invoke brainstorm(mode="rescue") before giving up.
|
|
315
|
+
</HARD-GATE>
|
|
316
|
+
|
|
317
|
+
Invoke `rune:brainstorm(mode="rescue")` with `failed_approach`, `failure_evidence[]`, `original_goal`. Returns 3-5 alternatives → user picks → **restart from Phase 2**.
|
|
318
|
+
|
|
319
|
+
8. All tests MUST pass before proceeding
|
|
320
|
+
9. Mark Phase 4 as `completed`
|
|
321
|
+
|
|
322
|
+
**Gate**: ALL tests from Phase 3 MUST pass. Do NOT proceed with failing tests.
|
|
323
|
+
|
|
324
|
+
## Phase 5: QUALITY (Staged)
|
|
325
|
+
|
|
326
|
+
**Goal**: Catch issues before they reach production.
|
|
327
|
+
|
|
328
|
+
Quality checks run in **two stages** — spec compliance gates code review. Reviewing code quality before verifying it matches the spec wastes effort on code that may need rewriting.
|
|
329
|
+
|
|
330
|
+
```
|
|
331
|
+
STAGE 1 (parallel):
|
|
332
|
+
Launch 5a (preflight) + 5b (sentinel) simultaneously.
|
|
333
|
+
Wait for BOTH to complete.
|
|
334
|
+
If 5a returns BLOCK → fix spec gaps, re-run 5a. Code review CANNOT start on non-compliant code.
|
|
335
|
+
If 5b returns BLOCK → fix security issue, re-run 5b.
|
|
336
|
+
|
|
337
|
+
STAGE 2 (after Stage 1 passes):
|
|
338
|
+
Launch 5c (review) + 5d (completion-gate) simultaneously.
|
|
339
|
+
If any returns BLOCK → fix findings, re-run the blocking check only.
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### 5a. Preflight (Spec Compliance + Logic) — STAGE 1
|
|
343
|
+
**REQUIRED SUB-SKILL**: Use `rune:preflight`
|
|
344
|
+
- Spec compliance: compare approved plan vs actual diff
|
|
345
|
+
- Logic review, error handling, completeness
|
|
346
|
+
- **Must pass before 5c (review) can start** — no point reviewing code quality if it doesn't match the spec
|
|
347
|
+
|
|
348
|
+
### 5b. Security — STAGE 1
|
|
349
|
+
**REQUIRED SUB-SKILL**: Use `rune:sentinel`
|
|
350
|
+
- Secret scan, OWASP check (no injection/XSS/CSRF), dependency audit
|
|
351
|
+
|
|
352
|
+
### 5c. Code Review — STAGE 2
|
|
353
|
+
**REQUIRED SUB-SKILL**: Use `rune:review`
|
|
354
|
+
- Pattern compliance, code quality, performance bottlenecks
|
|
355
|
+
- Reviewer reads code independently — does NOT rely on implementer's claims
|
|
356
|
+
- **Reviewer isolation** (when invoked via `team`): The review agent MUST be a separate context window from the implementing agent. Author reasoning contaminates review — the reviewer should never have seen the implementation's reasoning chain. Sonnet implements, a fresh Sonnet reviews.
|
|
357
|
+
|
|
358
|
+
### 5d. Completion Gate — STAGE 2
|
|
359
|
+
**REQUIRED SUB-SKILL**: Use `rune:completion-gate`
|
|
360
|
+
- Validate agent claims match evidence trail (tests ran, files changed, build passed)
|
|
361
|
+
- No truncated code files (`// ...`, `// rest of code`, bare ellipsis) — agent MUST complete all output
|
|
362
|
+
- Any UNCONFIRMED claim → BLOCK
|
|
363
|
+
|
|
364
|
+
**Gate**: If sentinel finds CRITICAL security issue → STOP, fix it, re-run. Non-negotiable.
|
|
365
|
+
**Gate**: If completion-gate finds UNCONFIRMED claim → STOP, re-verify. Non-negotiable.
|
|
366
|
+
|
|
367
|
+
## Per-Phase Rules (Project-Specific)
|
|
368
|
+
|
|
369
|
+
Projects can define phase-specific rules in `.rune/phase-rules.md` that apply ONLY during specific cook phases. These are additive — they enhance skill guidance, not replace it.
|
|
370
|
+
|
|
371
|
+
```markdown
|
|
372
|
+
# .rune/phase-rules.md (example)
|
|
373
|
+
|
|
374
|
+
## Phase 2: PLAN
|
|
375
|
+
- All API endpoints must follow REST naming convention /api/v1/<resource>
|
|
376
|
+
- Database changes require a rollback migration
|
|
377
|
+
|
|
378
|
+
## Phase 3: TEST
|
|
379
|
+
- Enforce TDD format: describe → it → arrange → act → assert
|
|
380
|
+
- Minimum 3 edge cases per public function
|
|
381
|
+
|
|
382
|
+
## Phase 5: QUALITY
|
|
383
|
+
- Review must check for N+1 queries on any ORM code
|
|
384
|
+
- Sentinel must verify CORS configuration on new routes
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Loading**: Cook reads `.rune/phase-rules.md` during Phase 0 (resume check). Rules for each phase are injected into the sub-skill's context when that phase starts. If file doesn't exist → skip silently.
|
|
388
|
+
|
|
389
|
+
## Checkpoint Protocol (Opt-In)
|
|
390
|
+
|
|
391
|
+
Invoke `rune:session-bridge` after Phase 2, 4, and 5 to save intermediate state. OPT-IN — activate only if task spans 3+ phases, context-watch is ORANGE, or user explicitly requests checkpoints. Before spawning subagents, invoke `rune:context-pack` to create structured handoff briefings.
|
|
392
|
+
|
|
393
|
+
## Phase Transition Protocol (MANDATORY)
|
|
394
|
+
|
|
395
|
+
Before entering ANY Phase N+1, assert: Phase N `completed` in TodoWrite | gate condition met | no BLOCK from sub-skills | no unresolved CRITICAL findings. If any fails → STOP, log "BLOCKED at Phase N→N+1: [assertion]", fix, re-check.
|
|
396
|
+
|
|
397
|
+
**Key transitions:** 1→2: scout done | 2→3: plan approved | 3→4: failing tests exist | 4→5: all tests pass | 5→6: no CRITICAL findings | 6→7: lint+types+build green.
|
|
398
|
+
|
|
399
|
+
## Phase 6: VERIFY
|
|
400
|
+
|
|
401
|
+
**REQUIRED SUB-SKILL**: Use `rune:verification` — run lint, type check, full test suite, build. Then `rune:hallucination-guard` to verify imports and API signatures. ALL checks MUST pass before commit.
|
|
402
|
+
|
|
403
|
+
## Phase 7: COMMIT
|
|
404
|
+
|
|
405
|
+
**RECOMMENDED SUB-SKILL**: Use `rune:git` — stage specific files (`git add <files>`, NOT `git add .`), generate semantic commit message from diff. If working from master plan: update phase status `🔄 → ✅`, announce next phase or "All phases complete."
|
|
406
|
+
|
|
407
|
+
## Phase 8: BRIDGE
|
|
408
|
+
|
|
409
|
+
**Goal**: Save context for future sessions and record metrics for mesh analytics.
|
|
410
|
+
|
|
411
|
+
**REQUIRED SUB-SKILL**: Use `rune:session-bridge`
|
|
412
|
+
|
|
413
|
+
1. Mark Phase 8 as `in_progress`
|
|
414
|
+
2. Save to `.rune/decisions.md` (approach + trade-offs), `.rune/progress.md` (task complete), `.rune/conventions.md` (new patterns)
|
|
415
|
+
3. **Skill metrics** → `.rune/metrics/skills.json`: increment phase run/skip counts, quality gate results, debug loop counts under `cook` key
|
|
416
|
+
4. **Routing overrides** (H3): if Phase 4 hit max loops for an error pattern → write rule to `.rune/metrics/routing-overrides.json`. Max 10 active rules.
|
|
417
|
+
5. **Step 8.5 — Capture Learnings**: `neural-memory` (Capture Mode) — 2-5 memories: architecture decisions, patterns, error root-causes, trade-offs. Cognitive language (causal/decisional/comparative). Tags: `[project, tech, topic]`. Priority 5 routine / 7-8 decisions / 9-10 critical errors.
|
|
418
|
+
6. Mark Phase 8 as `completed`
|
|
419
|
+
|
|
420
|
+
## Autonomous Loop Patterns
|
|
421
|
+
|
|
422
|
+
When cook runs inside `team` (L1) or autonomous workflows, these patterns apply.
|
|
423
|
+
|
|
424
|
+
### De-Sloppify Pass
|
|
425
|
+
|
|
426
|
+
After Phase 4 completes (all tests green), run a **separate focused cleanup pass** on all modified files. Two focused passes outperform one constrained pass — let the implementer write freely in Phase 4, then clean up here.
|
|
427
|
+
|
|
428
|
+
**Trigger**: Implementation touched 3+ files OR 100+ LOC changed. Skip for nano/fast rigor.
|
|
429
|
+
|
|
430
|
+
**Slop targets** (check every modified file):
|
|
431
|
+
|
|
432
|
+
| Slop Type | Detection | Fix |
|
|
433
|
+
|-----------|-----------|-----|
|
|
434
|
+
| Leftover debug | `console.log`, `print()`, `debugger`, `TODO: remove` | Delete |
|
|
435
|
+
| Over-defensive checks | Null checks on values guaranteed non-null by TypeScript/framework | Remove redundant guard |
|
|
436
|
+
| Type-test slop | `typeof x === 'string'` when x is already typed as string | Remove — trust the type system |
|
|
437
|
+
| Duplicated logic | Same 3+ lines appear in multiple places | Extract utility |
|
|
438
|
+
| Framework-behavior tests | Tests asserting that React renders, that Express routes exist, that mocks work | Delete — test YOUR code, not the framework |
|
|
439
|
+
| Inconsistent naming | Mixed `camelCase`/`snake_case` in same file | Normalize to project convention |
|
|
440
|
+
| Dead imports | Imports no longer used after edits | Remove |
|
|
441
|
+
|
|
442
|
+
**Important**: This is NOT a quality gate — it's a cleanup pass. Don't block the pipeline for cosmetic issues. Fix what you find, move on.
|
|
443
|
+
|
|
444
|
+
### Continuous PR Loop (team orchestration only)
|
|
445
|
+
|
|
446
|
+
```
|
|
447
|
+
cook instance → commit → push → create PR → wait CI
|
|
448
|
+
IF CI passes → mark workstream complete
|
|
449
|
+
IF CI fails → read CI output → fix → push → wait CI (max 3 retries)
|
|
450
|
+
IF 3 retries fail → escalate to user with CI logs
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### Formal Pause/Resume (`.continue-here.md`)
|
|
454
|
+
|
|
455
|
+
<MUST-READ path="references/pause-resume-template.md" trigger="when cook must pause mid-phase (context limit, user break, session end)"/>
|
|
456
|
+
|
|
457
|
+
When cook must pause mid-phase, create `.rune/.continue-here.md` with structured handoff, then WIP commit. Phase 0 detects it on resume. More granular than plan-level resume — resumes within a phase.
|
|
458
|
+
|
|
459
|
+
### Mid-Run Signal Detection
|
|
460
|
+
|
|
461
|
+
<MUST-READ path="references/mid-run-signals.md" trigger="when user sends a message DURING cook execution"/>
|
|
462
|
+
|
|
463
|
+
Two-stage intent classification: keyword fast-path for short messages (<60 chars), context classification for longer ones. Never queue user messages — process immediately.
|
|
464
|
+
|
|
465
|
+
<HARD-GATE>
|
|
466
|
+
NEVER treat a Cancel/Pause signal as a Steer or NewTask. User safety signals take absolute priority.
|
|
467
|
+
If ambiguous between Cancel and Steer → ask user: "Did you mean stop, or change approach?"
|
|
468
|
+
</HARD-GATE>
|
|
469
|
+
|
|
470
|
+
### Exit Conditions (Mandatory for Autonomous Runs)
|
|
471
|
+
|
|
472
|
+
<MUST-READ path="references/exit-conditions.md" trigger="cook running inside team or any autonomous workflow"/>
|
|
473
|
+
|
|
474
|
+
Hard caps: MAX_DEBUG_LOOPS=3, MAX_QUALITY_LOOPS=2, MAX_REPLAN=1, MAX_PIVOT=1, MAX_FIXES=30, WTF_THRESHOLD=20%.
|
|
475
|
+
Escalation chain: debug-fix (3x) → re-plan (1x) → brainstorm rescue (1x) → THEN escalate to user.
|
|
476
|
+
|
|
477
|
+
### Subagent Status Protocol
|
|
478
|
+
|
|
479
|
+
<MUST-READ path="references/subagent-status.md" trigger="when cook or any sub-skill needs to return a status"/>
|
|
480
|
+
|
|
481
|
+
Cook and all sub-skills return: `DONE` | `DONE_WITH_CONCERNS` | `NEEDS_CONTEXT` | `BLOCKED`.
|
|
482
|
+
|
|
483
|
+
### Subagent Context Isolation
|
|
484
|
+
|
|
485
|
+
When invoking sub-skills (fix, debug, test, review, etc.), **craft exactly the context they need** — never pass the full orchestrator session context.
|
|
486
|
+
|
|
487
|
+
| Pass To Sub-Skill | DO NOT Pass |
|
|
488
|
+
|-------------------|-------------|
|
|
489
|
+
| Task description + specific goal | Full conversation history |
|
|
490
|
+
| Relevant file paths from scout | Unrelated files from other phases |
|
|
491
|
+
| Project conventions (naming, test framework) | Other sub-skill outputs |
|
|
492
|
+
| Plan excerpt for THIS phase only | Full master plan |
|
|
493
|
+
| Error/stack trace (for debug/fix) | Previous debug attempts from other bugs |
|
|
494
|
+
|
|
495
|
+
**Why**: Sub-skills that inherit orchestrator context get polluted — they chase false connections, reference stale data, and consume tokens on irrelevant context. A focused sub-skill with 500 tokens of curated context outperforms one with 5000 tokens of inherited noise.
|
|
496
|
+
|
|
497
|
+
## Deviation Rules
|
|
498
|
+
|
|
499
|
+
<MUST-READ path="references/deviation-rules.md" trigger="when implementation diverges from the approved plan"/>
|
|
500
|
+
|
|
501
|
+
R1-R3 (bug/security/blocking fix): auto-fix, continue. R4 (architectural change): ASK user first.
|
|
502
|
+
|
|
503
|
+
## Error Recovery
|
|
504
|
+
|
|
505
|
+
<MUST-READ path="references/error-recovery.md" trigger="when any phase fails or a task hits repeated errors"/>
|
|
506
|
+
|
|
507
|
+
Includes phase-by-phase failure handling and repair operators (RETRY → DECOMPOSE → PRUNE) with a 2-attempt budget before escalation.
|
|
508
|
+
|
|
509
|
+
## Analysis Paralysis Guard
|
|
510
|
+
|
|
511
|
+
<HARD-GATE>
|
|
512
|
+
5+ consecutive read-only tool calls (Read, Grep, Glob) without a single write action (Edit, Write, Bash) = STUCK.
|
|
513
|
+
|
|
514
|
+
You MUST either:
|
|
515
|
+
1. **Act** — write code, run a command, create a file
|
|
516
|
+
2. **Report BLOCKED** — state the specific missing piece: "Cannot proceed because [X]"
|
|
517
|
+
|
|
518
|
+
Stuck patterns (all banned):
|
|
519
|
+
- Reading 10+ files to "fully understand" before acting
|
|
520
|
+
- Grepping every variation of a string across the entire repo
|
|
521
|
+
- Reading the same file twice in one investigation
|
|
522
|
+
- "Let me check one more thing" — repeated after 5 reads
|
|
523
|
+
|
|
524
|
+
A wrong first attempt that produces feedback beats perfect understanding that never ships.
|
|
525
|
+
</HARD-GATE>
|
|
526
|
+
|
|
527
|
+
### Hash-Based Tool Loop Detection
|
|
528
|
+
|
|
529
|
+
<MUST-READ path="references/loop-detection.md" trigger="when same tool+args+result appears to be repeating"/>
|
|
530
|
+
|
|
531
|
+
Mentally track tool call fingerprints. 3 identical calls → WARN. 5 identical calls → FORCE STOP. Only same-input-AND-same-output counts as a loop.
|
|
532
|
+
|
|
533
|
+
## Called By (inbound)
|
|
534
|
+
|
|
535
|
+
- User: `/rune cook` direct invocation — primary entry point
|
|
536
|
+
- `team` (L1): parallel workstream execution (meta-orchestration)
|
|
537
|
+
|
|
538
|
+
## Calls (outbound)
|
|
539
|
+
|
|
540
|
+
| Phase | Sub-skill | Layer | Purpose |
|
|
541
|
+
|-------|-----------|-------|---------|
|
|
542
|
+
| 0 / 8 | `neural-memory` | ext | Recall context at start; capture learnings at end |
|
|
543
|
+
| 0.5 | `sentinel-env` | L3 | Environment pre-flight (first run only) |
|
|
544
|
+
| 1 | `scout` | L2 | Scan codebase before planning |
|
|
545
|
+
| 1 | `onboard` | L2 | Initialize project context if no CLAUDE.md |
|
|
546
|
+
| 1 | `ba` | L2 | Requirement elicitation for features |
|
|
547
|
+
| 2 | `plan` | L2 | Create implementation plan |
|
|
548
|
+
| 2 | `brainstorm` | L2 | Trade-off analysis / rescue mode |
|
|
549
|
+
| 2 | `design` | L2 | UI/design phase for frontend features |
|
|
550
|
+
| 2.5 | `adversary` | L2 | Red-team challenge on approved plan |
|
|
551
|
+
| 3 | `test` | L2 | Write failing tests (RED phase) |
|
|
552
|
+
| 4 | `fix` | L2 | Implement code changes (GREEN phase) |
|
|
553
|
+
| 4 | `debug` | L2 | Unexpected errors (max 3 loops) |
|
|
554
|
+
| 4 | `db` | L2 | Schema changes detected in diff |
|
|
555
|
+
| 4 | `worktree` | L3 | Worktree isolation for parallel implementation |
|
|
556
|
+
| 5a | `preflight` | L2 | Spec compliance + logic review |
|
|
557
|
+
| 5b | `sentinel` | L2 | Security scan |
|
|
558
|
+
| 5c | `review` | L2 | Code quality review |
|
|
559
|
+
| 5 | `perf` | L2 | Performance regression check (optional) |
|
|
560
|
+
| 5 | `audit` | L2 | Project health audit when scope warrants |
|
|
561
|
+
| 5 | `review-intake` | L2 | Structured review intake for complex PRs |
|
|
562
|
+
| 5 | `sast` | L3 | Static analysis security testing |
|
|
563
|
+
| 5d | `completion-gate` | L3 | Validate agent claims against evidence trail |
|
|
564
|
+
| 5 | `constraint-check` | L3 | Audit HARD-GATE compliance across workflow |
|
|
565
|
+
| 6 | `verification` | L3 | Lint + types + tests + build |
|
|
566
|
+
| 6 | `hallucination-guard` | L3 | Verify imports and API calls are real |
|
|
567
|
+
| 7 | `journal` | L3 | Record architectural decisions |
|
|
568
|
+
| 8 | `session-bridge` | L3 | Save context for future sessions |
|
|
569
|
+
| any | `context-pack` | L3 | create structured handoff briefings before spawning subagents |
|
|
570
|
+
| any | `skill-forge` | L2 | When new skill creation detected during cook |
|
|
571
|
+
| 1.5 | L4 extension packs | L4 | Domain-specific patterns when stack matches |
|
|
572
|
+
|
|
573
|
+
## Data Flow
|
|
574
|
+
|
|
575
|
+
**Feeds Into →** `journal` (decisions → ADRs) | `session-bridge` (context → .rune/ state) | `neural-memory` (learnings → cross-session)
|
|
576
|
+
|
|
577
|
+
**Fed By ←** `ba` (requirements → Phase 1) | `plan` (master plan → Phase 2-4) | `session-bridge` (.continue-here.md → Phase 0 resume) | `neural-memory` (past decisions → Phase 0 recall)
|
|
578
|
+
|
|
579
|
+
**Feedback Loops ↻** cook↔debug (Phase 4 bug → debug → fix → resume; if plan wrong → Approach Pivot) | cook↔test (RED → GREEN → failures loop back)
|
|
580
|
+
|
|
581
|
+
## Constraints
|
|
582
|
+
|
|
583
|
+
1. MUST run scout before planning
|
|
584
|
+
2. MUST get user plan approval before writing code
|
|
585
|
+
3. MUST write failing tests before implementation (TDD) unless explicitly skipped
|
|
586
|
+
4. MUST NOT commit with failing tests
|
|
587
|
+
5. MUST NOT modify files outside approved plan scope without user confirmation
|
|
588
|
+
6. MUST run verification (lint + type-check + tests + build) before commit
|
|
589
|
+
7. MUST NOT say "all tests pass" without showing actual test output
|
|
590
|
+
8. MUST NOT contradict `.rune/decisions.md` without explicit user override
|
|
591
|
+
|
|
592
|
+
## Mesh Gates
|
|
593
|
+
|
|
594
|
+
| Gate | Requires | If Missing |
|
|
595
|
+
|------|----------|------------|
|
|
596
|
+
| Resume Gate | Phase 0 checks for master plan before starting | Proceed to Phase 1 |
|
|
597
|
+
| Scout Gate | scout output before Phase 2 | Invoke rune:scout first |
|
|
598
|
+
| Plan Gate | User-approved plan before Phase 3 | Cannot proceed |
|
|
599
|
+
| Adversary Gate | adversary verdict before Phase 3 for features | Skip for bugfix/hotfix/refactor |
|
|
600
|
+
| Phase File Gate | Active phase file only (multi-session) | Load only active phase |
|
|
601
|
+
| Test-First Gate | Failing tests before Phase 4 | Write tests or get explicit skip |
|
|
602
|
+
| Quality Gate | preflight + sentinel + review before Phase 7 | Fix findings, re-run |
|
|
603
|
+
| Verification Gate | lint + types + tests + build green before commit | Fix, re-run |
|
|
604
|
+
|
|
605
|
+
## Output Format
|
|
606
|
+
|
|
607
|
+
<MUST-READ path="references/output-format.md" trigger="before emitting the Cook Report at end of any session"/>
|
|
608
|
+
|
|
609
|
+
Emit a Cook Report with: Status, Phases, Files Changed, Tests, Quality results, Commit hash.
|
|
610
|
+
When invoked by `team` with a NEXUS Handoff, include the Deliverables table — MANDATORY.
|
|
611
|
+
|
|
612
|
+
## Returns
|
|
613
|
+
|
|
614
|
+
| Artifact | Format | Location |
|
|
615
|
+
|----------|--------|----------|
|
|
616
|
+
| Plan files (master + phase) | Markdown | `.rune/plan-<feature>.md`, `.rune/plan-<feature>-phase<N>.md` |
|
|
617
|
+
| Implementation code | Source files | Per plan file paths |
|
|
618
|
+
| Test files | Source files | Co-located or `__tests__/` per project convention |
|
|
619
|
+
| Verification results | Inline stdout | Shown in Cook Report |
|
|
620
|
+
| Cook Report | Markdown (inline) | Emitted at end of session |
|
|
621
|
+
| Session state | Markdown | `.rune/decisions.md`, `.rune/progress.md`, `.rune/conventions.md` |
|
|
622
|
+
|
|
623
|
+
## Sharp Edges
|
|
624
|
+
|
|
625
|
+
<MUST-READ path="references/sharp-edges.md" trigger="before declaring done — review all 18 failure modes"/>
|
|
626
|
+
|
|
627
|
+
**CRITICAL failures** (always check): skipping scout | writing code without plan approval | "done" without evidence trail | surrendering without Approach Pivot Gate | breaking change without RFC | treating Cancel/Pause as scope change.
|
|
628
|
+
|
|
629
|
+
## Self-Validation
|
|
630
|
+
|
|
631
|
+
```
|
|
632
|
+
SELF-VALIDATION (run before emitting Cook Report):
|
|
633
|
+
- [ ] Every phase in Phase Skip Rules was either executed or explicitly skipped with reason
|
|
634
|
+
- [ ] Plan approval gate was not bypassed — user said "go" (check conversation history)
|
|
635
|
+
- [ ] No Phase 4 code was written before Phase 3 tests (TDD order preserved)
|
|
636
|
+
- [ ] All Phase 5 quality gates (preflight, sentinel, review) ran — not just claimed
|
|
637
|
+
- [ ] Cook Report contains actual commit hash, not placeholder
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
## Done When
|
|
641
|
+
|
|
642
|
+
All applicable phases complete + Self-Validation passed:
|
|
643
|
+
- User approved plan | All tests PASS (output shown) | preflight+sentinel+review PASS | build green
|
|
644
|
+
- Cook Report emitted with commit hash | Session state saved to .rune/ via session-bridge
|
|
645
|
+
|
|
646
|
+
## Cost Profile
|
|
647
|
+
|
|
648
|
+
~$0.05-0.15 per feature. Haiku for scanning (Phase 1), sonnet for coding (Phase 3-4), opus for complex planning (Phase 2 when needed).
|