{
  "markdown": "# issue_autofix\n\nA Claude Code plugin that fixes simple bugs for you automatically, overnight. Queue\nthe easy GitHub issues with a label, leave it running, and wake up to one conflict-free\npull request per issue, each gated on your project's own checks. **It never merges and\nnever closes issues**: the maintainer reviews the PRs in the morning, and each PR's\n`Fixes #N` closes its issue on merge.\n\n[![npm version](https://img.shields.io/npm/v/issue_autofix.svg)](https://www.npmjs.com/package/issue_autofix)\n[![downloads](https://img.shields.io/npm/dm/issue_autofix.svg)](https://www.npmjs.com/package/issue_autofix)\n[![license](https://img.shields.io/npm/l/issue_autofix.svg)](./LICENSE)\n\n## Commands\n\n| Command | What it does |\n| --- | --- |\n| `/issue_autofix [number]` | Fix one issue. In an isolated git worktree off `main`, make the smallest correct fix, verify it touches no file another open autofix PR touches, provision and run the project's checks, open a PR, and label the issue `autofixed`. With no argument it picks the oldest eligible issue. |\n| `/issue_autofix_session` | Run the resolver over the whole queue in one go — skip (never halt) on a failure or conflict, track deferrals so it cannot spin, and print a one-line-per-issue summary at the end. |\n| `/issue_autofix_validate [number…]` | **Optional pre-flight.** Check each queued issue is defined well enough to autofix; interview you to fill any gaps; rewrite the issue (keeping the reporter's original) and label it `autofix-ready`, or park it as `autofix-needs-info` so the resolver skips it. Interactive — run it with you present. A run works with or without it. |\n\n## Workflow\n\nThe everyday loop is built around a single label:\n\n1. **File the bug.** Open a GitHub issue describing the problem, just as you\n   normally would. Keep the queued ones small and well-scoped — this is for simple\n   bugs, not large features.\n2. **Queue it.** Add the `autofix` label to any issue you want fixed. Label as many\n   as you like; they form the night's queue.\n\n   *Optional — vet the queue first.* Run `/issue_autofix_validate` to make sure each\n   queued issue is defined well enough to fix on its own: it interviews you about any\n   that are vague, rewrites them (keeping the reporter's original) and labels the good\n   ones `autofix-ready`, and parks anything still too vague as `autofix-needs-info`,\n   which the resolver skips. A convenience, not a gate — skip it and the session still\n   tries every queued issue.\n3. **Kick it off.** At the end of the day, type `/issue_autofix_session` in Claude\n   Code (or `/issue_autofix [number]` to fix a single issue now). Leave it running\n   overnight.\n4. **Review in the morning.** Each fixed issue has one PR open and is relabeled\n   `autofixed`. Read the PRs, merge the good ones — `Fixes #N` closes the issue —\n   and anything the checks could not satisfy is labeled `autofix-failed` for you to\n   handle by hand.\n\nThe label is the heart of the state machine: `autofix` → `autofixed` (PR open,\nawaiting review) or `autofix-failed` (needs a human). The optional validator adds two\nmore: `autofix-ready` (vetted) and `autofix-needs-info` (parked, skipped until\nclarified). See [Labels](#labels) below.\n\n## How it stays safe\n\n- **One PR per issue, conflict-free by construction.** Before testing, each fix is\n  diffed against every other open `issue_autofix/*` PR; if it would touch a shared\n  file it is deferred, so the open PRs stay independently mergeable in any order.\n- **Gated on real checks.** A PR is opened only if the project's checks pass. The\n  command auto-detects them: `npm run typecheck` / `npm test` when a `package.json`\n  declares them, otherwise the standard checks for whatever toolchain it finds\n  (`cargo`, `go`, `pytest`, a `Makefile`) or whatever `CLAUDE.md` / CI documents.\n- **Never merges, never closes.** A human always reviews before anything lands.\n- **Isolated, runnable worktree.** Each fix is built and tested in its own git\n  worktree, provisioned to actually run — dependencies installed from the project's\n  manifests, local config such as `.env` copied in — and verified runnable before\n  any result is trusted, so the primary checkout is never disturbed and you can keep\n  working while it runs.\n- **Optional pre-flight validation.** `/issue_autofix_validate` lets you vet and\n  clarify the queue before a run and park anything too vague as `autofix-needs-info`;\n  it is a convenience, not a gate — the resolver runs with or without it.\n\n### Labels\n\n| Label | Meaning |\n| --- | --- |\n| `autofix` | Queue this issue to be fixed. |\n| `autofixed` | A PR is open and awaiting review. |\n| `autofix-failed` | The checks failed; needs a human. |\n| `autofix-ready` | Vetted by `/issue_autofix_validate`. Informational — not required to be picked up. |\n| `autofix-needs-info` | Flagged by `/issue_autofix_validate` as too underspecified; parked, and skipped by the resolver until clarified. |\n\n## Install\n\n### Quick install (npx)\n\nCopy the three commands into a project's `.claude/commands/` (or your user-level\n`~/.claude/commands/`) with one command — no clone, no manual copy:\n\n```bash\n# from npm (after publish)\nnpx issue_autofix install .claude          # project-level → .claude/commands/\nnpx issue_autofix install ~/.claude        # user-level    → ~/.claude/commands/\n\n# straight from GitHub, no publish needed\nnpx github:jeromeetienne/issue_autofix install .claude\n```\n\nWith no argument it installs into the current directory's `commands/`. The commands then\nappear as `/issue_autofix`, `/issue_autofix_session`, and `/issue_autofix_validate`.\n\n### As a plugin\n\nThe repository is itself a plugin marketplace, so add it directly with the GitHub\nshorthand in Claude Code:\n\n```\n/plugin marketplace add jeromeetienne/issue_autofix\n/plugin install issue_autofix@issue_autofix\n```\n\nOr, to work from a local clone:\n\n```bash\ngit clone https://github.com/jeromeetienne/issue_autofix\n```\n\n```\n/plugin marketplace add ./issue_autofix\n/plugin install issue_autofix@issue_autofix\n```\n\n### Manually (copy-in)\n\nCopy the three command files into the `.claude/commands/` of any project (or your\nuser-level `~/.claude/commands/`):\n\n```bash\nmkdir -p .claude/commands\ncp issue_autofix/commands/issue_autofix*.md .claude/commands/\n```\n\nThey then appear as `/issue_autofix`, `/issue_autofix_session`, and\n`/issue_autofix_validate`.\n\n## Requirements\n\n- Claude Code\n- `git`\n- The `gh` CLI, authenticated (`gh auth status`) with push access to the target\n  repository.\n\n## License\n\nMIT © Jerome Etienne\n",
  "bytes": 6531,
  "sha": "7ddd5aafa98e6af2130249f6016592451d79383ba4e5e269ea37f206665579f2",
  "repo_slug": "jeromeetienne/issue_autofix",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_jeromeetienne_issue_autofix_okf_index_md_3149e16a/readme"
}