一键导入
jira-ten-qa
QA review of a TEN JIRA issue. Scores issue quality 1–10 and posts constructive feedback as a comment if the score is 7 or lower.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
QA review of a TEN JIRA issue. Scores issue quality 1–10 and posts constructive feedback as a comment if the score is 7 or lower.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generates a file showing how the content of a SED is mapped between Neessi-dto, ACL-SED and RINA-SED. Use this when asked to generate a SED flow mapping, sedFlyt, or field mapping for any SED type (e.g. H120, F001, H065).
Analyzes a TEN JIRA issue, implements a fix across EUX repositories, creates PRs, and reports back to JIRA with results and reviewer tags.
Analyzes a TEN JIRA issue and posts an implementation plan as a comment. Does not implement anything — planning only.
Interact with JIRA using acli. Create, search, view, edit, comment, and transition issues in the TEN project.
Pushes current branch to GitHub and triggers build/deploy workflows for EUX services. Safety: refuses to deploy from main. Frontend defaults to parallel.
Syncs eux-full-stack-dev.agent.md with current frontend and backend versions, patterns, and dependencies. Run when any part of the EUX stack changes.
| name | jira-ten-qa |
| description | QA review of a TEN JIRA issue. Scores issue quality 1–10 and posts constructive feedback as a comment if the score is 7 or lower. |
Takes a TEN JIRA issue key (e.g. TEN-500), evaluates how well the issue is written, scores it 1–10, and posts feedback as a JIRA comment if the score is 7 or lower.
TEN. Never touch issues in other projects.--body-file for ADF comments — never pass ADF inline via --body.| Score | Label | Meaning |
|---|---|---|
| 9–10 | Utmerket | All key fields well-documented. No improvement needed. |
| 8 | Bra | Minor gaps but fully actionable. No comment posted. |
| 7 | Akseptabel | Workable but noticeable gaps. Feedback posted. |
| 5–6 | Trenger forbedring | Several missing or unclear areas. |
| 3–4 | Mangelfull | Major information gaps. Hard to act on. |
| 1–2 | Utilstrekkelig | Almost no useful information. |
Evaluate each criterion on a 1–10 scale. The final score is the weighted average, rounded to the nearest integer.
If a criterion is not applicable (e.g. stack trace for a UX-only bug), redistribute its weight proportionally to the remaining criteria.
| # | Criterion | Weight | What to look for |
|---|---|---|---|
| 1 | Tittelkvalitet | 10% | Short, specific, uniquely identifies the problem |
| 2 | Problembeskrivelse | 20% | Clear explanation of what is broken |
| 3 | Forventet vs faktisk oppførsel | 20% | Both sides documented — what should happen and what happens instead |
| 4 | Reproduksjonssteg / kontekst | 15% | Steps to reproduce, environment, which SED/BUC type or service |
| 5 | Stacktrace / feilinformasjon | 15% | Technical evidence included. For UX/behavioral bugs where stack traces don't apply, evaluate whether visual/behavioral evidence is provided instead (screenshots, specific UI behavior). The weight stays the same. |
| 6 | Samsvar med issuetype | 10% | Content genuinely describes a bug, not a feature request or task |
| 7 | Påvirkning / alvorlighetsgrad | 10% | Who is affected, how often, how critical |
| # | Criterion | Weight | What to look for |
|---|---|---|---|
| 1 | Tittelkvalitet | 10% | Short, describes the feature or change |
| 2 | Mål / brukerbehov | 25% | Clear what should be built and for whom |
| 3 | Akseptansekriterier | 20% | Concrete conditions for "done" |
| 4 | Forretningskontekst | 15% | Why this matters, what problem it solves |
| 5 | Omfang | 15% | What's in/out, boundaries defined |
| 6 | Samsvar med issuetype | 10% | Content is a feature/enhancement, not a bug |
| 7 | Handlingsdyktighet | 5% | Can someone start working without asking questions |
| # | Criterion | Weight | What to look for |
|---|---|---|---|
| 1 | Tittelkvalitet | 10% | Short, identifies the initiative |
| 2 | Overordnet mål | 25% | What the epic achieves overall |
| 3 | Nedbrytning / struktur | 20% | Sub-areas or sub-issues identified |
| 4 | Forretningsverdi | 20% | Why this initiative matters |
| 5 | Suksesskriterier | 15% | How to measure if the epic succeeded |
| 6 | Samsvar med issuetype | 10% | Content is truly epic-level, not a single story |
| # | Criterion | Weight | What to look for |
|---|---|---|---|
| 1 | Tittelkvalitet | 15% | Short, descriptive |
| 2 | Oppgavebeskrivelse | 30% | Clear what needs to be done |
| 3 | Kontekst / motivasjon | 20% | Why this task exists |
| 4 | Ferdigkriterier | 20% | How to verify completion |
| 5 | Samsvar med issuetype | 15% | Content matches the task-like nature |
Always use ADF JSON for JIRA comments. Always use --body-file — never pass ADF inline via --body.
/tmp/jira-qa-comment.json).--body-file.cat > /tmp/jira-qa-comment.json << 'ENDOFJSON'
{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Comment text"}]}]}
ENDOFJSON
acli jira workitem comment create --key TEN-123 --body-file /tmp/jira-qa-comment.json
rm -f /tmp/jira-qa-comment.json
{"version":1,"type":"doc","content":[...nodes]}
Paragraph:
{"type":"paragraph","content":[{"type":"text","text":"Some text"}]}
Heading (level 1-3):
{"type":"heading","attrs":{"level":3},"content":[{"type":"text","text":"Title"}]}
Bullet list:
{"type":"bulletList","content":[
{"type":"listItem","content":[{"type":"paragraph","content":[{"type":"text","text":"Item"}]}]}
]}
Bold text:
{"type":"text","text":"bold text","marks":[{"type":"strong"}]}
Rule (horizontal line):
{"type":"rule"}
Table:
{"type":"table","attrs":{"isNumberColumnEnabled":false,"layout":"default"},"content":[
{"type":"tableRow","content":[
{"type":"tableHeader","content":[{"type":"paragraph","content":[{"type":"text","text":"Header"}]}]},
{"type":"tableHeader","content":[{"type":"paragraph","content":[{"type":"text","text":"Header"}]}]}
]},
{"type":"tableRow","content":[
{"type":"tableCell","content":[{"type":"paragraph","content":[{"type":"text","text":"Cell"}]}]},
{"type":"tableCell","content":[{"type":"paragraph","content":[{"type":"text","text":"Cell"}]}]}
]}
]}
--body — always write to a temp file and use --body-file.<< 'ENDOFJSON') to prevent shell variable expansion.acli jira workitem view TEN-123
acli jira workitem view TEN-123 --json
acli jira workitem view TEN-123 --fields "summary,status,comment,assignee,reporter,description"
# List comments as JSON
acli jira workitem comment list --key TEN-123 --json --paginate
# Delete a comment by ID
acli jira workitem comment delete --key TEN-123 --id <comment-id>
cat > /tmp/jira-qa-comment.json << 'ENDOFJSON'
{"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Comment text"}]}]}
ENDOFJSON
acli jira workitem comment create --key TEN-123 --body-file /tmp/jira-qa-comment.json
rm -f /tmp/jira-qa-comment.json
When invoked with a JIRA issue key (e.g. /jira-ten-qa TEN-500):
Retrieve the full issue details:
acli jira workitem view TEN-500 --json
Extract and note:
Then fetch all comments explicitly — reporters often add crucial context (stack traces, reproduction steps, clarifications) in follow-up comments:
acli jira workitem comment list --key TEN-500 --json --paginate
Read through all comments. Context added in comments counts toward the scoring evaluation (e.g. if the description lacks reproduction steps but a comment provides them, credit that).
Using the scoring criteria for the matching issue type (see tables above):
Be thorough: read the entire description and all comments fetched in Step 1. Context added in comments counts toward the evaluation.
Always print the score and a summary to the terminal, regardless of score.
Format:
═══════════════════════════════════════
QA Review: TEN-500 (Bug)
Score: 6/10 — Trenger forbedring
═══════════════════════════════════════
Criteria breakdown:
Tittelkvalitet: 7/10 — OK but could be more specific
Problembeskrivelse: 4/10 — Very vague, missing details
Forventet vs faktisk: 3/10 — Not documented
Reproduksjonssteg: 8/10 — Good context provided
Stacktrace: 6/10 — Partial error message
Samsvar med issuetype: 9/10 — Correct type
Påvirkning: 5/10 — Not mentioned
Action: Posting feedback comment to JIRA...
For score ≥ 8 (raw > 7.0):
═══════════════════════════════════════
QA Review: TEN-500 (Story)
Score: 9/10 — Utmerket
═══════════════════════════════════════
Criteria breakdown:
...
✅ Godt skrevet issue! Ingen kommentar lagt til i JIRA.
If an old QA comment was cleaned up, also print:
🧹 Fjernet gammel QA-kommentar fra TEN-500 (issue er nå god nok).
Always run this step — both for high scores (cleanup only) and low scores (cleanup before posting new).
acli jira workitem comment list --key TEN-500 --json --paginate
Parse the JSON output. Look for any comment whose body contains a heading node with text 🔍 jira-ten-qa. This is the strict identifier — do not match on other mentions of the skill name in unrelated comments. Also verify the comment was authored by the current bot/user when possible.
If a matching comment is found:
acli jira workitem comment delete --key TEN-500 --id <comment-id>
Delete all matches (there should be at most one, but be safe).
If raw average > 7.0: Stop here after cleanup. The stale comment is removed and no new comment is posted.
If raw average ≤ 7.0: Proceed to Step 6.
Build an ADF comment with this structure:
🔍 jira-ten-qa (level 2) — this is the identifier for future replacementPoeng: X/10 — <one-line summary of why>Forslag til forbedring (level 3)Write the ADF to a temp file and post:
cat > /tmp/jira-qa-comment.json << 'ENDOFJSON'
<ADF JSON here>
ENDOFJSON
acli jira workitem comment create --key TEN-500 --body-file /tmp/jira-qa-comment.json
rm -f /tmp/jira-qa-comment.json
Verify the comment was posted successfully. If it failed, report the error to the terminal.
Print to terminal:
✅ Feedback posted to TEN-500. Score: 6/10.