feat(skill): replace forge-review with review-fix skill - #27
Merged
Merged
Conversation
…t finds review-fix reviews a branch, a range or a change request, asks the code graph who depends on each changed symbol, commits the fixes that pass the repo's own tests and lint, and can post the rest with --post. thurview graph takes --base/--head, so it answers on two commits without a published review, pinned the way scaffold pins them. impact.reach rows now carry the call-site line (at) and whether any test reaches the caller (tested). Claude-Session: https://claude.ai/code/session_01XEkc6BULdsADTNu1mABPVe
A fresh agent ran the skill on a seeded caller-breaking bug. It asked for: the failing test to be watched before the fix, the commit convention to win over the fallback message, and a place for problems already present at base. graph interfaces no longer points at data.yaml when no review is involved. Claude-Session: https://claude.ai/code/session_01XEkc6BULdsADTNu1mABPVe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
thurview could explain code and help a human review it, but it had no way to review a change and fix it on its own. The operator asked for one simple review-and-autofix skill built on thurview's code graph, to replace
forge-review(#26), and for the graph to show what a diff alone can't.What Changed
skills/review-fix/replacesskills/forge-review/. It pins a branch, a range or a PR/MR, asks the graph who depends on each changed symbol, and records findings with file:line, severity, a one-line why and graph evidence. It fixes what it is sure of, keeps only fixes that pass the repo's own tests and lint, commits them once and reports the rest.--postsends the unfixed findings throughthurview forge submit. It never pushes or posts unless asked. 165 lines and one reference, down from 276 and two.thurview graph interfaces|impact|callers|tests-for|architecturetake--base/--head, so they run on two commits with no published review. They pin the same wayscaffolddoes (head defaults to HEAD, base to the trunk fork point);--reviewtogether with either is refused.impact.reachrows gainat(the call-site line) andtested(whether any test reaches that caller). Every reach row is already code the diff left alone, so a row reads as a finding:README, CONTRIBUTING,
.no-mistakes.yaml, thesetup skillhint and the one sentence inskills/thurview/SKILL.mdnow point atreview-fix.Risk Assessment
impact.reachhas two new columns. Anything reading that table by position sees them; nothing in this repo does.thurview forge status|prior|submit|replystay. Removing them would break the CLI beyond this change; the skill uses onlystatusandsubmit.security-surfaces.mdis dropped on purpose. The skill keeps a short definition of a security finding instead.mainneeds a released CLI. It tells the agent to runthurview updateonunknown flag.Testing
Each of these failed before its change and passes after:
e2e: answers on two commits without a review. Failed onunknown flag --base, then on thedata.yamlhint.graph.test: gives each caller the change left alone its call site and whether a test reaches it. Failed on missingat/tested.skill-frontmatter: ships one review skill. Failed onskills/review-fix/SKILL.mdmissing.The skill itself ran on a seeded bug. In a throwaway repo, a branch changed
discount(total, percent)to take a rate in [0, 1] and updated its own test, but notcheckoutinsrc/cart.js, which is outside the diff and untested. A fresh agent ran the skill with an empty request, without being told where the bug was:npm testwent 1/1 before, 2/3 with the new test, 3/3 after the fix commit. The agent's notes on the skill (watch the new test fail first, the repo's commit convention wins, a place for problems already present at base) are folded into the second commit.Not verified:
--postagainst a live forge, since the demo repo has no remote (forge submititself is covered bytest/forge.test.ts), and the newreachfields on languages other than JavaScript and TypeScript.Evidence: Manual seeded-bug reproduction transcript
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
✅ **Test** - passed
✅ No issues found.
pnpm test && bats scripts/ci/*.batsnpx vitest run test/skill-frontmatter.test.ts test/graph.test.ts (16/16 passed, including the new tests)npx vitest run test/e2e.test.ts full file (34/34 passed)Manual repro with throwaway TS repo and thurview graph impact/interfaces/callers via npx tsx src/main.tsgit diff d617e3c..d5fa83c -- skills/thurview/SKILL.mdgrep -rn forge-review across md/yaml/ts files✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.
https://claude.ai/code/session_01XEkc6BULdsADTNu1mABPVe
— LeTuR's agent