[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF1CSSYFKR2GWY4DFVG27Q":3,"skill-same:01M6CF1CSSYFKR2GWY4DFVG27Q":129},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":71,"commitSha":72,"skillDirectory":73,"forksCount":74,"repositoryHtmlUrl":75,"repositoryHomepageUrl":6,"ownerHtmlUrl":76,"ownerBlogUrl":6,"ownerDescription":77,"updatedAt":78,"install":79,"resources":92},"01M6CF1CSSYFKR2GWY4DFVG27Q","review\u002Farchitecture",null,"Architecture and design check — verify reason-to-change, policy-above-detail, interface truthfulness, registry normalization, source\u002Fartifact\u002Finstalled boundary, surface separation, and degraded-path visibility.","usurobor\u002Fcnos","usurobor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F182342826?v=4","01M6CEXJCRMYD8HB2315FGB1Q8","Peter Lisovin","01M6CEXJH2RW04GQ2SNXY40F5S",9,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.cdd\u002Fskills\u002Fcdd\u002Freview\u002Farchitecture\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"review","architecture","review architecture","surfaces","design","diff","orchestrator","results","context","check","branch","how","verify","normalization","boundary","integrity","severity","registry","change","policy","2026-11-10 10:12:30",false,"---\nname: review\u002Farchitecture\ndescription: Architecture and design check — verify reason-to-change, policy-above-detail, interface truthfulness, registry normalization, source\u002Fartifact\u002Finstalled boundary, surface separation, and degraded-path visibility.\nartifact_class: skill\nkata_surface: external\ngoverning_question: How does β verify that the branch preserves architectural boundaries and does not smear runtime surfaces, violate policy placement, or hide degraded paths?\nvisibility: internal\nparent: review\ntriggers:\n  - review architecture\n  - review design\nscope: task-local\ninputs:\n  - branch\n  - diff\n  - diff\u002Fcontext findings from Phase 2b\noutputs:\n  - architecture check table (7 questions A–G with yes\u002Fno\u002Fn\u002Fa results)\n  - findings with severity and type\nrequires:\n  - Phase 1 (contract integrity) completed\n  - Phase 2b (diff\u002Fcontext inspection) completed\n  - review orchestrator loaded\ncalls: []\n---\n\n# Review — Phase 2c: Architecture and Design Check\n\n**PRE-GATE: Phase 2b (diff\u002Fcontext inspection) must be completed.**\n\n**Activate when the change touches:** package boundaries, command\u002Fprovider\u002Forchestrator\u002Fskill separation, source\u002Fartifact\u002Finstalled flow, registry design, kernel vs package responsibility, transport vs protocol semantics, command dispatch vs domain logic.\n\n**Load:** `src\u002Fpackages\u002Fcnos.core\u002Fskills\u002Fdesign\u002FSKILL.md` when active.\n\n---\n\n## §2.2 Architecture and design check\n\n| Check | Question |\n|---|---|\n| A. Reason to change | Does each touched module still have one real reason to change? |\n| B. Policy above detail | Does policy remain in the kernel\u002Fcore? |\n| C. Truthful interface | Does each interface promise only what all implementations support? |\n| D. Registry normalization | Do different source forms normalize into one runtime descriptor? |\n| E. Source\u002Fartifact\u002Finstalled | Is it still clear what is authored, built, and installed? |\n| F. Surface separation | Are skills, commands, orchestrators, providers distinct? |\n| G. Degraded-path visibility | Is fallback behavior visible and testable? |\n\nOutput block (include when active):\n\n```markdown\n## Architecture Check\n\n| Check | Result | Notes |\n|---|---|---|\n| Reason to change preserved | yes \u002F no \u002F n\u002Fa | |\n| Policy above detail preserved | yes \u002F no \u002F n\u002Fa | |\n| Interfaces remain truthful | yes \u002F no \u002F n\u002Fa | |\n| Registry model remains unified | yes \u002F no \u002F n\u002Fa | |\n| Source\u002Fartifact\u002Finstalled boundary preserved | yes \u002F no \u002F n\u002Fa | |\n| Runtime surfaces remain distinct | yes \u002F no \u002F n\u002Fa | |\n| Degraded paths visible and testable | yes \u002F no \u002F n\u002Fa | |\n```\n\nIf any Architecture Check row is \"no,\" the review cannot approve without an explicit issue-backed redesign or scope reduction.\n\nRules:\n- Silent architectural boundary smear is a blocking finding.\n- Silent source-of-truth duplication is a blocking finding.\n- Intentional constraint revision must be named explicitly.\n\n---\n\n## After Phase 2c\n\nCollect architecture findings. Return to orchestrator (`review\u002FSKILL.md`) for verdict rules and output format.\n","# Review — Phase 2c: Architecture and Design Check\n\n**PRE-GATE: Phase 2b (diff\u002Fcontext inspection) must be completed.**\n\n**Activate when the change touches:** package boundaries, command\u002Fprovider\u002Forchestrator\u002Fskill separation, source\u002Fartifact\u002Finstalled flow, registry design, kernel vs package responsibility, transport vs protocol semantics, command dispatch vs domain logic.\n\n**Load:** `src\u002Fpackages\u002Fcnos.core\u002Fskills\u002Fdesign\u002FSKILL.md` when active.\n\n---\n\n## §2.2 Architecture and design check\n\n| Check | Question |\n|---|---|\n| A. Reason to change | Does each touched module still have one real reason to change? |\n| B. Policy above detail | Does policy remain in the kernel\u002Fcore? |\n| C. Truthful interface | Does each interface promise only what all implementations support? |\n| D. Registry normalization | Do different source forms normalize into one runtime descriptor? |\n| E. Source\u002Fartifact\u002Finstalled | Is it still clear what is authored, built, and installed? |\n| F. Surface separation | Are skills, commands, orchestrators, providers distinct? |\n| G. Degraded-path visibility | Is fallback behavior visible and testable? |\n\nOutput block (include when active):\n\n```markdown\n## Architecture Check\n\n| Check | Result | Notes |\n|---|---|---|\n| Reason to change preserved | yes \u002F no \u002F n\u002Fa | |\n| Policy above detail preserved | yes \u002F no \u002F n\u002Fa | |\n| Interfaces remain truthful | yes \u002F no \u002F n\u002Fa | |\n| Registry model remains unified | yes \u002F no \u002F n\u002Fa | |\n| Source\u002Fartifact\u002Finstalled boundary preserved | yes \u002F no \u002F n\u002Fa | |\n| Runtime surfaces remain distinct | yes \u002F no \u002F n\u002Fa | |\n| Degraded paths visible and testable | yes \u002F no \u002F n\u002Fa | |\n```\n\nIf any Architecture Check row is \"no,\" the review cannot approve without an explicit issue-backed redesign or scope reduction.\n\nRules:\n- Silent architectural boundary smear is a blocking finding.\n- Silent source-of-truth duplication is a blocking finding.\n- Intentional constraint revision must be named explicitly.\n\n---\n\n## After Phase 2c\n\nCollect architecture findings. Return to orchestrator (`review\u002FSKILL.md`) for verdict rules and output format.\n",{"name":5,"calls":54,"scope":55,"inputs":56,"parent":29,"outputs":58,"requires":61,"triggers":65,"visibility":67,"description":7,"kata_surface":68,"artifact_class":69,"governing_question":70},[],"task-local",[39,34,57],"diff\u002Fcontext findings from Phase 2b",[59,60],"architecture check table (7 questions A–G with yes\u002Fno\u002Fn\u002Fa results)","findings with severity and type",[62,63,64],"Phase 1 (contract integrity) completed","Phase 2b (diff\u002Fcontext inspection) completed","review orchestrator loaded",[31,66],"review design","internal","external","skill","How does β verify that the branch preserves architectural boundaries and does not smear runtime surfaces, violate policy placement, or hide degraded paths?","main","fb527e6c4bfb75c71fa75d6471b3aa3da32106d4","src\u002Fpackages\u002Fcnos.cdd\u002Fskills\u002Fcdd\u002Freview\u002Farchitecture",0,"https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos","https:\u002F\u002Fgithub.com\u002Fusurobor","Coherence engineer. Building git-CN.","2026-11-07 14:25:44",{"source":8,"skillName":5,"commands":80,"prompt":90,"zipAvailable":91},[81,84,87],{"tool":82,"command":83},"npx","npx skills add usurobor\u002Fcnos --skill review\u002Farchitecture",{"tool":85,"command":86},"bunx","bunx skills add usurobor\u002Fcnos --skill review\u002Farchitecture",{"tool":88,"command":89},"pnpm","pnpm dlx skills add usurobor\u002Fcnos --skill review\u002Farchitecture","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.cdd\u002Fskills\u002Fcdd\u002Freview\u002Farchitecture\u002FSKILL.md",true,[93,99,103,107,113,117,121,125],{"path":94,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fresource_semantics.md","REFERENCE","参考文档",11198,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Freferences\u002Fresource_semantics.md",{"path":100,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fsnapshot_schema.md",6580,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Freferences\u002Fsnapshot_schema.md",{"path":104,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fsources.md",8350,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Freferences\u002Fsources.md",{"path":108,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":111,"sourceHtmlUrl":112},"scripts\u002F_common.py","SCRIPT","脚本",6566,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Fscripts\u002F_common.py",{"path":114,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":115,"sourceHtmlUrl":116},"scripts\u002Faccelerator_diagnostics.py",4643,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Fscripts\u002Faccelerator_diagnostics.py",{"path":118,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":119,"sourceHtmlUrl":120},"scripts\u002Fdetect_resources.py",66122,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Fscripts\u002Fdetect_resources.py",{"path":122,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":123,"sourceHtmlUrl":124},"scripts\u002Fplan_workload.py",11150,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Fscripts\u002Fplan_workload.py",{"path":126,"resourceType":109,"resourceTypeDesc":110,"sizeBytes":127,"sourceHtmlUrl":128},"scripts\u002Fsnapshot_tools.py",17976,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-get-available-resources\u002Fscripts\u002Fsnapshot_tools.py",[130,148,164,188,203,224],{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":49},"01M6CF8RWQPM0VXZG06XMR0FFX","issues\u002Ftriage","Issue triage doctrine pointer. Use when classifying a new issue, deciding dispatch eligibility, or deciding whether to close\u002Fsupersede\u002Fdefer.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002Fskills\u002Ftriage\u002FSKILL.md",[],[137,138,139,140,141,40,142,143,144,145,146,147],"triage","issues","issues triage","issue triage","SET","decision","public","use","dispatch","issue","doctrine",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":49},"01M6CF8PJ812DD4APZ3WE8X67B","issues\u002Ftaxonomy","Issue label taxonomy pointer. Use when classifying an issue's kind\u002Farea\u002Fpriority\u002Feffort\u002Fstatus\u002Fprotocol\u002Fdispatch labels, or when the board needs to interpret them.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002Fskills\u002Ftaxonomy\u002FSKILL.md",[],[138,155,156,157,158,159,141,160,143,161,144,145,162,146,163],"taxonomy","issues taxonomy","github","status","protocol","open","board","github issue","issue labels",{"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":176,"publishedAt":49},"01M6CF8KBMZ4D0CDJQ3PF1YVTP","issues\u002Fmap","Issue-board (Issue Pivot) generation domain. Use when reasoning about `cn issues map`'s fetch, taxonomy-parse, effort-computation, and render pipeline, or about the board's JSON\u002FHTML output contract.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002Fskills\u002Fmap\u002FSKILL.md",[170,173],{"categoryNo":171,"categoryName":172,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":174,"categoryName":175,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[138,177,157,178,179,180,141,181,155,160,40,182,183,161,184,185,186,187,144,146],"issues map","reasoning","data","pipeline","api","json","README","edit","interactive","fetch","generated",{"skillNo":189,"name":138,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":193,"publishedAt":49},"01M6CF8CZQH7G7B7RZPANQWR4G","cnos.issues package entrypoint. Use when reasoning about issue taxonomy, the Issue Pivot \u002F issue-board (`cn issues map`), the read-only CDS issue-state evaluator (`cn issues fsm evaluate`), or the current command-dispatch disposition of issue tooling.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002FSKILL.md",[],[138,157,194,195,196,197,198,199,43,155,160,40,142,39,183,200,144,201,145,202],"pr","current state","run","artifacts","state","package","command","only","cds",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":49},"01M6CF896XKSRQVB1CSHY8GSXB","receipt-stream","Cross-cycle receipt-stream doctrine for protocol-iteration. Use when γ closes a cycle and writes the per-cycle iteration artifact (`cdd-iteration.md`), when γ updates the cross-cycle aggregator at `.cdd\u002Fiterations\u002FINDEX.md`, when ε reads the receipt stream across cycles to surface protocol-gap patterns, when a finding's disposition lands a cross-repo patch and the cross-repo trace bundle attaches, or when a courtesy empty-findings stub is written for a `protocol_gap_count == 0` cycle.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md",[],[210,211,197,159,212,40,213,214,215,143,216,217,218,219,144,220,221,222,223,147],"receipt stream","handoff","index","learning","format","trace","repo","closeout","read","channel","embedded","patch","shape","cdd",{"skillNo":225,"name":226,"nameZh":6,"description":227,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":228,"categories":229,"keywords":230,"publishedAt":49},"01M6CF84VCBME6RK8V6HAVDM8Z","mid-flight","Mid-flight γ→in-flight-α rescue channel. Use when γ needs to change a load-bearing fact (pinned axis, scope, AC, blocker) after α has begun coding, when γ edits the cycle's GitHub issue body mid-cycle, or when a spec change lands on origin\u002Fmain while α\u002Fβ polling sessions are in-flight.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md",[],[231,157,47,232,233,234,40,235,236,39,216,218,144,201,145,237,162,238,239,240],"mid flight","sessions","file","cache","pin","coordination","up","Legacy","gamma","artifact channel"]