@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.
- package/LICENSE +21 -21
- package/README.md +68 -34
- package/agents/adversary.md +27 -0
- package/agents/architect.md +19 -29
- package/agents/asset-creator.md +18 -4
- package/agents/audit.md +25 -4
- package/agents/autopsy.md +19 -4
- package/agents/ba.md +35 -0
- package/agents/brainstorm.md +31 -4
- package/agents/browser-pilot.md +21 -4
- package/agents/coder.md +21 -29
- package/agents/completion-gate.md +20 -4
- package/agents/constraint-check.md +18 -4
- package/agents/context-engine.md +22 -4
- package/agents/context-pack.md +32 -0
- package/agents/cook.md +41 -4
- package/agents/db.md +19 -4
- package/agents/debug.md +33 -4
- package/agents/dependency-doctor.md +20 -4
- package/agents/deploy.md +27 -4
- package/agents/design.md +22 -4
- package/agents/doc-processor.md +27 -0
- package/agents/docs-seeker.md +19 -4
- package/agents/docs.md +31 -0
- package/agents/fix.md +37 -4
- package/agents/git.md +29 -0
- package/agents/hallucination-guard.md +20 -4
- package/agents/incident.md +21 -4
- package/agents/integrity-check.md +18 -4
- package/agents/journal.md +19 -4
- package/agents/launch.md +32 -4
- package/agents/logic-guardian.md +26 -11
- package/agents/marketing.md +23 -4
- package/agents/mcp-builder.md +26 -0
- package/agents/neural-memory.md +30 -0
- package/agents/onboard.md +22 -4
- package/agents/perf.md +21 -4
- package/agents/plan.md +29 -4
- package/agents/preflight.md +22 -4
- package/agents/problem-solver.md +20 -4
- package/agents/rescue.md +23 -4
- package/agents/research.md +19 -4
- package/agents/researcher.md +19 -29
- package/agents/retro.md +32 -0
- package/agents/review-intake.md +20 -4
- package/agents/review.md +32 -4
- package/agents/reviewer.md +20 -28
- package/agents/safeguard.md +19 -4
- package/agents/sast.md +18 -4
- package/agents/scaffold.md +41 -0
- package/agents/scanner.md +19 -28
- package/agents/scope-guard.md +18 -4
- package/agents/scout.md +23 -4
- package/agents/sentinel-env.md +26 -0
- package/agents/sentinel.md +33 -4
- package/agents/sequential-thinking.md +20 -4
- package/agents/session-bridge.md +24 -4
- package/agents/skill-forge.md +22 -4
- package/agents/skill-router.md +26 -4
- package/agents/slides.md +24 -0
- package/agents/surgeon.md +19 -4
- package/agents/team.md +30 -4
- package/agents/test.md +36 -4
- package/agents/trend-scout.md +17 -4
- package/agents/verification.md +20 -4
- package/agents/video-creator.md +20 -4
- package/agents/watchdog.md +19 -4
- package/agents/worktree.md +17 -4
- package/commands/rune.md +168 -168
- package/compiler/__tests__/analytics.test.js +370 -0
- package/compiler/adapters/openclaw.js +2 -2
- package/compiler/analytics.js +385 -0
- package/compiler/bin/rune.js +68 -2
- package/compiler/dashboard.js +883 -0
- package/compiler/transforms/branding.js +1 -1
- package/contexts/dev.md +34 -34
- package/contexts/research.md +43 -43
- package/contexts/review.md +55 -55
- package/extensions/ai-ml/PACK.md +88 -88
- package/extensions/ai-ml/skills/ai-agents.md +172 -172
- package/extensions/ai-ml/skills/code-sandbox.md +187 -187
- package/extensions/ai-ml/skills/deep-research.md +146 -146
- package/extensions/ai-ml/skills/embedding-search.md +66 -66
- package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
- package/extensions/ai-ml/skills/llm-architect.md +125 -125
- package/extensions/ai-ml/skills/llm-integration.md +64 -64
- package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
- package/extensions/ai-ml/skills/rag-patterns.md +66 -66
- package/extensions/ai-ml/skills/web-extraction.md +114 -114
- package/extensions/analytics/PACK.md +92 -92
- package/extensions/analytics/skills/ab-testing.md +72 -72
- package/extensions/analytics/skills/dashboard-patterns.md +83 -83
- package/extensions/analytics/skills/data-validation.md +68 -68
- package/extensions/analytics/skills/funnel-analysis.md +81 -81
- package/extensions/analytics/skills/sql-patterns.md +57 -57
- package/extensions/analytics/skills/statistical-analysis.md +79 -79
- package/extensions/analytics/skills/tracking-setup.md +71 -71
- package/extensions/backend/PACK.md +104 -104
- package/extensions/backend/skills/api-patterns.md +84 -84
- package/extensions/backend/skills/async-pipeline.md +193 -193
- package/extensions/backend/skills/auth-patterns.md +97 -97
- package/extensions/backend/skills/background-jobs.md +133 -133
- package/extensions/backend/skills/caching-patterns.md +108 -108
- package/extensions/backend/skills/cli-generation.md +133 -133
- package/extensions/backend/skills/database-patterns.md +87 -87
- package/extensions/backend/skills/middleware-patterns.md +104 -104
- package/extensions/chrome-ext/PACK.md +93 -93
- package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
- package/extensions/chrome-ext/skills/cws-publish.md +104 -104
- package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
- package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
- package/extensions/chrome-ext/skills/ext-storage.md +133 -133
- package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
- package/extensions/content/PACK.md +96 -96
- package/extensions/content/skills/blog-patterns.md +88 -88
- package/extensions/content/skills/cms-integration.md +131 -131
- package/extensions/content/skills/content-scoring.md +107 -107
- package/extensions/content/skills/i18n.md +83 -83
- package/extensions/content/skills/mdx-authoring.md +137 -137
- package/extensions/content/skills/reference.md +1014 -1014
- package/extensions/content/skills/seo-patterns.md +67 -67
- package/extensions/content/skills/video-repurpose.md +153 -153
- package/extensions/devops/PACK.md +101 -101
- package/extensions/devops/skills/chaos-testing.md +67 -67
- package/extensions/devops/skills/ci-cd.md +75 -75
- package/extensions/devops/skills/docker.md +58 -58
- package/extensions/devops/skills/edge-serverless.md +163 -163
- package/extensions/devops/skills/infra-as-code.md +158 -158
- package/extensions/devops/skills/kubernetes.md +110 -110
- package/extensions/devops/skills/monitoring.md +57 -57
- package/extensions/devops/skills/server-setup.md +64 -64
- package/extensions/devops/skills/ssl-domain.md +42 -42
- package/extensions/ecommerce/PACK.md +116 -116
- package/extensions/ecommerce/skills/cart-system.md +79 -79
- package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
- package/extensions/ecommerce/skills/order-management.md +126 -126
- package/extensions/ecommerce/skills/payment-integration.md +472 -472
- package/extensions/ecommerce/skills/shopify-dev.md +69 -69
- package/extensions/ecommerce/skills/subscription-billing.md +93 -93
- package/extensions/ecommerce/skills/tax-compliance.md +117 -117
- package/extensions/gamedev/PACK.md +142 -142
- package/extensions/gamedev/skills/asset-pipeline.md +74 -74
- package/extensions/gamedev/skills/audio-system.md +129 -129
- package/extensions/gamedev/skills/camera-system.md +87 -87
- package/extensions/gamedev/skills/ecs.md +98 -98
- package/extensions/gamedev/skills/game-loops.md +72 -72
- package/extensions/gamedev/skills/input-system.md +199 -199
- package/extensions/gamedev/skills/multiplayer.md +180 -180
- package/extensions/gamedev/skills/particles.md +105 -105
- package/extensions/gamedev/skills/physics-engine.md +89 -89
- package/extensions/gamedev/skills/scene-management.md +146 -146
- package/extensions/gamedev/skills/threejs-patterns.md +90 -90
- package/extensions/gamedev/skills/webgl.md +71 -71
- package/extensions/mobile/PACK.md +106 -106
- package/extensions/mobile/skills/app-store-connect.md +152 -152
- package/extensions/mobile/skills/app-store-prep.md +66 -66
- package/extensions/mobile/skills/deep-linking.md +109 -109
- package/extensions/mobile/skills/flutter.md +60 -60
- package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
- package/extensions/mobile/skills/native-bridge.md +66 -66
- package/extensions/mobile/skills/ota-updates.md +97 -97
- package/extensions/mobile/skills/push-notifications.md +111 -111
- package/extensions/mobile/skills/react-native.md +82 -82
- package/extensions/saas/PACK.md +116 -116
- package/extensions/saas/skills/billing-integration.md +200 -200
- package/extensions/saas/skills/feature-flags.md +130 -130
- package/extensions/saas/skills/multi-tenant.md +103 -103
- package/extensions/saas/skills/onboarding-flow.md +139 -139
- package/extensions/saas/skills/subscription-flow.md +95 -95
- package/extensions/saas/skills/team-management.md +144 -144
- package/extensions/security/PACK.md +99 -99
- package/extensions/security/skills/api-security.md +140 -140
- package/extensions/security/skills/compliance.md +68 -68
- package/extensions/security/skills/owasp-audit.md +64 -64
- package/extensions/security/skills/pentest-patterns.md +77 -77
- package/extensions/security/skills/secret-mgmt.md +65 -65
- package/extensions/security/skills/supply-chain.md +65 -65
- package/extensions/trading/PACK.md +80 -80
- package/extensions/trading/skills/chart-components.md +55 -55
- package/extensions/trading/skills/experiment-loop.md +125 -125
- package/extensions/trading/skills/fintech-patterns.md +47 -47
- package/extensions/trading/skills/indicator-library.md +58 -58
- package/extensions/trading/skills/quant-analysis.md +111 -111
- package/extensions/trading/skills/realtime-data.md +58 -58
- package/extensions/trading/skills/trade-logic.md +104 -104
- package/extensions/ui/PACK.md +130 -130
- package/extensions/ui/skills/a11y-audit.md +91 -91
- package/extensions/ui/skills/animation-patterns.md +127 -106
- package/extensions/ui/skills/component-patterns.md +100 -75
- package/extensions/ui/skills/design-decision.md +108 -108
- package/extensions/ui/skills/design-system.md +68 -68
- package/extensions/ui/skills/landing-patterns.md +155 -155
- package/extensions/ui/skills/palette-picker.md +173 -173
- package/extensions/ui/skills/react-health.md +90 -90
- package/extensions/ui/skills/type-system.md +125 -125
- package/extensions/ui/skills/web-vitals.md +153 -153
- package/extensions/zalo/PACK.md +145 -145
- package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
- package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
- package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
- package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
- package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
- package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
- package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
- package/hooks/auto-format/index.cjs +48 -48
- package/hooks/context-watch/index.cjs +95 -68
- package/hooks/hooks.json +111 -111
- package/hooks/metrics-collector/index.cjs +86 -42
- package/hooks/post-session-reflect/index.cjs +189 -153
- package/hooks/pre-compact/index.cjs +95 -95
- package/hooks/run-hook.cmd +1 -1
- package/hooks/secrets-scan/index.cjs +100 -100
- package/hooks/session-start/index.cjs +71 -65
- package/hooks/typecheck/index.cjs +65 -65
- package/package.json +63 -63
- package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
- package/references/ui-pro-max-data/charts.csv +26 -26
- package/references/ui-pro-max-data/colors.csv +161 -161
- package/references/ui-pro-max-data/styles.csv +68 -68
- package/references/ui-pro-max-data/typography.csv +74 -74
- package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
- package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
- package/skills/adversary/SKILL.md +283 -283
- package/skills/asset-creator/SKILL.md +157 -157
- package/skills/audit/SKILL.md +148 -2
- package/skills/autopsy/SKILL.md +335 -259
- package/skills/autopsy/references/repo-analysis-patterns.md +113 -0
- package/skills/ba/SKILL.md +72 -2
- package/skills/brainstorm/SKILL.md +342 -341
- package/skills/browser-pilot/SKILL.md +168 -168
- package/skills/constraint-check/SKILL.md +165 -165
- package/skills/context-engine/SKILL.md +404 -404
- package/skills/cook/SKILL.md +917 -834
- package/skills/cook/references/output-format.md +33 -0
- package/skills/db/SKILL.md +273 -272
- package/skills/debug/SKILL.md +465 -443
- package/skills/dependency-doctor/SKILL.md +265 -235
- package/skills/deploy/SKILL.md +274 -231
- package/skills/design/DESIGN-REFERENCE.md +365 -365
- package/skills/design/SKILL.md +589 -482
- package/skills/doc-processor/SKILL.md +254 -254
- package/skills/docs/SKILL.md +374 -373
- package/skills/docs-seeker/SKILL.md +177 -177
- package/skills/fix/SKILL.md +330 -308
- package/skills/git/SKILL.md +339 -339
- package/skills/graft/SKILL.md +352 -0
- package/skills/graft/references/challenge-framework.md +98 -0
- package/skills/graft/references/mode-decision.md +44 -0
- package/skills/hallucination-guard/SKILL.md +219 -219
- package/skills/incident/SKILL.md +254 -251
- package/skills/integrity-check/SKILL.md +169 -169
- package/skills/journal/SKILL.md +240 -238
- package/skills/launch/SKILL.md +344 -342
- package/skills/logic-guardian/SKILL.md +251 -251
- package/skills/marketing/SKILL.md +290 -245
- package/skills/mcp-builder/SKILL.md +425 -423
- package/skills/mcp-builder/references/auto-discovery-pattern.md +169 -0
- package/skills/neural-memory/SKILL.md +362 -362
- package/skills/onboard/SKILL.md +404 -403
- package/skills/perf/SKILL.md +346 -346
- package/skills/plan/SKILL.md +433 -370
- package/skills/plan/references/feature-map.md +84 -0
- package/skills/preflight/SKILL.md +415 -396
- package/skills/problem-solver/SKILL.md +380 -284
- package/skills/rescue/SKILL.md +474 -450
- package/skills/retro/SKILL.md +5 -1
- package/skills/review/SKILL.md +612 -535
- package/skills/review-intake/SKILL.md +249 -249
- package/skills/safeguard/SKILL.md +200 -200
- package/skills/sast/SKILL.md +190 -190
- package/skills/scaffold/SKILL.md +328 -286
- package/skills/scope-guard/SKILL.md +180 -162
- package/skills/scout/SKILL.md +263 -263
- package/skills/sentinel/SKILL.md +382 -353
- package/skills/sentinel-env/SKILL.md +254 -254
- package/skills/sequential-thinking/SKILL.md +234 -234
- package/skills/session-bridge/SKILL.md +543 -397
- package/skills/skill-forge/SKILL.md +581 -539
- package/skills/skill-router/{skill.md → SKILL.md} +30 -2
- package/skills/surgeon/SKILL.md +215 -215
- package/skills/team/SKILL.md +556 -514
- package/skills/test/SKILL.md +614 -587
- package/skills/trend-scout/SKILL.md +145 -145
- package/skills/verification/SKILL.md +326 -325
- package/skills/video-creator/SKILL.md +201 -201
- package/skills/watchdog/SKILL.md +168 -168
- package/skills/worktree/SKILL.md +140 -140
|
@@ -4,7 +4,7 @@ description: "Meta-enforcement layer that routes EVERY agent action through the
|
|
|
4
4
|
user-invocable: false
|
|
5
5
|
metadata:
|
|
6
6
|
author: runedev
|
|
7
|
-
version: "1.
|
|
7
|
+
version: "1.4.0"
|
|
8
8
|
layer: L0
|
|
9
9
|
model: haiku
|
|
10
10
|
group: orchestrator
|
|
@@ -148,9 +148,12 @@ These 5 skills are the main interface. Most user intents route here first:
|
|
|
148
148
|
| Legacy code / rescue / modernize | `rune:rescue` | Old/messy codebase |
|
|
149
149
|
| Check project health / full audit | `rune:audit` | Quality assessment |
|
|
150
150
|
| New project / bootstrap / scaffold | `rune:scaffold` | Greenfield project creation |
|
|
151
|
+
| Auto / autopilot / autonomous / "do it all" / "làm hết" / "đi ngủ" | `rune:autopilot` ⚡Pro | Autonomous multi-session execution (requires approved plan + Pro tier installed) |
|
|
151
152
|
|
|
152
153
|
**Default route**: If unclear, route to `rune:cook`. Cook handles 70% of all requests.
|
|
153
154
|
|
|
155
|
+
> **Pro skill note**: `rune:autopilot` requires `@rune-pro` installed. If not available, fall back to `rune:cook` with the approved plan and inform user that autopilot is a Pro feature.
|
|
156
|
+
|
|
154
157
|
#### Tier 2 — Power User Skills (Direct Invocation)
|
|
155
158
|
|
|
156
159
|
For users who know exactly what they want:
|
|
@@ -328,9 +331,34 @@ These DO NOT need skill routing:
|
|
|
328
331
|
|
|
329
332
|
At the end of a skill's workflow, skill-router MAY suggest a **complementary skill** — limited to ONE recommendation to prevent infinite referral chains.
|
|
330
333
|
|
|
334
|
+
### Chain Metadata Awareness (Priority Source)
|
|
335
|
+
|
|
336
|
+
When a previous skill's output contains a `chain_metadata` block in the conversation context, skill-router MUST use it as the PRIMARY source for next-skill suggestions:
|
|
337
|
+
|
|
338
|
+
1. **Read `chain_metadata.suggested_next`** — these are data-driven recommendations from the skill that just ran. They have MORE context than the hardcoded table below.
|
|
339
|
+
2. **Read `chain_metadata.status`** — override suggestion logic based on outcome:
|
|
340
|
+
- `BLOCKED` → suggest `debug` or `fix` regardless of what the hardcoded table says
|
|
341
|
+
- `NEEDS_CONTEXT` → suggest `scout` or `research`
|
|
342
|
+
- `DONE_WITH_CONCERNS` → suggest `review` or `sentinel`
|
|
343
|
+
3. **Read `chain_metadata.domain`** — trigger L4 pack auto-suggest (see below)
|
|
344
|
+
4. **Forward `chain_metadata.exports`** — when announcing the suggestion, mention what data is available: "Review can use the 5 changed files and test results from cook."
|
|
345
|
+
|
|
346
|
+
**Conflict resolution:** If `chain_metadata.suggested_next` recommends skill A but the hardcoded table below recommends skill B, **prefer chain_metadata** — it was generated from actual output data, not generic rules.
|
|
347
|
+
|
|
348
|
+
**Announcement format with chain_metadata:**
|
|
349
|
+
```
|
|
350
|
+
Suggested next: `rune:<skill>` — <chain_metadata.suggested_next.reason>
|
|
351
|
+
Available data: <list of export keys the suggested skill would consume>
|
|
352
|
+
Run it? (skip to continue)
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Hardcoded Fallback Table
|
|
356
|
+
|
|
357
|
+
When NO chain_metadata is present (skill didn't emit one, or legacy invocation), fall back to this static table:
|
|
358
|
+
|
|
331
359
|
| After This Skill | Suggest | Rationale |
|
|
332
360
|
|-----------------|---------|-----------|
|
|
333
|
-
| `debug` | `
|
|
361
|
+
| `debug` | `fix` | Root cause found — apply the fix |
|
|
334
362
|
| `fix` | `test` | Code changed — verify with tests |
|
|
335
363
|
| `plan` | `adversary` | Plan created — stress-test before implementation |
|
|
336
364
|
| `test` (GREEN) | `preflight` | Tests pass — check for edge cases and completeness |
|
package/skills/surgeon/SKILL.md
CHANGED
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: surgeon
|
|
3
|
-
description: Incremental refactorer. Refactors ONE module per session using proven patterns — Strangler Fig, Branch by Abstraction, Expand-Migrate-Contract.
|
|
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
|
-
# surgeon
|
|
14
|
-
|
|
15
|
-
## Purpose
|
|
16
|
-
|
|
17
|
-
Incremental refactorer that operates on ONE module per session using proven refactoring patterns. Surgeon is precise and safe — it applies small, tested changes with strict blast radius limits. Each surgery session ends with working, tested code committed.
|
|
18
|
-
|
|
19
|
-
<HARD-GATE>
|
|
20
|
-
- Blast radius MUST be checked before starting (max 5 files)
|
|
21
|
-
- Safeguard MUST have run before any edit is made
|
|
22
|
-
- Tests MUST pass after every single edit — never accumulate failing tests
|
|
23
|
-
- Never refactor two coupled modules in the same session
|
|
24
|
-
</HARD-GATE>
|
|
25
|
-
|
|
26
|
-
## Called By (inbound)
|
|
27
|
-
|
|
28
|
-
- `rescue` (L1): Phase 2-N SURGERY — one surgery session per module
|
|
29
|
-
|
|
30
|
-
## Calls (outbound)
|
|
31
|
-
|
|
32
|
-
- `scout` (L2): understand module dependencies, consumers, and blast radius
|
|
33
|
-
- `safeguard` (L2): if untested module found, build safety net first
|
|
34
|
-
- `debug` (L2): when refactoring reveals hidden bugs
|
|
35
|
-
- `fix` (L2): apply refactoring changes
|
|
36
|
-
- `test` (L2): verify after each change
|
|
37
|
-
- `review` (L2): quality check on refactored code
|
|
38
|
-
- `journal` (L3): update rescue progress
|
|
39
|
-
|
|
40
|
-
## Execution Steps
|
|
41
|
-
|
|
42
|
-
### Step 1 — Pre-surgery scan
|
|
43
|
-
|
|
44
|
-
Call `rune:scout` targeting the module to refactor. Ask scout to return:
|
|
45
|
-
- All files the module imports (dependencies)
|
|
46
|
-
- All files that import the module (consumers)
|
|
47
|
-
- Total file count touched (blast radius check)
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
Count the unique files that would be modified in this surgery session.
|
|
51
|
-
If count > 5 → STOP. Split surgery into smaller sessions.
|
|
52
|
-
Report which files are in scope and which must wait for a later session.
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Confirm that `rune:safeguard` has already run for this module (check for `tests/char/<module>.test.ts` and `rune-safeguard-<module>` git tag).
|
|
56
|
-
|
|
57
|
-
If safeguard has NOT run, call `rune:safeguard` now before continuing. Do not skip this.
|
|
58
|
-
|
|
59
|
-
### Step 2 — Select refactoring pattern
|
|
60
|
-
|
|
61
|
-
Based on module characteristics from scout, choose ONE pattern:
|
|
62
|
-
|
|
63
|
-
| Pattern | When to use |
|
|
64
|
-
|---|---|
|
|
65
|
-
| **Strangler Fig** | Module > 500 LOC with many consumers. New code grows alongside legacy, consumers migrate one by one. |
|
|
66
|
-
| **Branch by Abstraction** | Tightly coupled module. Create interface → wrap legacy behind it → build new impl → flip the switch. |
|
|
67
|
-
| **Expand-Migrate-Contract** | Changing a function signature or data shape. Expand (add new), migrate callers, contract (remove old). Each phase = one commit. |
|
|
68
|
-
| **Extract & Simplify** | Specific function with cyclomatic complexity > 10. Extract sub-functions, simplify conditionals. |
|
|
69
|
-
|
|
70
|
-
State the chosen pattern explicitly before starting.
|
|
71
|
-
|
|
72
|
-
### Step 3 — Refactor
|
|
73
|
-
|
|
74
|
-
Use `Edit` for all code changes. Rules:
|
|
75
|
-
- One logical change per `Edit` call — do not batch unrelated changes
|
|
76
|
-
- Changes MUST be small and reversible
|
|
77
|
-
- Never rewrite a file from scratch — use targeted edits
|
|
78
|
-
- Never change more than 5 files total in this session
|
|
79
|
-
- If a change reveals a hidden bug, stop and call `rune:debug` before continuing
|
|
80
|
-
|
|
81
|
-
For **Strangler Fig**: Create the new module file first, then update one consumer at a time.
|
|
82
|
-
|
|
83
|
-
For **Branch by Abstraction**: Create the interface first (commit), wrap legacy (commit), build new impl (commit), switch (commit). Four commits minimum.
|
|
84
|
-
|
|
85
|
-
For **Expand-Migrate-Contract**: Expand (add new API alongside old), migrate each caller (one commit per caller if possible), contract (remove old API last).
|
|
86
|
-
|
|
87
|
-
For **Extract & Simplify**: Extract sub-functions one at a time. Each extraction = one commit.
|
|
88
|
-
|
|
89
|
-
### Step 4 — Test after each change
|
|
90
|
-
|
|
91
|
-
After every `Edit`, call `rune:test` targeting:
|
|
92
|
-
1. The characterization tests from `tests/char/<module>.test.ts`
|
|
93
|
-
2. Any existing unit tests for the module
|
|
94
|
-
3. Any consumer tests affected by this change
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
If any test fails → STOP. Do NOT continue with more edits.
|
|
98
|
-
Call rune:debug to investigate. Fix before next edit.
|
|
99
|
-
The code MUST stay in a working state after every single change.
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Step 5 — Review
|
|
103
|
-
|
|
104
|
-
After all edits for this session are complete and tests pass, call `rune:review` on the changed files.
|
|
105
|
-
|
|
106
|
-
Address any CRITICAL or HIGH issues raised by review before committing.
|
|
107
|
-
|
|
108
|
-
### Step 6 — Commit
|
|
109
|
-
|
|
110
|
-
Use `Bash` to commit this surgery step:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
git add <changed files>
|
|
114
|
-
git commit -m "refactor(<module>): [pattern] — [what was done]"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
The commit message MUST describe which pattern was used and what changed. Each commit must leave the codebase in a fully working state.
|
|
118
|
-
|
|
119
|
-
### Step 7 — Update journal
|
|
120
|
-
|
|
121
|
-
Call `rune:journal` to record:
|
|
122
|
-
- Module operated on
|
|
123
|
-
- Pattern used
|
|
124
|
-
- Files changed
|
|
125
|
-
- Health score delta (estimated)
|
|
126
|
-
- What remains for next session (if partial)
|
|
127
|
-
|
|
128
|
-
## Refactoring Patterns
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
STRANGLER FIG — New code grows around legacy (module > 500 LOC, many consumers)
|
|
132
|
-
BRANCH BY ABSTRACTION — Interface → wrap legacy → build new → switch
|
|
133
|
-
EXPAND-MIGRATE-CONTRACT — Each step is one safe commit
|
|
134
|
-
EXTRACT & SIMPLIFY — For complex functions (cyclomatic > 10)
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Safety Rules
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
- NEVER refactor 2 coupled modules in same session
|
|
141
|
-
- ALWAYS run tests after each change
|
|
142
|
-
- Max blast radius: 5 files per session
|
|
143
|
-
- If context low → STOP, save state, commit partial work
|
|
144
|
-
- Each commit must leave code in working state
|
|
145
|
-
- Never skip safeguard, even for "simple" changes
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Output Format
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
## Surgery Report: [Module Name]
|
|
152
|
-
- **Pattern**: [chosen pattern]
|
|
153
|
-
- **Status**: complete | partial (safe stopping point reached)
|
|
154
|
-
- **Health**: [before] → [after estimated]
|
|
155
|
-
- **Files Changed**: [list, max 5]
|
|
156
|
-
- **Commits**: [count]
|
|
157
|
-
|
|
158
|
-
### Steps Taken
|
|
159
|
-
1. [step] — [result] — [test status]
|
|
160
|
-
|
|
161
|
-
### Remaining (if partial)
|
|
162
|
-
- [what's left for next surgery session]
|
|
163
|
-
- Recommended: re-run rune:surgeon targeting [module] — session 2
|
|
164
|
-
|
|
165
|
-
### Next Step
|
|
166
|
-
[if complete]: Run rune:autopsy to update health scores
|
|
167
|
-
[if partial]: Commit this checkpoint, then start new surgeon session for remaining work
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Constraints
|
|
171
|
-
|
|
172
|
-
1. MUST verify safeguard tests pass before making any edit
|
|
173
|
-
2. MUST check blast radius before starting — max 5 files per session
|
|
174
|
-
3. MUST run tests after EVERY individual edit — never accumulate untested changes
|
|
175
|
-
4. MUST NOT change function signatures without updating all callers
|
|
176
|
-
5. MUST preserve external behavior — refactoring changes structure, not behavior
|
|
177
|
-
|
|
178
|
-
## Sharp Edges
|
|
179
|
-
|
|
180
|
-
Known failure modes for this skill. Check these before declaring done.
|
|
181
|
-
|
|
182
|
-
| Failure Mode | Severity | Mitigation |
|
|
183
|
-
|---|---|---|
|
|
184
|
-
| Editing without confirming safeguard ran first | CRITICAL | HARD-GATE: check for `tests/char/<module>.test.*` AND `rune-safeguard-<module>` tag before first edit |
|
|
185
|
-
| Exceeding 5-file blast radius without splitting | HIGH | HARD-GATE: count files in scope before starting — stop and split if > 5 |
|
|
186
|
-
| Batching multiple edits before running tests | HIGH | HARD-GATE: run tests after every single Edit call — never accumulate untested changes |
|
|
187
|
-
| Wrong pattern chosen for module size/type | MEDIUM | Match pattern explicitly: Strangler Fig = large/many-consumers, Extract = high cyclomatic complexity |
|
|
188
|
-
| Not committing at safe stopping points when context runs low | MEDIUM | Every commit = working state — stop before context limit, not after losing partial work |
|
|
189
|
-
|
|
190
|
-
## Done When
|
|
191
|
-
|
|
192
|
-
- Safeguard confirmed (char tests + rollback tag exist)
|
|
193
|
-
- Blast radius checked and within 5 files
|
|
194
|
-
- Refactoring pattern selected and stated explicitly
|
|
195
|
-
- All edits applied with tests passing after each individual edit
|
|
196
|
-
- Characterization tests still pass after all changes
|
|
197
|
-
- review passed on changed files
|
|
198
|
-
- Surgery committed with message format `refactor(<module>): <pattern> — <description>`
|
|
199
|
-
- journal updated with module health delta and remaining work
|
|
200
|
-
|
|
201
|
-
## Returns
|
|
202
|
-
|
|
203
|
-
| Artifact | Format | Location |
|
|
204
|
-
|----------|--------|----------|
|
|
205
|
-
| Refactored module | Edited source files (max 5) | in-place |
|
|
206
|
-
| Before/after diff | Git diff | via `git diff` |
|
|
207
|
-
| Surgery Report | Markdown | inline |
|
|
208
|
-
| Git commit(s) | Conventional commits | git history |
|
|
209
|
-
| Journal entry | Text | via `journal` L3 |
|
|
210
|
-
|
|
211
|
-
## Cost Profile
|
|
212
|
-
|
|
213
|
-
~3000-6000 tokens input, ~1000-2000 tokens output. Sonnet. One module per session.
|
|
214
|
-
|
|
215
|
-
**Scope guardrail:** surgeon operates on ONE module per session (max 5 files). Any work beyond that scope must be deferred to a separate surgeon session.
|
|
1
|
+
---
|
|
2
|
+
name: surgeon
|
|
3
|
+
description: Incremental refactorer. Refactors ONE module per session using proven patterns — Strangler Fig, Branch by Abstraction, Expand-Migrate-Contract.
|
|
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
|
+
# surgeon
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Incremental refactorer that operates on ONE module per session using proven refactoring patterns. Surgeon is precise and safe — it applies small, tested changes with strict blast radius limits. Each surgery session ends with working, tested code committed.
|
|
18
|
+
|
|
19
|
+
<HARD-GATE>
|
|
20
|
+
- Blast radius MUST be checked before starting (max 5 files)
|
|
21
|
+
- Safeguard MUST have run before any edit is made
|
|
22
|
+
- Tests MUST pass after every single edit — never accumulate failing tests
|
|
23
|
+
- Never refactor two coupled modules in the same session
|
|
24
|
+
</HARD-GATE>
|
|
25
|
+
|
|
26
|
+
## Called By (inbound)
|
|
27
|
+
|
|
28
|
+
- `rescue` (L1): Phase 2-N SURGERY — one surgery session per module
|
|
29
|
+
|
|
30
|
+
## Calls (outbound)
|
|
31
|
+
|
|
32
|
+
- `scout` (L2): understand module dependencies, consumers, and blast radius
|
|
33
|
+
- `safeguard` (L2): if untested module found, build safety net first
|
|
34
|
+
- `debug` (L2): when refactoring reveals hidden bugs
|
|
35
|
+
- `fix` (L2): apply refactoring changes
|
|
36
|
+
- `test` (L2): verify after each change
|
|
37
|
+
- `review` (L2): quality check on refactored code
|
|
38
|
+
- `journal` (L3): update rescue progress
|
|
39
|
+
|
|
40
|
+
## Execution Steps
|
|
41
|
+
|
|
42
|
+
### Step 1 — Pre-surgery scan
|
|
43
|
+
|
|
44
|
+
Call `rune:scout` targeting the module to refactor. Ask scout to return:
|
|
45
|
+
- All files the module imports (dependencies)
|
|
46
|
+
- All files that import the module (consumers)
|
|
47
|
+
- Total file count touched (blast radius check)
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Count the unique files that would be modified in this surgery session.
|
|
51
|
+
If count > 5 → STOP. Split surgery into smaller sessions.
|
|
52
|
+
Report which files are in scope and which must wait for a later session.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Confirm that `rune:safeguard` has already run for this module (check for `tests/char/<module>.test.ts` and `rune-safeguard-<module>` git tag).
|
|
56
|
+
|
|
57
|
+
If safeguard has NOT run, call `rune:safeguard` now before continuing. Do not skip this.
|
|
58
|
+
|
|
59
|
+
### Step 2 — Select refactoring pattern
|
|
60
|
+
|
|
61
|
+
Based on module characteristics from scout, choose ONE pattern:
|
|
62
|
+
|
|
63
|
+
| Pattern | When to use |
|
|
64
|
+
|---|---|
|
|
65
|
+
| **Strangler Fig** | Module > 500 LOC with many consumers. New code grows alongside legacy, consumers migrate one by one. |
|
|
66
|
+
| **Branch by Abstraction** | Tightly coupled module. Create interface → wrap legacy behind it → build new impl → flip the switch. |
|
|
67
|
+
| **Expand-Migrate-Contract** | Changing a function signature or data shape. Expand (add new), migrate callers, contract (remove old). Each phase = one commit. |
|
|
68
|
+
| **Extract & Simplify** | Specific function with cyclomatic complexity > 10. Extract sub-functions, simplify conditionals. |
|
|
69
|
+
|
|
70
|
+
State the chosen pattern explicitly before starting.
|
|
71
|
+
|
|
72
|
+
### Step 3 — Refactor
|
|
73
|
+
|
|
74
|
+
Use `Edit` for all code changes. Rules:
|
|
75
|
+
- One logical change per `Edit` call — do not batch unrelated changes
|
|
76
|
+
- Changes MUST be small and reversible
|
|
77
|
+
- Never rewrite a file from scratch — use targeted edits
|
|
78
|
+
- Never change more than 5 files total in this session
|
|
79
|
+
- If a change reveals a hidden bug, stop and call `rune:debug` before continuing
|
|
80
|
+
|
|
81
|
+
For **Strangler Fig**: Create the new module file first, then update one consumer at a time.
|
|
82
|
+
|
|
83
|
+
For **Branch by Abstraction**: Create the interface first (commit), wrap legacy (commit), build new impl (commit), switch (commit). Four commits minimum.
|
|
84
|
+
|
|
85
|
+
For **Expand-Migrate-Contract**: Expand (add new API alongside old), migrate each caller (one commit per caller if possible), contract (remove old API last).
|
|
86
|
+
|
|
87
|
+
For **Extract & Simplify**: Extract sub-functions one at a time. Each extraction = one commit.
|
|
88
|
+
|
|
89
|
+
### Step 4 — Test after each change
|
|
90
|
+
|
|
91
|
+
After every `Edit`, call `rune:test` targeting:
|
|
92
|
+
1. The characterization tests from `tests/char/<module>.test.ts`
|
|
93
|
+
2. Any existing unit tests for the module
|
|
94
|
+
3. Any consumer tests affected by this change
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
If any test fails → STOP. Do NOT continue with more edits.
|
|
98
|
+
Call rune:debug to investigate. Fix before next edit.
|
|
99
|
+
The code MUST stay in a working state after every single change.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Step 5 — Review
|
|
103
|
+
|
|
104
|
+
After all edits for this session are complete and tests pass, call `rune:review` on the changed files.
|
|
105
|
+
|
|
106
|
+
Address any CRITICAL or HIGH issues raised by review before committing.
|
|
107
|
+
|
|
108
|
+
### Step 6 — Commit
|
|
109
|
+
|
|
110
|
+
Use `Bash` to commit this surgery step:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
git add <changed files>
|
|
114
|
+
git commit -m "refactor(<module>): [pattern] — [what was done]"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The commit message MUST describe which pattern was used and what changed. Each commit must leave the codebase in a fully working state.
|
|
118
|
+
|
|
119
|
+
### Step 7 — Update journal
|
|
120
|
+
|
|
121
|
+
Call `rune:journal` to record:
|
|
122
|
+
- Module operated on
|
|
123
|
+
- Pattern used
|
|
124
|
+
- Files changed
|
|
125
|
+
- Health score delta (estimated)
|
|
126
|
+
- What remains for next session (if partial)
|
|
127
|
+
|
|
128
|
+
## Refactoring Patterns
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
STRANGLER FIG — New code grows around legacy (module > 500 LOC, many consumers)
|
|
132
|
+
BRANCH BY ABSTRACTION — Interface → wrap legacy → build new → switch
|
|
133
|
+
EXPAND-MIGRATE-CONTRACT — Each step is one safe commit
|
|
134
|
+
EXTRACT & SIMPLIFY — For complex functions (cyclomatic > 10)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Safety Rules
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
- NEVER refactor 2 coupled modules in same session
|
|
141
|
+
- ALWAYS run tests after each change
|
|
142
|
+
- Max blast radius: 5 files per session
|
|
143
|
+
- If context low → STOP, save state, commit partial work
|
|
144
|
+
- Each commit must leave code in working state
|
|
145
|
+
- Never skip safeguard, even for "simple" changes
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Output Format
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
## Surgery Report: [Module Name]
|
|
152
|
+
- **Pattern**: [chosen pattern]
|
|
153
|
+
- **Status**: complete | partial (safe stopping point reached)
|
|
154
|
+
- **Health**: [before] → [after estimated]
|
|
155
|
+
- **Files Changed**: [list, max 5]
|
|
156
|
+
- **Commits**: [count]
|
|
157
|
+
|
|
158
|
+
### Steps Taken
|
|
159
|
+
1. [step] — [result] — [test status]
|
|
160
|
+
|
|
161
|
+
### Remaining (if partial)
|
|
162
|
+
- [what's left for next surgery session]
|
|
163
|
+
- Recommended: re-run rune:surgeon targeting [module] — session 2
|
|
164
|
+
|
|
165
|
+
### Next Step
|
|
166
|
+
[if complete]: Run rune:autopsy to update health scores
|
|
167
|
+
[if partial]: Commit this checkpoint, then start new surgeon session for remaining work
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Constraints
|
|
171
|
+
|
|
172
|
+
1. MUST verify safeguard tests pass before making any edit
|
|
173
|
+
2. MUST check blast radius before starting — max 5 files per session
|
|
174
|
+
3. MUST run tests after EVERY individual edit — never accumulate untested changes
|
|
175
|
+
4. MUST NOT change function signatures without updating all callers
|
|
176
|
+
5. MUST preserve external behavior — refactoring changes structure, not behavior
|
|
177
|
+
|
|
178
|
+
## Sharp Edges
|
|
179
|
+
|
|
180
|
+
Known failure modes for this skill. Check these before declaring done.
|
|
181
|
+
|
|
182
|
+
| Failure Mode | Severity | Mitigation |
|
|
183
|
+
|---|---|---|
|
|
184
|
+
| Editing without confirming safeguard ran first | CRITICAL | HARD-GATE: check for `tests/char/<module>.test.*` AND `rune-safeguard-<module>` tag before first edit |
|
|
185
|
+
| Exceeding 5-file blast radius without splitting | HIGH | HARD-GATE: count files in scope before starting — stop and split if > 5 |
|
|
186
|
+
| Batching multiple edits before running tests | HIGH | HARD-GATE: run tests after every single Edit call — never accumulate untested changes |
|
|
187
|
+
| Wrong pattern chosen for module size/type | MEDIUM | Match pattern explicitly: Strangler Fig = large/many-consumers, Extract = high cyclomatic complexity |
|
|
188
|
+
| Not committing at safe stopping points when context runs low | MEDIUM | Every commit = working state — stop before context limit, not after losing partial work |
|
|
189
|
+
|
|
190
|
+
## Done When
|
|
191
|
+
|
|
192
|
+
- Safeguard confirmed (char tests + rollback tag exist)
|
|
193
|
+
- Blast radius checked and within 5 files
|
|
194
|
+
- Refactoring pattern selected and stated explicitly
|
|
195
|
+
- All edits applied with tests passing after each individual edit
|
|
196
|
+
- Characterization tests still pass after all changes
|
|
197
|
+
- review passed on changed files
|
|
198
|
+
- Surgery committed with message format `refactor(<module>): <pattern> — <description>`
|
|
199
|
+
- journal updated with module health delta and remaining work
|
|
200
|
+
|
|
201
|
+
## Returns
|
|
202
|
+
|
|
203
|
+
| Artifact | Format | Location |
|
|
204
|
+
|----------|--------|----------|
|
|
205
|
+
| Refactored module | Edited source files (max 5) | in-place |
|
|
206
|
+
| Before/after diff | Git diff | via `git diff` |
|
|
207
|
+
| Surgery Report | Markdown | inline |
|
|
208
|
+
| Git commit(s) | Conventional commits | git history |
|
|
209
|
+
| Journal entry | Text | via `journal` L3 |
|
|
210
|
+
|
|
211
|
+
## Cost Profile
|
|
212
|
+
|
|
213
|
+
~3000-6000 tokens input, ~1000-2000 tokens output. Sonnet. One module per session.
|
|
214
|
+
|
|
215
|
+
**Scope guardrail:** surgeon operates on ONE module per session (max 5 files). Any work beyond that scope must be deferred to a separate surgeon session.
|