@thebassclef/lite 0.0.1 → 0.1.2

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 (289) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1612 -0
  4. package/dist/cli.js +1589 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +2701 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  21. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +492 -0
  22. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  23. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  24. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  25. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  26. package/substrate/.claude/hooks/pre-commit-gate.sh +451 -0
  27. package/substrate/.claude/hooks/session-end.sh +433 -0
  28. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  29. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  30. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  31. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  32. package/substrate/.claude/hooks/state-validate.sh +271 -0
  33. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  34. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  35. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  36. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  37. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +463 -0
  38. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  39. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  40. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  41. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  42. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  43. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  44. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  45. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  46. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  47. package/substrate/.claude/luminaries/don-norman.md +173 -0
  48. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  49. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  50. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  51. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  52. package/substrate/.claude/luminaries/glenford-myers.md +230 -0
  53. package/substrate/.claude/luminaries/hunt-thomas.md +115 -0
  54. package/substrate/.claude/luminaries/hyrum-wright.md +94 -0
  55. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  56. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  57. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  58. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  59. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  60. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  61. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  62. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  63. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  64. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  65. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  66. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  67. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  68. package/substrate/.claude/luminaries/tony-hoare.md +170 -0
  69. package/substrate/.claude/luminaries/vaughn-vernon.md +50 -0
  70. package/substrate/.claude/luminaries/w-edwards-deming.md +158 -0
  71. package/substrate/.claude/rules/accessor-library-discipline.md +138 -0
  72. package/substrate/.claude/rules/adr-discipline.md +120 -0
  73. package/substrate/.claude/rules/api-conventions.md +125 -0
  74. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  75. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  76. package/substrate/.claude/rules/blocked-items.md +146 -0
  77. package/substrate/.claude/rules/bootstrap-pair-discipline.md +141 -0
  78. package/substrate/.claude/rules/branching.md +28 -0
  79. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +129 -0
  80. package/substrate/.claude/rules/commit-conventions.md +22 -0
  81. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +188 -0
  82. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +188 -0
  83. package/substrate/.claude/rules/context-engineering.md +202 -0
  84. package/substrate/.claude/rules/context-management.md +85 -0
  85. package/substrate/.claude/rules/defensive-bash.md +68 -0
  86. package/substrate/.claude/rules/deferred-actions.md +233 -0
  87. package/substrate/.claude/rules/destructive-operations.md +69 -0
  88. package/substrate/.claude/rules/diagnosis.md +38 -0
  89. package/substrate/.claude/rules/github-issue-flash-tweet.md +156 -0
  90. package/substrate/.claude/rules/guardrails.md +73 -0
  91. package/substrate/.claude/rules/hook-wire-on-author.md +103 -0
  92. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  93. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +54 -0
  94. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  95. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +89 -0
  96. package/substrate/.claude/rules/loop-discipline.md +81 -0
  97. package/substrate/.claude/rules/manual-prod-approval.md +100 -0
  98. package/substrate/.claude/rules/marker-enrichment-discipline.md +99 -0
  99. package/substrate/.claude/rules/mobile-ephemeral-session.md +109 -0
  100. package/substrate/.claude/rules/new-dependency-check.md +51 -0
  101. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  102. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  103. package/substrate/.claude/rules/option-label-discipline.md +108 -0
  104. package/substrate/.claude/rules/pattern-annotation.md +100 -0
  105. package/substrate/.claude/rules/plain-english-discipline.md +156 -0
  106. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +211 -0
  107. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  108. package/substrate/.claude/rules/pr-strategy.md +167 -0
  109. package/substrate/.claude/rules/pr-title-shape.md +161 -0
  110. package/substrate/.claude/rules/prototype-workflow.md +65 -0
  111. package/substrate/.claude/rules/reserved-skill-names.md +123 -0
  112. package/substrate/.claude/rules/schema-management.md +49 -0
  113. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  114. package/substrate/.claude/rules/security.md +37 -0
  115. package/substrate/.claude/rules/session-artifacts.md +236 -0
  116. package/substrate/.claude/rules/skill-composition-declarations.md +124 -0
  117. package/substrate/.claude/rules/skill-description-clarity.md +247 -0
  118. package/substrate/.claude/rules/skill-procedure-step-list.md +137 -0
  119. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  120. package/substrate/.claude/rules/stuck-signal-diagnostic.md +140 -0
  121. package/substrate/.claude/rules/substrate-config-schema.md +98 -0
  122. package/substrate/.claude/rules/test-list-discipline.md +175 -0
  123. package/substrate/.claude/rules/test-sufficiency.md +210 -0
  124. package/substrate/.claude/rules/testing-tier-config.md +145 -0
  125. package/substrate/.claude/rules/testing.md +38 -0
  126. package/substrate/.claude/rules/turn-estimate-grounding.md +134 -0
  127. package/substrate/.claude/rules/visual-hierarchy.md +437 -0
  128. package/substrate/.claude/rules/we-dont-break-adopters.md +126 -0
  129. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  130. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  131. package/substrate/.claude/rules/wu-sequencing-compounds.md +145 -0
  132. package/substrate/.claude/skills/build/SKILL.md +640 -0
  133. package/substrate/.claude/skills/chronicle/SKILL.md +55 -0
  134. package/substrate/.claude/skills/clean-artifacts/SKILL.md +249 -0
  135. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  136. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  137. package/substrate/.claude/skills/feynman/SKILL.md +90 -0
  138. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  139. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  140. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  141. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  142. package/substrate/.claude/skills/journal/SKILL.md +209 -0
  143. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  144. package/substrate/.claude/skills/launch/SKILL.md +915 -0
  145. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  146. package/substrate/.claude/skills/longrun/SKILL.md +463 -0
  147. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  148. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  149. package/substrate/.claude/skills/onboard-repo/SKILL.md +1624 -0
  150. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  151. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  152. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  153. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  154. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  155. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  156. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  157. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  158. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  159. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  160. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  161. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  162. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  163. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  164. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  165. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  166. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  167. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  168. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  169. package/substrate/.claude/skills/visual-review/SKILL.md +503 -0
  170. package/substrate/.claude/skills/whats-the-plan/SKILL.md +202 -0
  171. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  172. package/substrate/AGENTS.md +79 -0
  173. package/substrate/CLAUDE-lite.md +85 -0
  174. package/substrate/CODE_OF_CONDUCT.md +28 -0
  175. package/substrate/CONTRIBUTING.md +177 -0
  176. package/substrate/README.md +173 -0
  177. package/substrate/SECURITY.md +19 -0
  178. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  179. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  180. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  181. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  182. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  183. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  184. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  185. package/substrate/lib/code-comment-discipline.sh +144 -0
  186. package/substrate/lib/composer-preflight.sh +459 -0
  187. package/substrate/lib/hook-inject.sh +255 -0
  188. package/substrate/lib/luminary-pick.sh +96 -0
  189. package/substrate/lib/output-discipline.sh +143 -0
  190. package/substrate/lib/prose-scan-boundary.sh +171 -0
  191. package/substrate/lib/rewrite-check.sh +214 -0
  192. package/substrate/lib/state.sh +1372 -0
  193. package/substrate/lib/telemetry.sh +205 -0
  194. package/substrate/lib/tier-check.sh +187 -0
  195. package/substrate/lib/tier-dependency-audit.sh +1088 -0
  196. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  197. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  198. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  199. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  200. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  201. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  202. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  203. package/substrate/scripts/generate-lite-manifest.sh +505 -0
  204. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  205. package/substrate/scripts/intent-drift-check.sh +456 -0
  206. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  207. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  208. package/substrate/standards/adr-template.md +86 -0
  209. package/substrate/standards/api-conventions/nextjs.md +84 -0
  210. package/substrate/standards/artifact-composition.md +209 -0
  211. package/substrate/standards/bash-hook-safety.md +246 -0
  212. package/substrate/standards/bassclef-configs-schema.md +232 -0
  213. package/substrate/standards/bassclef-evolution.md +143 -0
  214. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  215. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  216. package/substrate/standards/bassclef-source-config.md +228 -0
  217. package/substrate/standards/branch-stacking.md +408 -0
  218. package/substrate/standards/code-safety-principles.md +176 -0
  219. package/substrate/standards/composer-prerequisites.md +155 -0
  220. package/substrate/standards/deferred-actions-schema.md +204 -0
  221. package/substrate/standards/dependency-discipline/cargo.md +39 -0
  222. package/substrate/standards/dependency-discipline/gem.md +43 -0
  223. package/substrate/standards/dependency-discipline/go-mod.md +41 -0
  224. package/substrate/standards/dependency-discipline/npm.md +42 -0
  225. package/substrate/standards/dependency-discipline/pip.md +42 -0
  226. package/substrate/standards/deployment-topology/ec2-tailscale.md +225 -0
  227. package/substrate/standards/deployment-topology.md +69 -0
  228. package/substrate/standards/docs-sync-allowlist.md +76 -0
  229. package/substrate/standards/domain-and-dns.md +145 -0
  230. package/substrate/standards/frontend-stack.md +67 -0
  231. package/substrate/standards/frontmatter-schema.md +154 -0
  232. package/substrate/standards/graceful-exit.md +227 -0
  233. package/substrate/standards/hook-idempotency.md +102 -0
  234. package/substrate/standards/hook-injection-discipline.md +202 -0
  235. package/substrate/standards/hook-install-class.md +215 -0
  236. package/substrate/standards/input-handler-interface.md +152 -0
  237. package/substrate/standards/lite-manifest-schema-changes.md +135 -0
  238. package/substrate/standards/luminary-matching.md +105 -0
  239. package/substrate/standards/luminary-problem-patterns.md +481 -0
  240. package/substrate/standards/migration-discipline/active-record.md +50 -0
  241. package/substrate/standards/migration-discipline/alembic.md +43 -0
  242. package/substrate/standards/migration-discipline/gorm.md +50 -0
  243. package/substrate/standards/migration-discipline/prisma.md +53 -0
  244. package/substrate/standards/migration-discipline/sqlalchemy.md +51 -0
  245. package/substrate/standards/mobile-ephemeral-session.md +167 -0
  246. package/substrate/standards/model-routing-discipline.md +160 -0
  247. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  248. package/substrate/standards/opener-discipline.md +96 -0
  249. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  250. package/substrate/standards/persona-schema.md +229 -0
  251. package/substrate/standards/pluggable-luminaries.md +323 -0
  252. package/substrate/standards/pr-body-discipline.md +115 -0
  253. package/substrate/standards/preview-state-schema.md +189 -0
  254. package/substrate/standards/project-directory-layout.md +276 -0
  255. package/substrate/standards/release-tagging.md +137 -0
  256. package/substrate/standards/reserved-skill-names.md +120 -0
  257. package/substrate/standards/scannable-multi-option-output.md +261 -0
  258. package/substrate/standards/sdlc-compliance.md +286 -0
  259. package/substrate/standards/sdlc-gates/typescript.md +57 -0
  260. package/substrate/standards/secrets-lifecycle.md +210 -0
  261. package/substrate/standards/security-scanner-adapter.md +145 -0
  262. package/substrate/standards/session-board.md +256 -0
  263. package/substrate/standards/skill-output-discipline.md +90 -0
  264. package/substrate/standards/state-spine-contract.md +255 -0
  265. package/substrate/standards/state-spine.md +511 -0
  266. package/substrate/standards/steering-hints/kiss-words.md +11 -0
  267. package/substrate/standards/substrate-config-schema.md +267 -0
  268. package/substrate/standards/tech-stack-config.md +109 -0
  269. package/substrate/standards/tier-dependency-analysis.md +167 -0
  270. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  271. package/substrate/standards/tier-tag-schema.md +155 -0
  272. package/substrate/standards/two-layer-config.md +99 -0
  273. package/substrate/standards/use-case-format.md +292 -0
  274. package/substrate/standards/user-story-invest.md +268 -0
  275. package/substrate/standards/velocity-and-appetite.md +229 -0
  276. package/substrate/standards/voice-input-pattern.md +119 -0
  277. package/substrate/standards/whereami-schema.md +301 -0
  278. package/substrate/standards/worktree-management.md +211 -0
  279. package/substrate/standards/writing-guide.md +213 -0
  280. package/substrate/templates/chronicle-template.md +75 -0
  281. package/substrate/templates/deferred-action-template.md +45 -0
  282. package/substrate/templates/memory-proposal-template.md +77 -0
  283. package/substrate/templates/persona-template.md +200 -0
  284. package/substrate/templates/pr-faq.md +45 -0
  285. package/substrate/templates/secret-rotation-template.md +162 -0
  286. package/substrate/templates/spec-template.md +131 -0
  287. package/substrate/templates/use-case-template.md +194 -0
  288. package/substrate/templates/user-story-template.md +107 -0
  289. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,112 @@
