Systematic Debugging
foryourhealth111-pixel/Vibe-Skills
Root-cause route for actual bugs, failing tests, build errors, crashes, stack traces, and unexpected behavior.
Writes a single failing test that reproduces a bug after its root-cause analysis is complete, before any fix is written.
$ npx skills add opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install opsmill/infrahub opsmill-dev-test-driving-bugs --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/opsmill/infrahub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/opsmill-dev-test-driving-bugs .claude/skills/opsmill-dev-test-driving-bugs && 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 "opsmill-dev-test-driving-bugs" agent skill from https://github.com/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugs into .claude/skills/opsmill-dev-test-driving-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opsmill-dev-test-driving-bugs", 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/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugsType 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 opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install opsmill/infrahub opsmill-dev-test-driving-bugs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opsmill/infrahub.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/opsmill-dev-test-driving-bugs .agents/skills/opsmill-dev-test-driving-bugs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "opsmill-dev-test-driving-bugs" agent skill from https://github.com/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugs into .agents/skills/opsmill-dev-test-driving-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opsmill-dev-test-driving-bugs", 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 opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install opsmill/infrahub opsmill-dev-test-driving-bugs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opsmill/infrahub.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/opsmill-dev-test-driving-bugs .cursor/skills/opsmill-dev-test-driving-bugs && 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 "opsmill-dev-test-driving-bugs" agent skill from https://github.com/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugs into .cursor/skills/opsmill-dev-test-driving-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opsmill-dev-test-driving-bugs", 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/opsmill/infrahub.git --path .agents/skills/opsmill-dev-test-driving-bugs--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 opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install opsmill/infrahub opsmill-dev-test-driving-bugs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opsmill/infrahub.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/opsmill-dev-test-driving-bugs .gemini/skills/opsmill-dev-test-driving-bugs && 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 "opsmill-dev-test-driving-bugs" agent skill from https://github.com/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugs into .gemini/skills/opsmill-dev-test-driving-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opsmill-dev-test-driving-bugs", 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 opsmill/infrahub opsmill-dev-test-driving-bugsInstalls 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 opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/opsmill/infrahub.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/opsmill-dev-test-driving-bugs .github/skills/opsmill-dev-test-driving-bugs && 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 "opsmill-dev-test-driving-bugs" agent skill from https://github.com/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugs into .github/skills/opsmill-dev-test-driving-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opsmill-dev-test-driving-bugs", 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 opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install opsmill/infrahub opsmill-dev-test-driving-bugs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opsmill/infrahub.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/opsmill-dev-test-driving-bugs .opencode/skills/opsmill-dev-test-driving-bugs && 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 "opsmill-dev-test-driving-bugs" agent skill from https://github.com/opsmill/infrahub/tree/stable/.agents/skills/opsmill-dev-test-driving-bugs into .opencode/skills/opsmill-dev-test-driving-bugs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opsmill-dev-test-driving-bugs", 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.
opsmill-dev-test-driving-bugsWrites a single failing test that reproduces a bug after its root-cause analysis is complete, before any fix is written.
Opsmill Dev Test Driving Bugs is an agent skill from opsmill/infrahub. Writes a single failing test that reproduces a bug after its root-cause analysis is complete, before any fix is written. TRIGGER when: a bug has a completed root-cause analysis and you need the failing reproduction test, writing a test that proves a bug exists, the second step of the bug-fixing pipeline. DO NOT TRIGGER when: still triaging or diagnosing the bug → opsmill-dev-analyzing-bugs; implementing the fix once the test exists → opsmill-dev-fixing-bugs; general feature test-first work → superpowers…
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Works in any git repo with a test suite; discovers testing conventions from the OpsMill dev/ layout with auto-detection fallback. The draft-PR step needs gh…
It sits in Testing & QA, covering Test-driven development, Root cause analysis and Failing and flaky tests. It works with Bash. The repository describes itself as: Infrahub is a graph-based data management platform with built-in version control, CI workflows, peer review, and API access. It’s purpose-built to power reliable infrastructure… The licence is Apache-2.0.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 460d724. 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:
gitghuvnpmnpxruffFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh, uv, npm and 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.
Works in any git repo with a test suite; discovers testing conventions from the OpsMill `dev/` layout with auto-detection fallback. The draft-PR step needs `gh` and a GitHub remote.
From compatibility in the SKILL.md frontmatter.
Opsmill Dev Test Driving Bugs loads about 4k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 1,656 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 opsmill/infrahub at commit 460d724, republished under its Apache-2.0 licence (© opsmill). 1,656 words, ~3,951 tokens.
.claude/skills/opsmill-dev-test-driving-bugs/SKILL.md (or your agent's skills folder).$ARGUMENTSYou are a senior QA engineer writing a targeted failing test that reproduces a confirmed bug.
/opsmill-dev-analyzing-bugs has already identified the root cause. Your job is to write ONE test that
fails on the current code, proving the bug exists.
Read tool to read files -- do NOT use cat or head/tail in Bash.Glob tool to find files -- do NOT use find or ls -R in Bash.Grep tool to search file contents -- do NOT use grep or rg in Bash.gh CLI, and commands that require shell execution.cd) does not persist across separate Bash calls -- re-derive
any shell value you reuse rather than relying on one set in an earlier step. The pipeline's
logical flags like OPEN_PR are decisions you carry in your own reasoning, not shell variables,
so they do persist across steps.Parse $ARGUMENTS for an optional pr flag: if the word pr appears anywhere in the
arguments (case-insensitive), set OPEN_PR=true. Otherwise OPEN_PR=false. The rest of
$ARGUMENTS (issue number / URL / description) is only used to disambiguate when more than one
analysis exists -- do not re-derive the slug from it.
Discover the handoff file /opsmill-dev-analyzing-bugs wrote, using Glob for .bug-analysis-*.md in the repo
root:
/opsmill-dev-analyzing-bugs <issue> first." and STOP.<key> best matches $ARGUMENTS (issue number, then
slug words). If still ambiguous, list them and ask the developer which to use.Read the full analysis. Take the canonical <key> and branch from its Key: and
Branch: header fields rather than re-deriving a slug -- this keeps the branch/PR names
consistent across steps. (If those fields are absent -- an older analysis -- fall back to the
key embedded in the filename, .bug-analysis-<key>.md, and ai-bug-pipeline-<key>.)
If the analysis file is missing required fields (Root cause, Affected files), inform the developer and STOP.
Follow steps 0--9 below. Step 10 (draft PR) runs only when OPEN_PR=true. If
OPEN_PR=false, the run stays fully local: stop after step 9 with the test committed on the
local branch <branch> -- do NOT push and do NOT open a PR. Display the test results and the
branch name, and tell the developer that /opsmill-dev-fixing-bugs will pick it up from that local branch.
Detect the default branch and create a working branch from it:
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
# Fallback when origin/HEAD is unset (shallow/CI clones, manually-added remotes):
[ -z "$DEFAULT_BRANCH" ] && DEFAULT_BRANCH=$(git remote show origin 2>/dev/null | sed -n 's/.*HEAD branch: //p')
[ "$DEFAULT_BRANCH" = "(unknown)" ] && DEFAULT_BRANCH="" # git prints "(unknown)" when remote HEAD is indeterminate
DEFAULT_BRANCH=${DEFAULT_BRANCH:-main}
git fetch origin "$DEFAULT_BRANCH" || { echo "Cannot fetch origin/$DEFAULT_BRANCH -- set the default branch manually and retry."; exit 1; }
# Fetch the working branch into a tracking ref with an explicit refspec, so origin/<branch> is
# created even on single-branch/shallow clones (a bare `git fetch origin <branch>` only updates
# FETCH_HEAD there). Silently a no-op when the branch doesn't exist on the remote yet.
git fetch origin "+refs/heads/<branch>:refs/remotes/origin/<branch>" 2>/dev/null
# Resume the branch reconciled to the pushed tip if it exists on the remote; else a local-only
# branch (a no-pr run not yet pushed); else create it fresh from the default branch:
if git rev-parse --verify -q "origin/<branch>" >/dev/null; then
git checkout -B "<branch>" "origin/<branch>" # remote tip wins -> never reuse a stale local copy
elif git rev-parse --verify -q "<branch>" >/dev/null; then
git checkout "<branch>" # local-only branch (no-pr run, never pushed)
else
git checkout -b "<branch>" "origin/$DEFAULT_BRANCH"
fi<branch> is the Branch: value from the analysis (ai-bug-pipeline-<key>) -- use it verbatim
so /opsmill-dev-fixing-bugs finds the same branch.git fetch fails, STOP and report it -- do not continue to write a
test with no working branch (the exit 1 only fails that one shell call). The working-branch
fetch is best-effort (a missing remote branch is normal); a network failure there only means the
branch can't be resumed from the remote, in which case STOP rather than recreating from default.Determine which area the bug lives in (backend, frontend, etc.) and read the project's testing
conventions. Anchor on the dev/ layout, falling back to detection:
AGENTS.md and dev/documentation-architecture.md (if present) to map the bug to a
code package.dev/knowledge/**/testing.md and dev/guidelines/**/testing.md.dev/guides/frontend/writing-unit-tests.md,
writing-component-tests.md, writing-e2e-tests.md.dev/ testing docs): detect the test runner and layout from the project
itself -- pyproject.toml / tox.ini / pytest.ini (pytest), package.json scripts
(vitest / jest / playwright), or a Makefile / AGENTS.md documenting the test command.Read the test setup local to the target test directory and its parents (e.g. conftest.py
files up the tree for pytest, shared setup/setup.ts for JS suites). Understand the available
fixtures, their scopes, and setup/teardown patterns. Do NOT reinvent setup logic that already
exists.
Look for the project's reusable test helpers, base classes, factories, and fakes/adapters
(commonly under tests/helpers/, tests/adapters/, tests/fake/, or similar). Use these
instead of writing your own test infrastructure.
Read 2--3 existing tests in the target test directory to learn the naming conventions, class structure, and import patterns before writing your own.
Pick the right test level using whatever guidance you found in step 1. Examples of common levels:
.test.ts), E2E (e.g. Playwright). Use
a GIVEN/WHEN/THEN structure and existing factories when the project does.Write a single targeted test that reproduces the bug:
CRITICAL: verify the test FAILS on the current code. Run just this test using the project's
detected runner (e.g. uv run pytest path::Test::test -x -v, npm run test -- <path>,
npx playwright test path). Note the -- for npm run: without it npm swallows the path
instead of forwarding it to the test runner.
AssertionError: Expected ValidationError but none was raised, or assert 2 == 1 when
duplicates were found).Gate (T2-verify · P1): paste the actual failing test run proving it fails for the documented reason (not an import/collection error). See
../quality-gates/gates/primitives/evidence-before-done.md.
Run the project's formatter and linter on the test file(s) and fix any issues before committing.
Use whatever the project defines (e.g. uv run invoke format / uv run invoke lint,
npx biome check --write ., ruff format, prettier/eslint). Detect these from
AGENTS.md / Makefile / pyproject.toml / package.json.
Commit ONLY the test file(s). Do NOT touch production code. Stage files by name
(git add path/to/test_file) -- never git add . or git add -A, as unrelated working-tree
files would be committed by mistake. Commit message: test: add failing test for <key>.
OPEN_PR=true)Ship gate (T2 · P2 + P3) — before opening the draft PR or stamping
AGENT_TEST_COMPLETE. Run the ship gate per../quality-gates/gates/primitives/independent-judge.md(judge → on-FAIL STOP → R2 degrade → write receipt on PASS, all defined there). R1 criteria: the.bug-analysis-<key>.mdverbatim (the root cause the test must prove — NOT your summary). Artifact: the test diff. Forbidden evasions: the test-gate evasions from../quality-gates/gates/primitives/anti-gaming.md. The judge confirms the test genuinely exercises the bug (not trivially-passing, not always-failing).
Push the branch and open a draft Pull Request against the repo's default branch:
git push -u origin "<branch>" || { echo "Push rejected (non-fast-forward / protected / network). STOP and resolve before retrying -- do not open or edit a PR."; exit 1; }
# Idempotent: on a resumed run a draft PR may already exist for this branch -- edit it
# instead of creating a duplicate (gh pr create errors if one already exists). Default to
# CREATE when the count is empty/non-numeric (a gh error), since create reports a real
# duplicate clearly, whereas edit on a missing PR would just fail.
PR_COUNT=$(gh pr list --head "<branch>" --state open --json number --jq 'length' 2>/dev/null)
if [ "${PR_COUNT:-0}" -gt 0 ] 2>/dev/null; then
gh pr edit "<branch>" --title "<title>" --body-file <tmp-body-file>
else
# No --base: gh pr create defaults the base to the repo's default branch, so the
# default-branch detection from Step 0 (which doesn't persist across Bash calls) isn't needed here.
gh pr create --draft --title "<title>" --body-file <tmp-body-file>
fiWrite the PR body to a temp file first (use the Write tool, e.g. under the system temp dir),
then pass it via --body-file.
test: failing test for <key> -- <short description>## Analyst's findings (summary)
> **Root cause:** <copied from analysis>
> **Affected files:**
> <copied from analysis>
## Replication test
**Test file:** `path/to/test_file.ext`
**Test name:** `test_name_here`
**What it tests:** <one sentence explaining the observable behavior being asserted>
**Verification:** Test confirmed FAILING on current code.
**Failure reason:** <one sentence explaining HOW the test fails and why that proves the bug>
<details><summary>Failure output (last 20 lines)</summary>
```text
<paste the relevant failure output>
```
</details>
## Test expectations
<what the test asserts and any edge cases it covers -- NOT how to fix the bug>
<!-- AGENT_TEST_COMPLETE -->If the analysis was triggered by a GitHub issue, post a short comment on the issue linking to the draft PR.
If the test cannot be made to fail for the right reason after 3 attempts, inform the developer
explaining what was tried and STOP. Do NOT open a PR or include the AGENT_TEST_COMPLETE
marker.
Gates for this skill follow ../quality-gates/gates/gate-model.md. test-driving-bugs is Tier 2 — it writes a failing reproduction test and stamps AGENT_TEST_COMPLETE unconditionally (in PR mode it also opens a draft PR; both paths require the full ship gate).
| Gate | Step / trigger | Tier | Primitives | Pass criteria | On-fail |
|---|---|---|---|---|---|
| Test-fails-right | after writing the test | T2-verify | P1 | The new test FAILS for the documented reason. Paste the failing run. | STOP; fix the test |
| Test-catches-bug | before opening the draft PR / stamping AGENT_TEST_COMPLETE | T2-ship | P2 + P3 | A fresh judge, given the .bug-analysis-<key>.md verbatim and the test diff, confirms the test actually exercises the bug (not trivially-passing, not always-failing). | STOP; do not stamp; fix and re-judge |
| 🚩 Red flag | Do instead |
|---|---|
| Test passes on the current (buggy) code | You're asserting the buggy behavior — flip the assertions to the expected behavior so it FAILS now |
| Copying production logic into the test | Call the real functions/classes from the source; test the actual code path |
| Test passes without touching the affected files | Exercise the affected code path from the analysis, not a lower-level abstraction it calls |
| Editing production code "to help the test" | This step writes tests only — production code is /opsmill-dev-fixing-bugs's job |
git add . / git add -A | Stage the test file(s) by name |
Opening the PR / writing AGENT_TEST_COMPLETE after a failed attempt | The marker is the "test ready" signal — only emit it once the test fails for the right reason |
© opsmill, 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/opsmill-dev-test-driving-bugs of opsmill/infrahub.
Open the folder on GitHubat commit 460d724
Opsmill Dev Test Driving Bugs 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 |
|---|---|---|---|---|---|---|
| Opsmill Dev Test Driving Bugs this skillopsmill/infrahub | 531 | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Systematic Debuggingforyourhealth111-pixel/Vibe-Skills | 3.6k | — | ~2.6k | Automated safety check: Pass | Apache-2.0 | |
| Systematic Debuggingtmdgusya/engineering-discipline | 125 | — | ~2k | Automated safety check: Pass | None | |
| Pester Failure AnalysisPowerShell/PowerShell | 56k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Foreman DebugVisionForge-OU/foreman | 443 | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Map Debugazalio/map-framework | 156 | — | ~4.6k | Automated safety check: Pass | MIT |
foryourhealth111-pixel/Vibe-Skills
Root-cause route for actual bugs, failing tests, build errors, crashes, stack traces, and unexpected behavior.
tmdgusya/engineering-discipline
A skill your agent uses when encountering any bug, test failure, or unexpected behavior.
PowerShell/PowerShell
Investigates failing Pester tests in PowerShell CI jobs by following a six-step workflow from pull request status to documented fix recommendations.
VisionForge-OU/foreman
Headless root-cause debugging loop for a Foreman worker whose tests, build, or acceptance check are failing — especially on a retry.
azalio/map-framework
Structured MAP debugging via decomposer, actor, and monitor agents.
azalio/map-framework
Structured MAP debugging via task-decomposer, actor, and monitor agents.
opsmill/infrahub
Analyzes recent CI failures on pull requests to identify flaky tests, using retry outcomes (failed attempt → green re-run) and cross-PR recurrence as evidence, and maintains a local longitudinal…
opsmill/infrahub
Audits internal (dev/) and external (docs/) documentation completeness for a feature, subject, or set of existing docs, maps changes indicated by the user, across Infrahub's documentation layers…
opsmill/infrahub
Stages and commits the current changes onto a safe working branch, enforcing branch discipline and optionally pushing upstream.
opsmill/infrahub
A skill your agent uses when you've fixed a bug, added a feature, or made any user-facing change in a project that uses Towncrier and need to record it for the changelog — before committing or…
opsmill/infrahub
Turns a single feature idea, improvement, or bug into ONE well-structured GitHub issue.
opsmill/infrahub
Synthesises the current conversation context into a Product Requirements Document and publishes it to GitHub (as a comment on a referenced issue, or a new issue).
Works with
Categories
Writes a single failing test that reproduces a bug after its root-cause analysis is complete, before any fix is written. Opsmill Dev Test Driving Bugs is an agent skill from opsmill/infrahub. Writes a single failing test that reproduces a bug after its root-cause analysis is complete, before any fix is written.
Opsmill Dev Test Driving Bugs fits situations like: : a bug has a completed root-cause analysis and you need the failing reproduction test; writing a test that proves a bug exists; the second step of the bug-fixing pipeline; : still triaging.
Run `npx skills add opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a claude-code`. Or copy the skill folder (.agents/skills/opsmill-dev-test-driving-bugs in opsmill/infrahub) into .claude/skills/opsmill-dev-test-driving-bugs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a codex`. Or copy the skill folder (.agents/skills/opsmill-dev-test-driving-bugs in opsmill/infrahub) into .agents/skills/opsmill-dev-test-driving-bugs 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 opsmill/infrahub --skill opsmill-dev-test-driving-bugs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/opsmill-dev-test-driving-bugs, .gemini/skills/opsmill-dev-test-driving-bugs, .github/skills/opsmill-dev-test-driving-bugs and .opencode/skills/opsmill-dev-test-driving-bugs in your project.
Going by SKILL.md and its folder, Opsmill Dev Test Driving Bugs needs the command-line tools its instructions call (git, gh, uv, npm, npx and ruff). Our summary lists: Python 3; Node.js. Compatibility (from SKILL.md): Works in any git repo with a test suite; discovers testing conventions from the OpsMill `dev/` layout with auto-detection fallback. The draft-PR step needs `gh` and a GitHub remote..
SKILL.md contains no URLs. Its commands use git, gh, uv, npm and 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.
Opsmill Dev Test Driving Bugs 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 4k tokens (SKILL.md is roughly 16k 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 Opsmill Dev Test Driving Bugs: Systematic Debugging (foryourhealth111-pixel/Vibe-Skills, 3.6k stars), Systematic Debugging (tmdgusya/engineering-discipline, 125 stars), Pester Failure Analysis (PowerShell/PowerShell, 56k stars) and Foreman Debug (VisionForge-OU/foreman, 443 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
opsmill (a GitHub organization) maintains it in opsmill/infrahub, which has 531 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 8, 2026.
Source: opsmill/infrahub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.