@soleri/forge 5.4.0 → 5.5.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 (49) hide show
  1. package/dist/scaffolder.js +16 -1
  2. package/dist/scaffolder.js.map +1 -1
  3. package/dist/skills/brain-debrief.md +186 -0
  4. package/dist/skills/brainstorming.md +170 -0
  5. package/dist/skills/code-patrol.md +176 -0
  6. package/dist/skills/context-resume.md +143 -0
  7. package/dist/skills/executing-plans.md +201 -0
  8. package/dist/skills/fix-and-learn.md +164 -0
  9. package/dist/skills/health-check.md +225 -0
  10. package/dist/skills/knowledge-harvest.md +178 -0
  11. package/dist/skills/onboard-me.md +197 -0
  12. package/dist/skills/retrospective.md +189 -0
  13. package/dist/skills/second-opinion.md +142 -0
  14. package/dist/skills/systematic-debugging.md +230 -0
  15. package/dist/skills/test-driven-development.md +266 -0
  16. package/dist/skills/vault-capture.md +154 -0
  17. package/dist/skills/vault-navigator.md +129 -0
  18. package/dist/skills/verification-before-completion.md +170 -0
  19. package/dist/skills/writing-plans.md +207 -0
  20. package/dist/templates/readme.js +38 -0
  21. package/dist/templates/readme.js.map +1 -1
  22. package/dist/templates/setup-script.js +26 -0
  23. package/dist/templates/setup-script.js.map +1 -1
  24. package/dist/templates/skills.d.ts +16 -0
  25. package/dist/templates/skills.js +73 -0
  26. package/dist/templates/skills.js.map +1 -0
  27. package/package.json +2 -2
  28. package/src/__tests__/scaffolder.test.ts +113 -0
  29. package/src/scaffolder.ts +18 -1
  30. package/src/skills/brain-debrief.md +186 -0
  31. package/src/skills/brainstorming.md +170 -0
  32. package/src/skills/code-patrol.md +176 -0
  33. package/src/skills/context-resume.md +143 -0
  34. package/src/skills/executing-plans.md +201 -0
  35. package/src/skills/fix-and-learn.md +164 -0
  36. package/src/skills/health-check.md +225 -0
  37. package/src/skills/knowledge-harvest.md +178 -0
  38. package/src/skills/onboard-me.md +197 -0
  39. package/src/skills/retrospective.md +189 -0
  40. package/src/skills/second-opinion.md +142 -0
  41. package/src/skills/systematic-debugging.md +230 -0
  42. package/src/skills/test-driven-development.md +266 -0
  43. package/src/skills/vault-capture.md +154 -0
  44. package/src/skills/vault-navigator.md +129 -0
  45. package/src/skills/verification-before-completion.md +170 -0
  46. package/src/skills/writing-plans.md +207 -0
  47. package/src/templates/readme.ts +38 -0
  48. package/src/templates/setup-script.ts +26 -0
  49. package/src/templates/skills.ts +82 -0
