Skip to content

Ship a feature

When you need this: you're building something new that deserves a design — you want the what and why agreed before code exists.

The loop at a glance

work item (feature) → spec → review + approve → plan → build → finish

Feature work items pass through mship's design gates before development; the Concepts page has the full lifecycle diagram. Bugs and chores skip the design gates — that faster loop is Fix a bug.

1. Create the work item

mship item new "Search across projects" --kind feature
# wi-. . . created

2. Write the spec

A spec is the approved design: problem, user story, approach, acceptance criteria. It lives at specs/<date>-<id>.md in the workspace.

mship spec new --title "Search across projects" --id search-across-projects
mship spec draft search-across-projects

spec draft prints a drafting prompt — run it through your agent (or fill the JSON yourself), then apply the result:

cat draft.json | mship spec apply search-across-projects --from-json -
# status: needs_review

Link it to the work item if it isn't already:

mship item link-spec <wi-id> search-across-projects

3. Review and approve

mship spec review search-across-projects    # criteria + open questions, one unit at a time
mship spec approve search-across-projects   # gate: all criteria approved, all questions answered

Prefer the phone? Specs in needs_review surface in Ground Control's Queue for one-tap approval — see Phone control. To send one back: mship spec request-changes <id> --reason "...".

4. Plan

Features need an implementation plan before development — a bite-sized, TDD-oriented breakdown at <docs_dir>/plans/<date>-<slug>.md, with each task wrapped in mship:task anchors so it can be handed to an agent one task at a time. The writing-plans skill (installed via mship skill install) is the canonical way to produce one. Link it:

mship item link-plan <wi-id> docs/plans/2026-07-25-search-across-projects.md

5. Build

Two equivalent entry points:

mship spec dispatch search-across-projects   # binds the approved spec to a new task + emits a handoff
# or
mship spawn "search across projects" --work-item <wi-id>

Then move the task into development:

mship phase dev

phase dev is where the three gates fire: the task must belong to a work item, a feature's spec must be approved, and its plan must exist. If a gate blocks you, it says exactly which link is missing (Concepts → the three gates).

Build inside the task's worktrees as usual — edit, mship test, mship journal as you go. Working with an agent? Agent-driven development covers dispatching plan tasks to subagents.

6. Finish

mship finish

The same gates run at finish. The PR body carries the spec's acceptance criteria, so reviewers see what the change promises. After the merge: mship close.