Skip to content
Back to skills

Rig Proof

ASecurity

Proofread agent-written prose against the project's writing-style guide. `find` (default): flag buried conclusions, passive voice, hedging, filler, jargon, and unanchored claims in a PR body, ticket, review finding, plan, writeup, or changed Markdown — read-only. `fix`: rewrite it in place. Triggers on: 'proofread', 'check the writing', 'is this readable', 'tighten this up', 'check style', 'style check', 'review the PR body', 'clean up this ticket', 'make this clearer', 'rewrite this so it re...

  • 3 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 19, 2026
ai-agentsrustgobashgit

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add agent-rig/rig --skill rig-proof --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rig Proof?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rig Proof
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/agent-rig-rig-proof/badge)](https://www.skillsdirectory.com/skills/agent-rig-rig-proof)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: rig-proof
description: "Proofread agent-written prose against the project's writing-style guide. `find` (default): flag buried conclusions, passive voice, hedging, filler, jargon, and unanchored claims in a PR body, ticket, review finding, plan, writeup, or changed Markdown — read-only. `fix`: rewrite it in place. Triggers on: 'proofread', 'check the writing', 'is this readable', 'tighten this up', 'check style', 'style check', 'review the PR body', 'clean up this ticket', 'make this clearer', 'rewrite this so it reads well'."
argument-hint: "[find | fix] [<file> | <PR> | --stdin | --base <ref>] — default 'find' (read-only); 'fix' rewrites"
allowed-tools: [Bash, Read, Edit, Grep, Glob]
---

# rig-proof — proofread what an agent wrote

Two verbs over one source of truth:

- **`find`** (default) — check prose against the project's writing-style guide
  and return findings with line references. **Read-only.**
- **`fix`** — apply them, then re-check.

**The guide is the only rulebook.** Its path is `style.guideFile` in
`.rig/config.json` (default `.claude/STYLE.md`). This skill has no style
opinions of its own: read the guide, walk its rules, cite them by number. When a
project prunes or extends the guide, this skill follows automatically — the same
relationship `/rig-review` has to `REVIEWER.md`.

## Why this exists

The personas already tell agents how to write. Instructions decay under load: an
agent 40 tool-calls deep, writing the PR body last, has spent its attention
elsewhere. This is the gate that catches what the instruction missed — the same
reason `/rig-task` runs a pre-PR self-review instead of trusting that the coder
internalized the review catalog.

## Configuration

Reads `.rig/config.json`:

- `style.guideFile` — the writing-style guide, and the only rule source
  (default `.claude/STYLE.md`, then `.rig/STYLE.md`). **If no guide is found,
  say so and stop** — don't substitute your own preferences.
- `vcs.baseRef` — diff base when checking changed Markdown (default
  `origin/main`).
- `project.repo` — `owner/name` for `gh` calls when the target is a PR.

## Scope — what to check, and what to leave alone

Default to **one named target**. This skill is a proofreader, not a repo-wide
linter; pointing it at every document in the tree produces a finding pile nobody
asked for.

Resolve `$ARGUMENTS` to a target in this order:

| Argument | Target |
|---|---|
| a file path | that file |
| `--stdin`, or prose pasted into the request | that text |
| a PR number, or `pr` | the PR body (`gh pr view <n> --json body -q .body`) |
| an issue/ticket ID | that ticket's description |
| `--base <ref>`, or `diff` | Markdown files changed vs `<ref>` |
| nothing | ask what to check — don't guess, and don't default to the repo |

**Never check code.** Source files are out of scope: identifiers and comments
follow the conventions of the code around them, not a prose guide. Skip
generated files, vendored directories, and `CHANGELOG.md`.

**Only sweep the whole repo when the user explicitly asks for it.** Report
per-file counts first and let them pick where to start. Don't dump every
finding at once.

---
# `find` — the read-only pass

1. **Read the guide.** Resolve `style.guideFile`, read it, and keep its rule
   numbers — every finding cites one.

2. **Run the mechanical pass first.** It costs nothing and it removes the
   word-spotting work from your plate:

   ```bash
   <SCRIPT> --json <target-file>        # or: … --stdin  (text on stdin)
   ```

   where `<SCRIPT>` = `.claude/scripts/check-style.ts` if present, else
   `.rig/scripts/check-style.ts`, else `<RIG_DIR>/scripts/check-style.ts` (run
   with `bun`). It harvests the banned terms **from the guide itself** and greps
   for them, plus flags over-long sentences. Code, fenced blocks, and link
   targets are masked, so it never flags a snippet.

   Its findings are **candidates, not verdicts.** `just`, `simple`, and
   `obvious` have legitimate uses; a 34-word sentence can be the clearest way to
   say something. Triage each one — you're the judgment the script doesn't have.
   Drop a candidate that reads fine and say nothing about it.

   If the script is missing or reports 0 harvested terms, do the whole pass
   yourself and note that the mechanical half didn't run.

3. **Read the prose yourself** for what no grep catches. This is the half that
   matters:

   - **Buried conclusion.** Does the first sentence carry the answer, or does
     the reader wade through process narration to reach it? This is the most
     common defect and the most expensive.
   - **Passive voice** where the actor matters — especially in a sentence the
     reader has to act on.
   - **Hedge stacks.** `it seems like it might possibly` — either go check, or
     say plainly that you didn't.
   - **Unanchored claims.** An assertion about the code with no `file:line`,
     command, count, or SHA behind it.
   - **Unmarked guesses.** Something inferred, presented as observed.
   - **Structure.** Three-plus parallel items still in a paragraph; a
     comparison that wants a table; ordered steps in prose.
   - **Self-narration** — preamble, apology, closing offer of further help.
   - **Untestable acceptance criteria**, when the target is a ticket.
   - Anything else the guide's rules call for that the script can't see.

4. **Report.** Lead with the verdict, then findings in document order. One entry
   per finding, each citing the guide rule and the line:

   ```
   3 findings — 2 that change how it reads, 1 nit

   12:1  [rule 1: answer first] The verdict is in the last paragraph. Move
         "the filter breaks the webhook path" to the first sentence.
   18:34 [rule 3: active voice] "the lookup should be scoped" — say who
         scopes it.
   24:7  [rule 8: cut filler] "it's worth noting that" — delete.
   ```

   Rank by how much each one costs a reader: a buried conclusion outranks a
   filler word. If the prose is clean, say so in one line and stop — don't pad
   the report to look thorough. Then offer `fix`.

---
# `fix` — apply the findings

1. **Get findings.** Use the caller's `find` output if passed; else run `find`.
2. **Rewrite.** Apply the changes to the target, smallest edit that fixes each
   finding.
   - **Preserve meaning exactly.** Rewriting prose must not change a claim, a
     number, a file path, a severity, or a conclusion. If a sentence is unclear
     because the *underlying fact* is unclear, that's not a writing problem —
     report it and leave the sentence alone.
   - **Never touch code, code spans, or fenced blocks.** Not the identifiers in
     them, not the commands.
   - Keep the artifact's required structure. A PR body still needs its tracker
     link and `## Architecture` note; a ticket still needs its acceptance
     criteria.
3. **Re-check.** Run `find` again. Report what changed and what you left, with
   the reason for each thing you left.
4. **Show the diff for a durable artifact.** A local file you may edit
   directly. When the target is already published — a PR body, a filed ticket —
   show the rewrite and get a yes first, then push it (`gh pr edit --body`,
   `gh issue edit --body`, Linear `save_issue`).

## Calling it from another skill

`find` is cheap and read-only, so the flows run it **before** the artifact
lands, not after:

- **`/rig-task` Step 5** — on the PR body, before `gh pr create`.
- **`/rig-issue create`** — on the ticket body, before filing.
- **`/rig-spike`** — on the writeup, before posting it back to the ticket.

A caller may thread `{target}` or pipe the draft text in on stdin. Return the
finding list, and the rewritten text when called with `fix`.

## Notes

- **Read-only by default.** `find` reports; only `fix` edits.
- **Degrades:** no guide → say so and stop. No `check-style.ts` → model-only
  pass. Neither is a hard failure.
- **Not a bug hunter.** Wrong claims are `/rig-review`'s job; this checks how
  the writing reads, not whether it's true. If you notice a false claim while
  proofreading, say so — but don't go looking.
- **Don't proofread the same artifact twice.** If `find` came back clean once
  and the text hasn't changed, there's nothing to add.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.