[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DAYDN67Z2XCAFSVEPVRXMC":3,"skill-same:01M6DAYDN67Z2XCAFSVEPVRXMC":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":13,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6DAYDN67Z2XCAFSVEPVRXMC","transcript-retention",null,"Use to manage the disk footprint of AI-tool session state — Claude Code transcripts (~\u002F.claude\u002Fprojects), Codex rollouts (~\u002F.codex\u002Fsessions), shell snapshots, logs, and sqlite WAL files — by reporting usage and applying an age-based compress\u002Fdelete policy. Triggers: \"how big is my session history\", \"clean up old transcripts\", \"codex sessions are eating disk\", \"transcript retention\".","tzeusy-org\u002Fai-bootstrap","tzeusy-org","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F141543652?v=4","01M6DAM1AP09H27BYGFY9QCNPB","01M6DAM1F4R187EK11XDN9JZKH",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-tooling\u002Fsubskills\u002Ftranscript-retention\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"transcript retention","transcript","up","gzip","age","triggers","clean","manage","files","rollouts","snapshots","linux","use","session","history","tool","projects","code","sessions","policy","2026-11-10 10:12:30",false,"---\nname: transcript-retention\ndescription: >\n  Use to manage the disk footprint of AI-tool session state — Claude Code\n  transcripts (~\u002F.claude\u002Fprojects), Codex rollouts (~\u002F.codex\u002Fsessions),\n  shell snapshots, logs, and sqlite WAL files — by reporting usage and\n  applying an age-based compress\u002Fdelete policy. Triggers: \"how big is my\n  session history\", \"clean up old transcripts\", \"codex sessions are eating\n  disk\", \"transcript retention\".\nmetadata:\n  owner: tze\n  authors:\n    - tze\n    - Claude Fable 5\n  status: active\n  last_reviewed: \"2026-06-12\"\ncompatibility: Linux\u002FmacOS with gzip and standard find; assumes ~\u002F.claude and ~\u002F.codex tool homes.\n---\n\n# Transcript Retention\n\nSession stores grow without bound (observed 2026-06-12: `~\u002F.codex\u002Fsessions`\n3.4G, `~\u002F.claude\u002Fprojects` 700M). But transcripts are not junk: they are\nthe **data source for [..\u002Faudit-skill-hygiene\u002FSKILL.md](..\u002Faudit-skill-hygiene\u002FSKILL.md)**\nand for any future usage analytics. Retention policy therefore defines the\nmaximum audit window — decide retention *with* that trade-off, never as\nplain disk cleanup.\n\n## Inventory first (always safe)\n\n```bash\ndu -sh ~\u002F.claude\u002Fprojects ~\u002F.codex\u002Fsessions ~\u002F.codex\u002Fshell_snapshots \\\n       ~\u002F.codex\u002Flog ~\u002F.codex\u002Ftmp 2>\u002Fdev\u002Fnull\n# Age profile: bytes per month\nfind ~\u002F.codex\u002Fsessions ~\u002F.claude\u002Fprojects -name \"*.jsonl\" -printf \"%TY-%Tm %s\\n\" 2>\u002Fdev\u002Fnull \\\n  | awk '{b[$1]+=$2} END {for (m in b) printf \"%s  %6.0f MB\\n\", m, b[m]\u002F1e6}' | sort\n```\n\nReport the inventory and the proposed action per tier before touching\nanything.\n\n## Default policy (adjust per user preference)\n\n| Age | Action | Rationale |\n|---|---|---|\n| \u003C 60d | keep as-is | active audit window, resumable sessions |\n| 60–180d | `gzip` in place | ~10x smaller; still grep-able via `zgrep` for audits |\n| > 180d | propose deletion | beyond any realistic audit window |\n\n- Compression is safe and reversible; **deletion is destructive** — always\n  list the candidates (count + size + date range) and get explicit\n  confirmation before `rm`.\n- Never touch files modified in the last 7 days regardless of policy: an\n  active session's transcript may have an old creation date.\n- `~\u002F.codex\u002Ftmp` and rotated logs are exempt from the confirmation rule\n  (genuinely disposable), but report what was reclaimed.\n\n## Hard stops\n\n- Do not delete or compress sqlite databases or their `-wal`\u002F`-shm`\n  sidecars (`goals_*.sqlite`, `memories_*.sqlite`, `state_*.sqlite`) — they\n  are live state, not history, and a WAL file belongs to its DB.\n- Do not prune transcripts younger than the longest audit window the user\n  relies on; if unsure, ask before the delete tier (compress tier is fine).\n- If a `zgrep`-based audit has never been exercised after the first\n  compression pass, run one spot-check (`zgrep -c '\"name\":\"Skill\"'` on a\n  compressed file) and note that audit tooling must use `zgrep`\u002F`zcat` for\n  the compressed tier.\n","# Transcript Retention\n\nSession stores grow without bound (observed 2026-06-12: `~\u002F.codex\u002Fsessions`\n3.4G, `~\u002F.claude\u002Fprojects` 700M). But transcripts are not junk: they are\nthe **data source for [..\u002Faudit-skill-hygiene\u002FSKILL.md](..\u002Faudit-skill-hygiene\u002FSKILL.md)**\nand for any future usage analytics. Retention policy therefore defines the\nmaximum audit window — decide retention *with* that trade-off, never as\nplain disk cleanup.\n\n## Inventory first (always safe)\n\n```bash\ndu -sh ~\u002F.claude\u002Fprojects ~\u002F.codex\u002Fsessions ~\u002F.codex\u002Fshell_snapshots \\\n       ~\u002F.codex\u002Flog ~\u002F.codex\u002Ftmp 2>\u002Fdev\u002Fnull\n# Age profile: bytes per month\nfind ~\u002F.codex\u002Fsessions ~\u002F.claude\u002Fprojects -name \"*.jsonl\" -printf \"%TY-%Tm %s\\n\" 2>\u002Fdev\u002Fnull \\\n  | awk '{b[$1]+=$2} END {for (m in b) printf \"%s  %6.0f MB\\n\", m, b[m]\u002F1e6}' | sort\n```\n\nReport the inventory and the proposed action per tier before touching\nanything.\n\n## Default policy (adjust per user preference)\n\n| Age | Action | Rationale |\n|---|---|---|\n| \u003C 60d | keep as-is | active audit window, resumable sessions |\n| 60–180d | `gzip` in place | ~10x smaller; still grep-able via `zgrep` for audits |\n| > 180d | propose deletion | beyond any realistic audit window |\n\n- Compression is safe and reversible; **deletion is destructive** — always\n  list the candidates (count + size + date range) and get explicit\n  confirmation before `rm`.\n- Never touch files modified in the last 7 days regardless of policy: an\n  active session's transcript may have an old creation date.\n- `~\u002F.codex\u002Ftmp` and rotated logs are exempt from the confirmation rule\n  (genuinely disposable), but report what was reclaimed.\n\n## Hard stops\n\n- Do not delete or compress sqlite databases or their `-wal`\u002F`-shm`\n  sidecars (`goals_*.sqlite`, `memories_*.sqlite`, `state_*.sqlite`) — they\n  are live state, not history, and a WAL file belongs to its DB.\n- Do not prune transcripts younger than the longest audit window the user\n  relies on; if unsure, ask before the delete tier (compress tier is fine).\n- If a `zgrep`-based audit has never been exercised after the first\n  compression pass, run one spot-check (`zgrep -c '\"name\":\"Skill\"'` on a\n  compressed file) and note that audit tooling must use `zgrep`\u002F`zcat` for\n  the compressed tier.\n",{"name":5,"metadata":43,"description":49,"compatibility":50},{"owner":44,"status":45,"authors":46,"last_reviewed":48},"tze","active",[44,47],"Claude Fable 5","2026-06-12","Use to manage the disk footprint of AI-tool session state — Claude Code transcripts (~\u002F.claude\u002Fprojects), Codex rollouts (~\u002F.codex\u002Fsessions), shell snapshots, logs, and sqlite WAL files — by reporting usage and applying an age-based compress\u002Fdelete policy. Triggers: \"how big is my session history\", \"clean up old transcripts\", \"codex sessions are eating disk\", \"transcript retention\".\n","Linux\u002FmacOS with gzip and standard find; assumes ~\u002F.claude and ~\u002F.codex tool homes.","main","c907d6f0bf96bd61b936e8972e0f1c66ebb8148c","skills\u002Fpersonal\u002Fth-tooling\u002Fsubskills\u002Ftranscript-retention","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap","https:\u002F\u002Fgithub.com\u002Ftzeusy-org","2026-11-10 23:17:25",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add tzeusy-org\u002Fai-bootstrap --skill transcript-retention",{"tool":63,"command":64},"bunx","bunx skills add tzeusy-org\u002Fai-bootstrap --skill transcript-retention",{"tool":66,"command":67},"pnpm","pnpm dlx skills add tzeusy-org\u002Fai-bootstrap --skill transcript-retention","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-tooling\u002Fsubskills\u002Ftranscript-retention\u002FSKILL.md",true,[],[72,95,121,136,155,166],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":38},"01M6DAZD21TWH2ET70V9FF75CQ","user-run","Use when a step needs privileges this session lacks (docker, sudo, another user's checkout or secrets, host access) and the owner must run it as tze. Writes a reviewable \u002Fhome\u002Forca\u002F.tmp\u002F\u003Cslug>\u002Frun.sh that impersonates tze (USER_TO_IMPERSONATE overrides), tees timestamped logs plus latest.log and collects artifacts there; Claude presents it with a risk and time brief, then continues from the logs. Triggers: \"I'll run it for you\", \"permission denied on docker.sock\", \"needs sudo\", \"sudo: a password is required\", \"run as tze\", \"\u002Fuser-run\".","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fuser-run\u002FSKILL.md",[],[79,80,81,82,83,30,84,85,23,86,45,87,88,89,31,90,91,92,93,94],"user run","user","run","docker","logs","host","as","permission","time","log","artifacts","password","access","secrets","risk","brief",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":111,"publishedAt":38},"01M6DAZAHTCBAD2WF0GAHWPST8","requesting-code-review","Use when completing tasks, implementing major features, or before merging to verify work meets requirements","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Frequesting-code-review\u002FSKILL.md",[101,106],{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[112,35,113,114,115,116,45,117,118,30,119,120],"requesting code review","review","code review","work","requirements","upstream","superpowers","verify","tasks",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":129,"publishedAt":38},"01M6DAZ7CJ82D81XZB2YHVVY48","receiving-code-review","Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Freceiving-code-review\u002FSKILL.md",[127,128],{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},[130,35,113,114,45,117,131,118,30,132,133,134,135],"receiving code review","implementation","code review feedback","technical","feedback","verification",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":38},"01M6DAZ4ER76ADXJ9KRFP7V3Q9","finishing-a-development-branch","Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Ffinishing-a-development-branch\u002FSKILL.md",[],[143,144,145,146,30,147,115,148,149,150,118,151,152,153,45,117,154,131],"branch","development","finishing a development branch","integrate","decide","how","cleanup","pr","merge","tests","structured","options",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":38},"01M6DAYZFWWW2YPKP89QNQR96H","executing-plans","Use when you have a written implementation plan to execute in a separate session with review checkpoints","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Fexecuting-plans\u002FSKILL.md",[],[162,163,164,113,165,45,117,131,118,30,31],"plans","executing plans","plan","execute",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":38},"01M6DAYWM2YQHYCK7C35K1D29J","dispatching-parallel-agents","Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Fdispatching-parallel-agents\u002FSKILL.md",[],[173,174,175,30,118,117,176,45,177,120,178],"parallel agents","parallel","dispatching parallel agents","state","dependencies","shared"]