Agent skill

Ijfw TDD

by FerroxLabs in FerroxLabs/ijfw

RED-GREEN-REFACTOR enforcement. An agent skill from FerroxLabs/ijfw.

MITAuto-check passedTesting & QA

Install Ijfw TDD

skills CLI
$ npx skills add FerroxLabs/ijfw --skill ijfw-tdd -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install FerroxLabs/ijfw ijfw-tdd --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/FerroxLabs/ijfw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude/skills/ijfw-tdd .claude/skills/ijfw-tdd && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ijfw-tdd
GitHub stars
212
Token cost
~1.5k tokens
SKILL.md length
902 words
Files
1
Skills in repo
38
Repo updated
First seen
Licence
MIT

At a glance

RED-GREEN-REFACTOR enforcement. An agent skill from FerroxLabs/ijfw.

  • Works in 6 steps: Testing the mock, not the code.… → Tautological assertion.… → Coverage-driven test that asserts… → …
  • Implementing a feature
  • SKILL.md covers Move 1: RED -- write a test…, Move 2: GREEN -- write the…, Move 3: REFACTOR -- improve… and Anti-patterns (and WHY each is…, plus 3 more sections
  • Calls npm

What it does

Ijfw TDD is an agent skill from FerroxLabs/ijfw. RED-GREEN-REFACTOR enforcement. Use when implementing a feature or bugfix before writing implementation code. Trigger: tdd, test first, red green refactor, /ijfw-tdd

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Test-driven development. The repository describes itself as: IJFW — It Just Fcking Works. Ferrox Labs' local-first infrastructure for AI coding agents: shared memory, smart routing, multi-AI cross-audits, disciplined workflow. The licence is MIT.

When your agent uses it

  • Implementing a feature
  • Bugfix before writing implementation code

Example prompts

  • “/ijfw-tdd”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Testing the mock, not the code. Asserting screen.getByTestId('sidebar-mock') proves the mock loaded, not that the component works. The…
  2. Tautological assertion. expect(result).toBe(result) or expect(fn()).toEqual(fn()). Always green, proves nothing, exists only to push…
  3. Coverage-driven test that asserts nothing. Calls the function, never checks the return value. The line counter goes up; the bug count does…
  4. Skipping RED because "I know what it will fail on." You don't. Half the time the test passes immediately (you tested the wrong thing) or…
  5. Test-only methods on production classes. A destroy() that exists "for tests" is production API that real callers will eventually invoke…
  6. Incomplete mocks. Mocking only the fields your test reads hides the structural contract. Downstream code that consumes other fields fails…

What it can do on your machine

Read from SKILL.md and the folder at commit eda62f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ijfw TDD loads about 1.5k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 902 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~44
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from FerroxLabs/ijfw at commit eda62f3, republished under its MIT licence (© FerroxLabs). 902 words, ~1,526 tokens.

Download SKILL.mdSave it as .claude/skills/ijfw-tdd/SKILL.md (or your agent's skills folder).
name
ijfw-tdd
description
RED-GREEN-REFACTOR enforcement. Use when implementing a feature or bugfix before writing implementation code. Trigger: tdd, test first, red green refactor, /ijfw-tdd
since
1.5.0

IJFW TDD -- RED-GREEN-REFACTOR

Write the test first. Watch it fail for the right reason. Write the minimum code to make it pass. Then improve structure without changing behavior.

Iron law: No production code without a failing test first. If you wrote code before the test, delete it. Implement fresh from the test.

This skill enforces three distinct moves. Each move has a green light that you must hit before advancing. Skipping a green light is not "pragmatic" -- it is the bug.


Move 1: RED -- write a test that fails for the RIGHT reason

Write ONE minimal test for ONE behavior. Use a descriptive name. Use real code (no mocks unless unavoidable).

Before running the test, write down the failure message you EXPECT to see. Example: "AssertionError: expected 'Email required', got undefined" or "AttributeError: module has no attribute 'retryOperation'".

Then run it:

bash
npm test path/to/test.ts   # or pytest, cargo test, go test, etc.

Paste the actual failure into your scratch. Compare against what you predicted.

Green light to advance: the test FAILS, and the failure message is the one you predicted (an assertion failure on the intended behavior, or a "missing symbol" error if the function does not exist yet).

Red flags that block advancing:

  • Test passes immediately -- you are testing existing behavior. Rewrite.
  • Test errors on a typo, import, or syntax issue -- fix and re-run until it fails meaningfully.
  • Failure message surprises you -- you do not yet understand what you are building. Stop and think before writing implementation.

Move 2: GREEN -- write the minimum code to pass

Write the simplest implementation that turns the failing test green. No extra parameters. No "while I am here" cleanup. No anticipating tomorrow's tests. YAGNI.

Run the test. Paste the pass output. Run the full suite -- nothing else may regress.

Green light to advance: target test passes, full suite passes, output is pristine (no warnings, no stack-trace noise, no skipped tests you forgot about).

Red flags that block advancing:

  • You added a feature the test does not cover -- delete it.
  • Other tests broke -- fix now, do not defer.
  • You changed the test to make it pass -- revert. The test defines the contract; the code is what bends.

Move 3: REFACTOR -- improve structure WITHOUT changing behavior

Now and only now: rename, extract helpers, remove duplication, tighten types, collapse branches. The behavior must stay identical.

Run the FULL test suite after each meaningful change. Not at the end -- after each change. If you cannot remember which change broke green, you waited too long.

Green light to advance to the next test: every refactor kept the suite green. No new behavior was added under the cover of "cleanup."

Red flag: you find yourself wanting to add a feature mid-refactor. Stop. Commit the refactor. Start a new RED test for the new feature.


Show full SKILL.md (448 more words)Show less

Anti-patterns (and WHY each is wrong)

  1. Testing the mock, not the code. Asserting screen.getByTestId('sidebar-mock') proves the mock loaded, not that the component works. The test passes for the wrong reason and gives false confidence.
  2. Tautological assertion. expect(result).toBe(result) or expect(fn()).toEqual(fn()). Always green, proves nothing, exists only to push coverage numbers.
  3. Coverage-driven test that asserts nothing. Calls the function, never checks the return value. The line counter goes up; the bug count does too.
  4. Skipping RED because "I know what it will fail on." You don't. Half the time the test passes immediately (you tested the wrong thing) or errors on a typo (you tested nothing). Watching it fail is the only proof the test can ever fail.
  5. Test-only methods on production classes. A destroy() that exists "for tests" is production API that real callers will eventually invoke. Put cleanup helpers in test utilities.
  6. Incomplete mocks. Mocking only the fields your test reads hides the structural contract. Downstream code that consumes other fields fails silently. Mirror the real shape completely or do not mock at all.

Multi-domain examples

TDD is not a software-only discipline. It applies anywhere you have a falsifiable claim about what "done" means.

  • Book continuity -- writing chapter 7? Before drafting, write the continuity check: "By end of ch7, Maya knows about the letter AND has not yet met Olu." Draft until the check holds. Re-run the check after every revision.
  • Campaign metrics -- launching a landing page? Before shipping, define the test: "Launch worked = 100 signups in 7 days AND CAC < $12 AND bounce < 60%." Anything else is "I think it went OK," which is a manual ad-hoc test.
  • Design-system contrast -- before picking a palette, write the test: "Every text/background pair scores WCAG AA (4.5:1) or better, verified by axe-core." Palette choices that fail the test never enter the system.
  • Onboarding copy -- before writing the welcome email, write the test: "A reader who has never used the product can name the first action to take in under 10 seconds." Read the draft to a non-user and time them.

In every domain, the move is the same: write the falsifiable claim FIRST, watch reality fail to meet it, then build until the check holds.


When stuck

ProblemMove
Don't know how to test itWrite the wished-for API. Write the assertion. Ask for help.
Test feels too complicatedThe design is too complicated. Simplify the interface.
Must mock everythingCode is too coupled. Use dependency injection.
Test setup is hugeExtract helpers. Still huge? The design is wrong.

Final rule

Production artifact exists -- a function, a chapter, a metric, a palette -- a test failed for it first. Otherwise: not TDD. Delete and restart.

© FerroxLabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in claude/skills/ijfw-tdd of FerroxLabs/ijfw.

Open the folder on GitHubat commit eda62f3

Compare with similar skills

Ijfw TDD next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ijfw TDD compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ijfw TDD this skillFerroxLabs/ijfw212—~1.5kAutomated safety check: PassMIT
TDDpietheinstrengholt/rssmonster56430 repos~906Automated safety check: PassMIT
TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph11211 repos~2.4kAutomated safety check: PassNone
TDDsanity-io/sanity6.4k20 repos~1kAutomated safety check: PassMIT
Test Driven Developmentfarm-fe/farm5.6k51 repos~2.5kAutomated safety check: PassMIT
Tapd Story PipelineTencentBlueKing/bk-bcs840—~2.6kAutomated safety check: PassCustom licence

Similar skills

  • TDD

    pietheinstrengholt/rssmonster

    Test-driven development. An agent skill from pietheinstrengholt/rssmonster.

    564 GitHub starsUsed in 30 repos~906 tokens
    Testing & QAAuto-check passed
  • TDD Workflow

    hellangleZ/burn-in-cceverywhere-ralph

    A skill your agent uses when writing new features, fixing bugs, or refactoring code.

    112 GitHub starsUsed in 11 repos~2.4k tokens
    Testing & QAAuto-check passed
  • TDD

    sanity-io/sanity

    Official

    Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.

    6.4k GitHub starsUsed in 20 repos~1k tokens
    Testing & QAAuto-check passed
  • A skill your agent uses when implementing any feature or bugfix, before writing implementation code

    5.6k GitHub starsUsed in 51 repos~2.5k tokens
    Testing & QAAuto-check passed
  • Tapd Story Pipeline

    TencentBlueKing/bk-bcs

    单需求实现流水线——把一个 TAPD 需求从零推进到代码提交。自动串联技术澄清、 开发计划、任务拆分、TDD 实现、架构/安全校验、代码提交六个阶段。

    840 GitHub stars~2.6k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Absolute Init

    maddhruv/absolute

    One-time setup for absolute: interview how you want it to behave (output style, autonomy, TDD strictness, spec dir, families) + detect the stack once, then write .absolute.config.json (project…

    219 GitHub starsUsed in 1 repo~3k tokens
    Testing & QAAuto-check passed

More from FerroxLabs/ijfw

All 38 skills in this repo
  • Ijfw Agents Md

    FerroxLabs/ijfw

    Maintain canonical AGENTS.md (open spec). An agent skill from FerroxLabs/ijfw.

    212 GitHub stars~2.7k tokensUpdated 5 days ago
    Auto-check passed
  • Ijfw Design

    FerroxLabs/ijfw

    A skill your agent uses when the user says: 'design', 'redesign', 'UI', 'UX', 'dashboard', 'page', 'component', 'make it look better', 'polish', 'pretty', 'professional', 'user experience'…

    212 GitHub stars~2.2k tokensUpdated 5 days ago
    Auto-check passed
  • A skill your agent uses when a milestone is shipping and you need to archive its artifacts, generate a summary, and seed the next milestone.

    212 GitHub stars~1.5k tokensUpdated 5 days ago
    Auto-check passed
  • Ijfw Critique

    FerroxLabs/ijfw

    Challenge decisions, surface counter-arguments, flag assumptions.

    212 GitHub stars~1.2k tokensUpdated 5 days ago
    Auto-check passed
  • Ijfw Cross Audit

    FerroxLabs/ijfw

    Generate a cross-platform multi-model audit (Trident) on a diff, brief, or artifact.

    212 GitHub stars~594 tokensUpdated 5 days ago
    Auto-check passed
  • Ijfw Debug

    FerroxLabs/ijfw

    Root-cause analysis with hypothesis tracking. An agent skill from FerroxLabs/ijfw.

    212 GitHub stars~578 tokensUpdated 5 days ago
    Auto-check passed

Categories

Questions about Ijfw TDD

What does Ijfw TDD do?

RED-GREEN-REFACTOR enforcement. An agent skill from FerroxLabs/ijfw. Ijfw TDD is an agent skill from FerroxLabs/ijfw. RED-GREEN-REFACTOR enforcement.

When should I use Ijfw TDD?

Ijfw TDD fits situations like: implementing a feature; bugfix before writing implementation code.

How do I install Ijfw TDD in Claude Code?

Run `npx skills add FerroxLabs/ijfw --skill ijfw-tdd -a claude-code`. Or copy the skill folder (claude/skills/ijfw-tdd in FerroxLabs/ijfw) into .claude/skills/ijfw-tdd in your project. Claude Code loads it when a task matches its description.

How do I install Ijfw TDD in Codex?

Run `npx skills add FerroxLabs/ijfw --skill ijfw-tdd -a codex`. Or copy the skill folder (claude/skills/ijfw-tdd in FerroxLabs/ijfw) into .agents/skills/ijfw-tdd in your project. Codex loads it when a task matches its description.

Can I use Ijfw TDD in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/ijfw --skill ijfw-tdd -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ijfw-tdd, .gemini/skills/ijfw-tdd, .github/skills/ijfw-tdd and .opencode/skills/ijfw-tdd in your project.

What does Ijfw TDD need to run?

Going by SKILL.md and its folder, Ijfw TDD needs the command-line tools its instructions call (npm).

Does Ijfw TDD access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Ijfw TDD safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ijfw TDD use?

Ijfw TDD is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ijfw TDD use?

About 1.5k tokens (SKILL.md is roughly 6.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ijfw TDD?

Skills that share tags, products or a category with Ijfw TDD: TDD (pietheinstrengholt/rssmonster, 564 stars), TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), TDD (sanity-io/sanity, 6.4k stars) and Test Driven Development (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ijfw TDD?

FerroxLabs (a GitHub user) maintains it in FerroxLabs/ijfw, which has 212 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on October 5, 2026.

Source: FerroxLabs/ijfw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.