@rune-kit/rune 2.8.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -34
  3. package/agents/adversary.md +27 -0
  4. package/agents/architect.md +19 -29
  5. package/agents/asset-creator.md +18 -4
  6. package/agents/audit.md +25 -4
  7. package/agents/autopsy.md +19 -4
  8. package/agents/ba.md +35 -0
  9. package/agents/brainstorm.md +31 -4
  10. package/agents/browser-pilot.md +21 -4
  11. package/agents/coder.md +21 -29
  12. package/agents/completion-gate.md +20 -4
  13. package/agents/constraint-check.md +18 -4
  14. package/agents/context-engine.md +22 -4
  15. package/agents/context-pack.md +32 -0
  16. package/agents/cook.md +41 -4
  17. package/agents/db.md +19 -4
  18. package/agents/debug.md +33 -4
  19. package/agents/dependency-doctor.md +20 -4
  20. package/agents/deploy.md +27 -4
  21. package/agents/design.md +22 -4
  22. package/agents/doc-processor.md +27 -0
  23. package/agents/docs-seeker.md +19 -4
  24. package/agents/docs.md +31 -0
  25. package/agents/fix.md +37 -4
  26. package/agents/git.md +29 -0
  27. package/agents/hallucination-guard.md +20 -4
  28. package/agents/incident.md +21 -4
  29. package/agents/integrity-check.md +18 -4
  30. package/agents/journal.md +19 -4
  31. package/agents/launch.md +32 -4
  32. package/agents/logic-guardian.md +26 -11
  33. package/agents/marketing.md +23 -4
  34. package/agents/mcp-builder.md +26 -0
  35. package/agents/neural-memory.md +30 -0
  36. package/agents/onboard.md +22 -4
  37. package/agents/perf.md +21 -4
  38. package/agents/plan.md +29 -4
  39. package/agents/preflight.md +22 -4
  40. package/agents/problem-solver.md +20 -4
  41. package/agents/rescue.md +23 -4
  42. package/agents/research.md +19 -4
  43. package/agents/researcher.md +19 -29
  44. package/agents/retro.md +32 -0
  45. package/agents/review-intake.md +20 -4
  46. package/agents/review.md +32 -4
  47. package/agents/reviewer.md +20 -28
  48. package/agents/safeguard.md +19 -4
  49. package/agents/sast.md +18 -4
  50. package/agents/scaffold.md +41 -0
  51. package/agents/scanner.md +19 -28
  52. package/agents/scope-guard.md +18 -4
  53. package/agents/scout.md +23 -4
  54. package/agents/sentinel-env.md +26 -0
  55. package/agents/sentinel.md +33 -4
  56. package/agents/sequential-thinking.md +20 -4
  57. package/agents/session-bridge.md +24 -4
  58. package/agents/skill-forge.md +22 -4
  59. package/agents/skill-router.md +26 -4
  60. package/agents/slides.md +24 -0
  61. package/agents/surgeon.md +19 -4
  62. package/agents/team.md +30 -4
  63. package/agents/test.md +36 -4
  64. package/agents/trend-scout.md +17 -4
  65. package/agents/verification.md +20 -4
  66. package/agents/video-creator.md +20 -4
  67. package/agents/watchdog.md +19 -4
  68. package/agents/worktree.md +17 -4
  69. package/commands/rune.md +168 -168
  70. package/compiler/__tests__/analytics.test.js +370 -0
  71. package/compiler/adapters/openclaw.js +2 -2
  72. package/compiler/analytics.js +385 -0
  73. package/compiler/bin/rune.js +68 -2
  74. package/compiler/dashboard.js +883 -0
  75. package/compiler/transforms/branding.js +1 -1
  76. package/contexts/dev.md +34 -34
  77. package/contexts/research.md +43 -43
  78. package/contexts/review.md +55 -55
  79. package/extensions/ai-ml/PACK.md +88 -88
  80. package/extensions/ai-ml/skills/ai-agents.md +172 -172
  81. package/extensions/ai-ml/skills/code-sandbox.md +187 -187
  82. package/extensions/ai-ml/skills/deep-research.md +146 -146
  83. package/extensions/ai-ml/skills/embedding-search.md +66 -66
  84. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
  85. package/extensions/ai-ml/skills/llm-architect.md +125 -125
  86. package/extensions/ai-ml/skills/llm-integration.md +64 -64
  87. package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
  88. package/extensions/ai-ml/skills/rag-patterns.md +66 -66
  89. package/extensions/ai-ml/skills/web-extraction.md +114 -114
  90. package/extensions/analytics/PACK.md +92 -92
  91. package/extensions/analytics/skills/ab-testing.md +72 -72
  92. package/extensions/analytics/skills/dashboard-patterns.md +83 -83
  93. package/extensions/analytics/skills/data-validation.md +68 -68
  94. package/extensions/analytics/skills/funnel-analysis.md +81 -81
  95. package/extensions/analytics/skills/sql-patterns.md +57 -57
  96. package/extensions/analytics/skills/statistical-analysis.md +79 -79
  97. package/extensions/analytics/skills/tracking-setup.md +71 -71
  98. package/extensions/backend/PACK.md +104 -104
  99. package/extensions/backend/skills/api-patterns.md +84 -84
  100. package/extensions/backend/skills/async-pipeline.md +193 -193
  101. package/extensions/backend/skills/auth-patterns.md +97 -97
  102. package/extensions/backend/skills/background-jobs.md +133 -133
  103. package/extensions/backend/skills/caching-patterns.md +108 -108
  104. package/extensions/backend/skills/cli-generation.md +133 -133
  105. package/extensions/backend/skills/database-patterns.md +87 -87
  106. package/extensions/backend/skills/middleware-patterns.md +104 -104
  107. package/extensions/chrome-ext/PACK.md +93 -93
  108. package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
  109. package/extensions/chrome-ext/skills/cws-publish.md +104 -104
  110. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
  111. package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
  112. package/extensions/chrome-ext/skills/ext-storage.md +133 -133
  113. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
  114. package/extensions/content/PACK.md +96 -96
  115. package/extensions/content/skills/blog-patterns.md +88 -88
  116. package/extensions/content/skills/cms-integration.md +131 -131
  117. package/extensions/content/skills/content-scoring.md +107 -107
  118. package/extensions/content/skills/i18n.md +83 -83
  119. package/extensions/content/skills/mdx-authoring.md +137 -137
  120. package/extensions/content/skills/reference.md +1014 -1014
  121. package/extensions/content/skills/seo-patterns.md +67 -67
  122. package/extensions/content/skills/video-repurpose.md +153 -153
  123. package/extensions/devops/PACK.md +101 -101
  124. package/extensions/devops/skills/chaos-testing.md +67 -67
  125. package/extensions/devops/skills/ci-cd.md +75 -75
  126. package/extensions/devops/skills/docker.md +58 -58
  127. package/extensions/devops/skills/edge-serverless.md +163 -163
  128. package/extensions/devops/skills/infra-as-code.md +158 -158
  129. package/extensions/devops/skills/kubernetes.md +110 -110
  130. package/extensions/devops/skills/monitoring.md +57 -57
  131. package/extensions/devops/skills/server-setup.md +64 -64
  132. package/extensions/devops/skills/ssl-domain.md +42 -42
  133. package/extensions/ecommerce/PACK.md +116 -116
  134. package/extensions/ecommerce/skills/cart-system.md +79 -79
  135. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
  136. package/extensions/ecommerce/skills/order-management.md +126 -126
  137. package/extensions/ecommerce/skills/payment-integration.md +472 -472
  138. package/extensions/ecommerce/skills/shopify-dev.md +69 -69
  139. package/extensions/ecommerce/skills/subscription-billing.md +93 -93
  140. package/extensions/ecommerce/skills/tax-compliance.md +117 -117
  141. package/extensions/gamedev/PACK.md +142 -142
  142. package/extensions/gamedev/skills/asset-pipeline.md +74 -74
  143. package/extensions/gamedev/skills/audio-system.md +129 -129
  144. package/extensions/gamedev/skills/camera-system.md +87 -87
  145. package/extensions/gamedev/skills/ecs.md +98 -98
  146. package/extensions/gamedev/skills/game-loops.md +72 -72
  147. package/extensions/gamedev/skills/input-system.md +199 -199
  148. package/extensions/gamedev/skills/multiplayer.md +180 -180
  149. package/extensions/gamedev/skills/particles.md +105 -105
  150. package/extensions/gamedev/skills/physics-engine.md +89 -89
  151. package/extensions/gamedev/skills/scene-management.md +146 -146
  152. package/extensions/gamedev/skills/threejs-patterns.md +90 -90
  153. package/extensions/gamedev/skills/webgl.md +71 -71
  154. package/extensions/mobile/PACK.md +106 -106
  155. package/extensions/mobile/skills/app-store-connect.md +152 -152
  156. package/extensions/mobile/skills/app-store-prep.md +66 -66
  157. package/extensions/mobile/skills/deep-linking.md +109 -109
  158. package/extensions/mobile/skills/flutter.md +60 -60
  159. package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
  160. package/extensions/mobile/skills/native-bridge.md +66 -66
  161. package/extensions/mobile/skills/ota-updates.md +97 -97
  162. package/extensions/mobile/skills/push-notifications.md +111 -111
  163. package/extensions/mobile/skills/react-native.md +82 -82
  164. package/extensions/saas/PACK.md +116 -116
  165. package/extensions/saas/skills/billing-integration.md +200 -200
  166. package/extensions/saas/skills/feature-flags.md +130 -130
  167. package/extensions/saas/skills/multi-tenant.md +103 -103
  168. package/extensions/saas/skills/onboarding-flow.md +139 -139
  169. package/extensions/saas/skills/subscription-flow.md +95 -95
  170. package/extensions/saas/skills/team-management.md +144 -144
  171. package/extensions/security/PACK.md +99 -99
  172. package/extensions/security/skills/api-security.md +140 -140
  173. package/extensions/security/skills/compliance.md +68 -68
  174. package/extensions/security/skills/owasp-audit.md +64 -64
  175. package/extensions/security/skills/pentest-patterns.md +77 -77
  176. package/extensions/security/skills/secret-mgmt.md +65 -65
  177. package/extensions/security/skills/supply-chain.md +65 -65
  178. package/extensions/trading/PACK.md +80 -80
  179. package/extensions/trading/skills/chart-components.md +55 -55
  180. package/extensions/trading/skills/experiment-loop.md +125 -125
  181. package/extensions/trading/skills/fintech-patterns.md +47 -47
  182. package/extensions/trading/skills/indicator-library.md +58 -58
  183. package/extensions/trading/skills/quant-analysis.md +111 -111
  184. package/extensions/trading/skills/realtime-data.md +58 -58
  185. package/extensions/trading/skills/trade-logic.md +104 -104
  186. package/extensions/ui/PACK.md +130 -130
  187. package/extensions/ui/skills/a11y-audit.md +91 -91
  188. package/extensions/ui/skills/animation-patterns.md +127 -106
  189. package/extensions/ui/skills/component-patterns.md +100 -75
  190. package/extensions/ui/skills/design-decision.md +108 -108
  191. package/extensions/ui/skills/design-system.md +68 -68
  192. package/extensions/ui/skills/landing-patterns.md +155 -155
  193. package/extensions/ui/skills/palette-picker.md +173 -173
  194. package/extensions/ui/skills/react-health.md +90 -90
  195. package/extensions/ui/skills/type-system.md +125 -125
  196. package/extensions/ui/skills/web-vitals.md +153 -153
  197. package/extensions/zalo/PACK.md +145 -145
  198. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
  199. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
  200. package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
  201. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
  202. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
  203. package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
  204. package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
  205. package/hooks/auto-format/index.cjs +48 -48
  206. package/hooks/context-watch/index.cjs +95 -68
  207. package/hooks/hooks.json +111 -111
  208. package/hooks/metrics-collector/index.cjs +86 -42
  209. package/hooks/post-session-reflect/index.cjs +189 -153
  210. package/hooks/pre-compact/index.cjs +95 -95
  211. package/hooks/run-hook.cmd +1 -1
  212. package/hooks/secrets-scan/index.cjs +100 -100
  213. package/hooks/session-start/index.cjs +71 -65
  214. package/hooks/typecheck/index.cjs +65 -65
  215. package/package.json +63 -63
  216. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
  217. package/references/ui-pro-max-data/charts.csv +26 -26
  218. package/references/ui-pro-max-data/colors.csv +161 -161
  219. package/references/ui-pro-max-data/styles.csv +68 -68
  220. package/references/ui-pro-max-data/typography.csv +74 -74
  221. package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
  222. package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
  223. package/skills/adversary/SKILL.md +283 -283
  224. package/skills/asset-creator/SKILL.md +157 -157
  225. package/skills/audit/SKILL.md +148 -2
  226. package/skills/autopsy/SKILL.md +335 -259
  227. package/skills/autopsy/references/repo-analysis-patterns.md +113 -0
  228. package/skills/ba/SKILL.md +72 -2
  229. package/skills/brainstorm/SKILL.md +342 -341
  230. package/skills/browser-pilot/SKILL.md +168 -168
  231. package/skills/constraint-check/SKILL.md +165 -165
  232. package/skills/context-engine/SKILL.md +404 -404
  233. package/skills/cook/SKILL.md +917 -834
  234. package/skills/cook/references/output-format.md +33 -0
  235. package/skills/db/SKILL.md +273 -272
  236. package/skills/debug/SKILL.md +465 -443
  237. package/skills/dependency-doctor/SKILL.md +265 -235
  238. package/skills/deploy/SKILL.md +274 -231
  239. package/skills/design/DESIGN-REFERENCE.md +365 -365
  240. package/skills/design/SKILL.md +589 -482
  241. package/skills/doc-processor/SKILL.md +254 -254
  242. package/skills/docs/SKILL.md +374 -373
  243. package/skills/docs-seeker/SKILL.md +177 -177
  244. package/skills/fix/SKILL.md +330 -308
  245. package/skills/git/SKILL.md +339 -339
  246. package/skills/graft/SKILL.md +352 -0
  247. package/skills/graft/references/challenge-framework.md +98 -0
  248. package/skills/graft/references/mode-decision.md +44 -0
  249. package/skills/hallucination-guard/SKILL.md +219 -219
  250. package/skills/incident/SKILL.md +254 -251
  251. package/skills/integrity-check/SKILL.md +169 -169
  252. package/skills/journal/SKILL.md +240 -238
  253. package/skills/launch/SKILL.md +344 -342
  254. package/skills/logic-guardian/SKILL.md +251 -251
  255. package/skills/marketing/SKILL.md +290 -245
  256. package/skills/mcp-builder/SKILL.md +425 -423
  257. package/skills/mcp-builder/references/auto-discovery-pattern.md +169 -0
  258. package/skills/neural-memory/SKILL.md +362 -362
  259. package/skills/onboard/SKILL.md +404 -403
  260. package/skills/perf/SKILL.md +346 -346
  261. package/skills/plan/SKILL.md +433 -370
  262. package/skills/plan/references/feature-map.md +84 -0
  263. package/skills/preflight/SKILL.md +415 -396
  264. package/skills/problem-solver/SKILL.md +380 -284
  265. package/skills/rescue/SKILL.md +474 -450
  266. package/skills/retro/SKILL.md +5 -1
  267. package/skills/review/SKILL.md +612 -535
  268. package/skills/review-intake/SKILL.md +249 -249
  269. package/skills/safeguard/SKILL.md +200 -200
  270. package/skills/sast/SKILL.md +190 -190
  271. package/skills/scaffold/SKILL.md +328 -286
  272. package/skills/scope-guard/SKILL.md +180 -162
  273. package/skills/scout/SKILL.md +263 -263
  274. package/skills/sentinel/SKILL.md +382 -353
  275. package/skills/sentinel-env/SKILL.md +254 -254
  276. package/skills/sequential-thinking/SKILL.md +234 -234
  277. package/skills/session-bridge/SKILL.md +543 -397
  278. package/skills/skill-forge/SKILL.md +581 -539
  279. package/skills/skill-router/{skill.md → SKILL.md} +30 -2
  280. package/skills/surgeon/SKILL.md +215 -215
  281. package/skills/team/SKILL.md +556 -514
  282. package/skills/test/SKILL.md +614 -587
  283. package/skills/trend-scout/SKILL.md +145 -145
  284. package/skills/verification/SKILL.md +326 -325
  285. package/skills/video-creator/SKILL.md +201 -201
  286. package/skills/watchdog/SKILL.md +168 -168
  287. package/skills/worktree/SKILL.md +140 -140
