[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DABSX1J3K7YVN9AP3KD39M":3,"skill-same:01M6DABSX1J3K7YVN9AP3KD39M":98},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6DABSX1J3K7YVN9AP3KD39M","protocol",null,"Index of protocol reference documents. The generated skills own the procedure. Read this when you need the document that points at the owning skill.","dayvidpham\u002Fpasture","dayvidpham","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22456875?v=4","01M6CHR0F6J2M4QEHFR85XRNSR","David Huu Pham","01M6DA7X1WB0MK7TTV46SRZK75",1,"MIT","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36],"standards","documentation","roles","read","up","coding standards","conventions","reference","look","workflow","full","coding","constraints","2026-11-10 10:12:30",false,"---\nname: protocol\ndescription: Index of protocol reference documents. The generated skills own the procedure. Read this when you need the document that points at the owning skill.\n---\n\n# Protocol reference\n\nThe generated skills own the procedure. The documents here point at those skills. They do not restate the procedure.\n\n| Document | Points at |\n|---|---|\n| [PROCESS.md](PROCESS.md) | The skill that owns each phase |\n| [AGENTS.md](AGENTS.md) | The role skills |\n| [SKILLS.md](SKILLS.md) | The command skills |\n| [CONSTRAINTS.md](CONSTRAINTS.md) | The role skill that renders the constraint |\n| [CLAUDE.md](CLAUDE.md) | The epoch skill |\n\nTo hand off, accept, or open a merge request, read [architect-handoff](..\u002Farchitect-handoff\u002FSKILL.md), [user-uat](..\u002Fuser-uat\u002FSKILL.md), or [supervisor-commit](..\u002Fsupervisor-commit\u002FSKILL.md). Start an epoch with [epoch](..\u002Fepoch\u002FSKILL.md).\n","# Protocol reference\n\nThe generated skills own the procedure. The documents here point at those skills. They do not restate the procedure.\n\n| Document | Points at |\n|---|---|\n| [PROCESS.md](PROCESS.md) | The skill that owns each phase |\n| [AGENTS.md](AGENTS.md) | The role skills |\n| [SKILLS.md](SKILLS.md) | The command skills |\n| [CONSTRAINTS.md](CONSTRAINTS.md) | The role skill that renders the constraint |\n| [CLAUDE.md](CLAUDE.md) | The epoch skill |\n\nTo hand off, accept, or open a merge request, read [architect-handoff](..\u002Farchitect-handoff\u002FSKILL.md), [user-uat](..\u002Fuser-uat\u002FSKILL.md), or [supervisor-commit](..\u002Fsupervisor-commit\u002FSKILL.md). Start an epoch with [epoch](..\u002Fepoch\u002FSKILL.md).\n",{"name":5,"description":7},"main","5813de22110ddc609b465a982b4811646ff72d18",".opencode\u002Fskill\u002Fprotocol",0,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture","https:\u002F\u002Fgithub.com\u002Fdayvidpham","dhpham.com","2026-11-11 16:48:48",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add dayvidpham\u002Fpasture --skill protocol",{"tool":56,"command":57},"bunx","bunx skills add dayvidpham\u002Fpasture --skill protocol",{"tool":59,"command":60},"pnpm","pnpm dlx skills add dayvidpham\u002Fpasture --skill protocol","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FSKILL.md",true,[64,70,74,78,82,86,90,94],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"AGENTS.md","REFERENCE","参考文档",682,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FAGENTS.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"CLAUDE.md",592,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FCLAUDE.md",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"CONSTRAINTS.md",726,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FCONSTRAINTS.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"figures\u002Farchitect-state-flow.yaml",1531,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002Ffigures\u002Farchitect-state-flow.yaml",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"figures\u002Flayer-cake.yaml",1315,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002Ffigures\u002Flayer-cake.yaml",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"figures\u002Fride-the-wave.yaml",1953,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002Ffigures\u002Fride-the-wave.yaml",{"path":91,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":92,"sourceHtmlUrl":93},"PROCESS.md",2202,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FPROCESS.md",{"path":95,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":96,"sourceHtmlUrl":97},"SKILLS.md",2139,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002F.opencode\u002Fskill\u002Fprotocol\u002FSKILLS.md",[99,107,122,132,144,155],{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":37},"01M6DAP7307B3JVZX5DSNAE08Y","fixture","Isolated fixture skill","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Ftestdata\u002Finstall\u002Fglobal\u002Fclaude-code\u002Fnative-marketplace\u002Ffixture-plugin\u002Fskills\u002Ffixture\u002FSKILL.md",[],[101,106],"fixture skill",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":37},"01M6DAP48A4K365N83NBG0GFVC","worker","Vertical slice implementer (full production code path)","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker\u002FSKILL.md",[],[109,114,115,116,117,34,118,119,120,121],"implementer","code","implement","Production","complete","vertical slice","slice","path",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":37},"01M6DAP18QJM7P7N31TYGNJBCP","worker-implement","Implement assigned vertical slice following TDD layers","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-implement\u002FSKILL.md",[],[129,109,116,119,130,120,131],"worker implement","layers","tdd",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":37},"01M6DANYHC7P63RFEN26F70MC2","worker-complete","Signal slice completion after quality gates pass","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-complete\u002FSKILL.md",[],[109,139,118,140,120,141,142,143],"worker complete","signal","gates","quality","quality gates",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":37},"01M6DANWZ31TRP4NN4T1BFYKSR","worker-blocked","Report a blocker to supervisor via Pasture","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-blocked\u002FSKILL.md",[],[151,109,152,153,154],"worker blocked","via","report","supervisor",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":164,"publishedAt":37},"01M6DANSVDBXBFH93B6EX3H2QK","user-uat","User Acceptance Testing with demonstrative examples","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fuser-uat\u002FSKILL.md",[161],{"categoryNo":162,"categoryName":163,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[165,166,167,168,169,170,171,172,173],"uat","user uat","user","acceptance testing","with","user acceptance testing","examples","acceptance","testing"]