Skip to main content

jiracli

Jira CLI for issue tracking, project management, and sprint/board operations on goqual-dev.atlassian.net. Supports multiple projects (MAT, DEVT, IOT, etc.). Also fetches Confluence wiki pages โ€” import an Atlassian wiki URL (tinyLink or full /wiki/spaces/.../pages/<id>) into a local Markdown file with KST timestamps via the bundled confluence_ingest.py script (Confluence to Markdown, Atlassian wiki ingestion, wiki page import).

Quellinformationen

Repository
junghan0611/agent-config
Letzte Quellaktivitรคt
11. Juni 2026 um 07:45
Erkannte Sprache von SKILL.md
Koreanisch
Sterne
5
Forks
0

Installationsoptionen

StandardmรครŸig ist der Prompt ausgewรคhlt, der zuerst die Quelle prรผft. Sie kรถnnen zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prรผfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich fรผr eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen ยท Schreibgeschรผtzte Vorschau
name
jiracli
description
Jira CLI for issue tracking, project management, and sprint/board operations on goqual-dev.atlassian.net. Supports multiple projects (MAT, DEVT, IOT, etc.). Also fetches Confluence wiki pages โ€” import an Atlassian wiki URL (tinyLink or full /wiki/spaces/.../pages/<id>) into a local Markdown file with KST timestamps via the bundled confluence_ingest.py script (Confluence to Markdown, Atlassian wiki ingestion, wiki page import).
# Jira CLI (jira-cli-go) ํšŒ์‚ฌ Jira Cloud(`goqual-dev.atlassian.net`) ์ ‘๊ทผ์šฉ CLI ์Šคํ‚ฌ. ## ํ™˜๊ฒฝ - **๋„๊ตฌ**: `jira` (ankitpokhrel/jira-cli v1.7.0, NixOS `jira-cli-go`) - **์ธ์ฆ**: `JIRA_API_TOKEN` in `~/.env.local` (export ํ•„์ˆ˜) - **์„ค์ •**: `~/.config/.jira/.config.yml` - **๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ**: MAT (๊ฒฝ๋™ Matter) - **์‚ฌ์šฉ์ž**: jhkim2@goqual.com ## ํ•„์ˆ˜: ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋กœ๋“œ **๋ชจ๋“  ๋ช…๋ น ์ „์— ๋ฐ˜๋“œ์‹œ `source ~/.env.local`์„ ์‹คํ–‰ํ•œ๋‹ค.** ```bash source ~/.env.local && jira <command> ``` ## ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก (์ฃผ์š”) | KEY | ์ด๋ฆ„ | ํƒ€์ž… | |-----|------|------| | MAT | ๊ฒฝ๋™ Matter | classic (kanban) | | DEVT | ๊ฐœ๋ฐœํŒ€ | classic | | IOT | IOTWORKS | classic | | GP1 | ํ—ค์ดํ™ˆ B2C ์•ฑ ๊ฐœ๋ฐœ | classic | | B2BVOC | [B2B] Hejhome VOC | classic | | GOQUALPRJ | Goqual Project | classic | ## ์ด์Šˆ ์กฐํšŒ ```bash # ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ(MAT) ์ด์Šˆ ๋ชฉ๋ก source ~/.env.local && jira issue list --plain # ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์ด์Šˆ source ~/.env.local && jira issue list -p DEVT --plain # ๋‚˜์—๊ฒŒ ํ• ๋‹น๋œ ์ด์Šˆ source ~/.env.local && jira issue list -a$(jira me) --plain # ์ƒํƒœ๋ณ„ ํ•„ํ„ฐ source ~/.env.local && jira issue list -s"๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘" --plain # JQL ์ง์ ‘ ์‚ฌ์šฉ source ~/.env.local && jira issue list -q"summary ~ Matter" --plain # ์ด์Šˆ ์ƒ์„ธ ๋ณด๊ธฐ source ~/.env.local && jira issue view MAT-77 --plain # ์ตœ๊ทผ ์ƒ์„ฑ๋œ ์ด์Šˆ source ~/.env.local && jira issue list --created month --plain # ํŠน์ • ๋‹ด๋‹น์ž source ~/.env.local && jira issue list -a"ํ˜„์Šน์šฐ" --plain ``` ## ์ด์Šˆ ์ƒ์„ฑ/์ˆ˜์ • ```bash # ์ด์Šˆ ์ƒ์„ฑ (์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ โ€” ์—์ด์ „ํŠธ์—์„œ๋Š” ๋น„์ถ”์ฒœ) source ~/.env.local && jira issue create # ์ด์Šˆ ์ƒํƒœ ๋ณ€๊ฒฝ (move) source ~/.env.local && jira issue move MAT-77 "๊ฐœ๋ฐœ ์™„๋ฃŒ" # ์ด์Šˆ ํ• ๋‹น source ~/.env.local && jira issue assign MAT-77 "jhkim2@goqual.com" # ์ฝ”๋ฉ˜ํŠธ ์ถ”๊ฐ€ source ~/.env.local && jira issue comment add MAT-77 "์ฝ”๋ฉ˜ํŠธ ๋‚ด์šฉ" # ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๊ธฐ source ~/.env.local && jira open MAT-77 ``` ## ๋ณด๋“œ/์Šคํ”„๋ฆฐํŠธ ```bash # ๋ณด๋“œ ๋ชฉ๋ก source ~/.env.local && jira board list # ์Šคํ”„๋ฆฐํŠธ ๋ชฉ๋ก (scrum ๋ณด๋“œ๋งŒ) source ~/.env.local && jira sprint list # ์—ํ”ฝ ๋ชฉ๋ก source ~/.env.local && jira epic list --plain ``` ## ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ```bash # ์ „์ฒด ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก source ~/.env.local && jira project list # ์„œ๋ฒ„ ์ •๋ณด source ~/.env.local && jira serverinfo # ๋‚ด ๊ณ„์ • source ~/.env.local && jira me ``` ## ์ถœ๋ ฅ ํฌ๋งท - `--plain`: ํƒญ ๊ตฌ๋ถ„ ํ…์ŠคํŠธ ์ถœ๋ ฅ (ํŒŒ์‹ฑ/์Šคํฌ๋ฆฝํŒ…์šฉ). **์—์ด์ „ํŠธ์—์„œ๋Š” ํ•ญ์ƒ --plain ์‚ฌ์šฉ ๊ถŒ์žฅ.** - ๊ธฐ๋ณธ: ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ TUI (ํ„ฐ๋ฏธ๋„ ์ง์ ‘ ์‚ฌ์šฉ ์‹œ) - `issue view`๋Š” `--plain` ์—†์ด๋„ ์ƒ์„ธ ์ถœ๋ ฅ ## ์œ ์šฉํ•œ ์กฐํ•ฉ ์˜ˆ์‹œ ```bash # ํ”„๋กœ์ ํŠธ๋ณ„ ์ƒํƒœ ์š”์•ฝ source ~/.env.local && jira issue list -p MAT --plain | tail -n +2 | awk -F'\t' '{print $NF}' | sort | uniq -c | sort -rn # ์ง„ํ–‰ ์ค‘์ธ ๋‚ด ์ด์Šˆ๋งŒ source ~/.env.local && jira issue list -a$(jira me) -s"๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘" --plain # ์ด๋ฒˆ ์ฃผ ์ƒ์„ฑ๋œ ์ด์Šˆ source ~/.env.local && jira issue list --created week --plain ``` ## ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋กœ ์ „ํ™˜ `-p` ํ”Œ๋ž˜๊ทธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ์„ค์ • ํŒŒ์ผ์˜ `project.key`๋ฅผ ๋ณ€๊ฒฝ: ```bash # ํ”Œ๋ž˜๊ทธ๋กœ ์ž„์‹œ ์ „ํ™˜ source ~/.env.local && jira issue list -p DEVT --plain # ์„ค์ • ํŒŒ์ผ๋กœ ์˜๊ตฌ ์ „ํ™˜ # ~/.config/.jira/.config.yml ์˜ project.key ์ˆ˜์ • ``` ## Confluence URL โ†’ Markdown `scripts/confluence_ingest.py` โ€” Atlassian Cloud Confluence ํŽ˜์ด์ง€(tinyLink ๋˜๋Š” ์ •๊ทœ `/wiki/spaces/.../pages/<id>` URL)๋ฅผ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์ ธ์™€ YAML frontmatter + Markdown ๋ณธ๋ฌธ์œผ๋กœ ์ €์žฅ. `JIRA_API_TOKEN`์ด Atlassian ํ†ตํ•ฉ ํ† ํฐ์ด๋ผ ๋ณ„๋„ Confluence ํ† ํฐ ๋ถˆํ•„์š”. **stdlib only** (urllib + base64 + regex), `pandoc` ํ•„์š”. ### ๋™์ž‘ ์š”์•ฝ - URL ์ž…๋ ฅ (tinyLink resolve ํ›„ pageId ์ถ”์ถœ) - Confluence REST v2 (`/wiki/api/v2/pages/{id}?body-format=storage`) ํ˜ธ์ถœ - storage XHTML cleanup (`ac:`, `ri:`, `local-id`, `data-*` ๋ฉ”ํƒ€ ์ œ๊ฑฐ) - pandoc `html โ†’ gfm` ๋ณ€ํ™˜, NFC ์ •๊ทœํ™” - YAML frontmatter 7ํ•„๋“œ (title / source / source_id / source_version / source_modified / fetched_at / tags) ๋ชจ๋‘ **KST ํ‘œ์‹œ** - ๊ฐ™์€ path **๋ฎ์–ด์“ฐ๊ธฐ** (idempotent โ€” ์œ„ํ‚ค ๊ฐฑ์‹  ์‹œ ๊ฐ™์€ ํŒŒ์ผ ์žฌ์‹คํ–‰) - ๋ณธ๋ฌธ stdout ๋ฏธ๋…ธ์ถœ โ€” ํŒŒ์ผ ๊ฒฝ๋กœ + heading outline๋งŒ ์ถœ๋ ฅ ### ์‚ฌ์šฉ๋ฒ• ```bash source ~/.env.local && python3 \ ~/repos/gh/agent-config/skills/jiracli/scripts/confluence_ingest.py \ <URL> [--out DIR] [--filename NAME] [--tags t1,t2] [--format storage|view|export_view] ``` | ์˜ต์…˜ | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… | |------|--------|------| | `--out` | cwd | ์ถœ๋ ฅ ๋””๋ ‰ํ† ๋ฆฌ | | `--filename` | `confluence-<pageId>.md` | ํŒŒ์ผ๋ช… | | `--tags` | (none) | ์ถ”๊ฐ€ ํƒœ๊ทธ, ์ฝค๋งˆ ๋ถ„๋ฆฌ. ๊ธฐ๋ณธ `confluence` + ํ˜ธ์ŠคํŠธ ํƒœ๊ทธ(์˜ˆ `goqualdev`)๋Š” ํ•ญ์ƒ ํฌํ•จ | | `--format` | `storage` | Confluence body-format (`storage` / `view` / `export_view`) | ### ์ธ์ฆ - `JIRA_API_TOKEN`: `~/.env.local`์˜ export ๊ฐ’ (Atlassian Cloud ํ†ตํ•ฉ ํ† ํฐ) - ์‚ฌ์šฉ์ž ์ด๋ฉ”์ผ: `~/.config/.jira/.config.yml`์˜ `login:` ํ•„๋“œ์—์„œ ์ถ”์ถœ (๋˜๋Š” `JIRA_USER_EMAIL` env override) ### ํ˜ธ์ถœ ์˜ˆ์‹œ โ€” ์˜๋ฌธ ๋Œ€๋ฌธ์ž ํŒŒ์ผ๋ช…์œผ๋กœ repo ํ™ˆ์— ์ €์žฅ ```bash source ~/.env.local && python3 \ ~/repos/gh/agent-config/skills/jiracli/scripts/confluence_ingest.py \ '<wiki-url-or-tinylink>' \ --out ~/repos/gh/<your-repo> \ --filename DOC.md \ --tags <topic>,<area> ``` โ†’ `~/repos/gh/<your-repo>/DOC.md` ์ƒ์„ฑ/๊ฐฑ์‹ . ํ‘œ์ค€ ์ถœ๋ ฅ์€ ํŒŒ์ผ ๊ฒฝ๋กœ + heading ๊ตฌ์กฐ๋งŒ (๋ณธ๋ฌธ ๋ฏธ๋…ธ์ถœ โ€” ๋ฏผ๊ฐ ํŽ˜์ด์ง€ ๊ฐ€๋Šฅ). ### ์ฃผ์˜ - ์–‘๋ฐฉํ–ฅ sync **์•„๋‹˜**. ๋‹จ๋ฐฉํ–ฅ ๊ฐ€์ ธ์˜ค๊ธฐ โ€” ๋กœ์ปฌ ํŽธ์ง‘์€ Confluence์— ๋ฐ˜์˜ ์•ˆ๋จ. - ๋ณธ๋ฌธ์ด ๋ฏผ๊ฐํ•  ์ˆ˜ ์žˆ์Œ โ€” ์Šคํฌ๋ฆฝํŠธ๋Š” stdout์— ๋ณธ๋ฌธ์„ ํ† ํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ๊ณต๊ฐœ repo์— commitํ•˜๊ธฐ ์ „ ๋‚ด์šฉ ํ™•์ธ ํ•„์ˆ˜. - `pandoc`์ด ๋ชจ๋ฅด๋Š” Confluence macro๋Š” cleanup ์ •๊ทœ์‹์œผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋งŒ ๋–จ๊ตฐ ๋’ค ๋ณ€ํ™˜. ์ผ๋ถ€ macro ๋ณธ๋ฌธ์€ plain text๋กœ ๋‚จ๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ์Œ. ## Confluence ํŽ˜์ด์ง€ ์ƒ์„ฑ/๊ฐฑ์‹ /์‚ญ์ œ (publish) `scripts/confluence_publish.py` โ€” `confluence_ingest.py`(์ฝ๊ธฐ)์˜ **์“ฐ๊ธฐ ์ง**. `jira` CLI์™€ ingest๋Š” ์ฝ๊ธฐ๋งŒ ๋˜๋ฏ€๋กœ ํŽ˜์ด์ง€ **์ƒ์„ฑ**์€ REST v2 write ์—”๋“œํฌ์ธํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ทธ๊ฑธ ๊ฐ์‹ผ๋‹ค โ€” **ํด๋กœ๋“œ์ฝ”๋“œ ๋นŒํŠธ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ถˆํ•„์š”** (stdlib only, urllib + base64 + optional pandoc). ์ธ์ฆ์€ ingest์™€ ๋™์ผ (`JIRA_API_TOKEN` + `~/.config/.jira/.config.yml` `login:`). ### ๋ณธ๋ฌธ ํฌ๋งท - Confluence **storage XHTML**. `--body-file`๋กœ storage HTML ์ง์ ‘ ์ „๋‹ฌ์ด ๊ฐ€์žฅ ์ •ํ™•. - `--md` ์ฃผ๋ฉด markdown์„ pandoc(gfmโ†’html)์œผ๋กœ ๋ณ€ํ™˜(YAML front matterยท`{#anchor}` ์ž๋™ ์ œ๊ฑฐ). ๋‹จ status lozengeยทinfo panel์€ markdown์œผ๋กœ ํ‘œํ˜„ ๋ถˆ๊ฐ€ โ†’ storage ๋งคํฌ๋กœ ์ง์ ‘: - status: `<ac:structured-macro ac:name="status"><ac:parameter ac:name="colour">Green</ac:parameter><ac:parameter ac:name="title">์™„๋ฃŒ</ac:parameter></ac:structured-macro>` (colour: Grey/Green/Yellow/Red/Blue) - panel: `<ac:structured-macro ac:name="info"><ac:rich-text-body><p>โ€ฆ</p></ac:rich-text-body></ac:structured-macro>` - ํƒ€์ž„๋ผ์ธ ๋“ฑ ํ‘œ๋Š” Confluence **๋„ค์ดํ‹ฐ๋ธŒ `<table>`**. MermaidยทRoadmap Planner ๋งคํฌ๋กœ๋Š” ์ŠคํŽ˜์ด์Šค ๋ฏธ์„ค์น˜/REST ๊ฑฐ๋ถ€๋ผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ### ์‚ฌ์šฉ๋ฒ• ```bash # ์ƒ์„ฑ โ€” ํด๋”(parentId) ์•„๋ž˜, ์ŠคํŽ˜์ด์Šค๋Š” key๋กœ source ~/.env.local && python3 \ ~/repos/gh/agent-config/skills/jiracli/scripts/confluence_publish.py \ --space-key CK7cJZ8jrCka --parent-id 264503298 \ --title "[์‚ฌ๋‚ด] ํ”„๋กœ์ ํŠธ X ํ˜„ํ™ฉ" --body-file page.storage.html --json # markdown ๋ณธ๋ฌธ ์ž๋™ ๋ณ€ํ™˜ โ€ฆ --title "โ€ฆ" --body-file page.md --md # ๊ฐฑ์‹  (version ์ž๋™ +1) โ€ฆ --page-id 264339520 --title "โ€ฆ" --body-file page.storage.html --message "ํƒ€์ž„๋ผ์ธ ๊ฐฑ์‹ " # ์‚ญ์ œ (ํœด์ง€ํ†ต) / ์˜๊ตฌ์‚ญ์ œ โ€ฆ --page-id <ID> --delete # trash โ€ฆ --page-id <ID> --delete --purge # ์™„์ „ ์ œ๊ฑฐ ``` | ์˜ต์…˜ | ์„ค๋ช… | |------|------| | `--title` | ํŽ˜์ด์ง€ ์ œ๋ชฉ (์ƒ์„ฑ/๊ฐฑ์‹  ํ•„์ˆ˜) | | `--body-file` / `--body-html` | ๋ณธ๋ฌธ (storage HTML, ๋˜๋Š” `--md`์™€ ํ•จ๊ป˜ markdown) | | `--md` | ๋ณธ๋ฌธ์„ markdown์œผ๋กœ ๋ณด๊ณ  pandoc ๋ณ€ํ™˜ | | `--space-key` / `--space-id` | ์ŠคํŽ˜์ด์Šค (key๋Š” ์ž๋™์œผ๋กœ id ์กฐํšŒ) | | `--parent-id` | ๋ถ€๋ชจ ํŽ˜์ด์ง€/ํด๋” id (๊ทธ ์•„๋ž˜ ์ƒ์„ฑ) | | `--page-id` | ๊ธฐ์กด ํŽ˜์ด์ง€ id โ†’ **๊ฐฑ์‹ ** ๋ชจ๋“œ | | `--delete` / `--purge` | ์‚ญ์ œ / ์˜๊ตฌ์‚ญ์ œ (v1 API โ€” v2 delete๋Š” 500 ๋–จ์–ด์ง) | | `--message` | ๋ฒ„์ „ ๋ฉ”์‹œ์ง€ (๊ฐฑ์‹ ) | | `--json` / `--dry-run` | JSON ์ถœ๋ ฅ / API ํ˜ธ์ถœ ์—†์ด payload๋งŒ | ### ๋™์ž‘/๊ฒ€์ฆ - ์ƒ์„ฑยท๊ฐฑ์‹  ํ›„ page id๋ฅผ GETํ•ด `parentType`/`parentId`/`version`์„ ํ•จ๊ป˜ ์ถœ๋ ฅ. - ํด๋” ์•„๋ž˜ ์ƒ์„ฑ ๊ฒ€์ฆ: ์ถœ๋ ฅ `parentType: folder` ํ™•์ธ (ํด๋” ID ์ž์ฒด๋Š” page๊ฐ€ ์•„๋‹ˆ๋ผ GET ์‹œ 404๊ฐ€ ์ •์ƒ). - **์‚ญ์ œ๋Š” v1 `/wiki/rest/api/content/{id}`** ์‚ฌ์šฉ โ€” v2 page delete๋Š” ์ด ์‚ฌ์ดํŠธ์—์„œ HTTP 500. ### ์ฃผ์˜ - ๊ฒŒ์‹œ = **ํšŒ์‚ฌ ์œ„ํ‚ค ๊ณต๊ฐœ**. ๋˜๋Œ๋ฆฌ๊ธฐ ์‰ฝ์ง€ ์•Š์œผ๋‹ˆ ๋ณธ๋ฌธ ํ™•์ • ํ›„ ์˜ฌ๋ฆฐ๋‹ค(smoke๋Š” throwaway ์ƒ์„ฑโ†’`--delete --purge`). - ํ† ํฐยท์ด๋ฉ”์ผ์ด ํ™˜๊ฒฝ์— ์žˆ์œผ๋ฏ€๋กœ ๊ฒŒ์‹œ ์Šคํฌ๋ฆฝํŠธ ๋ž˜ํผ๋Š” gitignore ์˜์—ญ(`tmp/` ๋“ฑ)์— ๋‘”๋‹ค. ## ์ฃผ์˜์‚ฌํ•ญ 1. **MAT ๋ณด๋“œ๋Š” kanban** โ€” ์Šคํ”„๋ฆฐํŠธ ๋ช…๋ น์€ scrum ๋ณด๋“œ์—์„œ๋งŒ ๋™์ž‘ 2. **`--plain`์€ issue list์—์„œ๋งŒ** โ€” project list, board list์—๋Š” ๋ฏธ์ง€์› (๊ธฐ๋ณธ์ด plain) 3. **์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ช…๋ น ์ฃผ์˜** โ€” `issue create`๋Š” ์—๋””ํ„ฐ๋ฅผ ์—ด๋ฏ€๋กœ ์—์ด์ „ํŠธ์—์„œ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ 4. **์ƒํƒœ๋ช…์€ ํ•œ๊ธ€** โ€” `"๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘"`, `"๊ฐœ๋ฐœ ์™„๋ฃŒ"`, `"๋Œ€๊ธฐ & ๋‹ด๋‹น ์ง€์ •"` ๋“ฑ ๋”ฐ์˜ดํ‘œ ํ•„์ˆ˜
Auf GitHub ansehen