dbt-project-analyzer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited dbt-project-analyzer (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.
Analyzes dbt projects for best practices, performance, and maintainability following dbt Labs recommended patterns.
This skill examines dbt project structure, model dependencies, test coverage, documentation completeness, and adherence to naming conventions. It provides actionable recommendations for improving project health and maintainability.
{
"projectPath": {
"type": "string",
"description": "Path to the dbt project root directory",
"required": true
},
"manifestJson": {
"type": "object",
"description": "Parsed manifest.json from target/ directory (optional, will be loaded if not provided)"
},
"catalogJson": {
"type": "object",
"description": "Parsed catalog.json from target/ directory (optional)"
},
"runResults": {
"type": "object",
"description": "Parsed run_results.json for performance analysis (optional)"
},
"analysisDepth": {
"type": "string",
"enum": ["quick", "standard", "deep"],
"default": "standard",
"description": "Depth of analysis to perform"
},
"focusAreas": {
"type": "array",
"items": {
"type": "string",
"enum": ["performance", "testing", "documentation", "naming", "incremental", "dependencies"]
},
"description": "Specific areas to focus analysis on (all if not specified)"
}
}{
"healthScore": {
"type": "number",
"description": "Overall project health score (0-100)"
},
"issues": {
"type": "array",
"items": {
"severity": "error|warning|info",
"category": "string",
"model": "string",
"message": "string",
"recommendation": "string",
"line": "number"
}
},
"metrics": {
"testCoverage": {
"type": "number",
"description": "Percentage of models with tests"
},
"docCoverage": {
"type": "number",
"description": "Percentage of models/columns documented"
},
"incrementalRatio": {
"type": "number",
"description": "Percentage of eligible models using incremental"
},
"avgModelDepth": {
"type": "number",
"description": "Average depth in DAG"
},
"totalModels": {
"type": "number"
},
"totalTests": {
"type": "number"
}
},
"recommendations": {
"type": "array",
"items": {
"priority": "high|medium|low",
"category": "string",
"description": "string",
"effort": "string",
"impact": "string"
}
},
"dependencyGraph": {
"type": "object",
"description": "Simplified dependency graph for visualization"
}
}# Invoke skill for standard analysis
/skill dbt-project-analyzer --projectPath ./my-dbt-project{
"projectPath": "./analytics",
"analysisDepth": "deep",
"focusAreas": ["performance", "testing", "incremental"]
}{
"projectPath": "./dbt_project",
"manifestJson": "./target/manifest.json",
"runResults": "./target/run_results.json",
"focusAreas": ["performance"]
}| Layer | Pattern | Example |
|---|---|---|
| Staging | stg_<source>__<entity> | stg_stripe__payments |
| Intermediate | int_<entity>_<verb> | int_payments_pivoted |
| Marts | fct_<entity> or dim_<entity> | fct_orders, dim_customers |
| Severity | Condition |
|---|---|
| Error | No unique/not_null test on primary key |
| Warning | < 50% columns have tests |
| Info | Missing relationship tests |
| Model Type | Recommended | Reason |
|---|---|---|
| Staging | View or Ephemeral | Source transformations, low compute |
| Intermediate | Ephemeral | Reduce warehouse clutter |
| Marts | Table or Incremental | End-user queries, performance |
| Large tables (>1M rows) | Incremental | Reduce build time |
This skill integrates with the official dbt MCP server for enhanced capabilities:
dbt-project-setup.js)dbt-model-development.js)metrics-layer.js)incremental-model.js)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.