Skip to content

/nova-start

The entry point. Turns a ticket key into a working branch with the right context already loaded.

text
/nova-start PROJ-42

What it does, in order

  1. Fetches the ticket. Path depends on ticket_system in config.yml:
    • jira → invokes the jira-integration skill, which calls npx nova-spec jira get PROJ-42. Validates the key matches [A-Z][A-Z0-9]+-[0-9]+ first.
    • none → asks you to paste title, description, acceptance criteria, comments. No format check on the identifier.
  2. Classifies the work into quick-fix (<2h, no spec needed), feature (2h–3d, full flow), or architecture (>3d, requires documented decision in /nova-wrap). Picks the more conservative option when torn.
  3. Identifies affected services from the ticket text, matched against context/services/<name>.md. Asks you if unclear.
  4. Creates the git branch following branch.pattern (default {type}/{ticket}-{slug}), cut from branch.base (default main). Verifies the working tree is clean and pulls the base branch first.
  5. Loads context by invoking the context-loader agent in its own context window. The agent reads context/stack.md, context/conventions.md, the relevant service files, and 3–5 decisions/gotchas whose names match the ticket scope.
  6. Prints the summary using novaspec/templates/ticket-summary.md and points you at the next step.

Guardrails

#CheckEffect
0nova-installedconfig.yml and context/ existRefuses to run if nova-spec isn't installed
Working treeClean (no uncommitted changes)Stops with a message; commit or stash first
Base branchExists locallyIf missing, asks you which branch to use and recommends setting branch.base

What it produces

ArtifactWhere
Git branch<type>/<TICKET>-<slug>
Context summaryPrinted to chat (not persisted)
context/changes/active/<TICKET>/Created (empty until /nova-spec)

Next step

ClassificationNext
quick-fix/nova-build (skips spec + plan)
feature/nova-spec
architecture/nova-spec (note: requires documented decision in /nova-wrap)

Errors you may see

ErrorWhat it meansFix
Jira returned 401 UnauthorizedJIRA_API_TOKEN invalid or expiredRegenerate at id.atlassian.com, update env var
Jira returned 404 for PROJ-42Ticket doesn't exist or wrong project prefixVerify the key and jira.project in config.yml
Couldn't reach JiraNetwork / VPN issueFalls back to manual paste — no need to retry
Working tree is dirtyUncommitted changesCommit or stash, then re-run
Branch pattern doesn't match branch.typesBranch type not in configAdd it to branch.types in config.yml

Customizing it

  • The ticket-summary format → edit novaspec/templates/ticket-summary.md.
  • The classification heuristic → edit step 2 of novaspec/commands/nova-start.md.
  • What context is loaded → edit novaspec/agents/context-loader.md (e.g. add another file under "Always read").
  • Skip the Jira format check → set ticket_system: none in config.yml.

Released under the MIT License.