@osovv/vv-opencode 0.35.15 → 0.35.17
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/CHANGELOG.md +17 -0
- package/README.md +5 -3
- package/package.json +1 -1
- package/schemas/vvoc/v3.json +1 -1
- package/templates/skills/vv-execute/SKILL.md +26 -1
- package/templates/skills/vv-plan/SKILL.md +10 -4
- package/templates/skills/vv-plan/references/plan-template.xml +1 -1
- package/templates/skills/vv-spec/SKILL.md +6 -3
- package/templates/skills/vv-spec/references/spec-template.xml +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## <small>0.35.17 (2026-06-14)</small>
|
|
2
|
+
|
|
3
|
+
### Summary
|
|
4
|
+
|
|
5
|
+
This release improves the accuracy of automatically generated changelog summaries by feeding the full textual diff of each commit into the summary generation prompt, so the model can ground its output in the actual file changes rather than relying solely on commit titles and metadata. This means release notes are now more faithful to what was really modified, reducing the risk of invented or misleading descriptions in the changelog.
|
|
6
|
+
|
|
7
|
+
* fix(release): include commit diffs in summaries ([f1c930c](https://github.com/osovv/vv-opencode/commit/f1c930c))
|
|
8
|
+
|
|
9
|
+
## <small>0.35.16 (2026-06-14)</small>
|
|
10
|
+
|
|
11
|
+
### Summary
|
|
12
|
+
|
|
13
|
+
This release introduces lifecycle statuses for skills specs and plans, giving users clearer visibility into the state of their skill workflows—whether a spec is being drafted, reviewed, or finalized, and whether a plan is in progress, completed, or blocked—making it easier to track progress and identify next steps in skills-based automation.
|
|
14
|
+
|
|
15
|
+
* feat(skills): add spec and plan lifecycle statuses ([5c7c095](https://github.com/osovv/vv-opencode/commit/5c7c095))
|
|
16
|
+
* chore: add typecheck to lefthook pre-commit ([cca0f03](https://github.com/osovv/vv-opencode/commit/cca0f03))
|
|
17
|
+
|
|
1
18
|
## <small>0.35.15 (2026-06-14)</small>
|
|
2
19
|
|
|
3
20
|
### Summary
|
package/README.md
CHANGED
|
@@ -68,6 +68,8 @@ vv-implementer → vv-spec-reviewer → vv-code-reviewer
|
|
|
68
68
|
Done
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
Specs and plans use a top-level lifecycle status: `draft` while being written, `approved` after explicit user approval, and `applied` after successful execution. `vv-execute` archives applied artifacts by moving specs to `.vvoc/specs/archive/` and plans to `.vvoc/plans/archive/`.
|
|
72
|
+
|
|
71
73
|
### XML grep
|
|
72
74
|
|
|
73
75
|
Plans and specs are XML documents, making every element grep-able:
|
|
@@ -89,7 +91,7 @@ grep '/\*\*' .vvoc/plans/*.xml
|
|
|
89
91
|
grep '<component>' .vvoc/plans/*.xml
|
|
90
92
|
```
|
|
91
93
|
|
|
92
|
-
|
|
94
|
+
Managed skills are installed by `vvoc`. `vv-controller` explicitly routes `vv-spec`, `vv-plan`, and `vv-review`; `vv-execute` and `vv-reflect` are available as managed skills for plan execution and durable session memory.
|
|
93
95
|
|
|
94
96
|
---
|
|
95
97
|
|
|
@@ -100,7 +102,7 @@ Setting up OpenCode for serious daily work means juggling config files, agent pr
|
|
|
100
102
|
**vv-opencode collapses that into a single `vvoc install`.** It owns the wiring so you don't have to:
|
|
101
103
|
|
|
102
104
|
- **Six plugins, one entry** — all plugins are exported from a single pinned package entry
|
|
103
|
-
- **Managed agent & skill system** — `vv-controller`
|
|
105
|
+
- **Managed agent & skill system** — `vv-controller` routes `vv-spec`, `vv-plan`, and `vv-review`; bundled managed skills also include `vv-execute` and `vv-reflect`
|
|
104
106
|
- **Model roles & presets** — assign models to roles (`smart`, `fast`, `vision`, …) and switch provider presets with one command
|
|
105
107
|
- **Security-first** — a `guardian` agent reviews permission requests, secrets are redacted from LLM-bound chat
|
|
106
108
|
- **Stale-line-number defense** — hashline-backed `edit` prevents write-against-wrong-snapshot bugs
|
|
@@ -113,7 +115,7 @@ Setting up OpenCode for serious daily work means juggling config files, agent pr
|
|
|
113
115
|
|---|---|
|
|
114
116
|
| **Plugins** | 6 plugins in one pinned package entry — workflow orchestration, model roles, guardian, hashline edit, system context injection, secrets redaction |
|
|
115
117
|
| **Agent System** | `vv-controller` routes work: direct for small changes, `investigator` for bugs, implementer+reviewer loop for risky work, analyst+architect for large features |
|
|
116
|
-
| **Skills** | `vv-spec` interviews you and writes an XML spec; `vv-plan` maps the spec to interface contracts and acceptance criteria; `vv-review` runs a review-only workflow; `vv-reflect` preserves reusable session findings as repository memory
|
|
118
|
+
| **Skills** | `vv-spec` interviews you and writes an XML spec; `vv-plan` maps the spec to interface contracts and acceptance criteria; `vv-execute` runs approved plans; `vv-review` runs a review-only workflow; `vv-reflect` preserves reusable session findings as repository memory |
|
|
117
119
|
| **Spec-to-Code Pipeline** | `vv-spec` → spec review → `vv-plan` → plan review → `vv-implementer` → code review. Three independent review gates cover requirements, contracts, and implementation |
|
|
118
120
|
| **One-Click Setup** | `vvoc install` or `vvoc sync` bootstraps everything — config, agents, skills, prompts, presets |
|
|
119
121
|
| **CLI Tooling** | 15+ commands: install, sync, status, doctor, role management, presets, guardian config, shell completion, upgrade |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osovv/vv-opencode",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.17",
|
|
4
4
|
"description": "Portable OpenCode workflow toolkit — 6 plugins, managed agents & skills, a spec-to-code pipeline, security, and the vvoc CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
package/schemas/vvoc/v3.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.35.
|
|
3
|
+
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.35.17/schemas/vvoc/v3.json",
|
|
4
4
|
"title": "vvoc config",
|
|
5
5
|
"description": "Canonical vvoc configuration document.",
|
|
6
6
|
"type": "object",
|
|
@@ -24,6 +24,18 @@ Do not mutate files until the execution mode is explicit. In classic mode, deleg
|
|
|
24
24
|
<command>sed -n '/<meta>/,/<\/meta>/p' PLAN_PATH</command>
|
|
25
25
|
<purpose>Extract plan metadata: summary, waves, complexity</purpose>
|
|
26
26
|
</helper>
|
|
27
|
+
<helper name="plan-document-status">
|
|
28
|
+
<command>sed -n '1,20p' PLAN_PATH | grep '<status>'</command>
|
|
29
|
+
<purpose>Extract the top-level plan lifecycle status. Valid document statuses are draft, approved, applied.</purpose>
|
|
30
|
+
</helper>
|
|
31
|
+
<helper name="linked-spec">
|
|
32
|
+
<command>sed -n '1,20p' PLAN_PATH | grep '<spec>'</command>
|
|
33
|
+
<purpose>Extract the spec path linked from the plan.</purpose>
|
|
34
|
+
</helper>
|
|
35
|
+
<helper name="spec-document-status">
|
|
36
|
+
<command>sed -n '1,20p' SPEC_PATH | grep '<status>'</command>
|
|
37
|
+
<purpose>Extract the top-level linked spec lifecycle status. Valid document statuses are draft, approved, applied.</purpose>
|
|
38
|
+
</helper>
|
|
27
39
|
<helper name="architecture">
|
|
28
40
|
<command>sed -n '/<architecture>/,/<\/architecture>/p' PLAN_PATH</command>
|
|
29
41
|
<purpose>Extract full architecture section with modules, files, contracts</purpose>
|
|
@@ -82,7 +94,15 @@ Do not mutate files until the execution mode is explicit. In classic mode, deleg
|
|
|
82
94
|
<step name="load-plan">Read plan.xml from .vvoc/plans/. Use list-tasks and count-tasks to understand scope. Use dependency-graph to determine execution order.</step>
|
|
83
95
|
<step name="validate-plan">
|
|
84
96
|
<check>Plan file exists and is readable</check>
|
|
97
|
+
<check>Plan path is an active plan under .vvoc/plans/ and not already under .vvoc/plans/archive/</check>
|
|
85
98
|
<check>Plan contains <plan> root tag</check>
|
|
99
|
+
<check>Plan contains a non-empty top-level <status> whose value is approved</check>
|
|
100
|
+
<check>If the top-level plan status is draft, stop and ask the user to approve the plan first. Do not execute draft plans.</check>
|
|
101
|
+
<check>If the top-level plan status is applied, stop and report that the plan has already been applied. Do not re-execute applied plans.</check>
|
|
102
|
+
<check>If the top-level plan status is missing or any value other than draft, approved, or applied, stop and report the invalid lifecycle status.</check>
|
|
103
|
+
<check>Plan contains a non-empty <spec> path pointing to a readable active spec under .vvoc/specs/ and not under .vvoc/specs/archive/</check>
|
|
104
|
+
<check>The linked spec's top-level <status> is approved</check>
|
|
105
|
+
<check>If the linked spec status is draft, applied, missing, or invalid, stop and report that vv-execute requires an approved active spec.</check>
|
|
86
106
|
<check>Plan contains <tasks> section with at least one <task></check>
|
|
87
107
|
<check>Each task has non-empty <id>, <title>, and <file></check>
|
|
88
108
|
<check>Each task has <snippet> (may be empty but must exist)</check>
|
|
@@ -283,11 +303,16 @@ Inline mode is allowed only while the work remains clear, bounded, and low-risk.
|
|
|
283
303
|
</model-selection>
|
|
284
304
|
|
|
285
305
|
<completion>
|
|
306
|
+
<step name="prepare-archive">After all tasks are complete, all required verification has passed, and all required task/wave commits are complete, prepare archival before reporting completion. Create .vvoc/specs/archive/ and .vvoc/plans/archive/ if needed. Resolve destination paths from the basenames of the active spec and plan. Never clobber existing archive files; if a destination already exists, append a timestamp suffix before the .xml extension.</step>
|
|
307
|
+
<step name="mark-applied">Update the linked spec and plan XML so their top-level lifecycle statuses are <status>applied</status>. Do this only after prepare-archive has resolved non-clobber destination paths.</step>
|
|
308
|
+
<step name="archive-artifacts">Move the applied spec from .vvoc/specs/ to .vvoc/specs/archive/ and the applied plan from .vvoc/plans/ to .vvoc/plans/archive/. If either move fails, stop and report the exact source and destination paths; do not claim execution is complete.</step>
|
|
309
|
+
<step name="archive-commit">If the applied status updates and archive moves are tracked by git, commit them as a final workflow-state commit after the move and before the summary. Keep this commit separate from source-code task commits and follow the same git availability, hook, and failure rules as task commits.</step>
|
|
286
310
|
<step name="summary">Report to the user: selected execution mode, which tasks were completed, how many files were created/modified, and whether all acceptance criteria passed.</step>
|
|
311
|
+
<step name="archive-summary">Report the archived spec path and archived plan path.</step>
|
|
287
312
|
<step name="next">Ask the user: would you like a review? (vv-review can check the implementation against the spec).</step>
|
|
288
313
|
</completion>
|
|
289
314
|
|
|
290
315
|
<task>
|
|
291
|
-
Your current task is the ongoing user request. Read the plan.xml from the path the user provided, validate its structure, assess execution complexity, and ensure the user explicitly chooses classic or inline mode unless they already specified one. Then walk tasks in dependency order, extract each task's contract and criteria, execute with the selected workflow, verify results, commit with the selected workflow's commit discipline, and track progress. Use the grep helpers to navigate the plan.
|
|
316
|
+
Your current task is the ongoing user request. Read the plan.xml from the path the user provided, validate its structure and lifecycle status, verify the plan is approved, verify the linked active spec exists and is approved, assess execution complexity, and ensure the user explicitly chooses classic or inline mode unless they already specified one. Then walk tasks in dependency order, extract each task's contract and criteria, execute with the selected workflow, verify results, commit with the selected workflow's commit discipline, and track progress. After all tasks and required commits are complete, mark the linked spec and plan as applied, move them to .vvoc/specs/archive/ and .vvoc/plans/archive/ without clobbering existing files, and report the archive paths. Use the grep helpers to navigate the plan.
|
|
292
317
|
</task>
|
|
293
318
|
</skill>
|
|
@@ -15,6 +15,7 @@ You are the vv-plan skill. Your job is to take an approved spec and write an imp
|
|
|
15
15
|
|
|
16
16
|
<prerequisites>
|
|
17
17
|
<rule>An approved spec MUST exist at .vvoc/specs/ before planning begins. Read the spec file in full.</rule>
|
|
18
|
+
<rule>The spec's top-level <status> MUST be approved. If the status is draft, missing, applied, or any other value, stop and tell the user the spec must be explicitly approved before planning.</rule>
|
|
18
19
|
<rule>If no spec exists, stop and tell the user to invoke vv-spec first.</rule>
|
|
19
20
|
<rule>Do not reinterpret or expand the spec. The plan implements ONLY what the spec describes.</rule>
|
|
20
21
|
</prerequisites>
|
|
@@ -28,9 +29,11 @@ You are the vv-plan skill. Your job is to take an approved spec and write an imp
|
|
|
28
29
|
|
|
29
30
|
<plan_document_format>
|
|
30
31
|
<rule>Load the plan template from references/plan-template.xml. Fill every element.</rule>
|
|
32
|
+
<rule>The top-level <status> element is the plan lifecycle status and MUST be one of: draft, approved, applied.</rule>
|
|
33
|
+
<rule>When first saving the plan, set the top-level status to <status>draft</status>. Only change it to approved after the user explicitly reads/reviews and approves the final plan. Never set the top-level status to applied yourself; applied is reserved for vv-execute after successful execution.</rule>
|
|
31
34
|
<rule>The plan contains two major sections: architecture (modules, contracts, dependencies) and tasks (implementation steps with code snippets).</rule>
|
|
32
35
|
<rule>Architecture section uses child tags: module, name, purpose, file (path, role), contract, depends_on (module).</rule>
|
|
33
|
-
<rule>Tasks use child tags: id (T-NNN pattern), title, file, status, description, depends_on (task_id), snippet (CDATA), acceptance (criterion), verification (command).</rule>
|
|
36
|
+
<rule>Tasks use child tags: id (T-NNN pattern), title, file, status, description, depends_on (task_id), snippet (CDATA), acceptance (criterion), verification (command). Task-level <status> values are separate from the top-level plan lifecycle status and may remain pending until execution updates them.</rule>
|
|
34
37
|
<rule>Every XML element is named for grep extraction. Use: `grep '<id>T-' plan.xml` to list tasks, `grep '<criterion>' plan.xml` for all criteria, `grep '<task_id>' plan.xml` for dependency graph.</rule>
|
|
35
38
|
<location>Save to .vvoc/plans/YYYY-MM-DD-<feature-name>-plan.xml</location>
|
|
36
39
|
</plan_document_format>
|
|
@@ -147,14 +150,17 @@ export type CacheStoreOptions = {
|
|
|
147
150
|
</self_review>
|
|
148
151
|
|
|
149
152
|
<execution_handoff>
|
|
150
|
-
<rule>Save the plan to .vvoc/plans/YYYY-MM-DD-<feature-name>-plan.xml
|
|
151
|
-
<rule>After saving, present the user
|
|
153
|
+
<rule>Save the plan to .vvoc/plans/YYYY-MM-DD-<feature-name>-plan.xml with top-level status draft.</rule>
|
|
154
|
+
<rule>After saving, present the plan file path and ask the user to read/review the plan and explicitly approve it. Do NOT offer execution options until the user approves the plan.</rule>
|
|
155
|
+
<rule>If the user requests changes, keep the plan status as draft, make the changes, re-run self-review, save the updated plan, and ask for approval again.</rule>
|
|
156
|
+
<rule>After explicit user approval, update the saved plan file so the top-level status is <status>approved</status>.</rule>
|
|
157
|
+
<rule>After the saved plan status is approved, present the user with two execution options:</rule>
|
|
152
158
|
<option name="workflow">Workflow tracked loop (recommended) — vv-implementer executes tasks, followed by vv-spec-reviewer and vv-code-reviewer. Uses work_item_open/close for each implementation wave.</option>
|
|
153
159
|
<option name="manual">Manual execution — the user or another agent executes tasks step by step following the plan directly.</option>
|
|
154
160
|
<rule>Wait for the user's choice. Do NOT start implementation.</rule>
|
|
155
161
|
</execution_handoff>
|
|
156
162
|
|
|
157
163
|
<task>
|
|
158
|
-
Your current task is the ongoing user request. Read the approved spec at .vvoc/specs
|
|
164
|
+
Your current task is the ongoing user request. Read the approved spec at .vvoc/specs/ and verify its top-level status is approved. Load the plan template from references/plan-template.xml, map the architecture (modules, contracts, dependencies), write detailed tasks with code snippets in CDATA, apply self-review, save the plan as XML with top-level status draft, ask the user to read/review and explicitly approve the plan, update the saved plan status to approved after approval, and only then offer execution options.
|
|
159
165
|
</task>
|
|
160
166
|
</skill>
|
|
@@ -46,6 +46,8 @@ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPAREN
|
|
|
46
46
|
<spec_document_format>
|
|
47
47
|
<rule>Load the spec template from references/spec-template.xml. Fill every element with the decisions confirmed during the interview.</rule>
|
|
48
48
|
<rule>Do not invent new elements beyond what the template defines. The template IS the contract.</rule>
|
|
49
|
+
<rule>The top-level <status> element is the document lifecycle status and MUST be one of: draft, approved, applied.</rule>
|
|
50
|
+
<rule>When first saving the spec, set <status>draft</status>. Only change it to approved after the user explicitly approves the final spec. Never set applied yourself; applied is reserved for vv-execute after the approved plan has been fully executed.</rule>
|
|
49
51
|
<location>Save to .vvoc/specs/YYYY-MM-DD-<name>.xml</location>
|
|
50
52
|
</spec_document_format>
|
|
51
53
|
|
|
@@ -60,15 +62,16 @@ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPAREN
|
|
|
60
62
|
<user_approval_gate>
|
|
61
63
|
<rule>Present the spec document to the user.</rule>
|
|
62
64
|
<rule>Wait for the user to review it. Do NOT proceed to planning until the user explicitly approves.</rule>
|
|
63
|
-
<rule>If the user requests changes, make
|
|
65
|
+
<rule>If the user requests changes, keep the document status as draft, make the changes, and re-present the spec. Re-run self-review after changes.</rule>
|
|
66
|
+
<rule>After explicit user approval, update the saved spec file so the top-level status is <status>approved</status>, then present the approved document state.</rule>
|
|
64
67
|
</user_approval_gate>
|
|
65
68
|
|
|
66
69
|
<handoff>
|
|
67
|
-
<rule>After approval, tell the user the spec is ready and that the next step is to invoke the vv-plan skill to create the implementation plan.</rule>
|
|
70
|
+
<rule>After approval and after the saved file status is approved, tell the user the spec is ready and that the next step is to invoke the vv-plan skill to create the implementation plan.</rule>
|
|
68
71
|
<rule>Do NOT invoke vv-plan yourself. Wait for the user.</rule>
|
|
69
72
|
</handoff>
|
|
70
73
|
|
|
71
74
|
<task>
|
|
72
|
-
Your current task is the ongoing user request. Walk the decision tree relentlessly — one branch at a time. Propose approaches, present a design section by section, get approval at each stage. Load the spec template from references/spec-template.xml and fill every element with confirmed decisions. Save to .vvoc/specs/ as XML. Stop before any implementation or planning.
|
|
75
|
+
Your current task is the ongoing user request. Walk the decision tree relentlessly — one branch at a time. Propose approaches, present a design section by section, get approval at each stage. Load the spec template from references/spec-template.xml and fill every element with confirmed decisions. Save to .vvoc/specs/ as XML with document status draft. After explicit user approval, update the saved spec status to approved. Stop before any implementation or planning.
|
|
73
76
|
</task>
|
|
74
77
|
</skill>
|