claudemd-cli 0.10.1 → 0.11.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,32 @@ 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.11.0] - 2026-05-11
12
+
13
+ **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.
14
+
15
+ ### What changed
16
+
17
+ - **New hook** `hooks/memory-prompt-hint.sh` (~110 LOC). UserPromptSubmit matcher; emits `{suppressOutput:true, hookSpecificOutput:{hookEventName,additionalContext}}` listing the un-Read matched files (capped at 5 + overflow footer; full match count carried in telemetry `extra.match_count`).
18
+ - **Proactive twin** of `memory-read-check.sh`: read-check denies bash ship verbs at ship time; prompt-hint suggests files at prompt time. Both share tag-parsing logic; hint additionally checks the session transcript for prior Read so already-Read files don't generate noise.
19
+ - **Schema additive**: `event="suggest"` + `spec_section="§11-memory-hint"` documented in `docs/RULE-HITS-SCHEMA.md` Events table + Spec section taxonomy. Contract test (`tests/hooks/contract.test.sh`) DOCUMENTED array extended.
20
+ - **Registry sync**: 14 → 15 hooks. `scripts/lib/hook-registry.js` adds entry; `tests/scripts/{install,hook-registry}.test.js` MCOUNT pin moved; `tests/integration/full-lifecycle.test.sh` manifest count + regex group moved; `README.md` + `commands/claudemd-toggle.md` kill-switch list extended.
21
+ - **Kill-switch**: `DISABLE_MEMORY_HINT_HOOK=1`.
22
+
23
+ ### Why minor, not patch
24
+
25
+ Pure additive: new hook, new event, new spec_section, no existing schema or audit-output shape changes. But: this is the first hook that *injects* into user-prompt context (not just denies / records), and it surfaces on every prompt — user-visible new default behavior crosses the §2 "released-artifact user-visible default behavior change" L3 threshold mentioned in spec v6.11.13, so the bump is minor (not patch) to make the new context-injection contract semver-discoverable.
26
+
27
+ ### Tests
28
+
29
+ - New `tests/hooks/memory-prompt-hint.test.sh`: 12 cases — single tag match emits, no match silent, prior Read suppressed, multi-tag match, kill-switch, untagged entry skipped, missing MEMORY.md fail-open, empty prompt silent, underscore+dot cwd encoding, regex-meta literal match, telemetry row schema, cap-at-5 + overflow footer.
30
+ - `tests/hooks/contract.test.sh` DOCUMENTED array: `suggest:memory-prompt-hint` added (closes Invariants B + C).
31
+ - Suite: 20/20 hook + 384/384 JS + 2/2 integration pass.
32
+
33
+ ### Sizing
34
+
35
+ No spec changes; same `spec/CLAUDE.md` v6.11.13 baseline as v0.10.1.
36
+
11
37
  ## [0.10.1] - 2026-05-11
12
38
 
13
39
  **Patch — feat: §13.1 demote-analysis denominator signal.** New PreToolUse:Read hook `session-extended-read` records once per session when `~/.claude/CLAUDE-extended.md` is read (per spec §2.2 EXT LOADING). Backlog item 1C from v0.10.0 closed: extended-scope rules with "0 hits in 90d" can now be qualified against the count of sessions that actually loaded extended, instead of conflating "rule cold" with "extended rarely loaded."
package/README.md CHANGED
@@ -58,7 +58,7 @@ Verify in one command (Linux): `node --version && jq --version && gh --version &
58
58
 
59
59
  | Layer | Contents |
60
60
  |---|---|
61
- | 13 shell hooks | `banned-vocab-check` · `pre-bash-safety-check` · `ship-baseline-check` · `residue-audit` · `memory-read-check` · `sandbox-disposal-check` · `session-start-check` · `session-summary` · `session-end-check` · `transcript-vocab-scan` · `transcript-structure-scan` · `version-sync` · `mem-audit` |
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
62
  | 9 slash commands | `/claudemd-status` · `/claudemd-update` · `/claudemd-audit` · `/claudemd-toggle` · `/claudemd-doctor` · `/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) |
@@ -169,6 +169,7 @@ export DISABLE_PRE_BASH_SAFETY_HOOK=1 # or
169
169
  export DISABLE_SHIP_BASELINE_HOOK=1 # or
170
170
  export DISABLE_RESIDUE_AUDIT_HOOK=1 # or
171
171
  export DISABLE_MEMORY_READ_HOOK=1 # or
172
+ export DISABLE_MEMORY_HINT_HOOK=1 # v0.11.0+ — UserPromptSubmit MEMORY.md tag pre-matcher (proactive §11 hint)
172
173
  export DISABLE_SANDBOX_DISPOSAL_HOOK=1 # or
173
174
  export DISABLE_SESSION_START_HOOK=1 # or
174
175
  export DISABLE_SESSION_SUMMARY_HOOK=1 # v0.8.0+ — Stop hook writing summary
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudemd-cli",
3
- "version": "0.10.1",
3
+ "version": "0.11.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": {