Bad
stephenleo/bmad-autonomous-development
BMad Autonomous Development — orchestrates parallel story implementation pipelines.
Explores three competing solution shapes for one request in the roles of three isolated staff-level Engineering Leads, then has a fourth skeptical judge sub-agent select one on the record.
$ npx skills add FHIR/fhir-codegen --skill dev-approach -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install FHIR/fhir-codegen dev-approach --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/FHIR/fhir-codegen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/dev-approach .claude/skills/dev-approach && 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 "dev-approach" agent skill from https://github.com/FHIR/fhir-codegen/tree/main/.github/skills/dev-approach into .claude/skills/dev-approach/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-approach", 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/FHIR/fhir-codegen/tree/main/.github/skills/dev-approachType 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 FHIR/fhir-codegen --skill dev-approach -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install FHIR/fhir-codegen dev-approach --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FHIR/fhir-codegen.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/dev-approach .agents/skills/dev-approach && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dev-approach" agent skill from https://github.com/FHIR/fhir-codegen/tree/main/.github/skills/dev-approach into .agents/skills/dev-approach/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-approach", 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 FHIR/fhir-codegen --skill dev-approach -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install FHIR/fhir-codegen dev-approach --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FHIR/fhir-codegen.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/dev-approach .cursor/skills/dev-approach && 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 "dev-approach" agent skill from https://github.com/FHIR/fhir-codegen/tree/main/.github/skills/dev-approach into .cursor/skills/dev-approach/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-approach", 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/FHIR/fhir-codegen.git --path .github/skills/dev-approach--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 FHIR/fhir-codegen --skill dev-approach -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install FHIR/fhir-codegen dev-approach --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FHIR/fhir-codegen.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/dev-approach .gemini/skills/dev-approach && 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 "dev-approach" agent skill from https://github.com/FHIR/fhir-codegen/tree/main/.github/skills/dev-approach into .gemini/skills/dev-approach/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-approach", 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 FHIR/fhir-codegen dev-approachInstalls 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 FHIR/fhir-codegen --skill dev-approach -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/FHIR/fhir-codegen.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/dev-approach .github/skills/dev-approach && 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 "dev-approach" agent skill from https://github.com/FHIR/fhir-codegen/tree/main/.github/skills/dev-approach into .github/skills/dev-approach/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-approach", 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 FHIR/fhir-codegen --skill dev-approach -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install FHIR/fhir-codegen dev-approach --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FHIR/fhir-codegen.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/dev-approach .opencode/skills/dev-approach && 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 "dev-approach" agent skill from https://github.com/FHIR/fhir-codegen/tree/main/.github/skills/dev-approach into .opencode/skills/dev-approach/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dev-approach", 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.
dev-approachExplores three competing solution shapes for one request in the roles of three isolated staff-level Engineering Leads, then has a fourth skeptical judge sub-agent select one on the record.
Dev Approach is an agent skill from FHIR/fhir-codegen. Explores three competing solution shapes for one request in the roles of three isolated staff-level Engineering Leads, then has a fourth skeptical judge sub-agent select one on the record. USE FOR: deciding a solution's shape before any plan exists; regenerating, refining, or re-judging an existing set of approaches. Accepts either a full path to a featurerequest.md / bugreport.md or a short slot number that expands to scratch/[MMDD]-[]/ and auto-discovers the source there. Optional maxsubagents (default 3) caps…
Its SKILL.md is about 6.4k 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 Agent Workflows, covering Subagents. It works with GitHub. The repository describes itself as: Tools for code generation based on the FHIR specification. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b5f97c7. 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 markdown).
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.
Dev Approach loads about 6.4k tokens when it runs. Until then it costs about 226 tokens; SKILL.md has 3,201 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 FHIR/fhir-codegen at commit b5f97c7, republished under its MIT licence (© FHIR). 3,201 words, ~6,402 tokens.
.claude/skills/dev-approach/SKILL.md (or your agent's skills folder).Acts as three isolated staff-level Engineering Leads and one
skeptical judge for local development work in this repository.
Reads a featurerequest.md or a bugreport.md, produces three
independently-authored solution shapes — approach-a.md,
approach-b.md, approach-c.md — and then a judgment, approach.md,
that selects one of them on the record.
This skill sits between dev-request / dev-report and dev-plan. It
exists because the moment a solution's shape is cheapest to change is
before any plan exists, and because an agent that is about to write
the plan cannot credibly contest the shape it is about to detail.
The step is optional. A slot with no approach.md gets exactly the
dev-plan behavior it had before this skill existed.
This skill builds nothing. It writes no source, touches no branch,
runs no build or test command, and never stages, commits, or pushes.
Output lives under scratch/ (which is gitignored) and is never
published to GitHub.
This skill plays four roles: three authors who never see one another, then a judge who never authors.
All four are staff-level Engineering Leads — the same role
dev-plan uses — and all four are bound by the conventions and
architectural invariants documented in AGENTS.md. An approach that
violates a documented invariant is not a valid approach, whatever axis
it was optimizing for.
You are looking for the smallest change that satisfies the request. Your concerns:
You are explicitly allowed to be inelegant. Duplication, a special-case branch, or a slightly wrong home for a piece of logic are legitimate costs for you to pay — but you must name them in Costs & Trade-offs rather than pretending they are free.
You are looking for the right layering and the right boundaries. Your concerns:
You are explicitly allowed to be larger. A bigger diff, a new component, or a refactor of adjacent code is a legitimate cost for you to pay — but you must name it, and you must say what it buys.
You are told what A and B are optimizing for — minimum change and cleanest architecture respectively — so that you do not duplicate either. You are never shown their output.
Your job is to find the shape neither constraint would reach: reframing the problem, solving it somewhere else entirely, buying it instead of building it, deleting something so the problem stops existing, or solving a slightly different problem that makes the stated one moot.
You are bound by AGENTS.md exactly as A and B are. "Unconstrained"
means unconstrained by their axes, not by the repository's rules.
You read the three approaches as written and select exactly one. Your concerns:
You never author a fourth design. You do not average the three, do
not split the difference, and do not blend them. Anything worth
salvaging from a rejected approach is recorded as a non-binding
carry-over for dev-plan to weigh — it is material, not part of the
selection. Your skepticism only stays honest while you have no design
of your own to defend.
Source (required) — where to read the request. One of:
featurerequest.md or bugreport.md. The approach files are
written in the same directory as the source.2, 02, 14).
Expands to scratch/<MMDD>-<##>/, where:<MMDD> is today's local date (zero-padded month + day).<##> is the slot number, always zero-padded to two digits.featurerequest.md exists → use it.bugreport.md exists → use it.dev-request / dev-report).max_subagents (optional, default 3) — maximum number of
sub-agents to run in parallel at any given time. This is a
concurrency ceiling, not a total ceiling. 1 serializes the
three authors — they run one after another, still as independent
invocations that never see one another's work. Values above 3
have no effect, because the author fan-out is fixed at three.
Optional focus — free-form constraints or context from the user ("this has to ship this week", "assume the storage layer is being replaced anyway"). Give it to all three authors equally, weighted the same way. Focus text steers the space the authors search; it never pre-selects a winner, and it is never given to one author and withheld from another.
The source request file (featurerequest.md / bugreport.md) is
read-only to this skill. You may read it freely; you must not
modify, rename, or delete it. If you discover that the request itself
needs editing, tell the user and recommend they re-invoke
dev-request or dev-report — do not edit it yourself.
The same applies to any sibling plan.md or analysis.md. This skill
writes exactly four files and no others.
Resolve paths. Determine the source path and all four output
paths (approach-a.md, approach-b.md, approach-c.md,
approach.md). Echo every one of them.
Read the source in full, then read AGENTS.md at the repository
root. AGENTS.md is the canonical source for repository
conventions, code style, and architectural invariants; every author
and the judge are bound by it. If it is absent, fall back to
README.md / CONTRIBUTING.md and state in your output which
source you used. Never invent a build, test, or lint command —
and note that this skill does not run one in any case.
Re-invocation check. If any approach*.md already exists in the
slot, stop and follow § Re-Invocation Modes before doing anything
else. Do not overwrite silently.
Write approach.md's skeleton, then run the triviality check.
Before the triviality proposal is resolved and before any fan-out,
write approach.md carrying nothing but its metadata table — with
| Selected | {TBD: judgment pending} | — an empty ## Notes
section, and the in-progress line § Judgment File Format
prescribes. Record the step-3 re-invocation-mode decision and this
step's triviality decision into that ## Notes section as each one
is made. Then form a view on whether the request warrants three
approaches, and follow § Triviality Check. That view is a proposal
to the user, never a decision you make alone.
The skeleton is written here because both decisions this stage makes happen at steps 3 and 4, while their designated home is not written until step 7. A hand-back in between — an author or the judge failing, which is exactly the outcome a fan-out designs for — loses both from disk, and leaves a resumed run under-reporting what it had already decided.
Fan out the three authors as isolated sub-agents, honoring
max_subagents. Each writes its own file directly. See
§ Sub-Agent Use.
Run the judge as a separate sub-agent, only after all three authors have finished. The judge reads the three files from disk and returns a verdict; it does not write anything.
Fill in approach.md yourself, transcribing the judge's verdict
into the format below on top of the skeleton step 4 already
wrote: replace the {TBD: judgment pending} row with the
selection, drop the in-progress line, add the judgment sections, and
preserve whatever ## Notes already holds by appending to it
rather than writing the file from nothing. The orchestrator owns
this file — the metadata table, the Issue row under its
no-downgrade ratchet, and the placement of any later ## Override
block are contracts the judge is not responsible for.
Offer the user an override. See § User Override. Declining is the normal outcome and changes nothing.
Report back with: the resolved source path, the four output
paths, the selected approach and a one-line reason, the count of
disbelieved claims, and any carry-overs. Close by offering
dev-plan <slot> as the next step.
Each author writes exactly one file — approach-a.md, approach-b.md,
or approach-c.md — in this format:
# Approach {A|B|C}: {short title naming the shape, not the request}
| | |
|-|-|
| Slot | `scratch/<MMDD>-<##>/` (or full path) |
| Source | `featurerequest.md` / `bugreport.md` (read-only) |
| Issue | [#N](<url>) — or `not published` |
| Optimizing for | minimum change / cleanest architecture / unconstrained |
| Created | {YYYY-MM-DD} |
## Shape
{2–4 sentences. The idea, stated so a reader can hold it in their head.
If it takes a page to say what the shape is, it is not yet a shape.}
## How It Works
{The mechanism. Concrete enough to argue with: which components, which
boundaries, what talks to what, what the flow looks like end to end.}
## What Changes
- `{path/to/file-or-area}` — {what changes here, at a high level}
- `{…}` — {…}
{Name real paths. "The relevant module" is not a shape, it is a hope.}
## Claims
- **Blast radius:** {how much of the repository this touches, and what
is downstream of it}
- **Complexity:** {what a maintainer has to understand that they do not
have to understand today}
- **Risk:** {what is most likely to go wrong, and how it would show up}
- **Reversibility:** {how hard this is to back out once shipped}
## Costs & Trade-offs
- {What this approach knowingly pays. Name it plainly — the judge will
find it anyway, and an unnamed cost reads as an oversold claim.}
## What This Rules Out
- {Options this shape forecloses, and options it keeps open. This is
where a large-but-flexible shape earns its size.}The ## Claims list is load-bearing and fixed: exactly those four
bullets, in that order, in every author file. They are the falsifiable
self-assessments the judge attacks. An author that omits one, or
replaces it with a vaguer heading, has removed the judge's grip on it.
The Issue row appears on all three author files. dev-issue
defines the binding as belonging to every slot artifact and names
itself the only step that back-fills it, so carrying the row makes
these files covered by that existing rule with no change to
dev-issue. Stamp it from the source under the no-downgrade
ratchet: copy an existing #N, never replace a #N with
not published, and never invent one.
You — the orchestrator, not the judge — write approach.md:
# Approach Selection: {short title, mirroring the source}
| | |
|-|-|
| Slot | `scratch/<MMDD>-<##>/` (or full path) |
| Source | `featurerequest.md` / `bugreport.md` (read-only) |
| Issue | [#N](<url>) — or `not published` |
| Selected | {A / B / C} — {short title of the selected approach} |
| Mode | contested / collapsed |
| Created | {YYYY-MM-DD} |
## Selected
{One paragraph. Which approach won and what shape the plan is therefore
being built on. A reader who stops here should know what happens next.}
## Why This One
{Justified **against** the other two, one comparison at a time. Not
"A is simple" but "A over B because…" and "A over C because…". If a
comparison cannot be made, the approaches were not different enough,
and that is worth saying.}
## Claims I Did Not Believe
- **{Approach} — {which claim}:** {why the self-assessment was
optimistic, and what the honest version looks like.}
{At least one entry. Three approaches that all assessed themselves
accurately is a finding in itself — say so explicitly rather than
leaving the section empty.}
## Carry-Overs (non-binding)
- **From {approach}:** {what is worth keeping, and why it survives the
rejection of the approach it came from.}
{**Non-binding.** These are material for `dev-plan` to weigh, not part
of the selection. `dev-plan` adopting one is a plan decision that gets
its own justification; declining one needs no defence.}
## Rejected
### Approach {X}: {title}
{One paragraph. What it got right, and the specific reason it lost —
stated so a later "why didn't we just do X?" has a written answer.}
### Approach {Y}: {title}
{Same shape.}
## Notes
{Free-form. Ordering effects, an approach that was closer than it
looks, anything the judge flagged that does not fit above.}
## Override
{**Present only when the user disagrees with the selection.** Appended
below the judge's call, never in place of it.
- **User selected:** {A / B / C}
- **Reason:** {the user's reason, in their terms}
- **Recorded:** {YYYY-MM-DD}
When this section is present it is **authoritative** — `dev-plan` plans
from it — and everything above it stays readable, so the disagreement
survives on the record.}A file with no ## Selected section is an in-progress skeleton, not
a selection. Workflow step 4 writes that skeleton before any fan-out,
so this stage's decisions have a durable home from the moment they are
made; step 7 fills the judgment in on top of it. The skeleton carries
the metadata table with | Selected | {TBD: judgment pending} |, an
empty ## Notes section, and — immediately under the title, where no
reader can miss it — this line:
> **In progress.** The judge has not run yet. This file is not a
> selection; do not plan from it.The marker is not decoration. dev-plan tests for the presence of
approach.md to decide it has a decided shape to plan from, so a
skeleton left behind by a hand-back between steps 4 and 7 would
otherwise read as a selection with nothing to select. The missing
## Selected heading is the machine-readable half of the answer; the
line above is the half a human sees first.
max_subagents allows. Each one is given: the full source text, the
conventions and architectural invariants from AGENTS.md, the user's
focus text if any, its own axis, and its own output path — and
nothing else.approach*.md other than its own. This is
the whole point of fanning out: if the authors collapse into one, you
get one idea with the illusion of three.max_subagents is 1. It runs only after all three authors have
finished; it reads the three files from disk; it is not told which
axis produced which file, so it must attack the claims each file
makes about itself rather than the label on it.approach.md. A judge that owns the file is one prompt away
from editing its own verdict into a fourth design.max_subagents. Never run more than max_subagents
sub-agents concurrently. Serializing changes the wall clock, never
the isolation.Before fanning out, read the source and form a view on whether it warrants three approaches.
When you judge it trivial, say so once, with your reason, and offer to produce a single approach instead. This is a proposal, never a decision: the user accepts or declines, and declining runs the full three-way fan-out. Never collapse silently, and never re-offer in the same pass.
The known cost is that a triviality call made before any design work is itself a claim about the solution's shape. Keeping the decision with the user, and requiring the reason to be stated, is what bounds it.
A collapsed slot has the same file shape as a contested one:
approach-a.md is still written, in the full format above.approach-b.md and approach-c.md are not written.approach.md records Mode: collapsed, names the stated reason in
its Notes, and leaves ## Rejected empty with a one-line note that
there was nothing to reject.Downstream skills therefore have one contract, not two, and the triviality claim lands where a later reader can see it was a choice rather than an oversight.
First, rule out an interrupted first run. An approach.md with no
## Selected section and no author files beside it is the skeleton
workflow step 4 writes, left behind by a hand-back before the judge
ran. That is an interrupted first run, not a re-invocation:
continue from step 4 without prompting. None of the three modes below
describes it, because all three presuppose that approach-a.md,
approach-b.md, and approach-c.md already exist.
Otherwise, when the slot already holds one or more approach*.md
files, do not guess what the user meant. Report what you found —
which files exist, what approach.md currently selects — and offer
exactly three modes:
Every mode rewrites the judgment in approach.md, and every mode
preserves its ## Notes section. That section is where this
stage's own decisions are recorded as they are made, so a rewrite that
discarded it would destroy the record a resumed run rebuilds from. An
existing ## Override block is different, and does not survive a
re-judgment: the user's disagreement was with a verdict that no longer
exists. Say so before you overwrite, and re-offer the override
afterwards.
This follows the precedent dev-plan sets for a slot holding both a
featurerequest.md and a bugreport.md: stop and ask.
After writing approach.md, offer the user the chance to disagree.
Make the offer once, in one sentence, naming the selection and the
alternatives:
"Selected {X}. If you'd rather build on {Y} or {Z}, say which and why and I'll record it."
Declining is the normal, fully-supported outcome. When the user declines, name the file path and stop.
When the user does disagree, append an ## Override section below
the judge's call recording their choice and their reason. Never edit
the judge's selection, never rewrite ## Why This One to agree, and
never delete the reasoning that led to the rejected verdict. When an
## Override block is present it is authoritative and dev-plan
follows it, while the judge's original call stays readable above it —
so the disagreement survives on the record rather than being
overwritten by it.
An override is a selection among the three approaches as written. A
user who wants a fourth shape wants a regenerate, and a user whose
reason is really a new constraint wants a revised source request — say
so and offer the right tool rather than recording a fourth design in an
## Override block.
featurerequest.md or
bugreport.md. If the request itself needs changing, recommend
re-invoking dev-request / dev-report. The same holds for a
sibling plan.md or analysis.md — this skill writes four files and
no others.<MMDD> for a numeric slot. For an earlier slot, the user must give
a full path.dev-plan to
weigh. Adopting one is a plan decision that gets its own
justification; declining one needs no defence.approach.md. The judge returns a verdict;
you transcribe it. The metadata table, the Issue row, and the
placement of any ## Override block are yours.approach-a.md, a real judgment, and Mode: collapsed with the
stated reason. Downstream skills get one contract, not two.approach*.md is never published to GitHub. Not as an issue, not
as a comment, not as a quotation in a PR body. These are internal
artifacts, exactly like analysis.md. A shape worth publishing
reaches GitHub through plan.md, which dev-issue attaches.Issue row, never invent it. Read it from the
source artifact under the no-downgrade ratchet: never replace an
existing #N with not published. Report a disagreement rather than
resolving it — that belongs to dev-issue under its § The Issue
Binding. This skill never calls a writing gh command.scratch/, which is gitignored on purpose.dev-plan
behavior they had before this skill existed. Never present
dev-approach as a gate on planning.AGENTS.md. Read it before any author or the judge starts, and bind
all four roles to its code-style rules and architectural invariants.
If it is absent, fall back to README.md / CONTRIBUTING.md and
state in your output which source you used. Where it is silent, match
the surrounding code rather than importing a preference from another
repository. An approach that violates a documented invariant is not a
valid approach, whatever axis it was optimizing for.max_subagents sub-agents in parallel.© FHIR, 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/dev-approach of FHIR/fhir-codegen.
Open the folder on GitHubat commit b5f97c7
Dev Approach 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 |
|---|---|---|---|---|---|---|
| Dev Approach this skillFHIR/fhir-codegen | 154 | — | ~6.4k | Automated safety check: Pass | MIT | |
| Badstephenleo/bmad-autonomous-development | 107 | — | ~7.7k | Automated safety check: Pass | MIT | |
| Reviewgetsentry/sentry-react-native | 1.8k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Comment SickoComfy-Org/ComfyUI_frontend | 2.1k | — | ~1.1k | Automated safety check: Pass | GPL-3.0 | |
| Akb Ingestdnotitia/akb | 161 | — | ~2k | Automated safety check: Pass | Custom licence | |
| agystack Runtime Setupjtaroreh/agystack | 103 | — | ~1.7k | Automated safety check: Pass | MIT |
stephenleo/bmad-autonomous-development
BMad Autonomous Development — orchestrates parallel story implementation pipelines.
getsentry/sentry-react-native
Three-axis review of the branch diff — Standards (this repo's documented standards + public API/bridge surface), Spec (the originating Linear/GitHub issue or PR), and Correctness (runtime bugs + the…
Comfy-Org/ComfyUI_frontend
Dispatches the comment-sicko subagent to hunt gratuitous comments in a PR/diff, triages its raw findings, and posts a polite, professional writeup.
dnotitia/akb
Ingest whatever you point at into an AKB vault — a local file, a web URL, a GitHub PR/release/commit, a Confluence page, or a Jira issue.
jtaroreh/agystack
Configures agystack's model tiers per role and its execution runtime, choosing between local subagents and Cloud Run jobs for large parallel swarms.
trpc-group/trpc-agent-go
Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments.
FHIR/fhir-codegen
Publishes a slot's feature request or bug report to GitHub as an issue, and keeps that issue in sync, in the role of a release-minded engineer.
FHIR/fhir-codegen
Drafts and iterates on local-development bug reports in the role of a staff-level Tech Lead.
FHIR/fhir-codegen
Drafts and iterates on local-development feature requests in the role of a staff-level Product Manager.
FHIR/fhir-codegen
Performs a two-track code-quality and QA review in the roles of a staff-level Engineering Lead and QA Lead, then synthesizes both critiques into a single analysis.md.
FHIR/fhir-codegen
Drives the entire local inner loop in one invocation, as a conductor over the skills that own each role.
FHIR/fhir-codegen
Builds and iterates on a detailed implementation plan in the role of a staff-level Engineering Lead, working from either a featurerequest.md (from dev-request) or a bugreport.md (from dev-report).
Works with
Categories
Explores three competing solution shapes for one request in the roles of three isolated staff-level Engineering Leads, then has a fourth skeptical judge sub-agent select one on the record. Dev Approach is an agent skill from FHIR/fhir-codegen. Explores three competing solution shapes for one request in the roles of three isolated staff-level Engineering Leads, then has a fourth skeptical judge sub-agent select one on the record.
Dev Approach fits situations like: : deciding a solutions shape before any plan exists; re-judging an existing set of approaches.
Run `npx skills add FHIR/fhir-codegen --skill dev-approach -a claude-code`. Or copy the skill folder (.github/skills/dev-approach in FHIR/fhir-codegen) into .claude/skills/dev-approach in your project. Claude Code loads it when a task matches its description.
Run `npx skills add FHIR/fhir-codegen --skill dev-approach -a codex`. Or copy the skill folder (.github/skills/dev-approach in FHIR/fhir-codegen) into .agents/skills/dev-approach 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 FHIR/fhir-codegen --skill dev-approach -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dev-approach, .gemini/skills/dev-approach, .github/skills/dev-approach and .opencode/skills/dev-approach in your project.
SKILL.md names no scripts, command-line tools or credentials: Dev Approach 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.
Dev Approach is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.4k tokens (SKILL.md is roughly 26k 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 Dev Approach: Bad (stephenleo/bmad-autonomous-development, 107 stars), Review (getsentry/sentry-react-native, 1.8k stars), Comment Sicko (Comfy-Org/ComfyUI_frontend, 2.1k stars) and Akb Ingest (dnotitia/akb, 161 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
FHIR (a GitHub organization) maintains it in FHIR/fhir-codegen, which has 154 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on August 30, 2026.
Source: FHIR/fhir-codegen on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.