contentrain-model — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited contentrain-model (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create or evolve Contentrain model definitions safely.
Use this when the user wants to:
singleton, collection, document, and dictionaryCall contentrain_status first:
If the user is extending an existing model, call contentrain_describe(model: "<model-id>").
Call contentrain_describe_format before proposing structure changes.
Use it to confirm:
content_path and locale_strategy affect filessingleton: one object per locale, e.g. hero, navigation, footercollection: repeated entries with IDs, e.g. testimonials, faq items, authorsdocument: long-form markdown content with frontmatter, e.g. blog posts, docs pagesdictionary: flat key-value strings, e.g. UI labels, error messagesDefault rules:
dictionary for UI/system stringsdocument for markdown-heavy long-form contentcollection for repeated structured itemssingleton for one page/section config per localeFollow these rules:
modelobject blobsrequired when the content truly cannot function without themRelation guidance:
relation: single referencerelations: multiple referencesslug-driven relations for document-like linkingAsk or infer:
.contentrain/content/... path or a custom content_path?locale_strategy matches the project layout?Use custom paths only when the framework or repo structure clearly benefits from it.
Before writing, show:
i18n behaviorcontent_path / locale_strategyGet user confirmation before saving.
Call contentrain_model_save with the approved definition.
Example:
{
"id": "hero",
"name": "Hero",
"kind": "singleton",
"domain": "marketing",
"i18n": true,
"fields": {
"title": { "type": "string", "required": true },
"subtitle": { "type": "text" },
"cta_label": { "type": "string" },
"featured_post": { "type": "relation", "model": "blog-post" }
}
}After changing a model:
contentrain_validatecontentrain generateReport:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.