Skip to content

[Extension]: spec-kit-jira-sync v0.4.0 (version update of existing jira-sync entry) #3149

Description

@ashbrener

Note for triage: This is a version update of the existing community-catalog entry jira-sync (currently 0.2.0) → 0.4.0, not a brand-new extension. It was previously submitted/updated via direct PRs to catalog.community.json (#2895 merged; #2933/#2952/#3133 closed); re-filing via the Extension Submission template per maintainer guidance on #3133. Filling all fields for completeness.

Extension ID

jira-sync

Extension Name

Jira Integration (Sync Engine)

Version

0.4.0

Description

An idempotent, drift-aware, fail-closed reconcile engine that mirrors spec-kit specs into Jira (Epic per repo, Story per spec, Subtask per phase).

Author

Ash Brener

Repository URL

https://github.com/ashbrener/spec-kit-jira-sync

Download URL

https://github.com/ashbrener/spec-kit-jira-sync/archive/refs/tags/v0.4.0.zip

License

MIT

Homepage (optional)

https://github.com/ashbrener/spec-kit-jira-sync

Documentation URL (optional)

https://github.com/ashbrener/spec-kit-jira-sync/blob/main/README.md

Changelog URL (optional)

https://github.com/ashbrener/spec-kit-jira-sync/blob/main/CHANGELOG.md

Required Spec Kit Version

=0.1.0

Required Tools (optional)

  • bash (>=4.4) - required
  • git, curl, jq - required
  • gitleaks / trufflehog - optional (broader secret scanning; never bundled)

Number of Commands

4

Number of Hooks (optional)

0

Tags

issue-tracking, jira, tasks-sync, reconcile, drift-aware

Key Features

  • One-way reconcile: mirrors specs/NNN-*/ → Jira (Epic per repo, Story per spec, Subtask per task phase); filesystem is the source of truth, Jira a read-only mirror.
  • Idempotent + drift-aware: zero-churn on unchanged state; surfaces backward-drift (Jira ahead of disk) and lets the operator decide.
  • /speckit-jira-install + /speckit-jira-seed: resolve the per-repo binding over REST and validate the lifecycle mapping — no hand-editing config (v0.4.0).
  • Human-readable issue titles via a deterministic source ladder; lifecycle→subtask cascade so merged specs mark their phases done (v0.4.0).
  • Consumer-side privacy guard: fail-closed pre-write scan for real Jira coordinates, never committed (v0.4.0).
  • Configurable artifact mapping, optional author attribution, ADR/decision mirroring, guarded re-mode pruning.

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

Tested on:

  • macOS + Linux (Ubuntu) with bash 4.4 and 5.2 (CI matrix).

Test suite: 507 bats unit + integration tests (offline, Jira REST mocked via a curl-shim), plus shellcheck, yamllint, and markdownlint — all green in CI on every release.

Real project: dogfooded against live Jira projects (install → seed → reconcile across multiple specs), which surfaced and drove the v0.2.1/v0.3.0/v0.4.0 fixes (multi-spec phase handling, board status cascade, flexible phase headers).

Release: v0.4.0 tagged with a published source archive (HTTP 200), validated by the pre-flight check in the publish flow.

Example Usage

# Install into your spec-kit project (catalog form once listed):
specify extension add jira-sync
# or from the release archive directly:
specify extension add jira-sync --from https://github.com/ashbrener/spec-kit-jira-sync/archive/refs/tags/v0.4.0.zip

# Resolve the per-repo Jira binding (no hand-editing config):
/speckit-jira-install
/speckit-jira-seed

# Reconcile this repo's specs into Jira (idempotent, drift-aware):
/speckit-jira-push
# Read-only drift/sync preview:
/speckit-jira-status

Proposed Catalog Entry

{
  "jira-sync": {
    "name": "Jira Integration (Sync Engine)",
    "id": "jira-sync",
    "description": "An idempotent, drift-aware, fail-closed reconcile engine that mirrors spec-kit specs into Jira (Epic per repo, Story per spec, Subtask per phase).",
    "author": "Ash Brener",
    "version": "0.4.0",
    "download_url": "https://github.com/ashbrener/spec-kit-jira-sync/archive/refs/tags/v0.4.0.zip",
    "repository": "https://github.com/ashbrener/spec-kit-jira-sync",
    "homepage": "https://github.com/ashbrener/spec-kit-jira-sync",
    "documentation": "https://github.com/ashbrener/spec-kit-jira-sync/blob/main/README.md",
    "changelog": "https://github.com/ashbrener/spec-kit-jira-sync/blob/main/CHANGELOG.md",
    "license": "MIT",
    "requires": {
      "speckit_version": ">=0.1.0"
    },
    "provides": {
      "commands": 4,
      "hooks": 0
    },
    "tags": ["issue-tracking", "jira", "tasks-sync", "reconcile", "drift-aware"],
    "verified": false,
    "downloads": 0,
    "stars": 0,
    "created_at": "2026-06-08T00:00:00Z",
    "updated_at": "2026-06-24T00:00:00Z"
  }
}

Additional Context

Updates the existing jira-sync entry from 0.2.00.4.0. Since v0.2.0 the extension added: feature 005 (ADR/decision mirroring), 006 (consumer-side privacy guard), 007 (author attribution), 008 (install + seed ceremony — the two new commands, taking the count 2 → 4), 009 (human-readable issue titles), and 010 (lifecycle→subtask board cascade + flexible phase headers). The catalog created_at is preserved; only version, download_url, provides.commands, and updated_at change. Happy to adjust anything to fit the intake process — thanks for maintaining the catalog!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions