Commit Graph

70 Commits

Author SHA1 Message Date
bastien
34d850336e darwin: Phase 3 report — bottom-5 round 1, avg 58.0 → 78.2
Audit at .claude/audits/DARWIN-SKILL-2026-05-12.md.
5 skills optimized (status, refactor, plugin-check, skills-perso,
commit-change), all KEEP. Rounds 2-3 skipped — diminishing returns.
graphify deferred to exploratory rewrite (Phase 2.5).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 18:01:42 +02:00
bastien
f1e2f3dfd3 fix(memory): BDR-011 body status — superseded by BDR-013
/prune-memory first run flagged body↔Index drift on BDR-011:
- Index row (since 2026-05-11): `superseded by BDR-013`
- Body line 201 (since 2026-05-07): `Status: accepted`

BDR-013 explicitly supersedes BDR-011's 4-chapter doc structure with
6-chapter restructure (scores+NAP promoted). Body now consistent with
Index.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-11 16:27:20 +02:00
bastien
bf54de84a1 docs(memory): BDR-013 + BDR-014 + LRN-014..016 + 2026-05-11 journal append
decisions.md:
- BDR-013: client-handover 6-chapter doc — promote scores §2 + NAP §4
  (supersedes BDR-011 4-chapter structure).
- BDR-014: personal SKILL.md descriptions follow "Use when [triggers]…"
  pattern + 1024-char frontmatter spec limit.
- Backfilled missing BDR-012 Index row (entry existed in body, Index
  skipped in prior session).

learnings.md:
- LRN-014: pandoc base gfm strips header id attrs — need
  `gfm+gfm_auto_identifiers` for internal anchor links.
- LRN-015: BrightLocal Free Tools retired 2026 — Moz Local Citation
  Checker is current free NAP-audit replacement.
- LRN-016: pandoc GFM checkbox markup breaks adjacent-sibling CSS —
  target `li > input[type="checkbox"]` directly, not `+ *` siblings.
- Backfilled missing LRN-013 Index row.

journal.md:
- 2026-05-11 session: orchestrator audit + writing-skills CSO fixes +
  client-handover 6-chapter restructure + 4 atomic commits e2425ca..0fb634d.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-11 16:15:05 +02:00
bastien
17ef213548 docs(memory): BDR-012 + LRN-013 + 2026-05-07 journal append
- BDR-012 — `/client-handover` cover: white bg + green-forest accents +
  PNG logo default. Captures iteration (cream → green-dark rejected →
  white-pure final). Why: light theme matches zenquality.fr without
  overpowering long client-facing text. Solid green-dark reserved for
  marketing covers, not deliverables.
- LRN-013 — marked CLI 16.x ignores stdin and dumps own cli.js source.
  Pattern: do not assume marked CLI accepts stdin like awk/jq/sed.
  Always pass `-i FILE`. Smoke-test MD→HTML output for known content.
- Journal — appends bugfix subsection under 2026-05-07 with the three
  bugs, root causes, fixes, verified output (164 KB / 19 pages).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 19:57:20 +02:00
bastien
591a035ec6 docs(memory): BDR-011 + LRN-012 + 2026-05-07 journal append 2026-05-07 19:11:44 +02:00
bastien
5d8103f595 docs(memory): BDR-010 + LRN-011 + 2026-05-07 journal entry 2026-05-07 18:39:16 +02:00
bastien
64cef26e50 docs(darwin-skill): audit report + LRN-008/009/010 + journal entry 2026-05-06 18:39:12 +02:00
bastien
7841a53102 chore(memory): capitalize LRN-007 from toggle-external fix
Pattern: toggle scripts for tools with separate install + symlink steps
must check 3 states (disabled-dir, enabled-dir, source-only), not 2.
Source-only branch creates symlink in place rather than failing. Error
messages name the path checked, not just the abstract tool name, so
callers can diagnose install vs symlink state without rereading the
script. Symmetric pairs (enable/disable) must both cover the same
lifecycle states — missing state in one half = silent dead end.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-06 17:09:28 +02:00
bastien
858e7a7fc7 fix(settings): scope graphify pretool hook to Bash search commands
Matcher was Glob|Grep — those tool inputs have no `command` field, so
the hint never fired. Switch to Bash matcher and gate on the actual
command substring (grep, rg, ripgrep, find, fd, ack, ag) so the
graphify hint only injects when Claude is about to scan raw files.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-06 17:08:57 +02:00
bastien
d5677f67c9 chore(memory): capitalize BDR-009 from caveman format mandate
Append BDR-009 entry + Index update in decisions.md, plus 2026-05-05
heading in journal.md covering the 4-commit batch.

