Skip to content

v4.5.0 — .vstack/local/<tool>/

Choose a tag to compare

@DeyangChan DeyangChan released this 03 Aug 06:31
· 20 commits to main since this release

Corrects the layout v4.4.0 shipped a few hours earlier. Machine state and pipeline state now split first; the tool name comes second.

.vstack/
  pipeline.json              ← tracked
  specs/feature.json         ← tracked
  build/phase-1.json         ← tracked
  local/                     ← gitignored, one line
    wireframe/login/
    spec/feature.seq
    user-story-map/map.seq
    phase-build/phase-1.seq

What was wrong with 4.4.0

  • bridge wasn't a tool. It named lib/json-bridge.mjs, an engine that spec, user-story-map and phase-build share — not anything anyone invokes.
  • .vstack/spec/ would have sat one letter from .vstack/specs/ — machine scratch beside a tracked pipeline file, distinguished by a plural.
  • Every new engine meant another .gitignore line.

Splitting on machine-vs-repo first fixes all three: **/.vstack/local/ is the only ignore line needed, ever, and the tool name lives one level down where it can't shadow a tracked directory.

The bridge knows who it serves

json-bridge.mjs takes --tool, so the three skills that share it get their own directories. All three SKILL.md files pass it on every serve, watch and patch.

A skill that passed --tool to serve but forgot it on watch would resolve to a different directory and silently watch nothing — the worst failure this design allows. findWorkDir makes a reader fall back across sibling tool directories, so the link works even when the calls disagree.

Tests

New tests/workdir.mjs covers the resolution rules: state sits beside the artifact, an enclosing .vstack wins over nesting a second one, the tool name is always last, spec is never spelt specs, and the reader fallback works.

Breaking

If you took 4.4.0, the paths moved again. Still no migration — reviews in flight and in-browser comment drafts are orphaned. Finish or discard any open review before updating.

Update

Claude Code:

/plugin marketplace update cavalry-collective
/plugin update vstack@cavalry-collective
/reload-plugins

Codex:

codex plugin marketplace upgrade cavalry-collective
codex plugin add vstack@cavalry-collective