omnilearn-workflow 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -0
- package/bin/install.js +176 -0
- package/commands/omnilearn-init.md +203 -0
- package/commands/omnilearn-refine.md +434 -0
- package/commands/omnilearn-roadmap-edit.md +502 -0
- package/commands/omnilearn-roadmap.md +637 -0
- package/commands/omnilearn-start.md +740 -0
- package/package.json +34 -0
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Edit an existing learning roadmap with full research-backed revision. Preserves progress data and run logs while restructuring the roadmap with the same rigor as creation.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /omnilearn-roadmap-edit — Edit an Existing Learning Roadmap
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
```
|
|
9
|
+
/omnilearn-roadmap-edit Rust Add more systems programming focus
|
|
10
|
+
/omnilearn-roadmap-edit React I want more emphasis on testing patterns
|
|
11
|
+
/omnilearn-roadmap-edit Machine Learning Make the math section more approachable
|
|
12
|
+
/omnilearn-roadmap-edit Python I want to add web scraping and automation
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Core Behavior
|
|
16
|
+
|
|
17
|
+
This command performs the same rigorous research-backed process as `/omnilearn-roadmap`, but operates on an EXISTING roadmap. It:
|
|
18
|
+
1. Reads the existing roadmap and associated files
|
|
19
|
+
2. Understands what the user wants to change
|
|
20
|
+
3. Does parallel research to validate and expand
|
|
21
|
+
4. Produces an updated roadmap while preserving progress tracking data
|
|
22
|
+
5. Archives the old version to runs/ for history
|
|
23
|
+
|
|
24
|
+
**Progress data (completed topics, assignment logs, run histories) must NOT be lost during editing.**
|
|
25
|
+
|
|
26
|
+
**Critical rule: the edit restructures FUTURE topics intelligently while leaving COMPLETED and IN-PROGRESS topics untouched. Never delete or reset progress — only reorder, add, or deepen future content.**
|
|
27
|
+
|
|
28
|
+
## Directory Structure Reference
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
.omnilearn/
|
|
32
|
+
├── UserPreferences.md
|
|
33
|
+
└── <skill-name>/
|
|
34
|
+
├── SkillPreferences.md
|
|
35
|
+
├── roadmap.md ← Will be updated
|
|
36
|
+
├── progress-index.md ← Must be preserved & updated
|
|
37
|
+
├── runs/
|
|
38
|
+
│ └── YYYY-MM-DD-HHMMSS-roadmap-edit/
|
|
39
|
+
│ ├── agent-log.md
|
|
40
|
+
│ ├── research-changes.md ← Research on requested changes
|
|
41
|
+
│ ├── old-roadmap-archived.md ← Previous version of roadmap
|
|
42
|
+
│ └── new-roadmap-draft.md ← Draft of updated roadmap
|
|
43
|
+
└── topics/ ← MUST be preserved — never delete or alter topic-progress.md, assignments/, or runs/
|
|
44
|
+
└── <topic-name>/
|
|
45
|
+
├── topic-progress.md ← 🔑 THE source of truth for what the user has done
|
|
46
|
+
├── assignments/ ← All assignment work the user has completed
|
|
47
|
+
└── runs/ ← Learning session logs
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Progress Inventory — Every edit must account for each topic's full state before making changes.**
|
|
51
|
+
|
|
52
|
+
## Phase 0: INTENT GATE — Parse Input & Validate
|
|
53
|
+
|
|
54
|
+
### 0.1 Parse Input
|
|
55
|
+
|
|
56
|
+
Extract the skill name and the change request from the user's message:
|
|
57
|
+
- "Edit my Rust roadmap to add more systems programming" → skill: `Rust`, changes: "add more systems programming"
|
|
58
|
+
- "Make the React roadmap less focused on hooks and more on state management patterns" → skill: `React`, changes: "more state management patterns"
|
|
59
|
+
|
|
60
|
+
If no skill is identifiable, ask:
|
|
61
|
+
> "Which skill's roadmap would you like to edit? (e.g., 'Rust', 'React', 'Machine Learning')"
|
|
62
|
+
|
|
63
|
+
If no specific change is mentioned, ask:
|
|
64
|
+
> "What would you like to change about the {skill} roadmap? For example: add topics, restructure, change depth, adjust focus areas."
|
|
65
|
+
|
|
66
|
+
### 0.2 Check Roadmap Exists
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
OMNILEARN_CONFIG="$HOME/.config/opencode/omnilearn.json"
|
|
70
|
+
|
|
71
|
+
if [ ! -f "$OMNILEARN_CONFIG" ]; then
|
|
72
|
+
echo "OmniLearn is not configured yet."
|
|
73
|
+
echo ""
|
|
74
|
+
echo "Run this first:"
|
|
75
|
+
echo " /omnilearn-init"
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
LEARNING_DIR=$(grep -o '"learningDirectory"[[:space:]]*:[[:space:]]*"[^"]*"' "$OMNILEARN_CONFIG" | sed 's/"learningDirectory"[[:space:]]*:[[:space:]]*"//' | sed 's/"$//')
|
|
80
|
+
OMNILEARN_DIR="$LEARNING_DIR/.omnilearn"
|
|
81
|
+
SKILL_DIR="$OMNILEARN_DIR/<skill>"
|
|
82
|
+
ROADMAP="$SKILL_DIR/roadmap.md"
|
|
83
|
+
RUNS_DIR="$SKILL_DIR/runs"
|
|
84
|
+
TOPICS_DIR="$SKILL_DIR/topics"
|
|
85
|
+
PROGRESS_INDEX="$SKILL_DIR/progress-index.md"
|
|
86
|
+
SKILL_PREFS="$SKILL_DIR/SkillPreferences.md"
|
|
87
|
+
|
|
88
|
+
if [ ! -f "$ROADMAP" ]; then
|
|
89
|
+
echo "No roadmap found for {skill}. Create one first with: /omnilearn-roadmap {skill}"
|
|
90
|
+
exit 1
|
|
91
|
+
fi
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 0.3 Read Existing Files + Build Progress Inventory
|
|
95
|
+
|
|
96
|
+
Read these files:
|
|
97
|
+
- `UserPreferences.md` — global preferences
|
|
98
|
+
- `SkillPreferences.md` — per-skill preferences
|
|
99
|
+
- `roadmap.md` — the existing roadmap (read fully)
|
|
100
|
+
- `progress-index.md` — overview of topic statuses
|
|
101
|
+
|
|
102
|
+
### 0.4 Inventory ALL Topic Progress (CRITICAL — Must Not Be Skipped)
|
|
103
|
+
|
|
104
|
+
**Before ANY changes, you must build a complete inventory of every topic's progress.** This is the safety net that prevents progress loss.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
TOPICS_DIR="$SKILL_DIR/topics"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
For each topic directory found in `$TOPICS_DIR/`:
|
|
111
|
+
1. Read its `topic-progress.md` — extract:
|
|
112
|
+
- Topic name and overall status (✅ Completed / 🔵 In Progress / 🟢 Not Started)
|
|
113
|
+
- Which assignments are completed (1/3, 2/3, 3/3)
|
|
114
|
+
- Skills demonstrated (from the log)
|
|
115
|
+
- Last session date
|
|
116
|
+
2. List the assignments directory — note which assignment files exist
|
|
117
|
+
3. List the runs directory — note any learning session logs
|
|
118
|
+
|
|
119
|
+
Build a **Progress Inventory** file:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
PROGRESS_INVENTORY="$ARCHIVE_DIR/progress-inventory.md"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Write to this file with the following structure:
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
# Progress Inventory: {skill} (before edit)
|
|
129
|
+
|
|
130
|
+
## Topics Inventory
|
|
131
|
+
| Topic | Status | Assignments Done | Skills Demonstrated | Last Activity |
|
|
132
|
+
|-------|--------|-----------------|---------------------|---------------|
|
|
133
|
+
| topic-1 | ✅ Completed | 3/3 | {list of skills} | {date} |
|
|
134
|
+
| topic-2 | 🔵 In Progress | 1/3 | {partial skills} | {date} |
|
|
135
|
+
| topic-3 | 🟢 Not Started | 0/3 | — | — |
|
|
136
|
+
|
|
137
|
+
## Detailed Topic States
|
|
138
|
+
|
|
139
|
+
### topic-1 (✅ Completed)
|
|
140
|
+
- topic-progress.md: {TOPICS_DIR}/topic-1/topic-progress.md
|
|
141
|
+
- Assignments: 01-basics ✅, 02-intermediate ✅, 03-real-world ✅
|
|
142
|
+
- Skills: {extracted skills demonstrated}
|
|
143
|
+
- Sessions: {count} learning sessions in runs/
|
|
144
|
+
|
|
145
|
+
### topic-2 (🔵 In Progress)
|
|
146
|
+
- topic-progress.md: {TOPICS_DIR}/topic-2/topic-progress.md
|
|
147
|
+
- Assignments: 01-basics ✅, 02-intermediate 🔵, 03-real-world 🟢
|
|
148
|
+
- Current assignment: {which one they're on}
|
|
149
|
+
- Skills: {extracted skills demonstrated so far}
|
|
150
|
+
- Sessions: {count} learning sessions
|
|
151
|
+
|
|
152
|
+
### topic-3 (🟢 Not Started)
|
|
153
|
+
- topic-progress.md: {TOPICS_DIR}/topic-3/topic-progress.md
|
|
154
|
+
- No progress yet
|
|
155
|
+
|
|
156
|
+
## Cross-Skill Context (from existing skills)
|
|
157
|
+
{summary of other skills user has learned}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
This inventory is passed to ALL downstream subagents so they know exactly what must be preserved.
|
|
161
|
+
|
|
162
|
+
### 0.5 Archive Current Roadmap
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
mkdir -p "$RUNS_DIR/$(date +%s)-roadmap-edit"
|
|
166
|
+
ARCHIVE_DIR="$RUNS_DIR/$(date +%s)-roadmap-edit"
|
|
167
|
+
cp "$ROADMAP" "$ARCHIVE_DIR/old-roadmap-archived.md"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
This ensures the old version is NEVER lost.
|
|
171
|
+
|
|
172
|
+
## Phase 1: PARALLEL RESEARCH — Analyze + Research Changes
|
|
173
|
+
|
|
174
|
+
Spawn two subagents in parallel:
|
|
175
|
+
|
|
176
|
+
### 1.1 Subagent A: Changes Analysis (Progress-Aware)
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
task(category="unspecified-high", run_in_background=true, prompt="
|
|
180
|
+
1. TASK: Analyze the existing {skill} roadmap and the user's requested changes to determine exactly what needs to be added, removed, or restructured. **CRITICAL: You MUST read the progress inventory first to know what the user has already accomplished.**
|
|
181
|
+
2. EXPECTED OUTCOME: A detailed analysis identifying specific roadmap changes, with rationale and a **progress migration plan** ensuring nothing the user has done is lost.
|
|
182
|
+
|
|
183
|
+
3. REQUIRED TOOLS: read, write, grep
|
|
184
|
+
|
|
185
|
+
4. MUST DO:
|
|
186
|
+
- FIRST — Read the PROGRESS INVENTORY: {ARCHIVE_DIR}/progress-inventory.md
|
|
187
|
+
* Note EVERY topic's status (✅ Completed / 🔵 In Progress / 🟢 Not Started)
|
|
188
|
+
* Note every assignment that's been completed
|
|
189
|
+
* Note skills the user has demonstrated
|
|
190
|
+
- Read the existing roadmap: {ROADMAP}
|
|
191
|
+
- Read the skill preferences: {SKILL_PREFS}
|
|
192
|
+
- Analyze the user's change request: '{user_change_request}'
|
|
193
|
+
- Identify EXACTLY which sections/topics need to change:
|
|
194
|
+
* **COMPLETED topics (✅) must NEVER be removed or altered** — they represent accomplished learning
|
|
195
|
+
* **IN-PROGRESS topics (🔵) should be left intact** — the user is mid-learning
|
|
196
|
+
* **NOT STARTED topics (🟢) are fair game for restructuring** — these are future work
|
|
197
|
+
* New topics to add — specify where in the structure they fit
|
|
198
|
+
* Existing topics to modify — specify what needs to change (only future/not-started ones)
|
|
199
|
+
* Topics to reorder — specify new position in the sequence
|
|
200
|
+
* Depth/emphasis adjustments — which topics need more/less coverage
|
|
201
|
+
- **For each proposed change to a NOT STARTED topic, verify it doesn't conflict with completed topics' prerequisites**
|
|
202
|
+
- Write analysis to: {ARCHIVE_DIR}/research-changes.md
|
|
203
|
+
- Format: For each change, state: What, Where, Why, Impact on existing progress
|
|
204
|
+
|
|
205
|
+
5. MUST NOT DO:
|
|
206
|
+
- Do NOT suggest removing or modifying ✅ Completed topics
|
|
207
|
+
- Do NOT suggest removing or modifying 🔵 In Progress topics unless the user explicitly asked
|
|
208
|
+
- Do NOT suggest discarding any assignment files, topic-progress.md files, or run logs
|
|
209
|
+
- Do NOT modify any files — this is analysis only
|
|
210
|
+
- Do NOT add topics that are out of scope for the skill
|
|
211
|
+
|
|
212
|
+
6. CONTEXT:
|
|
213
|
+
- Skill: {skill}
|
|
214
|
+
- User change request: {user_change_request}
|
|
215
|
+
- Progress inventory at: {ARCHIVE_DIR}/progress-inventory.md
|
|
216
|
+
- Existing roadmap at: {ROADMAP}
|
|
217
|
+
- User preferences: {summary}
|
|
218
|
+
")
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 1.2 Subagent B: Online Research for Changes
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
task(category="unspecified-high", run_in_background=true, prompt="
|
|
225
|
+
1. TASK: Research online to validate and inform the user's requested roadmap changes for {skill}.
|
|
226
|
+
2. EXPECTED OUTCOME: A research document with web-sourced findings about the topics the user wants to add/modify.
|
|
227
|
+
|
|
228
|
+
3. REQUIRED TOOLS: google_search, websearch_web_search_exa, context7_resolve-library-id, context7_query_docs, read, write
|
|
229
|
+
|
|
230
|
+
4. MUST DO:
|
|
231
|
+
- Analyze the user's change request: '{user_change_request}'
|
|
232
|
+
- Use google_search / websearch_web_search_exa to research:
|
|
233
|
+
* The specific topics/areas the user wants to add or modify
|
|
234
|
+
* Current best practices and latest developments
|
|
235
|
+
* Common curriculum structures that include these topics
|
|
236
|
+
* Importance and relevance of these topics for real-world proficiency
|
|
237
|
+
- If the topics involve programming languages/frameworks, use context7 for official docs
|
|
238
|
+
- For each researched area, document:
|
|
239
|
+
* What it is and why it matters
|
|
240
|
+
* Prerequisites
|
|
241
|
+
* How it connects to other topics in the skill
|
|
242
|
+
* Recommended depth of coverage
|
|
243
|
+
* Learning resources
|
|
244
|
+
- Assess whether the user's requested changes are:
|
|
245
|
+
* Essential (should definitely be added)
|
|
246
|
+
* Beneficial (good addition but not critical)
|
|
247
|
+
* Out of scope (not relevant to the skill)
|
|
248
|
+
* Too advanced/premature (needs prerequisites first)
|
|
249
|
+
- Write findings to: {ARCHIVE_DIR}/research-online.md
|
|
250
|
+
|
|
251
|
+
5. MUST NOT DO:
|
|
252
|
+
- Do NOT skip research even if you 'know' the topic — web search validates currency
|
|
253
|
+
- Do NOT modify any files — this is research only
|
|
254
|
+
|
|
255
|
+
6. CONTEXT:
|
|
256
|
+
- Skill: {skill}
|
|
257
|
+
- User change request: {user_change_request}
|
|
258
|
+
- User preferences: {summary}
|
|
259
|
+
")
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### 1.3 Collect Both Results
|
|
263
|
+
|
|
264
|
+
Wait for both to complete. Collect via `background_output()`.
|
|
265
|
+
|
|
266
|
+
## Phase 2: ROADMAP UPDATE — Synthesize New Version
|
|
267
|
+
|
|
268
|
+
### 2.1 Read Research and Old Roadmap
|
|
269
|
+
|
|
270
|
+
Read the research files and the archived old roadmap.
|
|
271
|
+
|
|
272
|
+
### 2.2 Spawn Roadmap Update Subagent (Progress-Preserving)
|
|
273
|
+
|
|
274
|
+
```typescript
|
|
275
|
+
task(category="unspecified-high", run_in_background=false, timeout=300000, prompt="
|
|
276
|
+
1. TASK: Update the {skill} roadmap based on change analysis and online research. **CRITICAL: Preserve ALL completed and in-progress topic data — these represent learning the user has already done and must never be erased.**
|
|
277
|
+
2. EXPECTED OUTCOME: An updated roadmap.md that incorporates the user's requested changes while keeping every byte of the user's progress intact.
|
|
278
|
+
|
|
279
|
+
3. REQUIRED TOOLS: google_search, websearch_web_search_exa, read, write, grep
|
|
280
|
+
|
|
281
|
+
4. MUST DO — in this order:
|
|
282
|
+
|
|
283
|
+
STEP 1 — Read ALL context:
|
|
284
|
+
- Read the PROGRESS INVENTORY: {ARCHIVE_DIR}/progress-inventory.md
|
|
285
|
+
* This tells you EXACTLY what the user has done: every completed topic, every in-progress assignment
|
|
286
|
+
* Every topic in this inventory has a topic-progress.md, assignments/, and runs/ in topics/
|
|
287
|
+
- Read the CHANGE ANALYSIS: {ARCHIVE_DIR}/research-changes.md
|
|
288
|
+
- Read the ONLINE RESEARCH: {ARCHIVE_DIR}/research-online.md
|
|
289
|
+
- Read the OLD ROADMAP: {ARCHIVE_DIR}/old-roadmap-archived.md
|
|
290
|
+
|
|
291
|
+
STEP 2 — Map old topics → new structure:
|
|
292
|
+
For EACH topic from the progress inventory and old roadmap, decide:
|
|
293
|
+
- ✅ **Completed topics**: MUST appear in the new roadmap EXACTLY as they were — same name, same position (or moved only as a group with other completed topics), same ✅ marker
|
|
294
|
+
- 🔵 **In-progress topics**: MUST appear in the new roadmap with the same name and 🔵 marker. If the user wants to rename it, create an alias mapping. The topic-progress.md must remain valid.
|
|
295
|
+
- 🟢 **Not-started topics**: Can be restructured, merged, split, reordered, or replaced as needed
|
|
296
|
+
|
|
297
|
+
Create a **topic mapping table** showing how each old topic maps to the new structure:
|
|
298
|
+
|
|
299
|
+
```markdown
|
|
300
|
+
| Old Topic | Status | Action | New Topic | topic-progress.md |
|
|
301
|
+
|-----------|--------|--------|-----------|-------------------|
|
|
302
|
+
| Variables | ✅ | Preserve | Variables | topics/variables/topic-progress.md |
|
|
303
|
+
| Functions | 🔵 | Preserve | Functions | topics/functions/topic-progress.md |
|
|
304
|
+
| Pointers | 🟢 | Merge into | Memory Management | (new — no existing file) |
|
|
305
|
+
| Structs | 🟢 | Split into | Structs + Traits | (new — no existing files) |
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
STEP 3 — Synthesize updated roadmap:
|
|
309
|
+
- Completed topics appear first in their section (user has earned their place)
|
|
310
|
+
- In-progress topics appear next, with their 🔵 marker and link to topic-progress.md
|
|
311
|
+
- Not-started and new topics follow, reorganized as needed
|
|
312
|
+
- Maintain the same structure format (Foundation → Core → Advanced → Real-World)
|
|
313
|
+
- For each preserved topic (✅ or 🔵), include a note like:
|
|
314
|
+
> *Progress: ✅ Completed — see topics/{topic}/ for details*
|
|
315
|
+
- Write the updated roadmap to: {ROADMAP}
|
|
316
|
+
- Format must be IDENTICAL to the original roadmap format (same section structure, marker format)
|
|
317
|
+
|
|
318
|
+
5. MUST NOT DO:
|
|
319
|
+
- Do NOT change progress markers for ✅ or 🔵 topics
|
|
320
|
+
- Do NOT delete or modify any files inside topics/ directory — topic-progress.md, assignments/, runs/ are all sacred
|
|
321
|
+
- Do NOT remove completed topics — they represent accomplished learning
|
|
322
|
+
- Do NOT treat completed and not-started topics the same — completed are immutable, not-started are flexible
|
|
323
|
+
- Do NOT rename topic folders without updating the mapping — the topic-progress.md path must still work
|
|
324
|
+
- Do NOT change SkillPreferences.md or progress-index.md (those are updated separately)
|
|
325
|
+
|
|
326
|
+
6. CONTEXT:
|
|
327
|
+
- Skill: {skill}
|
|
328
|
+
- Progress inventory (source of truth for what user has done): {ARCHIVE_DIR}/progress-inventory.md
|
|
329
|
+
- User change request: {user_change_request}
|
|
330
|
+
- User preferences: {summary}
|
|
331
|
+
- Topic directories (DO NOT TOUCH): {TOPICS_DIR}/
|
|
332
|
+
")
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 2.3 Preserve Topic Directories & Update Supporting Files
|
|
336
|
+
|
|
337
|
+
**Critical: The topics/ directory and everything inside it must NEVER be deleted.**
|
|
338
|
+
|
|
339
|
+
If the edit renames or restructures topics:
|
|
340
|
+
|
|
341
|
+
1. **If a topic is renamed**: Move the directory (not copy — move to preserve all content):
|
|
342
|
+
```bash
|
|
343
|
+
mv "$TOPICS_DIR/old-topic-name" "$TOPICS_DIR/new-topic-name"
|
|
344
|
+
```
|
|
345
|
+
And update its `topic-progress.md` header to reflect the new name.
|
|
346
|
+
|
|
347
|
+
2. **If a topic is split into multiple topics**: Copy the `topic-progress.md` to each split topic as a starting point (with 🟢 Not Started status), but keep the original intact:
|
|
348
|
+
```bash
|
|
349
|
+
cp "$TOPICS_DIR/original-topic/topic-progress.md" "$TOPICS_DIR/split-topic-1/topic-progress.md"
|
|
350
|
+
cp "$TOPICS_DIR/original-topic/topic-progress.md" "$TOPICS_DIR/split-topic-2/topic-progress.md"
|
|
351
|
+
```
|
|
352
|
+
Update each copy's header to reflect the new topic name and reset status to 🟢.
|
|
353
|
+
|
|
354
|
+
3. **If topics are merged**: Keep all original topic directories. Create a new parent topic directory that references them:
|
|
355
|
+
```bash
|
|
356
|
+
mkdir -p "$TOPICS_DIR/new-merged-topic"
|
|
357
|
+
# Create topic-progress.md that references the sub-topics
|
|
358
|
+
```
|
|
359
|
+
The originals remain accessible and their progress is preserved.
|
|
360
|
+
|
|
361
|
+
4. **Completed/In-progress topics MUST keep their exact directory name** unless the user explicitly requests renaming.
|
|
362
|
+
|
|
363
|
+
Then update supporting files:
|
|
364
|
+
|
|
365
|
+
Update `SkillPreferences.md` to reflect any new focus areas.
|
|
366
|
+
|
|
367
|
+
Update `progress-index.md`:
|
|
368
|
+
- Preserve ALL existing progress data (completed/in-progress markers unchanged)
|
|
369
|
+
- Add any new topics with 🟢 Not Started status
|
|
370
|
+
- Update renamed topic references if directories were moved
|
|
371
|
+
- Each topic entry should link to its topic-progress.md
|
|
372
|
+
|
|
373
|
+
**Do NOT use a subagent for these — they are simple edits performed by the orchestrator directly.**
|
|
374
|
+
|
|
375
|
+
## Phase 3: UPDATE USER PREFERENCES
|
|
376
|
+
|
|
377
|
+
### 3.1 Update UserPreferences.md
|
|
378
|
+
|
|
379
|
+
If this interaction reveals new, clear signals about the user's preferences, append them to `UserPreferences.md`:
|
|
380
|
+
|
|
381
|
+
- User wants deeper coverage of specific areas → adjust skill focus preferences
|
|
382
|
+
- User expresses frustration with certain topics → note potential learning style insight
|
|
383
|
+
- User asks for more/less theory vs practice → update learning style preferences
|
|
384
|
+
|
|
385
|
+
**Only add high-confidence signals. Don't speculate.**
|
|
386
|
+
|
|
387
|
+
### 3.2 Write Agent Log
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
mkdir -p "$ARCHIVE_DIR"
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
Write to `$ARCHIVE_DIR/agent-log.md`:
|
|
394
|
+
- What changes were requested
|
|
395
|
+
- What research was conducted
|
|
396
|
+
- What changes were made to the roadmap
|
|
397
|
+
- Any topics added/removed/modified
|
|
398
|
+
- Current state of progress-index.md
|
|
399
|
+
|
|
400
|
+
## Phase 4: PRESENT TO USER
|
|
401
|
+
|
|
402
|
+
```markdown
|
|
403
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
404
|
+
│ ✅ Roadmap Updated: {skill} │
|
|
405
|
+
├──────────────────────────────────────────────────────────────────┤
|
|
406
|
+
│ │
|
|
407
|
+
│ Changes Made: │
|
|
408
|
+
│ • Added: {new topics added} │
|
|
409
|
+
│ • Modified: {topics restructured or deepened} │
|
|
410
|
+
│ • Removed: {any topics removed, if any} │
|
|
411
|
+
│ • Preserved: All progress data intact │
|
|
412
|
+
│ │
|
|
413
|
+
│ 🔗 Previous version archived at: │
|
|
414
|
+
│ .omnilearn/{skill}/runs/{timestamp}-roadmap-edit/ │
|
|
415
|
+
│ │
|
|
416
|
+
│ 📍 Updated roadmap: .omnilearn/{skill}/roadmap.md │
|
|
417
|
+
│ │
|
|
418
|
+
│ ┌─ Change Preview ──────────────────────────────────────────┐ │
|
|
419
|
+
│ │ {brief summary of the most significant changes} │ │
|
|
420
|
+
│ └────────────────────────────────────────────────────────────┘ │
|
|
421
|
+
│ │
|
|
422
|
+
│ Your progress on completed/in-progress topics has been preserved.│
|
|
423
|
+
│ │
|
|
424
|
+
│ Next: Use /omnilearn-start {skill} to continue learning. │
|
|
425
|
+
│ Want further changes? Use /omnilearn-roadmap-edit again. │
|
|
426
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
## Phase 5: GIT COMMIT
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
if git rev-parse --git-dir > /dev/null 2>&1; then
|
|
433
|
+
git add "$OMNILEARN_DIR/"
|
|
434
|
+
git commit -m "omnilearn: update roadmap for {skill}
|
|
435
|
+
|
|
436
|
+
- {change summary}
|
|
437
|
+
- Archived previous version to runs/
|
|
438
|
+
- Preserved all progress data unchanged
|
|
439
|
+
"
|
|
440
|
+
fi
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
If no git repo: same flow as `/omnilearn-roadmap` — ask if the user wants to initialize one.
|
|
444
|
+
|
|
445
|
+
## Quality Gates
|
|
446
|
+
|
|
447
|
+
| Check | Phase | Action if Failed |
|
|
448
|
+
|-------|-------|-----------------|
|
|
449
|
+
| Old roadmap archived before editing | 0 | Block — archive first |
|
|
450
|
+
| Progress inventory built (topic-progress.md read for ALL topics) | 0 | Block — must know what user has done |
|
|
451
|
+
| Change analysis subagent reads progress inventory | 1 | Re-spawn with progress inventory path |
|
|
452
|
+
| Online research subagent completed | 1 | Block — must have validation |
|
|
453
|
+
| All ✅ Completed topics preserved in new roadmap unchanged | 2 | Restore from archive, re-synthesize |
|
|
454
|
+
| All 🔵 In Progress topics preserved with same status | 2 | Restore markers from archive |
|
|
455
|
+
| All 🟢 Not Started topics accounted for (restructured or moved) | 2 | Check each was mapped |
|
|
456
|
+
| Each existing topic-progress.md still accessible | 2 | Verify file still exists at its path |
|
|
457
|
+
| No topic-progress.md files deleted | 2 | Revert: git checkout if needed |
|
|
458
|
+
| No assignment files deleted | 2 | Revert: git checkout if needed |
|
|
459
|
+
| progress-index.md updated with new structure + old progress | 2 | Fix manually — preserve all ✅ and 🔵 |
|
|
460
|
+
| Agent log written with topic mapping table | 3 | Write it |
|
|
461
|
+
| Verify old roadmap archived to runs/ | 0 | Archive it — never lose history |
|
|
462
|
+
|
|
463
|
+
## Error Recovery
|
|
464
|
+
|
|
465
|
+
| Situation | Action |
|
|
466
|
+
|-----------|--------|
|
|
467
|
+
| Skill/roadmap doesn't exist | Tell user to use /omnilearn-roadmap first |
|
|
468
|
+
| User wants to revert changes | Restore old-roadmap-archived.md from runs/, revert any topic directory moves |
|
|
469
|
+
| User says "you deleted my progress!" | STOP. Restore from archive. The topics/ directory must be fully intact with git checkout. |
|
|
470
|
+
| Change analysis conflicts with online research | Present both perspectives, ask user which to follow |
|
|
471
|
+
| Progress markers accidentally changed | Restore from archived old roadmap |
|
|
472
|
+
| topic-progress.md accidentally modified | Revert: `git checkout .omnilearn/{skill}/topics/{topic}/topic-progress.md` |
|
|
473
|
+
| topics/ directory accidentally modified | Revert: `git checkout .omnilearn/{skill}/topics/` |
|
|
474
|
+
| Topic renamed but topic-progress.md path broken | Move directory back, use a symlink or alias instead |
|
|
475
|
+
| User's requested change is too vague | Ask clarifying questions before proceeding |
|
|
476
|
+
|
|
477
|
+
## What You MUST Do
|
|
478
|
+
|
|
479
|
+
- ✅ **Build a complete progress inventory BEFORE any changes** — read every topic-progress.md
|
|
480
|
+
- ✅ **Archive old roadmap before any changes** — never overwrite without backup
|
|
481
|
+
- ✅ **Preserve ALL topic-progress.md, assignments/, and runs/ files** — they are the user's learning record
|
|
482
|
+
- ✅ **Treat ✅ Completed topics as immutable** — never delete, never reset, never reorder away from their section
|
|
483
|
+
- ✅ **Treat 🔵 In Progress topics as sacred** — the user is mid-learning, don't disrupt them
|
|
484
|
+
- ✅ **Only restructure 🟢 Not Started topics** — future work is flexible, past work is not
|
|
485
|
+
- ✅ **Map old topic names → new topic names** — create a mapping table so nothing is lost
|
|
486
|
+
- ✅ **Research changes online** — validate that additions are current and relevant
|
|
487
|
+
- ✅ **Update progress-index.md with new structure** — add new topics, preserve old progress, update renamed references
|
|
488
|
+
- ✅ **Update SkillPreferences.md** to reflect new focus areas
|
|
489
|
+
- ✅ **Git commit after edit**
|
|
490
|
+
|
|
491
|
+
## What You MUST NOT Do
|
|
492
|
+
|
|
493
|
+
- ❌ Do NOT overwrite roadmap without archiving old version
|
|
494
|
+
- ❌ Do NOT delete or modify files in topics/ directory — topic-progress.md, assignments/, runs/ are all sacred
|
|
495
|
+
- ❌ Do NOT delete or reset completed topic progress
|
|
496
|
+
- ❌ Do NOT modify in-progress topic status
|
|
497
|
+
- ❌ Do NOT treat completed and not-started topics the same — they are fundamentally different
|
|
498
|
+
- ❌ Do NOT skip building the progress inventory — this is what prevents data loss
|
|
499
|
+
- ❌ Do NOT skip online research — even for topics you 'know'
|
|
500
|
+
- ❌ Do NOT assume you know what the user has done — read topic-progress.md files to verify
|
|
501
|
+
- ❌ Do NOT proceed if change request is too vague — ask for clarification
|
|
502
|
+
- ❌ Do NOT push to remote without explicit user approval
|