Jira team status
Skill eugenelim/agent-ready-repo/packs/atlassian/.apm/skills/jira-team-status
Summarize a Jira team's work and backlog for sprint, stand-up, and team-status views — what the team can pick up next, and what is ready, blocked, in progress, unassigned, stale, recently changed, or needs product attention. Triggers on "show me the entire backlog", "what can the team pick up next", "what is blocked", "what is sitting unassigned", "what changed in this sprint", "give me a team status for stand-up", "which items need product attention", "team sprint status". Ask only for missing team or time scope; read-only unless the user explicitly asks to update an item; disclose coverage or truncation. Do NOT use to judge readiness in depth or improve weak stories / draft acceptance criteria (use jira-story-triage), to create an issue (use jira), to turn an epic into specs (use jira-brief-intake), to fix a defect (use jira-defect-flow), or for the local workspace queue (use workspace-status).From its SKILL.md
npx -y skills add eugenelim/agent-ready-repo --skill jira-team-statusAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 15 stars15 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
13.9 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it
Skill: jira-team-status
A read-only status view of a team's Jira work. It answers where the team's work stands and what to pick up next — organized by the dimensions people actually ask about: Ready to pull, In progress, Blocked, Unassigned, and Needs detail, plus a recently-changed note. Then it offers a pick-up hand-off so a team member can start delivery on a ready item.
Read-only by default. This skill does not judge item quality in depth or rewrite weak
stories — that is jira-story-triage. When the user wants to fix a weak item (draft
acceptance criteria, clarify the outcome), this skill routes them to
jira-story-triage by name. Its only write is a bare pass-through to the jira
skill's update-issue when the user explicitly asks to set a field, with the payload
confirmed first.
Cross-skill invocation — name, not path
Sibling and host skills are named by their name: field, never by path.
When this skill says "route to jira-story-triage", the agent dispatches the
skill registered under that name. If the skill is absent, the agent surfaces an
install hint rather than stopping.
Prerequisites
jira is installed and authenticated — a hard dependency.
Invoke: jira: check.
- Exit 0 → proceed.
- Exit 2 → tell the user to run
credential-setupthemselves and stop.
The "ready to pull" rule
"Ready to pull" is a defined rule, not a silent status = "To Do". An item is
ready to pull when all four hold:
- In the selected team scope — the project(s), board, sprint, or team field the user asked about.
- In an eligible backlog state — default: Jira
statusCategory = "To Do"(the stable category that spans Backlog / To Do / Selected for Development / Open across any instance). This deliberately excludes work alreadyIn ProgressorDone. Teams override the eligible statuses/fields — name explicit statuses (e.g. "Ready for Dev") and this rule uses them instead of the default. - No known unresolved blocker — see the blocker signal.
- Meets the team's story-readiness bar — the five-question readiness bar below.
When any clause cannot be determined for an item — the status doesn't map cleanly, the blocker state is unreadable, or readiness is ambiguous — the item is labelled needs confirmation. The skill never asserts an item is ready (or not ready) on a signal it could not read.
The five-question readiness bar
A story is actionable when all five are true: (Q1) it is a self-contained code/config/doc change — not discovery, design, or coordination work; (Q2) it names a reachable repo or file scope so the change can be located without a follow-up meeting; (Q3) its acceptance criteria are checkable by diff review alone — no "TBD", "coordinate with", "decide on", or "prototype"; (Q4) no human decision is needed mid-flight — no open design question, no external approval gate that cannot be confirmed before work starts; (Q5) it is right-sized for one PR — the scope is an enumerable set of files or PRs a single person or agent can produce without decomposing into sub-stories.
Q5 exists because Jira stories are a legacy delivery-capacity allocation mechanism: a story sized for a full sprint passes Q1–Q4 but cannot be handed to a single agent or engineer without decomposition.
The blocker signal
An item counts as Blocked when any of these is true:
- its Flagged / impediment field is set;
- it has an unresolved outward "is blocked by" issuelink;
- its status is in a team-declared blocked set (none by default).
When none of the three can be read from the fetched fields, the blocker state is undeterminable → the item is needs confirmation, not asserted blocked or unblocked.
Lifecycle
Stage 1 — Repo grounding
Detect git remote -v in the working directory. If a URL is found, label it
Invocation repo: <URL> — the repo the agent is running from.
If not in a git repo, offer:
"Optionally supply a repo URL or name — this improves story scope verification. Enter to skip."
Proceed with "Invocation repo: unknown" if the user declines.
Stage 2 — Intake
Ask only for what's missing to set scope; don't over-elicit. Accept:
- A Jira project key (or several, across projects).
- An optional sprint (default:
sprint in openSprints()), a team name, or a JQL filter to narrow. - Whole-backlog scope: when the user asks for the entire backlog ("show me the
entire ATLAS backlog"), drop the
sprint in openSprints()default and query the project's open backlog (statusCategory != Done), not just the current sprint.
Fetch the fields the status dimensions need — status (and its category), assignee, last-updated, blocker signals — in one call:
jira: search "project = PROJ AND sprint in openSprints() AND statusCategory != Done"
--fields "summary,description,issuetype,status,statusCategory,assignee,updated,priority,labels,issuelinks,customfield_*"
--limit 100
customfield_* captures story points and the Flagged/impediment field (names vary by
instance). Disclose coverage: if the result is truncated at --limit, say so and
report the total.
Stage 3 — Classify each item into a status dimension
Assign each item to exactly one primary dimension, by this precedence:
- Blocked — the blocker signal is present.
- In progress —
statusCategory = "In Progress"(and not blocked). - Needs detail — in an eligible backlog state but either unscoreable (empty /
image-only / discovery issuetype) or it fails the readiness bar on content
(Q1/Q2/Q3, or Q5 too-large, or Q4 open design question). This is the coarse
"needs product attention" bucket;
jira-story-triageis the tool that breaks down why per item and fixes it. - Ready to pull — satisfies the ready-to-pull rule (eligible state + no blocker + passes the bar).
Undeterminable clauses never default an item into Ready to pull. Route explicitly:
- Blocker clause undeterminable (Flagged field / issuelinks not readable) → surface
in §3 Blocked, tagged
needs confirmation. - A readiness-bar clause undeterminable (content ambiguous) → surface in §5 Needs
detail, tagged
needs confirmation. - Status doesn't map to a known category → surface in §5 Needs detail, tagged
needs confirmation.
An item reaches §1 Ready to pull only when all four ready-to-pull clauses are affirmatively true — never when one is merely not known to be false.
Cross-cutting views (an item may appear here and in its primary dimension):
- Unassigned — every in-scope item with no
assignee. (Ready-to-pull items are expected to be unassigned; the value is spotting in-progress or stuck items nobody owns.) - Recently changed — items whose
updatedfalls within the window (sprint start, or the last 7 days for a backlog scope), most-recent first — answers "what changed?". - Stale — a
⚠ stalemarker on any In-progress or Ready item whoseupdatedis older than the staleness threshold (default 14 days; team-overridable).
Stage 4 — Complexity (Ready-to-pull items only)
| Signal | Quick | Standard | Involved |
|---|---|---|---|
| Story-point field | ≤ 2 pts | 3–5 pts | > 5 pts |
| Description length (fallback) | ≤ 100 words | 101–200 words | > 200 words |
| AC count (secondary fallback) | ≤ 2 ACs | 3–5 ACs | > 5 ACs |
Stage 5 — Output: the status snapshot
Emit these sections in order, always. If a section has no items, include its header with "None in this scope."
§1 — Ready to pull — grouped by complexity
Items that satisfy the ready-to-pull rule. Grouped Quick, then Standard, then Involved, so team members self-select by bandwidth.
Table columns: Key | Summary | Priority | Complexity | Updated (⚠ if stale) | Invocation repo match?
"Invocation repo match?" is Yes if Q2 found the invocation repo URL or name in the
item's description, Unknown otherwise. The Updated column carries the ⚠ stale
marker for a ready item untouched past the staleness threshold. Mark any
needs confirmation items explicitly.
Batching note (optional): if two or more ready items have distinct repo scopes and no stated dependency between them, add: "Can run concurrently: PROJ-101, PROJ-103."
§2 — In progress
Table columns: Key | Summary | Assignee | Updated (⚠ if stale)
§3 — Blocked
Table columns: Key | Summary | Blocker (which signal) | Owner hint
§4 — Unassigned
Every in-scope item with no assignee. Table columns:
Key | Summary | Primary dimension | Status
§5 — Needs detail (product attention)
Backlog items that are not ready — unscoreable or failing the bar on content.
Table columns: Key | Summary | What's missing (coarse) | Fix with
The "Fix with" cell points to jira-story-triage for the item-by-item reasons and a
draft fix.
Recently changed: a compact list — PROJ-108 (2h ago), PROJ-101 (yesterday), … —
top items by updated. Omit if the scope has no recent changes.
Summary line:
Team status: <total> items. Ready to pull: <r> (Quick <q> / Std <s> / Inv <i>).
In progress: <p>. Blocked: <b>. Unassigned: <u>. Needs detail: <d>. Stale: <st>.
Scope: <JQL>. Coverage: <all N | truncated at limit — total M>. Invocation repo: <URL or unknown>.
Stage 6 — Pick-up hand-off (read-only)
After the snapshot, offer a pick-up. Read-only routing — this skill starts no rewrite of its own.
Option A — Start delivery (if §1 has items):
"Ready to start delivery? Suggested:
<highest-priority Quick item>—<one-line summary>. [yes / pick another / skip]"
yes→ issuetype is Bug/Defect? Route tojira-defect-flowby name. Otherwise offer to open anew-specsession scoped to this item. (Surface an install hint if the target skill is absent.)pick another→ list §1 items by complexity group; user picks.skip→ end gracefully.
Option B — Improve an item that needs detail (if §5 has items):
"Want to make a not-ready item actionable — draft acceptance criteria, clarify the outcome? Suggested:
<highest-priority §5 item>. [yes / pick another / skip]"
yes→ route tojira-story-triageby name, scoped to that item (it explains the reason and drafts the fix with write-after-approval). Surface an install hint ifjira-story-triageis absent; in the meantime give the item key.pick another/skip→ behave as above.
Explicit update escape hatch. If the user explicitly asks to set a specific field
on a specific item ("set PROJ-101's priority to High"), this skill may make a bare
pass-through to jira: update-issue — show the exact payload, get a yes, then write.
It never runs a multi-step collaborative rewrite; that is jira-story-triage's job.
If the user declines both options, end gracefully with a note of what they could do next.
Don't
- Don't rewrite or improve a story's content here — route improvement to
jira-story-triage. This skill is a read-only status view plus routing. - Don't run a multi-step collaborative rewrite or draft acceptance criteria yourself;
the only write is the confirmed bare pass-through
update-issuein stage 6. - Don't assert an item is ready, blocked, or not — or hide uncertainty — when the signal can't be read. Label it needs confirmation.
- Don't conflate this skill with the local workspace-queue / session-orientation skill. This skill is Jira-only; it reads external Jira project data.
- Don't read or write any local project state; this skill is Jira-only.
- Don't invoke
jira-story-triage,jira-defect-flow, ornew-specwithout checking whether they are installed (by-name dispatch probe); surface an install hint if absent. - Don't hardcode a sibling skill by path; invoke by name.
Edge cases
- No ready-to-pull items (§1 empty). Still emit §2–§5. Pick-up offers only Option B
(improve a §5 item). Note: "No items ready to pull in this scope — the fastest path is
to make a §5 item actionable (
jira-story-triage)." - Everything is ready to pull. Emit §1 with full complexity grouping and offer the delivery pick-up directly; other sections show "None in this scope."
- Blocker signal unreadable. If the Flagged field and issuelinks aren't in the response, note "blocker state unverified for this scope" and mark affected items needs confirmation rather than assuming unblocked.
jira-story-triage/jira-defect-flow/new-specabsent. Route by name; harness reports it absent; surface: "Install the<pack>pack to enable this hand-off. In the meantime, here is the item key:<KEY>."- Truncated result. Always disclose in the summary's Coverage field; offer to narrow scope or paginate.
Examples
What ships with it: 5 files
49.7 KB alongside SKILL.md, 1 of them executable
evals/
- eval_queries.json3.4 KB
- evals.json16.5 KB
references/
- examples.md7.2 KB
tests/
- test_contract.pyruns18.8 KB
- manifest.json3.8 KB