with one click
landscape-jira
// Creates well-formed Jira issues in the LNDENG project (warthogs.atlassian.net) — stories, epics, objectives, tasks, spikes, bugs, and more — with correct field mappings, sprint assignment, and acceptance criteria.
// Creates well-formed Jira issues in the LNDENG project (warthogs.atlassian.net) — stories, epics, objectives, tasks, spikes, bugs, and more — with correct field mappings, sprint assignment, and acceptance criteria.
Builds and parses structured retrospective artifact folders for troubleshooting, incident review, and delivery retros. Use this skill when capturing session context, synthesizing external context (GitHub, Jira, Mattermost, logs), querying prior retrospectives, or preparing downstream inputs for OKB entries, postmortems, and agent/skills/instruction improvements.
Enforces project documentation style guide compliance for tone, voice, terminology, punctuation, and formatting. Use when checking documentation style or validating MyST/reST syntax. Cites specific style guide violations.
Generates Custom Agent files (.github/agents/*.agent.md) with persona-based configurations, specialized tool sets, and role-specific cognitive architectures. Use when the user requests a specialized role or perspective (Security Auditor, Documentation Writer, Release Engineer, etc.). Creates agents with defined identity, constrained tools, and thinking processes aligned to their role. Not for general capabilities—use generate-agent-skills for those.
Architects, generates, and validates Agent Skills. Enforces specification and best practices. Used any time an agent skill must be created or updated.
Generates path-specific instruction files (.github/instructions/*.md) with JIT loading via applyTo glob patterns. Performs LLM-driven repository analysis to discover file patterns and extract scope-specific rules. Use when the user requests scoped, framework-specific, or directory-specific rules for testing, components, docs, config files, or language-specific files to prevent context pollution. Works for code, documentation, configuration, and data files.
Generates reusable Prompt Template files (.github/prompts/*.prompt.md) with variable substitution for ad-hoc, high-frequency tasks. Use when the user needs quick, repeatable prompts for common operations (explain code, fix bug, add tests, refactor, document). Creates templates with handlebars variables, optimized context structure, and strict output constraints. Not for complex workflows (use skills) or persistent roles (use agents).
| name | landscape-jira |
| description | Creates well-formed Jira issues in the LNDENG project (warthogs.atlassian.net) — stories, epics, objectives, tasks, spikes, bugs, and more — with correct field mappings, sprint assignment, and acceptance criteria. |
Always pass warthogs.atlassian.net as cloudId to every Atlassian MCP tool call.
| Type | ID | Hierarchy level | Notes |
|---|---|---|---|
| Theme | 10386 | 3 | Strategic, 1–3 year horizon |
| Objective | 10390 | 2 | OKR-level |
| Epic | 10000 | 1 | Must be broken into stories |
| Project-Risk | 12391 | 1 | Risk tracking |
| Project-Issue | 12392 | 1 | Materialized risks / blockers |
| Story | 10002 | 0 | Default work item |
| Task | 10013 | 0 | Small, distinct piece of work |
| Spike | 10037 | 0 | Research / investigation / prototyping |
| Bug | 10015 | 0 | Problem or error |
| Sub-task | 10014 | -1 | Part of a parent task |
Pass as: "issuetype": {"id": "<id>"}.
Typical hierarchy: Theme → Objective → Epic → Story/Task/Spike/Bug → Sub-task
| Field | Field ID | Notes |
|---|---|---|
| Summary | summary | Required |
| Description | description | ADF format for API v3 |
| Acceptance Criteria | customfield_10614 | ADF format — NOT a plain string. Required for Epics/Objectives, recommended for Stories. See format below. |
| Story Points | customfield_10024 | Number. Do NOT use customfield_10016 (legacy read-only) |
| Sprint | customfield_10020 | Numeric sprint ID — plain integer, not an object. Not applicable to Epics/Objectives/Themes. |
| Assignee | assignee | {"accountId": "..."} |
| Parent | parent | {"key": "LNDENG-XXXX"} — any parent issue type |
| Issue Type | issuetype | {"id": "<id>"} — see table above |
| Labels | labels | Array of strings |
Never hardcode sprint IDs — they change every two weeks. Always look up the active sprint at call time:
project = LNDENG AND sprint in openSprints() ORDER BY created DESC
Read customfield_10020[0].id from any result. That integer is the sprint ID to pass.
For the next/upcoming sprint use sprint in futureSprints() instead.
customfield_10614 requires Atlassian Document Format (ADF), not a plain string. A plain string will error: "Operation value must be an Atlassian Document".
Bullet list template:
{
"type": "doc",
"version": 1,
"content": [
{
"type": "bulletList",
"content": [
{
"type": "listItem",
"content": [{"type": "paragraph", "content": [{"type": "text", "text": "Criterion one"}]}]
},
{
"type": "listItem",
"content": [{"type": "paragraph", "content": [{"type": "text", "text": "Criterion two"}]}]
}
]
}
]
}
Each bullet is a separate listItem. Do not use \n in text nodes — use multiple listItem or paragraph nodes instead. Literal \n characters render as the string \n in Jira, not a line break.
Sprint must be a plain integer, not an object:
"customfield_10020": 30952
{"id": 30952} will error: "Number value expected as the Sprint id."
Plain strings work via the MCP wrapper. For multi-paragraph content, use ADF — multiple paragraph nodes, never \n literals inside text nodes.
Find open stories assigned to you in the current sprint:
project = LNDENG AND sprint in openSprints() AND assignee = currentUser() AND resolution = Unresolved
Find child stories under a parent:
project = LNDENG AND parent = LNDENG-XXXX ORDER BY created ASC
Find stories created by you recently:
project = LNDENG AND reporter = currentUser() AND created >= -7d ORDER BY created DESC
AC is about building the right product. DoD is about building it right. Don't conflate them.
AC are required for Epics and Objectives, recommended for Stories.
doc > bulletList > listItem > paragraph > text. Most common failure.{"id": ...}.customfield_10024. The field customfield_10016 is read-only legacy, don't write to it.parent: {"key": "LNDENG-XXXX"}. Works for epics and objectives. customfield_10014 is the read-only epic link.\n in text nodes — use separate ADF nodes for line breaks; \n renders as a literal backslash-n.customfield_10614 only. Description = context/approach. Never duplicate AC into the description.