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.
- package/LICENSE +21 -0
- package/README.md +196 -0
- package/bin/create-claude-cabinet.js +8 -0
- package/lib/cli.js +624 -0
- package/lib/copy.js +152 -0
- package/lib/db-setup.js +51 -0
- package/lib/metadata.js +42 -0
- package/lib/reset.js +193 -0
- package/lib/settings-merge.js +93 -0
- package/package.json +29 -0
- package/templates/EXTENSIONS.md +311 -0
- package/templates/README.md +485 -0
- package/templates/briefing/_briefing-api-template.md +21 -0
- package/templates/briefing/_briefing-architecture-template.md +16 -0
- package/templates/briefing/_briefing-cabinet-template.md +20 -0
- package/templates/briefing/_briefing-identity-template.md +18 -0
- package/templates/briefing/_briefing-scopes-template.md +39 -0
- package/templates/briefing/_briefing-template.md +148 -0
- package/templates/briefing/_briefing-work-tracking-template.md +18 -0
- package/templates/cabinet/committees-template.yaml +49 -0
- package/templates/cabinet/composition-patterns.md +240 -0
- package/templates/cabinet/eval-protocol.md +208 -0
- package/templates/cabinet/lifecycle.md +93 -0
- package/templates/cabinet/output-contract.md +148 -0
- package/templates/cabinet/prompt-guide.md +266 -0
- package/templates/hooks/cor-upstream-guard.sh +79 -0
- package/templates/hooks/git-guardrails.sh +67 -0
- package/templates/hooks/skill-telemetry.sh +66 -0
- package/templates/hooks/skill-tool-telemetry.sh +54 -0
- package/templates/hooks/stop-hook.md +56 -0
- package/templates/memory/patterns/_pattern-template.md +119 -0
- package/templates/memory/patterns/pattern-intelligence-first.md +41 -0
- package/templates/rules/enforcement-pipeline.md +151 -0
- package/templates/scripts/cor-drift-check.cjs +84 -0
- package/templates/scripts/finding-schema.json +94 -0
- package/templates/scripts/load-triage-history.js +151 -0
- package/templates/scripts/merge-findings.js +126 -0
- package/templates/scripts/pib-db-schema.sql +68 -0
- package/templates/scripts/pib-db.js +365 -0
- package/templates/scripts/triage-server.mjs +98 -0
- package/templates/scripts/triage-ui.html +536 -0
- package/templates/skills/audit/SKILL.md +273 -0
- package/templates/skills/audit/phases/finding-output.md +56 -0
- package/templates/skills/audit/phases/member-execution.md +83 -0
- package/templates/skills/audit/phases/member-selection.md +44 -0
- package/templates/skills/audit/phases/structural-checks.md +54 -0
- package/templates/skills/audit/phases/triage-history.md +45 -0
- package/templates/skills/cabinet-accessibility/SKILL.md +180 -0
- package/templates/skills/cabinet-anti-confirmation/SKILL.md +172 -0
- package/templates/skills/cabinet-architecture/SKILL.md +279 -0
- package/templates/skills/cabinet-boundary-man/SKILL.md +265 -0
- package/templates/skills/cabinet-cor-health/SKILL.md +342 -0
- package/templates/skills/cabinet-data-integrity/SKILL.md +157 -0
- package/templates/skills/cabinet-debugger/SKILL.md +221 -0
- package/templates/skills/cabinet-historian/SKILL.md +253 -0
- package/templates/skills/cabinet-organized-mind/SKILL.md +338 -0
- package/templates/skills/cabinet-process-therapist/SKILL.md +261 -0
- package/templates/skills/cabinet-qa/SKILL.md +205 -0
- package/templates/skills/cabinet-record-keeper/SKILL.md +168 -0
- package/templates/skills/cabinet-roster-check/SKILL.md +297 -0
- package/templates/skills/cabinet-security/SKILL.md +181 -0
- package/templates/skills/cabinet-small-screen/SKILL.md +154 -0
- package/templates/skills/cabinet-speed-freak/SKILL.md +169 -0
- package/templates/skills/cabinet-system-advocate/SKILL.md +194 -0
- package/templates/skills/cabinet-technical-debt/SKILL.md +115 -0
- package/templates/skills/cabinet-usability/SKILL.md +189 -0
- package/templates/skills/cabinet-workflow-cop/SKILL.md +238 -0
- package/templates/skills/cor-upgrade/SKILL.md +302 -0
- package/templates/skills/debrief/SKILL.md +409 -0
- package/templates/skills/debrief/phases/auto-maintenance.md +48 -0
- package/templates/skills/debrief/phases/close-work.md +88 -0
- package/templates/skills/debrief/phases/health-checks.md +54 -0
- package/templates/skills/debrief/phases/inventory.md +40 -0
- package/templates/skills/debrief/phases/loose-ends.md +52 -0
- package/templates/skills/debrief/phases/record-lessons.md +67 -0
- package/templates/skills/debrief/phases/report.md +59 -0
- package/templates/skills/debrief/phases/update-state.md +48 -0
- package/templates/skills/debrief/phases/upstream-feedback.md +129 -0
- package/templates/skills/debrief-quick/SKILL.md +12 -0
- package/templates/skills/execute/SKILL.md +293 -0
- package/templates/skills/execute/phases/cabinet.md +49 -0
- package/templates/skills/execute/phases/commit-and-deploy.md +66 -0
- package/templates/skills/execute/phases/load-plan.md +49 -0
- package/templates/skills/execute/phases/validators.md +50 -0
- package/templates/skills/execute/phases/verification-tools.md +67 -0
- package/templates/skills/extract/SKILL.md +168 -0
- package/templates/skills/investigate/SKILL.md +160 -0
- package/templates/skills/link/SKILL.md +52 -0
- package/templates/skills/menu/SKILL.md +61 -0
- package/templates/skills/onboard/SKILL.md +356 -0
- package/templates/skills/onboard/phases/detect-state.md +79 -0
- package/templates/skills/onboard/phases/generate-briefing.md +127 -0
- package/templates/skills/onboard/phases/generate-session-loop.md +87 -0
- package/templates/skills/onboard/phases/interview.md +233 -0
- package/templates/skills/onboard/phases/modularity-menu.md +162 -0
- package/templates/skills/onboard/phases/options.md +98 -0
- package/templates/skills/onboard/phases/post-onboard-audit.md +121 -0
- package/templates/skills/onboard/phases/summary.md +122 -0
- package/templates/skills/onboard/phases/work-tracking.md +231 -0
- package/templates/skills/orient/SKILL.md +251 -0
- package/templates/skills/orient/phases/auto-maintenance.md +48 -0
- package/templates/skills/orient/phases/briefing.md +53 -0
- package/templates/skills/orient/phases/cabinet.md +46 -0
- package/templates/skills/orient/phases/context.md +63 -0
- package/templates/skills/orient/phases/data-sync.md +35 -0
- package/templates/skills/orient/phases/health-checks.md +50 -0
- package/templates/skills/orient/phases/work-scan.md +69 -0
- package/templates/skills/orient-quick/SKILL.md +12 -0
- package/templates/skills/plan/SKILL.md +358 -0
- package/templates/skills/plan/phases/cabinet-critique.md +47 -0
- package/templates/skills/plan/phases/calibration-examples.md +75 -0
- package/templates/skills/plan/phases/completeness-check.md +44 -0
- package/templates/skills/plan/phases/composition-check.md +36 -0
- package/templates/skills/plan/phases/overlap-check.md +62 -0
- package/templates/skills/plan/phases/plan-template.md +69 -0
- package/templates/skills/plan/phases/present.md +60 -0
- package/templates/skills/plan/phases/research.md +43 -0
- package/templates/skills/plan/phases/work-tracker.md +95 -0
- package/templates/skills/publish/SKILL.md +74 -0
- package/templates/skills/pulse/SKILL.md +242 -0
- package/templates/skills/pulse/phases/auto-fix-scope.md +40 -0
- package/templates/skills/pulse/phases/checks.md +58 -0
- package/templates/skills/pulse/phases/output.md +54 -0
- package/templates/skills/seed/SKILL.md +257 -0
- package/templates/skills/seed/phases/build-member.md +93 -0
- package/templates/skills/seed/phases/evaluate-existing.md +61 -0
- package/templates/skills/seed/phases/maintain.md +92 -0
- package/templates/skills/seed/phases/scan-signals.md +86 -0
- package/templates/skills/triage-audit/SKILL.md +251 -0
- package/templates/skills/triage-audit/phases/apply-verdicts.md +90 -0
- package/templates/skills/triage-audit/phases/load-findings.md +38 -0
- package/templates/skills/triage-audit/phases/triage-ui.md +66 -0
- package/templates/skills/unlink/SKILL.md +35 -0
- package/templates/skills/validate/SKILL.md +116 -0
- 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.
|