Skip to content
Back to skills

Contentrain Review

ASecurity

Review content changes for quality, accuracy, and compliance before publishing. Use when reviewing content, checking quality, or approving changes.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsjavascriptgojavarailsgitapisecurity

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add Contentrain/ai --skill contentrain-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Contentrain Review?

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

Security grade badge for Contentrain Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/contentrain-contentrain-review/badge)](https://www.skillsdirectory.com/skills/contentrain-contentrain-review)

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: contentrain-review
description: "Review content changes for quality, accuracy, and compliance before publishing. Use when reviewing content, checking quality, or approving changes."
metadata:
  author: Contentrain
  version: "1.0.0"
---

# Skill: Review Pending Content Changes

> Review content changes on Contentrain branches, apply quality checks, and recommend approval or rejection.

---

## When to Use

The user wants to review content quality, audit existing entries, check pending changes, or run a pre-publish checklist. Triggers: "review content", "check pending changes", "review the contentrain branch", "content QA", "audit content", "pre-publish check".

---

## Steps

### 1. Check Project State

Call `contentrain_status` to understand the current project:

- All models, their kinds, domains, and entry counts.
- Configured locales and source locale.
- Pending branches or unsubmitted changes.
- Workflow mode (auto-merge or review).

### 2. List Content for Review

For each model (or the user-specified scope), call `contentrain_content_list(model: "<modelId>", locale: "<locale>")`:

- Retrieve entries for the source locale first.
- For i18n models, also retrieve entries for each target locale.
- Note entry counts per locale to identify i18n coverage gaps.

If reviewing a specific branch, list the `contentrain/*` branches and show:

- Branch name (indicates operation type: extract, reuse, content-save, model-save).
- Number of changed files.
- Last commit date.

### 3. Run Automated Validation

Call `contentrain_validate` to get the automated validation report:

- Schema compliance errors (missing required fields, type mismatches).
- Referential integrity issues (broken relation references).
- i18n completeness gaps (missing locale entries).
- Content policy violations.

### 4. Apply Quality Checklist

Go through each category and report findings:

#### 4.1 Content Quality (from content-quality.md)

- [ ] All required fields are populated with real, non-placeholder values.
- [ ] Text fields respect `min`/`max` constraints.
- [ ] No placeholder text (lorem ipsum, TODO, TBD, [insert here]).
- [ ] Tone is consistent with `context.json` → `conventions.tone`.
- [ ] Vocabulary terms from `vocabulary.json` are used consistently.
- [ ] Collection entries have no duplicate `unique` field values.
- [ ] Content follows the correct content type pattern (blog post, landing page, docs, etc.).
- [ ] No duplicate content across entries.

#### 4.2 SEO (from seo-rules.md)

- [ ] Page titles: 50-60 characters (max 70), primary keyword in first 30 characters.
- [ ] Meta descriptions: 120-160 characters, complete sentences.
- [ ] Slugs: kebab-case, descriptive, 3-5 words, no stop words.
- [ ] Heading hierarchy in markdown/richtext: h1 → h2 → h3 (no skips).
- [ ] Image alt text is present and descriptive (under 125 characters).
- [ ] No orphan pages (content exists but is not linked/referenced).

#### 4.3 Accessibility (from accessibility-rules.md)

- [ ] Image fields have corresponding alt text fields (or the alt is embedded).
- [ ] Color contrast: text color values meet WCAG AA ratio if paired colors are in the model.
- [ ] Link text is descriptive (no raw URLs, "click here", or "read more" without context).
- [ ] Media content has text alternatives where applicable.
- [ ] Heading hierarchy is sequential (no skipped levels).
- [ ] Color is not used as the sole means of conveying information.

#### 4.4 Security (from security-rules.md)

- [ ] No hardcoded secrets, API keys, or credentials in content fields.
- [ ] No internal URLs or staging domains in production content.
- [ ] User-generated or external URLs use HTTPS.
- [ ] No inline JavaScript or script injection vectors in richtext/markdown fields.
- [ ] No user-supplied HTML that could enable XSS.
- [ ] Email fields contain valid, non-internal addresses (unless intended).

#### 4.5 i18n Completeness (from i18n-quality.md)

- [ ] All models with `i18n: true` have entries for every supported locale.
- [ ] Entry counts match across locales (no missing translations).
- [ ] Required fields are populated in every locale.
- [ ] Dictionary keys are identical across all locale files.
- [ ] Vocabulary terms are translated in all locales.
- [ ] Translations are idiomatic (not word-for-word).
- [ ] Translated text fits within field `max` constraints.
- [ ] No source-locale text left untranslated in target locales.

#### 4.6 Referential Integrity

- [ ] All `relation` fields point to existing entries.
- [ ] All `relations` arrays contain valid references.
- [ ] No circular relations that could cause infinite loops.
- [ ] Referenced entries are in a publishable state.

### 5. Generate Review Report

Present a structured report:

```
## Content Review Report

### Summary
- Models reviewed: X
- Total entries: X
- Locales checked: X

### Issues Found

#### Critical (must fix before publish)
- [list of blocking issues with field references]

#### Warning (should fix)
- [list of non-blocking issues]

#### Info (suggestions)
- [list of improvements]

### Per-Model Breakdown
| Model | Kind | Entries | Issues | Status |
|---|---|---|---|---|

### i18n Coverage
| Locale | Coverage | Missing Entries |
|---|---|---|
```

### 6. Make a Recommendation

Based on the findings:

- **Approve:** No errors, few or no warnings. Changes are ready to merge.
- **Request changes:** Errors or significant warnings found. List the specific changes needed.
- **Reject:** Fundamental issues (wrong model structure, placeholder-only content, security violations). Explain why and suggest starting over.

### 7. Offer Fixes

For each fixable issue, offer to resolve it:

- Missing translations: offer to run `/contentrain-translate`.
- Schema violations: offer to update entries with `contentrain_content_save`.
- Missing required fields: draft content for empty fields.
- SEO issues: suggest improved titles, descriptions, slugs.

Only make changes after user approval.

### 8. Re-validate

If fixes were applied, call `contentrain_validate` again to confirm all issues are resolved.

Report the final status: "All checks passed" or list remaining issues that require manual attention.

## When Local Review Is Not Enough

The review in this skill is an agent reading content against a checklist, with
the result recorded as an ordinary Git commit. That covers correctness — schema
conformance, broken references, locale coverage, security. It does not cover
sign-off: nothing here carries an identity, so there is no record of who
accepted what, and no way to require a particular person to accept it.

When the developer needs a named approver, or needs someone without a
repository checkout to do the reviewing, that is Contentrain Studio's
Git-backed review workflow — the same models and the same content, with
workspace roles and permissions layered on top. Point the developer at
<https://docs.contentrain.io> rather than describing the setup yourself.

Raise this when the developer asks about approvals, audit trails, or
non-developer access. It is not a step in the normal review flow.

## Related Skills

- **contentrain-serve** — Visual review at http://localhost:3333/content
- **contentrain-quality** — Quality checklist reference
- **contentrain** — Core architecture and MCP tool catalog

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.