1
+ ---
2
+ tier: lite
3
+ name: interaction-design
4
+ description: "Turn IA plus task flows into interaction design \u2014 state diagrams, sequence diagrams, user flows. Final step in the UX translation chain before decompose."
5
+ problem: "Nav and entities are drawn but the flow between screens is not. Devs invent transitions."
6
+ value: "State diagrams and sequence diagrams that name every screen transition and API call."
7
+ inputs: [IA model plus task flows]
8
+ outputs: [State diagrams, Sequence diagrams, User flow overview]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ ---
12
+
13
+ # Interaction Design — State + Sequence + Flows
14
+
15
+ Translate IA and task flows into formal interaction specifications.
16
+ Final layer: JTBD → HTA → IA → **Interaction Design**.
17
+
18
+ ## When to Use
19
+
20
+ - After `/ia-model` — entity map and screen map exist
21
+ - Before building UI — need to specify states, transitions, edge cases
22
+ - When a flow feels "off" — formalize it to find the gap
23
+ - When handing off to implementation — engineers need state machines, not wireframes
24
+
25
+ ## Method 1: UML State Diagrams
26
+
27
+ **The most rigorous tool.** Each screen or component mode is a state;
28
+ user actions and system events are transitions.
29
+
30
+ Use when:
31
+ - Components with distinct modes (idle → expanded → editing)
32
+ - Pages with conditional rendering (loading → empty → populated → filtered)
33
+ - Async flows (idle → running → success/error)
34
+ - Auth states (anonymous → authenticating → authenticated → expired)
35
+
36
+ ### Edge case checklist
37
+ For every state diagram, ask:
38
+ - What happens if the user **goes back** (browser back button)?
39
+ - What happens if the user **refreshes** in this state?
40
+ - What happens if the **session expires** while in this state?
41
+ - What happens if **data changes** while the user is viewing it?
42
+ - What happens on a **slow connection** (loading states)?
43
+ - What happens on **error** (API fails, DB down)?
44
+
45
+ ## Method 2: UML Sequence Diagrams
46
+
47
+ **Show temporal interaction** between actors: User, UI, Backend, External APIs.
48
+
49
+ Use when:
50
+ - API call chains (auth flows, multi-step wizards)
51
+ - Async job flows (trigger → queue → worker → result)
52
+ - Data display (page load → server component → DB → render)
53
+
54
+ ## Method 3: User Flows
55
+
56
+ **Less formal, more communicative.** Good for stakeholder alignment.
57
+ Flowcharts showing decision points and paths through the UI.
58
+
59
+ ## Method 4: Service Blueprints
60
+
61
+ **Extend user flows to include backstage processes.**
62
+
63
+ ```
64
+ FRONTSTAGE (user sees): Browse → Filter → Detail → Act
65
+ ↕ ↕ ↕
66
+ BACKSTAGE (system does): Score → Index → Enrich → Notify
67
+ ↕ ↕
68
+ SUPPORT PROCESSES: Ingest → Classify → Deduplicate
69
+ ```
70
+
71
+ ## Output Format
72
+
73
+ For each interaction flow:
74
+
75
+ ```markdown
76
+ ## Flow: [name]
77
+
78
+ ### State Diagram
79
+ [Mermaid stateDiagram-v2]
80
+
81
+ ### Sequence Diagram (if async/multi-actor)
82
+ [Mermaid sequenceDiagram]
83
+
84
+ ### Edge Cases
85
+ - Back button: [behavior]
86
+ - Refresh: [behavior]
87
+ - Session expiry: [behavior]
88
+ - Error: [behavior]
89
+ - Slow connection: [behavior]
90
+
91
+ ### Traceability
92
+ | State/Transition | HTA Task | JTBD |
93
+ |-----------------|----------|------|
94
+ | ... | ... | ... |
95
+ ```
96
+
97
+ ## The Anchoring Standard
98
+
99
+ The full stack: **JTBD → HTA → UML State Diagrams → UML Sequence Diagrams**,
100
+ with IA falling out of entity modeling in between.
101
+
102
+ ## References
103
+
104
+ - Alan Cooper, *About Face* — Goal-Directed Design
105
+ - Craig Larman, *Applying UML and Patterns*
106
+ - Don Norman, *The Design of Everyday Things*
107
+ - Jenifer Tidwell, *Designing Interfaces*
108
+ - Jim Kalbach, *The Jobs to Be Done Playbook*
109
+
110
+ ## Output discipline
111
+
112
+ Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.
@@ -0,0 +1,180 @@
1
+ ---
2
+ tier: lite
3
+ name: interpret-input
4
+ description: "Turn any input into a schema-valid InputArtifact. Modes: text, URL, image, repo, transcript, napkin, mixed. text + repo ship today. Others return valid stubs. First step of the cameo pipeline."
5
+ problem: "Different sessions start with different input shapes \u2014 text or URL or image or repo or transcript."
6
+ value: "One schema-validated artifact from any input. Downstream skills read one shape not seven."
7
+ inputs: [Any input — text or URL or image or repo ref or transcript]
8
+ outputs: [A schema-validated InputArtifact with kind and content]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ modes: [text, url, image, repo, transcript, napkin, mixed]
12
+ ---
13
+
14
+ # /interpret-input — Input Handler Skill
15
+
16
+ First-step skill of the cameo pipeline. It takes operator input (text from phone, URLs, screenshots, repos) and returns schema-valid `InputArtifact` JSON. Downstream skills read it via the typed accessor library.
17
+
18
+ This is the bassclef-side interface for the cameo fanout pipeline. Every input type maps to the same downstream payload.
19
+
20
+ ## When to invoke
21
+
22
+ - Composer chain — `/stage <tier> "<input>"` calls this first. Operators rarely run it directly.
23
+ - Manual fixture — `/interpret-input "<text>" --persist --slug=<custom>` saves a reference InputArtifact for tests.
24
+ - Spot-check — see what the extractor returns for a given input before running the full chain.
25
+
26
+ ## What this skill is NOT
27
+
28
+ <!-- FKGL-EXEMPT: technical reference table -->
29
+ | Skill | Altitude | Output |
30
+ |-------|----------|--------|
31
+ | `/interpret-input` | **Input normalization** | Schema-validated InputArtifact JSON |
32
+ | `/objectory-decompose` | OOA/D extraction | BCE matrix + actor list (consumes InputArtifact) |
33
+ | `/stage` | Pipeline composer | End-to-end chain (dispatches /interpret-input) |
34
+ | `/state get reference input-artifact <slug>` | Inspection | Reads existing InputArtifact via accessor |
35
+ <!-- /FKGL-EXEMPT -->
36
+
37
+ ## Procedure
38
+
39
+ The skill dispatches `scripts/interpret-input.sh <source> [args]`. It writes JSON to stdout, or persists to `docs/input-artifacts/<slug>.json` with `--persist`.
40
+
41
+ ### Usage
42
+
43
+ <!-- FKGL-EXEMPT: CLI reference -->
44
+ ```bash
45
+ bash scripts/interpret-input.sh "<source>" [--type=auto|text|url|image|repo|transcript|napkin|mixed] [--persist] [--slug=<slug>]
46
+ ```
47
+
48
+ | Flag | Default | Meaning |
49
+ |---|---|---|
50
+ | `--type=<type>` | `auto` | Override auto-detection |
51
+ | `--persist` | off | Write to `docs/input-artifacts/<slug>.json` (validated by state-validate.sh) |
52
+ | `--slug=<slug>` | auto-generated | Override slug; useful for memorable fixtures |
53
+ <!-- /FKGL-EXEMPT -->
54
+
55
+ ### Examples
56
+
57
+ <!-- FKGL-EXEMPT: CLI examples -->
58
+ ```bash
59
+ # Text from mobile paragraph (auto-detected as text):
60
+ bash scripts/interpret-input.sh "Dramatically simplify and delightfully surface deals..." --persist --slug=2026-04-27-your-app-rework
61
+
62
+ # URL (auto-detected):
63
+ bash scripts/interpret-input.sh "https://example.com/spec.html"
64
+
65
+ # Local repo (auto-detected via .git/ presence):
66
+ bash scripts/interpret-input.sh /path/to/local/repo
67
+
68
+ # GitHub URL as repo (must override; URL prefix wins auto-detect):
69
+ bash scripts/interpret-input.sh https://github.com/your-org/your-app --type=repo
70
+
71
+ # Stub mode for image (image extraction not yet implemented):
72
+ bash scripts/interpret-input.sh "/path/to/screenshot.png" --type=image
73
+
74
+ # Force transcript mode (auto-detection cannot tell):
75
+ bash scripts/interpret-input.sh "speaker-tagged-prose..." --type=transcript
76
+ ```
77
+ <!-- /FKGL-EXEMPT -->
78
+
79
+ ### Auto-detection
80
+
81
+ With `--type=auto` (default), the wrapper inspects the source:
82
+
83
+ <!-- FKGL-EXEMPT: regex reference list -->
84
+ - `^https?://` → `url` (use `--type=repo` for github.com URLs you want walked as a repo)
85
+ - `\.(png|jpg|jpeg|gif|webp|svg)$` → `image`
86
+ - `\.git$` → `repo`
87
+ - Local directory containing `.git/` → `repo` (walks the repo)
88
+ - else → `text`
89
+ <!-- /FKGL-EXEMPT -->
90
+
91
+ Override auto-detection when it guesses wrong. Common cases: a transcript that looks like prose. A napkin the wrapper reads as a regular image. A github URL you want walked as a repo, not fetched as a page.
92
+
93
+ ### Intent paragraph (optional)
94
+
95
+ If the source carries an intent, put it on the InputArtifact `intent` field. Plain text. Downstream composers (`/launch`, `/stage`, `/riff-prototypes`) call `/pick-luminaries` to match the intent against the luminary catalog. Adopters who load `/extract-intent` via `additionalDirectories` get richer signal. Bassclef core stays unaware of that override.
96
+
97
+ ### Output
98
+
99
+ Without `--persist` (default): pretty-printed JSON to stdout. Exit 0 on success.
100
+
101
+ With `--persist`: JSON written to `docs/input-artifacts/<slug>.json`. Stdout prints the path. The state-validate.sh PreToolUse hook checks the file against `standards/state-spine/schemas/input-artifact.schema.json` on write.
102
+
103
+ ## Mode status
104
+
105
+ Two modes work today. Five return schema-valid stubs pending future work.
106
+
107
+ <!-- FKGL-EXEMPT: mode reference table -->
108
+ | Mode | Status | Behavior |
109
+ |---|---|---|
110
+ | `text` | works | Identity — `extracted_text = source`; URL regex for `external_urls` |
111
+ | `repo` | works | Walks local git dir or clones URL; populates `entities_seen`, `actor_candidates`, `boundary_objects`, `readme_excerpt`, `title`. Falls back to a stub if the path cannot be resolved. |
112
+ | `url` | not yet | Target — fetch + readable text scrape |
113
+ | `image` | not yet | Target — vision-based UI extraction |
114
+ | `transcript` | not yet | Target — speaker-tagged actor mapping |
115
+ | `napkin` | not yet | Target — hand-drawn diagram extraction |
116
+ | `mixed` | not yet | Target — compose multiple extractors |
117
+ <!-- /FKGL-EXEMPT -->
118
+
119
+ Stubs are still schema-valid InputArtifacts. The current stub value is `extracted_text: "deferred to Phase C"` — a marker string a future release will update. Downstream consumers should not crash on it. They may surface a warning that BCE extraction will be empty.
120
+
121
+ ### Repo extractor heuristics
122
+
123
+ The repo extractor walks the directory. It populates `structural_hints`:
124
+
125
+ <!-- FKGL-EXEMPT: extractor field reference -->
126
+ - **`title`**: first H1 in README, or repo dirname
127
+ - **`readme_excerpt`**: first 30 lines of README.md (or .MD/.rst/.txt)
128
+ - **`entities_seen`**: Prisma model names + directory-pattern heuristic (a directory with ≥3 children whose name is plural-ish — e.g. `skills/` → `skill`, `discoveries/` → `discovery`, `canvases/` → `canvas`)
129
+ - **`actor_candidates`**: role/auth keywords grep across source (admin, owner, operator, viewer, editor, member, customer, etc.)
130
+ - **`boundary_objects`**: Next.js routes (`app/**/page.{ts,tsx}` and `pages/**/*.{ts,tsx}`) + API endpoints (`app/api/**`, `pages/api/**`)
131
+ <!-- /FKGL-EXEMPT -->
132
+
133
+ Output ships even when extraction is partial. Empty arrays mean no signal found. Downstream agents decide whether partial is enough.
134
+
135
+ ### Repo extractor: source resolution
136
+
137
+ <!-- FKGL-EXEMPT: source resolution table -->
138
+ | Source | Resolution |
139
+ |---|---|
140
+ | Local directory containing `.git/` | Use directly |
141
+ | `<path>` passed with `--type=repo` and exists | Use directly |
142
+ | `https://github.com/...` URL with `--type=repo` | `git clone --depth=1` to temp dir; cleanup after |
143
+ | Source cannot be resolved (path missing, clone failed) | Returns a stub artifact |
144
+ <!-- /FKGL-EXEMPT -->
145
+
146
+ ## Rules
147
+
148
+ - **Read-only by default** (no `--persist`); side effect is opt-in.
149
+ - **Schema validation is the gate** — `--persist` writes go through state-validate.sh. Invalid InputArtifacts BLOCK the write.
150
+ - **No raw input in downstream skills** — `/objectory-decompose` MUST receive a path to an InputArtifact, not raw text.
151
+ - **Slug uniqueness** — operator slugs override auto-generated. Do not overwrite existing fixtures. The wrapper errors if `--persist` would overwrite.
152
+ - **Stub artifacts are valid** — downstream must handle the marker string (`extracted_text == "deferred to Phase C"`) as empty extraction + a warning.
153
+
154
+ ## Skipping / Aborting
155
+
156
+ - Empty source: exit 2.
157
+ - Unknown type: exit 2 (not in the type enum).
158
+ - Schema validation failure on `--persist`: state-validate.sh BLOCKs. Surface to operator.
159
+ - Existing slug + `--persist` would overwrite: exit 4. Operator must pass `--slug=<new>`.
160
+
161
+ ## Relationship to other skills + standards
162
+
163
+ - `standards/input-handler-interface.md` — the interface contract this skill implements.
164
+ - `standards/state-spine/schemas/input-artifact.schema.json` — the schema this skill produces.
165
+ - `standards/state-spine.md` §"Storage format" — InputArtifact is a pure-JSON entity (`Shape C`).
166
+ - `.claude/skills/objectory-decompose/SKILL.md` — primary downstream consumer.
167
+ - `.claude/skills/preview/SKILL.md` — composer that calls this first.
168
+ - `.claude/skills/state/SKILL.md` — `/state get reference input-artifact <slug>` reads back via accessor.
169
+
170
+ ## Reserved-names check
171
+
172
+ `interpret-input` is NOT on `standards/reserved-skill-names.md` list.
173
+
174
+ ## Enforcement
175
+
176
+ Methodology-level. The skill registers via bassclef-sync symlink. state-validate.sh enforces schema on `--persist` writes.
177
+
178
+ ## Output discipline
179
+
180
+ Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.
@@ -0,0 +1,209 @@
1
+ ---
2
+ tier: lite
3
+ name: journal
4
+ description: "Draft a journal entry from this session's work \u2014 tuned to PE, search, and board audiences per the writing guide and brand questionnaire."
5
+ problem: "Session work fades from memory. Insight worth sharing with PE partners or eng leaders never gets written."
6
+ value: "Drafts a journal entry from this session's work. Tuned for PE, search, and board audiences."
7
+ inputs: [Optional audience filter — PE or search or board]
8
+ outputs: [Journal draft with voice per audience, Audience recommendations table]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ requires:
12
+ files: [standards/writing-guide.md]
13
+ network: true
14
+ ---
15
+
16
+ # /journal — Draft Journal Entries from Session Work
17
+
18
+ Draft 3 short-form journal entries from the current session's work,
19
+ calibrated to the operator's target audience and brand positioning.
20
+ Publishable to LinkedIn, Substack, an internal blog, or held as
21
+ archive.
22
+
23
+ ## Plain-English requirement (Phase II Trim the Fat — bassclef#559)
24
+
25
+ journal entries have personal/sensory/story-driven voice (per `feedback_writing_voice` memory) — voice trumps strict rule. The substrate-clarity-gate hook treats journal entry path as ADVISORY tier: it emits notices on bassclef-internal jargon, long sentences, and passive voice but never blocks.
26
+
27
+ INSTEAD of running /kiss words mechanically over draft prose: read the advisory notices and decide. Some passive voice in journal entries is fine ("the deploy was approved" reads naturally in narrative). Some long sentences carry rhythm. Pure mechanical substitution would flatten the voice.
28
+
29
+ What DOES still apply: drop bassclef-internal jargon (substrate, primitive, load-bearing, composer, tier-preset). LinkedIn audiences include investors, eng leaders, board operators — none have bassclef context. If the draft uses these words, run /kiss words on those specific terms (or rewrite by hand).
30
+
31
+ ## Before writing
32
+
33
+ 1. Read `standards/writing-guide.md` — the journal-entry style guide
34
+ 2. Read the brand questionnaire from memory (if it exists) for audience,
35
+ tone, topics, and positioning
36
+ 3. Read the current session's chronicle entry for raw material
37
+ 4. If called after `/journal mine`: use the selected moment as primary
38
+ source material. Read the full chronicle for that session.
39
+ 5. Check what angles have been covered (read existing drafts in
40
+ `docs/operator-private/journals/`). This is **informational context, not a
41
+ filter** — repeating themes across posts is intentional. It builds
42
+ recognition. But knowing what's been said helps pick fresh angles.
43
+
44
+ ## Two audiences — every notable moment gets two variants
45
+
46
+ Each notable decision, trade-off, or insight produces **two post variants**:
47
+
48
+ ### Variant A: CPTO → Board / PE / Executive Search
49
+
50
+ The operator speaking to people who evaluate operating talent and back
51
+ enterprise transformations.
52
+
53
+ - **Primary audience**: PE senior partners, executive search leaders,
54
+ board-level decision-makers
55
+ - **Tone**: Bezos/Jassy/Collison — calm, analytical, operator-grade
56
+ - **Depth**: Business outcome, capital efficiency, governance model.
57
+ One concrete technical detail as proof, no more.
58
+ - **Vocabulary**: "governance primitive" not "SKILL.md". "Coordination
59
+ framework" not "agent choreography." See writing guide.
60
+ - **Connects to**: EBITDA, capital efficiency, operating model, scale,
61
+ talent leverage, risk management
62
+
63
+ ### Variant B: CPTO → Senior Engineers / Technical Founders
64
+
65
+ The same operator speaking to people who will build or evaluate the
66
+ technical approach.
67
+
68
+ - **Primary audience**: CTOs, VP Engineering, staff+ engineers,
69
+ technical founders, eng managers
70
+ - **Tone**: Thoughtful practitioner — shows the work, not just the result
71
+ - **Depth**: Architecture decisions, trade-offs, what was tried and
72
+ rejected, specific patterns used. Technical enough that a senior
73
+ engineer learns something.
74
+ - **Vocabulary**: Use real terms — ADRs, choreography, hooks, substrate.
75
+ No need to abstract. This audience knows what a pre-commit hook is.
76
+ - **Connects to**: Engineering quality, developer experience, system
77
+ reliability, team velocity, technical debt management
78
+
79
+ ### How to pair them
80
+
81
+ The same moment becomes two posts:
82
+ - **Variant A**: "We killed three features before writing a line of code.
83
+ Here's why that's the highest-leverage thing a technical operator can do."
84
+ - **Variant B**: "Our Shaper agent runs Five Whys before any spec reaches
85
+ Construction. Here's the gate architecture and why it caught a scope
86
+ creep we would have shipped."
87
+
88
+ Both posts reference the same work. They land differently because they
89
+ answer different questions: A answers "is this person a credible operator?"
90
+ B answers "is this approach technically sound?"
91
+
92
+ ## Rules
93
+
94
+ - **Two variants per notable moment** — label as (A: Board) and (B: Engineering)
95
+ - **Name concepts, not implementations** in Variant A. Real terms in Variant B.
96
+ - **Connect to enterprise economics** in Variant A. Connect to engineering
97
+ quality in Variant B.
98
+ - **Bezos/Jassy/Collison tone** for Variant A. Thoughtful practitioner for B.
99
+ - **Structure**: Hook → Setup → Body (with → arrows) → Takeaway
100
+ - **Every post must stand completely on its own** — no "in my last post"
101
+ references, no series context, no callbacks. Each post works for someone
102
+ who has never read anything you've written before.
103
+ - **Repetition across posts is intentional** — the LinkedIn algorithm shows
104
+ each post to a subset of your network. Covering the same theme from
105
+ different angles builds recognition. Don't avoid a topic just because
106
+ you've posted about it before.
107
+ - **600-1200 words** per post
108
+ - **3-7 posts per session** — across both variants. A session with 2 notable
109
+ moments produces 4 posts (2A + 2B).
110
+
111
+ ## Audience recommendations table (MUST — include in every draft file)
112
+
113
+ Every draft file must start with a master audience recommendations table:
114
+
115
+ ```markdown
116
+ | # | Variant | Title | Primary audience | Hook strength | Publish priority |
117
+ |---|---------|-------|-----------------|--------------|-----------------|
118
+ | 1A | Board | [title] | PE partners — "[angle]" | Strong | 1 |
119
+ | 1B | Eng | [title] | Senior engineers — "[angle]" | Very strong | 2 |
120
+ | 2A | Board | [title] | Board/search — "[angle]" | Medium | Hold |
121
+ | 2B | Eng | [title] | CTOs — "[angle]" | Strong | 3 |
122
+ ```
123
+
124
+ For each post, specify:
125
+ - **Variant**: A (Board/PE) or B (Engineering)
126
+ - **Primary audience**: PE partners, board, exec search (A) or CTOs, eng leaders, technical founders (B)
127
+ - **Hook strength**: rate honestly. "Very strong" = contrarian or cautionary. "Strongest" = thought leadership.
128
+ - **Publish priority**: recommended sequence with rationale, or "Hold" for article/longer form
129
+ - **Pair notes**: which A/B posts cover the same moment — they should not publish same day
130
+
131
+ End the table with:
132
+ - **Recommended publish sequence** with rationale (alternate A/B to reach both audiences)
133
+ - **Hold for articles** — posts that work better as longer LinkedIn articles
134
+ - **Pairing notes** — which A and B posts are about the same moment
135
+
136
+ ## When a concept needs technical explanation
137
+
138
+ Flag it for the /feynman skill. In the draft, mark it:
139
+
140
+ ```
141
+ [FEYNMAN: concept name — for CTO sidebar]
142
+ ```
143
+
144
+ After drafting all 3 posts, run /feynman on each flagged concept.
145
+ Weave the Feynman explanation into the post or note it as a comment-thread follow-up.
146
+
147
+ ## Output
148
+
149
+ 1. Check for gaps: when was the last journal entry? Are there missed
150
+ sessions? **Backfill those FIRST, oldest to newest** (per session-artifacts rule).
151
+ 2. Write drafts to `docs/operator-private/journals/YYYY-MM-DD.md` with audience
152
+ recommendations table at the top
153
+ 3. Push drafts to the repo's journal-entry Google Doc — use `--dir` for
154
+ automatic chronological ordering (the script sorts by filename):
155
+ ```bash
156
+ # Batch push — script sorts YYYY-MM-DD filenames automatically
157
+ cd ~/src/your-org/your-app && npx tsx scripts/push-to-gdoc.ts \
158
+ --dir [drafts directory] \
159
+ --doc-id [journal_doc_id from substrate.config.md]
160
+
161
+ # Single file push (when only one new draft)
162
+ cd ~/src/your-org/your-app && npx tsx scripts/push-to-gdoc.ts \
163
+ --file [draft path] \
164
+ --doc-id [journal_doc_id from substrate.config.md]
165
+
166
+ # Fix out-of-order doc: clear and re-push everything sorted
167
+ cd ~/src/your-org/your-app && npx tsx scripts/push-to-gdoc.ts \
168
+ --dir [drafts directory] --replace \
169
+ --doc-id [journal_doc_id from substrate.config.md]
170
+ ```
171
+ Google Doc IDs (for reference — always read from substrate.config.md):
172
+ - Bassclef: `1f9nUSmwpFvcZhnfmYvhyNWZuElMwqfz3muWdIcwMUrA`
173
+ - POA: `1Gwhsh6aC6lq1jRQhGSpZ9BUNBlpdY3SNFpnIlMP97Zk`
174
+ 4. **Verify the push succeeded** — check the output for "Appended N chars"
175
+ 5. Note in the chronicle that posts were drafted and pushed
176
+ 6. If Google Doc push fails (no script, no auth): drafts stay local in
177
+ `docs/operator-private/journals/` AND a deferred-action entry is written so the
178
+ next capable session completes the push. Do not silently skip.
179
+
180
+ ### Deferring a failed push
181
+
182
+ When the current session cannot push to the configured `journal_doc_id`
183
+ (missing `gcloud-auth` / `google-docs-write` — typical in mobile,
184
+ cloud-web, or a desktop session without the SA key):
185
+
186
+ ```bash
187
+ TS=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
188
+ ID="${TS}-journal-gdoc-push"
189
+ cp templates/deferred-action-template.md \
190
+ "docs/deferred-actions/${ID}.md"
191
+ # Fill frontmatter:
192
+ # pending_action: push-journals-to-gdoc
193
+ # requires_capability: [gcloud-auth, google-docs-write]
194
+ # priority: medium
195
+ # origin_skill: /journal
196
+ # resolves_when: |
197
+ # Google Doc <journal_doc_id> reflects docs/operator-private/journals/ in chronological order
198
+ # Cross-ref the draft file(s) in the body.
199
+ git add "docs/deferred-actions/${ID}.md"
200
+ git commit -m "chore: defer journal gdoc-push (<draft-date>)"
201
+ ```
202
+
203
+ See `.claude/rules/deferred-actions.md` and
204
+ `standards/deferred-actions-schema.md`. Silent skip violates
205
+ `session-artifacts.md` ("silence is not deferral").
206
+
207
+ ## Output discipline
208
+
209
+ Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.