[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-atlassian-jira-sprint-dashboard":3,"mdc--y3yvx8-key":54,"related-org-atlassian-jira-sprint-dashboard":1610,"related-repo-atlassian-jira-sprint-dashboard":1781},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":49,"sourceUrl":52,"mdContent":53},"jira-sprint-dashboard","create Jira sprint dashboards","Create a visual Jira sprint dashboard from Jira project, space, sprint, board, filter, JQL, work item keys, or Jira URL data. Use when the user asks for a Jira sprint dashboard, standup dashboard, sprint review, delivery review, engineering manager dashboard, WIP review, planning view, closeout view, or a visual snapshot of Jira work that is more useful than a flat report. Use the richest dashboard format supported by the current agent, such as Cursor Canvas, an interactive artifact, HTML, or Markdown.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"atlassian","Atlassian","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fatlassian.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Dashboards","dashboards","tag",{"name":17,"slug":18,"type":15},"Jira","jira",{"name":20,"slug":21,"type":15},"Sprint Planning","sprint-planning",{"name":23,"slug":24,"type":15},"Agile","agile",848,"https:\u002F\u002Fgithub.com\u002Fatlassian\u002Fatlassian-mcp-server","2026-07-12T07:58:41.031798",null,107,[31,32,8,33,34,35,36,37,38,39,40,18,41,42,43,44,45,46,47,48],"ai","ai-agents","bitbucket","chatgpt","claude","compass","confluence","copilot","cursor","developer-tools","jira-service-management","llm","mcp","mcp-server","model-context-protocol","oauth","rovo","vscode",{"repoUrl":26,"stars":25,"forks":29,"topics":50,"description":51},[31,32,8,33,34,35,36,37,38,39,40,18,41,42,43,44,45,46,47,48],"Official remote MCP server for Atlassian. Securely connect Jira, Confluence, Jira Service Management, Bitbucket, and Compass to Claude, ChatGPT, Cursor, VS Code, and other AI tools using OAuth 2.1 or API tokens.","https:\u002F\u002Fgithub.com\u002Fatlassian\u002Fatlassian-mcp-server\u002Ftree\u002FHEAD\u002Fskills\u002Fjira-sprint-dashboard-canvas","---\nname: jira-sprint-dashboard\ndescription: >-\n  Create a visual Jira sprint dashboard from Jira project, space, sprint, board,\n  filter, JQL, work item keys, or Jira URL data. Use when the user asks for a\n  Jira sprint dashboard, standup dashboard, sprint review, delivery review,\n  engineering manager dashboard, WIP review, planning view, closeout view, or a\n  visual snapshot of Jira work that is more useful than a flat report. Use the\n  richest dashboard format supported by the current agent, such as Cursor\n  Canvas, an interactive artifact, HTML, or Markdown.\n---\n\n# Jira Sprint Dashboard\n\nBuild a focused dashboard that helps an engineering manager, tech lead, or\nsenior engineer see current Jira work quickly enough to decide what needs\nattention. The output is a dashboard, not a prose report and not a generic\nhealth score.\n\nThis skill is read-only by default. Do not create, update, transition, assign,\nor comment on Jira work items unless the user explicitly asks for a write action\nafter reviewing the dashboard.\n\n## Output Mode\n\nUse the richest dashboard renderer supported by the current environment. The\ndashboard content, claims, counts, and source appendix must stay consistent\nacross renderers; only the presentation changes.\n\nChoose the renderer in this order:\n\n1. Cursor Canvas, if running in Cursor with Canvas support.\n2. Interactive artifact, if the current agent supports HTML, React, or similar\n   artifact output.\n3. Static HTML file, if file creation is available and useful.\n4. Markdown dashboard, if no richer visual renderer is available.\n5. Structured JSON plus concise summary, only if visual rendering is impossible.\n\nDo not mention that Cursor Canvas is unavailable unless the user specifically\nasked for Cursor Canvas. If the user asked for a dashboard generally, use the\nbest available renderer without apologizing for the environment.\n\n## Cursor Canvas Renderer\n\nUse this section only when running in Cursor with Canvas support.\n\nRead `~\u002F.cursor\u002Fskills-cursor\u002Fcanvas\u002FSKILL.md` before writing canvas code. If\nyou need exact exports or prop shapes, read the files in\n`~\u002F.cursor\u002Fskills-cursor\u002Fcanvas\u002Fsdk\u002F`.\n\nCanvas constraints:\n\n- Create one `.canvas.tsx` file in the Cursor canvases directory.\n- Import only from `cursor\u002Fcanvas`. Do not import `react`, `CSSProperties`,\n  `JSX`, Atlaskit, or other packages.\n- Embed Jira data inline in the canvas; do not fetch from the canvas.\n- Prefer Canvas primitives such as `Stack`, `Grid`, `Card`, `Stat`, `Table`,\n  `Pill`, `Callout`, `UsageBar`, `BarChart`, `LineChart`, `PieChart`, and `Code`\n  over raw HTML.\n- Use `useHostTheme()` for custom styles. Do not hardcode hex colors, gradients,\n  box shadows, ADS variables, unsupported CSS frameworks, or `@atlaskit\u002F*`.\n- Do not publish or share the canvas unless the user asks.\n\n## Portable Renderers\n\nUse this section when Cursor Canvas is unavailable.\n\nFor an interactive artifact renderer:\n\n- Render the same dashboard model as an interactive artifact.\n- Prefer tables, compact charts, stat rows, and collapsible source details.\n- Keep interactions lightweight: filtering, expanding details, or switching\n  chart\u002Ftable views is fine; do not require live Jira fetching from the artifact.\n\nFor static HTML:\n\n- Create a self-contained dashboard file with embedded data.\n- Use responsive layout, accessible tables, and simple chart-like visuals when\n  chart libraries are unavailable.\n- Do not fetch Jira data from the HTML file.\n\nFor Markdown:\n\n- Preserve the dashboard order.\n- Use compact tables for stats, owner load, risks, highest-priority work, and\n  source appendix.\n- Use textual chart substitutes only when they remain honest, such as counts,\n  percentages, and simple bars.\n- Avoid turning the output into a long prose report.\n\nFor JSON fallback:\n\n- Return the normalized dashboard model.\n- Include a short human-readable summary with the highest-signal risks and the\n  source scope.\n\n## Get The Scope\n\nDo not guess the Jira scope. If the user does not provide a project key, space\nkey, board, sprint, filter, JQL, work item keys, or Jira URL, stop and ask for\none. A dashboard from a random visible project or guessed team context is worse\nthan no dashboard.\n\nIf the user gives a project or space key but no sprint, board, or filter, start\nwith the Jira JQL `project` field and the user's key:\n\n```jql\nproject = \"SPACE_KEY\" AND sprint in openSprints() ORDER BY Rank ASC\n```\n\nIf the open sprint result is empty, stale, or misleading, switch to snapshot\nmode and say so in a compact caveat below the top bar:\n\n```jql\nproject = \"SPACE_KEY\" AND statusCategory != Done ORDER BY priority DESC, updated ASC\nproject = \"SPACE_KEY\" AND updated >= -60d ORDER BY updated DESC\n```\n\nUse a 60-day recent movement window by default unless the user asks for another\nperiod.\n\n## Query Jira\n\nUse read-only Jira search. Request only fields needed for the dashboard and\ntolerate missing fields.\n\nUseful fields: `key`, `summary`, `status`, `statusCategory`, `assignee`,\n`priority`, `issuetype`, `created`, `updated`, `resolutiondate`, `duedate`,\n`parent`, `issuelinks`, `labels`, `components`, `fixVersions`, `sprint`, and any\navailable estimate\u002Fstory point field.\n\nStart with `maxResults: 100`. For complete sprint, board, or filter dashboards,\npaginate until the scope is complete or too large for useful work-item-level\nrendering.\n\nDefault to one complete paginated scope query. Derive ordinary dashboard signals\nlocally from the returned work item set instead of issuing separate JQL calls for\neach signal.\n\nDerive these locally when the scope query returned the required fields:\n\n- Recently completed from `statusCategory = Done` and `resolutiondate`.\n- Aging unfinished from `statusCategory != Done` and `updated`.\n- Unowned unfinished from `statusCategory != Done` and empty `assignee`.\n- High-priority unfinished from `statusCategory != Done` and `priority`.\n- Status or label blockers from `status`, `statusCategory`, and `labels`.\n- Owner load, stale work, due date risk, and planning gaps from the normalized\n  scope dataset.\n\nUse targeted follow-up queries only when they are needed to support a visible\nclaim that cannot be derived safely from the scope data, when the scope is too\nlarge for useful local processing, or when the user asks for an audit-style\ndashboard with exact evidence per signal.\n\nRule of thumb:\n\n- Small or medium sprint dashboard: prefer one full paginated scope query, with\n  at most one targeted blocker-text or dependency-status follow-up when needed.\n- Large scope dashboard: use narrower follow-up queries when pulling and\n  processing the full work-item set would be slow or low-value.\n- Evidence-heavy review: multiple focused queries are acceptable when the exact\n  JQL evidence matters more than minimizing calls.\n\nExamples of targeted follow-up queries, only when justified:\n\n- Recently completed: `\u003Cscope> AND statusCategory = Done ORDER BY resolutiondate DESC`\n- Aging unfinished: `\u003Cscope> AND statusCategory != Done AND updated \u003C= -3d ORDER BY updated ASC`\n- Unowned unfinished: `\u003Cscope> AND statusCategory != Done AND assignee is EMPTY ORDER BY priority DESC, updated ASC`\n- High-priority unfinished: `\u003Cscope> AND statusCategory != Done AND priority in (Highest, High) ORDER BY priority DESC, updated ASC`\n- Blocked signal: `\u003Cscope> AND statusCategory != Done AND (status = Blocked OR text ~ \"blocked\" OR labels in (blocked, blocker)) ORDER BY priority DESC, updated ASC`\n\nDo not make negative claims such as \"no blockers\" or \"no dependencies\" unless\nthe source appendix shows the query or returned field coverage that supports the\nclaim. If only status and labels were checked for blockers, say that no\nstatus\u002Flabel blockers were found rather than claiming there are no blockers. If\na signal was not checked, say so.\n\nFor derived signals, cite the base scope JQL and field coverage in the source\nappendix instead of inventing separate support queries. Include additional JQL\nonly for targeted follow-up queries that were actually run.\n\nFor work item links (`issuelinks`), fetch linked work item status\u002Fcategory when\npossible. If linked details are unavailable, show dependency status as unknown\nrather than resolved.\n\n## Normalize\n\nBefore designing the output, create a compact renderer-independent work item\nmodel with:\n\n- Key, URL, summary, type, status, status category, priority\n- Assignee display name or `Unassigned`\n- Owner status as `active`, `inactive`, `unknown`, or `unassigned`\n- Created age, updated age, resolution age when done, due date distance\n- Parent\u002Fepic\u002Fworkstream, sprint, estimate, components, versions, labels\n- Linked work item keys, direction, link type, and linked status when available\n\nDerived signals should stay explainable from Jira facts: done, active, not\nstarted, stale, very stale, blocked, unowned, inactive owner, time-sensitive,\nsupport-impacting, cross-space dependency, and missing planning data. Mark weak\ntext-only signals as inferred.\n\n## Dashboard Model\n\nCreate a dashboard model before rendering. Every renderer should use this same\nmodel.\n\nInclude:\n\n- Context metadata: title, project or space, sprint, board, filter, JQL, window,\n  query timestamp, and mode.\n- Four top stats: committed or total scope, done or completed, active or in\n  progress, and needs attention.\n- Scope caveat, only when sprint data is missing, mixed, stale, or blended with\n  recent project movement.\n- Optional capacity or commitment segments, only when real data exists.\n- Optional chart data, only when categories, values, units, and time ranges are\n  available.\n- Owner load and gaps.\n- Risk and attention items.\n- Highest-priority work item table.\n- Recently completed work.\n- Source appendix with exact JQL, field coverage, assumptions, and the\n  composition of `Needs attention`.\n\nDo not invent data to fill the model. Empty or unsupported sections should be\nomitted.\n\n## Dashboard Shape\n\nKeep the visible dashboard simple and deterministic. When the data exists,\nbroadly follow this order:\n\n1. **Compact context header**\n   - Show title plus project, space, board, sprint, or window metadata.\n   - Keep it short. Do not put queries, field coverage, or executive-summary\n     prose at the top.\n\n2. **Four-stat top bar**\n   - Show exactly four stat values.\n   - Default to committed\u002Ftotal scope, done\u002Fcompleted, active\u002Fin progress, and\n     needs attention.\n   - Use work item counts when story points are unavailable.\n   - `Needs attention` should combine the highest-signal risks: blocked, stale,\n     unassigned, time-sensitive, or unresolved linked work.\n   - Put secondary counts below the fold only when they change the readout.\n\n3. **Scope caveat, only when needed**\n   - Use one compact caveat below the top bar when sprint data is missing,\n     mixed, stale, or blended with recent project movement.\n   - Keep it to 1 to 2 short sentences.\n\n4. **Capacity or commitment bar**\n   - Render a capacity or commitment visual only when capacity, commitment, or\n     allocation segment data is available.\n   - Skip it rather than inventing capacity, segment, or buffer values.\n\n5. **Sprint charts**\n   - If available, render remaining work over time as a line chart.\n   - Beside it, render status distribution as a pie chart or compact status\n     visual.\n   - Below those, render resolved\u002Fcompleted per working day as a bar chart.\n   - Skip any chart whose categories, values, units, or time range are missing.\n     Never render placeholder, sample, empty, or guessed charts.\n\n6. **Owner load and gaps**\n   - Show active, stale, blocked, support-impacting, and done counts by assignee.\n   - Include unassigned, inactive-owner, and unknown-owner-status buckets.\n   - Keep it compact; prefer a small table or bar chart over per-owner cards.\n\n7. **Risk and attention**\n   - Place this below owner load.\n   - Include only the work items most likely to need manager or lead attention.\n   - For each item, show key, reason, evidence, owner, age, and next question.\n   - Use a callout or highlighted row for the single highest delivery risk when\n     one stands out.\n\n8. **Highest-priority work item table**\n   - Include a compact table of top sprint work items or top attention items.\n   - Do not render every low-signal work item by default.\n\n9. **Recently completed and optional detail**\n   - If recently completed work exists, put it in a collapsed section or compact\n     table below the main readout.\n   - Workstream grouping and dependencies should appear only when they change\n     what the viewer should inspect next.\n   - Keep dependencies to unresolved or unknown-status linked work by default.\n\n10. **Source appendix**\n    - Put exact JQL, query timestamps, field coverage, assumptions, and the\n      composition of `Needs attention` at the bottom.\n\nIf the full data set is unavailable, preserve the same broad order and omit the\nsections or charts that cannot be rendered honestly.\n\n## Content And Style\n\n- Use charts and tables where they beat paragraphs.\n- Follow the reference layout order when the data supports it; skip unsupported\n  charts instead of changing the whole page shape.\n- Keep work item summaries short; avoid full descriptions unless a short excerpt\n  is needed to explain impact.\n- Tie every recommendation or next question to work item keys or aggregate\n  counts.\n- Separate Jira facts from derived or inferred signals.\n- Use semantic tones where the renderer supports them: `success` for done,\n  `warning` for stale\u002Fdeadline risk, `danger` for blocked\u002Foverdue\u002Fsevere risk,\n  `info` for caveats\u002Flinked work, and `neutral` for low-signal facts.\n- Pair color with labels. Prefer work item key links over large buttons.\n- Keep the first screen focused on status and attention, not process notes.\n\n## Renderer-Specific Style\n\nFor Cursor Canvas:\n\n- Use Canvas components and host theme styles.\n- Keep the top area compact: context header followed by exactly four stats.\n- Prefer Canvas tables and charts over custom layout code.\n\nFor interactive artifacts or static HTML:\n\n- Use a restrained dashboard layout with compact cards, tables, and simple\n  charts.\n- Keep text readable on mobile and desktop.\n- Use accessible labels for chart substitutes and status colors.\n- Keep source details below the main dashboard.\n\nFor Markdown:\n\n- Use short section headings.\n- Prefer tables over paragraphs.\n- Keep caveats and recommendations concise.\n- Put source queries at the bottom.\n\n## Self-Check\n\nBefore returning:\n\n- Scope came from the user or a provided URL; missing or ambiguous scope was\n  clarified before querying.\n- The selected renderer matches the current environment's capabilities.\n- Cursor Canvas instructions were used only when Cursor Canvas is available.\n- If Cursor Canvas was used, the canvas imports only from `cursor\u002Fcanvas`.\n- The top area is a compact context header followed by exactly four stats.\n- There is no query list, field coverage, or executive summary above the top\n  bar.\n- Ordinary signals were derived from the paginated scope query when possible;\n  targeted follow-up queries were used only when they supported a visible claim\n  that the scope data could not safely support.\n- Counts reconcile with the queried work item set.\n- Empty sections are omitted.\n- Charts are rendered only when their categories, values, units, and time ranges\n  are available.\n- Risk labels are explainable from visible Jira data.\n- Source appendix includes exact JQL and field coverage for visible claims.\n- No Jira write tools were used.\n",{"data":55,"body":56},{"name":4,"description":6},{"type":57,"children":58},"root",[59,67,73,78,85,90,95,125,130,136,141,163,168,343,349,354,359,377,382,400,405,428,433,446,452,457,470,491,496,520,525,531,536,661,674,679,684,787,792,797,815,820,878,883,888,900,906,911,978,983,989,994,999,1059,1064,1070,1075,1341,1346,1352,1435,1441,1446,1464,1469,1492,1496,1519,1525,1530,1604],{"type":60,"tag":61,"props":62,"children":63},"element","h1",{"id":4},[64],{"type":65,"value":66},"text","Jira Sprint Dashboard",{"type":60,"tag":68,"props":69,"children":70},"p",{},[71],{"type":65,"value":72},"Build a focused dashboard that helps an engineering manager, tech lead, or\nsenior engineer see current Jira work quickly enough to decide what needs\nattention. The output is a dashboard, not a prose report and not a generic\nhealth score.",{"type":60,"tag":68,"props":74,"children":75},{},[76],{"type":65,"value":77},"This skill is read-only by default. Do not create, update, transition, assign,\nor comment on Jira work items unless the user explicitly asks for a write action\nafter reviewing the dashboard.",{"type":60,"tag":79,"props":80,"children":82},"h2",{"id":81},"output-mode",[83],{"type":65,"value":84},"Output Mode",{"type":60,"tag":68,"props":86,"children":87},{},[88],{"type":65,"value":89},"Use the richest dashboard renderer supported by the current environment. The\ndashboard content, claims, counts, and source appendix must stay consistent\nacross renderers; only the presentation changes.",{"type":60,"tag":68,"props":91,"children":92},{},[93],{"type":65,"value":94},"Choose the renderer in this order:",{"type":60,"tag":96,"props":97,"children":98},"ol",{},[99,105,110,115,120],{"type":60,"tag":100,"props":101,"children":102},"li",{},[103],{"type":65,"value":104},"Cursor Canvas, if running in Cursor with Canvas support.",{"type":60,"tag":100,"props":106,"children":107},{},[108],{"type":65,"value":109},"Interactive artifact, if the current agent supports HTML, React, or similar\nartifact output.",{"type":60,"tag":100,"props":111,"children":112},{},[113],{"type":65,"value":114},"Static HTML file, if file creation is available and useful.",{"type":60,"tag":100,"props":116,"children":117},{},[118],{"type":65,"value":119},"Markdown dashboard, if no richer visual renderer is available.",{"type":60,"tag":100,"props":121,"children":122},{},[123],{"type":65,"value":124},"Structured JSON plus concise summary, only if visual rendering is impossible.",{"type":60,"tag":68,"props":126,"children":127},{},[128],{"type":65,"value":129},"Do not mention that Cursor Canvas is unavailable unless the user specifically\nasked for Cursor Canvas. If the user asked for a dashboard generally, use the\nbest available renderer without apologizing for the environment.",{"type":60,"tag":79,"props":131,"children":133},{"id":132},"cursor-canvas-renderer",[134],{"type":65,"value":135},"Cursor Canvas Renderer",{"type":60,"tag":68,"props":137,"children":138},{},[139],{"type":65,"value":140},"Use this section only when running in Cursor with Canvas support.",{"type":60,"tag":68,"props":142,"children":143},{},[144,146,153,155,161],{"type":65,"value":145},"Read ",{"type":60,"tag":147,"props":148,"children":150},"code",{"className":149},[],[151],{"type":65,"value":152},"~\u002F.cursor\u002Fskills-cursor\u002Fcanvas\u002FSKILL.md",{"type":65,"value":154}," before writing canvas code. If\nyou need exact exports or prop shapes, read the files in\n",{"type":60,"tag":147,"props":156,"children":158},{"className":157},[],[159],{"type":65,"value":160},"~\u002F.cursor\u002Fskills-cursor\u002Fcanvas\u002Fsdk\u002F",{"type":65,"value":162},".",{"type":60,"tag":68,"props":164,"children":165},{},[166],{"type":65,"value":167},"Canvas constraints:",{"type":60,"tag":169,"props":170,"children":171},"ul",{},[172,185,222,227,318,338],{"type":60,"tag":100,"props":173,"children":174},{},[175,177,183],{"type":65,"value":176},"Create one ",{"type":60,"tag":147,"props":178,"children":180},{"className":179},[],[181],{"type":65,"value":182},".canvas.tsx",{"type":65,"value":184}," file in the Cursor canvases directory.",{"type":60,"tag":100,"props":186,"children":187},{},[188,190,196,198,204,206,212,214,220],{"type":65,"value":189},"Import only from ",{"type":60,"tag":147,"props":191,"children":193},{"className":192},[],[194],{"type":65,"value":195},"cursor\u002Fcanvas",{"type":65,"value":197},". Do not import ",{"type":60,"tag":147,"props":199,"children":201},{"className":200},[],[202],{"type":65,"value":203},"react",{"type":65,"value":205},", ",{"type":60,"tag":147,"props":207,"children":209},{"className":208},[],[210],{"type":65,"value":211},"CSSProperties",{"type":65,"value":213},",\n",{"type":60,"tag":147,"props":215,"children":217},{"className":216},[],[218],{"type":65,"value":219},"JSX",{"type":65,"value":221},", Atlaskit, or other packages.",{"type":60,"tag":100,"props":223,"children":224},{},[225],{"type":65,"value":226},"Embed Jira data inline in the canvas; do not fetch from the canvas.",{"type":60,"tag":100,"props":228,"children":229},{},[230,232,238,239,245,246,252,253,259,260,266,267,273,274,280,281,287,288,294,295,301,302,308,310,316],{"type":65,"value":231},"Prefer Canvas primitives such as ",{"type":60,"tag":147,"props":233,"children":235},{"className":234},[],[236],{"type":65,"value":237},"Stack",{"type":65,"value":205},{"type":60,"tag":147,"props":240,"children":242},{"className":241},[],[243],{"type":65,"value":244},"Grid",{"type":65,"value":205},{"type":60,"tag":147,"props":247,"children":249},{"className":248},[],[250],{"type":65,"value":251},"Card",{"type":65,"value":205},{"type":60,"tag":147,"props":254,"children":256},{"className":255},[],[257],{"type":65,"value":258},"Stat",{"type":65,"value":205},{"type":60,"tag":147,"props":261,"children":263},{"className":262},[],[264],{"type":65,"value":265},"Table",{"type":65,"value":213},{"type":60,"tag":147,"props":268,"children":270},{"className":269},[],[271],{"type":65,"value":272},"Pill",{"type":65,"value":205},{"type":60,"tag":147,"props":275,"children":277},{"className":276},[],[278],{"type":65,"value":279},"Callout",{"type":65,"value":205},{"type":60,"tag":147,"props":282,"children":284},{"className":283},[],[285],{"type":65,"value":286},"UsageBar",{"type":65,"value":205},{"type":60,"tag":147,"props":289,"children":291},{"className":290},[],[292],{"type":65,"value":293},"BarChart",{"type":65,"value":205},{"type":60,"tag":147,"props":296,"children":298},{"className":297},[],[299],{"type":65,"value":300},"LineChart",{"type":65,"value":205},{"type":60,"tag":147,"props":303,"children":305},{"className":304},[],[306],{"type":65,"value":307},"PieChart",{"type":65,"value":309},", and ",{"type":60,"tag":147,"props":311,"children":313},{"className":312},[],[314],{"type":65,"value":315},"Code",{"type":65,"value":317},"\nover raw HTML.",{"type":60,"tag":100,"props":319,"children":320},{},[321,323,329,331,337],{"type":65,"value":322},"Use ",{"type":60,"tag":147,"props":324,"children":326},{"className":325},[],[327],{"type":65,"value":328},"useHostTheme()",{"type":65,"value":330}," for custom styles. Do not hardcode hex colors, gradients,\nbox shadows, ADS variables, unsupported CSS frameworks, or ",{"type":60,"tag":147,"props":332,"children":334},{"className":333},[],[335],{"type":65,"value":336},"@atlaskit\u002F*",{"type":65,"value":162},{"type":60,"tag":100,"props":339,"children":340},{},[341],{"type":65,"value":342},"Do not publish or share the canvas unless the user asks.",{"type":60,"tag":79,"props":344,"children":346},{"id":345},"portable-renderers",[347],{"type":65,"value":348},"Portable Renderers",{"type":60,"tag":68,"props":350,"children":351},{},[352],{"type":65,"value":353},"Use this section when Cursor Canvas is unavailable.",{"type":60,"tag":68,"props":355,"children":356},{},[357],{"type":65,"value":358},"For an interactive artifact renderer:",{"type":60,"tag":169,"props":360,"children":361},{},[362,367,372],{"type":60,"tag":100,"props":363,"children":364},{},[365],{"type":65,"value":366},"Render the same dashboard model as an interactive artifact.",{"type":60,"tag":100,"props":368,"children":369},{},[370],{"type":65,"value":371},"Prefer tables, compact charts, stat rows, and collapsible source details.",{"type":60,"tag":100,"props":373,"children":374},{},[375],{"type":65,"value":376},"Keep interactions lightweight: filtering, expanding details, or switching\nchart\u002Ftable views is fine; do not require live Jira fetching from the artifact.",{"type":60,"tag":68,"props":378,"children":379},{},[380],{"type":65,"value":381},"For static HTML:",{"type":60,"tag":169,"props":383,"children":384},{},[385,390,395],{"type":60,"tag":100,"props":386,"children":387},{},[388],{"type":65,"value":389},"Create a self-contained dashboard file with embedded data.",{"type":60,"tag":100,"props":391,"children":392},{},[393],{"type":65,"value":394},"Use responsive layout, accessible tables, and simple chart-like visuals when\nchart libraries are unavailable.",{"type":60,"tag":100,"props":396,"children":397},{},[398],{"type":65,"value":399},"Do not fetch Jira data from the HTML file.",{"type":60,"tag":68,"props":401,"children":402},{},[403],{"type":65,"value":404},"For Markdown:",{"type":60,"tag":169,"props":406,"children":407},{},[408,413,418,423],{"type":60,"tag":100,"props":409,"children":410},{},[411],{"type":65,"value":412},"Preserve the dashboard order.",{"type":60,"tag":100,"props":414,"children":415},{},[416],{"type":65,"value":417},"Use compact tables for stats, owner load, risks, highest-priority work, and\nsource appendix.",{"type":60,"tag":100,"props":419,"children":420},{},[421],{"type":65,"value":422},"Use textual chart substitutes only when they remain honest, such as counts,\npercentages, and simple bars.",{"type":60,"tag":100,"props":424,"children":425},{},[426],{"type":65,"value":427},"Avoid turning the output into a long prose report.",{"type":60,"tag":68,"props":429,"children":430},{},[431],{"type":65,"value":432},"For JSON fallback:",{"type":60,"tag":169,"props":434,"children":435},{},[436,441],{"type":60,"tag":100,"props":437,"children":438},{},[439],{"type":65,"value":440},"Return the normalized dashboard model.",{"type":60,"tag":100,"props":442,"children":443},{},[444],{"type":65,"value":445},"Include a short human-readable summary with the highest-signal risks and the\nsource scope.",{"type":60,"tag":79,"props":447,"children":449},{"id":448},"get-the-scope",[450],{"type":65,"value":451},"Get The Scope",{"type":60,"tag":68,"props":453,"children":454},{},[455],{"type":65,"value":456},"Do not guess the Jira scope. If the user does not provide a project key, space\nkey, board, sprint, filter, JQL, work item keys, or Jira URL, stop and ask for\none. A dashboard from a random visible project or guessed team context is worse\nthan no dashboard.",{"type":60,"tag":68,"props":458,"children":459},{},[460,462,468],{"type":65,"value":461},"If the user gives a project or space key but no sprint, board, or filter, start\nwith the Jira JQL ",{"type":60,"tag":147,"props":463,"children":465},{"className":464},[],[466],{"type":65,"value":467},"project",{"type":65,"value":469}," field and the user's key:",{"type":60,"tag":471,"props":472,"children":477},"pre",{"className":473,"code":474,"language":475,"meta":476,"style":476},"language-jql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","project = \"SPACE_KEY\" AND sprint in openSprints() ORDER BY Rank ASC\n","jql","",[478],{"type":60,"tag":147,"props":479,"children":480},{"__ignoreMap":476},[481],{"type":60,"tag":482,"props":483,"children":486},"span",{"class":484,"line":485},"line",1,[487],{"type":60,"tag":482,"props":488,"children":489},{},[490],{"type":65,"value":474},{"type":60,"tag":68,"props":492,"children":493},{},[494],{"type":65,"value":495},"If the open sprint result is empty, stale, or misleading, switch to snapshot\nmode and say so in a compact caveat below the top bar:",{"type":60,"tag":471,"props":497,"children":499},{"className":473,"code":498,"language":475,"meta":476,"style":476},"project = \"SPACE_KEY\" AND statusCategory != Done ORDER BY priority DESC, updated ASC\nproject = \"SPACE_KEY\" AND updated >= -60d ORDER BY updated DESC\n",[500],{"type":60,"tag":147,"props":501,"children":502},{"__ignoreMap":476},[503,511],{"type":60,"tag":482,"props":504,"children":505},{"class":484,"line":485},[506],{"type":60,"tag":482,"props":507,"children":508},{},[509],{"type":65,"value":510},"project = \"SPACE_KEY\" AND statusCategory != Done ORDER BY priority DESC, updated ASC\n",{"type":60,"tag":482,"props":512,"children":514},{"class":484,"line":513},2,[515],{"type":60,"tag":482,"props":516,"children":517},{},[518],{"type":65,"value":519},"project = \"SPACE_KEY\" AND updated >= -60d ORDER BY updated DESC\n",{"type":60,"tag":68,"props":521,"children":522},{},[523],{"type":65,"value":524},"Use a 60-day recent movement window by default unless the user asks for another\nperiod.",{"type":60,"tag":79,"props":526,"children":528},{"id":527},"query-jira",[529],{"type":65,"value":530},"Query Jira",{"type":60,"tag":68,"props":532,"children":533},{},[534],{"type":65,"value":535},"Use read-only Jira search. Request only fields needed for the dashboard and\ntolerate missing fields.",{"type":60,"tag":68,"props":537,"children":538},{},[539,541,547,548,554,555,561,562,568,569,575,576,582,583,589,590,596,597,603,604,610,611,617,618,624,625,631,632,638,639,645,646,652,653,659],{"type":65,"value":540},"Useful fields: ",{"type":60,"tag":147,"props":542,"children":544},{"className":543},[],[545],{"type":65,"value":546},"key",{"type":65,"value":205},{"type":60,"tag":147,"props":549,"children":551},{"className":550},[],[552],{"type":65,"value":553},"summary",{"type":65,"value":205},{"type":60,"tag":147,"props":556,"children":558},{"className":557},[],[559],{"type":65,"value":560},"status",{"type":65,"value":205},{"type":60,"tag":147,"props":563,"children":565},{"className":564},[],[566],{"type":65,"value":567},"statusCategory",{"type":65,"value":205},{"type":60,"tag":147,"props":570,"children":572},{"className":571},[],[573],{"type":65,"value":574},"assignee",{"type":65,"value":213},{"type":60,"tag":147,"props":577,"children":579},{"className":578},[],[580],{"type":65,"value":581},"priority",{"type":65,"value":205},{"type":60,"tag":147,"props":584,"children":586},{"className":585},[],[587],{"type":65,"value":588},"issuetype",{"type":65,"value":205},{"type":60,"tag":147,"props":591,"children":593},{"className":592},[],[594],{"type":65,"value":595},"created",{"type":65,"value":205},{"type":60,"tag":147,"props":598,"children":600},{"className":599},[],[601],{"type":65,"value":602},"updated",{"type":65,"value":205},{"type":60,"tag":147,"props":605,"children":607},{"className":606},[],[608],{"type":65,"value":609},"resolutiondate",{"type":65,"value":205},{"type":60,"tag":147,"props":612,"children":614},{"className":613},[],[615],{"type":65,"value":616},"duedate",{"type":65,"value":213},{"type":60,"tag":147,"props":619,"children":621},{"className":620},[],[622],{"type":65,"value":623},"parent",{"type":65,"value":205},{"type":60,"tag":147,"props":626,"children":628},{"className":627},[],[629],{"type":65,"value":630},"issuelinks",{"type":65,"value":205},{"type":60,"tag":147,"props":633,"children":635},{"className":634},[],[636],{"type":65,"value":637},"labels",{"type":65,"value":205},{"type":60,"tag":147,"props":640,"children":642},{"className":641},[],[643],{"type":65,"value":644},"components",{"type":65,"value":205},{"type":60,"tag":147,"props":647,"children":649},{"className":648},[],[650],{"type":65,"value":651},"fixVersions",{"type":65,"value":205},{"type":60,"tag":147,"props":654,"children":656},{"className":655},[],[657],{"type":65,"value":658},"sprint",{"type":65,"value":660},", and any\navailable estimate\u002Fstory point field.",{"type":60,"tag":68,"props":662,"children":663},{},[664,666,672],{"type":65,"value":665},"Start with ",{"type":60,"tag":147,"props":667,"children":669},{"className":668},[],[670],{"type":65,"value":671},"maxResults: 100",{"type":65,"value":673},". For complete sprint, board, or filter dashboards,\npaginate until the scope is complete or too large for useful work-item-level\nrendering.",{"type":60,"tag":68,"props":675,"children":676},{},[677],{"type":65,"value":678},"Default to one complete paginated scope query. Derive ordinary dashboard signals\nlocally from the returned work item set instead of issuing separate JQL calls for\neach signal.",{"type":60,"tag":68,"props":680,"children":681},{},[682],{"type":65,"value":683},"Derive these locally when the scope query returned the required fields:",{"type":60,"tag":169,"props":685,"children":686},{},[687,706,724,742,759,782],{"type":60,"tag":100,"props":688,"children":689},{},[690,692,698,700,705],{"type":65,"value":691},"Recently completed from ",{"type":60,"tag":147,"props":693,"children":695},{"className":694},[],[696],{"type":65,"value":697},"statusCategory = Done",{"type":65,"value":699}," and ",{"type":60,"tag":147,"props":701,"children":703},{"className":702},[],[704],{"type":65,"value":609},{"type":65,"value":162},{"type":60,"tag":100,"props":707,"children":708},{},[709,711,717,718,723],{"type":65,"value":710},"Aging unfinished from ",{"type":60,"tag":147,"props":712,"children":714},{"className":713},[],[715],{"type":65,"value":716},"statusCategory != Done",{"type":65,"value":699},{"type":60,"tag":147,"props":719,"children":721},{"className":720},[],[722],{"type":65,"value":602},{"type":65,"value":162},{"type":60,"tag":100,"props":725,"children":726},{},[727,729,734,736,741],{"type":65,"value":728},"Unowned unfinished from ",{"type":60,"tag":147,"props":730,"children":732},{"className":731},[],[733],{"type":65,"value":716},{"type":65,"value":735}," and empty ",{"type":60,"tag":147,"props":737,"children":739},{"className":738},[],[740],{"type":65,"value":574},{"type":65,"value":162},{"type":60,"tag":100,"props":743,"children":744},{},[745,747,752,753,758],{"type":65,"value":746},"High-priority unfinished from ",{"type":60,"tag":147,"props":748,"children":750},{"className":749},[],[751],{"type":65,"value":716},{"type":65,"value":699},{"type":60,"tag":147,"props":754,"children":756},{"className":755},[],[757],{"type":65,"value":581},{"type":65,"value":162},{"type":60,"tag":100,"props":760,"children":761},{},[762,764,769,770,775,776,781],{"type":65,"value":763},"Status or label blockers from ",{"type":60,"tag":147,"props":765,"children":767},{"className":766},[],[768],{"type":65,"value":560},{"type":65,"value":205},{"type":60,"tag":147,"props":771,"children":773},{"className":772},[],[774],{"type":65,"value":567},{"type":65,"value":309},{"type":60,"tag":147,"props":777,"children":779},{"className":778},[],[780],{"type":65,"value":637},{"type":65,"value":162},{"type":60,"tag":100,"props":783,"children":784},{},[785],{"type":65,"value":786},"Owner load, stale work, due date risk, and planning gaps from the normalized\nscope dataset.",{"type":60,"tag":68,"props":788,"children":789},{},[790],{"type":65,"value":791},"Use targeted follow-up queries only when they are needed to support a visible\nclaim that cannot be derived safely from the scope data, when the scope is too\nlarge for useful local processing, or when the user asks for an audit-style\ndashboard with exact evidence per signal.",{"type":60,"tag":68,"props":793,"children":794},{},[795],{"type":65,"value":796},"Rule of thumb:",{"type":60,"tag":169,"props":798,"children":799},{},[800,805,810],{"type":60,"tag":100,"props":801,"children":802},{},[803],{"type":65,"value":804},"Small or medium sprint dashboard: prefer one full paginated scope query, with\nat most one targeted blocker-text or dependency-status follow-up when needed.",{"type":60,"tag":100,"props":806,"children":807},{},[808],{"type":65,"value":809},"Large scope dashboard: use narrower follow-up queries when pulling and\nprocessing the full work-item set would be slow or low-value.",{"type":60,"tag":100,"props":811,"children":812},{},[813],{"type":65,"value":814},"Evidence-heavy review: multiple focused queries are acceptable when the exact\nJQL evidence matters more than minimizing calls.",{"type":60,"tag":68,"props":816,"children":817},{},[818],{"type":65,"value":819},"Examples of targeted follow-up queries, only when justified:",{"type":60,"tag":169,"props":821,"children":822},{},[823,834,845,856,867],{"type":60,"tag":100,"props":824,"children":825},{},[826,828],{"type":65,"value":827},"Recently completed: ",{"type":60,"tag":147,"props":829,"children":831},{"className":830},[],[832],{"type":65,"value":833},"\u003Cscope> AND statusCategory = Done ORDER BY resolutiondate DESC",{"type":60,"tag":100,"props":835,"children":836},{},[837,839],{"type":65,"value":838},"Aging unfinished: ",{"type":60,"tag":147,"props":840,"children":842},{"className":841},[],[843],{"type":65,"value":844},"\u003Cscope> AND statusCategory != Done AND updated \u003C= -3d ORDER BY updated ASC",{"type":60,"tag":100,"props":846,"children":847},{},[848,850],{"type":65,"value":849},"Unowned unfinished: ",{"type":60,"tag":147,"props":851,"children":853},{"className":852},[],[854],{"type":65,"value":855},"\u003Cscope> AND statusCategory != Done AND assignee is EMPTY ORDER BY priority DESC, updated ASC",{"type":60,"tag":100,"props":857,"children":858},{},[859,861],{"type":65,"value":860},"High-priority unfinished: ",{"type":60,"tag":147,"props":862,"children":864},{"className":863},[],[865],{"type":65,"value":866},"\u003Cscope> AND statusCategory != Done AND priority in (Highest, High) ORDER BY priority DESC, updated ASC",{"type":60,"tag":100,"props":868,"children":869},{},[870,872],{"type":65,"value":871},"Blocked signal: ",{"type":60,"tag":147,"props":873,"children":875},{"className":874},[],[876],{"type":65,"value":877},"\u003Cscope> AND statusCategory != Done AND (status = Blocked OR text ~ \"blocked\" OR labels in (blocked, blocker)) ORDER BY priority DESC, updated ASC",{"type":60,"tag":68,"props":879,"children":880},{},[881],{"type":65,"value":882},"Do not make negative claims such as \"no blockers\" or \"no dependencies\" unless\nthe source appendix shows the query or returned field coverage that supports the\nclaim. If only status and labels were checked for blockers, say that no\nstatus\u002Flabel blockers were found rather than claiming there are no blockers. If\na signal was not checked, say so.",{"type":60,"tag":68,"props":884,"children":885},{},[886],{"type":65,"value":887},"For derived signals, cite the base scope JQL and field coverage in the source\nappendix instead of inventing separate support queries. Include additional JQL\nonly for targeted follow-up queries that were actually run.",{"type":60,"tag":68,"props":889,"children":890},{},[891,893,898],{"type":65,"value":892},"For work item links (",{"type":60,"tag":147,"props":894,"children":896},{"className":895},[],[897],{"type":65,"value":630},{"type":65,"value":899},"), fetch linked work item status\u002Fcategory when\npossible. If linked details are unavailable, show dependency status as unknown\nrather than resolved.",{"type":60,"tag":79,"props":901,"children":903},{"id":902},"normalize",[904],{"type":65,"value":905},"Normalize",{"type":60,"tag":68,"props":907,"children":908},{},[909],{"type":65,"value":910},"Before designing the output, create a compact renderer-independent work item\nmodel with:",{"type":60,"tag":169,"props":912,"children":913},{},[914,919,930,963,968,973],{"type":60,"tag":100,"props":915,"children":916},{},[917],{"type":65,"value":918},"Key, URL, summary, type, status, status category, priority",{"type":60,"tag":100,"props":920,"children":921},{},[922,924],{"type":65,"value":923},"Assignee display name or ",{"type":60,"tag":147,"props":925,"children":927},{"className":926},[],[928],{"type":65,"value":929},"Unassigned",{"type":60,"tag":100,"props":931,"children":932},{},[933,935,941,942,948,949,955,957],{"type":65,"value":934},"Owner status as ",{"type":60,"tag":147,"props":936,"children":938},{"className":937},[],[939],{"type":65,"value":940},"active",{"type":65,"value":205},{"type":60,"tag":147,"props":943,"children":945},{"className":944},[],[946],{"type":65,"value":947},"inactive",{"type":65,"value":205},{"type":60,"tag":147,"props":950,"children":952},{"className":951},[],[953],{"type":65,"value":954},"unknown",{"type":65,"value":956},", or ",{"type":60,"tag":147,"props":958,"children":960},{"className":959},[],[961],{"type":65,"value":962},"unassigned",{"type":60,"tag":100,"props":964,"children":965},{},[966],{"type":65,"value":967},"Created age, updated age, resolution age when done, due date distance",{"type":60,"tag":100,"props":969,"children":970},{},[971],{"type":65,"value":972},"Parent\u002Fepic\u002Fworkstream, sprint, estimate, components, versions, labels",{"type":60,"tag":100,"props":974,"children":975},{},[976],{"type":65,"value":977},"Linked work item keys, direction, link type, and linked status when available",{"type":60,"tag":68,"props":979,"children":980},{},[981],{"type":65,"value":982},"Derived signals should stay explainable from Jira facts: done, active, not\nstarted, stale, very stale, blocked, unowned, inactive owner, time-sensitive,\nsupport-impacting, cross-space dependency, and missing planning data. Mark weak\ntext-only signals as inferred.",{"type":60,"tag":79,"props":984,"children":986},{"id":985},"dashboard-model",[987],{"type":65,"value":988},"Dashboard Model",{"type":60,"tag":68,"props":990,"children":991},{},[992],{"type":65,"value":993},"Create a dashboard model before rendering. Every renderer should use this same\nmodel.",{"type":60,"tag":68,"props":995,"children":996},{},[997],{"type":65,"value":998},"Include:",{"type":60,"tag":169,"props":1000,"children":1001},{},[1002,1007,1012,1017,1022,1027,1032,1037,1042,1047],{"type":60,"tag":100,"props":1003,"children":1004},{},[1005],{"type":65,"value":1006},"Context metadata: title, project or space, sprint, board, filter, JQL, window,\nquery timestamp, and mode.",{"type":60,"tag":100,"props":1008,"children":1009},{},[1010],{"type":65,"value":1011},"Four top stats: committed or total scope, done or completed, active or in\nprogress, and needs attention.",{"type":60,"tag":100,"props":1013,"children":1014},{},[1015],{"type":65,"value":1016},"Scope caveat, only when sprint data is missing, mixed, stale, or blended with\nrecent project movement.",{"type":60,"tag":100,"props":1018,"children":1019},{},[1020],{"type":65,"value":1021},"Optional capacity or commitment segments, only when real data exists.",{"type":60,"tag":100,"props":1023,"children":1024},{},[1025],{"type":65,"value":1026},"Optional chart data, only when categories, values, units, and time ranges are\navailable.",{"type":60,"tag":100,"props":1028,"children":1029},{},[1030],{"type":65,"value":1031},"Owner load and gaps.",{"type":60,"tag":100,"props":1033,"children":1034},{},[1035],{"type":65,"value":1036},"Risk and attention items.",{"type":60,"tag":100,"props":1038,"children":1039},{},[1040],{"type":65,"value":1041},"Highest-priority work item table.",{"type":60,"tag":100,"props":1043,"children":1044},{},[1045],{"type":65,"value":1046},"Recently completed work.",{"type":60,"tag":100,"props":1048,"children":1049},{},[1050,1052,1058],{"type":65,"value":1051},"Source appendix with exact JQL, field coverage, assumptions, and the\ncomposition of ",{"type":60,"tag":147,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":65,"value":1057},"Needs attention",{"type":65,"value":162},{"type":60,"tag":68,"props":1060,"children":1061},{},[1062],{"type":65,"value":1063},"Do not invent data to fill the model. Empty or unsupported sections should be\nomitted.",{"type":60,"tag":79,"props":1065,"children":1067},{"id":1066},"dashboard-shape",[1068],{"type":65,"value":1069},"Dashboard Shape",{"type":60,"tag":68,"props":1071,"children":1072},{},[1073],{"type":65,"value":1074},"Keep the visible dashboard simple and deterministic. When the data exists,\nbroadly follow this order:",{"type":60,"tag":96,"props":1076,"children":1077},{},[1078,1100,1141,1162,1183,1214,1240,1271,1292,1318],{"type":60,"tag":100,"props":1079,"children":1080},{},[1081,1087],{"type":60,"tag":1082,"props":1083,"children":1084},"strong",{},[1085],{"type":65,"value":1086},"Compact context header",{"type":60,"tag":169,"props":1088,"children":1089},{},[1090,1095],{"type":60,"tag":100,"props":1091,"children":1092},{},[1093],{"type":65,"value":1094},"Show title plus project, space, board, sprint, or window metadata.",{"type":60,"tag":100,"props":1096,"children":1097},{},[1098],{"type":65,"value":1099},"Keep it short. Do not put queries, field coverage, or executive-summary\nprose at the top.",{"type":60,"tag":100,"props":1101,"children":1102},{},[1103,1108],{"type":60,"tag":1082,"props":1104,"children":1105},{},[1106],{"type":65,"value":1107},"Four-stat top bar",{"type":60,"tag":169,"props":1109,"children":1110},{},[1111,1116,1121,1126,1136],{"type":60,"tag":100,"props":1112,"children":1113},{},[1114],{"type":65,"value":1115},"Show exactly four stat values.",{"type":60,"tag":100,"props":1117,"children":1118},{},[1119],{"type":65,"value":1120},"Default to committed\u002Ftotal scope, done\u002Fcompleted, active\u002Fin progress, and\nneeds attention.",{"type":60,"tag":100,"props":1122,"children":1123},{},[1124],{"type":65,"value":1125},"Use work item counts when story points are unavailable.",{"type":60,"tag":100,"props":1127,"children":1128},{},[1129,1134],{"type":60,"tag":147,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":65,"value":1057},{"type":65,"value":1135}," should combine the highest-signal risks: blocked, stale,\nunassigned, time-sensitive, or unresolved linked work.",{"type":60,"tag":100,"props":1137,"children":1138},{},[1139],{"type":65,"value":1140},"Put secondary counts below the fold only when they change the readout.",{"type":60,"tag":100,"props":1142,"children":1143},{},[1144,1149],{"type":60,"tag":1082,"props":1145,"children":1146},{},[1147],{"type":65,"value":1148},"Scope caveat, only when needed",{"type":60,"tag":169,"props":1150,"children":1151},{},[1152,1157],{"type":60,"tag":100,"props":1153,"children":1154},{},[1155],{"type":65,"value":1156},"Use one compact caveat below the top bar when sprint data is missing,\nmixed, stale, or blended with recent project movement.",{"type":60,"tag":100,"props":1158,"children":1159},{},[1160],{"type":65,"value":1161},"Keep it to 1 to 2 short sentences.",{"type":60,"tag":100,"props":1163,"children":1164},{},[1165,1170],{"type":60,"tag":1082,"props":1166,"children":1167},{},[1168],{"type":65,"value":1169},"Capacity or commitment bar",{"type":60,"tag":169,"props":1171,"children":1172},{},[1173,1178],{"type":60,"tag":100,"props":1174,"children":1175},{},[1176],{"type":65,"value":1177},"Render a capacity or commitment visual only when capacity, commitment, or\nallocation segment data is available.",{"type":60,"tag":100,"props":1179,"children":1180},{},[1181],{"type":65,"value":1182},"Skip it rather than inventing capacity, segment, or buffer values.",{"type":60,"tag":100,"props":1184,"children":1185},{},[1186,1191],{"type":60,"tag":1082,"props":1187,"children":1188},{},[1189],{"type":65,"value":1190},"Sprint charts",{"type":60,"tag":169,"props":1192,"children":1193},{},[1194,1199,1204,1209],{"type":60,"tag":100,"props":1195,"children":1196},{},[1197],{"type":65,"value":1198},"If available, render remaining work over time as a line chart.",{"type":60,"tag":100,"props":1200,"children":1201},{},[1202],{"type":65,"value":1203},"Beside it, render status distribution as a pie chart or compact status\nvisual.",{"type":60,"tag":100,"props":1205,"children":1206},{},[1207],{"type":65,"value":1208},"Below those, render resolved\u002Fcompleted per working day as a bar chart.",{"type":60,"tag":100,"props":1210,"children":1211},{},[1212],{"type":65,"value":1213},"Skip any chart whose categories, values, units, or time range are missing.\nNever render placeholder, sample, empty, or guessed charts.",{"type":60,"tag":100,"props":1215,"children":1216},{},[1217,1222],{"type":60,"tag":1082,"props":1218,"children":1219},{},[1220],{"type":65,"value":1221},"Owner load and gaps",{"type":60,"tag":169,"props":1223,"children":1224},{},[1225,1230,1235],{"type":60,"tag":100,"props":1226,"children":1227},{},[1228],{"type":65,"value":1229},"Show active, stale, blocked, support-impacting, and done counts by assignee.",{"type":60,"tag":100,"props":1231,"children":1232},{},[1233],{"type":65,"value":1234},"Include unassigned, inactive-owner, and unknown-owner-status buckets.",{"type":60,"tag":100,"props":1236,"children":1237},{},[1238],{"type":65,"value":1239},"Keep it compact; prefer a small table or bar chart over per-owner cards.",{"type":60,"tag":100,"props":1241,"children":1242},{},[1243,1248],{"type":60,"tag":1082,"props":1244,"children":1245},{},[1246],{"type":65,"value":1247},"Risk and attention",{"type":60,"tag":169,"props":1249,"children":1250},{},[1251,1256,1261,1266],{"type":60,"tag":100,"props":1252,"children":1253},{},[1254],{"type":65,"value":1255},"Place this below owner load.",{"type":60,"tag":100,"props":1257,"children":1258},{},[1259],{"type":65,"value":1260},"Include only the work items most likely to need manager or lead attention.",{"type":60,"tag":100,"props":1262,"children":1263},{},[1264],{"type":65,"value":1265},"For each item, show key, reason, evidence, owner, age, and next question.",{"type":60,"tag":100,"props":1267,"children":1268},{},[1269],{"type":65,"value":1270},"Use a callout or highlighted row for the single highest delivery risk when\none stands out.",{"type":60,"tag":100,"props":1272,"children":1273},{},[1274,1279],{"type":60,"tag":1082,"props":1275,"children":1276},{},[1277],{"type":65,"value":1278},"Highest-priority work item table",{"type":60,"tag":169,"props":1280,"children":1281},{},[1282,1287],{"type":60,"tag":100,"props":1283,"children":1284},{},[1285],{"type":65,"value":1286},"Include a compact table of top sprint work items or top attention items.",{"type":60,"tag":100,"props":1288,"children":1289},{},[1290],{"type":65,"value":1291},"Do not render every low-signal work item by default.",{"type":60,"tag":100,"props":1293,"children":1294},{},[1295,1300],{"type":60,"tag":1082,"props":1296,"children":1297},{},[1298],{"type":65,"value":1299},"Recently completed and optional detail",{"type":60,"tag":169,"props":1301,"children":1302},{},[1303,1308,1313],{"type":60,"tag":100,"props":1304,"children":1305},{},[1306],{"type":65,"value":1307},"If recently completed work exists, put it in a collapsed section or compact\ntable below the main readout.",{"type":60,"tag":100,"props":1309,"children":1310},{},[1311],{"type":65,"value":1312},"Workstream grouping and dependencies should appear only when they change\nwhat the viewer should inspect next.",{"type":60,"tag":100,"props":1314,"children":1315},{},[1316],{"type":65,"value":1317},"Keep dependencies to unresolved or unknown-status linked work by default.",{"type":60,"tag":100,"props":1319,"children":1320},{},[1321,1326],{"type":60,"tag":1082,"props":1322,"children":1323},{},[1324],{"type":65,"value":1325},"Source appendix",{"type":60,"tag":169,"props":1327,"children":1328},{},[1329],{"type":60,"tag":100,"props":1330,"children":1331},{},[1332,1334,1339],{"type":65,"value":1333},"Put exact JQL, query timestamps, field coverage, assumptions, and the\ncomposition of ",{"type":60,"tag":147,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":65,"value":1057},{"type":65,"value":1340}," at the bottom.",{"type":60,"tag":68,"props":1342,"children":1343},{},[1344],{"type":65,"value":1345},"If the full data set is unavailable, preserve the same broad order and omit the\nsections or charts that cannot be rendered honestly.",{"type":60,"tag":79,"props":1347,"children":1349},{"id":1348},"content-and-style",[1350],{"type":65,"value":1351},"Content And Style",{"type":60,"tag":169,"props":1353,"children":1354},{},[1355,1360,1365,1370,1375,1380,1425,1430],{"type":60,"tag":100,"props":1356,"children":1357},{},[1358],{"type":65,"value":1359},"Use charts and tables where they beat paragraphs.",{"type":60,"tag":100,"props":1361,"children":1362},{},[1363],{"type":65,"value":1364},"Follow the reference layout order when the data supports it; skip unsupported\ncharts instead of changing the whole page shape.",{"type":60,"tag":100,"props":1366,"children":1367},{},[1368],{"type":65,"value":1369},"Keep work item summaries short; avoid full descriptions unless a short excerpt\nis needed to explain impact.",{"type":60,"tag":100,"props":1371,"children":1372},{},[1373],{"type":65,"value":1374},"Tie every recommendation or next question to work item keys or aggregate\ncounts.",{"type":60,"tag":100,"props":1376,"children":1377},{},[1378],{"type":65,"value":1379},"Separate Jira facts from derived or inferred signals.",{"type":60,"tag":100,"props":1381,"children":1382},{},[1383,1385,1391,1393,1399,1401,1407,1409,1415,1417,1423],{"type":65,"value":1384},"Use semantic tones where the renderer supports them: ",{"type":60,"tag":147,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":65,"value":1390},"success",{"type":65,"value":1392}," for done,\n",{"type":60,"tag":147,"props":1394,"children":1396},{"className":1395},[],[1397],{"type":65,"value":1398},"warning",{"type":65,"value":1400}," for stale\u002Fdeadline risk, ",{"type":60,"tag":147,"props":1402,"children":1404},{"className":1403},[],[1405],{"type":65,"value":1406},"danger",{"type":65,"value":1408}," for blocked\u002Foverdue\u002Fsevere risk,\n",{"type":60,"tag":147,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":65,"value":1414},"info",{"type":65,"value":1416}," for caveats\u002Flinked work, and ",{"type":60,"tag":147,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":65,"value":1422},"neutral",{"type":65,"value":1424}," for low-signal facts.",{"type":60,"tag":100,"props":1426,"children":1427},{},[1428],{"type":65,"value":1429},"Pair color with labels. Prefer work item key links over large buttons.",{"type":60,"tag":100,"props":1431,"children":1432},{},[1433],{"type":65,"value":1434},"Keep the first screen focused on status and attention, not process notes.",{"type":60,"tag":79,"props":1436,"children":1438},{"id":1437},"renderer-specific-style",[1439],{"type":65,"value":1440},"Renderer-Specific Style",{"type":60,"tag":68,"props":1442,"children":1443},{},[1444],{"type":65,"value":1445},"For Cursor Canvas:",{"type":60,"tag":169,"props":1447,"children":1448},{},[1449,1454,1459],{"type":60,"tag":100,"props":1450,"children":1451},{},[1452],{"type":65,"value":1453},"Use Canvas components and host theme styles.",{"type":60,"tag":100,"props":1455,"children":1456},{},[1457],{"type":65,"value":1458},"Keep the top area compact: context header followed by exactly four stats.",{"type":60,"tag":100,"props":1460,"children":1461},{},[1462],{"type":65,"value":1463},"Prefer Canvas tables and charts over custom layout code.",{"type":60,"tag":68,"props":1465,"children":1466},{},[1467],{"type":65,"value":1468},"For interactive artifacts or static HTML:",{"type":60,"tag":169,"props":1470,"children":1471},{},[1472,1477,1482,1487],{"type":60,"tag":100,"props":1473,"children":1474},{},[1475],{"type":65,"value":1476},"Use a restrained dashboard layout with compact cards, tables, and simple\ncharts.",{"type":60,"tag":100,"props":1478,"children":1479},{},[1480],{"type":65,"value":1481},"Keep text readable on mobile and desktop.",{"type":60,"tag":100,"props":1483,"children":1484},{},[1485],{"type":65,"value":1486},"Use accessible labels for chart substitutes and status colors.",{"type":60,"tag":100,"props":1488,"children":1489},{},[1490],{"type":65,"value":1491},"Keep source details below the main dashboard.",{"type":60,"tag":68,"props":1493,"children":1494},{},[1495],{"type":65,"value":404},{"type":60,"tag":169,"props":1497,"children":1498},{},[1499,1504,1509,1514],{"type":60,"tag":100,"props":1500,"children":1501},{},[1502],{"type":65,"value":1503},"Use short section headings.",{"type":60,"tag":100,"props":1505,"children":1506},{},[1507],{"type":65,"value":1508},"Prefer tables over paragraphs.",{"type":60,"tag":100,"props":1510,"children":1511},{},[1512],{"type":65,"value":1513},"Keep caveats and recommendations concise.",{"type":60,"tag":100,"props":1515,"children":1516},{},[1517],{"type":65,"value":1518},"Put source queries at the bottom.",{"type":60,"tag":79,"props":1520,"children":1522},{"id":1521},"self-check",[1523],{"type":65,"value":1524},"Self-Check",{"type":60,"tag":68,"props":1526,"children":1527},{},[1528],{"type":65,"value":1529},"Before returning:",{"type":60,"tag":169,"props":1531,"children":1532},{},[1533,1538,1543,1548,1559,1564,1569,1574,1579,1584,1589,1594,1599],{"type":60,"tag":100,"props":1534,"children":1535},{},[1536],{"type":65,"value":1537},"Scope came from the user or a provided URL; missing or ambiguous scope was\nclarified before querying.",{"type":60,"tag":100,"props":1539,"children":1540},{},[1541],{"type":65,"value":1542},"The selected renderer matches the current environment's capabilities.",{"type":60,"tag":100,"props":1544,"children":1545},{},[1546],{"type":65,"value":1547},"Cursor Canvas instructions were used only when Cursor Canvas is available.",{"type":60,"tag":100,"props":1549,"children":1550},{},[1551,1553,1558],{"type":65,"value":1552},"If Cursor Canvas was used, the canvas imports only from ",{"type":60,"tag":147,"props":1554,"children":1556},{"className":1555},[],[1557],{"type":65,"value":195},{"type":65,"value":162},{"type":60,"tag":100,"props":1560,"children":1561},{},[1562],{"type":65,"value":1563},"The top area is a compact context header followed by exactly four stats.",{"type":60,"tag":100,"props":1565,"children":1566},{},[1567],{"type":65,"value":1568},"There is no query list, field coverage, or executive summary above the top\nbar.",{"type":60,"tag":100,"props":1570,"children":1571},{},[1572],{"type":65,"value":1573},"Ordinary signals were derived from the paginated scope query when possible;\ntargeted follow-up queries were used only when they supported a visible claim\nthat the scope data could not safely support.",{"type":60,"tag":100,"props":1575,"children":1576},{},[1577],{"type":65,"value":1578},"Counts reconcile with the queried work item set.",{"type":60,"tag":100,"props":1580,"children":1581},{},[1582],{"type":65,"value":1583},"Empty sections are omitted.",{"type":60,"tag":100,"props":1585,"children":1586},{},[1587],{"type":65,"value":1588},"Charts are rendered only when their categories, values, units, and time ranges\nare available.",{"type":60,"tag":100,"props":1590,"children":1591},{},[1592],{"type":65,"value":1593},"Risk labels are explainable from visible Jira data.",{"type":60,"tag":100,"props":1595,"children":1596},{},[1597],{"type":65,"value":1598},"Source appendix includes exact JQL and field coverage for visible claims.",{"type":60,"tag":100,"props":1600,"children":1601},{},[1602],{"type":65,"value":1603},"No Jira write tools were used.",{"type":60,"tag":1605,"props":1606,"children":1607},"style",{},[1608],{"type":65,"value":1609},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1611,"total":1780},[1612,1629,1646,1653,1668,1679,1694,1713,1728,1742,1756,1766],{"slug":1613,"name":1613,"fn":1614,"description":1615,"org":1616,"tags":1617,"stars":25,"repoUrl":26,"updatedAt":1628},"capture-tasks-from-meeting-notes","create Jira tasks from meeting notes","Analyze meeting notes to find action items and create Jira tasks for assigned work. When an agent needs to: (1) Create Jira tasks or tickets from meeting notes, (2) Extract or find action items from notes or Confluence pages, (3) Parse meeting notes for assigned tasks, or (4) Analyze notes and generate tasks for team members. Identifies assignees, looks up account IDs, and creates tasks with proper context.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1618,1621,1622,1625],{"name":1619,"slug":1620,"type":15},"Automation","automation",{"name":17,"slug":18,"type":15},{"name":1623,"slug":1624,"type":15},"Meetings","meetings",{"name":1626,"slug":1627,"type":15},"Task Management","task-management","2026-07-12T07:58:45.323861",{"slug":1630,"name":1630,"fn":1631,"description":1632,"org":1633,"tags":1634,"stars":25,"repoUrl":26,"updatedAt":1645},"generate-status-report","generate project status reports for Confluence","Generate project status reports from Jira issues and publish to Confluence. When an agent needs to: (1) Create a status report for a project, (2) Summarize project progress or updates, (3) Generate weekly\u002Fdaily reports from Jira, (4) Publish status summaries to Confluence, or (5) Analyze project blockers and completion. Queries Jira issues, categorizes by status\u002Fpriority, and creates formatted reports for delivery managers and executives.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1635,1636,1638,1639,1642],{"name":9,"slug":8,"type":15},{"name":1637,"slug":37,"type":15},"Confluence",{"name":17,"slug":18,"type":15},{"name":1640,"slug":1641,"type":15},"Project Management","project-management",{"name":1643,"slug":1644,"type":15},"Reporting","reporting","2026-07-12T07:58:38.457696",{"slug":4,"name":4,"fn":5,"description":6,"org":1647,"tags":1648,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1649,1650,1651,1652],{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":1654,"name":1654,"fn":1655,"description":1656,"org":1657,"tags":1658,"stars":25,"repoUrl":26,"updatedAt":1667},"search-company-knowledge","search internal company knowledge bases","Search across company knowledge bases (Confluence, Jira, internal docs) to find and explain internal concepts, processes, and technical details. When an agent needs to: (1) Find or search for information about systems, terminology, processes, deployment, authentication, infrastructure, architecture, or technical concepts, (2) Search internal documentation, knowledge base, company docs, or our docs, (3) Explain what something is, how it works, or look up information, or (4) Synthesize information from multiple sources. Searches in parallel and provides cited answers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1659,1660,1663,1664],{"name":1637,"slug":37,"type":15},{"name":1661,"slug":1662,"type":15},"Enterprise Search","enterprise-search",{"name":17,"slug":18,"type":15},{"name":1665,"slug":1666,"type":15},"Knowledge Management","knowledge-management","2026-07-12T07:58:39.684132",{"slug":1669,"name":1669,"fn":1670,"description":1671,"org":1672,"tags":1673,"stars":25,"repoUrl":26,"updatedAt":1678},"spec-to-backlog","convert Confluence specifications to Jira backlogs","Automatically convert Confluence specification documents into structured Jira backlogs with Epics and implementation tickets. When an agent needs to: (1) Create Jira tickets from a Confluence page, (2) Generate a backlog from a specification, (3) Break down a spec into implementation tasks, or (4) Convert requirements into Jira issues. Handles reading Confluence pages, analyzing specifications, creating Epics with proper structure, and generating detailed implementation tickets linked to the Epic.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1674,1675,1676,1677],{"name":23,"slug":24,"type":15},{"name":1637,"slug":37,"type":15},{"name":17,"slug":18,"type":15},{"name":1640,"slug":1641,"type":15},"2026-07-12T07:58:37.200385",{"slug":1680,"name":1680,"fn":1681,"description":1682,"org":1683,"tags":1684,"stars":25,"repoUrl":26,"updatedAt":1693},"triage-issue","triage bug reports in Jira","Intelligently triage bug reports and error messages by searching for duplicates in Jira and offering to create new issues or add comments to existing ones. When an agent needs to: (1) Triage a bug report or error message, (2) Check if an issue is a duplicate, (3) Find similar past issues, (4) Create a new bug ticket with proper context, or (5) Add information to an existing ticket. Searches Jira for similar issues, identifies duplicates, checks fix history, and helps create well-structured bug reports.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1685,1688,1689,1690],{"name":1686,"slug":1687,"type":15},"Debugging","debugging",{"name":17,"slug":18,"type":15},{"name":1640,"slug":1641,"type":15},{"name":1691,"slug":1692,"type":15},"Triage","triage","2026-07-12T07:58:33.007343",{"slug":1695,"name":1695,"fn":1696,"description":1697,"org":1698,"tags":1699,"stars":1710,"repoUrl":1711,"updatedAt":1712},"forge-app-builder","build and deploy Atlassian Forge apps","Guides building, deploying, troubleshooting, and installing Atlassian Forge apps — custom extensions built with the Forge CLI (forge create, forge deploy, forge install). Use when the user wants to create a Forge app (issue panels, dashboard gadgets, Confluence macros, global pages), is encountering Forge CLI errors or deployment issues (e.g. forge install failures, environment errors), or needs help with Forge-specific concepts like resolvers, UI Kit, manifest scopes, or developer spaces. Do not use for general Jira configuration, automation rules, JQL queries, or Atlassian REST API usage outside of a Forge app context.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1700,1701,1704,1707],{"name":9,"slug":8,"type":15},{"name":1702,"slug":1703,"type":15},"CLI","cli",{"name":1705,"slug":1706,"type":15},"Deployment","deployment",{"name":1708,"slug":1709,"type":15},"Plugin Development","plugin-development",14,"https:\u002F\u002Fgithub.com\u002Fatlassian\u002Fforge-skills","2026-07-12T07:58:52.007851",{"slug":1714,"name":1714,"fn":1715,"description":1716,"org":1717,"tags":1718,"stars":1710,"repoUrl":1711,"updatedAt":1727},"forge-app-review","review Atlassian Forge app readiness","Performs a lightweight pre-release readiness review of Atlassian Forge apps across manifest\u002Fmodule wiring, architecture, runtime compatibility, dependency posture, tests, deploy readiness, and obvious security, cost, or reliability smells. Use when the user asks \"review my Forge app\", \"pre-deploy check\", \"is this app ready to ship\", \"review manifest\", \"general app review\", \"release readiness\", or asks for a broad quality pass. Do not use for deep security audits\u002FSAST\u002Fexploitability review, cost optimization, or diagnosing a known broken app; route those to forge-security-review, forge-cost-optimizer, or forge-debugger respectively.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1719,1720,1723,1724],{"name":9,"slug":8,"type":15},{"name":1721,"slug":1722,"type":15},"Code Analysis","code-analysis",{"name":1705,"slug":1706,"type":15},{"name":1725,"slug":1726,"type":15},"QA","qa","2026-07-12T07:58:50.744672",{"slug":1729,"name":1729,"fn":1730,"description":1731,"org":1732,"tags":1733,"stars":1710,"repoUrl":1711,"updatedAt":1741},"forge-connector","build Atlassian Forge Teamwork Graph connectors","Guides building and deploying Atlassian Forge Teamwork Graph connector apps that ingest external data into Atlassian's Teamwork Graph, making it searchable in Rovo Search and surfaced in Rovo Chat. Use when the user wants to build a Forge connector, ingest external data into Atlassian, connect a third-party tool (e.g. Google Drive, ServiceNow, Salesforce) to Atlassian, make external content searchable in Rovo, build a graph:connector module, use the @forge\u002Fteamwork-graph SDK, or implement onConnectionChange \u002F validateConnection functions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1734,1737,1740],{"name":1735,"slug":1736,"type":15},"API Development","api-development",{"name":1738,"slug":1739,"type":15},"Engineering","engineering",{"name":1661,"slug":1662,"type":15},"2026-07-12T07:58:48.520248",{"slug":1743,"name":1743,"fn":1744,"description":1745,"org":1746,"tags":1747,"stars":1710,"repoUrl":1711,"updatedAt":1755},"forge-cost-optimizer","optimize Atlassian Forge platform costs","Optimizes Atlassian Forge apps to reduce platform consumption and avoid unnecessary costs using Atlassian's \"Optimise Forge platform costs\" guidance. Use when the user asks to optimize Forge app costs, reduce Forge invocations, lower GB-seconds, reduce storage or log usage, tune memory, replace polling, improve scheduled triggers, reduce KVS writes, move work to the frontend, use bridge APIs, batch API calls, add caching, or evaluate Forge Remote trade-offs. By default, perform an audit first and offer to make the recommended changes after presenting the audit. Only modify files immediately when the user explicitly asks the agent to implement or apply optimizations.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1748,1749,1752],{"name":9,"slug":8,"type":15},{"name":1750,"slug":1751,"type":15},"Cost Optimization","cost-optimization",{"name":1753,"slug":1754,"type":15},"Operations","operations","2026-07-12T07:58:53.557299",{"slug":1757,"name":1757,"fn":1758,"description":1759,"org":1760,"tags":1761,"stars":1710,"repoUrl":1711,"updatedAt":1765},"forge-debugger","diagnose and fix Atlassian Forge apps","Diagnoses and fixes issues in Atlassian Forge apps. Use this skill whenever a Forge app has errors, crashes, shows blank UI, fails to deploy, doesn't appear after installation, has permission issues, or produces unexpected output. Trigger on any mention of forge logs, forge deploy errors, resolver errors, blank panels, missing scopes, Custom UI not rendering, production vs dev discrepancies, or any Jira\u002FConfluence app that \"stopped working\". Also trigger when the user asks to debug, troubleshoot, investigate, or fix a Forge app issue — even if they haven't used the word \"Forge\" but describe a Jira panel or Confluence macro acting up.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1762,1763,1764],{"name":9,"slug":8,"type":15},{"name":1686,"slug":1687,"type":15},{"name":1705,"slug":1706,"type":15},"2026-07-12T07:58:47.226713",{"slug":1767,"name":1767,"fn":1768,"description":1769,"org":1770,"tags":1771,"stars":1710,"repoUrl":1711,"updatedAt":1779},"forge-security-review","perform security reviews for Forge apps","Performs a white-box security review of Atlassian Forge apps using structured, Forge-specific security rules and evidence-driven reporting. Use when the user asks for a Forge security review, security audit, vuln assessment, pentest-style code review, authz review, tenant isolation analysis, web trigger hardening, or static analysis execution for a Forge app.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1772,1775,1776],{"name":1773,"slug":1774,"type":15},"Audit","audit",{"name":1721,"slug":1722,"type":15},{"name":1777,"slug":1778,"type":15},"Security","security","2026-07-12T07:58:54.806538",24,{"items":1782,"total":1826},[1783,1790,1798,1805,1812,1819],{"slug":1613,"name":1613,"fn":1614,"description":1615,"org":1784,"tags":1785,"stars":25,"repoUrl":26,"updatedAt":1628},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1786,1787,1788,1789],{"name":1619,"slug":1620,"type":15},{"name":17,"slug":18,"type":15},{"name":1623,"slug":1624,"type":15},{"name":1626,"slug":1627,"type":15},{"slug":1630,"name":1630,"fn":1631,"description":1632,"org":1791,"tags":1792,"stars":25,"repoUrl":26,"updatedAt":1645},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1793,1794,1795,1796,1797],{"name":9,"slug":8,"type":15},{"name":1637,"slug":37,"type":15},{"name":17,"slug":18,"type":15},{"name":1640,"slug":1641,"type":15},{"name":1643,"slug":1644,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1799,"tags":1800,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1801,1802,1803,1804],{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":1654,"name":1654,"fn":1655,"description":1656,"org":1806,"tags":1807,"stars":25,"repoUrl":26,"updatedAt":1667},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1808,1809,1810,1811],{"name":1637,"slug":37,"type":15},{"name":1661,"slug":1662,"type":15},{"name":17,"slug":18,"type":15},{"name":1665,"slug":1666,"type":15},{"slug":1669,"name":1669,"fn":1670,"description":1671,"org":1813,"tags":1814,"stars":25,"repoUrl":26,"updatedAt":1678},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1815,1816,1817,1818],{"name":23,"slug":24,"type":15},{"name":1637,"slug":37,"type":15},{"name":17,"slug":18,"type":15},{"name":1640,"slug":1641,"type":15},{"slug":1680,"name":1680,"fn":1681,"description":1682,"org":1820,"tags":1821,"stars":25,"repoUrl":26,"updatedAt":1693},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1822,1823,1824,1825],{"name":1686,"slug":1687,"type":15},{"name":17,"slug":18,"type":15},{"name":1640,"slug":1641,"type":15},{"name":1691,"slug":1692,"type":15},6]