@thebassclef/lite 1.9.16 → 1.9.18
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/README.md +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/agents/builder.md +7 -4
- package/dist/lite/.claude/bassclef-orientation.md +22 -0
- package/dist/lite/.claude/hooks/artifact-ingestion-gate.sh +11 -3
- package/dist/lite/.claude/hooks/assert-verify-steering.sh +1 -19
- package/dist/lite/.claude/hooks/plain-english-steering.sh +86 -41
- package/dist/lite/.claude/hooks/pre-commit-gate.sh +10 -2
- package/dist/lite/.claude/hooks/pre-push-shellcheck.sh +144 -0
- package/dist/lite/.claude/hooks/reviewer-dispatch-check.sh +153 -0
- package/dist/lite/.claude/hooks/session-reflection.d/83-install-written-paths-rebuild.sh +15 -32
- package/dist/lite/.claude/hooks/turn-prose-density-measure.sh +109 -0
- package/dist/lite/.claude/hooks/turn-prose-kiss-check.sh +28 -0
- package/dist/lite/.claude/rules/branching.md +2 -0
- package/dist/lite/.claude/rules/identifier-leak-prevention.md +2 -1
- package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +23 -0
- package/dist/lite/.claude/rules/reviewer-dispatch.md +95 -0
- package/dist/lite/.claude/settings.json +10 -0
- package/dist/lite/.claude/skills/build/SKILL.md +81 -6
- package/dist/lite/.claude/skills/eisenhower/SKILL.md +26 -0
- package/dist/lite/.claude/skills/launch/SKILL.md +45 -2
- package/dist/lite/.claude/skills/onboard-repo/SKILL.md +204 -40
- package/dist/lite/.claude/skills/onboard-repo/concise-prompt.sh +73 -0
- package/dist/lite/.claude/skills/onboard-repo/write-state-marker.sh +81 -0
- package/dist/lite/.claude/skills/pre-mortem/SKILL.md +56 -0
- package/dist/lite/.claude/skills/sprint/SKILL.md +24 -3
- package/dist/lite/.claude/skills/temperance/SKILL.md +15 -4
- package/dist/lite/README.md +2 -0
- package/dist/lite/bassclef-version.json +5 -5
- package/dist/lite/lib/install-written-paths.sh +250 -3
- package/dist/lite/lib/prose-marker.sh +203 -0
- package/dist/lite/lib/tier-dependency-audit.sh +52 -25
- package/dist/lite/presence/install/bassclef-sync.template.sh +86 -8
- package/dist/lite/scripts/generate-lite-manifest.sh +15 -0
- package/dist/lite/scripts/launch/local-serve.sh +149 -8
- package/dist/lite/standards/bassclef-wiring-manifest.json +12 -0
- package/dist/lite/standards/lite-manifest-schema-changes.md +49 -0
- package/dist/lite/standards/lite-manifest.json +90 -27
- package/dist/lite/standards/prose-marker-format.md +105 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tier": "lite",
|
|
3
|
-
"manifest_version": "1.
|
|
4
|
-
"generated_at": "2026-10-
|
|
3
|
+
"manifest_version": "1.17.4",
|
|
4
|
+
"generated_at": "2026-10-16T22:14:49Z",
|
|
5
5
|
"entries": [
|
|
6
6
|
{
|
|
7
7
|
"slug": "029-release-pipeline",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"type": "agent",
|
|
65
65
|
"path": ".claude/agents/builder.md",
|
|
66
66
|
"tier": "lite",
|
|
67
|
-
"content_hash": "sha256:
|
|
67
|
+
"content_hash": "sha256:b0f279027867310b2fdab217b6a072133b0f35a5bf306a35a3c108cdb4d0d64c",
|
|
68
68
|
"description": "Executes against spec. Respects ADR constraints. Commits with conventional commits. Doesn't redesign mid-build. Raises blockers immediately."
|
|
69
69
|
},
|
|
70
70
|
{
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
"type": "hook",
|
|
265
265
|
"path": ".claude/hooks/session-reflection.d/83-install-written-paths-rebuild.sh",
|
|
266
266
|
"tier": "lite",
|
|
267
|
-
"content_hash": "sha256:
|
|
267
|
+
"content_hash": "sha256:26afc563c1212ca472cb9c41af6d3cdbf95dd9d06ef634de95baf9337b39a28d",
|
|
268
268
|
"description": "Session-start fragment: rebuild install-written-paths manifest when missing/stale."
|
|
269
269
|
},
|
|
270
270
|
{
|
|
@@ -328,7 +328,7 @@
|
|
|
328
328
|
"type": "hook",
|
|
329
329
|
"path": ".claude/hooks/artifact-ingestion-gate.sh",
|
|
330
330
|
"tier": "lite",
|
|
331
|
-
"content_hash": "sha256:
|
|
331
|
+
"content_hash": "sha256:5946bdc740af1541e407aef397eb470166e00bef1ca87cdd47e7e08b7255cae1",
|
|
332
332
|
"description": "Artifact Ingestion Gate — fires on Write/Edit to generative artifact paths."
|
|
333
333
|
},
|
|
334
334
|
{
|
|
@@ -336,7 +336,7 @@
|
|
|
336
336
|
"type": "hook",
|
|
337
337
|
"path": ".claude/hooks/assert-verify-steering.sh",
|
|
338
338
|
"tier": "lite",
|
|
339
|
-
"content_hash": "sha256:
|
|
339
|
+
"content_hash": "sha256:a554079add7826aef3286ab28f8f1f28cb6d495c196aec002c15d4d1be425362",
|
|
340
340
|
"description": "assert-verify-steering.sh — UserPromptSubmit hook that injects"
|
|
341
341
|
},
|
|
342
342
|
{
|
|
@@ -504,7 +504,7 @@
|
|
|
504
504
|
"type": "hook",
|
|
505
505
|
"path": ".claude/hooks/plain-english-steering.sh",
|
|
506
506
|
"tier": "lite",
|
|
507
|
-
"content_hash": "sha256:
|
|
507
|
+
"content_hash": "sha256:43c94eb70b04b1de950e0928b151b8a9ecc30b6dd23d65ae1f2175a3edf993f8",
|
|
508
508
|
"description": "plain-english-steering.sh — UserPromptSubmit hook that injects"
|
|
509
509
|
},
|
|
510
510
|
{
|
|
@@ -552,7 +552,7 @@
|
|
|
552
552
|
"type": "hook",
|
|
553
553
|
"path": ".claude/hooks/pre-commit-gate.sh",
|
|
554
554
|
"tier": "lite",
|
|
555
|
-
"content_hash": "sha256:
|
|
555
|
+
"content_hash": "sha256:44ee55c1c8ba834b0b1e99209cfd86659921ebade01f18981fae3461ed3574f3",
|
|
556
556
|
"description": "Observable failure trap — closes bassclef-upstream#1075 (silent-stderr class)."
|
|
557
557
|
},
|
|
558
558
|
{
|
|
@@ -587,6 +587,22 @@
|
|
|
587
587
|
"content_hash": "sha256:d1c01e63e69d5081812c6a689b881c318667152509383fa09feeddb72e997313",
|
|
588
588
|
"description": "pre-gh-pr-title-scrub — PreToolUse hook that runs the body scrub logic"
|
|
589
589
|
},
|
|
590
|
+
{
|
|
591
|
+
"slug": "pre-push-shellcheck",
|
|
592
|
+
"type": "hook",
|
|
593
|
+
"path": ".claude/hooks/pre-push-shellcheck.sh",
|
|
594
|
+
"tier": "lite",
|
|
595
|
+
"content_hash": "sha256:98d72340156ebafcdaf11aa2f20b79c377b10495016d6f7d9cb74c8a554e9592",
|
|
596
|
+
"description": "pre-push-shellcheck — PreToolUse Bash hook that scans .sh files going"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"slug": "reviewer-dispatch-check",
|
|
600
|
+
"type": "hook",
|
|
601
|
+
"path": ".claude/hooks/reviewer-dispatch-check.sh",
|
|
602
|
+
"tier": "lite",
|
|
603
|
+
"content_hash": "sha256:0b487dc434c96333aadbc4893c46a3aee07a4f51181fb3cec050acda82ed5b9a",
|
|
604
|
+
"description": "reviewer-dispatch-check.sh — Stop hook on code-shipping sessions"
|
|
605
|
+
},
|
|
590
606
|
{
|
|
591
607
|
"slug": "role-entry-gate",
|
|
592
608
|
"type": "hook",
|
|
@@ -691,6 +707,14 @@
|
|
|
691
707
|
"content_hash": "sha256:15c81bba2b25f8d975b806371f6ca71be59e6339bebd9afe2074505c9b9fb436",
|
|
692
708
|
"description": "SDLC Trace Log helper — sourced by all hooks."
|
|
693
709
|
},
|
|
710
|
+
{
|
|
711
|
+
"slug": "turn-prose-density-measure",
|
|
712
|
+
"type": "hook",
|
|
713
|
+
"path": ".claude/hooks/turn-prose-density-measure.sh",
|
|
714
|
+
"tier": "lite",
|
|
715
|
+
"content_hash": "sha256:5124aefce9ef1328364e38db13f0b3cb36df013d8b059bc94a57f972f3c8af80",
|
|
716
|
+
"description": "Turn-prose density measure — Stop hook that reads the last assistant message"
|
|
717
|
+
},
|
|
694
718
|
{
|
|
695
719
|
"slug": "turn-prose-grade-measure",
|
|
696
720
|
"type": "hook",
|
|
@@ -704,7 +728,7 @@
|
|
|
704
728
|
"type": "hook",
|
|
705
729
|
"path": ".claude/hooks/turn-prose-kiss-check.sh",
|
|
706
730
|
"tier": "lite",
|
|
707
|
-
"content_hash": "sha256:
|
|
731
|
+
"content_hash": "sha256:5e039dc5864f02193305a0c24ad4fb014f63e4979f57cd3364620cbea2029b75",
|
|
708
732
|
"description": "Turn-prose /kiss check — Stop hook that scans the most recent assistant"
|
|
709
733
|
},
|
|
710
734
|
{
|
|
@@ -856,7 +880,7 @@
|
|
|
856
880
|
"type": "lib",
|
|
857
881
|
"path": "lib/install-written-paths.sh",
|
|
858
882
|
"tier": "lite",
|
|
859
|
-
"content_hash": "sha256:
|
|
883
|
+
"content_hash": "sha256:a05af07492ef548781b0f206d1d51cc0926a3957e61cded77e41d99a038d32ab",
|
|
860
884
|
"description": "Install-written-paths manifest + accessor lib."
|
|
861
885
|
},
|
|
862
886
|
{
|
|
@@ -907,6 +931,14 @@
|
|
|
907
931
|
"content_hash": "sha256:0e1e0765acfad9826b9a042eed2215eb0c71b8f5f077283a5abab7d8fd40e5e7",
|
|
908
932
|
"description": "lib/preview-state.sh — typed accessor for docs/preview-state/<slug>.yml"
|
|
909
933
|
},
|
|
934
|
+
{
|
|
935
|
+
"slug": "prose-marker",
|
|
936
|
+
"type": "lib",
|
|
937
|
+
"path": "lib/prose-marker.sh",
|
|
938
|
+
"tier": "lite",
|
|
939
|
+
"content_hash": "sha256:1ced5ff7c2156bf0168673476c9a1579d9572a5206f1305e5f447c2126e72b06",
|
|
940
|
+
"description": "lib/prose-marker.sh — shared marker write + read helpers for the bassclef"
|
|
941
|
+
},
|
|
910
942
|
{
|
|
911
943
|
"slug": "prose-scan-boundary",
|
|
912
944
|
"type": "lib",
|
|
@@ -984,7 +1016,7 @@
|
|
|
984
1016
|
"type": "lib",
|
|
985
1017
|
"path": "lib/tier-dependency-audit.sh",
|
|
986
1018
|
"tier": "lite",
|
|
987
|
-
"content_hash": "sha256:
|
|
1019
|
+
"content_hash": "sha256:9b65ecf00ff584c573e84ca9e7d980e492e9673a11669ba3e1c3ecb5cd1ef2da",
|
|
988
1020
|
"description": "lib/tier-dependency-audit.sh"
|
|
989
1021
|
},
|
|
990
1022
|
{
|
|
@@ -1367,7 +1399,7 @@
|
|
|
1367
1399
|
"type": "presence-template",
|
|
1368
1400
|
"path": "presence/install/bassclef-sync.template.sh",
|
|
1369
1401
|
"tier": "lite",
|
|
1370
|
-
"content_hash": "sha256:
|
|
1402
|
+
"content_hash": "sha256:a33dd77165b005cfe639ea5093e5af4620c49022bcef6ad5d8cb0670129814d8",
|
|
1371
1403
|
"description": "description: BASSCLEF_SYNC_VERSION=2026-09-06-1496-sessionstart-heal-v1"
|
|
1372
1404
|
},
|
|
1373
1405
|
{
|
|
@@ -1398,7 +1430,7 @@
|
|
|
1398
1430
|
"type": "root-doc",
|
|
1399
1431
|
"path": ".claude/bassclef-orientation.md",
|
|
1400
1432
|
"tier": "lite",
|
|
1401
|
-
"content_hash": "sha256:
|
|
1433
|
+
"content_hash": "sha256:9e98b2a6fe7038d46642ef22061b22660ebf8fb0a0ae719af6b928655c997804"
|
|
1402
1434
|
},
|
|
1403
1435
|
{
|
|
1404
1436
|
"slug": "claude-lite",
|
|
@@ -1429,7 +1461,7 @@
|
|
|
1429
1461
|
"type": "root-doc",
|
|
1430
1462
|
"path": "README.md",
|
|
1431
1463
|
"tier": "lite",
|
|
1432
|
-
"content_hash": "sha256:
|
|
1464
|
+
"content_hash": "sha256:a27a7b9d211fc1cd92864d56bd05fe5912dcd27781bf8d5229844ac909421765",
|
|
1433
1465
|
"description": "A shared substrate for working with AI coding agents."
|
|
1434
1466
|
},
|
|
1435
1467
|
{
|
|
@@ -1541,7 +1573,7 @@
|
|
|
1541
1573
|
"type": "rule",
|
|
1542
1574
|
"path": ".claude/rules/branching.md",
|
|
1543
1575
|
"tier": "lite",
|
|
1544
|
-
"content_hash": "sha256:
|
|
1576
|
+
"content_hash": "sha256:ce380a635aa65ba6087e560bb29335e7011f855884c94702b3414aa51ea8e3d0",
|
|
1545
1577
|
"description": "Trunk-based development — branch naming and flow"
|
|
1546
1578
|
},
|
|
1547
1579
|
{
|
|
@@ -1669,7 +1701,7 @@
|
|
|
1669
1701
|
"type": "rule",
|
|
1670
1702
|
"path": ".claude/rules/identifier-leak-prevention.md",
|
|
1671
1703
|
"tier": "lite",
|
|
1672
|
-
"content_hash": "sha256:
|
|
1704
|
+
"content_hash": "sha256:5653d1e6449eb982b73ddad4f9e099a4eb5352423f955067887c60f2af9de2e5",
|
|
1673
1705
|
"description": "Bassclef commits stay free of operator machine identifiers."
|
|
1674
1706
|
},
|
|
1675
1707
|
{
|
|
@@ -1699,7 +1731,7 @@
|
|
|
1699
1731
|
"type": "rule",
|
|
1700
1732
|
"path": ".claude/rules/lite-manifest-schema-change-discipline.md",
|
|
1701
1733
|
"tier": "lite",
|
|
1702
|
-
"content_hash": "sha256:
|
|
1734
|
+
"content_hash": "sha256:558817a99e902b35d6857129ce3b63ac3f1a66b9a7c97049a74f3b6c5ce2d6cc",
|
|
1703
1735
|
"description": "Every lite-manifest schema change ships a migration-note ledger entry in the same PR. Adopters read the ledger before sync."
|
|
1704
1736
|
},
|
|
1705
1737
|
{
|
|
@@ -1870,6 +1902,14 @@
|
|
|
1870
1902
|
"content_hash": "sha256:c6abf0895c5edb60c8b42c741f39c407b6145a63453fe584b7e63559d2bd7e7e",
|
|
1871
1903
|
"description": "Bassclef MUST NOT create a skill (.claude/skills/<name>/SKILL.md) with a name Claude Code's harness already claims."
|
|
1872
1904
|
},
|
|
1905
|
+
{
|
|
1906
|
+
"slug": "reviewer-dispatch",
|
|
1907
|
+
"type": "rule",
|
|
1908
|
+
"path": ".claude/rules/reviewer-dispatch.md",
|
|
1909
|
+
"tier": "lite",
|
|
1910
|
+
"content_hash": "sha256:78be083820e114ab2a940823ef47210bcdda7bed9b27d327a8724b4bbdd858f0",
|
|
1911
|
+
"description": "Any session that ships source code (files under src/, apps/, packages/, lib/, app/) MUST invoke Reviewer responsibilities before the session ends."
|
|
1912
|
+
},
|
|
1873
1913
|
{
|
|
1874
1914
|
"slug": "schema-management",
|
|
1875
1915
|
"type": "rule",
|
|
@@ -2078,6 +2118,14 @@
|
|
|
2078
2118
|
"content_hash": "sha256:d7a13ca4fb37283e50fc165bb5ebd6a65539d7dade005dcd38098e1d878c52b3",
|
|
2079
2119
|
"description": "analyze-tier-dependencies.sh — orchestrator for the tier-dependency-audit subsystem"
|
|
2080
2120
|
},
|
|
2121
|
+
{
|
|
2122
|
+
"slug": "concise-prompt",
|
|
2123
|
+
"type": "script",
|
|
2124
|
+
"path": ".claude/skills/onboard-repo/concise-prompt.sh",
|
|
2125
|
+
"tier": "lite",
|
|
2126
|
+
"content_hash": "sha256:75f0946c98992117722ea1f0839380f3aeb31f530aa823330a6129a660210d74",
|
|
2127
|
+
"description": "concise-prompt.sh — handle Y/n/skip for Anthropic Concise output style."
|
|
2128
|
+
},
|
|
2081
2129
|
{
|
|
2082
2130
|
"slug": "extract-repo",
|
|
2083
2131
|
"type": "script",
|
|
@@ -2091,7 +2139,7 @@
|
|
|
2091
2139
|
"type": "script",
|
|
2092
2140
|
"path": "scripts/generate-lite-manifest.sh",
|
|
2093
2141
|
"tier": "lite",
|
|
2094
|
-
"content_hash": "sha256:
|
|
2142
|
+
"content_hash": "sha256:f7c551500bdc4062993d50ca5ecb025491ca97980a7318047f6472a3fe091433",
|
|
2095
2143
|
"description": "Generate lite-manifest.json at repo root."
|
|
2096
2144
|
},
|
|
2097
2145
|
{
|
|
@@ -2131,7 +2179,7 @@
|
|
|
2131
2179
|
"type": "script",
|
|
2132
2180
|
"path": "scripts/launch/local-serve.sh",
|
|
2133
2181
|
"tier": "lite",
|
|
2134
|
-
"content_hash": "sha256:
|
|
2182
|
+
"content_hash": "sha256:cb621e555f78862bf926f2ee5681be319f9f0308ca1726ff77f0f7e1237e5589",
|
|
2135
2183
|
"description": "local-serve.sh — serve a /launch local-mode prototype gallery via python http.server"
|
|
2136
2184
|
},
|
|
2137
2185
|
{
|
|
@@ -2174,6 +2222,14 @@
|
|
|
2174
2222
|
"content_hash": "sha256:9d9ad4a997e2820046802796f81a5d064b14f951cdade6f6c252db64d2afae89",
|
|
2175
2223
|
"description": "CLI wrapper for lib/workflow-metrics.sh — Module B4 query helper."
|
|
2176
2224
|
},
|
|
2225
|
+
{
|
|
2226
|
+
"slug": "write-state-marker",
|
|
2227
|
+
"type": "script",
|
|
2228
|
+
"path": ".claude/skills/onboard-repo/write-state-marker.sh",
|
|
2229
|
+
"tier": "lite",
|
|
2230
|
+
"content_hash": "sha256:1f99762804df32a74cb2b19e2930a96d8f8e206f0261795b26766a9cebf0a29a",
|
|
2231
|
+
"description": "write-state-marker.sh — Phase 2.3.9 helper for /onboard-repo (bassclef-upstream#664)."
|
|
2232
|
+
},
|
|
2177
2233
|
{
|
|
2178
2234
|
"slug": "agent-research-spawn",
|
|
2179
2235
|
"type": "skill",
|
|
@@ -2272,7 +2328,7 @@
|
|
|
2272
2328
|
"type": "skill",
|
|
2273
2329
|
"path": ".claude/skills/build/SKILL.md",
|
|
2274
2330
|
"tier": "lite",
|
|
2275
|
-
"content_hash": "sha256:
|
|
2331
|
+
"content_hash": "sha256:25931569f4d2aa77db69c03f2deb7cfe9cba3f03a4720fea2c4234a2b6d6918e",
|
|
2276
2332
|
"description": "Take a plan from /launch and ship it. One builder per user story. Runs /verify. Opens PRs. Gates prod on a human. Refuses auth, schema, security, and tenant work. Two modes — full and degrade-with-note.",
|
|
2277
2333
|
"inputs": [
|
|
2278
2334
|
"A goal slug pointing to a spec on disk"
|
|
@@ -2429,7 +2485,7 @@
|
|
|
2429
2485
|
"type": "skill",
|
|
2430
2486
|
"path": ".claude/skills/eisenhower/SKILL.md",
|
|
2431
2487
|
"tier": "lite",
|
|
2432
|
-
"content_hash": "sha256:
|
|
2488
|
+
"content_hash": "sha256:cc8c006f3a40aa55d7572fb43c22f0403400cd2d86b82c84c244e7d2d94f2827",
|
|
2433
2489
|
"description": "Turn open tickets and PRs into a scored Eisenhower matrix — do, schedule, delegate, delete. Anchors 'important' to a goal you name first, so the sort has meaning. Two modes: default (current repo) and --cross-repo.",
|
|
2434
2490
|
"composes_with": [
|
|
2435
2491
|
"value-prop",
|
|
@@ -2668,7 +2724,7 @@
|
|
|
2668
2724
|
"type": "skill",
|
|
2669
2725
|
"path": ".claude/skills/launch/SKILL.md",
|
|
2670
2726
|
"tier": "lite",
|
|
2671
|
-
"content_hash": "sha256:
|
|
2727
|
+
"content_hash": "sha256:ff48cce4bffa2a7044fe009785f53b22a81a975fa8f3351eecb3947b4252a106",
|
|
2672
2728
|
"description": "Compare variants of an idea. Get a mock gallery. Pick a direction. Get a spec, user stories, and a plan to build. Two sizes — medium and full. Three modes — full, local, scratch.",
|
|
2673
2729
|
"inputs": [
|
|
2674
2730
|
"A rough idea or ticket or canvas"
|
|
@@ -2791,7 +2847,7 @@
|
|
|
2791
2847
|
"type": "skill",
|
|
2792
2848
|
"path": ".claude/skills/onboard-repo/SKILL.md",
|
|
2793
2849
|
"tier": "lite",
|
|
2794
|
-
"content_hash": "sha256:
|
|
2850
|
+
"content_hash": "sha256:649967ea7147b4f99b19f273c01d5a2dc976bea778c7ee7fd78a35c77e61505d",
|
|
2795
2851
|
"description": "Bootstrap the bassclef framework in a new repo. Installs the sync hook. Scaffolds config, whereami, and CLAUDE.md. Modes: default, --with-deploy-host, --with-secrets, --full, --greenfield-from-intent (starts a new repo from a short intent paragraph).",
|
|
2796
2852
|
"inputs": [
|
|
2797
2853
|
"Optional flags — --with-deploy-host or --with-secrets or --full"
|
|
@@ -2862,7 +2918,7 @@
|
|
|
2862
2918
|
"type": "skill",
|
|
2863
2919
|
"path": ".claude/skills/pre-mortem/SKILL.md",
|
|
2864
2920
|
"tier": "lite",
|
|
2865
|
-
"content_hash": "sha256:
|
|
2921
|
+
"content_hash": "sha256:32dcece733673d449bc931a0dd6cacb9ab473c338d7516ff2587b3e35f34113e",
|
|
2866
2922
|
"description": "Draft a Klein pre-mortem risk ledger for a scope (goal, feature, PR). Two modes: light (3 luminary lenses, 30 min) and full (5-8 lenses, 90 min). Always fires on auth, schema, payments, or compliance work.",
|
|
2867
2923
|
"inputs": [
|
|
2868
2924
|
"A goal or feature or PR ref",
|
|
@@ -3243,7 +3299,7 @@
|
|
|
3243
3299
|
"type": "skill",
|
|
3244
3300
|
"path": ".claude/skills/sprint/SKILL.md",
|
|
3245
3301
|
"tier": "lite",
|
|
3246
|
-
"content_hash": "sha256:
|
|
3302
|
+
"content_hash": "sha256:f9a83bfeacd95de10699fb06bf91aade2200546d2d3511fac2fe780d76d5030f",
|
|
3247
3303
|
"description": "Show what's in flight and what's next. Reads project state, open issues, and the active goal. Proposes the next sprint at thread level, not just the nearest leaf. Run at session start.",
|
|
3248
3304
|
"composes_with": [
|
|
3249
3305
|
"value-prop",
|
|
@@ -3380,7 +3436,7 @@
|
|
|
3380
3436
|
"type": "skill",
|
|
3381
3437
|
"path": ".claude/skills/temperance/SKILL.md",
|
|
3382
3438
|
"tier": "lite",
|
|
3383
|
-
"content_hash": "sha256:
|
|
3439
|
+
"content_hash": "sha256:ab1dbcb1bfcdb94d590ab32de13af96a155a4fba2f381b57f828b00e257eb161",
|
|
3384
3440
|
"description": "Pause and think before you code. Asks — am I building the right thing AND building it the right way? Fires before every non-trivial action.",
|
|
3385
3441
|
"inputs": [
|
|
3386
3442
|
"Optional scope decision context"
|
|
@@ -3871,7 +3927,7 @@
|
|
|
3871
3927
|
"type": "standard",
|
|
3872
3928
|
"path": "standards/lite-manifest-schema-changes.md",
|
|
3873
3929
|
"tier": "lite",
|
|
3874
|
-
"content_hash": "sha256:
|
|
3930
|
+
"content_hash": "sha256:a9879f5482d3f672b85a519890d387b08f013943a3dd5cee45eacf1230428a3e",
|
|
3875
3931
|
"description": "Chronological ledger of every lite-manifest schema change. Adopters read this before sync to know what shifted."
|
|
3876
3932
|
},
|
|
3877
3933
|
{
|
|
@@ -4034,6 +4090,13 @@
|
|
|
4034
4090
|
"content_hash": "sha256:fec13744cd05f15144f313fe284c1d471be755bceb2b94e476e0629ffe231c50",
|
|
4035
4091
|
"description": "Standard directory structure for sunj-labs repositories."
|
|
4036
4092
|
},
|
|
4093
|
+
{
|
|
4094
|
+
"slug": "prose-marker-format",
|
|
4095
|
+
"type": "standard",
|
|
4096
|
+
"path": "standards/prose-marker-format.md",
|
|
4097
|
+
"tier": "lite",
|
|
4098
|
+
"content_hash": "sha256:8d31a3ddf3d728558650254b88d35552933d6539009faf264c793bc82559d9a8"
|
|
4099
|
+
},
|
|
4037
4100
|
{
|
|
4038
4101
|
"slug": "prototype-gallery",
|
|
4039
4102
|
"type": "standard",
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
tier: lite
|
|
3
|
+
name: prose-marker-format
|
|
4
|
+
version: 1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Prose marker format
|
|
8
|
+
|
|
9
|
+
Shared marker shape for the bassclef prose scorer stack. Three producers write markers at Stop event. One consumer (`plain-english-steering.sh`) reads them at UserPromptSubmit and injects per-turn numbers.
|
|
10
|
+
|
|
11
|
+
This standard pins the shape so each producer writes markers the steering injector reads cleanly. Hoare pre/postcondition contract makes the lib `lib/prose-marker.sh` verifiable per Tier 0 tests.
|
|
12
|
+
|
|
13
|
+
## Sources read
|
|
14
|
+
|
|
15
|
+
- `.claude/hooks/turn-prose-grade-measure.sh`:153-170 — existing marker shape for `state/markers/turn-grade/last-turn.json`
|
|
16
|
+
- `.claude/hooks/turn-prose-grade-measure.sh`:171-217 — existing marker shape for `state/markers/turn-prose-flags/last-turn.json`
|
|
17
|
+
- `docs/iteration-bets/2026-10-13-longrun-2-scorer-stack-v1.md` — Longrun 2 scope + 7-step plan + RFC folds
|
|
18
|
+
- `docs/rfcs/2026-10-13-longrun-2-scorer-stack-v1-adversarial.md` — RFC O2 + O3 FOLDs (lib shape); N1 FOLD (glyph legend); F2 architect-review AMBER (Hoare contract fold)
|
|
19
|
+
- `docs/audits/2026-10-13-plain-english-steering-baseline.md` — baseline numbers that pin the thresholds
|
|
20
|
+
- `.claude/luminaries/tony-hoare.md` — pre/postcondition contract shape (anchor)
|
|
21
|
+
- `.claude/luminaries/john-ousterhout.md` — deep module single interface (anchor)
|
|
22
|
+
|
|
23
|
+
## Marker shape
|
|
24
|
+
|
|
25
|
+
Each prose marker lands at `state/markers/<scorer-name>/last-turn.json` and conforms to this JSON shape:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"metric": "<name>",
|
|
30
|
+
"value": <number>,
|
|
31
|
+
"measured_at": "<ISO-8601 UTC timestamp>",
|
|
32
|
+
"glyph": "🟢" | "🟡" | "🔴",
|
|
33
|
+
"threshold_green": <number>,
|
|
34
|
+
"threshold_amber": <number>,
|
|
35
|
+
"source": "<producer hook name>",
|
|
36
|
+
"notes": "<optional one-line note>"
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Required fields — `metric`, `value`, `measured_at`, `source`.
|
|
41
|
+
Optional fields — `glyph`, `threshold_green`, `threshold_amber`, `notes`.
|
|
42
|
+
|
|
43
|
+
## Hoare pre/postcondition contract
|
|
44
|
+
|
|
45
|
+
Per `lib/prose-marker.sh`:
|
|
46
|
+
|
|
47
|
+
### `write_prose_marker <scorer-name> <value> [notes]`
|
|
48
|
+
|
|
49
|
+
- **Precondition** — `scorer-name` is a non-empty string matching `[a-z-]+`. `value` is a number (integer or float). Working directory is a bassclef repo root with `state/markers/` writable.
|
|
50
|
+
- **Postcondition** — a file at `state/markers/<scorer-name>/last-turn.json` exists AND contains valid JSON matching the marker shape above AND has `measured_at` as a fresh ISO-8601 timestamp AND atomic write via `mv` from temp file (no partial writes visible).
|
|
51
|
+
- **Invariant** — a prior marker at the same path is overwritten atomically; no race condition for concurrent writers (different scorer names write to different directories).
|
|
52
|
+
|
|
53
|
+
### `read_prose_markers [--max-age-minutes N] <scorer-name> [<scorer-name> ...]`
|
|
54
|
+
|
|
55
|
+
- **Precondition** — zero or more `scorer-name` arguments. Each is a non-empty string matching `[a-z-]+`. Working directory is a bassclef repo root.
|
|
56
|
+
- **Postcondition** — stdout emits one JSON object. Keys are scorer names. Values are either the marker object (parsed from disk) OR `null` if the marker file does not exist OR is older than `max-age-minutes` (default 10) OR fails to parse as JSON.
|
|
57
|
+
- **Invariant** — any read failure returns `null` for that scorer without crashing the whole call. Fail-soft per Nygard.
|
|
58
|
+
|
|
59
|
+
## Scorer registry
|
|
60
|
+
|
|
61
|
+
The initial scorer stack carries three metrics:
|
|
62
|
+
|
|
63
|
+
| Scorer name | Metric | Marker path | Producer hook | Green threshold | Amber threshold |
|
|
64
|
+
|---|---|---|---|---|---|
|
|
65
|
+
| `grade` | Flesch-Kincaid grade level | `state/markers/turn-grade/last-turn.json` | `turn-prose-grade-measure.sh` | ≤8 | ≤10 |
|
|
66
|
+
| `density` | Non-standard hyphenated-compound count per turn | `state/markers/turn-prose-density/last-turn.json` | `turn-prose-density-measure.sh` | 0 | ≤3 |
|
|
67
|
+
| `appositive_misses` | Session-invented shorthand without adjacent appositive per turn | `state/markers/turn-prose-appositive/last-turn.json` | `turn-prose-kiss-check.sh` (Step 2c extension) | 0 | ≤2 |
|
|
68
|
+
|
|
69
|
+
Thresholds grounded against baseline numbers at `docs/audits/2026-10-13-plain-english-steering-baseline.md`:
|
|
70
|
+
|
|
71
|
+
- Grade — target band is 6-8; ceiling is 10 (baseline mean 7.6; 19% past ceiling)
|
|
72
|
+
- Density — non-standard hyphen compounds; baseline mean 4.1/turn; green=0 reflects clean prose; amber=3 is the baseline mean floor
|
|
73
|
+
- Appositive misses — baseline mean 0.95/turn; green=0 reflects every shorthand glossed; amber=2 picks up the 10-30% miss tail
|
|
74
|
+
|
|
75
|
+
## Glyph legend
|
|
76
|
+
|
|
77
|
+
- 🟢 — value at or below `threshold_green`; clean
|
|
78
|
+
- 🟡 — value between `threshold_green` and `threshold_amber`; drift zone
|
|
79
|
+
- 🔴 — value above `threshold_amber`; action needed
|
|
80
|
+
|
|
81
|
+
Rendering at `plain-english-steering.sh` injection — one line per scorer:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
[prose: grade 7.2 🟢 density 4 🟡 appositive 2 🟡]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Cap at 160 chars total per injection line. If a scorer marker reads `null` (missing or stale), its field omits from the injection line.
|
|
88
|
+
|
|
89
|
+
## Density allowlist (standard-tech exclusions)
|
|
90
|
+
|
|
91
|
+
The density scorer excludes 25 standard-tech hyphenated compounds. These never count toward density:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
pre-commit, real-time, data-driven, end-to-end, fire-and-forget,
|
|
95
|
+
run-time, compile-time, read-only, write-only, fail-soft,
|
|
96
|
+
fail-fast, post-commit, pre-push, post-merge, op-ed,
|
|
97
|
+
self-test, self-check, re-read, re-run, re-fire,
|
|
98
|
+
op-cost, copy-paste, cut-off, set-up, built-in
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Follow-on refinement.** Architect-review AMBER F4 flagged this list as author-curated. Grounding sampled from top-20 hyphenated compounds across 10 session transcripts lands as a follow-on PR after `turn-prose-density-measure.sh` ships. Baseline list ships as above for V1.
|
|
102
|
+
|
|
103
|
+
## Change log
|
|
104
|
+
|
|
105
|
+
- 2026-10-12 — v1.0 initial format. Grade + density + appositive scorers. Hoare contract on lib. Glyph legend. Follow-on allowlist grounding.
|