Agent skill

Issue Resolve

by ffroliva in ffroliva/gflow-cli

A skill your agent uses when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix.

MITAuto-check passedTesting & QA

Install Issue Resolve

skills CLI
$ npx skills add ffroliva/gflow-cli --skill issue-resolve -a claude-code

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

GitHub CLI
$ gh skill install ffroliva/gflow-cli issue-resolve --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/ffroliva/gflow-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/issue-resolve .claude/skills/issue-resolve && 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
issue-resolve
GitHub stars
264
Token cost
~3.5k tokens
SKILL.md length
1,879 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix.

  • Works in 7 steps: is the one that gets rationalised away → Isolate → Find the root cause — lane steps 0–2 → …
  • An assessed gflow-cli issue (verdict CONFIRMED-BUG
  • SKILL.md covers The Bug Lane — canonical here,…, Preconditions (all required…, Autonomy envelope (the action… and Protocol, plus 3 more sections
  • Calls pytest and gh

What it does

Issue Resolve is an agent skill from ffroliva/gflow-cli. Use when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix. Mutating and gated: it works in an isolated worktree, fixes test-first, and opens a DRAFT PR for human review. Built to run autonomously (hermes-ops) within a strict action envelope — never merges, never spends credits, never claims unverified.

Its SKILL.md is about 3.5k 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 Test-driven development, Git worktrees and AI video generation. The repository describes itself as: Drive Google Flow from the command line: Veo video and Imagen images, scripted, batched and pipeline-ready. Ships an MCP server so coding agents can drive it too, giving you and… The licence is MIT.

When your agent uses it

  • An assessed gflow-cli issue (verdict CONFIRMED-BUG
  • LIKELY-BUG) has localized
  • Verifiable scope and should be driven to a fix

Example prompts

  • “/issue-resolve”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. is the one that gets rationalised away
  2. Isolate
  3. Find the root cause — lane steps 0–2
  4. Fix test-first — lane steps 3–5
  5. Orchestrate (scales with complexity)
  6. Check
  7. Draft PR

What it can do on your machine

Read from SKILL.md and the folder at commit cb6d501. 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:

    • pytest
    • gh

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

  • Network

    No URLs in SKILL.md. Its commands use gh, 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

Issue Resolve loads about 3.5k tokens when it runs. Until then it costs about 99 tokens; SKILL.md has 1,879 words of instructions outside code blocks.

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

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 ffroliva/gflow-cli at commit cb6d501, republished under its MIT licence (© ffroliva). 1,879 words, ~3,481 tokens.

Download SKILL.mdSave it as .claude/skills/issue-resolve/SKILL.md (or your agent's skills folder).
name
issue-resolve
description
Use when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix. Mutating and gated: it works in an isolated worktree, fixes test-first, and opens a DRAFT PR for human review. Built to run autonomously (hermes-ops) within a strict action envelope — never merges, never spends credits, never claims unverified.
version
1.0

issue-resolve — drive an assessed issue to a draft PR

Takes a verdict from issue-assessment and produces a reviewable fix. The terminal state is a draft PR a human promotes — never an autonomous merge.

Core principle: the agent's job is to get the problem review-ready, not to declare victory. A fix is "verified" only after it runs green on the affected surface; when that surface can't be reached here (headed Flow browser, macOS-only, credits), say so in the PR and stop. (Memory: done-means-e2e-verified, pr-must-verify-on-affected-surface.)


The Bug Lane — canonical here, cited everywhere

This is the chain a bug travels in gflow-cli. It is written out once, in this file. AGENTS.md, skills/spike, skills/scenario and docs/E2E_TESTING.md all point here — none of them restate it, because a duplicated checklist drifts.

0  SPIKE       measure the live surface            ── only when a claim about Flow is in play
1  DEBUG       systematic-debugging → ROOT CAUSE   ── the symptom is never the finding
2  SCENARIO    BDD Gherkin written at the ROOT     ── the reproduction, in Given/When/Then
3  TDD         that Gherkin RED before any fix     ── red for the right reason
4  FIX         minimal change, at the root         ── grep every caller before editing one
5  FORMALIZE   UI/Flow surface ⇒ it is an E2E test ── a browser-free proxy does not discharge it
The surface gate — steps 0–2 are conditional, 3–5 never are

Run 0 SPIKE when the bug's explanation involves what Flow does — a selector, a wire response, a host behaviour, any claim of absence. Skip it when the cause is already proven or lives entirely in our own code.

Run 1 DEBUG and 2 SCENARIO whenever the bug touches a Flow surface, a transport, auth, selectors, or the cause is not yet proven. Skip both for a fix whose cause is self-evident and whose blast radius is one line — a typo, an exit-code string, a doc correction. A skip is a claim; say it out loud ("cause proven at <file>:<line>, skipping the debug step") so the skip is reviewable.

Steps 3–5 have no gate — but read step 3 correctly when step 2 was skipped. There is no bug small enough to fix without a test that failed first, and no Flow-surface change that a unit test discharges. What step 3 requires is the reproduction, red first; Gherkin is its form only when step 2 produced Gherkin. Skip step 2 and step 3 still owes you a failing test — an ordinary test_* that reproduces the bug — it just is not a scenario. The gate is red before green, never Gherkin before green.

A flag is a claim — decide it with evidence or don't change it

retryable, an exit code, a capability-table entry, a skip_if_* predicate: these are read by code that acts on them. retryable=True is not a hint, it is an instruction to try again. So metadata obeys the same rule as prose — a claim you have not run is a guess with formatting. The trap is that a flag changes for free when you re-route a raise to a different class, so a refactor smuggles in an assertion nobody reviewed.

How to decide, in order:

Can you reproduce the condition?Then
YesMeasure it. N sequential attempts, cheapest surface that reaches it. N/N = stable · mixed = it flaps · and write down which reading means what before you run
No, but the surface already gave an answerPreserve that answer and record that it is preserved, not measured. The status quo is not a claim; changing it is
No, and the condition is newLeave the class default and say so at the raise site. An unset flag is honest; a guessed one is not

Never let a class default speak for a raise site it was not written for. When one class covers shapes with genuinely different semantics, give the raise site an override rather than picking one answer for both — FlowAppError.retryable exists for exactly this, and lives on that class alone until a second one needs it.

Written from a near-miss in the same session that wrote this file. Routing #756's /about landing to FlowAppError (exit 31) would have flipped it from non-retryable to retryable purely as a side effect of the exit-code change, and the first draft shipped that with a confident remediation string saying a retry was "unlikely to help" — also unmeasured. The maintainer caught it: "I need evidence and test. otherwise everything will be a guess." The measurement came back inconclusive (the redirect had stopped reproducing), which is why the rule's middle row exists: inconclusive is a real result, and it means preserve, not pick.

Step 5 is the one that gets rationalised away
IF THE SCENARIO CAN ONLY HAPPEN IN A BROWSER,
THE TEST THAT PROVES IT IS AN E2E TEST.

Not a unit test with a mocked page. Not "the CLI path is covered and it shares the service." Those assert that our code does what we think; the bug was that Flow did something else. Write tests/e2e/test_<slug>_bdd.py, binding the Gherkin from step 2 — see docs/E2E_TESTING.md § BDD-bound e2e for the tag/marker mechanics.

The only exit is a named external blocker (AGENTS.md Iron Law): an account you do not control, hardware you do not have, an exhausted quota. Write it down, use Refs #N not Closes #N, and leave the issue open. "I could not reach it here" is a blocker only after you have said what stopped you.

Written from the contradiction it removes. Until 2026-09-10 step 3 of this file read "the test is the closest browser-free proxy" while AGENTS.md's Iron Law read "if no e2e test covers the change, write one — that is part of the change," and listed "it's covered by unit tests" among the excuses that are not blockers. Two files, disjoint, no merge conflict, no gate that could see it — memory prose-conflicts-hide-in-disjoint-files. An agent following this skill could ship a mocked proxy and be, by the letter, compliant.


Preconditions (all required before any code change)

  1. An issue-assessment verdict of CONFIRMED-BUG or LIKELY-BUG.
  2. Scope is single-surface / localized (not a cross-cutting redesign).
  3. The fix is verifiable in this environment, OR the gap is a named external blocker carried into the PR. "Browser-free" is not itself a blocker — this host has a warm profile and runs the e2e_auth tier at zero credits nightly. Name what actually stops the run (an account you do not control, a Mac, an exhausted quota) or run it.

If any fails → do not resolve; return to issue-assessment (reply-only).


Autonomy envelope (the action contract)

Allowed autonomously:

  • ✅ Post one issue comment (status / reply to reporter).
  • ✅ Open a draft PR (push a bugfix/-prefixed branch off develop).
  • ✅ Run browser-free / credit-free verification (unit, lint, type, recording-verif, Gemini tool-path).
  • ✅ Run the council review (/gflow:pr-council-review / /gflow:branch-review), /gflow:check, /gflow:sonar, /gflow:doc-review — without asking. These are mandated steps, not offers. A general "don't spawn subagents unless the user requested it" rule does not gate them: the user requested them by invoking this workflow. Stopping to ask makes the maintainer re-authorize the same step every issue, and it stalls the pipeline at exactly the point review is worth most.

Never (these require a human, regardless of pressure):

  • ❌ Spend Veo credits (no live video generation to "verify").
  • ❌ Mark a PR ready for review or merge it.
  • ❌ Push to main or develop.
  • ❌ State a fix is "verified" / "fixed" when it was not run on the affected surface.

Red flags — if you catch yourself reasoning toward any of these, STOP: "just spend one credit to exercise the path", "it's obviously correct, merge it", "mark it ready to save the human time", "say it's verified so we can close it". Urgency does not make an unverified fix verified.


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

Protocol

1. Isolate

Worktree off origin/develop on a bugfix/<slug> branch (use the superpowers:using-git-worktrees skill). Never work on develop/main.

2. Find the root cause — lane steps 0–2

Apply the surface gate above, then:

  • 0 SPIKE — /gflow:spike when the explanation involves what Flow does. A selector that missed is evidence about the selector, never about the feature.
  • 1 DEBUG — superpowers:systematic-debugging. Backtrack from the symptom to the line that causes it. The issue reports a symptom; the fix goes at the root, so grep every caller of the function you are about to touch. One guard in the shared path is a smaller diff than a guard per caller, and patching only the path the ticket names leaves every sibling still broken. State the root cause as <file>:<line> plus the evidence that pins it.
  • 2 SCENARIO — /gflow:scenario. Write the reproduction as Gherkin at the root cause, not at the symptom. Two bugs with one root cause are one scenario.

If the fix touches auth, a transport, selectors, or a schema, /gflow:predict runs here too.

3. Fix test-first — lane steps 3–5

Use superpowers:test-driven-development. The step-2 Gherkin goes red first, and red for the right reason — read the failure, don't just see a red dot. Then the minimal fix at the root, then green.

Where the test lives is decided by the surface, not by convenience:

The scenario can only happen…The test isMarked
in a real browser / against real Flowtests/e2e/test_<slug>_bdd.py binding the feature@e2e + a cost tier
in our own code (parsing, routing, exit codes)tests/features/test_<slug>_steps.pyuntagged (offline)

tests/features/test_e2e_binding_guard.py enforces the binding both ways and runs offline in normal CI. A browser-free proxy does not discharge a UI-surface scenario; only a named external blocker does (see step 5 above).

4. Orchestrate (scales with complexity)

For non-trivial fixes: Opus plans → delegates coding to a Sonnet subagent → Opus reviews the diff → loop until consensus. Gemini (agy) as an optional extra reviewer if available (soft dependency, never blocks). Trivial one-line fixes skip the loop.

5. Check

/gflow:check clean (ruff + pyright + tests) before the PR. Scope tests locally (full pytest --cov OOMs — memory full-test-suite-ooms); trust CI.

6. Draft PR

gh pr create --draft --base develop. Body is a plain string (never a heredoc — CLAUDE.md MCP rule). Include a Verification status section with checked/unchecked boxes; use Refs #N when a human must still verify, Closes #N only when fully verified here. Then run /gflow:pr-council-review (or /gflow:branch-review pre-push) — baseline D1–D5 plus D14 over-engineering / YAGNI, which is the lens correctness and quality reviews do not apply. Apply the findings (or record why you declined each), then STOP — a human promotes and merges.


Quick reference

StepTool
Worktreesuperpowers:using-git-worktrees
0 Spike (live-surface claims)/gflow:spike
1 Debug → root causesuperpowers:systematic-debugging
2 Scenario (BDD at the root)/gflow:scenario
High-stakes gate/gflow:predict
3 TDDsuperpowers:test-driven-development
5 Formalize (UI ⇒ e2e)docs/E2E_TESTING.md § BDD-bound e2e
Pre-commit/gflow:check
PR review/gflow:pr-council-review, /gflow:branch-review
Verify disciplinesuperpowers:verification-before-completion

(Re-derive tool names from ls skills/ + ls .claude/commands/gflow/ — don't trust a stale list.)


Common mistakes

  • Fixing the symptom the issue names. The reporter saw a symptom; lane step 1 exists because the cause is usually a caller or two above it. Two issues that reproduce differently can share one root — fix it once, where they meet.
  • Letting a mocked test stand in for a browser scenario. It is the most comfortable wrong answer in this repo, which is why step 5 is written as a rule and enforced by tests/features/test_e2e_binding_guard.py rather than left to judgement.
  • Working on develop instead of a bugfix/ branch off it (memory: develop-divergence-recovery).
  • Treating step 6's council as optional, or asking permission to run it. It is neither (memory: council-review-is-standing-authorized). Ask before merging, marking a PR ready, or spending credits — never before reviewing.
Pipeline Continuation (Next Step Handoff)

Upon completing Issue Resolution:

  1. PR Created & SonarCloud Gate 🟢 GREEN: Proactively announce: "PR created and SonarCloud gate green. Next step: Phase 10 Release Pipeline (/gflow:release) or merge to develop."
  2. SonarCloud Gate 🔴 FAILS: Run /gflow:sonar <PR#> to resolve new code smells/coverage issues before merging.

Provenance

Designed 2026-06-29 (docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md). Resolve-path validated by an injected pure-Python canary bug (off-by-one in extension_from_magic) fixed test-first to green on this host. Guardrails are the autonomous action contract, not discipline-rescue — baseline runs showed capable agents already refuse credit-spend / merge / false-verified under pressure; the envelope makes the policy explicit and machine-checkable.

© ffroliva, 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 skills/issue-resolve of ffroliva/gflow-cli.

Open the folder on GitHubat commit cb6d501

Compare with similar skills

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

Issue Resolve compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Issue Resolve this skillffroliva/gflow-cli264—~3.5kAutomated safety check: PassMIT
Superpowers Feature WorkflowSYZ-Coder/superpowers-openspec-team-skills196—~891Automated safety check: PassMIT
Nv Implementnovuhq/novu40k—~1.7kAutomated safety check: PassCustom licence
Assign To Workforceagentculture/culture113—~2.7kAutomated safety check: WarnApache-2.0
Omk CodingKaimingWan/oh-my-kiro107—~2.4kAutomated safety check: PassMIT
Runway Hello Worldjeremylongshore/tons-of-skills-marketplace2.8k—~1.3kAutomated safety check: PassMIT

Similar skills

  • Superpowers Feature Workflow

    SYZ-Coder/superpowers-openspec-team-skills

    A skill your agent uses when feature work needs the Superpowers stages before or during implementation: brainstorming, design confirmation, implementation planning, worktree setup, test-driven…

    196 GitHub stars~891 tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • Nv Implement

    novuhq/novu

    Implement planned work by fanning out parallel subagents on isolated worktrees — TDD at pre-agreed seams, per-slice nv-park-and-review, merge back, full suite once at the end.

    40k GitHub stars~1.7k tokensUpdated today
    Testing & QAAuto-check passed
  • Assign To Workforce

    agentculture/culture

    Fan out a converged devague plan's dependency waves to parallel agents in isolated git worktrees, one agent per task per wave, with TDD-gated merges by the main agent.

    113 GitHub stars~2.7k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check: warnings
  • Omk Coding

    KaimingWan/oh-my-kiro

    Enforces coding best practices: deep-read before modify, LSP-first navigation, TDD red-green-refactor, minimal changes, self-review, verification.

    107 GitHub stars~2.4k tokensUpdated 6 mo ago
    DevelopmentAuto-check passed
  • Runway Hello World

    jeremylongshore/tons-of-skills-marketplace

    Create, observe, and preserve one approved Runway text-to-video task using the current per-model contract.

    2.8k GitHub stars~1.3k tokensUpdated today
    Testing & QAAuto-check passed
  • TDD

    pietheinstrengholt/rssmonster

    Test-driven development. An agent skill from pietheinstrengholt/rssmonster.

    564 GitHub starsUsed in 30 repos~906 tokens
    Testing & QAAuto-check passed

More from ffroliva/gflow-cli

All 17 skills in this repo
  • Gflow CLI

    ffroliva/gflow-cli

    A skill your agent uses when the user wants to drive Google Flow (Veo image-to-video, Veo text-to-video, Imagen / Nano Banana image generation) from the terminal or a script — including…

    264 GitHub stars~4.8k tokensUpdated today
    Auto-check: notes
  • Issue Assessment

    ffroliva/gflow-cli

    A skill your agent uses 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.

    264 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Live Verify

    ffroliva/gflow-cli

    Two-part gate for gflow-cli feature/fix work. An agent skill from ffroliva/gflow-cli.

    264 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Video Production

    ffroliva/gflow-cli

    A skill your agent uses when the user wants a finished video out of gflow rather than a single clip — a scripted scene, a talking-head or dialogue piece, an explainer, a product montage, a story…

    264 GitHub stars~7k tokensUpdated today
    Auto-check passed
  • Check

    ffroliva/gflow-cli

    Auto-fix lint and formatting, then report types and tests. An agent skill from ffroliva/gflow-cli.

    264 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Doc Review

    ffroliva/gflow-cli

    Use before cutting any gflow-cli release or after a major documentation change — systematic council-driven audit that combines a mechanical 7-section checklist with a 3-agent parallel review…

    264 GitHub stars~4.2k tokensUpdated today
    Auto-check passed

Questions about Issue Resolve

What does Issue Resolve do?

A skill your agent uses when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix. Issue Resolve is an agent skill from ffroliva/gflow-cli. Use when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix.

When should I use Issue Resolve?

Issue Resolve fits situations like: an assessed gflow-cli issue (verdict CONFIRMED-BUG; LIKELY-BUG) has localized; verifiable scope and should be driven to a fix.

How do I install Issue Resolve in Claude Code?

Run `npx skills add ffroliva/gflow-cli --skill issue-resolve -a claude-code`. Or copy the skill folder (skills/issue-resolve in ffroliva/gflow-cli) into .claude/skills/issue-resolve in your project. Claude Code loads it when a task matches its description.

How do I install Issue Resolve in Codex?

Run `npx skills add ffroliva/gflow-cli --skill issue-resolve -a codex`. Or copy the skill folder (skills/issue-resolve in ffroliva/gflow-cli) into .agents/skills/issue-resolve in your project. Codex loads it when a task matches its description.

Can I use Issue Resolve 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 ffroliva/gflow-cli --skill issue-resolve -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/issue-resolve, .gemini/skills/issue-resolve, .github/skills/issue-resolve and .opencode/skills/issue-resolve in your project.

What does Issue Resolve need to run?

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

Does Issue Resolve access the network?

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

Is Issue Resolve 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 Issue Resolve use?

Issue Resolve 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 Issue Resolve use?

About 3.5k tokens (SKILL.md is roughly 14k 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 Issue Resolve?

Skills that share tags, products or a category with Issue Resolve: Superpowers Feature Workflow (SYZ-Coder/superpowers-openspec-team-skills, 196 stars), Nv Implement (novuhq/novu, 40k stars), Assign To Workforce (agentculture/culture, 113 stars) and Omk Coding (KaimingWan/oh-my-kiro, 107 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Issue Resolve?

ffroliva (a GitHub user) maintains it in ffroliva/gflow-cli, which has 264 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 7, 2026.

Source: ffroliva/gflow-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.