@uoyo/mvtt 2.0.0-beta.1 → 2.0.0-beta.2
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 +194 -193
- package/dist/commands/migrate.d.ts +0 -2
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +0 -45
- package/dist/commands/migrate.js.map +1 -1
- package/package.json +1 -1
- package/registry.yaml +6 -0
- package/sources/sections/output-language-constraint.md +11 -11
- package/sources/sections/session-update.md +47 -47
- package/sources/skills/mvt-analyze/business.md +7 -7
- package/sources/skills/mvt-analyze-code/manifest.yaml +96 -96
- package/sources/skills/mvt-bug-detect/business.md +101 -0
- package/sources/skills/mvt-bug-detect/manifest.yaml +84 -0
- package/sources/skills/mvt-check-context/manifest.yaml +63 -63
- package/sources/skills/mvt-config/manifest.yaml +96 -96
- package/sources/skills/mvt-create-skill/business.md +81 -74
- package/sources/skills/mvt-create-skill/manifest.yaml +91 -95
- package/sources/skills/mvt-design/manifest.yaml +96 -96
- package/sources/skills/mvt-fix/business.md +37 -8
- package/sources/skills/mvt-fix/manifest.yaml +85 -72
- package/sources/skills/mvt-help/manifest.yaml +67 -67
- package/sources/skills/mvt-implement/manifest.yaml +80 -80
- package/sources/skills/mvt-init/manifest.yaml +101 -101
- package/sources/skills/mvt-manage-context/business.md +175 -175
- package/sources/skills/mvt-manage-context/manifest.yaml +123 -123
- package/sources/skills/mvt-plan-dev/manifest.yaml +91 -91
- package/sources/skills/mvt-quick-dev/manifest.yaml +69 -69
- package/sources/skills/mvt-refactor/manifest.yaml +86 -86
- package/sources/skills/mvt-resume/manifest.yaml +71 -71
- package/sources/skills/mvt-review/manifest.yaml +87 -87
- package/sources/skills/mvt-status/manifest.yaml +66 -66
- package/sources/skills/mvt-sync-context/business.md +150 -150
- package/sources/skills/mvt-sync-context/manifest.yaml +96 -96
- package/sources/skills/mvt-template/manifest.yaml +63 -63
- package/sources/skills/mvt-test/manifest.yaml +102 -102
- package/sources/skills/mvt-update-plan/business.md +72 -72
- package/sources/skills/mvt-update-plan/manifest.yaml +132 -132
- package/sources/templates/analyze-output/body.md +15 -15
- package/sources/templates/design-output/body.md +17 -17
- package/sources/templates/implement-output/body.md +11 -11
- package/sources/templates/review-output/body.md +11 -11
- package/sources/templates/test-output/body.md +7 -7
- package/dist/fs/protection.d.ts +0 -15
- package/dist/fs/protection.d.ts.map +0 -1
- package/dist/fs/protection.js +0 -16
- package/dist/fs/protection.js.map +0 -1
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
## Execution Flow
|
|
2
|
-
|
|
3
|
-
### Step 1: Resolve Target
|
|
4
|
-
|
|
5
|
-
Required inputs:
|
|
6
|
-
|
|
7
|
-
- **task_id** -- which task to update
|
|
8
|
-
- **new_status** -- one of: `pending`, `in_progress`, `done`, `blocked`, `skipped`
|
|
9
|
-
- **artifacts** (optional, comma-separated paths) -- files produced or touched
|
|
10
|
-
- **notes** (optional) -- free-form note string
|
|
11
|
-
|
|
12
|
-
Resolution rules:
|
|
13
|
-
|
|
14
|
-
- If `task_id` is omitted AND exactly one task currently has status `in_progress` -> default to that task.
|
|
15
|
-
- If `task_id` is omitted AND zero or multiple tasks are in_progress -> ask the user to specify.
|
|
16
|
-
- If the user reply is the natural-language form `done` / `blocked: <reason>` (from a workflow skill's soft-prompt) -> map to:
|
|
17
|
-
- `done` -> task = plan.current_task, new_status = done
|
|
18
|
-
- `blocked: <reason>` -> task = plan.current_task, new_status = blocked, notes = `<reason>`
|
|
19
|
-
|
|
20
|
-
### Step 2: Load and Validate Existing Plan
|
|
21
|
-
|
|
22
|
-
1. Read `active_change.plan_path` (the file location is fixed by `/mvt-plan-dev`).
|
|
23
|
-
2. Parse YAML; if parse fails or schema is invalid -> stop and report. Do not attempt to repair silently.
|
|
24
|
-
3. Verify the target `task_id` exists in `tasks[]`. If not, list valid ids and stop.
|
|
25
|
-
|
|
26
|
-
### Step 3: Apply the Update
|
|
27
|
-
|
|
28
|
-
Mutate the in-memory plan:
|
|
29
|
-
|
|
30
|
-
1. Find the target task; capture `old_status` for the report.
|
|
31
|
-
2. Set `tasks[i].status = new_status`.
|
|
32
|
-
3. If `artifacts` provided -> append to `tasks[i].artifacts` (de-duplicate).
|
|
33
|
-
4. If `notes` provided -> overwrite `tasks[i].notes`.
|
|
34
|
-
5. Update `plan.updated_at` to current ISO 8601 timestamp.
|
|
35
|
-
|
|
36
|
-
### Step 4: Recompute current_task
|
|
37
|
-
|
|
38
|
-
Selection logic, in order:
|
|
39
|
-
|
|
40
|
-
1. If any task has status `in_progress` AND it is **not** the task we just changed to a terminal status (done/blocked/skipped) -> `current_task` = that task's id.
|
|
41
|
-
2. Otherwise pick the first task (by array order) where:
|
|
42
|
-
- `status == pending`
|
|
43
|
-
- All ids in `depends_on` reference tasks with status `done`
|
|
44
|
-
3. If no such task exists AND every task is `done` -> set `plan.status = done`, `current_task = null`.
|
|
45
|
-
4. If no such task exists but some tasks are still `pending` (because their dependencies are not done -- e.g., everything reachable is blocked) -> set `current_task = null`, leave `plan.status = in_progress`. Surface a warning in the output ("All remaining tasks are blocked by dependencies; resolve a blocker before continuing").
|
|
46
|
-
|
|
47
|
-
If the selected next task is currently `pending` -> promote it to `in_progress` (so the plan accurately reflects the active focus). Skip this promotion if `plan.status` just transitioned to `done`.
|
|
48
|
-
|
|
49
|
-
### Step 5: Validate and Write
|
|
50
|
-
|
|
51
|
-
1. Run the plan validator on the mutated structure.
|
|
52
|
-
2. If validation fails -> abort the write, report the validation errors, leave the original file untouched.
|
|
53
|
-
3. Otherwise, write back to `active_change.plan_path`.
|
|
54
|
-
|
|
55
|
-
### Step 6: Update Session State
|
|
56
|
-
|
|
57
|
-
Apply the standard State Update rules (see shared section above) AND the update-plan-specific updates:
|
|
58
|
-
|
|
59
|
-
- Refresh the matching entry in `recent_changes[]`: `last_updated` -> current ISO 8601 timestamp.
|
|
60
|
-
- Do NOT touch `active_change.has_plan` / `active_change.plan_path`.
|
|
61
|
-
|
|
62
|
-
### Step 7: Output
|
|
63
|
-
|
|
64
|
-
Emit the Plan Update summary block defined in the Output Format section. Include:
|
|
65
|
-
|
|
66
|
-
- The task that changed (id, title, old -> new status).
|
|
67
|
-
- A compact table of all tasks with their current status.
|
|
68
|
-
- The new `current_task` (or "(plan complete)" if `plan.status == done`).
|
|
69
|
-
- A one-line "Next" hint:
|
|
70
|
-
- If a new `current_task` is set -> recommend the skill matching its `skill_hint`.
|
|
71
|
-
- If plan complete -> recommend `/mvt-cleanup` or starting a new change via `/mvt-analyze`.
|
|
72
|
-
- If all remaining tasks are blocked -> recommend resolving the blocker (point at the `notes` of the blocked task).
|
|
1
|
+
## Execution Flow
|
|
2
|
+
|
|
3
|
+
### Step 1: Resolve Target
|
|
4
|
+
|
|
5
|
+
Required inputs:
|
|
6
|
+
|
|
7
|
+
- **task_id** -- which task to update
|
|
8
|
+
- **new_status** -- one of: `pending`, `in_progress`, `done`, `blocked`, `skipped`
|
|
9
|
+
- **artifacts** (optional, comma-separated paths) -- files produced or touched
|
|
10
|
+
- **notes** (optional) -- free-form note string
|
|
11
|
+
|
|
12
|
+
Resolution rules:
|
|
13
|
+
|
|
14
|
+
- If `task_id` is omitted AND exactly one task currently has status `in_progress` -> default to that task.
|
|
15
|
+
- If `task_id` is omitted AND zero or multiple tasks are in_progress -> ask the user to specify.
|
|
16
|
+
- If the user reply is the natural-language form `done` / `blocked: <reason>` (from a workflow skill's soft-prompt) -> map to:
|
|
17
|
+
- `done` -> task = plan.current_task, new_status = done
|
|
18
|
+
- `blocked: <reason>` -> task = plan.current_task, new_status = blocked, notes = `<reason>`
|
|
19
|
+
|
|
20
|
+
### Step 2: Load and Validate Existing Plan
|
|
21
|
+
|
|
22
|
+
1. Read `active_change.plan_path` (the file location is fixed by `/mvt-plan-dev`).
|
|
23
|
+
2. Parse YAML; if parse fails or schema is invalid -> stop and report. Do not attempt to repair silently.
|
|
24
|
+
3. Verify the target `task_id` exists in `tasks[]`. If not, list valid ids and stop.
|
|
25
|
+
|
|
26
|
+
### Step 3: Apply the Update
|
|
27
|
+
|
|
28
|
+
Mutate the in-memory plan:
|
|
29
|
+
|
|
30
|
+
1. Find the target task; capture `old_status` for the report.
|
|
31
|
+
2. Set `tasks[i].status = new_status`.
|
|
32
|
+
3. If `artifacts` provided -> append to `tasks[i].artifacts` (de-duplicate).
|
|
33
|
+
4. If `notes` provided -> overwrite `tasks[i].notes`.
|
|
34
|
+
5. Update `plan.updated_at` to current ISO 8601 timestamp.
|
|
35
|
+
|
|
36
|
+
### Step 4: Recompute current_task
|
|
37
|
+
|
|
38
|
+
Selection logic, in order:
|
|
39
|
+
|
|
40
|
+
1. If any task has status `in_progress` AND it is **not** the task we just changed to a terminal status (done/blocked/skipped) -> `current_task` = that task's id.
|
|
41
|
+
2. Otherwise pick the first task (by array order) where:
|
|
42
|
+
- `status == pending`
|
|
43
|
+
- All ids in `depends_on` reference tasks with status `done`
|
|
44
|
+
3. If no such task exists AND every task is `done` -> set `plan.status = done`, `current_task = null`.
|
|
45
|
+
4. If no such task exists but some tasks are still `pending` (because their dependencies are not done -- e.g., everything reachable is blocked) -> set `current_task = null`, leave `plan.status = in_progress`. Surface a warning in the output ("All remaining tasks are blocked by dependencies; resolve a blocker before continuing").
|
|
46
|
+
|
|
47
|
+
If the selected next task is currently `pending` -> promote it to `in_progress` (so the plan accurately reflects the active focus). Skip this promotion if `plan.status` just transitioned to `done`.
|
|
48
|
+
|
|
49
|
+
### Step 5: Validate and Write
|
|
50
|
+
|
|
51
|
+
1. Run the plan validator on the mutated structure.
|
|
52
|
+
2. If validation fails -> abort the write, report the validation errors, leave the original file untouched.
|
|
53
|
+
3. Otherwise, write back to `active_change.plan_path`.
|
|
54
|
+
|
|
55
|
+
### Step 6: Update Session State
|
|
56
|
+
|
|
57
|
+
Apply the standard State Update rules (see shared section above) AND the update-plan-specific updates:
|
|
58
|
+
|
|
59
|
+
- Refresh the matching entry in `recent_changes[]`: `last_updated` -> current ISO 8601 timestamp.
|
|
60
|
+
- Do NOT touch `active_change.has_plan` / `active_change.plan_path`.
|
|
61
|
+
|
|
62
|
+
### Step 7: Output
|
|
63
|
+
|
|
64
|
+
Emit the Plan Update summary block defined in the Output Format section. Include:
|
|
65
|
+
|
|
66
|
+
- The task that changed (id, title, old -> new status).
|
|
67
|
+
- A compact table of all tasks with their current status.
|
|
68
|
+
- The new `current_task` (or "(plan complete)" if `plan.status == done`).
|
|
69
|
+
- A one-line "Next" hint:
|
|
70
|
+
- If a new `current_task` is set -> recommend the skill matching its `skill_hint`.
|
|
71
|
+
- If plan complete -> recommend `/mvt-cleanup` or starting a new change via `/mvt-analyze`.
|
|
72
|
+
- If all remaining tasks are blocked -> recommend resolving the blocker (point at the `notes` of the blocked task).
|
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
name: mvt-update-plan
|
|
2
|
-
output: .claude/skills/mvt-update-plan/SKILL.md
|
|
3
|
-
|
|
4
|
-
frontmatter:
|
|
5
|
-
name: mvt-update-plan
|
|
6
|
-
description: "Update a single task in the active change's plan.yaml: change status, attach artifacts, leave notes, and auto-advance current_task. This skill should be used after a workflow skill finishes work that maps to a plan task, or whenever the user wants to mark a task as done, blocked, or skipped."
|
|
7
|
-
|
|
8
|
-
sections:
|
|
9
|
-
- type: inline
|
|
10
|
-
content: |
|
|
11
|
-
# MVT Update Plan
|
|
12
|
-
|
|
13
|
-
## Purpose
|
|
14
|
-
|
|
15
|
-
Apply incremental updates to the active plan.yaml: mark a task done/blocked/skipped, attach the artifacts produced, and let the skill auto-advance `current_task` to the next executable task. AI may invoke this skill on the user's behalf when the user replies to a soft-prompt with `done` / `blocked: <reason>`.
|
|
16
|
-
|
|
17
|
-
- type: shared
|
|
18
|
-
source: sections/role-header.md
|
|
19
|
-
params:
|
|
20
|
-
role: Architect
|
|
21
|
-
role_desc: "a Development Planner"
|
|
22
|
-
decision_rules:
|
|
23
|
-
- rule: "Task id provided AND target status valid -> Apply update, advance current_task, write back"
|
|
24
|
-
- rule: "Task id missing AND only one task is in_progress -> Default to that task"
|
|
25
|
-
- rule: "Target status would create an invalid current_task -> Recompute current_task automatically"
|
|
26
|
-
- rule: "All tasks become done -> Set plan.status = done, current_task = null"
|
|
27
|
-
- rule: "active_change.has_plan is false -> Stop and suggest /mvt-plan-dev"
|
|
28
|
-
|
|
29
|
-
boundaries:
|
|
30
|
-
- scope: "create new tasks or restructure the plan"
|
|
31
|
-
skill: "/mvt-plan-dev"
|
|
32
|
-
- scope: "create or modify the active change itself"
|
|
33
|
-
skill: "/mvt-analyze"
|
|
34
|
-
- scope: "implement code"
|
|
35
|
-
skill: "/mvt-implement"
|
|
36
|
-
|
|
37
|
-
- type: shared
|
|
38
|
-
source: sections/activation-load-context.md
|
|
39
|
-
params:
|
|
40
|
-
extended_context:
|
|
41
|
-
- "{active_change.plan_path} -- The plan to update (resolved from session.yaml)"
|
|
42
|
-
|
|
43
|
-
- type: shared
|
|
44
|
-
source: sections/activation-load-config.md
|
|
45
|
-
|
|
46
|
-
- type: shared
|
|
47
|
-
source: sections/output-language-constraint.md
|
|
48
|
-
|
|
49
|
-
- type: shared
|
|
50
|
-
source: sections/activation-preflight.md
|
|
51
|
-
params:
|
|
52
|
-
checks:
|
|
53
|
-
- order: "1"
|
|
54
|
-
field: "session.initialized_at"
|
|
55
|
-
level: "WARN"
|
|
56
|
-
message: 'Session not initialized. Run `/mvt-init` first.'
|
|
57
|
-
- order: "2"
|
|
58
|
-
field: "active_change.has_plan"
|
|
59
|
-
level: "BLOCK"
|
|
60
|
-
message: 'No active plan. Run `/mvt-plan-dev` to create one before updating.'
|
|
61
|
-
|
|
62
|
-
- type: inline
|
|
63
|
-
content: |
|
|
64
|
-
### Shortcut Operation Rules
|
|
65
|
-
- Can execute at any time when an active plan exists
|
|
66
|
-
- Performs surgical edits only -- never overwrites the whole plan structure
|
|
67
|
-
- Re-validates the resulting plan before writing; aborts on validation failure
|
|
68
|
-
|
|
69
|
-
- type: file
|
|
70
|
-
source: ./business.md
|
|
71
|
-
|
|
72
|
-
- type: inline
|
|
73
|
-
content: |
|
|
74
|
-
## Output Format
|
|
75
|
-
|
|
76
|
-
Render an inline summary (no external template). Structure:
|
|
77
|
-
|
|
78
|
-
```markdown
|
|
79
|
-
## Plan Update
|
|
80
|
-
|
|
81
|
-
### Change Applied
|
|
82
|
-
- **Task**: {task_id} -- {task_title}
|
|
83
|
-
- **Status**: {old_status} -> {new_status}
|
|
84
|
-
- **Artifacts attached**: {comma_separated_list_or_"(none)"}
|
|
85
|
-
- **Notes**: {notes_or_"(unchanged)"}
|
|
86
|
-
|
|
87
|
-
### Plan Progress
|
|
88
|
-
| # | id | title | status |
|
|
89
|
-
|---|----|----|--------|
|
|
90
|
-
| ... |
|
|
91
|
-
|
|
92
|
-
Progress: {done_count}/{total_count}
|
|
93
|
-
Current task: {new_current_task_id_or_"(plan complete)"}
|
|
94
|
-
|
|
95
|
-
### Next
|
|
96
|
-
{one-line guidance: continue to next task, resolve blocker, or run /mvt-cleanup}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Every response MUST end with a Suggested Next Steps section.
|
|
100
|
-
|
|
101
|
-
- type: shared
|
|
102
|
-
source: sections/session-update.md
|
|
103
|
-
|
|
104
|
-
- type: inline
|
|
105
|
-
content: |
|
|
106
|
-
### Update-Plan Specific State Updates
|
|
107
|
-
|
|
108
|
-
In addition to the mandatory updates above, this skill MUST refresh `recent_changes` for the active change:
|
|
109
|
-
|
|
110
|
-
- Find the entry where `id == active_change.id`. If absent, append one (this should be rare; happens when the plan was created out-of-band).
|
|
111
|
-
- Set `last_updated` to the current ISO 8601 timestamp.
|
|
112
|
-
- Trim to max 5 entries (drop the oldest by `last_updated` ascending).
|
|
113
|
-
|
|
114
|
-
Do NOT modify `active_change.has_plan` or `active_change.plan_path` here -- those are owned by `/mvt-plan-dev`.
|
|
115
|
-
|
|
116
|
-
- type: shared
|
|
117
|
-
source: sections/footer-next-steps.md
|
|
118
|
-
params:
|
|
119
|
-
current_skill: mvt-update-plan
|
|
120
|
-
conditional_suggestions:
|
|
121
|
-
conditions:
|
|
122
|
-
- condition: "plan_done"
|
|
123
|
-
primary: mvt-cleanup
|
|
124
|
-
primary_desc: "All tasks complete -- clean up artifacts and prepare to start the next change"
|
|
125
|
-
- condition: "default"
|
|
126
|
-
primary: mvt-implement
|
|
127
|
-
primary_desc: "Continue with the next current_task"
|
|
128
|
-
alternatives:
|
|
129
|
-
- skill: mvt-resume
|
|
130
|
-
desc: "Refresh context after task transitions"
|
|
131
|
-
- skill: mvt-status
|
|
132
|
-
desc: "Inspect overall progress across changes"
|
|
1
|
+
name: mvt-update-plan
|
|
2
|
+
output: .claude/skills/mvt-update-plan/SKILL.md
|
|
3
|
+
|
|
4
|
+
frontmatter:
|
|
5
|
+
name: mvt-update-plan
|
|
6
|
+
description: "Update a single task in the active change's plan.yaml: change status, attach artifacts, leave notes, and auto-advance current_task. This skill should be used after a workflow skill finishes work that maps to a plan task, or whenever the user wants to mark a task as done, blocked, or skipped."
|
|
7
|
+
|
|
8
|
+
sections:
|
|
9
|
+
- type: inline
|
|
10
|
+
content: |
|
|
11
|
+
# MVT Update Plan
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Apply incremental updates to the active plan.yaml: mark a task done/blocked/skipped, attach the artifacts produced, and let the skill auto-advance `current_task` to the next executable task. AI may invoke this skill on the user's behalf when the user replies to a soft-prompt with `done` / `blocked: <reason>`.
|
|
16
|
+
|
|
17
|
+
- type: shared
|
|
18
|
+
source: sections/role-header.md
|
|
19
|
+
params:
|
|
20
|
+
role: Architect
|
|
21
|
+
role_desc: "a Development Planner"
|
|
22
|
+
decision_rules:
|
|
23
|
+
- rule: "Task id provided AND target status valid -> Apply update, advance current_task, write back"
|
|
24
|
+
- rule: "Task id missing AND only one task is in_progress -> Default to that task"
|
|
25
|
+
- rule: "Target status would create an invalid current_task -> Recompute current_task automatically"
|
|
26
|
+
- rule: "All tasks become done -> Set plan.status = done, current_task = null"
|
|
27
|
+
- rule: "active_change.has_plan is false -> Stop and suggest /mvt-plan-dev"
|
|
28
|
+
|
|
29
|
+
boundaries:
|
|
30
|
+
- scope: "create new tasks or restructure the plan"
|
|
31
|
+
skill: "/mvt-plan-dev"
|
|
32
|
+
- scope: "create or modify the active change itself"
|
|
33
|
+
skill: "/mvt-analyze"
|
|
34
|
+
- scope: "implement code"
|
|
35
|
+
skill: "/mvt-implement"
|
|
36
|
+
|
|
37
|
+
- type: shared
|
|
38
|
+
source: sections/activation-load-context.md
|
|
39
|
+
params:
|
|
40
|
+
extended_context:
|
|
41
|
+
- "{active_change.plan_path} -- The plan to update (resolved from session.yaml)"
|
|
42
|
+
|
|
43
|
+
- type: shared
|
|
44
|
+
source: sections/activation-load-config.md
|
|
45
|
+
|
|
46
|
+
- type: shared
|
|
47
|
+
source: sections/output-language-constraint.md
|
|
48
|
+
|
|
49
|
+
- type: shared
|
|
50
|
+
source: sections/activation-preflight.md
|
|
51
|
+
params:
|
|
52
|
+
checks:
|
|
53
|
+
- order: "1"
|
|
54
|
+
field: "session.initialized_at"
|
|
55
|
+
level: "WARN"
|
|
56
|
+
message: 'Session not initialized. Run `/mvt-init` first.'
|
|
57
|
+
- order: "2"
|
|
58
|
+
field: "active_change.has_plan"
|
|
59
|
+
level: "BLOCK"
|
|
60
|
+
message: 'No active plan. Run `/mvt-plan-dev` to create one before updating.'
|
|
61
|
+
|
|
62
|
+
- type: inline
|
|
63
|
+
content: |
|
|
64
|
+
### Shortcut Operation Rules
|
|
65
|
+
- Can execute at any time when an active plan exists
|
|
66
|
+
- Performs surgical edits only -- never overwrites the whole plan structure
|
|
67
|
+
- Re-validates the resulting plan before writing; aborts on validation failure
|
|
68
|
+
|
|
69
|
+
- type: file
|
|
70
|
+
source: ./business.md
|
|
71
|
+
|
|
72
|
+
- type: inline
|
|
73
|
+
content: |
|
|
74
|
+
## Output Format
|
|
75
|
+
|
|
76
|
+
Render an inline summary (no external template). Structure:
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
## Plan Update
|
|
80
|
+
|
|
81
|
+
### Change Applied
|
|
82
|
+
- **Task**: {task_id} -- {task_title}
|
|
83
|
+
- **Status**: {old_status} -> {new_status}
|
|
84
|
+
- **Artifacts attached**: {comma_separated_list_or_"(none)"}
|
|
85
|
+
- **Notes**: {notes_or_"(unchanged)"}
|
|
86
|
+
|
|
87
|
+
### Plan Progress
|
|
88
|
+
| # | id | title | status |
|
|
89
|
+
|---|----|----|--------|
|
|
90
|
+
| ... |
|
|
91
|
+
|
|
92
|
+
Progress: {done_count}/{total_count}
|
|
93
|
+
Current task: {new_current_task_id_or_"(plan complete)"}
|
|
94
|
+
|
|
95
|
+
### Next
|
|
96
|
+
{one-line guidance: continue to next task, resolve blocker, or run /mvt-cleanup}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Every response MUST end with a Suggested Next Steps section.
|
|
100
|
+
|
|
101
|
+
- type: shared
|
|
102
|
+
source: sections/session-update.md
|
|
103
|
+
|
|
104
|
+
- type: inline
|
|
105
|
+
content: |
|
|
106
|
+
### Update-Plan Specific State Updates
|
|
107
|
+
|
|
108
|
+
In addition to the mandatory updates above, this skill MUST refresh `recent_changes` for the active change:
|
|
109
|
+
|
|
110
|
+
- Find the entry where `id == active_change.id`. If absent, append one (this should be rare; happens when the plan was created out-of-band).
|
|
111
|
+
- Set `last_updated` to the current ISO 8601 timestamp.
|
|
112
|
+
- Trim to max 5 entries (drop the oldest by `last_updated` ascending).
|
|
113
|
+
|
|
114
|
+
Do NOT modify `active_change.has_plan` or `active_change.plan_path` here -- those are owned by `/mvt-plan-dev`.
|
|
115
|
+
|
|
116
|
+
- type: shared
|
|
117
|
+
source: sections/footer-next-steps.md
|
|
118
|
+
params:
|
|
119
|
+
current_skill: mvt-update-plan
|
|
120
|
+
conditional_suggestions:
|
|
121
|
+
conditions:
|
|
122
|
+
- condition: "plan_done"
|
|
123
|
+
primary: mvt-cleanup
|
|
124
|
+
primary_desc: "All tasks complete -- clean up artifacts and prepare to start the next change"
|
|
125
|
+
- condition: "default"
|
|
126
|
+
primary: mvt-implement
|
|
127
|
+
primary_desc: "Continue with the next current_task"
|
|
128
|
+
alternatives:
|
|
129
|
+
- skill: mvt-resume
|
|
130
|
+
desc: "Refresh context after task transitions"
|
|
131
|
+
- skill: mvt-status
|
|
132
|
+
desc: "Inspect overall progress across changes"
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# Requirements Analysis: {Feature Name}
|
|
2
|
-
|
|
3
|
-
## Feature Overview
|
|
4
|
-
|
|
5
|
-
## Actors
|
|
6
|
-
|
|
7
|
-
## Requirements
|
|
8
|
-
|
|
9
|
-
## Domain Concepts
|
|
10
|
-
|
|
11
|
-
## Business Rules
|
|
12
|
-
|
|
13
|
-
## Ambiguities & Questions
|
|
14
|
-
|
|
15
|
-
## Change Tracking
|
|
1
|
+
# Requirements Analysis: {Feature Name}
|
|
2
|
+
|
|
3
|
+
## Feature Overview
|
|
4
|
+
|
|
5
|
+
## Actors
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
## Domain Concepts
|
|
10
|
+
|
|
11
|
+
## Business Rules
|
|
12
|
+
|
|
13
|
+
## Ambiguities & Questions
|
|
14
|
+
|
|
15
|
+
## Change Tracking
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# Architecture Design: {Feature Name}
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
## Architecture Decision Records
|
|
6
|
-
|
|
7
|
-
## Module Design
|
|
8
|
-
|
|
9
|
-
## Key Interfaces
|
|
10
|
-
|
|
11
|
-
## Data Flow
|
|
12
|
-
|
|
13
|
-
## File Structure
|
|
14
|
-
|
|
15
|
-
## Implementation Guidelines
|
|
16
|
-
|
|
17
|
-
## Change Tracking
|
|
1
|
+
# Architecture Design: {Feature Name}
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
## Architecture Decision Records
|
|
6
|
+
|
|
7
|
+
## Module Design
|
|
8
|
+
|
|
9
|
+
## Key Interfaces
|
|
10
|
+
|
|
11
|
+
## Data Flow
|
|
12
|
+
|
|
13
|
+
## File Structure
|
|
14
|
+
|
|
15
|
+
## Implementation Guidelines
|
|
16
|
+
|
|
17
|
+
## Change Tracking
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Implementation: {Feature Name}
|
|
2
|
-
|
|
3
|
-
## Implementation Plan
|
|
4
|
-
|
|
5
|
-
## Changes
|
|
6
|
-
|
|
7
|
-
## Implementation Details
|
|
8
|
-
|
|
9
|
-
## Design Compliance
|
|
10
|
-
|
|
11
|
-
## Change Tracking
|
|
1
|
+
# Implementation: {Feature Name}
|
|
2
|
+
|
|
3
|
+
## Implementation Plan
|
|
4
|
+
|
|
5
|
+
## Changes
|
|
6
|
+
|
|
7
|
+
## Implementation Details
|
|
8
|
+
|
|
9
|
+
## Design Compliance
|
|
10
|
+
|
|
11
|
+
## Change Tracking
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Code Review Report
|
|
2
|
-
|
|
3
|
-
## Summary
|
|
4
|
-
|
|
5
|
-
## Critical Issues
|
|
6
|
-
|
|
7
|
-
## Warnings
|
|
8
|
-
|
|
9
|
-
## Suggestions
|
|
10
|
-
|
|
11
|
-
## Highlights
|
|
1
|
+
# Code Review Report
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
## Critical Issues
|
|
6
|
+
|
|
7
|
+
## Warnings
|
|
8
|
+
|
|
9
|
+
## Suggestions
|
|
10
|
+
|
|
11
|
+
## Highlights
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Test Design: {Feature Name}
|
|
2
|
-
|
|
3
|
-
## Test Cases
|
|
4
|
-
|
|
5
|
-
## Test Code
|
|
6
|
-
|
|
7
|
-
## Coverage Analysis
|
|
1
|
+
# Test Design: {Feature Name}
|
|
2
|
+
|
|
3
|
+
## Test Cases
|
|
4
|
+
|
|
5
|
+
## Test Code
|
|
6
|
+
|
|
7
|
+
## Coverage Analysis
|
package/dist/fs/protection.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface InstallManifest {
|
|
2
|
-
version: number;
|
|
3
|
-
generated: Array<{
|
|
4
|
-
pattern: string;
|
|
5
|
-
source: string;
|
|
6
|
-
}>;
|
|
7
|
-
create_once: Array<{
|
|
8
|
-
path: string;
|
|
9
|
-
source: string;
|
|
10
|
-
}>;
|
|
11
|
-
user_data_dirs: string[];
|
|
12
|
-
}
|
|
13
|
-
export declare function loadInstallManifest(packageRoot: string): InstallManifest;
|
|
14
|
-
export declare function isGeneratedFile(filePath: string): boolean;
|
|
15
|
-
//# sourceMappingURL=protection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protection.d.ts","sourceRoot":"","sources":["../../src/fs/protection.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAIxE;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIzD"}
|
package/dist/fs/protection.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { parse as parseYaml } from "yaml";
|
|
4
|
-
export function loadInstallManifest(packageRoot) {
|
|
5
|
-
const manifestPath = path.resolve(packageRoot, "install-manifest.yaml");
|
|
6
|
-
const raw = readFileSync(manifestPath, "utf-8");
|
|
7
|
-
return parseYaml(raw);
|
|
8
|
-
}
|
|
9
|
-
const GENERATED_MARKER = "<!-- GENERATED by mvtt";
|
|
10
|
-
export function isGeneratedFile(filePath) {
|
|
11
|
-
if (!existsSync(filePath))
|
|
12
|
-
return false;
|
|
13
|
-
const content = readFileSync(filePath, "utf-8");
|
|
14
|
-
return content.trimStart().startsWith(GENERATED_MARKER);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=protection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protection.js","sourceRoot":"","sources":["../../src/fs/protection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAS1C,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,GAAG,CAAoB,CAAC;AAC3C,CAAC;AAED,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC1D,CAAC"}
|