Skip to content

/vision — Project vision

A Vision is the canonical "what is this project for" document. Written once, evolved sparingly. It's the anchor every issue, every feature, and every architectural decision should trace back to.

/vision walks you through writing one. It offers two modes — short (one question, ~2 minutes, CRAFT-assembled) for small projects, and full (seven questions, ~15 minutes, one at a time) for substantial products. Either way it drafts the file, shows it for approval, then writes VISION.md at the repo root.

Vision sits above the loop — issues, features, and architectural decisions trace back to it.

Think of it as the project's lantern: its light cascades down to epics, stories, and commits. When the lantern is honest, every layer below stays oriented; when it dims, the layers drift, one quietly at a time.

Vision lantern

When to use

  • Starting a new project that doesn't yet have a Vision
  • Bootstrapping a Vision for an existing project that grew up without one
  • Any consumer repo where someone wants to capture product intent before writing more code

Pick short mode when the work is a small dashboard, a side-tool, or anything where the seven-question interview would feel disproportionate. Pick full mode for substantial products where the act of articulating each section is itself the value. A short-Vision project can graduate to full Vision later by re-running /vision.

When NOT to use

  • The project already has a good VISION.md and you just want edits — go direct
  • You want per-story scope — that's a Linear issue, not a Vision
  • You want an implementation plan — that's /linear:plan-work, not this

If /vision's framing feels like friction in your context, the friction Distinction is the doc to reach for — it helps you decide whether the friction is signal (the work doesn't belong here) or context-mismatch (the gate needs calibrating for your case).

What goes in a Vision

Seven sections. Each answers one question. Keep it scannable — a Vision someone can't read in two minutes won't anchor anything.

#SectionQuestion it answers
1What it deliversWhat does this project actually do?
2Who it's forWho specifically benefits? Who's it not for?
3Why it existsWhat's the motivation?
4Why nowWhy this moment? What changes if you wait?
5Success criteriaWhat can we tick off when delivered?
6What can't changeTech, platform, compliance — anything we have to respect
7What it won't doWhat's intentionally out of scope?

Seven sections is heavier than the standard five-section product vision template (Pichler, Moore). The three additions — Why now, What can't change, What it won't do — exist so the Vision can do double duty as a planning anchor for /linear:*, not just a stakeholder pitch.

How it works

/vision is an interactive interview, not a fill-in-the-blanks form. Each answer informs the next prompt's nuance — a single-shot questionnaire produces shallow answers.

  1. Greets you and explains what a Vision is for
  2. Asks which mode — short or full — before any interview question fires (forced gate, not a flag)
  3. Runs the chosen interview:
    • Short — one rich question; CRAFT assembles all seven sections from the answer, marking inferred sections for review
    • Full — seven questions, one at a time, pushing back on vagueness; opens with the upfront count + time estimate, prefixes each prompt with (N/7), and accepts skip on any question to leave a _TBD_ placeholder for later
  4. Assembles the draft and shows it for review
  5. Writes VISION.md at the repo root only after explicit approval
  6. Offers to sync to Linear (gated) — "Push this Vision to the Linear project description now?". Yes hands off to /linear:update-vision; no leaves a hint and continues. The gate keeps you in control when iterating without polluting Linear with intermediate writes
  7. Closes with two reminders — the adjective trap, and the "downstream tooling carries this forward" point

If a VISION.md already exists, the skill asks before overwriting.

Why the order matters

The seven questions aren't a list of fields — they're a sequence designed so each answer sharpens the next.

QuestionWhy this position
What it delivers firstForces an outcome-shaped statement before anyone reaches for implementation language
Who it's for before WhyA motivation only makes sense once you know whose motivation it is
Why it exists before Why nowEstablishes the standing reason before you ask about timing
Why now as its own sectionMost templates skip this. Without it, "we should build this" reads as evergreen — which means it's never urgent
Success criteria before constraintsForces measurable outcomes before talk of limits softens what "done" means
What can't change near the endConstraints land more honestly once you've written the desired outcome
What it won't do lastNon-goals are the easiest to defer until you've named the actual goal

The hard part — measurable success criteria

The Success criteria section is where most Vision documents drift. Adjectives are the enemy of done. "Fast", "good", "easy", "robust" never fail clearly, so they never trigger completion — and the project drifts past the point of value.

Vague (avoid)Measurable (use)
The site is fastPage loads in under 2 seconds on a 3G connection
Sign-up is easySign-up completes in under 30 seconds end-to-end
The build is reliableCI runs in under 5 minutes, fails on first error
Tests catch regressionsgit bisect finds a regression in fewer than 5 commits

If you can't tell whether a criterion has been met, it can't trigger "done". Re-read your Success criteria — would you know how to verify each one?

Where Vision sits in stride

Vision is the guiding light. Functionally, that makes it stride's upstream anchor — every skill below reads VISION.md before deciding anything, so the work flows from a single source of intent:

LayerWhat it doesWhat anchors it
VisionWhat this project is for(the user's intent, captured once)
/craftSharpens a problem into a clear promptThe Vision tells you what problems are in scope
/linearTurns problems into tracked issues, branches, PRsIssue titles trace back to Vision outcomes
/commitRecords each change as one atomic, revertible unitThe branch the commits live on traces back to a Vision-aligned issue

Without a Vision, everything downstream has to reinvent "what is this project for" from thin context. With one, every issue title can be measured against it, every feature decision has an anchor, and future planners — human or AI — inherit your reasoning.

What a good Vision looks like

stride's own VISION.md (at the repo root) is a worked example. Read it and notice:

  • The What it delivers opens with a stakeholder-readable line ("Manage your own dev team on a Kanban board so everything's visible — except the team is AI"), then explains the mechanics
  • Who it's for is sharp — "developers using Claude Code who care about codebases that survive past day 30" — and explicitly names who it's not for
  • Success criteria has six measurable criteria, every one verifiable
  • What it won't do lists five hard non-goals, each starting with "Not a..."

A Vision the user actually re-reads is worth more than a 2000-word one written once and forgotten. Aim for something that fits on a single screen.

Under the hood

This page is the human-readable overview. The full agent specification — including the interview pacing rules, the push-back-on-vagueness behaviour, and the assemble-then-approve gate — lives in .claude/skills/vision/SKILL.md inside your project after installation. That file is what the agent actually follows when you run /vision.