@soleri/forge 9.15.0 → 9.16.7

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 (108) hide show
  1. package/dist/compose-claude-md.js +5 -2
  2. package/dist/compose-claude-md.js.map +1 -1
  3. package/dist/scaffold-filetree.js +8 -1
  4. package/dist/scaffold-filetree.js.map +1 -1
  5. package/dist/skills/soleri-agent-dev/SKILL.md +1 -0
  6. package/dist/skills/soleri-agent-guide/SKILL.md +1 -0
  7. package/dist/skills/soleri-agent-issues/SKILL.md +1 -0
  8. package/dist/skills/soleri-agent-mode/SKILL.md +173 -0
  9. package/dist/skills/soleri-agent-persona/SKILL.md +1 -0
  10. package/dist/skills/soleri-brain-debrief/SKILL.md +1 -0
  11. package/dist/skills/soleri-brainstorming/SKILL.md +1 -0
  12. package/dist/skills/soleri-build-skill/SKILL.md +2 -0
  13. package/dist/skills/soleri-code-patrol/SKILL.md +1 -0
  14. package/dist/skills/soleri-context-resume/SKILL.md +1 -0
  15. package/dist/skills/soleri-curator/SKILL.md +66 -0
  16. package/dist/skills/soleri-deep-review/SKILL.md +1 -0
  17. package/dist/skills/soleri-deliver-and-ship/SKILL.md +1 -0
  18. package/dist/skills/soleri-discovery-phase/SKILL.md +1 -0
  19. package/dist/skills/soleri-dream/SKILL.md +31 -1
  20. package/dist/skills/soleri-env-setup/SKILL.md +1 -0
  21. package/dist/skills/soleri-executing-plans/SKILL.md +1 -0
  22. package/dist/skills/soleri-finishing-a-development-branch/SKILL.md +1 -0
  23. package/dist/skills/soleri-fix-and-learn/SKILL.md +1 -0
  24. package/dist/skills/soleri-health-check/SKILL.md +1 -0
  25. package/dist/skills/soleri-intake/SKILL.md +100 -0
  26. package/dist/skills/soleri-knowledge-harvest/SKILL.md +1 -0
  27. package/dist/skills/soleri-loop/SKILL.md +69 -0
  28. package/dist/skills/soleri-mcp-doctor/SKILL.md +1 -0
  29. package/dist/skills/soleri-onboard-me/SKILL.md +1 -0
  30. package/dist/skills/soleri-orchestrate/SKILL.md +70 -0
  31. package/dist/skills/soleri-parallel-execute/SKILL.md +1 -0
  32. package/dist/skills/soleri-research-scout/SKILL.md +1 -0
  33. package/dist/skills/soleri-retrospective/SKILL.md +1 -0
  34. package/dist/skills/soleri-second-opinion/SKILL.md +1 -0
  35. package/dist/skills/soleri-subagent-driven-development/SKILL.md +1 -0
  36. package/dist/skills/soleri-systematic-debugging/SKILL.md +1 -0
  37. package/dist/skills/soleri-test-driven-development/SKILL.md +1 -0
  38. package/dist/skills/soleri-using-git-worktrees/SKILL.md +1 -0
  39. package/dist/skills/soleri-vault-capture/SKILL.md +6 -5
  40. package/dist/skills/soleri-vault-curate/SKILL.md +1 -0
  41. package/dist/skills/soleri-vault-navigator/SKILL.md +1 -0
  42. package/dist/skills/soleri-vault-smells/SKILL.md +1 -0
  43. package/dist/skills/soleri-verification-before-completion/SKILL.md +1 -0
  44. package/dist/skills/soleri-writing-plans/SKILL.md +6 -3
  45. package/dist/skills/soleri-yolo-mode/SKILL.md +1 -0
  46. package/dist/templates/claude-md-template.js +2 -29
  47. package/dist/templates/claude-md-template.js.map +1 -1
  48. package/dist/templates/package-json.js +2 -0
  49. package/dist/templates/package-json.js.map +1 -1
  50. package/dist/templates/setup-script.js +6 -63
  51. package/dist/templates/setup-script.js.map +1 -1
  52. package/dist/templates/shared-rules.js +11 -4
  53. package/dist/templates/shared-rules.js.map +1 -1
  54. package/dist/templates/skills.d.ts +13 -0
  55. package/dist/templates/skills.js +55 -3
  56. package/dist/templates/skills.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/__tests__/scaffold-filetree.test.ts +1 -1
  59. package/src/__tests__/scaffolder.test.ts +108 -112
  60. package/src/compose-claude-md.ts +5 -1
  61. package/src/scaffold-filetree.ts +8 -1
  62. package/src/skills/soleri-agent-dev/SKILL.md +1 -0
  63. package/src/skills/soleri-agent-guide/SKILL.md +1 -0
  64. package/src/skills/soleri-agent-issues/SKILL.md +1 -0
  65. package/src/skills/soleri-agent-mode/SKILL.md +173 -0
  66. package/src/skills/soleri-agent-persona/SKILL.md +1 -0
  67. package/src/skills/soleri-brain-debrief/SKILL.md +1 -0
  68. package/src/skills/soleri-brainstorming/SKILL.md +1 -0
  69. package/src/skills/soleri-build-skill/SKILL.md +2 -0
  70. package/src/skills/soleri-code-patrol/SKILL.md +1 -0
  71. package/src/skills/soleri-context-resume/SKILL.md +1 -0
  72. package/src/skills/soleri-curator/SKILL.md +66 -0
  73. package/src/skills/soleri-deep-review/SKILL.md +1 -0
  74. package/src/skills/soleri-deliver-and-ship/SKILL.md +1 -0
  75. package/src/skills/soleri-discovery-phase/SKILL.md +1 -0
  76. package/src/skills/soleri-dream/SKILL.md +31 -1
  77. package/src/skills/soleri-env-setup/SKILL.md +1 -0
  78. package/src/skills/soleri-executing-plans/SKILL.md +1 -0
  79. package/src/skills/soleri-finishing-a-development-branch/SKILL.md +1 -0
  80. package/src/skills/soleri-fix-and-learn/SKILL.md +1 -0
  81. package/src/skills/soleri-health-check/SKILL.md +1 -0
  82. package/src/skills/soleri-intake/SKILL.md +100 -0
  83. package/src/skills/soleri-knowledge-harvest/SKILL.md +1 -0
  84. package/src/skills/soleri-loop/SKILL.md +69 -0
  85. package/src/skills/soleri-mcp-doctor/SKILL.md +1 -0
  86. package/src/skills/soleri-onboard-me/SKILL.md +1 -0
  87. package/src/skills/soleri-orchestrate/SKILL.md +70 -0
  88. package/src/skills/soleri-parallel-execute/SKILL.md +1 -0
  89. package/src/skills/soleri-research-scout/SKILL.md +1 -0
  90. package/src/skills/soleri-retrospective/SKILL.md +1 -0
  91. package/src/skills/soleri-second-opinion/SKILL.md +1 -0
  92. package/src/skills/soleri-subagent-driven-development/SKILL.md +1 -0
  93. package/src/skills/soleri-systematic-debugging/SKILL.md +1 -0
  94. package/src/skills/soleri-test-driven-development/SKILL.md +1 -0
  95. package/src/skills/soleri-using-git-worktrees/SKILL.md +1 -0
  96. package/src/skills/soleri-vault-capture/SKILL.md +6 -5
  97. package/src/skills/soleri-vault-curate/SKILL.md +1 -0
  98. package/src/skills/soleri-vault-navigator/SKILL.md +1 -0
  99. package/src/skills/soleri-vault-smells/SKILL.md +1 -0
  100. package/src/skills/soleri-verification-before-completion/SKILL.md +1 -0
  101. package/src/skills/soleri-writing-plans/SKILL.md +6 -3
  102. package/src/skills/soleri-yolo-mode/SKILL.md +1 -0
  103. package/src/templates/claude-md-template.ts +2 -50
  104. package/src/templates/package-json.ts +2 -0
  105. package/src/templates/setup-script.ts +6 -63
  106. package/src/templates/shared-rules.ts +11 -4
  107. package/src/templates/skills.ts +63 -3
  108. package/vitest.config.ts +2 -1
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: soleri-intake
3
+ tier: default
4
+ description: >
5
+ Use when the user says "ingest this", "add this URL", "import this book",
6
+ "read and capture", "ingest batch", or when processing external content
7
+ into the vault. Handles URLs, text, books, and batch imports with
8
+ automatic knowledge extraction.
9
+ ---
10
+
11
+ # Intake — Ingest External Content
12
+
13
+ Import external content (URLs, books, text, batch files) into the vault with automatic knowledge extraction. The intake skill handles chunking, entity extraction, and vault persistence so you don't have to do it manually.
14
+
15
+ ## When to Use
16
+
17
+ - User pastes a URL ("save this article to vault")
18
+ - User shares a book or long document ("ingest this book into your knowledge base")
19
+ - User wants to capture raw text from an external source
20
+ - Batch importing multiple sources at once
21
+
22
+ ## Orchestration
23
+
24
+ ### Step 1: Identify Content Type
25
+
26
+ Determine what the user is providing:
27
+
28
+ | Type | Use Op | When |
29
+ | ---------------- | -------------- | -------------------------------- |
30
+ | URL | `ingest_url` | User pastes a web link |
31
+ | Book / long doc | `ingest_book` | PDF, long markdown, or file path |
32
+ | Raw text | `ingest_text` | User pastes text directly |
33
+ | Multiple sources | `ingest_batch` | List of URLs or file paths |
34
+
35
+ ### Step 2: Ingest
36
+
37
+ **URL:**
38
+
39
+ ```
40
+ YOUR_AGENT_intake op:ingest_url
41
+ params: {
42
+ url: "<url>",
43
+ domain: "<inferred domain>",
44
+ tags: ["<tag1>", "<tag2>"]
45
+ }
46
+ ```
47
+
48
+ **Book / Long Document:**
49
+
50
+ ```
51
+ YOUR_AGENT_intake op:ingest_book
52
+ params: {
53
+ path: "<file path or url>",
54
+ title: "<document title>",
55
+ domain: "<domain>",
56
+ chunkStrategy: "chapter"
57
+ }
58
+ ```
59
+
60
+ **Raw Text:**
61
+
62
+ ```
63
+ YOUR_AGENT_intake op:ingest_text
64
+ params: {
65
+ text: "<content>",
66
+ title: "<descriptive title>",
67
+ domain: "<domain>",
68
+ tags: ["<tag>"]
69
+ }
70
+ ```
71
+
72
+ **Batch:**
73
+
74
+ ```
75
+ YOUR_AGENT_intake op:ingest_batch
76
+ params: {
77
+ sources: [
78
+ { type: "url", value: "<url1>" },
79
+ { type: "url", value: "<url2>" }
80
+ ],
81
+ domain: "<domain>"
82
+ }
83
+ ```
84
+
85
+ ### Step 3: Report Results
86
+
87
+ Present a summary table:
88
+
89
+ | Field | Value |
90
+ | ------------------- | ----------------- |
91
+ | **Entries created** | {count} |
92
+ | **Domain** | {domain} |
93
+ | **Tags** | {tags.join(', ')} |
94
+ | **Status** | {status} |
95
+
96
+ If any sources failed, list them with reasons so the user can retry.
97
+
98
+ ## Exit Criteria
99
+
100
+ All content ingested, entry IDs confirmed, results reported to user.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-knowledge-harvest
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "learn from this", "harvest knowledge", "ingest this",
5
6
  or "extract patterns from". Extracts multiple patterns from a source like
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: soleri-loop
3
+ tier: default
4
+ description: >
5
+ Use when the user says "start a loop", "run until done", "iterate until X",
6
+ "loop status", or "cancel loop". Manages iterative execution loops that
7
+ repeat a task until a condition is met or a grade threshold is reached.
8
+ ---
9
+
10
+ # Loop — Iterative Execution
11
+
12
+ Run a task in a loop until a condition is met — grade threshold, promise fulfilled, or explicit cancellation. Useful for plan refinement, quality iteration, and autonomous improvement cycles.
13
+
14
+ ## When to Use
15
+
16
+ - Improving a plan until it reaches grade A
17
+ - Running validation until all tests pass
18
+ - Any task that needs to repeat with self-correction until done
19
+
20
+ ## Orchestration
21
+
22
+ ### Step 1: Start Loop
23
+
24
+ ```
25
+ YOUR_AGENT_loop op:loop_start
26
+ params: {
27
+ prompt: "<task description>",
28
+ mode: "<plan-iteration | custom>",
29
+ maxIterations: <number, default 10>
30
+ }
31
+ ```
32
+
33
+ **Modes:**
34
+
35
+ - `plan-iteration` — repeats `create_plan` until grade >= A (target-based)
36
+ - `custom` — user-defined stop condition; loop continues until promise satisfied
37
+
38
+ Note the `loopId` from the response — needed for status and cancel.
39
+
40
+ ### Step 2: Monitor
41
+
42
+ At each iteration, check status:
43
+
44
+ ```
45
+ YOUR_AGENT_loop op:loop_status
46
+ params: { loopId: "<loopId>" }
47
+ ```
48
+
49
+ Report progress to user:
50
+
51
+ | Field | Value |
52
+ | ------------------ | ------------------------------------ |
53
+ | **Iteration** | {currentIteration} / {maxIterations} |
54
+ | **Status** | {status} |
55
+ | **Last result** | {lastResult} |
56
+ | **Stop condition** | {stopCondition} |
57
+
58
+ ### Step 3: Cancel (if needed)
59
+
60
+ If the user wants to stop early:
61
+
62
+ ```
63
+ YOUR_AGENT_loop op:loop_cancel
64
+ params: { loopId: "<loopId>", reason: "<why stopping>" }
65
+ ```
66
+
67
+ ## Exit Criteria
68
+
69
+ Loop completes when: stop condition is met, max iterations reached, or user explicitly cancels. Report final outcome and iteration count.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-mcp-doctor
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "MCP not working", "tools missing", "fix MCP",
5
6
  "mcp doctor", or "server not connecting". Diagnoses and repairs MCP server
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-onboard-me
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "onboard me", "I'm new here", "project overview",
5
6
  or "what should I know about this codebase". Provides a structured tour
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: soleri-orchestrate
3
+ tier: default
4
+ description: >
5
+ Use when the user gives a work task: "implement X", "build Y", "fix Z",
6
+ "add feature", or any request that requires planning and execution.
7
+ Runs the full orchestration loop: plan → execute → complete with vault
8
+ context and brain recommendations built in.
9
+ ---
10
+
11
+ # Orchestrate — Full Work Loop
12
+
13
+ Run the full work loop with vault intelligence: plan the task, execute it step by step, and close with knowledge capture. Use this for any non-trivial task where missing context or skipping steps would cost time.
14
+
15
+ ## When to Use
16
+
17
+ - User gives a concrete work task ("implement auth", "refactor the parser", "fix the flaky test")
18
+ - Task spans multiple files or has cross-cutting concerns
19
+ - You want vault patterns and brain recommendations surfaced automatically
20
+
21
+ ## Orchestration
22
+
23
+ ### Step 1: Plan
24
+
25
+ ```
26
+ YOUR_AGENT_orchestrate op:orchestrate_plan
27
+ params: {
28
+ prompt: "<user task description>",
29
+ context: { domain: "<inferred domain>" }
30
+ }
31
+ ```
32
+
33
+ Present the plan to the user. If grade < A-, ask for approval before proceeding.
34
+
35
+ ### Step 2: Execute
36
+
37
+ Once approved, begin execution. For each task in the plan:
38
+
39
+ ```
40
+ YOUR_AGENT_orchestrate op:orchestrate_execute
41
+ params: {
42
+ planId: "<planId from step 1>",
43
+ taskId: "<current task id>",
44
+ output: "<what you did>"
45
+ }
46
+ ```
47
+
48
+ Log progress after each task: show completed count / total and current task title.
49
+
50
+ ### Step 3: Complete
51
+
52
+ After all tasks are done:
53
+
54
+ ```
55
+ YOUR_AGENT_orchestrate op:orchestrate_complete
56
+ params: {
57
+ planId: "<planId>",
58
+ summary: "<one-line outcome>",
59
+ operatorSignals: {
60
+ qualityNotes: "<any quality observations>",
61
+ unexpectedComplexity: <true|false>
62
+ }
63
+ }
64
+ ```
65
+
66
+ Report the completion summary and any knowledge captured.
67
+
68
+ ## Exit Criteria
69
+
70
+ All plan tasks executed, `orchestrate_complete` called with outcome, knowledge persisted to vault.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-parallel-execute
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "run in parallel", "fan out", "concurrent execution",
5
6
  "batch execute", or "dispatch subagents". Executes independent plan tasks
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-research-scout
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "scout", "research scout", "find new info",
5
6
  "what's new", or "scan the web". Discovers new information that challenges
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-retrospective
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "sprint retro", "weekly summary", "what went well",
5
6
  "end of sprint", or "monthly report". Time-bound reflection on recent work
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-second-opinion
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "second opinion", "technical decision",
5
6
  "comparing approaches", or "which approach". Provides informed recommendations
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-subagent-driven-development
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "use subagents", "parallel agents",
5
6
  "subagent driven", or "isolated execution". Decomposes work into isolated
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-systematic-debugging
3
+ tier: default
3
4
  description: >
