Card Skill: use Jira heading format for description sections

Require Background, Scope of change, and Questions as ADF level-1 headings
instead of plain text labels when creating cards via MCP.

Co-authored-by: ScottGits <ScottGits@users.noreply.github.com>
This commit is contained in:
Cursor Agent 2026-06-22 14:28:06 +00:00
parent 4d03b507f3
commit 4818abc8ab
No known key found for this signature in database

View file

@ -103,23 +103,47 @@ Draft a clear, professional Jira summary from the user's purpose.
## Description Format ## Description Format
**CRITICAL:** Description uses exactly these two labeled sections with trailing colons: **CRITICAL:** Section labels MUST be Jira **heading** elements (not plain text). Use ADF `heading` nodes at level 1 when creating or editing via MCP.
**Required sections:**
- `Background:` — heading
- `Scope of change:` — heading (lowercase "change")
**Optional section** (include when user requests open questions or outstanding items):
- `Questions:` — heading at the bottom of the description
**ADF pattern for each section header:**
```json
{
"type": "heading",
"attrs": { "level": 1 },
"content": [{ "type": "text", "text": "Background:" }]
}
```
**Markdown fallback** (if ADF is not used): prefix with `#` so Jira renders a header:
```markdown ```markdown
Background: # Background:
[Content from the user's purpose — context and why this work exists] [Content from the user's purpose — context and why this work exists]
Scope of change: # Scope of change:
[Content from the user's purpose — what will change or be delivered] [Content from the user's purpose — what will change or be delivered]
# Questions:
[Outstanding questions, when applicable]
``` ```
**Rules:** **Rules:**
- Use `Background:` and `Scope of change:` (lowercase "change") - NEVER use plain-text labels like `Background:` on their own line without heading formatting
- Each label on its own line; content on following line(s) - Put section content in paragraphs and bullet lists immediately after each heading
- Blank line between sections - Blank line between sections when using markdown fallback
- Do NOT use `Description:` in Card Skill cards - Do NOT use `Description:` in Card Skill cards
- Do NOT put acceptance criteria in the description — use the AC field (below) - Do NOT put acceptance criteria in the description — use the AC field (below)
- Use the user's purpose to populate both sections: expand into Background (context/why) and Scope of change (deliverables/what changes). If the purpose is a single short sentence, place it under Scope of change and write a brief Background derived from it - Use the user's purpose to populate both sections: expand into Background (context/why) and Scope of change (deliverables/what changes). If the purpose is a single short sentence, place it under Scope of change and write a brief Background derived from it
- When calling `createJiraIssue` or `editJiraIssue`, pass `contentFormat: "adf"` for the description field to preserve headings
--- ---
@ -140,6 +164,7 @@ AC3: [Testable outcome]
- Generate 25 ACs from the purpose when the user does not provide them - Generate 25 ACs from the purpose when the user does not provide them
- If the user provides explicit ACs, use their wording with AC1/AC2 labels - If the user provides explicit ACs, use their wording with AC1/AC2 labels
- One AC per line; blank line between ACs is optional - One AC per line; blank line between ACs is optional
- Pass `customfield_10025` as ADF (one paragraph per AC) via `editJiraIssue` with `contentFormat: "adf"` if plain text is rejected
**Example:** **Example:**
```text ```text
@ -172,17 +197,19 @@ createJiraIssue(
projectKey="CASH", projectKey="CASH",
issueTypeName="Story", issueTypeName="Story",
summary="[drafted summary]", summary="[drafted summary]",
description="Background:\n[background]\n\nScope of change:\n[scope]", description={ ADF doc with heading nodes for Background: and Scope of change: },
contentFormat="adf",
parent="CASH-1559", parent="CASH-1559",
additional_fields={ additional_fields={
"customfield_10008": "CASH-1559", "customfield_10008": "CASH-1559",
"customfield_14823": { "accountId": "557058:6c212fb7-af94-48db-91a9-99ba87ceb3c5" }, "customfield_14823": { "accountId": "557058:6c212fb7-af94-48db-91a9-99ba87ceb3c5" },
"customfield_13100": { "accountId": "712020:1bf3c7f2-bc3b-4bab-bc48-d01e99358978" }, "customfield_13100": { "accountId": "712020:1bf3c7f2-bc3b-4bab-bc48-d01e99358978" }
"customfield_10025": "AC1: ...\n\nAC2: ..."
} }
) )
``` ```
Then set acceptance criteria via `editJiraIssue` with ADF paragraphs for AC1, AC2, …
### CONT example ### CONT example
``` ```
@ -191,13 +218,13 @@ createJiraIssue(
projectKey="CONT", projectKey="CONT",
issueTypeName="Story", issueTypeName="Story",
summary="[drafted summary]", summary="[drafted summary]",
description="Background:\n[background]\n\nScope of change:\n[scope]", description={ ADF doc with heading nodes for Background: and Scope of change: },
contentFormat="adf",
parent="CONT-905", parent="CONT-905",
additional_fields={ additional_fields={
"customfield_10008": "CONT-905", "customfield_10008": "CONT-905",
"customfield_14823": { "accountId": "557058:6c212fb7-af94-48db-91a9-99ba87ceb3c5" }, "customfield_14823": { "accountId": "557058:6c212fb7-af94-48db-91a9-99ba87ceb3c5" },
"customfield_13100": { "accountId": "712020:4c9751b9-2abd-4280-b1e0-983334853223" }, "customfield_13100": { "accountId": "712020:4c9751b9-2abd-4280-b1e0-983334853223" }
"customfield_10025": "AC1: ...\n\nAC2: ..."
} }
) )
``` ```
@ -220,13 +247,16 @@ Here's the Card Skill card I'll create:
**System Analyst:** Scott Phillips **System Analyst:** Scott Phillips
**UAT Tester:** Tim Gosnik **UAT Tester:** Tim Gosnik
**Description:** **Description:** (section labels shown as headings)
Background: # Background:
[background] [background]
Scope of change: # Scope of change:
[scope] [scope]
# Questions: (if applicable)
[questions]
**Acceptance Criteria:** **Acceptance Criteria:**
AC1: ... AC1: ...
AC2: ... AC2: ...
@ -261,7 +291,7 @@ When the user asks to **update Card Skill** (change defaults, add fields, change
|------|-------| |------|-------|
| Invoke | `/card-skill` or "create using Card Skill" | | Invoke | `/card-skill` or "create using Card Skill" |
| Boards | CASH, CONT | | Boards | CASH, CONT |
| Description | `Background:` + `Scope of change:` | | Description | Heading format: `# Background:`, `# Scope of change:`, optional `# Questions:` (use ADF headings via MCP) |
| Acceptance Criteria | `customfield_10025` as AC1:, AC2:, … | | Acceptance Criteria | `customfield_10025` as AC1:, AC2:, … |
| System Analyst | Scott Phillips (both boards) | | System Analyst | Scott Phillips (both boards) |
| UAT (CASH) | Tim Gosnik | | UAT (CASH) | Tim Gosnik |