JIRA κΈ°λ° AI νμ κ°λ° μν¬νλ‘μ° (Claude Codeμ©)
JIRA ν°μΌ λΆμλΆν° PR μμ±κΉμ§, AIκ° λ¨κ³λ³λ‘ λμμ£Όλ κ°λ° μν¬νλ‘μ°μ λλ€.
- Neo4j Code Graph MCP μλ² μΆκ°: μ½λ κ·Έλν κΈ°λ° λΆμ
neo4j_query: Cypher 쿼리 μ§μ μ€νneo4j_find_impact: νμΌ λ³κ²½ μν₯λ λΆμneo4j_trace_workflow: Reactor μν¬νλ‘μ° μΆμ + Race Condition μλ νμ§neo4j_graph_stats: κ·Έλν ν΅κ³ μ‘°ν
- ai-dev μ€ν¬ Neo4j μ°λ:
ai-dev.analyze: Neo4j μν€ν μ² λΆμ μΉμ μΆκ° (Step 3.4.4)ai-dev.work-check: Neo4j κΈ°λ° Race Condition λΆμai-dev.code-check: Neo4j μν₯λ λΆμ μ°λ
- resolve-conversation μ€ν¬ μΆκ°: PR 리뷰 μ½λ©νΈ μλ΅ μλν
- λ―Έν΄κ²° μ½λ©νΈ λΆμ β ACCEPT/DISCUSS/DISMISS νμ β μλ΅ μ΄μ μμ±
- pre-review μ€ν¬ μΆκ°: JIRA ν°μΌ μ¬μ κ²ν + Draft PR μμ±
- κ²½λ λΆμ β Draft κ³ν β JIRA μ λ°μ΄νΈ β Draft ꡬν β Draft PR
- 본격 κ°λ° μ κΈ°λ₯ ν μ€νΈκ° κ°λ₯ν Draft μνλ₯Ό λΉ λ₯΄κ² μμ±
- κΈ°μ‘΄ ai-dev μν¬νλ‘μ°μ μν₯ μμ (λ 립 μ€ν¬)
- Mega-skill ν¨ν΄:
--autoμ΅μ μΌλ‘ TaskCreate/TaskUpdate κΈ°λ° μλ νμ΄νλΌμΈ - λ€λ¨κ³ κ²μ¦: plan-check, code-check, work-check (μ΄ 14κ° validators)
- Sentinel ν¨ν΄: κΈ΄ μμ μΈμ μ μλ μ μ₯/볡μ (70% 컨ν μ€νΈ μκ³μΉ)
- μν¬νλ‘μ° μμ μμ : plan β plan-check (μλ³Έ zac's ν¨ν΄ μ€μ)
- 9λ¨κ³ μν¬νλ‘μ°: κΈ°μ‘΄ 6λ¨κ³μμ κ²μ¦ λ¨κ³ μΆκ°
- 9λ¨κ³ μν¬νλ‘μ°: λΆμ β μ€ν β κ³ν β κ³νκ²μ¦ β ꡬν β μ½λκ²μ¦ β λ²κ·Έκ²μ¦ β 리뷰 β PR
- AI ν¬λ‘μ€ μ²΄ν¬: Claude + Codex MCP λ³λ ¬ κ²μ¦
- 14κ° Validators: κ³ν κ²μ¦ 5κ° + μ½λ νμ§ 3κ° + λ²κ·Έ νμ§ 6κ°
- Neo4j μ½λ κ·Έλν: μν€ν μ² λΆμ + Race Condition μλ νμ§
- Figma μ°λ: figma-ocaml MCPλ‘ λμμΈ μ»¨ν μ€νΈ μλ μΆμΆ
- ν¬λ‘μ€ νλ«νΌ μ°Έμ‘°: iOS/Android μ½λλ² μ΄μ€ λΉκ΅ λΆμ
- λ¬Έμ μλ μμ±: analyze.md, spec.md, plan.md μλ μμ±
- μΈμ κ΄λ¦¬: Sentinel ν¨ν΄μΌλ‘ 컨ν μ€νΈ 보쑴
- PR μ½λ©νΈ μλ΅: 리뷰 μ½λ©νΈ μλ λΆμ λ° μλ΅ μ΄μ μμ±
git clone https://github.com/Allen-han21/aiDev-workflow.git
cd aiDev-workflow
./scripts/install.sh# μ 체 μν¬νλ‘μ° (λ¨κ³λ³ νμΈ)
/ai-dev PROJ-12345
# Mega-skill μλν (μμ μλ)
/ai-dev PROJ-12345 --auto
# λΉ λ₯Έ κ°λ° (κ²μ¦ μλ΅)
/ai-dev PROJ-12345 --auto --skip-checks
# Figma λμμΈ ν¬ν¨
/ai-dev PROJ-12345 --figma https://figma.com/design/xxx
# λμλ§ λ³΄κΈ°
/ai-dev help
# μ¬μ κ²ν (Draft PR λΉ λ₯΄κ² μμ±)
/ai-dev.pre-review PROJ-12345
/ai-dev.pre-review PROJ-12345 --figma https://figma.com/...
/ai-dev.pre-review PROJ-12345 --skip-jira # JIRA μ
λ°μ΄νΈ μ€ν΅
/ai-dev.pre-review PROJ-12345 --skip-pr # Draft PR μμ± μ€ν΅
# κ°λ³ λ¨κ³ μ€ν
/ai-dev.analyze PROJ-12345 # 0λ¨κ³: λΆμ
/ai-dev.spec PROJ-12345 # 1λ¨κ³: μ€ν μ μ
/ai-dev.plan PROJ-12345 # 2λ¨κ³: κ³ν μ립
/ai-dev.plan-check PROJ-12345 # 2.5λ¨κ³: κ³ν κ²μ¦
/ai-dev.impl PROJ-12345 # 3λ¨κ³: ꡬν
/ai-dev.code-check PROJ-12345 # 3.5λ¨κ³: μ½λ νμ§ κ²μ¦
/ai-dev.work-check PROJ-12345 # 3.8λ¨κ³: λ²κ·Έ νμ§
/ai-dev.review PROJ-12345 # 4λ¨κ³: 리뷰
/ai-dev.pr PROJ-12345 # 5λ¨κ³: PR μμ±
# PR 리뷰 μ½λ©νΈ μλ΅
/ai-dev.resolve-conversation # λ―Έν΄κ²° μ½λ©νΈ λΆμ λ° μλ΅ μ΄μ μμ±βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ai-dev μν¬νλ‘μ° v5.1 (Mega-skill) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [μ
λ ₯] JIRA ν°μΌ λ²νΈ + Figma URL (μ ν) β
β β
β ββββββββββββββββββββββββββ TASK CHAIN ββββββββββββββββββββββββββ β
β β β β
β β Task 1: analyze [plan mode] β β
β β β JIRA μ‘°ν, Figma λΆμ, μ½λ νμ β analyze.md β β
β β β β β
β β βΌ [blockedBy: 1] β β
β β Task 2: spec [plan mode] β β
β β β Claude + Codex ν¬λ‘μ€ μ²΄ν¬ β spec.md β β
β β β β β
β β βΌ [blockedBy: 2] β β
β β Task 3: plan [plan mode] β β
β β β Codex MCP κ³ν μμ± + Claude κ²μ¦ β plan.md β β
β β β β β
β β βΌ [blockedBy: 3] β β
β β Task 4: plan-check β
[plan mode] β β
β β β 5κ° validators + devil's advocate β plan-check-report.md β β
β β β β β
β β βΌ [blockedBy: 4] [plan mode ν΄μ ] β β
β β Task 5: impl β β
β β β Taskλ³ κ΅¬ν + λ‘컬 μ»€λ° + ν
μ€νΈ β β
β β β β β
β β βΌ [blockedBy: 5] β β
β β Task 6: code-check β
β β
β β β DRY/SOLID/Complexity λΆμ β code-check-report.md β β
β β β β β
β β βΌ [blockedBy: 6] β β
β β Task 7: work-check β
β β
β β β 6κ° λ³λ ¬ bug checkers β work-check-report.md β β
β β β β β
β β βΌ [blockedBy: 7] β β
β β Task 8: review β β
β β β λΉμ¦λμ€ κ·μΉ κ²μ¦ + μ΅μ’
μΉμΈ νμ β β
β β β β β
β β βΌ [blockedBy: 8] (μΉμΈ μ) β β
β β Task 9: pr β β
β β β Push + GitHub PR μμ± β PR URL β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [SENTINEL PATTERN] β
β κΈ΄ λν μ μλ μ μ₯ β μ μΈμ
μμ 볡μ β μ΄μ΄μ μ€ν β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| λ¨κ³ | μ€ν¬ | λͺ¨λ | ν΅μ¬ λ©μ»€λμ¦ | μΆλ ₯λ¬Ό |
|---|---|---|---|---|
| 0 | ai-dev.analyze |
Plan | JIRA + Figma + μ½λ νμ | analyze.md |
| 1 | ai-dev.spec |
Plan | Claude + Codex ν¬λ‘μ€ μ²΄ν¬ | spec.md |
| 2 | ai-dev.plan |
Plan | Codex MCP + Claude κ²μ¦ | plan.md |
| 2.5 | ai-dev.plan-check β
|
Plan | 5κ° validators + devil's advocate | plan-check-report.md |
| 3 | ai-dev.impl |
Dev | Taskλ³ κ΅¬ν + μ»€λ° | μμ€ μ½λ |
| 3.5 | ai-dev.code-check β
|
Dev | DRY/SOLID/Complexity λΆμ | code-check-report.md |
| 3.8 | ai-dev.work-check β
|
Dev | 6κ° λ³λ ¬ λ²κ·Έ 체컀 | work-check-report.md |
| 4 | ai-dev.review |
Dev | λΉμ¦λμ€ κ·μΉ + μ΅μ’ νμ | μΉμΈ/λ³κ²½μμ² |
| 5 | ai-dev.pr |
Dev | Push + GitHub PR | PR URL |
β = v5.0μμ μΆκ°λ¨
본격 κ°λ° μ κΈ°λ₯ ν μ€νΈκ° κ°λ₯ν Draft μνλ₯Ό λΉ λ₯΄κ² μμ±νλ λ 립 μ€ν¬μ λλ€.
/ai-dev.pre-review PROJ-12345Step 1: Quick Analyze (κ²½λ λΆμ)
βββ JIRA ν°μΌ μ‘°ν
βββ ν€μλ κΈ°λ° μ½λ νμ (ν΅μ¬ νμΌ 2-3κ°)
βββ μΆλ ₯: quick-analyze.md
Step 2: Draft Plan (κ°μνλ κ³ν)
βββ Phase/Task λΆν΄
βββ μΆλ ₯: draft-plan.md
Step 3: JIRA Update
βββ κΈ°μ‘΄ Description μ½κΈ°
βββ μ¬μ κ²ν κ²°κ³Ό μΆκ° (ꡬλΆμ + ν
νλ¦Ώ)
Step 4: Draft Implementation
βββ Taskλ³ κ³¨κ²© μ½λ ꡬν
βββ Happy Path λ‘μ§λ§
βββ λ‘컬 컀λ°
Step 5: Draft PR
βββ /ai-dev.pr --draft νΈμΆ
βββ Draft PR μμ±
| λ μ΄μ΄ | Draft μμ€ |
|---|---|
| Entity/Model | 100% μμ± |
| Repository | 골격 (API μ°λ) |
| Reactor/ViewModel | κΈ°λ³Έ λ°μΈλ© (Happy Path) |
| UI | λ μ΄μμ μμ± (μΈλΆ μ€νμΌ μλ΅) |
| μλ¬ μ²λ¦¬ | μλ΅ |
| ν μ€νΈ | [allen-test] λ‘κ·Έλ§ |
μ¬μ κ²ν ν μμ± κ°λ°μ΄ νμν λ:
/ai-dev PROJ-12345 --from implμ€μ: κΈ°μ‘΄ ai-dev 9λ¨κ³ μν¬νλ‘μ°μ μν₯ μμ (λ 립 μ€ν¬)
| Validator | μν |
|---|---|
| completeness-checker | specβplan μꡬμ¬ν λλ½ κ²μ¬ |
| pattern-compliance | AGENTS.md 컨벀μ μ€μ κ²μ¬ |
| feasibility-assessor | κΈ°μ μ μ€ν κ°λ₯μ± νκ° |
| risk-assessor | νκ·/보μ μν νκ° |
| scope-discipline | κ³Όμ ꡬν(gold-plating) νμ§ |
| + devil's advocate | μ€ν(false positive) κ°μ |
- DRY Checker: μ€λ³΅ μ½λ νμ§
- SOLID Checker: μ€κ³ μμΉ μλ° κ²μ¬
- Complexity Analyzer: μν 볡μ‘λ λΆμ
- Edge Case Hunter: κ²½κ³ μ‘°κ±΄ λλ½ νμ§
- Race Condition Detector: λμμ± λ¬Έμ νμ§
- State Corruption Finder: μν μ€μΌ νμ§
- Memory Leak Hunter: λ©λͺ¨λ¦¬ λμ νμ§
- Input Validation Checker: μ λ ₯ κ²μ¦ λλ½ νμ§
- Regression Detector: νκ· λ²κ·Έ νμ§
| μ΅μ | μ€λͺ | μ μ© λ¨κ³ |
|---|---|---|
--auto |
μμ μλ νμ΄νλΌμΈ (Mega-skill) | μ 체 |
--figma URL |
Figma λμμΈ ν¬ν¨ | analyze |
--from PHASE |
νΉμ λ¨κ³λΆν° μμ | μ 체 |
--to PHASE |
νΉμ λ¨κ³μμ μ’ λ£ | μ 체 |
--skip-checks |
plan-check, code-check, work-check μλ΅ | μ 체 |
--no-codex |
Codex MCP μμ΄ Claudeλ§ μ¬μ© | spec, plan |
--ultrathink |
νμ₯ μ¬κ³ λͺ¨λ νμ±ν | spec, plan |
# μ 체 μν¬νλ‘μ° (λ¨κ³λ³ νμΈ)
/ai-dev PROJ-12345
# Mega-skill μλν (νμΈ μμ΄ μλ μ§ν)
/ai-dev PROJ-12345 --auto
# λΉ λ₯Έ κ°λ° (κ²μ¦ λ¨κ³ μλ΅)
/ai-dev PROJ-12345 --auto --skip-checks
# Figma λμμΈ ν¬ν¨
/ai-dev PROJ-12345 --figma https://figma.com/design/xxx
# ꡬνλΆν° μμ (plan.mdκ° μ΄λ―Έ μμ λ)
/ai-dev PROJ-12345 --from impl
# 볡μ‘ν λ¬Έμ (μ΅κ³ νμ§ λͺ¨λ)
/ai-dev PROJ-12345 --no-codex --ultrathink컨ν μ€νΈ νκ³λ₯Ό μ΄κ³Όν μ μλ κΈ΄ μν¬νλ‘μ°λ₯Ό μν ν¨ν΄:
# μλ μ μ₯
/ai-dev.sentinel save --ticket PROJ-12345
# μ μ₯λ μΈμ
λͺ©λ‘
/ai-dev.sentinel list
# μΈμ
볡μ (μ ν°λ―Έλμμ μ€ν)
/ai-dev.sentinel restore sentinel-2026-01-28-153000
# μ€λλ μΈμ
μ 리
/ai-dev.sentinel cleanup --older-than 7d- μλ μ μ₯ + 볡μ λͺ λ Ήμ΄ νμ
- κ°λ°μκ° μ§μ μ ν°λ―Έλμ μ΄μ΄μΌ ν¨
- 볡μ λͺ λ Ήμ΄ μ€ννμ¬ μ΄μ΄μ μ§ν
μλ μ μ₯ νΈλ¦¬κ±°:
- λ¨κ³ μ ν μ (analyzeβspec, specβplan λ±)
- Task μλ£ μ (κ° μ»€λ° ν)
- 컨ν μ€νΈ μκ³μΉ λλ¬ (70%)
- λͺ μμ μμ² ("μ μ₯ν΄μ€", "save")
- κΈ΄ λν (ν΄ > 20)
.claude/contexts/work/my-project/docs/ai-dev/{PROJ-xxxx-μ€λͺ
}/
βββ analyze.md # 0λ¨κ³: λΆμ κ²°κ³Ό
βββ spec.md # 1λ¨κ³: μ€ν μ μ
βββ plan.md # 2λ¨κ³: ꡬν κ³ν
βββ plan-check-report.md # 2.5λ¨κ³: κ³ν κ²μ¦ κ²°κ³Ό β
βββ code-check-report.md # 3.5λ¨κ³: μ½λ νμ§ κ²μ¦ κ²°κ³Ό β
βββ work-check-report.md # 3.8λ¨κ³: λ²κ·Έ νμ§ κ²°κ³Ό β
- Claude Code CLI
- JIRA μ κ·Ό κΆν (jira-* μ€ν¬ ν΅ν΄)
- (μ ν) Codex MCP
- (μ ν) figma-ocaml MCP
- (μ ν) apple-docs MCP
- (μ ν) Neo4j Code Graph MCP - Race Condition νμ§, μν₯λ λΆμ
μ½λλ² μ΄μ€λ₯Ό κ·Έλνλ‘ λΆμνμ¬ μν€ν μ² μ΄ν΄μ λ²κ·Έ νμ§λ₯Ό κ°νν©λλ€.
cd mcp-servers/neo4j-code-graph
python -m venv .venv
source .venv/bin/activate
pip install -e .| λꡬ | μ€λͺ |
|---|---|
neo4j_query |
Cypher 쿼리 μ§μ μ€ν |
neo4j_find_impact |
νμΌ λ³κ²½ μν₯λ λΆμ (κ°μ λͺ¨λ, μ μ¬ νμΌ) |
neo4j_trace_workflow |
ReactorKit ActionβMutationβState μΆμ |
neo4j_graph_stats |
κ·Έλν ν΅κ³ (λ Έλ/κ΄κ³ κ°μ) |
neo4j_trace_workflow(reactor_name: "LoginReactor")κ²°κ³Ό μμ:
{
"race_condition_risks": [
{
"state_field": "isLoading",
"competing_actions": ["login", "logout"],
"risk": "P2",
"reason": "2 actions modify same state field"
}
]
}Neo4j MCP μλ²κ° μ°κ²°λλ©΄ ai-dev μ€ν¬λ€μ΄ μλμΌλ‘ νμ©ν©λλ€:
- ai-dev.analyze: μν€ν μ² λΆμ μΉμ μ νμΌ μν₯λ, μν¬νλ‘μ° λΆμ μΆκ°
- ai-dev.work-check: Race Condition λ²κ·Έ μ²΄μ»€κ° Neo4j κ·Έλν κΈ°λ° λΆμ μν
- ai-dev.code-check: λ³κ²½ νμΌμ μν₯ λ²μ λΆμ
μμΈν λ΄μ©μ Neo4j Code Graph README μ°Έμ‘°.
PRμ λ¬λ¦° λ―Έν΄κ²° 리뷰 μ½λ©νΈλ₯Ό λΆμνκ³ μλ΅ μ΄μμ μμ±ν©λλ€.
/ai-dev.resolve-conversation| νμ | μ€λͺ |
|---|---|
| ACCEPT | μ½λ©νΈ μμ© β μ½λ μμ + "λ°μνμ΅λλ€" μλ΅ |
| DISCUSS | μΆκ° λ Όμ νμ β μ§λ¬Έ/λμ μ μ |
| DISMISS | λ°λ° κ°λ₯ β κ·Όκ±°μ ν¨κ» μ견 μ μ |
- μμ κ°μ΄λ - μ€μΉ λ°©λ²
- μν¬νλ‘μ° μμΈ - μμΈ μν¬νλ‘μ° μ€λͺ
- μ€μ κ°μ΄λ - μ€μ λ°©λ²
- μ€ν¬ μμ€ν λΆμ - μ€ν¬ μμ€ν μμΈ λΆμ
MIT License - μμΈν λ΄μ©μ LICENSE μ°Έμ‘°
λ²μ : 5.3 μμ±μΌ: 2026-01-23 μμ μΌ: 2026-02-05 (Neo4j Code Graph MCP + resolve-conversation μ€ν¬ μΆκ°)