jira-best-practices — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited jira-best-practices (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Primary reader: an agent helping a user — one that acts on Jira through tools (the jira CLI, or the `mcp-atlassian` MCP server) and advises the user on how to use Jira well: what an issue is, where work goes, which fields/statuses/workflows to keep, and how to make Jira stop being a dread. This is the judgment layer above those execution tools — it decides what should change and how work should be structured; the tools do the how.
This skill is instance-agnostic and organisation-adaptive. It never assumes a team's hierarchy names, workflow, or language — it shows how to discover the org's actual conventions and reason within them. It is self-hosted-first: the defaults below are for Jira Data Center (see the Cloud-vs-DC guard).
An agent here almost always acts through one of two issue-level, Data-Center-capable tools — and that boundary determines what to do versus what to advise:
jira CLI, non-interactive automation contract, JQL, ADF. Use it for execution mechanics, flags, and auth.jira_search (JQL), jira_get_issue, jira_create_issue, jira_update_issue, jira_transition_issue, jira_get_transitions, jira_search_fields, jira_get_link_types, jira_get_project_components, jira_link_to_epic, jira_create_issue_link, jira_add_comment, jira_batch_create_issues, agile board/sprint reads. Has READ_ONLY_MODE and ENABLED_TOOLS/TOOLSETS gating.What an agent DOES directly (both tools support it): discover the instance's real config; create issues at the correct hierarchy level with the right type/fields; transition by transition id; link to epic / create issue links; run JQL anchored on language-independent keys; add comments; do safe bulk hygiene via update/transition; and, where the org permits, design/trim Automation for Jira rules.
What an agent ADVISES the human to do (secondary — neither tool exposes it): all schema/admin config — screens & screen schemes, field configurations, workflows, issue types, custom fields. For these, hand the user the exact, minimal steps (this skill's reference files carry the DC click-paths) rather than attempting them via a tool. Likewise, UI/board guidance is secondary — surfaced mainly to help a user get a cleaner board or view.
So a good response usually = (a) the correct action taken via jira-cli/mcp-atlassian, plus (b) a crisp, copy-pasteable recommendation for anything that needs an admin.
Most Jira dread is a usage problem, not a tool problem. The teams that succeed are the ones where Jira encompasses the minimum process possible. So, every time:
As of June 2026, every headline "new Jira" change is Cloud-only and is NOT in Data Center. A self-hosted team lives in a different vocabulary. Get this wrong and the advice is unusable.
| Concept | Jira Cloud (2026) | Jira Data Center 10.3 / 11.x (this skill's default) |
|---|---|---|
| Product name | one unified "Jira" | "Jira Software" (+ Jira Core base, JSM add-on) |
| Work nouns | "work item", "Space" | "issue", "project" |
| Epic↔child field | single unified `Parent` field | `Epic Link` and `Parent Link` — two separate, independently-acting fields (JPOSERVER-4430 not implemented in DC); Epic Link ignores the Advanced Roadmaps hierarchy |
| AI | Rovo agents / Atlassian Intelligence built in | none native — AI only via Cloud connectors that sync DC data into Cloud. Don't depend on AI. |
| Non-software views | native List / Calendar / Timeline | Marketplace apps only (Structure, BigPicture, Calendar for Jira) — not native |
| Forms (intake) | native Forms / Proforma | not native on plain DC — use field configurations + minimal screens instead |
DC status as of 2026-06: latest 11.3.7 (2026-06-03); supported LTS lines 11.3 (→Dec 2027) and 10.3 (→Dec 2026). DC is on a sunset path (sale to new customers ended 2026-03-30; read-only EOL 2029-03-28) — note it honestly if asked, but this skill is about using today's DC well, not migrating.
If jira serverinfo (or the instance) shows Cloud, flag that the dialect differs and adapt; otherwise assume DC.
Default Jira is exactly three base tiers. Internalise this shape and the parentage rules:
Epic ← the CONTAINER level (a large deliverable that opens and closes)
│
Story / Task / Bug ← the DELIVERABLE level — all PEERS on one level (NOT nested)
│
Sub-task ← the BREAKDOWN level (a step of one deliverable)The misconceptions to correct on sight:
| Myth | Reality |
|---|---|
| "A Story is bigger than a Task / sits above it." | They're peers. A Story cannot parent a Task and vice-versa. (The #1 error, esp. from Azure DevOps migrants.) |
| "An Epic is just a big Story." | An Epic is a container that moves To Do→In Progress→Done. If it never closes, it's a Label or Component, not an Epic. |
| "Sub-tasks are just small tasks." | Size is irrelevant. Sub-tasks are constrained: not on boards by default, don't count independently in velocity, locked to the parent's project, can't be in a different sprint than the parent. Use only for parallel work, per-step time tracking, or board visibility — else use a checklist. |
| "Story vs Task is about size." | Story = user/customer value; Task = team/operational/technical need. Size doesn't decide it. |
The decision heuristic (works beyond software):
Adapt to the org's own standard (the key move). Organisations map these levels to different names and frameworks — both are legitimate and must not be "corrected":
So always reason in role terms first — "the container level", "the deliverable level", "the breakdown level" — then discover and use the org's configured issue-type names for those roles. When a team asks "is this an epic or a story?", the honest answer is: "By role it's a [container/deliverable], which on this instance is called '[their name]'." Never assume the words "Epic" and "Story" map to the standard roles on a given instance — verify.
For the full hierarchy treatment (non-software reinterpretation, the DC Epic Link/Parent Link workaround, Advanced Roadmaps level setup), read `references/hierarchy.md`.
The hierarchy call above is vertical (what level is one item). A large, multi-week effort needs the horizontal call too: how many issues, at what grain, in what order. The model is domain-neutral — one shape fits a software feature, an infra migration, a data cutover, or a business campaign.
blocks / is blocked by encodes sequence; parent/child does not. A prerequisite whose omission is expensive must be a link, not a buried checklist line; a dependency shared by all units → one gating task, not N links.blocks links, already-fine→nothing. Severity decides 1:1 vs grouped.jira_batch_create_issues can't set epic/parent links inline (silently dropped) → scaffold multi-pass (create epic → batch children → jira_link_to_epic each → jira_create_issue_link per blocks edge). No upsert: tag every issue with a deterministic label and search-before-create to stay idempotent; run read-only by default.Full treatment — the WBS spine, the grain tests, the three axes, the per-domain table, DC progress-visibility, and the agent scaffolding sequence — is in `references/work-modeling.md`.
A recommendation that hardcodes "Bug", "Done", or "High" is wrong on the next instance — and doubly wrong on a non-English one, where the configured value might be "Fehler", "Erledigt", "Hoch". Discover the org's real values, and anchor logic on language-independent keys. (Fetch these via jira-cli or the mcp-atlassian discovery tools — jira_get_transitions, jira_search_fields, jira_get_link_types, jira_get_project_components, jira_get_all_projects; the full endpoint↔tool mapping is in references/multilingual-and-discovery.md. This skill says what to look at and which key to anchor on.)
| To learn… | DC REST v2 | Language-safe anchor |
|---|---|---|
Issue types (+ subtask flag, hierarchy) | GET /rest/api/2/issuetype | numeric id |
| Statuses and their category | GET /rest/api/2/status | `statusCategory.key` — fixed enum new / indeterminate / done / undefined (→ To Do / In Progress / Done) |
| Priorities / resolutions | GET /rest/api/2/priority, /resolution | id |
| Link types | GET /rest/api/2/issueLinkType | id |
| Components (per project) | GET /rest/api/2/project/{key}/components | id |
| Fields (system + custom) | GET /rest/api/2/field | `untranslatedName`, `clauseNames` incl. `cf[NNNNN]` |
| Valid transitions from current status | GET /rest/api/2/issue/{key}/transitions | transition `id` (act by id, not localized name) |
| What a project actually allows | GET /issue/createmeta, /issue/{key}/editmeta | reflects real config, not English defaults |
The two rules that prevent localized-value bugs:
statusCategory = Done over status = "Done"; reference custom fields by cf[NNNNN]; transition by id. These survive any UI language and any per-user translation.X-Force-Accept-Language is Cloud-only). To get stable canonical strings, use a service account whose profile language is set to the canonical language, and one with admin rights (permissions decide which statuses are even visible — a separate axis from language).Full discovery recipes, the non-English search/indexing caveats (CJK, umlaut+wildcard, Indexing Language = "Other"), and the JQL canonical-vs-translated asymmetries are in `references/multilingual-and-discovery.md`.
The "filling a ticket is a chore" dread is almost always too many fields on the Create screen. The fixes, highest-leverage first:
Concrete DC admin click-paths (Screen Schemes, Field Configuration schemes, the clear-Resolution-on-reopen post-function) are in `references/lean-config.md`.
[Project] - [Trigger] - [Action].Automation recipes, service limits, the anti-chain-fire rules, and board WIP/swimlane/quick-filter mechanics are in `references/workflows-automation.md`.
Jira is not just for developers — but its software defaults (sprints, story points, velocity, "Bug") are exactly what makes non-software teams dread it. De-software-ify:
More non-software patterns and the workflow-design workshop method: `references/non-software.md`.
Match the symptom, name the cause, apply the smallest fix:
| Symptom the team reports | Likely root cause | Lean fix |
|---|---|---|
| "Filling in a ticket takes forever" | Too many required/optional fields on Create | Minimum-viable Create screen; make fields optional; 4-question field test |
| "Jira is slow" | Custom-field sprawl (esp. global-context) | Audit with Instance Optimizer; scope/delete fields; aim <800 |
| "We never know if something's actually done" | "Done-ness" modeled as statuses; Resolution unset/misused | One/two terminal statuses + Resolution set on close; clear on reopen |
| "Our workflow is a maze" | Status zoo / per-project workflow drift | Cut to 6–9 statuses; shared workflow scheme; consider Simplified Workflow |
| "Standups are status theater / reports are stale" | Hand-maintained status outside Jira | "Update the board, not a doc"; live dashboards off shared filters |
| "Is this an epic or a story?" (recurring) | Hierarchy defined by name, not role; no shared standard | Teach role-based levels; map to the org's configured names; write it down once |
| "A weeks-long effort is impossible to track / I don't know how to register it" | No decomposition method — one mega-ticket, or per-unit sprawl, with no prep/verify phase or ordering | Epic → Phase-0 assessment → waves/slices; blocks links for order; grain rule (issue/sub-task/checklist/nothing); work-modeling.md |
| "Different teams use epic/story differently" | No deliberate standard, or a legitimately different framework | Don't force uniformity; document each unit's role-mapping; align only where cross-team reporting needs it |
| "We're drowning in tickets / stale backlog" | No WIP discipline; tickets that generate no value | WIP limits; delete value-less tickets; backlog hygiene; fewer/larger tickets |
| "Automation keeps doing weird things / spamming" | Rule sprawl, chain-firing, broad triggers | Inventory & prune rules; scope + filter early; kill generic-trigger chains |
| "Non-English issues/statuses break our JQL/automation" | Matching localized names instead of keys | Anchor on statusCategory/IDs/cf[NNNNN]; service-account locale for canonical strings |
| "A team hates being forced into Jira" | Software process imposed on non-software work | De-software-ify (Kanban, no points); fit vocabulary; let the team own its process |
blocks links for order and a checklist for repeated units (work-modeling.md).| File | Read when… |
|---|---|
references/hierarchy.md | Deciding epic/story/task/sub-task; setting/adapting an org standard; Initiative levels; the DC Epic Link/Parent Link gotcha; non-software hierarchy |
references/work-modeling.md | Breaking a large multi-week effort into a legible, ordered issue set — the grain rule (issue/sub-task/checklist/nothing), the three decomposition axes, dependency-link ordering, assessment→issue-set, per-domain generality, agent scaffolding |
references/lean-config.md | De-bloating — custom-field guardrail & audit, minimum-viable Create screen (screen schemes + field configs), status-vs-resolution mechanics, issue-type minimalism |
references/workflows-automation.md | Simplifying workflows, Automation-for-Jira recipes + sprawl governance, board WIP/swimlanes/quick filters, "update the board not a doc" |
references/non-software.md | Setting up Jira for ops / engineering / business teams — Kanban over Scrum, no story points, recurring work, lean rollout |
references/multilingual-and-discovery.md | Non-English instances — discovery recipe, language-independent anchors, JQL canonical-vs-translated, search/indexing (CJK, umlaut), service-account locale |
references/sources.md | Verifying or freshening a claim — per-row source + tier + what it supports |
Execution: to carry out any of this (creating issues at the right level, transitioning by id, JQL, links, bulk edits, ADF), act through `jira-cli` (sibling skill) or the `mcp-atlassian` MCP server — both Data-Center-capable, both issue-level. This skill decides what and how to structure work; those tools do the how. Anything needing schema/admin (screens, fields, workflows, types) → hand the user the exact steps; neither tool can do it.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.