[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7ACH7X2MKSW3EMSH32EPR5E":3,"skill-same:01M7ACH7X2MKSW3EMSH32EPR5E":45},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7ACH7X2MKSW3EMSH32EPR5E","capture-decision",null,"Record a design decision and its rationale to Tesseract. Use when the session chose between real alternatives, or a \"## Decisions\" section lands in a tracking file.","hollis-labs\u002Fcairn","hollis-labs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F209122427?v=4","01M6KSB2TDHAKZP6JEBD24X8ZQ","Hollis Labs","01M7ACFMRM18NWGAYG1D4PN262",0,"MIT","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fcapture-decision\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: capture-decision\ndescription: Record a design decision and its rationale to Tesseract. Use when the session chose between real alternatives, or a \"## Decisions\" section lands in a tracking file.\n---\n\nShort decision records go **direct** to Tesseract — no draft step. They're extracts of something already settled in conversation, not documents in flight. For a long-form structured record, use `\u002Fadr`.\n\n## Procedure\n\n**1. Dedup.** `tesseract_recall namespaces=[\"user\u002Fchrispian\u002Fmemory\u002Fdecisions\"] query=\"\u003Cslug>\"`.\n\n**On a hit, you must choose one** — a hit you neither supersede nor deprecate stays live and reads as independent corroboration:\n\n| The hit is… | Do |\n|---|---|\n| the same record, understanding changed | `memory_write` same key + **`supersedes: \u003Crevision_id>`** from the lookup result |\n| wrong, or no longer applies | `mcp__mux__memory_deprecate revision_id=\u003Cid>` |\n| genuinely a different record | write the new key — and say in one line why it is different |\n\nThe lookup you just ran returned `revision_id`. That is the value `supersedes` takes.\n\n\n**2. Write.**\n\n```\nmemory_write\n  namespace       = user\u002Fchrispian\u002Fmemory\u002Fdecisions\n  memory_key      = \u003Cslug>                  # 3–5 words, a-z 0-9 _ ONLY\n  payload_summary = one sentence, ≤140 chars\n  payload_body    = the decision + why + what was rejected\n  tags            = [\"decision\", \"captured_during_session\", \"project:\u003Cproject>\"]\n  author_agent_id = claude-code | codex | …\n  author_version  = model slug\n  trigger         = manual\n  session_id      = the SESSION: value from the SessionStart hook\n  origin          = observation\n  confidence      = 0.9\n  status          = canonical\n```\n\nUse `status = draft` when confidence is below 0.7, the decision may still change, or the user hedged (\"maybe\", \"tentatively\"). Drafts get reviewed at end-of-session.\n\n**3. Confirm** in one line: `Captured decision: \u003Csummary>`\n\n## Rules\n\n- **Hyphens are rejected.** `my-decision` fails; `my_decision` works. Normalize before writing — this is the most common papercut.\n- **Project and ticket are tags, not key segments.** The key is just `\u003Cslug>`. `decisions.\u003Cproject>.\u003Cticket>.\u003Cslug>` is the legacy shape the namespace migration replaced.\n- **Record the rejected alternatives.** A decision without them is an announcement. The reason a future session needs this is to know what was already ruled out and why.\n- Link related records with `[[key]]`.\n\n## Don't capture\n\nRestated decisions, trivial calls, or anything a future session wouldn't search for. Signal over volume — the corpus is only useful while everything in it earns its place.\n","Short decision records go **direct** to Tesseract — no draft step. They're extracts of something already settled in conversation, not documents in flight. For a long-form structured record, use `\u002Fadr`.\n\n## Procedure\n\n**1. Dedup.** `tesseract_recall namespaces=[\"user\u002Fchrispian\u002Fmemory\u002Fdecisions\"] query=\"\u003Cslug>\"`.\n\n**On a hit, you must choose one** — a hit you neither supersede nor deprecate stays live and reads as independent corroboration:\n\n| The hit is… | Do |\n|---|---|\n| the same record, understanding changed | `memory_write` same key + **`supersedes: \u003Crevision_id>`** from the lookup result |\n| wrong, or no longer applies | `mcp__mux__memory_deprecate revision_id=\u003Cid>` |\n| genuinely a different record | write the new key — and say in one line why it is different |\n\nThe lookup you just ran returned `revision_id`. That is the value `supersedes` takes.\n\n\n**2. Write.**\n\n```\nmemory_write\n  namespace       = user\u002Fchrispian\u002Fmemory\u002Fdecisions\n  memory_key      = \u003Cslug>                  # 3–5 words, a-z 0-9 _ ONLY\n  payload_summary = one sentence, ≤140 chars\n  payload_body    = the decision + why + what was rejected\n  tags            = [\"decision\", \"captured_during_session\", \"project:\u003Cproject>\"]\n  author_agent_id = claude-code | codex | …\n  author_version  = model slug\n  trigger         = manual\n  session_id      = the SESSION: value from the SessionStart hook\n  origin          = observation\n  confidence      = 0.9\n  status          = canonical\n```\n\nUse `status = draft` when confidence is below 0.7, the decision may still change, or the user hedged (\"maybe\", \"tentatively\"). Drafts get reviewed at end-of-session.\n\n**3. Confirm** in one line: `Captured decision: \u003Csummary>`\n\n## Rules\n\n- **Hyphens are rejected.** `my-decision` fails; `my_decision` works. Normalize before writing — this is the most common papercut.\n- **Project and ticket are tags, not key segments.** The key is just `\u003Cslug>`. `decisions.\u003Cproject>.\u003Cticket>.\u003Cslug>` is the legacy shape the namespace migration replaced.\n- **Record the rejected alternatives.** A decision without them is an announcement. The reason a future session needs this is to know what was already ruled out and why.\n- Link related records with `[[key]]`.\n\n## Don't capture\n\nRestated decisions, trivial calls, or anything a future session wouldn't search for. Signal over volume — the corpus is only useful while everything in it earns its place.\n",{"name":5,"description":7},"main","4d3ddf194110203bd376288a9f00b929adde0941","testdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fcapture-decision","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn","https:\u002F\u002Fgithub.com\u002Fhollis-labs","https:\u002F\u002Fhollislabs.com","2026-10-21 10:01:20",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add hollis-labs\u002Fcairn --skill capture-decision",{"tool":37,"command":38},"bunx","bunx skills add hollis-labs\u002Fcairn --skill capture-decision",{"tool":40,"command":41},"pnpm","pnpm dlx skills add hollis-labs\u002Fcairn --skill capture-decision","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fcapture-decision\u002FSKILL.md",true,[],[46,53,60,67,74,81],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M7ACJ1YWNE6ZCA132MJKP2HW","tangent","Open a browser workflow when chat is the wrong shape for structured input — triaging many items with one decision, multi-question feedback, or design review. Requires the Tangent MCP server.","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Ftangent\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M7ACJ0NBAZZJGXSK34867QDF","release","Cut a release. Use before git tag or gh release create.","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Frelease\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M7ACHYYDW52TJX9QYTDA6FVP","push","Push work off this machine. Use before any git push.","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fpush\u002FSKILL.md",[],[],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":19},"01M7ACHVTQKTQSVQ32FWJWVFMW","pull-request","Open a pull request. Use before gh pr create.","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fpull-request\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":19},"01M7ACHRJQJDC0620ZSJMW8F0J","end-of-session","Wrap up a work session — reconcile the git tree, commit what this session authored, review drafts, and capture durable signal. Use when the user signals the session is ending.","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fend-of-session\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M7ACHNSHWYHVT7B04TS6JB32","commit","Commit work in a tree another session may be using. Use before any git commit.","https:\u002F\u002Fgithub.com\u002Fhollis-labs\u002Fcairn\u002Fblob\u002Fmain\u002Ftestdata\u002Fgoldens\u002Ftrees\u002Finstall\u002Fbase\u002F.claude\u002Fskills\u002Fcommit\u002FSKILL.md",[],[]]