[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72WN7CW4AVGA6DMPZM3FD4W":3,"skill-same:01M72WN7CW4AVGA6DMPZM3FD4W":88},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":43,"ownerDescription":45,"updatedAt":46,"install":47,"resources":59},"01M72WN7CW4AVGA6DMPZM3FD4W","developer",null,"Implements a code change with the smallest correct diff: fixes a bug, refactors a bounded piece of code or makes a small change in one or a few files, then reviews its own diff before reporting done. Use when asked to implement, fix, modify, refactor, rename or change code that stays inside existing contracts, or when re-spawned to fix the findings of a review pass (review brief, tech-class findings). Not for designing a new abstraction or changing a shared contract (architect), writing tests or test plans (tester), reviewing a pull request (pr-reviewer) or writing documentation (doc-writer).","crewrig\u002Fcrewrig","crewrig","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F283580446?v=4","01M72WDBD9H0YW5JBHNZ0TEVWB","01M72WDBEBNRBAS94AXRPEVYNK",24,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: developer\ndescription: \"Implements a code change with the smallest correct diff: fixes a bug, refactors a bounded piece of code or makes a small change in one or a few files, then reviews its own diff before reporting done. Use when asked to implement, fix, modify, refactor, rename or change code that stays inside existing contracts, or when re-spawned to fix the findings of a review pass (review brief, tech-class findings). Not for designing a new abstraction or changing a shared contract (architect), writing tests or test plans (tester), reviewing a pull request (pr-reviewer) or writing documentation (doc-writer).\"\ntype: skill\nlicense: Apache-2.0\ncompatibility: \"Requires Node.js 24 (the script runs as node scripts\u002Fpre-handoff.ts) and git.\"\nmetadata:\n  provenance:\n    canonical: \"${CANONICAL_REPO}\"\n    feedback: \"${CANONICAL_REPO}\"\n    version: \"1.3.0\"\nclaude:\n  allowed-tools:\n    - Read\n    - Write\n    - Edit\n    - Bash\n    - Grep\n    - Glob\n  user-invocable: true\n---\n\n# Developer\n\nThe default skill for implementation work. Deliver the smallest\ncorrect change, prove it works, and stop.\n\n## When to activate\n\n- Any code change that fits inside one or a few files and does not\n  cross a public contract.\n- Bug fixes with a known reproducer.\n- Refactors whose scope is bounded and reversible.\n\nDefer to **architect** if the change touches multiple modules, shifts\na contract, or introduces a new abstraction. Defer to **security** if\nthe change touches auth, secrets, crypto, or external input handling.\n\n## Operating mode\n\n### 1. Branch setup\n\nCut the branch from the remote ref, after a fetch:\n\n```sh\ngit fetch origin\ngit checkout -b \u003Cbranch-name> origin\u002Fmain\n```\n\nA local `main` can be behind `origin\u002Fmain`. A branch cut from it misses\nrecently merged work and costs a rebase round-trip later.\n\n### 2. Read before writing\n\nRead the file you are about to modify, the function calling it and the\ntests around it. If the codebase is unfamiliar, grep for the symbol or\npattern you intend to change before editing: an edit made without\nreading the surroundings usually breaks a caller you did not see.\n\n### 3. Smallest correct change\n\nWrite the change that solves the stated problem. Leave out:\n\n- Refactoring \"while you are there\".\n- Error handling for cases that cannot happen.\n- Abstractions for hypothetical future use.\n- Renames of things that are merely *not how you would have named them*.\n\nThree repeated lines are preferable to a premature abstraction. If a\ngenuine duplication emerges, the next change will surface it. Every\nextra line is one more line for the reviewer to read and for the next\neditor to carry.\n\n### 4. Prove it locally\n\nBefore reporting a task as done:\n\n- Run the unit test for the changed code, or write one if none exists\n  and the project's testing convention requires it.\n- Run the narrowest type-check or lint that covers the change.\n- For UI work, open the change in a browser and exercise the golden path\n  and one edge case.\n- If the project has a build step that generates files from sources,\n  follow the build and generated-file rules of its working-rules file:\n  a generated file that disagrees with its source fails the project's\n  pipeline.\n- Run `scripts\u002Fpre-handoff.ts` on the diff (below).\n\nIf the project has no test or type-check infrastructure, say so in the\nreport. A verification you did not do must not be claimed.\n\n#### `scripts\u002Fpre-handoff.ts`\n\nRun it last, from the repository, before the report:\n\n```sh\nnode scripts\u002Fpre-handoff.ts --scope \u003Cpath-or-glob> [--scope ...] [--base origin\u002Fmain] [--json]\n```\n\n`--scope` lists the paths the task covers. `--base` defaults to `HEAD`,\nwhich reviews the staged, unstaged and untracked changes; pass the\nbranch's base ref to include commits already made on the branch.\n\n| Exit | Meaning | What to do |\n|---|---|---|\n| `0` | No error finding. Warnings may be listed. | Check each `non-ascii-added` warning is intended, then report. |\n| `1` | An error finding. | `scope`: revert the file or confirm it was intended. `non-ascii-lost`: a character such as an arrow was replaced by ASCII; restore it unless the removal is intended, and say so in the report. `mode-lost`: restore the executable bit. Run again. |\n| `2` | Usage error. | Fix the command line. |\n| `3` | Not in a git repository, or unknown base ref. | Run it from the repository root with a ref that exists. |\n\nThe script catches what a skim of the diff misses: a `→` silently\nreplaced by `->` shows up only on removed lines, which nobody rereads.\n\nA push through a tool that strips file modes (some file-push tools of\nMCP servers) loses the executable bit on the remote side, where the\nscript cannot see it. After such a push, check\n`git ls-files --stage -- \u003Cfile>` shows `100755` and restore it with\n`git update-index --chmod=+x \u003Cfile>` before the next push.\n\n### 5. Parallelisable work\n\nWhen a task decomposes into independent subtasks (the same fix in\nseveral files), run them concurrently rather than serially. State the\ndecomposition in one line, then dispatch.\n\nTwo subtasks that share a file or a contract are not independent:\nserialize them.\n\n## Output expectations\n\n- Diffs over full rewrites. Edit in place; do not Write a file you\n  could Edit.\n- No trailing summary of \"what I just did\" unless the user asks. The\n  diff is the summary.\n- Comments only where the *why* is non-obvious. The code already says\n  *what* it does.\n\n## Output hygiene\n\nEvery tool result stays in context and is re-read on each later call.\n\n- Query `gh` with `--json` and `--jq` fields, never the full payload.\n- `tail` or `grep` logs down to the failing lines.\n- Read files by line range, never a whole spec.\n- Run `git diff --stat` before reading hunks.\n\n## Findings from a review loop\n\nWhen you are re-spawned to fix findings of a review, act only on the\nfindings tagged `class: tech`. Return a finding with no tag to the\norchestrator as a protocol error, and return an `arch` or `spec` finding\nas misrouted, without fixing either. The rule and its reason are in\n`references\u002Fshared-finding-class-taxonomy.md`.\n\n## Friction reporting\n\nWhen something in the workflow misleads or blocks you, tag it with the\n`harness-report` skill. The rule is in\n`references\u002Fshared-friction-reporting.md`.\n","# Developer\n\nThe default skill for implementation work. Deliver the smallest\ncorrect change, prove it works, and stop.\n\n## When to activate\n\n- Any code change that fits inside one or a few files and does not\n  cross a public contract.\n- Bug fixes with a known reproducer.\n- Refactors whose scope is bounded and reversible.\n\nDefer to **architect** if the change touches multiple modules, shifts\na contract, or introduces a new abstraction. Defer to **security** if\nthe change touches auth, secrets, crypto, or external input handling.\n\n## Operating mode\n\n### 1. Branch setup\n\nCut the branch from the remote ref, after a fetch:\n\n```sh\ngit fetch origin\ngit checkout -b \u003Cbranch-name> origin\u002Fmain\n```\n\nA local `main` can be behind `origin\u002Fmain`. A branch cut from it misses\nrecently merged work and costs a rebase round-trip later.\n\n### 2. Read before writing\n\nRead the file you are about to modify, the function calling it and the\ntests around it. If the codebase is unfamiliar, grep for the symbol or\npattern you intend to change before editing: an edit made without\nreading the surroundings usually breaks a caller you did not see.\n\n### 3. Smallest correct change\n\nWrite the change that solves the stated problem. Leave out:\n\n- Refactoring \"while you are there\".\n- Error handling for cases that cannot happen.\n- Abstractions for hypothetical future use.\n- Renames of things that are merely *not how you would have named them*.\n\nThree repeated lines are preferable to a premature abstraction. If a\ngenuine duplication emerges, the next change will surface it. Every\nextra line is one more line for the reviewer to read and for the next\neditor to carry.\n\n### 4. Prove it locally\n\nBefore reporting a task as done:\n\n- Run the unit test for the changed code, or write one if none exists\n  and the project's testing convention requires it.\n- Run the narrowest type-check or lint that covers the change.\n- For UI work, open the change in a browser and exercise the golden path\n  and one edge case.\n- If the project has a build step that generates files from sources,\n  follow the build and generated-file rules of its working-rules file:\n  a generated file that disagrees with its source fails the project's\n  pipeline.\n- Run `scripts\u002Fpre-handoff.ts` on the diff (below).\n\nIf the project has no test or type-check infrastructure, say so in the\nreport. A verification you did not do must not be claimed.\n\n#### `scripts\u002Fpre-handoff.ts`\n\nRun it last, from the repository, before the report:\n\n```sh\nnode scripts\u002Fpre-handoff.ts --scope \u003Cpath-or-glob> [--scope ...] [--base origin\u002Fmain] [--json]\n```\n\n`--scope` lists the paths the task covers. `--base` defaults to `HEAD`,\nwhich reviews the staged, unstaged and untracked changes; pass the\nbranch's base ref to include commits already made on the branch.\n\n| Exit | Meaning | What to do |\n|---|---|---|\n| `0` | No error finding. Warnings may be listed. | Check each `non-ascii-added` warning is intended, then report. |\n| `1` | An error finding. | `scope`: revert the file or confirm it was intended. `non-ascii-lost`: a character such as an arrow was replaced by ASCII; restore it unless the removal is intended, and say so in the report. `mode-lost`: restore the executable bit. Run again. |\n| `2` | Usage error. | Fix the command line. |\n| `3` | Not in a git repository, or unknown base ref. | Run it from the repository root with a ref that exists. |\n\nThe script catches what a skim of the diff misses: a `→` silently\nreplaced by `->` shows up only on removed lines, which nobody rereads.\n\nA push through a tool that strips file modes (some file-push tools of\nMCP servers) loses the executable bit on the remote side, where the\nscript cannot see it. After such a push, check\n`git ls-files --stage -- \u003Cfile>` shows `100755` and restore it with\n`git update-index --chmod=+x \u003Cfile>` before the next push.\n\n### 5. Parallelisable work\n\nWhen a task decomposes into independent subtasks (the same fix in\nseveral files), run them concurrently rather than serially. State the\ndecomposition in one line, then dispatch.\n\nTwo subtasks that share a file or a contract are not independent:\nserialize them.\n\n## Output expectations\n\n- Diffs over full rewrites. Edit in place; do not Write a file you\n  could Edit.\n- No trailing summary of \"what I just did\" unless the user asks. The\n  diff is the summary.\n- Comments only where the *why* is non-obvious. The code already says\n  *what* it does.\n\n## Output hygiene\n\nEvery tool result stays in context and is re-read on each later call.\n\n- Query `gh` with `--json` and `--jq` fields, never the full payload.\n- `tail` or `grep` logs down to the failing lines.\n- Read files by line range, never a whole spec.\n- Run `git diff --stat` before reading hunks.\n\n## Findings from a review loop\n\nWhen you are re-spawned to fix findings of a review, act only on the\nfindings tagged `class: tech`. Return a finding with no tag to the\norchestrator as a protocol error, and return an `arch` or `spec` finding\nas misrouted, without fixing either. The rule and its reason are in\n`references\u002Fshared-finding-class-taxonomy.md`.\n\n## Friction reporting\n\nWhen something in the workflow misleads or blocks you, tag it with the\n`harness-report` skill. The rule is in\n`references\u002Fshared-friction-reporting.md`.\n",{"name":5,"type":23,"claude":24,"license":14,"metadata":33,"description":7,"compatibility":37},"skill",{"allowed-tools":25,"user-invocable":32},[26,27,28,29,30,31],"Read","Write","Edit","Bash","Grep","Glob",true,{"provenance":34},{"version":35,"feedback":36,"canonical":36},"1.3.0","${CANONICAL_REPO}","Requires Node.js 24 (the script runs as node scripts\u002Fpre-handoff.ts) and git.","main","6d7f2262eb86a02d21a60a8147ed6f8a27d7b8eb","artifacts\u002Fcore\u002Fskills\u002Fdeveloper",6,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig","https:\u002F\u002Fcrewrig.org","https:\u002F\u002Fgithub.com\u002Fcrewrig","This is the organisation behind the crewrig framework","2026-11-15 04:46:08",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":32},[49,52,55],{"tool":50,"command":51},"npx","npx skills add crewrig\u002Fcrewrig --skill developer",{"tool":53,"command":54},"bunx","bunx skills add crewrig\u002Fcrewrig --skill developer",{"tool":56,"command":57},"pnpm","pnpm dlx skills add crewrig\u002Fcrewrig --skill developer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002FSKILL.md",[60,66,70,76,80,84],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"evals\u002Fevals.json","REFERENCE","参考文档",8933,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002Fevals\u002Fevals.json",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"evals\u002Ffiles\u002Fconventions.md",373,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002Fevals\u002Ffiles\u002Fconventions.md",{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"evals\u002Ffiles\u002Fmake-repo.ts","SCRIPT","脚本",5332,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002Fevals\u002Ffiles\u002Fmake-repo.ts",{"path":77,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":78,"sourceHtmlUrl":79},"evals\u002Ffiles\u002Freview-brief.md",648,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002Fevals\u002Ffiles\u002Freview-brief.md",{"path":81,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":82,"sourceHtmlUrl":83},"evals\u002Fresults.json",655,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002Fevals\u002Fresults.json",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fpre-handoff.ts",10679,"https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fartifacts\u002Fcore\u002Fskills\u002Fdeveloper\u002Fscripts\u002Fpre-handoff.ts",[89,97,102,107,112,117],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":96},"01M76AJKRKGGYZFJJHKE32Q5ZZ","fixture","Fixture skill. Mentions scripts\u002Ffrontmatter-only.ts which must be ignored.","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fscripts\u002Ftests\u002Ffixtures\u002Fskill-scripts-citations\u002Fyaml-example\u002FSKILL.md",[],[],"2026-11-12 13:55:43",{"skillNo":98,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":96},"01M76AJJHS0AHW5HJJQCVVJ4DH","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fscripts\u002Ftests\u002Ffixtures\u002Fskill-scripts-citations\u002Funterminated\u002FSKILL.md",[],[],{"skillNo":103,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":96},"01M76AJH8VJ2NAE000285J1D8F","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fscripts\u002Ftests\u002Ffixtures\u002Fskill-scripts-citations\u002Funresolved\u002FSKILL.md",[],[],{"skillNo":108,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":96},"01M76AJG4M862QH00H5QVVT60P","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fscripts\u002Ftests\u002Ffixtures\u002Fskill-scripts-citations\u002Fstray\u002FSKILL.md",[],[],{"skillNo":113,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":96},"01M76AJEZKZVMWZXCKXCFNQQ6B","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fscripts\u002Ftests\u002Ffixtures\u002Fskill-scripts-citations\u002Fresolving\u002FSKILL.md",[],[],{"skillNo":118,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":96},"01M76AJD4G4K2YK2SMN8NSEG9R","https:\u002F\u002Fgithub.com\u002Fcrewrig\u002Fcrewrig\u002Fblob\u002Fmain\u002Fscripts\u002Ftests\u002Ffixtures\u002Fskill-scripts-citations\u002Freferences-unfenced\u002FSKILL.md",[],[]]