diff --git a/.claude/memory/journal.md b/.claude/memory/journal.md index d259d8e..f55f240 100644 --- a/.claude/memory/journal.md +++ b/.claude/memory/journal.md @@ -518,3 +518,4 @@ rules: ## 2026-09-27 - bugfix/gitignore-diagram-allowlist merged into develop on user go, `gitflow finish` → facd26d, pushed, copies removed by the lib. Day 2026-09-25 lot fully on develop: BDR-101 default profile, full +4 gstack skills, gitignore allowlist. No working branch anywhere; `skills/diagram` ignored. +- 6-repo review, case 1 (ponytail + chisle, token-economy layer): rejected as plugins. Ponytail 146.7k stars, injects ~600 tok at SessionStart + every SubagentStart; chisle 566 stars, PostToolUse `updatedToolOutput` rewrite unverified on native tools, prose rules collide with writing-style.md; rtk already covers input axis (chisle bench: dedup 0 hit on rtk-filtered corpus); caveman purge precedent v3.5.0. Borrowed the ordered YAGNI ladder + `shortcut:` marker into CLAUDE.global.md § Code style, user go. feature/yagni-ladder UNMERGED. diff --git a/.claude/tasks/TODO.md b/.claude/tasks/TODO.md index 384daf7..9da1211 100644 --- a/.claude/tasks/TODO.md +++ b/.claude/tasks/TODO.md @@ -1,5 +1,15 @@ # TODO +## 2026-09-27 — YAGNI ladder + shortcut marker in doctrine (feature/yagni-ladder) +Case 1 of the 6-repo review (ponytail, chisle). Both rejected as plugins: per-turn +and per-subagent injection, prose rules colliding with writing-style.md, caveman +precedent (purged v3.5.0), rtk already covers the input axis. One net gain, the +ordered decision ladder, borrowed into CLAUDE.global.md § Code style plus a +`shortcut:` marker convention. 6 lines, 287 → 293, budget 320. +- [x] L1 doctrine edit, doctrine-citers census, banner budget. +UNMERGED — human gate. Cases 2-5 (agent-skills, ui-skills, reticle, OmniRoute) +follow one by one. + ## 2026-09-25 — full profile +4 gstack web/doc skills (bugfix/full-profile-web-doc-skills) User go after the "why is gstack off under full?" answer (it was not: unapplied default). `scrape`, `skillify`, `diagram`, `make-pdf` join full.profile; the rest diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e9b01f..397c391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -126,6 +126,14 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). seeded like a real tree (gstack off, nothing linked). ### Changed +- **CLAUDE.global.md § Code style** — the ordered YAGNI decision ladder + (not needed → reuse → stdlib → platform → installed dependency → one line + → the minimum that works, after understanding the problem) and a + `shortcut:` comment convention for assumed shortcuts, harvested into + TODO.md. Six lines, 287 → 293 of the 320 budget. Case 1 of the 6-repo + review: ponytail and chisle rejected as plugins (per-turn and + per-subagent injection, prose rules colliding with writing-style.md, + the caveman purge precedent, rtk already covering the input axis). - **Default profile = `full`.** With no selection (`.active-profile` absent, empty, or the legacy `none`), `full` is in force: statusline, `profile.sh current`, `gstack off` and `reset` all resolve it the same diff --git a/CLAUDE.global.md b/CLAUDE.global.md index c10df32..aa5bb4d 100644 --- a/CLAUDE.global.md +++ b/CLAUDE.global.md @@ -9,6 +9,12 @@ Apply unless repo-specific instructions override. - One responsibility per function/method. - Preserve existing behavior unless asked. - Scope changes to task — no unrelated edits. +- Before writing code, stop at the first rung that applies: not needed + (YAGNI) → reuse what the codebase has → stdlib → platform/runtime + feature → dependency already installed → one line → the minimum that + works. Runs after understanding the problem, never instead of it. +- Assumed shortcut → `shortcut:` comment at the site (limit + upgrade + path), harvested into TODO.md so "later" stays findable. ## Limits (adapt to language) - Max 25 logic lines/function (executable statements; comments and