@thebassclef/lite 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +92 -6
- package/dist/cli.js +92 -6
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/agents/architect.md +70 -0
- package/dist/lite/.claude/agents/builder.md +114 -0
- package/dist/lite/.claude/agents/designer.md +156 -0
- package/dist/lite/.claude/agents/reviewer.md +88 -0
- package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
- package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
- package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
- package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
- package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
- package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
- package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
- package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
- package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
- package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
- package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
- package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
- package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
- package/dist/lite/.claude/luminaries/don-norman.md +173 -0
- package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
- package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
- package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
- package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
- package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
- package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
- package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
- package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
- package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
- package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
- package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
- package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
- package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
- package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
- package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
- package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
- package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
- package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
- package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
- package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
- package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
- package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
- package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
- package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
- package/dist/lite/.claude/rules/adr-discipline.md +96 -0
- package/dist/lite/.claude/rules/api-conventions.md +115 -0
- package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
- package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
- package/dist/lite/.claude/rules/blocked-items.md +139 -0
- package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
- package/dist/lite/.claude/rules/branching.md +28 -0
- package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
- package/dist/lite/.claude/rules/commit-conventions.md +22 -0
- package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
- package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
- package/dist/lite/.claude/rules/context-engineering.md +155 -0
- package/dist/lite/.claude/rules/context-management.md +85 -0
- package/dist/lite/.claude/rules/defensive-bash.md +52 -0
- package/dist/lite/.claude/rules/deferred-actions.md +233 -0
- package/dist/lite/.claude/rules/destructive-operations.md +69 -0
- package/dist/lite/.claude/rules/diagnosis.md +38 -0
- package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
- package/dist/lite/.claude/rules/guardrails.md +73 -0
- package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
- package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
- package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
- package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
- package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
- package/dist/lite/.claude/rules/loop-discipline.md +71 -0
- package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
- package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
- package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
- package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
- package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
- package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
- package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
- package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
- package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
- package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
- package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
- package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
- package/dist/lite/.claude/rules/pr-strategy.md +142 -0
- package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
- package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
- package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
- package/dist/lite/.claude/rules/schema-management.md +42 -0
- package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
- package/dist/lite/.claude/rules/security.md +37 -0
- package/dist/lite/.claude/rules/session-artifacts.md +236 -0
- package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
- package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
- package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
- package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
- package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
- package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
- package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
- package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
- package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
- package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
- package/dist/lite/.claude/rules/testing.md +38 -0
- package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
- package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
- package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
- package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
- package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
- package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
- package/dist/lite/.claude/skills/build/SKILL.md +640 -0
- package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
- package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
- package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
- package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
- package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
- package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
- package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
- package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
- package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
- package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
- package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
- package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
- package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
- package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
- package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
- package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
- package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
- package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
- package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
- package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
- package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
- package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
- package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
- package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
- package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
- package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
- package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
- package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
- package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
- package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
- package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
- package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
- package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
- package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
- package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
- package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
- package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
- package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
- package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
- package/dist/lite/AGENTS.md +79 -0
- package/dist/lite/CLAUDE-lite.md +85 -0
- package/dist/lite/CODE_OF_CONDUCT.md +28 -0
- package/dist/lite/CONTRIBUTING.md +177 -0
- package/dist/lite/README.md +173 -0
- package/dist/lite/SECURITY.md +19 -0
- package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
- package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
- package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
- package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
- package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
- package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
- package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
- package/dist/lite/lib/code-comment-discipline.sh +144 -0
- package/dist/lite/lib/composer-preflight.sh +459 -0
- package/dist/lite/lib/deferred-actions.sh +146 -0
- package/dist/lite/lib/hook-header-parser.sh +61 -0
- package/dist/lite/lib/hook-heartbeat.sh +152 -0
- package/dist/lite/lib/hook-inject.sh +255 -0
- package/dist/lite/lib/hook-installer.sh +195 -0
- package/dist/lite/lib/luminary-pick.sh +96 -0
- package/dist/lite/lib/output-discipline.sh +143 -0
- package/dist/lite/lib/prose-scan-boundary.sh +171 -0
- package/dist/lite/lib/rewrite-check.sh +214 -0
- package/dist/lite/lib/session-rescue.sh +151 -0
- package/dist/lite/lib/source-graph-walker.sh +277 -0
- package/dist/lite/lib/state.sh +1372 -0
- package/dist/lite/lib/telemetry.sh +205 -0
- package/dist/lite/lib/tier-check.sh +187 -0
- package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
- package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
- package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
- package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
- package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
- package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
- package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
- package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
- package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
- package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
- package/dist/lite/scripts/intent-drift-check.sh +456 -0
- package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
- package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
- package/dist/lite/standards/adr-template.md +86 -0
- package/dist/lite/standards/api-conventions/nextjs.md +84 -0
- package/dist/lite/standards/artifact-composition.md +209 -0
- package/dist/lite/standards/bash-hook-safety.md +246 -0
- package/dist/lite/standards/bassclef-configs-schema.md +232 -0
- package/dist/lite/standards/bassclef-evolution.md +143 -0
- package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
- package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
- package/dist/lite/standards/bassclef-source-config.md +228 -0
- package/dist/lite/standards/branch-stacking.md +408 -0
- package/dist/lite/standards/code-safety-principles.md +176 -0
- package/dist/lite/standards/composer-prerequisites.md +155 -0
- package/dist/lite/standards/deferred-actions-schema.md +204 -0
- package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
- package/dist/lite/standards/dependency-discipline/gem.md +43 -0
- package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
- package/dist/lite/standards/dependency-discipline/npm.md +42 -0
- package/dist/lite/standards/dependency-discipline/pip.md +42 -0
- package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
- package/dist/lite/standards/deployment-topology.md +69 -0
- package/dist/lite/standards/docs-sync-allowlist.md +76 -0
- package/dist/lite/standards/domain-and-dns.md +145 -0
- package/dist/lite/standards/frontend-stack.md +67 -0
- package/dist/lite/standards/frontmatter-schema.md +154 -0
- package/dist/lite/standards/graceful-exit.md +227 -0
- package/dist/lite/standards/hook-idempotency.md +102 -0
- package/dist/lite/standards/hook-injection-discipline.md +202 -0
- package/dist/lite/standards/hook-install-class.md +215 -0
- package/dist/lite/standards/input-handler-interface.md +152 -0
- package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
- package/dist/lite/standards/lite-manifest.json +2797 -0
- package/dist/lite/standards/luminary-matching.md +105 -0
- package/dist/lite/standards/luminary-problem-patterns.md +481 -0
- package/dist/lite/standards/migration-discipline/active-record.md +50 -0
- package/dist/lite/standards/migration-discipline/alembic.md +43 -0
- package/dist/lite/standards/migration-discipline/gorm.md +50 -0
- package/dist/lite/standards/migration-discipline/prisma.md +53 -0
- package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
- package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
- package/dist/lite/standards/model-routing-discipline.md +160 -0
- package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
- package/dist/lite/standards/opener-discipline.md +96 -0
- package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
- package/dist/lite/standards/persona-schema.md +229 -0
- package/dist/lite/standards/pluggable-luminaries.md +323 -0
- package/dist/lite/standards/pr-body-discipline.md +115 -0
- package/dist/lite/standards/preview-state-schema.md +189 -0
- package/dist/lite/standards/project-directory-layout.md +276 -0
- package/dist/lite/standards/release-tagging.md +137 -0
- package/dist/lite/standards/reserved-skill-names.md +120 -0
- package/dist/lite/standards/scannable-multi-option-output.md +265 -0
- package/dist/lite/standards/sdlc-compliance.md +286 -0
- package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
- package/dist/lite/standards/secrets-lifecycle.md +210 -0
- package/dist/lite/standards/security-scanner-adapter.md +145 -0
- package/dist/lite/standards/session-board.md +256 -0
- package/dist/lite/standards/skill-output-discipline.md +121 -0
- package/dist/lite/standards/state-spine-contract.md +255 -0
- package/dist/lite/standards/state-spine.md +511 -0
- package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
- package/dist/lite/standards/substrate-config-schema.md +267 -0
- package/dist/lite/standards/tech-stack-config.md +109 -0
- package/dist/lite/standards/tier-dependency-analysis.md +167 -0
- package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
- package/dist/lite/standards/tier-tag-schema.md +155 -0
- package/dist/lite/standards/two-layer-config.md +99 -0
- package/dist/lite/standards/use-case-format.md +292 -0
- package/dist/lite/standards/user-story-invest.md +268 -0
- package/dist/lite/standards/velocity-and-appetite.md +229 -0
- package/dist/lite/standards/voice-input-pattern.md +119 -0
- package/dist/lite/standards/whereami-schema.md +301 -0
- package/dist/lite/standards/worktree-management.md +211 -0
- package/dist/lite/standards/writing-guide.md +213 -0
- package/dist/lite/templates/chronicle-template.md +75 -0
- package/dist/lite/templates/deferred-action-template.md +45 -0
- package/dist/lite/templates/memory-proposal-template.md +77 -0
- package/dist/lite/templates/persona-template.md +200 -0
- package/dist/lite/templates/pr-faq.md +45 -0
- package/dist/lite/templates/secret-rotation-template.md +162 -0
- package/dist/lite/templates/spec-template.md +131 -0
- package/dist/lite/templates/use-case-template.md +194 -0
- package/dist/lite/templates/user-story-template.md +107 -0
- package/dist/lite/templates/whereami-template.md +101 -0
- package/package.json +1 -1
|
@@ -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
|
+
- workflow — `/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 | 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 skills (`/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` — workflow 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, workflow, 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.
|