[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF7G56NKEYD039PSR9E5BP":3,"skill-same:01M6CF7G56NKEYD039PSR9E5BP":69},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6CF7G56NKEYD039PSR9E5BP","ux-cli",null,"Terminal application UX standards — color encodes semantics, output is self-sufficient, failure paths are first-class.","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\u002Fux-cli\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34],"cli","ux","ux cli","terminal","first","how","fix","usability","only","standards","expert","2026-11-10 10:12:30",false,"---\nname: ux-cli\ndescription: Terminal application UX standards — color encodes semantics, output is self-sufficient, failure paths are first-class.\ngoverning_question: How do we make a terminal interface where an expert spots failures in under two seconds and a novice can fix using only the terminal output?\ntriggers: [UX, CLI, interface, usability, ergonomics]\nscope: task-local\n---\n\n# UX CLI\n\nTerminal application UX standards.\n\n## Principles\n\n- Color encodes semantics, never decoration\n- Output must be self-sufficient (what happened, what's blocked, what to do)\n- Failure paths are first-class\n- No blame, no vibes\n\n## Colors\n\n| Color | Meaning |\n|-------|---------|\n| Green | OK \u002F success |\n| Red | Error \u002F blocking |\n| Yellow | Warning \u002F non-blocking |\n| Cyan | Info \u002F headings |\n| Magenta | Commands to run |\n| Gray | Dim \u002F inactive |\n\n## Symbols\n\n| Symbol | Meaning |\n|--------|---------|\n| ✓ | OK |\n| ✗ | Fail |\n| ⚠ | Warning |\n| ⏸ | Blocked |\n| → | Next step |\n\n## Patterns\n\n### Success\n\n```\n✓ All prerequisites satisfied.\n```\n\n### Warning\n\n```\n⚠ Warning: impact\nContinue possible.\n```\n\n### Error\n\n```\n✗ Cannot continue — cause\n\nFix by running:\n  1) cmd args\n  2) cmd args\n\nThen rerun: cmd\n```\n\n## Anti-Patterns\n\n- Color as decoration\n- Color-only signaling (no symbols)\n- Paragraph errors (action buried in prose)\n- Silent assumptions\n- \"Something went wrong\" (non-causal)\n\n## Checklist\n\n- [ ] Expert can identify failures in \u003C2s\n- [ ] Novice can fix using only terminal output\n- [ ] Usable with NO_COLOR\n","# UX CLI\n\nTerminal application UX standards.\n\n## Principles\n\n- Color encodes semantics, never decoration\n- Output must be self-sufficient (what happened, what's blocked, what to do)\n- Failure paths are first-class\n- No blame, no vibes\n\n## Colors\n\n| Color | Meaning |\n|-------|---------|\n| Green | OK \u002F success |\n| Red | Error \u002F blocking |\n| Yellow | Warning \u002F non-blocking |\n| Cyan | Info \u002F headings |\n| Magenta | Commands to run |\n| Gray | Dim \u002F inactive |\n\n## Symbols\n\n| Symbol | Meaning |\n|--------|---------|\n| ✓ | OK |\n| ✗ | Fail |\n| ⚠ | Warning |\n| ⏸ | Blocked |\n| → | Next step |\n\n## Patterns\n\n### Success\n\n```\n✓ All prerequisites satisfied.\n```\n\n### Warning\n\n```\n⚠ Warning: impact\nContinue possible.\n```\n\n### Error\n\n```\n✗ Cannot continue — cause\n\nFix by running:\n  1) cmd args\n  2) cmd args\n\nThen rerun: cmd\n```\n\n## Anti-Patterns\n\n- Color as decoration\n- Color-only signaling (no symbols)\n- Paragraph errors (action buried in prose)\n- Silent assumptions\n- \"Something went wrong\" (non-causal)\n\n## Checklist\n\n- [ ] Expert can identify failures in \u003C2s\n- [ ] Novice can fix using only terminal output\n- [ ] Usable with NO_COLOR\n",{"name":5,"scope":40,"triggers":41,"description":7,"governing_question":46},"task-local",[42,43,44,31,45],"UX","CLI","interface","ergonomics","How do we make a terminal interface where an expert spots failures in under two seconds and a novice can fix using only the terminal output?","main","fb527e6c4bfb75c71fa75d6471b3aa3da32106d4","src\u002Fpackages\u002Fcnos.eng\u002Fskills\u002Feng\u002Fux-cli",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":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add usurobor\u002Fcnos --skill ux-cli",{"tool":61,"command":62},"bunx","bunx skills add usurobor\u002Fcnos --skill ux-cli",{"tool":64,"command":65},"pnpm","pnpm dlx skills add usurobor\u002Fcnos --skill ux-cli","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.eng\u002Fskills\u002Feng\u002Fux-cli\u002FSKILL.md",true,[],[70,88,104,130,146,167],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":35},"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",[],[77,78,79,80,81,29,82,83,84,85,86,87],"triage","issues","issues triage","issue triage","SET","decision","public","use","dispatch","issue","doctrine",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":35},"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",[],[78,95,96,97,98,99,81,100,83,101,84,85,102,86,103],"taxonomy","issues taxonomy","github","status","protocol","open","board","github issue","issue labels",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":118,"publishedAt":35},"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",[110,115],{"categoryNo":111,"categoryName":112,"taxonomyType":113,"taxonomyTypeDesc":114},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[78,119,97,120,121,122,81,123,95,100,29,124,125,101,126,127,128,129,84,86],"issues map","reasoning","data","pipeline","api","json","README","edit","interactive","fetch","generated",{"skillNo":131,"name":78,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":35},"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",[],[78,97,136,137,138,139,140,141,142,95,100,29,82,143,125,144,84,32,85,145],"pr","current state","run","artifacts","state","package","boundary","branch","command","cds",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":35},"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",[],[153,154,139,99,155,29,156,157,158,83,159,160,161,162,84,163,164,165,166,87],"receipt stream","handoff","index","learning","format","trace","repo","closeout","read","channel","embedded","patch","shape","cdd",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":35},"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",[],[174,97,175,176,177,178,29,179,180,143,159,161,84,32,85,181,102,182,183,184],"mid flight","change","sessions","file","cache","pin","coordination","up","Legacy","gamma","artifact channel"]