TDD Workflow
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
MANDATORY skill that activates whenever code is written to implement an OpenSpec change task.
$ npx skills add elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-plus-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/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/openspec-plus-tdd .claude/skills/openspec-plus-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 "openspec-plus-tdd" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-tdd into .claude/skills/openspec-plus-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-plus-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/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-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 elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-plus-tdd --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/openspec-plus-tdd .agents/skills/openspec-plus-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 "openspec-plus-tdd" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-tdd into .agents/skills/openspec-plus-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-plus-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 elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-plus-tdd --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/openspec-plus-tdd .cursor/skills/openspec-plus-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 "openspec-plus-tdd" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-tdd into .cursor/skills/openspec-plus-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-plus-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/elastic/terraform-provider-elasticstack.git --path .agents/skills/openspec-plus-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 elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install elastic/terraform-provider-elasticstack openspec-plus-tdd --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/openspec-plus-tdd .gemini/skills/openspec-plus-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 "openspec-plus-tdd" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-tdd into .gemini/skills/openspec-plus-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-plus-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 elastic/terraform-provider-elasticstack openspec-plus-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 elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/openspec-plus-tdd .github/skills/openspec-plus-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 "openspec-plus-tdd" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-tdd into .github/skills/openspec-plus-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-plus-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 elastic/terraform-provider-elasticstack --skill openspec-plus-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 elastic/terraform-provider-elasticstack openspec-plus-tdd --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elastic/terraform-provider-elasticstack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/openspec-plus-tdd .opencode/skills/openspec-plus-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 "openspec-plus-tdd" agent skill from https://github.com/elastic/terraform-provider-elasticstack/tree/main/.agents/skills/openspec-plus-tdd into .opencode/skills/openspec-plus-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openspec-plus-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.
openspec-plus-tddMANDATORY skill that activates whenever code is written to implement an OpenSpec change task.
Openspec Plus TDD is an agent skill from elastic/terraform-provider-elasticstack, published by the product's own GitHub organization. MANDATORY skill that activates whenever code is written to implement an OpenSpec change task. Triggers: openspec-plus-apply is active, /opsx-apply is running, the user is implementing tasks from an OpenSpec change, an implementer subagent dispatched by openspec-plus-apply is starting work, or the user invokes phrases like 'TDD for the change', 'implementing change tasks', or 'writing tests for spec scenarios'. Load before any production code is written for an OpenSpec change. Enforces strict RED-GREEN-REFACTOR…
Its SKILL.md is about 4.7k 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, Failing and flaky tests and End-to-end testing. The repository describes itself as: Terraform provider for Elastic Stack. The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b6bbc21. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and gherkin).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Openspec Plus TDD loads about 4.7k tokens when it runs. Until then it costs about 216 tokens; SKILL.md has 2,175 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 elastic/terraform-provider-elasticstack at commit b6bbc21, republished under its Apache-2.0 licence (© elastic). 2,175 words, ~4,674 tokens.
.claude/skills/openspec-plus-tdd/SKILL.md (or your agent's skills folder).Strict RED-GREEN-REFACTOR per test for OpenSpec change implementation. Every test — whether derived from a Gherkin scenario relevant to the slice in spec.md, written for a unit, edge case, helper, or error path — goes through its own atomic cycle before the next test begins. Production code exists only to make a previously-failing test pass. Surgical changes, simplicity first, no speculative abstractions, every changed line traces to a slice task.
Gherkin scenarios in spec.md are the canonical source for acceptance tests: every scenario relevant to the slice MUST become at least one test. The implementer is encouraged to add additional tests — unit tests for individual functions, edge-case tests, helper tests, error-path tests — when fast-feedback granularity is valuable. Every test follows the same cycle.
Loaded by openspec-plus-apply (subagent prompt + inline mode) before any code is written.
RIGID. NEVER write production code before a test fails for the right reason. NEVER write tests for multiple cases before the first one is GREEN. NEVER skip the REFACTOR assessment. NEVER mark a task
[x]while a relevant test is failing or skipped. NEVER add comments for non-complex logic. NEVER refactor code outside the slice. NEVER write any code (test or production) before reading the project's referenced coding/testing standards. NEVER ship without covering every Gherkin scenario in spec.md with at least one test. Letter and spirit are the same.
Red flags — STOP, you are about to violate this skill:
.skip to unblock the slice"None justify production code without a red test, ignored failures, speculative abstractions, comments on obvious code, or scope expansion.
NO PRODUCTION CODE WITHOUT A FAILING TESTEvery test — acceptance, unit, edge case, helper, error path — must be observed to fail for the right reason before the production code that makes it pass is written. Test not observed to fail = test proves nothing. Code written first = delete it, start over. No exceptions without explicit user permission.
Every Gherkin scenario relevant to the slice in spec.md MUST become at least one test. The scenario IS the acceptance contract; the test IS the verification. A slice cannot ship with an uncovered scenario, even if all other tests pass.
Beyond acceptance tests, add unit/edge/helper/error tests when valuable (non-trivial branches, null/empty inputs, boundary values, error paths). Same RED-GREEN-REFACTOR cycle — no special handling regardless of test origin.
tasks.md)spec.md)design.md)AGENTS.md / CLAUDE.md / GEMINI.md if in context)NEVER read source outside the slice's affected files.
Phase 0: Pre-RED — read project's coding/testing conventions; follow strictly
Phase 1+: Plan the test set for the slice:
Mandatory: one test per Gherkin scenario relevant to the slice in spec.md
Encouraged: additional unit / edge-case / helper / error-path tests
when fast-feedback granularity is valuable
Phase 2+: For each test, ONE AT A TIME (any test, in any order):
Follow the Per-Test State Machine (digraph below) atomically.
Do NOT begin the next test until the current one terminates at
"Test Complete".
After all tests complete AND every Gherkin scenario relevant to the slice is covered, run
the slice's pre-mark gate.Every test traverses this cycle end-to-end before work begins on the next. Atomic per test — no shortcuts, no batching, no skipping nodes. Applies to all test types (acceptance and granular).
Per-test cycle: START → RECORD STATE BEFORE (file path + count + names) → RED (write ONE failing test K) → VERIFY-RED (fails for expected reason? no → fix test, retry) → GREEN (minimum production code for K only) → VERIFY-GREEN (K passes, others green, output pristine? no → fix production code, retry) → REFACTOR ASSESS (needed? yes → act, verify green, revert if broken; no → record "not needed — reason") → RECORD STATE AFTER (count = previous + 1) → TEST K COMPLETE → return to START for K+1 (or end if all done AND all Gherkin scenarios covered).
The cycle forbids:
This is the single most-violated rule. Read both examples carefully.
Implementer opens empty test file.
Writes test 1, test 2, test 3, test 4, test 5 in one pass.
Runs tests — all 5 fail.
Writes production code covering all 5 cases in one pass.
Runs tests — all 5 pass.
Reports DONE.This is NOT TDD. Each test passed immediately when production code arrived. You never observed test 1 failing in isolation. You never refactored after each green. You wrote the whole solution in your head and dumped it onto disk.
The end state (5 tests, 5 features) is identical to RIGHT — but the discipline is absent. The reviewer cannot tell from end state alone, but YOU know you batched.
State: 0 tests.
Test 1 (acceptance — Gherkin "valid login"):
Write test 1 (1 test, 1 failing). RED: "expected `Email required`, got undefined" ✓
Write minimum production. GREEN: 1 passing, pristine ✓
Refactor: no duplication, names clear → "not needed."
Test 2 (acceptance — Gherkin "invalid password"):
Write test 2 (2 tests, 1 failing). RED: "expected `Invalid password`, got `Internal error`" ✓
Write minimum production. GREEN: 2 passing ✓
Refactor: extracted `mapAuthError` helper. Tests green.
Test 3 (unit — edge case for `mapAuthError(null)`):
Write test 3 (3 tests, 1 failing). RED: "expected `Invalid input`, got TypeError" ✓
Add null guard. GREEN: 3 passing ✓. Refactor: not needed.
[repeat for each test...]Tests 1-2: Gherkin scenarios (mandatory acceptance). Test 3: implementer-initiated edge case (granular). All follow the same per-test cycle.
If you find yourself thinking "I know all 5 cases, let me write them all at once" — STOP. That is the violation. Delete what you just wrote. Restart from test 1.
Before ANY code (mandatory, once per slice):
AGENTS.md / CLAUDE.md / GEMINI.md (or equivalents at project root, .claude/, .opencode/, docs/)These files are the contract — follow every documented rule strictly, end-to-end (no cherry-picking). Re-read per slice (files may have been updated). Do NOT proceed to Phase 1 before reading is done.
The test you write at this phase is one of two kinds:
1. Acceptance test — translated from a Gherkin scenario.
A Gherkin scenario in spec.md:
#### Scenario: User logs in with valid credentials
GIVEN a user account exists with email `alice@example.com` and password `correct-pw`
WHEN the user submits the login form with those credentials
THEN the response sets a session cookie
AND the user is redirected to `/dashboard`Translate directly into one minimal acceptance test:
test('logs in with valid credentials', async () => {
await createUser({ email: 'alice@example.com', password: 'correct-pw' });
const response = await submitLogin({ email: 'alice@example.com', password: 'correct-pw' });
expect(response.headers['set-cookie']).toMatch(/session=/);
expect(response.status).toBe(302);
expect(response.headers.location).toBe('/dashboard');
});2. Granular test — implementer-initiated for a unit, edge case, helper, or error path
Example: while implementing the login above, the implementer factors out a mapAuthError helper. They add a unit test for it:
test('mapAuthError handles null input', () => {
expect(() => mapAuthError(null)).toThrow('Invalid input');
});This test was not derived from a Gherkin scenario — it was added because the helper's null case needs fast-feedback coverage. It follows the same cycle.
Rules (both kinds):
MANDATORY. NEVER SKIP.
Run the test. Confirm:
Test passes immediately → feature exists or test is wrong. Fix the test. Test errors → fix error, re-run until it fails for the expected reason.
Simplest code that passes the test.
If 200 lines and 50 would do — rewrite.
MANDATORY.
Test fails → fix production code, NOT the test. Test is the source of truth. Unrelated tests fail → fix now, before next test.
REFACTOR is NOT optional. After every GREEN, you MUST perform an explicit refactor assessment.
Apply clean code principles, project conventions (from Phase 0 reading), and look for common code smells in the code introduced by this test's GREEN phase (within the slice's files only).
Answer in the report: Is refactoring needed? (yes/no with one-sentence reason)
If no → state explicitly: "Refactor assessment: no refactoring needed — code is minimal, clear, and non-duplicative." Then move to NEXT.
If yes → proceed to 5.2.
Refactor respecting project conventions. Tests must stay green — run after every edit. NEVER add behavior, touch outside slice, or reformat adjacent code. If tests break → revert.
Record outcome (e.g., "Extracted parseAuthHeader helper; tests green" or "No refactoring needed — minimal, clear, non-duplicative").
Only after the current test's REFACTOR assessment is recorded, move to the next test. Return to Phase 1 RED with the next test (the next uncovered Gherkin scenario, OR the next implementer-initiated unit/edge/helper/error test).
NEVER skip ahead. NEVER write the next test while the current one is still in GREEN or REFACTOR phase.
The slice is done when:
| Principle | TDD application |
|---|---|
| Think Before Coding | Read scenario or unit contract carefully. State assumptions. Ambiguous → ASK before writing the test. |
| Simplicity First | One test at a time (acceptance OR granular). Minimum production change. No speculative abstractions. |
| Surgical Changes | Every changed line traces to a slice task. Don't refactor adjacent code. Match existing style. |
| Goal-Driven Execution | The current test (Gherkin scenario OR unit contract) IS the verifiable goal. Loop independently until the test passes. |
Code explains itself through good names, small focused functions, and clear structure.
Per-test: Pre-RED done ✓ RED observed ✓ GREEN passes + others green + pristine ✓ Minimum code ✓ No unnecessary comments ✓ No adjacent code touched ✓ REFACTOR assessed ✓ — Cannot check all? Restart from RED.
Per-slice: Every Gherkin scenario covered ✓ All tests pass ✓ Each test went through its own cycle (no batching) ✓
| Symptom | Cause | Fix |
|---|---|---|
| Hard to write test | Interface hard to use | Simplify interface before writing test |
| Need to mock half the world | Code too coupled | Dependency injection or split unit |
| Test setup huge | Coupling | Extract helpers; still huge → simplify design |
| Scenario ambiguous | Spec gap | STOP. Ask user. Don't invent |
| Don't know what granular tests to add | Just-write-tests trap | Add tests for: non-trivial branches, null/empty inputs, boundary values, error paths the scenario doesn't cover. Skip if behavior is fully covered by acceptance test. |
| Test passes immediately | Feature exists or test wrong | Investigate; rewrite test |
| Can't make test fail right | Test wrong | Rewrite before any production code |
| Production code keeps growing | Over-engineering | What's the minimum that passes? |
NEVER: skip Pre-RED reading | batch tests | move to next test before current REFACTOR | skip REFACTOR assessment | production code before failing test | test after code works ("for coverage") | .skip/.todo/xtest/comment-out | suppress output | add comments on non-complex logic | leave TODO/FIXME/commented-out code | refactor adjacent code | features the test didn't request | abstractions for single use | error handling for untested cases | skip scenario tests | skip granular tests when edge cases exist | continue with failing tests | commit code.
"Just this once" → STOP. Restart from RED.
skill tool to load this skill before any code; if unavailable, reads this SKILL.md directly from the skills directory. Each subagent loads fresh in isolated context.skill tool once at Phase 2 start; if unavailable, reads this SKILL.md directly from the skills directory. If already loaded in main agent context, reference instead of reload.The slice's pre-mark gate (lint + format + tests + other on affected files) runs AFTER the TDD cycle completes for all tests AND every Gherkin scenario is covered. Gate failure → return to failing test's TDD cycle. Never bypass.
Succeeds: Pre-RED done, every Gherkin scenario has a passing test, every test observed to fail before passing, full per-test cycle completed before starting next, REFACTOR assessed and recorded for each, minimal production code, pristine output, no unnecessary comments, no adjacent refactoring, gate clean.
Fails: Pre-RED skipped, batching, next test before current REFACTOR complete, REFACTOR assessment skipped, production code without red-then-green test, tests skipped/commented, comments on obvious code, adjacent code touched, speculative abstractions, scenario paraphrased instead of translated, uncovered scenarios.
© elastic, Apache-2.0. 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 .agents/skills/openspec-plus-tdd of elastic/terraform-provider-elasticstack.
Open the folder on GitHubat commit b6bbc21
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 elastic/terraform-provider-elasticstack, which our catalogue first saw on October 7, 2026.
Openspec Plus 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Openspec Plus TDD this skillelastic/terraform-provider-elasticstack | 210 | 1 repos | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| Bmad Testarch Atddbmad-code-org/bmad-method-test-architecture-enterprise | 104 | 3 repos | ~1.2k | Automated safety check: Pass | Custom licence | |
| Agentic TDDreticlehq/reticle | 1.2k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Superpowers Test Driven Developmentchristopherarter/superpowers-reasonix | 102 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Fix BugMelbourneDeveloper/dart_node | 113 | 1 repos | ~709 | Automated safety check: Notes | None |
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
bmad-code-org/bmad-method-test-architecture-enterprise
Generate red-phase acceptance test scaffolds using the TDD cycle.
reticlehq/reticle
Applies red-green TDD to behavior unit tests cannot reach, by stating the expected outcome against the running app with Reticle before writing the feature.
christopherarter/superpowers-reasonix
Writing or fixing any code?. An agent skill from christopherarter/superpowers-reasonix.
MelbourneDeveloper/dart_node
Fix a bug using test-driven development. An agent skill from MelbourneDeveloper/dart_node.
chenjackle45/SayIt
Generate failing acceptance tests using TDD cycle. An agent skill from chenjackle45/SayIt.
elastic/terraform-provider-elasticstack
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements.
elastic/terraform-provider-elasticstack
Implement tasks from an OpenSpec change. An agent skill from elastic/terraform-provider-elasticstack.
elastic/terraform-provider-elasticstack
Archive a completed change in the experimental workflow. An agent skill from elastic/terraform-provider-elasticstack.
elastic/terraform-provider-elasticstack
Monitor GitHub pull requests through a subagent-based loop that watches CI checks, review comments, PR comments, review state, merge conflicts, and branch freshness.
elastic/terraform-provider-elasticstack
MANDATORY skill that activates whenever the OpenSpec proposal phase begins.
elastic/terraform-provider-elasticstack
Continue working on an OpenSpec change by creating the next artifact.
Categories
MANDATORY skill that activates whenever code is written to implement an OpenSpec change task. Openspec Plus TDD is an agent skill from elastic/terraform-provider-elasticstack, published by the product's own GitHub organization. MANDATORY skill that activates whenever code is written to implement an OpenSpec change task.
Openspec Plus TDD fits situations like: tasks that involve Test-driven development; tasks that involve Failing and flaky tests; tasks that involve End-to-end testing.
Run `npx skills add elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a claude-code`. Or copy the skill folder (.agents/skills/openspec-plus-tdd in elastic/terraform-provider-elasticstack) into .claude/skills/openspec-plus-tdd in your project. Claude Code loads it when a task matches its description.
Run `npx skills add elastic/terraform-provider-elasticstack --skill openspec-plus-tdd -a codex`. Or copy the skill folder (.agents/skills/openspec-plus-tdd in elastic/terraform-provider-elasticstack) into .agents/skills/openspec-plus-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 elastic/terraform-provider-elasticstack --skill openspec-plus-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/openspec-plus-tdd, .gemini/skills/openspec-plus-tdd, .github/skills/openspec-plus-tdd and .opencode/skills/openspec-plus-tdd in your project.
SKILL.md names no scripts, command-line tools or credentials: Openspec Plus TDD is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Openspec Plus TDD is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k 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 Openspec Plus TDD: TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), Bmad Testarch Atdd (bmad-code-org/bmad-method-test-architecture-enterprise, 104 stars), Agentic TDD (reticlehq/reticle, 1.2k stars) and Superpowers Test Driven Development (christopherarter/superpowers-reasonix, 102 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
elastic (a GitHub organization, an official publisher) maintains it in elastic/terraform-provider-elasticstack, which has 210 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 2026.
Source: elastic/terraform-provider-elasticstack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.