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).

Ir a la instalaciรณn

Datos de origen

Repositorio
junghan0611/agent-config
รšltima actividad en el origen
11 de junio de 2026 a las 07:45
Idioma detectado de SKILL.md
coreano
Estrellas
5
Forks
0

Opciones de instalaciรณn

De forma predeterminada estรก seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
3 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen ยท Vista previa de solo lectura
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. **์ƒํƒœ๋ช…์€ ํ•œ๊ธ€** โ€” `"๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘"`, `"๊ฐœ๋ฐœ ์™„๋ฃŒ"`, `"๋Œ€๊ธฐ & ๋‹ด๋‹น ์ง€์ •"` ๋“ฑ ๋”ฐ์˜ดํ‘œ ํ•„์ˆ˜
Ver en GitHub