warp-jira-external-id
Write the plan id into Jira's External ID field for tickets that are already mapped.
Skill by smlsr
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-external-id
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-external-id
What's inside
- Skill name
warp-jira-external-id- Description
- Write the plan id into Jira's External ID field for tickets that are already mapped. Dry-run lists each pair. --apply --yes is the write.
- License
- MIT
- Instructions
- 58 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# External ID write-back
Warp has no Jira credentials. The script lists mapped tickets and prints one MUST DO block. You call the Atlassian MCP server named `jiraMcp` (default `atlassian`). Do not add a Jira comment.
```bash
python3 <plugin>/scripts/jira_external_id.py
python3 <plugin>/scripts/jira_external_id.py --ticket WV-01
python3 <plugin>/scripts/jira_external_id.py --apply --yes
python3 <plugin>/scripts/jira_sync.py record-external-id --results edits.json
```
`jira_external_id.py ?` prints every flag (`help`, `-h`, and `--help` do the same). Quote `?` if the shell expands it.
## Dry-run
1. Run `jira_external_id.py` with no `--apply`. It does not call Jira and it does not change the beam.
2. Read each line to the user: `WV-01 -> WAR-1: External ID currently <value|empty|unknown|field missing> -> would set WV-01`.
3. The last line is `jira: external id: would write N, already equal N, skipped N (...)`.
4. A key whose source is `external` is already equal. A ticket with no confirmed key is skipped. A different non-empty value is skipped unless the user passed `--force-external-id`. `jira.externalId` on the beam is the plan id we want. It is not proof that Jira holds that value. `jira.externalIdWritten` is that proof.
## Missing field
Call `getJiraProjectIssueTypesMetadata` once. If the External ID field is absent, do not edit it on every ticket.
- Creation is off unless the block says `MUST DO ensure field` (`jiraCreateExternalIdField` or `--create-field --yes`). Probe `createJiraField`, `createCustomField`, and `createJiraCustomField`. Also `discover` if that tool exists. Do not invent a tool. The Rovo catalog (30 Sep 2026) has none of those create-field tools. `getJiraScreen` and `updateJiraScreen` only add a field that already exists. A missing tool or a permission denial is not a failure.
- Tell the user they can create a Short text custom field named `External ID` in Jira admin, add it to the project screens and field context, then rerun with `--recheck`.
- Then use the fallback in the same turn. Default is `editJiraIssue KEY update.labels add warp:PLANID`. Do not set `fields.labels`. Do not remove other labels. `remote-link` calls `createJiraIssueRemoteIssueLink` with globalId `warp:PLANID`. `none` writes nothing.
- `.warp/jira-field.json` remembers the miss. The next scan prints one summary. `--recheck` looks again.
## Apply
`--apply --yes` is the consent for this command. It works even when `jiraWriteExternalId` is false. `--dry-run` wins over `--apply`. `--create-field` needs `--yes`.
When the output contains `MUST DO write External ID`, do this in the same turn. One block, every line:
1. Call `getJiraProjectIssueTypesMetadata` once. The field is `jiraExternalIdField`, or External ID when that name is what the catalog has. Remember the field id (`customfield_NNNNN`).
2. For each `editJiraIssue KEY field FIELD = PLANID` line, call `getJiraIssue` and `getJiraIssueEditmeta` for that key.
3. If the field is missing or not editable on that issue, skip it. Do not invent a field. Record the skip in the results file.
4. If the live value already equals the plan id, do not edit. Record `result: already`. An equal value is not an error.
5. If the live value is a different non-empty id, leave it unless the user passed `--force-external-id`. Show before and after.
6. Otherwise call `editJiraIssue` and set that field id to the plan id. Do not add a comment.
7. Save one results file and record every row, including skips:
```json
{"fields":[{"id":"customfield_10050","name":"External ID"}],"editmeta":{"fields":{"customfield_10050":{"name":"External ID"}}},"issues":[{"key":"WAR-1","fields":{"customfield_10050":""}}],"edits":[{"id":"WV-01","key":"WAR-1","before":"","result":"updated"}]}
```
```bash
python3 <plugin>/scripts/jira_sync.py record-external-id --beam .warp/beam.json --results edits.json
```
`result` is `updated`, `already`, or a skip with `error` of `field missing` or `read-only`. A failed or skipped row sets `jira.externalIdAttempt`. `/warp-jira-check` prints `externalIdAttempt: skipped — field missing`. It does not overwrite `jira.lastAttempt`. A recorded write sets `jira.externalIdWritten` and clears that attempt.
`--force` queues tickets that were already recorded, including keys that came from the external-id search. `--force-external-id` is the only flag that replaces a different non-empty value. `--ticket WV-01` limits the run.
`/warp-scan` and `/warp-jira-check` print this same MUST DO block when `jiraWriteExternalId` is true. That config flag is the consent. Those commands do not need `--yes`. Execute the block the same way, then `record-external-id`.From smlsr/Warp, MIT.
More from smlsr/Warp
- 0.565score
warp-jira-map
smlsr
Map plan ticket ids to real Jira issue keys.
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.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-match
smlsr
Link unmapped Warp tickets to Jira issues by summary.
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 5, 2026 (25 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-sync
smlsr
Read Jira statuses into the beam.
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.565score
warp-status-post
smlsr
Post Warp status to Slack and Teams, including the status files.
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-jira-map
smlsr
Map plan ticket ids to real Jira issue keys.
SkillAFreshness: AClaude Code +9 - 0.561score
warp-jira-match
smlsr
Link unmapped Warp tickets to Jira issues by summary.
SkillAFreshness: AClaude Code +9
Cite this page
warp-jira-external-id skill. Agent Mart. https://agentmart.dev/skills/smlsr-warp-jira-external-id (last updated 2026-10-24)