Initial commit
This commit is contained in:
446
commands/learning-path.md
Normal file
446
commands/learning-path.md
Normal file
@@ -0,0 +1,446 @@
|
||||
---
|
||||
description: Generate an optimal learning sequence for a target note
|
||||
---
|
||||
|
||||
# Learning Path
|
||||
|
||||
Generate an optimal learning sequence for a target note by tracing prerequisite chains through the knowledge graph.
|
||||
|
||||
## 0. Locate AZKG Repository
|
||||
|
||||
**Check for AZKG_REPO_PATH environment variable:**
|
||||
|
||||
- Use bash conditional: `if [ -z "$AZKG_REPO_PATH" ]; then REPO_PATH=$(pwd); else REPO_PATH="$AZKG_REPO_PATH"; fi`
|
||||
- **If AZKG_REPO_PATH is set:** Use that path as the repository root
|
||||
- **If AZKG_REPO_PATH is not set:** Use current working directory (pwd)
|
||||
- Store result as REPO_PATH for all subsequent file operations
|
||||
|
||||
**All file operations must use REPO_PATH:**
|
||||
|
||||
- Read: `Read(REPO_PATH/filename.md)` or `Read("$REPO_PATH/filename.md")`
|
||||
- Write: `Write(REPO_PATH/filename.md)` or `Write("$REPO_PATH/filename.md")`
|
||||
- Edit: `Edit(REPO_PATH/filename.md)` or `Edit("$REPO_PATH/filename.md")`
|
||||
- Grep: `Grep(pattern, path=REPO_PATH)` or with explicit path
|
||||
- Glob: `Glob(pattern, path=REPO_PATH)` or with explicit path
|
||||
|
||||
**Example usage:**
|
||||
|
||||
```
|
||||
# Check environment variable
|
||||
if [ -z "$AZKG_REPO_PATH" ]; then
|
||||
REPO_PATH=$(pwd)
|
||||
else
|
||||
REPO_PATH="$AZKG_REPO_PATH"
|
||||
fi
|
||||
|
||||
# Then use REPO_PATH for all operations
|
||||
Read("$REPO_PATH/agents.md")
|
||||
```
|
||||
|
||||
**Concrete examples:**
|
||||
|
||||
- If AZKG_REPO_PATH="/c/Users/dothompson/OneDrive/src/witt3rd/donald-azkg"
|
||||
→ Read("/c/Users/dothompson/OneDrive/src/witt3rd/donald-azkg/agents.md")
|
||||
- If AZKG_REPO_PATH is not set and pwd is /c/Users/dothompson/OneDrive/src/witt3rd/donald-azkg
|
||||
→ Read("agents.md") or use full path from pwd
|
||||
|
||||
## 1. Parse Input
|
||||
|
||||
**Input format:** User provides:
|
||||
|
||||
- A note name: `/learning-path mcp_security.md`
|
||||
- Or just the topic: `/learning-path mcp_security`
|
||||
|
||||
**Normalize input:**
|
||||
|
||||
- Add `.md` extension if missing
|
||||
- Use Glob to verify the target note exists
|
||||
- If not found, suggest similar notes using Glob
|
||||
|
||||
## 2. Load Target Note
|
||||
|
||||
**Read the target note:**
|
||||
|
||||
- Use Read tool to get full content
|
||||
- Extract YAML tags and title
|
||||
- Parse "Related Concepts" section to get prerequisites
|
||||
|
||||
**Example:**
|
||||
|
||||
```markdown
|
||||
## Related Concepts
|
||||
|
||||
### Prerequisites
|
||||
- [[mcp_overview]] - Must understand MCP basics first
|
||||
- [[oauth_fundamentals]] - OAuth is primary auth mechanism
|
||||
|
||||
### Related Topics
|
||||
- [[api_security]] - General API security principles
|
||||
```
|
||||
|
||||
## 3. Trace Prerequisite Chains
|
||||
|
||||
**Algorithm: Depth-First Traversal**
|
||||
|
||||
Starting from the target note, recursively follow prerequisite relationships:
|
||||
|
||||
```
|
||||
function buildPrerequisiteTree(note, visited = new Set()):
|
||||
if note in visited:
|
||||
return [] // Cycle detection
|
||||
|
||||
visited.add(note)
|
||||
|
||||
// Read the note and parse "Related Concepts" → "Prerequisites"
|
||||
prerequisites = readNote(note).prerequisites
|
||||
|
||||
if prerequisites is empty:
|
||||
return [note] // Foundation reached
|
||||
|
||||
tree = []
|
||||
for prereq in prerequisites:
|
||||
subtree = buildPrerequisiteTree(prereq.note, visited)
|
||||
tree.extend(subtree)
|
||||
|
||||
tree.append(note)
|
||||
return tree
|
||||
```
|
||||
|
||||
**Implementation with tools:**
|
||||
|
||||
1. **Read** target note to get prerequisites
|
||||
2. For each prerequisite, **Read** that note to get its prerequisites
|
||||
3. Recursively traverse until reaching foundation notes (no prerequisites)
|
||||
4. Track visited nodes to detect cycles
|
||||
|
||||
**Key features:**
|
||||
|
||||
- **Cycle detection:** Track visited nodes to prevent infinite loops
|
||||
- **Multiple paths:** Handle notes with multiple prerequisites
|
||||
- **Foundation detection:** Identify notes with no prerequisites
|
||||
- **Depth tracking:** Calculate how many levels deep each note is
|
||||
|
||||
## 4. Build Learning Sequence
|
||||
|
||||
**Create ordered learning path:**
|
||||
|
||||
1. **Topological sort:** Order notes so prerequisites always come before dependents
|
||||
2. **Remove duplicates:** Each note appears once, at earliest possible position
|
||||
3. **Group by depth level:** Show conceptual layers
|
||||
|
||||
**Example structure:**
|
||||
|
||||
```
|
||||
Level 0 (Foundations):
|
||||
- note_a.md
|
||||
- note_b.md
|
||||
|
||||
Level 1 (Builds on foundations):
|
||||
- note_c.md (requires: note_a)
|
||||
- note_d.md (requires: note_b)
|
||||
|
||||
Level 2 (Intermediate):
|
||||
- note_e.md (requires: note_c, note_d)
|
||||
|
||||
Level 3 (Target):
|
||||
- target_note.md (requires: note_e)
|
||||
```
|
||||
|
||||
## 5. Read Note Summaries
|
||||
|
||||
**For each note in the learning path:**
|
||||
|
||||
- Use Read tool to get first 3-5 lines (the summary)
|
||||
- Extract the brief description after the title
|
||||
- This provides context for each step
|
||||
|
||||
**Example:**
|
||||
|
||||
```
|
||||
## mcp_overview.md
|
||||
"Introduction to Model Context Protocol, a standardized way for AI assistants to connect to data sources and tools."
|
||||
```
|
||||
|
||||
## 6. Analyze Learning Path
|
||||
|
||||
**Calculate metrics:**
|
||||
|
||||
**Path statistics:**
|
||||
|
||||
- Total notes in sequence: `N`
|
||||
- Depth levels: `M` (foundation to target)
|
||||
- Estimated reading time: `N × 10 minutes = X minutes`
|
||||
- Foundational notes: Count of level 0 notes
|
||||
- Branching factor: Average prerequisites per note
|
||||
|
||||
**Complexity assessment:**
|
||||
|
||||
- **Simple path (1-3 notes):** "Quick learning path"
|
||||
- **Moderate path (4-7 notes):** "Intermediate learning sequence"
|
||||
- **Complex path (8+ notes):** "Comprehensive learning journey"
|
||||
|
||||
**Identify critical concepts:**
|
||||
|
||||
- Notes that multiple paths converge through
|
||||
- "Bottleneck" concepts that are prerequisites for many others
|
||||
|
||||
## 7. Suggest Related Learning
|
||||
|
||||
**Enrich the path with optional content:**
|
||||
|
||||
**Parallel reading (Related Topics):**
|
||||
|
||||
- Read "Related Topics" sections from notes in path
|
||||
- Notes at same level that provide additional context
|
||||
- Not strictly required but enhance understanding
|
||||
|
||||
**Deeper dives (Extended By):**
|
||||
|
||||
- Read "Extended By" sections from notes in path
|
||||
- Advanced topics that build on concepts in the path
|
||||
- "After mastering this path, explore..."
|
||||
|
||||
**Alternative approaches (Alternatives):**
|
||||
|
||||
- Read "Alternatives" sections from notes in path
|
||||
- Different ways to achieve similar understanding
|
||||
- "For a different perspective, consider..."
|
||||
|
||||
**Practical examples (Examples):**
|
||||
|
||||
- Read "Examples" sections from notes in path
|
||||
- Concrete implementations to solidify understanding
|
||||
- "Apply these concepts with..."
|
||||
|
||||
## 8. Generate Output
|
||||
|
||||
**Format the learning path:**
|
||||
|
||||
```markdown
|
||||
# Learning Path: [Target Note Title]
|
||||
|
||||
🎯 **Goal:** Understand [target topic]
|
||||
📚 **Total Notes:** N notes across M levels
|
||||
⏱️ **Estimated Time:** X minutes
|
||||
🏗️ **Complexity:** [Simple|Moderate|Complex]
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites Sequence
|
||||
|
||||
### Level 0: Foundations
|
||||
Start here if you're new to this topic.
|
||||
|
||||
1. **[[note_a]]** (5 min read)
|
||||
Brief description from note.
|
||||
*Why it's needed:* Foundation for understanding [concept]
|
||||
|
||||
2. **[[note_b]]** (8 min read)
|
||||
Brief description from note.
|
||||
*Why it's needed:* Introduces core [concept]
|
||||
|
||||
### Level 1: Core Concepts
|
||||
Once you understand the foundations, proceed here.
|
||||
|
||||
3. **[[note_c]]** (10 min read)
|
||||
Brief description from note.
|
||||
*Builds on:* note_a
|
||||
*Why it's needed:* Extends [concept] with [new idea]
|
||||
|
||||
4. **[[note_d]]** (7 min read)
|
||||
Brief description from note.
|
||||
*Builds on:* note_b
|
||||
*Why it's needed:* Applies [concept] to [domain]
|
||||
|
||||
### Level 2: Integration
|
||||
Combining concepts from previous levels.
|
||||
|
||||
5. **[[note_e]]** (12 min read)
|
||||
Brief description from note.
|
||||
*Builds on:* note_c, note_d
|
||||
*Why it's needed:* Synthesizes [concepts] for [purpose]
|
||||
|
||||
### Level 3: Target Concept
|
||||
Your destination!
|
||||
|
||||
6. **[[target_note]]** (15 min read)
|
||||
Brief description from note.
|
||||
*Builds on:* note_e
|
||||
*This is your goal:* Complete understanding of [target topic]
|
||||
|
||||
---
|
||||
|
||||
## Optional Enrichment
|
||||
|
||||
### Parallel Reading (Same Level)
|
||||
Enhance understanding at each level:
|
||||
- **[[related_a]]** - Provides additional context on [concept]
|
||||
- **[[related_b]]** - Alternative perspective on [concept]
|
||||
|
||||
### Go Deeper (Beyond Target)
|
||||
After mastering this path:
|
||||
- **[[advanced_a]]** - Builds on target with [advanced concept]
|
||||
- **[[advanced_b]]** - Applies target to [specific domain]
|
||||
|
||||
### Practical Applications
|
||||
See these concepts in action:
|
||||
- **[[example_a]]** - Real implementation of [concept]
|
||||
- **[[example_b]]** - Case study using [concept]
|
||||
|
||||
### Alternative Paths
|
||||
Different approaches to similar understanding:
|
||||
- **[[alternative_a]]** - [Different approach] to achieving similar goals
|
||||
|
||||
---
|
||||
|
||||
## Critical Concepts
|
||||
|
||||
These notes are central to this learning path:
|
||||
- **[[critical_note]]** - Required by X other notes in this path
|
||||
|
||||
---
|
||||
|
||||
## Visual Path
|
||||
|
||||
```
|
||||
|
||||
Foundations Core Concepts Integration Target
|
||||
───────────── ───────────── ─────────── ──────
|
||||
|
||||
note_a ──────────┐
|
||||
├──> note_c ────────┐
|
||||
│ │
|
||||
note_b ──────────┴──> note_d ────────┴──> note_e ──> target_note
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Start with Level 0** if concepts are new
|
||||
2. **Skip familiar sections** if you have background knowledge
|
||||
3. **Use `/graph-note`** to inspect relationships for each note
|
||||
4. **Use `/expand-graph`** to discover more connections
|
||||
5. **Review in Obsidian** for visual graph navigation
|
||||
|
||||
**Pro tip:** Open multiple notes in tabs and read through the sequence in order!
|
||||
```
|
||||
|
||||
## 9. Handle Edge Cases
|
||||
|
||||
**No prerequisites:**
|
||||
|
||||
```
|
||||
Learning Path: [Target Note]
|
||||
|
||||
✅ This note has no prerequisites!
|
||||
|
||||
This is a foundational concept that can be learned directly.
|
||||
No background knowledge required.
|
||||
|
||||
**Estimated reading time:** X minutes
|
||||
|
||||
**What builds on this:**
|
||||
After understanding this note, you can explore:
|
||||
- [[note_x]] - Extends this concept
|
||||
- [[note_y]] - Applies this concept
|
||||
```
|
||||
|
||||
**Circular dependencies:**
|
||||
|
||||
```
|
||||
⚠️ Circular Dependency Detected
|
||||
|
||||
The following notes form a dependency cycle:
|
||||
- [[note_a]] requires [[note_b]]
|
||||
- [[note_b]] requires [[note_c]]
|
||||
- [[note_c]] requires [[note_a]]
|
||||
|
||||
**Suggested reading order:**
|
||||
Read these notes together as an interconnected group:
|
||||
1. [[note_a]] - Brief overview
|
||||
2. [[note_b]] - Builds on understanding from note_a
|
||||
3. [[note_c]] - Completes the cycle
|
||||
4. Re-read all three for full understanding
|
||||
|
||||
**Action needed:** Consider refactoring these notes to break the cycle.
|
||||
Use `/graph-validate` to check for more circular dependencies.
|
||||
```
|
||||
|
||||
**Very long path (>15 notes):**
|
||||
|
||||
```
|
||||
📚 Complex Learning Path Detected
|
||||
|
||||
This path contains N notes across M levels.
|
||||
|
||||
**Suggested approach:**
|
||||
- Break into smaller milestones
|
||||
- Focus on one level at a time
|
||||
- Take breaks between levels
|
||||
- Consider creating intermediate checkpoints
|
||||
|
||||
**Milestones:**
|
||||
🎯 Milestone 1: Foundations (Notes 1-5)
|
||||
🎯 Milestone 2: Core Concepts (Notes 6-10)
|
||||
🎯 Milestone 3: Advanced Topics (Notes 11-15)
|
||||
🎯 Milestone 4: Target Mastery (Notes 16-N)
|
||||
```
|
||||
|
||||
## 10. Provide Summary Stats
|
||||
|
||||
**Output concise metrics:**
|
||||
|
||||
```
|
||||
Learning Path Summary
|
||||
━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
📊 Path Metrics:
|
||||
- Total notes: N
|
||||
- Depth levels: M
|
||||
- Estimated time: X minutes
|
||||
- Foundation notes: Y
|
||||
- Average prerequisites per note: Z
|
||||
|
||||
🎯 Complexity: [Simple|Moderate|Complex]
|
||||
|
||||
💡 Key Insight: [Most important observation about this path]
|
||||
|
||||
🔗 Critical Concept: [Note that appears most frequently as prerequisite]
|
||||
```
|
||||
|
||||
## Tools Used
|
||||
|
||||
- **Read** - Get note content, parse "Related Concepts" sections, extract summaries
|
||||
- **Glob** - Verify notes exist, find similar notes if target not found
|
||||
- **Parse logic** - Traverse prerequisite chains, topological sort, depth calculation
|
||||
- **Graph traversal** - Depth-first search with cycle detection
|
||||
|
||||
## Important Notes
|
||||
|
||||
**Quality guidelines:**
|
||||
|
||||
- Clear level progression
|
||||
- Justify why each prerequisite is needed
|
||||
- Provide time estimates (realistic reading + comprehension)
|
||||
- Make path scannable with good formatting
|
||||
- Include visual representation when helpful
|
||||
- Handle edge cases gracefully
|
||||
|
||||
**User experience:**
|
||||
|
||||
- Make it easy to start learning immediately
|
||||
- Show progress milestones
|
||||
- Suggest checkpoints for complex paths
|
||||
- Provide escape hatches (skip, alternative paths)
|
||||
- Encourage practical application
|
||||
|
||||
**Graph integrity:**
|
||||
|
||||
- Report any issues found (cycles, broken links)
|
||||
- Suggest graph improvements
|
||||
- Validate prerequisite chains make semantic sense
|
||||
- Use `/graph-validate` to check bidirectionality
|
||||
|
||||
Execute the learning path generation for the note provided by the user.
|
||||
Reference in New Issue
Block a user