Skip to main content

AI-Assisted Development

bestax uses AI in two ways: AI code review on every pull request, and an autonomous development loop that can implement maintainer-approved issues end to end. Every AI-authored change is clearly labeled, and a human maintainer reviews and merges everything — nothing is ever merged automatically.

For users: filing issues the AI can pick up

File issues normally — bug report, feature request, accessibility issue, and the other issue templates all work. During triage, a maintainer may add the claude-fix label to an issue. That kicks off the autonomous loop: Claude implements the fix on a branch, opens a pull request that references your issue (Fixes #N), and the AI reviewers iterate on it. You'll see the linked PR appear on your issue, and the issue closes automatically when a maintainer merges the PR.

The more actionable your issue, the better the agent does with it:

  • Name the component (Button, Modal, useConfig, …) and the package (@allxsmith/bestax-bulma, create-bestax, docs).
  • Show a minimal reproduction — a code snippet beats a description.
  • State expected vs. actual behavior, with screenshots for visual issues.
  • Mention your React/Bulma versions when they might matter.

For contributors: what reviews your PR

Every PR gets AI review before human review:

  • CodeRabbit reviews automatically. Respond in-thread or just push fixes — it re-reviews each push and marks addressed comments with "✅ Addressed in commit …". If you think a finding is wrong, say so in the thread; a maintainer has the final word.
  • @claude mentions are restricted to the owner, members, and invited collaborators (they spend the maintainer's Claude usage). External contributors don't need them — just push.
  • Copilot review may also appear when the maintainers have it enabled.

A green AI review is not approval: a human maintainer still reviews and merges every PR, and the review-time requirements (Storybook story for UI changes, docs page for API changes, skills/ updates for component changes) still apply.

The autonomous loop

PRs authored by the loop move through a small label lifecycle:

LabelWhereMeaning
claude-fixissuesMaintainer-approved: Claude implements this issue and opens a PR
ai-loopPRsThe PR is inside the autonomous review/fix loop
needs-human-reviewPRsThe loop converged (or hit a disagreement) — awaiting maintainer review/merge
ai-loop-pausedPRsThe loop hit its iteration cap or a guardrail — a maintainer must intervene

The loop itself: Claude implements the issue and opens the PR → CodeRabbit reviews it and a second, independent Claude review (a stronger model than the implementer) does a deep pass → Claude addresses every finding, fixing what's right and refuting what's wrong → both reviewers re-verify their own findings against the pushed code (nothing is closed on the fixer's word alone) → after at most 4 fix rounds, the PR either converges (CI green, all review threads resolved) or is handed to a human with the open disagreements listed.

Please don't add or remove the loop labels on PRs you don't own — they are the loop's state machine.

Guardrails

  • Humans always merge. The loop cannot merge, enable auto-merge, or approve its own work; branch protection requires a human approval on main.
  • Hard iteration cap (4 fix rounds per PR), plus concurrency limits so runs never stack.
  • Protected paths: the loop refuses to operate on changes touching CI workflows, coverage thresholds, commitlint/release configuration, or dependency policy — the gates that keep it honest can't be edited by it.
  • Maintainer-only entry: only collaborators with triage access or higher can start the loop (the workflow re-verifies the labeler's permission live), and only by labeling an issue after reading it.
  • Kill switches: removing the ai-loop label stops one PR; a repository variable turns the whole system off.