diff --git a/.claude/memory/decisions.md b/.claude/memory/decisions.md index d785cab..3f3c741 100644 --- a/.claude/memory/decisions.md +++ b/.claude/memory/decisions.md @@ -834,3 +834,11 @@ rules: - **Rationale**: mid-run gates defeat the skill's point (hands-off grouped sweep, user away). Auto-checking TODO reproduces the exact lie /reconcile catches — RED-proven, baseline did it. Branch+report = same approval semantics as audit-delta's 3c gate, moved after the fact where a headless run can afford it. - **Alternatives rejected**: per-phase AskUserQuestion gates (audit-delta model — blocks headless); one consolidated pre-fix gate (still blocks); auto-edit TODO on oracle proof (inference ≠ approval); plain-branch fallback on non-gitflow repos (violates lib-only doctrine → report-only instead). - **Reference**: skills/tour/SKILL.md + CLAUDE.md routing (feature/tour-skill `73e6a1c`). TDD trail [[LRN-099]] [[LRN-100]] [[EVAL-014]]. + +## BDR-053 — ctx7 single surface: keep find-docs skill, kill context7.md rule + +- **Date**: 2026-07-06 +- **Decision**: ctx7 gets ONE session surface = `skills/find-docs` (lazy body, description-only cost). `rules/context7.md` deleted + install-plugins.sh STEP ctx7 purges it unconditionally post-setup (`rm -f`, generator has no skip-rule flag — `--claude`/`--cli` = target/mode only). darwin-skill entry dropped from skills-lock.json same pass (F8: lock stale `6bbcda37…` vs disk `c3220018…`, no re-pin verb in npx skills — unpinned rather than hand-edit undocumented hash). +- **Rationale**: rule = ~490 tok/session session-start duplicate of the skill (job1 F10 + job2); skill self-suffices (876-char description carries the triggers, body has full CLI flow). Purge-in-installer beats one-shot rm: survives re-runs + manual `ctx7 setup`. +- **Alternatives rejected**: kill skill keep rule (rule always-on, costs every session even non-lib work; skill lazy — wrong direction); hand-trim generated files (fight the generator, LRN-039 class); hand-edit lock hash (algo undocumented). +- **Reference**: chore/ctx7-single-surface; job1 F10, job2 F8/F13. User decision 2026-07-06. diff --git a/.claude/memory/journal.md b/.claude/memory/journal.md index 73e2cf8..55bc886 100644 --- a/.claude/memory/journal.md +++ b/.claude/memory/journal.md @@ -338,4 +338,5 @@ rules: - job2 config-smell audit shipped read-only: `.audit/job2-report.md` — surface skills/agents/hooks/plugins/settings(.local), 17 findings (3 RISK perms, 6 DRIFT, 2 BLOAT, 3 OVERLAP, 2 DEAD, 1 struct), 26 diffs base c6d5e03, 0 decision-conflicts, all fresh-context verified [[EVAL-017]]. Live catch: design hook fired on audit's own task-notifications (14/20 recent fires). - Brief premise corrected: Edit/Bash(hooks/*.sh) permission rule NEVER existed — was config-protection case arm (:37) + job1 sentinel bypasses. Phase-0 UNREFERENCED metrics 100% broken (grep -q kills -l). - User GO full execution incl. 3 RISK: cp/mv→ask, find -exec deny mirror, settings.local prune (python3 -, rtk git *). F9 fable default committed (user re-chose via /model), F16 gitflow-migrate.sh removed (git-recoverable), F8/find-docs skip (generator-owned). Executor = Sonnet subagent on chore/job2-fixes, NO finish. -- job2 EXECUTED: 15 commits chore/job2-fixes, all diffs first-try, `make test` wired + first-ever full run ALL GREEN (gitflow 71/0). Measured −309 tok/session (agents 4840→3609 chars); design hook no longer fires on task-notifications. Executor STOP exercised for real: F4 gate red → root-caused to job1 oracle regression (3f639b3), fixed as [[LRN-104]]; 2nd YAML error/file unmasked (onboard/plugin-check) → closed 6a3b197. Skips: F8 (npx skills has no re-pin verb), find-docs (ctx7). Open: F8 route, find-docs/ctx7 (couple job1-F10), merged on user GO. +- job2 EXECUTED: 15 commits chore/job2-fixes, all diffs first-try, `make test` wired + first-ever full run ALL GREEN (gitflow 71/0). Measured −309 tok/session (agents 4840→3609 chars); design hook no longer fires on task-notifications. Executor STOP exercised for real: F4 gate red → root-caused to job1 oracle regression (3f639b3), fixed as [[LRN-104]]; 2nd YAML error/file unmasked (onboard/plugin-check) → closed 6a3b197. Skips: F8 (npx skills has no re-pin verb), find-docs (ctx7). Merged develop 964c5dd on user GO. +- job2 tail closed [[BDR-053]]: context7.md rule killed (file rm + installer purge, find-docs = single ctx7 surface, ~−490 tok/session more) + darwin lock entry dropped (F8). chore/ctx7-single-surface → develop, pushed. job1+job2 fully closed; total measured ≈ −800 tok/session. diff --git a/install-plugins.sh b/install-plugins.sh index 7c259ba..7edd35d 100644 --- a/install-plugins.sh +++ b/install-plugins.sh @@ -611,8 +611,7 @@ if command -v ctx7 &>/dev/null; then fi # CLI + Skills mode: install the find-docs skill into ~/.claude/skills when # absent (it is gitignored — ctx7 owns it, this regenerates it on a fresh - # clone). Guarded on absence so a re-run never clobbers a customized config - # (setup also (re)writes ~/.claude/rules/context7.md). + # clone). Guarded on absence so a re-run never clobbers a customized config. if [ ! -f "$HOME/.claude/skills/find-docs/SKILL.md" ]; then if ctx7 setup --claude --cli -y /dev/null; then ok "ctx7 CLI + Skills configured (find-docs skill installed)" @@ -620,6 +619,11 @@ if command -v ctx7 &>/dev/null; then warn "ctx7 setup failed — run manually: ctx7 setup --claude --cli" fi fi + # Single ctx7 surface = the find-docs skill (BDR-053). setup also (re)writes + # ~/.claude/rules/context7.md — a session-start duplicate of the skill + # (~490 tok/session, job1 F10). Purge it unconditionally so re-runs and + # manual `ctx7 setup` invocations stay rule-free. + rm -f "$HOME/.claude/rules/context7.md" info "Standalone usage: ctx7 docs /vercel/next.js \"middleware\"" fi diff --git a/rules/README.md b/rules/README.md index 9346163..c9d8860 100644 --- a/rules/README.md +++ b/rules/README.md @@ -23,9 +23,11 @@ Docs: https://code.claude.com/docs/en/memory.md#path-specific-rules ## Machine-owned files (gitignored, regenerated) -- `context7.md` — written by `ctx7 setup --claude --cli` - (install-plugins.sh STEP ctx7). Not vendored: ctx7 owns its content - and rewrites it on setup; the repo would fight the generator. Same - treatment as `skills/find-docs/`. +- `context7.md` — DELETED BY DESIGN (BDR-053, 2026-07-06): `ctx7 setup + --claude --cli` still writes it, but install-plugins.sh STEP ctx7 + purges it right after — the find-docs skill is the single ctx7 + surface; the rule was a ~490 tok/session session-start duplicate + (job1 F10). If it reappears (manual `ctx7 setup`), delete it or + re-run `make plugin`. Hand-written rules ARE tracked — add them normally.