Content Review

Skill id: content-review

Generated from JSON Schema — do not edit by hand. Run bun run cat-harness-tools/scripts/gen-schema-docs.ts.

Input

Input schema for formal content review and approval workflow.

FieldTypeRequiredDescription
reviewType"l2-to-l3-gate" | "l3-to-publish-gate" | "change-assessment" | "final-signoff"yesType of review phase gate.
contentRefstringyesGit ref or path to the content being reviewed.
previousVersionstringnoGit ref of the previous approved version (for diff).
validationReportstringnoPath to the validation report for this content.
stagingLinksanynoThe staging preview of the work under review, as the request for feedback carried it, so the reviewer opens the changed pages rather than rebuilding links. Rule: cat-harness skills/sdlc/sdlc-core/staging-review.md §”The deep-link rule”.

Raw schema · ✎ Edit

Output

What a review produces: findings, a decision about them, and the audit notes that justify it. A finding is an observation; a decision is an act about a set of findings; neither determines the other. Mirrors schemas/qa-review.ts — see skills/sdlc/sdlc-core/decision-audit.md.

FieldTypeRequiredDescription
findingsarrayyesOne entry per observation. Immutable once raised: to disagree with one, overrule it in the decision.
decisionobjectyes
notesarrayyesWhy the decision was made, and why each overruled finding was left.
stagingLinksanynoThe staging preview of the work this output asks a person to look at: one deep link per changed page, with the same page on main. Required whenever a preview exists; when it does not, say so in missing. Rule: cat-harness skills/sdlc/sdlc-core/staging-review.md §”The deep-link rule”.

findings[]

FieldTypeRequiredDescription
idstringyes
subjectstringyesBlock label, skill name or repo-relative path.
criterionstringno
reviewerobjectyes
severity"critical" | "major" | "minor"noMachine axis — what kind of breakage. Required of a script reviewer.
weight"blocking" | "suggestion" | "praise"noHuman axis — what the reviewer asks of the gate. Required of a human reviewer. praise has no image under the machine axis.
detailstringyes
evidencearrayno
raised_atstring (date-time)no

findings[].reviewer

FieldTypeRequiredDescription
kind"script" | "agent" | "human"yes
idstringyes
versionstringno

decision

FieldTypeRequiredDescription
outcome"approve" | "request-changes" | "reject"yes
rolestringyesRole id from schemas/role-graph.ts — the lane this was decided in.
byobjectyes
consideredarrayyesFinding ids weighed, overruled or not.
overrulesarraynoFindings the decision went against. The finding stays on the record; the note says why.
notesarrayyesAudit-note ids. At least one.
decided_atstring (date-time)no

decision.by

FieldTypeRequiredDescription
kind"script" | "agent" | "human"yes
idstringyes

decision.overrules[]

FieldTypeRequiredDescription
findingstringyes
notestringyes

notes[]

FieldTypeRequiredDescription
idstringyes
authorobjectyes
rationalestringyes
citesarrayyesA rationale with no citation is an assertion.
proposed_bystringnoThe agent that assembled the citations. Never the author — searching the corpus is clerical work.
written_atstring (date-time)no

notes[].author

FieldTypeRequiredDescription
kind"script" | "agent" | "human"yes
idstringyes

Raw schema · ✎ Edit


folio-assistant — code under the Apache License 2.0, documentation under CC BY 3.0. Generated schema and API references are rebuilt from source on every push to main.

deployed b08c961 · 2026-10-23T23:11:09Z