4
5
  Use as the FIRST response when something is broken — "bug", "failing test",
5
6
  "not working", "debug this", "error", "crash", or "weird issue". Diagnoses
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-test-driven-development
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "TDD", "write tests first", "red green refactor",
5
6
  or "test driven". Write failing tests before implementation code for any
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-using-git-worktrees
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "worktree", "parallel branch", "safe branch",
5
6
  or "isolated branch". Provides the protocol for creating, working in,
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: soleri-vault-capture
3
+ tier: default
3
4
  description: >
4
- Use when the user says "save this", "capture this", "remember this pattern",
5
- "add to vault", "vault capture", or when persisting learnings from a work
6
- session. Validated capture with tier scoping, duplicate detection, and
7
- abstraction review. For bulk extraction from documents, code, or PRs, use
8
- knowledge-harvest instead.
5
+ Use when the user says "save this to vault", "capture this", "remember this pattern",
6
+ "add to vault", "vault capture", or when persisting learnings from a work session.
7
+ Priority over memory_capture for durable knowledge (patterns, decisions, anti-patterns).
8
+ For quick session notes say "save this as a memory" to use memory_capture instead.
9
+ For bulk extraction from documents, code, or PRs, use knowledge-harvest.
9
10
  ---
10
11
 
11
12
  # Vault Capture — Validated Knowledge Persistence
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-vault-curate
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "clean vault", "deduplicate vault", "groom knowledge",
5
6
  "merge patterns", or "vault maintenance". Maintains vault quality through
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-vault-navigator
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "search the vault", "find patterns for",
5
6
  "have we seen this before", "vault search", or "best practice for".
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-vault-smells
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "vault quality", "vault analysis", "knowledge quality",
5
6
  "knowledge debt", "stale patterns", or "find contradictions". Deep knowledge
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-verification-before-completion
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "verify this works", "check output", "quality gate",
5
6
  or "run tests before done". Internal quality gate before claiming any task
