一键导入
odin-plan
Analyzes a TEN JIRA issue and posts an implementation plan as a comment. Does not implement anything — planning only.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Analyzes a TEN JIRA issue and posts an implementation plan as a comment. Does not implement anything — planning only.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | odin-plan |
| description | Analyzes a TEN JIRA issue and posts an implementation plan as a comment. Does not implement anything — planning only. |
Takes a TEN JIRA issue key (e.g. TEN-742), analyzes the problem, determines which repositories and code areas need changes, and posts an implementation plan as a JIRA comment. Does not implement anything or create PRs.
TEN. Never create or modify issues in other projects.--yes on acli edit, transition, and assign commands to avoid interactive prompts.Always use ADF JSON for JIRA comments. Always use --body-file to pass ADF — never pass ADF inline via --body (shell escaping will mangle the JSON and acli will post it as raw text).
/tmp/odin-comment.json).--body-file.cat > /tmp/odin-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/odin-comment.json
rm -f /tmp/odin-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"}]}
Link:
{"type":"text","text":"click here","marks":[{"type":"link","attrs":{"href":"https://example.com"}}]}
--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"
cat > /tmp/odin-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/odin-comment.json
rm -f /tmp/odin-comment.json
# List comments as JSON (for finding comment IDs)
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>
When invoked with a JIRA issue key (e.g. /odin-plan TEN-742):
Assign the issue to the person who invoked the skill and move it to "Under arbeid":
acli jira workitem assign --key TEN-742 --assignee "@me" --yes
acli jira workitem transition --key TEN-742 --status "Under arbeid" --yes
Fetch the full issue details to understand what needs to be done:
acli jira workitem view TEN-742 --json
Read the summary, description, and comments carefully. Understand:
Use the EUX Architecture document (navikt/eux-architecture README.md) to understand the platform and identify which repositories are involved.
To read the architecture overview:
cat eux-architecture/README.md
Or if not locally available:
gh api repos/navikt/eux-architecture/contents/README.md --jq '.content' | base64 -d
Based on the issue analysis:
Create a detailed plan that covers:
Be specific enough that someone (or odin-jira) can implement the plan without re-analyzing the issue.
There must be at most one "Odin's plan" comment on an issue. Before posting, find and delete any previous plan comment.
List all comments as JSON and look for one whose body contains the text "Odin's plan":
acli jira workitem comment list --key TEN-742 --json --paginate
Parse the JSON output to find any comment where the rendered body or ADF content contains "Odin's plan". Extract the comment id for each match.
If a matching comment is found, delete it:
acli jira workitem comment delete --key TEN-742 --id <comment-id>
If multiple matching comments exist (shouldn't happen, but be safe), delete all of them so only the new one remains.
Add a comment with the heading "Odin's plan". The plan MUST start with an ADF heading node with text "Odin's plan" so that odin-jira can find it.
Example structure:
cat > /tmp/odin-plan-comment.json << 'ENDOFJSON'
{"version":1,"type":"doc","content":[{"type":"heading","attrs":{"level":2},"content":[{"type":"text","text":"Odin's plan"}]},{"type":"heading","attrs":{"level":3},"content":[{"type":"text","text":"Problem"}]},{"type":"paragraph","content":[{"type":"text","text":"<concise problem summary>"}]},{"type":"heading","attrs":{"level":3},"content":[{"type":"text","text":"Affected repositories"}]},{"type":"bulletList","content":[{"type":"listItem","content":[{"type":"paragraph","content":[{"type":"text","text":"eux-neessi","marks":[{"type":"strong"}]},{"type":"text","text":" — <why this repo needs changes>"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"type":"text","text":"Changes"}]},{"type":"heading","attrs":{"level":4},"content":[{"type":"text","text":"eux-neessi"}]},{"type":"bulletList","content":[{"type":"listItem","content":[{"type":"paragraph","content":[{"type":"text","text":"<specific file and what to change>"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"type":"text","text":"Risks and considerations"}]},{"type":"bulletList","content":[{"type":"listItem","content":[{"type":"paragraph","content":[{"type":"text","text":"<edge case or concern>"}]}]}]}]}
ENDOFJSON
acli jira workitem comment create --key TEN-742 --body-file /tmp/odin-plan-comment.json
rm -f /tmp/odin-plan-comment.json
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).
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.
Analyzes a TEN JIRA issue, implements a fix across EUX repositories, creates PRs, and reports back to JIRA with results and reviewer tags.
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.