MoAI TDD Workflow
modu-ai/moai-adk
Drives test-first development through the RED, GREEN, REFACTOR cycle, with a config switch that selects between TDD and a DDD workflow for existing code.
Enforces strict red-green-refactor, with a failing test first, the minimum code to pass it, then cleanup, and a quick reference for common test runners.
$ npx skills add zereight/gitlab-mcp --skill tdd -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install zereight/gitlab-mcp tdd --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/zereight/gitlab-mcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/tdd .claude/skills/tdd && rm -rf skills-srcUse ~/.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/
Install the "tdd" agent skill from https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tdd into .claude/skills/tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tdd", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tddType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add zereight/gitlab-mcp --skill tdd -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install zereight/gitlab-mcp tdd --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zereight/gitlab-mcp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/tdd .agents/skills/tdd && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tdd" agent skill from https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tdd into .agents/skills/tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tdd", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zereight/gitlab-mcp --skill tdd -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install zereight/gitlab-mcp tdd --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zereight/gitlab-mcp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/tdd .cursor/skills/tdd && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tdd" agent skill from https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tdd into .cursor/skills/tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tdd", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/zereight/gitlab-mcp.git --path .github/skills/tdd--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add zereight/gitlab-mcp --skill tdd -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install zereight/gitlab-mcp tdd --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zereight/gitlab-mcp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/tdd .gemini/skills/tdd && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tdd" agent skill from https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tdd into .gemini/skills/tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tdd", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install zereight/gitlab-mcp tddInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add zereight/gitlab-mcp --skill tdd -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/zereight/gitlab-mcp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/tdd .github/skills/tdd && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tdd" agent skill from https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tdd into .github/skills/tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tdd", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zereight/gitlab-mcp --skill tdd -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install zereight/gitlab-mcp tdd --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zereight/gitlab-mcp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/tdd .opencode/skills/tdd && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tdd" agent skill from https://github.com/zereight/gitlab-mcp/tree/main/.github/skills/tdd into .opencode/skills/tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tdd", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tddEnforces strict red-green-refactor, with a failing test first, the minimum code to pass it, then cleanup, and a quick reference for common test runners.
The skill states one iron law: write the failing test first. In the red phase the agent picks the smallest next behavior, writes a named test, runs it and confirms it fails for the right reason rather than a syntax error. In the green phase it writes only enough code to pass, with no extras, and runs all tests. In the refactor phase it cleans up without changing behavior, runs the tests after every change and undoes anything that breaks them.
A gate table says what to do when the rules slip: delete production code written before its test, fix a test that passes on its first run, split a test that covers several behaviors, and go back if refactoring was skipped. Tests are named as complete sentences so they read as specifications. A quick reference gives the failing assertion and the single-test command for Vitest, Jest, pytest and cargo test. The excerpt is cut off after that table.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0109168. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npxpytestcargogoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Test-Driven Development Enforcer loads about 904 tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 340 words of instructions outside code blocks.
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.
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.
The full file from zereight/gitlab-mcp at commit 0109168, republished under its MIT licence (© zereight). 340 words, ~904 tokens.
.claude/skills/tdd/SKILL.md (or your agent's skills folder).THE IRON LAW: Write the failing test FIRST. Always.
RED → Write a failing test for the NEXT behavior
GREEN → Write ONLY enough code to make it pass (no extras)
REFACTOR → Clean up code quality (tests must stay green after every change)
REPEATit() / test() / def test_// Example: RED — test fails because function doesn't exist yet
it('returns an empty array for an empty input', () => {
const result = parseItems([]);
expect(result).toEqual([]); // FAILS: parseItems is not defined
});// Example: GREEN — just enough to pass
function parseItems(input: string[]): string[] {
return []; // only enough for the current test
}/ai-slop-cleaner and /coding-standards)| Situation | Action |
|---|---|
| Code written before test | STOP. Delete production code. Write test first. |
| Test passes on first run (no prior code) | The test is wrong — fix it to fail first. |
| Multiple behaviors in one test | STOP. One test, one behavior. |
| Skipping refactor to go faster | Go back. Clean up before next feature. |
Tests are executable documentation. Name them as complete sentences:
// BAD
it('test1', ...)
it('works with empty', ...)
// GOOD
it('returns empty array when input is empty', ...)
it('throws ValidationError when email is missing @', ...)
it('sends exactly one email when user registers', ...)| Framework | Failing assertion | Run single test |
|---|---|---|
| Vitest | expect(x).toBe(y) | npx vitest run -t "test name" |
| Jest | expect(x).toBe(y) | npx jest -t "test name" |
| pytest | assert x == y | pytest -k "test_name" |
| cargo test | assert_eq!(x, y) | cargo test test_name |
| go test | t.Errorf(...) | go test -run TestName |
| Pitfall | Fix |
|---|---|
| Testing implementation details | Test behavior (outputs), not internals (private methods) |
| One test for 10 behaviors | Split into atomic test cases |
| Mock everything (over-mocking) | Mock at system boundaries only (DB, HTTP, filesystem) |
| No triangulation | Write 2-3 tests that force the correct implementation to emerge |
| Untriangulated constants | return 42 passes one test — add a second test to force real logic |
@test-engineer — test strategy, framework detection, coverage gap analysis/ultraqa — QA cycling: test, verify, fix, repeat/verify — evidence-based completion verification© zereight, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/tdd of zereight/gitlab-mcp.
Open the folder on GitHubat commit 0109168
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in zereight/gitlab-mcp, which our catalogue first saw on October 7, 2026.
Test-Driven Development Enforcer 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Test-Driven Development Enforcer this skillzereight/gitlab-mcp | 2k | 1 repos | ~904 | Automated safety check: Pass | MIT | |
| MoAI TDD Workflowmodu-ai/moai-adk | 1.2k | — | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| TDD Guidealirezarezvani/claude-skills | 28k | — | ~3.4k | Automated safety check: Pass | MIT | |
| TDD GuideLeoYeAI/openclaw-master-skills | 2.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| TDD Guideborghei/Claude-Skills | 874 | — | ~1.7k | Automated safety check: Pass | MIT | |
| TDD GuideaAAaqwq/AGI-Super-Team | 105 | 2 repos | ~1.1k | Automated safety check: Pass | MIT |
modu-ai/moai-adk
Drives test-first development through the RED, GREEN, REFACTOR cycle, with a config switch that selects between TDD and a DDD workflow for existing code.
alirezarezvani/claude-skills
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…
LeoYeAI/openclaw-master-skills
Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…
borghei/Claude-Skills
Guide red-green-refactor TDD with test generation, coverage-gap analysis, and multi- framework support.
aAAaqwq/AGI-Super-Team
Test-driven development workflow with test generation, coverage analysis, and multi-framework support
glebis/claude-skills
This skill should be used when the user wants to implement features or fix bugs using test-driven development.
zereight/gitlab-mcp
Detects which autonomous OMG mode is currently active - Autopilot, Ralph, Ultrawork, UltraQA, Team or Self-Improve - and shuts it down cleanly.
zereight/gitlab-mcp
Runs a task through Codex and Gemini CLIs in parallel alongside Claude, then synthesizes the three outputs into one answer with agreements and conflicts called out.
zereight/gitlab-mcp
Shared reference for naming, function size, complexity and error handling rules that reviewer agents apply across TypeScript, Python, Go, Rust, Java, C# and Swift.
zereight/gitlab-mcp
Sorts what you learned in a session into the right memory surface, filtering out ephemeral notes and duplicates before anything is stored.
zereight/gitlab-mcp
Runs a fast security sweep of recent code changes before a commit or PR, checking for leaked secrets, vulnerable dependencies, unsafe input handling and auth gaps.
zereight/gitlab-mcp
Audits a project's skill directories for broken frontmatter, missing template sync and quality gaps, then produces a health report of what needs fixing.
Categories
Enforces strict red-green-refactor, with a failing test first, the minimum code to pass it, then cleanup, and a quick reference for common test runners. The skill states one iron law: write the failing test first. In the red phase the agent picks the smallest next behavior, writes a named test, runs it and confirms it fails for the right reason rather than a syntax error.
Test-Driven Development Enforcer fits situations like: implementing a feature strictly test-first; fixing a bug by writing a reproducing test before touching code; checking that new tests fail for the right reason before implementing.
Run `npx skills add zereight/gitlab-mcp --skill tdd -a claude-code`. Or copy the skill folder (.github/skills/tdd in zereight/gitlab-mcp) into .claude/skills/tdd in your project. Claude Code loads it when a task matches its description.
Run `npx skills add zereight/gitlab-mcp --skill tdd -a codex`. Or copy the skill folder (.github/skills/tdd in zereight/gitlab-mcp) into .agents/skills/tdd in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zereight/gitlab-mcp --skill 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/tdd, .gemini/skills/tdd, .github/skills/tdd and .opencode/skills/tdd in your project.
Going by SKILL.md and its folder, Test-Driven Development Enforcer needs the command-line tools its instructions call (npx, pytest, cargo and go). Our summary lists: A test runner such as Vitest, Jest, pytest or cargo test.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Test-Driven Development Enforcer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 904 tokens (SKILL.md is roughly 3.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Test-Driven Development Enforcer: MoAI TDD Workflow (modu-ai/moai-adk, 1.2k stars), TDD Guide (alirezarezvani/claude-skills, 28k stars), TDD Guide (LeoYeAI/openclaw-master-skills, 2.2k stars) and TDD Guide (borghei/Claude-Skills, 874 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
zereight (a GitHub user) maintains it in zereight/gitlab-mcp, which has 2,027 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 6, 2026.
Source: zereight/gitlab-mcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.