[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R7TTF0ABMGSVWASVYF6D51":3,"skill-same:01M6R7TTF0ABMGSVWASVYF6D51":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":13,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6R7TTF0ABMGSVWASVYF6D51","rework-rate",null,"Measure and interpret PR rework rate — the emerging 5th DORA metric","barichter\u002Fsquad","barichter","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96797186?v=4","01M6R712K8ESMDF089BFENBR16","01M6R712R74BSQQSG2GTXBWR8P",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Frework-rate\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"rework rate","rate","analyze","when","prs","metric","high","manual","efficiency","quality","review","team","health","metrics","code-review","code","squad","pr","code quality","2026-11-10 10:12:30",false,"---\nname: \"rework-rate\"\ndescription: \"Measure and interpret PR rework rate — the emerging 5th DORA metric\"\ndomain: \"metrics, code-review, quality\"\nconfidence: \"high\"\nsource: \"manual\"\ntools:\n  - name: \"squad rework\"\n    description: \"Analyze PR rework rate from merged PRs\"\n    when: \"When measuring code quality, review efficiency, or team health metrics\"\n---\n\n## Context\n\nRework Rate measures the percentage of code changes that require revision after initial review submission. It is considered the emerging 5th DORA metric alongside Deployment Frequency, Lead Time for Changes, Mean Time to Recovery, and Change Failure Rate.\n\nUse this skill when:\n- Measuring team code review efficiency\n- Identifying patterns in PR revision cycles\n- Coaching on PR quality and review practices\n- Tracking AI-generated code retention rates\n- Building engineering health dashboards\n\n## Patterns\n\n### Calculation\n\n```\nRework Rate = (commits after first review) \u002F (total commits) × 100\n\nSub-metrics:\n  Review Cycles = number of changes-requested → push → approval loops\n  Rejection Rate = PRs with ≥1 \"changes requested\" \u002F total PRs × 100\n  Rework Time = last approval timestamp - first changes-requested timestamp\n```\n\n### Healthy Ranges\n\n| Metric | ? Healthy | ? Moderate | ? Needs Attention |\n|--------|-----------|------------|-------------------|\n| Rework Rate | ≤15% | 15–30% | >30% |\n| Review Cycles | ≤1.0 | 1.0–2.0 | >2.0 |\n| Rejection Rate | ≤20% | 20–40% | >40% |\n\n### Using the CLI\n\n```bash\n# Analyze last 30 days (default)\nnpx github:bradygaster\u002Fsquad rework\n\n# Custom period\nnpx github:bradygaster\u002Fsquad rework --days 7 --limit 50\n\n# Machine-readable output\nnpx github:bradygaster\u002Fsquad rework --json\n```\n\n### Improvement Strategies\n\nWhen rework rate is high:\n1. **Smaller PRs** — Break large changes into focused, reviewable units\n2. **Clear specs** — Write acceptance criteria before coding\n3. **Pre-review checklist** — Self-review before requesting reviews\n4. **Pair reviews** — Complex changes benefit from synchronous review\n5. **Draft PRs** — Use draft status for early feedback on direction\n\n## Examples\n\n```javascript\n\u002F\u002F Ralph can use rework metrics in watch cycles:\n\u002F\u002F \"? Weekly Rework Rate: 12% (healthy) — 3\u002F25 PRs had changes requested\"\n\n\u002F\u002F In squad ceremonies, rework trends inform retrospectives:\n\u002F\u002F \"Rework rate dropped from 28% to 14% after adopting smaller PR sizes\"\n```\n\n## Anti-Patterns\n\n- **Using rework rate to blame individuals** — Use it for team coaching, not performance reviews\n- **Optimizing for zero rework** — Some rework is healthy; it means reviews are catching issues\n- **Ignoring context** — Large refactors naturally have higher rework; compare like with like\n- **Measuring without acting** — Metrics without follow-up actions are waste\n","## Context\n\nRework Rate measures the percentage of code changes that require revision after initial review submission. It is considered the emerging 5th DORA metric alongside Deployment Frequency, Lead Time for Changes, Mean Time to Recovery, and Change Failure Rate.\n\nUse this skill when:\n- Measuring team code review efficiency\n- Identifying patterns in PR revision cycles\n- Coaching on PR quality and review practices\n- Tracking AI-generated code retention rates\n- Building engineering health dashboards\n\n## Patterns\n\n### Calculation\n\n```\nRework Rate = (commits after first review) \u002F (total commits) × 100\n\nSub-metrics:\n  Review Cycles = number of changes-requested → push → approval loops\n  Rejection Rate = PRs with ≥1 \"changes requested\" \u002F total PRs × 100\n  Rework Time = last approval timestamp - first changes-requested timestamp\n```\n\n### Healthy Ranges\n\n| Metric | ? Healthy | ? Moderate | ? Needs Attention |\n|--------|-----------|------------|-------------------|\n| Rework Rate | ≤15% | 15–30% | >30% |\n| Review Cycles | ≤1.0 | 1.0–2.0 | >2.0 |\n| Rejection Rate | ≤20% | 20–40% | >40% |\n\n### Using the CLI\n\n```bash\n# Analyze last 30 days (default)\nnpx github:bradygaster\u002Fsquad rework\n\n# Custom period\nnpx github:bradygaster\u002Fsquad rework --days 7 --limit 50\n\n# Machine-readable output\nnpx github:bradygaster\u002Fsquad rework --json\n```\n\n### Improvement Strategies\n\nWhen rework rate is high:\n1. **Smaller PRs** — Break large changes into focused, reviewable units\n2. **Clear specs** — Write acceptance criteria before coding\n3. **Pre-review checklist** — Self-review before requesting reviews\n4. **Pair reviews** — Complex changes benefit from synchronous review\n5. **Draft PRs** — Use draft status for early feedback on direction\n\n## Examples\n\n```javascript\n\u002F\u002F Ralph can use rework metrics in watch cycles:\n\u002F\u002F \"? Weekly Rework Rate: 12% (healthy) — 3\u002F25 PRs had changes requested\"\n\n\u002F\u002F In squad ceremonies, rework trends inform retrospectives:\n\u002F\u002F \"Rework rate dropped from 28% to 14% after adopting smaller PR sizes\"\n```\n\n## Anti-Patterns\n\n- **Using rework rate to blame individuals** — Use it for team coaching, not performance reviews\n- **Optimizing for zero rework** — Some rework is healthy; it means reviews are catching issues\n- **Ignoring context** — Large refactors naturally have higher rework; compare like with like\n- **Measuring without acting** — Metrics without follow-up actions are waste\n",{"name":5,"tools":42,"domain":47,"source":25,"confidence":24,"description":7},[43],{"name":44,"when":45,"description":46},"squad rework","When measuring code quality, review efficiency, or team health metrics","Analyze PR rework rate from merged PRs","metrics, code-review, quality","dev","ec19f5e92325e634e3c6eff500e3cefa56131cc9","templates\u002Fskills\u002Frework-rate","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad","https:\u002F\u002Fgithub.com\u002Fbarichter","2026-04-13 22:53:46",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add barichter\u002Fsquad --skill rework-rate",{"tool":60,"command":61},"bunx","bunx skills add barichter\u002Fsquad --skill rework-rate",{"tool":63,"command":64},"pnpm","pnpm dlx skills add barichter\u002Fsquad --skill rework-rate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Frework-rate\u002FSKILL.md",true,[],[69,85,93,107,113,131],{"skillNo":70,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":37},"01M6R7VE8SZD1E37WWJN4ZFPWB","My Skill","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fmy-skill\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[80,81,82,83,84],"my","my skill","tester","vitest","testing",{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":37},"01M6R7VD19M4TMAA74XGD6QSZX","bad-skill","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fbad-skill\u002FSKILL.md",[],[91,92],"bad","bad skill",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":37},"01M6R7V9TYTX6Z621V6RWA51G6","squad-conventions","Core conventions and patterns used in the Squad codebase","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fsquad-conventions\u002FSKILL.md",[],[100,34,101,102,103,24,25,104,105,106],"conventions","squad conventions","core","codebase","project","patterns","project-conventions",{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":37},"01M6R7TRZPET44JRCSQF08EEA8","nap","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fnap\u002FSKILL.md",[],[109],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":37},"01M6R7TK10WCT77A52E27GR5R3","{skill-name}","{what this skill teaches agents}","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskill.md",[119],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[121,122,123,124,24,25,125,126,127,128,129,130,84],"name","skill name","{skill name}","design","api-design","error","learned","error-handling","how","api",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":37},"01M6R7TFPW0ZYH3X400MWQKZJD","windows-compatibility","Cross-platform path handling and command patterns","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Fwindows-compatibility\u002FSKILL.md",[],[138,139,140,141,142,105,143,144,24,145,146],"windows compatibility","windows","compatibility","git","command","cross-platform","platform","path","bugs"]