System Diagnostician について
System Diagnosticianは、Codexを使ってプロジェクトの健全性や能力の不足を分析するスキルです。構造、依存関係、アンチパターンを調べ、健全性スコアと優先順位付きの改善計画を作成します。
主な機能
- 01プロジェクト構造とアーキテクチャの分析
- 02能力ギャップの検出
- 03複数の観点で健全性を評価
- 04依存関係とアンチパターンの分析
- 05優先順位付き提案とアクションプラン
活用シーン
- 01プロジェクトの引き継ぎ時に状態を評価
- 02目標達成に不足している機能を特定
- 03パフォーマンスやセキュリティの問題を調査
- 04依存関係の状態とコードパターンを確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ daffy0208/ ai-dev-standards --skill system-diagnosticianインストール後、Claude Code で/system-diagnosticianを入力して読み込まれたか確認します。
同梱ファイルmanifest.yamldiagnose.sh
詳細
システム診断
Codex によるシステム理解を活用してプロジェクトの健全性を分析し、機能を推奨します
目的
包括的なプロジェクト健全性分析を行い、問題を診断し、不足している機能を特定して改善策を推奨します。Codex を使用してプロジェクト構造を理解し、アンチパターンを検出し、依存関係を分析して、プロジェクトの目標に基づいた最適な機能の追加を提案します。
使用するタイミング
- 新しいプロジェクトの導入時:「このプロジェクトに必要なものは何ですか?」
- 健全性チェック:「このプロジェクトはベストプラクティスに従っていますか?」
- ギャップ分析:「X を達成するために不足しているものは何ですか?」
- パフォーマンス監査:「なぜ遅いのですか?」
- セキュリティ監査:「どのようなセキュリティリスクがありますか?」
- 依存関係の監査:「依存関係は最新で安全ですか?」
主な機能
- プロジェクト構造分析:プロジェクトの種類、フレームワーク、アーキテクチャを把握します
- 機能ギャップの検出:不足または不完全な機能を特定します
- 健全性スコアリング:複数の観点からプロジェクトの健全性を数値化します
- 推奨エンジン:影響度と作業量の見積もりを添えて機能を提案します
- 依存関係分析:古い、脆弱、または不要な依存関係を確認します
- アンチパターンの検出:コードの問題やアーキテクチャ上の問題を特定します
- 優先順位付けされたアクションプラン:影響度と作業量に基づいて推奨事項を並べます
入力
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)
プロセス
ステップ 1:プロジェクトの調査
#!/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}
}
EOF
ステップ 2: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.json
ステップ 3:機能ギャップ分析
# 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.json
ステップ 4:推奨事項の生成
# 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_SCRIPT
ステップ 5:アクションプランの生成
# 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_SCRIPT
スコアリングシステム
健全性の観点
各観点を 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)
推奨事項の優先度
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
}
出力例
{
"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
}
]
}
統合
orchestration-planner との連携
推奨事項には、プランナーがワークフローの生成に使用できる機能の提案が含まれます。
skill-validator との連携
健全性評価では、既存の機能の検証も行います。
Repository Brain との連携
対話形式の診断を行う scripts/brain/diagnose コマンドに統合する予定です。
成功指標
- ✅ 健全性スコアが手動監査の結果と相関している
- ✅ 推奨事項が実行可能で具体的である
- ✅ すぐに実施できる改善策が即効性のある価値をもたらす
- ✅ 重大な問題に適切な優先順位が付けられている
- ✅ 提案された機能がプロジェクトに適している
関連スキル
- orchestration-planner:推奨事項を使用して改善を計画します
- skill-validator:既存の機能を検証します
- capability-graph-builder:機能の選択肢を提供します
コメント
Markdown 対応