@thebassclef/lite 0.1.0 → 0.1.3

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 (163) hide show
  1. package/dist/cli.cjs +40 -6
  2. package/dist/cli.js +40 -6
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/package.json +1 -1
  7. package/substrate/.bassclef/lite-manifest.json +999 -92
  8. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  9. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +492 -0
  10. package/substrate/.claude/hooks/pre-commit-gate.sh +1 -2
  11. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +30 -1
  12. package/substrate/.claude/luminaries/glenford-myers.md +230 -0
  13. package/substrate/.claude/luminaries/hunt-thomas.md +115 -0
  14. package/substrate/.claude/luminaries/hyrum-wright.md +94 -0
  15. package/substrate/.claude/luminaries/michael-feathers.md +2 -2
  16. package/substrate/.claude/luminaries/tony-hoare.md +170 -0
  17. package/substrate/.claude/luminaries/vaughn-vernon.md +50 -0
  18. package/substrate/.claude/luminaries/w-edwards-deming.md +158 -0
  19. package/substrate/.claude/rules/accessor-library-discipline.md +138 -0
  20. package/substrate/.claude/rules/adr-discipline.md +120 -0
  21. package/substrate/.claude/rules/api-conventions.md +125 -0
  22. package/substrate/.claude/rules/bootstrap-pair-discipline.md +141 -0
  23. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +129 -0
  24. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +188 -0
  25. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +188 -0
  26. package/substrate/.claude/rules/defensive-bash.md +68 -0
  27. package/substrate/.claude/rules/deferred-actions.md +233 -0
  28. package/substrate/.claude/rules/github-issue-flash-tweet.md +156 -0
  29. package/substrate/.claude/rules/hook-wire-on-author.md +103 -0
  30. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +54 -0
  31. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +3 -3
  32. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +89 -0
  33. package/substrate/.claude/rules/loop-discipline.md +81 -0
  34. package/substrate/.claude/rules/manual-prod-approval.md +100 -0
  35. package/substrate/.claude/rules/marker-enrichment-discipline.md +99 -0
  36. package/substrate/.claude/rules/mobile-ephemeral-session.md +109 -0
  37. package/substrate/.claude/rules/new-dependency-check.md +51 -0
  38. package/substrate/.claude/rules/option-label-discipline.md +108 -0
  39. package/substrate/.claude/rules/pattern-annotation.md +100 -0
  40. package/substrate/.claude/rules/plain-english-discipline.md +11 -9
  41. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +211 -0
  42. package/substrate/.claude/rules/pr-title-shape.md +161 -0
  43. package/substrate/.claude/rules/prototype-workflow.md +65 -0
  44. package/substrate/.claude/rules/reserved-skill-names.md +123 -0
  45. package/substrate/.claude/rules/schema-management.md +49 -0
  46. package/substrate/.claude/rules/security.md +37 -0
  47. package/substrate/.claude/rules/skill-composition-declarations.md +124 -0
  48. package/substrate/.claude/rules/skill-description-clarity.md +247 -0
  49. package/substrate/.claude/rules/skill-procedure-step-list.md +137 -0
  50. package/substrate/.claude/rules/stuck-signal-diagnostic.md +140 -0
  51. package/substrate/.claude/rules/substrate-config-schema.md +98 -0
  52. package/substrate/.claude/rules/test-list-discipline.md +175 -0
  53. package/substrate/.claude/rules/test-sufficiency.md +210 -0
  54. package/substrate/.claude/rules/testing-tier-config.md +145 -0
  55. package/substrate/.claude/rules/testing.md +38 -0
  56. package/substrate/.claude/rules/turn-estimate-grounding.md +134 -0
  57. package/substrate/.claude/rules/visual-hierarchy.md +437 -0
  58. package/substrate/.claude/rules/we-dont-break-adopters.md +126 -0
  59. package/substrate/.claude/rules/wu-sequencing-compounds.md +145 -0
  60. package/substrate/.claude/skills/build/SKILL.md +1 -1
  61. package/substrate/.claude/skills/chronicle/SKILL.md +55 -0
  62. package/substrate/.claude/skills/clean-artifacts/SKILL.md +249 -0
  63. package/substrate/.claude/skills/decompose/SKILL.md +1 -1
  64. package/substrate/.claude/skills/diagnose/SKILL.md +1 -1
  65. package/substrate/.claude/skills/feynman/SKILL.md +90 -0
  66. package/substrate/.claude/skills/howdoi/SKILL.md +1 -1
  67. package/substrate/.claude/skills/ia-model/SKILL.md +1 -1
  68. package/substrate/.claude/skills/interaction-design/SKILL.md +1 -1
  69. package/substrate/.claude/skills/interpret-input/SKILL.md +8 -8
  70. package/substrate/.claude/skills/journal/SKILL.md +209 -0
  71. package/substrate/.claude/skills/kiss/SKILL.md +1 -1
  72. package/substrate/.claude/skills/launch/SKILL.md +14 -23
  73. package/substrate/.claude/skills/lean-canvas/SKILL.md +1 -1
  74. package/substrate/.claude/skills/longrun/SKILL.md +45 -8
  75. package/substrate/.claude/skills/luminary/SKILL.md +1 -1
  76. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +1 -1
  77. package/substrate/.claude/skills/onboard-repo/SKILL.md +143 -709
  78. package/substrate/.claude/skills/pattern-review/SKILL.md +1 -1
  79. package/substrate/.claude/skills/personas/SKILL.md +5 -5
  80. package/substrate/.claude/skills/promote/SKILL.md +1 -1
  81. package/substrate/.claude/skills/requirement/SKILL.md +1 -1
  82. package/substrate/.claude/skills/retro/SKILL.md +1 -1
  83. package/substrate/.claude/skills/riff/SKILL.md +1 -1
  84. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +1 -1
  85. package/substrate/.claude/skills/session-end/SKILL.md +1 -1
  86. package/substrate/.claude/skills/session-log/SKILL.md +3 -3
  87. package/substrate/.claude/skills/skills/SKILL.md +1 -1
  88. package/substrate/.claude/skills/spec/SKILL.md +1 -1
  89. package/substrate/.claude/skills/sprint/SKILL.md +1 -1
  90. package/substrate/.claude/skills/stage/SKILL.md +1 -1
  91. package/substrate/.claude/skills/state-a-problem/SKILL.md +1 -1
  92. package/substrate/.claude/skills/temperance/SKILL.md +1 -1
  93. package/substrate/.claude/skills/use-case/SKILL.md +1 -1
  94. package/substrate/.claude/skills/user-stories/SKILL.md +1 -1
  95. package/substrate/.claude/skills/value-prop/SKILL.md +1 -1
  96. package/substrate/.claude/skills/verify/SKILL.md +1 -1
  97. package/substrate/.claude/skills/visual-review/SKILL.md +503 -0
  98. package/substrate/.claude/skills/whats-the-plan/SKILL.md +202 -0
  99. package/substrate/.claude/skills/whereami/SKILL.md +2 -2
  100. package/substrate/CONTRIBUTING.md +1 -1
  101. package/substrate/README.md +5 -5
  102. package/substrate/lib/prose-scan-boundary.sh +171 -0
  103. package/substrate/lib/tier-check.sh +50 -1
  104. package/substrate/lib/tier-dependency-audit.sh +159 -4
  105. package/substrate/presence/install/bassclef-sync.template.sh +1 -1
  106. package/substrate/scripts/generate-lite-manifest.sh +21 -5
  107. package/substrate/standards/adr-template.md +86 -0
  108. package/substrate/standards/api-conventions/nextjs.md +84 -0
  109. package/substrate/standards/artifact-composition.md +209 -0
  110. package/substrate/standards/bash-hook-safety.md +246 -0
  111. package/substrate/standards/branch-stacking.md +408 -0
  112. package/substrate/standards/code-safety-principles.md +176 -0
  113. package/substrate/standards/composer-prerequisites.md +155 -0
  114. package/substrate/standards/dependency-discipline/cargo.md +39 -0
  115. package/substrate/standards/dependency-discipline/gem.md +43 -0
  116. package/substrate/standards/dependency-discipline/go-mod.md +41 -0
  117. package/substrate/standards/dependency-discipline/npm.md +42 -0
  118. package/substrate/standards/dependency-discipline/pip.md +42 -0
  119. package/substrate/standards/deployment-topology/ec2-tailscale.md +225 -0
  120. package/substrate/standards/deployment-topology.md +69 -0
  121. package/substrate/standards/docs-sync-allowlist.md +4 -4
  122. package/substrate/standards/domain-and-dns.md +145 -0
  123. package/substrate/standards/frontend-stack.md +67 -0
  124. package/substrate/standards/frontmatter-schema.md +154 -0
  125. package/substrate/standards/hook-injection-discipline.md +202 -0
  126. package/substrate/standards/hook-install-class.md +215 -0
  127. package/substrate/standards/input-handler-interface.md +152 -0
  128. package/substrate/standards/lite-manifest-schema-changes.md +60 -0
  129. package/substrate/standards/luminary-matching.md +105 -0
  130. package/substrate/standards/migration-discipline/active-record.md +50 -0
  131. package/substrate/standards/migration-discipline/alembic.md +43 -0
  132. package/substrate/standards/migration-discipline/gorm.md +50 -0
  133. package/substrate/standards/migration-discipline/prisma.md +53 -0
  134. package/substrate/standards/migration-discipline/sqlalchemy.md +51 -0
  135. package/substrate/standards/mobile-ephemeral-session.md +167 -0
  136. package/substrate/standards/model-routing-discipline.md +160 -0
  137. package/substrate/standards/persona-schema.md +229 -0
  138. package/substrate/standards/pluggable-luminaries.md +323 -0
  139. package/substrate/standards/pr-body-discipline.md +115 -0
  140. package/substrate/standards/preview-state-schema.md +189 -0
  141. package/substrate/standards/reserved-skill-names.md +120 -0
  142. package/substrate/standards/scannable-multi-option-output.md +261 -0
  143. package/substrate/standards/sdlc-gates/typescript.md +57 -0
  144. package/substrate/standards/session-board.md +256 -0
  145. package/substrate/standards/state-spine-contract.md +255 -0
  146. package/substrate/standards/steering-hints/kiss-words.md +11 -0
  147. package/substrate/standards/substrate-config-schema.md +267 -0
  148. package/substrate/standards/tier-dependency-analysis.md +1 -1
  149. package/substrate/standards/tier-tag-schema.md +1 -1
  150. package/substrate/standards/two-layer-config.md +99 -0
  151. package/substrate/standards/use-case-format.md +292 -0
  152. package/substrate/standards/user-story-invest.md +268 -0
  153. package/substrate/standards/velocity-and-appetite.md +229 -0
  154. package/substrate/standards/voice-input-pattern.md +119 -0
  155. package/substrate/standards/worktree-management.md +211 -0
  156. package/substrate/templates/chronicle-template.md +75 -0
  157. package/substrate/templates/memory-proposal-template.md +77 -0
  158. package/substrate/templates/persona-template.md +200 -0
  159. package/substrate/templates/pr-faq.md +45 -0
  160. package/substrate/templates/secret-rotation-template.md +162 -0
  161. package/substrate/templates/spec-template.md +131 -0
  162. package/substrate/templates/use-case-template.md +194 -0
  163. package/substrate/templates/user-story-template.md +107 -0
