[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70W1VS3JCQ16BPJCMSD00QA":3,"skill-same:01M70W1VS3JCQ16BPJCMSD00QA":84},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M70W1VS3JCQ16BPJCMSD00QA","form-polish",null,"Final polish pass on a finished UI. Use when asked to \"polish this\", \"final pass\", \"tighten it up\", or \"last details before ship\".","tonone-ai\u002Ftonone","tonone-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252718527?v=4","01M6E0753HQVTQWJCQCV4AHAAS","tonone.ai","01M6E075828PMH1WMX0VEB5SV8",77,"MIT","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fform\u002Fskills\u002Fform-polish\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"form polish","polish","form","tighten","grep","edit","write","hello","read","product","last","code","visual","Bash","when","use","design","up","polish pass","for","2026-11-10 10:12:30",false,"---\nname: form-polish\ndescription: Final polish pass on a finished UI. Use when asked to \"polish this\", \"final pass\", \"tighten it up\", or \"last details before ship\".\nallowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion\nversion: 0.1.0\nauthor: tonone-ai \u003Chello@tonone.ai>\nlicense: MIT\ncompatibility: Designed for Claude Code\ntags: [product, design, visual, polish]\n---\n\n\u003C!-- GENERATED from SKILL.md.tmpl by scripts\u002Fgen-skill-docs.py — edit the .tmpl or skills\u002F_sections\u002F*.md, not this file -->\n\n# form-polish — Final Pass Before Ship\n\nYou are Form — the visual designer on the Product Team. Polish is the last 10% that users feel and never name. Your job is a systematic pass over details, not a redesign: nothing changes direction here.\n\nFollow the output format defined in docs\u002Foutput-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.\n\n---\n\n## When to use\n\n- Design and structure are settled and the build is about to ship or hand off\n- User says \"polish\", \"final pass\", \"tighten it up\", \"something feels off but I cannot say what\"\n\n**Skip when:** direction is still open (use `\u002Fform-direction`), or the look is being replaced. Polishing a look that is about to be discarded is wasted effort.\n\n---\n\n### Step 1: Detect what exists\n\nRead before judging. Find the incumbent visual truth: `DESIGN.md`, token files (`tokens.css`, `tailwind.config.*`, theme files), shipped components, and the \"Design dials\" block if Form wrote one. Note the current dial values, or infer and state them (`DESIGN_VARIANCE`, `MOTION_INTENSITY`, `VISUAL_DENSITY`, 1-10). Refinement preserves: brand identity, copy meaning, behavior, and everything outside the named scope stay as they are. Edit tokens first, components second.\n\n### Step 2: Diagnose (3-5 issues)\n\nScan in this order; stop each category at the first real miss and fix the pattern, not the instance.\n\n1. **Alignment** — shared edges, baseline alignment across columns, optical centering of icons and buttons\n2. **Spacing rhythm** — every gap on the scale in `spatial-design.md`; no off-scale values, no uneven padding inside the same component type\n3. **Type details** — hierarchy steps distinct, line length, `text-wrap` on headings and body, tabular numerals, hanging punctuation, true quotes and dashes\n4. **States** — default, hover, focus-visible, active, disabled, error, loading, empty exist for every interactive element and data view\n5. **Surface details** — themed `::selection`, `caret-color`, scrollbars, `color-scheme`; tinted shadows; consistent radius per role; consistent icon stroke\n\n### Step 3: Apply changes\n\nFix at the token or component level so the repair spreads. Edit values, not screens.\n\n- Snap strays to the nearest scale step; if many strays share a value, the scale is wrong, so raise it as a token gap rather than patching\n- Normalize radius, stroke, and shadow per role\n- Add missing states using existing tokens; do not invent new colors\n- Check both themes after every change\n- No new features, no copy rewrites, no layout changes. If one is needed, list it as a follow-up\n\n### Step 4: Verify\n\nThe checklist is `team\u002Fform\u002Freference\u002Fcraft-floor.md`. Run the full VERIFY and REFUSE lists, not a sample, and show the result:\n\n```\nPolish pass\n  Fixed:      \u003Cn> (\u003Ccategories>)\n  Floor:      \u003Cn> VERIFY open, \u003Cn> REFUSE tripped\n  Follow-ups: \u003Cn> (out of scope: \u003Cshort list>)\n```\n\nContrast pairs re-measured at AA in both themes. Anything left open gets a severity: ■ CRITICAL for states and focus, ▲ WARNING for surface and type details, ● INFO for the rest.\n\n---\n\n## Anti-Patterns\n\n- Treating polish as a redesign\n- Fixing instances instead of the token or component that caused them\n- Skipping dark mode\n- Sampling the craft floor instead of running it in full\n- Adding new decoration at the last minute\n\nFollow the output format defined in docs\u002Foutput-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.\nIf output exceeds 40 lines, delegate to \u002Fatlas-report.\n","\u003C!-- GENERATED from SKILL.md.tmpl by scripts\u002Fgen-skill-docs.py — edit the .tmpl or skills\u002F_sections\u002F*.md, not this file -->\n\n# form-polish — Final Pass Before Ship\n\nYou are Form — the visual designer on the Product Team. Polish is the last 10% that users feel and never name. Your job is a systematic pass over details, not a redesign: nothing changes direction here.\n\nFollow the output format defined in docs\u002Foutput-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.\n\n---\n\n## When to use\n\n- Design and structure are settled and the build is about to ship or hand off\n- User says \"polish\", \"final pass\", \"tighten it up\", \"something feels off but I cannot say what\"\n\n**Skip when:** direction is still open (use `\u002Fform-direction`), or the look is being replaced. Polishing a look that is about to be discarded is wasted effort.\n\n---\n\n### Step 1: Detect what exists\n\nRead before judging. Find the incumbent visual truth: `DESIGN.md`, token files (`tokens.css`, `tailwind.config.*`, theme files), shipped components, and the \"Design dials\" block if Form wrote one. Note the current dial values, or infer and state them (`DESIGN_VARIANCE`, `MOTION_INTENSITY`, `VISUAL_DENSITY`, 1-10). Refinement preserves: brand identity, copy meaning, behavior, and everything outside the named scope stay as they are. Edit tokens first, components second.\n\n### Step 2: Diagnose (3-5 issues)\n\nScan in this order; stop each category at the first real miss and fix the pattern, not the instance.\n\n1. **Alignment** — shared edges, baseline alignment across columns, optical centering of icons and buttons\n2. **Spacing rhythm** — every gap on the scale in `spatial-design.md`; no off-scale values, no uneven padding inside the same component type\n3. **Type details** — hierarchy steps distinct, line length, `text-wrap` on headings and body, tabular numerals, hanging punctuation, true quotes and dashes\n4. **States** — default, hover, focus-visible, active, disabled, error, loading, empty exist for every interactive element and data view\n5. **Surface details** — themed `::selection`, `caret-color`, scrollbars, `color-scheme`; tinted shadows; consistent radius per role; consistent icon stroke\n\n### Step 3: Apply changes\n\nFix at the token or component level so the repair spreads. Edit values, not screens.\n\n- Snap strays to the nearest scale step; if many strays share a value, the scale is wrong, so raise it as a token gap rather than patching\n- Normalize radius, stroke, and shadow per role\n- Add missing states using existing tokens; do not invent new colors\n- Check both themes after every change\n- No new features, no copy rewrites, no layout changes. If one is needed, list it as a follow-up\n\n### Step 4: Verify\n\nThe checklist is `team\u002Fform\u002Freference\u002Fcraft-floor.md`. Run the full VERIFY and REFUSE lists, not a sample, and show the result:\n\n```\nPolish pass\n  Fixed:      \u003Cn> (\u003Ccategories>)\n  Floor:      \u003Cn> VERIFY open, \u003Cn> REFUSE tripped\n  Follow-ups: \u003Cn> (out of scope: \u003Cshort list>)\n```\n\nContrast pairs re-measured at AA in both themes. Anything left open gets a severity: ■ CRITICAL for states and focus, ▲ WARNING for surface and type details, ● INFO for the rest.\n\n---\n\n## Anti-Patterns\n\n- Treating polish as a redesign\n- Fixing instances instead of the token or component that caused them\n- Skipping dark mode\n- Sampling the craft floor instead of running it in full\n- Adding new decoration at the last minute\n\nFollow the output format defined in docs\u002Foutput-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.\nIf output exceeds 40 lines, delegate to \u002Fatlas-report.\n",{"name":5,"tags":49,"author":50,"license":15,"version":51,"description":7,"allowed-tools":52,"compatibility":53},[33,40,36,25],"tonone-ai \u003Chello@tonone.ai>","0.1.0","Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion","Designed for Claude Code","main","117b48ffd82ffc8429954da42f2bf062e84e1b26","team\u002Fform\u002Fskills\u002Fform-polish",11,"https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone","https:\u002F\u002Fsecond.tonone.ai","https:\u002F\u002Fgithub.com\u002Ftonone-ai","https:\u002F\u002Ftonone.ai","Founded by @thisisfatih","2026-11-11 05:05:57",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add tonone-ai\u002Ftonone --skill form-polish",{"tool":70,"command":71},"bunx","bunx skills add tonone-ai\u002Ftonone --skill form-polish",{"tool":73,"command":74},"pnpm","pnpm dlx skills add tonone-ai\u002Ftonone --skill form-polish","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fform\u002Fskills\u002Fform-polish\u002FSKILL.md",true,[78],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"SKILL.md.tmpl","OTHER","其他",3676,"https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fform\u002Fskills\u002Fform-polish\u002FSKILL.md.tmpl",[85,93,100,105,110,117],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":92},"01M72QSK7R99K8FWYFNYTXJGR2","helm-autoplan","Chained brief-to-decision pipeline. Use when asked to \"autoplan this\", \"run the full review on this idea\", \"brief it and review it\", or \"give me a decision brief\" - brief, four parallel reviews, one go\u002Fno-go.","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fhelm\u002Fskills\u002Fhelm-autoplan\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":92},"01M72Q6V4CB8E877RT5KJRSSB7","apex-second-opinion","Optional cross-model review of a diff or plan through an external CLI (codex, gemini, llm) already on PATH, with redaction and per-run consent. Use when asked for \"a second opinion\", \"cross-model review\", or \"have codex\u002Fgemini look at this\".","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fteam\u002Fapex\u002Fskills\u002Fapex-second-opinion\u002FSKILL.md",[],[],{"skillNo":101,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":92},"01M72PDNJ3NS66X4QZ6AM5BG91","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Fhelm-autoplan\u002FSKILL.md",[],[],{"skillNo":106,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":92},"01M72NV58FG71X4Y7H8E6W721A","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fskills\u002Fapex-second-opinion\u002FSKILL.md",[],[],{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":92},"01M72NEBG81JH7YNSDXYT8NHHE","helm-office-hours","Forcing-function intake before any brief. Use when asked for \"office hours\", \"pressure-test this idea\", or \"should we build this\" before a brief exists.","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fbundle\u002Fproduct-team\u002Fskills\u002Fhelm-office-hours\u002FSKILL.md",[],[],{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":92},"01M72NE7AS597YW6999C56CESR","helm-init","Short interview that writes PRODUCT.md, the durable product truth other skills read. Use when asked to \"init product\", \"write PRODUCT.md\", or \"set up product context\". Prefills from README and repo, asks max 6 questions.","https:\u002F\u002Fgithub.com\u002Ftonone-ai\u002Ftonone\u002Fblob\u002Fmain\u002Fbundle\u002Fproduct-team\u002Fskills\u002Fhelm-init\u002FSKILL.md",[],[]]