@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.
- package/dist/scaffolder.js +16 -1
- package/dist/scaffolder.js.map +1 -1
- package/dist/skills/brain-debrief.md +186 -0
- package/dist/skills/brainstorming.md +170 -0
- package/dist/skills/code-patrol.md +176 -0
- package/dist/skills/context-resume.md +143 -0
- package/dist/skills/executing-plans.md +201 -0
- package/dist/skills/fix-and-learn.md +164 -0
- package/dist/skills/health-check.md +225 -0
- package/dist/skills/knowledge-harvest.md +178 -0
- package/dist/skills/onboard-me.md +197 -0
- package/dist/skills/retrospective.md +189 -0
- package/dist/skills/second-opinion.md +142 -0
- package/dist/skills/systematic-debugging.md +230 -0
- package/dist/skills/test-driven-development.md +266 -0
- package/dist/skills/vault-capture.md +154 -0
- package/dist/skills/vault-navigator.md +129 -0
- package/dist/skills/verification-before-completion.md +170 -0
- package/dist/skills/writing-plans.md +207 -0
- package/dist/templates/readme.js +38 -0
- package/dist/templates/readme.js.map +1 -1
- package/dist/templates/setup-script.js +26 -0
- package/dist/templates/setup-script.js.map +1 -1
- package/dist/templates/skills.d.ts +16 -0
- package/dist/templates/skills.js +73 -0
- package/dist/templates/skills.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/scaffolder.test.ts +113 -0
- package/src/scaffolder.ts +18 -1
- package/src/skills/brain-debrief.md +186 -0
- package/src/skills/brainstorming.md +170 -0
- package/src/skills/code-patrol.md +176 -0
- package/src/skills/context-resume.md +143 -0
- package/src/skills/executing-plans.md +201 -0
- package/src/skills/fix-and-learn.md +164 -0
- package/src/skills/health-check.md +225 -0
- package/src/skills/knowledge-harvest.md +178 -0
- package/src/skills/onboard-me.md +197 -0
- package/src/skills/retrospective.md +189 -0
- package/src/skills/second-opinion.md +142 -0
- package/src/skills/systematic-debugging.md +230 -0
- package/src/skills/test-driven-development.md +266 -0
- package/src/skills/vault-capture.md +154 -0
- package/src/skills/vault-navigator.md +129 -0
- package/src/skills/verification-before-completion.md +170 -0
- package/src/skills/writing-plans.md +207 -0
- package/src/templates/readme.ts +38 -0
- package/src/templates/setup-script.ts +26 -0
- 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 |
|
package/dist/templates/readme.js
CHANGED
|
@@ -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
|
|
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
|
|
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.
|
|
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",
|