Catches Index up to BDR-008 (was missing 007/008 entries despite
already-written sections).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-05 23:50:07 +02:00
bastien
4364e2b351 chore(memory): compress 5 registries to caveman format
Apply CLAUDE.md "Format — registries ALWAYS caveman" rule to existing
entries via /caveman:compress. Drops articles, filler, and hedging
while preserving:

  - Technical terms (rtk, claude plugin install, framer-motion, etc.)
  - IDs unchanged (BDR-XXX, LRN-XXX, BLK-XXX, EVAL-XXX)
  - Dates unchanged (2026-04-22 etc.)
  - Code blocks and quoted error strings exact
  - Commit refs (892de28, 7b57b2e, d3c79f0, 64d6ca7)

Files: decisions.md, learnings.md, blockers.md, journal.md, evals.md.
Token reduction: ~40% on session-start memory load.

Pre-compression backups saved as *.original.md (gitignored next).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-05-05 23:46:23 +02:00
bastien
d694a9e0da chore(memory): capitalize BDR-007 + BDR-008 from profile system
- BDR-007: Skill profiles partition gstack by usage (v1, skill-only).
  Decision to ship lib/profile.sh + symlink-based toggle for skills,
  with plugin/MCP entries advisory in v1. Rationale: the existing
  toggle-external.sh enable|disable gstack is too coarse — it
  disables checkpoint/ship/learn alongside design skills. Profiles
  hide the irrelevant skills without uninstalling the gstack repo.
  Alternatives rejected: forking SKILL.md to strip the gstack
  preamble (re-fork on every upgrade — preamble already degrades
  gracefully via `|| true`); per-skill toggle via claude plugin
  enable/disable (gstack skills are not marketplace plugins);
  removing symlinks (lossy if user has local edits).

- BDR-008: Profile system v2 — extend to plugins + MCPs + CLIs.
  Reverses the "advisory only" stance from BDR-007 alternative #4.
  User feedback: pure-skill toggling left ui-ux-pro-max/magic always
  loaded regardless of profile, so passive token cost didn't drop
  enough on profile switch. Solution: real claude plugin enable/
  disable for an explicit MANAGED_PLUGINS allowlist (3 entries) +
  PROTECTED_PLUGINS denylist for always-on (caveman, security-
  guidance, superpowers). MCP magic delegated to toggle-external.sh.
  Other MCPs stay advisory because each needs specific config. Adds
  4 new profiles: web, seo, web-full, backend.

- Journal: 2026-05-04 entry summarizing the v1 ship, then a follow-up
  block for the v2 extension (new profiles, plugin auto-toggle, tie-
  breaker for `current`).

- TODO.md: marked done — v1 (Skill profiles) section and v2 (Profile
  system v2 — extension plugins/MCPs/CLIs) section, both with their
  full subtask lists.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 02:09:51 +02:00
