agentleFS
orbit-collectiveorbit-collective/orbit-skills/skills/fix-review/SKILL.md

fix-review

Skill1 starsChanged 42 days agoMITView on GitHub

Fix findings from an Orbit code review (the review skill's P0-P3 output, PR review comments, or a pasted list) one at a time, each with a regression test and verification, without widening the scope. Use for /fix-review and for requests to address or apply review feedback.

10 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use grill-me.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • GoogleSkill

    grill-me

    A relentless interview to sharpen a plan or design.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 5 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 10 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do not change behavior a finding does not cover.

    line 13
  2. Very specific:

    Never silence a finding instead of fixing it: no @ts-ignore, eslint-disable, skipped tests, loosened assertions, or lowered coverage …

    line 14
  3. Very specific:

    Do not commit, push, reply to, or resolve PR review threads unless the user asked for it.

    line 15
  4. Distinctive:

    Follow CLAUDE.md: Controller → Service → Repository layering, atomic-design components, CSS variables, and the en/pl documentation rule.

    line 17
  5. Distinctive:

    If no source is available, ask for one.

    line 27
  6. Distinctive:

    Reproduce first when practical: Write a failing test that captures the reported trigger:

    line 48
  7. Distinctive:

    After all fixes, run the checks that match what you touched:

    line 62
  8. Very specific:

    If a fix adds a genuinely new extensibility point (rare for review fixes), the CLAUDE.md documentation rule applies.

    line 72

“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Fix Review

Apply the findings of a code review to the Orbit repository (Laravel + Inertia.js + React/TypeScript). Every fix is small, verified, and traceable to one finding. This is the counterpart to the review skill, which only reports.

Boundaries

  • Fix only the findings you were given. Do not refactor, restyle, or "improve" nearby code. Note unrelated problems you spot and report them separately.
  • Do not change behavior a finding does not cover. If a fix forces a contract change (Inertia prop shape, route, Policy rule, migration), stop and ask before doing it.
  • Never silence a finding instead of fixing it: no @ts-ignore, eslint-disable, skipped tests, loosened assertions, or lowered coverage thresholds.
  • Do not commit, push, reply to, or resolve PR review threads unless the user asked for it. To commit the fixes, use the commit skill.
  • Preserve the user's uncommitted changes. Never use git reset, git clean, or git checkout to discard work.
  • Follow CLAUDE.md: Controller → Service → Repository layering, atomic-design components, CSS variables, and the en/pl documentation rule.

Step 1: collect the findings

Accept findings from any of these sources, in this order of preference:

  1. Output of the review skill in this conversation ([P1] Title / Location / Trigger / Impact and evidence / Fix direction).
  2. Review comments on a PR: gh pr view <n> --comments and gh api repos/{owner}/{repo}/pulls/<n>/comments for inline comments. Include only unresolved threads that ask for a change.
  3. A list the user pasted.

If no source is available, ask for one. Do not run a fresh review on your own and start fixing it.

Normalize each finding into: ID, priority, location, the claimed problem, and the expected behavior. Merge duplicates that share a root cause.

Step 2: triage before touching code

For every finding, re-read the current code at its location (line numbers may have shifted) and classify it:

  • Valid: the problem exists in the current code. Fix it.
  • Already fixed: a later change resolved it. Record the evidence.
  • Invalid: the finding is wrong once you read the surrounding context (a caller validates, a Policy already blocks it, the value cannot be null). Record why. Do not "fix" it to make the reviewer happy.
  • Needs decision: the fix requires a product or contract decision, or the reviewer's suggestion conflicts with another requirement. Ask the user.

Show the triage table to the user before fixing if any finding is Invalid or Needs decision. Otherwise proceed.

Work in priority order: P0, P1, P2, then P3.

Step 3: fix one finding at a time

For each valid finding:

  1. Reproduce first when practical. Write a failing test that captures the reported trigger:
    • Backend: a Pest test in the matching tests/Feature/...Test.php (Controller, Service, Repository, or Policy level, whichever layer owns the bug). Feature tests use RefreshDatabase on in-memory SQLite.
    • Frontend: a colocated *.test.tsx with Testing Library, asserting behavior (what the user sees or can do), not CSS classes.
    • Skip the test only for findings that cannot be expressed as behavior (a comment, a type-only fix, a doc path) and say so.
  2. Apply the smallest fix in the right layer. Query logic belongs in the Repository, orchestration and side effects (activity log, events, notifications) in the Service, validation and authorization in the Form Request / Controller / Policy. Frontend fixes reuse existing Atoms/Molecules, cn(), and CSS variables.
  3. Run the targeted test and confirm it now passes, plus the existing tests for that file:
    • php artisan test --filter=<TestName> (or make test in Docker)
    • npx vitest run <path> (or make test-js)
  4. Move to the next finding. Do not batch unrelated fixes into one edit.

Security findings (IDOR across projects, missing authorize, mass assignment, XSS, webhook signature checks) always get a test that proves the unauthorized path is now rejected, e.g. a user from another project receiving 403.

Step 4: verify the whole change

After all fixes, run the checks that match what you touched:

  • npx tsc --noEmit
  • npx eslint resources/js (bare, without --fix, like CI)
  • npx vitest run for affected areas, or make test-js-coverage if many components changed
  • php artisan test for affected suites, or make test-coverage for broad backend changes (90% gate on app/)
  • vendor/bin/pint --test on changed PHP files

Review the full diff once more: every hunk must map to a finding or its test.

If a fix adds a genuinely new extensibility point (rare for review fixes), the CLAUDE.md documentation rule applies; offer the document-feature skill.

Final report

List each finding with its outcome:

[P1] Title - fixed
  Change: path/to/file.php - what changed
  Test: tests/Feature/SomethingTest.php - "rejects issue update from another project"
[P2] Title - invalid
  Reason: ProjectPolicy::view already blocks this before the controller runs (app/Policies/ProjectPolicy.php:21).
[P3] Title - needs decision
  Question: ...

Then the checks you ran with their results, anything left unverified, and unrelated problems you noticed but did not fix. If the user asked you to reply on the PR, keep replies short, plain, and in first person, one per thread, saying what changed or why it was not changed.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.