Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/smlsr-warp-jira-match
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/warp-jira-match
What's inside
- Skill name
warp-jira-match- Description
- Link unmapped Warp tickets to Jira issues by summary. Store an exact or prefix match with --apply. A fuzzy score is a proposal until --yes. Optionally write the plan id into the External ID field.
- License
- MIT
- Instructions
- 50 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Jira match
Warp has no Jira credentials. The script builds JQL, matches a saved candidate list locally, and records a confirmed pair the same way `resolve` does. You call the Atlassian MCP server named `jiraMcp` (default `atlassian`).
```bash
python3 <plugin>/scripts/jira_match.py
python3 <plugin>/scripts/jira_match.py --results candidates.json
python3 <plugin>/scripts/jira_match.py --results candidates.json --apply
python3 <plugin>/scripts/jira_match.py --write-external-id --yes --results edits.json
```
`jira_match.py ?` prints every flag (`help`, `-h`, and `--help` do the same). Quote `?` if the shell expands it.
## Match
1. Run `jira_match.py` with no `--results`. It writes `.warp/jira-match.json` and does not call Jira. Dry-run is the default.
2. When `jiraProject` is empty, call `getVisibleJiraProjects` and run each query in every visible project. Otherwise the JQL is `project = X AND summary ~ "..."`.
3. `summary ~` is fuzzy in Jira. Call `searchJiraIssuesUsingJql` for each `jql`. Request `summary`, `status`, and the external-id field. `maxResults` is 50. Follow `nextPageToken` at most once (2 pages). If `isLast` is still false, set `truncated` true on the transcript.
4. Save one transcript and match it locally:
```json
{"issues":[{"key":"WAR-1","summary":"Build the widget","status":"To Do"}],"searches":[{"jql":"project = WAR AND summary ~ \"build the widget\"","issues":[],"isLast":true,"total":1}],"truncated":false}
```
```bash
python3 <plugin>/scripts/jira_match.py --results candidates.json
```
5. Read each ticket: plan id, Warp summary, candidate keys, their summaries, match type, and score. With `jiraMatchOnText: true` or `--text-only`, a Jira summary that contains the plan summary's first 60 characters anywhere is a `text` match on its own, whatever the External ID says. Otherwise the order is exact (case, punctuation, and whitespace ignored) or `external` (the issue's External ID is the plan id and its summary contains the plan summary's first 60 characters anywhere, as when Jira puts the id in front of the title), then the first 60 characters when both summaries are at least that long (`--chars`), then a token/ratio score at or above 0.9 (`--min-score`) as a proposal only.
6. `--apply` stores one exact match (confidence high) or one prefix match (confidence medium) on the beam and in `.warp/jira-map.json`, source `summary`. Add `--yes` to also store one fuzzy proposal (confidence low). Do not store an ambiguous row: two issues with the same or near-identical summary, or one issue claimed by two tickets. A manual key is left as is. Done and closed issues are skipped unless `--include-done`. An issue already mapped to another ticket is skipped.
7. Pass `--all` only to report tickets that already have a key. Do not replace those keys. Pass `--id` to limit the run.
## Write the External ID
This is a write to Jira. It needs the connector permission from `/warp-allow-notify --with-jira` (`editJiraIssue` and `getJiraIssueEditmeta`). Do it when the user passed `--write-external-id` or `--set-external-id`. Those flags still need `--yes`, and they work when `jiraWriteExternalId` is false. When that config key is true, `/warp-scan` and `/warp-jira-check` already print `MUST DO write External ID` for every mapped ticket that is not confirmed, without `--yes`. For a map that already exists, `/warp-jira-external-id` is the bulk command.
1. `python3 <plugin>/scripts/jira_match.py --write-external-id` (or `--set-external-id WV-01=WAR-1`, or `jira_sync.py external-id`). Without `--yes` this is a dry-run: it shows before and after and writes nothing.
2. Call `getJiraProjectIssueTypesMetadata` and `getJiraIssueEditmeta` for the issue. The field is `jiraExternalIdField`, or External ID when that name is what the catalog has.
3. If the field is missing or not editable, skip it and say so. The command still succeeds. Do not invent a field.
4. If the current value is a different non-empty id, leave it unless `--force-external-id`.
5. Otherwise call `editJiraIssue` and set that field to the plan id. Do not add a Jira comment.
6. Save `{"fields":[...],"editmeta":{"fields":{"customfield_10050":{"name":"External ID"}}},"edits":[{"id":"WV-01","key":"WAR-1","before":"","result":"updated"}]}` and run:
```bash
python3 <plugin>/scripts/jira_match.py --write-external-id --yes --results edits.json
```
A second run sees `jira.externalIdWritten` and does not send the edit again.From smlsr/Warp, MIT.
More from smlsr/Warp
- 0.565score
warp-cleanup
smlsr
List registered Warp agents and clear idle or leftover cloud agents for this repo.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-jira-map
smlsr
Map plan ticket ids to real Jira issue keys.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-status-post
smlsr
Post Warp status to Slack and Teams, including the status files.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-sync
smlsr
Read Jira statuses into the beam.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-jira-check
smlsr
Explain, per ticket, which Jira transition and which Jira or pull-request comment should have happened, what the beam recorded, and what is missing.
SkillAFreshness: AClaude Code +9 - 0.561score
warp-alarm
smlsr
Raise, record, and clear Warp alarms when a PR cannot pass Bugbot, a lock is escaped, or a ticket is stuck.
SkillAFreshness: AClaude Code +9 - 0.561score
warp-jira-external-id
smlsr
Write the plan id into Jira's External ID field for tickets that are already mapped.
SkillAFreshness: AClaude Code +9 - 0.561score
warp-scan
smlsr
Scan any repo, or one folder of it, for CURSOR_PLAN.md, schedule.json, a build map, or a Jira ticket export and build the Warp plan.
SkillAFreshness: AClaude Code +9 - 0.560score
shuttle-run
smlsr
Run one claimed ticket on its own VM, or in its own git worktree, through an open pull request.
SkillAFreshness: AClaude Code +9 - 0.560score
warp-allow-notify
smlsr
Write the Cursor allowlist so Slack and Jira calls Warp makes do not stop for Allow or Run.
SkillAFreshness: AClaude Code +9 - 0.560score
warp-from-jira
smlsr
Build the plan files /warp-scan reads from the Jira issues that carry one or more labels, for example /warp-from-jira version:1.5.5,ui.
SkillAFreshness: AClaude Code +9 - 0.560score
warp-status
smlsr
Write and report the Warp status file: done, working, and left.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 14, 2026 (15 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/smlsr/Warp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from smlsr
- 0.565score
warp-status-post
smlsr
Post Warp status to Slack and Teams, including the status files.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-sync
smlsr
Read Jira statuses into the beam.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-jira-map
smlsr
Map plan ticket ids to real Jira issue keys.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-jira-check
smlsr
Explain, per ticket, which Jira transition and which Jira or pull-request comment should have happened, what the beam recorded, and what is missing.
SkillAFreshness: AClaude Code +9 - 0.565score
warp-cleanup
smlsr
List registered Warp agents and clear idle or leftover cloud agents for this repo.
SkillAFreshness: AClaude Code +9 - 0.561score
warp-jira-external-id
smlsr
Write the plan id into Jira's External ID field for tickets that are already mapped.
SkillAFreshness: AClaude Code +9
Cite this page
warp-jira-match skill. Agent Mart. https://agentmart.dev/skills/smlsr-warp-jira-match (last updated 2026-10-24)