์ฝ๋ฉ ์์ด์ ํธ๊ฐ ๋ฐฐ์ด ๊ฒ์ ์ฝ๋์ ๊ฐ์ PR์ ๋จ๊ธฐ๋ ํ์ ๊ธฐ์ต
ํ ์ฌ๋์ ์์ด์ ํธ๊ฐ ์์๋ธ ํจ์ ๊ณผ ๊ฒฐ์ ์ ์ ์ฅ์์ ๊ธฐ๋กํ๊ณ ,
๋ค์ ์์
์์ ํ์์ ์์ด์ ํธ๊ฐ ๊ทธ ๊ธฐ๋ก์ ๋จผ์ ์ฝ๊ฒ ํฉ๋๋ค
์ฝ๋ฉ ์์ด์ ํธ์ ์ผํ๋ค ๋ณด๋ฉด ์๊ฐ์ ๋ค์ฌ ๊ฒจ์ฐ ์ฐพ์๋ธ ํจ์ ์ด๋ ์ฌ๋ฌ ๋์์ ๋น๊ตํด์ ๋ด๋ฆฐ ๊ฒฐ์ ์ด ์๊น๋๋ค. ์ด๋ฐ ๋ด์ฉ์ ๋ณดํต ํ ์ฌ๋์ ๋ํ ๊ธฐ๋ก์๋ง ๋จ์์, ํ์์ ์์ด์ ํธ๋ ๊ฐ์ ํจ์ ์ ๋ค์ ๋น ์ง๊ณ ์ด๋ฏธ ๊ธฐ๊ฐํ ๋์์ ๋ค์ ์ ์ํฉ๋๋ค.
IssueOps๋ ์ด ๋ด์ฉ์ caution(ํจ์ ๊ณผ ํด๊ฒฐ์ ์ ์ ์ฃผ์ ๊ธฐ๋ก)๊ณผ ADR(์ค๊ณ ๊ฒฐ์ ๊ธฐ๋ก)๋ก ์ ์ฅ์์ ๋จ๊ธฐ๋ ๋ก์ปฌ Go ํ๋ค์ค์ ๋๋ค. ๊ธฐ๋ก์ ์ด์ ํ๋๋ฅผ ๋จ์๋ก ์งํํ๋ ์ด์ โ ๊ณํ โ ๊ตฌํ โ ๊ฒ์ฆ โ PR/MR โ ์ ๋ฆฌ ์ฌ์ดํด ์์์ ์์ฑํฉ๋๋ค. ๊ทธ๋์ ๋ฐ๋ ์ฝ๋์ ๊ฐ์ PR์ ๋ด๊ฒจ ํจ๊ป ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ต๋๋ค. ๊ณํ์ ์ ์ฉ๋๋ ๊ฒฐ์ ๊ณผ ์ฃผ์์ฌํญ ์น์ ์ด ์์ผ๋ฉด ๊ณํ์ด ํต๊ณผํ์ง ์๊ณ , ๋ฌธ์ ๋ฐ์ ํ์ ์ ๋จ๊ธฐ์ง ์์ผ๋ฉด PR์ ๋ฐํํ ์ ์์ต๋๋ค.
ํ ์ง์์ด ์ด์ด์ง๋ ๋ฐฉ์ ยท ์ด์๊ฐ ํ๋ ์ผ ยท ์ฌ์ดํด์ด ํจ๊ป ๋งก๋ ์ผ ยท ๋น ๋ฅธ ์์ ยท ์ฒซ ์์ ์์ ยท ์ํคํ ์ฒ ยท ๋ฌธ์ ํด๊ฒฐ
์์ด์ ํธ๊ฐ ์์
ํ๋ค ํจ์ ์ ๋ง๋๋ฉด caution์, ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ฉด ADR์ ํ ๊ฑด์ฉ .issueops/cautions/์
.issueops/adr/์ ๋จ๊น๋๋ค. ๊ธฐ๋ก์ ๋งํฌ๋ค์ด ํ์ผ์ด๋ผ ์ฝ๋์ ํจ๊ป ์ปค๋ฐ๋๊ณ PR์์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ต๋๋ค.
ํ์์ด git pull๋ก ๊ธฐ๋ก์ ๋ฐ์ผ๋ฉด, Codex, Claude Code, Omo native, omp, opencode ์ค ์ด๋ ํธ์คํธ๋ฅผ ์ฐ๋ ๊ฐ์
๊ธฐ๋ก์ ์ฝ์ต๋๋ค. ๋งจ ์ ๊ทธ๋ฆผ์ด ์ด ํ๋ฆ์
๋๋ค. ๊ทธ๋ฆผ์ ์๋ ๋จ๊ณ๊ฐ ๋ ์์ต๋๋ค. ํ์์ ์์ด์ ํธ๋
๊ธฐ๋ก ์ ์ฒด๊ฐ ์๋๋ผ route-docs๊ฐ ์์
์ ๋ง์ถฐ ๊ณ ๋ฅธ ๊ธฐ๋ก๋ง ์ฝ๊ณ , ๊ทธ ์์
์์ ์๋ก ์๊ฒ ๋ ๊ฒ๋ ๋ค์
๊ธฐ๋ก์ผ๋ก ๋จ๊น๋๋ค. ๊ทธ๋์ ๊ธฐ๋ก์ ์์
์ด ๊ฑฐ๋ญ๋ ์๋ก ์์
๋๋ค.
์ด ์ ์ฅ์๋ .issueops/cautions/์ .issueops/adr/์
๊ธฐ๋ก์ ์์ผ๋ฉฐ ๊ฐ๋ฐํฉ๋๋ค. ๊ทธ์ค caution ํ๋๋ฅผ ์๋ก ๋ญ๋๋ค.
2026-08-28-gitlab-workitem-labels-...๋
GitLab WorkItem์ด labelsยทassignees๋ฅผ ์์ ฏ์ผ๋ก๋ง ๋
ธ์ถํด์ remote create-child๊ฐ ์คํจํ๊ณ ,
๊ฐ์ง glab ์คํ
์ด ์๋ชป๋ ์๋ต์ ๊ทธ๋๋ก ๋๋ ค์ค ํ
์คํธ๋ ๊ณ์ ํต๊ณผํ๋ค๋ ๊ธฐ๋ก์
๋๋ค. ์ด ๊ธฐ๋ก์๋
Summary, Context, Resolution, Evidence ํญ๋ชฉ์ด ์์ด์ ๋ฌด์์ด ์ ๊นจ์ก๊ณ ์ด๋ป๊ฒ ๊ณ ์ณค๋์ง๋ฅผ
์ฝ์ ์ ์์ต๋๋ค.
๋์ค์ GitLab ํ์ ์ด์๋ฅผ ๊ฑด๋๋ฆฌ๋ ์์
์ ์์ํ๋ฉด route-docs๊ฐ ์ด ๊ธฐ๋ก์ ๊ณจ๋ผ ์ค๋๋ค.
์๋๋ ์ค์ ์ถ๋ ฅ์ docs ๋ฐฐ์ด ์ค ํด๋น ํญ๋ชฉ์ด๋ฉฐ, ์ ๋ ๊ฒฝ๋ก์ธ path ํ๋๋ง ๋บ์ต๋๋ค.
io project route-docs --repo . --task "gitlab child issue labels" --json{
"rel_path": ".issueops/cautions/2026-08-28-gitlab-workitem-labels-assignees-selection-create-child-glab.md",
"reason": "past record \"GitLab WorkItem ์ง์ labels/assignees selection์ด create-child๋ฅผ ๋ง์๊ณ ๊ฐ์ง glab ์คํ
์ด ๊ทธ ์ค๋ฅ๋ฅผ ๊ฐ์ท๋ค\" shares: child, gitlab, label",
"exists": true
}๊ธฐ๋ก์ ๋จ๊ธฐ๋ ์ผ๊ณผ ์ฐพ์ ์ฝ๋ ์ผ์ ์ฌ๋์ ๊ธฐ์ต์ ๋งก๊ธฐ์ง ์์ต๋๋ค.
| ์์ | ์ฅ์น | ๋์ |
|---|---|---|
| ๊ธฐ๋ก | project append (MCP project_docs_append) |
๋ ์ง๊ฐ ๋ถ์ ๊ธฐ๋ก ํ ๊ฑด์ .issueops/cautions/ ๋๋ .issueops/adr/์ ์ถ๊ฐํฉ๋๋ค |
| ์์ ์์ | project route-docs (MCP project_docs_route) |
์์ ์ค๋ช ๊ณผ ๋จ์ด๊ฐ ๋ ๊ฐ ์ด์ ๊ฒน์น๋ ๊ณผ๊ฑฐ ๊ธฐ๋ก์ ์ต๋ ๋ค์ฏ ๊ฑด ๊ณ ๋ฅด๊ณ , ๊ฒน์น ๋จ์ด๋ฅผ ํจ๊ป ๋๋ ค์ค๋๋ค |
| ๊ณํ | link-plan ๊ฒ์ดํธ |
๊ณํ์ ## ์ ์ฉ๋๋ ๊ฒฐ์ ๊ณผ ์ฃผ์์ฌํญ ์น์
์ด ์์ผ๋ฉด ๊ฑฐ๋ถํฉ๋๋ค |
| ๋ฌธ์ ๋ฐ์(6๋จ๊ณ) | project-docs-review record ๊ฒ์ดํธ |
๋ฌธ์๋ฅผ ๊ณ ์ณค๋์ง, ์ฝ์ด ๋ณด๊ณ ๋ฐ๊ฟ ๊ฒ์ด ์๋ค๊ณ ํ๋จํ๋์ง๋ฅผ ๋ณ๊ฒฝ ์งํฉ์ fingerprint์ ๋ฌถ์ด ๋จ๊น๋๋ค |
๊ณํ ๋จ๊ณ์ issueops-plan ์คํฌ์ route-docs๋ก ๊ณ ๋ฅธ ๋ฌธ์๋ฅผ ์ฝ๊ณ , ์ด๋ฒ ์์
์ ์ ์ฉ๋๋ ๊ฒฐ์ ๊ณผ
์ฃผ์์ฌํญ์ ๊ทธ ์น์
์ ์ ์ต๋๋ค. ๋ฌธ์ ๋ฐ์ ํ์ ์ ๋จ๊ธด ๋ค์ diff๊ฐ ๋ฐ๋๋ฉด ํ์ ์ด ๋ฌดํจ๊ฐ ๋์ด 6๋จ๊ณ๋ก
๋์๊ฐ๋๋ค. ์์ธํ ๊ท์น์ ๊ท์น์ ์งํค๊ฒ ํ๋ ์ธ ์ธต์ ์์ต๋๋ค.
route-docs๋ ์๋ฏธ ๊ฒ์์ด ์๋๋ผ ๋จ์ด๊ฐ ๊ฒน์น๋ ์ ๋๋ก ๊ธฐ๋ก์ ๊ณ ๋ฆ
๋๋ค. ๊ฒฐ๊ณผ์๋ ๊ณ ๋ฅธ ์ด์ (๊ฒน์น
๋จ์ด)๊ฐ ๊ทธ๋๋ก ๋์ต๋๋ค. ๋ค๋ง ๊ด๋ จ ๊ธฐ๋ก์ ์ฐพ์ผ๋ ค๋ฉด ์์
์ค๋ช
์ ๊ฑด๋๋ฆด ํ์ผ๊ณผ ๋์์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ด์ผ
ํฉ๋๋ค. ๊ธฐ๋ก์ด ๋์ค์ ์ฝ๋์ ์ด๊ธ๋๋ IssueOps๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ์ฐพ์๋ด์ง๋ ์์ต๋๋ค. ๋ก์ ๊ธฐ๋ก์ ๋ฌธ์
๋ฐ์ ๋จ๊ณ๋ PR ๋ฆฌ๋ทฐ์์ ์ฌ๋์ด ๊ณ ์ณ์ผ ํฉ๋๋ค.
AGENTS.mdยทCLAUDE.md |
์์ด์ ํธ ์์ฒด ๋ฉ๋ชจ๋ฆฌ | IssueOps ๊ธฐ๋ก | |
|---|---|---|---|
| ๋๊ฐ ์ฐ๋์ | ์ฌ๋์ด ์ง์ | ์์ด์ ํธ๊ฐ ๋ํ๋ฅผ ๋ณด๊ณ ์ค์ค๋ก | ์์ด์ ํธ๊ฐ ์ฐ๊ณ , ์ฌ๋์ด PR์์ ๋ฆฌ๋ทฐ |
| ์ด๋์ ๋จ๋์ | ์ ์ฅ์์ ํ์ผ ํ๋ | ๊ฐ์์ ์ปดํจํฐ | ์ ์ฅ์์ .issueops/, ๊ธฐ๋ก ํ ๊ฑด๋น ํ์ผ ํ๋ |
| ํ์์๊ฒ ์ ๋ฌ๋๋์ | git์ผ๋ก ์ ๋ฌ | ์ ๋ฌ๋์ง ์์ | git์ผ๋ก ์ ๋ฌ |
| ์์ด์ ํธ๊ฐ ๋ฌด์์ ์ฝ๋์ | ์ธ์ ์ ์์ํ ๋ ํ์ผ ์ ์ฒด | ๋๊ตฌ๊ฐ ์ ํ ๋ฒ์ | ์์ ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ก๋ง |
| ์ธ์ ์ฐ๋์ | ๋๊ตฐ๊ฐ ๋ ์ฌ๋ ธ์ ๋ | ๋๊ตฌ๊ฐ ํ๋จํ์ ๋ | ์๊ฒ ๋ ์ฆ์, ๋ฆ์ด๋ ๋ฌธ์ ๋ฐ์ ๋จ๊ณ์์ |
์์ด์ ํธ ์์ฒด ๋ฉ๋ชจ๋ฆฌ ์ด์ Claude Code์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ต๋๋ค.
Claude Code ๊ณต์ ๋ฌธ์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ปดํจํฐ๋ง๋ค ๋ฐ๋ก
์ ์ฅ๋๊ณ ๋ค๋ฅธ ์ปดํจํฐ์ ๊ณต์ ๋์ง ์๋๋ค๊ณ ์ค๋ช
ํฉ๋๋ค. ๊ฐ์ ๋ฌธ์๋ CLAUDE.md๋ฅผ 200์ค ์ดํ๋ก ์ ์งํ๋ผ๊ณ
๊ถํ๋๋ฐ, ํ์ผ์ด ๊ธธ์๋ก ์ปจํ
์คํธ๋ฅผ ๋ ์ฐ๊ณ ์ง์๋ฅผ ๋ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์
๋๋ค.
IssueOps๋ AGENTS.md๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค. bootstrap์ด AGENTS.md์ ๋ฌธ์ ์๋ด ๋ธ๋ก์ ๋ฃ๊ณ , ์ ์ฅ์
๊ณตํต ๊ท์น์ ๊ณ์ AGENTS.md์ .issueops/ ์ด์ ๋ฌธ์์ ๋ก๋๋ค. ์ธ์
๋ง๋ค ์ฝ์ด์ผ ํ ๊ท์น์
AGENTS.md์, ํน์ ์์
์์๋ง ํ์ํ ํจ์ ๊ณผ ๊ฒฐ์ ์ ๊ธฐ๋ก์ผ๋ก ๋๋ ๋๋ ๋ฐฉ์์
๋๋ค.
์ฒซ ์์ ์์์ bootstrap์ ๋ง์น ์ ์ฅ์๋ผ๋ฉด ๊ธฐ๋ก๊ณผ ์กฐํ๋ง ๋ฐ๋ก ์ธ ์ ์์ต๋๋ค.
io project append --repo . --kind caution \
--title "Stripe webhook retries reuse the event id" \
--summary "Deduplicate webhook handling by event id" --json
git add .issueops && git commit -m "docs: record webhook caution"
# ํ์์ ์ฒดํฌ์์์์
io project route-docs --repo . --task "fix payment webhook retry handling" --json| ๊ตฌ๋ถ | ๋ด์ฉ | ์์น |
|---|---|---|
| ํ์ด ๊ณต์ | ์ด์ ๋ฌธ์, cautionยทADR ๊ธฐ๋ก | ์ ์ฅ์์ AGENTS.md์ .issueops/. git์ผ๋ก ๊ณต์ ํฉ๋๋ค |
| ๊ฐ์ ๋ก์ปฌ | ์ฌ์ดํด ์งํ ์ํ, ๊ฒ์ฆ ๊ทผ๊ฑฐ | ~/.local/state/issueops/์ SQLite ์ ์ฅ์ |
| ๊ฐ์ ๋ก์ปฌ | ์คํฌ ๋งํฌ, MCPยทhook ์ค์ | ์ฌ์ฉ์ ํ์ ํธ์คํธ ์ค์ . ์ค์นํ ๋ ๋ง๋ค์ด์ง๋๋ค |
IssueOps์ Issue๋ ์์ ๋จ์์ธ ์ด์๋ฅผ ๋ปํฉ๋๋ค. ์ฌ์ดํด ํ๋๋ ์ด์ ํ๋์์ ์์ํ๊ณ , ๋ธ๋์น์ ๊ณํ, PR, ๋จธ์ง ํ ๊ฒฐ๊ณผ ๋ณด๊ณ ๊ฐ ๋ชจ๋ ๊ทธ ์ด์ ๋ฒํธ์ ๋ฌถ์ ๋๋ค. caution๊ณผ ADR์ด ๋ฌด์์ ๋ฐฐ์ ๋์ง๋ฅผ ๋จ๊ธด๋ค๋ฉด, ์ด์๋ ๋ฌด์์ ํ๋ ค ํ๊ณ ์ด๋๊น์ง ๋๋๋์ง๋ฅผ ๋จ๊น๋๋ค.
| ์์ | ์ด์์ ์ฐ๊ฒฐ๋๋ ๊ฒ |
|---|---|
| ์์ | issueops-create-issue๊ฐ ์กฐ์ฌ์ ํ์ธ ์ง๋ฌธ์ผ๋ก ์๊ตฌ์ฌํญ์ ์ ํ ๋ค ์ด์๋ฅผ ๋ง๋ญ๋๋ค. ๊ตฌํ ์ด์ ๋ณธ๋ฌธ์๋ ์์ฝ, ๋ฐฐ๊ฒฝ, ์๋ฃ ๊ธฐ์ค, ๋ฒ์, ๊ฒ์ฆ ์น์
์ด ์์ด์ผ ํฉ๋๋ค |
| ๋ธ๋์น | <์ด์ ๋ฒํธ>-<slug> ์ด๋ฆ์ผ๋ก ๋ง๋ญ๋๋ค. GitHub์์๋ linked branch๋ก ์ด์์ ์ฐ๊ฒฐํ๊ณ , GitLab์์๋ ์ด ์ด๋ฆ ๊ท์น์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค |
| ๊ณํ | ๊ณํ ๊ฒํ ์ ์งํ ํ๋ฆ์ด ์ด์ ๋ณธ๋ฌธ์ ๊ด๋ฆฌ ์์ญ์ ํ ์ค๋ก ํ์๋ฉ๋๋ค |
| ๊ตฌํ | ๊ณํยท์ํคํ
์ฒยท์๋ยท๋ช
์ธยท๊ณํ ๊ฒํ ์ฌ๋ณธ(plan.md, architecture.md, intent.md, spec.md, plan-review.md)์ .issueops/issues/<n>/์ ์ปค๋ฐํฉ๋๋ค. ๋ช
์ธ์ ๊ณํ ๊ฒํ ์ฌ๋ณธ์ ํด๋น ์๋ฃ๊ฐ ์์ ๋๋ง ์๊น๋๋ค |
| ๋ฐํ | ์ด์์ ์ฐ๊ฒฐ๋ ๋ธ๋์น์์ PR์ ๋ง๋ค๊ณ , cautionยทADR ๊ธฐ๋ก์ด ์ฝ๋์ ํจ๊ป ๋ด๊น๋๋ค |
| ๋จธ์ง ํ | ์ฌ๋์ด ์ด ์งํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ ๋ณธ๋ฌธ์ ๋ฐ์ํ๊ณ ์ด์๋ฅผ ๋ซ์ต๋๋ค |
์ด์ ๋ณธ๋ฌธ์ ํ์์ด ์ฝ๋ ๋ฌธ์๋ผ์ ์์ฝ์ ๋จผ์ ์ฐ๊ณ ์งง๊ฒ ์ ์งํฉ๋๋ค. ํด์๋ ๊ณํ ์ ๋ฌธ ๊ฐ์ ๊ตฌํ ์๋ฃ๋
๋ณธ๋ฌธ์ ๋ฃ์ง ์๊ณ .issueops/issues/<n>/์ ๋ก๋๋ค
(๊ด๋ จ ADR). ๊ธฐ๋ก์ Source:
์ค์ ์ด์ ๋ฒํธ๋ฅผ ์ ์ด ๋๋ฉด, ๊ทธ ADR์ Source: IssueOps #513์ฒ๋ผ ํ์์ด ๊ธฐ๋ก์์ ์ด์๋ก, ์ด์์์
.issueops/issues/<n>/์ ๊ณํ์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ ์ ์์ต๋๋ค.
์์
์ด ํฌ๋ฉด ํ์ ์ด์๋ก ๋๋๋๋ค. ํ์ ์ด์๋ ๊ฐ์ ์ฌ์ดํด์ ๊ฑฐ์น๊ณ , ๋ถ๋ชจ ์ฌ์ดํด์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์๋ค์ด๊ฑฐ๋
(child accept) ๊ฑฐ์ ํฉ๋๋ค(child reject).
๊ฐ์ ์ฌ์ดํด์ Codex, Claude Code, Omo native, omp, opencode ์ค ์ด๋ ํธ์คํธ์์ ์ด์ด๋ฐ์๋ ๊ฐ์ ์คํ ๊ณ์ฝ๊ณผ ๊ท์น์ผ๋ก ์งํ๋ฉ๋๋ค. ๋ค์ฏ ํธ์คํธ๋ ๊ณตํต CLIยทMCPยท์คํฌ์ ์ฐ๊ณ , ์์ ์ํ์ ๊ฒ์ฆ ๊ทผ๊ฑฐ๋ ํธ์คํธ ๋ฐ ๋ก์ปฌ SQLite์ ๋จ์ต๋๋ค. ๊ธฐ๋ก์ ์ฝ๊ณ ๋จ๊ธฐ๊ฒ ํ๋ ๊ฒ์ดํธ ๋ง๊ณ ๋ IssueOps๋ ๋ค์ ์ผ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ธ์ ์ ๋ฐ๊ฟ๋ ์ด์ด์ ์์ : ์ฐ๊ฒฐ๋ ์ด์ยท๋ธ๋์นยทworktreeยท๊ณํ๊ณผ ๋ค์ ๋จ๊ณ๋ฅผ ์กฐํํฉ๋๋ค.
- ๊ฒ์ฆํ ๋ณ๊ฒฝ๋ง ๋ฐํ: ๋ฆฌ๋ทฐ์ ๋ฌธ์ ํ์ ์ ๋ณ๊ฒฝ ์งํฉ์ fingerprint์ ๋ฌถ์ด, ์์ ๋ค์๋ ๋ค์ ๊ฒ์ฆํ๊ฒ ํฉ๋๋ค.
- ์ค๋ณต ์คํ๊ณผ ์๊ฒฉ ์์ฑ ๋ฐฉ์ง: ์คํ ๊ถํ(lease), ์ธ๋ ๋ฒํธ, CAS๋ก ๋ณ๊ฒฝ ์ฃผ์ฒด๋ฅผ ํ์ธํ๊ณ ์๋ต์ด ๋ถ๋ถ๋ช ํ๋ฉด ๋ณต๊ตฌ ์ ์ฐจ๋ก ์๋ดํฉ๋๋ค.
- ํธ์คํธ ๊ฐ ๊ท์น ๊ณต์ :
skills/์๋ณธ๊ณผ.issueops/์ด์ ๋ฌธ์๋ฅผ CodexยทClaude CodeยทOmo nativeยทompยทopencode์์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
PR/MR ๋ฐํ ์๋ฃ, ๋จธ์ง, ์ ๋ฆฌ๋ ๋ณ๋ ๋จ๊ณ์ ๋๋ค. ์์ด์ ํธ๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ๋ฒ์๊น์ง ์งํํ๋ฉฐ, ๋ฐํ๋ง ์์ฒญํ ์์ ์ ์์๋ก ๋จธ์งํ๊ฑฐ๋ ์ญ์ ํ์ง ์์ต๋๋ค.
๊ท์น์ ์ด๊ฒผ์ ๋ ๋๋ ๋น์ฉ์ ๋ฐ๋ผ ์ธ ์ธต์ผ๋ก ๋๋๋๋ค.
| ์ธต | ๋ด๋ ๊ฒ | ์ |
|---|---|---|
| ๋ฌธ๋งฅ(hook) | ์ธ์ ์ ํ์ํ ์ ์ ์ ๋ณด. ์ํ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ์ง ์์ต๋๋ค | SessionStartยทSubagentStart๊ฐ .issueops/ ๋ฌธ์ ๋ชฉ๋ก์ ๋ฃ์ต๋๋ค |
| ์ ์ฐจ(์คํฌ) | ํ๋จ์ด ํ์ํ ์์์ ๊ธฐ์ค. ์ด๊ธฐ๋ฉด ๋ฆฌ๋ทฐ์์ ์ก์ต๋๋ค | ๊ณํ ์ ์ CONSTITUTIONยทCAUTIONSยทADR์ ์ฝ๊ณ ## ์ ์ฉ๋๋ ๊ฒฐ์ ๊ณผ ์ฃผ์์ฌํญ์ ์ ์ต๋๋ค |
| ๊ฒ์ดํธ(CLI) | ์ด๊ธฐ๋ฉด ๋ค์ ๋จ๊ณ๊ฐ ๋งํ๋๋ค. fingerprint๋ก ์ฌ์ดํด ์ํ์ ๋ด์ธํฉ๋๋ค | architecture review์ ํ์ ์น์
๊ฒ์ฌ, link-plan์ ํ์ ์น์
๊ฒ์ฌ, project_docs_review ๋ฐํ ๊ฒ์ดํธ |
architecture review๋ ์ํคํ ์ฒ ๋ฌธ์์## ์๊ตฌ์ฌํญ๊ณผ ๊ท๋ชจ,## ๋ฐ์ดํฐ์ API ๊ณ์ฝ,## ๊ตฌ์กฐ์ ํ๋ฆ,## ๋ณ๋ชฉ๊ณผ ์ฅ์,## ์ ์ถฉ์ ๊ณผ ๊ธฐ๊ฐํ ๋์๋ค์ฏ ์น์ ์ด ๋ชจ๋ ์๊ณ ๋ณธ๋ฌธ์ด ๋น์ด ์์ง ์์์ผ ๊ธฐ๋ก๋ฉ๋๋ค. ์น์ธ์ ๋ฌธ์์ sha256์ ๋ฌถ์ด๋ฏ๋ก, ์น์ธํ ๋ค ๋ฌธ์๋ฅผ ๊ณ ์น๋ฉดarchitecture_review_stale์ด ๋์ด ๋ค์ ์น์ธ์ ๋ฐ์์ผ ๊ณํ ์์ฑ์ผ๋ก ๋์ด๊ฐ๋๋ค.link-plan์## ์ ์ฉ๋๋ ๊ฒฐ์ ๊ณผ ์ฃผ์์ฌํญ,## ์ฌ์ฌ์ฉํ๋ ๊ธฐ์กด ๊ตฌํ,## ์ฑ๋ฅ ์ํฅ,## ํ์ ํธํ์ฑ๊ณผ side effect๋ค ์น์ ์ค ํ๋๋ผ๋ ์์ผ๋ฉด ๊ณํ์ ๊ฑฐ๋ถํฉ๋๋ค.project-docs-review record์--verdict updated๋--doc์ผ๋ก ์ ์ ๊ฒฝ๋ก๊ฐ ๋ชจ๋ ์ค์ ๋ณ๊ฒฝ์ ์์ด์ผ ํ๊ณ ,--verdict no-change๋ ์ค์ ๋ก ์ฝ์--reviewed-doc(.issueops/์๋ ๋ฌธ์๋AGENTS.md)์ด ํ๋ ์ด์ ์์ด์ผ ํฉ๋๋ค.devils-advocate review๋ ๊ณํ ๋จ๊ณ๋ง๋ค ๋ฉด์ ์๋reviseํ์ ์ ๋ค์ฏ ๋ฒ๊น์ง๋ง ๋ฐ์ต๋๋ค. ์ฌ์ฏ ๋ฒ์งธ๋ ๊ฑฐ๋ถํ๊ณ , ์ค์ ๋ก ์ด๋ ค ์๋ ํ์ถ ๊ฒฝ๋ก๋ฅผ ์ค๋ฅ์ ์ ์ต๋๋ค.
hook์ ์๋ฌด๊ฒ๋ ๊ฐ์ ํ์ง ์์ต๋๋ค. 2026-08-27 ๊ฒฐ์ ์ผ๋ก ๊ฐ์ ์ฉ hook์ ๋ชจ๋ ์์ด๊ณ , ๋จ๊ณ๋ฅผ ์๋ ค ์ฃผ๋ hook์ ๋จ๊ณ ํ์ ์ ๋ ๊ณณ์ ๋๊ฒ ๋๋ฏ๋ก ์ฑํํ์ง ์์์ต๋๋ค. ๊ทผ๊ฑฐ๋ ์ค๊ณ ๊ฒฐ์ ์ ์์ต๋๋ค.
ํ์ ํ๊ฒฝ์ Git, Go 1.26.6 ์ด์, ์ฌ์ฉํ ์ฝ๋ฉ ํธ์คํธ ํ๋ ์ด์์
๋๋ค. ์์ง ๊ณต๊ฐ๋ ๋ฐ์ด๋๋ฆฌ
๋ฆด๋ฆฌ์ค๊ฐ ์์ด ์์ค์์ ๋น๋ํฉ๋๋ค(v0.1.0์ Draft ์ํ์
๋๋ค). GitHubยทGitLab์ ์ด์๋ PR/MR์
์ฐ๋ ค๋ฉด ํด๋น provider์ CLI(ghยทglab)์ ์ธ์ฆ๋ ์ค๋นํฉ๋๋ค. Herdr์ ๋ธ๋ผ์ฐ์ QA์ฉ Aside๋
์ ํ ์ฐ๋์ด๋ฉฐ ๋ณ๋๋ก ์ค์นํฉ๋๋ค. ์คํฌ๊ณผ ์ด์ยทPR ํ
ํ๋ฆฟ์ ํ์ฌ ํ๊ตญ์ด๋ก๋ง ์ ๊ณต๋ฉ๋๋ค.
git clone https://github.com/m16khb-org/issueops.git
cd issueops
./install.sh --dry-run --json
./install.sh
./bin/issueops inspect --json
./bin/issueops doctor --repo . --jsonImportant
ํ์ฌ ๋ฒ์ ์ 0.1.0์
๋๋ค. ์ค์น๋ ์ฌ์ฉ์ ํ์ ํธ์คํธ ์ค์ ยท์คํฌ ๋งํฌ์
~/.local/bin ๋ช
๋ น์ ๊ฐฑ์ ํฉ๋๋ค. ๋จผ์ dry-run์ ๋์ ๊ฒฝ๋ก๋ฅผ ํ์ธํ์ธ์.
install.sh๋ dry-run์์๋ ๋ก์ปฌ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ๊ณ , ํธ์คํธ ์ค์ ์ฐ๊ธฐ๋ง ์๋ตํฉ๋๋ค.
์ค์น ๋ค์๋ ์ ์ ๋ช
๋ น issueops ๋๋ ์งง์ ๋ณ์นญ io๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ์กด์ ๋ค๋ฅธ
ioยทissueops ํ์ผ์ ๋ฎ์ด์ฐ์ง ์์ผ๋ฉฐ ์ถฉ๋ ์ ์ค์น๋ฅผ ์ค๋จํฉ๋๋ค.
| ๋์ | ๊ธฐ๋ณธ ์์น์ ์ญํ |
|---|---|
| Codex | ~/.codex/skills/, MCP ์ค์ , SessionStartยทSubagentStart hook |
| Claude Code | ~/.claude/skills/, user-scope MCP, SessionStartยทSubagentStart hook |
| Omo native | ~/.omo/agent/skills/, ~/.omo/mcp.json, lifecycle extension |
| omp | ~/.omp/agent/skills/, ~/.omp/agent/mcp.json, ~/.omp/agent/extensions/issueops.js |
| opencode | ~/.config/opencode/skills/, ~/.config/opencode/opencode.json์ mcp.servers.issueops, ~/.config/opencode/plugins/issueops.js(XDG_CONFIG_HOME์ ๋ฐ๋ฆ
๋๋ค). lease๋ opencode --standalone ์ธ์
๋ง ๊ฐ์ง ์ ์์ต๋๋ค |
| agy(Antigravity CLI) | ~/.gemini/config/skills/, ~/.gemini/config/mcp_config.json. ํญ์ stdio๋ก ์ฐ๊ฒฐํ๊ณ hook์ ์์ต๋๋ค |
| MCP ์๋น์ค | macOS LaunchAgent io.issueops.mcp ๋๋ Linux systemd user issueops-mcp.service. http://127.0.0.1:47831/mcp ํ๋๋ฅผ CodexยทClaude CodeยทOmo nativeยทompยทopencode๊ฐ ํจ๊ป ์๋๋ค |
| ์คํ ์ํ | ~/.local/state/issueops/ ์๋ SQLite ์ ์ฅ์. ISSUEOPS_STATE_DIR๋ก ๊ฒฉ๋ฆฌ ๊ฐ๋ฅ |
| ํ๋ก์ ํธ ์ง์ | ๋์ ์ ์ฅ์์ AGENTS.mdยท.issueops/. ๋ช
์์ ์ธ project bootstrap์ผ๋ก ์์ฑ |
์คํฌ์ ๋ณต์ฌํ์ง ์๊ณ ์ด ์ฒดํฌ์์์ skills/๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์ค์น ํ์๋ ์ฒดํฌ์์์ ์ ์งํ์ธ์.
๊ธฐ๋ณธ ์ค์น๋ ๋์ ํ๋ก์ ํธ์ ํ์ผ์ ๋ง๋ค์ง ์์ต๋๋ค. --project-local์ ๋ช
์ํ๋ฉด project MCP ์ค์ ์
์๋๋ค. .mcp.json, .omo/mcp.json, .omp/mcp.json, .opencode/opencode.json์ --mcp-transport=stdio์ผ ๋๋ง ๋ง๋ค๊ณ , ๊ธฐ๋ณธ
HTTP ์ฐ๊ฒฐ์์๋ ์ฌ์ฉ์ ํ์ ํญ๋ชฉ์ ๊ทธ๋๋ก ์๋๋ค. agy์ฉ .agents/mcp_config.json์ ์ฐ๊ฒฐ ๋ฐฉ์๊ณผ
๊ด๊ณ์์ด ์๋๋ค. ์คํฌ ๋งํฌ๋ ์ด๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ ํ์๋ง ๋ก๋๋ค.
macOS์ Linux์ ๊ธฐ๋ณธ MCP ์ฐ๊ฒฐ์ ๊ณต์ฉ HTTP ์๋น์ค์
๋๋ค(--mcp-transport=http). ์ค์น๊ธฐ๋
~/.local/state/issueops/mcp-http/bearer์ ์ธ์ฆ ํ ํฐ์ ๋ง๋ค๊ณ , ๋ค์ฏ ํธ์คํธ ์ค์ ์ issueops ํญ๋ชฉ๋ง
URL๊ณผ Authorization ํค๋๋ก ๋ฐ๊พผ ๋ค ํ์ผ ๊ถํ์ 0600์ผ๋ก ๋ก๋๋ค. ํธ์คํธ ์ธ์
๋ง๋ค issueops mcp๋ฅผ
๋ฐ๋ก ๋์ฐ๋ ค๋ฉด ./install.sh --mcp-transport=stdio๋ก ์ค์นํฉ๋๋ค. ์๋น์ค ์ํ๋
io mcp service status --json์ผ๋ก ํ์ธํฉ๋๋ค. HTTP๋ก workspace ๋๊ตฌ๋ฅผ ๋ถ๋ฅด๋ ์ธ์
์ ๋จผ์
io mcp authorize --workspace-root <repo> ...๋ก ๊ถํ ํ์ผ์ ๋ฐ๊ธ๋ฐ๊ณ , ํธ์ถํ ๋ ๊ทธ ๊ฒฝ๋ก๋ฅผ
authority_file๋ก ๋๊น๋๋ค. ๊ฐ์ OS ์ฌ์ฉ์์ ํ๋ก์ธ์ค๋ ์ด ํ์ผ๋ค์ ์ฝ์ ์ ์์ผ๋ฏ๋ก ์ ๋ขฐ ๊ฒฝ๊ณ๋
OS ์ฌ์ฉ์์
๋๋ค.
์ค์น ์ต์ ๊ณผ ์ ํ์ upstream pluginยทskill ์ค๋น๋ ์ค์น ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
IssueOps ์์ค ์ฒดํฌ์์์์ ์คํํฉ๋๋ค.
git pull --ff-only
io update --dry-run --json
io update --json
io inspect --jsonio update๋ ๋น๋ํ IssueOps ์ฒดํฌ์์์ ISSUEOPS_ROOT, ํ์ฌ ๋๋ ํฐ๋ฆฌ์์ ์๋ก ์ฐพ์ ์ฒดํฌ์์,
์ค์น๋ ๋ช
๋ น์ด ๊ฐ๋ฆฌํค๋ ์ฒดํฌ์์ ์์ผ๋ก ์ ํฉ๋๋ค. ๊ทธ๋์ ๋ค๋ฅธ IssueOps ์ฒดํฌ์์ ์์์ ์คํํ๋ฉด ๊ทธ
์ฒดํฌ์์์ ๋น๋ํฉ๋๋ค. git pull์ ๋์ ์คํํ์ง ์์ต๋๋ค. HTTP ์ค์น์์๋ io update๊ฐ MCP ์๋น์ค๋ฅผ
๋ฉ์ถ๊ณ ์ ๋ฐ์ด๋๋ฆฌ๋ก ๋ค์ ๋์ด ๋ค build_id๋ฅผ ํ์ธํฉ๋๋ค. MCP ๋ณ๊ฒฝ์ ํธ์คํธ๊ฐ ์๋ฒ๋ฅผ ๋ค์ ์ฐ๊ฒฐํ ๋
์ ์ฉ๋๋ฏ๋ก, ์
๋ฐ์ดํธ ํ์๋ ์ ๋๊ตฌ๊ฐ ๋ณด์ด๋ฉด MCP๋ฅผ ์ฌ์ฐ๊ฒฐํ์ธ์.
์ฒซ ๋ฆด๋ฆฌ์ค๋ tarball/manual archive๋ก ๋ด๊ณ , Homebrew๋ ์ฌํ์ฑ ๊ฒ์ฆ๊ณผ ๋กค๋ฐฑ ๊ธฐ์ค์ ์ถฉ์กฑํ ๋ค ๋์ ํ๊ธฐ๋ก ํ์ต๋๋ค. ์ค์น ๋ณต๊ตฌ๊ฐ ํ์ํ๋ฉด ๋ฆด๋ฆฌ์ค ์ฌํ์ฑ๊ณผ ๋กค๋ฐฑ ๊ธฐ์ค์ ๋ฐ๋ฅด์ธ์.
์์ ํ ์ ์ฅ์๋ก ์ด๋ํ ๋ค ์์ฑ ๊ณํ์ ํ์ธํฉ๋๋ค.
cd /path/to/your-project
io project bootstrap --repo . --dry-run --json
io project bootstrap --repo . --json
io project route-docs --repo . --task "fix login session expiry in auth middleware" --jsonbootstrap์ AGENTS.md์ ๋ฌธ์ ์๋ด์ .issueops/ ๋ฌธ์ ๋ชจ์์ ์ค๋นํฉ๋๋ค.
๊ธฐ์กด ๋ฌธ์๋ฅผ ํต์งธ๋ก ๋ฎ์ด์ฐ์ง ์์ต๋๋ค. ์ต์ด ์์ฑ์ project-docs-bootstrap, ์์
์ค
๊ฐฑ์ ์ project-docs-update, ํฐ ๋ฌธ์์ ๋ถ๋ฆฌ๋ project-docs-optimize ์คํฌ์ด ๋ด๋นํฉ๋๋ค.
์์ฑ๋ AGENTS.md์ .issueops/๋ฅผ ์ปค๋ฐํด์ผ ํ์๋ ๊ฐ์ ๋ฌธ์์ ๊ธฐ๋ก์ ๋ฐ์ต๋๋ค.
์์ด์ ํธ์๊ฒ issueops ์คํฌ์ ์ฐ๋ผ๊ณ ํ๋ฉด์ ์ํ๋ ๊ฒฐ๊ณผ, ์ ์ฝ, ์ด๋๊น์ง ์งํํ ์ง๋ฅผ ์๋ ค ์ค๋๋ค.
์๋ฅผ ๋ค๋ฉด:
issueops๋ก ๋ก๊ทธ์ธ ์ค๋ฅ๋ฅผ ์์ ํด์ค. ๋ง๋ฃ๋ ์ธ์ ์์ ์ค๋ฅ๋ฅผ ์ฌํํ๊ณ ํ ์คํธ๋ฅผ ์ถ๊ฐํด์ค. Draft PR์ ๋ง๋๋ ๋ฐ๊น์ง ์งํํด์ค.
ํ์ฌ ๋จ๊ณ๋ next๋ก ํ์ธํฉ๋๋ค. ์ด ๋ช
๋ น์ ์ฝ๊ธฐ ์ ์ฉ์
๋๋ค.
io next --json
io list --repo "$PWD" --json์ฌ์ดํด์ด ์์ผ๋ฉด next๊ฐ ์์ ๋ช
๋ น์ ์๋ดํฉ๋๋ค. ์ง์ ์์ํ๋ ค๋ฉด:
io start --repo "$PWD" --branch "123-fix-login" --json
io next --id "๋ฐํ๋-ID" --jsonnext์ missing, next_command, exits๋ฅผ ๋ฐ๋ผ ์งํํฉ๋๋ค. start --new๋ ํธ์ถํ ๋๋ง๋ค
๋ธ๋์น ์๋ ์ ์ฌ์ดํด์ ๋ง๋ค๋ฏ๋ก, ์๋ต์ด ๋ถ๋ถ๋ช
ํด๋ ๋ค์ ํธ์ถํ์ง ์์ต๋๋ค. ์๊ฒฉ ์์ฑ ๊ฒฐ๊ณผ๊ฐ
๋ถ๋ถ๋ช
ํ ๋๋ ์ฌ์๋ํ์ง ๋ง๊ณ remote reconcile-issueยทremote reconcile-child๋ก ๊ธฐ์กด ๊ฒฐ๊ณผ๋ฅผ
ํ์ธํฉ๋๋ค.
| ๋จ๊ณ | ์คํฌ | ๊ฒฐ๊ณผ |
|---|---|---|
| 1. ์ด์ ํ์ ยท์์ฑ | issueops-create-issue |
์๊ตฌ์ฌํญยท์๋ฃ ๊ธฐ์ค์ ๋ด์ ์ด์ |
| 2. ๋ธ๋์น ์ค๋น | issueops-prepare |
base SHA์ ์ด์์ ์ฐ๊ฒฐ๋ ๋ธ๋์น |
| 3. ์ํคํ ์ฒยท๊ณํยท๊ฒํ ยท์ธ๊ณ | issueops-plan |
๋ ๋ฆฝ ๋ฆฌ๋ทฐ๋ก ์น์ธํ ์ํคํ ์ฒ, ๊ด๋ จ cautionยทADR์ ๋ฐ์ํด ๊ฒํ ํ ๊ณํ, ์คํ worktreeยท์ธ์ |
| 4. ๊ตฌํ | issueops-implement |
ํ ์คํธ๋ก ํ์ธํ ๊ตฌํ |
| 5. AI slop ์ ๋ฆฌ | issueops-slop-clean |
๋ถํ์ํ ๋ณ๊ฒฝ์ ์ ๊ฑฐํ๊ณ ๋ด์ธํ diff |
| 6. ๋ฌธ์ ๋ฐ์ | issueops-docs |
ํ์ฌ ๊ตฌํ๊ณผ ์ผ์นํ๋ ์ด์ ๋ฌธ์, ์ด๋ฒ ์์ ์์ ๋์จ cautionยทADR ๊ธฐ๋ก |
| 7. ๊ฒ์ฆ | issueops-verify |
์คํ ์ฆ๊ฑฐยท๋ ๋ฆฝ ๋ฆฌ๋ทฐยท๋ฐํ ์ค๋น ํ์ธ |
| 8. ์ปค๋ฐยทํธ์ | atomic-commit-push |
๊ฒ์ฆํ ๋ณ๊ฒฝ์ ์ปค๋ฐ๊ณผ ์๊ฒฉ ๋ธ๋์น |
| 9. PR/MR ๋ฐํยท์๋ฃ | issueops-create-pr, issueops-complete |
Draft PR/MR๊ณผ ์๋ฃ ์ฆ๊ฑฐ |
| 10. ๋จธ์งยท์ ๋ฆฌ | issueops-merge, issueops-cleanup |
๋จธ์งํ PR/MR๊ณผ ์ฐ๊ฒฐ ์ด์ยทworktreeยท๋ธ๋์น ์ ๋ฆฌ |
์ด ํ๋ ์ฌ์ฉ์์ฉ ๋จ๊ณ์
๋๋ค. ๋ด๋ถ ์ ์ฅ ์ํ์์ ๋์์
์คํ ๊ฐ์ด๋๊ฐ ์ค๋ช
ํฉ๋๋ค.
์ค๊ฐ์ ๋ณด๋ฅํ๊ฑฐ๋ ํ๊ธฐํ๋ ค๋ฉด issueops-abandon์ ์ฌ์ฉํฉ๋๋ค.
release์ฒ๋ผ ๊ณ์ ์์ ๋๊ฐ๋ base ๋ธ๋์น์์ ๋ด ์์
๋ธ๋์น๋ sync-base ์คํฌ๋ก
์ต์ ์ํ์ ๋ง์ถฅ๋๋ค. ์ด ์คํฌ์ ์ปค๋ฐ์ด ์ด๋ฏธ ๋ค๋ฅธ ๋ธ๋์น์ ๋ค์ด๊ฐ๋์ง, ๋ค๋ฅธ ์ฌ๋์ ์ปค๋ฐ์ด๋
๋ฆฌ๋ทฐ๊ฐ ์๋์ง๋ฅผ ํ์ธํด merge์ rebase ์ค ํ๋๋ฅผ ๊ณ ๋ฅด๊ณ , ํ๋จํ ๊ทผ๊ฑฐ๊ฐ ๋ถ์กฑํ๋ฉด merge๋ฅผ
์ ํํฉ๋๋ค. IssueOps ์ฌ์ดํด์ด ์์ ํ ๋ธ๋์น๋ ์ด ์คํฌ ๋์ issueops execution sync-base๋ก
base ๋ณ๊ฒฝ์ ๋ฐ์ํฉ๋๋ค.
๊ตฌํ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์คํ ์ธ์ ์ ์๋์ผ๋ก ์ ํฉ๋๋ค. ๋ธ๋์น์ worktree๋ฅผ ์ค๋นํ ๋ค Herdr๋ฅผ ํ์ธํ๊ณ , Herdr ์ธ์ ์์ ์ค๋น ์ค์ด๋ฉฐ ์คํ ์ค์ธ ์๋ฒ์ ํธํ์ฑ, ํ์ฌ ํธ์คํธ์ ์คํ ๊ฐ๋ฅ ์ฌ๋ถ๊ฐ ํ์ธ๋๋ฉด ๊ฐ์ worktree์ ์ Herdr ์ธ์ ์ผ๋ก ์ธ๊ณํฉ๋๋ค. Herdr๋ฅผ ์ธ ์ ์์ผ๋ฉด ํ์ฌ ์ธ์ ์์ ์ด์ด ๊ฐ๊ฑฐ๋, ์ง์ ์ฐ ๋ ๋ฒ์งธ ํฐ๋ฏธ๋์์ ์๋์ผ๋ก ์ธ๊ณํฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ๊ฐ ์ค์น๋์ด ์๋ค๋ ์ฌ์ค๋ง์ผ๋ก Herdr๊ฐ ์ค๋น๋์๋ค๊ณ ํ๋จํ์ง ์์ผ๋ฉฐ, ๋ฐ์ฒ๋ฅผ ์ค์นํ๊ฑฐ๋ ์๋ฒ๋ฅผ ์์ํ์ง๋ ์์ต๋๋ค. cmux๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ์ ๋๋ง ์๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ ํ ์ธ์ ยท๋ณด๋ฅยท์ข ๋ฃ์ ์ด ์ด ์๋ ์ ํ๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
์ญํ ๋ณ modelยทeffort๋ ๋ค์ฏ ํธ์คํธ ๋ชจ๋ ์ฌ์ฉ์ ์ ์ฒด(global)๋ ์ ์ฅ์ ํ๋(local) ๋จ์๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ฐ์ ์์๋ ํ๋๋ง๋ค ๋ช ์ ํ๋๊ทธ > local > global > ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
issueops model show --json # ํ์ฌ ๊ฐ๊ณผ ์ถ์ฒ
issueops model set --scope local --host codex --role diff-review --effort xhigh --json
issueops model resolve --host claude --role research --json # ์ต์ข
๊ฐ๊ณผ ๋น ์ปจํ
์คํธ ์คํ argvํธ์คํธ๋ณ ๊ธฐ๋ณธ๊ฐ ํ, ์ค์ ํ์ผ ์์น, ์๋ธ์์ด์ ํธ ์ญํ ๊ณผ ๋ฆฌ๋ทฐ ๋ผ์ด๋์ ๋ฐ๋ฅธ ์ํฅ ๊ท์น์
์คํ ๊ฐ์ด๋์ ์ญํ ๋ณ ๋ชจ๋ธ ๊ธฐ๋ณธ๊ฐ๊ณผ ์ค์ ์
์์ต๋๋ค. ๋ํ๋ก ๋ฐ๊พธ๋ ค๋ฉด io-model ์คํฌ์ ์๋๋ค.
์๋ ์ธ๊ณ ๋ช
๋ น์ Claude Code์ --dangerously-skip-permissions, Codex์
--dangerously-bypass-approvals-and-sandbox, Omo native์ --permission-preset full-access,
omp์ --auto-approve๋ฅผ ์ ๋ฌํ๊ณ , opencode๋ opencode --standalone --auto๋ก ์ฝ๋๋ค. ํธ์คํธ์ ๊ถํ ํ์ธ์ ์๋ตํ๋ ์ต์
์ด๋ฏ๋ก ์ธ๊ณํ ์์
๋ฒ์๋ฅผ
๋จผ์ ์ ํ์ธ์. IssueOps ์์ฒด์ ์คํ ๊ถํยท์ธ๋ยทworkspaceยท์๊ฒฉ ์ฐ๊ธฐ ๊ฒ์ฌ๋ ์ ์ง๋ฉ๋๋ค. ์ธ๊ณ ๋ช
๋ น์
์๋ฝ๊ณผ ์ค์ claimยท์์
์๋ฃ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์ฆ๊ฑฐ๋ก ๊ธฐ๋กํฉ๋๋ค.
flowchart LR
Codex["Codex"] --> Host["์์ host adapter<br/>skills ยท hooks ยท MCP wiring"]
Claude["Claude Code"] --> Host
Omo["Omo native"] --> Host
Omp["omp"] --> Host
Opencode["opencode"] --> Host
Shell["Human shell"] --> Surface["issueops<br/>CLI ยท ๊ณต์ฉ HTTP MCP ยท stdio MCP"]
Host --> Surface
Surface --> Core["Host-neutral Go core"]
Core --> Policy["policy ยท guard ยท contracts"]
Core --> Flow["IssueOps ยท loop"]
Core --> State["SQLite user state ยท audit"]
Core --> Worker["policy-gated worker"]
DDD ๊ด์ ์์ ์ ๋ฌด ๊ท์น๊ณผ ์ํ ์ ์ด๋ domain, ์คํ ์์์ ํธ๋์ญ์ ์กฐ์จ์ application์ด ๋ด๋นํฉ๋๋ค. ํ์ผยทDBยทGitยทํ๋ก์ธ์ค ๊ฐ์ ๊ธฐ์ ๊ตฌํ์ adapter์ ๋๊ณ composition root์์ ์ฐ๊ฒฐํฉ๋๋ค.
| ๊ฒฝ๋ก | ์ฑ ์ |
|---|---|
cmd/issueops/ |
์์กด์ฑ ์กฐ๋ฆฝ๊ณผ CLIยทMCPยทhook ์ง์ ์ |
internal/contract/ |
๋ฒ์ ์ด ์๋ DTO์ ์๋ตยท์ ์ฅ ๊ณ์ฝ |
internal/domain/ |
I/O ์๋ ์ ๋ฌด ๊ท์นยท์ํ ์ ์ดยทํ์ |
internal/application/ |
domainยทport๋ฅผ ์กฐํฉํ๋ ์คํ ํ๋ฆ |
internal/port/ |
์ธ๋ถ ๊ธฐ๋ฅ์ ์ธํฐํ์ด์ค์ ์ค๋ฅ ๊ณ์ฝ |
internal/adapter/ |
ํธ์คํธยทํ์ผยทDBยทGitยทํ๋ก์ธ์ค ๊ตฌํ |
internal/architecture/ |
๊ณ์ธต ์์กด์ฑยท์์ ๊ถ ํ๊ท ๊ฒ์ฌ |
skills/, configs/ |
๊ณต์ฉ ์คํฌ ์๋ณธ๊ณผ ํธ์คํธ ์ค์ ํ ํ๋ฆฟ |
.issueops/ |
์ํคํ ์ฒยท์ด์ยท๊ฒ์ฆยทADR ๋ฌธ์ |
MCP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์๋น ํ๋๋ง ๋จ๋ ๋ก์ปฌ HTTP ์๋น์ค์์ ์คํ๋๊ณ , stdio๋ก ์ค์นํ๋ฉด
ํธ์คํธ ์ธ์
์์์ ์คํ๋ฉ๋๋ค. hook์ ํ๋ก์ ํธ ๋ฌธ์ ๋ฌธ๋งฅ์ ์ ๊ณตํ๊ณ ,
์์
์คํ์ด๋ ๋จ๊ณ ํ์ ์ ๋์ ํ์ง ์์ต๋๋ค. ์์
๋จ๊ณ๋ next, ๋ณ๊ฒฝ ํ์ฉ ์ฌ๋ถ๋
CLI ๊ฒ์ดํธ๊ฐ ๋ด๋นํฉ๋๋ค. ์์ธ ๊ฒฝ๊ณ๋ ์ํคํ
์ฒ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ์๊ฒฉ ์ฐ๊ธฐ๋ ๋ช ์์ ์น์ธ๊ณผ ํด๋น ๋ช ๋ น์ fingerprintยทactor ๊ณ์ฝ์ ๋ฐ๋ฆ ๋๋ค.
- ๋ช ๋ น ์คํ์๋ workspaceยทcwd ๊ฒฝ๊ณ, ์ฐ๊ธฐยท๋คํธ์ํฌ ์๋, timeout๊ณผ secret redaction์ ์ ์ฉํฉ๋๋ค.
- MCP ๋๊ตฌ ์ธ์๋ ๊ณต๊ฐ ์คํค๋ง๋ก ๊ฒ์ฆํ๋ฉฐ, ๋ชจ๋ฅด๋ ํ๋๋ ๋น ์ง๊ฑฐ๋ ํ์ ์ด ํ๋ฆฐ ํ๋๋ ๊ฑฐ๋ถํฉ๋๋ค.
- secret ์๋ฌธ์ ๋ฌธ์, ์ํ ์๋ต, ๊ฐ์ฌ ๋ก๊ทธ, ํ ์คํธ fixture์ ๋จ๊ธฐ์ง ์์ต๋๋ค.
- ์ธ๋ถ ๋๊ตฌ์ ์ค์น๋ ์ธ์ฆ์ ํด๋น ๋๊ตฌ์ ๊ณต์ ์ ์ฐจ๋ก ๋ณ๋ ์ค๋นํฉ๋๋ค. Herdr ๊ฐ์ ์ฐ๋์ ์ ํ ์ฌํญ์ด๋ฉฐ, ๊ธฐ๋ณธ ์ค์นยท์ค๋น ์ํ ํ์ธยท์๊ธฐ ๊ฒ์ฆ์ ์ธ๋ถ ๋๊ตฌ๋ฅผ ์๊ตฌํ์ง ์์ต๋๋ค.
io status --json
io doctor --repo . --json
io docs --json
io contract check --jsonํ๋ค์ค ์์ค๋ฅผ ์์ ํ๋ค๋ฉด ๊ฒ์ฆ ๊ธฐ์ค์ ๋ฐ๋ผ ํ
์คํธํฉ๋๋ค.
์๊ธฐ ๊ฒ์ฆ์ ์งํ ์ํฉ์ --progress=jsonl๋ก ํ์ธํ ์ ์์ต๋๋ค.
io self-verify --seed=100 --target-score=95 --llm-eval=false --progress=jsonl --json
io quality inspect --jsonself-verify๋ ํ
์คํธยท๋น๋ยทCLI/MCPยท์ค์นยท๋์์ฑ ๋ฑ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์คํํฉ๋๋ค.
quality inspect๋ ์ปค๋ฒ๋ฆฌ์ง์ ๋ณต์ก๋ ๋ฑ ๊ฐ์ ํ๋ณด๋ฅผ ์์งํ๋ฉฐ, ์บ์๊ฐ ์์ผ๋ฉด ์ ์ฒด Go ์ปค๋ฒ๋ฆฌ์ง
ํ
์คํธ๋ฅผ ์คํํ๋ฏ๋ก ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์์ง ์ฑ๊ณต(collection_status), ๊ด์ฐฐ๋ ์ํ
(health_status), ์ฐจ๋จ ์ฌ๋ถ(gate_status)๋ฅผ ๊ตฌ๋ถํด ์ฝ์ผ์ธ์.
์ ์ฒด ๋ช
๋ น๊ณผ ๊ณต๊ฐ ๋๊ตฌ ๊ณ์ฝ์ io --help, io contract schema --json์ผ๋ก ํ์ธํฉ๋๋ค.
์คํฌ๋ณ ์ ์ฐจ๋ skills/์ ๊ฐ SKILL.md๊ฐ ์ ๊ท ์๋ณธ์
๋๋ค.
| ์ฆ์ | ํ์ธํ ๋ด์ฉ |
|---|---|
์ค์น ํ io๋ฅผ ์ฐพ์ง ๋ชปํจ |
์ ์
ธ์ ์ด๊ณ ~/.local/bin์ด PATH์ ์๋์ง ํ์ธ |
| ๊ธฐ์กด ๋ช ๋ น ํ์ผ ๋๋ฌธ์ ์ค์น ๊ฑฐ๋ถ | --dry-run --json์์ ์ถฉ๋ ๊ฒฝ๋ก ํ์ธ. ๊ธฐ์กด ํ์ผ์ ์๋์ผ๋ก ๋ฎ์ด์ฐ์ง ์์ |
| ์ ๋ฐ์ดํธ ํ์๋ ์ MCP ๋๊ตฌ๊ฐ ๋ณด์ | ํธ์คํธ MCP ์ฌ์ฐ๊ฒฐ ํ io inspect --json ํ์ธ |
| ๋จ๊ณ๊ฐ ๋งํ๊ฑฐ๋ ๋ค์ ์์ ์ด ๋ถ๋ถ๋ช ํจ | io next --id <ID> --json์ missingยทnext_command ํ์ธ |
| ๋ฌธ์ ํ์ ํ ์ด์ ๋จ๊ณ๋ก ๋์๊ฐ | diff ๋ณ๊ฒฝ์ผ๋ก fingerprint๊ฐ ๋ฌ๋ผ์ก๋์ง ํ์ธํ๊ณ ๋ฌธ์ ๊ฒํ ยท์ฌ๋ด์ธ |
| ์ธ๊ณ ๋ชจ๋ธ์ด๋ effort๊ฐ ์์๊ณผ ๋ค๋ฆ | io model show --json์ ๊ฐ๊ณผ ์ถ์ฒ, ๋ช
์ํ ์ง์ ๊ฐ, ๋ฆฌ๋ทฐ ๋ผ์ด๋ ํ์ธ |
| self-verify๊ฐ ์ค๋ ๊ฑธ๋ฆผ | --progress=jsonl๋ก ์คํ ์ค์ธ ๋จ๊ณ ํ์ธ |
| ์ค์นยท์ํ ์ ์ฅ์์ ๋ฌธ์ ๊ฐ ์์ | io doctor --repo . --json๋ก ํญ๋ชฉ๋ณ ์ง๋จ |
| ๋ฌธ์ | ์ฉ๋ |
|---|---|
| AGENTS.md | ์ ์ฅ์ ์์ ๊ท์น๊ณผ ๊ฒ์ฆ ์ฐ์ ์์ |
| ์ด์ ๊ฐ์ด๋ | ์ค์นยทํธ์คํธยทCLI/MCPยท์ํ ์ด์ |
| ์คํ ๊ฐ์ด๋ | ์ฌ์ดํดยท์คํ ๊ถํยท์ธ๊ณยท๋ณต๊ตฌยท์ญํ ๋ณ ๋ชจ๋ธ |
| ์ํคํ ์ฒ | ๊ณ์ธต๋ณ ์ฑ ์๊ณผ ์์กด ๋ฐฉํฅ |
| ์์ ํ๋ฆ | ์์ด์ ํธ์ ์์ยท๊ฒ์ฆยท์๋ฃ ์ ์ฐจ |
| ํ ์คํธ ๊ธฐ์ค | ๋ณ๊ฒฝ ์ข ๋ฅ๋ณ ๊ฒ์ฆ๊ณผ ์๋ฃ ์กฐ๊ฑด |
| ์ค๊ณ ๊ฒฐ์ | ์ฑํํ ๊ฒฐ์ ๊ณผ ๊ทผ๊ฑฐ |
| ๋ฆด๋ฆฌ์คยท๋กค๋ฐฑ | ๋น๋ ์ฐ์ถ๋ฌผ ๊ฒ์ฆ๊ณผ ์ค์น ๋ณต๊ตฌ |
MIT. LICENSE.

