Skip to main content

Sync your .plan file with Jira Cloud

Project description

plajira

Sync your .plan file with Jira Cloud.

plajira is a command-line tool that bridges your personal .plan file with Jira, keeping your task tracking in sync without leaving your editor.

Features

  • Zero intrusion: Your .plan file is never modified by plajira
  • Git-aware: Only syncs items from commits that have been pushed
  • Timestamp-aware: Detects conflicts when Jira was updated more recently
  • Interactive: Every action requires confirmation
  • Portable: Python standard library only (no external dependencies)

Installation

pip install plajira

Or install from source:

git clone https://github.com/yourusername/plajira.git
cd plajira
pip install -e .

Quick Start

  1. Initialize plajira in a directory containing your .plan file:
plajira init
  1. Copy .env.example to .env and add your Jira credentials:
cp .env.example .env
# Edit .env with your Jira URL, email, and API token
  1. Run your first sync:
plajira sync

.plan File Format

> 2026-01-07
* foo feedback
+ implement bar
! review baz spreadsheet
? begin legend mode implementation

> 2026-01-08
* touch base on foo feedback
* implement bar
? continue legend mode implementation
~ old abandoned idea

Markers

Marker Meaning Jira Status
? In progress / planned In Progress
* Accomplished that day Done
! Idea for future work Backlog
+ Accomplished later Done
~ Abandoned Won't Do

Commands

plajira init

Initialize plajira configuration in the current directory.

plajira status

Preview what would happen on sync, without making changes.

$ plajira status

Checking .plan for duplicate lines... OK
Parsing .plan... 34 items
Checking git status... 3 pushed, 1 unpushed commit

New items:
   "research spec" [SUSPECTED DUPLICATE]
   "baz spreadsheet"

Status changes:
   CSD-42 "implement foobar": In Progress  Done

plajira sync

Synchronize your .plan with Jira.

$ plajira sync

New item: "implement foobar"
[y] Create new Jira issue
[n] Not now
[d] Duplicate  link to existing
[s] Skip

Choice [y/n/d/s]: y

✓ Created CSD-72 "implement foobar"

plajira link <text> <jira-key>

Manually link a .plan line to an existing Jira issue.

$ plajira link "implement foobar" CSD-42
✓ Linked.

plajira unlink <text>

Remove tracking for a line (doesn't affect Jira).

plajira list

Show all tracked items and skip list.

plajira unskip <text>

Remove a line from the skip list.

Configuration

Configuration is stored in .plajira (YAML format). Credentials are in .env.

.env

JIRA_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_TOKEN=your-api-token

Get your API token from: https://id.atlassian.com/manage-profile/security/api-tokens

.plajira

The configuration file has two sections:

  1. config (user-editable): Jira settings, marker mappings, keywords
  2. state (managed by plajira): Tracked items and skip list

Duplicate Detection

plajira automatically detects suspected duplicates using:

  • Continuation keywords ("continue", "finish", etc.)
  • Word overlap (≥50% of significant words)
  • Fuzzy matching (Levenshtein similarity ≥60%)

When a suspected duplicate is found, you can link it to an existing item instead of creating a new Jira issue.

Conflict Resolution

If someone else updates a Jira issue after you changed your .plan, plajira detects the conflict:

⚠️  CONFLICT: "implement foo" (CSD-42)

Your .plan shows: * (Done)
  Changed: 2026-01-08 14:32

Jira shows: Blocked
  Changed: 2026-01-08 16:45

Options:
  [s] Skip this item (recommended)
  [v] View Jira issue in browser
  [o] Override: force .plan status to Jira

Requirements

  • Python 3.8+
  • Git repository with a remote tracking branch
  • Jira Cloud account with API access

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plajira-0.1.0.tar.gz (36.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plajira-0.1.0-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file plajira-0.1.0.tar.gz.

File metadata

  • Download URL: plajira-0.1.0.tar.gz
  • Upload date:
  • Size: 36.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for plajira-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1b532fdfa008430ff7515f3b7ae8ab786cc86427b9a87d86463ab198ceffcc0e
MD5 2191aca3903db9dfa1943cb61a8e2b20
BLAKE2b-256 da38fecd8ea17633c3f4e1d2a66cff9caf823a44a78df2e0ed9523fcf5206c62

See more details on using hashes here.

File details

Details for the file plajira-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: plajira-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 33.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for plajira-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24d04ab89cef7e148e5a7bac4e9941ec1f202d34b6189b511a5e3e200947f8b7
MD5 360d37286a2e0ef89d18d703e8c40faa
BLAKE2b-256 fabe3c7f604101e1e6795d23da10d8b59e402e2072e6b4cab1588fb1d079d1f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page