claudemd-cli 0.11.0 → 0.12.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/CHANGELOG.md CHANGED
@@ -8,6 +8,34 @@ All notable changes to the `claudemd` plugin. This changelog tracks plugin artif
8
8
  - **Canonical spec version source**: `spec/CLAUDE.md` top-line title (`# AI-CODING-SPEC vX.Y.Z — Core`) + `spec/CLAUDE-changelog.md` top `##` entry.
9
9
  - **Plugin semver vs spec semver** are independent: plugin patch (0.2.0 → 0.2.1) may ship when spec is unchanged (this release); plugin minor (0.1.9 → 0.2.0) ships when spec minor updates (v0.2.0 shipped spec v6.10.0).
10
10
 
11
+ ## [0.12.0] - 2026-05-11
12
+
13
+ **Minor — feat: `/claudemd-analyze` spec ↔ implementation coherence audit.** Borrowed from github/spec-kit's `/analyze` pattern, scoped to claudemd's three highest-value drift surfaces. Read-only by default; `--strict` flag exits non-zero on CRITICAL/HIGH for pre-tag ship gate.
14
+
15
+ ### What changed
16
+
17
+ - **New script** `scripts/spec-coherence-audit.js` (~280 LOC). Three checks:
18
+ 1. **§EXT cross-ref resolution** (CRITICAL on miss) — every `§EXT §<id>` ref in `spec/CLAUDE.md` must resolve to a `##+ §<id>` heading in `spec/CLAUDE-extended.md`. Catches the "core cites section, extended doesn't have it" drift family the v0.9.30 partial-impl bug hinted at structurally.
19
+ 2. **Sizing line accuracy** (HIGH on >±20B drift) — parses the canonical `**Sizing** (...): core N → M bytes; extended N → M bytes` line in `spec/CLAUDE-extended.md`, compares against `fs.statSync().size`. Tolerance per `feedback_spec_sizing_recursive_rewrite.md` accepted-drift envelope.
20
+ 3. **MEMORY.md ↔ files bidirectional** (MEDIUM on dangling refs, LOW on orphan files) — scans the project's MEMORY.md index, cross-references against `~/.claude/projects/<encoded>/memory/*.md`. CC `tr '/._'` encoding consistent with `memory-read-check.sh` + `memory-prompt-hint.sh`.
21
+ - **New slash command** `commands/claudemd-analyze.md`.
22
+ - **Severity scheme** (Spec Kit borrowed): CRITICAL / HIGH / MEDIUM / LOW grouped findings + per-check `[✓]/[△]/[✗]` summary.
23
+ - **Out of scope** (covered by sibling commands; explicitly documented in script header + slash command body to avoid duplication): HARD-rule → hook coverage → `safety-coverage-audit.js`; section_anchor resolution → `hard-rules-drift.test.js`; tag-FP → `claudemd-doctor memory-tag-specificity`; banned-vocab 3-way drift → deferred to v0.13.0.
24
+ - **CLI**: `--json` machine output; `--strict` exit-1 gate; `--project=<cwd>` MEMORY.md scope override.
25
+
26
+ ### Why minor, not patch
27
+
28
+ Pure additive: new script, new slash command, no existing artifact format / output shape changes. But it introduces a new contract surface (`/claudemd-analyze` as a publicly-supported coherence check + CI-gateable `--strict` mode) — minor bump makes the contract semver-discoverable for downstream automation that wants to depend on it.
29
+
30
+ ### Tests
31
+
32
+ - New `tests/scripts/spec-coherence-audit.test.js`: 12 cases — real-repo smoke + structured-report shape + synthetic-fixture for each failure class (unresolved §EXT ref → CRITICAL, literal `§X-EXT` placeholder NOT flagged, sizing >±20B → HIGH, sizing within tolerance → ok, dangling memory ref → MEDIUM, orphan memory file → LOW, missing MEMORY.md → silent no-index, slash/dot/underscore cwd encoding parity, severity aggregation).
33
+ - Suite: 396/396 JS + 20/20 hook + 2/2 integration pass.
34
+
35
+ ### Sizing
36
+
37
+ No spec changes; same `spec/CLAUDE.md` v6.11.13 baseline as v0.11.0.
38
+
11
39
  ## [0.11.0] - 2026-05-11
12
40
 
13
41
  **Minor — feat: proactive MEMORY.md tag hint at UserPromptSubmit.** New hook `memory-prompt-hint` fires on every user prompt, parses MEMORY.md `[tag, tag]` index, matches against the prompt with the same word-boundary + declension + meta-escape regex as `memory-read-check.sh`, and emits an `additionalContext` block listing un-Read matched memory files. Attacks the observed §11 cite-recall ~8% (2/24) by surfacing relevant memories *before* the agent acts, not waiting for the ship-time deny.
package/README.md CHANGED
@@ -59,7 +59,7 @@ Verify in one command (Linux): `node --version && jq --version && gh --version &
59
59
  | Layer | Contents |
60
60
  |---|---|
61
61
  | 14 shell hooks | `banned-vocab-check` · `pre-bash-safety-check` · `ship-baseline-check` · `residue-audit` · `memory-read-check` · `memory-prompt-hint` · `sandbox-disposal-check` · `session-start-check` · `session-summary` · `session-end-check` · `transcript-vocab-scan` · `transcript-structure-scan` · `version-sync` · `mem-audit` |
62
- | 9 slash commands | `/claudemd-status` · `/claudemd-update` · `/claudemd-audit` · `/claudemd-toggle` · `/claudemd-doctor` · `/claudemd-uninstall` · `/claudemd-rules` · `/claudemd-clean-residue` · `/claudemd-sparkline` |
62
+ | 10 slash commands | `/claudemd-status` · `/claudemd-update` · `/claudemd-audit` · `/claudemd-toggle` · `/claudemd-doctor` · `/claudemd-analyze` · `/claudemd-uninstall` · `/claudemd-rules` · `/claudemd-clean-residue` · `/claudemd-sparkline` |
63
63
  | 1 standalone CLI | `claudemd-cli lint` · `claudemd-cli audit` ([npm: `claudemd-cli`](https://www.npmjs.com/package/claudemd-cli)) |
64
64
  | Spec v6.11.13 | `~/.claude/CLAUDE.md` · `CLAUDE-extended.md` · `CLAUDE-changelog.md` (backup-before-overwrite) |
65
65
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudemd-cli",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Standalone CLI for §10-V banned-vocab + transcript scanning. Companion to the claudemd Claude Code plugin (github.com/sdsrss/claudemd) for use in git pre-commit hooks, GitHub Actions, and other agents.",
5
5
  "type": "module",
6
6
  "bin": {