bastien
d8ad38b131 chore(memory): capitalize BDR-006 + LRN-005 + LRN-006 from caveman session
- BDR-006: Caveman as 4th always-on plugin (output compression, sym
  with rtk's input compression). Full install rationale, alternatives
  rejected, caveats around path normalization + gitignore.
- LRN-005: claude plugin install does NOT enable — explicit
  claude plugin enable required for ALWAYS-ON plugins. Pattern: read
  enabledPlugins, never hardcode plugin names in status displays.
- LRN-006: caveman-shrink (and any MCP middleware proxy) needs an
  upstream wrapper. Bare registration fails health checks. Pattern:
  register under derived names (proxy-upstream), don't auto-register.
- Journal: 2026-05-03 entry summarizing the session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 23:06:26 +02:00
bastien
4d3fb6a661 chore(memory): capitalize BDR-005 + LRN-004 from animation lib auto-install
BDR-005: motion as default animation library; plugin-advisor stays
read-only (orchestrators own install).

LRN-004: framer-motion was rebranded `motion` in Nov 2024 — single
package for React/Svelte/vanilla, separate `motion-v` for Vue. React
Native still needs react-native-reanimated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 15:32:55 +02:00
bastien
f80f83ee77 feat(animation): auto-install motion lib + detection across init/onboard/advisor
Add lib/animation-lib-check.sh with detect_anim_eligibility,
is_anim_lib_installed and recommend_anim_install_cmd helpers.
Wire it into the framework:
- init-project STEP 5e: silent auto-install after scaffold validated
- onboard STEP 2.5: propose + wait for user confirmation (opt-in on
  existing projects)
- plugin-advisor PHASE 1/2/3: read-only detection only, never installs
- scaffolder PHASE 4: clarifies boundary (orchestrator owns motion install)
- design-gate filesystem signals: motion / motion-v / framer-motion /
  gsap / lottie-react / react-spring / popmotion / auto-animate

Recommends `motion` (rebranded from framer-motion in Nov 2024) for
React-family and Svelte stacks, `motion-v` for Vue 3 / Nuxt. Excludes
React Native (use react-native-reanimated), backend, embedded, Flutter.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 15:32:46 +02:00
bastien
e209f56216 chore(memory): capitalize BDR-004 + LRN-003 from auto-mode switch
BDR-004 documents the decision to adopt auto permission mode as default
with classifier safety net, alternatives, and feature-gate caveats.

LRN-003 captures the gotcha that Claude Code's disable* settings use
the literal sentinel string "disable" rather than a boolean — required
context for any future permission-mode change.

Journal entry added for 2026-04-27.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-27 13:19:00 +02:00
bastien
54602a9a3c chore(memory): retrofit existing 9 entries to English
Apply the English-only rule (BDR/CLAUDE.md § Memory registries)
retroactively to the 9 entries written before the rule was in place:

- decisions.md: BDR-001, BDR-002, BDR-003 + index titles
- learnings.md: LRN-001, LRN-002 body prose (LRN-002 was already
  half-English from the CAPITALIZE pass; now fully normalized)
- blockers.md: BLK-001, BLK-002 + BLK-002 index row
- journal.md: 2026-04-23 entry rewritten, + one bullet added noting
  the retrofit itself
- evals.md: EVAL-001 + index row

Content-preserving translation — same claims, same IDs, same dates,
same file structure. YAML headers and schema sections untouched
(they were already English).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:30:58 +02:00
bastien
ec5ba2a16c chore(memory): capitalize BDR-003 + LRN-002 + BLK-002 from restructure
First real CAPITALIZE phase (commit-changer Phase 4) — extract reusable
knowledge from the .claude/ restructure batch (commits 892de28..6ec06c8):

- BDR-003: gitignore wildcard + negations pattern (decision with why/alts)
- LRN-002: moving report-file paths requires grepping bash READS,
           not just WRITES — rule learned from 2 dispatchers being
           silently broken until a verify-gate caught them
- BLK-002: rmdir blocked in sandbox even on empty dirs — resolved via
           git rm + rename auto-detect (no rmdir needed in practice)
- journal: 2026-04-23 entry extended with verify-gate outcomes and
           commit batch reference

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:19:28 +02:00
bastien
32ccceb548 fix(gitignore): un-ignore shared .claude/{tasks,memory,audits}/
Previous rule (.claude/) ignored everything under .claude/, making
the new governance files invisible to git. Switches to a wildcard
pattern with explicit negations: tasks/memory/audits/settings.json
become trackable; settings.local.json and agent-memory/ stay
per-machine. Commits existing .claude/settings.json which now falls
under the tracked scope.

Verified with git check-ignore:
- .claude/memory/decisions.md → exit 1 (not ignored) ✓
- .claude/tasks/TODO.md      → exit 1 (not ignored) ✓
- .claude/settings.local.json → exit 0 (ignored)    ✓
- .claude/agent-memory/      → exit 0 (ignored)     ✓

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:06:44 +02:00
bastien
892de288fe feat(memory): introduce .claude/{tasks,memory,audits}/ governance layout
Move tasks/ into .claude/tasks/ and create .claude/memory/ with 5
persistent registries (decisions/learnings/blockers/journal/evals) plus
.claude/audits/ for audit reports. Also seed templates/memory/ for
onboarder to copy into user projects.

- tasks/TODO.md, tasks/rtk-upstream-issue.md → .claude/tasks/
- tasks/LESSONS.md deleted (empty template; superseded by learnings.md)
- .claude/memory/: 5 append-only registries with YAML schema + seed entries
- templates/memory/: 5 empty-index templates for new projects

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 16:06:00 +02:00