@@ -1,308 +1,330 @@
1
- ---
2
- name: fix
3
- description: Apply code changes and fixes. Writes implementation code, applies bug fixes, and verifies changes with tests. Core action hub in the development mesh.
4
- metadata:
5
- author: runedev
6
- version: "0.8.0"
7
- layer: L2
8
- model: sonnet
9
- group: development
10
- tools: "Read, Write, Edit, Bash, Glob, Grep"
11
- emit: code.changed
12
- listen: bug.diagnosed, review.issues, preflight.blocked, security.blocked
13
- ---
14
-
15
- # fix
16
-
17
- ## Purpose
18
-
19
- Apply code changes. Fix receives a plan, debug finding, or review finding and writes the actual code. It does NOT investigate root causes — that is rune:debug's job. Fix is the action hub: locate, change, verify, report.
20
-
21
- <HARD-GATE>
22
- Never change test files to make tests pass unless the tests themselves are provably wrong (wrong expected value, wrong test setup, testing a removed API). The rule: fix the CODE, not the TESTS.
23
- If unsure whether the test is wrong or the implementation is wrong → call `rune:debug` to investigate.
24
- </HARD-GATE>
25
-
26
- ## Triggers
27
-
28
- - Called by `cook` Phase 4 IMPLEMENT — write code to pass tests
29
- - Called by `debug` when root cause found and fix is ready
30
- - Called by `review` when bugs found during review
31
- - `/rune fix <issue>` — manual fix application
32
- - Auto-trigger: after successful debug diagnosis
33
-
34
- ## Calls (outbound)
35
-
36
- - `debug` (L2): when root cause unclear before fixing — need diagnosis first
37
- - `test` (L2): verify fix with tests after applying changes
38
- - `review` (L2): self-review for complex or risky fixes
39
- - `verification` (L3): validate fix doesn't break existing functionality
40
- - `docs-seeker` (L3): check correct API usage before applying changes
41
- - `hallucination-guard` (L3): verify imports after code changes
42
- - `scout` (L2): find related code before applying changes
43
- - `neural-memory` (L3): after fix verified — capture fix pattern (cause → solution)
44
-
45
- ## Called By (inbound)
46
-
47
- - `cook` (L1): Phase 4 IMPLEMENT — apply code changes
48
- - `debug` (L2): root cause found, ready to apply fix
49
- - `review` (L2): bug found during review, needs fixing
50
- - `surgeon` (L2): apply refactoring changes
51
- - `review-intake` (L2): apply fixes identified during structured review intake
52
-
53
- ## Cross-Hub Connections
54
-
55
- - `fix` ↔ `debug` — bidirectional: debug diagnoses → fix applies, fix can't determine cause → debug investigates
56
- - `fix` → `test` — after applying fix, run tests to verify
57
- - `fix` ← `review` — review finds bug → fix applies correction
58
- - `fix` → `review` — complex fix requests self-review
59
-
60
- ## Execution
61
-
62
- ### Step 1: Understand
63
-
64
- Read and fully understand the fix request before touching any file.
65
-
66
- - Read the incoming request: debug report, plan spec, or review finding
67
- - Identify what is broken or missing and what the expected behavior should be
68
- - If the request is ambiguous or root cause is unclear → call `rune:debug` before proceeding
69
- - Note the scope: single function, single file, or multi-file change
70
-
71
- ### Step 1b: Recovery Policy Matrix
72
-
73
- Before locating code, classify the incoming error/task into a recovery category to determine the right fix strategy. This prevents wasting effort on the wrong approach.
74
-
75
- | Error Type | Recovery Action | Strategy |
76
- |------------|----------------|----------|
77
- | `INPUT_REQUIRED` — missing user input, ambiguous spec | **PROMPT_USER** | Return NEEDS_CONTEXT with specific questions. Do NOT guess. |
78
- | `INPUT_INVALID` — wrong format, type mismatch, encoding | **AUTO_FIX** | Fix at validation layer. Add schema validation (Zod/Pydantic) if missing. |
79
- | `TIMEOUT` — operation exceeded time limit | **RETRY** with adjustment | Increase timeout, add retry with exponential backoff, or chunk the operation. |
80
- | `POLICY_BLOCKED` — security gate, lint rule, contract violation | **ABORT** | Do NOT work around the policy. Report to caller with the specific rule that blocked. |
81
- | `PERMISSION_DENIED` — auth failure, file access, API scope | **PROMPT_USER** | Cannot fix permissions programmatically. Report exact permission needed. |
82
- | `DEPENDENCY_ERROR` — missing package, version conflict, broken dep | **AUTO_FIX** | Install missing dep, resolve version conflict, or suggest alternative package. |
83
- | `LOGIC_ERROR` — wrong output, incorrect calculation, bad algorithm | **INVESTIGATE** | Do NOT auto-fix. Call `rune:debug` — logic errors need root cause analysis. |
84
- | `ENVIRONMENT_ERROR` — wrong Node/Python version, missing system dep | **PROMPT_USER** | Report exact version/tool needed. Agent cannot change system environment. |
85
-
86
- **Decision flow**:
87
- 1. Read the incoming diagnosis/error
88
- 2. Classify into one of the 8 error types above
89
- 3. Apply the recovery action — this determines whether to proceed (AUTO_FIX, RETRY), ask (PROMPT_USER), stop (ABORT), or re-diagnose (INVESTIGATE)
90
- 4. Announce: "Recovery policy: {error_type} → {action}"
91
-
92
- **Why**: Without a recovery matrix, fix attempts the same strategy (read → change → test) for every error type. A POLICY_BLOCKED error doesn't need code reading — it needs the policy reported. An INPUT_REQUIRED error doesn't need debugging — it needs a question asked. Matching strategy to error type eliminates wasted cycles.
93
-
94
- ### Step 2: Locate
95
-
96
- Find the exact files and lines to change.
97
-
98
- - Use `rune:scout` to locate the relevant files, functions, and surrounding code
99
- - Use `Read` to examine the specific file:line identified in the debug report or plan
100
- - Use `Glob` to find related files: types, tests, config that may also need updating
101
- - Map all touch points before writing a single line of code
102
-
103
- ### Step 3: Change
104
-
105
- Apply the minimal set of changes needed.
106
-
107
- - Use `Edit` for targeted modifications to existing files
108
- - Use `Write` only when creating a genuinely new file is required
109
- - Follow project conventions: naming, immutability patterns, error handling style
110
- - Keep changes minimal — fix the stated problem, do not refactor unrelated code (YAGNI)
111
- - Never use `any` in TypeScript; never use bare `except:` in Python
112
- - If a new import is needed → note it for Step 5 hallucination-guard check
113
-
114
- ### Step 4: Verify
115
-
116
- Confirm the change works and nothing is broken.
117
-
118
- - Use `Bash` to run the relevant tests: the specific failing test first, then the full suite
119
- - If tests fail after the fix:
120
- - Investigate with `rune:debug` (max 3 debug loops before escalating)
121
- - Do NOT change test files to make tests pass — fix the implementation code
122
- - If project has a type-check command, run it via `Bash`
123
- - If project has a lint command, run it via `Bash`
124
-
125
- ### Step 4.5: Quality Decay Check (Self-Regulation)
126
-
127
- When fix is called repeatedly (e.g., by cook Phase 4, or iterative fix loops), track a **WTF-likelihood score** — the probability that continued fixing is making things worse.
128
-
129
- **Compute every 3 fix attempts** (or when called 5+ times in a single cook session):
130
-
131
- | Signal | Score Adjustment |
132
- |--------|-----------------|
133
- | A fix was reverted (any test that passed now fails) | +15% |
134
- | Fix touched >3 files (blast radius expanding) | +5% per extra file beyond 3 |
135
- | 15+ fixes already applied in this session | +1% per fix beyond 15 |
136
- | All remaining issues are LOW severity | +10% |
137
- | Fix touched files outside the original diagnosis scope | +20% |
138
- | Consecutive fixes without running tests between them | +10% |
139
-
140
- **Thresholds:**
141
- - **>20% WTF-likelihood**: STOP fixing. Report current state to cook/user with: "Quality decay detected — continued fixes risk introducing more bugs than they resolve. {N} fixes applied, {score}% risk. Recommend: commit current progress, re-assess remaining issues."
142
- - **Hard cap: 30 fixes per session** — regardless of score. After 30, STOP and report.
143
-
144
- **Reset conditions:** WTF-likelihood resets to 0% when:
145
- - User explicitly says "continue fixing"
146
- - A full test suite run shows zero regressions
147
- - Scope is narrowed to a single file
148
-
149
-
150
- ### Step 5: Post-Fix Hardening (Defense-in-Depth)
151
-
152
- After the fix works, make the bug **structurally impossible** — not just "fixed this time."
153
-
154
- Single validation at one point can be bypassed by different code paths, refactoring, or mocks. Add validation at EVERY layer data passes through:
155
-
156
- | Layer | Purpose | Example |
157
- |-------|---------|---------|
158
- | **Entry Point** | Reject invalid input at API boundary | Validate params not empty/exists/correct type |
159
- | **Business Logic** | Ensure data makes sense for this operation | Check preconditions specific to this function |
160
- | **Environment Guard** | Prevent dangerous ops in specific contexts | In tests: refuse writes outside tmpdir |
161
- | **Debug Instrumentation** | Capture context for forensics if bug recurs | Log stack trace + key values before risky ops |
162
-
163
- Apply this when: the bug was caused by invalid data flowing through multiple layers. Skip for trivial one-liner fixes.
164
-
165
- ### Step 5b: Preserve Debug Instrumentation
166
-
167
- If `rune:debug` left `#region agent-debug` markers in the code:
168
-
169
- 1. **During fix**: DO NOT remove these markers — they capture the investigation trail
170
- 2. **After fix verified** (tests pass, lint pass): scan for `#region agent-debug` markers
171
- 3. **Remove markers and their contents** in a final cleanup pass ONLY after full verification
172
- 4. If the fix is partial or tests still fail → KEEP all markers for the next debug cycle
173
-
174
- **Why:** Premature cleanup of debug instrumentation erases failure history. If the bug recurs after cleanup, the next debug session starts from zero. Keeping markers until verification means downstream skills can see what was already investigated.
175
-
176
- ### Step 6: Self-Review
177
-
178
- Verify correctness of the changes just made.
179
-
180
- - Call `rune:hallucination-guard` to verify all imports introduced or modified are real and correctly named
181
- - Call `rune:docs-seeker` if any external API, library method, or SDK call was added or changed
182
- - For complex or risky fixes (auth, data mutation, async logic): call `rune:review` for a full quality check
183
-
184
- ### Step 6b: Capture Fix Pattern
185
-
186
- Call `neural-memory` (Capture Mode) to save the fix pattern: what broke, why, and how it was fixed. Priority 7 for recurring bugs.
187
-
188
- ### Step 7: Report
189
-
190
- Produce a structured summary of all changes made.
191
-
192
- - List every file modified and a one-line description of what changed
193
- - Include verification results (tests, types, lint)
194
- - Note any follow-up work if the fix is partial or has known limitations
195
-
196
- ## Constraints
197
-
198
- 1. MUST NOT change test files to make tests pass — fix the CODE, not the TESTS
199
- 2. MUST have a diagnosis (from debug or clear error) before applying fixes
200
- 3. MUST run tests after each fix attempt — never batch multiple untested changes
201
- 4. MUST NOT exceed 3 fix attempts — if 3 fixes fail, re-diagnose via rune:debug (which will classify: wrong approach → brainstorm rescue, wrong design → plan redesign)
202
- 5. MUST follow project conventions found by scout — don't invent new patterns
203
- 6. MUST NOT add unplanned features while fixing — fix only what was diagnosed
204
- 7. MUST track fix attempt number — this feeds debug's 3-Fix Escalation classification
205
- 8. MUST preserve `#region agent-debug` markers until fix is fully verified — cleanup only after tests pass
206
-
207
- ## Scope Gate
208
-
209
- | Change Type | Action |
210
- |-------------|--------|
211
- | Bug fix (diagnosed cause) | Fix it |
212
- | Security fix (found during fix) | Fix it + flag to sentinel |
213
- | Blocking issue (can't complete fix without) | Fix it + document in report |
214
- | Unrelated improvement | **STOP — create separate task** |
215
- | Architectural change | **STOP — escalate to cook/plan** |
216
-
217
- If fix requires touching >3 files not in the diagnosis → re-diagnose. You're probably fixing a symptom.
218
-
219
- ## Mesh Gates
220
-
221
- | Gate | Requires | If Missing |
222
- |------|----------|------------|
223
- | Evidence Gate | Debug report OR clear error description before fixing | Run rune:debug first |
224
- | Test Gate | Tests run after each fix attempt | Run tests before claiming fix works |
225
-
226
- ## Output Format
227
-
228
- ```
229
- ## Fix Report
230
- - **Task**: [what was fixed/implemented]
231
- - **Status**: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
232
-
233
- ### Changes
234
- - `path/to/file.ts` — [description of change]
235
- - `path/to/other.ts` — [description of change]
236
-
237
- ### Verification
238
- - Lint: PASS | FAIL
239
- - Types: PASS | FAIL
240
- - Tests: PASS | FAIL ([n] passed, [m] failed)
241
-
242
- ### Concerns (if DONE_WITH_CONCERNS)
243
- - [concern]: [impact assessment] — [suggested remediation]
244
-
245
- ### Context Needed (if NEEDS_CONTEXT)
246
- - [what is unknown]: [why it blocks] — [two most likely answers]
247
-
248
- ### Blocker (if BLOCKED)
249
- - [specific blocker]: [what was attempted]
250
-
251
- ### Notes
252
- - [any caveats or follow-up needed]
253
- ```
254
-
255
- ### Status Protocol (Subagent Contract)
256
-
257
- Fix returns one of four statuses to its caller (cook, debug, review, surgeon). The caller uses this to route next actions.
258
-
259
- | Status | When | Example |
260
- |--------|------|---------|
261
- | `DONE` | Fix applied, tests pass, no issues | Clean bug fix, all green |
262
- | `DONE_WITH_CONCERNS` | Fix works but has side effects or caveats worth noting | "Tests pass but performance regressed 15% — consider optimizing in follow-up" |
263
- | `NEEDS_CONTEXT` | Cannot apply fix without clarification — ambiguous spec or missing info | "Two valid interpretations of the expected behavior — need user input" |
264
- | `BLOCKED` | Hard blocker — exhausted fix attempts, broken dependency, fundamental incompatibility | "3 fix attempts failed — triggering debug escalation" |
265
-
266
- ## Returns
267
-
268
- | Artifact | Format | Location |
269
- |----------|--------|----------|
270
- | Code changes | Source files | Per debug report / plan file paths |
271
- | Fix Report | Markdown (inline) | Emitted to calling skill (cook, debug, review, surgeon) |
272
- | Verification output | Inline (Fix Report) | Lint + types + test results |
273
-
274
- ## Sharp Edges
275
-
276
- Known failure modes for this skill. Check these before declaring done.
277
-
278
- | Failure Mode | Severity | Mitigation |
279
- |---|---|---|
280
- | Modifying test files to make tests pass | CRITICAL | HARD-GATE blocks this — fix the code, never the tests (unless test setup is provably wrong) |
281
- | Applying fix without a diagnosis | HIGH | Evidence Gate: need debug report or clear error description before touching code |
282
- | Exceeding 3 fix attempts without re-diagnosing | HIGH | Constraint 4: after 3 failures, call debug again — the hypothesis was wrong |
283
- | Introducing unrelated refactoring while fixing | MEDIUM | YAGNI: fix only what was diagnosed — unrelated changes belong in a separate task |
284
- | Not running tests after each individual change | MEDIUM | Constraint 3: never batch untested changes — run tests after each edit |
285
- | Fixing at crash site without tracing data origin | HIGH | Defense-in-depth: trace where bad data ORIGINATES, add validation at every layer it passes through |
286
- | Single-point validation (fix one spot, hope it holds) | MEDIUM | Step 5: add entry + business logic + environment + debug layers for data-flow bugs |
287
- | Removing debug instrumentation before fix is verified | MEDIUM | Step 5b: preserve `#region agent-debug` markers until all tests pass — premature cleanup erases failure history |
288
- | Runaway fix loop 20+ fixes without checking quality decay | HIGH | Step 4.5: WTF-likelihood self-regulation. >20% risk = STOP. Hard cap 30 fixes/session. Each fix adds risk — diminishing returns after ~15 |
289
- | Each fix creates a new bug elsewhere — whack-a-mole | CRITICAL | Tight coupling signal. STOP fixing → escalate to debug with note "each fix creates new failure — suspect structural issue". Debug will route to plan for redesign |
290
- | Applying same fix strategy to every error type | MEDIUM | Step 1b Recovery Policy Matrix: classify error type FIRST — POLICY_BLOCKED needs reporting not fixing, INPUT_REQUIRED needs questions not code |
291
-
292
- ## Done When
293
-
294
- - Root cause identified (debug report or clear error received)
295
- - Minimal changes applied targeting only the diagnosed problem
296
- - Tests pass for the fixed functionality (actual output shown)
297
- - Lint and type check pass
298
- - hallucination-guard verified any new imports
299
- - Fix Report emitted with 4-state status, changed files, and verification results
300
- - If `DONE_WITH_CONCERNS`: concerns listed with impact + remediation
301
- - If `NEEDS_CONTEXT`: specific questions stated with two likely answers
302
- - If `BLOCKED`: blocker + all attempted approaches documented
303
-
304
- ## Cost Profile
305
-
306
- ~2000-5000 tokens input, ~1000-3000 tokens output. Sonnet for code writing quality. Most active skill during implementation.
307
-
308
- **Scope guardrail**: Do not refactor unrelated code or create new features beyond the diagnosed fix target unless explicitly delegated by the parent agent.
1
+ ---
2
+ name: fix
3
+ description: Apply code changes and fixes. Writes implementation code, applies bug fixes, and verifies changes with tests. Core action hub in the development mesh.
4
+ metadata:
5
+ author: runedev
6
+ version: "0.9.0"
7
+ layer: L2
8
+ model: sonnet
9
+ group: development
10
+ tools: "Read, Write, Edit, Bash, Glob, Grep"
11
+ emit: code.changed
12
+ listen: bug.diagnosed, review.issues, preflight.blocked, security.blocked
13
+ ---
14
+
15
+ # fix
16
+
17
+ ## Purpose
18
+
19
+ Apply code changes. Fix receives a plan, debug finding, or review finding and writes the actual code. It does NOT investigate root causes — that is rune:debug's job. Fix is the action hub: locate, change, verify, report.
20
+
21
+ <HARD-GATE>
22
+ Never change test files to make tests pass unless the tests themselves are provably wrong (wrong expected value, wrong test setup, testing a removed API). The rule: fix the CODE, not the TESTS.
23
+ If unsure whether the test is wrong or the implementation is wrong → call `rune:debug` to investigate.
24
+ </HARD-GATE>
25
+
26
+ ## Triggers
27
+
28
+ - Called by `cook` Phase 4 IMPLEMENT — write code to pass tests
29
+ - Called by `debug` when root cause found and fix is ready
30
+ - Called by `review` when bugs found during review
31
+ - `/rune fix <issue>` — manual fix application
32
+ - Auto-trigger: after successful debug diagnosis
33
+
34
+ ## Calls (outbound)
35
+
36
+ - `debug` (L2): when root cause unclear before fixing — need diagnosis first
37
+ - `test` (L2): verify fix with tests after applying changes
38
+ - `review` (L2): self-review for complex or risky fixes
39
+ - `verification` (L3): validate fix doesn't break existing functionality
40
+ - `docs-seeker` (L3): check correct API usage before applying changes
41
+ - `hallucination-guard` (L3): verify imports after code changes
42
+ - `scout` (L2): find related code before applying changes
43
+ - `neural-memory` (L3): after fix verified — capture fix pattern (cause → solution)
44
+
45
+ ## Called By (inbound)
46
+
47
+ - `cook` (L1): Phase 4 IMPLEMENT — apply code changes
48
+ - `debug` (L2): root cause found, ready to apply fix
49
+ - `review` (L2): bug found during review, needs fixing
50
+ - `surgeon` (L2): apply refactoring changes
51
+ - `review-intake` (L2): apply fixes identified during structured review intake
52
+
53
+ ## Cross-Hub Connections
54
+
55
+ - `fix` ↔ `debug` — bidirectional: debug diagnoses → fix applies, fix can't determine cause → debug investigates
56
+ - `fix` → `test` — after applying fix, run tests to verify
57
+ - `fix` ← `review` — review finds bug → fix applies correction
58
+ - `fix` → `review` — complex fix requests self-review
59
+
60
+ ## Execution
61
+
62
+ ### Step 1: Understand
63
+
64
+ Read and fully understand the fix request before touching any file.
65
+
66
+ - Read the incoming request: debug report, plan spec, or review finding
67
+ - Identify what is broken or missing and what the expected behavior should be
68
+ - If the request is ambiguous or root cause is unclear → call `rune:debug` before proceeding
69
+ - Note the scope: single function, single file, or multi-file change
70
+
71
+ ### Step 1b: Recovery Policy Matrix
72
+
73
+ Before locating code, classify the incoming error/task into a recovery category to determine the right fix strategy. This prevents wasting effort on the wrong approach.
74
+
75
+ | Error Type | Recovery Action | Strategy |
76
+ |------------|----------------|----------|
77
+ | `INPUT_REQUIRED` — missing user input, ambiguous spec | **PROMPT_USER** | Return NEEDS_CONTEXT with specific questions. Do NOT guess. |
78
+ | `INPUT_INVALID` — wrong format, type mismatch, encoding | **AUTO_FIX** | Fix at validation layer. Add schema validation (Zod/Pydantic) if missing. |
79
+ | `TIMEOUT` — operation exceeded time limit | **RETRY** with adjustment | Increase timeout, add retry with exponential backoff, or chunk the operation. |
80
+ | `POLICY_BLOCKED` — security gate, lint rule, contract violation | **ABORT** | Do NOT work around the policy. Report to caller with the specific rule that blocked. |
81
+ | `PERMISSION_DENIED` — auth failure, file access, API scope | **PROMPT_USER** | Cannot fix permissions programmatically. Report exact permission needed. |
82
+ | `DEPENDENCY_ERROR` — missing package, version conflict, broken dep | **AUTO_FIX** | Install missing dep, resolve version conflict, or suggest alternative package. |
83
+ | `LOGIC_ERROR` — wrong output, incorrect calculation, bad algorithm | **INVESTIGATE** | Do NOT auto-fix. Call `rune:debug` — logic errors need root cause analysis. |
84
+ | `ENVIRONMENT_ERROR` — wrong Node/Python version, missing system dep | **PROMPT_USER** | Report exact version/tool needed. Agent cannot change system environment. |
85
+
86
+ **Decision flow**:
87
+ 1. Read the incoming diagnosis/error
88
+ 2. Classify into one of the 8 error types above
89
+ 3. Apply the recovery action — this determines whether to proceed (AUTO_FIX, RETRY), ask (PROMPT_USER), stop (ABORT), or re-diagnose (INVESTIGATE)
90
+ 4. Announce: "Recovery policy: {error_type} → {action}"
91
+
92
+ **Why**: Without a recovery matrix, fix attempts the same strategy (read → change → test) for every error type. A POLICY_BLOCKED error doesn't need code reading — it needs the policy reported. An INPUT_REQUIRED error doesn't need debugging — it needs a question asked. Matching strategy to error type eliminates wasted cycles.
93
+
94
+ ### Step 2: Locate
95
+
96
+ Find the exact files and lines to change.
97
+
98
+ - Use `rune:scout` to locate the relevant files, functions, and surrounding code
99
+ - Use `Read` to examine the specific file:line identified in the debug report or plan
100
+ - Use `Glob` to find related files: types, tests, config that may also need updating
101
+ - Map all touch points before writing a single line of code
102
+
103
+ ### Step 3: Change
104
+
105
+ Apply the minimal set of changes needed.
106
+
107
+ - Use `Edit` for targeted modifications to existing files
108
+ - Use `Write` only when creating a genuinely new file is required
109
+ - Follow project conventions: naming, immutability patterns, error handling style
110
+ - Keep changes minimal — fix the stated problem, do not refactor unrelated code (YAGNI)
111
+ - Never use `any` in TypeScript; never use bare `except:` in Python
112
+ - If a new import is needed → note it for Step 5 hallucination-guard check
113
+
114
+ ### Step 4: Verify
115
+
116
+ Confirm the change works and nothing is broken.
117
+
118
+ - Use `Bash` to run the relevant tests: the specific failing test first, then the full suite
119
+ - If tests fail after the fix:
120
+ - Investigate with `rune:debug` (max 3 debug loops before escalating)
121
+ - Do NOT change test files to make tests pass — fix the implementation code
122
+ - If project has a type-check command, run it via `Bash`
123
+ - If project has a lint command, run it via `Bash`
124
+
125
+ ### Step 4.5: Quality Decay Check (Self-Regulation)
126
+
127
+ When fix is called repeatedly (e.g., by cook Phase 4, or iterative fix loops), track a **WTF-likelihood score** — the probability that continued fixing is making things worse.
128
+
129
+ **Compute every 3 fix attempts** (or when called 5+ times in a single cook session):
130
+
131
+ | Signal | Score Adjustment |
132
+ |--------|-----------------|
133
+ | A fix was reverted (any test that passed now fails) | +15% |
134
+ | Fix touched >3 files (blast radius expanding) | +5% per extra file beyond 3 |
135
+ | 15+ fixes already applied in this session | +1% per fix beyond 15 |
136
+ | All remaining issues are LOW severity | +10% |
137
+ | Fix touched files outside the original diagnosis scope | +20% |
138
+ | Consecutive fixes without running tests between them | +10% |
139
+
140
+ **Thresholds:**
141
+ - **>20% WTF-likelihood**: STOP fixing. Report current state to cook/user with: "Quality decay detected — continued fixes risk introducing more bugs than they resolve. {N} fixes applied, {score}% risk. Recommend: commit current progress, re-assess remaining issues."
142
+ - **Hard cap: 30 fixes per session** — regardless of score. After 30, STOP and report.
143
+
144
+ **Reset conditions:** WTF-likelihood resets to 0% when:
145
+ - User explicitly says "continue fixing"
146
+ - A full test suite run shows zero regressions
147
+ - Scope is narrowed to a single file
148
+
149
+
150
+ ### Step 5: Post-Fix Hardening (Defense-in-Depth)
151
+
152
+ After the fix works, make the bug **structurally impossible** — not just "fixed this time."
153
+
154
+ Single validation at one point can be bypassed by different code paths, refactoring, or mocks. Add validation at EVERY layer data passes through:
155
+
156
+ | Layer | Purpose | Example |
157
+ |-------|---------|---------|
158
+ | **Entry Point** | Reject invalid input at API boundary | Validate params not empty/exists/correct type |
159
+ | **Business Logic** | Ensure data makes sense for this operation | Check preconditions specific to this function |
160
+ | **Environment Guard** | Prevent dangerous ops in specific contexts | In tests: refuse writes outside tmpdir |
161
+ | **Debug Instrumentation** | Capture context for forensics if bug recurs | Log stack trace + key values before risky ops |
162
+
163
+ Apply this when: the bug was caused by invalid data flowing through multiple layers. Skip for trivial one-liner fixes.
164
+
165
+ ### Step 5b: Preserve Debug Instrumentation
166
+
167
+ If `rune:debug` left `#region agent-debug` markers in the code:
168
+
169
+ 1. **During fix**: DO NOT remove these markers — they capture the investigation trail
170
+ 2. **After fix verified** (tests pass, lint pass): scan for `#region agent-debug` markers
171
+ 3. **Remove markers and their contents** in a final cleanup pass ONLY after full verification
172
+ 4. If the fix is partial or tests still fail → KEEP all markers for the next debug cycle
173
+
174
+ **Why:** Premature cleanup of debug instrumentation erases failure history. If the bug recurs after cleanup, the next debug session starts from zero. Keeping markers until verification means downstream skills can see what was already investigated.
175
+
176
+ ### Step 6: Self-Review
177
+
178
+ Verify correctness of the changes just made.
179
+
180
+ - Call `rune:hallucination-guard` to verify all imports introduced or modified are real and correctly named
181
+ - Call `rune:docs-seeker` if any external API, library method, or SDK call was added or changed
182
+ - For complex or risky fixes (auth, data mutation, async logic): call `rune:review` for a full quality check
183
+
184
+ ### Step 6b: Capture Fix Pattern
185
+
186
+ Call `neural-memory` (Capture Mode) to save the fix pattern: what broke, why, and how it was fixed. Priority 7 for recurring bugs.
187
+
188
+ ### Step 7: Report
189
+
190
+ Produce a structured summary of all changes made.
191
+
192
+ - List every file modified and a one-line description of what changed
193
+ - Include verification results (tests, types, lint)
194
+ - Note any follow-up work if the fix is partial or has known limitations
195
+
196
+ ## Constraints
197
+
198
+ 1. MUST NOT change test files to make tests pass — fix the CODE, not the TESTS
199
+ 2. MUST have a diagnosis (from debug or clear error) before applying fixes
200
+ 3. MUST run tests after each fix attempt — never batch multiple untested changes
201
+ 4. MUST NOT exceed 3 fix attempts — if 3 fixes fail, re-diagnose via rune:debug (which will classify: wrong approach → brainstorm rescue, wrong design → plan redesign)
202
+ 5. MUST follow project conventions found by scout — don't invent new patterns
203
+ 6. MUST NOT add unplanned features while fixing — fix only what was diagnosed
204
+ 7. MUST track fix attempt number — this feeds debug's 3-Fix Escalation classification
205
+ 8. MUST preserve `#region agent-debug` markers until fix is fully verified — cleanup only after tests pass
206
+
207
+ ## Scope Gate
208
+
209
+ | Change Type | Action |
210
+ |-------------|--------|
211
+ | Bug fix (diagnosed cause) | Fix it |
212
+ | Security fix (found during fix) | Fix it + flag to sentinel |
213
+ | Blocking issue (can't complete fix without) | Fix it + document in report |
214
+ | Unrelated improvement | **STOP — create separate task** |
215
+ | Architectural change | **STOP — escalate to cook/plan** |
216
+
217
+ If fix requires touching >3 files not in the diagnosis → re-diagnose. You're probably fixing a symptom.
218
+
219
+ ## Mesh Gates
220
+
221
+ | Gate | Requires | If Missing |
222
+ |------|----------|------------|
223
+ | Evidence Gate | Debug report OR clear error description before fixing | Run rune:debug first |
224
+ | Test Gate | Tests run after each fix attempt | Run tests before claiming fix works |
225
+
226
+ ## Output Format
227
+
228
+ ```
229
+ ## Fix Report
230
+ - **Task**: [what was fixed/implemented]
231
+ - **Status**: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
232
+
233
+ ### Changes
234
+ - `path/to/file.ts` — [description of change]
235
+ - `path/to/other.ts` — [description of change]
236
+
237
+ ### Verification
238
+ - Lint: PASS | FAIL
239
+ - Types: PASS | FAIL
240
+ - Tests: PASS | FAIL ([n] passed, [m] failed)
241
+
242
+ ### Concerns (if DONE_WITH_CONCERNS)
243
+ - [concern]: [impact assessment] — [suggested remediation]
244
+
245
+ ### Context Needed (if NEEDS_CONTEXT)
246
+ - [what is unknown]: [why it blocks] — [two most likely answers]
247
+
248
+ ### Blocker (if BLOCKED)
249
+ - [specific blocker]: [what was attempted]
250
+
251
+ ### Notes
252
+ - [any caveats or follow-up needed]
253
+ ```
254
+
255
+ ### Status Protocol (Subagent Contract)
256
+
257
+ Fix returns one of four statuses to its caller (cook, debug, review, surgeon). The caller uses this to route next actions.
258
+
259
+ | Status | When | Example |
260
+ |--------|------|---------|
261
+ | `DONE` | Fix applied, tests pass, no issues | Clean bug fix, all green |
262
+ | `DONE_WITH_CONCERNS` | Fix works but has side effects or caveats worth noting | "Tests pass but performance regressed 15% — consider optimizing in follow-up" |
263
+ | `NEEDS_CONTEXT` | Cannot apply fix without clarification — ambiguous spec or missing info | "Two valid interpretations of the expected behavior — need user input" |
264
+ | `BLOCKED` | Hard blocker — exhausted fix attempts, broken dependency, fundamental incompatibility | "3 fix attempts failed — triggering debug escalation" |
265
+
266
+ ## Returns
267
+
268
+ | Artifact | Format | Location |
269
+ |----------|--------|----------|
270
+ | Code changes | Source files | Per debug report / plan file paths |
271
+ | Fix Report | Markdown (inline) | Emitted to calling skill (cook, debug, review, surgeon) |
272
+ | Verification output | Inline (Fix Report) | Lint + types + test results |
273
+
274
+ ## Chain Metadata
275
+
276
+ Append to Fix Report when invoked standalone. Suppress when called as sub-skill inside an L1 orchestrator (cook, team, etc.) the orchestrator emits a consolidated block. See `docs/references/chain-metadata.md`.
277
+
278
+ ```yaml
279
+ chain_metadata:
280
+ skill: "rune:fix"
281
+ version: "0.9.0"
282
+ status: "[DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED]"
283
+ domain: "[area fixed]"
284
+ files_changed:
285
+ - "[list of modified files]"
286
+ exports:
287
+ fix_applied: { files: ["[paths]"], description: "[what was fixed]" }
288
+ verification: { lint: "[PASS/FAIL]", types: "[PASS/FAIL]", tests: "[PASS/FAIL]" }
289
+ commit_hash: "[hash if committed]"
290
+ suggested_next:
291
+ - skill: "rune:test"
292
+ reason: "[grounded in changes — e.g., 'Modified 3 files in auth module, edge cases need coverage']"
293
+ consumes: ["fix_applied", "verification"]
294
+ ```
295
+
296
+ ## Sharp Edges
297
+
298
+ Known failure modes for this skill. Check these before declaring done.
299
+
300
+ | Failure Mode | Severity | Mitigation |
301
+ |---|---|---|
302
+ | Modifying test files to make tests pass | CRITICAL | HARD-GATE blocks this fix the code, never the tests (unless test setup is provably wrong) |
303
+ | Applying fix without a diagnosis | HIGH | Evidence Gate: need debug report or clear error description before touching code |
304
+ | Exceeding 3 fix attempts without re-diagnosing | HIGH | Constraint 4: after 3 failures, call debug again — the hypothesis was wrong |
305
+ | Introducing unrelated refactoring while fixing | MEDIUM | YAGNI: fix only what was diagnosed — unrelated changes belong in a separate task |
306
+ | Not running tests after each individual change | MEDIUM | Constraint 3: never batch untested changes — run tests after each edit |
307
+ | Fixing at crash site without tracing data origin | HIGH | Defense-in-depth: trace where bad data ORIGINATES, add validation at every layer it passes through |
308
+ | Single-point validation (fix one spot, hope it holds) | MEDIUM | Step 5: add entry + business logic + environment + debug layers for data-flow bugs |
309
+ | Removing debug instrumentation before fix is verified | MEDIUM | Step 5b: preserve `#region agent-debug` markers until all tests pass — premature cleanup erases failure history |
310
+ | Runaway fix loop — 20+ fixes without checking quality decay | HIGH | Step 4.5: WTF-likelihood self-regulation. >20% risk = STOP. Hard cap 30 fixes/session. Each fix adds risk — diminishing returns after ~15 |
311
+ | Each fix creates a new bug elsewhere — whack-a-mole | CRITICAL | Tight coupling signal. STOP fixing → escalate to debug with note "each fix creates new failure — suspect structural issue". Debug will route to plan for redesign |
312
+ | Applying same fix strategy to every error type | MEDIUM | Step 1b Recovery Policy Matrix: classify error type FIRST — POLICY_BLOCKED needs reporting not fixing, INPUT_REQUIRED needs questions not code |
313
+
314
+ ## Done When
315
+
316
+ - Root cause identified (debug report or clear error received)
317
+ - Minimal changes applied targeting only the diagnosed problem
318
+ - Tests pass for the fixed functionality (actual output shown)
319
+ - Lint and type check pass
320
+ - hallucination-guard verified any new imports
321
+ - Fix Report emitted with 4-state status, changed files, and verification results
322
+ - If `DONE_WITH_CONCERNS`: concerns listed with impact + remediation
323
+ - If `NEEDS_CONTEXT`: specific questions stated with two likely answers
324
+ - If `BLOCKED`: blocker + all attempted approaches documented
325
+
326
+ ## Cost Profile
327
+
328
+ ~2000-5000 tokens input, ~1000-3000 tokens output. Sonnet for code writing quality. Most active skill during implementation.
329
+
330
+ **Scope guardrail**: Do not refactor unrelated code or create new features beyond the diagnosed fix target unless explicitly delegated by the parent agent.