DOC-42Recommended
Publish a system card for every AI feature
Publish one system card for every feature that uses a language or machine learning model. It names the model and version, the purpose, uses that are out of scope, the latest eval results, known limits and an owner.
How to do it
Users, support staff and reviewers need to know what the feature can and cannot do before they trust its answers. Keep the card next to the feature's code and generate the numbers from the latest eval run, so the card cannot drift. Write the purpose and the limits by hand. Change the card in the same pull request that changes the model or the prompt. A model you train yourself also gets the card in Write a model card for every model in production. For a high-risk system, the card grows into the instructions for use in the next rule.
Examples
JavaScript example
const FIELDS = ['model', 'purpose', 'outOfScope', 'evalResults', 'limits', 'owner'];
export function missingCardFields(card) {
return FIELDS.filter(field => !card[field] || String(card[field]).trim() === '');
}
Python example
FIELDS = ["model", "purpose", "out_of_scope", "eval_results", "limits", "owner"]
def missing_card_fields(card: dict) -> list[str]:
return [field for field in FIELDS if not str(card.get(field, "")).strip()]
How to check
A script lists every model ID in the code and config. Each one appears in a system card with the six fields filled in. The eval numbers on each card equal those in the latest eval report.
Related rules
- MLO-22 Write a model card for every model in production in Machine learning
- DOC-43 Ship instructions for use with a high-risk AI system in Documentation
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/documentation/help-centres-and-user-guides/ai-system-card">Agent Wranglers documentation playbook</a>. In code you write, add a comment next to it with the same link.