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.
63
73%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./groups/landscape/skills/landscape-jira/SKILL.mdAlways 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 DESCRead 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 = UnresolvedFind child stories under a parent:
project = LNDENG AND parent = LNDENG-XXXX ORDER BY created ASCFind stories created by you recently:
project = LNDENG AND reporter = currentUser() AND created >= -7d ORDER BY created DESCAC 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.c5644f6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.