| name | coding-harness |
| description | Hermes coding harness - Plan -> TODO -> Execute -> Verify -> Debug loop. Completely standalone. No external skill dependencies. Uses only Hermes native tools: file, terminal, code_execution, session_search, memory, delegation.
|
| version | 1.0.0 |
| author | tmdgusya |
Hermes Coding Harness
Hermes์ ์ฝ๋ฉ ์์
ํนํ ํ์ฑํ ์คํฌ์
๋๋ค.
์ฝ๋ฉ ์์
์ด ๊ฐ์ง๋๋ฉด ์๋์ผ๋ก ๊ณํ์ ์ธ์ฐ๊ณ , TODO๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์คํโ๊ฒ์ฆ ๋ฃจํ๋ฅผ ๋๋ฆฝ๋๋ค.
ํต์ฌ ํน์ง: ์ธ๋ถ ์คํฌ ์์กด์ฑ ์์ด standalone์ผ๋ก ๋์ํฉ๋๋ค.
ํธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด
์ฌ์ฉ์ ์
๋ ฅ์ด ์๋ ํจํด์ ๋ง์ ๋ ํธ๋ฆฌ๊ฑฐ๋๋ค:
-
ํจํด ๊ฐ์ง:
- "๊ตฌํํด์ค", "๋ง๋ค์ด์ค", "์ฝ๋ ์์ฑ", "๊ธฐ๋ฅ ์ถ๊ฐ", "๋ฒ๊ทธ ์์ ", "๋ฆฌํฉํ ๋ง", "๋๋ฒ๊น
"
- "์ง๋จ์ ํ
์คํธ ์์ฑ", "๋ฐฐํฌํด์ค", "CI/CD ์ค์ "
- ํ์ผ ๊ฒฝ๋ก ํจํด:
*/, *.py, *.js, *.ts, src/, app/, lib/, cmd/
-
๊ธฐ์ ์คํ ์ธ๊ธ:
- FastAPI, Django, Flask, React, Next.js, Vue, Svelte
- Rust (Actix, Axum), Go (Gin, Echo), Node.js (Express, NestJS)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋, API ์ค๊ณ, ์ธ์ฆ/์ธ๊ฐ ๊ตฌํ
-
ํ์ผ ํ์ฅ์:
.py, .js, .ts, .jsx, .tsx, .rs, .go, .java, .kt, .scala
.c, .cpp, .h, .cs, .rb, .php, .swift
ํธ๋ฆฌ๊ฐ๋๋ฉด ์๋ 6๋จ๊ณ ๋ฃจํ๋ฅผ ์๋์ผ๋ก ์ง์
ํ๋ค.
6-Stage Loop
Stage 1: DETECT โ ์ฝ๋ฉ ์์
๊ฐ์ง
์ฌ์ฉ์ ์
๋ ฅ์ ๋ถ์ํ์ฌ ์ฝ๋ฉ ์์
์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
ํ๋จ ๊ธฐ์ค:
- ์์ฒญ์ ์ฝ๋ ์์ฑ, ์์ , ์ถ๊ฐ, ์ญ์ ๊ฐ ํฌํจ๋์ด ์๋๊ฐ?
- ํ๋ก์ ํธ ํ์ผ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ํ์ํ๊ฐ?
- ์์กด์ฑ ์ค์น, ๋น๋, ํ
์คํธ ์คํ์ด ํ์ํ๊ฐ?
๊ฒฐ๊ณผ:
- ์ฝ๋ฉ ์์
์ด ๋ง๋ค๊ณ ํ๋จ๋๋ฉด Stage 2๋ก ์งํ
- ์ฝ๋ฉ ์์
์ด ์๋๋ฉด ์ผ๋ฐ ๋ํ ๋ชจ๋๋ก ๋์๊ฐ๋ค
Stage 2: PLAN โ ๊ณํ ์๋ฆฝ (๋ด์ฅ)
์์
๋๋ ํ ๋ฆฌ์ PLAN.md๋ฅผ ์์ฑํ๋ค.
์ํ ๋จ๊ณ:
session_search ๋๊ตฌ๋ก ๊ณผ๊ฑฐ ์ธ์
์์ ์ ์ฌํ ์์
ํจํด ๊ฒ์
file ๋๊ตฌ๋ก ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค ๊ตฌ์กฐ ํ์
memory ๋๊ตฌ๋ก ์ฌ์ฉ์์ ์ฝ๋ฉ ์คํ์ผ/์ ํธ ์ฐธ์กฐ
- ๋ค์ ํ
ํ๋ฆฟ์ผ๋ก PLAN.md ์์ฑ:
# [์์
๋ช
] ๊ตฌํ ๊ณํ
> **Generated by coding-harness**
**Goal:** [ํ ๋ฌธ์ฅ ๋ชฉํ]
**Tech Stack:** [์ฌ์ฉ ๊ธฐ์ ]
**Work Scope:**
- **In scope:** [ํฌํจ ๋ด์ฉ]
- **Out of scope:** [์ ์ธ ๋ด์ฉ]
---
## ํ์ผ ๊ตฌ์กฐ ๋งตํ
[์์ฑ/์์ ๋ ํ์ผ ๋ชฉ๋ก]
---
## ๋จ๊ณ
1. [๋จ๊ณ๋ช
] โ [๊ตฌ์ฒด์ ์์
]
2. [๋จ๊ณ๋ช
] โ [๊ตฌ์ฒด์ ์์
]
3. [๋จ๊ณ๋ช
] โ [๊ตฌ์ฒด์ ์์
]
...
---
## ๊ฒ์ฆ ์ ๋ต
- **Build:** [๋น๋ ๋ช
๋ น์ด]
- **Test:** [ํ
์คํธ ๋ช
๋ น์ด]
- **Lint:** [๋ฆฐํธ/ํฌ๋งทํ
๋ช
๋ น์ด]
๊ท์น:
- ํ ๋ฌธ์ฅ Goal
- 3~7๊ฐ์ ๋จ๊ณ (๋ ํฌ๋ฉด ๋จ๊ณ๋ฅผ ๋ ์ธ๋ถ)
- ๊ฐ ๋จ๊ณ์๋ ๊ตฌ์ฒด์ ์ธ ์์
๋ด์ฉ ๊ธฐ์
- Out of scope๋ฅผ ๋ช
ํํ ๊ธฐ์
Stage 3: TODO โ ์์
๋ถํด (๋ด์ฅ)
PLAN.md๋ฅผ ๊ธฐ๋ฐ์ผ๋ก TODO.md๋ฅผ ์์ฑํ์ฌ ๋จ๊ณ๋ณ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
์ํ ๋จ๊ณ:
file ๋๊ตฌ๋ก PLAN.md ์ฝ๊ธฐ
- PLAN.md์ ๋จ๊ณ๋ฅผ TODO ํญ๋ชฉ์ผ๋ก ๋ณํ
TODO.md ์์ฑ:
# [์์
๋ช
] TODO
> **Generated by coding-harness**
> **Status:** [์งํ์ค | ์๋ฃ | ๋ฐฉ์ด๊ธ]
## ์ค๋น (Planning)
- [x] ์๊ตฌ์ฌํญ ๋ถ์
- [x] ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค ํ์
- [x] ๊ณํ ์๋ฆฝ (PLAN.md)
## ๊ตฌํ (Implementation)
- [ ] Task 1: [๋จ๊ณ๋ช
]
- Files: [ํ์ผ ๋ชฉ๋ก]
- Action: [๊ตฌ์ฒด ์์
]
- [ ] Task 2: [๋จ๊ณ๋ช
]
- Files: [ํ์ผ ๋ชฉ๋ก]
- Action: [๊ตฌ์ฒด ์์
]
...
## ๊ฒ์ฆ (Verification)
- [ ] ๋น๋/ํ
์คํธ ์คํ: [๋ช
๋ น์ด]
- [ ] ๋ฆฐํธ/ํฌ๋งทํ
๊ฒ์ฌ: [๋ช
๋ น์ด]
- [ ] ํํ ๊ฒ์ฌ: ๊ฒฐ๊ณผ๋ฌผ ๊ฒํ
## ๋ง๋ฌด๋ฆฌ (Done)
- [ ] ์ต์ข
๊ฒฐ๊ณผ๋ฌผ ์ ๋ฆฌ
- [ ] ํ๋กฌํํธ ์ต์ ํ ํ๊ณ ๊ธฐ๋ก
๊ท์น:
- ๊ฐ ํ์คํฌ๋ ํ๋์ ํ์ผ๋ง ์์ (์ถฉ๋ ๋ฐฉ์ง)
- ํ์ผ ์์กด์ฑ์ด ์๋ ๊ฒฝ์ฐ ์์ฐจ ์คํ
- ์์กด์ฑ์ด ์๋ ํ์คํฌ๋
delegation ๋๊ตฌ๋ก ๋ณ๋ ฌ ๊ฐ๋ฅ
Stage 4: EXECUTE โ ์คํ (๋ด์ฅ)
TODO.md์ ํญ๋ชฉ์ ํ๋์ฉ ์คํํ๋ค.
์ฌ์ฉ ๋๊ตฌ:
file โ ์ฝ๋ ์์ฑ/์์
terminal โ ๋น๋/ํ
์คํธ/ํจํค์ง ์ค์น, git ์กฐ์
code_execution โ ์คํฌ๋ฆฝํธ ์คํ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๊ฒ์ฆ
delegation โ ๋ณ๋ ฌ ์์
์ด ํ์ํ ๋๋ง ์ฌ์ฉ
์คํ ๊ท์น:
- ํ ๋ฒ์ ํ๋์ ํ์ผ๋ง ์์ (์ถฉ๋ ๋ฐฉ์ง)
- ์คํ ์ ํ๋ก
file ๋๊ตฌ๋ก TODO.md ์ํ ์
๋ฐ์ดํธ
- ๊ฐ ๋จ๊ณ ์๋ฃ ์
terminal๋ก git commit ๊ถ์ฅ
- ์ค๋ฅ ๋ฐ์ ์ Stage 5(DEBUG)๋ก ์ ํ
TODO ์ํ ์
๋ฐ์ดํธ ํจํด:
- [ ] Task N: [์์
๋ช
] โ ์คํ ์
- [~] Task N: [์์
๋ช
] โ ์คํ ์ค
- [x] Task N: [์์
๋ช
] โ ์๋ฃ
- [!] Task N: [์์
๋ช
] โ ์คํจ (DEBUG ๋ก ์ ํ)
Stage 5: VERIFY โ ๊ฒ์ฆ (๋ด์ฅ)
๋ชจ๋ ์คํ ์๋ฃ ํ ๊ฒ์ฆ์ ์คํํ๋ค.
์ํ ๋จ๊ณ:
terminal ๋๊ตฌ๋ก scripts/verify.sh๋ฅผ ํธ์ถํ๊ฑฐ๋ ์ง์ ๊ฒ์ฆ ๋ช
๋ น ์คํ
- PLAN.md์ ๊ฒ์ฆ ์ ๋ต ์น์
์ ์ฐธ์กฐํ์ฌ ๊ฒ์ฆ
- ๊ฒฐ๊ณผ๋ฅผ TODO.md์ ๊ธฐ๋ก
ํ๋ก์ ํธ ํ์
๋ณ ๊ฒ์ฆ ๋ช
๋ น:
| ํ์
| ๊ฒ์ฆ ๋ช
๋ น |
|---|
| Python | pytest -q, ruff check ., mypy . |
| Node.js | npm test, npm run lint |
| Rust | cargo test --quiet, cargo clippy --quiet |
| Go | go test ./..., go vet ./... |
| Makefile | make test |
| Docker | docker build . |
์คํจ ์:
- ์ค๋ฅ ๋ฉ์์ง์ ์คํจํ ๋ถ๋ถ์ TODO.md์ ๊ธฐ๋ก
- Stage 6(DEBUG)๋ก ์ ํ
Stage 6: DEBUG โ ๋๋ฒ๊น
(๋ด์ฅ 4๋จ๊ณ)
VERIFY ์คํจ ์ ์คํํ๋ ์์คํ
์ ๋๋ฒ๊น
๋ฃจํด.
์ธ๋ถ systematic-debugging ์คํฌ์ ํธ์ถํ์ง ์๋๋ค.
Phase 1: Understand (์ดํด)
- ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ํํ ์ฝ๊ธฐ
- ์คํจํ ํ์ผ๊ณผ ๋ผ์ธ ๋ฒํธ๋ฅผ ๊ธฐ๋ก
- ์ค๋ฅ ํ์
๋ถ๋ฅ:
- SyntaxError / CompileError: ๋ฌธ๋ฒ ์ค๋ฅ
- ImportError / ModuleNotFoundError: ์์กด์ฑ ์ค๋ฅ
- AssertionError / Test Failure: ๋ก์ง ์ค๋ฅ
- RuntimeError / Exception: ๋ฐํ์ ์ค๋ฅ
- ์ต๊ทผ ๋ณ๊ฒฝ์ฌํญ๊ณผ ์ฐ๊ด์ฑ ๋ถ์ (
terminal: git diff --name-only)
Phase 2: Reproduce (์ฌํ)
- ์ค๋ฅ๋ฅผ ์ฌํํ ์ ์๋ ์ต์ ๋ช
๋ น์ด ์ฐพ๊ธฐ
terminal ๋๊ตฌ๋ก ํด๋น ๋ช
๋ น์ด ์คํํ์ฌ ์ค๋ฅ ํ์ธ
- ์ค๋ฅ๊ฐ ์ฌํ๋๋์ง ๊ธฐ๋ก (์ฒดํฌ๋ฐ์ค:
[ ] โ [x])
Phase 3: Isolate (์ซ์ด๋ด๊ธฐ)
- ์ค๋ฅ ์์ธ์ ์ขํ๊ฐ๊ธฐ:
- ๊ฐ์ฅ ์ต๊ทผ์ ์์ ํ ํ์ผ๋ถํฐ ์ญ์์ผ๋ก ์ ๊ฒ
- ์์กด์ฑ ๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ (package ์ถ๊ฐ, ๋ฒ์ ์
๋ฑ)
- ํ๊ฒฝ ๋ณ์/์ค์ ํ์ผ ๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ
file ๋๊ตฌ๋ก ๊ด๋ จ ํ์ผ ๋ด์ฉ ์ฝ๊ธฐ
- ์ค๊ฐ ๊ฒฐ๊ณผ๋ฌผ์ ์ถ๋ ฅํ์ฌ ์ํ ํ์ธ (
code_execution)
Phase 4: Fix & Verify (์์ & ํ์ธ)
- ์์ธ์ ์์ (
file ๋๊ตฌ)
- Phase 2์ ์ฌํ ๋ช
๋ น์ด๋ก ๋ค์ ์คํ (
terminal)
- ํต๊ณผํ ๋๊น์ง Phase 1~4 ๋ฐ๋ณต
- ์์ ์๋ฃ ์ TODO.md์ ๋๋ฒ๊น
๊ธฐ๋ก ์ถ๊ฐ:
## Debug Log
- [x] Issue: [์ค๋ฅ ์ค๋ช
]
- [x] Root Cause: [์์ธ]
- [x] Fix: [์์ ๋ด์ฉ]
- [x] Verification: [ํ์ธ ๋ช
๋ น์ด] โ PASS
- ๋๋ฒ๊น
์๋ฃ ํ Stage 4(EXECUTE)๋ก ๋์๊ฐ์ผ ํ ํญ๋ชฉ ๊ณ์
Self-Evolution
๋งค ์ฝ๋ฉ ์์
์๋ฃ ํ ๋ค์์ memory ๋๊ตฌ๋ก ๊ธฐ๋กํ๋ค:
[coding-harness] ํจํด ํ์ต ์ค...
- ์์
ํ์
: [Python/FastAPI | React/Next.js | Rust | Go | ...]
- ๊ณํ ๋จ๊ณ ์: [N]
- ๋๋ฒ๊น
ํ์: [N]
- ์ฑ๊ณต ํจํด:
- [์ ๋ ๊ฒ]
- ์คํจ ํจํด:
- [์ ๋ ๊ฒ]
- ์ต์ ํ ์ :
- [๋ค์ ๋ฒ์ ํด์ผ ํ ๊ฒ]
์ด๋ค์ ๋ค์ ์ธ์
์ PLAN ๋จ๊ณ์์ ์ฐธ์กฐ๋๋ค.
์ฐ๋ ๊ธ์ง ๊ท์น
์ด ์คํฌ์ ์ธ๋ถ ์คํฌ์ ํธ์ถํ์ง ์๋๋ค:
| ๊ธ์ง ํญ๋ชฉ | ์ด์ |
|---|
โ plan-crafting ์คํฌ ํธ์ถ | ๋ด์ฅ PLAN ๋ก์ง์ด ์์ |
โ todo ์คํฌ ํธ์ถ | ๋ด์ฅ TODO ๊ด๋ฆฌ ์์ |
โ systematic-debugging ์คํฌ ํธ์ถ | ๋ด์ฅ DEBUG ๋ฃจํด ์์ |
| โ ์ธ๋ถ ์คํฌ ํ์ผ ์ง์ ์ฝ๊ธฐ | standalone ์์น ํ๊ดด |
ํ์ฉ ๋๊ตฌ:
- โ
file
- โ
terminal
- โ
code_execution
- โ
session_search
- โ
memory
- โ
delegation (๋ณ๋ ฌ ํ์์์๋ง)
์ฌ์ฉ ์์
์ฌ์ฉ์ ์
๋ ฅ
FastAPI ํ๋ก์ ํธ์ JWT ์ธ์ฆ ๋ฏธ๋ค์จ์ด๋ฅผ ๊ตฌํํด์ค.
Harness ๋์
DETECT: ์ฝ๋ฉ ์์
๊ฐ์ง ("๊ตฌํ", "FastAPI")
PLAN: PLAN.md ์์ฑ
Goal: FastAPI JWT ์ธ์ฆ ๋ฏธ๋ค์จ์ด ๊ตฌํ
Tech: FastAPI, PyJWT
Steps:
1. pyproject.toml ์์กด์ฑ ์ถ๊ฐ
2. middleware/auth.py ๊ตฌํ
3. tests/test_auth.py ์์ฑ
4. pytest ์คํ
TODO: TODO.md ์์ฑ
## ๊ตฌํ
- [ ] pyproject.toml ์์กด์ฑ ์ถ๊ฐ
- [ ] middleware/auth.py ๊ตฌํ
- [ ] tests/test_auth.py ์์ฑ
EXECUTE: ๊ฐ ํญ๋ชฉ ์คํ
- file: pyproject.toml ์์
- terminal: pip install pyjwt
- file: middleware/auth.py ์์ฑ
- file: tests/test_auth.py ์์ฑ
VERIFY:
$ pytest tests/test_auth.py -v
============================== 3 passed ==============================
DEBUG: ํต๊ณผ โ ์๋ ์ ํจ
LEARN: memory์ ํจํด ๊ธฐ๋ก