package/dist/cli.cjs CHANGED
@@ -595,18 +595,20 @@ function runInit(argv) {
595
595
  }
596
596
  ];
597
597
  if (args.dryRun) {
598
- return runDryRun$1(plans);
598
+ runDryRun$1(plans);
599
+ dispatchSubstrateCopy(targetDir, args.force, args.verbose, true);
600
+ return 0;
599
601
  }
600
602
  const exitCode = runReal$1(plans, args.force, args.verbose, targetDir);
601
603
  if (exitCode === 0) {
602
- dispatchSubstrateCopy(targetDir, args.force, args.verbose);
604
+ dispatchSubstrateCopy(targetDir, args.force, args.verbose, false);
603
605
  }
604
606
  return exitCode;
605
607
  }
606
- function dispatchSubstrateCopy(targetDir, force, verbose) {
608
+ function dispatchSubstrateCopy(targetDir, force, verbose, dryRun) {
607
609
  let result;
608
610
  try {
609
- result = copySubstrate(targetDir, { force });
611
+ result = copySubstrate(targetDir, { force, dryRun });
610
612
  } catch (e) {
611
613
  const err = e;
612
614
  process.stderr.write(
@@ -619,6 +621,21 @@ function dispatchSubstrateCopy(targetDir, force, verbose) {
619
621
  );
620
622
  process.exit(2);
621
623
  }
624
+ if (dryRun) {
625
+ const wouldCopy = result.wouldCopy ?? [];
626
+ for (const relativePath of wouldCopy) {
627
+ const targetPath = node_path.join(targetDir, relativePath);
628
+ process.stdout.write(` ${"would create".padEnd(14)} ${targetPath}
629
+ `);
630
+ }
631
+ if (wouldCopy.length > 0) {
632
+ process.stdout.write(
633
+ `bassclef init: ${wouldCopy.length} substrate files would be copied.
634
+ `
635
+ );
636
+ }
637
+ return;
638
+ }
622
639
  if (result.copied.length === 0 && result.refused.length === 0 && result.errored.length === 0) {
623
640
  return;
624
641
  }
@@ -638,6 +655,11 @@ function dispatchSubstrateCopy(targetDir, force, verbose) {
638
655
  if (result.errored.length > 0) parts.push(`${result.errored.length} error(s)`);
639
656
  process.stdout.write(`bassclef init: ${parts.join(", ")}.
640
657
  `);
658
+ const grandTotal = 2 + result.copied.length;
659
+ process.stdout.write(
660
+ `bassclef init: ${grandTotal} files total (2 config + ${result.copied.length} substrate).
661
+ `
662
+ );
641
663
  if (verbose && result.erroredMessages) {
642
664
  for (const msg of result.erroredMessages) {
643
665
  process.stderr.write(` substrate: ${msg}
@@ -745,7 +767,7 @@ function runReal$1(plans, force, verbose, targetDir) {
745
767
  }
746
768
  if (anyRefused && created > 0) {
747
769
  process.stdout.write(
748
- `bassclef init: ${created} created, ${unchanged} unchanged. Pass --force to overwrite.
770
+ `bassclef init: ${created} config files created, ${unchanged} unchanged. Pass --force to overwrite.
749
771
  `
750
772
  );
751
773
  process.stdout.write(
@@ -754,7 +776,7 @@ function runReal$1(plans, force, verbose, targetDir) {
754
776
  );
755
777
  return 0;
756
778
  }
757
- process.stdout.write(`bassclef init: ${created} created, ${unchanged} unchanged.
779
+ process.stdout.write(`bassclef init: ${created} config files created, ${unchanged} unchanged.
758
780
  `);
759
781
  process.stdout.write(
760
782
  `bassclef init: your substrate lives under .claude/. Add .claude/ to .gitignore if you have not.
@@ -812,6 +834,16 @@ function usage$2() {
812
834
  " .claude/settings.json Claude Code settings (minimal, opt-in blocks)",
813
835
  " substrate.config.md Bassclef project manifest",
814
836
  " .bassclef/init.manifest.json Record of what init wrote (used by sync)",
837
+ "",
838
+ " Plus the bundled substrate tree (~280 files):",
839
+ " .claude/{agents,hooks,luminaries,rules,skills}/",
840
+ " standards/, templates/, scripts/, lib/, presence/install/",
841
+ " architecture/decisions/",
842
+ " AGENTS.md, CLAUDE-lite.md, README.md, CONTRIBUTING.md,",
843
+ " SECURITY.md, CODE_OF_CONDUCT.md",
844
+ "",
845
+ " Run with --dry-run first to preview the full file list before",
846
+ " writing anything to disk.",
815
847
  ""
816
848
  ].join("\n");
817
849
  }
@@ -1547,6 +1579,8 @@ async function runMigrate(argv) {
1547
1579
  }
1548
1580
  const USAGE = `bassclef — install and upgrade bassclef in your project
1549
1581
 
1582
+ Start here: cd to your project, then run \`bassclef init\`.
1583
+
1550
1584
  Usage:
1551
1585
  bassclef init [options] Write bassclef config into a project directory
1552
1586
  bassclef sync [options] Update bassclef-managed files in place
package/dist/cli.js CHANGED
@@ -572,18 +572,20 @@ function runInit(argv) {
572
572
  }
573
573
  ];
574
574
  if (args.dryRun) {
575
- return runDryRun$1(plans);
575
+ runDryRun$1(plans);
576
+ dispatchSubstrateCopy(targetDir, args.force, args.verbose, true);
577
+ return 0;
576
578
  }
577
579
  const exitCode = runReal$1(plans, args.force, args.verbose, targetDir);
578
580
  if (exitCode === 0) {
579
- dispatchSubstrateCopy(targetDir, args.force, args.verbose);
581
+ dispatchSubstrateCopy(targetDir, args.force, args.verbose, false);
580
582
  }
581
583
  return exitCode;
582
584
  }
583
- function dispatchSubstrateCopy(targetDir, force, verbose) {
585
+ function dispatchSubstrateCopy(targetDir, force, verbose, dryRun) {
584
586
  let result;
585
587
  try {
586
- result = copySubstrate(targetDir, { force });
588
+ result = copySubstrate(targetDir, { force, dryRun });
587
589
  } catch (e) {
588
590
  const err = e;
589
591
  process.stderr.write(
@@ -596,6 +598,21 @@ function dispatchSubstrateCopy(targetDir, force, verbose) {
596
598
  );
597
599
  process.exit(2);
598
600
  }
601
+ if (dryRun) {
602
+ const wouldCopy = result.wouldCopy ?? [];
603
+ for (const relativePath of wouldCopy) {
604
+ const targetPath = join(targetDir, relativePath);
605
+ process.stdout.write(` ${"would create".padEnd(14)} ${targetPath}
606
+ `);
607
+ }
608
+ if (wouldCopy.length > 0) {
609
+ process.stdout.write(
610
+ `bassclef init: ${wouldCopy.length} substrate files would be copied.
611
+ `
612
+ );
613
+ }
614
+ return;
615
+ }
599
616
  if (result.copied.length === 0 && result.refused.length === 0 && result.errored.length === 0) {
600
617
  return;
601
618
  }
@@ -615,6 +632,11 @@ function dispatchSubstrateCopy(targetDir, force, verbose) {
615
632
  if (result.errored.length > 0) parts.push(`${result.errored.length} error(s)`);
616
633
  process.stdout.write(`bassclef init: ${parts.join(", ")}.
617
634
  `);
635
+ const grandTotal = 2 + result.copied.length;
636
+ process.stdout.write(
637
+ `bassclef init: ${grandTotal} files total (2 config + ${result.copied.length} substrate).
638
+ `
639
+ );
618
640
  if (verbose && result.erroredMessages) {
619
641
  for (const msg of result.erroredMessages) {
620
642
  process.stderr.write(` substrate: ${msg}
@@ -722,7 +744,7 @@ function runReal$1(plans, force, verbose, targetDir) {
722
744
  }
723
745
  if (anyRefused && created > 0) {
724
746
  process.stdout.write(
725
- `bassclef init: ${created} created, ${unchanged} unchanged. Pass --force to overwrite.
747
+ `bassclef init: ${created} config files created, ${unchanged} unchanged. Pass --force to overwrite.
726
748
  `
727
749
  );
728
750
  process.stdout.write(
@@ -731,7 +753,7 @@ function runReal$1(plans, force, verbose, targetDir) {
731
753
  );
732
754
  return 0;
733
755
  }
734
- process.stdout.write(`bassclef init: ${created} created, ${unchanged} unchanged.
756
+ process.stdout.write(`bassclef init: ${created} config files created, ${unchanged} unchanged.
735
757
  `);
736
758
  process.stdout.write(
737
759
  `bassclef init: your substrate lives under .claude/. Add .claude/ to .gitignore if you have not.
@@ -789,6 +811,16 @@ function usage$2() {
789
811
  " .claude/settings.json Claude Code settings (minimal, opt-in blocks)",
790
812
  " substrate.config.md Bassclef project manifest",
791
813
  " .bassclef/init.manifest.json Record of what init wrote (used by sync)",
814
+ "",
815
+ " Plus the bundled substrate tree (~280 files):",
816
+ " .claude/{agents,hooks,luminaries,rules,skills}/",
817
+ " standards/, templates/, scripts/, lib/, presence/install/",
818
+ " architecture/decisions/",
819
+ " AGENTS.md, CLAUDE-lite.md, README.md, CONTRIBUTING.md,",
820
+ " SECURITY.md, CODE_OF_CONDUCT.md",
821
+ "",
822
+ " Run with --dry-run first to preview the full file list before",
823
+ " writing anything to disk.",
792
824
  ""
793
825
  ].join("\n");
794
826
  }
@@ -1524,6 +1556,8 @@ async function runMigrate(argv) {
1524
1556
  }
1525
1557
  const USAGE = `bassclef — install and upgrade bassclef in your project
1526
1558
 
1559
+ Start here: cd to your project, then run \`bassclef init\`.
1560
+
1527
1561
  Usage:
1528
1562
  bassclef init [options] Write bassclef config into a project directory
1529
1563
  bassclef sync [options] Update bassclef-managed files in place
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const version = "0.1.0";
3
+ const version = "0.1.3";
4
4
  exports.version = version;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version: "0.1.0";
1
+ export declare const version: "0.1.3";
2
2
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const version = "0.1.0";
1
+ const version = "0.1.3";
2
2
  export {
3
3
  version
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thebassclef/lite",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "Bassclef CLI — install and upgrade bassclef in your project with two commands.",
5
5
  "keywords": ["bassclef", "claude-code", "cli", "scaffolding"],
6
6
  "homepage": "https://github.com/sunj-labs/bassclef-cli",