@osovv/vv-opencode 0.35.12 → 0.35.15

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 CHANGED
@@ -1,3 +1,28 @@
1
+ ## <small>0.35.15 (2026-06-14)</small>
2
+
3
+ ### Summary
4
+
5
+ This release fixes a test issue by adding a missing `id` field to an inline type in the patch-provider test, ensuring test accuracy and preventing potential false failures during validation.
6
+
7
+ * fix: add missing id field to inline type in patch-provider test ([6f6e33c](https://github.com/osovv/vv-opencode/commit/6f6e33c))
8
+
9
+ ## <small>0.35.14 (2026-06-14)</small>
10
+
11
+ ### Summary
12
+
13
+ This release adds the `reasoning: true` flag to the `vv-gpt-5.4-xhigh` and `vv-gpt-5.5-xhigh` OpenAI model configurations in the provider patch, enabling reasoning capabilities for these high-capacity models and ensuring consistent behavior with other models in the lineup.
14
+
15
+ * fix(patch-provider): add reasoning:true to vv-gpt-5.4-xhigh and vv-gpt-5.5-xhigh openai models ([88975ec](https://github.com/osovv/vv-opencode/commit/88975ec))
16
+
17
+ ## <small>0.35.13 (2026-06-14)</small>
18
+
19
+ ### Summary
20
+
21
+ This release introduces interview UX guardrails to the vv-spec module, adding a roadmap preview, per-section progress markers, honest depth estimates that expand rather than limit context, and a standardized question-card format with per-section recap. These changes make decision-tree walks more transparent and predictable while ensuring critical forks are never skipped. Additionally, the project metadata is polished with an MIT LICENSE, live CI/coverage badges, and aligned repository topics for improved discoverability.
22
+
23
+ * feat(vv-spec): add interview UX guardrails — roadmap, progress, depth estimate, recap ([d05aef9](https://github.com/osovv/vv-opencode/commit/d05aef9))
24
+ * docs: polish repo metadata, add LICENSE, live badges, and aligned topics ([4fbe4e7](https://github.com/osovv/vv-opencode/commit/4fbe4e7))
25
+
1
26
  ## <small>0.35.12 (2026-06-13)</small>
2
27
 
3
28
  ### Summary
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 osovv
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -4,8 +4,11 @@
4
4
 
5
5
  <p>
6
6
  <a href="https://www.npmjs.com/package/@osovv/vv-opencode"><img src="https://img.shields.io/npm/v/%40osovv%2Fvv-opencode?style=flat&label=npm&color=blue" alt="npm"></a>
7
+ <a href="https://github.com/osovv/vv-opencode/actions/workflows/publish.yml"><img src="https://github.com/osovv/vv-opencode/actions/workflows/publish.yml/badge.svg" alt="CI"></a>
8
+ <a href="https://github.com/osovv/vv-opencode/releases"><img src="https://img.shields.io/github/v/release/osovv/vv-opencode?style=flat&label=release" alt="release"></a>
9
+ <a href="https://github.com/osovv/vv-opencode"><img src="https://img.shields.io/github/stars/osovv/vv-opencode?style=flat&color=yellow" alt="stars"></a>
7
10
  <a href="https://bun.sh"><img src="https://img.shields.io/badge/runtime-bun-%23f9f9f9?style=flat&logo=bun" alt="bun"></a>
8
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat" alt="MIT"></a>
11
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/osovv/vv-opencode?style=flat&color=green" alt="MIT"></a>
9
12
  </p>
10
13
 
11
14
  ---
@@ -147,6 +150,7 @@ Setting up OpenCode for serious daily work means juggling config files, agent pr
147
150
  | `vvoc preset list\|show\|<name>` | Inspect or apply named presets |
148
151
  | `vvoc guardian config` | Print or write guardian section |
149
152
  | `vvoc plugin list` | List OpenCode plugin entries |
153
+ | `vvoc plugin enable\|disable` | Toggle a vvoc-managed plugin on or off |
150
154
  | `vvoc patch-provider stepfun-ai\|zai\|openai` | Patch a global OpenCode config preset |
151
155
  | `vvoc completion` | Install shell completions |
152
156
  | `vvoc upgrade` | Upgrade global package and run follow-up sync |
@@ -312,3 +316,9 @@ The workflow uses npm provenance/trusted publishing (`id-token: write`) and does
312
316
  ## Optional: RTK
313
317
 
314
318
  [RTK](https://github.com/rtk-ai/rtk) is a CLI proxy that reduces token usage for common developer commands. The interactive `vvoc init` flow recommends it after setup.
319
+
320
+ ---
321
+
322
+ ## License
323
+
324
+ MIT — see [LICENSE](LICENSE).
package/dist/cli.js CHANGED
@@ -16,7 +16,7 @@
16
16
  // END_MODULE_MAP
17
17
  //
18
18
  // START_CHANGE_SUMMARY
19
- // LAST_CHANGE: [v0.2.10 - Aligned module dependency metadata with the actual imported command tree.]
19
+ // LAST_CHANGE: [v0.2.11 - Aligned meta description with package.json, README, and GitHub repo; license and badge polish.]
20
20
  // END_CHANGE_SUMMARY
21
21
  import { defineCommand, runMain } from "citty";
22
22
  import completion from "./commands/completion.js";
@@ -40,7 +40,7 @@ const main = defineCommand({
40
40
  meta: {
41
41
  name: "vvoc",
42
42
  version: packageVersion,
43
- description: "Install and sync vv-opencode plugins for OpenCode.",
43
+ description: "Portable OpenCode workflow toolkit — 6 plugins, managed agents & skills, a spec-to-code pipeline, security, and the vvoc CLI.",
44
44
  },
45
45
  subCommands: {
46
46
  completion,
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,mBAAmB;AACnB,kBAAkB;AAClB,wBAAwB;AACxB,uDAAuD;AACvD,+FAA+F;AAC/F,oYAAoY;AACpY,4BAA4B;AAC5B,iBAAiB;AACjB,qBAAqB;AACrB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,oEAAoE;AACpE,wCAAwC;AACxC,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,uGAAuG;AACvG,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,iCAAiC;AACjC,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAEjD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,oDAAoD;KAClE;IACD,WAAW,EAAE;QACX,UAAU;QACV,MAAM;QACN,MAAM;QACN,QAAQ;QACR,IAAI;QACJ,OAAO;QACP,gBAAgB,EAAE,aAAa;QAC/B,MAAM;QACN,MAAM;QACN,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,OAAO;QACP,OAAO;KACR;CACF,CAAC,CAAC;AACH,+BAA+B;AAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,mBAAmB;AACnB,kBAAkB;AAClB,wBAAwB;AACxB,uDAAuD;AACvD,+FAA+F;AAC/F,oYAAoY;AACpY,4BAA4B;AAC5B,iBAAiB;AACjB,qBAAqB;AACrB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,oEAAoE;AACpE,wCAAwC;AACxC,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,4HAA4H;AAC5H,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,iCAAiC;AACjC,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAEjD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc;QACvB,WAAW,EACT,+HAA+H;KAClI;IACD,WAAW,EAAE;QACX,UAAU;QACV,MAAM;QACN,MAAM;QACN,QAAQ;QACR,IAAI;QACJ,OAAO;QACP,gBAAgB,EAAE,aAAa;QAC/B,MAAM;QACN,MAAM;QACN,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,OAAO;QACP,OAAO;KACR;CACF,CAAC,CAAC;AACH,+BAA+B;AAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -62,6 +62,7 @@ declare const PATCH_PROVIDER_PRESETS: {
62
62
  readonly name: "VV GPT-5.4-XHigh";
63
63
  readonly id: "gpt-5.4";
64
64
  readonly variants: {};
65
+ readonly reasoning: true;
65
66
  readonly options: {
66
67
  readonly reasoningEffort: "xhigh";
67
68
  readonly reasoningSummary: "auto";
@@ -72,6 +73,7 @@ declare const PATCH_PROVIDER_PRESETS: {
72
73
  readonly name: "VV GPT-5.5-XHigh";
73
74
  readonly id: "gpt-5.5";
74
75
  readonly variants: {};
76
+ readonly reasoning: true;
75
77
  readonly options: {
76
78
  readonly reasoningEffort: "xhigh";
77
79
  readonly reasoningSummary: "auto";
@@ -17,7 +17,7 @@
17
17
  // END_MODULE_MAP
18
18
  //
19
19
  // START_CHANGE_SUMMARY
20
- // LAST_CHANGE: [v0.4.2 - Added vv-gpt-5dot5-xhigh model and updated openai patch preset summary.]
20
+ // LAST_CHANGE: [v0.4.3 - Added reasoning:true to vv-gpt-5.4-xhigh and vv-gpt-5.5-xhigh in openai patch preset.]
21
21
  // END_CHANGE_SUMMARY
22
22
  import { defineCommand } from "citty";
23
23
  import { describeWriteResult, resolvePaths, writeOpenCodeProviderObject, writeProviderBaseUrl, } from "../lib/opencode.js";
@@ -58,6 +58,7 @@ const OPENAI_PATCH = {
58
58
  name: "VV GPT-5.4-XHigh",
59
59
  id: "gpt-5.4",
60
60
  variants: {},
61
+ reasoning: true,
61
62
  options: {
62
63
  reasoningEffort: "xhigh",
63
64
  reasoningSummary: "auto",
@@ -68,6 +69,7 @@ const OPENAI_PATCH = {
68
69
  name: "VV GPT-5.5-XHigh",
69
70
  id: "gpt-5.5",
70
71
  variants: {},
72
+ reasoning: true,
71
73
  options: {
72
74
  reasoningEffort: "xhigh",
73
75
  reasoningSummary: "auto",
@@ -1 +1 @@
1
- {"version":3,"file":"patch-provider.js","sourceRoot":"","sources":["../../src/commands/patch-provider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,iBAAiB;AACjB,wBAAwB;AACxB,kDAAkD;AAClD,mLAAmL;AACnL,0CAA0C;AAC1C,gDAAgD;AAChD,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,yDAAyD;AACzD,+FAA+F;AAC/F,8EAA8E;AAC9E,mGAAmG;AACnG,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,oGAAoG;AACpG,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAkB5B,MAAM,qBAAqB,GAAG;IAC5B,MAAM,EAAE;QACN,cAAc,EAAE;YACd,oBAAoB,EAAE;gBACpB,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,KAAK;iBACd;aACF;SACF;KACF;CACyC,CAAC;AAE7C,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,2BAA2B;KACrC;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE;YAChB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;aACf;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACxB,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF;KACF;CACyC,CAAC;AAE7C,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE;QACN,kBAAkB,EAAE;YAClB,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,eAAe,EAAE,OAAO;gBACxB,gBAAgB,EAAE,MAAM;gBACxB,OAAO,EAAE,CAAC,6BAA6B,CAAC;aACzC;SACF;QACD,kBAAkB,EAAE;YAClB,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE;gBACP,eAAe,EAAE,OAAO;gBACxB,gBAAgB,EAAE,MAAM;gBACxB,OAAO,EAAE,CAAC,6BAA6B,CAAC;aACzC;SACF;KACF;CACyC,CAAC;AAE7C,MAAM,sBAAsB,GAAG;IAC7B,YAAY,EAAE;QACZ,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,0DAA0D;KACpE;IACD,GAAG,EAAE;QACH,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,iBAAiB;QAC7B,KAAK,EAAE,qBAAqB;QAC5B,OAAO,EAAE,sDAAsD;KAChE;IACD,MAAM,EAAE;QACN,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,iDAAiD;KAC3D;CAC6C,CAAC;AAIjD,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,YAAqB;IAC3B,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,iCAAiC;CAC/C,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,QAAiB;IACvB,WAAW,EAAE,qDAAqD;CACnE,CAAC;AAEF,yCAAyC;AACzC,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAA6B,CAAC;IAC1D,IAAI,UAAU,IAAI,sBAAsB,EAAE,CAAC;QACzC,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,wBAAwB,SAAS,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAAkB,EAClB,UAAgD,EAAE;IAElD,MAAM,MAAM,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QAC/B,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IAEH,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,KAAK,mBAAmB;QACjC,CAAC,CAAC,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;QACtE,CAAC,CAAC,MAAM,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AACD,uCAAuC;AAEvC,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uCAAuC;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,YAAY;KAC3B;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,wBAAwB,CAAC,UAAU,EAAE;YACpE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,SAAS;SACV,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IACpE,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"patch-provider.js","sourceRoot":"","sources":["../../src/commands/patch-provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@osovv/vv-opencode",
3
- "version": "0.35.12",
4
- "description": "Portable OpenCode workflow plugins, explicit memory, and CLI tooling.",
3
+ "version": "0.35.15",
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",
7
7
  "types": "./dist/index.d.ts",
@@ -11,13 +11,21 @@
11
11
  },
12
12
  "keywords": [
13
13
  "opencode",
14
+ "opencode-plugin",
14
15
  "plugins",
15
16
  "workflow",
16
- "guardian",
17
- "xdg",
18
- "grace",
17
+ "agent-workflow",
18
+ "ai-agent",
19
+ "agent-framework",
20
+ "llm",
21
+ "spec-to-code",
19
22
  "bun",
20
- "citty"
23
+ "cli",
24
+ "typescript",
25
+ "developer-tools",
26
+ "guardian",
27
+ "prompt-engineering",
28
+ "security"
21
29
  ],
22
30
  "bin": {
23
31
  "vvoc": "./dist/cli.js"
@@ -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.12/schemas/vvoc/v3.json",
3
+ "$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.35.15/schemas/vvoc/v3.json",
4
4
  "title": "vvoc config",
5
5
  "description": "Canonical vvoc configuration document.",
6
6
  "type": "object",
@@ -14,6 +14,9 @@ You are the vv-spec skill. Your job is to interview the user, understand what th
14
14
  </language>
15
15
 
16
16
  <decision_tree_interview>
17
+ <invariant>
18
+ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPARENT WRAPPERS around the decision-tree walk — they make the depth visible, never shallower. Conflict rule: if any cue would tempt skipping a branch or accepting a shallow answer, the depth wins and the cue is dropped. The decision tree is still walked relentlessly, one point at a time, recommendation-first, dependency-ordered.
19
+ </invariant>
17
20
  <principle>Walk down the decision tree relentlessly. Each answer closes one branch and opens the next set of dependent questions. Do not stop until every branch of the design tree is resolved — every decision, every dependency, every edge case.</principle>
18
21
  <principle>Ask ONE question at a time. Never present multiple questions in a single message. Each question must resolve exactly one decision point.</principle>
19
22
  <principle>For every question, provide YOUR recommended answer with reasoning. The user can accept it or override. This makes the interview fast — most answers land with a single word.</principle>
@@ -22,11 +25,23 @@ You are the vv-spec skill. Your job is to interview the user, understand what th
22
25
  <principle>Understand the full landscape: purpose, constraints, success criteria, non-goals, edge cases, existing code patterns.</principle>
23
26
  <principle>When the decision tree reaches a fork (2-3 viable approaches), present all options with trade-offs. Lead with your recommendation and explain why. The user picks one — that closes the fork and the tree continues from that branch.</principle>
24
27
  <principle>When presenting design sections, do it one section at a time. After each section: "Does this look right?" If yes, move to the next. If no, resolve concerns before continuing.</principle>
25
- <principle>Cover every section: architecture, components, data flow, error handling, testing.</principle>
28
+ <principle>Cover every section of the spec template: goal, architecture, tech-stack, components, data-flow, error-handling, testing, non-goals. The roadmap shown at the start IS the coverage checklist. A section is "closed" only when its template element is fully decidable.</principle>
26
29
  <principle>YAGNI ruthlessly: prune dead branches — remove unnecessary features from every approach.</principle>
27
30
  <principle>After design is confirmed, synthesize the spec yourself. You are the expensive model — deep analysis and architectural design are your responsibility, not a subagent's.</principle>
31
+ <principle>Open the interview with a DECISION-TREE ROADMAP: show the spec template sections (goal, architecture, tech-stack, components, data-flow, error-handling, testing, non-goals) AND the major forks that may arise within each. State traversal order (highest-impact first). The purpose is predictability of the full landscape, not brevity — the user is working, so a large honest surface is welcome. Note the tree is dynamic: the branch actually taken depends on answers, but every reachable fork is shown up front.</principle>
32
+ <principle>Mark the CURRENT SECTION on every question message (a short header). The user must always know their location in the tree. This reduces disorientation in long interviews; it does not skip content.</principle>
33
+ <principle>After the first substantive exchange, give an HONEST DEPTH ESTIMATE (approximate decision points remaining). If the estimate is high (roughly 12–15+), do NOT shorten the interview. Surface it as a signal that the prompt/context needs upgrading: offer the user ways to provide richer context up front (existing PRD, requirements doc, reference project, voice description), or propose decomposition into sub-projects. A large estimate means MORE context, not fewer questions.</principle>
34
+ <principle>After closing each section, post a ONE-LINE RECAP of the decisions made in it, then show what sections remain. This is a coherence checkpoint — every branch inside the section was already walked to its leaf, so the recap confirms fixation rather than skipping deliberation. It lets the user catch a misunderstanding immediately instead of discovering it in the final spec.</principle>
35
+ <principle>Format every question as a CARD: (1) one-line context — why this decision matters, (2) the question itself, (3) your recommendation with reasoning, (4) any codebase evidence found before asking. Predictable structure lowers per-step cognitive cost without lowering depth.</principle>
28
36
  </decision_tree_interview>
29
37
 
38
+ <acceleration_guardrails>
39
+ <rule>Do NOT offer a "fast mode" that skips decision points. Skipping sacrifices depth.</rule>
40
+ <rule>The ONLY allowed acceleration is PREFILL-AND-CONFIRM, and only when the user explicitly requests it. The agent fills a section with its own recommendations and reasoning, then the user confirms or overrides point by point. Every decision is still made explicitly — only typing is saved, never deliberation.</rule>
41
+ <rule>If the user says "just do it" or "skip ahead", apply prefill-and-confirm for the mechanical parts, but still walk every genuine fork — forks are where the design lives.</rule>
42
+ <rule>A section recap is allowed to be terse. A fork presentation is never terse — trade-offs must be visible.</rule>
43
+ </acceleration_guardrails>
44
+
30
45
 
31
46
  <spec_document_format>
32
47
  <rule>Load the spec template from references/spec-template.xml. Fill every element with the decisions confirmed during the interview.</rule>