skills / workflow
issue
- Kategorie
- workflow
- Lizenz
- MIT
- Quelle
- GitHub
Files findings, bug reports, audit results and review notes as GitHub issues — with the repository's own label taxonomy, one severity, code references that were actually read, and a duplicate check against the open and closed issues before anything is created. Use whenever someone wants an issue opened, a bug filed, a finding written up, an audit turned into tickets, or something put in the backlog (including German "mach ein Issue draus", "leg ein Ticket an", "schreib den Befund auf", "trag das ins Backlog ein", "das müssen wir festhalten"). Asks which repository when none can be derived from the working directory.
A finding — from a review, an audit, a user report, a tool — turned into a GitHub issue that someone can act on: verified against the code, categorized in the repository's own label set, given one severity, cross-referenced, and checked against the existing issues before anything is created.
gh issue create was never the hard part. Whether the claim is true, whether
it is already filed, and how bad it really is — that is.
Architecture
skills/workflow/issue/
├── SKILL.md # repo → verify → duplicates → prioritize → categorize → write → reference → create
├── references/
│ ├── taxonomy.md # the four label axes, severity rubric, bootstrap set
│ └── anatomy.md # title convention, body sections, worked examples
└── scripts/
└── package.sh # builds dist/issue.zip
No collector: every input is one gh or rg call away, and the skill is the
judgment applied to their output.
Options
| Option | Default | Effect |
|---|---|---|
| --repo owner/name | derived from cwd | File into another repository |
| --dry-run | off | Render title, labels and body — create nothing |
| --label a,b | – | Extra labels on top of the derived ones |
| --campaign <name> | – | Shared origin label for a batch of findings |
There is deliberately no flag to skip the duplicate check.
The interesting problem
Four failure modes, none of which is about the command:
-
The duplicate you do not find. GitHub's issue search is token-based, not fuzzy —
Event-Schemaandstructured datanever find each other, and the same defect gets described in three vocabularies by three people. So the check is three passes, not one: the words of the finding, the file path the fix will touch, and the domain label. The path pass is the one that actually hits, because vocabularies differ and files do not. And closed issues are searched too: the same defect found again is a regression, which is a different issue than a duplicate. -
Severity inflation. Everything feels urgent while you are looking at it. A backlog where 80 % is
sev:highis unsorted, with extra steps. Two guards:sev:mediumis where a finding starts, and anything above it needs a sentence in the body naming the damage and who takes it. If that sentence cannot be written, the label was wrong. -
The unverified claim in the voice of a finding. An issue is a claim about a codebase, so the file gets opened, the lines get quoted, the count gets run. Where that is impossible — a user report, a tool's output — the body says so and the
verifiedlabel stays off. "Reported, not yet reproduced" is a usable issue; a guess formatted like a finding costs someone an afternoon. -
The secret you paste in as evidence. Logs, URLs and screenshots carry tokens, session ids and customer names, and an issue outlives the private repo it was filed in. They come out — and the body says that they were removed, so the next person does not go looking for them.
The batch case has its own trap: five findings become five issues, never one bundle. A bundle gets closed once, and the four defects nobody looked at go with it.
Degradation
gh missing or unauthenticated: reported at the start, before any work is
done against a repo that was never reachable. No GitHub remote, or several
that disagree: the skill asks which repository instead of guessing — a
correct issue in the wrong backlog is invisible. Labels missing from the
taxonomy: it asks before creating them, and files with what exists rather
than inventing a private scheme. Cause or fix genuinely unknown: filed as
open, marked as open.
Scope
Ends at a filed issue. It does not implement, assign, prioritize a sprint or close anything — a duplicate gets a comment on the surviving issue, never a close.