@uoyo/mvtt 2.0.0 → 2.2.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/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +18 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/fs/core-manifest.d.ts +4 -3
- package/dist/fs/core-manifest.d.ts.map +1 -1
- package/dist/fs/core-manifest.js +5 -4
- package/dist/fs/core-manifest.js.map +1 -1
- package/dist/fs/materialize.d.ts +2 -0
- package/dist/fs/materialize.d.ts.map +1 -1
- package/dist/fs/materialize.js +6 -5
- package/dist/fs/materialize.js.map +1 -1
- package/dist/fs/registry-merge.d.ts +4 -3
- package/dist/fs/registry-merge.d.ts.map +1 -1
- package/dist/fs/registry-merge.js +5 -4
- package/dist/fs/registry-merge.js.map +1 -1
- package/dist/scripts/epic-update.cjs +235 -207
- package/dist/scripts/epic-update.md +57 -0
- package/dist/scripts/plan-update.cjs +224 -222
- package/dist/scripts/plan-update.md +68 -0
- package/dist/scripts/session-update.cjs +229 -210
- package/install-manifest.yaml +4 -0
- package/package.json +1 -1
- package/sources/defaults/config.yaml +5 -0
- package/sources/scripts/epic-update.js +73 -22
- package/sources/scripts/epic-update.md +57 -0
- package/sources/scripts/plan-update.js +56 -28
- package/sources/scripts/plan-update.md +68 -0
- package/sources/scripts/session-update.js +68 -24
- package/sources/sections/activation-protocol.md +46 -0
- package/sources/sections/footer-next-steps.md +1 -1
- package/sources/sections/language-constraint.md +3 -18
- package/sources/sections/output-format-constraint.md +6 -9
- package/sources/sections/role-header.md +1 -1
- package/sources/sections/script-usage-rule.md +32 -0
- package/sources/sections/session-update.md +30 -110
- package/sources/skills/mvt-analyze/business.md +1 -1
- package/sources/skills/mvt-analyze/manifest.yaml +13 -16
- package/sources/skills/mvt-analyze-code/business.md +3 -0
- package/sources/skills/mvt-analyze-code/manifest.yaml +11 -15
- package/sources/skills/mvt-bug-detect/manifest.yaml +3 -4
- package/sources/skills/mvt-check-context/business.md +2 -2
- package/sources/skills/mvt-check-context/manifest.yaml +3 -6
- package/sources/skills/mvt-cleanup/business.md +47 -11
- package/sources/skills/mvt-cleanup/manifest.yaml +12 -13
- package/sources/skills/mvt-config/business.md +45 -49
- package/sources/skills/mvt-config/manifest.yaml +21 -25
- package/sources/skills/mvt-create-skill/business.md +15 -11
- package/sources/skills/mvt-create-skill/manifest.yaml +6 -9
- package/sources/skills/mvt-decompose/business.md +21 -9
- package/sources/skills/mvt-decompose/manifest.yaml +15 -17
- package/sources/skills/mvt-design/business.md +35 -44
- package/sources/skills/mvt-design/manifest.yaml +13 -15
- package/sources/skills/mvt-fix/business.md +7 -1
- package/sources/skills/mvt-fix/manifest.yaml +9 -13
- package/sources/skills/mvt-help/business.md +20 -9
- package/sources/skills/mvt-help/manifest.yaml +7 -18
- package/sources/skills/mvt-implement/business.md +27 -34
- package/sources/skills/mvt-implement/manifest.yaml +12 -21
- package/sources/skills/mvt-init/manifest.yaml +10 -13
- package/sources/skills/mvt-manage-context/business.md +4 -2
- package/sources/skills/mvt-manage-context/manifest.yaml +3 -6
- package/sources/skills/mvt-plan-dev/business.md +20 -8
- package/sources/skills/mvt-plan-dev/manifest.yaml +13 -17
- package/sources/skills/mvt-quick-dev/business.md +1 -1
- package/sources/skills/mvt-quick-dev/manifest.yaml +3 -4
- package/sources/skills/mvt-refactor/business.md +1 -1
- package/sources/skills/mvt-refactor/manifest.yaml +3 -4
- package/sources/skills/mvt-resume/business.md +3 -3
- package/sources/skills/mvt-resume/manifest.yaml +10 -13
- package/sources/skills/mvt-review/business.md +12 -11
- package/sources/skills/mvt-review/manifest.yaml +17 -18
- package/sources/skills/mvt-status/business.md +12 -21
- package/sources/skills/mvt-status/manifest.yaml +7 -10
- package/sources/skills/mvt-sync-context/business.md +20 -18
- package/sources/skills/mvt-sync-context/manifest.yaml +11 -15
- package/sources/skills/mvt-template/business.md +5 -5
- package/sources/skills/mvt-template/manifest.yaml +3 -6
- package/sources/skills/mvt-test/business.md +11 -11
- package/sources/skills/mvt-test/manifest.yaml +15 -18
- package/sources/skills/mvt-update-plan/business.md +18 -29
- package/sources/skills/mvt-update-plan/manifest.yaml +18 -16
- package/sources/templates/analyze-output/body.md +41 -0
- package/sources/templates/decompose-output/body.md +36 -0
- package/sources/templates/design-output/body.md +48 -0
- package/sources/templates/implement-output/body.md +48 -3
- package/sources/templates/project-context/body.md +45 -0
- package/sources/templates/review-output/body.md +59 -0
- package/sources/templates/test-output/body.md +72 -0
- package/sources/sections/activation-load-config.md +0 -11
- package/sources/sections/activation-load-context.md +0 -59
- package/sources/sections/activation-preflight.md +0 -14
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
| Recently modified source files | Last-resort, last 24h mtime |
|
|
22
22
|
|
|
23
23
|
- For each target file, locate or plan its corresponding test file path using the project's test layout convention (mirror under `tests/`, sibling `*.test.ts`, etc.).
|
|
24
|
+
- If the selected source is `git diff --name-only main...HEAD` or `Recently modified source files`, present the resolved target list and ask for scope confirmation before Step 7 writes any test file. Do not write tests from a low-confidence fallback without confirmation.
|
|
24
25
|
|
|
25
26
|
### Step 3: Identify Project Scope and Load Project-Specific Knowledge
|
|
26
27
|
|
|
@@ -35,7 +36,7 @@ This step applies only when the workspace has multiple projects (`projects.lengt
|
|
|
35
36
|
2. Every entry under `skills.mvt-test.knowledge.{P}` -- load each entry's referenced files.
|
|
36
37
|
3. Skip any key absent from the registry (no project-specific knowledge is valid; do not warn).
|
|
37
38
|
- **Multi-project scenario**: if files span multiple projects, load each project's knowledge sequentially. The skill operates with the union of all loaded project-specific knowledge plus the `_all` knowledge already loaded at activation.
|
|
38
|
-
- **Unmatched files**: if a file path does not match any project's `path` or `source_paths`, surface a note and
|
|
39
|
+
- **Unmatched files**: if a file path does not match any project's `path` or `source_paths`, surface a note and ask the user to choose the project scope. Do not silently fall back to the first project.
|
|
39
40
|
|
|
40
41
|
### Step 4: Identify Test Scenarios
|
|
41
42
|
- **What**: produce a Scenario Table covering happy path, edge, negative, and security cases.
|
|
@@ -91,16 +92,13 @@ This step applies only when the workspace has multiple projects (`projects.lengt
|
|
|
91
92
|
- Record each finding with: scenario id, expected vs observed, severity (Critical / Warning), and recommend `/mvt-fix`.
|
|
92
93
|
|
|
93
94
|
### Step 10: Write Artifact
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
96
|
-
- `
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
- `Coverage Analysis` -- only when `--coverage`; otherwise omit the heading.
|
|
102
|
-
- `Implementation Issues Found` -- from Step 9; empty list is fine.
|
|
103
|
-
- `Suggested Run Commands` -- one or two commands the user can copy-paste.
|
|
95
|
+
- **Scope of this step**: this gate concerns ONLY the test-design record artifact (`test-design.md`). The actual test files were already written to the project tree in Step 7 and are NOT affected by the choice below.
|
|
96
|
+
- **Confirm before writing**: when an `active_change` exists (so an artifact would be written), present the test-design summary in the conversation first (target scope, scenario/case counts, coverage gaps, any implementation issues), then ask the user whether to persist it: `Write the test-design artifact to {path}? (y/n)`.
|
|
97
|
+
- If the user declines (n), do NOT write any file under `artifacts/`. Keep the full test design in the conversation only, and note that no artifact was persisted. Then continue to Step 11.
|
|
98
|
+
- If the user confirms (y), write the artifact as described below.
|
|
99
|
+
- When no `active_change` exists, there is no artifact to write — skip the prompt and keep the full test design in the conversation only (no artifact).
|
|
100
|
+
- **Path and template**: as defined in the **Artifact Structure** section below; this applies only when an `active_change` exists. Follow the HTML comments in the template for what each section should contain; strip comments from the final artifact.
|
|
101
|
+
- **Required coverage**: cover only content that is applicable to this test effort. Preserve enough information for the user to understand the target scope, chosen framework/layout, scenarios and runnable test cases, granularity choices, coverage gaps when `--coverage` is set, implementation issues when found, and practical run commands when tests are generated. Do not create empty or artificial sections just because an item is named here; if the template omits or renames a section, place applicable content in the closest relevant section.
|
|
104
102
|
- The actual test files go to the project tree; the artifact is a record.
|
|
105
103
|
|
|
106
104
|
### Step 11: State Update
|
|
@@ -117,3 +115,5 @@ Apply the State Update rules defined in the **State Update** section below.
|
|
|
117
115
|
| Flaky test detected during writing | Add deterministic seeding/clock; if not possible, mark as `flaky-suspected` and surface in artifact |
|
|
118
116
|
| User asks to "skip edge cases" | Refuse: edge cases are a non-negotiable boundary of this skill; explain and continue |
|
|
119
117
|
| `--coverage` set but coverage tool not configured in project | Generate the gap list from scenarios alone; suggest tool setup; do not invoke a non-existent coverage runner |
|
|
118
|
+
| User declines to write the artifact at Step 10 | Do not write any file under `artifacts/`; keep the test design in the conversation only and note that no artifact was persisted. Test files already written to the project tree (Step 7) are unaffected |
|
|
119
|
+
| `active_change` is missing entirely | Write the test files to the project tree as usual, but keep the test-design record in the conversation only; do not write any artifact (no ad-hoc artifact path) |
|
|
@@ -31,9 +31,9 @@ sections:
|
|
|
31
31
|
- scope: "modify the code being tested"
|
|
32
32
|
skill: "/mvt-fix"
|
|
33
33
|
- scope: "make architecture decisions"
|
|
34
|
-
|
|
34
|
+
guidance: "test against existing design"
|
|
35
35
|
- scope: "skip edge cases or negative tests"
|
|
36
|
-
|
|
36
|
+
guidance: "never"
|
|
37
37
|
|
|
38
38
|
- type: inline
|
|
39
39
|
content: |
|
|
@@ -46,23 +46,14 @@ sections:
|
|
|
46
46
|
| `/mvt-test --coverage` | Generate tests with coverage analysis |
|
|
47
47
|
|
|
48
48
|
- type: shared
|
|
49
|
-
source: sections/activation-
|
|
49
|
+
source: sections/activation-protocol.md
|
|
50
50
|
params:
|
|
51
|
+
activation_reads:
|
|
52
|
+
- session.yaml
|
|
51
53
|
extended_context:
|
|
52
54
|
- "Implementation files to be tested"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
source: sections/activation-load-config.md
|
|
56
|
-
|
|
57
|
-
- type: shared
|
|
58
|
-
source: sections/language-constraint.md
|
|
59
|
-
|
|
60
|
-
- type: shared
|
|
61
|
-
source: sections/output-format-constraint.md
|
|
62
|
-
|
|
63
|
-
- type: shared
|
|
64
|
-
source: sections/activation-preflight.md
|
|
65
|
-
params:
|
|
55
|
+
- ".ai-agents/workspace/artifacts/{active_change.id}/design.md -- error paths / data flow that negative-path scenarios trace to (skip if absent)"
|
|
56
|
+
has_preflight: true
|
|
66
57
|
checks:
|
|
67
58
|
- order: "1"
|
|
68
59
|
field: "session.initialized_at"
|
|
@@ -73,6 +64,12 @@ sections:
|
|
|
73
64
|
level: "WARN"
|
|
74
65
|
message: "No implementation found. Run `/mvt-implement` first."
|
|
75
66
|
|
|
67
|
+
- type: shared
|
|
68
|
+
source: sections/language-constraint.md
|
|
69
|
+
|
|
70
|
+
- type: shared
|
|
71
|
+
source: sections/output-format-constraint.md
|
|
72
|
+
|
|
76
73
|
- type: inline
|
|
77
74
|
content: |
|
|
78
75
|
## Test Case Types
|
|
@@ -93,8 +90,8 @@ sections:
|
|
|
93
90
|
## Artifact Structure
|
|
94
91
|
Read the document structure template from: `.ai-agents/skills/_templates/test-output.md`
|
|
95
92
|
If a custom version exists at `.ai-agents/skills/_templates/custom/test-output.md`, use the custom version instead.
|
|
96
|
-
The template defines section
|
|
97
|
-
Write the artifact to: `.ai-agents/workspace/artifacts/{change-id}/
|
|
93
|
+
The template defines section structure and guidance comments. Generate applicable content based on test design results.
|
|
94
|
+
Write the artifact to: `.ai-agents/workspace/artifacts/{change-id}/test-design.md`
|
|
98
95
|
|
|
99
96
|
- type: shared
|
|
100
97
|
source: sections/session-update.md
|
|
@@ -29,7 +29,9 @@ The mechanical work — mutating the task, recomputing `current_tasks` via the p
|
|
|
29
29
|
rules, validating the result, and writing back atomically — is performed by a
|
|
30
30
|
deterministic script. Do NOT hand-edit `plan.yaml` or reason through the
|
|
31
31
|
`current_tasks` selection yourself; call the script with the resolved arguments
|
|
32
|
-
from Step 1–2
|
|
32
|
+
from Step 1–2. See the **Script Usage Rule** section for the command template,
|
|
33
|
+
or read `.ai-agents/scripts/plan-update.md` for argument value sources,
|
|
34
|
+
parameter semantics, and output interpretation.
|
|
33
35
|
|
|
34
36
|
```bash
|
|
35
37
|
node .ai-agents/scripts/plan-update.cjs --plan "<active_change.plan_path>" --task <task_id> --status <new_status> --projects "<comma,separated,project,names>" [--artifacts "<comma,separated,paths>"] [--notes "<note text>"]
|
|
@@ -37,30 +39,7 @@ node .ai-agents/scripts/plan-update.cjs --plan "<active_change.plan_path>" --tas
|
|
|
37
39
|
|
|
38
40
|
Include `--artifacts` only if artifacts were provided, and `--notes` only if a note was provided; omit each flag otherwise.
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|----------|-------------|
|
|
42
|
-
| `--plan` | `active_change.plan_path` resolved from session.yaml |
|
|
43
|
-
| `--task` | the `task_id` resolved in Step 1 |
|
|
44
|
-
| `--status` | the `new_status` resolved in Step 1 (`pending`/`in_progress`/`done`/`blocked`/`skipped`) |
|
|
45
|
-
| `--projects` | comma-separated project names read from `project-context.yaml > projects[].name` |
|
|
46
|
-
| `--artifacts` | optional; comma-separated paths to append (the script de-duplicates) |
|
|
47
|
-
| `--notes` | optional; overwrites the task's `notes` |
|
|
48
|
-
|
|
49
|
-
The script performs, deterministically:
|
|
50
|
-
|
|
51
|
-
1. **Apply**: sets the task status; appends + de-duplicates `--artifacts` (handles `artifacts: null`); overwrites `--notes`; sets `completed_at` to now when status is `done`, else `null`; refreshes `plan.updated_at`.
|
|
52
|
-
2. **Recompute `current_tasks`** (per-project independent advancement): for each project, finds the `in_progress` task or advances the first `pending` task whose `depends_on` are all in `resolvedIds` (done + skipped; blocked does NOT satisfy). Detects `project_switch` when advancement crosses a project boundary. Plan done -> `current_tasks = {}`.
|
|
53
|
-
3. **Validate** the mutated plan (unique ids, valid `depends_on` references, DAG/no-cycle per project, one `in_progress` per project, every task has acceptance, `completed_at` consistency, `current_tasks` validity, project naming constraint, task project membership).
|
|
54
|
-
4. **Write atomically** (temp + rename) only if validation passes.
|
|
55
|
-
|
|
56
|
-
**Interpreting the result:**
|
|
57
|
-
|
|
58
|
-
- **Exit 0**: success. stdout is a single-line JSON object:
|
|
59
|
-
```json
|
|
60
|
-
{"ok":true,"task":{"id":"t1","title":"...","old_status":"in_progress","new_status":"done"},"current_tasks":{"default":"t2"},"plan_status":"in_progress","progress":{"done":1,"total":4},"warning":null,"project_switch":null}
|
|
61
|
-
```
|
|
62
|
-
Use these fields directly to render the Output Format block. The file is already written — do NOT read it back to verify. If `warning` is non-null, surface it. If `project_switch` is non-null, note the project boundary crossing.
|
|
63
|
-
- **Exit 1**: failure. stderr carries the error (invalid status, task not found, validation failure, parse/write error). The file was **not** modified. Report the error to the user and do not fabricate a success summary.
|
|
42
|
+
**Interpreting the result:** See `.ai-agents/scripts/plan-update.md` "Output interpretation" for the exit-0 / exit-1 protocol. On exit 0, use the JSON fields directly to render the Output Format block. On exit 1, report stderr and do not fabricate a success summary.
|
|
64
43
|
|
|
65
44
|
### Step 4: Output
|
|
66
45
|
|
|
@@ -91,15 +70,25 @@ After the Step 3 script reports `plan_status: "done"`:
|
|
|
91
70
|
> - **(defer)** Mark child done but don't advance yet
|
|
92
71
|
|
|
93
72
|
4. On **y**:
|
|
94
|
-
|
|
95
|
-
|
|
73
|
+
- Call the Epic Update Script in `--complete-child` mode using the command below:
|
|
74
|
+
```bash
|
|
75
|
+
node .ai-agents/scripts/epic-update.cjs --epic "<active_epic.epic_path>" --complete-child <active_change.id>
|
|
76
|
+
```
|
|
77
|
+
- If the epic-update command fails, STOP and do not call `session-update.cjs`; report stderr and keep the active change open.
|
|
78
|
+
- If epic-update succeeds, call `session-update.cjs --skill mvt-update-plan --summary "..." --close-change`.
|
|
79
|
+
- If session-update fails after epic-update succeeded, report the divergence explicitly: the child was marked done in `epic.yaml`, but `session.active_change` was not closed. Tell the user to rerun `/mvt-update-plan` or manually recover session state before continuing.
|
|
96
80
|
- Display: next child info from epic-update stdout. Suggest `/mvt-analyze` to start the next sub-change.
|
|
97
81
|
|
|
98
82
|
5. On **n**: No action. Display reminder: "Change remains open. Run other skills (e.g., `/mvt-review`, `/mvt-test`, `/mvt-fix`) as needed; run `/mvt-update-plan` again when ready to advance the epic."
|
|
99
83
|
|
|
100
84
|
6. On **defer**:
|
|
101
|
-
|
|
102
|
-
|
|
85
|
+
- Call the Epic Update Script in `--set-child-status` mode using the command below:
|
|
86
|
+
```bash
|
|
87
|
+
node .ai-agents/scripts/epic-update.cjs --epic "<active_epic.epic_path>" --set-child-status <active_change.id> --child-status done
|
|
88
|
+
```
|
|
89
|
+
- If the epic-update command fails, STOP and do not call `session-update.cjs`; report stderr and keep the active change open.
|
|
90
|
+
- If epic-update succeeds, call `session-update.cjs --skill mvt-update-plan --summary "..." --close-change`.
|
|
91
|
+
- If session-update fails after epic-update succeeded, report the divergence explicitly: the child was marked done in `epic.yaml`, but `session.active_change` was not closed. Tell the user to rerun `/mvt-update-plan` or manually recover session state before continuing.
|
|
103
92
|
- Display: "Child marked done, current_change unchanged."
|
|
104
93
|
|
|
105
94
|
## Edge Cases & Errors
|
|
@@ -35,32 +35,28 @@ sections:
|
|
|
35
35
|
skill: "/mvt-implement"
|
|
36
36
|
|
|
37
37
|
- type: shared
|
|
38
|
-
source: sections/activation-
|
|
38
|
+
source: sections/activation-protocol.md
|
|
39
39
|
params:
|
|
40
|
+
activation_reads:
|
|
41
|
+
- session.yaml
|
|
40
42
|
extended_context:
|
|
41
43
|
- "{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/language-constraint.md
|
|
48
|
-
|
|
49
|
-
- type: shared
|
|
50
|
-
source: sections/output-format-constraint.md
|
|
51
|
-
|
|
52
|
-
- type: shared
|
|
53
|
-
source: sections/activation-preflight.md
|
|
54
|
-
params:
|
|
44
|
+
has_preflight: true
|
|
55
45
|
checks:
|
|
56
46
|
- order: "1"
|
|
57
47
|
field: "session.initialized_at"
|
|
58
48
|
level: "WARN"
|
|
59
|
-
message:
|
|
49
|
+
message: "Session not initialized. Run `/mvt-init` first."
|
|
60
50
|
- order: "2"
|
|
61
51
|
field: "active_change.plan_path"
|
|
62
52
|
level: "BLOCK"
|
|
63
|
-
message:
|
|
53
|
+
message: "No active plan. Run `/mvt-plan-dev` to create one."
|
|
54
|
+
|
|
55
|
+
- type: shared
|
|
56
|
+
source: sections/language-constraint.md
|
|
57
|
+
|
|
58
|
+
- type: shared
|
|
59
|
+
source: sections/output-format-constraint.md
|
|
64
60
|
|
|
65
61
|
- type: inline
|
|
66
62
|
content: |
|
|
@@ -108,6 +104,12 @@ sections:
|
|
|
108
104
|
current_skill: mvt-update-plan
|
|
109
105
|
update_change: true
|
|
110
106
|
|
|
107
|
+
- type: shared
|
|
108
|
+
source: sections/script-usage-rule.md
|
|
109
|
+
params:
|
|
110
|
+
uses_plan_update: true
|
|
111
|
+
epic_update_inline_modes_only: true
|
|
112
|
+
|
|
111
113
|
- type: shared
|
|
112
114
|
source: sections/footer-next-steps.md
|
|
113
115
|
params:
|
|
@@ -1,15 +1,56 @@
|
|
|
1
1
|
# Requirements Analysis: {Feature Name}
|
|
2
2
|
|
|
3
|
+
<!--
|
|
4
|
+
This template defines the structure of analysis.md.
|
|
5
|
+
Each section below includes a guidance comment explaining what to write.
|
|
6
|
+
Replace {Feature Name} with the actual feature/change name.
|
|
7
|
+
Remove these HTML comments in the final artifact.
|
|
8
|
+
-->
|
|
9
|
+
|
|
3
10
|
## Feature Overview
|
|
11
|
+
<!--
|
|
12
|
+
One paragraph: what the requirement asks for, the scope of this analysis,
|
|
13
|
+
and the source of the requirements (file path or "conversation only").
|
|
14
|
+
Keep it concise — the details go in the sections below.
|
|
15
|
+
-->
|
|
4
16
|
|
|
5
17
|
## Actors
|
|
18
|
+
<!--
|
|
19
|
+
List all actors and stakeholders involved in the feature: user roles,
|
|
20
|
+
system actors, and external services. One line per actor with its role.
|
|
21
|
+
If only one actor is involved, state it explicitly.
|
|
22
|
+
-->
|
|
6
23
|
|
|
7
24
|
## Requirements
|
|
25
|
+
<!--
|
|
26
|
+
The extracted features and functionality, grouped logically.
|
|
27
|
+
Each requirement: what it does + any assumptions made during extraction.
|
|
28
|
+
This is the core of the analysis — be specific and actionable.
|
|
29
|
+
-->
|
|
8
30
|
|
|
9
31
|
## Domain Concepts
|
|
32
|
+
<!--
|
|
33
|
+
Key domain entities, terms, and abstractions introduced or affected.
|
|
34
|
+
Present as a glossary where helpful: | Term | Meaning |.
|
|
35
|
+
Include models, value objects, DTOs, and configuration concepts.
|
|
36
|
+
-->
|
|
10
37
|
|
|
11
38
|
## Business Rules
|
|
39
|
+
<!--
|
|
40
|
+
Extracted business rules and constraints: validation rules, computation
|
|
41
|
+
rules, state transitions, and access restrictions. One rule per bullet
|
|
42
|
+
with a clear statement of the constraint.
|
|
43
|
+
-->
|
|
12
44
|
|
|
13
45
|
## Ambiguities & Questions
|
|
46
|
+
<!--
|
|
47
|
+
Unclear, missing, or conflicting requirements detected during analysis.
|
|
48
|
+
Each item: the ambiguity + a specific clarification question for the user.
|
|
49
|
+
If no ambiguities were found, write "None detected".
|
|
50
|
+
-->
|
|
14
51
|
|
|
15
52
|
## Change Tracking
|
|
53
|
+
<!--
|
|
54
|
+
Optional. If this analysis feeds a tracked change, note the change-id and
|
|
55
|
+
a one-line status. Otherwise, omit this section entirely.
|
|
56
|
+
-->
|
|
@@ -1,13 +1,49 @@
|
|
|
1
1
|
# Epic Decomposition: {Epic Title}
|
|
2
2
|
|
|
3
|
+
<!--
|
|
4
|
+
This template defines the structure of epic.md (the narrative companion
|
|
5
|
+
to epic.yaml). Each section below includes a guidance comment explaining
|
|
6
|
+
what to write. Replace {Epic Title} with the actual epic name.
|
|
7
|
+
Remove these HTML comments in the final artifact.
|
|
8
|
+
-->
|
|
9
|
+
|
|
3
10
|
## Vision
|
|
11
|
+
<!--
|
|
12
|
+
One-sentence summary of the overall epic goal. This is the single
|
|
13
|
+
cohesive outcome the decomposition aims to deliver.
|
|
14
|
+
-->
|
|
4
15
|
|
|
5
16
|
## Scope & Out of Scope
|
|
17
|
+
<!--
|
|
18
|
+
What the epic delivers (in scope) vs. what it explicitly excludes
|
|
19
|
+
(out of scope). Two short lists or a two-column table. Boundaries here
|
|
20
|
+
prevent scope creep into the child stories.
|
|
21
|
+
-->
|
|
6
22
|
|
|
7
23
|
## Cross-cutting Concerns
|
|
24
|
+
<!--
|
|
25
|
+
Themes spanning multiple children: auth, logging, error handling, data
|
|
26
|
+
migration, shared infrastructure, etc. Each concern: which children it
|
|
27
|
+
affects. These are not standalone children — they are shared obligations.
|
|
28
|
+
-->
|
|
8
29
|
|
|
9
30
|
## Child Stories
|
|
31
|
+
<!--
|
|
32
|
+
Markdown table mirroring epic.yaml children[]. Columns:
|
|
33
|
+
| # | Child | Scope | Status | Depends On |
|
|
34
|
+
One row per child story. Status is `active` for the first child and
|
|
35
|
+
`pending` for the rest. Depends On lists change_ids (empty for roots).
|
|
36
|
+
-->
|
|
10
37
|
|
|
11
38
|
## Dependency Map
|
|
39
|
+
<!--
|
|
40
|
+
Mermaid flowchart showing child dependencies (the DAG). Each node is a
|
|
41
|
+
child change_id; edges point from dependency to dependent. This must
|
|
42
|
+
match the depends_on relationships in epic.yaml and contain no cycles.
|
|
43
|
+
-->
|
|
12
44
|
|
|
13
45
|
## Open Questions
|
|
46
|
+
<!--
|
|
47
|
+
Ambiguities or decisions deferred during decomposition. Each item: the
|
|
48
|
+
question + which child it affects (if any). If none, write "None".
|
|
49
|
+
-->
|
|
@@ -1,17 +1,65 @@
|
|
|
1
1
|
# Architecture Design: {Feature Name}
|
|
2
2
|
|
|
3
|
+
<!--
|
|
4
|
+
This template defines the structure of design.md.
|
|
5
|
+
Each section below includes a guidance comment explaining what to write.
|
|
6
|
+
Replace {Feature Name} with the actual feature/change name.
|
|
7
|
+
Remove these HTML comments in the final artifact.
|
|
8
|
+
-->
|
|
9
|
+
|
|
3
10
|
## Overview
|
|
11
|
+
<!--
|
|
12
|
+
The problem statement: what is being designed and why. Summarise the
|
|
13
|
+
requirement context (from analysis.md or conversation) and the design
|
|
14
|
+
goal in one short paragraph.
|
|
15
|
+
-->
|
|
4
16
|
|
|
5
17
|
## Architecture Decision Records
|
|
18
|
+
<!--
|
|
19
|
+
Every ADR from the design process. Each ADR: context, decision, status
|
|
20
|
+
(proposed/accepted/superseded), and consequences. Never zero ADRs — if
|
|
21
|
+
none were needed, produce minimal one-line ADRs. In --plan mode, ADRs
|
|
22
|
+
collapse to one-line `decision: <text>`.
|
|
23
|
+
-->
|
|
6
24
|
|
|
7
25
|
## Module Design
|
|
26
|
+
<!--
|
|
27
|
+
Table of modules from the design: | Module | Path | Responsibility |
|
|
28
|
+
Dependencies |. Each module's boundary, what it owns, and what it
|
|
29
|
+
depends on. This drives the File Structure and implementation ordering.
|
|
30
|
+
-->
|
|
8
31
|
|
|
9
32
|
## Key Interfaces
|
|
33
|
+
<!--
|
|
34
|
+
Explicit signatures and endpoints: function signatures, class contracts,
|
|
35
|
+
HTTP endpoints (method + path), event contracts. These are the public
|
|
36
|
+
contracts that /mvt-implement must match exactly.
|
|
37
|
+
-->
|
|
10
38
|
|
|
11
39
|
## Data Flow
|
|
40
|
+
<!--
|
|
41
|
+
Sequences describing how data moves through the system, including error
|
|
42
|
+
paths. Use prose or mermaid sequence diagrams. Cover the main flow and
|
|
43
|
+
each declared error path.
|
|
44
|
+
-->
|
|
12
45
|
|
|
13
46
|
## File Structure
|
|
47
|
+
<!--
|
|
48
|
+
Mapping of modules to file/directory paths in this repo. Show the
|
|
49
|
+
intended file layout (create/modify/delete) so /mvt-implement and
|
|
50
|
+
/mvt-plan-dev can locate targets without re-deriving paths.
|
|
51
|
+
-->
|
|
14
52
|
|
|
15
53
|
## Implementation Guidelines
|
|
54
|
+
<!--
|
|
55
|
+
Ordering hints for /mvt-implement and /mvt-plan-dev: which modules to
|
|
56
|
+
build first, shared dependencies to establish early, and any sequencing
|
|
57
|
+
constraints. Not a task list — just guidance.
|
|
58
|
+
-->
|
|
16
59
|
|
|
17
60
|
## Change Tracking
|
|
61
|
+
<!--
|
|
62
|
+
List of files expected to be created/modified/deleted by this design.
|
|
63
|
+
This is the footprint estimate; /mvt-implement records the actual
|
|
64
|
+
footprint. If > ~5 files or > 1 new module, /mvt-plan-dev is recommended.
|
|
65
|
+
-->
|
|
@@ -1,11 +1,56 @@
|
|
|
1
1
|
# Implementation: {Feature Name}
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!--
|
|
4
|
+
This template defines the structure of implementation.md.
|
|
5
|
+
Each section below includes a guidance comment explaining what to write.
|
|
6
|
+
Replace {Feature Name} with the actual feature/change name.
|
|
7
|
+
Remove these HTML comments in the final artifact.
|
|
8
|
+
-->
|
|
4
9
|
|
|
5
|
-
##
|
|
10
|
+
## Implementation Summary
|
|
11
|
+
<!--
|
|
12
|
+
One paragraph: what was built, the scope of this implementation, and
|
|
13
|
+
which design or plan task it fulfils. Keep it concise — the details go
|
|
14
|
+
in the sections below.
|
|
15
|
+
-->
|
|
6
16
|
|
|
7
|
-
##
|
|
17
|
+
## Files Touched
|
|
18
|
+
<!--
|
|
19
|
+
Table with columns: Path | Action (create/modify/delete) | Intent (one line)
|
|
20
|
+
List every file written, modified, or deleted during this implementation.
|
|
21
|
+
This is the authoritative record of the change footprint.
|
|
22
|
+
-->
|
|
8
23
|
|
|
9
24
|
## Design Compliance
|
|
25
|
+
<!--
|
|
26
|
+
Summary of Step 5 design-compliance checks. For each check, state:
|
|
27
|
+
passed / deviated / not-applicable, with a one-line reason.
|
|
28
|
+
mvt-review will read this section and independently verify the claims.
|
|
29
|
+
-->
|
|
30
|
+
|
|
31
|
+
## Deviations from Design
|
|
32
|
+
<!--
|
|
33
|
+
List any deviations from design.md (files added/removed, interface changes,
|
|
34
|
+
module placement changes). Each entry: what changed + why.
|
|
35
|
+
An empty list (write "None") is acceptable and expected for clean implementations.
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
## Self-Check Results
|
|
39
|
+
<!--
|
|
40
|
+
Record Step 6 outcomes: type-checker status (pass/fail/not-configured),
|
|
41
|
+
any suggested test commands, and UI verification status if applicable.
|
|
42
|
+
Do NOT claim "tested" if only a type-check was run.
|
|
43
|
+
-->
|
|
44
|
+
|
|
45
|
+
## Open TODOs
|
|
46
|
+
<!--
|
|
47
|
+
Anything deferred to /mvt-review, /mvt-test, or a follow-up change.
|
|
48
|
+
Each item: what is pending + who/which skill should handle it.
|
|
49
|
+
Write "None" if nothing is deferred.
|
|
50
|
+
-->
|
|
10
51
|
|
|
11
52
|
## Change Tracking
|
|
53
|
+
<!--
|
|
54
|
+
Optional. If this change is tracked in plan.yaml, note the task id(s)
|
|
55
|
+
and a one-line status. Otherwise, omit this section entirely.
|
|
56
|
+
-->
|
|
@@ -1,13 +1,58 @@
|
|
|
1
1
|
# Project: {project name}
|
|
2
2
|
|
|
3
|
+
<!--
|
|
4
|
+
This template defines the structure of project-context.md — the
|
|
5
|
+
project semantic document generated by /mvt-analyze-code.
|
|
6
|
+
Each section below includes a guidance comment explaining what to write.
|
|
7
|
+
Replace {project name} with the actual project name.
|
|
8
|
+
Remove these HTML comments in the final artifact.
|
|
9
|
+
|
|
10
|
+
Multi-project note: when the workspace has multiple projects, each
|
|
11
|
+
project's content is written under its own `# Project: {name}` heading
|
|
12
|
+
within the single file. If a section has no relevant content, include
|
|
13
|
+
the heading with "(No relevant content detected)".
|
|
14
|
+
-->
|
|
15
|
+
|
|
3
16
|
## Overview
|
|
17
|
+
<!--
|
|
18
|
+
One paragraph: what the project is, its purpose, and its tech stack.
|
|
19
|
+
Inferred from the codebase structure and entry points.
|
|
20
|
+
-->
|
|
4
21
|
|
|
5
22
|
## Core Terms
|
|
23
|
+
<!--
|
|
24
|
+
Glossary of domain-specific terminology found in the code: class and
|
|
25
|
+
interface names representing domain concepts, abbreviations and their
|
|
26
|
+
expansions, domain jargon from comments and docstrings.
|
|
27
|
+
Present as a table: | Term | Meaning |.
|
|
28
|
+
-->
|
|
6
29
|
|
|
7
30
|
## Module Structure
|
|
31
|
+
<!--
|
|
32
|
+
Top-level modules and their responsibilities. For each module: path,
|
|
33
|
+
responsibility, and dependencies on other modules. Include domain
|
|
34
|
+
entities (models, schemas, types, interfaces) classified by type
|
|
35
|
+
(domain model, value object, DTO, configuration).
|
|
36
|
+
-->
|
|
8
37
|
|
|
9
38
|
## Layer Structure
|
|
39
|
+
<!--
|
|
40
|
+
Architectural layers and their boundaries: which layer imports which,
|
|
41
|
+
and any forbidden cross-layer imports. This feeds the forbidden-import
|
|
42
|
+
checks in /mvt-implement and /mvt-review.
|
|
43
|
+
-->
|
|
10
44
|
|
|
11
45
|
## Key Business Rules
|
|
46
|
+
<!--
|
|
47
|
+
Business logic and constraints extracted from code: validation rules
|
|
48
|
+
(assertions, guards), computation rules (formulas, algorithms), state
|
|
49
|
+
transition rules (workflow steps, status changes), and constraint rules
|
|
50
|
+
(limits, quotas, access restrictions).
|
|
51
|
+
-->
|
|
12
52
|
|
|
13
53
|
## API Overview
|
|
54
|
+
<!--
|
|
55
|
+
Public interfaces: HTTP endpoints (method + path), public methods of
|
|
56
|
+
service classes, event publishers/subscribers, and CLI commands if
|
|
57
|
+
applicable. This is the external contract surface of the project.
|
|
58
|
+
-->
|
|
@@ -1,11 +1,70 @@
|
|
|
1
1
|
# Code Review Report
|
|
2
2
|
|
|
3
|
+
<!--
|
|
4
|
+
This template defines the structure of review.md.
|
|
5
|
+
Each section below includes a guidance comment explaining what to write.
|
|
6
|
+
Remove these HTML comments in the final artifact.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Review Scope
|
|
10
|
+
<!--
|
|
11
|
+
The file list reviewed, the review depth (full / per-module / aspect
|
|
12
|
+
filter), and any fallbacks applied (e.g., "design.md missing -> Group A
|
|
13
|
+
skipped"). This establishes what was and was not covered.
|
|
14
|
+
-->
|
|
15
|
+
|
|
3
16
|
## Summary
|
|
17
|
+
<!--
|
|
18
|
+
Counts per severity (Critical / Warning / Suggestion) plus a one-paragraph
|
|
19
|
+
overall verdict: Approve / Approve with comments / Request changes / Block.
|
|
20
|
+
Verdict rule: Critical > 0 -> Request changes; Critical = 0 & Warnings > 5
|
|
21
|
+
-> Approve with comments; Critical = 0 & Warnings <= 5 & Suggestions only
|
|
22
|
+
-> Approve. Code-only review (design.md missing) caps at Approve with comments.
|
|
23
|
+
-->
|
|
4
24
|
|
|
5
25
|
## Critical Issues
|
|
26
|
+
<!--
|
|
27
|
+
One entry per Critical finding. Each finding: file, line range, severity,
|
|
28
|
+
observation, recommendation. Critical = bug, security flaw, broken
|
|
29
|
+
contract, data loss risk, or layer violation that breaks isolation.
|
|
30
|
+
Merge duplicate findings (same root cause, multiple files) into one entry.
|
|
31
|
+
-->
|
|
6
32
|
|
|
7
33
|
## Warnings
|
|
34
|
+
<!--
|
|
35
|
+
One entry per Warning finding. Warning = likely problem or significant
|
|
36
|
+
quality issue that is not a bug today but is high-risk or a maintainability
|
|
37
|
+
hazard (e.g., function 200 lines, duplicated logic 3x, missing tests for a
|
|
38
|
+
documented business rule). Same finding format as Critical Issues.
|
|
39
|
+
-->
|
|
8
40
|
|
|
9
41
|
## Suggestions
|
|
42
|
+
<!--
|
|
43
|
+
One entry per Suggestion finding. Suggestion = improvement, polish, or
|
|
44
|
+
taste preference (e.g., clearer variable name, split a small helper,
|
|
45
|
+
minor docstring gap). Same finding format as Critical Issues.
|
|
46
|
+
-->
|
|
47
|
+
|
|
48
|
+
## Skipped Checks
|
|
49
|
+
<!--
|
|
50
|
+
Review groups skipped because their inputs were missing (e.g., Group A
|
|
51
|
+
skipped when design.md is absent, Group E skipped when no test files in
|
|
52
|
+
scope). Each entry: the group name + the reason it was skipped.
|
|
53
|
+
If no groups were skipped, write "None".
|
|
54
|
+
-->
|
|
55
|
+
|
|
56
|
+
## Recommended Next Skill
|
|
57
|
+
<!--
|
|
58
|
+
One-line recommendation based on findings: `/mvt-fix` for Critical
|
|
59
|
+
issues, `/mvt-test` if Group E (tests) gaps, `/mvt-refactor` if Group B
|
|
60
|
+
(quality) is dominant, `/mvt-implement` if review is clean and work
|
|
61
|
+
remains. Tailor to the actual finding distribution.
|
|
62
|
+
-->
|
|
10
63
|
|
|
11
64
|
## Highlights
|
|
65
|
+
<!--
|
|
66
|
+
Positive observations worth noting: well-structured code, good test
|
|
67
|
+
coverage, clean abstractions, or anything done particularly well.
|
|
68
|
+
Balances the review and reinforces good practices. Optional — omit if
|
|
69
|
+
nothing stands out.
|
|
70
|
+
-->
|