
System Diagnostician
- 121 installs
- 33 repo stars
- Updated December 25, 2025
- daffy0208/ai-dev-standards
Triage production or local failures, trace root causes across logs and services, isolate regressions introduced by recent agent changes, and propose minimal fixes with verification steps.
About
The system-diagnostician skill from daffy0208/ai-dev-standards guides Claude Code through operational debugging: reproduce failures, correlate logs and traces, bisect regressions from recent AI changes, and deliver minimal verified fixes for running SaaS, API, or agent systems.
- Root-cause isolation
- Log and trace correlation
- Regression bisection
- Minimal fix proposals
- Verification after repair
System Diagnostician by the numbers
- 121 all-time installs (skills.sh)
- Ranked #226 of 596 Debugging skills by installs in the Skillselion catalog
- Data as of Jul 30, 2026 (Skillselion catalog sync)
npx skills add https://github.com/daffy0208/ai-dev-standards --skill system-diagnosticianAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 121 |
|---|---|
| repo stars | ★ 33 |
| Last updated | December 25, 2025 |
| Repository | daffy0208/ai-dev-standards ↗ |
What it does
Triage production or local failures, trace root causes across logs and services, isolate regressions introduced by recent agent changes, and propose minimal fixes with verification steps.
Files
System Diagnostician
Analyze project health and recommend capabilities using Codex-powered system understanding
Purpose
Performs comprehensive project health analysis to diagnose issues, identify missing capabilities, and recommend improvements. Uses Codex to understand project structure, detect anti-patterns, analyze dependencies, and suggest optimal capability additions based on project goals.
When to Use
- New project onboarding: "What does this project need?"
- Health checks: "Is this project following best practices?"
- Gap analysis: "What's missing to achieve X?"
- Performance audits: "Why is this slow?"
- Security audits: "What security risks exist?"
- Dependency audits: "Are dependencies up to date and safe?"
Key Capabilities
- Project Structure Analysis: Understands project type, framework, architecture
- Capability Gap Detection: Identifies missing or incomplete capabilities
- Health Scoring: Quantifies project health across multiple dimensions
- Recommendation Engine: Suggests capabilities with impact/effort estimates
- Dependency Analysis: Checks for outdated, vulnerable, or unnecessary dependencies
- Anti-Pattern Detection: Identifies code smells and architectural issues
- Prioritized Action Plan: Orders recommendations by impact and effort
Inputs
inputs:
project_path: string # Path to project directory
capability_graph: string # Path to capability-graph.json
focus_areas: array # Optional: ["security", "performance", "testing"]
include_metrics: boolean # Include detailed metrics (default: false)Process
Step 1: Project Discovery
#!/bin/bash
# Analyze project structure
PROJECT_PATH="${1:-.}"
cd "$PROJECT_PATH"
echo "Discovering project structure..."
# Detect project type
PROJECT_TYPE="unknown"
FRAMEWORK="unknown"
if [ -f "package.json" ]; then
PROJECT_TYPE="nodejs"
# Detect framework
if grep -q "\"next\"" package.json; then
FRAMEWORK="nextjs"
elif grep -q "\"react\"" package.json; then
FRAMEWORK="react"
elif grep -q "\"express\"" package.json; then
FRAMEWORK="express"
fi
elif [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
PROJECT_TYPE="python"
fi
# Gather file statistics
FILE_COUNT=$(find . -type f -not -path "./node_modules/*" -not -path "./.git/*" | wc -l)
CODE_FILES=$(find . -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.py" | wc -l)
TEST_FILES=$(find . -name "*.test.*" -o -name "*.spec.*" | wc -l)
# Check for common directories
HAS_TESTS=$([ -d "tests" ] || [ -d "test" ] || [ -d "__tests__" ] && echo "true" || echo "false")
HAS_DOCS=$([ -f "README.md" ] && echo "true" || echo "false")
HAS_CI=$([ -d ".github/workflows" ] || [ -f ".gitlab-ci.yml" ] && echo "true" || echo "false")
# Package.json analysis
if [ -f "package.json" ]; then
DEPENDENCIES=$(jq -r '.dependencies // {} | keys | length' package.json)
DEV_DEPENDENCIES=$(jq -r '.devDependencies // {} | keys | length' package.json)
SCRIPTS=$(jq -r '.scripts // {} | keys | length' package.json)
fi
# Generate project state
cat > /tmp/project-state.json <<EOF
{
"project_type": "$PROJECT_TYPE",
"framework": "$FRAMEWORK",
"statistics": {
"total_files": $FILE_COUNT,
"code_files": $CODE_FILES,
"test_files": $TEST_FILES
},
"has_tests": $HAS_TESTS,
"has_docs": $HAS_DOCS,
"has_ci": $HAS_CI,
"dependencies": ${DEPENDENCIES:-0},
"dev_dependencies": ${DEV_DEPENDENCIES:-0},
"scripts": ${SCRIPTS:-0}
}
EOFStep 2: Health Assessment with Codex
# Use Codex to assess project health
PROJECT_STATE=$(cat /tmp/project-state.json)
# Get file listing for context
FILE_STRUCTURE=$(find . -type f -not -path "./node_modules/*" -not -path "./.git/*" | head -100)
codex exec "
Analyze this project's health and identify issues:
PROJECT STATE:
$PROJECT_STATE
FILE STRUCTURE (first 100 files):
$FILE_STRUCTURE
PACKAGE.JSON:
$(cat package.json 2>/dev/null || echo "{}")
Perform health assessment across these dimensions:
1. **Testing**: Test coverage, test quality, missing tests
2. **Documentation**: README quality, API docs, comments
3. **Security**: Vulnerabilities, exposed secrets, auth patterns
4. **Performance**: Bottlenecks, optimization opportunities
5. **Code Quality**: Linting, formatting, type safety
6. **Architecture**: Structure, patterns, scalability
7. **Dependencies**: Outdated packages, security issues, bloat
8. **CI/CD**: Automation, deployment strategy
For each dimension, provide:
- score: 0.0-1.0
- status: \"excellent\" | \"good\" | \"needs_improvement\" | \"critical\"
- issues: array of problems found
- recommendations: array of specific actions
Output JSON:
{
\"overall_health\": 0.75,
\"dimensions\": {
\"testing\": {
\"score\": 0.60,
\"status\": \"needs_improvement\",
\"issues\": [\"Only 15% test coverage\", \"No E2E tests\"],
\"recommendations\": [\"Add unit tests for core functions\", \"Set up Playwright for E2E\"]
},
\"security\": {
\"score\": 0.50,
\"status\": \"critical\",
\"issues\": [\"No input validation\", \"SQL injection possible\"],
\"recommendations\": [\"Add input sanitization\", \"Use parameterized queries\"]
}
}
}
Output ONLY valid JSON.
" > /tmp/health-assessment.jsonStep 3: Capability Gap Analysis
# Identify missing capabilities using capability graph
HEALTH_ASSESSMENT=$(cat /tmp/health-assessment.json)
CAPABILITY_GRAPH=$(cat META/capability-graph.json)
codex exec "
Based on this health assessment, identify missing or incomplete capabilities:
HEALTH ASSESSMENT:
$HEALTH_ASSESSMENT
AVAILABLE CAPABILITIES:
$CAPABILITY_GRAPH
For each identified issue, suggest capabilities that would address it.
Output JSON:
{
\"gaps\": [
{
\"issue\": \"No input validation\",
\"severity\": \"high\",
\"dimension\": \"security\",
\"suggested_capabilities\": [\"security-engineer\", \"input-validator-mcp\"],
\"impact\": \"high\",
\"effort\": \"medium\"
}
]
}
Output ONLY valid JSON.
" > /tmp/capability-gaps.jsonStep 4: Generate Recommendations
# Prioritize recommendations by impact and effort
python3 <<'PYTHON_SCRIPT'
import json
# Load data
with open('/tmp/health-assessment.json') as f:
health = json.load(f)
with open('/tmp/capability-gaps.json') as f:
gaps = json.load(f)
# Score recommendations
for gap in gaps['gaps']:
# Impact score
impact_scores = {'critical': 1.0, 'high': 0.8, 'medium': 0.5, 'low': 0.3}
impact = impact_scores.get(gap.get('impact', 'medium'), 0.5)
# Effort score (inverted - lower effort = higher score)
effort_scores = {'low': 1.0, 'medium': 0.6, 'high': 0.3}
effort = effort_scores.get(gap.get('effort', 'medium'), 0.6)
# Priority = impact * effort
gap['priority_score'] = round(impact * effort, 3)
# Sort by priority
gaps['gaps'].sort(key=lambda x: x['priority_score'], reverse=True)
# Write prioritized gaps
with open('/tmp/recommendations.json', 'w') as f:
json.dump(gaps, f, indent=2)
print(f"Generated {len(gaps['gaps'])} recommendations")
PYTHON_SCRIPTStep 5: Generate Action Plan
# Create structured action plan
python3 <<'PYTHON_SCRIPT'
import json
from datetime import datetime
# Load all data
with open('/tmp/health-assessment.json') as f:
health = json.load(f)
with open('/tmp/recommendations.json') as f:
recommendations = json.load(f)
# Generate action plan
action_plan = {
'project': 'PROJECT_NAME',
'analyzed_at': datetime.utcnow().isoformat() + 'Z',
'overall_health': health.get('overall_health', 0),
'health_assessment': health,
'recommendations': recommendations['gaps'][:10], # Top 10
'quick_wins': [
r for r in recommendations['gaps']
if r.get('effort') == 'low' and r.get('impact') in ['high', 'critical']
][:3],
'critical_issues': [
r for r in recommendations['gaps']
if r.get('severity') == 'high' or r.get('severity') == 'critical'
]
}
with open('/tmp/diagnostic-report.json', 'w') as f:
json.dump(action_plan, f, indent=2)
PYTHON_SCRIPTScoring System
Health Dimensions
Each dimension scored 0.0-1.0:
const dimensions = {
testing: {
weight: 0.15,
factors: ['coverage', 'test_quality', 'test_types']
},
documentation: {
weight: 0.1,
factors: ['readme', 'api_docs', 'code_comments']
},
security: {
weight: 0.2,
factors: ['vulnerabilities', 'auth', 'input_validation']
},
performance: {
weight: 0.15,
factors: ['load_time', 'memory_usage', 'optimization']
},
code_quality: {
weight: 0.15,
factors: ['linting', 'typing', 'complexity']
},
architecture: {
weight: 0.1,
factors: ['structure', 'patterns', 'scalability']
},
dependencies: {
weight: 0.1,
factors: ['up_to_date', 'security', 'bloat']
},
ci_cd: {
weight: 0.05,
factors: ['automation', 'deployment', 'monitoring']
}
}
// Overall health = weighted average
overallHealth = sum(dimension.score * dimension.weight)Recommendation Priority
function calculatePriority(gap) {
const impactScores = { critical: 1.0, high: 0.8, medium: 0.5, low: 0.3 }
const effortScores = { low: 1.0, medium: 0.6, high: 0.3 }
const impact = impactScores[gap.impact] || 0.5
const effort = effortScores[gap.effort] || 0.6
return impact * effort
}Example Output
{
"project": "my-nextjs-app",
"analyzed_at": "2025-10-28T12:00:00Z",
"overall_health": 0.68,
"health_assessment": {
"overall_health": 0.68,
"dimensions": {
"testing": {
"score": 0.4,
"status": "needs_improvement",
"issues": ["Only 15% test coverage", "No E2E tests", "Missing integration tests"],
"recommendations": [
"Add unit tests for API routes",
"Set up Playwright for E2E testing",
"Add integration tests for database"
]
},
"security": {
"score": 0.5,
"status": "critical",
"issues": [
"No input validation on API routes",
"CORS configured too permissively",
"Environment variables exposed in client"
],
"recommendations": [
"Add input validation with Zod",
"Restrict CORS to specific origins",
"Use NEXT_PUBLIC_ prefix correctly"
]
}
}
},
"recommendations": [
{
"issue": "No input validation on API routes",
"severity": "high",
"dimension": "security",
"suggested_capabilities": ["security-engineer", "api-designer"],
"impact": "high",
"effort": "medium",
"priority_score": 0.48
},
{
"issue": "Only 15% test coverage",
"severity": "medium",
"dimension": "testing",
"suggested_capabilities": ["testing-strategist"],
"impact": "high",
"effort": "high",
"priority_score": 0.24
}
],
"quick_wins": [
{
"issue": "Missing README documentation",
"severity": "low",
"dimension": "documentation",
"suggested_capabilities": ["technical-writer"],
"impact": "medium",
"effort": "low",
"priority_score": 0.5
}
],
"critical_issues": [
{
"issue": "No input validation on API routes",
"severity": "high",
"dimension": "security",
"suggested_capabilities": ["security-engineer", "api-designer"],
"impact": "high",
"effort": "medium",
"priority_score": 0.48
}
]
}Integration
With orchestration-planner
Recommendations include suggested capabilities that planner can use to generate workflows.
With skill-validator
Health assessment includes validation of existing capabilities.
With Repository Brain
Will integrate into scripts/brain/diagnose command for interactive diagnostics.
Success Metrics
- ✅ Health scores correlate with manual audits
- ✅ Recommendations are actionable and specific
- ✅ Quick wins provide immediate value
- ✅ Critical issues correctly prioritized
- ✅ Suggested capabilities are relevant
Related Skills
- orchestration-planner: Uses recommendations to plan improvements
- skill-validator: Validates existing capabilities
- capability-graph-builder: Provides capability options
#!/bin/bash
# Diagnose project health and recommend capabilities
set -e
# Parse arguments
PROJECT_PATH="${1:-.}"
GRAPH_PATH="${2:-META/capability-graph.json}"
echo "Diagnosing project: $PROJECT_PATH"
echo ""
# Navigate to project
cd "$PROJECT_PATH"
# Step 1: Project discovery
echo "[1/5] Discovering project structure..."
# Detect project type
PROJECT_TYPE="unknown"
FRAMEWORK="unknown"
if [ -f "package.json" ]; then
PROJECT_TYPE="nodejs"
# Detect framework
if grep -q "\"next\"" package.json 2>/dev/null; then
FRAMEWORK="nextjs"
elif grep -q "\"react\"" package.json 2>/dev/null; then
FRAMEWORK="react"
elif grep -q "\"express\"" package.json 2>/dev/null; then
FRAMEWORK="express"
fi
elif [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
PROJECT_TYPE="python"
fi
# Gather statistics
FILE_COUNT=$(find . -type f -not -path "./node_modules/*" -not -path "./.git/*" 2>/dev/null | wc -l | tr -d ' ')
CODE_FILES=$(find . \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.py" \) -not -path "./node_modules/*" 2>/dev/null | wc -l | tr -d ' ')
TEST_FILES=$(find . \( -name "*.test.*" -o -name "*.spec.*" \) -not -path "./node_modules/*" 2>/dev/null | wc -l | tr -d ' ')
# Check features
HAS_TESTS=$([ -d "tests" ] || [ -d "test" ] || [ -d "__tests__" ] && echo "true" || echo "false")
HAS_DOCS=$([ -f "README.md" ] && echo "true" || echo "false")
HAS_CI=$([ -d ".github/workflows" ] || [ -f ".gitlab-ci.yml" ] && echo "true" || echo "false")
# Package.json analysis
DEPENDENCIES=0
DEV_DEPENDENCIES=0
SCRIPTS=0
if [ -f "package.json" ]; then
DEPENDENCIES=$(jq -r '.dependencies // {} | keys | length' package.json 2>/dev/null || echo 0)
DEV_DEPENDENCIES=$(jq -r '.devDependencies // {} | keys | length' package.json 2>/dev/null || echo 0)
SCRIPTS=$(jq -r '.scripts // {} | keys | length' package.json 2>/dev/null || echo 0)
fi
# Generate project state
cat > /tmp/project-state.json <<EOF
{
"project_type": "$PROJECT_TYPE",
"framework": "$FRAMEWORK",
"statistics": {
"total_files": $FILE_COUNT,
"code_files": $CODE_FILES,
"test_files": $TEST_FILES
},
"has_tests": $HAS_TESTS,
"has_docs": $HAS_DOCS,
"has_ci": $HAS_CI,
"dependencies": $DEPENDENCIES,
"dev_dependencies": $DEV_DEPENDENCIES,
"scripts": $SCRIPTS
}
EOF
echo " Project type: $PROJECT_TYPE ($FRAMEWORK)"
echo " Files: $FILE_COUNT total, $CODE_FILES code, $TEST_FILES test"
# Step 2: Health assessment
echo "[2/5] Assessing project health..."
cd - > /dev/null
PROJECT_STATE=$(cat /tmp/project-state.json)
FILE_STRUCTURE=$(find "$PROJECT_PATH" -type f -not -path "*/node_modules/*" -not -path "*/.git/*" 2>/dev/null | head -50)
PACKAGE_JSON=$(cat "$PROJECT_PATH/package.json" 2>/dev/null || echo "{}")
codex exec "
Analyze this project's health and identify issues:
PROJECT STATE:
$PROJECT_STATE
FILE STRUCTURE (sample):
$FILE_STRUCTURE
PACKAGE.JSON:
$PACKAGE_JSON
Perform health assessment across these dimensions:
1. Testing: Coverage, quality, types
2. Documentation: README, API docs, comments
3. Security: Vulnerabilities, auth, validation
4. Performance: Optimization opportunities
5. Code Quality: Linting, typing, complexity
6. Architecture: Structure, patterns
7. Dependencies: Updates, security, bloat
8. CI/CD: Automation, deployment
For each dimension:
- score: 0.0-1.0
- status: excellent|good|needs_improvement|critical
- issues: array of problems
- recommendations: array of actions
Output JSON:
{
\"overall_health\": 0.75,
\"dimensions\": {
\"testing\": {
\"score\": 0.60,
\"status\": \"needs_improvement\",
\"issues\": [\"Low test coverage\"],
\"recommendations\": [\"Add unit tests\"]
}
}
}
Output ONLY valid JSON.
" > /tmp/health-assessment.json
OVERALL_HEALTH=$(python3 -c "import json; h = json.load(open('/tmp/health-assessment.json')); print(h.get('overall_health', 0))")
echo " Overall health: $OVERALL_HEALTH"
# Step 3: Capability gap analysis
echo "[3/5] Identifying capability gaps..."
HEALTH_ASSESSMENT=$(cat /tmp/health-assessment.json)
CAPABILITY_GRAPH=""
if [ -f "$GRAPH_PATH" ]; then
CAPABILITY_GRAPH=$(cat "$GRAPH_PATH")
else
echo " ⚠️ Capability graph not found, using limited analysis"
CAPABILITY_GRAPH="{}"
fi
codex exec "
Based on health assessment, identify missing capabilities:
HEALTH ASSESSMENT:
$HEALTH_ASSESSMENT
AVAILABLE CAPABILITIES:
$CAPABILITY_GRAPH
For each issue, suggest capabilities that would address it.
Output JSON:
{
\"gaps\": [
{
\"issue\": \"description\",
\"severity\": \"high|medium|low\",
\"dimension\": \"testing\",
\"suggested_capabilities\": [\"capability-name\"],
\"impact\": \"high|medium|low\",
\"effort\": \"low|medium|high\"
}
]
}
Output ONLY valid JSON.
" > /tmp/capability-gaps.json
GAP_COUNT=$(python3 -c "import json; g = json.load(open('/tmp/capability-gaps.json')); print(len(g.get('gaps', [])))")
echo " Found $GAP_COUNT capability gaps"
# Step 4: Prioritize recommendations
echo "[4/5] Prioritizing recommendations..."
python3 <<'PYTHON_SCRIPT'
import json
# Load data
with open('/tmp/capability-gaps.json') as f:
gaps = json.load(f)
# Score recommendations
impact_scores = {'critical': 1.0, 'high': 0.8, 'medium': 0.5, 'low': 0.3}
effort_scores = {'low': 1.0, 'medium': 0.6, 'high': 0.3}
for gap in gaps['gaps']:
impact = impact_scores.get(gap.get('impact', 'medium'), 0.5)
effort = effort_scores.get(gap.get('effort', 'medium'), 0.6)
gap['priority_score'] = round(impact * effort, 3)
# Sort by priority
gaps['gaps'].sort(key=lambda x: x['priority_score'], reverse=True)
with open('/tmp/recommendations.json', 'w') as f:
json.dump(gaps, f, indent=2)
PYTHON_SCRIPT
# Step 5: Generate report
echo "[5/5] Generating diagnostic report..."
python3 <<PYTHON_SCRIPT
import json
from datetime import datetime
# Load all data
with open('/tmp/health-assessment.json') as f:
health = json.load(f)
with open('/tmp/recommendations.json') as f:
recommendations = json.load(f)
with open('/tmp/project-state.json') as f:
project_state = json.load(f)
# Generate action plan
action_plan = {
'project': '${PROJECT_PATH##*/}',
'analyzed_at': datetime.utcnow().isoformat() + 'Z',
'project_state': project_state,
'overall_health': health.get('overall_health', 0),
'health_assessment': health,
'recommendations': recommendations['gaps'][:10],
'quick_wins': [
r for r in recommendations['gaps']
if r.get('effort') == 'low' and r.get('impact') in ['high', 'critical']
][:3],
'critical_issues': [
r for r in recommendations['gaps']
if r.get('severity') in ['high', 'critical']
]
}
with open('/tmp/diagnostic-report.json', 'w') as f:
json.dump(action_plan, f, indent=2)
# Print summary
print("")
print("━" * 60)
print("DIAGNOSTIC REPORT")
print("━" * 60)
print(f"\nProject: {action_plan['project']}")
print(f"Overall Health: {action_plan['overall_health']:.2f}")
# Health by dimension
print("\nHealth by Dimension:")
for dim, data in health.get('dimensions', {}).items():
score = data.get('score', 0)
status = data.get('status', 'unknown')
icon = "✅" if score >= 0.8 else "⚠️" if score >= 0.6 else "❌"
print(f" {icon} {dim:20s} {score:.2f} ({status})")
# Quick wins
if action_plan['quick_wins']:
print(f"\n🚀 Quick Wins ({len(action_plan['quick_wins'])}):")
for i, win in enumerate(action_plan['quick_wins'], 1):
print(f" {i}. {win['issue']}")
print(f" → {', '.join(win['suggested_capabilities'])}")
# Critical issues
if action_plan['critical_issues']:
print(f"\n❌ Critical Issues ({len(action_plan['critical_issues'])}):")
for i, issue in enumerate(action_plan['critical_issues'], 1):
print(f" {i}. {issue['issue']}")
print(f" → {', '.join(issue['suggested_capabilities'])}")
# Top recommendations
print(f"\n📋 Top Recommendations:")
for i, rec in enumerate(action_plan['recommendations'][:5], 1):
priority = rec.get('priority_score', 0)
print(f" {i}. [{rec['severity'].upper()}] {rec['issue']}")
print(f" Impact: {rec['impact']} | Effort: {rec['effort']} | Priority: {priority}")
print(f" → {', '.join(rec['suggested_capabilities'])}")
print("\n" + "━" * 60)
print(f"Full report: /tmp/diagnostic-report.json")
print("━" * 60)
print("")
PYTHON_SCRIPT
# Cleanup
rm -f /tmp/project-state.json /tmp/health-assessment.json /tmp/capability-gaps.json /tmp/recommendations.json
name: system-diagnostician
kind: skill
description: Performs Codex-assisted project health diagnostics, identifies capability gaps, and produces prioritized improvement plans.
inputs_schema:
type: object
properties:
project_path:
type: string
description: Path to the project directory to analyze.
capability_graph:
type: string
description: Path to capability-graph.json describing available capabilities.
focus_areas:
type: array
description: Optional focus areas to emphasize in the assessment.
items:
type: string
include_metrics:
type: boolean
description: Include detailed metric outputs in the report (default false).
required:
- project_path
- capability_graph
preconditions:
- check: directory_exists(inputs.project_path)
description: Project directory must exist and be readable.
required: true
- check: file_exists(inputs.capability_graph)
description: Capability graph JSON must be present for gap analysis.
required: true
- check: command_available('codex')
description: Codex CLI must be installed to perform AI-assisted assessments.
required: true
- check: command_available('jq')
description: jq executable needed to inspect JSON project metadata.
required: true
- check: command_available('python3')
description: Python 3 runtime required to score and prioritize recommendations.
required: true
- check: writable_path('/tmp')
description: Temporary directory must allow writing intermediate diagnostic files.
required: true
effects:
- creates_project_state_snapshot
- creates_health_assessment_report
- creates_capability_gap_analysis
- creates_prioritized_action_plan
- updates_project_health_metrics
domains:
- analysis
- security
- testing
- performance
- documentation
- architecture
- dependencies
- ci_cd
cost: medium
latency: slow
risk_level: safe
side_effects:
- reads_repository
- scans_dependencies
- makes_api_calls
idempotent: true
success_signal: diagnostic-report.json generated with non-empty recommendations and critical_issues arrays.
failure_signals:
- codex execution returns an error or invalid JSON payload.
- capability graph file missing or unreadable.
- health assessment JSON fails schema validation.
compatibility:
requires:
- capability-graph-builder
composes_with:
- repository-brain
- skill-validator
enables:
- orchestration-planner
observability:
logs:
- system_diagnostician.discovery
- system_diagnostician.codex_assessment
- system_diagnostician.action_plan
metrics:
- system_diagnostician.overall_health_score
- system_diagnostician.recommendation_priority_score
metadata:
version: 1.0.0
author: codex
created_at: 2025-01-01T00:00:00Z
updated_at: 2025-01-01T00:00:00Z
tags:
- diagnostics
- capability-planning
- project-health
examples:
- Assess a newly onboarded repository to determine missing capabilities.
- Run a quarterly health check to identify critical security or testing gaps.
- Produce prioritized improvement roadmap for performance audit findings.