type: learnings_registry entry_prefix: LRN schema: id: LRN-XXX date: YYYY-MM-DD pattern: string (what was observed, abstracted) context: string (where/when it happened - concrete) future_application: string (when to recall this) rules:
| ID | Date | Pattern | Applies to |
|---|---|---|---|
| LRN-001 | 2026-04-22 | rtk shape-compression breaks pipes |
any pipeline chaining rtk curl/cat/read into jq, python -c, awk |
| LRN-002 | 2026-04-23 | Moving report-file paths requires grepping bash READS, not just WRITES | any refactor that moves a generated file used by a dispatcher |
rtk shape-compression breaks downstream parsersrtk) intercepte stdout et retourne une représentation schématisée/compressée au lieu du payload brut, tout parseur en aval casse silencieusement — parce que l'utilisateur (ou le LLM) ne voit jamais la sortie rtk, seulement l'erreur du parseur.rtk curl remplace la sortie JSON brute par une version tokenisée, indépendamment du TTY vs pipe. Les hooks Claude Code réécrivent curl → rtk curl automatiquement, donc impossible à prévoir sans connaître le hook.exclude_commands=["curl"] dans ~/.config/rtk/config.toml, ou rtk proxy. Voir BLK-001.test -s X.md, grep ... X.md, wc -l X.md — ces refs sont invisibles si on ne grep que pour la chaîne "write" ou "output path"..claude/audits/ (commit 5c5e82c). 1er pass : j'ai mis à jour les write paths dans 5 skills (seo/geo/harden/validate/code-clean) et 3 agents. Le user a demandé une verify-gate. Lui a re-grep, trouvé 10+ refs bash bare (ex: test -s HARDEN.md, grep -oE ... VALIDATE.md) que j'avais manquées — les dispatchers étaient cassés (ils cherchaient à la racine, agent écrivait dans .claude/audits/). Corrigé au commit 5c5e82c (inclus dans le même commit).grep -rn "HARDEN\.md") en plus du chemin complet — pour catcher les usages bash bare.test, grep, wc, cat, head), chercher ces verbes explicitement.