| name | when-analyzing-skill-gaps-use-skill-gap-analyzer |
| description | Analyze skill library to identify coverage gaps, redundant overlaps, optimization opportunities, and provide recommendations for skill portfolio improvement Use when this capability is needed. |
| metadata | {"author":"dnyoussef"} |
Skill Gap Analyzer
Purpose: Perform comprehensive analysis of skill library to identify missing capabilities, redundant functionality, optimization opportunities, and provide actionable recommendations for skill portfolio improvement.
When to Use This Skill
- When building a new skill library
- Quarterly skill portfolio reviews
- Before large refactoring efforts
- When considering new skill additions
- After major project pivots
- When optimizing resource allocation
Analysis Dimensions
1. Coverage Gap Analysis
- Domain coverage mapping
- Missing capability identification
- Use case scenario testing
- Workflow completeness assessment
- Integration point analysis
2. Redundancy Detection
- Duplicate functionality identification
- Overlapping capability mapping
- Consolidation opportunity analysis
- Version conflict detection
- Naming collision identification
3. Optimization Opportunities
- Under-utilized skill detection
- Over-complex skill identification
- Composability improvement suggestions
- Dependency optimization
- Performance bottleneck analysis
4. Usage Pattern Analysis
- Frequency metrics
- Co-occurrence patterns
- Success rate tracking
- Token efficiency measurement
- Agent utilization patterns
5. Recommendation Generation
- Prioritized action items
- Consolidation strategies
- New skill proposals
- Deprecation candidates
- Restructuring plans
Execution Process
Phase 1: Library Inventory
npx claude-flow@alpha hooks pre-task --description "Analyzing skill library gaps"
find ~/.claude/skills -name "SKILL.md" -o -name "*.skill.md"
Inventory Script:
function inventorySkills(skillDirectory) {
const inventory = {
totalSkills: 0,
categories: {},
capabilities: {},
agents: {},
complexity: {},
tags: {}
};
const skillFiles = findSkillFiles(skillDirectory);
for (const file of skillFiles) {
const metadata = parseYAMLFrontmatter(file);
inventory.totalSkills++;
const category = extractCategory(file);
inventory.categories[category] = (inventory.categories[category] || 0) + 1;
const capabilities = extractCapabilities(metadata.description);
capabilities.forEach(cap => {
inventory.capabilities[cap] = (inventory.capabilities[cap] || []);
inventory.capabilities[cap].push(metadata.name);
});
if (metadata.agents_required) {
metadata.agents_required.forEach(agent => {
inventory.[agent] = (inventory.[agent] || ) + ;
});
}
inventory.[metadata. || ] =
(inventory.[metadata. || ] || ) + ;
(metadata.) {
metadata..( {
inventory.[tag] = (inventory.[tag] || ) + ;
});
}
}
inventory;
}
() {
capabilities = [];
verbs = description.() || [];
capabilities.(...verbs.( v.()));
[... (capabilities)];
}
Store Inventory:
npx claude-flow@alpha memory store --key "gap-analysis/inventory" --value "{
\"totalSkills\": <count>,
\"categories\": {...},
\"capabilities\": {...},
\"timestamp\": \"<ISO8601>\"
}"
Phase 2: Coverage Gap Detection
Domain Coverage Matrix:
function analyzeCoverageGaps(inventory, requiredDomains) {
const gaps = [];
const domains = {
"Development": [
"code-generation", "testing", "debugging", "refactoring",
"documentation", "code-review", "architecture"
],
"DevOps": [
"deployment", "monitoring", "ci-cd", "infrastructure",
"security", "scaling", "backup-recovery"
],
"Project Management": [
"planning", "estimation", "tracking", "reporting",
"risk-management", "stakeholder-communication"
],
"Data": [
"data-analysis", "data-transformation", "data-validation",
"data-migration", "data-visualization"
],
"AI/ML": [
"model-training", "inference", "optimization",
"evaluation", "deployment", "monitoring"
],
"Integration": [
"api-integration", "webhook-handling", "event-processing",
"message-queue",
]
};
( [domain, capabilities] .(domains)) {
coverage = capabilities.( {
covered = inventory.[cap]?. > ;
skills = inventory.[cap] || [];
{ : cap, covered, skills };
});
missingCaps = coverage.( !c.);
(missingCaps. > ) {
gaps.({
: domain,
: ((capabilities. - missingCaps.) / capabilities. * ).() + ,
: missingCaps.( c.),
: (domain, missingCaps., capabilities.)
});
}
}
gaps;
}
() {
coverageRatio = - (missingCount / totalCount);
domainImportance = {
: ,
: ,
: ,
: ,
: ,
:
};
score = coverageRatio * (domainImportance[domain] || );
(score < ) ;
(score < ) ;
(score < ) ;
;
}
Use Case Scenario Testing:
function testScenarioCoverage(inventory) {
const scenarios = [
{
name: "Full-stack web app development",
requiredCapabilities: [
"code-generation", "testing", "database-design",
"api-integration", "deployment", "monitoring"
]
},
{
name: "ML model training and deployment",
requiredCapabilities: [
"data-analysis", "model-training", "evaluation",
"optimization", "deployment", "monitoring"
]
},
{
name: "GitHub workflow automation",
requiredCapabilities: [
"code-review", "testing", "ci-cd", "release-management",
"issue-tracking", "documentation"
]
},
{
name: "Prompt engineering and optimization",
requiredCapabilities: [
"prompt-analysis", "optimization", "testing",
"documentation", "version-control"
]
}
];
const scenarioResults = scenarios.map(scenario => {
const coverage = scenario.requiredCapabilities.map( ({
: cap,
: inventory.[cap]?. > ,
: inventory.[cap] || []
}));
coveragePercent = (coverage.( c.). /
coverage. * ).();
{
: scenario.,
: coveragePercent + ,
: coverage.( !c.).( c.),
: coverage.( c.)
};
});
scenarioResults;
}
Phase 3: Redundancy Detection
Overlap Analysis:
function detectRedundancy(inventory) {
const redundancies = [];
for (const [capability, skills] of Object.entries(inventory.capabilities)) {
if (skills.length > 2) {
const skillDetails = skills.map(name => loadSkillDetails(name));
const overlap = analyzeOverlap(skillDetails);
if (overlap.percentage > 70) {
redundancies.push({
capability: capability,
skillCount: skills.length,
skills: skills,
overlapPercentage: overlap.percentage,
recommendation: generateConsolidationRecommendation(skillDetails)
});
}
}
}
const namePatterns = {};
for (const [category, skillList] of Object.entries(inventory.categories)) {
const patterns = skillList.map(extractNamePattern);
}
redundancies;
}
() {
descriptions = skills.( s.);
commonWords = (descriptions);
allWords = (descriptions.( d.()));
overlap = commonWords. / allWords. * ;
{ : overlap, : .(commonWords) };
}
Phase 4: Optimization Opportunities
Researcher Agent Task:
npx claude-flow@alpha memory store --key "gap-analysis/optimization" --value "{
\"underutilized\": [...],
\"overcomplicated\": [...],
\"composability\": [...],
\"dependencies\": [...]
}"
Optimization Detection:
function identifyOptimizations(inventory, usageMetrics) {
const optimizations = [];
const underutilized = usageMetrics.filter(m =>
m.frequency < 0.05 &&
m.lastUsed > 90
).map(m => ({
skill: m.name,
frequency: m.frequency,
lastUsed: m.lastUsed + " days ago",
recommendation: "Review for deprecation or promotion"
}));
optimizations.push({
type: "under-utilized",
count: underutilized.length,
skills: underutilized
});
const overcomplex = usageMetrics.filter(m =>
m.avgTokens > 5000 &&
m.successRate < 0.7
).map(m => ({
skill: m.name,
avgTokens: m.,
: (m. * ).() + ,
:
}));
optimizations.({
: ,
: overcomplex.,
: overcomplex
});
composable = (inventory);
optimizations.({
: ,
: composable.,
: composable
});
optimizations;
}
Phase 5: Recommendation Generation
Report Format:
## Skill Gap Analysis Report
**Date:** <timestamp>
**Total Skills Analyzed:** <count>
**Analysis Duration:** <time>
---
## Executive Summary
### Coverage
- Overall coverage: <percentage>%
- Critical gaps: <count>
- High-priority gaps: <count>
### Redundancy
- Duplicate functionality: <count> instances
- Consolidation opportunities: <count>
- Potential savings: <tokens/storage>
### Optimization
- Under-utilized skills: <count>
- Over-complex skills: <count>
- Composability improvements: <count>
---
## Coverage Gaps
### Critical Priority
1. **Domain:** [name]
- Coverage: [percentage]%
- Missing capabilities:
- [capability 1]
[capability 2]
Recommended action: Create skill "[proposed-name]"
Impact: [high/medium/low]
...
---
[name]
Handled by: [skill1], [skill2], [skill3]
Overlap: [percentage]%
Recommendation: Consolidate into "[new-skill-name]"
Estimated savings: [tokens] tokens, [storage] MB
---
| Skill | Frequency | Last Used | Recommendation |
|-------|-----------|-----------|----------------|
| [name] | [%] | [days] ago | [action] |
| Skill | Avg Tokens | Success Rate | Recommendation |
|-------|------------|--------------|----------------|
| [name] | [count] | [%] | [action] |
[description]
Current approach: [details]
Improved approach: [details]
Benefits: [list]
---
| Scenario | Coverage | Missing | Can Execute? |
|----------|----------|---------|--------------|
| Full-stack web app | [%] | [list] | [yes/no] |
| ML deployment | [%] | [list] | [yes/no] |
| GitHub automation | [%] | [list] | [yes/no] |
---
[ ] Create skill: [name] - [justification]
[ ] Consolidate: [skills] → [new-skill]
[ ] Deprecate: [skill] - [reason]
[ ] Optimize: [skill] - [changes]
[ ] Document: [skill] - [missing-docs]
[ ] Test: [scenario] - [coverage-improvement]
[ ] Refactor: [domain] - [architecture]
[ ] Integrate: [external-tool] - [capability]
[ ] Research: [emerging-technology] - [potential]
---
| Metric | Current | Target | Gap |
|--------|---------|--------|-----|
| Total skills | [count] | - | - |
| Domain coverage | [%] | 90% | [%] |
| Redundancy rate | [%] | <10% | [%] |
| Avg complexity | [level] | MEDIUM | - |
| Under-utilization | [%] | <5% | [%] |
Concrete Example: Real Analysis
Input: Skill Library (Fragment)
Inventory:
- Total skills: 47
- Categories: development (15), github (12), optimization (8), testing (5), meta-tools (3), misc (4)
- Capabilities mapped: 127
- Agents used: 18 distinct types
Analysis Output
Coverage Gaps Detected:
{
"domain": "Data Engineering",
"coverage": "23.1%",
"missingCapabilities": [
"data-transformation",
"data-validation",
"data-migration",
"data-visualization",
"etl-pipeline"
],
"priority": "high",
"recommendation": "Create 'data-engineering-workflow' skill"
}
Redundancy Detected:
{
"capability": "code-review",
"skillCount": 4,
"skills": [
"code-review-assistant",
"github-code-review",
"pr-review-automation",
"code-quality-checker"
],
"overlapPercentage": 78,
"recommendation": "Consolidate into unified 'code-review-orchestrator' with specialized sub-skills"
}
Optimization Opportunities:
{
"type": "under-utilized",
"skills": [
{
"skill": "legacy-converter",
"frequency": 0.02,
"lastUsed": "127 days ago",
"recommendation": "Archive or promote with use-case documentation"
}
]
},
{
"type": "over-complex",
"skills": [
{
"skill": "full-stack-architect",
"avgTokens": 8743,
"successRate": "64.3%",
"recommendation": "Break into: backend-architect, frontend-architect, database-architect"
}
]
}
Recommendations:
- Critical: Create data engineering skill (coverage: 23% → 85%)
- High: Consolidate 4 code review skills (save ~15K tokens, reduce confusion)
- Medium: Break full-stack-architect into 3 focused skills
- Low: Archive legacy-converter or add promotion documentation
Expected Impact:
- Coverage improvement: 67% → 89%
- Redundancy reduction: 18% → 7%
- Avg token efficiency: +32%
- Maintenance overhead: -40%
Integration with Development Workflow
Quarterly Review Process
npx claude-flow@alpha hooks pre-task --description "Quarterly skill gap analysis"
npx claude-flow@alpha memory retrieve --key "gap-analysis/recommendations"
npx claude-flow@alpha hooks post-task --task-id "gap-analysis-q1-2025"
Continuous Monitoring
npx claude-flow@alpha hooks post-task --skill-used "[name]"
npx claude-flow@alpha memory aggregate --pattern "skills/usage/*" --period "monthly"
Success Metrics
- Domain coverage: >85%
- Redundancy rate: <10%
- Under-utilization: <5%
- Scenario execution: 100% of core scenarios
- Optimization adoption: >80% of recommendations implemented
Related Skills
when-optimizing-prompts-use-prompt-optimization-analyzer - Optimize individual skills
when-managing-token-budget-use-token-budget-advisor - Budget impact analysis
skill-forge - Create new skills based on recommendations
Notes
- Run quarterly or after major changes
- Involve team in recommendation review
- Track recommendation adoption rate
- Update analysis criteria as needs evolve
- Share findings across teams
Converted and distributed by TomeVault — claim your Tome and manage your conversions.