| name | learning-journey |
| description | Analyze your Copilot CLI learning journey — see how you've evolved, get personalized next-step recommendations, and estimate your ROI. Use when user asks about "my progress", "learning journey", "how am I using copilot", "what should I try next", "copilot ROI", "time saved", "copilot value", "usage evolution", "session analysis", or "copilot stats". |
Learning Journey
Analyze the user's Copilot CLI session history to reveal their evolution, suggest next steps, and estimate value gained. All data comes from the local session_store database — no external services needed.
Modes
| Mode | Trigger | What It Does |
|---|
| Full Journey | "my learning journey", "how have I evolved" | Complete analysis: timeline, milestones, patterns, recommendations, ROI |
| Quick Stats | "copilot stats", "usage summary" | Compact overview: session counts, patterns, current phase |
| Next Steps | "what should I try next", "copilot tips" | Feature recommendations based on what they haven't explored yet |
| ROI Estimate | "copilot ROI", "time saved", "is copilot worth it" | Value estimate with transparent assumptions |
Default: If the user asks generally about their journey/progress, run Full Journey.
Execution Rules
- Always query the session_store database using the
sql tool with database: "session_store".
- Never expose raw session content (summaries, messages) — only show patterns and anonymized examples.
- Use temporal analysis — split history into time windows to show evolution, not just totals.
- State confidence levels — be explicit when data is sparse or patterns are uncertain.
- Frame phases as observed behavior, not absolute skill levels. Say "your usage patterns suggest..." not "you are advanced."
- Show assumptions for any estimates. Prefer ranges over single numbers.
Step 1: Data Collection
Run these queries to gather the raw signals. Execute them in parallel.
Query 1: Monthly Overview
SELECT
strftime('%Y-%m', created_at) as month,
COUNT(*) as sessions,
SUM((SELECT COUNT(*) FROM turns t WHERE t.session_id = s.id)) as total_turns,
SUM((SELECT COUNT(*) FROM session_files sf WHERE sf.session_id = s.id)) as files_touched,
ROUND(AVG((SELECT COUNT(*) FROM turns t WHERE t.session_id = s.id)), 1) as avg_turns,
SUM((SELECT COUNT(*) FROM session_refs sr WHERE sr.session_id = s.id)) as refs_created
FROM sessions s
GROUP BY month
ORDER BY month
Query 2: Session Complexity Distribution
SELECT
strftime('%Y-%m', s.created_at) as month,
SUM(CASE WHEN turns <= 2 THEN 1 ELSE 0 END) as quick_sessions,
SUM(CASE WHEN turns BETWEEN 3 AND 10 THEN 1 ELSE 0 END) as medium_sessions,
SUM(CASE WHEN turns > 10 THEN 1 ELSE 0 END) as deep_sessions
FROM (
SELECT s.id, s.created_at,
(SELECT COUNT(*) FROM turns t WHERE t.session_id = s.id) as turns
FROM sessions s
) s
GROUP BY month
ORDER BY month
Query 3: First Milestones
SELECT 'First multi-file session' as milestone,
(SELECT MIN(s.created_at) FROM sessions s
WHERE (SELECT COUNT(*) FROM session_files sf WHERE sf.session_id = s.id) >= 3) as achieved_at
UNION ALL
SELECT 'First commit/PR linked session',
(SELECT MIN(s.created_at) FROM sessions s
WHERE (SELECT COUNT(*) FROM session_refs sr WHERE sr.session_id = s.id) > 0)
UNION ALL
SELECT 'First deep session (10+ turns)',
(SELECT MIN(s.created_at) FROM sessions s
WHERE (SELECT COUNT(*) FROM turns t WHERE t.session_id = s.id) >= 10)
UNION ALL
SELECT 'First very deep session (50+ turns)',
(SELECT MIN(s.created_at) FROM sessions s
WHERE (SELECT COUNT(*) FROM turns t WHERE t.session_id = s.id) >= 50)
Query 4: Feature Detection (Advanced Usage)
SELECT
'skills' as feature,
COUNT(DISTINCT si.session_id) as sessions_used,
MIN(s.created_at) as first_used
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%/skills%' OR si.content LIKE '%skill%invoke%'
UNION ALL
SELECT 'MCP/plugins',
COUNT(DISTINCT si.session_id),
MIN(s.created_at)
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%MCP%' OR si.content LIKE '%plugin%' OR si.content LIKE '%mcp-server%'
UNION ALL
SELECT 'research',
COUNT(DISTINCT si.session_id),
MIN(s.created_at)
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%/research%'
UNION ALL
SELECT 'delegate',
COUNT(DISTINCT si.session_id),
MIN(s.created_at)
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%/delegate%'
UNION ALL
SELECT 'code review',
COUNT(DISTINCT si.session_id),
MIN(s.created_at)
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%/review%' OR si.content LIKE '%code-review%'
UNION ALL
SELECT 'fleet/parallel',
COUNT(DISTINCT si.session_id),
MIN(s.created_at)
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%/fleet%' OR si.content LIKE '%parallel%subagent%'
UNION ALL
SELECT 'multi-repo',
COUNT(DISTINCT si.session_id),
MIN(s.created_at)
FROM search_index si
JOIN sessions s ON si.session_id = s.id
WHERE si.content LIKE '%add-dir%' OR si.content LIKE '%list-dirs%'
Query 5: Usage Consistency (Streaks)
SELECT
DATE(created_at) as day,
COUNT(*) as sessions_that_day
FROM sessions
GROUP BY day
ORDER BY day
Query 6: Topic Diversity
SELECT summary, created_at
FROM sessions
WHERE summary IS NOT NULL AND summary != ''
ORDER BY created_at
Step 2: Classify Phase (Per Time Window)
Split the user's history into thirds (early / middle / recent) by date. For each third, score these dimensions (0–3 scale):
| Dimension | 0 (None) | 1 (Low) | 2 (Medium) | 3 (High) |
|---|
| Session depth | All ≤2 turns | Avg 3–5 turns | Avg 6–15 turns | Avg 15+ turns |
| File breadth | 0 files/session | 1–3 files avg | 4–10 files avg | 10+ files avg |
| Delivery signals | No refs | Occasional commits | Regular commits | PRs + commits |
| Tool diversity | Basic Q&A only | Some file ops | Skills/MCP usage | Multi-agent, plugins |
| Consistency | Sporadic (gaps >7d) | Weekly | Most days | Daily sustained |
| Topic variety | Single domain | 2–3 domains | 4+ domains | Cross-domain synthesis |
Phase Assignment
| Total Score | Phase | Label |
|---|
| 0–5 | 🌱 Explorer | "Discovering what's possible" |
| 6–10 | 🔨 Builder | "Actively building with AI assistance" |
| 11–15 | 🎯 Orchestrator | "Directing AI as a force multiplier" |
| 16–18 | 🚀 Architect | "Designing systems of AI-assisted workflows" |
Important: Show the user's phase trajectory across the three time windows, not just their current state.
Step 3: Identify Milestones
Present milestones as a timeline. Good milestone types:
- 📅 First session ever
- 📁 First multi-file change
- 🔗 First commit/PR linked session
- 🏗️ First deep session (10+ turns)
- 🧩 First skill/plugin usage
- 🔄 First sustained streak (3+ consecutive days)
- 🌐 First cross-domain usage (different repos/topics in same week)
- 🤖 First multi-agent / delegation usage
Format as a simple timeline:
📅 Feb 24 — First session (Agent Framework exploration)
📁 Feb 24 — First multi-file build (46 files in one session!)
🏗️ Feb 27 — First marathon session (44 turns)
...
Step 4: Next Steps Recommendations
Based on Query 4 (feature detection), identify features not observed in their history. Recommend the top 2–3 most impactful ones based on their current phase:
| Current Phase | Best Next Features |
|---|
| 🌱 Explorer | Multi-file editing, using @file mentions, iterating on code |
| 🔨 Builder | /review for code quality, skills for domain tasks, git integration |
| 🎯 Orchestrator | /delegate to create PRs, /fleet for parallel work, custom MCP servers |
| 🚀 Architect | Building custom skills, sharing plugins, teaching others |
For each recommendation:
- Name the feature
- Explain what it does in one sentence
- Give a concrete example scenario relevant to their observed usage patterns
- Estimate the unlock potential ("This could save you ~X min per session where you do Y")
Important: Say "not observed in your session history" — NOT "you haven't used this." They may use it outside tracked sessions.
Step 5: ROI Estimate
Methodology (Be Transparent)
Present ROI as an illustrative estimate with clear assumptions. Use this structure:
Time Saved Estimation
Classify each session by dominant type and apply the appropriate multiplier:
| Session Type | Criteria | Conservative | Moderate | Aggressive |
|---|
| Quick Q&A | ≤2 turns, 0 files | 2 min saved | 5 min saved | 8 min saved |
| Code generation | 1–5 files touched | 10 min saved | 20 min saved | 35 min saved |
| Deep build | 5+ files, 10+ turns | 30 min saved | 60 min saved | 120 min saved |
| Workflow/automation | refs, skills, plugins | 20 min saved | 45 min saved | 90 min saved |
Do NOT stack multipliers. Each session counts once under its dominant type.
Cost Context
| Plan | Monthly Cost | Analysis Period Cost |
|---|
| Individual | $19/month | Calculate for their time span |
| Business | $39/month | Calculate for their time span |
Output Format
📊 ROI Estimate (your {N} months of usage)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Sessions analyzed: {total}
Quick Q&A: {n} sessions
Code generation: {n} sessions
Deep builds: {n} sessions
Workflow/automation: {n} sessions
⏱️ Estimated time saved:
Conservative: {X} hours ({Y} hours/month)
Moderate: {X} hours ({Y} hours/month)
Aggressive: {X} hours ({Y} hours/month)
💰 At your hourly rate:
(User can multiply by their rate — we don't assume income)
📈 Cost comparison (Individual plan):
Tool cost: ${cost} over {months} months
Break-even: ~{N} min/day of saved time
Your moderate estimate: ~{M} min/day
⚠️ Assumptions: See methodology above. Actual value depends on
task complexity, domain expertise, and alternative approaches.
Step 6: Compose Output
Full Journey Format
🗺️ Your Copilot CLI Learning Journey
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Overview
{months} months • {sessions} sessions • {files} files touched • {refs} deliverables
🌱→🔨→🎯 Your Evolution
[Phase trajectory with scores per time window]
🏆 Key Milestones
[Timeline of firsts]
📈 Patterns
[2-3 interesting observations about their usage]
💡 Recommended Next Steps
[Top 2-3 feature recommendations]
💰 ROI Estimate
[Structured estimate with ranges]
Sparse Data Mode
If the user has fewer than 5 sessions, use a simplified output:
🗺️ Your Copilot CLI Snapshot
━━━━━━━━━━━━━━━━━━━━━━━━━━━
You're just getting started! Here's what I see so far:
{sessions} sessions over {days} days
🌱 Current Phase: Explorer
[Brief description of what they've done]
💡 Quick Wins to Try Next
[3 accessible features for beginners]
📊 Come back after 10+ sessions for a full journey analysis!
Presentation Rules
- Use emoji sparingly for section headers — don't overload.
- Keep the tone encouraging and forward-looking, never judgmental.
- Celebrate progress — highlight what's impressive about their evolution.
- Be specific about patterns ("You went from 2 sessions/week to daily usage in March").
- Never show raw session content, messages, or sensitive project names.
- If topic summaries contain personal/work info, generalize them ("professional communication", "web development project").
- Round numbers — "~50 sessions" not "47 sessions."
- Always end with an actionable next step.