[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71949J6X0EPB3M971N975WM":3,"skill-same:01M71949J6X0EPB3M971N975WM":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":49,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M71949J6X0EPB3M971N975WM","defer-ledger",null,"Track and audit deliberate shortcuts left in the code as `DEFER:` markers, and harvest them into a debt ledger that flags any deferral without an upgrade trigger as \"later means never\" rot. Use when the user asks to review tech debt, audit shortcuts\u002Fdeferrals, run a defer sweep, check the debt ledger, find untriggered deferrals, or after a deliberately-minimal implementation to record what was left out. Triggers on \"defer ledger\", \"debt ledger\", \"audit deferrals\", \"what did we punt\", \"tech-debt sweep\", \"DEFER markers\", \"untriggered shortcuts\", \"later means never\".","orionfold\u002Frelay","orionfold","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F276500412?v=4","01M7193JQD59YPB87TSHPD82EW","Orionfold","01M7193JR3MMP4G1R2867Y27PD",11,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fdefer-ledger\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"ledger","defer ledger","later","track","record","shortcuts","sweep","check","review","code","when","use","upgrade","minimal","triggers","trigger","tech","never","markers","as","2026-11-10 10:12:30",false,"---\nname: defer-ledger\ndescription: Track and audit deliberate shortcuts left in the code as `DEFER:` markers, and harvest them into a debt ledger that flags any deferral without an upgrade trigger as \"later means never\" rot. Use when the user asks to review tech debt, audit shortcuts\u002Fdeferrals, run a defer sweep, check the debt ledger, find untriggered deferrals, or after a deliberately-minimal implementation to record what was left out. Triggers on \"defer ledger\", \"debt ledger\", \"audit deferrals\", \"what did we punt\", \"tech-debt sweep\", \"DEFER markers\", \"untriggered shortcuts\", \"later means never\".\n---\n\n# Defer Ledger\n\nOur engineering principles say to write the **minimum viable solution** (AGENTS.md\nprinciples #5 \"Explicit over clever\" and #6 \"DRY with judgment — extract on third use\").\nThe danger of disciplined minimalism is that a deliberate shortcut silently becomes\npermanent *under*-engineering — \"later means never.\" This skill makes those shortcuts\n**visible and accountable**: it harvests `DEFER:` markers into a ledger and flags the ones\nthat have no upgrade trigger, because an untriggered deferral is rot waiting to happen.\n\nAdapted (not adopted) from the `ponytail` project's debt-ledger idea (MIT). The marker\nconvention, trigger-or-rot rule, and tooling are Orionfold-native. This is a **read-only\naudit skill** — it reports; it never edits code on its own.\n\n## The `DEFER:` marker convention\n\nWhen you deliberately ship a shortcut instead of the full solution, leave a marker on the\nline or in a block comment, in this shape:\n\n```ts\n\u002F\u002F DEFER: \u003Cwhat was shortcut> — UPGRADE WHEN: \u003Cnamed, observable trigger>\n```\n\n- **`DEFER:`** — the literal prefix (uppercase). Distinct from `TODO`\u002F`FIXME`, which mean\n  \"unfinished\" or \"broken\"; `DEFER:` means \"this works, but a smaller solution than the\n  full one, on purpose.\"\n- **what was shortcut** — one phrase: the corner cut and the fuller solution it stands in\n  for. (\"in-memory map instead of a real cache\", \"linear scan; no index yet\".)\n- **`UPGRADE WHEN:`** — the **upgrade trigger**: a concrete, observable condition that\n  should promote the shortcut to the full solution. This is the load-bearing part. A\n  marker without it is the rot the ledger exists to catch.\n\nGood (has a trigger):\n```ts\n\u002F\u002F DEFER: linear scan over customers — UPGRADE WHEN: customers table exceeds ~5k rows\nconst match = all.find((c) => c.slug === slug);\n```\n\nRot (no trigger — flagged by the ledger):\n```ts\n\u002F\u002F DEFER: skip retry on the API write\nawait writeRow(row);\n```\n\n## When to leave a marker (the writer side)\n\nLeave a `DEFER:` only for a shortcut that is **correct now but deliberately smaller** than\nthe full solution. Always include `UPGRADE WHEN:`. If you can't name a trigger, that is a\nsignal the shortcut is either (a) actually fine forever — then it needs no marker, just a\nnormal comment — or (b) under-engineering you shouldn't ship. Don't use `DEFER:` for bugs\n(`FIXME`) or for unfinished work (`TODO`).\n\n## When to harvest (the audit side — this skill's main job)\n\nRun when the user asks to audit tech debt \u002F deferrals, before a release, or after a\nminimal-by-design implementation. Workflow:\n\n### Step 1 — Harvest every marker\n\nUse `rg` (our search standard), capturing file + line + the marker text. Search the whole\ntree minus deps and build output:\n\n```bash\nrg -n --no-heading \"DEFER:\" -g '!node_modules' -g '!dist' -g '!.next' -g '!*.lock'\n```\n\nCapture each hit as `{ file, line, text }`. If there are zero hits, say so plainly\n(\"no `DEFER:` markers found — clean ledger\") and stop. **Zero silent failures**\n(principle #1): an empty result is a real, reported outcome, not nothing.\n\n### Step 2 — Partition by upgrade trigger\n\nFor each marker, check whether its text (the marker line plus, for block comments, the\nadjacent comment lines) contains an `UPGRADE WHEN:` clause with a non-empty, concrete\ncondition. Partition into:\n\n- **Tracked** — has a real `UPGRADE WHEN:` trigger. Legitimate deferred debt.\n- **Rot** — no `UPGRADE WHEN:`, or a vacuous one (\"UPGRADE WHEN: needed\", \"...later\",\n  \"...someday\"). These are the \"later means never\" risks — the headline of the report.\n\n### Step 3 — Report the ledger\n\nGroup **Tracked** by file. Lead the report with the **Rot** list, since that's the\nactionable finding. Use a compact table; one line per marker:\n\n```\n## Defer Ledger — \u003CN> markers (\u003CR> rot, \u003CT> tracked)\n\n### ⚠ Rot — no upgrade trigger (fix the marker or remove the shortcut)\n| Location              | Shortcut                          |\n|-----------------------|-----------------------------------|\n| src\u002Flib\u002Ffoo.ts:42     | skip retry on the API write       |\n\n### Tracked — deferred with a trigger\n**src\u002Flib\u002Fcustomers\u002Findex.ts**\n- :88 — linear scan over customers · UPGRADE WHEN: table exceeds ~5k rows\n```\n\nEnd with a one-line verdict: how many markers, how many are rot, and the single most\nurgent rot item to address (if any). Do **not** edit code — propose fixes only if asked.\n\n## Scope fences\n\n- **Read-only.** Reports; never mutates code. Fixing a flagged marker is a separate,\n  user-directed edit.\n- **`DEFER:` only.** Don't fold in `TODO`\u002F`FIXME` — they mean different things; conflating\n  them dilutes the signal. (A separate sweep can cover those if asked.)\n- **Not a simplifier.** For reuse\u002Fdedupe\u002Fefficiency cleanups, use `\u002Fsimplify`. For\n  correctness\u002Fsecurity, use `\u002Fcode-review`. This skill only audits *deferred* debt.\n","# Defer Ledger\n\nOur engineering principles say to write the **minimum viable solution** (AGENTS.md\nprinciples #5 \"Explicit over clever\" and #6 \"DRY with judgment — extract on third use\").\nThe danger of disciplined minimalism is that a deliberate shortcut silently becomes\npermanent *under*-engineering — \"later means never.\" This skill makes those shortcuts\n**visible and accountable**: it harvests `DEFER:` markers into a ledger and flags the ones\nthat have no upgrade trigger, because an untriggered deferral is rot waiting to happen.\n\nAdapted (not adopted) from the `ponytail` project's debt-ledger idea (MIT). The marker\nconvention, trigger-or-rot rule, and tooling are Orionfold-native. This is a **read-only\naudit skill** — it reports; it never edits code on its own.\n\n## The `DEFER:` marker convention\n\nWhen you deliberately ship a shortcut instead of the full solution, leave a marker on the\nline or in a block comment, in this shape:\n\n```ts\n\u002F\u002F DEFER: \u003Cwhat was shortcut> — UPGRADE WHEN: \u003Cnamed, observable trigger>\n```\n\n- **`DEFER:`** — the literal prefix (uppercase). Distinct from `TODO`\u002F`FIXME`, which mean\n  \"unfinished\" or \"broken\"; `DEFER:` means \"this works, but a smaller solution than the\n  full one, on purpose.\"\n- **what was shortcut** — one phrase: the corner cut and the fuller solution it stands in\n  for. (\"in-memory map instead of a real cache\", \"linear scan; no index yet\".)\n- **`UPGRADE WHEN:`** — the **upgrade trigger**: a concrete, observable condition that\n  should promote the shortcut to the full solution. This is the load-bearing part. A\n  marker without it is the rot the ledger exists to catch.\n\nGood (has a trigger):\n```ts\n\u002F\u002F DEFER: linear scan over customers — UPGRADE WHEN: customers table exceeds ~5k rows\nconst match = all.find((c) => c.slug === slug);\n```\n\nRot (no trigger — flagged by the ledger):\n```ts\n\u002F\u002F DEFER: skip retry on the API write\nawait writeRow(row);\n```\n\n## When to leave a marker (the writer side)\n\nLeave a `DEFER:` only for a shortcut that is **correct now but deliberately smaller** than\nthe full solution. Always include `UPGRADE WHEN:`. If you can't name a trigger, that is a\nsignal the shortcut is either (a) actually fine forever — then it needs no marker, just a\nnormal comment — or (b) under-engineering you shouldn't ship. Don't use `DEFER:` for bugs\n(`FIXME`) or for unfinished work (`TODO`).\n\n## When to harvest (the audit side — this skill's main job)\n\nRun when the user asks to audit tech debt \u002F deferrals, before a release, or after a\nminimal-by-design implementation. Workflow:\n\n### Step 1 — Harvest every marker\n\nUse `rg` (our search standard), capturing file + line + the marker text. Search the whole\ntree minus deps and build output:\n\n```bash\nrg -n --no-heading \"DEFER:\" -g '!node_modules' -g '!dist' -g '!.next' -g '!*.lock'\n```\n\nCapture each hit as `{ file, line, text }`. If there are zero hits, say so plainly\n(\"no `DEFER:` markers found — clean ledger\") and stop. **Zero silent failures**\n(principle #1): an empty result is a real, reported outcome, not nothing.\n\n### Step 2 — Partition by upgrade trigger\n\nFor each marker, check whether its text (the marker line plus, for block comments, the\nadjacent comment lines) contains an `UPGRADE WHEN:` clause with a non-empty, concrete\ncondition. Partition into:\n\n- **Tracked** — has a real `UPGRADE WHEN:` trigger. Legitimate deferred debt.\n- **Rot** — no `UPGRADE WHEN:`, or a vacuous one (\"UPGRADE WHEN: needed\", \"...later\",\n  \"...someday\"). These are the \"later means never\" risks — the headline of the report.\n\n### Step 3 — Report the ledger\n\nGroup **Tracked** by file. Lead the report with the **Rot** list, since that's the\nactionable finding. Use a compact table; one line per marker:\n\n```\n## Defer Ledger — \u003CN> markers (\u003CR> rot, \u003CT> tracked)\n\n### ⚠ Rot — no upgrade trigger (fix the marker or remove the shortcut)\n| Location              | Shortcut                          |\n|-----------------------|-----------------------------------|\n| src\u002Flib\u002Ffoo.ts:42     | skip retry on the API write       |\n\n### Tracked — deferred with a trigger\n**src\u002Flib\u002Fcustomers\u002Findex.ts**\n- :88 — linear scan over customers · UPGRADE WHEN: table exceeds ~5k rows\n```\n\nEnd with a one-line verdict: how many markers, how many are rot, and the single most\nurgent rot item to address (if any). Do **not** edit code — propose fixes only if asked.\n\n## Scope fences\n\n- **Read-only.** Reports; never mutates code. Fixing a flagged marker is a separate,\n  user-directed edit.\n- **`DEFER:` only.** Don't fold in `TODO`\u002F`FIXME` — they mean different things; conflating\n  them dilutes the signal. (A separate sweep can cover those if asked.)\n- **Not a simplifier.** For reuse\u002Fdedupe\u002Fefficiency cleanups, use `\u002Fsimplify`. For\n  correctness\u002Fsecurity, use `\u002Fcode-review`. This skill only audits *deferred* debt.\n",{"name":5,"description":7},"main","b80e0240f42f84cd950fe8361a11a10699aa7984",".agents\u002Fskills\u002Fdefer-ledger",3,"https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay","https:\u002F\u002Forionfold.com","https:\u002F\u002Fgithub.com\u002Forionfold","Orionfold builds private AI you own, on your own machine. Get an AI team without hiring one.","2026-09-04 21:49:30",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add orionfold\u002Frelay --skill defer-ledger",{"tool":59,"command":60},"bunx","bunx skills add orionfold\u002Frelay --skill defer-ledger",{"tool":62,"command":63},"pnpm","pnpm dlx skills add orionfold\u002Frelay --skill defer-ledger","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fdefer-ledger\u002FSKILL.md",true,[],[68,87,102,121,137,163],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":39},"01M719952CZE2BR6GGER42MG51","reader-coach","Helps notice what was read this week. Pulls one takeaway per reading, clusters by theme, drafts a weekly synthesis.","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fplugins\u002Fexamples\u002Freading-radar\u002Fprofiles\u002Freader-coach\u002FSKILL.md",[],[75,76,77,78,79,80,81,82,83,84,85,86],"reader","reader coach","coach","Synthesis","Clusters","weekly synthesis","reading","drafts","read","theme","notice","weekly",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":39},"01M71993PCY50PQMQW3C3SMMN6","personal-cfo","A patient personal CFO who categorizes transactions, flags unusual spend, and prepares monthly summaries.","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fplugins\u002Fexamples\u002Ffinance-pack\u002Fprofiles\u002Fpersonal-cfo\u002FSKILL.md",[],[94,95,96,97,98,99,100,101],"personal cfo","personal","cfo","flags","transactions","monthly","summaries","patient",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":39},"01M71991XD74YK2BY4A3A6J361","relay-web-publisher--site-editor","Drafts structured website section rows for the static-site publisher","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fpacks\u002Ftemplates\u002Frelay-web-publisher\u002Fbase\u002Fprofiles\u002Frelay-web-publisher--site-editor\u002FSKILL.md",[],[109,110,111,112,113,114,115,116,117,82,118,119,120],"web","editor","relay","relay web publisher site editor","site","publisher","for","static","section","static-site","structured","website",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":39},"01M719906C2NYTTVJQBJJ1F011","relay-web-assets--asset-curator","Curates web-design assets into a clean gallery inventory","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fpacks\u002Ftemplates\u002Frelay-web-assets\u002Fbase\u002Fprofiles\u002Frelay-web-assets--asset-curator\u002FSKILL.md",[],[128,109,111,129,130,131,132,133,134,135,136],"relay web assets asset curator","assets","asset","design assets","web-design","inventory","gallery","clean","design",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":148,"publishedAt":39},"01M7198Y634C0NJ2CKTSSTVY9R","relay-social--content-studio","The content inventory and repurpose planner — tracks source assets, decides what to repurpose next, and writes the channel brief for each creative","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fpacks\u002Ftemplates\u002Frelay-social\u002Fbase\u002Fprofiles\u002Frelay-social--content-studio\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[149,150,111,151,152,153,154,115,155,156,157,158,159,133,160,129,161,162],"studio","content","social","social content","relay social content studio","content studio","planner","brief","tracks","next","repurpose","creative","source","channel",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":177,"publishedAt":39},"01M7198VQ1YYN3PFQH9Y7ZZ6SK","relay-social--campaign-runner","The organic-first campaign engine — composes, schedules, and measures a campaign from plan to published to results, setting the UTM that leads attribute back to","https:\u002F\u002Fgithub.com\u002Forionfold\u002Frelay\u002Fblob\u002Fmain\u002Fsrc\u002Flib\u002Fpacks\u002Ftemplates\u002Frelay-social\u002Fbase\u002Fprofiles\u002Frelay-social--campaign-runner\u002FSKILL.md",[169,174],{"categoryNo":170,"categoryName":171,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":175,"categoryName":176,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000035","市场营销",[178,179,180,151,181,111,182,183,184,185,186,187,188,189,190],"relay social campaign runner","runner","campaign","social campaign","back","engine","leads","plan","organic","first","results","schedules","utm"]