@@ -1,9 +1,12 @@
1
1
  ---
2
2
  name: soleri-writing-plans
3
+ tier: default
3
4
  description: >
4
- Use when the user says "create a plan", "break this down", or
5
- "plan the implementation". Creates structured implementation plans when
6
- requirements are already known. For exploration, use brainstorming.
5
+ Use when the user says "create a plan", "write up a plan", "break this down",
6
+ or "plan the implementation". Produces a human-readable markdown plan file.
7
+ Takes priority over orchestrate_plan MCP op for explicit plan-writing requests.
8
+ For exploration or ideation, use brainstorming. For automated task orchestration,
9
+ the engine uses orchestrate_plan directly without this skill.
7
10
  ---
8
11
 
9
12
  # Writing Plans
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: soleri-yolo-mode
3
+ tier: default
3
4
  description: >
4
5
  Use when the user says "yolo", "autonomous", "skip approvals",
5
6
  "full auto", or "hands off". Activates autonomous execution mode
@@ -62,35 +62,8 @@ export function generateClaudeMdTemplate(config) {
62
62
  `On every new session: ${bt}${toolPrefix}_orchestrate op:session_start params:{ projectPath: "." }${bt}`,
63
63
  '',
64
64
  ];
65
- // ─── Compact Facade Table ───────────────────────────────
66
- mdLines.push('## Essential Tools', `<!-- ${toolPrefix}:tools -->`, '', '| Facade | Key Ops |', '|--------|---------|', `| ${bt}${toolPrefix}_core${bt} | ${bt}health${bt}, ${bt}search${bt}, ${bt}identity${bt}, ${bt}session_start${bt}, ${bt}activate${bt} |`);
67
- // Domain facades — one row per domain
68
- for (const d of config.domains) {
69
- const toolName = `${toolPrefix}_${d.replace(/-/g, '_')}`;
70
- mdLines.push(`| ${bt}${toolName}${bt} | ${bt}get_patterns${bt}, ${bt}search${bt}, ${bt}capture${bt} |`);
71
- }
72
- // Domain pack facades (if any)
73
- if (config.domainPacks?.length) {
74
- mdLines.push('', '**Domain Pack Facades:**', '');
75
- for (const ref of config.domainPacks) {
76
- mdLines.push(`| ${bt}${ref.name}${bt} (pack: ${bt}${ref.package}${bt}) | *custom ops — see ${bt}admin_tool_list${bt}* |`);
77
- }
78
- }
79
- // Engine facades — use actual tool names (standalone facades, NOT _core sub-groups)
80
- mdLines.push(
81
- // Vault — knowledge lifecycle, capture, search, management
82
- `| ${bt}${toolPrefix}_vault${bt} | ${bt}search_intelligent${bt}, ${bt}capture_knowledge${bt}, ${bt}capture_quick${bt}, ${bt}search_feedback${bt} |`, `| ${bt}${toolPrefix}_vault${bt} (keeper) | ${bt}knowledge_audit${bt}, ${bt}knowledge_health${bt}, ${bt}knowledge_merge${bt}, ${bt}knowledge_reorganize${bt} |`, `| ${bt}${toolPrefix}_vault${bt} (mgmt) | ${bt}vault_get${bt}, ${bt}vault_update${bt}, ${bt}vault_remove${bt}, ${bt}vault_tags${bt}, ${bt}vault_domains${bt}, ${bt}vault_recent${bt} |`,
83
- // Curator — quality, dedup, contradictions, grooming
84
- `| ${bt}${toolPrefix}_curator${bt} | ${bt}curator_status${bt}, ${bt}curator_detect_duplicates${bt}, ${bt}curator_contradictions${bt}, ${bt}curator_groom_all${bt}, ${bt}curator_consolidate${bt}, ${bt}curator_health_audit${bt} |`, `| ${bt}${toolPrefix}_curator${bt} (advanced) | ${bt}curator_enrich${bt}, ${bt}curator_hybrid_contradictions${bt}, ${bt}curator_entry_history${bt}, ${bt}curator_queue_stats${bt} |`,
85
- // Planning, orchestration, brain
86
- `| ${bt}${toolPrefix}_plan${bt} | ${bt}create_plan${bt}, ${bt}approve_plan${bt}, ${bt}plan_split${bt}, ${bt}plan_reconcile${bt}, ${bt}plan_complete_lifecycle${bt} |`, `| ${bt}${toolPrefix}_orchestrate${bt} | ${bt}orchestrate_plan${bt}, ${bt}orchestrate_execute${bt}, ${bt}orchestrate_complete${bt} |`, `| ${bt}${toolPrefix}_brain${bt} | ${bt}brain_stats${bt}, ${bt}brain_feedback${bt}, ${bt}rebuild_vocabulary${bt}, ${bt}brain_strengths${bt}, ${bt}brain_recommend${bt} |`,
87
- // Memory, control, loop
88
- `| ${bt}${toolPrefix}_memory${bt} | ${bt}memory_search${bt}, ${bt}memory_capture${bt}, ${bt}session_capture${bt} |`, `| ${bt}${toolPrefix}_control${bt} | ${bt}route_intent${bt}, ${bt}morph${bt}, ${bt}get_behavior_rules${bt}, ${bt}governance_dashboard${bt}, ${bt}governance_policy${bt} |`, `| ${bt}${toolPrefix}_loop${bt} | ${bt}loop_start${bt}, ${bt}loop_iterate${bt}, ${bt}loop_status${bt}, ${bt}loop_cancel${bt} |`,
89
- // Intelligence — context, agency
90
- `| ${bt}${toolPrefix}_context${bt} | ${bt}context_extract_entities${bt}, ${bt}context_retrieve_knowledge${bt}, ${bt}context_analyze${bt} |`, `| ${bt}${toolPrefix}_agency${bt} | ${bt}agency_enable${bt}, ${bt}agency_status${bt}, ${bt}agency_surface_patterns${bt}, ${bt}agency_warnings${bt}, ${bt}agency_clarify${bt} |`,
91
- // Admin
92
- `| ${bt}${toolPrefix}_admin${bt} | ${bt}admin_health${bt}, ${bt}admin_tool_list${bt}, ${bt}admin_diagnostic${bt} |`);
93
- mdLines.push('', `> Full list: ${bt}${toolPrefix}_admin op:admin_tool_list${bt}`, '');
65
+ // ─── Skill pointer (replaces inline facade table) ───────
66
+ mdLines.push(`> Command reference: use the ${bt}${toolPrefix}-agent-mode${bt} skill or run ${bt}${toolPrefix}_admin op:admin_tool_list${bt}`, '');
94
67
  // ─── Hook Packs (conditional) ──────────────────────────
