jira-to-local
Use when the user wants Jira issues pulled onto disk as local files — "pull PROJ-123", "fetch this story", "get that ticket locally", "download the bug"…
Skill by bmad-labs
Chalk Labs
Need help deploying jira-to-local?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
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/bmad-labs-jira-to-local
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: backend, 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 and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 3
codeload.github.com· found in install commandid.atlassian.com· found in codeyour-site.atlassian.net· found in code
Files it touches
~/.claude/skills/jira-to-local
What's inside
- Skill name
jira-to-local- Description
- Use when the user wants Jira issues pulled onto disk as local files — "pull PROJ-123", "fetch this story", "get that ticket locally", "download the bug", "save this issue and its comments", "grab the NFR", "read this ticket offline", or a pasted Jira browse URL with nothing else asked of it. Also for many at once — "sync all tickets in sprint 62", "pull every bug in the sprint", "fetch the whole backlog locally", "download all of team X's issues". Covers any issue type — story, bug, epic, subtask, or whatever types the project has invented for itself. Also when the issue links a Confluence page that should come down with it. This skill only reads: for creating, editing, transitioning, commenting, searching, or pushing anything back to Jira, use atlassian-rest instead.
- License
- MIT
- Instructions
- 225 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (36)
- SKILL.md
- evals.json · evals/
- confluence-links.md · references/
- format-guide.md · references/
- jira-fields.md · references/
- output-json.md · references/
- refactor-guide.md · references/
- comments.schema.json · schemas/
- config.schema.json · schemas/
- content.schema.json · schemas/
- development.schema.json · schemas/
- tasks.schema.json · schemas/
- worklogs.schema.json · schemas/
- adf.mjs · scripts/
- check-json.mjs · scripts/
- check-markdown.mjs · scripts/
- config.mjs · scripts/
- confluence-format.mjs · scripts/
- dev-status.mjs · scripts/
- fetch-confluence.mjs · scripts/
- fetch-issue.mjs · scripts/
- inspect.mjs · scripts/
- jira-api.mjs · scripts/
- package.json · scripts/
- setup-choices.mjs · scripts/
- comments.md · templates/
- confluence-page.md · templates/
- content.md · templates/
- development.md · templates/
- jira.config.json · templates/
- subagent-instruction.md · templates/
- tasks.md · templates/
- worklogs.md · templates/
- bulk-pull.md · workflows/
- pull.md · workflows/
- setup.md · workflows/
SKILL.md (first lines)
# Pull a Jira issue into a local folder One job: an issue key goes in, a folder of readable files comes out. One issue, one folder, everything in it — fields, comments, subtasks, worklogs, attachments, and any Confluence page the issue links to. `<skill-path>` below is this skill's directory. ## The seven rules **1. Pull only.** This skill never creates, edits, transitions, comments on, assigns, or deletes anything in Jira. Every request reads: every REST call is a GET, and the one POST is a GraphQL *query* — the only way to read the deployment list, which no REST endpoint serves. Nothing here mutates anything. If the user wants a write, say so plainly and route to `atlassian-rest` — do not improvise it here. **2. Config first, and the config records the user's ticks.** No `.jira.config.json` means run [`workflows/setup.md`](workflows/setup.md) before anything else. Setup's five decisions — project, issue types, fields per type, board, output — are the user's, and each is settled by a box in a file that `setup-choices.mjs` generates from the API's own answer. The agent fetches the options and records what the user did — never narrowing a list, summarising it, or marking one option as recommended before they have seen all of it. Only the starting state differs. Project, issue types, board and output arrive **unticked**, so a tick is the answer. A per-type fields file arrives **fully ticked**, because its options are the fields that issue type's screen shows — Jira's own answer to what the type holds — so keeping it all is the honest default and the user's job is to untick what they do not want. Either way their edit is the decision, and a fresh file is not one. Setup also records one thing that is not a tick file: which of this site's custom fields fills each metadata row (`project.metaFields`). Propose that mapping from the field list already on screen, then let the user confirm it. An unmapped row is written `—`, never guessed. **3. One part per call.** `fetch-issue.mjs` writes one document per run. Never reach for a single call that fetches everything: the parts are separate so each can be checked while it is still small enough to check. **4. Complete or failed, never partial.** Every comment and every worklog entry is written. Any list read from the API is paged to the server's own `total`, and the count is asserted before the file is written. **A file holding one page of a longer list is a failed pull, not a pull with a caveat.** Never read a list out of `fields=*all` — that response is capped, silently. The same rule decides when a pull is done: **the folder is the evidence, not the report.** An agent that says it finished, or that reports itself idle, has stated a hypothesis. Check the counts against Jira before believing it — and when many issues are in flight, stop the agent before reading its folder, because idle is reported while a write is still in flight. **5. Every document is versioned, and every JSON file is validated.** Markdown declares `schema:` in its frontmatter; JSON declares `$schema` as its first key. In `json` or `both` mode, `check-json.mjs` must exit clean on every JSON file before the pull is reported done. A file that fails validation, or carries no `$schema`, is a failed pull. A pulled Confluence page is markdown in every mode, so `check-markdown.mjs` covers it and `check-json.mjs` never runs on it. **6. The format pass changes formatting, never words.** Layout, headings, table syntax, list markers, unfilled boilerplate: all fair game. Wording, terminology, spelling, code, ids, dates, names, URLs: never. A ticket written in mixed languages, or with a typo in an acceptance criterion, stays exactly as written — that is what the ticket says. The one exception is image alt text, written from what the image shows. Detail in [`references/refactor-guide.md`](references/refactor-guide.md). Within that boundary the target is a document a person can read, not a document the checker accepts. `check-markdown.mjs` covers what someone thought to automate, so a clean exit is the floor: the agent still reads the file as the reader will and fixes what renders wrong or breaks the reading, whether or not a rule names it. A clean gate on a visibly badly formatted file is a failed part. **7. Write for someone who has never seen the issue or the code.** The reader cannot open Jira, has not read the repository, and does not know the project's shorthand. An unexplained ticket key, field name, or file path costs them a lookup they cannot make. Name what a thing is, once, in a short clause. ## Pick the workflow | The request is… | Workflow | |---|---| | "pull PROJ-123", "fetch this story", a pasted issue URL | [`workflows/pull.md`](workflows/pull.md) | | "sync sprint 62", "pull every bug in the backlog", any JQL or sprint | [`workflows/bulk-pull.md`](workflows/bulk-pull.md) | | No `.jira.config.json` exists yet, or a new issue type needs configuring | [`workflows/setup.md`](workflows/setup.md) | Setup runs once per project. Pull runs every time after that. ## The scripts All are Node 18+, zero dependencies, run from anywhere inside the workspace. | Script | Does | |---|---| | `config.mjs` | Finds, reads and validates `.jira.config.json`. `path`, `validate`, `instructions [TYPE]`, `types`, `type <TYPE>`, `meta`, `where [KEY]`, and `show` for the whole file — thousands of lines on a real project, so prefer a narrower one | | `jira-api.mjs` | Credentials, the one paged GET, and a read-only GraphQL query for what REST will not serve. `whoami`, `get`, `count`, `pages` | | `inspect.mjs` | Setup's read-only probes: `projects`, `issue-types`, `fields`, `sample`, `board`, `count-type` | | `setup-choices.mjs` | Setup's decision files. `generate`/`read <kind> [--type T] [--sample KEY]`, `status`. Project, issue types, board and output arrive unticked; a per-type fields file arrives fully ticked. `--force` re-generates over existing ticks. Exit 2 = nothing ticked, 3 = no file, 4 = would erase a tick | | `fetch-issue.mjs` | One part per run: `<KEY>` with `--part` set to `content`, `comments`, `tasks`, `worklogs` or `development` | | `fetch-confluence.mjs` | `--issue KEY` pulls the pages that issue links, into its folder | | `check-markdown.mjs` | 18 rendering and readability rules. Exit 1 while any remain | | `check-json.mjs` | Validates a JSON file against the schema its `$schema` names | Run any of them with `--help` for the full flag list. Three more files in `scripts/` are libraries with no command line, imported by the scripts above: `adf.mjs` converts Atlassian Document Format to markdown, `confluence-format.mjs` does the same for a wiki page, and `dev-status.mjs` reads the development panel. ## What the config holds `.jira.config.json` sits at the workspace root. It runs to thousands of lines, almost all of it `issueTypes`, so read it with `config.mjs types`, `config.mjs type <TYPE>`, `config.mjs meta` and `config.mjs where` rather than `config.mjs show`. | Block | Decides | |---|---|
From bmad-labs/skills, MIT.
More from bmad-labs/skills
- 0.647score
to-wiki
bmad-labs
Use when turning a transcribed source — a thesis, paper, standard, manual, or a folder of Markdown chapters under docs/references — into a Karpathy-style LLM…
SkillAFreshness: A★ 18Claude Code +9 - 0.647score
to-markdown
bmad-labs
Use when converting a PDF, scanned document, slide deck, or DOCX into Markdown that must stay faithful to the source — a paper, thesis, standard, datasheet…
SkillAFreshness: A★ 18Claude Code +9 - 0.647score
create-intent
bmad-labs
Use when turning Jira stories, tickets, or raw requirement notes into business intent documents (intent, functional and non-functional requirements, open…
SkillAFreshness: A★ 18Claude Code +9 - 0.622score
architecture-design
bmad-labs
Use when the user asks for a design package, designs folder, detailed design, solution design, or contracts of a system or service before it is built — C4…
SkillAFreshness: A★ 18Claude Code +9 - 0.607score
manual-testing
bmad-labs
Use when writing, reviewing, executing, or updating manual test cases or a test plan; when asked 'how should I test this'; when restructuring an existing test…
SkillBFreshness: B★ 18Claude Code +9 - 0.603score
typescript-clean-code
bmad-labs
Clean Code for TypeScript — code smell catalogs (Martin's per-line heuristics, Fowler's change-shape smells, TypeScript-native type smells), a linter-first…
SkillBFreshness: B★ 18Claude Code +9 - 0.603score
slide-maker
bmad-labs
Make impressive, on-brand presentation slides and decks end-to-end, for ANY design system.
SkillBFreshness: B★ 18Claude Code +9 - 0.557score
typescript-unit-testing
bmad-labs
Unit testing for TypeScript/NestJS projects using Jest, @golevelup/ts-jest (DeepMocked/createMock), and in-memory databases, with AAA structure.
SkillCFreshness: C★ 18Claude Code +9 - 0.557score
rca-report
bmad-labs
Use when investigating and documenting a production incident, outage, data corruption event, or post-mortem — guides evidence collection during the…
SkillCFreshness: C★ 18Claude Code +9 - 0.557score
typescript-e2e-testing
bmad-labs
E2E and integration testing for TypeScript/NestJS projects using Jest, supertest, and real infrastructure via Docker (Kafka, PostgreSQL, MongoDB, Redis) with…
SkillCFreshness: C★ 18Claude Code +9 - 0.557score
software-research
bmad-labs
Use when someone asks to research a software-engineering question through a verified, multi-perspective lens — "should we use X vs Y", "evaluate…
SkillCFreshness: C★ 18Claude Code +9 - 0.553score
architecture-viz-studio
bmad-labs
Build high-quality, animated, professional web pages that VISUALIZE software architecture, system design, data models, or a product idea — using Three.js (3D)…
SkillCFreshness: C★ 18Claude Code +9
Signals
- Stars
- 18
- Forks
- 4
- Open issues
- 0
- Last commit (this folder)
- Aug 27, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/bmad-labs/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from bmad-labs
- 0.647score
to-wiki
bmad-labs
Use when turning a transcribed source — a thesis, paper, standard, manual, or a folder of Markdown chapters under docs/references — into a Karpathy-style LLM…
SkillAFreshness: A★ 18Claude Code +9 - 0.647score
to-markdown
bmad-labs
Use when converting a PDF, scanned document, slide deck, or DOCX into Markdown that must stay faithful to the source — a paper, thesis, standard, datasheet…
SkillAFreshness: A★ 18Claude Code +9 - 0.647score
create-intent
bmad-labs
Use when turning Jira stories, tickets, or raw requirement notes into business intent documents (intent, functional and non-functional requirements, open…
SkillAFreshness: A★ 18Claude Code +9 - 0.622score
architecture-design
bmad-labs
Use when the user asks for a design package, designs folder, detailed design, solution design, or contracts of a system or service before it is built — C4…
SkillAFreshness: A★ 18Claude Code +9 - 0.607score
manual-testing
bmad-labs
Use when writing, reviewing, executing, or updating manual test cases or a test plan; when asked 'how should I test this'; when restructuring an existing test…
SkillBFreshness: B★ 18Claude Code +9 - 0.603score
slide-maker
bmad-labs
Make impressive, on-brand presentation slides and decks end-to-end, for ANY design system.
SkillBFreshness: B★ 18Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get jira-to-local running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
jira-to-local skill. Agent Mart. https://agentmart.dev/skills/bmad-labs-jira-to-local (last updated 2026-10-24)