@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.
Files changed (293) hide show
  1. package/dist/cli.cjs +216 -137
  2. package/dist/cli.js +218 -139
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.bassclef-source.json +10 -0
  7. package/dist/lite/.claude/settings.json +212 -0
  8. package/dist/lite/CLAUDE.md +41 -0
  9. package/dist/lite/gitignore +58 -0
  10. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  11. package/dist/lite/whereami.md +24 -0
  12. package/package.json +8 -2
  13. package/substrate/.bassclef/lite-manifest.json +0 -2701
  14. package/substrate/.claude/agents/architect.md +0 -70
  15. package/substrate/.claude/agents/builder.md +0 -114
  16. package/substrate/.claude/agents/designer.md +0 -156
  17. package/substrate/.claude/agents/reviewer.md +0 -88
  18. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +0 -357
  19. package/substrate/.claude/hooks/assert-verify-steering.sh +0 -77
  20. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +0 -215
  21. package/substrate/.claude/hooks/bassclef-sync.sh +0 -634
  22. package/substrate/.claude/hooks/compound-noun-scrub.sh +0 -292
  23. package/substrate/.claude/hooks/kiss-expansion-inject.sh +0 -69
  24. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  25. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -492
  26. package/substrate/.claude/hooks/plain-english-steering.sh +0 -156
  27. package/substrate/.claude/hooks/post-skill-friction-check.sh +0 -177
  28. package/substrate/.claude/hooks/post-skill-telemetry.sh +0 -62
  29. package/substrate/.claude/hooks/pre-build-gate.sh +0 -511
  30. package/substrate/.claude/hooks/pre-commit-gate.sh +0 -451
  31. package/substrate/.claude/hooks/session-end.sh +0 -433
  32. package/substrate/.claude/hooks/session-reflection.sh +0 -303
  33. package/substrate/.claude/hooks/skill-body-grade-gate.sh +0 -219
  34. package/substrate/.claude/hooks/skill-body-intent-drift.sh +0 -107
  35. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  36. package/substrate/.claude/hooks/state-validate.sh +0 -271
  37. package/substrate/.claude/hooks/substrate-clarity-gate.sh +0 -1110
  38. package/substrate/.claude/hooks/temperance-gate.sh +0 -147
  39. package/substrate/.claude/hooks/testing-tier-enforce.sh +0 -233
  40. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +0 -219
  41. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +0 -463
  42. package/substrate/.claude/hooks/vocabulary-migration-check.sh +0 -171
  43. package/substrate/.claude/hooks/whereami-utc-gate.sh +0 -142
  44. package/substrate/.claude/luminaries/alan-cooper.md +0 -170
  45. package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
  46. package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
  47. package/substrate/.claude/luminaries/ash-maurya.md +0 -121
  48. package/substrate/.claude/luminaries/bill-buxton.md +0 -210
  49. package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
  50. package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
  51. package/substrate/.claude/luminaries/don-norman.md +0 -173
  52. package/substrate/.claude/luminaries/edward-tufte.md +0 -179
  53. package/substrate/.claude/luminaries/eric-evans.md +0 -160
  54. package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
  55. package/substrate/.claude/luminaries/gang-of-four.md +0 -157
  56. package/substrate/.claude/luminaries/glenford-myers.md +0 -230
  57. package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
  58. package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
  59. package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
  60. package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
  61. package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
  62. package/substrate/.claude/luminaries/karl-popper.md +0 -132
  63. package/substrate/.claude/luminaries/kent-beck.md +0 -168
  64. package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
  65. package/substrate/.claude/luminaries/martin-fowler.md +0 -164
  66. package/substrate/.claude/luminaries/michael-feathers.md +0 -125
  67. package/substrate/.claude/luminaries/michael-nygard.md +0 -118
  68. package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
  69. package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
  70. package/substrate/.claude/luminaries/sophia-prater.md +0 -193
  71. package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
  72. package/substrate/.claude/luminaries/tony-hoare.md +0 -170
  73. package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
  74. package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
  75. package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
  76. package/substrate/.claude/rules/adr-discipline.md +0 -120
  77. package/substrate/.claude/rules/api-conventions.md +0 -125
  78. package/substrate/.claude/rules/artifact-ingestion.md +0 -179
  79. package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
  80. package/substrate/.claude/rules/blocked-items.md +0 -146
  81. package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
  82. package/substrate/.claude/rules/branching.md +0 -28
  83. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
  84. package/substrate/.claude/rules/commit-conventions.md +0 -22
  85. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
  86. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
  87. package/substrate/.claude/rules/context-engineering.md +0 -202
  88. package/substrate/.claude/rules/context-management.md +0 -85
  89. package/substrate/.claude/rules/defensive-bash.md +0 -68
  90. package/substrate/.claude/rules/deferred-actions.md +0 -233
  91. package/substrate/.claude/rules/destructive-operations.md +0 -69
  92. package/substrate/.claude/rules/diagnosis.md +0 -38
  93. package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
  94. package/substrate/.claude/rules/guardrails.md +0 -73
  95. package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
  96. package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
  97. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
  98. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
  99. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
  100. package/substrate/.claude/rules/loop-discipline.md +0 -81
  101. package/substrate/.claude/rules/manual-prod-approval.md +0 -100
  102. package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
  103. package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
  104. package/substrate/.claude/rules/new-dependency-check.md +0 -51
  105. package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
  106. package/substrate/.claude/rules/operator-facing-prose.md +0 -196
  107. package/substrate/.claude/rules/option-label-discipline.md +0 -108
  108. package/substrate/.claude/rules/pattern-annotation.md +0 -100
  109. package/substrate/.claude/rules/plain-english-discipline.md +0 -156
  110. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
  111. package/substrate/.claude/rules/pr-body-shape.md +0 -317
  112. package/substrate/.claude/rules/pr-strategy.md +0 -167
  113. package/substrate/.claude/rules/pr-title-shape.md +0 -161
  114. package/substrate/.claude/rules/prototype-workflow.md +0 -65
  115. package/substrate/.claude/rules/reserved-skill-names.md +0 -123
  116. package/substrate/.claude/rules/schema-management.md +0 -49
  117. package/substrate/.claude/rules/sdlc-gates.md +0 -149
  118. package/substrate/.claude/rules/security.md +0 -37
  119. package/substrate/.claude/rules/session-artifacts.md +0 -236
  120. package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
  121. package/substrate/.claude/rules/skill-description-clarity.md +0 -247
  122. package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
  123. package/substrate/.claude/rules/state-schema-validation.md +0 -162
  124. package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
  125. package/substrate/.claude/rules/substrate-config-schema.md +0 -98
  126. package/substrate/.claude/rules/test-list-discipline.md +0 -175
  127. package/substrate/.claude/rules/test-sufficiency.md +0 -210
  128. package/substrate/.claude/rules/testing-tier-config.md +0 -145
  129. package/substrate/.claude/rules/testing.md +0 -38
  130. package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
  131. package/substrate/.claude/rules/visual-hierarchy.md +0 -437
  132. package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
  133. package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
  134. package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
  135. package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
  136. package/substrate/.claude/skills/build/SKILL.md +0 -640
  137. package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
  138. package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
  139. package/substrate/.claude/skills/decompose/SKILL.md +0 -280
  140. package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
  141. package/substrate/.claude/skills/feynman/SKILL.md +0 -90
  142. package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
  143. package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
  144. package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
  145. package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
  146. package/substrate/.claude/skills/journal/SKILL.md +0 -209
  147. package/substrate/.claude/skills/kiss/SKILL.md +0 -449
  148. package/substrate/.claude/skills/launch/SKILL.md +0 -915
  149. package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
  150. package/substrate/.claude/skills/longrun/SKILL.md +0 -463
  151. package/substrate/.claude/skills/luminary/SKILL.md +0 -481
  152. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
  153. package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
  154. package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
  155. package/substrate/.claude/skills/personas/SKILL.md +0 -207
  156. package/substrate/.claude/skills/promote/SKILL.md +0 -283
  157. package/substrate/.claude/skills/requirement/SKILL.md +0 -98
  158. package/substrate/.claude/skills/retro/SKILL.md +0 -117
  159. package/substrate/.claude/skills/riff/SKILL.md +0 -114
  160. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
  161. package/substrate/.claude/skills/session-end/SKILL.md +0 -309
  162. package/substrate/.claude/skills/session-log/SKILL.md +0 -299
  163. package/substrate/.claude/skills/skills/SKILL.md +0 -228
  164. package/substrate/.claude/skills/spec/SKILL.md +0 -105
  165. package/substrate/.claude/skills/sprint/SKILL.md +0 -392
  166. package/substrate/.claude/skills/stage/SKILL.md +0 -384
  167. package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
  168. package/substrate/.claude/skills/temperance/SKILL.md +0 -108
  169. package/substrate/.claude/skills/use-case/SKILL.md +0 -417
  170. package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
  171. package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
  172. package/substrate/.claude/skills/verify/SKILL.md +0 -160
  173. package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
  174. package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
  175. package/substrate/.claude/skills/whereami/SKILL.md +0 -307
  176. package/substrate/AGENTS.md +0 -79
  177. package/substrate/CLAUDE-lite.md +0 -85
  178. package/substrate/CODE_OF_CONDUCT.md +0 -28
  179. package/substrate/CONTRIBUTING.md +0 -177
  180. package/substrate/README.md +0 -173
  181. package/substrate/SECURITY.md +0 -19
  182. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
  183. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
  184. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
  185. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
  186. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
  187. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
  188. package/substrate/lib/clean-artifacts-sweep.sh +0 -112
  189. package/substrate/lib/code-comment-discipline.sh +0 -144
  190. package/substrate/lib/composer-preflight.sh +0 -459
  191. package/substrate/lib/hook-inject.sh +0 -255
  192. package/substrate/lib/luminary-pick.sh +0 -96
  193. package/substrate/lib/output-discipline.sh +0 -143
  194. package/substrate/lib/prose-scan-boundary.sh +0 -171
  195. package/substrate/lib/rewrite-check.sh +0 -214
  196. package/substrate/lib/state.sh +0 -1372
  197. package/substrate/lib/telemetry.sh +0 -205
  198. package/substrate/lib/tier-check.sh +0 -187
  199. package/substrate/lib/tier-dependency-audit.sh +0 -1088
  200. package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
  201. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
  202. package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
  203. package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
  204. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
  205. package/substrate/scripts/aggregate-telemetry.sh +0 -217
  206. package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
  207. package/substrate/scripts/generate-lite-manifest.sh +0 -505
  208. package/substrate/scripts/generate-tier-manifest.sh +0 -28
  209. package/substrate/scripts/intent-drift-check.sh +0 -456
  210. package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
  211. package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
  212. package/substrate/standards/adr-template.md +0 -86
  213. package/substrate/standards/api-conventions/nextjs.md +0 -84
  214. package/substrate/standards/artifact-composition.md +0 -209
  215. package/substrate/standards/bash-hook-safety.md +0 -246
  216. package/substrate/standards/bassclef-configs-schema.md +0 -232
  217. package/substrate/standards/bassclef-evolution.md +0 -143
  218. package/substrate/standards/bassclef-internal-jargon.md +0 -244
  219. package/substrate/standards/bassclef-managed-sentinel.md +0 -96
  220. package/substrate/standards/bassclef-source-config.md +0 -228
  221. package/substrate/standards/branch-stacking.md +0 -408
  222. package/substrate/standards/code-safety-principles.md +0 -176
  223. package/substrate/standards/composer-prerequisites.md +0 -155
  224. package/substrate/standards/deferred-actions-schema.md +0 -204
  225. package/substrate/standards/dependency-discipline/cargo.md +0 -39
  226. package/substrate/standards/dependency-discipline/gem.md +0 -43
  227. package/substrate/standards/dependency-discipline/go-mod.md +0 -41
  228. package/substrate/standards/dependency-discipline/npm.md +0 -42
  229. package/substrate/standards/dependency-discipline/pip.md +0 -42
  230. package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
  231. package/substrate/standards/deployment-topology.md +0 -69
  232. package/substrate/standards/docs-sync-allowlist.md +0 -76
  233. package/substrate/standards/domain-and-dns.md +0 -145
  234. package/substrate/standards/frontend-stack.md +0 -67
  235. package/substrate/standards/frontmatter-schema.md +0 -154
  236. package/substrate/standards/graceful-exit.md +0 -227
  237. package/substrate/standards/hook-idempotency.md +0 -102
  238. package/substrate/standards/hook-injection-discipline.md +0 -202
  239. package/substrate/standards/hook-install-class.md +0 -215
  240. package/substrate/standards/input-handler-interface.md +0 -152
  241. package/substrate/standards/lite-manifest-schema-changes.md +0 -135
  242. package/substrate/standards/luminary-matching.md +0 -105
  243. package/substrate/standards/luminary-problem-patterns.md +0 -481
  244. package/substrate/standards/migration-discipline/active-record.md +0 -50
  245. package/substrate/standards/migration-discipline/alembic.md +0 -43
  246. package/substrate/standards/migration-discipline/gorm.md +0 -50
  247. package/substrate/standards/migration-discipline/prisma.md +0 -53
  248. package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
  249. package/substrate/standards/mobile-ephemeral-session.md +0 -167
  250. package/substrate/standards/model-routing-discipline.md +0 -160
  251. package/substrate/standards/ogilvy-writing-rules.md +0 -225
  252. package/substrate/standards/opener-discipline.md +0 -96
  253. package/substrate/standards/operator-facing-prose-discipline.md +0 -201
  254. package/substrate/standards/persona-schema.md +0 -229
  255. package/substrate/standards/pluggable-luminaries.md +0 -323
  256. package/substrate/standards/pr-body-discipline.md +0 -115
  257. package/substrate/standards/preview-state-schema.md +0 -189
  258. package/substrate/standards/project-directory-layout.md +0 -276
  259. package/substrate/standards/release-tagging.md +0 -137
  260. package/substrate/standards/reserved-skill-names.md +0 -120
  261. package/substrate/standards/scannable-multi-option-output.md +0 -261
  262. package/substrate/standards/sdlc-compliance.md +0 -286
  263. package/substrate/standards/sdlc-gates/typescript.md +0 -57
  264. package/substrate/standards/secrets-lifecycle.md +0 -210
  265. package/substrate/standards/security-scanner-adapter.md +0 -145
  266. package/substrate/standards/session-board.md +0 -256
  267. package/substrate/standards/skill-output-discipline.md +0 -90
  268. package/substrate/standards/state-spine-contract.md +0 -255
  269. package/substrate/standards/state-spine.md +0 -511
  270. package/substrate/standards/steering-hints/kiss-words.md +0 -11
  271. package/substrate/standards/substrate-config-schema.md +0 -267
  272. package/substrate/standards/tech-stack-config.md +0 -109
  273. package/substrate/standards/tier-dependency-analysis.md +0 -167
  274. package/substrate/standards/tier-runtime-deps/lite.md +0 -57
  275. package/substrate/standards/tier-tag-schema.md +0 -155
  276. package/substrate/standards/two-layer-config.md +0 -99
  277. package/substrate/standards/use-case-format.md +0 -292
  278. package/substrate/standards/user-story-invest.md +0 -268
  279. package/substrate/standards/velocity-and-appetite.md +0 -229
  280. package/substrate/standards/voice-input-pattern.md +0 -119
  281. package/substrate/standards/whereami-schema.md +0 -301
  282. package/substrate/standards/worktree-management.md +0 -211
  283. package/substrate/standards/writing-guide.md +0 -213
  284. package/substrate/templates/chronicle-template.md +0 -75
  285. package/substrate/templates/deferred-action-template.md +0 -45
  286. package/substrate/templates/memory-proposal-template.md +0 -77
  287. package/substrate/templates/persona-template.md +0 -200
  288. package/substrate/templates/pr-faq.md +0 -45
  289. package/substrate/templates/secret-rotation-template.md +0 -162
  290. package/substrate/templates/spec-template.md +0 -131
  291. package/substrate/templates/use-case-template.md +0 -194
  292. package/substrate/templates/user-story-template.md +0 -107
  293. package/substrate/templates/whereami-template.md +0 -101