95
68
  appendHookPacks(mdLines, config);
96
69
  // ─── Closing marker ────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md-template.js","sourceRoot":"","sources":["../../src/templates/claude-md-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-md-template.js","sourceRoot":"","sources":["../../src/templates/claude-md-template.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export function generatePackageJson(config) {
7
7
  main: 'dist/index.js',
8
8
  bin: { [`${config.id}-mcp`]: 'dist/index.js' },
9
9
  scripts: {
10
+ postinstall: 'soleri hooks sync || true',
10
11
  dev: 'tsx src/index.ts',
11
12
  build: 'tsc && node scripts/copy-assets.js',
12
13
  start: 'node dist/index.js',
@@ -37,6 +38,7 @@ export function generatePackageJson(config) {
37
38
  '@anthropic-ai/sdk': '^0.39.0',
38
39
  },
39
40
  devDependencies: {
41
+ '@soleri/cli': '^9.0.0',
40
42
  '@types/node': '^22.13.4',
41
43
  '@vitest/coverage-v8': '^3.0.5',
42
44
  tsx: '^4.19.2',
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,MAAM,CAAC,EAAE;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE;QAC9C,OAAO,EAAE;YACP,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,oCAAoC;YAC3C,KAAK,EAAE,oBAAoB;YAC3B,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,QAAQ;YACtB,eAAe,EAAE,uBAAuB;YACxC,GAAG,CAAC,MAAM,CAAC,QAAQ;gBACjB,CAAC,CAAC;oBACE,gBAAgB,EAAE,kCAAkC;oBACpD,cAAc,EAAE,yBAAyB;iBAC1C;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC7B,YAAY,EAAE;YACZ,2BAA2B,EAAE,SAAS;YACtC,cAAc,EAAE,QAAQ;YACxB,GAAG,EAAE,SAAS;YACd,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM;gBAC5B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC3F,CAAC,CAAC,EAAE,CAAC;SACR;QACD,oBAAoB,EAAE;YACpB,mBAAmB,EAAE,SAAS;SAC/B;QACD,eAAe,EAAE;YACf,aAAa,EAAE,UAAU;YACzB,qBAAqB,EAAE,QAAQ;YAC/B,GAAG,EAAE,SAAS;YACd,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/templates/package-json.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,MAAM,CAAC,EAAE;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE;QAC9C,OAAO,EAAE;YACP,WAAW,EAAE,2BAA2B;YACxC,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,oCAAoC;YAC3C,KAAK,EAAE,oBAAoB;YAC3B,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,QAAQ;YACtB,eAAe,EAAE,uBAAuB;YACxC,GAAG,CAAC,MAAM,CAAC,QAAQ;gBACjB,CAAC,CAAC;oBACE,gBAAgB,EAAE,kCAAkC;oBACpD,cAAc,EAAE,yBAAyB;iBAC1C;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;QAC7B,YAAY,EAAE;YACZ,2BAA2B,EAAE,SAAS;YACtC,cAAc,EAAE,QAAQ;YACxB,GAAG,EAAE,SAAS;YACd,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM;gBAC5B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC3F,CAAC,CAAC,EAAE,CAAC;SACR;QACD,oBAAoB,EAAE;YACpB,mBAAmB,EAAE,SAAS;SAC/B;QACD,eAAe,EAAE;YACf,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE,UAAU;YACzB,qBAAqB,EAAE,QAAQ;YAC/B,GAAG,EAAE,SAAS;YACd,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -32,72 +32,15 @@ echo "Registering ${config.name} with Claude Code..."
32
32
  claude mcp add --scope user "$AGENT_NAME" -- node "$AGENT_DIR/dist/index.js"
33
33
  echo "[ok] Registered ${config.name} as MCP server (Claude Code)"
34
34
 
35
- # Configure PreCompact hook for session capture
36
- SETTINGS_FILE="$HOME/.claude/settings.json"
35
+ # Sync lifecycle hooks into ~/.claude/settings.json
37
36
  echo ""
38
- echo "Configuring Claude session capture hook..."
39
-
40
- if [ ! -d "$HOME/.claude" ]; then
41
- mkdir -p "$HOME/.claude"
42
- fi
43
-
44
- if [ ! -f "$SETTINGS_FILE" ]; then
45
- cat > "$SETTINGS_FILE" << SETTINGS
46
- {
47
- "hooks": {
48
- "PreCompact": [
49
- {
50
- "type": "prompt",
51
- "prompt": "Before context is compacted, capture a session summary by calling ${config.id}_core op:session_capture with a brief summary of what was accomplished, the topics covered, files modified, and tools used."
52
- }
53
- ],
54
- "SessionStart": [
55
- {
56
- "type": "command",
57
- "command": "sh $AGENT_DIR/scripts/clean-worktrees.sh",
58
- "timeout": 10
59
- }
60
- ]
61
- }
62
- }
63
- SETTINGS
64
- echo "[ok] Created $SETTINGS_FILE with PreCompact + SessionStart hooks"
37
+ echo "Syncing lifecycle hooks..."
38
+ if command -v soleri &>/dev/null; then
39
+ soleri hooks sync
65
40
  else
66
- if grep -q "PreCompact" "$SETTINGS_FILE" 2>/dev/null; then
67
- echo "[ok] PreCompact hook already configured — skipping"
68
- else
69
- node -e "
70
- const fs = require('fs');
71
- const settings = JSON.parse(fs.readFileSync('$SETTINGS_FILE', 'utf-8'));
72
- if (!settings.hooks) settings.hooks = {};
73
- if (!settings.hooks.PreCompact) settings.hooks.PreCompact = [];
74
- settings.hooks.PreCompact.push({
75
- type: 'prompt',
76
- prompt: 'Before context is compacted, capture a session summary by calling ${config.id}_core op:session_capture with a brief summary of what was accomplished, the topics covered, files modified, and tools used.'
77
- });
78
- fs.writeFileSync('$SETTINGS_FILE', JSON.stringify(settings, null, 2) + '\\n');
79
- "
80
- echo "[ok] Added PreCompact hook to $SETTINGS_FILE"
81
- fi
82
- # Add SessionStart worktree cleanup hook
83
- if grep -q "clean-worktrees" "$SETTINGS_FILE" 2>/dev/null; then
84
- echo "[ok] SessionStart worktree cleanup hook already configured"
85
- else
86
- node -e "
87
- const fs = require('fs');
88
- const settings = JSON.parse(fs.readFileSync('$SETTINGS_FILE', 'utf-8'));
89
- if (!settings.hooks) settings.hooks = {};
90
- if (!settings.hooks.SessionStart) settings.hooks.SessionStart = [];
91
- settings.hooks.SessionStart.push({
92
- type: 'command',
93
- command: 'sh $AGENT_DIR/scripts/clean-worktrees.sh',
94
- timeout: 10
95
- });
96
- fs.writeFileSync('$SETTINGS_FILE', JSON.stringify(settings, null, 2) + '\\n');
97
- "
98
- echo "[ok] Added SessionStart worktree cleanup hook"
99
- fi
41
+ npx --yes soleri hooks sync
100
42
  fi
43
+ echo "[ok] Lifecycle hooks synced"
101
44
 
102
45
  # Install skills to ~/.claude/skills/
103
46
  SKILLS_DIR="$AGENT_DIR/skills"
@@ -1 +1 @@
1
- {"version":3,"file":"setup-script.js","sourceRoot":"","sources":["../../src/templates/setup-script.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-script.js","sourceRoot":"","sources":["../../src/templates/setup-script.ts"],"names":[],"mappings":"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"}
@@ -168,12 +168,20 @@ const ENGINE_RULES_LINES = [
168
168
  '',
169
169
  'The vault is a **Zettelkasten** — a connected knowledge graph. Every knowledge operation follows Zettelkasten principles: atomic entries, typed links, dense connections.',
170
170
  '',
171
- '- **SHOULD**: Consult the vault BEFORE every decisionsearch + traverse the link graph.',
172
- '- Lookup order: 1) VAULT search → 2) VAULT traverse (follow links 2 hops) → 3) MEMORY → 4) CODEBASE → 5) WEB/TRAINING.',
171
+ '**SHOULD follow this lookup order for every question, problem, or task regardless of whether agent MCP is active:**',
172
+ '',
173
+ '1. **Vault** — `op:search_intelligent` + traverse links 2 hops (when agent MCP is active)',
174
+ '2. **Web** — `WebSearch` tool (always — never skip if vault returns no answer)',
175
+ '3. **Memory** — `op:memory_search` (when agent MCP is active)',
176
+ '4. **Codebase** — read relevant files',
177
+ '5. **Training data** — last resort; flag as potentially outdated',
178
+ '',
179
+ '- Web search is **not optional**. If vault is unavailable or returns no relevant results, search the web before answering from training data alone.',
180
+ '- If the vault has a pattern, follow it. If it has an anti-pattern, avoid it.',
173
181
  "- **Search + Traverse**: Don't just search — traverse from the best result to discover connected knowledge and anti-patterns.",
174
182
  '- Check `contradicts` links to know what to avoid. Check `sequences` links for ordering dependencies.',
175
183
  '- Persist lessons: capture + link. An unlinked entry is incomplete.',
176
- '- Exceptions: runtime errors with stack traces → codebase first; user explicitly asks to search web.',
184
+ '- Exception: runtime errors with stack traces → codebase first.',
177
185
  '',
178
186
  '### Vault Search Strategy',
179
187
  '',
@@ -619,7 +627,6 @@ const ENGINE_RULES_LINES = [
619
627
  '',
620
628
  '### Character Persistence',
621
629
  '',
622
- '- **SHOULD**: Prefix every response with `{AgentName} >` when activated (e.g., `Ernesto >`, `Salvador >`). This signals to the user that the agent persona is active.',
623
630
  "- All communication flows through your persona's voice — tone, vocabulary, opinions",
624
631
  '- Stay in character until explicitly deactivated',
625
632
  '- Context compaction does not change who you are — these rules persist in CLAUDE.md',