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
**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
Background:
# Background:
[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]
# Questions:
[Outstanding questions, when applicable]
```
**Rules:**
- Use `Background:` and `Scope of change:` (lowercase "change")
- Each label on its own line; content on following line(s)
- Blank line between sections
- NEVER use plain-text labels like `Background:` on their own line without heading formatting
- Put section content in paragraphs and bullet lists immediately after each heading
- Blank line between sections when using markdown fallback
- Do NOT use `Description:` in Card Skill cards
- 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
- 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
- If the user provides explicit ACs, use their wording with AC1/AC2 labels
- 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:**
```text
@ -172,17 +197,19 @@ createJiraIssue(
projectKey="CASH",
issueTypeName="Story",
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",
additional_fields={
"customfield_10008": "CASH-1559",
"customfield_14823": { "accountId": "557058:6c212fb7-af94-48db-91a9-99ba87ceb3c5" },
"customfield_13100": { "accountId": "712020:1bf3c7f2-bc3b-4bab-bc48-d01e99358978" },
"customfield_10025": "AC1: ...\n\nAC2: ..."
"customfield_13100": { "accountId": "712020:1bf3c7f2-bc3b-4bab-bc48-d01e99358978" }
}
)
```
Then set acceptance criteria via `editJiraIssue` with ADF paragraphs for AC1, AC2, …
### CONT example
```
@ -191,13 +218,13 @@ createJiraIssue(
projectKey="CONT",
issueTypeName="Story",
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",
additional_fields={
"customfield_10008": "CONT-905",
"customfield_14823": { "accountId": "557058:6c212fb7-af94-48db-91a9-99ba87ceb3c5" },
"customfield_13100": { "accountId": "712020:4c9751b9-2abd-4280-b1e0-983334853223" },
"customfield_10025": "AC1: ...\n\nAC2: ..."
"customfield_13100": { "accountId": "712020:4c9751b9-2abd-4280-b1e0-983334853223" }
}
)
```
@ -220,13 +247,16 @@ Here's the Card Skill card I'll create:
**System Analyst:** Scott Phillips
**UAT Tester:** Tim Gosnik
**Description:**
Background:
**Description:** (section labels shown as headings)
# Background:
[background]
Scope of change:
# Scope of change:
[scope]
# Questions: (if applicable)
[questions]
**Acceptance Criteria:**
AC1: ...
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" |
| 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:, … |
| System Analyst | Scott Phillips (both boards) |
| UAT (CASH) | Tim Gosnik |