[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72WDX5A781BKCTSDN0GF3M8":3,"skill-same:01M72WDX5A781BKCTSDN0GF3M8":67},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M72WDX5A781BKCTSDN0GF3M8","tdd-cycle",null,"Drive one vertical slice of behaviour red-green-refactor, seam agreed before the first test. Use when the user asks to add a feature, fix a bug, write code test-first, says \"TDD this\", \"red green refactor\", or \"write a failing test first\". Inside a live dossier:build covenant, invoke dossier:build instead — it composes this skill's run-slice command as its RED\u002FGREEN proof.","raisedadead\u002Fclaude-code-plugins","raisedadead","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1884376?v=4","01M72WC4WYRJGZ2CXMCSF7B6VG","Mrugesh Mohapatra","01M72WC4XJTNHQ0D89QPG2H0W4",3,"ISC","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: tdd-cycle\ndescription: Drive one vertical slice of behaviour red-green-refactor, seam agreed before the first test. Use when the user asks to add a feature, fix a bug, write code test-first, says \"TDD this\", \"red green refactor\", or \"write a failing test first\". Inside a live dossier:build covenant, invoke dossier:build instead — it composes this skill's run-slice command as its RED\u002FGREEN proof.\n---\n\n# tdd-cycle — one slice, red before green\n\nTest-first for ad-hoc work that no ledger is driving. Agree the seam, watch the test fail, make it pass, keep the suite green. Refactoring is a separate pass.\n\n## When to use\n\n- Adding a feature or fixing a bug where the test should define \"done\".\n- Any behaviour-bearing edit outside a `dossier:build` covenant. Under a covenant, `dossier:build` drives WHEN and WHAT and composes this skill's `run-slice` as its RED\u002FGREEN proof (dossier ADAPTERS §whetstone); the §T row already fixes the seam, so the interview is skipped. One ledger drives one edit.\n\n## The seam (agree it first)\n\nBefore the first assertion, name the **seam**: the public boundary you test through — a function signature, an HTTP route, a CLI. Get the user's agreement on it. Assert behaviour through that boundary, so the test survives a refactor and fails when the behaviour is wrong. A wrong seam buys tests that pass over broken behaviour, or break on every rename. Highest-value moment in the loop; spend it.\n\n## The loop (one slice at a time)\n\n1. **RED — write one failing test.** Then prove it fails for the right reason:\n\n   ```bash\n   run-slice red --expect '\u003Ctext the failure must print>' \u003Ctest-command>\n   ```\n\n   `run-slice red` exits non-zero when the test *passed* — a test that never failed characterises nothing. With `--expect`, it also exits non-zero when the output does not match the pattern (an extended regex), so a failure from a typo or a missing import does not count as RED. Check the test against `reference\u002Fanti-patterns.md` and `reference\u002Fexamples.md` before running it; mock only where `reference\u002Fmocking.md` allows.\n\n1. **GREEN — minimum code to pass:**\n\n   ```bash\n   run-slice green \u003Ctest-command>\n   ```\n\n   Just enough for this one test.\n\n1. **Full-suite gate:**\n\n   ```bash\n   run-slice full \u003Csuite-command>\n   ```\n\n   The slice leaves everything else green.\n\n1. **Next slice** — one seam, one test, one implementation per cycle. Repeat from RED.\n\nA test that fails, then passes on a rerun with no change, is a flake signal. Measure it before any fix:\n\n```bash\nFLAKE_TEST_NAME=\u003Ctest-id> flake-runner 10 \"$(mktemp -d)\u002Fresults.json\" \u003Ctest-command>\n```\n\nIt prints `FLAKY \u003Cfails>\u002F\u003Cruns> \u003Crate> \u003Ctest-id>` when the rate is between 0 and 1. A flaky test gets the framework's skip marker and a tracking issue, not a code fix in this slice.\n\n## Refactor is a separate pass\n\nOnce GREEN and the suite passes, the slice is done. Cleanup and design improvement go to a review\u002Fsimplify step, so a failure during red-green means exactly one thing.\n\n## Verification\n\nEach slice: `run-slice red` exited 0 (the test genuinely failed first), then `run-slice green` and `run-slice full` exited 0. Three exit codes gate the slice.\n\n## Dossier breadcrumb\n\nIn a repo with a live dossier ledger, record the verdict as one §S line through the dossier plugin's append tooling (the host session reminds when applicable; the first live row is the current dossier). No dossier → skip: this skill ships no hooks and no dossier dependency.\n","# tdd-cycle — one slice, red before green\n\nTest-first for ad-hoc work that no ledger is driving. Agree the seam, watch the test fail, make it pass, keep the suite green. Refactoring is a separate pass.\n\n## When to use\n\n- Adding a feature or fixing a bug where the test should define \"done\".\n- Any behaviour-bearing edit outside a `dossier:build` covenant. Under a covenant, `dossier:build` drives WHEN and WHAT and composes this skill's `run-slice` as its RED\u002FGREEN proof (dossier ADAPTERS §whetstone); the §T row already fixes the seam, so the interview is skipped. One ledger drives one edit.\n\n## The seam (agree it first)\n\nBefore the first assertion, name the **seam**: the public boundary you test through — a function signature, an HTTP route, a CLI. Get the user's agreement on it. Assert behaviour through that boundary, so the test survives a refactor and fails when the behaviour is wrong. A wrong seam buys tests that pass over broken behaviour, or break on every rename. Highest-value moment in the loop; spend it.\n\n## The loop (one slice at a time)\n\n1. **RED — write one failing test.** Then prove it fails for the right reason:\n\n   ```bash\n   run-slice red --expect '\u003Ctext the failure must print>' \u003Ctest-command>\n   ```\n\n   `run-slice red` exits non-zero when the test *passed* — a test that never failed characterises nothing. With `--expect`, it also exits non-zero when the output does not match the pattern (an extended regex), so a failure from a typo or a missing import does not count as RED. Check the test against `reference\u002Fanti-patterns.md` and `reference\u002Fexamples.md` before running it; mock only where `reference\u002Fmocking.md` allows.\n\n1. **GREEN — minimum code to pass:**\n\n   ```bash\n   run-slice green \u003Ctest-command>\n   ```\n\n   Just enough for this one test.\n\n1. **Full-suite gate:**\n\n   ```bash\n   run-slice full \u003Csuite-command>\n   ```\n\n   The slice leaves everything else green.\n\n1. **Next slice** — one seam, one test, one implementation per cycle. Repeat from RED.\n\nA test that fails, then passes on a rerun with no change, is a flake signal. Measure it before any fix:\n\n```bash\nFLAKE_TEST_NAME=\u003Ctest-id> flake-runner 10 \"$(mktemp -d)\u002Fresults.json\" \u003Ctest-command>\n```\n\nIt prints `FLAKY \u003Cfails>\u002F\u003Cruns> \u003Crate> \u003Ctest-id>` when the rate is between 0 and 1. A flaky test gets the framework's skip marker and a tracking issue, not a code fix in this slice.\n\n## Refactor is a separate pass\n\nOnce GREEN and the suite passes, the slice is done. Cleanup and design improvement go to a review\u002Fsimplify step, so a failure during red-green means exactly one thing.\n\n## Verification\n\nEach slice: `run-slice red` exited 0 (the test genuinely failed first), then `run-slice green` and `run-slice full` exited 0. Three exit codes gate the slice.\n\n## Dossier breadcrumb\n\nIn a repo with a live dossier ledger, record the verdict as one §S line through the dossier plugin's append tooling (the host session reminds when applicable; the first live row is the current dossier). No dossier → skip: this skill ships no hooks and no dossier dependency.\n",{"name":5,"description":7},"main","1b514c89a85d4bef67e5305bc21f2757f523a5db","plugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle",0,"https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins","https:\u002F\u002Fgithub.com\u002Fraisedadead","https:\u002F\u002Fmrugesh.dev","dad • dev\u002F\u002Fops • open-source","2026-11-13 12:58:58",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add raisedadead\u002Fclaude-code-plugins --skill tdd-cycle",{"tool":39,"command":40},"bunx","bunx skills add raisedadead\u002Fclaude-code-plugins --skill tdd-cycle",{"tool":42,"command":43},"pnpm","pnpm dlx skills add raisedadead\u002Fclaude-code-plugins --skill tdd-cycle","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle\u002FSKILL.md",true,[47,53,57,61],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"reference\u002Fanti-patterns.md","REFERENCE","参考文档",1537,"https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle\u002Freference\u002Fanti-patterns.md",{"path":54,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":55,"sourceHtmlUrl":56},"reference\u002Fexamples.md",2214,"https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle\u002Freference\u002Fexamples.md",{"path":58,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":59,"sourceHtmlUrl":60},"reference\u002Fmocking.md",1481,"https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle\u002Freference\u002Fmocking.md",{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"scripts\u002Frun_slice.sh","SCRIPT","脚本",1995,"https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftdd-cycle\u002Fscripts\u002Frun_slice.sh",[68,76,83,90,97,104],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":75},"01M76ACYEV4AABQFW2E5F0JGDK","suite-review","Run the monthly evidence review of this repo's plugin skills. Count each skill's opportunities and uses with the census, read what happened where a skill was not used, put each skill in one bucket, act, and write the actions as predictions with a check date. Use when the operator says \"suite review\" or \"monthly review\", or when the suite-review line on LATER.md is due.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsuite-review\u002FSKILL.md",[],[],"2026-11-12 13:55:43",{"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":19},"01M72WE0F58KDB68QPBGQEA91F","tiger-style","Check the column budget of the lines a change adds, and read that change against the TIGER_STYLE shape rules a script cannot judge. Use when the user asks about line length or column limits, to check code shape, what the column check flagged, or why a commit was blocked on a column budget.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Ftiger-style\u002FSKILL.md",[],[],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":19},"01M72WDPE6ESWEK5GVRRRV5EC1","prototype","Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Fprototype\u002FSKILL.md",[],[],{"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":19},"01M72WD6W8XSQT2RHRE3VV9ED6","doubt-pass","Adversarial doubt cycle on a plan or design before any code exists — distinct from post-hoc code review. Use when the user asks to doubt this, stress-test a design before building it, poke holes in a plan, find the flaw in an approach, or before committing to a non-trivial architecture or design decision.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Fdoubt-pass\u002FSKILL.md",[],[],{"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":103,"publishedAt":19},"01M72WD2MWAENN8RKFD9AXHQ3B","diagnose","Diagnose a hard bug or a performance regression with a feedback loop first, then ranked hypotheses, instrumentation and a regression test. Use when the user says diagnose or debug this, or reports something broken, throwing, failing or slow.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fwhetstone\u002Fskills\u002Fdiagnose\u002FSKILL.md",[],[],{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":19},"01M72WCWGQNB8NCAER3CRXSCHH","verify","Empirical fact-check for freshness-sensitive claims — versions, EOLs, package latest, GitHub Action SHAs, k8s apiVersions, AI model deprecations, image tags, or anything the model's training cutoff may have staled. Primary sources only. Auto-fires as a PreToolUse hook on Edit\u002FWrite, but only in a repo with a `.scratchpad\u002Fdossier\u002F` directory; `\u002Fdossier:verify` on demand works anywhere. Invoke when user says \"verify\", \"fact-check\", \"is this current\", \"\u002Fdossier:verify\", \"double check\", or when reviewing freshness claims.","https:\u002F\u002Fgithub.com\u002Fraisedadead\u002Fclaude-code-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fdossier\u002Fskills\u002Fverify\u002FSKILL.md",[],[]]