[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF7784K9F4ATC080R3BW8C":3,"skill-same:01M6CF7784K9F4ATC080R3BW8C":123},{"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":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M6CF7784K9F4ATC080R3BW8C","tool",null,"Standards for mechanical scripts in tools\u002F.","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.eng\u002Fskills\u002Feng\u002Ftool\u002FSKILL.md",[],[5,19,20,21,22,23,24,25],"cli","automation","fast","Tools","how","write","standards","2026-11-10 10:12:30",false,"---\nname: tool\ndescription: Standards for mechanical scripts in tools\u002F.\ngoverning_question: How do we write a mechanical script so it is fail-fast, idempotent, machine-readable, and free of runtime dependencies?\ntriggers: [tool, script, automation, CLI, utility]\nscope: task-local\n---\n\n# Tool\n\nStandards for mechanical scripts in `tools\u002F`.\n\n## When\n\n- Task is mechanical\n- No judgment required\n- AI would burn tokens on clockwork\n\n## Principles\n\n- Zero runtime deps (bash, git, coreutils, jq)\n- NO_COLOR support\n- Prereq checks (fail fast)\n- Idempotent (safe to re-run)\n- Machine-readable output\n- `set -euo pipefail`\n\n## Template\n\n```bash\n#!\u002Fbin\u002Fbash\n# tool-name.sh — description\n# Usage: .\u002Ftools\u002Ftool-name.sh [args]\n# Exit: 0=success, 1=error, 2=no-op\n\nset -euo pipefail\n\nif [[ -n \"${NO_COLOR:-}\" ]]; then\n  RED=\"\" GREEN=\"\" RESET=\"\"\nelse\n  RED='\\033[0;31m' GREEN='\\033[0;32m' RESET='\\033[0m'\nfi\n\ncheck_prereqs() {\n  command -v git &>\u002Fdev\u002Fnull || { echo \"Missing: git\" >&2; exit 1; }\n}\n\nmain() {\n  check_prereqs\n  # logic\n  echo -e \"${GREEN}✓${RESET} Done\"\n}\n\nmain \"$@\"\n```\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success |\n| 1 | Error |\n| 2 | No-op (already done) |\n","# Tool\n\nStandards for mechanical scripts in `tools\u002F`.\n\n## When\n\n- Task is mechanical\n- No judgment required\n- AI would burn tokens on clockwork\n\n## Principles\n\n- Zero runtime deps (bash, git, coreutils, jq)\n- NO_COLOR support\n- Prereq checks (fail fast)\n- Idempotent (safe to re-run)\n- Machine-readable output\n- `set -euo pipefail`\n\n## Template\n\n```bash\n#!\u002Fbin\u002Fbash\n# tool-name.sh — description\n# Usage: .\u002Ftools\u002Ftool-name.sh [args]\n# Exit: 0=success, 1=error, 2=no-op\n\nset -euo pipefail\n\nif [[ -n \"${NO_COLOR:-}\" ]]; then\n  RED=\"\" GREEN=\"\" RESET=\"\"\nelse\n  RED='\\033[0;31m' GREEN='\\033[0;32m' RESET='\\033[0m'\nfi\n\ncheck_prereqs() {\n  command -v git &>\u002Fdev\u002Fnull || { echo \"Missing: git\" >&2; exit 1; }\n}\n\nmain() {\n  check_prereqs\n  # logic\n  echo -e \"${GREEN}✓${RESET} Done\"\n}\n\nmain \"$@\"\n```\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Success |\n| 1 | Error |\n| 2 | No-op (already done) |\n",{"name":5,"scope":31,"triggers":32,"description":7,"governing_question":36},"task-local",[5,33,20,34,35],"script","CLI","utility","How do we write a mechanical script so it is fail-fast, idempotent, machine-readable, and free of runtime dependencies?","main","fb527e6c4bfb75c71fa75d6471b3aa3da32106d4","src\u002Fpackages\u002Fcnos.eng\u002Fskills\u002Feng\u002Ftool",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":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add usurobor\u002Fcnos --skill tool",{"tool":51,"command":52},"bunx","bunx skills add usurobor\u002Fcnos --skill tool",{"tool":54,"command":55},"pnpm","pnpm dlx skills add usurobor\u002Fcnos --skill tool","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.eng\u002Fskills\u002Feng\u002Ftool\u002FSKILL.md",true,[59,65,71,75,79,83,87,91,95,99,103,107,111,115,119],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"_meta.json","REFERENCE","参考文档",281,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002F_meta.json",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"lib\u002Fkucoin-client.js","SCRIPT","脚本",11646,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Flib\u002Fkucoin-client.js",{"path":72,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":73,"sourceHtmlUrl":74},"package.json",836,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fpackage.json",{"path":76,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":77,"sourceHtmlUrl":78},"README.md",375,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002FREADME.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"scripts\u002Faccounts.js",8950,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Faccounts.js",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Ffutures.js",11272,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Ffutures.js",{"path":88,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Finit.js",895,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Finit.js",{"path":92,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fmargin.js",22475,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Fmargin.js",{"path":96,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fmarket.js",1341,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Fmarket.js",{"path":100,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Fquery.js",3213,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Fquery.js",{"path":104,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":105,"sourceHtmlUrl":106},"scripts\u002Fspot.js",4249,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Fspot.js",{"path":108,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Ftransfer.js",4567,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fscripts\u002Ftransfer.js",{"path":112,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":113,"sourceHtmlUrl":114},"skill.json",2125,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002Fskill.json",{"path":116,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":117,"sourceHtmlUrl":118},"SOURCE.md",252,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002FSOURCE.md",{"path":120,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":121,"sourceHtmlUrl":122},"TRUST.auto.yaml",2205,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fkucoin-trader\u002FTRUST.auto.yaml",[124,142,158,186,203,224],{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":26},"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",[],[131,132,133,134,135,23,136,137,138,139,140,141],"triage","issues","issues triage","issue triage","SET","decision","public","use","dispatch","issue","doctrine",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":26},"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",[],[132,149,150,151,152,153,135,154,137,155,138,139,156,140,157],"taxonomy","issues taxonomy","github","status","protocol","open","board","github issue","issue labels",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":174,"publishedAt":26},"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",[164,169],{"categoryNo":165,"categoryName":166,"taxonomyType":167,"taxonomyTypeDesc":168},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":170,"categoryName":171,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[132,175,151,176,177,178,135,179,149,154,23,180,181,155,182,183,184,185,138,140],"issues map","reasoning","data","pipeline","api","json","README","edit","interactive","fetch","generated",{"skillNo":187,"name":132,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":191,"publishedAt":26},"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",[],[132,151,192,193,194,195,196,197,198,149,154,23,136,199,181,200,138,201,139,202],"pr","current state","run","artifacts","state","package","boundary","branch","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":26},"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,195,153,212,23,213,214,215,137,216,217,218,219,138,220,221,222,223,141],"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":26},"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,151,232,233,234,235,23,236,237,199,216,218,138,201,139,238,156,239,240,241],"mid flight","change","sessions","file","cache","pin","coordination","up","Legacy","gamma","artifact channel"]