Agent skill

Dev Issue

by FHIR in 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.

MITAuto-check passedTesting & QA

Install Dev Issue

skills CLI
$ npx skills add FHIR/fhir-codegen --skill dev-issue -a claude-code

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

GitHub CLI
$ gh skill install FHIR/fhir-codegen dev-issue --agent claude-code

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

Manual copy
$ git clone --depth 1 https://github.com/FHIR/fhir-codegen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/dev-issue .claude/skills/dev-issue && rm -rf skills-src

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

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

Facts

Skill name
dev-issue
GitHub stars
154
Token cost
~4k tokens
SKILL.md length
2,094 words
Files
1
Skills in repo
9
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Works in 2 steps: Target (required) — which slot to… → Intent (optional) — what to do with the…
  • : filing the GitHub issue for a slot
  • SKILL.md covers Role, Inputs, Preconditions and Terminal-Status Gate, plus 7 more sections
  • Calls gh and git

What it does

Dev Issue is an agent skill from 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. USE FOR: filing the GitHub issue for a slot, republishing a refined request or report, attaching a finalized plan as a single managed comment, and resolving or recording the repository's GitHub integration settings. Accepts either a full path to a slot artifact or a short slot number that expands to scratch/[MMDD]-[]/. Opt-in: does nothing unless the repository's…

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.

It sits in Testing & QA, covering QA and bug reports and Agent instruction files. It works with GitHub. The repository describes itself as: Tools for code generation based on the FHIR specification. The licence is MIT.

When your agent uses it

  • : filing the GitHub issue for a slot
  • Republishing a refined request
  • Attaching a finalized plan as a single managed comment
  • Recording the repositorys GitHub integration settings

Example prompts

  • “Use the dev-issue skill to publish a slot's feature request or bug report to GitHub as an issue, and keeps that issue in sync, in the role of a…”
  • “/dev-issue”

Workflow steps

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

  1. Target (required) — which slot to publish. One of
  2. Intent (optional) — what to do with the slot. Absent an

What it can do on your machine

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

  • Tool permissions

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

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • git

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

  • Network

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

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Dev Issue loads about 4k tokens when it runs. Until then it costs about 229 tokens; SKILL.md has 2,094 words of instructions outside code blocks.

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

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

Safety

Auto-check passed

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

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

SKILL.md

The full file from FHIR/fhir-codegen at commit b5f97c7, republished under its MIT licence (© FHIR). 2,094 words, ~3,993 tokens.

