[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DANYHC7P63RFEN26F70MC2":3,"skill-same:01M6DANYHC7P63RFEN26F70MC2":54},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6DANYHC7P63RFEN26F70MC2","worker-complete",null,"Signal slice completion after quality gates pass","dayvidpham\u002Fpasture","dayvidpham","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22456875?v=4","01M6CHR0F6J2M4QEHFR85XRNSR","David Huu Pham","01M6DA7X1WB0MK7TTV46SRZK75",1,"MIT","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-complete\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"worker","worker complete","complete","quality gates","quality","gates","signal","slice","2026-11-10 10:12:30",false,"---\nname: worker-complete\ndescription: Signal slice completion after quality gates pass\n---\n\n# Worker: Signal Completion\n\n\u003C!-- BEGIN GENERATED FROM pasture schema -->\n\u003C!-- GENERATED FROM pasture v0.0.32 artifact v1 -->\n**Command:** `pasture:worker:complete` — Signal slice completion after quality gates pass\n\n**-> [Full workflow in PROCESS.md](..\u002Fprotocol\u002FPROCESS.md#phase-9-worker-slices)** \u003C- Phase 9\n\n**[wcomp-quality-gates]**\n- Given: implementation done\n- When: signaling\n- Then: verify the project's quality gates pass\n- Should not: report done with failing checks\n\n**[wcomp-checklist]**\n- Given: validation_checklist\n- When: completing\n- Then: confirm all items satisfied\n- Should not: complete with unchecked items\n\n**[wcomp-task-update]**\n- Given: completion\n- When: reporting\n- Then: record completion evidence without closing the task\n- Should not: omit Pasture update\n\n**[wcomp-handoff-doc]**\n- Given: completion\n- When: handing off to reviewer\n- Then: author the worker→reviewer handoff in the Pasture task body (the slice\u002Fhandoff task body IS the handoff)\n- Should not: skip handoff for actor transitions\n\n## Task Recovery\n\nRecover from live Pasture state at session start and after compaction; never trust cached task rows.\n\nStore selection: an explicit --db overrides PASTURE_DB_PATH; otherwise use XDG_DATA_HOME\u002Fpasture\u002Fpasture.db, HOME\u002F.local\u002Fshare\u002Fpasture\u002Fpasture.db, then .pasture\u002Fpasture.db. Use the same selected store for every command. If a recovery query fails, report its actual store path, failed operation, impact, and permission\u002Fschema\u002Fconfiguration repair; failure is not an empty work queue.\n\nSet PASTURE_NAMESPACE to the repository's canonical namespace URI, for example https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture. The CLI reads it as the default for --namespace when the flag is omitted; an explicit --namespace always wins. task list, task ready, and task blocked are scoped to that effective namespace, and --all-namespaces ignores both sources. When neither source is set, those reads are unscoped. Creation still falls back to the git-remote-derived namespace, then file:\u002F\u002F of the working directory. Inspect the returned full URI before choosing repository work. Separate reads are not an atomic snapshot.\n\nRun pasture task ready, pasture task blocked, and pasture task list --status in_progress (all three use the effective namespace: PASTURE_NAMESPACE by default, an explicit --namespace, or --all-namespaces for every namespace). For each referenced active task, run pasture task show \"$TASK_URI\", pasture task comments \"$TASK_URI\", and pasture task timeline \"$TASK_URI\". All *_URI variables in examples are inputs bound to full task URIs from an assignment, a verified tracker read, or the actual JSON id returned by create; never use legacy short IDs. Resolve each variable before execution and quote it as one operand.\n\nCreate returns an object whose id is the task URI: capture it with --format json and python3 -c 'import json,sys; print(json.load(sys.stdin)[\"id\"])'. Persist that URI before label\u002Fcomment steps. Create-plus-label is non-atomic: on failure retain the URI and retry only the failed label\u002Fcomment operation, never create again. Only open, in_progress, and closed are statuses; blockage is represented by live dependencies and notes, not a blocked status.\n\nAssignment transfer is not initial allocation: before using pasture task assignment transfer, obtain the existing owner-responsibility assignment and its exact successor assignment ID, registered committing actor, and registered worker occupant from the supervisor. If the task is unassigned, stop and let the supervisor arrange allocation; no assignment-start command is implied. Never repeat an identical transfer as a substitute for allocating different workers.\n\nParent stays open and is blocked by child: pasture task dep add \"$PARENT_URI\" --blocked-by \"$CHILD_URI\". Reference documents belong in description frontmatter under references:, never fabricated blockers. Workers report evidence and handoffs without closing their slices or leaves; the supervisor closes only after independent review and satisfied gates. Use git agent-commit for local commits. Never install, enable, or modify Git hooks, Git hook path configuration, or pre-commit integration without explicit user approval. Tracker writes are durable; Git history lands separately.\n\n## Task Attribution\n\nSelect the current registered author with pasture task agents list and pasture task agents show ACTOR-ID. Never auto-register or guess an identity during recovery. Every comment supplies --author explicitly; machine examples use the pre-registered pasture-system\u002F00000000-0000-0000-0000-000000000000 actor. If it is absent, stop and request registration from the operator rather than claiming registration is fixed. Preserve human intent verbatim and quote historical attribution as evidence, not as a forged new author.\n\n## When to Use\n\nImplementation complete and all checks pass.\n\n## Steps\n\n1. Run the project's quality gates (type checking + tests) - must pass\n2. **Verify production code path via code inspection:**\n   - [ ] Tests import production code (not test-only export)\n   - [ ] No dual-export anti-pattern\n   - [ ] No TODO placeholders in production code\n   - [ ] Service wired with real dependencies (not mocks in production)\n3. Verify all validation_checklist items satisfied:\n   ```bash\n   pasture task show \"${TASK_ID_URI}\"  # Review checklist items\n   ```\n4. Update Pasture task:\n   ```bash\n   pasture task comment add --author pasture-system\u002F00000000-0000-0000-0000-000000000000 \"${TASK_ID_URI}\" \"Implementation complete; awaiting independent review and supervisor closure.\"\n   pasture task update \"${TASK_ID_URI}\" --notes=\"Implementation complete. Production code verified working.\"\n   ```\n5. Author the worker→reviewer handoff in the Pasture task body (see template below)\n\n## Handoff Template (Worker → Reviewer)\n\n\n\n### Storage\n\nAuthored in the Pasture task body — the slice (or a dedicated handoff) task body IS the handoff. No filesystem path.\n\n### Template\n\n```markdown\n# Handoff: Worker \u003CN> → Reviewer\n\n## Context\n- Request: ${REQUEST_ID_URI}\n- URD: ${URD_ID_URI}\n- Slice: SLICE-\u003CN>\n- Task ID: ${SLICE_TASK_ID_URI}\n\n## What Was Implemented\n- Production Code Path: \u003Cwhat end users run>\n- Files Changed: \u003Clist of files>\n\n## Key Decisions\n- \u003Cdecision 1>: \u003Crationale>\n- \u003Cdecision 2>: \u003Crationale>\n\n## Quality Gates\n- Type checking: PASS\n- Tests: PASS\n- Production code inspection: PASS (no TODOs, real deps wired)\n\n## Areas of Concern\n- \u003Cany areas the reviewer should pay special attention to>\n```\n\n## Report Completion\n\n```bash\n# Report completion; only the supervisor closes after independent review\npasture task comment add --author pasture-system\u002F00000000-0000-0000-0000-000000000000 \"${TASK_ID_URI}\" \"Implementation complete. Quality gates pass. Production code verified.\"\n```\n\n## Follow-up Slice Completion (FOLLOWUP_SLICE-N)\n\nWhen completing a FOLLOWUP_SLICE-N, additionally report which original leaf tasks were resolved:\n\n```bash\npasture task comment add --author pasture-system\u002F00000000-0000-0000-0000-000000000000 \"${TASK_ID_URI}\" \"Implementation complete. Resolved leaf tasks: \"${LEAF_TASK_ID_1_URI}\", ${LEAF_TASK_ID_2_URI}\"\n```\n\nThe handoff to the reviewer (h4) must include which original leaf tasks were resolved so reviewers can verify.\n\u003C!-- END GENERATED FROM pasture schema -->\n","# Worker: Signal Completion\n\n\u003C!-- BEGIN GENERATED FROM pasture schema -->\n\u003C!-- GENERATED FROM pasture v0.0.32 artifact v1 -->\n**Command:** `pasture:worker:complete` — Signal slice completion after quality gates pass\n\n**-> [Full workflow in PROCESS.md](..\u002Fprotocol\u002FPROCESS.md#phase-9-worker-slices)** \u003C- Phase 9\n\n**[wcomp-quality-gates]**\n- Given: implementation done\n- When: signaling\n- Then: verify the project's quality gates pass\n- Should not: report done with failing checks\n\n**[wcomp-checklist]**\n- Given: validation_checklist\n- When: completing\n- Then: confirm all items satisfied\n- Should not: complete with unchecked items\n\n**[wcomp-task-update]**\n- Given: completion\n- When: reporting\n- Then: record completion evidence without closing the task\n- Should not: omit Pasture update\n\n**[wcomp-handoff-doc]**\n- Given: completion\n- When: handing off to reviewer\n- Then: author the worker→reviewer handoff in the Pasture task body (the slice\u002Fhandoff task body IS the handoff)\n- Should not: skip handoff for actor transitions\n\n## Task Recovery\n\nRecover from live Pasture state at session start and after compaction; never trust cached task rows.\n\nStore selection: an explicit --db overrides PASTURE_DB_PATH; otherwise use XDG_DATA_HOME\u002Fpasture\u002Fpasture.db, HOME\u002F.local\u002Fshare\u002Fpasture\u002Fpasture.db, then .pasture\u002Fpasture.db. Use the same selected store for every command. If a recovery query fails, report its actual store path, failed operation, impact, and permission\u002Fschema\u002Fconfiguration repair; failure is not an empty work queue.\n\nSet PASTURE_NAMESPACE to the repository's canonical namespace URI, for example https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture. The CLI reads it as the default for --namespace when the flag is omitted; an explicit --namespace always wins. task list, task ready, and task blocked are scoped to that effective namespace, and --all-namespaces ignores both sources. When neither source is set, those reads are unscoped. Creation still falls back to the git-remote-derived namespace, then file:\u002F\u002F of the working directory. Inspect the returned full URI before choosing repository work. Separate reads are not an atomic snapshot.\n\nRun pasture task ready, pasture task blocked, and pasture task list --status in_progress (all three use the effective namespace: PASTURE_NAMESPACE by default, an explicit --namespace, or --all-namespaces for every namespace). For each referenced active task, run pasture task show \"$TASK_URI\", pasture task comments \"$TASK_URI\", and pasture task timeline \"$TASK_URI\". All *_URI variables in examples are inputs bound to full task URIs from an assignment, a verified tracker read, or the actual JSON id returned by create; never use legacy short IDs. Resolve each variable before execution and quote it as one operand.\n\nCreate returns an object whose id is the task URI: capture it with --format json and python3 -c 'import json,sys; print(json.load(sys.stdin)[\"id\"])'. Persist that URI before label\u002Fcomment steps. Create-plus-label is non-atomic: on failure retain the URI and retry only the failed label\u002Fcomment operation, never create again. Only open, in_progress, and closed are statuses; blockage is represented by live dependencies and notes, not a blocked status.\n\nAssignment transfer is not initial allocation: before using pasture task assignment transfer, obtain the existing owner-responsibility assignment and its exact successor assignment ID, registered committing actor, and registered worker occupant from the supervisor. If the task is unassigned, stop and let the supervisor arrange allocation; no assignment-start command is implied. Never repeat an identical transfer as a substitute for allocating different workers.\n\nParent stays open and is blocked by child: pasture task dep add \"$PARENT_URI\" --blocked-by \"$CHILD_URI\". Reference documents belong in description frontmatter under references:, never fabricated blockers. Workers report evidence and handoffs without closing their slices or leaves; the supervisor closes only after independent review and satisfied gates. Use git agent-commit for local commits. Never install, enable, or modify Git hooks, Git hook path configuration, or pre-commit integration without explicit user approval. Tracker writes are durable; Git history lands separately.\n\n## Task Attribution\n\nSelect the current registered author with pasture task agents list and pasture task agents show ACTOR-ID. Never auto-register or guess an identity during recovery. Every comment supplies --author explicitly; machine examples use the pre-registered pasture-system\u002F00000000-0000-0000-0000-000000000000 actor. If it is absent, stop and request registration from the operator rather than claiming registration is fixed. Preserve human intent verbatim and quote historical attribution as evidence, not as a forged new author.\n\n## When to Use\n\nImplementation complete and all checks pass.\n\n## Steps\n\n1. Run the project's quality gates (type checking + tests) - must pass\n2. **Verify production code path via code inspection:**\n   - [ ] Tests import production code (not test-only export)\n   - [ ] No dual-export anti-pattern\n   - [ ] No TODO placeholders in production code\n   - [ ] Service wired with real dependencies (not mocks in production)\n3. Verify all validation_checklist items satisfied:\n   ```bash\n   pasture task show \"${TASK_ID_URI}\"  # Review checklist items\n   ```\n4. Update Pasture task:\n   ```bash\n   pasture task comment add --author pasture-system\u002F00000000-0000-0000-0000-000000000000 \"${TASK_ID_URI}\" \"Implementation complete; awaiting independent review and supervisor closure.\"\n   pasture task update \"${TASK_ID_URI}\" --notes=\"Implementation complete. Production code verified working.\"\n   ```\n5. Author the worker→reviewer handoff in the Pasture task body (see template below)\n\n## Handoff Template (Worker → Reviewer)\n\n\n\n### Storage\n\nAuthored in the Pasture task body — the slice (or a dedicated handoff) task body IS the handoff. No filesystem path.\n\n### Template\n\n```markdown\n# Handoff: Worker \u003CN> → Reviewer\n\n## Context\n- Request: ${REQUEST_ID_URI}\n- URD: ${URD_ID_URI}\n- Slice: SLICE-\u003CN>\n- Task ID: ${SLICE_TASK_ID_URI}\n\n## What Was Implemented\n- Production Code Path: \u003Cwhat end users run>\n- Files Changed: \u003Clist of files>\n\n## Key Decisions\n- \u003Cdecision 1>: \u003Crationale>\n- \u003Cdecision 2>: \u003Crationale>\n\n## Quality Gates\n- Type checking: PASS\n- Tests: PASS\n- Production code inspection: PASS (no TODOs, real deps wired)\n\n## Areas of Concern\n- \u003Cany areas the reviewer should pay special attention to>\n```\n\n## Report Completion\n\n```bash\n# Report completion; only the supervisor closes after independent review\npasture task comment add --author pasture-system\u002F00000000-0000-0000-0000-000000000000 \"${TASK_ID_URI}\" \"Implementation complete. Quality gates pass. Production code verified.\"\n```\n\n## Follow-up Slice Completion (FOLLOWUP_SLICE-N)\n\nWhen completing a FOLLOWUP_SLICE-N, additionally report which original leaf tasks were resolved:\n\n```bash\npasture task comment add --author pasture-system\u002F00000000-0000-0000-0000-000000000000 \"${TASK_ID_URI}\" \"Implementation complete. Resolved leaf tasks: \"${LEAF_TASK_ID_1_URI}\", ${LEAF_TASK_ID_2_URI}\"\n```\n\nThe handoff to the reviewer (h4) must include which original leaf tasks were resolved so reviewers can verify.\n\u003C!-- END GENERATED FROM pasture schema -->\n",{"name":5,"description":7},"main","f1cfd0067fe237fa61aab9bcd7123958e2351b07","skills\u002Fworker-complete",0,"https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture","https:\u002F\u002Fgithub.com\u002Fdayvidpham","dhpham.com","2026-11-11 16:48:48",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add dayvidpham\u002Fpasture --skill worker-complete",{"tool":46,"command":47},"bunx","bunx skills add dayvidpham\u002Fpasture --skill worker-complete",{"tool":49,"command":50},"pnpm","pnpm dlx skills add dayvidpham\u002Fpasture --skill worker-complete","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-complete\u002FSKILL.md",true,[],[55,63,76,86,97,118],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":27},"01M6DAP7307B3JVZX5DSNAE08Y","fixture","Isolated fixture skill","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Ftestdata\u002Finstall\u002Fglobal\u002Fclaude-code\u002Fnative-marketplace\u002Ffixture-plugin\u002Fskills\u002Ffixture\u002FSKILL.md",[],[57,62],"fixture skill",{"skillNo":64,"name":19,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":27},"01M6DAP48A4K365N83NBG0GFVC","Vertical slice implementer (full production code path)","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker\u002FSKILL.md",[],[19,69,70,71,72,73,21,74,75,26],"full","implement","code","Production","implementer","vertical slice","path",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":27},"01M6DAP18QJM7P7N31TYGNJBCP","worker-implement","Implement assigned vertical slice following TDD layers","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-implement\u002FSKILL.md",[],[83,19,70,26,74,84,85],"worker implement","layers","tdd",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":27},"01M6DANWZ31TRP4NN4T1BFYKSR","worker-blocked","Report a blocker to supervisor via Pasture","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fworker-blocked\u002FSKILL.md",[],[93,19,94,95,96],"worker blocked","via","supervisor","report",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":108,"publishedAt":27},"01M6DANSVDBXBFH93B6EX3H2QK","user-uat","User Acceptance Testing with demonstrative examples","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fuser-uat\u002FSKILL.md",[103],{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[109,110,111,112,113,114,115,116,117],"uat","user uat","user","testing","acceptance testing","acceptance","with","user acceptance testing","examples",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":27},"01M6DANQ6QXQ0K2Z3532JV5JQR","user-request","Capture user feature request verbatim (Phase 1)","https:\u002F\u002Fgithub.com\u002Fdayvidpham\u002Fpasture\u002Fblob\u002Fmain\u002Fskills\u002Fuser-request\u002FSKILL.md",[],[111,125,126,127,128,129,130],"user request","request","feature request","capture","feature","phase"]