@thebassclef/lite 0.1.3 → 1.0.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/dist/cli.cjs +216 -137
- package/dist/cli.js +218 -139
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.bassclef-source.json +10 -0
- package/dist/lite/.claude/settings.json +212 -0
- package/dist/lite/CLAUDE.md +41 -0
- package/dist/lite/gitignore +58 -0
- package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
- package/dist/lite/whereami.md +24 -0
- package/package.json +8 -2
- package/substrate/.bassclef/lite-manifest.json +0 -2701
- package/substrate/.claude/agents/architect.md +0 -70
- package/substrate/.claude/agents/builder.md +0 -114
- package/substrate/.claude/agents/designer.md +0 -156
- package/substrate/.claude/agents/reviewer.md +0 -88
- package/substrate/.claude/hooks/artifact-ingestion-gate.sh +0 -357
- package/substrate/.claude/hooks/assert-verify-steering.sh +0 -77
- package/substrate/.claude/hooks/bassclef-source-config-validate.sh +0 -215
- package/substrate/.claude/hooks/bassclef-sync.sh +0 -634
- package/substrate/.claude/hooks/compound-noun-scrub.sh +0 -292
- package/substrate/.claude/hooks/kiss-expansion-inject.sh +0 -69
- package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
- package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -492
- package/substrate/.claude/hooks/plain-english-steering.sh +0 -156
- package/substrate/.claude/hooks/post-skill-friction-check.sh +0 -177
- package/substrate/.claude/hooks/post-skill-telemetry.sh +0 -62
- package/substrate/.claude/hooks/pre-build-gate.sh +0 -511
- package/substrate/.claude/hooks/pre-commit-gate.sh +0 -451
- package/substrate/.claude/hooks/session-end.sh +0 -433
- package/substrate/.claude/hooks/session-reflection.sh +0 -303
- package/substrate/.claude/hooks/skill-body-grade-gate.sh +0 -219
- package/substrate/.claude/hooks/skill-body-intent-drift.sh +0 -107
- package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
- package/substrate/.claude/hooks/state-validate.sh +0 -271
- package/substrate/.claude/hooks/substrate-clarity-gate.sh +0 -1110
- package/substrate/.claude/hooks/temperance-gate.sh +0 -147
- package/substrate/.claude/hooks/testing-tier-enforce.sh +0 -233
- package/substrate/.claude/hooks/turn-prose-grade-measure.sh +0 -219
- package/substrate/.claude/hooks/turn-prose-kiss-check.sh +0 -463
- package/substrate/.claude/hooks/vocabulary-migration-check.sh +0 -171
- package/substrate/.claude/hooks/whereami-utc-gate.sh +0 -142
- package/substrate/.claude/luminaries/alan-cooper.md +0 -170
- package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
- package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
- package/substrate/.claude/luminaries/ash-maurya.md +0 -121
- package/substrate/.claude/luminaries/bill-buxton.md +0 -210
- package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
- package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
- package/substrate/.claude/luminaries/don-norman.md +0 -173
- package/substrate/.claude/luminaries/edward-tufte.md +0 -179
- package/substrate/.claude/luminaries/eric-evans.md +0 -160
- package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
- package/substrate/.claude/luminaries/gang-of-four.md +0 -157
- package/substrate/.claude/luminaries/glenford-myers.md +0 -230
- package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
- package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
- package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
- package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
- package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
- package/substrate/.claude/luminaries/karl-popper.md +0 -132
- package/substrate/.claude/luminaries/kent-beck.md +0 -168
- package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
- package/substrate/.claude/luminaries/martin-fowler.md +0 -164
- package/substrate/.claude/luminaries/michael-feathers.md +0 -125
- package/substrate/.claude/luminaries/michael-nygard.md +0 -118
- package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
- package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
- package/substrate/.claude/luminaries/sophia-prater.md +0 -193
- package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
- package/substrate/.claude/luminaries/tony-hoare.md +0 -170
- package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
- package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
- package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
- package/substrate/.claude/rules/adr-discipline.md +0 -120
- package/substrate/.claude/rules/api-conventions.md +0 -125
- package/substrate/.claude/rules/artifact-ingestion.md +0 -179
- package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
- package/substrate/.claude/rules/blocked-items.md +0 -146
- package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
- package/substrate/.claude/rules/branching.md +0 -28
- package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
- package/substrate/.claude/rules/commit-conventions.md +0 -22
- package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
- package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
- package/substrate/.claude/rules/context-engineering.md +0 -202
- package/substrate/.claude/rules/context-management.md +0 -85
- package/substrate/.claude/rules/defensive-bash.md +0 -68
- package/substrate/.claude/rules/deferred-actions.md +0 -233
- package/substrate/.claude/rules/destructive-operations.md +0 -69
- package/substrate/.claude/rules/diagnosis.md +0 -38
- package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
- package/substrate/.claude/rules/guardrails.md +0 -73
- package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
- package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
- package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
- package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
- package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
- package/substrate/.claude/rules/loop-discipline.md +0 -81
- package/substrate/.claude/rules/manual-prod-approval.md +0 -100
- package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
- package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
- package/substrate/.claude/rules/new-dependency-check.md +0 -51
- package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
- package/substrate/.claude/rules/operator-facing-prose.md +0 -196
- package/substrate/.claude/rules/option-label-discipline.md +0 -108
- package/substrate/.claude/rules/pattern-annotation.md +0 -100
- package/substrate/.claude/rules/plain-english-discipline.md +0 -156
- package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
- package/substrate/.claude/rules/pr-body-shape.md +0 -317
- package/substrate/.claude/rules/pr-strategy.md +0 -167
- package/substrate/.claude/rules/pr-title-shape.md +0 -161
- package/substrate/.claude/rules/prototype-workflow.md +0 -65
- package/substrate/.claude/rules/reserved-skill-names.md +0 -123
- package/substrate/.claude/rules/schema-management.md +0 -49
- package/substrate/.claude/rules/sdlc-gates.md +0 -149
- package/substrate/.claude/rules/security.md +0 -37
- package/substrate/.claude/rules/session-artifacts.md +0 -236
- package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
- package/substrate/.claude/rules/skill-description-clarity.md +0 -247
- package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
- package/substrate/.claude/rules/state-schema-validation.md +0 -162
- package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
- package/substrate/.claude/rules/substrate-config-schema.md +0 -98
- package/substrate/.claude/rules/test-list-discipline.md +0 -175
- package/substrate/.claude/rules/test-sufficiency.md +0 -210
- package/substrate/.claude/rules/testing-tier-config.md +0 -145
- package/substrate/.claude/rules/testing.md +0 -38
- package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
- package/substrate/.claude/rules/visual-hierarchy.md +0 -437
- package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
- package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
- package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
- package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
- package/substrate/.claude/skills/build/SKILL.md +0 -640
- package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
- package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
- package/substrate/.claude/skills/decompose/SKILL.md +0 -280
- package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
- package/substrate/.claude/skills/feynman/SKILL.md +0 -90
- package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
- package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
- package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
- package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
- package/substrate/.claude/skills/journal/SKILL.md +0 -209
- package/substrate/.claude/skills/kiss/SKILL.md +0 -449
- package/substrate/.claude/skills/launch/SKILL.md +0 -915
- package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
- package/substrate/.claude/skills/longrun/SKILL.md +0 -463
- package/substrate/.claude/skills/luminary/SKILL.md +0 -481
- package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
- package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
- package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
- package/substrate/.claude/skills/personas/SKILL.md +0 -207
- package/substrate/.claude/skills/promote/SKILL.md +0 -283
- package/substrate/.claude/skills/requirement/SKILL.md +0 -98
- package/substrate/.claude/skills/retro/SKILL.md +0 -117
- package/substrate/.claude/skills/riff/SKILL.md +0 -114
- package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
- package/substrate/.claude/skills/session-end/SKILL.md +0 -309
- package/substrate/.claude/skills/session-log/SKILL.md +0 -299
- package/substrate/.claude/skills/skills/SKILL.md +0 -228
- package/substrate/.claude/skills/spec/SKILL.md +0 -105
- package/substrate/.claude/skills/sprint/SKILL.md +0 -392
- package/substrate/.claude/skills/stage/SKILL.md +0 -384
- package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
- package/substrate/.claude/skills/temperance/SKILL.md +0 -108
- package/substrate/.claude/skills/use-case/SKILL.md +0 -417
- package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
- package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
- package/substrate/.claude/skills/verify/SKILL.md +0 -160
- package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
- package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
- package/substrate/.claude/skills/whereami/SKILL.md +0 -307
- package/substrate/AGENTS.md +0 -79
- package/substrate/CLAUDE-lite.md +0 -85
- package/substrate/CODE_OF_CONDUCT.md +0 -28
- package/substrate/CONTRIBUTING.md +0 -177
- package/substrate/README.md +0 -173
- package/substrate/SECURITY.md +0 -19
- package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
- package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
- package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
- package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
- package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
- package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
- package/substrate/lib/clean-artifacts-sweep.sh +0 -112
- package/substrate/lib/code-comment-discipline.sh +0 -144
- package/substrate/lib/composer-preflight.sh +0 -459
- package/substrate/lib/hook-inject.sh +0 -255
- package/substrate/lib/luminary-pick.sh +0 -96
- package/substrate/lib/output-discipline.sh +0 -143
- package/substrate/lib/prose-scan-boundary.sh +0 -171
- package/substrate/lib/rewrite-check.sh +0 -214
- package/substrate/lib/state.sh +0 -1372
- package/substrate/lib/telemetry.sh +0 -205
- package/substrate/lib/tier-check.sh +0 -187
- package/substrate/lib/tier-dependency-audit.sh +0 -1088
- package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
- package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
- package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
- package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
- package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
- package/substrate/scripts/aggregate-telemetry.sh +0 -217
- package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
- package/substrate/scripts/generate-lite-manifest.sh +0 -505
- package/substrate/scripts/generate-tier-manifest.sh +0 -28
- package/substrate/scripts/intent-drift-check.sh +0 -456
- package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
- package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
- package/substrate/standards/adr-template.md +0 -86
- package/substrate/standards/api-conventions/nextjs.md +0 -84
- package/substrate/standards/artifact-composition.md +0 -209
- package/substrate/standards/bash-hook-safety.md +0 -246
- package/substrate/standards/bassclef-configs-schema.md +0 -232
- package/substrate/standards/bassclef-evolution.md +0 -143
- package/substrate/standards/bassclef-internal-jargon.md +0 -244
- package/substrate/standards/bassclef-managed-sentinel.md +0 -96
- package/substrate/standards/bassclef-source-config.md +0 -228
- package/substrate/standards/branch-stacking.md +0 -408
- package/substrate/standards/code-safety-principles.md +0 -176
- package/substrate/standards/composer-prerequisites.md +0 -155
- package/substrate/standards/deferred-actions-schema.md +0 -204
- package/substrate/standards/dependency-discipline/cargo.md +0 -39
- package/substrate/standards/dependency-discipline/gem.md +0 -43
- package/substrate/standards/dependency-discipline/go-mod.md +0 -41
- package/substrate/standards/dependency-discipline/npm.md +0 -42
- package/substrate/standards/dependency-discipline/pip.md +0 -42
- package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
- package/substrate/standards/deployment-topology.md +0 -69
- package/substrate/standards/docs-sync-allowlist.md +0 -76
- package/substrate/standards/domain-and-dns.md +0 -145
- package/substrate/standards/frontend-stack.md +0 -67
- package/substrate/standards/frontmatter-schema.md +0 -154
- package/substrate/standards/graceful-exit.md +0 -227
- package/substrate/standards/hook-idempotency.md +0 -102
- package/substrate/standards/hook-injection-discipline.md +0 -202
- package/substrate/standards/hook-install-class.md +0 -215
- package/substrate/standards/input-handler-interface.md +0 -152
- package/substrate/standards/lite-manifest-schema-changes.md +0 -135
- package/substrate/standards/luminary-matching.md +0 -105
- package/substrate/standards/luminary-problem-patterns.md +0 -481
- package/substrate/standards/migration-discipline/active-record.md +0 -50
- package/substrate/standards/migration-discipline/alembic.md +0 -43
- package/substrate/standards/migration-discipline/gorm.md +0 -50
- package/substrate/standards/migration-discipline/prisma.md +0 -53
- package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
- package/substrate/standards/mobile-ephemeral-session.md +0 -167
- package/substrate/standards/model-routing-discipline.md +0 -160
- package/substrate/standards/ogilvy-writing-rules.md +0 -225
- package/substrate/standards/opener-discipline.md +0 -96
- package/substrate/standards/operator-facing-prose-discipline.md +0 -201
- package/substrate/standards/persona-schema.md +0 -229
- package/substrate/standards/pluggable-luminaries.md +0 -323
- package/substrate/standards/pr-body-discipline.md +0 -115
- package/substrate/standards/preview-state-schema.md +0 -189
- package/substrate/standards/project-directory-layout.md +0 -276
- package/substrate/standards/release-tagging.md +0 -137
- package/substrate/standards/reserved-skill-names.md +0 -120
- package/substrate/standards/scannable-multi-option-output.md +0 -261
- package/substrate/standards/sdlc-compliance.md +0 -286
- package/substrate/standards/sdlc-gates/typescript.md +0 -57
- package/substrate/standards/secrets-lifecycle.md +0 -210
- package/substrate/standards/security-scanner-adapter.md +0 -145
- package/substrate/standards/session-board.md +0 -256
- package/substrate/standards/skill-output-discipline.md +0 -90
- package/substrate/standards/state-spine-contract.md +0 -255
- package/substrate/standards/state-spine.md +0 -511
- package/substrate/standards/steering-hints/kiss-words.md +0 -11
- package/substrate/standards/substrate-config-schema.md +0 -267
- package/substrate/standards/tech-stack-config.md +0 -109
- package/substrate/standards/tier-dependency-analysis.md +0 -167
- package/substrate/standards/tier-runtime-deps/lite.md +0 -57
- package/substrate/standards/tier-tag-schema.md +0 -155
- package/substrate/standards/two-layer-config.md +0 -99
- package/substrate/standards/use-case-format.md +0 -292
- package/substrate/standards/user-story-invest.md +0 -268
- package/substrate/standards/velocity-and-appetite.md +0 -229
- package/substrate/standards/voice-input-pattern.md +0 -119
- package/substrate/standards/whereami-schema.md +0 -301
- package/substrate/standards/worktree-management.md +0 -211
- package/substrate/standards/writing-guide.md +0 -213
- package/substrate/templates/chronicle-template.md +0 -75
- package/substrate/templates/deferred-action-template.md +0 -45
- package/substrate/templates/memory-proposal-template.md +0 -77
- package/substrate/templates/persona-template.md +0 -200
- package/substrate/templates/pr-faq.md +0 -45
- package/substrate/templates/secret-rotation-template.md +0 -162
- package/substrate/templates/spec-template.md +0 -131
- package/substrate/templates/use-case-template.md +0 -194
- package/substrate/templates/user-story-template.md +0 -107
- package/substrate/templates/whereami-template.md +0 -101
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: requirement
|
|
3
|
-
description: "Produce Cockburn use cases plus INVEST user stories for a feature in one pass. Sam writes formal use cases for a spec. Louis writes INVEST stories for a backlog. You get both from one operator input. Combines /use-case + /user-stories."
|
|
4
|
-
problem: "Features get built from a one-line ticket. Corners get cut. Acceptance drifts from what the persona needs."
|
|
5
|
-
value: "Cockburn use cases plus INVEST user stories in one pass. Written for a Sam-style persona."
|
|
6
|
-
inputs: [A feature name or ticket ref]
|
|
7
|
-
outputs: [Fully-dressed use cases, INVEST user stories with acceptance criteria]
|
|
8
|
-
tier: lite
|
|
9
|
-
user_invocable: true
|
|
10
|
-
disable_model_invocation: false
|
|
11
|
-
modes: [both, use-case-only, story-only]
|
|
12
|
-
composes_with: [use-case, user-stories, personas]
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# /requirement — Cockburn use cases + INVEST stories in one pass
|
|
16
|
-
|
|
17
|
-
## What you get
|
|
18
|
-
|
|
19
|
-
You describe a feature in a paragraph. `/requirement` returns two artifacts.
|
|
20
|
-
|
|
21
|
-
<!-- FKGL-EXEMPT: structured shape enumeration; the parentheticals name the artifact fields -->
|
|
22
|
-
- One Cockburn-style use case (main success scenario + extensions + preconditions + postconditions)
|
|
23
|
-
- One or more INVEST-shape user stories (Independent + Negotiable + Valuable + Estimable + Small + Testable)
|
|
24
|
-
<!-- /FKGL-EXEMPT -->
|
|
25
|
-
|
|
26
|
-
You pick which one lands. Or both.
|
|
27
|
-
|
|
28
|
-
## When to use
|
|
29
|
-
|
|
30
|
-
Type `/requirement` when a feature needs both a spec and a backlog item. Common cases:
|
|
31
|
-
|
|
32
|
-
- New feature under `/longrun` scope — spec first, stories second
|
|
33
|
-
- Ticket in the queue that needs shape — story alone is thin; add the use case for edge cases
|
|
34
|
-
- Adopter demo — Louis wants a story for the pitch; Sam wants a use case for the build
|
|
35
|
-
|
|
36
|
-
## When NOT to use
|
|
37
|
-
|
|
38
|
-
- Only a bug fix — INSTEAD go to `/diagnose` at lite
|
|
39
|
-
- Pure architecture decision — INSTEAD go to `/spec` at lite
|
|
40
|
-
- Formal system contract only — INSTEAD go to `/use-case` at lite
|
|
41
|
-
|
|
42
|
-
## Cluster shape
|
|
43
|
-
|
|
44
|
-
`/requirement` sits inside the /longrun cluster as a strategy helper. Its own cluster:
|
|
45
|
-
|
|
46
|
-
- Upstream: `/personas` names who the feature is for. `/state-a-problem` frames the pain.
|
|
47
|
-
- Downstream: `/spec` bundles use case + stories into a buildable spec.
|
|
48
|
-
- Helpers: `/use-case` writes Cockburn shape. `/user-stories` writes INVEST shape.
|
|
49
|
-
|
|
50
|
-
## Composes
|
|
51
|
-
|
|
52
|
-
`/requirement` combines 2 single-purpose skills. Both stay at lite for direct dispatch.
|
|
53
|
-
|
|
54
|
-
<!-- FKGL-EXEMPT: structured shape names -->
|
|
55
|
-
- `/use-case` — Cockburn scenarios; main success plus numbered extensions
|
|
56
|
-
- `/user-stories` — INVEST shape; per-story acceptance list
|
|
57
|
-
<!-- /FKGL-EXEMPT -->
|
|
58
|
-
|
|
59
|
-
Per canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md` — Cockburn plus Beck consensus: shape names matter. `/requirement` combines without hiding the single-purpose skills. Sam and Louis can still call each one directly when they want one shape only.
|
|
60
|
-
|
|
61
|
-
## Modes
|
|
62
|
-
|
|
63
|
-
- `both` (default) — writes both a use case and INVEST stories
|
|
64
|
-
- `use-case-only` — dispatches `/use-case` alone; skips story authoring
|
|
65
|
-
- `story-only` — dispatches `/user-stories` alone; skips use case authoring
|
|
66
|
-
|
|
67
|
-
## Procedure
|
|
68
|
-
|
|
69
|
-
1. Parse the operator's feature paragraph. Extract the actor, the goal, the pain point.
|
|
70
|
-
2. Load persona context via `/personas`. Default to operator when personas are not defined.
|
|
71
|
-
3. If mode is `both` or `use-case-only`: dispatch `/use-case`. Author `docs/use-cases/UC-<slug>.md`.
|
|
72
|
-
4. If mode is `both` or `story-only`: dispatch `/user-stories`. Author `docs/user-stories/<slug>.md`.
|
|
73
|
-
5. Cross-link: the use case cites the stories. The stories cite the use case.
|
|
74
|
-
6. Print artifact paths to the operator.
|
|
75
|
-
|
|
76
|
-
## What lands on disk
|
|
77
|
-
|
|
78
|
-
- One use case at `docs/use-cases/UC-<slug>.md` (unless mode is `story-only`)
|
|
79
|
-
- One or more stories at `docs/user-stories/<slug>.md` (unless mode is `use-case-only`)
|
|
80
|
-
- Cross-references between the two
|
|
81
|
-
|
|
82
|
-
## Rules
|
|
83
|
-
|
|
84
|
-
- MUST cite the persona the feature is for (Sam or Louis or a project persona).
|
|
85
|
-
- MUST cross-link the use case and the stories.
|
|
86
|
-
- MUST match Cockburn shape for use cases. MUST match INVEST shape for stories.
|
|
87
|
-
- MAY skip stories or use case per mode.
|
|
88
|
-
|
|
89
|
-
## Refs
|
|
90
|
-
|
|
91
|
-
- Canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md`
|
|
92
|
-
- Ticket #1050 + comment 5160626302 (Cockburn + Beck consensus)
|
|
93
|
-
- Goal doc `docs/iteration-bets/2026-08-04g-porcelain-plumbing-reframe.md`
|
|
94
|
-
- `.claude/skills/use-case/SKILL.md` — atomic Cockburn shape
|
|
95
|
-
- `.claude/skills/user-stories/SKILL.md` — atomic INVEST shape
|
|
96
|
-
- `.claude/skills/personas/SKILL.md` — persona load
|
|
97
|
-
- @luminary alistair-cockburn
|
|
98
|
-
- @luminary kent-beck
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
name: retro
|
|
4
|
-
description: "Reflect at session close. Names what worked, what didn't, and what to change next time. Feeds candidate follow-on tickets."
|
|
5
|
-
problem: "Sessions end and the lessons vanish. What worked and what broke \u2014 nowhere written."
|
|
6
|
-
value: "A short retro that names what to keep and what to change next session."
|
|
7
|
-
inputs: [Optional session or goal ref]
|
|
8
|
-
outputs: [Kept and Changed and Learned sections, Follow-on ticket candidates]
|
|
9
|
-
user_invocable: true
|
|
10
|
-
disable_model_invocation: false
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Retro — Session Retrospective
|
|
14
|
-
|
|
15
|
-
Reflect on the current session and capture learnings.
|
|
16
|
-
|
|
17
|
-
## Runs at every tier — deep module
|
|
18
|
-
|
|
19
|
-
This skill uses only mechanical inputs. It reads `git log`. It reads files. The agent reflects on the session. No paid API. No LLM call beyond the agent's own turn output.
|
|
20
|
-
|
|
21
|
-
Same procedure runs at lite, standard, and ultra. Lite adopters get the full retrospective. Per canvas 2026-07-19-bassclef-lite Q6 Option E.
|
|
22
|
-
|
|
23
|
-
Closes bassclef-upstream#1383 (sister flip to `/roadmap-reconcile`).
|
|
24
|
-
|
|
25
|
-
## Steps
|
|
26
|
-
|
|
27
|
-
1. Review what was accomplished this session:
|
|
28
|
-
- `git log --oneline --since="today"` for commits
|
|
29
|
-
- Check for modified files and new artifacts
|
|
30
|
-
2. Identify:
|
|
31
|
-
- What went well (approaches that worked, decisions validated)
|
|
32
|
-
- What was harder than expected (and why)
|
|
33
|
-
- What should change for next session
|
|
34
|
-
3. List substrate observations from this session (see next section).
|
|
35
|
-
4. Check for open threads that need to carry forward.
|
|
36
|
-
|
|
37
|
-
## Substrate observations — file each as /promote (bassclef-web#96)
|
|
38
|
-
|
|
39
|
-
Before writing the retro, list what came up. Categories:
|
|
40
|
-
|
|
41
|
-
- Missing skill or hook that would have helped
|
|
42
|
-
- Hook fires wrong OR misses when it should fire
|
|
43
|
-
- Rule gap or drift
|
|
44
|
-
- Prereq surprise — a skill assumed X existed; it did not
|
|
45
|
-
- Adopter-visible friction (Sam or Louis lens)
|
|
46
|
-
|
|
47
|
-
For each observation, run three steps:
|
|
48
|
-
|
|
49
|
-
1. **Dedup check.** Run `gh issue list --repo <current-repo> --state open --label bassclef-evolution --search "<close-title-match>"`. When a match exists, comment on it. Do not file a new ticket.
|
|
50
|
-
2. **File /promote.** When no match, dispatch `/promote` with pre-filled title + body. The operator reviews before submit. The ticket lands with `bassclef-evolution` label in the current repo. Bassclef pulls via session-reflection hook per memory `feedback_promote_files_locally_not_upstream`.
|
|
51
|
-
3. **Record disposition.** Append a line to the marker file at `state/markers/retro-substrate/<session-id>.marker`. Use the session-id from `state/markers/session-timing/`. Fall back to `YYYY-MM-DD-<slug>` when that is missing.
|
|
52
|
-
|
|
53
|
-
Marker format:
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
# Retro substrate observations — <session-id>
|
|
57
|
-
- date: YYYY-MM-DD
|
|
58
|
-
- session: <session-id>
|
|
59
|
-
- observations:
|
|
60
|
-
- promoted: <one-line title> — filed as <repo>#<ticket>
|
|
61
|
-
- deferred: <one-line title> — <reason>
|
|
62
|
-
- rejected: <one-line title> — <reason>
|
|
63
|
-
- dedup: <one-line title> — commented on <repo>#<ticket>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Silence in this section is not deferral. List observations OR state "no substrate observations this session" explicitly.
|
|
67
|
-
|
|
68
|
-
## Output
|
|
69
|
-
|
|
70
|
-
When a session log exists for today, append a `## Retrospective` section to it.
|
|
71
|
-
When no session log exists, create one first via `/session-log` format. Then add the retro.
|
|
72
|
-
|
|
73
|
-
<!-- FKGL-EXEMPT: markdown template exemplar; adopter copies verbatim -->
|
|
74
|
-
```markdown
|
|
75
|
-
## Retrospective
|
|
76
|
-
|
|
77
|
-
### Went well
|
|
78
|
-
- ...
|
|
79
|
-
|
|
80
|
-
### Harder than expected
|
|
81
|
-
- ...
|
|
82
|
-
|
|
83
|
-
### Change for next time
|
|
84
|
-
- ...
|
|
85
|
-
|
|
86
|
-
### Substrate observations promoted
|
|
87
|
-
- <title> — filed as <repo>#<ticket>
|
|
88
|
-
- <title> — dedup: commented on <repo>#<ticket>
|
|
89
|
-
- (or: "no substrate observations this session")
|
|
90
|
-
|
|
91
|
-
### Open threads for next session
|
|
92
|
-
- ...
|
|
93
|
-
|
|
94
|
-
### Bassclef promotes this session
|
|
95
|
-
- agent-self-proposed: N
|
|
96
|
-
- agent-user-proposed: M
|
|
97
|
-
- total: N plus M
|
|
98
|
-
|
|
99
|
-
When M is much larger than N, the agent missed patterns the operator caught. When N is high but bassclef closes none, the agent files too broadly.
|
|
100
|
-
```
|
|
101
|
-
<!-- /FKGL-EXEMPT -->
|
|
102
|
-
|
|
103
|
-
**Proposer counting**: count bassclef-evolution issues from session
|
|
104
|
-
date window:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
gh issue list --label bassclef-evolution --state all \
|
|
108
|
-
--search "created:>=$(date -v-1d +%Y-%m-%d) created:<=$(date +%Y-%m-%d)" \
|
|
109
|
-
--json number,title,labels | jq '[.[] | {n: .number, t: .title,
|
|
110
|
-
kind: (if (.labels | map(.name) | index("agent-user-proposed")) then
|
|
111
|
-
"user" elif (.labels | map(.name) | index("agent-self-proposed"))
|
|
112
|
-
then "self" else "unlabeled" end)}]'
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Output discipline
|
|
116
|
-
|
|
117
|
-
Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: riff
|
|
3
|
-
description: "Produce 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. Louis picks a marketing variant. Sam picks a direction before building. Combines /interpret-input + /luminary + /stage + /visual-review."
|
|
4
|
-
problem: "Design directions get one variant and no comparison. Operator picks blind. Rework is huge."
|
|
5
|
-
value: "Two or three clickable mocks per UI surface. Each mock pins a different luminary lens."
|
|
6
|
-
inputs: [A UI surface intent or design goal]
|
|
7
|
-
outputs: [2-3 clickable mock variants, Luminary lens per variant]
|
|
8
|
-
tier: lite
|
|
9
|
-
user_invocable: true
|
|
10
|
-
disable_model_invocation: false
|
|
11
|
-
composes_with: [interpret-input, luminary, visual-review]
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# /riff — Vary a UI surface by luminary lens
|
|
15
|
-
|
|
16
|
-
## What you get
|
|
17
|
-
|
|
18
|
-
You get 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. You pick the one that fits.
|
|
19
|
-
|
|
20
|
-
Louis picks a marketing variant. Sam picks a direction before building.
|
|
21
|
-
|
|
22
|
-
## When to use
|
|
23
|
-
|
|
24
|
-
Type `/riff` when you have a UI or marketing surface. You want 2-3 options before building.
|
|
25
|
-
|
|
26
|
-
- Marketing page — try 3 luminary lenses on the same headline
|
|
27
|
-
- App feature UI — pick between minimal, dense, or modal
|
|
28
|
-
- Landing page hero — bake off options before design lock-in
|
|
29
|
-
|
|
30
|
-
## When NOT to use
|
|
31
|
-
|
|
32
|
-
- Single-variant work — INSTEAD go to `/frontend-design` at standard
|
|
33
|
-
- Full prototype pipeline with direct step control — INSTEAD use `/stage` at standard
|
|
34
|
-
- Buildable spec plus variants — INSTEAD use `/launch` at standard
|
|
35
|
-
|
|
36
|
-
## Tier gate
|
|
37
|
-
|
|
38
|
-
`/visual-review` and `/stage` ship at `tier: standard`. Lite adopters get graceful degrade — variants ship without the review check; the pipeline dispatches directly. Resolve tier via `lib/tier-check.sh`.
|
|
39
|
-
|
|
40
|
-
Per canvas 2026-07-19-bassclef-lite Q6 Option E — one SKILL.md file, same name in both tiers, body carries runtime tier awareness with graceful degrade.
|
|
41
|
-
|
|
42
|
-
## Tier and dispatch
|
|
43
|
-
|
|
44
|
-
`/riff` sits at bassclef lite. It is a porcelain verb — Git's word for the small set of verbs a user types. Sam or Louis types `/riff` and the pipeline runs underneath.
|
|
45
|
-
|
|
46
|
-
The plumbing (Git's word for the deeper steps a verb runs) sits at standard tier. When lite adopters type `/riff`, the skill dispatches:
|
|
47
|
-
|
|
48
|
-
1. `/interpret-input` — parse the operator's input
|
|
49
|
-
2. `/luminary` picker — pick 2-3 lenses that fit the intent
|
|
50
|
-
3. Per lens: author a static HTML mock
|
|
51
|
-
4. Assemble a gallery — one page listing every variant with screenshots and luminary tags
|
|
52
|
-
5. `/visual-review` — screenshot each variant and check against luminary discipline
|
|
53
|
-
|
|
54
|
-
Standard adopters can bypass `/riff`. They invoke `/stage` directly for the full pipeline with more control. Ultra adopters get `/pick-luminaries` cosine plus judge for tighter lens matching.
|
|
55
|
-
|
|
56
|
-
## Cluster shape
|
|
57
|
-
|
|
58
|
-
`/riff` sits inside the /longrun cluster. It is a helper for marketing and UI direction work. Its own cluster:
|
|
59
|
-
|
|
60
|
-
- Upstream: `/interpret-input` parses input into an artifact
|
|
61
|
-
- Downstream: picked variant flows into `/build` at standard or `/launch` at standard
|
|
62
|
-
- Helpers: `/luminary` picks lenses. `/visual-review` checks each variant. `/frontend-design` is Anthropic's baseline.
|
|
63
|
-
|
|
64
|
-
## Consolidates
|
|
65
|
-
|
|
66
|
-
`/riff` consolidates 2 prior skills at the lite entry:
|
|
67
|
-
|
|
68
|
-
- `/stage` — prototype pipeline. Stays at standard so you can call each step directly.
|
|
69
|
-
- `/riff-prototypes` — deprecated per ADR-020 in favor of `/stage`. Absorbed here at lite.
|
|
70
|
-
|
|
71
|
-
Per canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md` — 10 of 10 luminaries agreed on the reframe.
|
|
72
|
-
|
|
73
|
-
## Procedure
|
|
74
|
-
|
|
75
|
-
1. Parse the operator's input via `/interpret-input`. Output: normalized InputArtifact.
|
|
76
|
-
2. Pick 2-3 luminary lenses. Either operator-named or via `/luminary` picker.
|
|
77
|
-
3. For each lens: author a static HTML mock. Path: `docs/prototypes/YYYY-MM-DD-riff-<slug>-variant-N/index.html`. Stubbed data. Include a `<h2>` naming the lens.
|
|
78
|
-
4. Screenshot each variant via Playwright MCP. Save under `.playwright-mcp/`.
|
|
79
|
-
5. Assemble a gallery page. Link every variant. Show screenshots inline. Show luminary tags.
|
|
80
|
-
6. Run `/visual-review` on each variant. Report findings per variant.
|
|
81
|
-
7. Present the gallery URL to the operator. Operator picks. Picked variant flows into `/build` or `/launch` at standard.
|
|
82
|
-
|
|
83
|
-
## Baseline composition
|
|
84
|
-
|
|
85
|
-
`/riff` builds on top of Anthropic's `frontend-design` defaults. Adopters firing plain Claude get those defaults. `/riff` adds luminary discipline. It also adds bassclef design tokens.
|
|
86
|
-
|
|
87
|
-
## What lands on disk
|
|
88
|
-
|
|
89
|
-
- One HTML mock per variant under `docs/prototypes/`
|
|
90
|
-
- One screenshot per variant under `.playwright-mcp/`
|
|
91
|
-
- One gallery page linking every variant
|
|
92
|
-
- One PR to a feature branch (not main)
|
|
93
|
-
|
|
94
|
-
## Rules
|
|
95
|
-
|
|
96
|
-
- MUST produce a PR. Push to a feature branch, not main.
|
|
97
|
-
- MUST run on a feature branch.
|
|
98
|
-
- MUST screenshot every variant via Playwright MCP. BLOCK if MCP not enabled.
|
|
99
|
-
- MUST tag each variant with its luminary lens in the HTML.
|
|
100
|
-
- MUST report per-variant `/visual-review` findings with the gallery link.
|
|
101
|
-
|
|
102
|
-
## Refs
|
|
103
|
-
|
|
104
|
-
- Canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md`
|
|
105
|
-
- Ticket #1050 + comment 5160626302
|
|
106
|
-
- ADR-020 (prototype skill family consolidation)
|
|
107
|
-
- Goal doc `docs/iteration-bets/2026-08-04g-porcelain-plumbing-reframe.md`
|
|
108
|
-
- `.claude/skills/stage/SKILL.md` — atomic pipeline at standard
|
|
109
|
-
- `.claude/skills/frontend-design/SKILL.md` — Anthropic baseline
|
|
110
|
-
- `.claude/skills/visual-review/SKILL.md` — per-variant review
|
|
111
|
-
- `.claude/skills/luminary/SKILL.md` — lens picker
|
|
112
|
-
- `.claude/luminaries/bill-buxton.md` — variant discipline anchor
|
|
113
|
-
- @luminary bill-buxton
|
|
114
|
-
- @luminary alan-cooper
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
name: roadmap-reconcile
|
|
4
|
-
description: "Audit canvas LR-N tables and roadmap entries against recent chronicles, merged PRs, and freshly-filed tickets. Surface drift via --dry-run. Apply edits with --apply. Runs at /longrun prep and /sprint as pre-flight."
|
|
5
|
-
problem: "Canvas roadmap tables get stale. Shipped work sits marked pending. Sequencing drifts from reality."
|
|
6
|
-
value: "Diffs the roadmap against merged PRs plus fresh session logs. Applies edits so the canvas matches reality."
|
|
7
|
-
inputs: [Optional --dry-run or --apply flag, Roadmap path or canvas ref]
|
|
8
|
-
outputs: [Diff report of drift, Applied edits when --apply, Status per row]
|
|
9
|
-
user_invocable: true
|
|
10
|
-
disable_model_invocation: false
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# /roadmap-reconcile — True up canvases against shipping reality
|
|
14
|
-
|
|
15
|
-
## Runs at every tier — deep module (per canvas 2026-07-19-bassclef-lite Q6 Option E)
|
|
16
|
-
|
|
17
|
-
This skill uses only mechanical inputs — `git log`, `gh pr list`, `gh issue list`, grep across canvas + goal doc files. No paid API. No LLM dispatch. Same procedure runs identically at lite, standard, and ultra. Lite adopters get the full drift check.
|
|
18
|
-
|
|
19
|
-
The `lib/tier-check.sh` gate reads adopter tier from `.claude/bassclef-configs.jsonc`. This skill's body has no tier branch — one procedure serves every reader. Future extension (LLM-based semantic drift) would add a tier branch at the point of divergence; today no branch is needed.
|
|
20
|
-
|
|
21
|
-
Closes bassclef-upstream#1383.
|
|
22
|
-
|
|
23
|
-
The recurring substrate primitive that closes the stale-canvas trap. As operator ideates in a session, surfaces shift; the canvases holding LR-N sequencing tables stay frozen at the last commit. Without reconciliation, /longrun prep reads pre-detour next-goals and dispatches against work that's no longer on the critical path.
|
|
24
|
-
|
|
25
|
-
This skill enumerates roadmap surfaces, diffs them against shipping reality (chronicles + PRs + tickets), and produces edits — inline by default, or as a dry-run report for operator review.
|
|
26
|
-
|
|
27
|
-
INSTEAD of relying on operator-and-agent ad-hoc canvas review at every prep: dispatch this skill as a pre-flight gate; it returns either "no drift" (proceed) or a specific diff (resolve before scope commit).
|
|
28
|
-
|
|
29
|
-
## When to invoke
|
|
30
|
-
|
|
31
|
-
- **Auto at /longrun prep Step 0.5**: dry-run mode runs before scope confirmation; surfaces drift; operator confirms reconciled state before WU-0
|
|
32
|
-
- **Auto at /sprint**: dry-run output appended to /sprint surface so operator sees roadmap drift alongside ticket-level orientation
|
|
33
|
-
- **Standalone**: operator dispatches `/roadmap-reconcile` after a substantive ideation session that didn't land in canvas updates yet
|
|
34
|
-
- **Composer fallback**: any composer detecting ticket-vs-canvas drift can dispatch this skill instead of failing silently
|
|
35
|
-
|
|
36
|
-
## Procedure
|
|
37
|
-
|
|
38
|
-
1. **Enumerate roadmap surfaces:**
|
|
39
|
-
- Substrate canvases under `strategy/canvases/` — grep for `LR-N` rows in Stage 3 build sequence + Operator priorities tables
|
|
40
|
-
- Typed roadmap entities under `docs/roadmaps/*.md` — read via `state_roadmap_get` accessor when present (per bassclef#337, #480 once shipped)
|
|
41
|
-
- Active iteration goal under `docs/iteration-bets/` — extract `next_bet:` field
|
|
42
|
-
- Whereami `next_bet:` field at `docs/whereami.md`
|
|
43
|
-
2. **Read shipping reality:**
|
|
44
|
-
- `git log --since=14days --pretty=oneline -- 'chronicle/*.md' 'docs/chronicle/*.md'` — sessions that shipped
|
|
45
|
-
- `gh pr list --state all --json number,title,state,mergedAt --limit 30` — PR truth
|
|
46
|
-
- `gh issue list --state open --search 'created:>=2-weeks-ago' --json number,title,labels,body` — recently filed tickets
|
|
47
|
-
- `git log --since=14days --pretty=format:'%h %s' -- 'docs/iteration-bets/*.md'` — bets opened or closed
|
|
48
|
-
3. **Build a diff** — for each LR-N row in canvas tables:
|
|
49
|
-
- Status mismatch: canvas says "in progress" but a CLOSED goal ships its scope, OR canvas says "next" but a bet's already opened
|
|
50
|
-
- Sequencing mismatch: a recently-filed ticket names itself as "blocking LR-N+1" or "load-bearing for LR-N" but doesn't appear in any LR-row
|
|
51
|
-
- Reference rot: canvas references a ticket that's been closed or superseded
|
|
52
|
-
4. **Produce output:**
|
|
53
|
-
- **--dry-run mode (default at /longrun prep + /sprint):** markdown diff report — what's stale, what to edit, what to add
|
|
54
|
-
- **--apply mode (operator opt-in):** inline edits to canvas files via Edit tool; commit with `docs(roadmap): reconcile <slug>`
|
|
55
|
-
- **--json mode:** structured output for downstream skills/hooks
|
|
56
|
-
5. **Surface output** to caller (operator or composer); caller decides resolve / defer / amend.
|
|
57
|
-
|
|
58
|
-
## What NOT to do
|
|
59
|
-
|
|
60
|
-
- **Don't fabricate LR-N rows for tickets that aren't ready to be sequenced.** INSTEAD: surface the ticket as "candidate for next sequencing decision" without inserting; operator decides at /longrun prep.
|
|
61
|
-
- **Don't auto-apply edits without --apply opt-in.** INSTEAD: --dry-run is the default; operator reviews the diff before any canvas write.
|
|
62
|
-
- **Don't reach inside canvas Stage 1/2 (Thesis, Shape) content.** INSTEAD: only edit Stage 3 build sequences + Operator priorities tables + status overlays; the upstream thesis stays operator-owned.
|
|
63
|
-
- **Don't reconcile against draft tickets or WIP goals.** INSTEAD: filter to merged PRs + closed/active goals; tickets in `draft` state or PRs in `draft` are noise.
|
|
64
|
-
- **Don't run during /longrun execution mid-step.** INSTEAD: only at prep + closeout windows; mid-execution reconciliation creates scope-drift triggers.
|
|
65
|
-
|
|
66
|
-
## Output format (--dry-run)
|
|
67
|
-
|
|
68
|
-
```markdown
|
|
69
|
-
## /roadmap-reconcile dry-run — <timestamp>
|
|
70
|
-
|
|
71
|
-
### Surfaces enumerated
|
|
72
|
-
|
|
73
|
-
- canvas: strategy/canvases/2026-05-03-bassclef-platform-primitive.md (8 LR-N rows)
|
|
74
|
-
- canvas: strategy/canvases/2026-05-04-hud-on-brownfield-repo.md (10-step build sequence)
|
|
75
|
-
- typed roadmap: <path> OR (none — bassclef#480 not yet shipped)
|
|
76
|
-
- whereami next_bet: 2026-05-XX-LR6-your-app-refactor-dispatch
|
|
77
|
-
|
|
78
|
-
### Drift detected
|
|
79
|
-
|
|
80
|
-
**Canvas <path>:**
|
|
81
|
-
- LR-N row <N> says "in progress" but goal <slug> is CLOSED (per chronicle <ref>); should be "✅ shipped"
|
|
82
|
-
- LR-N row <N+1> references bassclef#XXX which has been closed as superseded; should reference replacement #YYY
|
|
83
|
-
- bassclef#ZZZ filed 3 days ago names itself as "blocks LR-N+2"; doesn't appear in canvas table
|
|
84
|
-
|
|
85
|
-
**Whereami next_bet:**
|
|
86
|
-
- Names LR6 = POA dispatch; canvas Operator priorities row also says LR6 = POA dispatch — aligned
|
|
87
|
-
|
|
88
|
-
### Recommended edits
|
|
89
|
-
|
|
90
|
-
1. Update canvas <path> Operator priorities row N: status → "✅ shipped 2026-05-04"
|
|
91
|
-
2. Update canvas <path> Stage 3 row M: replace "#XXX" with "#YYY"
|
|
92
|
-
3. Insert new row in canvas <path> at LR-N+2: "#ZZZ — <description from ticket>"
|
|
93
|
-
|
|
94
|
-
### To apply
|
|
95
|
-
|
|
96
|
-
`/roadmap-reconcile --apply` (operator-confirms before commit)
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Output format (--json)
|
|
100
|
-
|
|
101
|
-
```json
|
|
102
|
-
{
|
|
103
|
-
"timestamp": "2026-05-04T...",
|
|
104
|
-
"surfaces": [
|
|
105
|
-
{"type": "canvas", "path": "...", "rows": 8},
|
|
106
|
-
{"type": "typed-roadmap", "path": null, "note": "bassclef#480 not yet shipped"}
|
|
107
|
-
],
|
|
108
|
-
"drift": [
|
|
109
|
-
{
|
|
110
|
-
"surface": "canvas:strategy/canvases/...",
|
|
111
|
-
"row": "LR-4",
|
|
112
|
-
"claim": "in progress",
|
|
113
|
-
"reality": "shipped",
|
|
114
|
-
"evidence": "chronicle/2026-05-04d-...md",
|
|
115
|
-
"edit": "row LR-4 status: shipped"
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Acceptance
|
|
122
|
-
|
|
123
|
-
- SKILL.md scaffolds with verb-first description (≤280 chars; per `.claude/rules/skill-description-clarity.md`)
|
|
124
|
-
- Tests in `scripts/tests/roadmap-reconcile.test.sh` cover:
|
|
125
|
-
- Enumeration: skill detects all canvas LR-N tables in `strategy/canvases/`
|
|
126
|
-
- Drift detection: stale canvas + recent shipped chronicle → drift surfaces
|
|
127
|
-
- Drift detection: freshly-filed ticket marked as "blocks LR-N" → drift surfaces
|
|
128
|
-
- Output formats: --dry-run produces markdown; --json produces valid JSON
|
|
129
|
-
- Negative test: clean roadmap (no drift) → "no drift" output
|
|
130
|
-
- Integration: /longrun prep SKILL.md procedure adds Step 0.5 reference
|
|
131
|
-
- Integration: /sprint SKILL.md composes-with table updated
|
|
132
|
-
|
|
133
|
-
## Composes with
|
|
134
|
-
|
|
135
|
-
- `/longrun prep` (composes-into Step 0.5) — pre-flight reconciliation gate
|
|
136
|
-
- `/sprint` (composes-into output) — surface drift alongside ticket-level orientation
|
|
137
|
-
- `/whats-the-plan` (referenced) — declares the chain; this skill refreshes the plan source
|
|
138
|
-
- `/promote` — when reconciliation surfaces a missing typed roadmap entity, file as substrate-evolution ticket (mirrors LR4 WU-0 → bassclef#480 pattern)
|
|
139
|
-
- `state_roadmap_get` accessor — read at Step 1 once bassclef#480 ships; until then, canvas-grep is the surface
|
|
140
|
-
|
|
141
|
-
## Distinct from
|
|
142
|
-
|
|
143
|
-
- `/sprint` — ticket-level (what's next on the backlog); this is goal-level (what's next in the sequenced roadmap)
|
|
144
|
-
- `/whereami` — point-in-time snapshot reader; this skill EDITS the source canvases that whereami summarizes
|
|
145
|
-
- `/promote` — files new tickets when patterns surface; this skill updates how filed tickets are sequenced
|
|
146
|
-
|
|
147
|
-
## Sources read
|
|
148
|
-
|
|
149
|
-
- bassclef#479 (ticket body) — procedure spec
|
|
150
|
-
- `strategy/canvases/2026-05-03-bassclef-platform-primitive.md` — Operator priorities table is the load-bearing surface
|
|
151
|
-
- `strategy/canvases/2026-05-04-hud-on-brownfield-repo.md` — Stage 3 build sequence is the second load-bearing surface
|
|
152
|
-
- `docs/iteration-bets/2026-05-04d-catalog-substrate-roadmap-reconnect.md` WU-0 — manual instance this skill automates
|
|
153
|
-
- `chronicle/2026-05-04d-catalog-substrate-roadmap-reconnect.md` — discoveries section names the meta-loop pattern
|
|
154
|
-
- bassclef#480 (ticket body) — typed roadmap entity gap; this skill bridges to it
|
|
155
|
-
- `.claude/rules/blocked-items.md` — drift surfaces follow the BLOCKED protocol when /longrun prep can't proceed without resolution
|
|
156
|
-
|
|
157
|
-
## Closes
|
|
158
|
-
|
|
159
|
-
Filed in iteration-goal `2026-05-04e-LR5-enforcement-and-content` (LR5) WU-1. Closes bassclef#479. The skill itself is the substrate primitive that retires the manual-WU-0 pattern from LR4 onward.
|
|
160
|
-
|
|
161
|
-
## Output discipline
|
|
162
|
-
|
|
163
|
-
Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.
|