Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add shennawardana23/skillme --skill tdd-workflowgit clone --depth 1 https://github.com/shennawardana23/skillmeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/shennawardana23/skillme/tdd-workflow)<a href="https://agentmods.dev/skills/shennawardana23/skillme/tdd-workflow"><img src="https://agentmods.dev/badge/skills/shennawardana23/skillme/tdd-workflow/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/shennawardana23/skillme/tdd-workflow"><img src="https://agentmods.dev/badge/skills/shennawardana23/skillme/tdd-workflow.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00092 | $0.01585 |
| Opus 5 | $0.00046 | $0.00792 |
| Sonnet 5 | $0.00018 | $0.00317 |
| Haiku 4.5 | $0.00009 | $0.00159 |
Grade A, and why
tdd-workflow scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 174 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TDD Workflow (TypeScript/JavaScript)
The RED-GREEN-REFACTOR loop tells you how to write one test. This skill is
one level up: how a whole feature's test surface is planned across the
test pyramid, wired into CI, and gated on coverage, in a Jest/Vitest +
Playwright stack. For the loop itself and the Prove-It bug-fix pattern,
see skills/test-driven-development/ — that skill applies inside every
step below.
Use skills/laravel-tdd/ instead for PHP/Laravel; use this skill for
Next.js/React/Node projects with Jest, Vitest, Testing Library, or
Playwright.
From user journey to test cases
Start from the observable behavior, not the implementation:
As a user, I want to search for markets semantically,
so that I can find relevant markets even without exact keywords.
describe('Semantic Search', () => {
it('returns relevant markets for query', async () => {})
it('handles empty query gracefully', async () => {})
it('falls back to substring search when Redis unavailable', async () => {})
it('sorts results by similarity score', async () => {})
})
Write the cases before any implementation exists; the shape of the
describe block is the spec for what "search" means here — including the
fallback and the empty-input path, not just the primary path.
Test pyramid for this stack
- Unit (Jest/Vitest + Testing Library) — components and pure
functions in isolation. Test user-visible behavior (
screen.getByText), not internal state (component.state.count) — internal state can be correct while the rendered output is wrong, and refactors that preserve behavior will still break a state-shape assertion. - Integration — API route handlers against a real or in-memory database boundary, external services mocked.
- E2E (Playwright) — a small number of critical user flows through a
real browser. Prefer semantic selectors (
button:has-text("Submit"),[data-testid=...]) over CSS class selectors, which break on any style refactor unrelated to the behavior under test.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 174 lines · 92 tokens per session scan A 3fec9de400ae
tdd-workflow is a skill published in the GitHub repository shennawardana23/skillme (2 stars, last pushed 13d ago), licensed Apache-2.0. It adds 92 tokens to every session and 1,585 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
dart-generate-test-mocks
Define and generate mock objects for external dependencies using package:mockito and buildrunner. Use when unit testing classes that depend on complex external services like APIs or databases.
testing-setup
Analyze and create a testing strategy for native Android apps - install testing libraries, set up test infrastructure, create harnesses for unit tests, UI tests, screenshot tests, and end-to-end tests.
migrate-xunit-to-xunit-v3
Migrate .NET test projects from xUnit.net v2 to xunit.v3 and fix v3 breaks. Use for package/CPM conversion, OutputType=Exe, preserving the VSTest or MTP runner (including projects currently using YTest.MTP.XUnit2), incompatible TFMs, async void tests, string-to-Type attributes, custom Fact/Theory/BeforeAfterTest…
test-harness
Generates pytest test suites with happy path, edge cases, error conditions, fixture scaffolding, mocks, async patterns. Triggers on: "generate tests", "write tests for", "test this function", "create test suite", "pytest for", "unit tests for", "mock strategy for".
testing-strategies
Comprehensive testing strategy covering unit, integration, e2e, property-based, and mutation testing with practical patterns.
testing-blocks
Use this when you have made AEM Edge Delivery Services code changes to blocks, scripts, or styles and need to validate them before opening a pull request. Covers unit testing for utilities and logic, browser testing with Playwright, linting, and guidance on what to test and how.