Ticket system
/nova-start can either fetch tickets from Jira automatically or let you paste content manually. The switch is one config key:
# novaspec/config.yml
ticket_system: jira # jira | noneticket_system: jira
The default if you enabled Jira during npx nova-spec init.
/nova-start PROJ-42validates the key matches[A-Z][A-Z0-9]+-[0-9]+. Wrong format → refuses with a clear message.- Invokes the
jira-integrationskill, which callsnpx nova-spec jira get PROJ-42. - Reads
JIRA_API_TOKENfrom your shell env (referenced as${JIRA_API_TOKEN}inconfig.yml). - On 401 / 404 / network errors, falls back to manual paste with explicit instructions.
- Branch name uses
{type}/PROJ-42-{slug}perbranch.pattern.
The full Jira config block:
ticket_system: jira
jira:
skill: jira-integration
url: https://your-workspace.atlassian.net
project: PROJ
email: you@example.com
token: ${JIRA_API_TOKEN}
done_transition_id: "41"
transitions:
done: "41"See Integrations → Jira for setup, transition discovery, and troubleshooting.
ticket_system: none
For teams that don't use a tracker, or use one without an API integration (Linear, GitHub Issues, ClickUp, internal tooling).
ticket_system: noneWhat changes:
/nova-start <ANYTHING>accepts any identifier —auth-rewrite,BUG-1234,2026-q1-migration, anything.No format validation, no API call.
The command immediately asks you to paste:
- title
- description
- acceptance criteria
- relevant comments
Branch name uses your identifier as-is. If
branch.patternis{type}/{ticket}-{slug}and you passauth-rewrite, you getfeature/auth-rewrite-add-mfa(slug from the title)./nova-wrapskips the Jira "transition to Done" step.
You can leave the jira: block in config.yml even with ticket_system: none — it'll just be ignored.
Hybrid use
If your team uses Jira mostly but occasionally has tickets in a different system, switch the config temporarily for those:
# Edit config.yml: ticket_system: none
/nova-start LINEAR-456
# When done, switch back: ticket_system: jiraOr run two project installs of nova-spec in separate clones — but in practice the switch is usually rare enough that one global setting works.
What changes inside /nova-start.md
The command bifurcates on ticket_system:
Read novaspec/config.yml → ticket_system
if ticket_system: jira
Validate $ARGUMENTS matches [A-Z][A-Z0-9]+-[0-9]+
Invoke jira-integration skill
Handle 401 / 404 / timeout fallbacks
if ticket_system: none (or missing)
Skip format validation
Ask for pasteYou can edit novaspec/commands/nova-start.md to add a third path (e.g. linear) if you want — see the file for the existing structure.
Migration between values
- Going from
jiratonone— just change the key. Existing branches still work; new ones won't validate or close in Jira. - Going from
nonetojira— set the key, fill in thejira:block, setJIRA_API_TOKENin your env, runnpx nova-spec syncto pick up any default-config migrations.
What NOT to break
- If you set
ticket_system: jira, also setjira.skill: jira-integration— they're paired. JIRA_API_TOKENmust be in the env where you run Claude Code, not just in a.envfile (unless you load it via your shell rc).