issue-assessment — triage a gflow-cli issue honestly
SkillAI & modelsUse when triaging a GitHub issue for gflow-cli, a reporter's bug claim, a freshly-filed issue, or deciding whether and how to act on one. Also use when an autonomous agent (hermes-ops) picks up a labelled issue. Read-only: produces a verdict, an end-to-end-verifiability judgment, and a reporter-facing reply. Does not modify code or post anything on its own.
Use issue-assessment — triage a gflow-cli issue honestly in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add issue-assessment — triage a gflow-cli issue honestly and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the issue-assessment skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by ffroliva/gflow-cli in skills/issue-assessment/SKILL.md and read by Ahel’s review.
Read-only conductor. Verify the reporter's claim against the code, tests, docs,
KNOWN_ISSUES.md, and auto-memory; classify it; judge whether it can be
verified end-to-end in the current environment; and draft a reply. The output
is a standard artifact a human or the issue-resolve skill can act on.
Core principle: never assert more than the evidence supports. A claim is
CONFIRMED only with line-level code evidence or a reproduction; a fix is
"verified" only after running it on the affected surface. Honest
"can't verify here" beats a false green check — a bounced fix costs more trust
than an accurate "not yet."
When to invoke
- A new or updated GitHub issue needs a verdict before anyone spends effort.
- An autonomous run (hermes-ops) reacts to an issue labelled for triage.
- You're about to "just fix" a reported bug — assess first; the scope decision
(reply-only vs hand to
issue-resolve) depends on this.
Skip for: issues that are obviously feature requests routed elsewhere, or already-triaged issues entering implementation.
Invocation
/gflow:issue-assessment <issue number or URL>
This repo's skills/*/SKILL.md are plain Markdown — invoke by reading the
file (via the .claude/commands/gflow/* wrapper), never Skill(skill=...).
Protocol
1. Ingest
gh issue view <N> --json title,body,comments,labels,author,state. Extract: the
claimed symptom, environment (OS, version, install method), exact repro steps,
and any logs/error classes the reporter pasted.
2. Verify (read-only)
Dispatch a search/Explore agent (keep your own context clean) to corroborate or refute the claim against the real tree. Always check, in order:
- the source path(s) the symptom implicates — cite
file_path:line_number; KNOWN_ISSUES.md(is this Open / Mitigated / Resolved already?);- open issues/PRs (
gh pr list,gh issue list) for duplicates or in-flight fixes; - auto-memory for prior context on the surface.
Disprove parts of the reporter's framing where the code says otherwise (e.g.
browser_engine: playwrightis the engine axis, not the channel) — a precise correction is more useful than agreement.
Name the affected SURFACES, not just the affected code. A reporter hits one
surface; the defect usually spans both. gflow ships most capabilities twice — CLI
command and MCP tool — so state explicitly whether the issue reproduces on the CLI,
on the MCP tool, or on both, and whether a fix in one automatically fixes the other
(it does when both route through the same transport; it does not when the MCP path
carries its own params through worker/codec.py). Getting this wrong scopes the
whole downstream fix wrong: a "CLI bug" that is really a shared-transport bug leaves
MCP users broken after the issue is closed.
3. Classify — exactly one verdict
| Verdict | Meaning |
|---|---|
CONFIRMED-BUG | Reproduced, or root-caused in code with line-level evidence. |
LIKELY-BUG / NEEDS-E2E | Strong code hypothesis, but unverifiable in this environment (e.g. macOS-only or headed-browser bug on a headless/Windows host). |
NEEDS-INFO | A specific discriminating diagnostic is required before deciding. |
DUPLICATE / KNOWN-ISSUE | Matches an open issue/PR or a KNOWN_ISSUES.md entry. |
WORKING-AS-INTENDED / INVALID | Usage error or expected behavior. |
WONTFIX / OUT-OF-SCOPE | Real but deliberately not addressed. |
4. e2e-gate — what would verification actually require?
Classify the verification cost before claiming anything is fixed:
- Browser-free (pure-Python logic, Gemini tool-path, unit/lint/type, recording-verif) → verifiable anywhere, including the headless VPS. Run it.
- Headed-Flow-browser required (generation, selector, auth, reCAPTCHA) → not verifiable on a headless or wrong-OS host. Verdict tilts to
LIKELY-BUG / NEEDS-E2E; never claim success; the final check is a human on the affected surface. (See memory:done-means-e2e-verified,pr-must-verify-on-affected-surface.)
5. Report (the artifact)
Produce the reply below. Post it only if the autonomy gate allows (autonomous runs may comment; otherwise surface for a human to send).
**Assessment of #<N>: <verdict>** (confidence <N>/10)
Restated claim: <one line>.
Findings:
- <evidence as file:line> …
- <corrections to the reporter's framing, if any> …
Root cause / hypothesis: <what and why, or "unconfirmed because …">.
What we need next:
- <the single discriminating diagnostic — for NEEDS-INFO/NEEDS-E2E>, or
- <draft PR link — if issue-resolve ran>, or
- <why this is a dup/invalid/wontfix>.
6. Hand-off decision (graded, not a hard stop)
- Verdict ∈ {
CONFIRMED-BUG,LIKELY-BUG} and scope is single-surface/localized and a fix is verifiable in this environment → chain toissue-resolve(Phase 9) orpredict(Phase 2). - Otherwise → reply only; the next step is a human or more info.
Pipeline Continuation (Next Step Handoff)
Upon completing an Issue Assessment:
- Confirmed Bug / Feature Request: Proactively announce: "Issue assessed. Next step: Phase 2 Pre-Implementation (
/gflow:predict <proposal>) or Phase 9 Issue Resolve (/gflow:issue-resolve <N>)." - Needs Info / Unconfirmed: Request the specific diagnostic and await information before moving to Phase 2.
Skill routing (do not hallucinate skill names)
Re-derive this from ls skills/ + ls .claude/commands/gflow/ before relying on
it — names drift. Current map:
| Need | Use | How |
|---|---|---|
| The issue claims a surface is broken/missing/impossible | /gflow:spike | read skills/spike/SKILL.md — do this before classifying |
| High-stakes change (auth/transport/selector/schema) | /gflow:predict | read skills/predict/SKILL.md |
| Edge cases + BDD skeleton | /gflow:scenario | read skills/scenario/SKILL.md |
| Touching auth/reCAPTCHA | /gflow:known-issues | .claude/commands/gflow/known-issues.md |
| Drive the fix | issue-resolve | read skills/issue-resolve/SKILL.md |
| Worktree / TDD | superpowers | Skill() tool (these are invocable) |
Before you classify an absence
A verdict of INVALID / WONTFIX / "not supported on this host" is a claim about the
live product, and this skill is read-only — it cannot produce one from the code alone.
If the issue asserts that something does not work, and the answer turns on what Flow
actually renders or calls, load skills/spike/SKILL.md and get
evidence first.
The failure this prevents: a 20 s selector timeout was read as "the character editor is a labs-only surface, it renders no prompt textbox ever", and that unmeasured negative reached a code comment, a CHANGELOG entry, a release ledger and a test class name before anyone looked at the DOM. The feature had worked the whole time. Closing a reporter's issue on that basis tells a user their working feature is impossible.
Cheap tells that you are about to do it:
- the evidence for the absence is a timeout, an exception, or an exit code
- the claim is about a host, cohort or account class you cannot check from here
- you are about to write "cannot", "never", "not supported" in a reporter-facing reply
Spikes are free for DOM and network reads. Thirty minutes of measurement beats a confident wrong classification that ships.
Output format
A single Markdown block: the verdict line, findings with citations, root-cause hypothesis, and the "what we need next" step. No code changes, no posting unless the autonomy gate permits.
Provenance
Designed 2026-06-29 (docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md).
Validated against issue #222 (a LIKELY-BUG / NEEDS-E2E case: macOS + headed
browser, unverifiable on Windows/headless). Authored recipe-shaped after three
baseline runs showed capable agents already comply with the project's discipline
rules — the skill standardizes the procedure and artifact, it does not enforce
discipline the agent lacks.
Signals
- GitHub stars
- 264
- Forks
- 71
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
issue-assessment- Source
- github.com/ffroliva/gflow-cli
Related picks
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonlark-markdown
Skill · larksuite
The pick for Markdownmarkdown-formatter
Skill · nvidia
The pick for Markdownhandsontable-playwright-e2e
Skill · handsontable
The pick for End-to-end testingmstar-e2e
Skill · btspoony
The pick for End-to-end testing