@keighleykodric/weeve 0.1.0 → 0.1.1
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/GOVERNANCE.md +21 -21
- package/README.md +8 -8
- package/WORKFLOW.md +31 -31
- package/bin/weeve.js +17 -2
- package/package.json +1 -1
- package/reference/contributing-template.md +108 -0
- package/{docs/shared/lane-conventions.md → reference/conventions.md} +37 -7
- package/{docs/shared/engineering-pack-contract.md → reference/engineering-contract.md} +14 -14
- package/{docs/shared/id-prefix-reference.md → reference/id-prefixes.md} +9 -9
- package/{docs/shared/idea-intake-pattern.md → reference/intake-pattern.md} +10 -10
- package/reference/readme-template.md +55 -0
- package/{docs/shared/recommendations-schema.md → reference/schema.md} +27 -27
- /package/{docs/shared/SHIP-GATE.md → reference/ship-gate.md} +0 -0
package/GOVERNANCE.md
CHANGED
|
@@ -19,9 +19,9 @@ This is the natural failure mode of any document collaboration system at scale.
|
|
|
19
19
|
|
|
20
20
|
Weeve already has the right ownership structure built in:
|
|
21
21
|
|
|
22
|
-
- Each
|
|
22
|
+
- Each lane has a domain (compass = strategy, maven = marketing, etc.)
|
|
23
23
|
- Each contract file has a clear consumer (Pilot reads recommendations)
|
|
24
|
-
- Each output has a logical author (the department that owns the
|
|
24
|
+
- Each output has a logical author (the department that owns the lane)
|
|
25
25
|
|
|
26
26
|
What's missing is the *governance overlay* that exposes this structure and enforces it. The good news: 80% of the solution is infrastructure orgs already use. Nothing new needs to be invented.
|
|
27
27
|
|
|
@@ -56,28 +56,28 @@ Combined with branch protection rules requiring owner approval, this is a hard g
|
|
|
56
56
|
|
|
57
57
|
Adoption is the only friction. Most orgs using GitHub already use CODEOWNERS for code; using it for the docs folders is the same pattern applied one level over. Weeve should ship a template CODEOWNERS file and make adoption obvious during install.
|
|
58
58
|
|
|
59
|
-
## Layer 2 —
|
|
59
|
+
## Layer 2 — Lane-declared ownership (small addition)
|
|
60
60
|
|
|
61
|
-
Each
|
|
61
|
+
Each lane declares its owner, consumers, and output in a small `lane.yaml`:
|
|
62
62
|
|
|
63
63
|
```yaml
|
|
64
|
-
|
|
64
|
+
lane: compass
|
|
65
65
|
owner: leadership
|
|
66
66
|
consumers: [product, engineering, marketing]
|
|
67
|
-
|
|
67
|
+
output: compass-recommendations.md
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
This becomes:
|
|
71
71
|
|
|
72
72
|
- A scaffolding template — installing Compass for an org auto-generates the right CODEOWNERS entry, picking up the org's team names from a one-time setup
|
|
73
|
-
- A documentation artifact — anyone reading the
|
|
73
|
+
- A documentation artifact — anyone reading the lane repo can see who owns what
|
|
74
74
|
- Input to downstream tooling — populates role-based views and routing without extra configuration
|
|
75
75
|
|
|
76
76
|
Small addition; large payoff in adoption clarity.
|
|
77
77
|
|
|
78
78
|
## Read vs write
|
|
79
79
|
|
|
80
|
-
Weeve gates *writes*, not reads. Cross-functional alignment depends on cross-
|
|
80
|
+
Weeve gates *writes*, not reads. Cross-functional alignment depends on cross-lane readability:
|
|
81
81
|
|
|
82
82
|
- Marketing reads `compass-position` to understand the strategic frame
|
|
83
83
|
- Leadership reads `ally-recommendations` to understand accessibility commitments
|
|
@@ -87,19 +87,19 @@ Everyone can read everything. Only the *authors* are gated.
|
|
|
87
87
|
|
|
88
88
|
## Roles and ownership
|
|
89
89
|
|
|
90
|
-
Each domain
|
|
90
|
+
Each domain lane has an obvious owner (the department whose work it captures). Pilot doesn't — it's the meta-lane. "Owning Pilot" splits into three roles, which collapse to one or two people at startup scale but need to be named so they can separate cleanly as the org grows:
|
|
91
91
|
|
|
92
92
|
| Role | Owns | Small startup | Medium startup |
|
|
93
93
|
|---|---|---|---|
|
|
94
94
|
| **Pilot operator** | Runs `/pilot-roadmap` and `/pilot-ship`. Routine work. | Eng lead, platform person, or founder | Platform team |
|
|
95
95
|
| **Pilot owner** | The roadmap *output* and the prioritization that produces it. Cross-functional priorities. | Founder / CEO | Leadership team |
|
|
96
|
-
| **Alignment platform owner** | Weeve config — which
|
|
96
|
+
| **Alignment platform owner** | Weeve config — which lanes are installed, scoring weights, CODEOWNERS template, integrations. | Weeve champion | Platform / ops |
|
|
97
97
|
|
|
98
98
|
At small scale (5–50 people), one person is typically all three. That's fine. Naming the roles now lets them split cleanly later without re-architecting.
|
|
99
99
|
|
|
100
|
-
The departmental
|
|
100
|
+
The departmental lane owners map straightforwardly:
|
|
101
101
|
|
|
102
|
-
|
|
|
102
|
+
| Lane | Default owner |
|
|
103
103
|
|---|---|
|
|
104
104
|
| Compass | Leadership / founder |
|
|
105
105
|
| Layers+ | Product / design |
|
|
@@ -116,9 +116,9 @@ Concrete shape for an org adopting Weeve:
|
|
|
116
116
|
```
|
|
117
117
|
alignment/ (the org's adoption repo, e.g. github.com/your-org/alignment)
|
|
118
118
|
├── .alignment/ <- meta-config; owned by platform
|
|
119
|
-
│ ├── config
|
|
119
|
+
│ ├── weeve.config <- installed lanes, scoring weights, integrations
|
|
120
120
|
│ ├── CODEOWNERS <- write permissions per folder
|
|
121
|
-
│ └──
|
|
121
|
+
│ └── lane-overrides/ <- org-specific tweaks (rare)
|
|
122
122
|
├── docs/
|
|
123
123
|
│ ├── compass/ <- @leadership-team
|
|
124
124
|
│ ├── layers-plus/ <- @product-team
|
|
@@ -129,15 +129,15 @@ alignment/ (the org's adoption repo, e.g. github.com/your-org/
|
|
|
129
129
|
└── README.md
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
`.alignment/` is the meta-config layer. The platform person owns it; leadership owns the Pilot output (the roadmap); each department owns their
|
|
132
|
+
`.alignment/` is the meta-config layer. The platform person owns it; leadership owns the Pilot output (the roadmap); each department owns their lane's folder. CODEOWNERS enforces all of it.
|
|
133
133
|
|
|
134
134
|
**Splitting `docs/pilot/` ownership:**
|
|
135
135
|
|
|
136
|
-
The *roadmap content* is leadership's call (these are company priorities). The *operational config* is platform's call (scoring weights, drift thresholds,
|
|
136
|
+
The *roadmap content* is leadership's call (these are company priorities). The *operational config* is platform's call (scoring weights, drift thresholds, lane weighting). CODEOWNERS handles this file-by-file:
|
|
137
137
|
|
|
138
138
|
```
|
|
139
139
|
docs/pilot/pilot-roadmap.md @leadership-team
|
|
140
|
-
docs/pilot/pilot-config
|
|
140
|
+
docs/pilot/pilot-weeve.config @platform-team
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
That split mirrors the role split above.
|
|
@@ -149,11 +149,11 @@ For an adopting org, configuration spans several layers. Each has a clear owner:
|
|
|
149
149
|
| Config layer | What it controls | Owner |
|
|
150
150
|
|---|---|---|
|
|
151
151
|
| `.alignment/CODEOWNERS` | Write permissions per folder | Platform |
|
|
152
|
-
| `.alignment/config
|
|
153
|
-
| `
|
|
154
|
-
|
|
|
152
|
+
| `.alignment/weeve.config` | Installed lanes, dashboard output, scoring weights, integrations | Platform |
|
|
153
|
+
| `lane.yaml` (per lane) | Lane-declared ownership and consumers | Platform (informed by departments) |
|
|
154
|
+
| Lane version pinning | Which version of each lane is installed | Platform (via git, like any dependency) |
|
|
155
155
|
| Integration credentials | OAuth tokens, webhook URLs | Platform; secured per org policy |
|
|
156
|
-
|
|
|
156
|
+
| Lane content (per `docs/<lane>/`) | The actual recommendations and audit files | Department owner per lane |
|
|
157
157
|
|
|
158
158
|
The config is owned by whoever owns the repo — typically the same person who already maintains the company's GitHub org or `.github/` folder. This isn't a new role to invent; it's a small addition to an existing responsibility.
|
|
159
159
|
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Weeve
|
|
1
|
+
# 🧵 Weeve
|
|
2
2
|
|
|
3
3
|
Cross-functional alignment system. 14+ lanes that audit strategy, product, design, engineering, QA, security, marketing, sales, and UX — then synthesize into one prioritized roadmap.
|
|
4
4
|
|
|
@@ -77,12 +77,12 @@ Departments without a lane can still contribute. Any team member can feed contex
|
|
|
77
77
|
Not sure which lanes to install? Pick a preset that matches your role:
|
|
78
78
|
|
|
79
79
|
```
|
|
80
|
-
npx weeve add core # Designer/strategist starting point
|
|
81
|
-
npx weeve add product # Product manager — strategy + design + research
|
|
82
|
-
npx weeve add engineering # Engineering lead — delivery + security + QA
|
|
83
|
-
npx weeve add strategy # Founder/leadership — strategy + marketing
|
|
84
|
-
npx weeve add gtm # Go-to-market — strategy + marketing + sales
|
|
85
|
-
npx weeve add all # Everything
|
|
80
|
+
npx @keighleykodric/weeve add core # Designer/strategist starting point
|
|
81
|
+
npx @keighleykodric/weeve add product # Product manager — strategy + design + research
|
|
82
|
+
npx @keighleykodric/weeve add engineering # Engineering lead — delivery + security + QA
|
|
83
|
+
npx @keighleykodric/weeve add strategy # Founder/leadership — strategy + marketing
|
|
84
|
+
npx @keighleykodric/weeve add gtm # Go-to-market — strategy + marketing + sales
|
|
85
|
+
npx @keighleykodric/weeve add all # Everything
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
| Preset | Lanes included |
|
|
@@ -129,7 +129,7 @@ The schema is the durable asset. Severity uses `🔴 High / 🟡 Medium / 🟢 L
|
|
|
129
129
|
|
|
130
130
|
Each lane is its own repo. To contribute to a lane, open an issue or PR on that lane's repo.
|
|
131
131
|
|
|
132
|
-
To build a community lane, see [GOVERNANCE.md](GOVERNANCE.md) for the
|
|
132
|
+
To build a community lane, see [GOVERNANCE.md](GOVERNANCE.md) for the lane.yaml spec, CODEOWNERS model, and the ship interface contract.
|
|
133
133
|
|
|
134
134
|
---
|
|
135
135
|
|
package/WORKFLOW.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# WORKFLOW.md — Cross-
|
|
1
|
+
# WORKFLOW.md — Cross-lane rhythm
|
|
2
2
|
|
|
3
|
-
How ideas move from raw capture through to shipped code. This is the canonical doc for the cross-
|
|
3
|
+
How ideas move from raw capture through to shipped code. This is the canonical doc for the cross-lane workflow. All sibling lane READMEs cite this file.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -15,12 +15,12 @@ How ideas move from raw capture through to shipped code. This is the canonical d
|
|
|
15
15
|
```
|
|
16
16
|
Your capture tool (notes, daily log, Obsidian, etc.)
|
|
17
17
|
↓ raw capture
|
|
18
|
-
*-intake skills (per
|
|
18
|
+
*-intake skills (per lane)
|
|
19
19
|
↓ scoped rows with stable IDs
|
|
20
|
-
|
|
20
|
+
Lane main skills (primitives, zones, layers, campaigns)
|
|
21
21
|
↓ structured findings
|
|
22
|
-
<
|
|
23
|
-
↓ one file per
|
|
22
|
+
<lane>-recommendations.md (the recommendations file)
|
|
23
|
+
↓ one file per lane in docs/<lane>/
|
|
24
24
|
/pilot-roadmap
|
|
25
25
|
↓ merged, tiered, conflict-surfaced
|
|
26
26
|
docs/pilot/pilot-roadmap.md
|
|
@@ -68,11 +68,11 @@ The intake skill will ask clarifying questions if it needs more.
|
|
|
68
68
|
/maven-intake → MI-prefixed row → routes to maven-campaign-plan / deliverable
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
One idea may produce intake rows in multiple
|
|
71
|
+
One idea may produce intake rows in multiple lanes if it spans strategy, product, and channel.
|
|
72
72
|
|
|
73
|
-
### Step 3 —
|
|
73
|
+
### Step 3 — Lanes process their slice
|
|
74
74
|
|
|
75
|
-
Each
|
|
75
|
+
Each lane's main skills process the intake rows. They write findings to their output files under `docs/<lane>/` in the consumer project.
|
|
76
76
|
|
|
77
77
|
- Compass primitives + lenses → findings in `compass-*.md`
|
|
78
78
|
- Layers+ layers → findings in `layers-plus-*.md`
|
|
@@ -80,11 +80,11 @@ Each pack's main skills process the intake rows. They write findings to their ou
|
|
|
80
80
|
- Rubric zones → findings in `rubric-*.md`
|
|
81
81
|
- Maven phases → findings in `maven-*.md`
|
|
82
82
|
|
|
83
|
-
Each
|
|
83
|
+
Each lane is autonomous — it doesn't need the others to run.
|
|
84
84
|
|
|
85
85
|
### Step 4 — Recommendations: the shared output format
|
|
86
86
|
|
|
87
|
-
Each
|
|
87
|
+
Each lane writes a `<lane>-recommendations.md` file — the recommendations file Pilot reads. This file is the distilled, tiered, prioritized output of all the lane's work. It's the only file Pilot needs from each lane.
|
|
88
88
|
|
|
89
89
|
```
|
|
90
90
|
docs/compass/compass-recommendations.md
|
|
@@ -96,9 +96,9 @@ docs/maven/maven-recommendations.md
|
|
|
96
96
|
|
|
97
97
|
### Step 5 — Pilot synthesizes: /pilot-roadmap
|
|
98
98
|
|
|
99
|
-
`/pilot-roadmap` reads all `<
|
|
99
|
+
`/pilot-roadmap` reads all `<lane>-recommendations.md` files present, merges them into one prioritized backlog, surfaces cross-lane conflicts, and writes `docs/pilot/pilot-roadmap.md`.
|
|
100
100
|
|
|
101
|
-
Items are tiered: Now → Next → Watch. Cross-
|
|
101
|
+
Items are tiered: Now → Next → Watch. Cross-lane conflicts are surfaced explicitly — Pilot does not silently pick a side.
|
|
102
102
|
|
|
103
103
|
### Step 6 — Pilot ships: /pilot-ship
|
|
104
104
|
|
|
@@ -116,9 +116,9 @@ A strategic idea decomposed across the full system. This is the canonical illust
|
|
|
116
116
|
|
|
117
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
118
|
|
|
119
|
-
### Why it spans multiple
|
|
119
|
+
### Why it spans multiple lanes
|
|
120
120
|
|
|
121
|
-
|
|
|
121
|
+
| Lane | Its slice |
|
|
122
122
|
| --- | --- |
|
|
123
123
|
| Compass | Strategic bet: is referral the right growth wedge? Which doctrine supports it? |
|
|
124
124
|
| Layers+ | Product surface: how does referral become a first-class product object? |
|
|
@@ -135,13 +135,13 @@ Existing users send a personalized referral link to a peer who isn't on the plat
|
|
|
135
135
|
| 5 | `/layers-plus-strategy`, `/layers-plus-conceptual-model`, `/layers-plus-interaction-flow`, `/layers-plus-surface` | Each layer processes its scoped rows. |
|
|
136
136
|
| 6 | `/maven-intake` | Channel slice: "Plan referral program announcement + ongoing referral messaging." Writes MI-prefixed row. |
|
|
137
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
|
|
138
|
+
| 8 | `/compass-recommendations`, `/layers-plus-recommendations`, `/maven-recommendations` | Each lane writes its prioritized recommendations. |
|
|
139
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
140
|
| 10 | `/pilot-ship` | Picks N items, executes, opens PR. |
|
|
141
141
|
|
|
142
142
|
### Key pattern
|
|
143
143
|
|
|
144
|
-
Single-
|
|
144
|
+
Single-lane 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
145
|
|
|
146
146
|
- A tooltip change is one intake row.
|
|
147
147
|
- A growth wedge is six.
|
|
@@ -152,7 +152,7 @@ Single-pack ideas exist ("add a tooltip on the time-window picker" → Layers+ o
|
|
|
152
152
|
|
|
153
153
|
## First-run order
|
|
154
154
|
|
|
155
|
-
When setting up the system from scratch, run
|
|
155
|
+
When setting up the system from scratch, run lanes in this order. Each step produces inputs that make the next step richer.
|
|
156
156
|
|
|
157
157
|
```
|
|
158
158
|
1. Compass — establish strategic position and growth doctrine
|
|
@@ -167,13 +167,13 @@ When setting up the system from scratch, run packs in this order. Each step prod
|
|
|
167
167
|
|
|
168
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
169
|
|
|
170
|
-
|
|
170
|
+
Lanes can be run in any order — this sequence is the recommended path for a first full run, not a hard dependency.
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
## Within-
|
|
174
|
+
## Within-lane sequences
|
|
175
175
|
|
|
176
|
-
Cross-
|
|
176
|
+
Cross-lane order is in the First-run order section above. Within each lane, 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
177
|
|
|
178
178
|
### Compass
|
|
179
179
|
|
|
@@ -307,7 +307,7 @@ Zone audits (run weekly or on trigger):
|
|
|
307
307
|
|
|
308
308
|
## Cadence
|
|
309
309
|
|
|
310
|
-
|
|
|
310
|
+
| Lane | Typical cadence |
|
|
311
311
|
| --- | --- |
|
|
312
312
|
| Ally | Weekly (change detection) |
|
|
313
313
|
| Rubric | Weekly (drift detection) |
|
|
@@ -316,7 +316,7 @@ Zone audits (run weekly or on trigger):
|
|
|
316
316
|
| Compass | Quarterly (strategic position) |
|
|
317
317
|
| Maven | On-demand (campaign-driven) |
|
|
318
318
|
| Pitch | Weekly (pipeline, conversion, forecast); on-trigger for competitive, pricing, handoff |
|
|
319
|
-
| Pilot `/roadmap` | After any
|
|
319
|
+
| Pilot `/roadmap` | After any lane refreshes its recommendations |
|
|
320
320
|
| Pilot `/ship` | Daily (autonomous batch) |
|
|
321
321
|
|
|
322
322
|
---
|
|
@@ -326,9 +326,9 @@ Zone audits (run weekly or on trigger):
|
|
|
326
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
327
|
|
|
328
328
|
**Milestone trigger** — re-run after any of:
|
|
329
|
-
- A
|
|
329
|
+
- A lane completes a run and writes a new `<lane>-recommendations.md`
|
|
330
330
|
- A ship batch closes (all Now items shipped → re-read to confirm and promote Next items)
|
|
331
|
-
- A new
|
|
331
|
+
- A new lane is installed or an existing lane is significantly revised
|
|
332
332
|
|
|
333
333
|
**Signal trigger** — re-run immediately when a Watch item escalates:
|
|
334
334
|
- Any P-W item fires (competitor announcement, platform shift, external adopter feedback)
|
|
@@ -337,18 +337,18 @@ Zone audits (run weekly or on trigger):
|
|
|
337
337
|
|
|
338
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
339
|
|
|
340
|
-
**Who triggers it:** The Pilot operator (see GOVERNANCE.md § Roles). On teams, any
|
|
340
|
+
**Who triggers it:** The Pilot operator (see GOVERNANCE.md § Roles). On teams, any lane owner can request a re-run by opening a PR to update their `<lane>-recommendations.md` and tagging the Pilot operator for review.
|
|
341
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
|
|
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 lane owners before starting the next `/pilot-ship` batch.
|
|
343
343
|
|
|
344
344
|
---
|
|
345
345
|
|
|
346
|
-
##
|
|
346
|
+
## Lane independence
|
|
347
347
|
|
|
348
|
-
Every
|
|
348
|
+
Every lane works standalone. The workflow above is opt-in, not required. A designer can run Layers+ alone. A strategist can run Compass alone. Cross-lane references are citations — each lane degrades gracefully when sibling outputs are absent.
|
|
349
349
|
|
|
350
|
-
**The one exception:** Pilot needs at least one
|
|
350
|
+
**The one exception:** Pilot needs at least one lane to have written a `<lane>-recommendations.md` file. With no lanes writing recommendations, Pilot has nothing to synthesize. This is stated plainly in Pilot's README.
|
|
351
351
|
|
|
352
352
|
---
|
|
353
353
|
|
|
354
|
-
*Maintained in [keighleykodric/weeve-pilot](https://github.com/keighleykodric/weeve-pilot). All sibling
|
|
354
|
+
*Maintained in [keighleykodric/weeve-pilot](https://github.com/keighleykodric/weeve-pilot). All sibling lane READMEs cite this file.*
|
package/bin/weeve.js
CHANGED
|
@@ -62,7 +62,15 @@ function installLanes(lanes) {
|
|
|
62
62
|
console.log(` + ${lane} — ${LANES[lane]}`);
|
|
63
63
|
run(`npx skills add ${repo}`);
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
// Show the right first step based on what was installed
|
|
66
|
+
const FIRST_STEP_ORDER = ["compass", "layers-plus", "felt", "ally", "rubric", "forge", "helm", "verify", "guard", "maven", "pitch", "pilot"];
|
|
67
|
+
const firstLane = FIRST_STEP_ORDER.find((l) => lanes.includes(l));
|
|
68
|
+
if (firstLane && firstLane !== "pilot") {
|
|
69
|
+
console.log(`\nDone. Run /${firstLane}-intro to get started.`);
|
|
70
|
+
console.log(`Then work through your lanes. Run /pilot-intro last — it reads all lane outputs.\n`);
|
|
71
|
+
} else {
|
|
72
|
+
console.log(`\nDone. Run /pilot-intro to get started.\n`);
|
|
73
|
+
}
|
|
66
74
|
}
|
|
67
75
|
|
|
68
76
|
switch (cmd) {
|
|
@@ -112,7 +120,14 @@ switch (cmd) {
|
|
|
112
120
|
case "--help":
|
|
113
121
|
case "-h": {
|
|
114
122
|
console.log(`
|
|
115
|
-
|
|
123
|
+
██╗ ██╗███████╗███████╗██╗ ██╗███████╗
|
|
124
|
+
██║ ██║██╔════╝██╔════╝██║ ██║██╔════╝
|
|
125
|
+
██║ █╗ ██║█████╗ █████╗ ██║ ██║█████╗
|
|
126
|
+
██║███╗██║██╔══╝ ██╔══╝ ╚██╗ ██╔╝██╔══╝
|
|
127
|
+
╚███╔███╔╝███████╗███████╗ ╚████╔╝ ███████╗
|
|
128
|
+
╚══╝╚══╝ ╚══════╝╚══════╝ ╚═══╝ ╚══════╝
|
|
129
|
+
|
|
130
|
+
Cross-functional alignment system
|
|
116
131
|
|
|
117
132
|
Commands:
|
|
118
133
|
weeve add <lane> [lane2...] Install one or more lanes
|
package/package.json
CHANGED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# CONTRIBUTING.md template for Weeve lanes
|
|
2
|
+
|
|
3
|
+
_Replace `<lane>` with the lane name (e.g., compass, ally, forge). Remove this preamble before publishing._
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Contributing
|
|
8
|
+
|
|
9
|
+
## Adding a step
|
|
10
|
+
|
|
11
|
+
Each step is a single `SKILL.md` file in its own directory under `skills/`.
|
|
12
|
+
|
|
13
|
+
**Directory naming:** `NN-<lane>-<name>/` where `NN` is a two-digit prefix for human ordering. The prefix doesn't affect how the installer sorts — it uses the `name` frontmatter field — but it keeps the directory listing readable.
|
|
14
|
+
|
|
15
|
+
**Required frontmatter:**
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
---
|
|
19
|
+
name: <lane>-<name>
|
|
20
|
+
description: One sentence. What does this step do and what does it write?
|
|
21
|
+
---
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
No quotes around the description value. The `name` field becomes the slash command.
|
|
25
|
+
|
|
26
|
+
## Step structure
|
|
27
|
+
|
|
28
|
+
Every step should follow this pattern:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
---
|
|
32
|
+
name: <lane>-<name>
|
|
33
|
+
description: ...
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# /<lane>-<name>
|
|
37
|
+
|
|
38
|
+
*Brief framing — what question does this step answer?*
|
|
39
|
+
|
|
40
|
+
**Read only, write audit only.** [What it reads. What it writes.]
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## State detection
|
|
45
|
+
|
|
46
|
+
[Check docs/<lane>/ for existing files and handle clean/partial/old-format states.]
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## What to audit
|
|
51
|
+
|
|
52
|
+
[Specific things to look for, organised by sub-topic.]
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Rating
|
|
57
|
+
|
|
58
|
+
[Strong / Partial / Weak / Manual check required — with definitions.]
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Write `<lane>-<name>.md`
|
|
63
|
+
|
|
64
|
+
[Exact output template in a fenced code block.]
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## After auditing
|
|
69
|
+
|
|
70
|
+
[Confirm the file was written. Brief summary. Recommended next step.]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## The audit-only rule
|
|
74
|
+
|
|
75
|
+
Steps read source files. They never edit, refactor, or fix anything in the repo being audited. If a step finds a problem, it records it in the output file — it does not fix it. Fixes are the operator's decision.
|
|
76
|
+
|
|
77
|
+
## Output files
|
|
78
|
+
|
|
79
|
+
Each step writes exactly one file: its designated `<lane>-<name>.md` in `docs/<lane>/`. No other files. No improvised outputs. No splitting results across multiple locations.
|
|
80
|
+
|
|
81
|
+
If a step needs data from another step, it reads that step's output file — it does not re-run the audit.
|
|
82
|
+
|
|
83
|
+
## Testing a step
|
|
84
|
+
|
|
85
|
+
1. Make changes in `skills/<NN>-<name>/SKILL.md` (the repo — not the installed copy)
|
|
86
|
+
2. Copy to the installed location: `cp -r skills/<NN>-<name> ~/.claude/skills/<name>`
|
|
87
|
+
3. Run the step in a test project that has (or doesn't have) a `docs/<lane>/` folder
|
|
88
|
+
4. Check the output file matches the template exactly
|
|
89
|
+
|
|
90
|
+
## Error messages
|
|
91
|
+
|
|
92
|
+
Every error has three parts, one line each:
|
|
93
|
+
|
|
94
|
+
1. **What happened** — the observed state, factual.
|
|
95
|
+
2. **Why it matters** — why this state requires a response from the operator.
|
|
96
|
+
3. **What to do next** — concrete recovery action.
|
|
97
|
+
|
|
98
|
+
Error tone is reassuring, not blaming. Treat the situation as "earlier in the flow than expected", not "operator did the wrong thing".
|
|
99
|
+
|
|
100
|
+
## Repo structure
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
skills/ <- step source files (edit these)
|
|
104
|
+
README.md <- user-facing install and usage
|
|
105
|
+
CONTRIBUTING.md <- this file
|
|
106
|
+
LICENSE <- MIT
|
|
107
|
+
lane.yaml <- lane metadata (owner, consumers, output)
|
|
108
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Lane conventions
|
|
2
2
|
|
|
3
|
-
Cross-cutting decisions that apply to every lane. Captured here
|
|
3
|
+
Cross-cutting decisions that apply to every lane. Captured here to avoid re-litigating them per lane.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -100,9 +100,9 @@ Most framework files follow "everyone in the org can read everything; gate write
|
|
|
100
100
|
- **Compass** (potentially) — unreleased strategic positioning, M&A considerations, sensitive bets
|
|
101
101
|
- **Layers+** (potentially) — unreleased product specifications, embargoed launch material
|
|
102
102
|
|
|
103
|
-
For
|
|
103
|
+
For open-source deployments the repo's existing access model governs — keep the alignment repo private, or move sensitive lane files to a separate private repo with cross-references from the main one. A documented pattern should be established before broad rollout.
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
Per-file read access is outside the current scope.
|
|
106
106
|
|
|
107
107
|
Lanes producing sensitive output should call out the relevant files explicitly in their own draft (Guard already does this in its CODEOWNERS section). When in doubt, default to "treat as sensitive" — easier to relax later than to retract.
|
|
108
108
|
|
|
@@ -129,17 +129,17 @@ Intake rows are pre-triage. They move into a zone file when a primitive skill pr
|
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
132
|
-
## Tier vocabulary —
|
|
132
|
+
## Tier vocabulary — lanevs Pilot
|
|
133
133
|
|
|
134
134
|
There are two tier vocabularies in Weeve. They mean the same thing but live at different layers.
|
|
135
135
|
|
|
136
136
|
| Context | Vocabulary | Used by |
|
|
137
137
|
|---|---|---|
|
|
138
|
-
|
|
|
138
|
+
| Lane recommendations files | 🔴 High / 🟡 Medium / 🟢 Low | All lanes except Compass |
|
|
139
139
|
| Compass recommendations file | T1 — Act now / T2 — Plan for / T3 — Watch | Compass only |
|
|
140
140
|
| Pilot merged roadmap | **Now / Next / Watch** | Pilot only — `/pilot-roadmap` output |
|
|
141
141
|
|
|
142
|
-
**Rule:**
|
|
142
|
+
**Rule:** Lane skills write 🔴/🟡/🟢 (or T1/T2/T3 for Compass). Pilot reads them and maps to Now/Next/Watch in the roadmap. Never use Now/Next/Watch in a lane's own recommendations file — that vocabulary belongs to the synthesis layer.
|
|
143
143
|
|
|
144
144
|
Pilot's tier mapping: 🔴 High → Now, 🟡 Medium → Next, 🟢 Low → Watch. Compass T1 → Now, T2 → Next, T3 → Watch.
|
|
145
145
|
|
|
@@ -204,4 +204,34 @@ Example:
|
|
|
204
204
|
|
|
205
205
|
---
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
## Constraints
|
|
208
|
+
|
|
209
|
+
Constraints define what lanes and `/pilot-ship` must not do. They live at two levels:
|
|
210
|
+
|
|
211
|
+
### Project-level — `weeve-constraints.md`
|
|
212
|
+
|
|
213
|
+
The single source of truth for project-wide guardrails. Lives at the project root. Pilot reads this before every ship batch. All lanes read it during orient and recommendations.
|
|
214
|
+
|
|
215
|
+
Sections:
|
|
216
|
+
- **Active constraints** — current hard limits (resources, legal, strategic)
|
|
217
|
+
- **Deferred items** — work explicitly held with a revisit trigger
|
|
218
|
+
- **What autonomous workers must not do** — explicit prohibitions for ship
|
|
219
|
+
|
|
220
|
+
### Lane-level — `docs/<lane>/<lane>-constraints.md` (optional)
|
|
221
|
+
|
|
222
|
+
When a lane has specific constraints beyond the project level — time budgets, resource limits, dependencies on other lanes, or temporarily blocked zones — it adds its own constraints file. Lane-level constraints extend the project-level file; they don't replace it.
|
|
223
|
+
|
|
224
|
+
### Resolution order
|
|
225
|
+
|
|
226
|
+
1. Ship reads `weeve-constraints.md` first (project-level)
|
|
227
|
+
2. Ship reads `docs/<lane>/<lane>-constraints.md` if it exists (lane-level)
|
|
228
|
+
3. Lane-level constraints can tighten but never loosen project-level constraints
|
|
229
|
+
|
|
230
|
+
### Who writes them
|
|
231
|
+
|
|
232
|
+
- **Project-level:** Pilot operator (extracted from roadmap Constrained section, strategic decisions, or operator input)
|
|
233
|
+
- **Lane-level:** Lane owner or ship (when a lane-specific blocker is identified during a run)
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
*reference/conventions.md · 2026-05-25*
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Engineering
|
|
1
|
+
# Engineering lane — contract shape
|
|
2
2
|
|
|
3
3
|
_Pilot reference document · Draft 2026-05-23_
|
|
4
4
|
|
|
5
|
-
This document defines the contract shape for a future engineering
|
|
5
|
+
This document defines the contract shape for a future engineering lane — what `engineering-recommendations.md` would contain, how findings are tiered, and how Pilot synthesizes it alongside strategy, product, accessibility, design system, and marketing outputs.
|
|
6
6
|
|
|
7
|
-
**Purpose:**
|
|
7
|
+
**Purpose:** Define the schema before filling it. Anyone building an engineering lane has a conformant target to hit. External tools become plug-in candidates rather than competitors.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -21,7 +21,7 @@ The engineering domain audits the operator's technical foundation — not whethe
|
|
|
21
21
|
| Observability | Can the team detect, diagnose, and recover from failures without tribal knowledge? |
|
|
22
22
|
| Technical debt | Is debt tracked, prioritised, and scheduled — or just accumulated? |
|
|
23
23
|
|
|
24
|
-
The engineering
|
|
24
|
+
The engineering lane audits the *shipping system*, not the product's feature set. It stays in its lane.
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
@@ -60,35 +60,35 @@ ENG-T3-1 · 🟢 Low · Technical debt · No debt register · Debt is invisible
|
|
|
60
60
|
|
|
61
61
|
## Pilot synthesis — how it integrates
|
|
62
62
|
|
|
63
|
-
Pilot reads `engineering-recommendations.md` the same way it reads any
|
|
63
|
+
Pilot reads `engineering-recommendations.md` the same way it reads any lane output: looks for the `## Tier 1`, `## Tier 2`, `## Tier 3` sections, extracts items, merges with other lane findings, and surfaces cross-lane conflicts.
|
|
64
64
|
|
|
65
|
-
**Expected cross-
|
|
65
|
+
**Expected cross-lane citations:**
|
|
66
66
|
|
|
67
|
-
| Engineering finding | Cross-
|
|
67
|
+
| Engineering finding | Cross-lane implication |
|
|
68
68
|
|---|---|
|
|
69
69
|
| No CI pipeline | Ally finding fixes may not ship (no automated gate) — cite in ally-recommendations |
|
|
70
70
|
| No rollback path | Rubric token changes are risky without rollback — cite in rubric-recommendations |
|
|
71
71
|
| Secrets in source control | Compass strategic moves gated on security posture — cite in compass-recommendations |
|
|
72
72
|
| No observability | Layers+ interaction flow findings can't be validated in prod — cite in layers-plus-recommendations |
|
|
73
73
|
|
|
74
|
-
Pilot surfaces these cross-
|
|
74
|
+
Pilot surfaces these cross-lane conflicts explicitly in `pilot-roadmap.md` rather than silently picking a side.
|
|
75
75
|
|
|
76
76
|
---
|
|
77
77
|
|
|
78
78
|
## ID prefix
|
|
79
79
|
|
|
80
|
-
Engineering
|
|
80
|
+
Engineering lane uses `ENG-` prefix for all finding IDs. Tier label included: `ENG-T1-`, `ENG-T2-`, `ENG-T3-`.
|
|
81
81
|
|
|
82
|
-
Qualified cross-
|
|
82
|
+
Qualified cross-lane reference format (per `docs/shared/id-prefix-reference.md`): `ENG::ENG-T1-1`.
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
86
|
-
## Why
|
|
86
|
+
## Why define the contract early
|
|
87
87
|
|
|
88
|
-
The
|
|
88
|
+
The contract shape — what `engineering-recommendations.md` *is* — is at Genesis stage. Defining it now means future tools that integrate with the framework have a target to conform to, rather than a format to compete with.
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
The engineering lane itself can be built by any contributor once the recommendations file shape is clear.
|
|
91
91
|
|
|
92
92
|
---
|
|
93
93
|
|
|
94
|
-
_Maintained in
|
|
94
|
+
_Maintained in docs/shared/ · Referenced by: pilot-roadmap skill, compass-recommendations SR4_
|
|
@@ -4,18 +4,18 @@ _Version: 0.2_
|
|
|
4
4
|
_Published: 2026-05-24_
|
|
5
5
|
_Scope: All lanes — Compass, Layers+, Ally, Rubric, Maven, Forge, Helm, Verify, Guard, Charter, Anchor, Ledger, Roster, Pitch, Pilot_
|
|
6
6
|
|
|
7
|
-
Finding IDs are
|
|
7
|
+
Finding IDs are lane-local. Each lane uses its own prefix system. This document is the single cross-lane reference so Pilot can synthesise across lanes without ID collisions.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Pilot
|
|
12
12
|
|
|
13
|
-
Pilot generates its own IDs when synthesising across
|
|
13
|
+
Pilot generates its own IDs when synthesising across lanes.
|
|
14
14
|
|
|
15
15
|
| Prefix | Meaning | Example |
|
|
16
16
|
|---|---|---|
|
|
17
17
|
| `P-N` | Now batch (current sprint) | `P-N1`, `P-N7` |
|
|
18
|
-
| `P-X` | Next / cross-
|
|
18
|
+
| `P-X` | Next / cross-lane backlog item | `P-X5`, `P-X18` |
|
|
19
19
|
| `P-B` | Backlog (pre-prioritised) | `P-B1` |
|
|
20
20
|
| `P-W` | Watch signal | `P-W1`, `P-W14` |
|
|
21
21
|
|
|
@@ -25,7 +25,7 @@ Pilot generates its own IDs when synthesising across packs.
|
|
|
25
25
|
|
|
26
26
|
Compass uses a two-part ID system: primitive-layer prefixes for raw findings, and `SR` prefixes for synthesised strategic recommendations.
|
|
27
27
|
|
|
28
|
-
**Primitive findings (within
|
|
28
|
+
**Primitive findings (within lane):**
|
|
29
29
|
|
|
30
30
|
| Prefix | Layer | Example |
|
|
31
31
|
|---|---|---|
|
|
@@ -205,7 +205,7 @@ Intake IDs are lane-internal (`I<n>`) and not propagated to Pilot.
|
|
|
205
205
|
|
|
206
206
|
## Raw capture (pre-intake)
|
|
207
207
|
|
|
208
|
-
The raw capture step (
|
|
208
|
+
The raw capture step (notes, daily log, or CLI tool) does not generate finding IDs — captured items are routed to the appropriate lane's intake skill, which assigns lane-local IDs.
|
|
209
209
|
|
|
210
210
|
---
|
|
211
211
|
|
|
@@ -213,13 +213,13 @@ The raw capture step (your notes, daily log, or personal CLI tool) does not gene
|
|
|
213
213
|
|
|
214
214
|
**Known collision risks:**
|
|
215
215
|
|
|
216
|
-
|
|
|
216
|
+
| Lane A | Lane B | Colliding prefix | Notes |
|
|
217
217
|
|---|---|---|---|
|
|
218
218
|
| Compass `D` | Layers+ `D` | `D` | Both use `D` for doctrine/domain findings |
|
|
219
219
|
| Compass `M` | Pilot `P-N` | Low risk | Different contexts |
|
|
220
|
-
| Ally T1/T2/T3 | Layers+ T1/T2/T3 | `T1-`, `T2-`, `T3-` | Same tier numbering, different
|
|
220
|
+
| Ally T1/T2/T3 | Layers+ T1/T2/T3 | `T1-`, `T2-`, `T3-` | Same tier numbering, different lanes — always qualify with lane name when cross-referencing |
|
|
221
221
|
|
|
222
|
-
**Convention:** When Pilot synthesises across
|
|
222
|
+
**Convention:** When Pilot synthesises across lanes, prefix all cited finding IDs with the lane abbreviation:
|
|
223
223
|
|
|
224
224
|
```
|
|
225
225
|
compass:SR3 → Compass strategic recommendation 3
|
|
@@ -231,5 +231,5 @@ maven:MR3 → Maven recommendation 3
|
|
|
231
231
|
|
|
232
232
|
---
|
|
233
233
|
|
|
234
|
-
_Closes: Layers+ CM-DS2 🟡 (no cross-
|
|
234
|
+
_Closes: Layers+ CM-DS2 🟡 (no cross-lane ID reference)_
|
|
235
235
|
_Generated: 2026-05-23 · pilot-ship batch_
|
|
@@ -4,7 +4,7 @@ _Pilot reference document · 2026-05-23_
|
|
|
4
4
|
|
|
5
5
|
A lightweight holding area for working concepts — brand theses, competitive framing extensions, half-formed architectural bets — that aren't ready to be roadmap items but are too important to lose in a daily note.
|
|
6
6
|
|
|
7
|
-
**Problem:** Raw ideas currently land in ad-hoc notes or catch-all files where they get lost or forgotten before they're ready to route anywhere. The
|
|
7
|
+
**Problem:** Raw ideas currently land in ad-hoc notes or catch-all files where they get lost or forgotten before they're ready to route anywhere. The lane intake skills (e.g. `/compass-intake`) are too heavy for a working concept — they require enough shape to produce a scoped row with a stable ID.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -29,14 +29,14 @@ Minimal frontmatter, freeform body. No required fields beyond `date` and `title`
|
|
|
29
29
|
---
|
|
30
30
|
date: YYYY-MM-DD
|
|
31
31
|
title: Short idea name
|
|
32
|
-
tags: [compass, maven, layers-plus] # optional — which
|
|
32
|
+
tags: [compass, maven, layers-plus] # optional — which lanes this might route to
|
|
33
33
|
status: raw | maturing | ready # default: raw
|
|
34
34
|
---
|
|
35
35
|
|
|
36
36
|
[Freeform text. No structure required. Write what you'd tell someone in a hallway.]
|
|
37
37
|
|
|
38
38
|
## Possible next step
|
|
39
|
-
[Optional. One line on what would make this ready to route to a
|
|
39
|
+
[Optional. One line on what would make this ready to route to a lane intake skill.]
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
**Status values:**
|
|
@@ -45,7 +45,7 @@ status: raw | maturing | ready # default: raw
|
|
|
45
45
|
|---|---|
|
|
46
46
|
| `raw` | Just captured. May be wrong or incomplete. Don't act on it yet. |
|
|
47
47
|
| `maturing` | Being developed. Some validation in progress. |
|
|
48
|
-
| `ready` | Has enough shape to route to a
|
|
48
|
+
| `ready` | Has enough shape to route to a lane intake skill. |
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
@@ -53,10 +53,10 @@ status: raw | maturing | ready # default: raw
|
|
|
53
53
|
|
|
54
54
|
An idea is ready to route when it can answer two questions:
|
|
55
55
|
|
|
56
|
-
1. **Which
|
|
56
|
+
1. **Which lane owns the primary slice?** (Compass = strategic bet, Layers+ = product surface, Ally = accessibility concern, Rubric = design system gap, Maven = marketing angle)
|
|
57
57
|
2. **What's the one-sentence version?** (Enough to write an intake row)
|
|
58
58
|
|
|
59
|
-
When ready, run the relevant
|
|
59
|
+
When ready, run the relevant lane intake skill:
|
|
60
60
|
|
|
61
61
|
```
|
|
62
62
|
/compass-intake → strategic ideas, market bets, positioning moves
|
|
@@ -66,7 +66,7 @@ When ready, run the relevant pack intake skill:
|
|
|
66
66
|
/maven-intake → marketing ideas, campaign angles
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
After routing, update the idea file's status to `ready` and note which
|
|
69
|
+
After routing, update the idea file's status to `ready` and note which lane received it. The idea file becomes the origin story for the eventual roadmap item.
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
@@ -77,8 +77,8 @@ After routing, update the idea file's status to `ready` and note which pack rece
|
|
|
77
77
|
| Fully-formed strategic intent | `/compass-intake` directly |
|
|
78
78
|
| Half-formed working concept | `context/ideas/` |
|
|
79
79
|
| Daily capture (tasks, decisions) | Your daily note or capture tool |
|
|
80
|
-
| Research findings with a clear home | `/research` in the relevant
|
|
81
|
-
| Confirmed roadmap item |
|
|
80
|
+
| Research findings with a clear home | `/research` in the relevant lane |
|
|
81
|
+
| Confirmed roadmap item | Lane intake → lane recommendations → pilot roadmap |
|
|
82
82
|
|
|
83
83
|
---
|
|
84
84
|
|
|
@@ -96,4 +96,4 @@ This creates a traceable origin trail: idea → intake row → roadmap item →
|
|
|
96
96
|
|
|
97
97
|
---
|
|
98
98
|
|
|
99
|
-
_Maintained in
|
|
99
|
+
_Maintained in docs/shared/ · Pattern for: all Weeve-framework projects_
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# README template for Weeve lanes
|
|
2
|
+
|
|
3
|
+
_Use this template when creating or standardizing a lane README. Replace all `<placeholders>` with lane-specific content. Remove this preamble before publishing._
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# <Lane Name>
|
|
8
|
+
|
|
9
|
+
<One sentence: what this lane does and why it exists.>
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
npx skills add keighleykodric/weeve-<lane>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## What it does
|
|
18
|
+
|
|
19
|
+
<2-3 sentences expanding on the one-liner. What does the lane audit/produce? What's the outcome for the operator?>
|
|
20
|
+
|
|
21
|
+
## Skills
|
|
22
|
+
|
|
23
|
+
| Skill | What it does |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `/<lane>-intro` | First-run onboarding — scope, context, routes to intake |
|
|
26
|
+
| `/<lane>-intake` | Capture raw requests and route to the right zone |
|
|
27
|
+
| `/<lane>-orient` | Diagnostic sweep — identifies the bottleneck zone |
|
|
28
|
+
| ... | ... |
|
|
29
|
+
| `/<lane>-recommendations` | Prioritized findings — the file Pilot reads |
|
|
30
|
+
| `/<lane>-dashboard` | Visual HTML summary of findings |
|
|
31
|
+
| `/<lane>-tickets` | Generate tickets from findings |
|
|
32
|
+
| `/<lane>-triage` | Walk findings — mark closed, deferred, dismissed |
|
|
33
|
+
| `/<lane>-check` | Verify closed findings are actually fixed |
|
|
34
|
+
|
|
35
|
+
## Where to start
|
|
36
|
+
|
|
37
|
+
1. Run `/<lane>-intro` — captures scope and context
|
|
38
|
+
2. Run `/<lane>-orient` — identifies where to focus
|
|
39
|
+
3. Run zone skills as directed
|
|
40
|
+
4. Run `/<lane>-recommendations` — produces the prioritized output
|
|
41
|
+
|
|
42
|
+
## How it fits
|
|
43
|
+
|
|
44
|
+
<Lane Name> writes `<lane>-recommendations.md`. Pilot reads it alongside all other lane outputs and synthesizes a single roadmap. See [WORKFLOW.md](https://github.com/keighleykodric/weeve/blob/main/WORKFLOW.md) for the full cross-lane rhythm.
|
|
45
|
+
|
|
46
|
+
### Sibling lanes
|
|
47
|
+
|
|
48
|
+
<List lanes this one cites or is cited by — not dependencies, just cross-references.>
|
|
49
|
+
|
|
50
|
+
- **[Compass](https://github.com/keighleykodric/weeve-compass)** — <one line on the relationship>
|
|
51
|
+
- **[Pilot](https://github.com/keighleykodric/weeve-pilot)** — reads `<lane>-recommendations.md` for roadmap synthesis
|
|
52
|
+
|
|
53
|
+
## License
|
|
54
|
+
|
|
55
|
+
MIT
|
|
@@ -7,19 +7,19 @@ status: active
|
|
|
7
7
|
|
|
8
8
|
# Recommendations schema — v0.3
|
|
9
9
|
|
|
10
|
-
*Authoritative versioned spec for the recommendations file format that all
|
|
10
|
+
*Authoritative versioned spec for the recommendations file format that all lanes produce and Pilot reads.*
|
|
11
11
|
|
|
12
|
-
This document is the authoritative spec. Every
|
|
12
|
+
This document is the authoritative spec. Every lane's recommendations skill writes a file that conforms to this shape. `/pilot-roadmap` reads those files and trusts them — it does not re-evaluate upstream sources. If a lane's output diverges from this spec, Pilot's merge step degrades silently.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
## 1. File naming convention
|
|
17
17
|
|
|
18
18
|
```
|
|
19
|
-
docs/<
|
|
19
|
+
docs/<lane>/<lane>-recommendations.md
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
|
22
|
+
| Lane | File path |
|
|
23
23
|
|---|---|
|
|
24
24
|
| Compass | `docs/compass/compass-recommendations.md` |
|
|
25
25
|
| Layers+ | `docs/layers-plus/layers-plus-recommendations.md` |
|
|
@@ -52,9 +52,9 @@ Every recommendations file must contain these sections, in this order:
|
|
|
52
52
|
6. **Manual checks required** — findings that need live testing or operator judgement
|
|
53
53
|
7. **Out of scope / accepted exceptions** — deferred items with rationale and revisit trigger
|
|
54
54
|
|
|
55
|
-
Optional sections (present in some
|
|
55
|
+
Optional sections (present in some lanes, allowed in all):
|
|
56
56
|
|
|
57
|
-
- **Cross-pillar citations** — where this
|
|
57
|
+
- **Cross-pillar citations** — where this lane's findings link to other lanes
|
|
58
58
|
- **Validation gaps** (Maven) — assumptions under 🔴 / 🟡 items not yet tested
|
|
59
59
|
- **Evidence trace** (Compass) — source row IDs, confidence ratings, external signal count
|
|
60
60
|
|
|
@@ -67,14 +67,14 @@ Finding IDs must be stable across re-runs. If a finding is re-run and the underl
|
|
|
67
67
|
### Format
|
|
68
68
|
|
|
69
69
|
```
|
|
70
|
-
<
|
|
70
|
+
<LANE-PREFIX><N>
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
Where `N` is a monotonically increasing integer within the
|
|
73
|
+
Where `N` is a monotonically increasing integer within the lane's namespace. IDs are never reused for a different finding.
|
|
74
74
|
|
|
75
|
-
### Registered
|
|
75
|
+
### Registered lane prefixes
|
|
76
76
|
|
|
77
|
-
|
|
|
77
|
+
| Lane | Prefix | Example |
|
|
78
78
|
|---|---|---|
|
|
79
79
|
| Compass / Strategy | `SR` | SR1, SR2 |
|
|
80
80
|
| Layers+ / Tiers | `T1-`, `T2-`, `T3-` | T1-1, T2-3 |
|
|
@@ -92,9 +92,9 @@ Where `N` is a monotonically increasing integer within the pack's namespace. IDs
|
|
|
92
92
|
| Pitch | `PR` | PR1, PR2 |
|
|
93
93
|
| Felt | `FL` | FL1, FL2 |
|
|
94
94
|
|
|
95
|
-
**Note on Layers+ and Ally sharing the `T1-`/`T2-`/`T3-` prefix:** both
|
|
95
|
+
**Note on Layers+ and Ally sharing the `T1-`/`T2-`/`T3-` prefix:** both lanes use tier-relative IDs rather than a lane-scoped prefix. When Pilot reads both files, it disambiguates by source file. Verbose mode tags items with their pillar: `[layers-plus:T1-1]` vs `[ally:T1-1]`. This is a known namespace collision — a future schema version may assign distinct prefixes to one or both lanes.
|
|
96
96
|
|
|
97
|
-
**Registering a new
|
|
97
|
+
**Registering a new laneprefix:** add a row to the table above and increment the schema version.
|
|
98
98
|
|
|
99
99
|
---
|
|
100
100
|
|
|
@@ -110,13 +110,13 @@ id · severity · location · what's wrong · what to do
|
|
|
110
110
|
|
|
111
111
|
| Field | Required | Description |
|
|
112
112
|
|---|---|---|
|
|
113
|
-
| **id** | Yes | Stable
|
|
114
|
-
| **severity** | Yes | 🔴 High / 🟡 Medium / 🟢 Low — consistent scale across all
|
|
113
|
+
| **id** | Yes | Stable lane-prefixed ID (see §3). Never changes between re-runs for the same finding. |
|
|
114
|
+
| **severity** | Yes | 🔴 High / 🟡 Medium / 🟢 Low — consistent scale across all lanes (see §5). |
|
|
115
115
|
| **location** | Yes | File path, skill name, zone, route, or surface. Must be specific — not "everywhere" or "the codebase". |
|
|
116
116
|
| **what's wrong** | Yes | One sentence describing the gap, drift, or risk. Describes the current state, not the desired state. |
|
|
117
117
|
| **what to do** | Yes | One concrete action sentence. Describes the fix or move, not the problem. |
|
|
118
118
|
| **evidence trace** | Optional | Source row IDs, confidence ratings, external signal count. Required for Compass lens skills. Recommended for any finding claiming Validated confidence. |
|
|
119
|
-
| **gate-ship** | Optional | `true` / `false` (default: `false`). Set to `true` on findings that must be resolved before `/pilot-ship` proceeds. Only Guard and Verify set this by default; any lane may set it. `/pilot-ship` parses this field across all
|
|
119
|
+
| **gate-ship** | Optional | `true` / `false` (default: `false`). Set to `true` on findings that must be resolved before `/pilot-ship` proceeds. Only Guard and Verify set this by default; any lane may set it. `/pilot-ship` parses this field across all lanes — do not use alternative names (`block`, `block-ship`, etc.). |
|
|
120
120
|
|
|
121
121
|
### Heading-block format (Compass / Maven)
|
|
122
122
|
|
|
@@ -140,7 +140,7 @@ The `**Move:**` field satisfies **what to do**. The heading title + `**Move:**`
|
|
|
140
140
|
| T1-1 | 🔴 High | [zone / file / path] | [one sentence — what's wrong] | [one sentence — what to fix] | M |
|
|
141
141
|
```
|
|
142
142
|
|
|
143
|
-
The columns map directly to the canonical shape. "Effort" is an extension field — allowed in all
|
|
143
|
+
The columns map directly to the canonical shape. "Effort" is an extension field — allowed in all lanes, not required by the schema.
|
|
144
144
|
|
|
145
145
|
---
|
|
146
146
|
|
|
@@ -166,7 +166,7 @@ Use these terms consistently in evidence traces and frontmatter:
|
|
|
166
166
|
| **Working** | Hypothesis that has been partially tested or is grounded in consistent observed behaviour. T2 default. |
|
|
167
167
|
| **Hypothesis** | Assumed but not yet tested. Cannot anchor a T1 finding without at least one Validated or Working co-source. |
|
|
168
168
|
|
|
169
|
-
**Frontmatter usage (Maven pattern, optional for other
|
|
169
|
+
**Frontmatter usage (Maven pattern, optional for other lanes):**
|
|
170
170
|
|
|
171
171
|
```yaml
|
|
172
172
|
foundation: validated | hypothesis | missing
|
|
@@ -181,27 +181,27 @@ Confidence is expressed in the evidence trace field: `"P2 (Hypothesis, Central)
|
|
|
181
181
|
|
|
182
182
|
## 7. What Pilot reads — how `/pilot-roadmap` consumes this file
|
|
183
183
|
|
|
184
|
-
`/pilot-roadmap` reads each
|
|
184
|
+
`/pilot-roadmap` reads each lane's recommendations file as the authoritative source. It does not re-evaluate the upstream sources. The recommendations file is the unit of trust.
|
|
185
185
|
|
|
186
186
|
**Extraction:** Pilot extracts per finding: ID, severity/tier, title, brief description, evidence trace, status (open / in-flight / closed / blocked). The canonical finding shape (§4) makes this extraction deterministic.
|
|
187
187
|
|
|
188
188
|
**Tier mapping:**
|
|
189
189
|
|
|
190
|
-
|
|
|
190
|
+
| Lane output | Roadmap tier |
|
|
191
191
|
|---|---|
|
|
192
192
|
| Compass T1 (Act now) | **Now** |
|
|
193
|
-
| 🔴 High from any other
|
|
193
|
+
| 🔴 High from any other lane| **Now** |
|
|
194
194
|
| Compass T2 (Plan for) | **Next** |
|
|
195
|
-
| 🟡 Medium from any other
|
|
195
|
+
| 🟡 Medium from any other lane| **Next** |
|
|
196
196
|
| Compass T3 (Watch) | **Watch** |
|
|
197
|
-
| 🟢 Low from any other
|
|
197
|
+
| 🟢 Low from any other lane| **Watch** |
|
|
198
198
|
| Closed or Retired | Dropped |
|
|
199
199
|
|
|
200
200
|
**Validated-input gate:** if an item would land in **Now** but its evidence trace is Hypothesis-only or Assumed-only, Pilot demotes it to **Next** and adds a note. This gate is inherited from `/compass-recommendations` and applies across all pillars.
|
|
201
201
|
|
|
202
|
-
**De-duplication:** if two
|
|
202
|
+
**De-duplication:** if two lanes surface findings that trace to the same source row or gap, Pilot collapses them into one roadmap item and notes that multiple pillars surfaced it. It does not write two items that rest on the same signal.
|
|
203
203
|
|
|
204
|
-
**Conflict detection:** if two
|
|
204
|
+
**Conflict detection:** if two lanes recommend opposing actions on the same surface, Pilot surfaces the conflict in the **Conflicts surfaced** section and does not silently pick a side.
|
|
205
205
|
|
|
206
206
|
**Malformed file:** if a recommendations file is structurally unreadable (Pilot cannot extract IDs, tiers, or evidence), Pilot stops and surfaces the parse error. It does not write a degraded roadmap.
|
|
207
207
|
|
|
@@ -334,7 +334,7 @@ Registered prefixes: `CR` (Charter), `AR` (Anchor), `LR` (Ledger), `RO` (Roster)
|
|
|
334
334
|
|
|
335
335
|
### Summary table
|
|
336
336
|
|
|
337
|
-
|
|
|
337
|
+
| Lane | ID | Severity | Location | What's wrong | What to do | Evidence trace | Status |
|
|
338
338
|
|---|---|---|---|---|---|---|---|
|
|
339
339
|
| Compass | Conformant | Conformant | Conformant (lens-level) | Conformant | Conformant | Required | **Conformant** |
|
|
340
340
|
| Layers+ | Conformant | Conformant | Partial (layer name only) | **Absent** | Conformant | Not present | **Diverges — missing Finding column** |
|
|
@@ -353,11 +353,11 @@ Registered prefixes: `CR` (Charter), `AR` (Anchor), `LR` (Ledger), `RO` (Roster)
|
|
|
353
353
|
|
|
354
354
|
| Version | Date | Change |
|
|
355
355
|
|---|---|---|
|
|
356
|
-
| v0.1 | 2026-05-22 | Initial publication — making the implicit schema explicit. No changes to
|
|
356
|
+
| v0.1 | 2026-05-22 | Initial publication — making the implicit schema explicit. No changes to laneskill specs in this version; conformance gaps noted above are addressed as follow-on work. |
|
|
357
357
|
| v0.2 | 2026-05-24 | Register prefixes for 9 new lanes (FR/HR/VR/GR/CR/AR/LR/RO/PR). Add `gate-ship` field to canonical finding shape §4. Add §1 file paths and §8 conformance entries for all new lanes. Reconciliation divergences (D1–D7) documented in four-lane-reconciliation.md; skill-level fixes tracked separately. |
|
|
358
358
|
| v0.3 | 2026-05-24 | Register `FL` prefix for Felt (UX research lane). |
|
|
359
359
|
|
|
360
360
|
---
|
|
361
361
|
|
|
362
362
|
_Maintained in `pilot` repo · `docs/shared/recommendations-schema.md`_
|
|
363
|
-
_Next review: when any
|
|
363
|
+
_Next review: when any laneskill spec is updated to change its finding table shape, or when a new laneis added._
|
|
File without changes
|