skills/fix/SKILL.md
Polymorphic iterative repair loop — accept a verifier failure, structured findings (review/resolve/triage-issue), or a bug description; modify→verify→keep on green, auto-revert on guard regression, until clean or iteration cap. Use when the user says "fix", "make it pass", or "apply the findings", or hands an artifact + repo and expects patches; auto-routes to gh-fix-ci or gh-address-comments when an open PR + gh auth + GH-flavored input is detected.
npx skillsauth add outlinedriven/odin-codex-plugin fixInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Failure-driven iterative repair. Detect → Prioritize → Fix ONE thing → Commit → Verify → Keep/Revert → Repeat.
Apply: user says "fix", "make it pass", "apply findings"; input is a verifier failure, findings file, or bug description.
NOT apply:
gh-fix-cigh-address-commentsresolve or debugproceedFirst output line before ANY edit:
detected: <mode> — target=TARGET guard=GUARD scope=SCOPE cap=20
Mode values: gh-route, findings, verifier-failure, bug-spec. Full classifier: references/classifier.md.
First-match wins. Full detail: references/classifier.md.
| Priority | Mode | Minimum condition |
|----------|------|-------------------|
| 1 | gh-route | GH-flavored input + open PR + gh auth status clean |
| 2 | findings | Path to */findings.md, */review/*.md, or structured findings text |
| 3 | verifier-failure | Raw verifier stdout (FAILED, error TS, --- FAIL, etc.) |
| 4 | bug-spec | Natural-language description — catch-all fallback |
Auto-infer: target verifier, scope glob, guard command, iteration cap (default 20).
Trigger AskUserQuestion (single-select per axis, NEVER multiSelect) when:
MIXED_MODE: findings artifact AND verifier-failure output both presentGH_PARTIAL: GH-flavored input but no open PR, or gh auth status failsLANG_UNKNOWN: verifier-failure detected but verifier undetectableSCOPE_AMBIGUOUS: bug-spec with no module, file, or component referenceFull spec: references/loop.md. Key rules:
git revert HEAD --no-edit on red. A commit is kept only when the guard passes.delta > 0 + guard ok → KEEPdelta > 0 + guard fail → REWORK (max 2 reworks per item; 4th attempt → SKIP)delta ≤ 0 → DISCARD — revert immediatelygit revert HEAD --no-edit. Never reset --hard.main, master, release/*).iterations: N or --iterations N in invocation.Repo-native first (use fd --max-depth 2 to locate):
Justfile → just test (guard: just check)Makefile → make test (guard: make check)package.json → npm test (guard: tsc --noEmit && eslint .)dune-project → dune build @runtest (guard: dune build)Language fallbacks:
pytest + ruff check . && mypy .vitest run + tsc --noEmit && eslint .cargo test + cargo clippy -- -D warningsgo test ./... + golangci-lint rundune build @runtest + dune buildFull matrix: references/verifiers.md.
When open PR + gh auth status clean + GH-flavored input:
| Sub-target | Trigger language |
|------------|-----------------|
| gh-fix-ci | "CI", "Actions", "workflow", "checks", Actions run URL |
| gh-address-comments | "reviewer said", "address comment", "PR feedback", "requested changes" |
Both sets of language → fire AMBIGUOUS_GH_ROUTE (single-select: gh-fix-ci vs gh-address-comments).
Partial match → GH_PARTIAL ambiguity flag.
debug upstream: unclear root cause — debug findings become the fix target.triage-issue upstream: bug-spec mode — triage produces repro + TDD plan first.test-driven partner: failing test ↔ green flip; delegate RED→GREEN cycle.proceed complement: planned change without failure → proceed; failure-driven → fix.resolve / review / triage-issue as findings sources: their output paths feed findings mode.LANG_UNKNOWN.blocked.md, recommend debug.AskUserQuestion for guard command.MIXED_MODE.@ts-ignore / # type: ignore / // eslint-disable to silence errors.git reset --hard.--mode <X> bypasses classifier entirely; gh-fix-ci re-entering as fix --mode verifier-failure cannot loop back into gh-fix-ci.references/loop.md, references/classifier.md, references/verifiers.md.testing
ODIN's compress-operations dispatcher under the Compressor/Extender role. Invoke on "tidy", "clean up", "tidy this file/memory/workspace/git/docs", or when active context (current file, diff, stack, memory directory) has structural rot to resolve before touching behavior. Detects target domain from context and routes to the sibling skill. Requires explicit target or clear active-context signal — do not invoke speculatively.
development
Cross-domain taste skill — apply distinctive judgment to any artifact (prose, code, design, decisions) instead of converging to AI defaults. Two modes — `audit` (judge work against the two-sided charter and portable anchors) and `anchor` (load register before producing). Auto-detects by phrasing; override via `/taste audit | anchor`. Trigger on "is this slop?", "overkill?", "elegant?", "taste-test this".
tools
One-shot bootstrap of strict-mode tooling per ecosystem plus per-task GOALS.md scaffolding so an agentic loop can self-verify. Writes typechecker/linter/schema-validator config for TS (strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes), Python (Pyright strict, Ruff strict), Rust (Clippy deny-correctness), Go (golangci-lint with staticcheck), OCaml (dune --release); establishes `.agent-tasks/<id>/GOALS.md` per-task convention distinct from project-stable AGENTS.md. C++/Java/Kotlin and framework specifics (Spring Boot, Nest, React-strict) are out of scope. Trigger on new project bootstrap, agentic-task setup, "make this self-verifying", "set the loop's goal", "scaffold goals for this issue". Pairs with `llm-self-loop` runtime.
tools
Install git pre-commit hooks via the project's hook tool — Husky+lint-staged (JS), pre-commit (Python/OCaml), lefthook (Go), cargo-husky (Rust). Use when the user wants commit-time formatting, linting, type-checking, or test gates. Detects ecosystem first.