Voice ForgeTHE DOCUMENTATION
v2.9.1
SOURCE REFERENCE Generated from the current pluginskills/voice-forge/references/review.md

Review mode

Check a text against the profile's rules, one rule at a time, and write a report. The reviewer never rewrites the text and never changes the profile.

The reviewer checks compliance with the user's actual rules. It does not grade general quality, and it does not judge whether the text "sounds like" the user. Those are separate evaluations (evaluate.md).

1. Inputs

The reviewer gets only these:

  1. The profile: base.md and profiles/<name>/rules.md. Not lessons, rounds, samples or analyses.
  2. The task: what the text is, who reads it, and any constraints the user gave (length, structure, "keep my wording").
  3. The text to review.
  4. The sources, when the text was edited from an original or written from notes, so meaning can be checked.

It does not get the writer's plan, notes or reasoning.

2. Independence

  • If your agent can start a subagent with a fresh context (a separate agent that does not see this conversation), start one. Give it only the inputs above, this file and schema-nonfiction.md. Ask it to return the report and nothing else. Write reviewer: independent subagent in the report.
  • Otherwise review the text yourself. Read it as if someone else wrote it; ignore what you meant to write. Write reviewer: same agent (not independent).

Never claim independence you did not have.

3. Steps

  1. Read "Reading a rule" in schema-nonfiction.md. It defines strength, kind, scope and exceptions. Use those meanings exactly.

  2. Mechanical checks. If you can run a shell:

    • python3 <skill>/scripts/measure.py check --rules <rules.md> --base <base.md> --lang <en|es> <text>
    • python3 <skill>/scripts/lint.py --lang <en|es> <text>

    A note: line about the old layout is not a failure: the other checks ran, and you judge that file's rules by reading them.

    A mechanical VIOLATION on a rule with applies: all prose, except: none and kind: constraint stands. A result marked lead needs your judgment: look at each location and decide whether scope or an exception applies.

  3. Applicability. For each rule, decide if it applies to this task and this text: its applies covers the text, and the task makes it relevant. A rule for paper introductions does not apply to an email. A rule marked es-only does not apply to English text, and en-only not to Spanish. If it does not apply, the verdict is NOT APPLICABLE, with a few words of reason.

  4. Judge each applicable rule with its check:

    • constraint: look at every instance. One clear breach is a VIOLATION.
    • tendency: judge the text as a whole. Use measure.py stats numbers when they help. A few deviations are not a VIOLATION.
    • preference: VIOLATION only if you can quote the passage and say exactly why it breaks the rule. Otherwise PASS or UNCERTAIN.
    • optional rules: absence is never a VIOLATION.
    • If an except case covers an instance, that instance is not a violation. Say which exception.
    • UNCERTAIN means the text alone cannot settle it (for example, you need the sources, or the scope is unclear). Say what is missing.
  5. Meaning. If sources were given, compare claim by claim, as meaning.md says. Any change in facts, numbers, names, quotes, attribution, negation, scope or certainty that the task did not ask for is a critical failure, whatever the style verdicts say.

  6. Do not invent requirements. If no rule covers something, it is free. You may add up to 3 notes under "Outside the profile", but they never count as violations.

  7. Write the report.

4. Report

Use this format exactly. List every rule of the profile and of base.md once, in the order of the file. Write base rules as base:B01.

# Review report

- profile: economics-en
- task: introduction of a working paper on rural poverty
- text: draft.md
- reviewer: independent subagent
- mechanical checks: run

## Verdicts

- R01: PASS
- R02: NOT APPLICABLE (short paper; no section map expected)
- R05: VIOLATION
  - severity: medium
  - where: paragraph 3, "In rural areas the rate went from 42 percent"
  - why: An analytical paragraph gives its numbers before its claim; no exception applies.
  - fix: Move the last sentence ("Rural households drove the decline.") to the start of the paragraph.
- R10: UNCERTAIN
  - why: "may suggest" in paragraph 4 could be one hedge or two; the source would settle it.
- base:B01: PASS

## Meaning

- status: preserved
- issues: none

## Outside the profile

- none

## Summary

- violations: high 0, medium 1, low 0
- uncertain: 1
- not applicable: 1
- meaning: preserved
  • Verdicts: PASS, VIOLATION, UNCERTAIN or NOT APPLICABLE.
  • Severity comes from the rule's strength: high for mandatory and prohibited, medium for preferred, low for optional. Only meaning problems are critical.
  • where: the paragraph number and a short exact quote.
  • fix: the smallest change that would satisfy the rule, in one sentence. Never a full rewrite, and never a fix that deletes a claim or changes meaning; if no such fix exists, say so.
  • Meaning status: preserved, changed (list each issue as critical: ...) or not checked (no sources given).

The report is data. The writer decides what to fix; the user decides on the profile.

← Back to the reference library

Find your next step