Agent code reviews that fallow checks against the code graph

1 hour ago

Fallow skills 1.4.41 is out. These skills teach a coding agent to run fallow on TypeScript and JavaScript code and read what it reports. Most of this release keeps the skills in step with fallow itself, so each feature runs in the fallow tool you install. The biggest change is a review that fallow checks before you read it.

Ask about this presentation

Chapters

  1. 0:00Fallow skills 1.4.41
  2. 0:21The review loop
  3. 0:37What fallow checks
  4. 0:58Test reach
  5. 1:22Diff risk in audit
  6. 1:44More fallow features
  7. 2:06Live-feedback hooks removed
  8. 2:32Smaller corrections
  9. 2:53Get 1.4.41
Show transcript
  1. Fallow skills 1.4.41 is out. These skills teach a coding agent to run fallow on TypeScript and JavaScript code and read what it reports. Most of this release keeps the skills in step with fallow itself, so each feature runs in the fallow tool you install. The biggest change is a review that fallow checks before you read it.

    Slide text
    fallow-skills / release v1.4.41

    Agent code reviews that fallow checks against the code graph

    v1.4.8 → v1.4.41  ·  skills: fallow, fallow-review, fallow-setup
  2. Here's the new loop. The agent gates the change with fallow audit and saves a walkthrough guide outside the project. Then it writes its review as a judgment file. Each note cites a signal or a changed region from the guide, with an action like fyi or address.

    Slide text
    fallow-skills / skills/fallow

    New in the fallow skill: review a change, then let fallow check the verdict

    steps 1, 2 and 4: commands
    review="${TMPDIR:-/tmp}"
    # 1. gate the change
    fallow audit --format json --quiet
    # 2. read the guide
    fallow audit --walkthrough-guide \
      --format json --quiet \
      > "$review/fallow-guide.json"
    # 4. fallow checks the judgment
    fallow audit \
      --walkthrough-file "$review/fallow-judgment.json" \
      --format json --quiet
    step 3: the agent writes fallow-judgment.json
    {
      "graph_snapshot_hash": "<copy from the guide>",
      "judgments": [
        { "signal_id": "sig:<from digest.decisions>",
          "framing": "Callers keep their imports.",
          "action": "fyi" },
        { "change_anchor": "chg:<from change_anchors>",
          "framing": "unusedHelper has no caller.",
          "action": "address" }
      ]
    }
  3. Fallow then checks where each note points. Notes that cite something fallow emitted are accepted, and the agent reports only those. An id fallow didn't emit is rejected. If the tree moved and the snapshot hash no longer matches, fallow refuses the whole file as stale. The opinion in each note stays the agent's own.

    Slide text
    fallow-skills / skills/fallow

    Fallow checks that every note points at real code in the current tree

    Accepted

    The note cites a signal or changed region that fallow emitted. The agent reports only these.

    Rejected

    An id that fallow did not emit. An unknown change anchor comes back as unknown-change-anchor.

    Stale

    The snapshot hash no longer matches, so fallow refuses the whole file. Fetch the guide again.

    Keep the guide outside the project: a new file in the tree changes the hash.
  4. The fallow-review skill now reads test reach for each changed export. Transitive means a test reaches it without naming it. Mocked-only means the tests swap the file for a mock, so the real code doesn't run. None and none-file mean tests miss the export, or the whole file. So a test that imports the file no longer counts as proof, and the agent asks the author how the change was verified.

    Slide text
    fallow-skills / skills/fallow-review

    fallow-review now reads how tests reach each changed export

    transitive

    A test reaches the export without naming it.

    mocked-only

    The tests replace the file with a mock, so the real code does not run.

    none

    Tests reach the file but miss the export.

    none-file

    Tests miss the file entirely.

    "A test imports this file, so it is tested"  Ask the author for the verification story.
  5. The skill now knows the diff risk rules in fallow audit, which report facts about the change itself. Weakening tests or a coverage threshold, adding a suppression comment, or adding a test-only branch to source code all land in its findings. Two more are opt-in: editing one copy of duplicated code but not its siblings, and adding a dependency.

    Slide text
    fallow-skills / skills/fallow

    fallow audit reports risky moves in the change itself

    on by default
    weakened-tests

    The change weakens tests or a coverage threshold

    added-suppression

    The change adds a suppression comment

    test-only-branch

    The change adds a test-environment branch to source code

    opt-in, off by default
    diverged-clone-sibling

    The change edits one copy of duplicated code but not its siblings

    added-dependency

    The change adds a dependency

  6. The sync covers more of fallow, too. An opt-in mutation command measures how well your tests catch code changes, and two MCP tools plan and inspect mutants without running tests. Three rules cover Effect code. Health hotspots list files that change together with no import between them. And traces flag consumers that a plain grep would miss.

    Slide text
    fallow-skills / skills/fallow

    The skill also covers mutation testing, Effect code and hidden coupling

    fallow mutation

    Opt-in. Measures how well the tests detect changes in the code. MCP tools mutation_plan and mutation_inspect run no tests.

    Effect rules

    unused-effect-layer, unused-tagged-error, unproduced-catch-tag

    change_coupling

    Two files that change together while no import or re-export chain connects them.

    search_visibility

    Marks a consumer that grep -w for the export name would miss.

  7. One removal affects Claude Code users who set up the optional live-feedback hooks. fallow-review drops the two hooks that watched the fallow review app's feed file and injected reviewer notes into your running session. The terminal walkthrough stays. The agent relays accepted human verdicts into the coding session itself, with each note's action. If you copied those hooks into a repo, the skill no longer ships or documents them.

    Slide text
    fallow-skills / skills/fallow-review

    fallow-review no longer ships the Claude Code live-feedback hooks

    Removed

    review app → .fallow-review/feed.jsonl → hooks → your session

    hooks/fallow-review-session-init.sh
    hooks/fallow-review-on-feedback.sh
    hooks/settings.snippet.json

    Now

    The agent relays accepted human verdicts into the coding session, each with its action.

    block, address  required
    consider  optional
    fyi  no change needed

  8. Some smaller changes affect what the agent writes and runs. Config examples now use double star globs, because a single star stays within one folder level. The setup skill spots more Oxlint and Oxfmt config files. And the setup step fallow suggests is now fallow agent install, as a dry run.

    Slide text
    fallow-skills / skills/fallow, skills/fallow-setup

    Smaller changes to what the agent writes and runs

    files = ["*.test.ts"]
    →
    files = ["**/*.test.ts"]

    A single * stays within one path segment.

    .oxlintrc.json, .oxfmtrc.json
    +
    .oxlintrc.jsonc, oxlint.config.{ts,mts}, .oxfmtrc.jsonc, oxfmt.config.*

    fallow-setup detects these formatter and linter configs.

    fallow schema
    →
    fallow agent install --dry-run

    The setup next step on an unconfigured project with findings.

  9. The install commands are the same as before. The skills describe what fallow emits, so run a recent fallow with them. An older fallow doesn't emit test reach, and the review skill falls back to test adjacency. The README badge now names fallow 3.34.1. Keep both current, and your agent's code reviews come back checked against fallow's code graph.

    Slide text
    fallow-skills / v1.4.41

    Get the skills, and run a current fallow beside them

    # Claude Code
    /plugin marketplace add fallow-rs/fallow-skills
    /plugin install fallow@fallow-skills
    # OpenAI Codex
    codex plugin marketplace add fallow-rs/fallow-skills
    codex plugin add fallow@fallow-skills
    # Agent Skills CLI
    npx skills add fallow-rs/fallow-skills
    Older fallow

    An older fallow does not emit test_reach. fallow-review then falls back to test_adjacency.

    The README badge now shows fallow v3.34.1.

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️