@@ -0,0 +1,170 @@
1
+ ---
2
+ name: verification-before-completion
3
+ description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
4
+ ---
5
+
6
+ <!-- Adapted from superpowers (MIT License) -->
7
+
8
+ # Verification Before Completion
9
+
10
+ ## Overview
11
+
12
+ Claiming work is complete without verification is dishonesty, not efficiency.
13
+
14
+ **Core principle:** Evidence before claims, always.
15
+
16
+ **Violating the letter of this rule is violating the spirit of this rule.**
17
+
18
+ ## The Iron Law
19
+
20
+ ```
21
+ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
22
+ ```
23
+
24
+ If you haven't run the verification command in this message, you cannot claim it passes.
25
+
26
+ ## The Gate Function
27
+
28
+ ```
29
+ BEFORE claiming any status or expressing satisfaction:
30
+
31
+ 1. IDENTIFY: What command proves this claim?
32
+ 2. RUN: Execute the FULL command (fresh, complete)
33
+ 3. READ: Full output, check exit code, count failures
34
+ 4. VERIFY: Does output confirm the claim?
35
+ - If NO: State actual status with evidence
36
+ - If YES: State claim WITH evidence
37
+ 5. AGENT CHECK: Run system diagnostics
38
+ 6. ONLY THEN: Make the claim
39
+
40
+ Skip any step = lying, not verifying
41
+ ```
42
+
43
+ ## Agent System Checks
44
+
45
+ After passing all verification commands, run system diagnostics:
46
+
47
+ ### Health Check
48
+ ```
49
+ YOUR_AGENT_core op:admin_health
50
+ ```
51
+ Catches issues tests might miss — vault corruption, stale caches, configuration drift.
52
+
53
+ ### Full Diagnostic
54
+ ```
55
+ YOUR_AGENT_core op:admin_diagnostic
56
+ ```
57
+ Comprehensive system check — module status, database integrity, cache health, configuration validity.
58
+
59
+ ### Vault Analytics
60
+ ```
61
+ YOUR_AGENT_core op:admin_vault_analytics
62
+ ```
63
+ Verify knowledge quality metrics — are capture rates healthy? Any degradation?
64
+
65
+ If any check reports problems, address them before claiming completion.
66
+
67
+ ## Common Failures
68
+
69
+ | Claim | Requires | Not Sufficient |
70
+ |-------|----------|----------------|
71
+ | Tests pass | Test command output: 0 failures | Previous run, "should pass" |
72
+ | Linter clean | Linter output: 0 errors | Partial check, extrapolation |
73
+ | Build succeeds | Build command: exit 0 | Linter passing, logs look good |
74
+ | Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
75
+ | Regression test works | Red-green cycle verified | Test passes once |
76
+ | Agent completed | VCS diff shows changes | Agent reports "success" |
77
+ | Requirements met | Line-by-line checklist | Tests passing |
78
+ | Agent healthy | `admin_diagnostic` clean | "No errors in logs" |
79
+
80
+ ## Red Flags - STOP
81
+
82
+ - Using "should", "probably", "seems to"
83
+ - Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
84
+ - About to commit/push/PR without verification
85
+ - Trusting agent success reports
86
+ - Relying on partial verification
87
+ - Thinking "just this once"
88
+ - Tired and wanting work over
89
+ - ANY wording implying success without having run verification
90
+
91
+ ## Rationalization Prevention
92
+
93
+ | Excuse | Reality |
94
+ |--------|---------|
95
+ | "Should work now" | RUN the verification |
96
+ | "I'm confident" | Confidence ≠ evidence |
97
+ | "Just this once" | No exceptions |
98
+ | "Linter passed" | Linter ≠ compiler |
99
+ | "Agent said success" | Verify independently |
100
+ | "I'm tired" | Exhaustion ≠ excuse |
101
+ | "Partial check is enough" | Partial proves nothing |
102
+ | "Different words so rule doesn't apply" | Spirit over letter |
103
+
104
+ ## Key Patterns
105
+
106
+ **Tests:**
107
+ ```
108
+ [Run test command] [See: 34/34 pass] "All tests pass"
109
+ NOT: "Should pass now" / "Looks correct"
110
+ ```
111
+
112
+ **Regression tests (TDD Red-Green):**
113
+ ```
114
+ Write -> Run (pass) -> Revert fix -> Run (MUST FAIL) -> Restore -> Run (pass)
115
+ NOT: "I've written a regression test" (without red-green verification)
116
+ ```
117
+
118
+ **Build:**
119
+ ```
120
+ [Run build] [See: exit 0] "Build passes"
121
+ NOT: "Linter passed" (linter doesn't check compilation)
122
+ ```
123
+
124
+ **Requirements:**
125
+ ```
126
+ Re-read plan -> Create checklist -> Verify each -> Report gaps or completion
127
+ NOT: "Tests pass, phase complete"
128
+ ```
129
+
130
+ **Agent delegation:**
131
+ ```
132
+ Agent reports success -> Check VCS diff -> Verify changes -> Report actual state
133
+ NOT: Trust agent report
134
+ ```
135
+
136
+ ## After Verification — Capture Session
137
+
138
+ Once work is verified complete, capture a session summary so context persists:
139
+
140
+ ```
141
+ YOUR_AGENT_core op:session_capture
142
+ params: {
143
+ summary: "<what was accomplished, files modified, key decisions>"
144
+ }
145
+ ```
146
+
147
+ This ensures the next session has context about what was verified and completed.
148
+
149
+ ## When To Apply
150
+
151
+ **ALWAYS before:**
152
+ - ANY variation of success/completion claims
153
+ - ANY expression of satisfaction
154
+ - ANY positive statement about work state
155
+ - Committing, PR creation, task completion
156
+ - Moving to next task
157
+ - Delegating to agents
158
+
159
+ ## The Bottom Line
160
+
161
+ Run the command. Read the output. THEN claim the result. This is non-negotiable.
162
+
163
+ ## Agent Tools Reference
164
+
165
+ | Op | When to Use |
166
+ |----|-------------|
167
+ | `admin_health` | Quick system health check |
168
+ | `admin_diagnostic` | Comprehensive system diagnostic |
169
+ | `admin_vault_analytics` | Knowledge quality metrics |
170
+ | `session_capture` | Persist verified completion context |
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: writing-plans
3
+ description: Use when you have a spec or requirements for a multi-step task, before touching code
4
+ ---
5
+
6
+ <!-- Adapted from superpowers (MIT License) -->
7
+
8
+ # Writing Plans
9
+
10
+ ## Overview
11
+
12
+ Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste. Document everything they need to know: which files to touch for each task, code, testing, docs they might need to check, how to test it. Give them the whole plan as bite-sized tasks. DRY. YAGNI. TDD. Frequent commits.
13
+
14
+ Assume they are a skilled developer, but know almost nothing about our toolset or problem domain. Assume they don't know good test design very well.
15
+
16
+ **Announce at start:** "I'm using the writing-plans skill to create the implementation plan."
17
+
18
+ **Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md`
19
+
20
+ ## Before Writing — Search First, Plan Second
21
+
22
+ **Never write a plan from scratch.** Always search for existing knowledge first.
23
+
24
+ ### 1. Vault First
25
+ Check the vault for relevant implementation patterns:
26
+
27
+ ```
28
+ YOUR_AGENT_core op:search_intelligent
29
+ params: { query: "<feature being planned>" }
30
+ ```
31
+
32
+ Look for:
33
+ - **Implementation patterns** — proven approaches for similar features
34
+ - **Anti-patterns** — approaches that failed and should be avoided
35
+ - **Testing patterns** — how similar features were tested
36
+
37
+ Also check brain strengths for what's worked:
38
+
39
+ ```
40
+ YOUR_AGENT_core op:brain_strengths
41
+ ```
42
+
43
+ Browse related knowledge domains for additional context:
44
+
45
+ ```
46
+ YOUR_AGENT_core op:vault_domains
47
+ YOUR_AGENT_core op:vault_tags
48
+ ```
49
+
50
+ ### 2. Web Search Second
51
+ If the vault doesn't have implementation guidance, search the web:
52
+ - **Libraries and tools** — is there a package that does this already?
53
+ - **Reference implementations** — how did other projects solve this?
54
+ - **API documentation** — official docs for libraries you'll use
55
+ - **Known issues** — pitfalls others ran into
56
+
57
+ ### 3. Then Write the Plan
58
+ Incorporate vault insights and web findings into the plan. Reference specific vault entries and documentation links when they inform a step. A plan informed by existing knowledge is dramatically better than one written from first principles.
59
+
60
+ ## Create a Tracked Plan
61
+
62
+ Use the agent's planning system to create a tracked, resumable plan:
63
+
64
+ ```
65
+ YOUR_AGENT_core op:create_plan
66
+ params: {
67
+ objective: "<one-sentence goal>",
68
+ scope: { included: [...], excluded: [...] },
69
+ steps: [
70
+ { title: "Step 1 title", description: "details" },
71
+ ...
72
+ ]
73
+ }
74
+ ```
75
+
76
+ This makes the plan persistent across sessions — if context compacts or sessions change, the plan survives.
77
+
78
+ ## Grade the Plan
79
+
80
+ After drafting, grade the plan for quality before presenting to the user:
81
+
82
+ ```
83
+ YOUR_AGENT_core op:plan_grade
84
+ params: { planId: "<id from create_plan>" }
85
+ ```
86
+
87
+ If the grade is below target, auto-improve:
88
+
89
+ ```
90
+ YOUR_AGENT_core op:plan_auto_improve
91
+ params: { planId: "<id>" }
92
+ ```
93
+
94
+ This iterates on the plan — filling gaps, adding missing test steps, clarifying ambiguous instructions. Repeat until the grade meets the target:
95
+
96
+ ```
97
+ YOUR_AGENT_core op:plan_meets_grade
98
+ params: { planId: "<id>", targetGrade: "A" }
99
+ ```
100
+
101
+ ### Iterate on Drafts
102
+
103
+ For complex plans, iterate before finalizing:
104
+
105
+ ```
106
+ YOUR_AGENT_core op:plan_iterate
107
+ params: { planId: "<id>", feedback: "<what needs improvement>" }
108
+ ```
109
+
110
+ This creates a new version of the plan incorporating the feedback, preserving version history.
111
+
112
+ ## Split into Tasks
113
+
114
+ Once the plan is approved, split it into trackable tasks:
115
+
116
+ ```
117
+ YOUR_AGENT_core op:plan_split
118
+ params: { planId: "<id>" }
119
+ ```
120
+
121
+ This generates individual tasks from the plan steps, ready for execution tracking.
122
+
123
+ ## Bite-Sized Task Granularity
124
+
125
+ **Each step is one action (2-5 minutes):**
126
+ - "Write the failing test" - step
127
+ - "Run it to make sure it fails" - step
128
+ - "Implement the minimal code to make the test pass" - step
129
+ - "Run the tests and make sure they pass" - step
130
+ - "Commit" - step
131
+
132
+ ## Plan Document Header
133
+
134
+ **Every plan MUST start with this header:**
135
+
136
+ ```markdown
137
+ # [Feature Name] Implementation Plan
138
+
139
+ > **For Claude:** REQUIRED SUB-SKILL: Use executing-plans to implement this plan task-by-task.
140
+
141
+ **Goal:** [One sentence describing what this builds]
142
+
143
+ **Architecture:** [2-3 sentences about approach]
144
+
145
+ **Tech Stack:** [Key technologies/libraries]
146
+
147
+ ---
148
+ ```
149
+
150
+ ## Task Structure
151
+
152
+ Each task uses this format:
153
+ - Files: Create / Modify / Test paths
154
+ - Step 1: Write the failing test (with code)
155
+ - Step 2: Run test to verify it fails (with expected output)
156
+ - Step 3: Write minimal implementation (with code)
157
+ - Step 4: Run test to verify it passes (with expected output)
158
+ - Step 5: Commit (with exact git commands)
159
+
160
+ ## Remember
161
+ - Exact file paths always
162
+ - Complete code in plan (not "add validation")
163
+ - Exact commands with expected output
164
+ - DRY, YAGNI, TDD, frequent commits
165
+
166
+ ## After Plan Approval
167
+
168
+ Once the user approves the plan, register it for tracking:
169
+
170
+ ```
171
+ YOUR_AGENT_core op:approve_plan
172
+ params: { planId: "<id from create_plan>" }
173
+ ```
174
+
175
+ Check plan stats for an overview:
176
+
177
+ ```
178
+ YOUR_AGENT_core op:plan_stats
179
+ ```
180
+
181
+ ## Execution Handoff
182
+
183
+ After saving the plan, offer execution choice:
184
+
185
+ "Plan complete and saved to `docs/plans/<filename>.md`. Two execution options:
186
+
187
+ **1. Subagent-Driven (this session)** - I dispatch fresh subagent per task, review between tasks, fast iteration
188
+
189
+ **2. Parallel Session (separate)** - Open new session with executing-plans, batch execution with checkpoints
190
+
191
+ Which approach?"
192
+
193
+ ## Agent Tools Reference
194
+
195
+ | Op | When to Use |
196
+ |----|-------------|
197
+ | `search_intelligent` | Find relevant patterns before planning |
198
+ | `brain_strengths` | Check proven approaches |
199
+ | `vault_domains` / `vault_tags` | Browse knowledge landscape |
200
+ | `create_plan` | Create tracked, persistent plan |
201
+ | `plan_grade` | Grade plan quality |
202
+ | `plan_auto_improve` | Auto-fix plan weaknesses |
203
+ | `plan_meets_grade` | Verify grade target reached |
204
+ | `plan_iterate` | Iterate on draft with feedback |
205
+ | `plan_split` | Split plan into trackable tasks |
206
+ | `approve_plan` | Lock in approved plan |
207
+ | `plan_stats` | Overview of plan metrics |
@@ -80,6 +80,44 @@ ${domainRows}
80
80
 
81
81
  ${principleLines}
82
82
 
83
+ ## Built-in Skills
84
+
85
+ ${config.name} ships with 17 structured workflow skills, invocable via \`/<skill-name>\` in Claude Code:
86
+
87
+ **Development Workflows:**
88
+
89
+ | Skill | Description |
90
+ |-------|-------------|
91
+ | \`/test-driven-development\` | Red-green-refactor TDD workflow with vault-informed test patterns |
92
+ | \`/systematic-debugging\` | Root cause investigation — vault search, web search, then diagnose |
93
+ | \`/verification-before-completion\` | Evidence-based completion claims with system diagnostics |
94
+ | \`/brainstorming\` | Collaborative design exploration with vault + web research first |
95
+ | \`/writing-plans\` | Implementation plans with quality grading and auto-improvement |
96
+ | \`/executing-plans\` | Batch execution with loop tracking and plan reconciliation |
97
+ | \`/fix-and-learn\` | Fix bugs and capture root cause — vault search before any fix |
98
+ | \`/code-patrol\` | Review code against YOUR vault patterns, not generic lint rules |
99
+
100
+ **Knowledge Management:**
101
+
102
+ | Skill | Description |
103
+ |-------|-------------|
104
+ | \`/vault-navigator\` | Intelligent vault search — tags, domains, age reports, cross-project |
105
+ | \`/vault-capture\` | Persist knowledge with curator grooming and governance |
106
+ | \`/knowledge-harvest\` | Point at any doc/code — auto-extract patterns into vault |
107
+ | \`/brain-debrief\` | Intelligence report — strengths, gaps, cross-project insights |
108
+
109
+ **Magic UX:**
110
+
111
+ | Skill | Description |
112
+ |-------|-------------|
113
+ | \`/context-resume\` | "What was I working on?" — full context reconstruction |
114
+ | \`/second-opinion\` | Decision support from vault + brain + web combined |
115
+ | \`/retrospective\` | Data-driven sprint/week retro from actual metrics |
116
+ | \`/onboard-me\` | Instant project knowledge tour for newcomers |
117
+ | \`/health-check\` | Vault maintenance — duplicates, contradictions, stale entries |
118
+
119
+ Skills are installed to \`~/.claude/commands/\` during setup. Run \`./scripts/setup.sh\` to install or reinstall.
120
+
83
121
  ## Features
84
122
 
85
123
  ### Knowledge Vault
@@ -1 +1 @@
1
- {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../src/templates/readme.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzE,OAAO,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,IAAI;;EAExC,MAAM,CAAC,WAAW;;SAEX,MAAM,CAAC,IAAI;;;;EAIlB,MAAM,CAAC,IAAI;;;;;;;6EAOgE,MAAM,CAAC,IAAI;;;;;;KAMnF,MAAM,CAAC,EAAE;;;;;;;;eAQC,MAAM,CAAC,IAAI;;;aAGb,MAAM,CAAC,IAAI;;;;;;;uCAOe,MAAM,CAAC,IAAI;;KAE7C,MAAM,CAAC,IAAI;uBACO,MAAM,CAAC,IAAI;KAC7B,MAAM,CAAC,IAAI;;;;;;;;;;OAUT,MAAM,CAAC,EAAE;;;kCAGkB,MAAM,CAAC,EAAE;;;;;;;;;;;;EAYzC,UAAU;;;;EAIV,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+BF,MAAM,CAAC,EAAE;;;;;;;;;;sCAUe,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;cAejC,MAAM,CAAC,IAAI,8CAA8C,MAAM,CAAC,IAAI;gBAClE,MAAM,CAAC,IAAI;;;;eAIZ,MAAM,CAAC,IAAI;;yBAED,MAAM,CAAC,IAAI;;;EAGlC,MAAM,CAAC,IAAI;;;8EAGiE,MAAM,CAAC,IAAI;;;EAGvF,MAAM,CAAC,IAAI;;;+CAGkC,MAAM,CAAC,IAAI;;;EAGxD,MAAM,CAAC,IAAI;;;;;;;;2BAQc,MAAM,CAAC,IAAI;;;EAGpC,MAAM,CAAC,IAAI;;;;;;EAMX,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;EAgBX,MAAM,CAAC,IAAI;;;;0BAIa,MAAM,CAAC,IAAI;;;;;;EAMnC,MAAM,CAAC,IAAI;;;;;;;mJAOsI,MAAM,CAAC,IAAI;;;;;;;EAO5J,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CX,MAAM,CAAC,IAAI;;;;;sCAKyB,MAAM,CAAC,IAAI;;;2CAGN,MAAM,CAAC,IAAI;;;;EAIpD,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCZ,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../src/templates/readme.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzE,OAAO,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,IAAI;;EAExC,MAAM,CAAC,WAAW;;SAEX,MAAM,CAAC,IAAI;;;;EAIlB,MAAM,CAAC,IAAI;;;;;;;6EAOgE,MAAM,CAAC,IAAI;;;;;;KAMnF,MAAM,CAAC,EAAE;;;;;;;;eAQC,MAAM,CAAC,IAAI;;;aAGb,MAAM,CAAC,IAAI;;;;;;;uCAOe,MAAM,CAAC,IAAI;;KAE7C,MAAM,CAAC,IAAI;uBACO,MAAM,CAAC,IAAI;KAC7B,MAAM,CAAC,IAAI;;;;;;;;;;OAUT,MAAM,CAAC,EAAE;;;kCAGkB,MAAM,CAAC,EAAE;;;;;;;;;;;;EAYzC,UAAU;;;;EAIV,cAAc;;;;EAId,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAiEC,MAAM,CAAC,EAAE;;;;;;;;;;sCAUe,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;cAejC,MAAM,CAAC,IAAI,8CAA8C,MAAM,CAAC,IAAI;gBAClE,MAAM,CAAC,IAAI;;;;eAIZ,MAAM,CAAC,IAAI;;yBAED,MAAM,CAAC,IAAI;;;EAGlC,MAAM,CAAC,IAAI;;;8EAGiE,MAAM,CAAC,IAAI;;;EAGvF,MAAM,CAAC,IAAI;;;+CAGkC,MAAM,CAAC,IAAI;;;EAGxD,MAAM,CAAC,IAAI;;;;;;;;2BAQc,MAAM,CAAC,IAAI;;;EAGpC,MAAM,CAAC,IAAI;;;;;;EAMX,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;EAgBX,MAAM,CAAC,IAAI;;;;0BAIa,MAAM,CAAC,IAAI;;;;;;EAMnC,MAAM,CAAC,IAAI;;;;;;;mJAOsI,MAAM,CAAC,IAAI;;;;;;;EAO5J,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CX,MAAM,CAAC,IAAI;;;;;sCAKyB,MAAM,CAAC,IAAI;;;2CAGN,MAAM,CAAC,IAAI;;;;EAIpD,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCZ,CAAC;AACF,CAAC"}
@@ -99,6 +99,32 @@ else
99
99
  fi
100
100
  fi
101
101
 
102
+ # Install skills to ~/.claude/commands/
103
+ SKILLS_DIR="$AGENT_DIR/skills"
104
+ COMMANDS_DIR="$HOME/.claude/commands"
105
+
106
+ if [ -d "$SKILLS_DIR" ]; then
107
+ echo ""
108
+ echo "Installing skills..."
109
+ mkdir -p "$COMMANDS_DIR"
110
+ skill_installed=0
111
+ skill_skipped=0
112
+ for skill_dir in "$SKILLS_DIR"/*/; do
113
+ [ -d "$skill_dir" ] || continue
114
+ skill_file="$skill_dir/SKILL.md"
115
+ [ -f "$skill_file" ] || continue
116
+ skill_name="$(basename "$skill_dir")"
117
+ dest="$COMMANDS_DIR/$skill_name.md"
118
+ if [ -f "$dest" ]; then
119
+ skill_skipped=$((skill_skipped + 1))
120
+ else
121
+ cp "$skill_file" "$dest"
122
+ skill_installed=$((skill_installed + 1))
123
+ fi
124
+ done
125
+ echo "[ok] Skills: $skill_installed installed, $skill_skipped already present"
126
+ fi
127
+
102
128
  ${config.hookPacks?.length
103
129
  ? `# Install hook packs to global ~/.claude/
