@keighleykodric/weeve 0.1.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/WORKFLOW.md ADDED
@@ -0,0 +1,354 @@
1
+ # WORKFLOW.md — Cross-pack rhythm
2
+
3
+ How ideas move from raw capture through to shipped code. This is the canonical doc for the cross-pack workflow. All sibling pack READMEs cite this file.
4
+
5
+ ---
6
+
7
+ ## The rhythm in one sentence
8
+
9
+ > Capture raw ideas in your preferred tool. Each lane's intake skill routes them. Lanes process their slice. Recommendations accumulate. Pilot synthesizes and ships.
10
+
11
+ ---
12
+
13
+ ## The full flow
14
+
15
+ ```
16
+ Your capture tool (notes, daily log, Obsidian, etc.)
17
+ ↓ raw capture
18
+ *-intake skills (per pack)
19
+ ↓ scoped rows with stable IDs
20
+ Pack main skills (primitives, zones, layers, campaigns)
21
+ ↓ structured findings
22
+ <pack>-recommendations.md (the recommendations file)
23
+ ↓ one file per pack in docs/<pack>/
24
+ /pilot-roadmap
25
+ ↓ merged, tiered, conflict-surfaced
26
+ docs/pilot/pilot-roadmap.md
27
+
28
+ /pilot-ship
29
+ ↓ N items per day, guardrails, PR
30
+ shipped code
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Step by step
36
+
37
+ ### Step 1 — Raw capture
38
+
39
+ Every idea, observation, or strategic thought gets captured first — in whatever tool you use. A daily note, an Obsidian vault, a plain text file. The goal is capture, not routing — get it down before it evaporates.
40
+
41
+ ```
42
+ User-to-user referral program — tight community, peer vouching,
43
+ low CAC. Maps to Compass doctrine + Layers+ Layer 4-7 + Maven channel strategy.
44
+ ```
45
+
46
+ This goes in your project notes. You can also skip straight to Step 2 and capture directly via intake skills.
47
+
48
+ > **Tip:** [Claudette](https://github.com/keighleykodric/claudette) is a personal CLI companion built for this workflow — `/research`, `/todo`, `/focus` commands that feed naturally into Weeve's intake skills. Not required, but designed to pair well.
49
+
50
+ ### Step 2 — Route to lanes via intake skills
51
+
52
+ Once captured, route the idea to the lanes that own slices of it. Each lane has an intake skill that accepts raw intent — paste in whatever context you have — and writes a scoped row with a stable ID.
53
+
54
+ **What to include with your intake:** The more context you provide, the better the intake skill can scope the work. Include any of:
55
+ - The idea or observation in your own words
56
+ - Links to relevant docs, tickets, or threads
57
+ - File paths or folder references in your codebase
58
+ - Screenshots, error messages, or user feedback
59
+ - Ticket/issue IDs from your project tracker
60
+
61
+ The intake skill will ask clarifying questions if it needs more.
62
+
63
+ ```
64
+ /compass-intake → CI-prefixed row → routes to compass-position / compass-move
65
+ /layers-plus-intake → LI-prefixed row → routes to layers-plus-strategy / surface
66
+ /ally-intake → AI-prefixed row → routes to ally zone audit
67
+ /rubric-intake → RI-prefixed row → routes to rubric-components / patterns
68
+ /maven-intake → MI-prefixed row → routes to maven-campaign-plan / deliverable
69
+ ```
70
+
71
+ One idea may produce intake rows in multiple packs if it spans strategy, product, and channel.
72
+
73
+ ### Step 3 — Packs process their slice
74
+
75
+ Each pack's main skills process the intake rows. They write findings to their output files under `docs/<pack>/` in the consumer project.
76
+
77
+ - Compass primitives + lenses → findings in `compass-*.md`
78
+ - Layers+ layers → findings in `layers-plus-*.md`
79
+ - Ally zones → findings in `ally-*.md`
80
+ - Rubric zones → findings in `rubric-*.md`
81
+ - Maven phases → findings in `maven-*.md`
82
+
83
+ Each pack is autonomous — it doesn't need the others to run.
84
+
85
+ ### Step 4 — Recommendations: the shared output format
86
+
87
+ Each pack writes a `<pack>-recommendations.md` file — the recommendations file Pilot reads. This file is the distilled, tiered, prioritized output of all the pack's work. It's the only file Pilot needs from each pack.
88
+
89
+ ```
90
+ docs/compass/compass-recommendations.md
91
+ docs/layers-plus/layers-plus-recommendations.md
92
+ docs/ally/ally-recommendations.md
93
+ docs/rubric/rubric-recommendations.md
94
+ docs/maven/maven-recommendations.md
95
+ ```
96
+
97
+ ### Step 5 — Pilot synthesizes: /pilot-roadmap
98
+
99
+ `/pilot-roadmap` reads all `<pack>-recommendations.md` files present, merges them into one prioritized backlog, surfaces cross-pack conflicts, and writes `docs/pilot/pilot-roadmap.md`.
100
+
101
+ Items are tiered: Now → Next → Watch. Cross-pack conflicts are surfaced explicitly — Pilot does not silently pick a side.
102
+
103
+ ### Step 6 — Pilot ships: /pilot-ship
104
+
105
+ `/pilot-ship` picks N items from the roadmap, executes against guardrails (constraints, design system health, accessibility health), and opens or updates a PR.
106
+
107
+ One daily batch, one check-in, one PR.
108
+
109
+ ---
110
+
111
+ ## The worked example — user-to-user referral
112
+
113
+ A strategic idea decomposed across the full system. This is the canonical illustration of how a cross-cutting idea flows. The route-then-decompose pattern is identical for any cross-functional setting: a SaaS team routing a growth initiative across strategy and delivery, a consulting firm coordinating an engagement across strategy and operations, a nonprofit aligning programme design with communications and fundraising.
114
+
115
+ ### The idea
116
+
117
+ Existing users send a personalized referral link to a peer who isn't on the platform. Link carries context (referrer ID, prefilled profile, voucher message). Recipient lands on a guided signup that knows who sent them. Referring user sees status updates. Reward: free month per successful referral.
118
+
119
+ ### Why it spans multiple packs
120
+
121
+ | Pack | Its slice |
122
+ | --- | --- |
123
+ | Compass | Strategic bet: is referral the right growth wedge? Which doctrine supports it? |
124
+ | Layers+ | Product surface: how does referral become a first-class product object? |
125
+ | Maven | Channel: how do we announce the program and sustain referral messaging? |
126
+
127
+ ### How it flows
128
+
129
+ | Step | Tool | What happens |
130
+ | --- | --- | --- |
131
+ | 1 | Your notes / capture tool | Raw capture: "User-to-user referral program — tight community, peer vouching, low CAC." Lands in project notes. |
132
+ | 2 | `/compass-intake` | Strategic slice captured: "Codify referral-as-growth-wedge as doctrine; specific move = build user-to-user invite mechanic." Writes CI-prefixed row. |
133
+ | 3 | `/compass-doctrine`, `/compass-move` | Process intake. Writes doctrine row (D-prefixed) and move row (M-prefixed). |
134
+ | 4 | `/layers-plus-intake` | Product slice: "Build referral as first-class product surface — Layer 4 strategic bet, Layers 5-7 implementation." Writes LI-prefixed row. |
135
+ | 5 | `/layers-plus-strategy`, `/layers-plus-conceptual-model`, `/layers-plus-interaction-flow`, `/layers-plus-surface` | Each layer processes its scoped rows. |
136
+ | 6 | `/maven-intake` | Channel slice: "Plan referral program announcement + ongoing referral messaging." Writes MI-prefixed row. |
137
+ | 7 | `/maven-campaign-plan`, `/maven-deliverable` | Process intake. Writes campaign plan and deliverable rows. |
138
+ | 8 | `/compass-recommendations`, `/layers-plus-recommendations`, `/maven-recommendations` | Each pack writes its prioritized recommendations. |
139
+ | 9 | `/pilot-roadmap` | Reads all three recommendations files. Synthesizes one backlog. Referral shows as one tracked initiative with strategy, product, and channel slices. |
140
+ | 10 | `/pilot-ship` | Picks N items, executes, opens PR. |
141
+
142
+ ### Key pattern
143
+
144
+ Single-pack ideas exist ("add a tooltip on the time-window picker" → Layers+ only). Most strategic ideas don't. The route-then-decompose pattern handles both:
145
+
146
+ - A tooltip change is one intake row.
147
+ - A growth wedge is six.
148
+
149
+ **Heuristic:** if you're not sure where it lands, ask "what's the *highest* tier this touches?" Start there and let it cascade. The referral idea's highest tier is Compass (strategic bet about *how we grow*). Start there.
150
+
151
+ ---
152
+
153
+ ## First-run order
154
+
155
+ When setting up the system from scratch, run packs in this order. Each step produces inputs that make the next step richer.
156
+
157
+ ```
158
+ 1. Compass — establish strategic position and growth doctrine
159
+ 2. Layers+ — evaluate product design against that strategy
160
+ 3. Felt — audit user research posture; feeds observed-behaviour and user-needs
161
+ 4. Ally — audit accessibility on the existing surface
162
+ 5. Rubric — audit design system health
163
+ 6. Maven — develop marketing positioning and brand voice
164
+ 7. Pitch — audit revenue health and GTM execution (reads Maven positioning)
165
+ 8. Pilot — synthesize all recommendations files
166
+ ```
167
+
168
+ **Why this order:** Compass sets the strategic frame; Layers+ uses it. Felt runs after Layers+ because its research output (felt-research.md, felt-personas.md) feeds directly into layers-plus-observed-behaviour and layers-plus-user-needs confidence ratings — run Layers+ first to know what research questions are open, then run Felt to answer them. Ally and Rubric are parallel (order between them doesn't matter). Maven reads Compass and Layers+ outputs for positioning context. Pitch runs after Maven — it checks whether the positioning is landing in deals and co-owns the Marketing→Sales lead handoff. Pilot reads all. (Forge/Helm/Verify/Guard can run in parallel after Layers+; see PITCH-LANE.md for the full 11-lane sequencing.)
169
+
170
+ Packs can be run in any order — this sequence is the recommended path for a first full run, not a hard dependency.
171
+
172
+ ---
173
+
174
+ ## Within-pack sequences
175
+
176
+ Cross-pack order is in the First-run order section above. Within each pack, skills run in a defined sequence. Steps marked _(optional)_ can be skipped on first run and added on re-runs or when the area is relevant.
177
+
178
+ ### Compass
179
+
180
+ ```
181
+ /compass-intro — onboarding; load once per project
182
+ /compass-orient — broad diagnostic; shows which primitives are missing
183
+ /compass-position — what you have, who your customers are, which markets
184
+ /compass-context — external forces, trends, competitor moves
185
+ /compass-doctrine — operating principles and anti-patterns
186
+ /compass-choice — active strategic choices and decisions
187
+ /compass-move — strategic moves in flight
188
+ Lens skills (pick relevant ones):
189
+ /compass-wardley — Wardley map; evolution and ecosystem position
190
+ /compass-jtbd — Jobs-to-be-done; primary market and outcomes
191
+ /compass-7powers — 7 Powers; defensibility check
192
+ /compass-market-research — (optional) external signal probe
193
+ /compass-recommendations — tiered move list from all lens outputs
194
+ ```
195
+
196
+ ### Layers+
197
+
198
+ ```
199
+ /layers-plus-intro — onboarding; load once per project
200
+ /layers-plus-orient — broad diagnostic across all seven layers
201
+ /layers-plus-user-needs — formalise user needs and job stories
202
+ /layers-plus-domain — domain concepts, terminology, constraints
203
+ /layers-plus-conceptual-model — product objects, relationships, key attributes
204
+ /layers-plus-interaction-flow — task flows, decision points, failure paths
205
+ /layers-plus-surface — screens, UI surfaces, component inventory
206
+ /layers-plus-observed-behaviour — (optional) user research synthesis
207
+ /layers-plus-strategy — opportunity map tied to user needs
208
+ /layers-plus-recommendations — prioritised improvement list
209
+ ```
210
+
211
+ ### Felt
212
+
213
+ ```
214
+ /felt-intro — onboarding; load once per project
215
+ /felt-orient — broad diagnostic across all seven research zones
216
+ Zone skills (run the zone with the biggest gap first):
217
+ /felt-research — generative research coverage audit
218
+ /felt-testing — usability and evaluative test coverage audit
219
+ /felt-data — analytics instrumentation and funnel audit
220
+ /felt-journey — journey map coverage and pain point catalogue
221
+ /felt-personas — segment definitions and JTBD validity audit
222
+ /felt-synthesis — affinity maps, themes, HMW statements
223
+ /felt-feedback — NPS, CSAT, support tickets, app reviews
224
+ Ad hoc:
225
+ /felt-intake — capture research requests and observations any time
226
+ Output (on demand from zone data):
227
+ /felt-report — stakeholder-ready research readout
228
+ /felt-recommendations — tiered research gap list (Pilot reads this)
229
+ Maintenance:
230
+ /felt-triage — walk open findings; close / defer / dismiss
231
+ /felt-check — verify closed findings are actually resolved
232
+ /felt-tickets — push findings to task management
233
+ /felt-dashboard — HTML visual status dashboard
234
+ ```
235
+
236
+ ### Ally
237
+
238
+ ```
239
+ /ally-intro — onboarding and zone framework; load once per project
240
+ /ally-map — route inventory + broad pass across all 7 zones
241
+ /ally-landscape — bottleneck analysis; recommends which zone to address next
242
+ Zone skills (run the zones landscape recommends first):
243
+ /ally-bones — semantic structure, landmarks, relationships
244
+ /ally-flow — keyboard nav, focus management, wayfinding
245
+ /ally-signal — contrast, text alternatives, media
246
+ /ally-control — input, touch, pointer, errors, forms
247
+ /ally-ease — time limits, language, reading level
248
+ /ally-calm — flashing, harmful motion, sensory overwhelm
249
+ /ally-reach — AT compatibility, screen readers, name/role/value
250
+ Output (on demand from audit data):
251
+ /ally-plan — ally-recommendations.md (Pilot reads this)
252
+ /ally-status — team health snapshot
253
+ /ally-report — org/leadership progress view
254
+ ```
255
+
256
+ ### Rubric
257
+
258
+ ```
259
+ /rubric-intro — onboarding; load once per project
260
+ /rubric-gap [topic] — (optional) trace a gap cascade before the zone audits
261
+ Zone audits (run in order; each builds on the last):
262
+ /rubric-tokens — foundations: CSS tokens, colour, spacing
263
+ /rubric-components — component inventory and conformance
264
+ /rubric-patterns — layout patterns, page templates
265
+ /rubric-voice — copy tone, vocabulary, Tier 1/2/3 conventions
266
+ /rubric-audit — full sweep across all four zones
267
+ /rubric-recommendations — prioritised system improvements (Pilot reads this)
268
+ ```
269
+
270
+ ### Maven
271
+
272
+ ```
273
+ /maven-intake — route raw observations to Maven; writes stable IDs
274
+ /maven-positioning — ICP, problem statement, unique attribute
275
+ /maven-brand-voice — tone, vocabulary, voice rules
276
+ /maven-channel-monitor — (optional) monitor live channel signals
277
+ /maven-campaign-plan — campaign design for a specific motion
278
+ Deliverables (on demand):
279
+ /maven-deliverable — one-pager, case study, or other artifact
280
+ /maven-social — platform-specific social posts
281
+ /maven-email — email sequence
282
+ /maven-battlecard — competitive battlecard
283
+ /maven-seo — keyword and content gap analysis
284
+ /maven-recommendations — prioritised marketing improvements (Pilot reads this)
285
+ ```
286
+
287
+ ### Pitch
288
+
289
+ ```
290
+ /pitch-intake — route raw sales observations (deals, objections, patterns)
291
+ /pitch-orient — diagnostic sweep; surfaces bottleneck zone
292
+ Zone audits (run weekly or on trigger):
293
+ /pitch-pipeline — stage distribution, velocity, stall rate, coverage
294
+ /pitch-icp — deal-level ICP fit and qualification discipline
295
+ /pitch-conversion — stage-to-stage drop-off, deal size, time-to-close
296
+ /pitch-competitive — win/loss patterns, battlecard accuracy
297
+ /pitch-outreach — sequence performance, channel mix, positioning alignment
298
+ /pitch-proposal — discovery quality, demo effectiveness, reference coverage
299
+ /pitch-pricing — discount discipline, pricing floor, pricing power
300
+ /pitch-leads — marketing → sales handoff (co-owned with Maven)
301
+ /pitch-forecast — commit-to-close rate, methodology health
302
+ /pitch-handoff — sales → CS handoff quality, early churn indicators
303
+ /pitch-recommendations — prioritised sales moves (Pilot reads this)
304
+ ```
305
+
306
+ ---
307
+
308
+ ## Cadence
309
+
310
+ | Pack | Typical cadence |
311
+ | --- | --- |
312
+ | Ally | Weekly (change detection) |
313
+ | Rubric | Weekly (drift detection) |
314
+ | Felt | On-demand (after each research study; quarterly hygiene sweep) |
315
+ | Layers+ | Monthly or on-demand (deeper, slower-changing) |
316
+ | Compass | Quarterly (strategic position) |
317
+ | Maven | On-demand (campaign-driven) |
318
+ | Pitch | Weekly (pipeline, conversion, forecast); on-trigger for competitive, pricing, handoff |
319
+ | Pilot `/roadmap` | After any pack refreshes its recommendations |
320
+ | Pilot `/ship` | Daily (autonomous batch) |
321
+
322
+ ---
323
+
324
+ ## Roadmap refresh triggers
325
+
326
+ `/pilot-roadmap` should be re-run when one of three trigger types fires. Running it on an arbitrary schedule produces noise; running it only when these triggers fire keeps it signal-dense.
327
+
328
+ **Milestone trigger** — re-run after any of:
329
+ - A pack completes a run and writes a new `<pack>-recommendations.md`
330
+ - A ship batch closes (all Now items shipped → re-read to confirm and promote Next items)
331
+ - A new pack is installed or an existing pack is significantly revised
332
+
333
+ **Signal trigger** — re-run immediately when a Watch item escalates:
334
+ - Any P-W item fires (competitor announcement, platform shift, external adopter feedback)
335
+ - A constraint in `docs/business.md` changes (e.g., a legal or business blocker resolves)
336
+ - A significant blocking finding is confirmed that wasn't in the current roadmap
337
+
338
+ **Time-based floor** — re-run at minimum once per quarter, even if no milestone or signal trigger has fired. Quarterly runs catch slow drift: Watch items that have aged past their revisit date, Next items whose effort estimates are now stale, constraints that have silently become unblocked.
339
+
340
+ **Who triggers it:** The Pilot operator (see GOVERNANCE.md § Roles). On teams, any pack owner can request a re-run by opening a PR to update their `<pack>-recommendations.md` and tagging the Pilot operator for review.
341
+
342
+ **What happens after a re-run:** Compare the new `pilot-roadmap.md` diff against the prior version. If any Now items changed tier, or any new conflicts surfaced, notify pack owners before starting the next `/pilot-ship` batch.
343
+
344
+ ---
345
+
346
+ ## Pack independence
347
+
348
+ Every pack works standalone. The workflow above is opt-in, not required. A designer can run Layers+ alone. A strategist can run Compass alone. Cross-pack references are citations — each pack degrades gracefully when sibling outputs are absent.
349
+
350
+ **The one exception:** Pilot needs at least one pack to have written a `<pack>-recommendations.md` file. With no packs writing recommendations, Pilot has nothing to synthesize. This is stated plainly in Pilot's README.
351
+
352
+ ---
353
+
354
+ *Maintained in [keighleykodric/weeve-pilot](https://github.com/keighleykodric/weeve-pilot). All sibling pack READMEs cite this file.*
package/bin/weeve.js ADDED
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { execSync } = require("child_process");
4
+
5
+ const ORG = "keighleykodric";
6
+
7
+ const LANES = {
8
+ // Strategy & Product
9
+ compass: "Strategic positioning — Wardley, JTBD, 7 Powers",
10
+ "layers-plus": "Product design — 7-layer evaluation",
11
+ felt: "UX research — personas, journeys, synthesis",
12
+
13
+ // Design & Accessibility
14
+ ally: "Accessibility — WCAG 2.2 AA across 7 zones",
15
+ rubric: "Design system — tokens, components, patterns",
16
+
17
+ // Engineering & Operations
18
+ forge: "Engineering health — architecture, code health, CI/CD",
19
+ helm: "Platform ops — deploy, rollback, monitoring, SLOs",
20
+ verify: "QA — test strategy, regression, release readiness",
21
+ guard: "Security — threat model, secrets, auth, compliance",
22
+
23
+ // Go-to-Market
24
+ maven: "Marketing — positioning, brand voice, campaigns",
25
+ pitch: "Sales — pipeline, ICP, conversion, pricing",
26
+
27
+ // Orchestration
28
+ pilot: "Synthesis — reads all lanes, writes the roadmap",
29
+ };
30
+
31
+ const PRESETS = {
32
+ all: Object.keys(LANES),
33
+ core: ["compass", "layers-plus", "ally", "rubric", "pilot"],
34
+ strategy: ["compass", "layers-plus", "maven", "pilot"],
35
+ engineering: ["forge", "helm", "verify", "guard", "pilot"],
36
+ product: ["compass", "layers-plus", "ally", "rubric", "felt", "pilot"],
37
+ gtm: ["compass", "maven", "pitch", "pilot"],
38
+ };
39
+
40
+ const cmd = process.argv[2];
41
+ const args = process.argv.slice(3);
42
+
43
+ function run(command) {
44
+ try {
45
+ execSync(command, { stdio: "inherit" });
46
+ } catch {
47
+ process.exit(1);
48
+ }
49
+ }
50
+
51
+ function installLanes(lanes) {
52
+ const invalid = lanes.filter((l) => !LANES[l]);
53
+ if (invalid.length) {
54
+ console.error(`Unknown lane(s): ${invalid.join(", ")}`);
55
+ console.error(`Run 'weeve list' to see available lanes.`);
56
+ process.exit(1);
57
+ }
58
+
59
+ console.log(`\nInstalling ${lanes.length} lane(s)...\n`);
60
+ for (const lane of lanes) {
61
+ const repo = `${ORG}/weeve-${lane}`;
62
+ console.log(` + ${lane} — ${LANES[lane]}`);
63
+ run(`npx skills add ${repo}`);
64
+ }
65
+ console.log(`\nDone. Run /pilot-intro to get started.\n`);
66
+ }
67
+
68
+ switch (cmd) {
69
+ case "add":
70
+ case "install": {
71
+ if (!args.length) {
72
+ console.error("Usage: weeve add <lane|preset> [lane2] [lane3]...");
73
+ console.error(" weeve add all");
74
+ console.error(" weeve add core");
75
+ console.error("Run 'weeve presets' to see preset groups.");
76
+ process.exit(1);
77
+ }
78
+
79
+ // Check if first arg is a preset
80
+ if (args.length === 1 && PRESETS[args[0]]) {
81
+ const preset = args[0];
82
+ console.log(`Preset: ${preset} (${PRESETS[preset].join(", ")})`);
83
+ installLanes(PRESETS[preset]);
84
+ } else {
85
+ installLanes(args);
86
+ }
87
+ break;
88
+ }
89
+
90
+ case "list":
91
+ case "lanes": {
92
+ console.log("\nAvailable lanes:\n");
93
+ const maxLen = Math.max(...Object.keys(LANES).map((k) => k.length));
94
+ for (const [name, desc] of Object.entries(LANES)) {
95
+ console.log(` ${name.padEnd(maxLen + 2)}${desc}`);
96
+ }
97
+ console.log();
98
+ break;
99
+ }
100
+
101
+ case "presets": {
102
+ console.log("\nPresets:\n");
103
+ for (const [name, lanes] of Object.entries(PRESETS)) {
104
+ console.log(` ${name.padEnd(14)}${lanes.join(", ")}`);
105
+ }
106
+ console.log("\nUsage: weeve add <preset>\n");
107
+ break;
108
+ }
109
+
110
+ case "help":
111
+ case undefined:
112
+ case "--help":
113
+ case "-h": {
114
+ console.log(`
115
+ weeve — Cross-functional alignment system
116
+
117
+ Commands:
118
+ weeve add <lane> [lane2...] Install one or more lanes
119
+ weeve add <preset> Install a preset group of lanes
120
+ weeve list Show all available lanes
121
+ weeve presets Show preset groups
122
+
123
+ Examples:
124
+ weeve add compass ally pilot Install three lanes
125
+ weeve add core Install core preset (compass, layers-plus, ally, rubric, pilot)
126
+ weeve add all Install everything
127
+
128
+ Presets:
129
+ all Every lane
130
+ core compass, layers-plus, ally, rubric, pilot
131
+ strategy compass, layers-plus, maven, pilot
132
+ engineering forge, helm, verify, guard, pilot
133
+ product compass, layers-plus, ally, rubric, felt, pilot
134
+ gtm compass, maven, pitch, pilot
135
+ `);
136
+ break;
137
+ }
138
+
139
+ default:
140
+ console.error(`Unknown command: ${cmd}`);
141
+ console.error("Run 'weeve help' for usage.");
142
+ process.exit(1);
143
+ }
@@ -0,0 +1,113 @@
1
+ # Ship gate protocol
2
+
3
+ _The cross-functional quality gate that blocks `/pilot-ship` when critical findings are open._
4
+
5
+ ---
6
+
7
+ ## What gate-ship means
8
+
9
+ A finding in any lane's recommendations file can carry a `gate-ship: true` field. When `/pilot-ship` runs, it scans the ship gate sections of Guard and Verify recommendations files. If any finding is marked `gate-ship: true` and its state is not `closed` or `accepted-risk`, the ship is blocked.
10
+
11
+ **The gate is a hard stop, not an advisory.** `/pilot-ship` will not execute tasks in the affected area until the finding is resolved or an explicit operator override is recorded.
12
+
13
+ ---
14
+
15
+ ## Which lanes can trigger it
16
+
17
+ Only two lanes have gate-ship authority by default:
18
+
19
+ | Lane | Why | Typical triggers |
20
+ |---|---|---|
21
+ | **Guard** | Security findings that create active risk — credential exposure, supply chain compromise, missing controls on a live system | Critical-severity findings (🔴 Critical) |
22
+ | **Verify** | Release readiness findings that mean the product is not safe to ship — no release process, no quality gate, untested critical path | Findings tagged `gate-ship: true` in `verify-release.md` |
23
+
24
+ Other lanes (Forge, Helm, Ally, Rubric, Layers+, Maven, Felt, Compass) surface findings at 🔴 High / 🟡 Medium / 🟢 Low severity but do not gate ship. Their findings appear in the roadmap as Now / Next / Watch items. A 🔴 High finding from Ally is urgent but does not block — it becomes a Now item that `/pilot-ship` prioritises.
25
+
26
+ ---
27
+
28
+ ## Severity mapping
29
+
30
+ | Finding severity | Gate behaviour |
31
+ |---|---|
32
+ | 🔴 Critical (Guard only) | **Blocks ship** — `gate-ship: true` by default |
33
+ | 🔴 High | Now item in roadmap; does not gate ship |
34
+ | 🟡 Medium | Next item; tracked with deadline |
35
+ | 🟢 Low | Watch tier; not surfaced at ship time |
36
+
37
+ Only Critical gates ship by default. If every High finding blocked, the gate would stop being credible. High findings belong on the next-batch punch list, not as a stop-everything signal.
38
+
39
+ Verify's gate-ship works differently: any finding in `verify-release.md` can be explicitly tagged `gate-ship: true` regardless of severity — the release readiness zone owns that decision.
40
+
41
+ ---
42
+
43
+ ## How the block appears
44
+
45
+ When `/pilot-ship` encounters an active gate-ship finding, it:
46
+
47
+ 1. Reports the finding in the check-in under `## Ship blocked`
48
+ 2. Lists the finding ID, pillar, severity, what it is, and why it blocks
49
+ 3. Stops execution for the affected area
50
+ 4. Does not proceed to task execution until the finding is resolved
51
+
52
+ The block is per-area, not global. A Guard finding blocking compass and pilot repos does not block work in other repos. `/pilot-ship` will still execute tasks that don't touch the affected area.
53
+
54
+ ---
55
+
56
+ ## Override path
57
+
58
+ An operator can override a gate-ship block. The override must include:
59
+
60
+ 1. **Recorded reason** — why shipping is acceptable despite the finding
61
+ 2. **Scope** — what area the override covers
62
+ 3. **Owner** — who made the decision
63
+
64
+ The override is appended to the **Ship override history** table in the relevant recommendations file so the pattern becomes visible across runs. If the same finding is overridden repeatedly, the finding's severity or scope is wrong — surface it as a 🔴 item to fix the finding, not the override.
65
+
66
+ ```markdown
67
+ ## Ship override history
68
+
69
+ | Date | Finding | Reason | Scope | Owner |
70
+ |---|---|---|---|---|
71
+ | 2026-05-25 | GR1 | Token rotated; audit log clean; gate lifted | compass, pilot | @operator |
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Post-ship finding status
77
+
78
+ Blocking findings do not auto-close on ship. When a gate-ship finding is resolved:
79
+
80
+ 1. The lane's `-check` skill verifies the fix (`/guard-check`, `/verify-check`)
81
+ 2. The finding state is updated to `closed` in the recommendations file
82
+ 3. The gate-ship field remains `true` but the state change lifts the block
83
+ 4. `/pilot-ship` reads the updated state on its next run and proceeds
84
+
85
+ ---
86
+
87
+ ## How to add gate-ship to a finding
88
+
89
+ In a lane's recommendations skill spec, tag the finding:
90
+
91
+ ```markdown
92
+ **gate-ship:** true
93
+ **State:** open
94
+ ```
95
+
96
+ The finding must also appear in a dedicated `## Ship gate` section at the top of the recommendations file so `/pilot-ship` can scan it without parsing the full document.
97
+
98
+ ---
99
+
100
+ ## Governance
101
+
102
+ Changes to the gate-ship protocol (which lanes can trigger it, what severity level gates by default, override rules) are framework-level decisions. They should be:
103
+
104
+ 1. Documented here (this file is the canonical reference)
105
+ 2. Reflected in `lane-conventions.md` under the severity mapping section
106
+ 3. Communicated to all lane maintainers
107
+
108
+ Adding gate-ship authority to a new lane requires a recorded decision in `docs/decisions.md` — it changes the power dynamics of Weeve.
109
+
110
+ ---
111
+
112
+ _Source: `lane-conventions.md` severity mapping, Guard and Verify recommendations skill specs, `/pilot-ship` skill spec_
113
+ _Generated by [pilot](https://github.com/keighleykodric/weeve-pilot) · 2026-05-25_