[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71F28X27MWE45HAFKJC0FM4":3,"skill-same:01M71F28X27MWE45HAFKJC0FM4":77},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M71F28X27MWE45HAFKJC0FM4","vault-context",null,"Project-scoped canonical context via a configured vault MCP. Trigger when recording decisions, closing sessions, or creating handoffs. Runtime memory handles operational capture; Vault stores the deliberate record.","parada1104\u002Fai-specs-cli","parada1104","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F57575053?v=4","01M71EZZV71KAFZKJ47FQ99ZVS","01M71EZZW7JJBY2VAWA5HRD944",0,"MIT","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Fcatalog\u002Frecipes\u002Fvault-canonical-store\u002Fskills\u002Fvault-context\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"vault","context","vault context","operational","closing","record","architecture","decisions","when","MCP","design","sessions","scoped","decision","session","trigger","project","runtime","memory","recording","2026-11-10 10:12:30",false,"---\nname: vault-context\ndescription: >\n  Project-scoped canonical context via a configured vault MCP. Trigger when\n  recording decisions, closing sessions, or creating handoffs. Runtime memory\n  handles operational capture; Vault stores the deliberate record.\nlicense: MIT\nmetadata:\n  author: parada1104\n  version: \"3.1\"\n  scope: [root]\n  auto_invoke:\n    - \"Making an architecture or design decision\"\n    - \"Closing or handing off a session\"\n---\n\n# vault-context\n\nVault is the canonical notetaker. Use the vault MCP declared in the project runtime brief or manifest. Do not hardcode a path when the runtime brief provides one.\n\n## Responsibilities\n\n- Store decisions, conventions, and handoffs that future humans or agents must trust.\n- Keep notes structured, dated, and human-auditable.\n- Avoid duplicating transient runtime observations already captured by Engram.\n\n## Obsidian-native skills (kepano)\n\nThis recipe also vendors Obsidian skills from `kepano\u002Fobsidian-skills`. Load them\nwhen the note format requires it:\n\n| Skill | Use when |\n|---|---|\n| `obsidian-markdown` | Writing `.md` notes with `[[wikilinks]]`, properties, callouts, embeds |\n| `obsidian-bases` | Creating or editing `.base` database views |\n| `json-canvas` | Creating or editing `.canvas` files |\n| `obsidian-cli` | Operating a running Obsidian app via the `obsidian` CLI (Obsidian must be open) |\n| `defuddle` | Ingesting a web URL into clean markdown before filing a vault note |\n\nDefault for decision\u002Fhandoff notes: load `obsidian-markdown` so wikilinks and\nproperties stay Obsidian-native (do not use plain Markdown links for in-vault\ntargets).\n\n## Read Moments\n\n- At bootstrap only when `session-bootstrap` needs canonical context or the user asks to resume previous work.\n- Before changing a durable workflow or architecture decision.\n- Before writing a new handoff that should supersede an older one.\n\n## Write Moments\n\n- After an architecture, workflow, or product decision becomes durable.\n- At session close when there is meaningful state to hand off.\n- When a blocker, dependency order, or next-step plan must be canonical.\n\n## Standard Folders\n\nUse the folders exposed by the configured vault scope:\n\n- `_context\u002F` for human-authored project context. Do not edit unless explicitly asked.\n- `decisiones\u002F` for decisions and conventions.\n- `sessions\u002F` for summaries and handoffs.\n- `specs\u002F` for canonical specs only when the project workflow allows it.\n\n## Decision Note Shape\n\n```markdown\n---\ntipo: decision\nfecha: YYYY-MM-DD\nestado: vigente\n---\n\n# \u003Ctitle>\n\n## Contexto\n\u003Cwhy this decision exists>\n\n## Decisión\n\u003Cwhat was decided>\n\n## Razonamiento\n\u003Ctradeoffs and alternatives>\n\n## Consecuencias\n\u003Cwhat changes now>\n```\n\n## Handoff Shape\n\n```markdown\n---\ntipo: handoff\nfecha: YYYY-MM-DD\nsesion_id: \u003Cshort-id>\n---\n\n# Handoff: \u003Ctitle>\n\n## Estado actual\n- \u003Ccurrent card\u002Fchange\u002Fsession state>\n\n## Qué se hizo\n- \u003Ccompleted work>\n\n## Decisiones vigentes\n- \u003Cdecisions that should guide the next session>\n\n## Próximos pasos priorizados\n1. \u003Cnext action>\n2. \u003Cnext action>\n\n## Riesgos o bloqueos\n- \u003Crisk or blocker>\n```\n\n## Rules\n\n- Never write outside the configured vault scope.\n- Never store secrets or env-backed values.\n- Do not edit `_context\u002F` or `specs\u002F` unless the user explicitly asks or the active SDD workflow owns that path.\n- Use ISO dates in filenames and frontmatter.\n- If it changes how future sessions should work, put it in Vault; if it is only searchable operational continuity, put it in Engram.\n- Do not hardcode absolute vault filesystem paths; use the configured `vault-canonical` MCP. The path comes from `CANONICAL_VAULT_PATH` in the environment (absolute), resolved by `vault-fs-mcp.sh` — not from a bare `${VAR}` MCP argv.\n","# vault-context\n\nVault is the canonical notetaker. Use the vault MCP declared in the project runtime brief or manifest. Do not hardcode a path when the runtime brief provides one.\n\n## Responsibilities\n\n- Store decisions, conventions, and handoffs that future humans or agents must trust.\n- Keep notes structured, dated, and human-auditable.\n- Avoid duplicating transient runtime observations already captured by Engram.\n\n## Obsidian-native skills (kepano)\n\nThis recipe also vendors Obsidian skills from `kepano\u002Fobsidian-skills`. Load them\nwhen the note format requires it:\n\n| Skill | Use when |\n|---|---|\n| `obsidian-markdown` | Writing `.md` notes with `[[wikilinks]]`, properties, callouts, embeds |\n| `obsidian-bases` | Creating or editing `.base` database views |\n| `json-canvas` | Creating or editing `.canvas` files |\n| `obsidian-cli` | Operating a running Obsidian app via the `obsidian` CLI (Obsidian must be open) |\n| `defuddle` | Ingesting a web URL into clean markdown before filing a vault note |\n\nDefault for decision\u002Fhandoff notes: load `obsidian-markdown` so wikilinks and\nproperties stay Obsidian-native (do not use plain Markdown links for in-vault\ntargets).\n\n## Read Moments\n\n- At bootstrap only when `session-bootstrap` needs canonical context or the user asks to resume previous work.\n- Before changing a durable workflow or architecture decision.\n- Before writing a new handoff that should supersede an older one.\n\n## Write Moments\n\n- After an architecture, workflow, or product decision becomes durable.\n- At session close when there is meaningful state to hand off.\n- When a blocker, dependency order, or next-step plan must be canonical.\n\n## Standard Folders\n\nUse the folders exposed by the configured vault scope:\n\n- `_context\u002F` for human-authored project context. Do not edit unless explicitly asked.\n- `decisiones\u002F` for decisions and conventions.\n- `sessions\u002F` for summaries and handoffs.\n- `specs\u002F` for canonical specs only when the project workflow allows it.\n\n## Decision Note Shape\n\n```markdown\n---\ntipo: decision\nfecha: YYYY-MM-DD\nestado: vigente\n---\n\n# \u003Ctitle>\n\n## Contexto\n\u003Cwhy this decision exists>\n\n## Decisión\n\u003Cwhat was decided>\n\n## Razonamiento\n\u003Ctradeoffs and alternatives>\n\n## Consecuencias\n\u003Cwhat changes now>\n```\n\n## Handoff Shape\n\n```markdown\n---\ntipo: handoff\nfecha: YYYY-MM-DD\nsesion_id: \u003Cshort-id>\n---\n\n# Handoff: \u003Ctitle>\n\n## Estado actual\n- \u003Ccurrent card\u002Fchange\u002Fsession state>\n\n## Qué se hizo\n- \u003Ccompleted work>\n\n## Decisiones vigentes\n- \u003Cdecisions that should guide the next session>\n\n## Próximos pasos priorizados\n1. \u003Cnext action>\n2. \u003Cnext action>\n\n## Riesgos o bloqueos\n- \u003Crisk or blocker>\n```\n\n## Rules\n\n- Never write outside the configured vault scope.\n- Never store secrets or env-backed values.\n- Do not edit `_context\u002F` or `specs\u002F` unless the user explicitly asks or the active SDD workflow owns that path.\n- Use ISO dates in filenames and frontmatter.\n- If it changes how future sessions should work, put it in Vault; if it is only searchable operational continuity, put it in Engram.\n- Do not hardcode absolute vault filesystem paths; use the configured `vault-canonical` MCP. The path comes from `CANONICAL_VAULT_PATH` in the environment (absolute), resolved by `vault-fs-mcp.sh` — not from a bare `${VAR}` MCP argv.\n",{"name":5,"license":14,"metadata":48,"description":55},{"scope":49,"author":9,"version":51,"auto_invoke":52},[50],"root","3.1",[53,54],"Making an architecture or design decision","Closing or handing off a session","Project-scoped canonical context via a configured vault MCP. Trigger when recording decisions, closing sessions, or creating handoffs. Runtime memory handles operational capture; Vault stores the deliberate record.\n","main","c092fc1f51280350a4434827e2f6d6d99e3431ca","catalog\u002Frecipes\u002Fvault-canonical-store\u002Fskills\u002Fvault-context",2,"https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli","https:\u002F\u002Fgithub.com\u002Fparada1104","2026-11-13 04:28:21",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add parada1104\u002Fai-specs-cli --skill vault-context",{"tool":69,"command":70},"bunx","bunx skills add parada1104\u002Fai-specs-cli --skill vault-context",{"tool":72,"command":73},"pnpm","pnpm dlx skills add parada1104\u002Fai-specs-cli --skill vault-context","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Fcatalog\u002Frecipes\u002Fvault-canonical-store\u002Fskills\u002Fvault-context\u002FSKILL.md",true,[],[78,95,109,118,127,140],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":88,"publishedAt":43},"01M71F2TF9TS9DNCJ68M7C3B5S","test-skill","Test skill for fixture purposes.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Frecipes\u002Ftest-fixture\u002Fskills\u002Ftest-skill\u002FSKILL.md",[84,87],{"categoryNo":85,"categoryName":86,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[89,90,91,50,92,93,94],"Test Skill","test","for","fixtures","fixture","testing",{"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":104,"publishedAt":43},"01M71F2RTH94ZB7XEAW4P6ZG0D","obsidian-markdown","Fixture skill for obsidian-markdown.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fobsidian-markdown\u002FSKILL.md",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000002","文档处理",[105,106,107,91,93,108],"markdown","obsidian markdown","obsidian","fixture skill",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":43},"01M71F2R20CPTJXD9F7DP4JPP6","obsidian-cli","Fixture skill for obsidian-cli.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fobsidian-cli\u002FSKILL.md",[],[116,107,117,91,93,108],"obsidian cli","cli",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":43},"01M71F2PCH4NWVTT1J57SHJX33","obsidian-bases","Fixture skill for obsidian-bases.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fobsidian-bases\u002FSKILL.md",[],[125,126,107,91,93,108],"bases","obsidian bases",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":136,"publishedAt":43},"01M71F2MSS6EVFEYVYAA1KBYCC","json-canvas","Fixture skill for json-canvas.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fjson-canvas\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",[137,138,139,108,93,91],"json","json canvas","canvas",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":43},"01M71F2KY5QVNEN1Q3REFB0MQZ","defuddle","Fixture skill for defuddle.","https:\u002F\u002Fgithub.com\u002Fparada1104\u002Fai-specs-cli\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fkepano-obsidian-skills\u002Fskills\u002Fdefuddle\u002FSKILL.md",[],[142,108,93,91]]