104
130
  AGENT_CLAUDE_DIR="$AGENT_DIR/.claude"
@@ -1 +1 @@
1
- {"version":3,"file":"setup-script.js","sourceRoot":"","sources":["../../src/templates/setup-script.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,OAAO;;;;cAIK,MAAM,CAAC,EAAE;;YAEX,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;mBAmBJ,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;gCAeE,MAAM,CAAC,IAAI;;;;;;;;oBAQvB,MAAM,CAAC,IAAI;;;wBAGP,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;uFAkBoD,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;;;;qFAmBX,MAAM,CAAC,EAAE;;;;;;;;EAS5F,MAAM,CAAC,SAAS,EAAE,MAAM;QACtB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBL;QACG,CAAC,CAAC,EACN;;;;;4BAK4B,MAAM,CAAC,IAAI;;QAE/B,MAAM,CAAC,IAAI;CAClB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"setup-script.js","sourceRoot":"","sources":["../../src/templates/setup-script.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,OAAO;;;;cAIK,MAAM,CAAC,EAAE;;YAEX,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;mBAmBJ,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;gCAeE,MAAM,CAAC,IAAI;;;;;;;;oBAQvB,MAAM,CAAC,IAAI;;;wBAGP,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;uFAkBoD,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;;;;qFAmBX,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC5F,MAAM,CAAC,SAAS,EAAE,MAAM;QACtB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBL;QACG,CAAC,CAAC,EACN;;;;;4BAK4B,MAAM,CAAC,IAAI;;QAE/B,MAAM,CAAC,IAAI;CAClB,CAAC;AACF,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { AgentConfig } from '../types.js';
2
+ /**
3
+ * Generate skill files for the scaffolded agent.
4
+ * Returns [relativePath, content] tuples for each skill.
5
+ *
6
+ * - Superpowers-adapted skills (MIT): copied as-is
7
+ * - Engine-adapted skills: YOUR_AGENT_core → {config.id}_core
8
+ */
9
+ export declare function generateSkills(config: AgentConfig): Array<[string, string]>;
10
+ /**
11
+ * List all bundled skill names with their descriptions (from YAML frontmatter).
12
+ */
13
+ export declare function listSkillDescriptions(): Array<{
14
+ name: string;
15
+ description: string;
16
+ }>;
@@ -0,0 +1,73 @@
1
+ import { readFileSync, readdirSync } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ const SKILLS_DIR = join(__dirname, '..', 'skills');
6
+ /** Skills that use YOUR_AGENT_core placeholder and need agent-specific substitution. */
7
+ const AGENT_SPECIFIC_SKILLS = new Set([
8
+ 'brain-debrief',
9
+ 'brainstorming',
10
+ 'code-patrol',
11
+ 'context-resume',
12
+ 'executing-plans',
13
+ 'fix-and-learn',
14
+ 'health-check',
15
+ 'knowledge-harvest',
16
+ 'onboard-me',
17
+ 'retrospective',
18
+ 'second-opinion',
19
+ 'systematic-debugging',
20
+ 'test-driven-development',
21
+ 'vault-capture',
22
+ 'vault-navigator',
23
+ 'verification-before-completion',
24
+ 'writing-plans',
25
+ ]);
26
+ /**
27
+ * Generate skill files for the scaffolded agent.
28
+ * Returns [relativePath, content] tuples for each skill.
29
+ *
30
+ * - Superpowers-adapted skills (MIT): copied as-is
31
+ * - Engine-adapted skills: YOUR_AGENT_core → {config.id}_core
32
+ */
33
+ export function generateSkills(config) {
34
+ const files = [];
35
+ let skillFiles;
36
+ try {
37
+ skillFiles = readdirSync(SKILLS_DIR).filter((f) => f.endsWith('.md'));
38
+ }
39
+ catch {
40
+ return files;
41
+ }
42
+ for (const file of skillFiles) {
43
+ const skillName = file.replace('.md', '');
44
+ let content = readFileSync(join(SKILLS_DIR, file), 'utf-8');
45
+ if (AGENT_SPECIFIC_SKILLS.has(skillName)) {
46
+ content = content.replace(/YOUR_AGENT_core/g, `${config.id}_core`);
47
+ }
48
+ files.push([`skills/${skillName}/SKILL.md`, content]);
49
+ }
50
+ return files;
51
+ }
52
+ /**
53
+ * List all bundled skill names with their descriptions (from YAML frontmatter).
54
+ */
55
+ export function listSkillDescriptions() {
56
+ let skillFiles;
57
+ try {
58
+ skillFiles = readdirSync(SKILLS_DIR).filter((f) => f.endsWith('.md'));
59
+ }
60
+ catch {
61
+ return [];
62
+ }
63
+ return skillFiles.map((file) => {
64
+ const content = readFileSync(join(SKILLS_DIR, file), 'utf-8');
65
+ const nameMatch = content.match(/^name:\s*(.+)$/m);
66
+ const descMatch = content.match(/^description:\s*"?(.+?)"?\s*$/m);
67
+ return {
68
+ name: nameMatch?.[1]?.trim() ?? file.replace('.md', ''),
69
+ description: descMatch?.[1]?.trim() ?? '',
70
+ };
71
+ });
72
+ }
73
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/templates/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEnD,wFAAwF;AACxF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,eAAe;IACf,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,yBAAyB;IACzB,eAAe;IACf,iBAAiB;IACjB,gCAAgC;IAChC,eAAe;CAChB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,IAAI,UAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAE5D,IAAI,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,SAAS,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,UAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClE,OAAO;YACL,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACvD,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soleri/forge",
3
- "version": "5.4.0",
3
+ "version": "5.5.0",
4
4
  "description": "Scaffold AI agents that learn, remember, and grow with you.",
5
5
  "keywords": [
6
6
  "agent",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "scripts": {
40
40
  "dev": "tsx src/index.ts",
41
- "build": "tsc",
41
+ "build": "tsc && cp -r src/skills dist/skills",
42
42
  "start": "node dist/index.js",
43
43
  "typecheck": "tsc --noEmit",
44
44
  "test": "vitest run",