create-claude-cabinet 0.6.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 (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/bin/create-claude-cabinet.js +8 -0
  4. package/lib/cli.js +624 -0
  5. package/lib/copy.js +152 -0
  6. package/lib/db-setup.js +51 -0
  7. package/lib/metadata.js +42 -0
  8. package/lib/reset.js +193 -0
  9. package/lib/settings-merge.js +93 -0
  10. package/package.json +29 -0
  11. package/templates/EXTENSIONS.md +311 -0
  12. package/templates/README.md +485 -0
  13. package/templates/briefing/_briefing-api-template.md +21 -0
  14. package/templates/briefing/_briefing-architecture-template.md +16 -0
  15. package/templates/briefing/_briefing-cabinet-template.md +20 -0
  16. package/templates/briefing/_briefing-identity-template.md +18 -0
  17. package/templates/briefing/_briefing-scopes-template.md +39 -0
  18. package/templates/briefing/_briefing-template.md +148 -0
  19. package/templates/briefing/_briefing-work-tracking-template.md +18 -0
  20. package/templates/cabinet/committees-template.yaml +49 -0
  21. package/templates/cabinet/composition-patterns.md +240 -0
  22. package/templates/cabinet/eval-protocol.md +208 -0
  23. package/templates/cabinet/lifecycle.md +93 -0
  24. package/templates/cabinet/output-contract.md +148 -0
  25. package/templates/cabinet/prompt-guide.md +266 -0
  26. package/templates/hooks/cor-upstream-guard.sh +79 -0
  27. package/templates/hooks/git-guardrails.sh +67 -0
  28. package/templates/hooks/skill-telemetry.sh +66 -0
  29. package/templates/hooks/skill-tool-telemetry.sh +54 -0
  30. package/templates/hooks/stop-hook.md +56 -0
  31. package/templates/memory/patterns/_pattern-template.md +119 -0
  32. package/templates/memory/patterns/pattern-intelligence-first.md +41 -0
  33. package/templates/rules/enforcement-pipeline.md +151 -0
  34. package/templates/scripts/cor-drift-check.cjs +84 -0
  35. package/templates/scripts/finding-schema.json +94 -0
  36. package/templates/scripts/load-triage-history.js +151 -0
  37. package/templates/scripts/merge-findings.js +126 -0
  38. package/templates/scripts/pib-db-schema.sql +68 -0
  39. package/templates/scripts/pib-db.js +365 -0
  40. package/templates/scripts/triage-server.mjs +98 -0
  41. package/templates/scripts/triage-ui.html +536 -0
  42. package/templates/skills/audit/SKILL.md +273 -0
  43. package/templates/skills/audit/phases/finding-output.md +56 -0
  44. package/templates/skills/audit/phases/member-execution.md +83 -0
  45. package/templates/skills/audit/phases/member-selection.md +44 -0
  46. package/templates/skills/audit/phases/structural-checks.md +54 -0
  47. package/templates/skills/audit/phases/triage-history.md +45 -0
  48. package/templates/skills/cabinet-accessibility/SKILL.md +180 -0
  49. package/templates/skills/cabinet-anti-confirmation/SKILL.md +172 -0
  50. package/templates/skills/cabinet-architecture/SKILL.md +279 -0
  51. package/templates/skills/cabinet-boundary-man/SKILL.md +265 -0
  52. package/templates/skills/cabinet-cor-health/SKILL.md +342 -0
  53. package/templates/skills/cabinet-data-integrity/SKILL.md +157 -0
  54. package/templates/skills/cabinet-debugger/SKILL.md +221 -0
  55. package/templates/skills/cabinet-historian/SKILL.md +253 -0
  56. package/templates/skills/cabinet-organized-mind/SKILL.md +338 -0
  57. package/templates/skills/cabinet-process-therapist/SKILL.md +261 -0
  58. package/templates/skills/cabinet-qa/SKILL.md +205 -0
  59. package/templates/skills/cabinet-record-keeper/SKILL.md +168 -0
  60. package/templates/skills/cabinet-roster-check/SKILL.md +297 -0
  61. package/templates/skills/cabinet-security/SKILL.md +181 -0
  62. package/templates/skills/cabinet-small-screen/SKILL.md +154 -0
  63. package/templates/skills/cabinet-speed-freak/SKILL.md +169 -0
  64. package/templates/skills/cabinet-system-advocate/SKILL.md +194 -0
  65. package/templates/skills/cabinet-technical-debt/SKILL.md +115 -0
  66. package/templates/skills/cabinet-usability/SKILL.md +189 -0
  67. package/templates/skills/cabinet-workflow-cop/SKILL.md +238 -0
  68. package/templates/skills/cor-upgrade/SKILL.md +302 -0
  69. package/templates/skills/debrief/SKILL.md +409 -0
  70. package/templates/skills/debrief/phases/auto-maintenance.md +48 -0
  71. package/templates/skills/debrief/phases/close-work.md +88 -0
  72. package/templates/skills/debrief/phases/health-checks.md +54 -0
  73. package/templates/skills/debrief/phases/inventory.md +40 -0
  74. package/templates/skills/debrief/phases/loose-ends.md +52 -0
  75. package/templates/skills/debrief/phases/record-lessons.md +67 -0
  76. package/templates/skills/debrief/phases/report.md +59 -0
  77. package/templates/skills/debrief/phases/update-state.md +48 -0
  78. package/templates/skills/debrief/phases/upstream-feedback.md +129 -0
  79. package/templates/skills/debrief-quick/SKILL.md +12 -0
  80. package/templates/skills/execute/SKILL.md +293 -0
  81. package/templates/skills/execute/phases/cabinet.md +49 -0
  82. package/templates/skills/execute/phases/commit-and-deploy.md +66 -0
  83. package/templates/skills/execute/phases/load-plan.md +49 -0
  84. package/templates/skills/execute/phases/validators.md +50 -0
  85. package/templates/skills/execute/phases/verification-tools.md +67 -0
  86. package/templates/skills/extract/SKILL.md +168 -0
  87. package/templates/skills/investigate/SKILL.md +160 -0
  88. package/templates/skills/link/SKILL.md +52 -0
  89. package/templates/skills/menu/SKILL.md +61 -0
  90. package/templates/skills/onboard/SKILL.md +356 -0
  91. package/templates/skills/onboard/phases/detect-state.md +79 -0
  92. package/templates/skills/onboard/phases/generate-briefing.md +127 -0
  93. package/templates/skills/onboard/phases/generate-session-loop.md +87 -0
  94. package/templates/skills/onboard/phases/interview.md +233 -0
  95. package/templates/skills/onboard/phases/modularity-menu.md +162 -0
  96. package/templates/skills/onboard/phases/options.md +98 -0
  97. package/templates/skills/onboard/phases/post-onboard-audit.md +121 -0
  98. package/templates/skills/onboard/phases/summary.md +122 -0
  99. package/templates/skills/onboard/phases/work-tracking.md +231 -0
  100. package/templates/skills/orient/SKILL.md +251 -0
  101. package/templates/skills/orient/phases/auto-maintenance.md +48 -0
  102. package/templates/skills/orient/phases/briefing.md +53 -0
  103. package/templates/skills/orient/phases/cabinet.md +46 -0
  104. package/templates/skills/orient/phases/context.md +63 -0
  105. package/templates/skills/orient/phases/data-sync.md +35 -0
  106. package/templates/skills/orient/phases/health-checks.md +50 -0
  107. package/templates/skills/orient/phases/work-scan.md +69 -0
  108. package/templates/skills/orient-quick/SKILL.md +12 -0
  109. package/templates/skills/plan/SKILL.md +358 -0
  110. package/templates/skills/plan/phases/cabinet-critique.md +47 -0
  111. package/templates/skills/plan/phases/calibration-examples.md +75 -0
  112. package/templates/skills/plan/phases/completeness-check.md +44 -0
  113. package/templates/skills/plan/phases/composition-check.md +36 -0
  114. package/templates/skills/plan/phases/overlap-check.md +62 -0
  115. package/templates/skills/plan/phases/plan-template.md +69 -0
  116. package/templates/skills/plan/phases/present.md +60 -0
  117. package/templates/skills/plan/phases/research.md +43 -0
  118. package/templates/skills/plan/phases/work-tracker.md +95 -0
  119. package/templates/skills/publish/SKILL.md +74 -0
  120. package/templates/skills/pulse/SKILL.md +242 -0
  121. package/templates/skills/pulse/phases/auto-fix-scope.md +40 -0
  122. package/templates/skills/pulse/phases/checks.md +58 -0
  123. package/templates/skills/pulse/phases/output.md +54 -0
  124. package/templates/skills/seed/SKILL.md +257 -0
  125. package/templates/skills/seed/phases/build-member.md +93 -0
  126. package/templates/skills/seed/phases/evaluate-existing.md +61 -0
  127. package/templates/skills/seed/phases/maintain.md +92 -0
  128. package/templates/skills/seed/phases/scan-signals.md +86 -0
  129. package/templates/skills/triage-audit/SKILL.md +251 -0
  130. package/templates/skills/triage-audit/phases/apply-verdicts.md +90 -0
  131. package/templates/skills/triage-audit/phases/load-findings.md +38 -0
  132. package/templates/skills/triage-audit/phases/triage-ui.md +66 -0
  133. package/templates/skills/unlink/SKILL.md +35 -0
  134. package/templates/skills/validate/SKILL.md +116 -0
  135. package/templates/skills/validate/phases/validators.md +53 -0
@@ -0,0 +1,242 @@
1
+ ---
2
+ name: pulse
3
+ description: |
4
+ Self-description accuracy check. Verifies that what the system claims
5
+ matches what the system actually is — counts, states, conventions,
6
+ documented behaviors. Two modes: embedded (silent in orient/debrief,
7
+ 15-second budget) and standalone (systematic, three categories).
8
+ Use when: embedded in orient/debrief, "pulse", "/pulse", or when
9
+ system descriptions feel stale.
10
+ related:
11
+ - type: file
12
+ path: .claude/skills/pulse/phases/checks.md
13
+ role: "Project-specific: what to verify"
14
+ - type: file
15
+ path: .claude/skills/pulse/phases/auto-fix-scope.md
16
+ role: "Project-specific: what can be fixed automatically"
17
+ - type: file
18
+ path: .claude/skills/pulse/phases/output.md
19
+ role: "Project-specific: how to present results"
20
+ - type: file
21
+ path: cabinet/_briefing.md
22
+ role: "Project identity and configuration"
23
+ ---
24
+
25
+ # /pulse — Self-Description Accuracy Check
26
+
27
+ ## Purpose
28
+
29
+ Self-description drifts from reality. A status file says "12 skills"
30
+ but the directory has 14. A CLAUDE.md documents a workflow that was
31
+ replaced two weeks ago. A configuration file references a path that
32
+ was renamed. These discrepancies are small individually but compound
33
+ into a system that describes one thing and does another — creating
34
+ confusion, wasted effort, and incorrect assumptions.
35
+
36
+ Pulse catches these before they compound. It's the system's mirror:
37
+ hold up what you claim to be, check what you actually are, and flag
38
+ every gap.
39
+
40
+ This is a **skeleton skill** using the `phases/` directory pattern. The
41
+ orchestration is generic. Your project defines the specifics — what
42
+ to check, what to auto-fix, how to report — in phase files under
43
+ `phases/`.
44
+
45
+ ### Phase File Protocol
46
+
47
+ Phase files have three states:
48
+
49
+ | State | Meaning |
50
+ |-------|---------|
51
+ | Absent or empty | Use this skeleton's **default behavior** for the phase |
52
+ | Contains only `skip: true` | **Explicitly opted out** — skip this phase entirely |
53
+ | Contains content | **Custom behavior** — use the file's content instead |
54
+
55
+ ## Identity
56
+
57
+ You are the mirror. You don't judge quality or propose improvements —
58
+ that's the auditor's job. You verify accuracy: does the description
59
+ match the thing it describes? You are fast, factual, and silent when
60
+ everything checks out.
61
+
62
+ Your checks are mechanical: count files and compare to documented
63
+ counts, read paths and verify they exist, check dates and flag staleness.
64
+ You don't interpret or weigh significance — you just report
65
+ discrepancies. The human decides which ones matter.
66
+
67
+ ## Two Modes
68
+
69
+ ### Embedded Mode (in orient/debrief)
70
+
71
+ Silent when healthy. Runs within a 15-second budget as part of orient
72
+ or debrief. Only speaks if something needs attention. This is how pulse
73
+ runs most of the time — a background health check that's invisible when
74
+ the system is accurate.
75
+
76
+ **When embedded in orient:** Check before the briefing so any issues
77
+ can be included in the briefing.
78
+
79
+ **When embedded in debrief:** Check after state updates so the debrief
80
+ can fix any discrepancies before the session closes.
81
+
82
+ ### Standalone Mode (/pulse)
83
+
84
+ Systematic check across three categories. Used when you suspect drift
85
+ has accumulated or want a comprehensive accuracy check. Reports
86
+ everything — not just problems.
87
+
88
+ ## Workflow
89
+
90
+ ### 1. Run Checks (core)
91
+
92
+ Read `phases/checks.md` for what to verify.
93
+
94
+ **Default (absent/empty):** Run three categories of checks:
95
+
96
+ **Category A — Count Freshness.** Enumerate actual items and compare
97
+ to any documented counts. Examples:
98
+ - Count files matching `skills/*/SKILL.md` vs any documented skill count
99
+ - Count files matching `skills/cabinet-*/SKILL.md` vs documented
100
+ cabinet member count
101
+ - Count entries in configuration files vs documented totals
102
+ - Count items in any enumerated list vs documented count
103
+
104
+ **Category B — Dead Reference Spot-Check.** Pick 3-5 paths, references,
105
+ or links from documentation files (CLAUDE.md, README.md, status files)
106
+ and verify they resolve:
107
+ - File paths — does the file exist?
108
+ - Directory references — does the directory exist?
109
+ - Script references — does the script exist and is it executable?
110
+ - Cross-references between docs — does the target section exist?
111
+
112
+ **Category C — Staleness Detection.** Check for time-sensitive content
113
+ that may have drifted:
114
+ - Files with dates in their content — is the date current?
115
+ - "Last updated" or "as of" references — how old are they?
116
+ - Version numbers or counts that should change as the project evolves
117
+
118
+ In embedded mode, run a quick subset (one check from each category).
119
+ In standalone mode, run all checks.
120
+
121
+ ### 2. Determine Auto-Fix Scope (core)
122
+
123
+ Read `phases/auto-fix-scope.md` for what can be fixed automatically
124
+ without human judgment.
125
+
126
+ **Default (absent/empty):** Auto-fix is limited to numeric counts only.
127
+ If a document says "12 skills" and you counted 14, update the number.
128
+ Everything else — stale descriptions, dead references, outdated
129
+ workflows — gets reported but not changed, because the fix might
130
+ require judgment about what the correct content should be.
131
+
132
+ **The closed-list principle:** Only auto-fix what's mechanically
133
+ verifiable. A count is either right or wrong. A description is a matter
134
+ of judgment. Pulse auto-fixes the first kind and reports the second.
135
+
136
+ ### 3. Present Output (presentation)
137
+
138
+ Read `phases/output.md` for how to present results.
139
+
140
+ **Default (absent/empty):**
141
+
142
+ In **embedded mode**: silence means health. Only speak if there are
143
+ discrepancies. When reporting, be brief: "Pulse: skill count says 12,
144
+ found 14. Dead ref: `scripts/old-tool.sh` (referenced in README)."
145
+
146
+ In **standalone mode**: present a stratified report:
147
+ - **Fixed** — discrepancies auto-corrected (with what changed)
148
+ - **Options** — discrepancies that need human judgment (with what you
149
+ found vs what's documented)
150
+ - **Questions** — things you couldn't verify or aren't sure about
151
+
152
+ ### 4. Discover Custom Phases
153
+
154
+ After running the core phases above, check for any additional phase
155
+ files in `phases/` that the skeleton doesn't define. Execute them at
156
+ their declared position.
157
+
158
+ ## Phase Summary
159
+
160
+ | Phase | Absent = | What it customizes |
161
+ |-------|----------|-------------------|
162
+ | `checks.md` | Default: count freshness + dead refs + staleness | What to verify |
163
+ | `auto-fix-scope.md` | Default: numeric counts only | What can be fixed automatically |
164
+ | `output.md` | Default: silent-when-healthy (embedded) or stratified (standalone) | How to present results |
165
+
166
+ ## How Pulse Connects to Other Skills
167
+
168
+ **Orient** checks operational state — is the system running? **Pulse**
169
+ checks descriptive accuracy — does the documentation match reality?
170
+ Orient runs first; pulse runs inside orient (embedded) to catch stale
171
+ descriptions before they mislead.
172
+
173
+ **Audit** examines quality through expert cabinet members — is the code
174
+ good, is the architecture sound? **Pulse** examines accuracy through
175
+ mechanical comparison — does the number match? Audit requires judgment;
176
+ pulse requires counting. They complement each other: pulse catches the
177
+ trivially verifiable so audit can focus on the substantive.
178
+
179
+ **Debrief** updates state files after work. **Pulse** verifies those
180
+ updates are consistent. When pulse runs inside debrief, it catches
181
+ cases where the debrief updated one file but not another.
182
+
183
+ ### Boundary Table
184
+
185
+ | Question | Tool |
186
+ |----------|------|
187
+ | "Is this code correct?" | /audit |
188
+ | "Is the documentation accurate?" | /pulse |
189
+ | "Does the count match?" | /pulse |
190
+ | "Is the architecture sound?" | /audit |
191
+ | "Is the system running?" | /orient |
192
+
193
+ Projects with additional skills extend this table in their SKILL.md.
194
+
195
+ ## Extending
196
+
197
+ To customize a phase: write content in the corresponding `phases/` file.
198
+ To skip a phase: write only `skip: true` in the file.
199
+ To add a phase: create a new file in `phases/`.
200
+
201
+ Examples of checks mature projects add:
202
+ - Schema validation (do entity definitions match what's in the database?)
203
+ - Hook verification (do configured hooks still point to valid scripts?)
204
+ - Dependency freshness (are documented dependencies still current?)
205
+ - Environment consistency (do env vars match what scripts expect?)
206
+
207
+ ## Calibration
208
+
209
+ **Core failure this targets:** Self-description gradually diverging from
210
+ reality until the documentation becomes misleading rather than helpful.
211
+
212
+ ### Without Skill (Bad)
213
+
214
+ The project evolves over months. Each session builds features, refactors
215
+ code, reorganizes directories. Documentation gets updated sometimes but
216
+ not always. The README says the project has 12 skills, but 3 more were
217
+ added. A CLAUDE.md references a script that was renamed. The status file
218
+ describes a workflow that was replaced last month.
219
+
220
+ Someone reads the documentation and builds a mental model based on what
221
+ it says. That mental model is wrong. They make decisions based on it.
222
+ The documentation has become an actively misleading artifact.
223
+
224
+ ### With Skill (Good)
225
+
226
+ Every session, pulse runs embedded. Counts are verified, references are
227
+ spot-checked, staleness is detected. Most of the time it's silent —
228
+ everything checks out. When a count drifts, it's auto-fixed. When a
229
+ reference dies, it's flagged and fixed in the same session.
230
+
231
+ The documentation stays accurate not through discipline but through
232
+ verification. The system describes what it is because something is
233
+ always checking.
234
+
235
+ ## Assessment Log
236
+
237
+ Standalone pulse appends lightweight eval results here. Each entry
238
+ records the date, mode, counts of findings by category, and any skills
239
+ assessed. This section accumulates over time — it's pulse's memory of
240
+ what it has checked and found.
241
+
242
+ (No assessments yet. First standalone /pulse run will establish the baseline.)
@@ -0,0 +1,40 @@
1
+ # Auto-Fix Scope — What Can Be Fixed Automatically
2
+
3
+ Define what pulse is allowed to correct without asking. The /pulse skill
4
+ reads this file to determine its auto-fix boundaries.
5
+
6
+ When this file is absent or empty, the default behavior is: auto-fix
7
+ numeric counts only. Everything else is reported but not changed.
8
+ To explicitly disable all auto-fix, write only `skip: true`.
9
+
10
+ ## The Closed-List Principle
11
+
12
+ Pulse only auto-fixes what's mechanically verifiable. The question is
13
+ not "can I fix this?" but "is there exactly one correct value?"
14
+
15
+ - A count is either right or wrong → auto-fix
16
+ - A date is either current or stale → auto-fix
17
+ - A description is a matter of judgment → report only
18
+ - A dead reference could mean rename, delete, or rethink → report only
19
+
20
+ When you expand auto-fix scope, you're asserting that the fix requires
21
+ zero human judgment. Be conservative — a wrong auto-fix is worse than
22
+ a reported discrepancy.
23
+
24
+ ## Example Expanded Scope
25
+
26
+ Uncomment and adapt for your project:
27
+
28
+ <!--
29
+ ### Numeric Counts (default)
30
+ Update documented counts to match actual counts.
31
+
32
+ ### Date Stamps
33
+ Update "last verified" dates in cabinet member SKILL.md files after
34
+ a successful pulse check confirms they're still accurate.
35
+
36
+ ### Known Renames
37
+ If a file was renamed (git log shows the rename) and a reference
38
+ still uses the old path, update the reference. Only when the git
39
+ history unambiguously shows a 1:1 rename, not a split or merge.
40
+ -->
@@ -0,0 +1,58 @@
1
+ # Checks — What to Verify
2
+
3
+ Define what pulse checks for self-description accuracy. The /pulse skill
4
+ reads this file to know what to verify.
5
+
6
+ When this file is absent or empty, the default behavior is: run three
7
+ categories of checks (count freshness, dead reference spot-check,
8
+ staleness detection). To explicitly skip all checks, write only
9
+ `skip: true`.
10
+
11
+ ## What to Include
12
+
13
+ For each check, provide:
14
+ - **What** — what to compare (documented value vs actual value)
15
+ - **How** — how to get the actual value (command, file read, count)
16
+ - **Auto-fixable** — can the discrepancy be corrected mechanically?
17
+ - **Category** — count freshness, dead reference, or staleness
18
+
19
+ ## Example Checks
20
+
21
+ Uncomment and adapt for your project:
22
+
23
+ <!--
24
+ ### Count Freshness
25
+
26
+ #### Skill Count
27
+ - Document: system-status.md says "N skills"
28
+ - Actual: `ls skills/*/SKILL.md | wc -l`
29
+ - Auto-fixable: yes (update the number)
30
+
31
+ #### Cabinet Member Count
32
+ - Document: system-status.md says "N cabinet members"
33
+ - Actual: `ls skills/cabinet-*/SKILL.md | wc -l`
34
+ - Auto-fixable: yes (update the number)
35
+
36
+ #### Hook Count
37
+ - Document: CLAUDE.md says "N hooks"
38
+ - Actual: count hooks in `.claude/settings.json`
39
+ - Auto-fixable: yes (update the number)
40
+
41
+ ### Dead Reference Spot-Check
42
+
43
+ Pick 3-5 paths from documentation and verify they exist:
44
+ - CLAUDE.md references to scripts
45
+ - README.md references to directories
46
+ - Status file references to configuration files
47
+ - Phase file references to other files
48
+
49
+ ### Staleness Detection
50
+
51
+ #### Status File
52
+ - Check: when was system-status.md last modified?
53
+ - Flag if: older than 7 days and there have been commits since
54
+
55
+ #### "As of" Dates
56
+ - Check: grep for "as of" in documentation files
57
+ - Flag if: the date is more than 30 days old
58
+ -->
@@ -0,0 +1,54 @@
1
+ # Output — How to Present Results
2
+
3
+ Define how pulse presents its findings. The /pulse skill reads this
4
+ file to determine output format and destination.
5
+
6
+ When this file is absent or empty, the default behavior is:
7
+ - **Embedded mode:** silent when healthy, brief flags when not
8
+ - **Standalone mode:** stratified report (Fixed / Options / Questions)
9
+ To explicitly skip output, write only `skip: true`.
10
+
11
+ ## What to Include
12
+
13
+ Define your output strategy:
14
+ - **Embedded format** — how to report within orient/debrief output
15
+ - **Standalone format** — how to present the full report
16
+ - **Destination** — conversation only, or also written to a file/log
17
+
18
+ ## Example Output Configuration
19
+
20
+ Uncomment and adapt for your project:
21
+
22
+ <!--
23
+ ### Embedded Mode
24
+ When running inside orient or debrief:
25
+ - Silent when all checks pass
26
+ - One-line per discrepancy: "Pulse: [what] says X, found Y"
27
+ - Include auto-fixes already applied: "Pulse: updated skill count 12→14"
28
+
29
+ ### Standalone Mode
30
+ When running as /pulse:
31
+
32
+ #### Fixed (auto-corrected)
33
+ List each discrepancy that was auto-fixed:
34
+ - What was wrong
35
+ - What it was changed to
36
+ - Where (file and line)
37
+
38
+ #### Options (needs human judgment)
39
+ List each discrepancy that requires a decision:
40
+ - What the documentation says
41
+ - What was actually found
42
+ - Why this can't be auto-fixed (ambiguous correction)
43
+
44
+ #### Questions (uncertain)
45
+ List anything that couldn't be verified:
46
+ - What was checked
47
+ - Why verification failed
48
+ - Suggested next step
49
+
50
+ ### Log File
51
+ In addition to conversation output, append results to
52
+ `sync/pulse-log.txt` for trend tracking. One line per check:
53
+ `YYYY-MM-DD HH:MM:SS | check-name | pass/fail | details`
54
+ -->
@@ -0,0 +1,257 @@
1
+ ---
2
+ name: seed
3
+ description: |
4
+ Recruit new cabinet members. Scans your project for technologies and
5
+ frameworks, proposes expert members to cover them, builds them
6
+ collaboratively, and maintains existing ones over time. Use when: "seed",
7
+ "check for new tech", "build a cabinet member", "/seed", after adding
8
+ dependencies or frameworks.
9
+ related:
10
+ - type: file
11
+ path: .claude/skills/seed/phases/scan-signals.md
12
+ role: "Where to look for technology signals"
13
+ - type: file
14
+ path: .claude/skills/seed/phases/evaluate-existing.md
15
+ role: "Check existing cabinet members against detected tech"
16
+ - type: file
17
+ path: .claude/skills/seed/phases/build-member.md
18
+ role: "How to build a new cabinet member collaboratively"
19
+ - type: file
20
+ path: .claude/skills/seed/phases/maintain.md
21
+ role: "Maintain existing cabinet members (retirement, updates)"
22
+ - type: file
23
+ path: cabinet/_lifecycle.md
24
+ role: "Cabinet member lifecycle guidance"
25
+ - type: file
26
+ path: cabinet/_briefing-template.md
27
+ role: "Template for project briefing"
28
+ ---
29
+
30
+ # /seed — Recruit New Cabinet Members
31
+
32
+ ## Purpose
33
+
34
+ Recruit cabinet members as your project grows. When you adopt React, you
35
+ need accessibility expertise. When you add SQLite, you need data-integrity
36
+ expertise. When you deploy to Railway, you need security and deployment
37
+ expertise. These connections are predictable, but people don't reliably
38
+ act on them at the moment of adoption — they add the dependency, start
39
+ building, and only discover the expertise gap after an incident.
40
+
41
+ Seed makes that recruitment systematic. It scans for technology
42
+ signals in your project's configuration files, compares them against
43
+ your existing cabinet members, identifies gaps, and initiates
44
+ collaborative conversations to build the missing expertise.
45
+
46
+ This is a **skeleton skill** using the `phases/` directory pattern. The
47
+ orchestration (what to do and in what order) is generic. Your project
48
+ defines the specifics — what signals to scan for, what expertise to
49
+ associate with each signal, how to build cabinet members — in phase files
50
+ under `phases/`.
51
+
52
+ ### Phase File Protocol
53
+
54
+ Phase files have three states:
55
+
56
+ | State | Meaning |
57
+ |-------|---------|
58
+ | Absent or empty | Use this skeleton's **default behavior** for the phase |
59
+ | Contains only `skip: true` | **Explicitly opted out** — skip this phase entirely |
60
+ | Contains content | **Custom behavior** — use the file's content instead |
61
+
62
+ The skeleton always does something reasonable when a phase file is absent.
63
+ Phase files customize, not enable. Use `skip: true` when you actively
64
+ don't want a phase to run — not even the default.
65
+
66
+ ## Relationship to /onboard
67
+
68
+ Onboarding and skill management are the same system at different tempos.
69
+ `/onboard` runs at inception — when a project first adopts the methodology,
70
+ it does a comprehensive scan and builds the initial cabinet member roster
71
+ from scratch. `/seed` runs at steady state — when the project evolves,
72
+ a new dependency appears, a framework is added, infrastructure changes.
73
+
74
+ The detection logic overlaps intentionally. `/onboard` calls `/seed`'s
75
+ scan internally. `/seed` is the ongoing mechanism that keeps the cabinet
76
+ current as the project grows. Think of `/onboard` as the first `/seed`
77
+ run — comprehensive and foundational. Every subsequent `/seed` is
78
+ incremental and conversational.
79
+
80
+ ## Workflow
81
+
82
+ ### 1. Scan for Technology Signals
83
+
84
+ Read `phases/scan-signals.md` for where to look and what signal-to-
85
+ expertise mappings to apply. This phase reads package manifests, config
86
+ files, infrastructure definitions, and database artifacts to build a
87
+ picture of what technologies the project uses.
88
+
89
+ **Default (absent/empty):** Scan standard locations:
90
+ - `package.json` / `requirements.txt` / `Cargo.toml` / `go.mod` for
91
+ dependencies
92
+ - Config files (`.eslintrc`, `tailwind.config.*`, `tsconfig.json`,
93
+ `docker-compose.yml`, etc.)
94
+ - Infrastructure files (`Dockerfile`, `.github/workflows/`,
95
+ `railway.json`, `vercel.json`, `fly.toml`)
96
+ - Database artifacts (`*.db` files, `migrations/`, `prisma/`,
97
+ `drizzle.config.*`)
98
+
99
+ Apply the default signal-to-expertise mapping table (defined in the
100
+ phase file). Projects override this phase to add domain-specific signals
101
+ — a healthcare project might map HIPAA-related dependencies to a
102
+ compliance cabinet member; a financial project might map payment libraries
103
+ to a financial-integrity cabinet member.
104
+
105
+ ### 2. Evaluate Existing Cabinet Members
106
+
107
+ Read `phases/evaluate-existing.md` for how to compare detected signals
108
+ against the current cabinet members.
109
+
110
+ **Default (absent/empty):** For each detected technology signal:
111
+ 1. Check `.claude/skills/cabinet-*/` for a cabinet member whose domain
112
+ covers that technology
113
+ 2. If a matching cabinet member exists: check whether its scan scope still
114
+ covers the right directories and whether the technology version has
115
+ changed significantly since the cabinet member was created
116
+ 3. If no matching cabinet member exists: flag as a gap
117
+
118
+ Build two lists:
119
+ - **Gaps** — technologies without corresponding expertise
120
+ - **Stale** — cabinet members that exist but may need updating
121
+
122
+ Present both lists to the user before proceeding. The user decides which
123
+ gaps to fill and which staleness to address. Not every technology needs
124
+ a cabinet member — some are too minor, some are well-understood, some are
125
+ covered by existing cabinet members with broader scope.
126
+
127
+ ### 3. Build New Cabinet Members
128
+
129
+ Read `phases/build-member.md` for how to collaboratively build a
130
+ new cabinet member with the user.
131
+
132
+ **Default (absent/empty):** For each gap the user wants to fill, run a
133
+ collaborative expertise-building conversation:
134
+ 1. Research the technology (check docs, use available MCP tools)
135
+ 2. Ask the user: what matters about this technology in YOUR project?
136
+ 3. Draft a cabinet member `SKILL.md` following `_lifecycle.md` guidance
137
+ 4. Walk through Identity, Research Method, Boundaries, and Calibration
138
+ with the user
139
+ 5. Create the file in `cabinet-{name}/SKILL.md`
140
+ 6. Update `committees.yaml` if the cabinet member belongs in a committee
141
+
142
+ This is co-authoring, not auto-generating. The user's domain knowledge
143
+ is what makes a cabinet member useful for their specific project. A generic
144
+ "React best practices" cabinet member catches generic issues. A cabinet member
145
+ built with the user's input — "we use Mantine, we care about keyboard
146
+ navigation, our users are on slow connections" — catches what actually
147
+ matters.
148
+
149
+ ### 4. Maintain Existing Cabinet Members
150
+
151
+ Read `phases/maintain.md` for how to review the health of existing
152
+ cabinet members and recommend changes.
153
+
154
+ **Default (absent/empty):** Review the cabinet for:
155
+ - **Retirement candidates:** technologies removed from the project,
156
+ cabinet members with high rejection rates in audit triage, cabinet members
157
+ whose scan scopes reference files that no longer exist
158
+ - **Update candidates:** technology version changed significantly,
159
+ new features added that the cabinet member doesn't cover, scan scope
160
+ needs expanding to cover new directories
161
+ - **Coverage gaps:** areas of the codebase not covered by any
162
+ cabinet member's scan scope
163
+
164
+ Apply `_lifecycle.md` criteria. Recommend retirements as readily as
165
+ adoptions — a lean cabinet is better than a comprehensive one full of
166
+ dead weight. Present recommendations; the user decides.
167
+
168
+ ### 5. Discover Custom Phases
169
+
170
+ After running the core phases above, check for any additional phase
171
+ files in `phases/` that the skeleton doesn't define. These are project-
172
+ specific extensions. Each custom phase file declares its position in
173
+ the workflow. Execute them at their declared position.
174
+
175
+ ## Phase Summary
176
+
177
+ | Phase | Absent = | What it customizes |
178
+ |-------|----------|-------------------|
179
+ | `scan-signals.md` | Default: scan standard locations + default mappings | Where to look, what signals map to what expertise |
180
+ | `evaluate-existing.md` | Default: compare signals to cabinet members | How to assess gaps and staleness |
181
+ | `build-member.md` | Default: collaborative conversation | How to co-author a new cabinet member |
182
+ | `maintain.md` | Default: review cabinet health | How to assess retirement, updates, gaps |
183
+
184
+ ## Companion Framing
185
+
186
+ Seed is conversational by design. It doesn't auto-generate cabinet members
187
+ or silently add expertise. The tone is:
188
+
189
+ > "I noticed you added Express as a dependency. That typically means we
190
+ > should carry some expertise around security and request handling for
191
+ > this project. Want to explore what a security cabinet member should look
192
+ > like for your setup?"
193
+
194
+ The user might say "yes, let's build it," or "we don't need that — this
195
+ is an internal tool with no auth," or "good idea, but let's do it next
196
+ session." All valid responses. The skill proposes; the user decides.
197
+
198
+ This framing matters because expertise is contextual. The same technology
199
+ in two different projects needs different cabinet members. Express in a
200
+ public API needs security hardening. Express in a local dev tool needs
201
+ almost none. The conversation is where that context gets encoded.
202
+
203
+ ## Extending
204
+
205
+ To customize a phase: write content in the corresponding `phases/` file.
206
+ To skip a phase: write only `skip: true` in the file.
207
+ To add a phase the skeleton doesn't define: create a new file in
208
+ `phases/` with a description of when it runs relative to the core phases.
209
+
210
+ Examples of phases mature projects add:
211
+ - **Dependency changelog scanning** — check what changed between the old
212
+ and new version of a dependency, flag breaking changes that affect
213
+ existing cabinet members
214
+ - **Team expertise mapping** — map detected technologies to team members
215
+ who have relevant expertise, surface when a technology has no human
216
+ expert (single point of failure)
217
+ - **Cost estimation** — flag technologies that have cost implications
218
+ (cloud services, paid APIs, licensed frameworks)
219
+ - **Compliance mapping** — map technologies to compliance requirements
220
+ (HIPAA, SOC2, GDPR) based on what data they handle
221
+
222
+ ## Calibration
223
+
224
+ **Core failure this targets:** Reactive expertise acquisition. Technology
225
+ is adopted, expertise is not built until an incident reveals the gap.
226
+ The gap between adoption and incident is where preventable problems live.
227
+
228
+ ### Without Skill (Bad)
229
+
230
+ Developer adds a SQLite database to the project. Builds features against
231
+ it for weeks. Nobody thinks about data integrity until a migration
232
+ corrupts production data. After the incident, someone writes a checklist
233
+ of "things to check with SQLite." The checklist lives in a wiki page
234
+ that nobody reads. Six months later, the same class of bug recurs because
235
+ the checklist wasn't integrated into the development workflow.
236
+
237
+ The expertise was reactive — built in response to pain, stored where it
238
+ couldn't influence behavior.
239
+
240
+ ### With Skill (Good)
241
+
242
+ Developer adds a SQLite database. Next `/seed` run detects the `*.db`
243
+ file and `better-sqlite3` in dependencies. It says: "I see you've
244
+ adopted SQLite. Projects using SQLite typically benefit from a
245
+ data-integrity cabinet member that watches for type coercion issues, WAL
246
+ mode configuration, migration safety, and backup strategies. Want to
247
+ build one together?"
248
+
249
+ The developer says yes. They spend 10 minutes in conversation: "We're
250
+ using WAL mode, our biggest risk is concurrent writes from the sync
251
+ process, and we've had issues with empty-string-vs-NULL before." The
252
+ resulting cabinet member is specific to this project's actual risks. It
253
+ activates during audits and catches the NULL coercion bug before it
254
+ ships.
255
+
256
+ The expertise was proactive — built at the moment of adoption, stored
257
+ where it actively influences every audit cycle.