@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,200 +1,200 @@
1
- ---
2
- name: safeguard
3
- description: Build safety nets before refactoring. Creates characterization tests, boundary markers, config freezes, and rollback points.
4
- metadata:
5
- author: runedev
6
- version: "0.2.0"
7
- layer: L2
8
- model: sonnet
9
- group: rescue
10
- tools: "Read, Write, Edit, Bash, Glob, Grep"
11
- ---
12
-
13
- # safeguard
14
-
15
- ## Purpose
16
-
17
- Build safety nets before any refactoring begins. Safeguard creates characterization tests that capture current behavior, adds boundary markers to distinguish legacy from new code, freezes config files, and creates git rollback points. Nothing gets refactored without safeguard running first.
18
-
19
- <HARD-GATE>
20
- Characterization tests MUST pass on the current (unmodified) code before any refactoring starts. If they do not pass, safeguard is not complete.
21
- </HARD-GATE>
22
-
23
- ## Called By (inbound)
24
-
25
- - `rescue` (L1): Phase 1 SAFETY NET — build protection before surgery
26
- - `surgeon` (L2): untested module found during surgery
27
-
28
- ## Calls (outbound)
29
-
30
- - `scout` (L2): find all entry points and public interfaces of the target module
31
- - `test` (L2): write and run characterization tests for the target module
32
- - `verification` (L3): verify characterization tests pass on current code
33
-
34
- ## Cross-Hub Connections
35
-
36
- - `surgeon` → `safeguard` — untested module found during surgery
37
-
38
- ## Execution Steps
39
-
40
- ### Step 1 — Identify module boundaries
41
-
42
- Call `rune:scout` targeting the specific module. Ask scout to return:
43
- - All public functions, classes, and exported symbols
44
- - All files that import from this module (consumers)
45
- - All files this module imports from (dependencies)
46
- - Existing test files for this module (if any)
47
-
48
- Use `Read` to open the module entry file and confirm the public interface.
49
-
50
- ### Step 2 — Write characterization tests
51
-
52
- Create a test file at `tests/char/<module-name>.test.ts` (or `.js`, `.py` matching project convention).
53
-
54
- Use `Write` to create the characterization test file. Rules for characterization tests:
55
- - Tests MUST capture what the code CURRENTLY does, not what it should do
56
- - Include edge cases that currently produce surprising output — test for that actual output
57
- - Do NOT fix bugs in characterization tests — if the current code returns wrong data, test for that wrong data
58
- - Cover every public function in the module
59
- - Include at least one integration test calling the module as an external consumer would
60
-
61
- Example structure:
62
- ```typescript
63
- // tests/char/<module>.test.ts
64
- // CHARACTERIZATION TESTS — DO NOT MODIFY without running safeguard again
65
- // These tests capture existing behavior as of: [date]
66
-
67
- describe('<module> — characterization', () => {
68
- it('existing behavior: [function] with [input] returns [actual output]', () => {
69
- // ...
70
- })
71
- })
72
- ```
73
-
74
- ### Step 3 — Add boundary markers
75
-
76
- Use `Edit` to add boundary comments at the top of the module file and at key function boundaries:
77
-
78
- ```typescript
79
- // @legacy — rune-safeguard [date] — do not refactor without characterization tests passing
80
- ```
81
-
82
- For functions flagged by autopsy as high-risk, add:
83
- ```typescript
84
- // @do-not-touch — coupled to [module], change both or neither
85
- ```
86
-
87
- For planned new implementations, mark insertion points:
88
- ```typescript
89
- // @bridge — new-v2 will replace this interface
90
- ```
91
-
92
- ### Step 4 — Config freeze
93
-
94
- Use `Bash` to record current config state:
95
-
96
- ```bash
97
- mkdir -p .rune
98
- cp tsconfig.json .rune/tsconfig.frozen.json 2>/dev/null || true
99
- cp .eslintrc* .rune/ 2>/dev/null || true
100
- cp package-lock.json .rune/package-lock.frozen.json 2>/dev/null || true
101
- echo "Config frozen at $(date)" > .rune/freeze.log
102
- ```
103
-
104
- This preserves the baseline config so surgery can be verified against it.
105
-
106
- ### Step 5 — Create rollback point
107
-
108
- Use `Bash` to create a git tag:
109
-
110
- ```bash
111
- git add -A
112
- git commit -m "chore: safeguard checkpoint before [module] surgery" --allow-empty
113
- git tag rune-safeguard-<module>
114
- ```
115
-
116
- Replace `<module>` with the actual module name. Confirm the tag was created.
117
-
118
- ### Step 6 — Verify
119
-
120
- Call `rune:verification` and explicitly pass the characterization test file path.
121
-
122
- ```
123
- If characterization tests fail on the CURRENT (unchanged) code → STOP.
124
- Fix the tests to match actual behavior before proceeding.
125
- Characterization tests MUST pass on current code. This is non-negotiable.
126
- ```
127
-
128
- Only after verification passes, declare the safety net complete.
129
-
130
- ## Output Format
131
-
132
- ```
133
- ## Safeguard Report
134
- - **Module**: [module name]
135
- - **Tests Added**: [count] characterization tests
136
- - **Coverage**: [before]% → [after]%
137
- - **Markers Added**: [count] boundary comments
138
- - **Rollback Tag**: rune-safeguard-[module]
139
- - **Config Frozen**: [list of files in .rune/]
140
- - **Hard Gate**: PASSED — all characterization tests pass on current code
141
-
142
- ### Characterization Tests
143
- - `tests/char/[module].test.ts` — [count] tests capturing current behavior
144
-
145
- ### Boundary Markers
146
- - `@legacy`: [count] files marked
147
- - `@do-not-touch`: [count] files protected
148
- - `@bridge`: [count] insertion points marked
149
-
150
- ### Config Frozen
151
- - [list of locked config files in .rune/]
152
-
153
- ### Next Step
154
- Safe to proceed with: `rune:surgeon` targeting [module]
155
- ```
156
-
157
- ## Constraints
158
-
159
- 1. MUST write characterization tests that pass on CURRENT code before any refactoring
160
- 2. MUST NOT proceed to surgery if characterization tests fail — the safety net is broken
161
- 3. MUST cover critical paths identified by autopsy — not just easy-to-test functions
162
- 4. MUST verify tests are meaningful — tests that always pass regardless of code are useless
163
-
164
- ## Sharp Edges
165
-
166
- Known failure modes for this skill. Check these before declaring done.
167
-
168
- | Failure Mode | Severity | Mitigation |
169
- |---|---|---|
170
- | Characterization tests that always pass regardless of code (trivial asserts) | CRITICAL | Constraint 4: tests must fail if the module is deleted or its logic is changed |
171
- | Not covering critical paths identified by autopsy | HIGH | Constraint 3: cover high-risk functions first — autopsy flags which ones |
172
- | Characterization tests written to "correct" behavior instead of current behavior | HIGH | Tests capture ACTUAL output, including bugs — do not fix behavior in the tests |
173
- | Skipping config freeze step | MEDIUM | Step 4 is required — baseline config needed for comparison after surgery |
174
- | No git tag created before declaring safeguard complete | MEDIUM | Tag `rune-safeguard-<module>` must exist before surgery begins |
175
-
176
- ## Done When
177
-
178
- - Module boundaries identified via scout (public functions, consumers, dependencies)
179
- - Characterization tests written for all public functions
180
- - Tests PASS on current (unmodified) code — HARD-GATE verified
181
- - Boundary markers added (@legacy, @bridge, @do-not-touch)
182
- - Config files frozen to .rune/
183
- - Git tag `rune-safeguard-<module>` created
184
- - Safeguard Report emitted with test count, coverage, and rollback tag
185
-
186
- ## Returns
187
-
188
- | Artifact | Format | Location |
189
- |----------|--------|----------|
190
- | Characterization test file | TypeScript/JS/Python test | `tests/char/<module>.test.*` |
191
- | Boundary markers | Code comments (@legacy, @bridge) | in-source |
192
- | Frozen config snapshot | Copies of config files | `.rune/*.frozen.*` |
193
- | Git rollback tag | Git tag | `rune-safeguard-<module>` |
194
- | Safeguard Report | Markdown | inline |
195
-
196
- ## Cost Profile
197
-
198
- ~2000-5000 tokens input, ~1000-2000 tokens output. Sonnet for test writing quality.
199
-
200
- **Scope guardrail:** safeguard builds safety nets only — it does not refactor code. All surgery is delegated to `surgeon` after the safeguard HARD-GATE passes.
1
+ ---
2
+ name: safeguard
3
+ description: Build safety nets before refactoring. Creates characterization tests, boundary markers, config freezes, and rollback points.
4
+ metadata:
5
+ author: runedev
6
+ version: "0.2.0"
7
+ layer: L2
8
+ model: sonnet
9
+ group: rescue
10
+ tools: "Read, Write, Edit, Bash, Glob, Grep"
11
+ ---
12
+
13
+ # safeguard
14
+
15
+ ## Purpose
16
+
17
+ Build safety nets before any refactoring begins. Safeguard creates characterization tests that capture current behavior, adds boundary markers to distinguish legacy from new code, freezes config files, and creates git rollback points. Nothing gets refactored without safeguard running first.
18
+
19
+ <HARD-GATE>
20
+ Characterization tests MUST pass on the current (unmodified) code before any refactoring starts. If they do not pass, safeguard is not complete.
21
+ </HARD-GATE>
22
+
23
+ ## Called By (inbound)
24
+
25
+ - `rescue` (L1): Phase 1 SAFETY NET — build protection before surgery
26
+ - `surgeon` (L2): untested module found during surgery
27
+
28
+ ## Calls (outbound)
29
+
30
+ - `scout` (L2): find all entry points and public interfaces of the target module
31
+ - `test` (L2): write and run characterization tests for the target module
32
+ - `verification` (L3): verify characterization tests pass on current code
33
+
34
+ ## Cross-Hub Connections
35
+
36
+ - `surgeon` → `safeguard` — untested module found during surgery
37
+
38
+ ## Execution Steps
39
+
40
+ ### Step 1 — Identify module boundaries
41
+
42
+ Call `rune:scout` targeting the specific module. Ask scout to return:
43
+ - All public functions, classes, and exported symbols
44
+ - All files that import from this module (consumers)
45
+ - All files this module imports from (dependencies)
46
+ - Existing test files for this module (if any)
47
+
48
+ Use `Read` to open the module entry file and confirm the public interface.
49
+
50
+ ### Step 2 — Write characterization tests
51
+
52
+ Create a test file at `tests/char/<module-name>.test.ts` (or `.js`, `.py` matching project convention).
53
+
54
+ Use `Write` to create the characterization test file. Rules for characterization tests:
55
+ - Tests MUST capture what the code CURRENTLY does, not what it should do
56
+ - Include edge cases that currently produce surprising output — test for that actual output
57
+ - Do NOT fix bugs in characterization tests — if the current code returns wrong data, test for that wrong data
58
+ - Cover every public function in the module
59
+ - Include at least one integration test calling the module as an external consumer would
60
+
61
+ Example structure:
62
+ ```typescript
63
+ // tests/char/<module>.test.ts
64
+ // CHARACTERIZATION TESTS — DO NOT MODIFY without running safeguard again
65
+ // These tests capture existing behavior as of: [date]
66
+
67
+ describe('<module> — characterization', () => {
68
+ it('existing behavior: [function] with [input] returns [actual output]', () => {
69
+ // ...
70
+ })
71
+ })
72
+ ```
73
+
74
+ ### Step 3 — Add boundary markers
75
+
76
+ Use `Edit` to add boundary comments at the top of the module file and at key function boundaries:
77
+
78
+ ```typescript
79
+ // @legacy — rune-safeguard [date] — do not refactor without characterization tests passing
80
+ ```
81
+
82
+ For functions flagged by autopsy as high-risk, add:
83
+ ```typescript
84
+ // @do-not-touch — coupled to [module], change both or neither
85
+ ```
86
+
87
+ For planned new implementations, mark insertion points:
88
+ ```typescript
89
+ // @bridge — new-v2 will replace this interface
90
+ ```
91
+
92
+ ### Step 4 — Config freeze
93
+
94
+ Use `Bash` to record current config state:
95
+
96
+ ```bash
97
+ mkdir -p .rune
98
+ cp tsconfig.json .rune/tsconfig.frozen.json 2>/dev/null || true
99
+ cp .eslintrc* .rune/ 2>/dev/null || true
100
+ cp package-lock.json .rune/package-lock.frozen.json 2>/dev/null || true
101
+ echo "Config frozen at $(date)" > .rune/freeze.log
102
+ ```
103
+
104
+ This preserves the baseline config so surgery can be verified against it.
105
+
106
+ ### Step 5 — Create rollback point
107
+
108
+ Use `Bash` to create a git tag:
109
+
110
+ ```bash
111
+ git add -A
112
+ git commit -m "chore: safeguard checkpoint before [module] surgery" --allow-empty
113
+ git tag rune-safeguard-<module>
114
+ ```
115
+
116
+ Replace `<module>` with the actual module name. Confirm the tag was created.
117
+
118
+ ### Step 6 — Verify
119
+
120
+ Call `rune:verification` and explicitly pass the characterization test file path.
121
+
122
+ ```
123
+ If characterization tests fail on the CURRENT (unchanged) code → STOP.
124
+ Fix the tests to match actual behavior before proceeding.
125
+ Characterization tests MUST pass on current code. This is non-negotiable.
126
+ ```
127
+
128
+ Only after verification passes, declare the safety net complete.
129
+
130
+ ## Output Format
131
+
132
+ ```
133
+ ## Safeguard Report
134
+ - **Module**: [module name]
135
+ - **Tests Added**: [count] characterization tests
136
+ - **Coverage**: [before]% → [after]%
137
+ - **Markers Added**: [count] boundary comments
138
+ - **Rollback Tag**: rune-safeguard-[module]
139
+ - **Config Frozen**: [list of files in .rune/]
140
+ - **Hard Gate**: PASSED — all characterization tests pass on current code
141
+
142
+ ### Characterization Tests
143
+ - `tests/char/[module].test.ts` — [count] tests capturing current behavior
144
+
145
+ ### Boundary Markers
146
+ - `@legacy`: [count] files marked
147
+ - `@do-not-touch`: [count] files protected
148
+ - `@bridge`: [count] insertion points marked
149
+
150
+ ### Config Frozen
151
+ - [list of locked config files in .rune/]
152
+
153
+ ### Next Step
154
+ Safe to proceed with: `rune:surgeon` targeting [module]
155
+ ```
156
+
157
+ ## Constraints
158
+
159
+ 1. MUST write characterization tests that pass on CURRENT code before any refactoring
160
+ 2. MUST NOT proceed to surgery if characterization tests fail — the safety net is broken
161
+ 3. MUST cover critical paths identified by autopsy — not just easy-to-test functions
162
+ 4. MUST verify tests are meaningful — tests that always pass regardless of code are useless
163
+
164
+ ## Sharp Edges
165
+
166
+ Known failure modes for this skill. Check these before declaring done.
167
+
168
+ | Failure Mode | Severity | Mitigation |
169
+ |---|---|---|
170
+ | Characterization tests that always pass regardless of code (trivial asserts) | CRITICAL | Constraint 4: tests must fail if the module is deleted or its logic is changed |
171
+ | Not covering critical paths identified by autopsy | HIGH | Constraint 3: cover high-risk functions first — autopsy flags which ones |
172
+ | Characterization tests written to "correct" behavior instead of current behavior | HIGH | Tests capture ACTUAL output, including bugs — do not fix behavior in the tests |
173
+ | Skipping config freeze step | MEDIUM | Step 4 is required — baseline config needed for comparison after surgery |
174
+ | No git tag created before declaring safeguard complete | MEDIUM | Tag `rune-safeguard-<module>` must exist before surgery begins |
175
+
176
+ ## Done When
177
+
178
+ - Module boundaries identified via scout (public functions, consumers, dependencies)
179
+ - Characterization tests written for all public functions
180
+ - Tests PASS on current (unmodified) code — HARD-GATE verified
181
+ - Boundary markers added (@legacy, @bridge, @do-not-touch)
182
+ - Config files frozen to .rune/
183
+ - Git tag `rune-safeguard-<module>` created
184
+ - Safeguard Report emitted with test count, coverage, and rollback tag
185
+
186
+ ## Returns
187
+
188
+ | Artifact | Format | Location |
189
+ |----------|--------|----------|
190
+ | Characterization test file | TypeScript/JS/Python test | `tests/char/<module>.test.*` |
191
+ | Boundary markers | Code comments (@legacy, @bridge) | in-source |
192
+ | Frozen config snapshot | Copies of config files | `.rune/*.frozen.*` |
193
+ | Git rollback tag | Git tag | `rune-safeguard-<module>` |
194
+ | Safeguard Report | Markdown | inline |
195
+
196
+ ## Cost Profile
197
+
198
+ ~2000-5000 tokens input, ~1000-2000 tokens output. Sonnet for test writing quality.
199
+
200
+ **Scope guardrail:** safeguard builds safety nets only — it does not refactor code. All surgery is delegated to `surgeon` after the safeguard HARD-GATE passes.