Documentation Index
Fetch the complete documentation index at: https://mintlify.com/matrixy/auto-skill/llms.txt
Use this file to discover all available pages before exploring further.
Skill Tracker
The Skill Tracker monitors skill usage patterns and calculates confidence scores based on success rates. It tracks the complete adoption lifecycle from discovery (50% confidence) to graduation (85%+ confidence).
createSkillTracker
Creates a skill tracker instance backed by SQLite.
import { createSkillTracker } from 'auto-skill/core/skill-tracker';
const tracker = createSkillTracker('/path/to/skills_tracking.db');
Path to SQLite database. Defaults to ~/.claude/auto-skill/skills_tracking.db
Returns a SkillTracker instance with usage tracking and graduation detection methods
SkillAdoption Type
Tracks adoption metrics for a skill.
interface SkillAdoption {
skillId: string;
skillName: string;
source: string; // "external" | "local" | "mental-hint"
initialConfidence: number; // Starting confidence (0-1)
currentConfidence: number; // Current confidence (0-1)
usageCount: number;
successCount: number;
failureCount: number;
firstUsed: string; // ISO-8601 timestamp
lastUsed: string; // ISO-8601 timestamp
graduatedToLocal: boolean;
}
Confidence Evolution
Confidence scores evolve based on usage patterns:
| Source | Initial | Proven (3+ uses, 70%+ success) | Graduation (5+ uses, 80%+ success) |
|---|
| External | 50% | 75% | 85%+ |
| Mental Hint | 60% | 75% | 85%+ |
| Local | 80% | 85%+ | 100% (cap) |
Confidence Calculation:
- Usage Factor:
min(usageCount / 10.0, 1.0) (caps at 10 uses)
- Weighted Score:
successRate * 0.7 + usageFactor * 0.3
- Blended:
initialConfidence * 0.3 + weightedScore * 0.7
- External Cap: 0.95 max for external skills, 1.0 for local
Methods
trackUsage
Record a skill usage event and update confidence score.
tracker.trackUsage(
'skill-123',
'fix-typescript-errors',
'external',
true // success
);
Unique identifier for the skill
Human-readable skill name
Skill source: "external" | "local" | "mental-hint"
Whether the skill execution succeeded
Side effects:
- Creates new adoption record if skill is new
- Increments usage/success/failure counts
- Recalculates confidence score
- Updates
last_used timestamp
getAdoption
Get adoption details for a specific skill.
const adoption = tracker.getAdoption('skill-123');
if (adoption) {
console.log(`Confidence: ${adoption.currentConfidence}`);
console.log(`Success rate: ${adoption.successCount / adoption.usageCount}`);
}
Skill identifier to look up
adoption
SkillAdoption | undefined
Adoption record if found, otherwise undefined
listAdoptions
Get all skill adoptions above a minimum confidence threshold.
const highConfidence = tracker.listAdoptions(0.75);
Minimum confidence threshold (0-1)
Array of adoptions sorted by confidence (descending), then usage count (descending)
shouldGraduate
Check if a skill meets graduation criteria.
if (tracker.shouldGraduate('skill-123')) {
console.log('Skill is ready for graduation!');
}
Skill identifier to check
true if skill meets all graduation criteria:
- Confidence >= 0.85
- Usage count >= 5
- Success rate >= 0.8
- Source is “external”
- Not already graduated
markGraduated
Mark a skill as graduated to local.
tracker.markGraduated('skill-123');
Skill identifier to mark as graduated
Side effects:
- Sets
graduated_to_local flag to 1
- Changes
source to “local”
- Sets
current_confidence to 0.85
- Updates
updated_at timestamp
getGraduationCandidates
Get all skills eligible for graduation.
const candidates = tracker.getGraduationCandidates();
console.log(`Found ${candidates.length} graduation candidates`);
Array of skills that meet graduation criteria (confidence >= 0.8)
getStats
Get tracker statistics.
const stats = tracker.getStats();
console.log(`Total skills tracked: ${stats.total_skills}`);
console.log(`Average confidence: ${stats.avg_confidence.toFixed(2)}`);
console.log(`Graduated: ${stats.graduated_count}`);
Object with tracking statistics:
total_skills: number
avg_confidence: number
graduated_count: number
total_usage: number (sum of all usage counts)
by_source: Record of skill counts by source type
close
Close the database connection.
Usage Example
import { createSkillTracker } from 'auto-skill/core/skill-tracker';
const tracker = createSkillTracker();
// Track skill usage
tracker.trackUsage('ts-debug', 'typescript-debugger', 'external', true);
tracker.trackUsage('ts-debug', 'typescript-debugger', 'external', true);
tracker.trackUsage('ts-debug', 'typescript-debugger', 'external', false);
tracker.trackUsage('ts-debug', 'typescript-debugger', 'external', true);
tracker.trackUsage('ts-debug', 'typescript-debugger', 'external', true);
tracker.trackUsage('ts-debug', 'typescript-debugger', 'external', true);
// Check adoption
const adoption = tracker.getAdoption('ts-debug');
if (adoption) {
console.log(`Usage: ${adoption.usageCount}`);
console.log(`Success rate: ${(adoption.successCount / adoption.usageCount * 100).toFixed(1)}%`);
console.log(`Confidence: ${(adoption.currentConfidence * 100).toFixed(1)}%`);
}
// Output:
// Usage: 6
// Success rate: 83.3%
// Confidence: 81.5%
// Check if ready for graduation
if (tracker.shouldGraduate('ts-debug')) {
console.log('Ready for graduation!');
tracker.markGraduated('ts-debug');
}
// View all high-confidence skills
const proven = tracker.listAdoptions(0.75);
console.log(`\nProven skills (75%+ confidence):`);
proven.forEach(skill => {
console.log(` - ${skill.skillName}: ${(skill.currentConfidence * 100).toFixed(1)}%`);
});
// Get statistics
const stats = tracker.getStats();
console.log(`\nTracker Stats:`);
console.log(` Total skills: ${stats.total_skills}`);
console.log(` Avg confidence: ${(stats.avg_confidence * 100).toFixed(1)}%`);
console.log(` Graduated: ${stats.graduated_count}`);
console.log(` Total usage: ${stats.total_usage}`);
console.log(` By source:`, stats.by_source);
tracker.close();
Database Schema
The tracker uses a SQLite table:
CREATE TABLE skill_adoptions (
skill_id TEXT PRIMARY KEY,
skill_name TEXT NOT NULL,
source TEXT NOT NULL,
initial_confidence REAL NOT NULL,
current_confidence REAL NOT NULL,
usage_count INTEGER DEFAULT 0,
success_count INTEGER DEFAULT 0,
failure_count INTEGER DEFAULT 0,
first_used TEXT NOT NULL,
last_used TEXT NOT NULL,
graduated_to_local INTEGER DEFAULT 0,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_confidence ON skill_adoptions(current_confidence);
CREATE INDEX idx_source ON skill_adoptions(source);
Source Reference
src/core/skill-tracker.ts:102-366