[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MP3AMNR8K0YBA6WD54YKHG":3,"skill-same:01M6MP3AMNR8K0YBA6WD54YKHG":89},{"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":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":64,"ownerHtmlUrl":65,"ownerBlogUrl":66,"ownerDescription":67,"updatedAt":68,"install":69,"resources":82},"01M6MP3AMNR8K0YBA6WD54YKHG","design-build",null,"Execute a design plan produced by \u002Fdesign -- implements each node against its embedded measurement spec and gates every task on the project's build or tests under a bounded retry budget. Runs with Figma disconnected; the plan carries every number it needs. --auto runs the whole loop without a prompt.","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1571,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fyagizdo\u002Fquiver\u002Fskills\u002Fdesign-build\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"design","design build","build","bounded","number","retry","make","project","me","pixel","but","auto","node","pick","plan","loop","Budget","ui","figma","commit","2026-11-10 10:12:30",false,"---\nname: design-build\ndescription: \"Execute a design plan produced by \u002Fdesign -- implements each node against its embedded measurement spec and gates every task on the project's build or tests under a bounded retry budget. Runs with Figma disconnected; the plan carries every number it needs. --auto runs the whole loop without a prompt.\"\nargument-hint: \"\u003Cpath to a *-design-plan.md, or empty to pick one> [--auto] [--no-commit]\"\nwhen-to-use: \"user wants to build a design plan into working pixel-accurate UI -- '\u002Fdesign-build', '\u002Fdesign-build --auto', 'build the design plan', 'implement the figma plan', 'make it match the design', 'build the plan without asking me again', 'build it but do not commit anything'\"\n---\n\n# Gather Context\n\n```\n!`git rev-parse --is-inside-work-tree 2>\u002Fdev\u002Fnull || echo \"NO_GIT\"`\n```\n\n```\n!`git branch --show-current 2>\u002Fdev\u002Fnull || echo \"NO_GIT\"`\n```\n\n```\n!`git status --short 2>\u002Fdev\u002Fnull || echo \"NO_GIT\"`\n```\n\n---\n\n# Instructions\n\nYou are a design implementation specialist. You take a plan written by `\u002Fquiver:design`, build it against the numbers the plan already carries, and gate every task on the project's own build or tests. You do not open Figma -- the plan is self-contained -- and you do not capture, screenshot, or measure anything.\n\n**Announce:** \"Using the design-build skill to implement the design plan.\"\n\n## Phase 0 -- Git Availability\n\nIf a gather-context block returned `NO_GIT`, this directory is not a git repository.\nPrint: `> No git repository detected -- skipping branch and commit steps.`\nProceed. Skip branch creation in Phase 2 and all commit steps in Phase 3d.\n\n## Phase 1 -- Load the Plan\n\n**Arguments.** `--auto` anywhere in `$ARGUMENTS` sets **auto mode**: no `AskUserQuestion`\nis reachable from any path in this skill. Strip it before resolving a path -- a flag is not\na plan path. `\u002Fquiver:design --auto` forwards it here; a user can also type it directly against an\nexisting plan.\n\n`--no-commit` anywhere in `$ARGUMENTS` forces `commit_strategy: none` for this run,\nwhatever the plan says. Strip it before resolving a path too. It is independent of\n`--auto`: either flag works without the other.\n\nAuto mode changes three decisions and nothing else: which plan loads when several match\n(Phase 1), what happens after three failed fix attempts (Phase 3c), and the handoff at the\nend (Phase 4). Every gate verdict and commit rule is identical in both modes -- auto mode\nnever lowers a bar, it only stops asking.\n\n**Every `AskUserQuestion` call site in this skill sits on an `Otherwise` line, with its\nauto-mode branch directly above it.** A prompt added any other way stalls an auto run\nwaiting on a human who walked away, and nothing in the transcript says why. A new prompt\nsite takes that shape or it does not go in.\n\n**Path given.** If `$ARGUMENTS` ends in `.md` or contains `\u002F`, read that file.\n\n**No arguments.** Use the Glob tool on `.claude\u002Fplans\u002F*-design-plan.md`. Treat an empty result as none found.\n\n- One match: read it and print `> Executing design plan: {filename}`.\n- Several matches, **auto mode**: take the most recent by the plan filename's `YYYY-MM-DD` prefix and print `> Executing design plan: {filename} (most recent of {N}).` Naming the count is what makes a wrong pick visible in the transcript.\n- Several matches, otherwise: use `AskUserQuestion` with one button per plan, most recent first, plus `\"Other -- I'll give a path\"`.\n- No matches: print\n  ```\n  > No design plan found. Run \u002Fquiver:design first to extract a Figma design into a plan.\n  ```\n  **Stop here.**\n\n**Validate the plan.** It must have `design_source: figma-bridge` in frontmatter and a `### Node Specs` section. If either is missing, print:\n```\n> {filename} is not a design plan. It has no Node Specs section. Run \u002Fquiver:design to\n> produce one, or pass a design plan path explicitly.\n```\n**Stop here.**\n\n**Check the references.** Every path under `screenshot_dir` named in a node spec must exist on disk. If any are missing, print which ones and continue. A missing reference image never blocks the build: the plan carries every number the implementation needs, and the images are there for a human reading the plan.\n\n### Frontmatter fields this skill reads\n\nThe plan schema is declared once, in `skills\u002Fdesign\u002FSKILL.md` Step 9. This skill does not\nreproduce that fence. It reads these fields and applies these defaults when a field is\nabsent:\n\n| Field | Used for | Default when absent |\n|-------|----------|---------------------|\n| `commit_strategy` | Phase 3d's commit policy | `none` |\n| `verify_gate` | which command must pass before a commit | `none` |\n| `screenshot_dir` | where the plan's reference images live | `.claude\u002Fplans\u002Fassets\u002F\u003Cslug>\u002F`, slug derived from the plan filename |\n\nPlans written before these fields existed carry none of them, and they live in\n`.claude\u002Fplans\u002F`, which is gitignored -- no migration can reach them. The defaults are\nload-bearing, not defensive styling. Default `commit_strategy` to `none` specifically:\nan older plan predates the question being asked, so the user never consented to a commit.\n\n## Phase 2 -- Branch\n\nSkip entirely if `NO_GIT`.\n\nIf the current branch is not the default branch (`master` or `main`), stay on it. Nothing below runs.\n\nOn the default branch, resolve `design\u002F\u003Cslug>` from the plan's slug, then check two things before touching it:\n\n1. **Uncommitted work.** The third gather-context block already holds `git status --short`. If it is non-empty, do not switch branches -- a checkout carries those changes onto the new branch or fails outright. Stay put and print:\n   `> Uncommitted changes present -- building on {current branch} instead of creating design\u002F\u003Cslug>.`\n2. **The branch already exists.** Run `git rev-parse --verify design\u002F\u003Cslug>` with the Bash tool. A re-run of the same plan hits this every time, and `git checkout -b` aborts on it.\n   - Exists: `git checkout design\u002F\u003Cslug>` and print `> Continuing on existing branch design\u002F\u003Cslug>.`\n   - Does not exist: `git checkout -b design\u002F\u003Cslug>`.\n\nRead `git branch --show-current` back afterwards and print the branch the build actually runs on. A silent checkout failure otherwise puts the whole run on the default branch.\n\n## Phase 3 -- Build Loop\n\nWork the plan's `### Tasks` in order. New-token tasks come first -- later tasks reference those tokens.\n\nFor each task:\n\n### 3a -- Implement\n\nRead the node specs the task names. Write the code using the plan's literal values and the Token Map. Match the project's component conventions from the plan's `### Stack and Conventions` section.\n\nThree spec lines override the raw measurements when they are present:\n\n- **`Fit:`** wins over `Box:` on any axis it marks `fill`. The `Box:` number is what that\n  axis measured at one frame size; writing it as a fixed dimension produces a component\n  that is wrong at every other width. Implement `fill` as the framework's fill mechanism.\n- **`Content:`** is the literal copy, and its i18n decision is binding. When it names a\n  key, add the key and reference it. Never invent or paraphrase copy.\n- **`Route:`** is where the node lives at runtime. Build it so that route reaches it.\n\n**Layout reconciliation is mandatory.** Before writing any centering, alignment, or positioning code, check whether the node has a `Reconciliation:` line in its spec.\n\n- **Reconciliation line present with a precedent `file:line`.** Read that file range. Use the same mechanism. Do not substitute a simpler one that happens to compile -- the precedent exists because the simple version produces the wrong result.\n- **Reconciliation line present, no precedent (`No precedent found`).** Derive a solution from the layout chrome mechanism the plan records under `### Stack and Conventions`. The rule: center within the region the chrome excludes, never within the full screen. Concretely, that means constraining the content to the chrome-excluded region and centering inside that constraint, rather than centering at page level and hoping the chrome cancels out. Add a short comment naming what the content is centered within, so the next reader does not simplify it back into a page-level center.\n- **No Reconciliation line.** The anchor is either a flow position or a plain edge inset. Implement it directly.\n\nFollow the plan's File Map. Do not create files the plan does not list.\n\nWhen the implementation is written, go to **3d**. 3c is reached only from a failed gate,\nnever directly from here.\n\n### 3c -- Fix, Bounded\n\nThere is one way in: 3d's verification gate failed and handed its output here. A cleared\ngate never enters, and a task whose gate is `none` never enters either.\n\nFix what the gate reported, then return to 3d. **Three attempts maximum per task**,\ncounting the initial implementation as attempt one. Every failure kind draws on this\ncounter -- one counter per task.\n\nAfter the third attempt still leaves the gate failing, **stop**. Do not keep looping.\n\n**In auto mode**, take the \"Accept as-is\" path without asking: record the failure with the\ngate output that produced it, leave the code in place, and continue to 3d on the same\nterms that bullet already sets -- including its rule about not re-running a gate this task\nalready failed. Print one line so the run stays readable:\n\n```\n> Task {id}: still failing its check after 3 attempts -- accepted.\n```\n\nThe budget is never extended in auto mode. \"Try 3 more attempts\" is a human's call, and a\nloop that grants itself more attempts has no cap. Phase 4 lists every accepted failure\nwith its gate output, which is where the user decides whether to revisit.\n\n**Otherwise** call `AskUserQuestion`:\n\n> Task {id} still fails the project's {build or tests} after 3 attempts:\n> {the failing lines of that output}\n\nButtons: `[\"Accept as-is -- note it and move on\", \"I'll describe the fix\", \"Try 3 more attempts\", \"Skip this task\"]`\n\n- **Accept as-is:** record the failure in the final summary and continue to 3d. 3d does not re-run the gate on that path -- see the gate budget below.\n- **I'll describe the fix:** take the user's description, apply it, then continue to 3d regardless of the result.\n- **Try 3 more attempts:** reset the counter and return to the top of 3c. This is the only way the budget grows -- it is never extended automatically.\n- **Skip this task:** undo what this task wrote, mark it skipped, continue to the next task. Undo has one mechanism per environment, and none of them is `git revert` -- under the default `commit_strategy: none` there is no commit to revert:\n  - **Git available:** `git restore -- \u003Cfiles this task modified>` for tracked files, then delete the files this task created. Take that file list from 3a's own record of what it wrote, never from `git status` -- an earlier task's uncommitted work sits in the same tree and is not this task's to undo.\n  - **`NO_GIT`, or any file this task shares with an earlier task:** undo nothing. Leave the code in place, mark the task `skipped (changes left in place)`, and name those files in the Phase 4 summary. Hand-unpicking interleaved edits is worse than the half-built state, and there is no restore point to fall back to.\n\n### 3d -- Gate, then Commit\n\n**Verification gate.** Read `verify_gate` from the plan frontmatter.\n\n- `build` -- run the build command resolved by reading `skills\u002Fverification\u002FSKILL.md` and\n  following its `## Command Resolution`; resolve once, at the first 3d of the run, and\n  reuse the value for every later task.\n- `test` -- run the test command resolved by reading `skills\u002Fverification\u002FSKILL.md` and\n  following its `## Command Resolution`; resolve once, at the first 3d of the run, and\n  reuse the value for every later task.\n- `none` (the default) -- no gate; go straight to the commit policy.\n\nWhen the resolved command is `none`, the gate cannot run. Record this task's gate verdict\nas `failed` with the reason `no \u003Cbuild|test> command resolved (\u003Creason>)`, where `\u003Creason>`\nis the text the resolution wrote in its parentheses, and do not re-enter 3c -- there is no\nfailure output to feed it. The commit policy then applies the verdict exactly as it does\nfor any failed gate. This is the only branch in which a `failed` verdict is written without\nthe gate having run.\n\n**The gate runs at most twice per task.** Run it; on a failure, feed the failure output\nback into 3c and re-entering the fix loop under the same 3-attempt budget;\nthen run it one final time. That second run is the last for this task whatever it returns.\n\nRecord the outcome as this task's **gate verdict**, `cleared` or `failed`. A `cleared`\nverdict quotes the evidence line per the `## Evidence Rule` in\n`skills\u002Fverification\u002FSKILL.md`. Everything downstream reads the verdict; the gate itself\nnever runs a third time.\n\n3c's \"Accept as-is\" returns here with the verdict already `failed`. **Do not re-run the\ngate on that path** -- re-running it re-enters 3c, which returns here, which re-runs it.\nThe 3-attempt budget bounds 3c's internal loop, not the 3c-to-3d cycle, so a gate failing\nfor a reason this task cannot fix (a pre-existing compile error elsewhere) would otherwise\nhave no exit but \"Skip this task\".\n\n**Commit policy.** Read `commit_strategy` from the plan frontmatter. The user chose this\nat plan time, so nothing here asks again.\n\n**`--no-commit` overrides it to `none`** before anything below is read. It reports itself\nonce on the first task, in place of the `none` line below rather than alongside it:\n`> --no-commit: changes stay in the working tree.` The override is run-scoped --\nit never rewrites the plan, so the same plan still commits on a run without the flag. This\nis the only way to run a plan carrying `per-task` or `single` without commits, because Step\n8 of `\u002Fquiver:design` is not re-asked here.\n\n- `none` (the default) -- write no commit. Say so once, on the first task:\n  `> No commit: changes stay in the working tree for you to review.` Do not repeat it per\n  task.\n- `per-task` -- skip if `NO_GIT`. Skip when this task's gate verdict is `failed`, and say\n  which task and why. Otherwise stage only the files this task touched. Never `git add .`.\n  Never stage the plan or anything under `screenshot_dir`. Commit with a Conventional\n  Commits message scoped to the task, for example\n  `feat(wallet): add balance card matching design spec`. No push. No AI attribution.\n- `single` -- accumulate. Commit nothing here; after the last task, make one commit\n  covering every file the run touched, with a Conventional Commits message scoped to the\n  plan. Same staging rules, same exclusions, no push, no AI attribution.\n  **Enforce the gate verdicts at that point.** Under `single` there is no per-task commit\n  for a failing gate to block, so a task the gate rejected would otherwise ride into the\n  final commit alongside the cleared ones. If any task's verdict is `failed`, write no\n  commit at all: print each failed task with its gate output and leave everything in the\n  working tree. Splitting the commit is not an option -- a later task builds on an earlier\n  one's files, so the cleared subset is not independently committable.\n\n## Phase 4 -- Summary and Handoff\n\nPrint a table:\n\n| Task | Status | Check |\n|------|--------|-------|\n| 1 | done | cleared |\n| 2 | done | cleared |\n| 3 | done | failed |\n| 4 | skipped (changes left in place) | -- |\n\nThen print exactly one line for the run, whatever the plan and the tasks contained:\n\n```\nDesign match: skipped -- nothing measured the built UI\n```\n\nNothing in this skill measures the built UI against the plan's Node Specs, and no other\nskill does it either. Reporting the step as skipped with its reason is the\n`skipped: \u003Creason>` grammar of `skills\u002Fverification\u002FSKILL.md`; leaving it out of the\nsummary would read as a step that ran and passed.\n\nThen list every accepted check failure with the task and the file it lives in, so the user can decide later whether to revisit. Name every task whose changes were left in place after a skip.\n\nPrint the branch name and the commit count.\n\n**In auto mode**, print the next steps as text and stop:\n\n```\n> Next: \u002Fquiver:review to read the diff, \u002Fcommit to commit, \u002Fcreate-pr to open a PR.\n```\n\nInvoke none of them. The consent this run carries covers the build -- not a review, not a\ncommit the plan's `commit_strategy` did not authorize, and not a pull request.\n\nOtherwise print `> Review before merging: \u002Fquiver:review` as text, then call `AskUserQuestion`:\n\n> Build finished. What next?\n\nButtons: `[\"Commit -- \u002Fcommit\", \"Open a PR -- \u002Fcreate-pr\", \"Stop here\"]`\n\n- **Commit:** invoke the `commit` skill.\n- **Open a PR:** invoke the `create-pr` skill.\n- **Stop here:** stop.\n\nThe build starts no review: a review reads the finished branch and is the user's step before merging, so the command is printed as text and is never a button here.\n\nDo not open a pull request directly -- `\u002Fcreate-pr` owns that.\n\n---\n\n## Anti-Patterns\n\nFollow all rules in `.claude\u002Frules\u002Fskill-rules.md`. Additionally:\n\n- **Don't** call figma-bridge tools. This skill runs with Figma disconnected; the plan carries the data.\n- **Don't** capture, screenshot, or compare here. Nothing in this skill measures the built UI, and no other skill does it for you.\n- **Don't** report a design-match result. The Phase 4 line is `Design match: skipped -- nothing measured the built UI`, on every run.\n- **Don't** drop that line from the summary. A step left out of the summary reads as a step that passed.\n- **Don't** loop the fix cycle without a bound. Three attempts, then ask -- or, in auto mode, accept and move on.\n- **Don't** re-run the gate after \"Accept as-is\". That is the 3c-to-3d cycle the attempt budget does not bound.\n- **Don't** extend the retry budget on your own. Only the user's \"Try 3 more attempts\" resets it, and auto mode never reaches that button.\n- **Don't** call `AskUserQuestion` from any path in auto mode. The whole contract is that `\u002Fquiver:design` Step 8 was the run's last question.\n- **Don't** invoke `\u002Fquiver:review`, `\u002Fcommit`, or `\u002Fcreate-pr` from the auto handoff. Naming them is the handoff; running them is a decision nobody consented to.\n- **Don't** replace a precedent mechanism with a simpler one because it compiles. The precedent is in the plan because the simple version is what looks wrong.\n- **Don't** center at page level when a Reconciliation line names a chrome-excluded region.\n- **Don't** write a `fill` axis as the literal `Box:` number.\n- **Don't** adjust the plan's numbers to match what the code happens to produce. Fix the code.\n- **Don't** commit when `commit_strategy` is absent or `none`. Absence means the user was never asked.\n- **Don't** write `--no-commit` into the plan. It is one run's override, and the plan is what the user chose at Step 8.\n- **Don't** commit past a failing verification gate. Under `single` that means withholding the whole accumulate commit, not skipping one task's files.\n- **Don't** answer \"Skip this task\" with `git revert`. The default strategy writes no commit, so there is nothing to revert.\n- **Don't** stage the plan file or the reference assets.\n- **Don't** restate the plan frontmatter schema. `skills\u002Fdesign\u002FSKILL.md` Step 9 declares it; this file lists only the fields it reads.\n","# Gather Context\n\n```\n!`git rev-parse --is-inside-work-tree 2>\u002Fdev\u002Fnull || echo \"NO_GIT\"`\n```\n\n```\n!`git branch --show-current 2>\u002Fdev\u002Fnull || echo \"NO_GIT\"`\n```\n\n```\n!`git status --short 2>\u002Fdev\u002Fnull || echo \"NO_GIT\"`\n```\n\n---\n\n# Instructions\n\nYou are a design implementation specialist. You take a plan written by `\u002Fquiver:design`, build it against the numbers the plan already carries, and gate every task on the project's own build or tests. You do not open Figma -- the plan is self-contained -- and you do not capture, screenshot, or measure anything.\n\n**Announce:** \"Using the design-build skill to implement the design plan.\"\n\n## Phase 0 -- Git Availability\n\nIf a gather-context block returned `NO_GIT`, this directory is not a git repository.\nPrint: `> No git repository detected -- skipping branch and commit steps.`\nProceed. Skip branch creation in Phase 2 and all commit steps in Phase 3d.\n\n## Phase 1 -- Load the Plan\n\n**Arguments.** `--auto` anywhere in `$ARGUMENTS` sets **auto mode**: no `AskUserQuestion`\nis reachable from any path in this skill. Strip it before resolving a path -- a flag is not\na plan path. `\u002Fquiver:design --auto` forwards it here; a user can also type it directly against an\nexisting plan.\n\n`--no-commit` anywhere in `$ARGUMENTS` forces `commit_strategy: none` for this run,\nwhatever the plan says. Strip it before resolving a path too. It is independent of\n`--auto`: either flag works without the other.\n\nAuto mode changes three decisions and nothing else: which plan loads when several match\n(Phase 1), what happens after three failed fix attempts (Phase 3c), and the handoff at the\nend (Phase 4). Every gate verdict and commit rule is identical in both modes -- auto mode\nnever lowers a bar, it only stops asking.\n\n**Every `AskUserQuestion` call site in this skill sits on an `Otherwise` line, with its\nauto-mode branch directly above it.** A prompt added any other way stalls an auto run\nwaiting on a human who walked away, and nothing in the transcript says why. A new prompt\nsite takes that shape or it does not go in.\n\n**Path given.** If `$ARGUMENTS` ends in `.md` or contains `\u002F`, read that file.\n\n**No arguments.** Use the Glob tool on `.claude\u002Fplans\u002F*-design-plan.md`. Treat an empty result as none found.\n\n- One match: read it and print `> Executing design plan: {filename}`.\n- Several matches, **auto mode**: take the most recent by the plan filename's `YYYY-MM-DD` prefix and print `> Executing design plan: {filename} (most recent of {N}).` Naming the count is what makes a wrong pick visible in the transcript.\n- Several matches, otherwise: use `AskUserQuestion` with one button per plan, most recent first, plus `\"Other -- I'll give a path\"`.\n- No matches: print\n  ```\n  > No design plan found. Run \u002Fquiver:design first to extract a Figma design into a plan.\n  ```\n  **Stop here.**\n\n**Validate the plan.** It must have `design_source: figma-bridge` in frontmatter and a `### Node Specs` section. If either is missing, print:\n```\n> {filename} is not a design plan. It has no Node Specs section. Run \u002Fquiver:design to\n> produce one, or pass a design plan path explicitly.\n```\n**Stop here.**\n\n**Check the references.** Every path under `screenshot_dir` named in a node spec must exist on disk. If any are missing, print which ones and continue. A missing reference image never blocks the build: the plan carries every number the implementation needs, and the images are there for a human reading the plan.\n\n### Frontmatter fields this skill reads\n\nThe plan schema is declared once, in `skills\u002Fdesign\u002FSKILL.md` Step 9. This skill does not\nreproduce that fence. It reads these fields and applies these defaults when a field is\nabsent:\n\n| Field | Used for | Default when absent |\n|-------|----------|---------------------|\n| `commit_strategy` | Phase 3d's commit policy | `none` |\n| `verify_gate` | which command must pass before a commit | `none` |\n| `screenshot_dir` | where the plan's reference images live | `.claude\u002Fplans\u002Fassets\u002F\u003Cslug>\u002F`, slug derived from the plan filename |\n\nPlans written before these fields existed carry none of them, and they live in\n`.claude\u002Fplans\u002F`, which is gitignored -- no migration can reach them. The defaults are\nload-bearing, not defensive styling. Default `commit_strategy` to `none` specifically:\nan older plan predates the question being asked, so the user never consented to a commit.\n\n## Phase 2 -- Branch\n\nSkip entirely if `NO_GIT`.\n\nIf the current branch is not the default branch (`master` or `main`), stay on it. Nothing below runs.\n\nOn the default branch, resolve `design\u002F\u003Cslug>` from the plan's slug, then check two things before touching it:\n\n1. **Uncommitted work.** The third gather-context block already holds `git status --short`. If it is non-empty, do not switch branches -- a checkout carries those changes onto the new branch or fails outright. Stay put and print:\n   `> Uncommitted changes present -- building on {current branch} instead of creating design\u002F\u003Cslug>.`\n2. **The branch already exists.** Run `git rev-parse --verify design\u002F\u003Cslug>` with the Bash tool. A re-run of the same plan hits this every time, and `git checkout -b` aborts on it.\n   - Exists: `git checkout design\u002F\u003Cslug>` and print `> Continuing on existing branch design\u002F\u003Cslug>.`\n   - Does not exist: `git checkout -b design\u002F\u003Cslug>`.\n\nRead `git branch --show-current` back afterwards and print the branch the build actually runs on. A silent checkout failure otherwise puts the whole run on the default branch.\n\n## Phase 3 -- Build Loop\n\nWork the plan's `### Tasks` in order. New-token tasks come first -- later tasks reference those tokens.\n\nFor each task:\n\n### 3a -- Implement\n\nRead the node specs the task names. Write the code using the plan's literal values and the Token Map. Match the project's component conventions from the plan's `### Stack and Conventions` section.\n\nThree spec lines override the raw measurements when they are present:\n\n- **`Fit:`** wins over `Box:` on any axis it marks `fill`. The `Box:` number is what that\n  axis measured at one frame size; writing it as a fixed dimension produces a component\n  that is wrong at every other width. Implement `fill` as the framework's fill mechanism.\n- **`Content:`** is the literal copy, and its i18n decision is binding. When it names a\n  key, add the key and reference it. Never invent or paraphrase copy.\n- **`Route:`** is where the node lives at runtime. Build it so that route reaches it.\n\n**Layout reconciliation is mandatory.** Before writing any centering, alignment, or positioning code, check whether the node has a `Reconciliation:` line in its spec.\n\n- **Reconciliation line present with a precedent `file:line`.** Read that file range. Use the same mechanism. Do not substitute a simpler one that happens to compile -- the precedent exists because the simple version produces the wrong result.\n- **Reconciliation line present, no precedent (`No precedent found`).** Derive a solution from the layout chrome mechanism the plan records under `### Stack and Conventions`. The rule: center within the region the chrome excludes, never within the full screen. Concretely, that means constraining the content to the chrome-excluded region and centering inside that constraint, rather than centering at page level and hoping the chrome cancels out. Add a short comment naming what the content is centered within, so the next reader does not simplify it back into a page-level center.\n- **No Reconciliation line.** The anchor is either a flow position or a plain edge inset. Implement it directly.\n\nFollow the plan's File Map. Do not create files the plan does not list.\n\nWhen the implementation is written, go to **3d**. 3c is reached only from a failed gate,\nnever directly from here.\n\n### 3c -- Fix, Bounded\n\nThere is one way in: 3d's verification gate failed and handed its output here. A cleared\ngate never enters, and a task whose gate is `none` never enters either.\n\nFix what the gate reported, then return to 3d. **Three attempts maximum per task**,\ncounting the initial implementation as attempt one. Every failure kind draws on this\ncounter -- one counter per task.\n\nAfter the third attempt still leaves the gate failing, **stop**. Do not keep looping.\n\n**In auto mode**, take the \"Accept as-is\" path without asking: record the failure with the\ngate output that produced it, leave the code in place, and continue to 3d on the same\nterms that bullet already sets -- including its rule about not re-running a gate this task\nalready failed. Print one line so the run stays readable:\n\n```\n> Task {id}: still failing its check after 3 attempts -- accepted.\n```\n\nThe budget is never extended in auto mode. \"Try 3 more attempts\" is a human's call, and a\nloop that grants itself more attempts has no cap. Phase 4 lists every accepted failure\nwith its gate output, which is where the user decides whether to revisit.\n\n**Otherwise** call `AskUserQuestion`:\n\n> Task {id} still fails the project's {build or tests} after 3 attempts:\n> {the failing lines of that output}\n\nButtons: `[\"Accept as-is -- note it and move on\", \"I'll describe the fix\", \"Try 3 more attempts\", \"Skip this task\"]`\n\n- **Accept as-is:** record the failure in the final summary and continue to 3d. 3d does not re-run the gate on that path -- see the gate budget below.\n- **I'll describe the fix:** take the user's description, apply it, then continue to 3d regardless of the result.\n- **Try 3 more attempts:** reset the counter and return to the top of 3c. This is the only way the budget grows -- it is never extended automatically.\n- **Skip this task:** undo what this task wrote, mark it skipped, continue to the next task. Undo has one mechanism per environment, and none of them is `git revert` -- under the default `commit_strategy: none` there is no commit to revert:\n  - **Git available:** `git restore -- \u003Cfiles this task modified>` for tracked files, then delete the files this task created. Take that file list from 3a's own record of what it wrote, never from `git status` -- an earlier task's uncommitted work sits in the same tree and is not this task's to undo.\n  - **`NO_GIT`, or any file this task shares with an earlier task:** undo nothing. Leave the code in place, mark the task `skipped (changes left in place)`, and name those files in the Phase 4 summary. Hand-unpicking interleaved edits is worse than the half-built state, and there is no restore point to fall back to.\n\n### 3d -- Gate, then Commit\n\n**Verification gate.** Read `verify_gate` from the plan frontmatter.\n\n- `build` -- run the build command resolved by reading `skills\u002Fverification\u002FSKILL.md` and\n  following its `## Command Resolution`; resolve once, at the first 3d of the run, and\n  reuse the value for every later task.\n- `test` -- run the test command resolved by reading `skills\u002Fverification\u002FSKILL.md` and\n  following its `## Command Resolution`; resolve once, at the first 3d of the run, and\n  reuse the value for every later task.\n- `none` (the default) -- no gate; go straight to the commit policy.\n\nWhen the resolved command is `none`, the gate cannot run. Record this task's gate verdict\nas `failed` with the reason `no \u003Cbuild|test> command resolved (\u003Creason>)`, where `\u003Creason>`\nis the text the resolution wrote in its parentheses, and do not re-enter 3c -- there is no\nfailure output to feed it. The commit policy then applies the verdict exactly as it does\nfor any failed gate. This is the only branch in which a `failed` verdict is written without\nthe gate having run.\n\n**The gate runs at most twice per task.** Run it; on a failure, feed the failure output\nback into 3c and re-entering the fix loop under the same 3-attempt budget;\nthen run it one final time. That second run is the last for this task whatever it returns.\n\nRecord the outcome as this task's **gate verdict**, `cleared` or `failed`. A `cleared`\nverdict quotes the evidence line per the `## Evidence Rule` in\n`skills\u002Fverification\u002FSKILL.md`. Everything downstream reads the verdict; the gate itself\nnever runs a third time.\n\n3c's \"Accept as-is\" returns here with the verdict already `failed`. **Do not re-run the\ngate on that path** -- re-running it re-enters 3c, which returns here, which re-runs it.\nThe 3-attempt budget bounds 3c's internal loop, not the 3c-to-3d cycle, so a gate failing\nfor a reason this task cannot fix (a pre-existing compile error elsewhere) would otherwise\nhave no exit but \"Skip this task\".\n\n**Commit policy.** Read `commit_strategy` from the plan frontmatter. The user chose this\nat plan time, so nothing here asks again.\n\n**`--no-commit` overrides it to `none`** before anything below is read. It reports itself\nonce on the first task, in place of the `none` line below rather than alongside it:\n`> --no-commit: changes stay in the working tree.` The override is run-scoped --\nit never rewrites the plan, so the same plan still commits on a run without the flag. This\nis the only way to run a plan carrying `per-task` or `single` without commits, because Step\n8 of `\u002Fquiver:design` is not re-asked here.\n\n- `none` (the default) -- write no commit. Say so once, on the first task:\n  `> No commit: changes stay in the working tree for you to review.` Do not repeat it per\n  task.\n- `per-task` -- skip if `NO_GIT`. Skip when this task's gate verdict is `failed`, and say\n  which task and why. Otherwise stage only the files this task touched. Never `git add .`.\n  Never stage the plan or anything under `screenshot_dir`. Commit with a Conventional\n  Commits message scoped to the task, for example\n  `feat(wallet): add balance card matching design spec`. No push. No AI attribution.\n- `single` -- accumulate. Commit nothing here; after the last task, make one commit\n  covering every file the run touched, with a Conventional Commits message scoped to the\n  plan. Same staging rules, same exclusions, no push, no AI attribution.\n  **Enforce the gate verdicts at that point.** Under `single` there is no per-task commit\n  for a failing gate to block, so a task the gate rejected would otherwise ride into the\n  final commit alongside the cleared ones. If any task's verdict is `failed`, write no\n  commit at all: print each failed task with its gate output and leave everything in the\n  working tree. Splitting the commit is not an option -- a later task builds on an earlier\n  one's files, so the cleared subset is not independently committable.\n\n## Phase 4 -- Summary and Handoff\n\nPrint a table:\n\n| Task | Status | Check |\n|------|--------|-------|\n| 1 | done | cleared |\n| 2 | done | cleared |\n| 3 | done | failed |\n| 4 | skipped (changes left in place) | -- |\n\nThen print exactly one line for the run, whatever the plan and the tasks contained:\n\n```\nDesign match: skipped -- nothing measured the built UI\n```\n\nNothing in this skill measures the built UI against the plan's Node Specs, and no other\nskill does it either. Reporting the step as skipped with its reason is the\n`skipped: \u003Creason>` grammar of `skills\u002Fverification\u002FSKILL.md`; leaving it out of the\nsummary would read as a step that ran and passed.\n\nThen list every accepted check failure with the task and the file it lives in, so the user can decide later whether to revisit. Name every task whose changes were left in place after a skip.\n\nPrint the branch name and the commit count.\n\n**In auto mode**, print the next steps as text and stop:\n\n```\n> Next: \u002Fquiver:review to read the diff, \u002Fcommit to commit, \u002Fcreate-pr to open a PR.\n```\n\nInvoke none of them. The consent this run carries covers the build -- not a review, not a\ncommit the plan's `commit_strategy` did not authorize, and not a pull request.\n\nOtherwise print `> Review before merging: \u002Fquiver:review` as text, then call `AskUserQuestion`:\n\n> Build finished. What next?\n\nButtons: `[\"Commit -- \u002Fcommit\", \"Open a PR -- \u002Fcreate-pr\", \"Stop here\"]`\n\n- **Commit:** invoke the `commit` skill.\n- **Open a PR:** invoke the `create-pr` skill.\n- **Stop here:** stop.\n\nThe build starts no review: a review reads the finished branch and is the user's step before merging, so the command is printed as text and is never a button here.\n\nDo not open a pull request directly -- `\u002Fcreate-pr` owns that.\n\n---\n\n## Anti-Patterns\n\nFollow all rules in `.claude\u002Frules\u002Fskill-rules.md`. Additionally:\n\n- **Don't** call figma-bridge tools. This skill runs with Figma disconnected; the plan carries the data.\n- **Don't** capture, screenshot, or compare here. Nothing in this skill measures the built UI, and no other skill does it for you.\n- **Don't** report a design-match result. The Phase 4 line is `Design match: skipped -- nothing measured the built UI`, on every run.\n- **Don't** drop that line from the summary. A step left out of the summary reads as a step that passed.\n- **Don't** loop the fix cycle without a bound. Three attempts, then ask -- or, in auto mode, accept and move on.\n- **Don't** re-run the gate after \"Accept as-is\". That is the 3c-to-3d cycle the attempt budget does not bound.\n- **Don't** extend the retry budget on your own. Only the user's \"Try 3 more attempts\" resets it, and auto mode never reaches that button.\n- **Don't** call `AskUserQuestion` from any path in auto mode. The whole contract is that `\u002Fquiver:design` Step 8 was the run's last question.\n- **Don't** invoke `\u002Fquiver:review`, `\u002Fcommit`, or `\u002Fcreate-pr` from the auto handoff. Naming them is the handoff; running them is a decision nobody consented to.\n- **Don't** replace a precedent mechanism with a simpler one because it compiles. The precedent is in the plan because the simple version is what looks wrong.\n- **Don't** center at page level when a Reconciliation line names a chrome-excluded region.\n- **Don't** write a `fill` axis as the literal `Box:` number.\n- **Don't** adjust the plan's numbers to match what the code happens to produce. Fix the code.\n- **Don't** commit when `commit_strategy` is absent or `none`. Absence means the user was never asked.\n- **Don't** write `--no-commit` into the plan. It is one run's override, and the plan is what the user chose at Step 8.\n- **Don't** commit past a failing verification gate. Under `single` that means withholding the whole accumulate commit, not skipping one task's files.\n- **Don't** answer \"Skip this task\" with `git revert`. The default strategy writes no commit, so there is nothing to revert.\n- **Don't** stage the plan file or the reference assets.\n- **Don't** restate the plan frontmatter schema. `skills\u002Fdesign\u002FSKILL.md` Step 9 declares it; this file lists only the fields it reads.\n",{"name":5,"description":7,"when-to-use":57,"argument-hint":58},"user wants to build a design plan into working pixel-accurate UI -- '\u002Fdesign-build', '\u002Fdesign-build --auto', 'build the design plan', 'implement the figma plan', 'make it match the design', 'build the plan without asking me again', 'build it but do not commit anything'","\u003Cpath to a *-design-plan.md, or empty to pick one> [--auto] [--no-commit]","main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002Fyagizdo\u002Fquiver\u002Fskills\u002Fdesign-build",490,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-14 02:12:02",{"source":8,"skillName":5,"commands":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill design-build",{"tool":75,"command":76},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill design-build",{"tool":78,"command":79},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill design-build","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fyagizdo\u002Fquiver\u002Fskills\u002Fdesign-build\u002FSKILL.md",true,[83],{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"TEST-PLAN.md","REFERENCE","参考文档",6810,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fyagizdo\u002Fquiver\u002Fskills\u002Fdesign-build\u002FTEST-PLAN.md",[90,98,105,112,138,161],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":97},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":99,"name":100,"nameZh":6,"description":101,"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":97},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":97},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":52},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,127,32,128,129,130,131,132,133,134,135,136,137],"search","deja search","never","error","ready","memory","re","decide","fix","debugging","when","you","done","reviewer","io","change","cli","merge","past",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":52},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[145,146,147,133,148,149,150,151,152,44,153,154,155,156,124,157,39,158,159,160],"deja reflect","reflect","review","with","record","github","next","https","Rules","decisions","brew","remember","project rules","session","end","reflection",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":174,"publishedAt":52},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[167,170,171],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":172,"categoryName":173,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[163,175,176,177,178,179,180,39,181,125,182,183,184,185,129,186,187,188,189,190],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]