Skip to content
Back to skills

Jira Connector

ASecurity

A custom skill to query sprint progress across ExampleVendor and Work Incentives Atlassian instances, identify developer bottlenecks, and auto-generate Markdown summaries for the daily update.

  • 33 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentspythongoshellbashapi

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add BrianArfi/ai-second-brain --skill jira-connector --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jira Connector?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Jira Connector
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/brianarfi-jira-connector/badge)](https://www.skillsdirectory.com/skills/brianarfi-jira-connector)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Jira Connector
description: A custom skill to query sprint progress across ExampleVendor and Work Incentives Atlassian instances, identify developer bottlenecks, and auto-generate Markdown summaries for the daily update.
---

# Jira Connector Skill

This custom skill provides direct integration with Jira Software across multiple instances (ExampleVendor and Work Incentives Atlassian domains) under Your Name's management. It parses active sprints, tracks ticket distributions, and alerts on critical resource bottlenecks.

## Capabilities

1. **Dual-Instance Agile Routing**: Queries ExampleVendor and Work Incentives Jira boards dynamically.
2. **Workload Analysis & Alerts**: Flags if any single team member holds more than 40% of active sprint tickets.
3. **Status Standardization**: Maps custom project workflows to uniform statuses (`TO DO`, `IN PROGRESS`, `UNDER REVIEW`, `DONE`).
4. **Daily digest output**: Compiles clean Markdown digests suitable for inclusion in [`daily_update_output.md`](../../../daily_update_output.md).

## Integration Setup

The credentials for Jira are stored in the active Atlassian credentials in the workspace (`credentials.json` or environment variables).

- **Instance A**: `examplevendor.atlassian.net` (MSP, MBA, STOR)
- **Instance B**: `yourcompany.atlassian.net` (MP, MPS)

5. **Portfolio-scoped sprint status**: each board belongs to exactly one of the owner's four portfolios, so `PORTFOLIO_BOARDS` is the mechanical portfolio boundary (`marketplace`->MP, `platform`->MPS, `b2c`->MBA, `ecom-solution`->MSP+STOR). Never mix boards across portfolios in one review.

## Usage

Run the connector from the workspace root:

```bash
python .agent/skills/jira-connector/scripts/jira_client.py daily-digest

# active-sprint snapshot for ONE portfolio, as JSON (used by premeeting-cards)
python .agent/skills/jira-connector/scripts/jira_client.py sprint-status \
    --portfolio marketplace --stale-before 2026-07-21
```

`sprint-status` returns per board: sprint name + end date, total/done/open counts,
`by_status`, `by_assignee` (descending, for concentration checks), `open_issues`,
and `stale` (open issues not updated since `--stale-before`). Sprint issues are
paginated, so busy boards are not silently truncated at 100.

## Editing a ticket

Everything below runs against the same `token.env`, and the **site is derived from the
issue key**, so `--domain` is only for a key this map does not know:

| Prefix | Site |
| :--- | :--- |
| `MP`, `MPS` | `yourcompany.atlassian.net` |
| `MSP`, `MBA`, `STOR` | `examplevendor.atlassian.net` |

**Creating on MPS: the service token is rejected.** On 1 Sep 2026 `create-issue --project MPS` returned
400 "The target project doesn't exist or you don't have permission to create issues in it," while the same
account reads MPS fine and `Task` is a valid type there. So it is a create permission on the token, not a bad
payload. Until that token is fixed, create through the owner's own Atlassian account with
`mcp__claude_ai_Atlassian__createJiraIssue` (`cloudId: yourcompany.atlassian.net`, `contentFormat: markdown`,
priority through `additional_fields`). That route also files the ticket as the owner rather than as a service user.
Reads, comments and transitions through the script are unaffected.

**Read first. Always.** A ticket usually has comments that change what the edit should say.

```bash
# the ticket, readable, description flattened out of ADF
python3 .agent/skills/jira-connector/scripts/jira_client.py get-issue ABC-123
python3 .agent/skills/jira-connector/scripts/jira_client.py get-issue ABC-123 --raw

# comments, with their ids
python3 .agent/skills/jira-connector/scripts/jira_client.py comment ABC-123 --list
```

**Write.** Every write needs `--approved`, exactly like `create-issue` and like a Slack
send. `--dry-run` prints the payload and writes nothing, and works without approval.

```bash
# change fields; only what you pass is touched
python3 .agent/skills/jira-connector/scripts/jira_client.py edit-issue ABC-123 \
    --summary "..." --description-file /tmp/spec.md --dry-run
python3 .agent/skills/jira-connector/scripts/jira_client.py edit-issue ABC-123 \
    --description-file /tmp/spec.md --approved

# comment, or replace one that is now wrong
python3 .agent/skills/jira-connector/scripts/jira_client.py comment ABC-123 \
    --text-file /tmp/note.md --approved
python3 .agent/skills/jira-connector/scripts/jira_client.py comment ABC-123 \
    --comment-id 368254 --text-file /tmp/note.md --approved

# move it
python3 .agent/skills/jira-connector/scripts/jira_client.py transition ABC-123 --list
python3 .agent/skills/jira-connector/scripts/jira_client.py transition ABC-123 \
    --to "In Progress" --approved
```

### Rules

1. **Use this, not the Atlassian MCP, for writes.** The MCP needs a raw `cloudId` that
   nobody remembers, and it has no approval gate, so a write can go out with no sign-off.
2. **`--label` and `--component` REPLACE the whole list.** To keep the existing labels and
   add one, use `--add-label`.
3. **Correct a wrong comment, do not stack another one on top.** Pass `--comment-id`. A
   ticket that contradicts itself sends the engineer to the wrong spec, and the wrong
   version is the one they read first. This is why `--list` prints ids.
4. **Long descriptions go in a file.** `--description-file` and `--text-file` take markdown
   and convert to ADF, so no shell escaping and no lost newlines.
5. **A ticket edit is a tracked action.** Update the matching ledger record in the same
   turn, per `CLAUDE.md` "Ledger Discipline".

Files in this skill

  • SKILL.md5.5 KB
  • scripts/dump_all_issues.py3.7 KB
  • scripts/jira_client.py44.3 KB
  • token.env.example67 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.