.qwen/skills/autofix/SKILL.md
The workflow owns routing, GitHub context, credentials, checkout, sandbox setup, pushes, PR creation, comments, and final independent verification. This skill owns the model-driven decisions, code changes, and pre-commit verification.
npm run build, npm run typecheck, npm run lint, and focused
Vitest runs for touched packages. If any command fails, fix the cause and
rerun it; if you cannot make the checks pass confidently, write
<workdir>/failure.md and do not commit.<workdir>/failure.md with what you learned and stop.Input: <workdir>/candidates.json.
Pick at most one issue. Each candidate has autofixTier: 0 is a forced
issue from manual dispatch or a label event, and 1 is a maintainer
approved issue from the scheduled pool. Prefer forced tier-0 issues, then the
highest confidence approved issue. It is valid to pick none.
Choose only work that is coherent in this codebase, headless-Linux verifiable,
and likely small enough for a focused autonomous fix. Reject candidates with
existingAutofixPr because those must continue through PR review handling, not
a new issue fix. Also reject platform-only bugs, real OAuth/IDE/manual-visual
flows, architecture redesigns, product decisions, or fixes likely over roughly
300 changed lines.
Write <workdir>/decision.json:
{
"go": 1234,
"reason": "why this issue, likely root cause, fix sketch, verification plan",
"skip": [{ "number": 5678, "reason": "short reason", "permanent": false }]
}
Use "go": null when choosing none. Mark permanent true only when the issue
is structurally unsuitable for this bot, not for transient uncertainty.
Inputs: --issue, <workdir>/candidates.json, and
<workdir>/decision.json.
Implement the selected issue in the checked-out repository:
<workdir>/candidates.json for the full issue text and
<workdir>/decision.json for the assessment that selected it.autofix/issue-<issue> from current
HEAD. Do not create a separate worktree.npm run build, npm run typecheck, npm run lint, and focused Vitest
tests for touched packages. Keep fixing and rerunning until they pass, or
write <workdir>/failure.md and stop.git status --short shows only intended files, then create one
Conventional Commit, e.g. fix(core): summary (#<issue>).<workdir>/e2e-report.md<workdir>/pr-title.txt<workdir>/pr-body.md using .qwen/skills/prepare-pr/SKILL.mdFollow AGENTS.md, .qwen/skills/bugfix/SKILL.md, and
.qwen/skills/e2e-testing/SKILL.md. If confidence drops or a required action is
blocked, write <workdir>/failure.md and do not commit.
Inputs: --pr, --issue, <workdir>/feedback.md, --conflict, and --base.
The workflow already checked out the PR's head branch. Stay on it.
Read git diff origin/<base>...HEAD first, then <workdir>/feedback.md.
Classify every feedback point:
CHANGES_REQUESTED item naming a real defect. Verify it, then fix minimally.If --conflict true, merge origin/<base> and resolve conflicts by
understanding both sides, never blindly taking one side. If false, do not merge
unnecessarily.
Finish with exactly one outcome:
npm run build, npm run typecheck, npm run lint, and focused Vitest
tests for touched packages, commit once only after they pass, then write
<workdir>/address-summary.md with each feedback point, decision, changes,
conflict notes, and verification results.<workdir>/no-action.md.<workdir>/failure.md and do not commit.