@@ -1,481 +0,0 @@
1
- ---
2
- tier: lite
3
- description: "Auto-generated. Do not hand-edit. Re-run via: bash scripts/luminary-problem-patterns-aggregate.sh"
4
- ---
5
-
6
- # Luminary problem-pattern catalog
7
-
8
- **Auto-generated.** Do not hand-edit. Re-run via:
9
- ```
10
- bash scripts/luminary-problem-patterns-aggregate.sh
11
- ```
12
-
13
- This index reads every `.claude/luminaries/*.md` file's frontmatter and
14
- extracts the `solves_problems_brownfield`, `solves_problems_greenfield`,
15
- and `anti_patterns` arrays. The agent reads this index when running
16
- `/luminary recommend` against a plain-English problem statement.
17
-
18
- ## Coverage
19
-
20
- - **20 / 77** luminaries have problem-pattern frontmatter
21
- - Backfill tracker: `docs/luminary-problem-pattern-backfill.md`
22
-
23
- ## Catalog (alphabetical by slug)
24
-
25
- ### Aarron Walter (`aarron-walter`)
26
-
27
- - **Domain:** ux | **Depth:** full
28
-
29
- **Solves (brownfield — existing UI):**
30
- - Existing product feels functional but cold — users complete tasks without engagement
31
- - Microcopy is generic; brand voice doesn't come through
32
- - Empty states, error states, and waiting states feel like dead ends instead of moments
33
-
34
- **Solves (greenfield — 0→1 design):**
35
- - Designing a new consumer product where personality should differentiate from day one
36
- - Building microcopy + tone-of-voice as core design elements, not decoration
37
- - Planning a product where emotional engagement matters as much as task completion
38
- - Designing empty/error/waiting states as moments of brand expression in a fresh build
39
-
40
- **Anti-patterns (when NOT to channel):**
41
- - Regulated, clinical, or compliance-heavy surfaces — Walter is too playful
42
- - Power-tool or data-dense surfaces where personality slows the user down
43
-
44
- ---
45
-
46
- ### Abby Covert (`abby-covert`)
47
-
48
- - **Domain:** ux | **Depth:** stub
49
-
50
- **Solves (brownfield — existing UI):**
51
- - Content exists but users can't make sense of how it relates
52
- - Labels are inconsistent across surfaces; same thing has different names
53
- - Information architecture is a mess but team can't see it
54
-
55
- **Solves (greenfield — 0→1 design):**
56
- - Starting a content-heavy or knowledge-base product where taxonomy must precede screens
57
- - Designing IA before any UI for a multi-domain app
58
- - Building a sense-making system where labeling discipline is a first-class concern
59
- - Designing a product where 'naming things consistently' will be a recurring discipline
60
-
61
- **Anti-patterns (when NOT to channel):**
62
- - Single-screen or single-task tools
63
- - Pure visual or motion work
64
-
65
- ---
66
-
67
- ### Alan Cooper (`alan-cooper`)
68
-
69
- - **Domain:** ux | **Depth:** full
70
-
71
- **Solves (brownfield — existing UI):**
72
- - Existing UI exposes the system's structure when users want their workflow
73
- - Power users keep retracing the same multi-step path through the current UI
74
- - Persona research surfaces a goal but the existing UI optimizes for novice exploration
75
- - App is feature-rich but each user wants only one slice for their job
76
-
77
- **Solves (greenfield — 0→1 design):**
78
- - Designing a workflow-heavy app for returning users with named goals
79
- - Building a product where personas + scenarios should drive the UI before any screen sketch
80
- - Planning a tool for power users who need their job-specific slice surfaced from day one
81
- - Mid-complexity product where personas keep early design decisions grounded in real users
82
-
83
- **Anti-patterns (when NOT to channel):**
84
- - Truly simple consumer apps — Cooper overweights workflow modeling
85
- - First-launch novelty experiences — goal-directed assumes a returning user
86
- - Pure marketing or storytelling surfaces
87
-
88
- ---
89
-
90
- ### Anthropic frontend-design skill — BASELINE COMPOSES-WITH, NOT A LUMINARY
91
-
92
- Anthropic's `frontend-design` skill is the implicit baseline default adopters get from plain Claude. Bassclef's authoring skills (`/frontend-design`, `/riff-prototypes`, `/launch`, `/visual-review`) declare `composes_baseline: anthropic-frontend-design` in their frontmatter and extend the baseline with luminary-pair commitment, design tokens, and visual-review discipline.
93
-
94
- This baseline is not a luminary catalog entry; it ships with the upstream skill catalog Anthropic publishes. Bassclef extends; bassclef does not author the baseline. Adopters firing plain Claude (no bassclef substrate) inherit the baseline's typography + color + motion + spatial-composition guidance for free.
95
-
96
- See `.claude/skills/frontend-design/SKILL.md` for bassclef's baseline composition declaration and the specific extensions bassclef adds.
97
-
98
- ---
99
-
100
- ### Apple Human Interface Guidelines (HIG) (`apple-hig`)
101
-
102
- - **Domain:** visual | **Depth:** stub
103
-
104
- **Solves (brownfield — existing UI):**
105
- - Existing app fights iOS / macOS conventions instead of feeling native
106
- - Design has too many ideas competing for attention; restraint would clarify
107
- - Brand identity is overpowering platform conventions in the current UI
108
- - Polish is missing — corners, transitions, depth feel cheap
109
-
110
- **Solves (greenfield — 0→1 design):**
111
- - Designing an app for one specific Apple platform where native fit is a value
112
- - Building a product where restraint and platform conventions matter more than expression
113
- - Planning a polished consumer app on iOS / macOS / iPadOS
114
- - Designing for a platform whose users expect HIG-shaped affordances by default
115
-
116
- **Anti-patterns (when NOT to channel):**
117
- - Cross-platform brand-led design where native fit isn't the goal
118
- - Highly differentiated brand surfaces — Apple HIG forces convention over voice
119
-
120
- ---
121
-
122
- ### BJ Fogg (`bj-fogg`)
123
-
124
- - **Domain:** ux | **Depth:** stub
125
-
126
- **Solves (brownfield — existing UI):**
127
- - Users sign up but don't return; existing onboarding doesn't form a habit
128
- - Notifications fire but don't drive the right action
129
- - Existing onboarding tour overwhelms instead of landing a tiny first success
130
-
131
- **Solves (greenfield — 0→1 design):**
132
- - Designing a behavior-change product (fitness, habit, learning) where motivation × ability × trigger must align
133
- - Building an onboarding flow that lands a tiny first success on day one
134
- - Planning a product whose retention will depend on habit formation
135
- - Designing notification logic where the right trigger fires the right action from launch
136
-
137
- **Anti-patterns (when NOT to channel):**
138
- - Power-tool surfaces where the user already has motivation
139
- - B2B or compliance-heavy surfaces where behavior change isn't the goal
140
-
141
- ---
142
-
143
- ### Brad Frost (`brad-frost`)
144
-
145
- - **Domain:** visual | **Depth:** full
146
-
147
- **Solves (brownfield — existing UI):**
148
- - Existing component library is a flat dump with gaps in mid-level molecules and organisms
149
- - Designers and engineers describe components inconsistently
150
- - Pattern library exists but doesn't compose into actual pages
151
-
152
- **Solves (greenfield — 0→1 design):**
153
- - Designing a fresh design system from atoms upward
154
- - Building a component hierarchy that will scale across many surfaces
155
- - Planning a system where pattern composition is a first-class discipline from day one
156
- - Designing a token + component + template + page taxonomy for a new product
157
-
158
- **Anti-patterns (when NOT to channel):**
159
- - Single-screen prototypes — atomic design is for systems
160
- - Marketing one-offs or campaign pages
161
-
162
- ---
163
-
164
- ### Dieter Rams (`dieter-rams`)
165
-
166
- - **Domain:** visual | **Depth:** full
167
-
168
- **Solves (brownfield — existing UI):**
169
- - Existing design has accumulated features and visual elements that don't earn their place
170
- - Each component does too much; honest functional expression would simplify
171
- - Aesthetic feels dated because of decoration, not because of underlying function
172
-
173
- **Solves (greenfield — 0→1 design):**
174
- - Designing a product where less-but-better is the explicit value
175
- - Building a tool whose visual identity should follow function, not lead it
176
- - Planning a long-lived product where ruthless reduction will be a recurring discipline
177
- - Designing a fresh product where every element must justify its presence from day one
178
-
179
- **Anti-patterns (when NOT to channel):**
180
- - Maximalist or expressive brand surfaces
181
- - Storytelling or narrative-driven surfaces
182
-
183
- ---
184
-
185
- ### Don Norman (`don-norman`)
186
-
187
- - **Domain:** ux | **Depth:** full
188
-
189
- **Solves (brownfield — existing UI):**
190
- - Users keep clicking the wrong thing or missing a button; affordances are unclear
191
- - Interface error messages punish the user rather than help them recover
192
- - Mental model and system model have diverged — users predict wrong outcomes
193
- - Mode visibility is missing; users don't know what state they're in
194
-
195
- **Solves (greenfield — 0→1 design):**
196
- - Designing a new control surface where affordance language must be self-evident from first encounter
197
- - Building a tool whose error model should help users recover, not punish
198
- - Planning a product where mappings between control and effect must feel natural from day one
199
- - Designing a system where visibility of state is a first-class concern
200
-
201
- **Anti-patterns (when NOT to channel):**
202
- - Designs whose primary value is delight or emotional resonance — Norman optimizes for clarity, not joy
203
- - Highly abstract or conceptual UIs where direct manipulation isn't the model
204
-
205
- ---
206
-
207
- ### Edward Tufte (`edward-tufte`)
208
-
209
- - **Domain:** visual | **Depth:** full
210
-
211
- **Solves (brownfield — existing UI):**
212
- - UI shows many numbers or trends in compressed space and legibility is breaking down
213
- - Dashboard has accumulated decoration and chart-junk; signal is buried
214
- - Multi-dimensional data displays are letting one dimension drown out others
215
- - Users decode the chart before understanding the message
216
-
217
- **Solves (greenfield — 0→1 design):**
218
- - Planning a dashboard, financial report, or analytics UI that must show dense data clearly from day one
219
- - Designing a surface where multiple quantitative dimensions need to coexist without one drowning the others
220
- - Building a tool for domain experts who read data faster than narrative
221
- - Need small multiples or sparklines as the main display element in the new design
222
-
223
- **Anti-patterns (when NOT to channel):**
224
- - Sparse, narrative-heavy surfaces — Tufte over-compresses
225
- - Consumer-emotional or marketing surfaces — Tufte reads as cold
226
- - First-time onboarding flows — density assumes domain familiarity
227
-
228
- ---
229
-
230
- ### Ellen Lupton (`ellen-lupton`)
231
-
232
- - **Domain:** visual | **Depth:** full
233
-
234
- **Solves (brownfield — existing UI):**
235
- - Page reads as a wall of undifferentiated text
236
- - Visual hierarchy is broken — every element claims equal importance
237
- - Typography is inconsistent across pages or feels chosen by accident
238
- - Reading rhythm is broken by mis-set line height, measure, or contrast
239
-
240
- **Solves (greenfield — 0→1 design):**
241
- - Designing a content-heavy product where reading rhythm is core to the experience
242
- - Setting type scale and hierarchy from scratch for a new brand or system
243
- - Planning a long-form or editorial surface where typeface choice carries voice
244
- - Building a fresh product where brand voice should come through in the typeface from day one
245
-
246
- **Anti-patterns (when NOT to channel):**
247
- - Pure data-density surfaces — Tufte is a better fit than Lupton
248
- - Engineering-internal tools where readability beats voice
249
-
250
- ---
251
-
252
- ### Erika Hall (`erika-hall`)
253
-
254
- - **Domain:** ux | **Depth:** full
255
-
256
- **Solves (brownfield — existing UI):**
257
- - Team is shipping based on assumptions, not evidence about users
258
- - Research is happening but findings don't reach decisions
259
- - Discovery work is being skipped because of velocity pressure
260
-
261
- **Solves (greenfield — 0→1 design):**
262
- - Starting a new product and need contextual inquiry to ground the thesis
263
- - Designing discovery research before any UI is sketched
264
- - Building a research practice into the team's discipline from day one
265
- - Designing a product where 'we don't know what users actually do' is the first risk to retire
266
-
267
- **Anti-patterns (when NOT to channel):**
268
- - Late-stage refinement work where research is already done
269
- - Engineering-only surfaces where users aren't directly relevant
270
-
271
- ---
272
-
273
- ### Google Material Design (`google-material`)
274
-
275
- - **Domain:** visual | **Depth:** stub
276
-
277
- **Solves (brownfield — existing UI):**
278
- - Existing component library lacks systematic spacing, color, type tokens
279
- - Cross-platform consistency is breaking; surfaces look like different products
280
- - Theming and dynamic color aren't working across user preferences
281
-
282
- **Solves (greenfield — 0→1 design):**
283
- - Designing a multi-surface system where systematic tokens and density tiers are needed from the start
284
- - Building cross-platform consistency without bespoke per-platform polish
285
- - Planning a product where theming + accessibility are core, not retrofitted
286
- - Designing component density tiers (compact / standard / comfortable) into the system from day one
287
-
288
- **Anti-patterns (when NOT to channel):**
289
- - Highly distinctive brand surfaces — Material genericizes
290
- - Premium or differentiated visual identity work
291
-
292
- ---
293
-
294
- ### Jakob Nielsen (`jakob-nielsen`)
295
-
296
- - **Domain:** ux | **Depth:** stub
297
-
298
- **Solves (brownfield — existing UI):**
299
- - Existing UI needs structured expert evaluation against usability heuristics
300
- - Usability violations are happening but team has no checklist to catch them
301
- - Standardization across the product matters but discipline is loose
302
-
303
- **Solves (greenfield — 0→1 design):**
304
- - Building a new product and want heuristic review baked into the design discipline
305
- - Designing checkpoints where heuristic evaluation can fire before user testing
306
- - Planning a product where standardization across surfaces will be a measurable goal
307
- - Setting up an evaluation framework for a product about to launch
308
-
309
- **Anti-patterns (when NOT to channel):**
310
- - Generative or first-pass design — Nielsen evaluates, doesn't ideate
311
- - Brand or emotional surfaces where heuristics miss the point
312
-
313
- ---
314
-
315
- ### Jenifer Tidwell (`jenifer-tidwell`)
316
-
317
- - **Domain:** ux | **Depth:** full
318
-
319
- **Solves (brownfield — existing UI):**
320
- - Common interaction in current UI is being reinvented when proven patterns exist
321
- - Designer is choosing novel solutions where well-known answers are better
322
- - Existing design lacks shared vocabulary for interaction choices across team
323
-
324
- **Solves (greenfield — 0→1 design):**
325
- - Composing a new app from proven interaction patterns instead of inventing each one
326
- - Need a vocabulary to communicate interaction choices to engineering on a fresh build
327
- - Building complex flows; want to compose from named patterns first, novel last
328
- - Designing a multi-flow product where interaction patterns must be consistent from day one
329
-
330
- **Anti-patterns (when NOT to channel):**
331
- - Bleeding-edge novel interactions — Tidwell catalogs proven patterns, not invents new ones
332
- - Pure visual or brand-driven surfaces
333
-
334
- ---
335
-
336
- ### Jesse James Garrett (`jesse-james-garrett`)
337
-
338
- - **Domain:** ux | **Depth:** full
339
-
340
- **Solves (brownfield — existing UI):**
341
- - Project mixes strategy, scope, structure, skeleton, and surface decisions in one conversation
342
- - Surface decisions are over-determining structural choices in the existing UI
343
- - Team can't agree on which decisions belong at which level
344
-
345
- **Solves (greenfield — 0→1 design):**
346
- - Starting a multi-surface product where the five planes should sequence design decisions
347
- - Building a UX strategy that decomposes work into orderable layers from day one
348
- - Planning a product where strategy precedes scope precedes structure precedes skeleton precedes surface
349
- - Designing a multi-month product where UX governance needs explicit decision-tier vocabulary
350
-
351
- **Anti-patterns (when NOT to channel):**
352
- - Tactical UI fixes where the five planes is overhead
353
- - Single-page or single-screen work
354
- - - **Strategy** — user needs + product objectives. What success means.
355
- - - **Scope** — functional specifications + content requirements. What
356
- - - **Structure** — interaction design + information architecture. How
357
- - - **Skeleton** — interface design, navigation design, information
358
- - - **Surface** — sensory design (visual, auditory). How it looks and
359
-
360
- ---
361
-
362
- ### Luke Wroblewski (`luke-wroblewski`)
363
-
364
- - **Domain:** ux | **Depth:** stub
365
-
366
- **Solves (brownfield — existing UI):**
367
- - Existing form has many fields and abandonment is high
368
- - Mobile experience is desktop-first squeezed into small screens
369
- - Input types, validation, and progressive disclosure aren't optimized for thumbs
370
-
371
- **Solves (greenfield — 0→1 design):**
372
- - Designing a mobile-first product where forms are core to the value
373
- - Planning input surfaces where progressive disclosure must be designed from the start
374
- - Building for mobile users where thumb-zone economy matters
375
- - Designing form flows where staged input (now / later / never-asked) is a first-class concern
376
-
377
- **Anti-patterns (when NOT to channel):**
378
- - Read-only data display — Wroblewski is for input
379
- - Desktop-power-tool surfaces where mobile isn't primary
380
-
381
- ---
382
-
383
- ### Peter Morville (`peter-morville`)
384
-
385
- - **Domain:** ux | **Depth:** full
386
-
387
- **Solves (brownfield — existing UI):**
388
- - Users can't find content that exists in the product
389
- - Information architecture has no consistent labeling or hierarchy
390
- - Search returns results but not the RIGHT results
391
- - Navigation grew organically and now no one knows the full structure
392
-
393
- **Solves (greenfield — 0→1 design):**
394
- - Designing a content-heavy product where findability will be core from day one
395
- - Planning the IA before screens for a multi-section app
396
- - Building search + browse surfaces where wayfinding is a first-class concern
397
- - Designing a product for an audience where findability matters more than discoverability
398
-
399
- **Anti-patterns (when NOT to channel):**
400
- - Single-screen tools or focused workflows — Morville is for multi-page IA
401
- - Brand or marketing surfaces where wayfinding isn't the job
402
-
403
- ---
404
-
405
- ### Sophia V. Prater (`sophia-prater`)
406
-
407
- - **Domain:** ux | **Depth:** full
408
-
409
- **Solves (brownfield — existing UI):**
410
- - Existing multi-entity app where users mentally model objects but UI exposes screens or processes
411
- - Same entity appears in many flows but isn't unified as a concept
412
- - Navigation doesn't reflect the domain's noun structure
413
-
414
- **Solves (greenfield — 0→1 design):**
415
- - Designing a CRUD-heavy or domain-rich product where entity relationships should drive the UI
416
- - Planning IA from the domain model first, not from process flows
417
- - Building an app where users will mentally manipulate objects and the UI should match from day one
418
- - Designing a multi-entity product where consistent entity expression matters across surfaces
419
-
420
- **Anti-patterns (when NOT to channel):**
421
- - Process-driven workflows where actions matter more than objects
422
- - Single-entity tools or marketing surfaces
423
-
424
- ---
425
-
426
- ### Steve Krug (`steve-krug`)
427
-
428
- - **Domain:** ux | **Depth:** stub
429
-
430
- **Solves (brownfield — existing UI):**
431
- - Existing interface forces users to read or think more than the task warrants
432
- - User testing keeps surfacing the same friction points but team can't see them
433
- - Self-evident affordances are missing in the current UI; users hesitate before every click
434
- - Navigation, labels, and structure aren't immediately obvious
435
-
436
- **Solves (greenfield — 0→1 design):**
437
- - Designing a consumer or low-engagement product where 'don't make me think' is the bar
438
- - Building a new public-facing surface where usability is the core differentiator
439
- - Planning a tool that needs to be self-evident from first encounter
440
- - Designing a product whose audience will not invest effort to learn the interface
441
-
442
- **Anti-patterns (when NOT to channel):**
443
- - Power-user tools where complexity is the value
444
- - Domain-expert surfaces where 'don't make me think' undersells the user
445
-
446
- ---
447
-
448
- ## How `/luminary recommend` consumes this
449
-
450
- The agent reads this aggregate as one of its signal sources when ranking
451
- luminaries against an operator's plain-English problem statement. The
452
- modality of the operator's input (brownfield refactor vs greenfield
453
- concept) determines which array is matched:
454
-
455
- - Operator input mentions "existing UI", "current product", "today's
456
- app" → match against `solves_problems_brownfield` arrays
457
- - Operator input mentions "designing", "planning", "building",
458
- "0→1", "from scratch" → match against `solves_problems_greenfield`
459
- arrays
460
- - Ambiguous input → match against both, weighted by signal strength
461
-
462
- `anti_patterns` always subtract from a luminary's score when the
463
- operator's input matches an entry — regardless of modality.
464
-
465
- ## Schema (per luminary file)
466
-
467
- ```yaml
468
- solves_problems_brownfield:
469
- - "Plain-English symptom statement (~80 chars)"
470
- - "..."
471
- solves_problems_greenfield:
472
- - "Plain-English opportunity statement (~80 chars)"
473
- - "..."
474
- anti_patterns:
475
- - "When NOT to channel (Welch INSTEAD-block)"
476
- - "..."
477
- ```
478
-
479
- All three fields are optional during backfill (LR6 onward). A luminary
480
- with no problem-pattern frontmatter doesn't appear in this aggregate
481
- but remains in the catalog for `/luminary` browsing.
@@ -1,50 +0,0 @@
1
- ---
2
- tier: lite
3
- description: The ActiveRecord sibling of .claude/rules/schema-management.md.
4
- ---
5
-
6
- # ActiveRecord (Rails) — migration discipline
7
-
8
- The ActiveRecord sibling of `.claude/rules/schema-management.md`. Loads when adopter's `tech_stack.orm` is `active-record`.
9
-
10
- ## Non-negotiable rule
11
-
12
- **NEVER edit `db/schema.rb` (or `db/structure.sql`) by hand.** Those files are derived artifacts — Rails regenerates them after every migration. Hand-editing them ships drift the moment another developer runs `rails db:migrate`.
13
-
14
- ## Workflow
15
-
16
- 1. Generate the migration: `rails generate migration DescriptiveName field:type field:type`
17
- 2. Review the generated file in `db/migrate/` — Rails generators are good but not infallible; manual edits often required for:
18
- - Foreign keys + cascading deletes
19
- - Add-index on large tables (`algorithm: :concurrently` for Postgres)
20
- - Compound conditions on `add_column` (`null: false, default: ...`)
21
- 3. Apply locally: `rails db:migrate`
22
- 4. Commit the migration file AND the regenerated `db/schema.rb` (or `db/structure.sql`)
23
- 5. On deploy, CI runs `rails db:migrate`
24
-
25
- ## After DB reset
26
-
27
- 1. `rails db:setup` (runs migrations + seeds)
28
- 2. Or `rails db:create db:migrate db:seed`
29
-
30
- ## After merging a branch with schema changes
31
-
32
- 1. `rails db:migrate` — apply pending migrations
33
- 2. Restart the Rails server — ActiveRecord caches schema metadata at boot
34
- 3. Run the test suite (`bundle exec rspec` or `rails test`) — schema-coupled tests catch missed migrations
35
-
36
- ## Drift check
37
-
38
- `rails db:migrate:status` lists every migration + its applied/pending state. Pending migrations = drift.
39
-
40
- ## Common pitfalls
41
-
42
- - **`change_column` is one-way unless you write a reversible block** — manual `up` + `down` methods needed for non-reversible changes
43
- - **Large-table migrations block writes** — use `strong_migrations` gem to lint; index changes especially need `add_index :table, :col, algorithm: :concurrently` on Postgres
44
- - **`rake db:reset` in dev hides production migrations** — only re-runs from schema.rb; doesn't re-test migration files end-to-end
45
-
46
- ## Sources
47
-
48
- - Rails Guides — Active Record Migrations (https://guides.rubyonrails.org/active_record_migrations.html)
49
- - strong_migrations gem (https://github.com/ankane/strong_migrations)
50
- - Rails discipline ported from Prisma shape; ActiveRecord's auto-regenerated schema.rb is the Ruby-ecosystem equivalent of Prisma client regeneration.
@@ -1,43 +0,0 @@
1
- ---
2
- tier: lite
3
- description: The Alembic sibling of .claude/rules/schema-management.md for adopters using Alembic without SQLAlchemy ORM models (raw SQL migrations against a Python codebase).
4
- ---
5
-
6
- # Alembic (standalone) — migration discipline
7
-
8
- The Alembic sibling of `.claude/rules/schema-management.md` for adopters using Alembic **without** SQLAlchemy ORM models (raw SQL migrations against a Python codebase). Loads when adopter's `tech_stack.orm` is `alembic`.
9
-
10
- For Alembic + SQLAlchemy autogen, see `sqlalchemy.md`.
11
-
12
- ## Non-negotiable rule
13
-
14
- **NEVER apply DDL outside an Alembic revision.** Direct `psql` / `mysql` / `sqlite3` DDL in production bypasses the migration audit trail.
15
-
16
- ## Workflow
17
-
18
- 1. Author a migration: `alembic revision -m "descriptive_name"` (no `--autogenerate` — you write the SQL by hand)
19
- 2. Edit the generated file in `versions/` — populate `upgrade()` + `downgrade()` with `op.execute(text("..."))` or `op.create_table(...)` calls
20
- 3. Apply locally: `alembic upgrade head`
21
- 4. Test the downgrade path: `alembic downgrade -1`, then `alembic upgrade head`
22
- 5. Commit the migration file
23
- 6. On deploy, CI runs `alembic upgrade head`
24
-
25
- ## After merging a branch with schema changes
26
-
27
- 1. `alembic upgrade head` — apply pending migrations locally
28
- 2. Verify DB shape matches expectations (Alembic doesn't model anything; the schema lives in DDL)
29
-
30
- ## Drift check
31
-
32
- Alembic doesn't auto-detect drift in standalone mode. The session-start hook compares `alembic current` against the latest revision in `versions/`. If they diverge, prompt to upgrade.
33
-
34
- ## Common pitfalls
35
-
36
- - **Writing migrations that read application data** — migrations should be idempotent and avoid coupling to app-side queries; data backfills go in separate scripts
37
- - **Skipping downgrade implementation** — rollback path is mandatory for prod-grade work
38
- - **Out-of-order revisions** — when parallel branches both create revisions from the same parent, merge with `alembic merge`
39
-
40
- ## Sources
41
-
42
- - Alembic docs (https://alembic.sqlalchemy.org/en/latest/)
43
- - Standalone-Alembic discipline adapted from Prisma migration shape; the universal commitments are the same.
@@ -1,50 +0,0 @@
1
- ---
2
- tier: lite
3
- description: The GORM (Go ORM) sibling of .claude/rules/schema-management.md.
4
- ---
5
-
6
- # GORM — migration discipline
7
-
8
- The GORM (Go ORM) sibling of `.claude/rules/schema-management.md`. Loads when adopter's `tech_stack.orm` is `gorm`.
9
-
10
- ## Non-negotiable rule
11
-
12
- **NEVER use `db.AutoMigrate()` in production.** AutoMigrate is a development convenience — in production, it silently makes additive schema changes without an audit trail and refuses to drop columns or constraints, leaving stale columns forever.
13
-
14
- Use an explicit migration tool — `golang-migrate`, `goose`, `atlas`, or `bun`'s migration layer.
15
-
16
- ## Workflow (with `golang-migrate`)
17
-
18
- 1. Edit the GORM model in `models/` (struct tags carry the schema intent)
19
- 2. Author the migration: `migrate create -ext sql -dir db/migrations -seq descriptive_name`
20
- 3. Populate `up.sql` and `down.sql` by hand — GORM doesn't generate SQL for you
21
- 4. Apply locally: `migrate -path db/migrations -database "$DB_URL" up`
22
- 5. Commit both the model change AND the migration files
23
- 6. On deploy, CI runs `migrate -path db/migrations -database "$PROD_DB_URL" up`
24
-
25
- ## After DB reset
26
-
27
- 1. Re-run all pending migrations: `migrate up`
28
- 2. Run seed scripts if any
29
-
30
- ## After merging a branch with schema changes
31
-
32
- 1. `migrate up` — apply pending migrations
33
- 2. Restart the Go binary — GORM model definitions are compiled in; rebuild + restart
34
- 3. Run integration tests against the new schema
35
-
36
- ## Drift check
37
-
38
- `migrate version` reports the currently applied version. Compare against the highest numeric revision in `db/migrations/` directory. If they diverge, run `migrate up` before further work.
39
-
40
- ## Common pitfalls
41
-
42
- - **GORM struct tags drifting from migration SQL** — GORM does not enforce them; the migration SQL is source of truth for the DB shape
43
- - **Postgres enum changes** — Postgres enums are quirky; `golang-migrate` requires custom SQL for ALTER TYPE ... ADD VALUE
44
- - **Forgetting `down.sql`** — rollback path is mandatory; an empty down.sql is a footgun
45
-
46
- ## Sources
47
-
48
- - golang-migrate docs (https://github.com/golang-migrate/migrate)
49
- - GORM docs (https://gorm.io)
50
- - Go-ecosystem discipline ported from Prisma shape.
@@ -1,53 +0,0 @@
1
- ---
2
- tier: lite
3
- description: The Prisma sibling of .claude/rules/schema-management.md.
4
- ---
5
-
6
- # Prisma — migration discipline
7
-
8
- The Prisma sibling of `.claude/rules/schema-management.md`. Loads when adopter's `tech_stack.orm` is `prisma`. Preserves the operator's existing Prisma discipline verbatim.
9
-
10
- ## Non-negotiable rule
11
-
12
- **NEVER use `prisma db push`. Always use `prisma migrate dev`.**
13
-
14
- `db push` applies changes without creating migration files — this causes schema drift where prod and local databases diverge silently. When the local DB is reset, unmigrated changes are lost, breaking functionality.
15
-
16
- ## Workflow
17
-
18
- 1. Edit `prisma/schema.prisma`
19
- 2. Run `npx prisma migrate dev --name descriptive_name`
20
- 3. This creates a migration file AND applies it locally
21
- 4. Commit the migration file with the schema change
22
- 5. On deploy, CI runs `npx prisma migrate deploy`
23
-
24
- ## After DB reset
25
-
26
- - `npx prisma generate` — regenerate client
27
- - Run any seed scripts
28
- - Test auth by signing in
29
-
30
- ## After merging a branch with schema changes (MUST — not optional)
31
-
32
- 1. `npx prisma generate` — regenerate client from new schema
33
- 2. Restart dev server — cached Prisma client won't pick up new models
34
- 3. If DB was reset: run seed scripts for new entities
35
- 4. Verify: new model is accessible via `prisma.[model].findMany()`
36
- 5. If the merge includes new entities: seed test data (factories, not hardcoded — see `standards/data-management.md`)
37
-
38
- This is a **MUST gate**. Skipping `prisma generate` after a schema merge causes runtime crashes: `Cannot read properties of undefined (reading 'findMany')`. The Prisma client literally does not know the model exists.
39
-
40
- ## Drift check
41
-
42
- The session-start hook checks for schema drift. If detected, create the missing migration before writing code.
43
-
44
- ```bash
45
- npx prisma migrate status
46
- ```
47
-
48
- A non-zero exit indicates pending migrations that have not been applied locally — drift signal.
49
-
50
- ## Sources
51
-
52
- - This sibling is verbatim of the prior `.claude/rules/schema-management.md` content. Path A split (bassclef#1133 WU-5) preserves operator's discipline for the Prisma case.
53
- - POA (sole Prisma consumer in the sunj-labs portfolio as of 2026-06-18) reads this sibling unchanged.