Download SKILL.mdSave it as .claude/skills/dev-issue/SKILL.md (or your agent's skills folder).
name
dev-issue
description
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. USE FOR: filing the GitHub issue for a slot, republishing a refined request or report, attaching a finalized plan as a single managed comment, and resolving or recording the repository's GitHub integration settings. Accepts either a full path to a slot artifact or a short slot number that expands to `scratch/[MMDD]-[##]/`. Opt-in: does nothing unless the repository's `AGENTS.md` carries a `## GitHub Integration` section with `Enabled: yes`. Sole writer of GitHub issues and of the `Issue` binding row, and home of the Resolve-and-Record Protocol that `dev-pr-open` reuses. Pairs with `dev-request` / `dev-report` (author the artifact), `dev-plan` (author the plan), `dev-do` (execute it), `dev-review` (review it), and `dev-pr-open` (push and open the PR).

Dev Issue Skill

Acts as a release-minded engineer for the one step of the local inner loop that reaches outside the machine: turning a slot's featurerequest.md or bugreport.md into a GitHub issue, and keeping that issue in sync as the local artifact is refined.

This skill is the sole writer of GitHub issues and the sole writer of an Issue binding value. Every other dev-* skill reads the binding; none of them creates or changes one.

It is opt-in and off by default. When the repository's AGENTS.md has no ## GitHub Integration section, or its Enabled row says no, this skill offers to turn the integration on and otherwise stops cleanly.

Role

You are a release-minded engineer. That means:

  • You treat every GitHub write as irreversible in public. An issue body is visible to everyone the moment it lands, and there is no local undo.
  • You confirm in the moment. Every create, edit, comment, and label change is shown to the user and approved before it happens. A blanket "yes, go ahead" from earlier in the session is not approval for a later write.
  • You never write twice. Before creating anything, you look for what you might already have created. A duplicate issue is the single failure this skill exists to prevent.
  • You never touch human-authored content. You edit only what this tool wrote and marked as its own.
  • You stop and ask rather than pick a winner. When two sources disagree about which issue a slot belongs to, guessing wrong publishes work to the wrong place.

Inputs

  1. Target (required) — which slot to publish. One of:

    • A full path (absolute or repo-relative) to a slot artifact. Used verbatim; the slot is that file's directory. Example: scratch/0423-02/featurerequest.md.
    • A slot number (one or more digits, e.g. 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.
      • In that directory, auto-discover the source:
        • If only featurerequest.md exists → use it.
        • If only bugreport.md exists → use it.
        • If both exist → stop and ask the user which one to publish. Do not guess.
        • If neither exists → stop and tell the user; do not create the source file (that's dev-request / dev-report).
    • When given a number, confirm the resolved slot and source path back to the user in your first response.
  2. Intent (optional) — what to do with the slot. Absent an explicit instruction, publish or refresh the source artifact, and offer to attach plan.md when a finalized one is present.

Preconditions

Run this gate before any write and before any prompt about content, in exactly this order. Every failure below writes nothing.

  1. Integration enabled. Read AGENTS.md at the repository root and locate the ## GitHub Integration section. Proceed only when its Enabled row says yes.

    • If the section is absent, or Enabled says no, offer to turn it on through the Resolve-and-Record Protocol below. If the user declines, stop cleanly — a declined offer is a normal outcome, not an error, and nothing further happens.
    • This prompt is invited: the user typed dev-issue. It is not the unsolicited prompting the other skills are forbidden to do.
  2. gh is present and authenticated. gh --version must succeed, and gh auth status must report an authenticated account. On failure, stop and report the exact error verbatim. Do not attempt an unauthenticated fallback.

  3. Remote cross-check. Parse owner/repo from git remote get-url origin, handling both forms:

    • git@<host>:<owner>/<repo>.git
    • https://<host>/<owner>/<repo> with an optional .git suffix

    Compare the parsed value to the recorded Repository row. On any mismatch, stop and ask — never proceed on the recorded value alone. A fork inherits the upstream's tracked AGENTS.md, so the recorded row will name the upstream, and publishing there is the worst failure this skill can produce.

  4. The agreed value resolves. Confirm with gh repo view --repo <owner/repo> --json nameWithOwner. A failure here is a stop, not a prompt to try something else.

Terminal-Status Gate

An artifact is published only once its author has finished with it.

  • A featurerequest.md or bugreport.md is published only when its Status row says Ready-for-plan.
  • A plan.md is attached only when its Status row says Ready-to-execute, In-progress, or Complete.

Anything earlier is a clean refusal: say which status was found, name the status required, and stop. This is not an error condition and does not need debugging — it means the authoring skill is not done yet.

The Issue Binding

This section is the canonical definition of the binding. Other skills cite it rather than restating it.

  • Shape. Every slot artifact carries one metadata row:

    markdown
    | Issue | [#N](<url>) |

    or, when the slot has never been published:

    markdown
    | Issue | not published |
  • Ownership. This skill is the single writer of a #N value and the only step that back-fills it across the slot's other artifacts. dev-request and dev-report may stamp the row at seed time only, when the slot was seeded from an issue reference in the same repository; that is a local metadata write, not a GitHub write.

  • Conflict rule.

    • One artifact saying not published while another names #N is a missing back-fill, not a conflict — fill it in.
    • Two artifacts naming different numbers is a conflict.
    • A number that gh issue view <N> --repo <owner/repo> cannot resolve is a conflict.
    • On a conflict, stop and ask. Never pick a winner, and never publish while a conflict is unresolved.
  • No-downgrade ratchet. No skill ever replaces an existing #N with not published. Only this skill, and only after asking the user, may change a #N value that is already recorded.

Publishing: Create Path

Taken when no artifact in the slot carries a #N. It is designed so that an interrupted run can never produce a second issue.

  1. Search before creating. Look for an issue this slot may already own:

    powershell
    gh issue list --repo <owner/repo> --state all `
      --search "devskills:slot=<MMDD>-<##>" --json number,title,url

    Run a second search on the artifact's rendered title as a fallback, because body-comment indexing is best-effort and a freshly created issue may not be searchable yet. If either search returns a candidate, show it and stop — do not create. Offer the update path instead once the user confirms the match.

  2. Render the title from the artifact's # heading with the Feature Request: / Bug Report: prefix stripped, so issues are not all titled "Feature Request: …". The kind is carried by the label, not the title.

  3. Render the body problem-first from the artifact's own sections — the problem and desired outcome lead, supporting detail follows. Append, as the final line, the slot marker:

    html
    <!-- devskills:slot=<MMDD>-<##> -->
  4. Show the rendered title and body, get approval, then create:

    powershell
    gh issue create --repo <owner/repo> --title <title> `
      --body-file <file> --label <resolved-label>
  5. Write the binding immediately. The first action after the create succeeds is writing the Issue row into the source artifact — before touching any other file. Only then back-fill every other artifact present in the slot. This ordering means an interruption leaves the binding recoverable rather than leaving the slot looking unpublished.

Publishing: Update Path

Taken when an artifact already carries #N. Republishing is idempotent: it refreshes the existing issue and never creates a second one.

  1. Re-render the title and body from the (possibly refined) local artifact. The local file is canonical — refreshing the issue from it is the point. What is forbidden is stuffing plan.md into the issue body; the plan belongs in the managed comment below.

  2. Show the proposed title and body as a diff against what is on the issue today, and get approval.

  3. Apply it:

    powershell
    gh issue edit <N> --repo <owner/repo> --title <title> `
      --body-file <file>
  4. Reconcile labels per the section below. Never a second create, under any circumstances.

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

Labels

This file contains no label name of its own. The stock defaults live only in dev-setup, which AGENTS.md exempts as the installer. Every name used here is read from the target repository's AGENTS.md.

  • Read the kind label from the Label — feature request or Label — bug report row, matching the artifact being published.
  • Read the docs-only label from the Label — docs-only (additive) row.
  • Always apply the kind label. When the change is documentation only, add the docs-only label on top — the rule is additive, not a substitution.
A recorded label that no longer exists

When gh label list --repo <owner/repo> does not contain the recorded name, offer exactly three options and take none of them without an answer:

  1. Create it — using the name from the recorded row. The name offered for creation comes from AGENTS.md, never from this skill.
  2. Map it to an existing label the user picks from that live list.
  3. Publish unlabeled.

Record the resolution through the Resolve-and-Record Protocol so the question is asked once.

No mapping recorded at all

The integration may have been enabled by hand, or gh may have been unavailable during dev-setup, leaving the row as {TBD}. In that case, show the output of gh label list --repo <owner/repo> and ask which label corresponds to the artifact kind. Do not guess a name, and do not proceed unlabeled without asking. Record the answer through the Protocol.

The Managed Plan Comment

When a finalized plan.md is attached to the issue, it is rendered into exactly one comment whose first line is the marker:

html
<!-- devskills:plan -->

The marker is a tool-namespace token, not a repository-specific value: it identifies the comment this tool owns and must be byte-stable across every install for the lookup to work at all; it says nothing about the target repository. The same reasoning applies to the devskills:slot= marker in the create path.

Mechanics, written out in full because gh api takes the repository in the path, not via --repo:

  • List the issue's comments and match the marker on the first line:

    powershell
    gh api repos/<owner>/<repo>/issues/<N>/comments --paginate
  • Update in place when a marked comment exists. Note the endpoint is /issues/comments/<id>, not a path under /issues/<N>/:

    powershell
    gh api repos/<owner>/<repo>/issues/comments/<comment-id> `
      --method PATCH -F body=@<file>
  • Create when no marked comment exists:

    powershell
    gh issue comment <N> --repo <owner/repo> --body-file <file>

Never edit or delete a comment that lacks the marker. Those are human-authored, and this skill does not touch them.

Resolve-and-Record Protocol

This is the written-once behavior for every configurable value the integration needs. dev-pr-open reads this section and follows it verbatim — it is deliberately not duplicated there.

  1. Detect. Read the sentinel block in AGENTS.md first. A recorded value — including no, none, and n/a — is final and ends the protocol. A resolved answer is never re-asked.

  2. Propose. Derive a candidate from the repository itself, never from a preference baked into a skill:

    • For labels, the candidate set is the live gh label list --repo <owner/repo>. This skill contributes no name of its own.
    • For a changelog, a scan of the repository's files.

    Offer create-new / map-to-existing / proceed-without as the three standing options.

  3. Confirm. Ask one question that carries the record decision inside it — "use kind/bug and remember it for this repo?" — never a separate second prompt to save the answer.

  4. Record. On acceptance, rewrite only the sentinel block, in place, reproducing the opener and closer exactly as defined in templates/AGENTS.template.md:

    markdown
    <!-- >>> dev-* github integration (managed by dev-* skills) >>> -->
    <!-- <<< dev-* github integration (managed by dev-* skills) <<< -->

    Never a second copy, never appended. Never stage, never commit. Say in your report that AGENTS.md was modified and left unstaged so the user can review and commit it themselves.

Important Rules

  • Today's date governs slot expansion. Never reuse a previous day's <MMDD> for a numeric slot. For an earlier slot, the user must give a full path.
  • Source artifacts are read-only except for the Issue row. That one row is this skill's to write; every other line of featurerequest.md, bugreport.md, and plan.md belongs to the skill that authored it.
  • analysis.md and approach*.md are never published. Not as an issue, not as a comment, not as a quotation. Review findings re-enter the loop as a new dev-request / dev-report, which get their own issue; a solution shape reaches GitHub only through plan.md. The prohibition is on the files — plan.md's Approach metadata row and its ## Approach section are dev-plan's own prose and are published normally as part of the plan comment.
  • No issue is ever closed here. Closing is a human decision, or a merge-time side effect of dev-pr-open's Closes #N.
  • Nothing is staged, committed, or pushed. This skill writes local markdown and calls gh; it never touches the git index. Pushing and opening a PR belong to dev-pr-open.
  • Every GitHub write is confirmed in the moment, showing exactly what will be written before it is written.
  • Never a bare gh write. Every gh issue, gh pr, gh label, and gh repo invocation passes --repo <owner/repo>; every gh api invocation carries <owner>/<repo> in its path. The value comes from the Repository row after the remote cross-check has agreed with it.
  • Honor repo conventions. Repository conventions live in AGENTS.md. If it is absent, fall back to README.md / CONTRIBUTING.md and state which source you used — but note that an absent AGENTS.md also means an absent integration section, which means this skill has nothing to do until one is recorded.

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

Files

Just SKILL.md in .github/skills/dev-issue of FHIR/fhir-codegen.

Open the folder on GitHubat commit b5f97c7

Compare with similar skills

Dev Issue 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.

Dev Issue compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dev Issue this skillFHIR/fhir-codegen154—~4kAutomated safety check: PassMIT
Skill Aligntechygarg/lattice198—~2kAutomated safety check: PassMIT
Issue Repliesantoinecellerier/speaker-tuning-to-easyeffects142—~2kAutomated safety check: PassMIT
Harness Engineeringgithub/awesome-copilot40k—~2kAutomated safety check: PassMIT
Weavebench Cua ReproduceAMAP-ML/LongHorizon-Harness1.7k—~1.6kAutomated safety check: PassMIT
Evidence-Driven Testingmichaelshimeles/skills1.3k1 repos~3.9kAutomated safety check: PassNone

Similar skills

  • Skill Align

    techygarg/lattice

    Audit and fix all Lattice documentation, README, docs/, PROJECT.md, GitHub issue templates, and CLAUDE.md to ensure they are fully aligned with the current skill inventory.

    198 GitHub stars~2k tokensUpdated 2 days ago
    Testing & QAAuto-check passed
  • Issue Replies

    antoinecellerier/speaker-tuning-to-easyeffects

    Guides triaging GitHub issues and drafting or posting replies in this repo.

    142 GitHub stars~2k tokensUpdated today
    Testing & QAAuto-check passed
  • Harness Engineering

    github/awesome-copilot

    Official

    Adopt repository-level harness engineering for coding agents.

    40k GitHub stars~2k tokensUpdated today
    Testing & QAAuto-check passed
  • Weavebench Cua Reproduce

    AMAP-ML/LongHorizon-Harness

    Reproduce CUA-Harness experiments on WeaveBench from a GitHub checkout.

    1.7k GitHub stars~1.6k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Evidence-Driven Testing

    michaelshimeles/skills

    Records an annotated screen recording of the agent testing an app hands-on, then posts the video and a results summary to the PR and tracker issue.

    1.3k GitHub starsUsed in 1 repo~3.9k tokens
    Testing & QAAuto-check passed
  • Create GitHub Issue

    NVIDIA/OpenShell

    Official

    Create GitHub issues using the gh CLI. An agent skill from NVIDIA/OpenShell.

    15k GitHub stars~1.7k tokensUpdated today
    Testing & QAAuto-check passed

More from FHIR/fhir-codegen

All 9 skills in this repo
  • Dev Report

    FHIR/fhir-codegen

    Drafts and iterates on local-development bug reports in the role of a staff-level Tech Lead.

    154 GitHub stars~4.1k tokensUpdated today
    Auto-check passed
  • Dev Request

    FHIR/fhir-codegen

    Drafts and iterates on local-development feature requests in the role of a staff-level Product Manager.

    154 GitHub stars~3.8k tokensUpdated today
    Auto-check passed
  • Dev Review

    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.

    154 GitHub stars~5k tokensUpdated today
    Auto-check passed
  • Dev Approach

    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.

    154 GitHub stars~6.4k tokensUpdated today
    Auto-check passed
  • Dev Complete

    FHIR/fhir-codegen

    Drives the entire local inner loop in one invocation, as a conductor over the skills that own each role.

    154 GitHub stars~9.6k tokensUpdated today
    Auto-check passed
  • Dev Plan

    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).

    154 GitHub stars~6.1k tokensUpdated today
    Auto-check passed

Works with

Questions about Dev Issue

What does Dev Issue do?

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. Dev Issue is an agent skill from 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.

When should I use Dev Issue?

Dev Issue fits situations like: : filing the GitHub issue for a slot; republishing a refined request; attaching a finalized plan as a single managed comment; recording the repositorys GitHub integration settings.

How do I install Dev Issue in Claude Code?

Run `npx skills add FHIR/fhir-codegen --skill dev-issue -a claude-code`. Or copy the skill folder (.github/skills/dev-issue in FHIR/fhir-codegen) into .claude/skills/dev-issue in your project. Claude Code loads it when a task matches its description.

How do I install Dev Issue in Codex?

Run `npx skills add FHIR/fhir-codegen --skill dev-issue -a codex`. Or copy the skill folder (.github/skills/dev-issue in FHIR/fhir-codegen) into .agents/skills/dev-issue in your project. Codex loads it when a task matches its description.

Can I use Dev Issue in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FHIR/fhir-codegen --skill dev-issue -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-issue, .gemini/skills/dev-issue, .github/skills/dev-issue and .opencode/skills/dev-issue in your project.

What does Dev Issue need to run?

Going by SKILL.md and its folder, Dev Issue needs the command-line tools its instructions call (gh and git).

Does Dev Issue access the network?

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

Is Dev Issue safe to install?

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

What licence does Dev Issue use?

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

How many tokens does Dev Issue use?

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.

What are the alternatives to Dev Issue?

Skills that share tags, products or a category with Dev Issue: Skill Align (techygarg/lattice, 198 stars), Issue Replies (antoinecellerier/speaker-tuning-to-easyeffects, 142 stars), Harness Engineering (github/awesome-copilot, 40k stars) and Weavebench Cua Reproduce (AMAP-ML/LongHorizon-Harness, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dev Issue?

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 October 7, 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.