@osovv/vv-opencode 0.35.29 → 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,31 @@
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
+
11
+ ## <small>0.35.30 (2026-06-24)</small>
12
+
13
+ ### Summary
14
+
15
+ Spec packages created by the vv-spec skill now use date-prefixed directory names (YYYY-MM-DD-slug) so active packages sort by creation date and are easier to identify, with corresponding updates to the vv-spec, vv-plan, and vv-controller skill and agent templates. The project documentation has been fully migrated to the GRACE 4 artifact model, replacing legacy XML sources under docs/ with the current .grace/ directory structure, and all GRACE context artifacts—requirements, technology, principles, deployment, and UX guidelines—have been refined for clarity and accuracy. Legacy GRACE 3 XML documents and superseded workflow plan handoff notes have been removed, and stale migration references have been cleaned up from graph and verification indexes.
16
+
17
+ * feat(vv-spec): date-prefix spec packages ([0dba659](https://github.com/osovv/vv-opencode/commit/0dba659))
18
+ * docs: drop migration report artifact ([327812d](https://github.com/osovv/vv-opencode/commit/327812d))
19
+ * docs: finalize GRACE migration cleanup ([496236f](https://github.com/osovv/vv-opencode/commit/496236f))
20
+ * docs: migrate project to GRACE 4 ([ba3e162](https://github.com/osovv/vv-opencode/commit/ba3e162))
21
+ * docs: refine GRACE context requirements ([73245b1](https://github.com/osovv/vv-opencode/commit/73245b1))
22
+ * docs: refine GRACE deployment context ([cd2da0f](https://github.com/osovv/vv-opencode/commit/cd2da0f))
23
+ * docs: refine GRACE principles context ([ad1b050](https://github.com/osovv/vv-opencode/commit/ad1b050))
24
+ * docs: refine GRACE technology context ([eeff4d2](https://github.com/osovv/vv-opencode/commit/eeff4d2))
25
+ * docs: refine GRACE UX guidelines ([09d075a](https://github.com/osovv/vv-opencode/commit/09d075a))
26
+ * docs: remove legacy GRACE 3 artifacts ([c9b910d](https://github.com/osovv/vv-opencode/commit/c9b910d))
27
+ * docs: remove stale GRACE migration references ([6ad640a](https://github.com/osovv/vv-opencode/commit/6ad640a))
28
+
1
29
  ## <small>0.35.29 (2026-06-22)</small>
2
30
 
3
31
  ### 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
 
@@ -44,12 +44,12 @@ Request / idea
44
44
  ↓
45
45
  vv-spec
46
46
  asks clarifying questions
47
- writes .vvoc/specs/<id>/spec.xml
47
+ writes .vvoc/specs/YYYY-MM-DD-<slug>/spec.xml
48
48
  waits for spec approval
49
49
  ↓
50
50
  vv-plan
51
51
  reads the approved spec
52
- writes .vvoc/specs/<id>/plan.xml
52
+ writes .vvoc/specs/YYYY-MM-DD-<slug>/plan.xml
53
53
  defines tasks, contracts, dependencies, and acceptance criteria
54
54
  waits for plan approval
55
55
  ↓
@@ -84,13 +84,15 @@ verification
84
84
  All artifacts for one feature live together:
85
85
 
86
86
  ```text
87
- .vvoc/specs/<id>/
87
+ .vvoc/specs/YYYY-MM-DD-<slug>/
88
88
  spec.xml # what should be built and why
89
89
  design-context.xml # optional design memory
90
90
  plan.xml # how to implement and verify it
91
91
  ```
92
92
 
93
- 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/<id>/` to `.vvoc/specs/archive/<id>-<timestamp>/`.
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
+
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>/`.
94
96
 
95
97
  ### XML grep
96
98
 
@@ -113,7 +115,7 @@ grep '/\*\*' .vvoc/specs/*/plan.xml
113
115
  grep '<name>' .vvoc/specs/*/plan.xml
114
116
  ```
115
117
 
116
- 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.
117
119
 
118
120
  ---
119
121
 
@@ -245,10 +247,11 @@ OpenCode config → ./.opencode/opencode.json(c)
245
247
  vvoc config → ./.vvoc/vvoc.json
246
248
  Managed agent prompts → ./.vvoc/agents/*.md
247
249
  Managed skills → ./.vvoc/skills/*/SKILL.md
248
- Spec package directory → ./.vvoc/specs/<id>/
250
+ Spec package directory → ./.vvoc/specs/YYYY-MM-DD-<slug>/
249
251
  spec.xml # normative spec document (required)
250
252
  design-context.xml # curated design memory (optional)
251
253
  plan.xml # implementation plan (created by vv-plan)
254
+ Handoff notes → ./.vvoc/handoff/YYYY-MM-DD-<session-slug>/handoff.xml
252
255
 
253
256
  ```
254
257
 
@@ -261,12 +264,13 @@ Managed agent prompts → $XDG_CONFIG_HOME/vvoc/agents/*.md (global)
261
264
  ./.vvoc/agents/*.md (project)
262
265
  Managed skills → $XDG_CONFIG_HOME/vvoc/skills/*/SKILL.md (global)
263
266
  ./.vvoc/skills/*/SKILL.md (project)
264
- Spec documents → ./.vvoc/specs/<id>/spec.xml
265
- Optional design context → ./.vvoc/specs/<id>/design-context.xml
266
- Implementation plans → ./.vvoc/specs/<id>/plan.xml
267
+ Spec documents → ./.vvoc/specs/YYYY-MM-DD-<slug>/spec.xml
268
+ Optional design context → ./.vvoc/specs/YYYY-MM-DD-<slug>/design-context.xml
269
+ Implementation plans → ./.vvoc/specs/YYYY-MM-DD-<slug>/plan.xml
267
270
  Persisted data → $XDG_DATA_HOME/vvoc/
268
271
  Repository memory → ./.vvoc/lessons/*.xml (lazy vv-reflect fallback)
269
272
  ./.vvoc/runbooks/*.xml (lazy vv-reflect fallback)
273
+ Session handoff notes → ./.vvoc/handoff/YYYY-MM-DD-<session-slug>/handoff.xml
270
274
  ```
271
275
 
272
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`.
@@ -308,20 +312,23 @@ All prompt files are scaffolded by `vvoc install` / `vvoc sync`:
308
312
 
309
313
  ## Managed Skills
310
314
 
311
- Five workflow skills are scaffolded alongside agents:
315
+ Six workflow skills are scaffolded alongside agents:
312
316
 
313
317
  | Skill | When to use it | What it gives you |
314
318
  |---|---|---|
315
- | `vv-spec` | You have a feature or creative request and no agreed contract yet | A guided interview, recommended options, and a saved spec in `.vvoc/specs/<id>/spec.xml` |
319
+ | `vv-spec` | You have a feature or creative request and no agreed contract yet | A guided interview, recommended options, and a saved spec in `.vvoc/specs/YYYY-MM-DD-<slug>/spec.xml` |
316
320
  | `vv-plan` | A spec is approved and ready to implement | A task-level implementation plan with file targets, contracts, dependencies, and acceptance criteria |
317
321
  | `vv-execute` | A plan is approved and you want it applied step by step | Ordered execution with verification and applied spec/plan archival |
318
322
  | `vv-review` | You want findings, not fixes | A review-only workflow that reports spec/code issues and stops before implementation |
319
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 |
320
325
 
321
326
  Spec and plan artifacts stay XML so requirements, tasks, acceptance criteria, and dependencies remain easy to grep and review.
322
327
 
323
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.
324
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
+
325
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.
326
333
 
327
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.29",
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.29/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",
@@ -127,7 +127,7 @@ Execution order for implementation mode: 1. `vv-implementer` 2. launch all requi
127
127
  </large_feature_protocol>
128
128
 
129
129
  <plan_artifacts>
130
- - **vv-plan implementation plans** live in spec packages. The canonical layout is: `.vvoc/specs/<id>/{spec.xml, design-context.xml optional, plan.xml}`.
130
+ - **vv-plan implementation plans** live in spec packages. The canonical layout is: `.vvoc/specs/YYYY-MM-DD-<slug>/{spec.xml, design-context.xml optional, plan.xml}`.
131
131
  - **spec.xml** is normative — the single source of truth for requirements and design decisions.
132
132
  - **design-context.xml** (optional) is explanatory/non-normative curated design memory for planners and reviewers. It is NOT treated as additional requirements.
133
133
  - **plan.xml** is the vv-plan implementation plan, saved in the same package.
@@ -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>
@@ -14,7 +14,7 @@ You are the vv-plan skill. Your job is to take an approved spec and write an imp
14
14
  </language>
15
15
 
16
16
  <prerequisites>
17
- <rule>An approved spec MUST exist at .vvoc/specs/&lt;id&gt;/spec.xml before planning begins. The spec package directory &lt;id&gt; derives from the feature name used during vv-spec.</rule>
17
+ <rule>An approved spec MUST exist at .vvoc/specs/&lt;id&gt;/spec.xml before planning begins. For newly created specs, vv-spec derives &lt;id&gt; as a date-prefixed package id in the form YYYY-MM-DD-&lt;slug&gt; from the feature name.</rule>
18
18
  <rule>Read the spec file in full.</rule>
19
19
  <rule>Check whether a sibling design-context.xml exists at .vvoc/specs/&lt;id&gt;/design-context.xml. If it exists, read it as explanatory context only. design-context.xml does NOT override or expand spec.xml — spec.xml remains normative and wins on conflicts.</rule>
20
20
  <rule>The spec's top-level &lt;status&gt; 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>
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: vv-spec
3
- description: Use BEFORE any implementation or planning — interviews the user one question at a time, proposes approaches, presents a design, writes a spec document to .vvoc/specs/<id>/spec.xml, and optionally creates a design-context.xml companion for complex sessions
3
+ description: Use BEFORE any implementation or planning — interviews the user one question at a time, proposes approaches, presents a design, writes a spec document to .vvoc/specs/YYYY-MM-DD-<slug>/spec.xml, and optionally creates a design-context.xml companion for complex sessions
4
4
  ---
5
5
 
6
6
  <skill>
@@ -51,12 +51,12 @@ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPAREN
51
51
  <rule>When first saving the spec, set &lt;status&gt;draft&lt;/status&gt;. 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>
52
52
  <location>Canonical layout — all artifacts for one feature live in a single spec package directory:</location>
53
53
  <layout>
54
- .vvoc/specs/&lt;id&gt;/
54
+ .vvoc/specs/YYYY-MM-DD-&lt;slug&gt;/
55
55
  spec.xml # normative spec document (required)
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. Derive &lt;id&gt; as a safe slug from the feature name (e.g., cache-store, batch-migration). Ensure the slug: (a) contains only lowercase alphanumeric characters, hyphens, and underscores; (b) does not start or end with a hyphen or underscore. Reject reserved names: 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) — if yes, overwrite; if not, stop and ask the user for a different id or explicit overwrite approval. Do not silently overwrite or merge an unrelated existing package. Do not use date prefixes — the package directory is the organizational unit.</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
 
@@ -73,7 +73,7 @@ UX cues (roadmap, progress markers, depth estimates, checkpoints) are TRANSPAREN
73
73
  <trigger>the user explicitly asks to preserve reasoning or design rationale</trigger>
74
74
  <rule>Load the design context template from references/design-context-template.xml. Fill only the sections that are relevant — leave unused sections empty or omit them.</rule>
75
75
  <rule>Do NOT include the full interview transcript, raw conversation dumps, chain-of-thought traces, or repetitive restatements of spec.xml content.</rule>
76
- <rule>Save design-context.xml as a sibling of spec.xml in the same spec package directory: .vvoc/specs/&lt;id&gt;/design-context.xml</rule>
76
+ <rule>Save design-context.xml as a sibling of spec.xml in the same date-prefixed spec package directory: .vvoc/specs/&lt;id&gt;/design-context.xml</rule>
77
77
  </design_context>
78
78
 
79
79
  <self_review>
@@ -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 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>