[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H82AYZE12N1MRPC4KBTHQ6":3,"skill-same:01M6H82AYZE12N1MRPC4KBTHQ6":68},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":14,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6H82AYZE12N1MRPC4KBTHQ6","record-decision",null,"Capture a design or architecture decision as an ADR in docs\u002Fadr\u002F and update CONTEXT.md if terminology is affected. Use when the user says \"document this decision\", \"record this design choice\", \"write an ADR\", \"capture the decision to X\", or after any implementation where a non-obvious trade-off was made. Also trigger after refactors or design changes where the *why* isn't visible in the code: if a decision just landed that meets the ADR criteria below, offer to record it.","O-Marsters-1997\u002Fmy-claude-code","O-Marsters-1997","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72571979?v=4","01M6H800V7V9BSXYZKDM0JXTJ2","Olly Marsters","01M6H800ZYDJR42TNRH0E6ZVZ7",0,"MIT","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fcode\u002Frecord-decision\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"record decision","decision","record","document","when","architecture decision","changes","affected","trigger","as","trade","terminology","design","use","write","just","choice","adr","why","code","update","architecture","2026-11-10 10:12:30",false,"---\nname: record-decision\ndescription: >-\n  Capture a design or architecture decision as an ADR in docs\u002Fadr\u002F and update CONTEXT.md if terminology is affected. Use when the user says \"document this decision\", \"record this design choice\", \"write an ADR\", \"capture the decision to X\", or after any implementation where a non-obvious trade-off was made. Also trigger after refactors or design changes where the *why* isn't visible in the code: if a decision just landed that meets the ADR criteria below, offer to record it.\n---\n\nTake the decision as stated — no interview, no grilling. Write the ADR immediately. The one check is against the global skills below; it is not an interview about the decision's merits.\n\n## Steps\n\n1. **Scan for existing ADRs** — check `docs\u002Fadr\u002F` for the highest existing number and increment. Create the directory if it doesn't exist.\n\n2. **Check against the global skills** — compare the decision with `go-idiomatic`, `go-testing` and `postgres-best-practices` where they cover its area. Global skills outrank repo ADRs: a decision that conflicts with one is rewritten to follow the skill, never recorded as an exception. Tell the user which rule it conflicted with and how the ADR changed. When an existing ADR conflicts, amend that ADR rather than writing a new one beside it. If the user insists on the exception, the skill is what changes; point them to `skill-updater`.\n\n3. **Write the ADR** — `docs\u002Fadr\u002FNNNN-kebab-title.md`, matching the existing ADRs' format. With none to match, use a `# ADR NNNN — Title` heading and one paragraph covering the context, the decision and its consequences.\n\n4. **Update CONTEXT.md if relevant** — if the decision establishes or changes the canonical name for a concept, or resolves a naming ambiguity in the codebase, update the relevant entry. If no CONTEXT.md exists, only create one if the decision is fundamentally about naming\u002Fterminology.\n\n## CONTEXT.md updates\n\nUpdate only when the decision:\n\n- Establishes or changes the canonical name for a concept (e.g. \"params\" → `CreateApplicationInput` in the `dto` package)\n- Resolves a naming ambiguity in the codebase\n\nKeep definitions to one sentence. List terms to avoid. Follow the existing file's format — don't restructure it.\n","Take the decision as stated — no interview, no grilling. Write the ADR immediately. The one check is against the global skills below; it is not an interview about the decision's merits.\n\n## Steps\n\n1. **Scan for existing ADRs** — check `docs\u002Fadr\u002F` for the highest existing number and increment. Create the directory if it doesn't exist.\n\n2. **Check against the global skills** — compare the decision with `go-idiomatic`, `go-testing` and `postgres-best-practices` where they cover its area. Global skills outrank repo ADRs: a decision that conflicts with one is rewritten to follow the skill, never recorded as an exception. Tell the user which rule it conflicted with and how the ADR changed. When an existing ADR conflicts, amend that ADR rather than writing a new one beside it. If the user insists on the exception, the skill is what changes; point them to `skill-updater`.\n\n3. **Write the ADR** — `docs\u002Fadr\u002FNNNN-kebab-title.md`, matching the existing ADRs' format. With none to match, use a `# ADR NNNN — Title` heading and one paragraph covering the context, the decision and its consequences.\n\n4. **Update CONTEXT.md if relevant** — if the decision establishes or changes the canonical name for a concept, or resolves a naming ambiguity in the codebase, update the relevant entry. If no CONTEXT.md exists, only create one if the decision is fundamentally about naming\u002Fterminology.\n\n## CONTEXT.md updates\n\nUpdate only when the decision:\n\n- Establishes or changes the canonical name for a concept (e.g. \"params\" → `CreateApplicationInput` in the `dto` package)\n- Resolves a naming ambiguity in the codebase\n\nKeep definitions to one sentence. List terms to avoid. Follow the existing file's format — don't restructure it.\n",{"name":5,"description":7},"main","aede9f7bc29a2d9127fa7ce29682c242596c7759","skills\u002Fcode\u002Frecord-decision","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997","https:\u002F\u002Fpersonal-portfolio-v2-phi.vercel.app","Go & TypeScript developer building tooling for AI-assisted development: git worktree workflows, Claude Code skills and agent orchestration.","2026-11-11 22:26:34",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add O-Marsters-1997\u002Fmy-claude-code --skill record-decision",{"tool":60,"command":61},"bunx","bunx skills add O-Marsters-1997\u002Fmy-claude-code --skill record-decision",{"tool":63,"command":64},"pnpm","pnpm dlx skills add O-Marsters-1997\u002Fmy-claude-code --skill record-decision","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fcode\u002Frecord-decision\u002FSKILL.md",true,[],[69,77,84,110,137,164],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":76},"01M745F5J4Z2W32G4QXESCN5PM","vault-recall","Answer the user's conceptual or technical question using their Obsidian vault as well as general knowledge. Use when the user asks a question (not a task) whose topic appears in the vault MOC digest from session start. Not for task instructions, not mid-task, and not for writing to the vault (that is to-vault).","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fvault-recall\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":76},"01M745EW5W0A7K9016Z54A4KG2","ingest","Ingest one external source (an article, course lesson, doc, PDF or URL) into the user's Obsidian vault: save the original to raw\u002F, then build wiki\u002F pages per the vault's § Ingest. Use when the user types \u002Fingest, or says \"ingest this\", \"add this source to my wiki\", \"put this article\u002Flesson in the vault as a wiki page\". Works from any repo. Routing rule: someone else's words go to wiki\u002F (this skill); the user's own learnings and decisions go to notes\u002F (\u002Fto-vault).","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fingest\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":41},"01M6H88J6TYRV9T8RKWW569YM8","to-tickets","Breaks a source into independently-grabbable GitHub tickets. For a code feature the source is the plan (`docs\u002Fplans\u002F\u003Cfeature>.md`, from \u002Fto-plan) and every new or changed symbol lands in exactly one ticket, its signatures copied into the ticket body; a non-code feature is cut from the PRD's slices. Cuts tickets for one feature per run. If a code feature has no approved plan, offers \u002Fto-plan instead of cutting from prose. In a repo that runs command-centre, also emits `[[task]]` blocks into its config; in a plain treepad repo, emits a Batch Manifest instead so the tickets materialise as stacked worktrees.","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fto-tickets\u002FSKILL.md",[],[91,92,93,94,95,96,97,98,38,99,100,101,102,103,104,105,106,107,108,28,109],"tickets","to tickets","new","signatures","github","plan","batch","task","manifest","plans","true","ticket","command","repo","for","feature","run","worktrees","cut",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":121,"publishedAt":41},"01M6H88E98X9KGGYBGSVDS1E8H","to-seams","Records an agreed-but-unlanded cross-repo interface as a seam: the file a consumer's agent gets pasted into its prompt as ground truth, plus the `[[seam]]` block command-centre reads for the retirement pointer. Use when two repos need to build against an interface neither has landed yet — \"record a seam for X\", \"we agreed on this schema, seam it\", \"add a seam so Y can build against Z's new field\". Halts for approval before writing either file.","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fto-seams\u002FSKILL.md",[116],{"categoryNo":117,"categoryName":118,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[122,123,93,124,125,126,127,128,129,32,130,23,131,101,132,133,134,104,105,135,136,21,28,103],"to seams","schema","neither","it","but","file","prompt","either","writing","interface","repos","block","records","build","can",{"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":41},"01M6H889PSQM2E1ATS2JC10QRV","to-roadmap","Prioritises settled features into a Now \u002F Next \u002F Later kanban board, rendered as a self-contained .\u002Fideas\u002Froadmap.html. Each card is a feature, not a ticket — one card later becomes several tickets via \u002Fto-prd -> \u002Fto-plan -> \u002Fto-tickets. Boards the features in .\u002Fdocs\u002Fapproach.md, or the \"## Accepted ideas\" in .\u002Fideas\u002FCONTEXT.md when there is no approach doc. The approach doc is settled truth: this assigns tiers and reasons about ordering, it never re-litigates what was decided.","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fto-roadmap\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[149,150,151,28,106,152,153,23,154,155,156,91,157,158,96,159,160,101,102,161,162,163],"to roadmap","roadmap","never","via","features","doc","board","about","next","later","self","now","card","re","ideas",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":171,"publishedAt":41},"01M6H885QAK839Q771ZBKBK1KA","to-prd","Turns one feature idea into a PRD built on journeys: a one-line problem, journeys (each ending in an observable state) and delivery slices that say what is usable after each. Interviews, explores the codebase, and saves to docs\u002Fprds\u002F\u003Cfeature>.md. Covers exactly one feature: given a multi-feature source, ask which one. Reads any approach doc or ideate report as priors so it doesn't re-ask what's settled, but needs none. Starts the per-feature spine (\u002Fto-prd -> \u002Fto-plan -> \u002Fto-tickets).","https:\u002F\u002Fgithub.com\u002FO-Marsters-1997\u002Fmy-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fto-prd\u002FSKILL.md",[170],{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},[172,173,174,175,176,177,178,179,91,180,96,181,182,183,101,162,106,184,185,28],"prd","to prd","say","interviews","codebase","report","line","delivery","spine","state","multi","ask","problem","which"]