skills/by-role/data-scientist/model-card/SKILL.md
Document a machine learning model in a structured, transparent format for stakeholders, reviewers, and future maintainers. Use when the user says "document this model", "write a model card", "model documentation", "how should I document my ML model", "bias and fairness report", "model transparency", "what does this model do", "model handoff", "production model documentation", or needs to communicate what a model does, how it was built, where it works, and where it fails.
npx skillsauth add qa-aman/claude-skills model-cardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Based on "Interpretable Machine Learning" by Christoph Molnar, with structure informed by the Google Model Cards framework (Mitchell et al., 2019). The core principle: a model without documentation is a liability. Interpretability is not a post-hoc courtesy - it is a prerequisite for responsible deployment. A model card makes the model's intended use, performance limits, and failure modes explicit before the model reaches production.
## Model Overview
**Model name:** [descriptive name, not a variable name]
**Version:** [semantic version, e.g., v1.2.0]
**Model type:** [e.g., XGBoost binary classifier, LSTM time-series forecaster]
**Owner:** [team or individual responsible for this model]
**Last updated:** [date]
**What does this model do?**
[One paragraph. Plain language. No jargon. What input does it take? What output does it produce?
What decision does it support?]
**Primary use case:**
[Specific intended application. Be concrete: "Predicts 30-day churn probability for active
subscribers with > 60 days of account history."]
**Out-of-scope uses:**
[List uses this model was NOT designed for and should not be used for.]
## Training Data
**Data source:** [database, pipeline, or dataset name]
**Time range:** [e.g., Jan 2022 - Dec 2023]
**Size:** [rows and columns in the training set]
**Target variable:** [column name and class distribution, e.g., "churned: 8.3% positive"]
**Train / validation / test split:** [e.g., 70/15/15, stratified by target]
**Known data limitations:**
- [e.g., "Users from regions X and Y are underrepresented (< 2% of training data combined)"]
- [e.g., "Labels were collected through a manual review process with 15% inter-annotator disagreement"]
- [e.g., "Training data reflects behavior during a promotional period - may not generalize to steady-state"]
Report performance on the held-out test set. Always report more than accuracy.
## Performance
**Evaluation dataset:** [held-out test set description]
| Metric | Value | Notes |
|-----------|--------|--------------------------------------|
| AUC-ROC | 0.847 | Primary metric |
| Precision | 0.71 | At threshold = 0.45 |
| Recall | 0.63 | At threshold = 0.45 |
| F1 | 0.67 | |
| Brier | 0.082 | Calibration quality (lower = better) |
**Threshold selection rationale:**
[Why was this threshold chosen? What is the cost of false positives vs. false negatives?]
**Baseline comparison:**
[How does this model perform vs. the previous model or a naive baseline?]
Molnar's emphasis: aggregate performance metrics hide disparate performance across subgroups.
## Subgroup Performance
| Subgroup | AUC | Precision | Recall | Sample Size |
|----------------------|-------|-----------|--------|-------------|
| All users | 0.847 | 0.71 | 0.63 | 50,000 |
| Mobile users | 0.831 | 0.68 | 0.61 | 31,000 |
| Desktop users | 0.872 | 0.76 | 0.67 | 19,000 |
| Account age < 90d | 0.762 | 0.54 | 0.58 | 8,200 |
| Account age > 365d | 0.889 | 0.79 | 0.71 | 22,000 |
**Known performance gaps:**
[Call out any subgroup with substantially lower performance. Document whether this is
acceptable or a known risk to remediate.]
## Features and Interpretability
**Number of input features:** [N]
**Top features by importance:**
| Feature | Importance | Notes |
|--------------------------|------------|--------------------------------|
| days_since_last_login | 0.18 | Strongest predictor |
| session_count_30d | 0.14 | |
| support_tickets_open | 0.11 | Proxy for dissatisfaction |
**Interpretability method:** [SHAP, LIME, permutation importance, or none]
**Explainability at inference time:** [Yes/No - can individual predictions be explained?]
## Known Failure Modes
- **[Failure mode 1]:** [When does the model perform poorly? What data distribution causes it?]
- **[Failure mode 2]:** [e.g., "Model underperforms on accounts with < 30 days of history - cold start problem"]
- **[Failure mode 3]:** [e.g., "Performance degrades on data from promotional periods"]
## Deployment
**Serving environment:** [batch job / real-time API / embedded in product]
**Inference frequency:** [daily batch / per-request / hourly]
**Latency requirement:** [e.g., < 200ms p99]
**Input data pipeline:** [where does inference data come from? what preprocessing is applied?]
## Monitoring and Maintenance
**Data drift monitoring:** [what features are monitored? what triggers a retraining alert?]
**Performance monitoring:** [what metric is tracked in production? what is the degradation threshold?]
**Retraining cadence:** [monthly / on-trigger / manual review]
**Model owner for production issues:** [team or individual]
**Deprecation plan:** [when and how will this model be retired?]
1. Reporting only overall accuracy Bad: "The model is 91% accurate." Good: Report AUC, precision, recall at the operating threshold, and subgroup breakdowns. 91% overall can mean 60% on the segments that matter most.
2. Vague intended use statements Bad: "This model predicts user behavior." Good: "This model predicts 30-day voluntary churn for subscribers with > 60 days of account history, using account activity features from the past 90 days."
3. No out-of-scope section Bad: Documenting only what the model does, not what it should not be used for. Good: Explicitly listing misuse cases. Other teams will reuse your model for purposes you did not intend.
4. Skipping subgroup performance Bad: Publishing aggregate metrics without subgroup analysis. Good: Always stratify by the subgroups that matter for the use case. If the model supports a decision that affects people, fairness analysis is not optional.
development
Plan a webinar end-to-end using April Dunford's Obviously Awesome positioning framework to find the topic angle that makes the webinar obviously valuable to the right audience. Produces topic positioning, abstract, speaker brief, registration page, promotion sequence, day-of run-of-show, and post-webinar follow-up. Use when the user asks to plan a webinar, virtual event, online workshop, "we need a webinar on X", host a webinar, online masterclass, or any live virtual event with promotion and follow-up. Reads ICP, services, and brand voice from knowledge/.
development
Write long-form thought leadership articles, opinion pieces, industry POV essays, and CEO/founder bylines using the Made to Stick SUCCESs framework (Chip and Dan Heath). Use when the user asks for a long-form article, executive byline, opinion piece, industry POV, manifesto, "explain our point of view on X", or wants to publish an authority-building piece (1200-2500 words). Reads brand voice and positioning from knowledge/.
development
Plan a monthly content calendar across channels using the Content Marketing Matrix (Dave Chaffey, Smart Insights) - Entertain/Inspire/Educate/Convince. Every post gets a quadrant label. The monthly calendar must hit 40% Educate, 40% Inspire+Convince, 20% Entertain. Produces a week-by-week posting schedule with topics, formats, channels, and asset links. Use when the user says "content calendar", "social calendar", "plan next month's content", "what should we post", "content plan", "editorial calendar", "schedule posts for the month", or wants a structured posting plan for LinkedIn, Twitter, email, or blog. Reads brand voice, ICP, and past learnings from knowledge/.
development
Write SEO-optimized long-form articles targeting specific keywords using the They Ask You Answer Big 5 framework (Marcus Sheridan). Articles are categorized by Big 5 type (Cost, Problems, Versus, Best/Reviews, How-To) and structured accordingly. The "answer first" rule applies to every article. Use when the user asks for an SEO article, blog post for ranking, "rank for keyword X", organic content, search-optimized post, pillar page, or content for organic traffic. Includes keyword targeting, search intent matching, internal linking suggestions, and meta tags.