Jira integration

Jira — wired into the lifecycle

Stop manually updating tickets. fastpace's hook-driven event bus creates Initiatives, Epics, and Stories in your Atlassian Jira project the moment you author a PRD, ERD, or plan — and a 15-minute reconciler catches drift when humans edit on the other side.

Hook-driven 3-level hierarchy Atlassian Cloud + Server Native issue types JQL drift queries
Why this matters

An integration that keeps Jira honest

Most Jira integrations are one-way exports. This one is an event bus — every artifact your team produces fires a hook, and the right thing happens in Jira without anyone clicking.

Initiatives stay in sync

Every PRD becomes a Jira Initiative. Every ERD epic becomes an Epic. Every story becomes a Story — automatically, on file write. PMs stop forgetting to update tickets.

Drift surfaces in 15 minutes

Manually changed an issue's status in Jira? Renamed an Initiative? The reconciler catches it and surfaces the divergence in your local dashboard — no silent breakage.

Audit trail by default

Every push, every transition, every drift lands in fastpace/audit.log. Ship a continuous Jira-backed change history to your auditors without curating screenshots.

Native Jira issue types

Uses real Initiative + Epic + Story types — not custom labels or shoehorned hacks. Configure issue types if your org uses different names. Hierarchy mapping is a config flag.

Hierarchy mapping

Three levels, native Jira types

fastpace uses real Jira issue types — Initiative, Epic, Story — not custom labels. Override the names per-project if your team's Jira config differs.

fastpace artifact
fastpace/docs/prd/[slug].md
fastpace/docs/erd/[slug].md
fastpace/exec-plans/[slug].json (epics)
fastpace/exec-plans/[slug].json (stories)
fastpace/watch-cards/[slug].json
Jira object
Initiative issue type
comment on Initiative link to ERD
Epic parent = Initiative
Story parent = Epic
status transitions via /transitions API
Lifecycle hooks

Eight events. Each one hits Jira's REST API.

fastpace's hooks call into /rest/api/3 on your Atlassian instance. Toggle individual hooks via fastpace.config.yaml.

Event
Fires when
Jira API call
prd.written
a /fp-write-prd command writes the PRD
POST /issue with type=Initiative · description=PRD body
erd.written
/fp-prd-to-erd writes the engineering design
POST /issue/{init}/comment with ERD link
execplan.written
/fp-erd-to-execplan generates the plan
POST /issue ×N for Epics, then ×M for Stories under each Epic
adr.written
/fp-write-adr lands a numbered decision
fan-out comment to every linked Initiative
phase.changed
a watch card transitions phases
POST /issue/{init}/transitions with the phase-mapped status
pr.opened
a PR is opened
comment on the active Story with PR URL
pr.merged
a PR merges
comment merge confirmation on Initiative
review.completed
/fp-review-pr produces findings
POST /comment with structured findings
Phase → Jira status

Watch-card phases drive Jira workflow transitions

When a watch card moves phase, fastpace POSTs a transition to Jira via /issue/[key]/transitions — finding the transition by name from the issue's available list.

phase
planning
jira status
In Definition
phase
spec
jira status
In Design
phase
write-tests
jira status
In Progress
phase
implement
jira status
In Progress
phase
run-tests
jira status
In Review
phase
document
jira status
In Review
phase
create-pr
jira status
In Review
phase
push
jira status
Done
Drift detection

JQL-driven reconciliation

Every 15 minutes, the poller queries each linked Initiative via JQL: project = ENG AND parent = ENG-100, normalizes the response, and compares status + story counts to fastpace's expected state. Divergences show up in the local dashboard with a "Mark resolved" action.

Partial refunds ENG-100 jira
Phasespec
StatusDone
Stories0 / 5
Pulled2m ago
Drift detected: fastpace expects In Design · Jira has Done
Setup

Four steps to live

1

Configure Jira in fastpace

Edit fastpace.config.yaml:

integrations:
  provider: jira
  hierarchy: initiative-epic-story
  jira:
    site: mycompany       # mycompany.atlassian.net
    project_key: ENG
    email: you@mycompany.com
    issue_type_initiative: Initiative
    issue_type_epic:       Epic
    issue_type_story:      Story
2

Create an Atlassian API token

Go to id.atlassian.com → API tokens, create a token, and save it to fastpace/.integrations.local.json (auto-gitignored, chmod 0600):

{
  "jira_api_token": "ATATT3xFfGF0..."
}
3

Verify the connection

$ fastpace integrations test
✓ Connection ok. authenticated as Ana Mendes
  project: Engineering (ENG)
4

Author your first feature

Run /fp-write-prd in Claude Code. The PRD write fires prd.written → an Initiative is created in Jira automatically.

$ fastpace integrations list
  ✓  partial-refunds            ENG-100      phase=planning
  !  legacy-cleanup             ENG-87       1 drift  phase=spec
CLI commands

For when you want to run Jira sync manually

fastpace sync [slug]

Re-runs artifact-write events. Without a slug, syncs every linked feature in your repo.

--push push only --pull reconcile only
fastpace integrations status

Shows site, project_key, hierarchy, hook on/off matrix, and whether your token is configured.

fastpace integrations test

Hits Jira's /rest/api/3/myself endpoint to verify auth + project visibility.

fastpace integrations list

Roll-up of every linked feature × Initiative key × phase × drift count.

Ready to wire Jira into your lifecycle?

Test-drive in a sandbox first; then edit one config block, paste one API token. The hooks do the rest.