neon-sprawl/.cursor/rules/linear-git-naming.md

2.4 KiB

description alwaysApply
Branch names and commit messages must lead with the Linear issue id (team NEO) true

Linear issue ids in branches and commits (Neon Sprawl)

The Neon Sprawl team in Linear uses issue ids NEO-* (see the Neon Sprawl team). Match the issue you are implementing—do not invent ids.

Issue hierarchy

Tracked work is Project → Issue in Linear (epic/module projects, stories / tasks / bugs as issues). Do not recreate a Jira-style Feature middle tier: module- or slice-level grouping is labels on the issue only (prefer decomposition module ids such as E1.M1 when they fit). Canonical wording: decomposition README — Linear alignment.

Branch names

  • Put the Linear issue id first (NEO-123), then a short kebab-case slug (and optional type). The id must be the first path segment of the branch name.
  • Good: NEO-5-click-to-move, NEO-13-fix-health-desync, NEO-5/feature/terrain-spike (id still first segment if using slashes).
  • Avoid: feature/click-to-move with no id, or fix/neo-5-foo with the id not at the start.

When suggesting or creating a branch for NEO-5, use something like NEO-5-<slug>, not feature/neo-5-… with the id buried after a prefix.

Commit messages

  • For any commit done as part of a Linear issue (work tracked under an issue), the first token of the subject line must be the issue id (NEO-…), then : and the summary.
  • Good: NEO-5: add direct click-to-move steering, NEO-13: fix duplicate spawn on reconnect
  • Avoid: fix(client): … or feat: … without the issue id at the front. If you use Conventional Commits, place them after the id: NEO-5: feat(client): click-to-move prototype

Multi-issue commits: Prefer one issue per commit; if unavoidable, list ids: NEO-5, NEO-9: shared nav refactor.

No Linear issue (rare): Maintenance or repo-only changes with no ticket — use chore: as the prefix (e.g. chore: update .gitignore). Do not invent fake ids.

Agent behavior

  • When creating a branch or commit for tracked work, infer the id from the current story (e.g. user says NEO-5), the branch already in use, or the Linear issue fetched via MCP (plugin-linear-linear, e.g. get_issue / list_issues).