[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DAY6RX2Y64938X9CQCNV8M":3,"skill-same:01M6DAY6RX2Y64938X9CQCNV8M":76},{"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":50,"commitSha":51,"skillDirectory":52,"forksCount":13,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M6DAY6RX2Y64938X9CQCNV8M","memory-hygiene",null,"Use to compact agent memory stores that grow append-only and rot — AGENTS.md \"Notes to self\" sections, bd memories, CLAUDE.md instruction drift — by deduplicating, merging superseded entries, and retiring notes whose subject no longer exists. Triggers: \"compact my notes to self\", \"AGENTS.md is huge\", \"clean up bd memories\", \"stale agent memory\".","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\u002Fmemory-hygiene\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"memory","hygiene","memory hygiene","drift","cli","triggers","present","grow","entries","memories","active","self","use","compact","notes","clean","files","stale","up","only","2026-11-10 10:12:30",false,"---\nname: memory-hygiene\ndescription: >\n  Use to compact agent memory stores that grow append-only and rot —\n  AGENTS.md \"Notes to self\" sections, bd memories, CLAUDE.md instruction\n  drift — by deduplicating, merging superseded entries, and retiring notes\n  whose subject no longer exists. Triggers: \"compact my notes to self\",\n  \"AGENTS.md is huge\", \"clean up bd memories\", \"stale agent memory\".\nmetadata:\n  owner: tze\n  authors:\n    - tze\n    - Claude Fable 5\n  status: active\n  last_reviewed: \"2026-06-12\"\ncompatibility: Operates on AGENTS.md \u002F CLAUDE.md files and the bd CLI where present.\n---\n\n# Memory Hygiene\n\nAgent memory is append-only by habit: every session adds a note, none\nremoves one. The result is the same rot as unused skills — every future\nsession pays to read superseded, duplicate, or orphaned notes. The\ncanonical failure mode (observed in ~\u002F.dotfiles AGENTS.md): a defect is\nrecorded in one bullet and declared fixed three bullets later — both\nsurvive forever.\n\n## Scope\n\n- `AGENTS.md` \"Notes to self\" sections (repo-level memory contract)\n- `bd memories` entries where beads is in use\n- `CLAUDE.md` files only for *factual drift* (paths\u002Fcommands that no longer\n  exist) — their instructions are the user's, not yours to compact\n\n## Workflow\n\n1. **Inventory**: read the target store end-to-end. For each entry record:\n   subject, date (if any), and whether its subject still exists (file\n   paths, skill names, flags — verify with a quick `ls`\u002F`rg`, don't trust\n   the note).\n2. **Classify** each entry:\n   - **superseded** — a later entry updates or reverses it (the\n     defect-then-fixed pair merges into one resolved-state note)\n   - **duplicate** — same fact stated twice with different wording\n   - **orphaned** — subject was deleted\u002Frenamed (e.g. notes about a skill\n     path that moved to `skills\u002Farchive\u002F`)\n   - **live** — still accurate and load-bearing\n3. **Propose the compaction as a diff** — merged entries keep the *current\n   truth* plus the date; history belongs to git, not to the note. Never\n   silently drop a note that encodes a hard-won lesson (\"do not reintroduce\n   X\") — those stay even when old, they are guardrails, not status.\n4. Apply on approval, one store per commit, with before\u002Fafter entry counts\n   in the commit message.\n5. For `bd memories`: list with `bd memories`, then retire\u002Fupdate via the\n   bd commands available in that version (`bd remember` to restate; check\n   `bd --help` for delete semantics before assuming).\n\n## Judgment lines\n\n- A note is a **guardrail** if removing it could cause a regression\n  (anti-pattern warnings, \"don't reintroduce\" rules) — keep, even if old.\n- A note is **status** if it describes a point-in-time state (\"X is broken\",\n  \"Y pending\") — verify current state and either update or delete.\n- When a store mixes both per entry, split the entry rather than keeping\n  the stale half alive.\n\n## Hard stops\n\n- Never compact another agent's *active* coordination state (beads notes\n  fields used as heartbeats, `.pm\u002F` folders) — memory hygiene is for\n  durable knowledge stores only.\n- Preserve the memory contract header\u002Fformat of the file you compact; the\n  next session must still know where to append.\n","# Memory Hygiene\n\nAgent memory is append-only by habit: every session adds a note, none\nremoves one. The result is the same rot as unused skills — every future\nsession pays to read superseded, duplicate, or orphaned notes. The\ncanonical failure mode (observed in ~\u002F.dotfiles AGENTS.md): a defect is\nrecorded in one bullet and declared fixed three bullets later — both\nsurvive forever.\n\n## Scope\n\n- `AGENTS.md` \"Notes to self\" sections (repo-level memory contract)\n- `bd memories` entries where beads is in use\n- `CLAUDE.md` files only for *factual drift* (paths\u002Fcommands that no longer\n  exist) — their instructions are the user's, not yours to compact\n\n## Workflow\n\n1. **Inventory**: read the target store end-to-end. For each entry record:\n   subject, date (if any), and whether its subject still exists (file\n   paths, skill names, flags — verify with a quick `ls`\u002F`rg`, don't trust\n   the note).\n2. **Classify** each entry:\n   - **superseded** — a later entry updates or reverses it (the\n     defect-then-fixed pair merges into one resolved-state note)\n   - **duplicate** — same fact stated twice with different wording\n   - **orphaned** — subject was deleted\u002Frenamed (e.g. notes about a skill\n     path that moved to `skills\u002Farchive\u002F`)\n   - **live** — still accurate and load-bearing\n3. **Propose the compaction as a diff** — merged entries keep the *current\n   truth* plus the date; history belongs to git, not to the note. Never\n   silently drop a note that encodes a hard-won lesson (\"do not reintroduce\n   X\") — those stay even when old, they are guardrails, not status.\n4. Apply on approval, one store per commit, with before\u002Fafter entry counts\n   in the commit message.\n5. For `bd memories`: list with `bd memories`, then retire\u002Fupdate via the\n   bd commands available in that version (`bd remember` to restate; check\n   `bd --help` for delete semantics before assuming).\n\n## Judgment lines\n\n- A note is a **guardrail** if removing it could cause a regression\n  (anti-pattern warnings, \"don't reintroduce\" rules) — keep, even if old.\n- A note is **status** if it describes a point-in-time state (\"X is broken\",\n  \"Y pending\") — verify current state and either update or delete.\n- When a store mixes both per entry, split the entry rather than keeping\n  the stale half alive.\n\n## Hard stops\n\n- Never compact another agent's *active* coordination state (beads notes\n  fields used as heartbeats, `.pm\u002F` folders) — memory hygiene is for\n  durable knowledge stores only.\n- Preserve the memory contract header\u002Fformat of the file you compact; the\n  next session must still know where to append.\n",{"name":5,"metadata":43,"description":48,"compatibility":49},{"owner":44,"status":28,"authors":45,"last_reviewed":47},"tze",[44,46],"Claude Fable 5","2026-06-12","Use to compact agent memory stores that grow append-only and rot — AGENTS.md \"Notes to self\" sections, bd memories, CLAUDE.md instruction drift — by deduplicating, merging superseded entries, and retiring notes whose subject no longer exists. Triggers: \"compact my notes to self\", \"AGENTS.md is huge\", \"clean up bd memories\", \"stale agent memory\".\n","Operates on AGENTS.md \u002F CLAUDE.md files and the bd CLI where present.","main","c907d6f0bf96bd61b936e8972e0f1c66ebb8148c","skills\u002Fpersonal\u002Fth-tooling\u002Fsubskills\u002Fmemory-hygiene","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":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add tzeusy-org\u002Fai-bootstrap --skill memory-hygiene",{"tool":62,"command":63},"bunx","bunx skills add tzeusy-org\u002Fai-bootstrap --skill memory-hygiene",{"tool":65,"command":66},"pnpm","pnpm dlx skills add tzeusy-org\u002Fai-bootstrap --skill memory-hygiene","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-tooling\u002Fsubskills\u002Fmemory-hygiene\u002FSKILL.md",true,[70],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"agents\u002Fopenai.yaml","REFERENCE","参考文档",82,"https:\u002F\u002Fgithub.com\u002Fnexuslinkproductions\u002Fyuri-os\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsetup-matt-pocock-skills\u002Fagents\u002Fopenai.yaml",[77,101,128,143,162,173],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"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",[],[84,85,86,87,88,30,89,90,23,91,28,92,93,94,95,96,97,98,99,100],"user run","user","run","docker","logs","host","as","permission","time","log","artifacts","session","password","access","secrets","risk","brief",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":117,"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",[107,112],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[118,119,120,121,122,123,28,124,125,30,126,127],"requesting code review","code","review","code review","work","requirements","upstream","superpowers","verify","tasks",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":136,"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",[134,135],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[137,119,120,121,28,124,138,125,30,139,140,141,142],"receiving code review","implementation","code review feedback","technical","feedback","verification",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"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",[],[150,151,152,153,30,154,122,155,156,157,125,158,159,160,28,124,161,138],"branch","development","finishing a development branch","integrate","decide","how","cleanup","pr","merge","tests","structured","options",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"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",[],[169,170,171,120,172,28,124,138,125,30,95],"plans","executing plans","plan","execute",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"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",[],[180,181,182,30,125,124,183,28,184,127,185],"parallel agents","parallel","dispatching parallel agents","state","dependencies","shared"]