@osovv/vv-opencode 0.35.30 → 0.35.31

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,13 @@
1
+ ## <small>0.35.31 (2026-06-25)</small>
2
+
3
+ ### Summary
4
+
5
+ This release adds the `vv-handoff` managed skill, a lightweight end-of-session tool that writes a project-local XML handoff note from already-visible session context—recording the original request, completed work, current state and decisions, important files, known command results, blockers, and the next safe step—without running shell commands or collecting fresh evidence, and with automatic secret redaction and collision-safe directory naming. The `vv-spec` skill documentation was also clarified to ensure spec package date prefixes remain date-only, excluding any time or timezone components.
6
+
7
+ * docs(grace): add vv-handoff skill spec and plan ([490c96e](https://github.com/osovv/vv-opencode/commit/490c96e))
8
+ * docs(vv-spec): clarify date-only spec package prefix ([cba76f5](https://github.com/osovv/vv-opencode/commit/cba76f5))
9
+ * feat(skills): add vv-handoff managed skill ([a386c5a](https://github.com/osovv/vv-opencode/commit/a386c5a))
10
+
1
11
  ## <small>0.35.30 (2026-06-24)</small>
2
12
 
3
13
  ### Summary
package/README.md CHANGED
@@ -20,7 +20,7 @@ bun add -g @osovv/vv-opencode
20
20
  vvoc install
21
21
  ```
22
22
 
23
- That's it. `vvoc install` pins the package, scaffolds managed agents and skills, writes canonical config, and sets `vv-controller` as your default OpenCode agent with auto-triggered spec, planning, review, and reflection skills.
23
+ That's it. `vvoc install` pins the package, scaffolds managed agents and skills, writes canonical config, and sets `vv-controller` as your default OpenCode agent with auto-triggered spec, planning, review, reflection, and handoff skills.
24
24
 
25
25
  To scope everything to the current project instead of the global OpenCode config:
26
26
 
@@ -90,7 +90,7 @@ All artifacts for one feature live together:
90
90
  plan.xml # how to implement and verify it
91
91
  ```
92
92
 
93
- New `vv-spec` packages use a date-prefixed id (`YYYY-MM-DD-<slug>`, for example `2026-06-24-cache-store`) so active packages sort by creation date.
93
+ New `vv-spec` packages use a date-prefixed id (`YYYY-MM-DD-<slug>`, for example `2026-06-24-cache-store`) so active packages sort by creation date. The prefix is date-only; it must not include hours, minutes, seconds, timezone, or a full ISO timestamp.
94
94
 
95
95
  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 artifact packages by moving the entire spec package directory `.vvoc/specs/YYYY-MM-DD-<slug>/` to `.vvoc/specs/archive/YYYY-MM-DD-<slug>-<timestamp>/`.
96
96
 
@@ -115,7 +115,7 @@ grep '/\*\*' .vvoc/specs/*/plan.xml
115
115
  grep '<name>' .vvoc/specs/*/plan.xml
116
116
  ```
117
117
 
118
- 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.
118
+ Managed skills are installed by `vvoc`. `vv-controller` explicitly routes `vv-spec`, `vv-plan`, and `vv-review`; `vv-execute`, `vv-reflect`, and `vv-handoff` are available as managed skills for plan execution, durable repository memory, and end-of-session handoff notes.
119
119
 
120
120
  ---
121
121
 
@@ -251,6 +251,7 @@ Spec package directory → ./.vvoc/specs/YYYY-MM-DD-<slug>/
251
251
  spec.xml # normative spec document (required)
252
252
  design-context.xml # curated design memory (optional)
253
253
  plan.xml # implementation plan (created by vv-plan)
254
+ Handoff notes → ./.vvoc/handoff/YYYY-MM-DD-<session-slug>/handoff.xml
254
255
 
255
256
  ```
256
257
 
@@ -269,6 +270,7 @@ Implementation plans → ./.vvoc/specs/YYYY-MM-DD-<slug>/plan.xml
269
270
  Persisted data → $XDG_DATA_HOME/vvoc/
270
271
  Repository memory → ./.vvoc/lessons/*.xml (lazy vv-reflect fallback)
271
272
  ./.vvoc/runbooks/*.xml (lazy vv-reflect fallback)
273
+ Session handoff notes → ./.vvoc/handoff/YYYY-MM-DD-<session-slug>/handoff.xml
272
274
  ```
273
275
 
274
276
  Schema is versioned and published with the package — source of truth at `schemas/vvoc/v3.json`. The current config contract is strict: `vvoc.json` must be canonical version 3 and include required sections such as `plugins`. Existing v1/v2/pre-role, incomplete, malformed, or otherwise invalid config files fail instead of being migrated or repaired. `vvoc install` and `vvoc sync` may create a fresh canonical config when no config exists, but they refuse to rewrite an invalid existing `vvoc.json`; fix the file manually and rerun `vvoc sync`.
@@ -310,7 +312,7 @@ All prompt files are scaffolded by `vvoc install` / `vvoc sync`:
310
312
 
311
313
  ## Managed Skills
312
314
 
313
- Five workflow skills are scaffolded alongside agents:
315
+ Six workflow skills are scaffolded alongside agents:
314
316
 
315
317
  | Skill | When to use it | What it gives you |
316
318
  |---|---|---|
@@ -319,11 +321,14 @@ Five workflow skills are scaffolded alongside agents:
319
321
  | `vv-execute` | A plan is approved and you want it applied step by step | Ordered execution with verification and applied spec/plan archival |
320
322
  | `vv-review` | You want findings, not fixes | A review-only workflow that reports spec/code issues and stops before implementation |
321
323
  | `vv-reflect` | A long development, debugging, ops, or investigation session produced reusable knowledge | Durable notes in existing docs or `.vvoc/lessons` / `.vvoc/runbooks` for future agents |
324
+ | `vv-handoff` | You are ending a session and want the visible context preserved for a future session | A redacted XML note at `.vvoc/handoff/YYYY-MM-DD-<session-slug>/handoff.xml`, without running new checks or collecting fresh context |
322
325
 
323
326
  Spec and plan artifacts stay XML so requirements, tasks, acceptance criteria, and dependencies remain easy to grep and review.
324
327
 
325
328
  `vv-reflect` creates `.vvoc/lessons` and `.vvoc/runbooks` lazily only after approved fallback writes. It prefers an existing repository documentation convention when there is a high-confidence match.
326
329
 
330
+ `vv-handoff` writes only the project-local XML handoff artifact from context already visible in the session. It records missing git, diff, or verification evidence as not collected in the current session instead of running commands.
331
+
327
332
  Skills are loaded by OpenCode at session start through `config.skills.paths` (registered by the SystemContextInjectionPlugin). The `vv-controller` agent's `<skill_trigger_rule>` ensures they are invoked automatically when the user's request matches their trigger conditions.
328
333
 
329
334
  ---
@@ -1,4 +1,4 @@
1
- export declare const MANAGED_SKILL_NAMES: readonly ["vv-spec", "vv-plan", "vv-review", "vv-execute", "vv-reflect"];
1
+ export declare const MANAGED_SKILL_NAMES: readonly ["vv-spec", "vv-plan", "vv-review", "vv-execute", "vv-reflect", "vv-handoff"];
2
2
  export type ManagedSkillName = (typeof MANAGED_SKILL_NAMES)[number];
3
3
  export declare function getManagedSkillFilePath(skillsDirPath: string, name: ManagedSkillName): string;
4
4
  export declare function loadManagedSkillTemplate(name: ManagedSkillName): Promise<string>;
@@ -1,5 +1,5 @@
1
1
  // FILE: src/lib/managed-skills.ts
2
- // VERSION: 0.5.2
2
+ // VERSION: 0.5.3
3
3
  // START_MODULE_CONTRACT
4
4
  // PURPOSE: Describe vvoc-managed OpenCode skills and load them from bundled templates or scoped vvoc config roots.
5
5
  // SCOPE: Managed skill names, skill file path resolution, bundled template loading, reference file discovery, and project/global skill lookup.
@@ -10,7 +10,7 @@
10
10
  // END_MODULE_CONTRACT
11
11
  //
12
12
  // START_MODULE_MAP
13
- // MANAGED_SKILL_NAMES - Canonical vvoc-managed skill names, including vv-reflect.
13
+ // MANAGED_SKILL_NAMES - Canonical vvoc-managed skill names, including vv-reflect and vv-handoff.
14
14
  // ManagedSkillName - Type for vvoc-managed skill names.
15
15
  // getManagedSkillFilePath - Resolves the skill file path inside a vvoc skills directory.
16
16
  // loadManagedSkillTemplate - Loads the bundled skill template for a managed skill.
@@ -20,6 +20,7 @@
20
20
  // END_MODULE_MAP
21
21
  //
22
22
  // START_CHANGE_SUMMARY
23
+ // LAST_CHANGE: [v0.5.3 - Added vv-handoff to the canonical managed skill set.]
23
24
  // LAST_CHANGE: [v0.5.2 - Added vv-reflect to the canonical managed skill set.]
24
25
  // LAST_CHANGE: [v0.5.1 - Added loadManagedSkillReference and listManagedSkillReferenceNames for copying reference files alongside skill templates.]
25
26
  // LAST_CHANGE: [v0.5.0 - Initial module for managed skill file resolution and template loading.]
@@ -33,6 +34,7 @@ export const MANAGED_SKILL_NAMES = [
33
34
  "vv-review",
34
35
  "vv-execute",
35
36
  "vv-reflect",
37
+ "vv-handoff",
36
38
  ];
37
39
  export function getManagedSkillFilePath(skillsDirPath, name) {
38
40
  return join(skillsDirPath, name, "SKILL.md");
@@ -1 +1 @@
1
- {"version":3,"file":"managed-skills.js","sourceRoot":"","sources":["../../src/lib/managed-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-skills.js","sourceRoot":"","sources":["../../src/lib/managed-skills.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osovv/vv-opencode",
3
- "version": "0.35.30",
3
+ "version": "0.35.31",
4
4
  "description": "A curated, opinionated set of OpenCode plugins for spec-first, review-driven, safer agentic development.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.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.30/schemas/vvoc/v3.json",
3
+ "$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@0.35.31/schemas/vvoc/v3.json",
4
4
  "title": "vvoc config",
5
5
  "description": "Canonical vvoc configuration document.",
6
6
  "type": "object",
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: vv-handoff
3
+ description: Use at the end of a session to write a project-local XML handoff note from already-visible context only.
4
+ ---
5
+
6
+ <skill>
7
+ <identity>
8
+ You are the vv-handoff skill. Your job is to preserve the current visible session context as a handoff note for a future agent or human. You write one XML file in the current project. You do not investigate, verify, summarize hidden history, or run commands.
9
+ </identity>
10
+
11
+ <scope>
12
+ <rule>Use only the current visible chat context and facts already known in this session.</rule>
13
+ <rule>Do not reconstruct hidden, compacted, unavailable, or earlier conversation history.</rule>
14
+ <rule>Do not run shell commands, tests, lint, build, git status, git diff, web searches, repository scans, or any other fresh context collection step.</rule>
15
+ <rule>If git status, git diff, verification, or other evidence was not already collected in the current session, record it as not collected in current session rather than collecting it during handoff.</rule>
16
+ <rule>Do not create a CLI command, plugin, runtime hook, automatic writer, schema validator, or handoff.md artifact.</rule>
17
+ </scope>
18
+
19
+ <destination>
20
+ <rule>Write exactly one canonical handoff artifact under the current project: .vvoc/handoff/YYYY-MM-DD-&lt;session-slug&gt;/handoff.xml.</rule>
21
+ <rule>Derive &lt;session-slug&gt; from the main session goal using lowercase words, hyphens, and only URL/path-safe characters.</rule>
22
+ <rule>Use the current local date for YYYY-MM-DD when it is already available in the session environment; otherwise use the date visible in system context.</rule>
23
+ <rule>If the destination directory already exists, choose the first available collision suffix: -2, then -3, and later integers, yielding paths such as .vvoc/handoff/YYYY-MM-DD-&lt;session-slug&gt;-2/.</rule>
24
+ <rule>Filesystem checks and directory/file creation are allowed only to choose and write the destination path. Do not inspect project files for additional context.</rule>
25
+ </destination>
26
+
27
+ <redaction>
28
+ <rule>Before writing handoff.xml, redact secrets from the handoff content.</rule>
29
+ <rule>Replace tokens, API keys, passwords, cookies, private URLs, private headers, credentials, private keys, and similar sensitive values with [REDACTED].</rule>
30
+ <rule>If unsure whether a value is sensitive, redact it.</rule>
31
+ </redaction>
32
+
33
+ <handoff_xml>
34
+ <rule>The XML does not need a formal schema and must not be schema-validated.</rule>
35
+ <rule>Use clear, grep-friendly element names and concise prose.</rule>
36
+ <rule>Include these required sections:</rule>
37
+ <section>original_request - The user's original goal or request as visible in this session.</section>
38
+ <section>completed_work - Work completed in this session, including files changed when already known.</section>
39
+ <section>current_state_and_decisions - Current state, important decisions, accepted assumptions, selected route, and any pending lifecycle state.</section>
40
+ <section>important_or_changed_files - Important files and changed files already known from the session. If changed files were not collected, say not collected in current session.</section>
41
+ <section>known_commands_and_results - Commands, checks, tests, git status, git diff, and verification results already run in this session. For missing evidence, write not collected in current session.</section>
42
+ <section>blockers_risks_unknowns - Blockers, risks, unknowns, skipped checks, residual uncertainty, and anything a future session must not assume.</section>
43
+ <section>next_safe_step - The single safest next action for the next session.</section>
44
+ </handoff_xml>
45
+
46
+ <template>
47
+ <![CDATA[
48
+ <handoff>
49
+ <original_request></original_request>
50
+ <completed_work></completed_work>
51
+ <current_state_and_decisions></current_state_and_decisions>
52
+ <important_or_changed_files></important_or_changed_files>
53
+ <known_commands_and_results></known_commands_and_results>
54
+ <blockers_risks_unknowns></blockers_risks_unknowns>
55
+ <next_safe_step></next_safe_step>
56
+ </handoff>
57
+ ]]>
58
+ </template>
59
+
60
+ <workflow>
61
+ <step>Identify the main session goal from the visible context and derive the date-slug directory name.</step>
62
+ <step>Draft handoff.xml using only visible/known context and the required sections.</step>
63
+ <step>Replace every sensitive value with [REDACTED].</step>
64
+ <step>Create the destination directory with collision suffixing if needed, then write handoff.xml.</step>
65
+ <step>Reply with the path written and note that no fresh commands or checks were run.</step>
66
+ </workflow>
67
+
68
+ <task>
69
+ Your current task is the ongoing user request. Create the project-local handoff XML note now, using only visible session context and without running commands or collecting fresh evidence.
70
+ </task>
71
+ </skill>
@@ -56,7 +56,7 @@ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPAREN
56
56
  design-context.xml # curated design memory (optional)
57
57
  plan.xml # implementation plan (created by vv-plan)
58
58
  </layout>
59
- <rule>Save spec.xml to .vvoc/specs/&lt;id&gt;/spec.xml, where &lt;id&gt; is a date-prefixed package id in the form YYYY-MM-DD-&lt;slug&gt; (for example, 2026-06-24-cache-store). Derive &lt;slug&gt; as a safe slug from the feature name (e.g., cache-store, batch-migration), then prefix it with the current date at spec creation time in YYYY-MM-DD format. Ensure the slug portion: (a) contains only lowercase alphanumeric characters, hyphens, and underscores; (b) does not start or end with a hyphen or underscore. Reject reserved slug values: draft, archive, template, plan, spec, vvoc, or names that match path-like patterns (contain /, \, .., or match an existing filesystem path separator). If .vvoc/specs/&lt;id&gt;/ already exists, check whether it is a continuation of the same draft session (same spec package from the same feature and date) — if yes, overwrite; if not, stop and ask the user for a different slug or explicit overwrite approval. Do not silently overwrite or merge an unrelated existing package.</rule>
59
+ <rule>Save spec.xml to .vvoc/specs/&lt;id&gt;/spec.xml, where &lt;id&gt; is a date-prefixed package id in the form YYYY-MM-DD-&lt;slug&gt; (for example, 2026-06-24-cache-store). Derive &lt;slug&gt; as a safe slug from the feature name (e.g., cache-store, batch-migration), then prefix it with the current date at spec creation time in YYYY-MM-DD format. The date prefix is date-only: do not include hours, minutes, seconds, timezone, or a full ISO datetime/timestamp. Ensure the slug portion: (a) contains only lowercase alphanumeric characters, hyphens, and underscores; (b) does not start or end with a hyphen or underscore. Reject reserved slug values: draft, archive, template, plan, spec, vvoc, or names that match path-like patterns (contain /, \, .., or match an existing filesystem path separator). If .vvoc/specs/&lt;id&gt;/ already exists, check whether it is a continuation of the same draft session (same spec package from the same feature and date) — if yes, overwrite; if not, stop and ask the user for a different slug or explicit overwrite approval. Do not silently overwrite or merge an unrelated existing package.</rule>
60
60
  <rule>After creating or updating spec.xml, consider whether the session warrants a design-context.xml companion (see design_context section below).</rule>
61
61
  </spec_document_format>
62
62
 
@@ -98,6 +98,6 @@ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPAREN
98
98
  </handoff>
99
99
 
100
100
  <task>
101
- 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/&lt;id&gt;/spec.xml, where &lt;id&gt; is YYYY-MM-DD-&lt;slug&gt; using the current date at spec creation time, as XML with document status draft. Optionally create .vvoc/specs/&lt;id&gt;/design-context.xml for complex sessions. After explicit user approval, update the saved spec status to approved. Stop before any implementation or planning.
101
+ 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/&lt;id&gt;/spec.xml, where &lt;id&gt; is YYYY-MM-DD-&lt;slug&gt; using the current date at spec creation time; this prefix must be date-only, with no time, timezone, or full timestamp. Save as XML with document status draft. Optionally create .vvoc/specs/&lt;id&gt;/design-context.xml for complex sessions. After explicit user approval, update the saved spec status to approved. Stop before any implementation or planning.
102
102
  </task>
103
103
  </skill>