diff --git a/.agents/AGENT.md b/.agent/AGENT.md similarity index 70% rename from .agents/AGENT.md rename to .agent/AGENT.md index 148d8b9..aa7f699 100644 --- a/.agents/AGENT.md +++ b/.agent/AGENT.md @@ -10,18 +10,18 @@ description: 모든 작업에 자동 적용되는 에이전트 행동 규칙. ## NEVER (절대 금지) -1. NEVER start coding without reading relevant reference documents in `.agents/references/` -2. NEVER guess when documentation exists — always check `.agents/references/` first -3. NEVER repeat a failed approach — check `.agents/references/known-issues.md` first -4. NEVER call APIs directly when helper scripts exist in `.agents/workflows/helpers/` -5. NEVER skip the pre-task checklist defined in `.agents/workflows/pre-task.md` +1. NEVER start coding without reading relevant reference documents in `.agent/references/` +2. NEVER guess when documentation exists — always check `.agent/references/` first +3. NEVER repeat a failed approach — check `.agent/references/known-issues.md` first +4. NEVER call APIs directly when helper scripts exist in `.agent/workflows/helpers/` +5. NEVER skip the pre-task checklist defined in `.agent/workflows/pre-task.md` 6. NEVER attempt the same failed approach more than 2 times 7. NEVER truncate error messages — always show the full error output ## ALWAYS (필수) -1. ALWAYS run `.agents/workflows/pre-task.md` before any implementation task -2. ALWAYS check `.agents/references/known-issues.md` before debugging +1. ALWAYS run `.agent/workflows/pre-task.md` before any implementation task +2. ALWAYS check `.agent/references/known-issues.md` before debugging 3. ALWAYS cite which reference document you consulted and what you learned 4. ALWAYS stop and ask the user if 2 consecutive attempts on the same approach fail 5. ALWAYS use existing helper scripts instead of raw API calls @@ -41,11 +41,11 @@ description: 모든 작업에 자동 적용되는 에이전트 행동 규칙. ## Reference Loading Order -1. `.agents/AGENT.md` (this file — behavior rules) -2. `.agents/references/known-issues.md` (past failure patterns) -3. `.agents/references/` (project-specific knowledge) -4. `.agents/workflows/services.md` (service credentials & protocols) -5. `.agents/workflows/` (action procedures) +1. `.agent/AGENT.md` (this file — behavior rules) +2. `.agent/references/known-issues.md` (past failure patterns) +3. `.agent/references/` (project-specific knowledge) +4. `.agent/workflows/services.md` (service credentials & protocols) +5. `.agent/workflows/` (action procedures) ## PowerShell Notes diff --git a/.agents/GUIDE.md b/.agent/GUIDE.md similarity index 93% rename from .agents/GUIDE.md rename to .agent/GUIDE.md index 0ec56d6..d4629d6 100644 --- a/.agents/GUIDE.md +++ b/.agent/GUIDE.md @@ -22,7 +22,7 @@ AI 에이전트는 다음과 같은 문제를 자주 일으킵니다: ## 파일 구조 개요 ``` -.agents/ +.agent/ ├── AGENT.md ← 🧠 에이전트 헌법 (NEVER/ALWAYS 규칙) ├── GUIDE.md ← 📖 이 가이드 ├── references/ ← 📚 프로젝트 지식 베이스 @@ -35,7 +35,7 @@ AI 에이전트는 다음과 같은 문제를 자주 일으킵니다: ├── end.md ← 세션 종료 (devlog + known-issues + Vikunja + Git) ├── pre-task.md ← 작업 전 필수 체크리스트 ├── debug.md ← 디버깅 전용 절차 - ├── services.md ← 서비스 연동 정보 + AI 작업 프로토콜 + ├── services.md ← 서비스 연동 + 작업 프로토콜 + 개발/테스트 명령어 ├── check-gitea.md ← Gitea 현황 조회 ├── check-vikunja.md ← Vikunja 태스크 조회 └── helpers/ @@ -104,21 +104,12 @@ known-issues가 **실패만** 기록한다면, devlog는 **전체 세션 이력* ## 사용법 -### 새 프로젝트에 적용하기 - -1. `.agents/` 디렉토리를 프로젝트에 복사 -2. `references/` 파일들을 프로젝트에 맞게 채우기: - - `architecture.md` — 프로젝트 구조 설명 - - `tech-stack.md` — 사용 기술 및 버전 - - `conventions.md` — 코딩 스타일 규칙 -3. 프로젝트별 워크플로우가 있다면 `workflows/`에 추가 - ### 프로젝트별 워크플로우와 함께 사용하기 이 범용 워크플로우와 프로젝트별 워크플로우(예: Vikunja 동기화, Gitea 연동)는 **함께 사용**합니다: ``` -.agents/ +.agent/ ├── AGENT.md ← 범용 (공통) ├── references/ ← 범용 + 프로젝트 특화 │ ├── known-issues.md ← 범용 (공통) @@ -128,7 +119,7 @@ known-issues가 **실패만** 기록한다면, devlog는 **전체 세션 이력* ├── debug.md ← 범용 (공통) ├── start.md ← 범용 기반 + 프로젝트 단계 추가 ├── end.md ← 범용 기반 + 프로젝트 단계 추가 - ├── services.md ← ⭐ 프로젝트별 + ├── services.md ← ⭐ 프로젝트별 (서비스 + 프로토콜 + 개발/테스트) ├── check-vikunja.md ← ⭐ 프로젝트별 ├── check-gitea.md ← ⭐ 프로젝트별 └── helpers/ diff --git a/.agents/references/architecture.md b/.agent/references/architecture.md similarity index 100% rename from .agents/references/architecture.md rename to .agent/references/architecture.md diff --git a/.agents/references/conventions.md b/.agent/references/conventions.md similarity index 100% rename from .agents/references/conventions.md rename to .agent/references/conventions.md diff --git a/.agents/references/known-issues.md b/.agent/references/known-issues.md similarity index 100% rename from .agents/references/known-issues.md rename to .agent/references/known-issues.md diff --git a/.agents/references/tech-stack.md b/.agent/references/tech-stack.md similarity index 79% rename from .agents/references/tech-stack.md rename to .agent/references/tech-stack.md index bd07d4b..0217a1c 100644 --- a/.agents/references/tech-stack.md +++ b/.agent/references/tech-stack.md @@ -6,7 +6,7 @@ | 항목 | 버전 | 비고 | |------|------|------| -| Python | 3.12+ | `C:\ProgramData\miniforge3\envs\agent_chat\python.exe` | +| Python | 3.12+ | `C:\ProgramData\miniforge3\envs\variet-agent\python.exe` | | Gemini CLI | v0.32+ (AI Ultra) | `gemini --model gemini-3-flash-preview` | ## 프레임워크 @@ -20,17 +20,17 @@ ## 패키지 관리 -- 패키지 매니저: pip (conda env `agent_chat`) +- 패키지 매니저: pip (conda env `variet-agent`) - 의존성 파일: `requirements.txt` -- 가상환경: `C:\ProgramData\miniforge3\envs\agent_chat` +- 가상환경: `C:\ProgramData\miniforge3\envs\variet-agent` ## 개발 도구 | 도구 | 명령어 | |------|--------| -| 봇 실행 | `run_bot.bat` 또는 `C:\ProgramData\miniforge3\envs\agent_chat\python.exe main.py` | -| 테스트 | `C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m pytest tests/ -v` | -| Vikunja 조회 | `C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py list todo` | +| 봇 실행 | `run_bot.bat` 또는 `C:\ProgramData\miniforge3\envs\variet-agent\python.exe main.py` | +| 테스트 | `C:\ProgramData\miniforge3\envs\variet-agent\python.exe -m pytest tests/ -v` | +| Vikunja 조회 | `C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py list todo` | ## 환경 변수 (.env) diff --git a/.agent/workflows/check-gitea.md b/.agent/workflows/check-gitea.md index bbb3cb9..4130f8a 100644 --- a/.agent/workflows/check-gitea.md +++ b/.agent/workflows/check-gitea.md @@ -1,5 +1,5 @@ --- -description: Gitea API로 variet-agent 저장소 커밋/이슈/PR 현황을 조회하는 워크플로우 +description: Gitea API로 저장소 커밋/이슈/PR 현황을 조회하는 워크플로우 --- # Gitea 저장소 현황 조회 @@ -32,7 +32,15 @@ Invoke-RestMethod -Uri "https://git.variet.net/api/v1/repos/Variet/variet-agent/ 4. Wiki 페이지 목록: ```powershell -$h = @{Authorization="token 3a01b4b15a39921572e64c413353e870d4d2161b"} -$pages = Invoke-RestMethod -Uri "https://git.variet.net/api/v1/repos/Variet/variet-agent/wiki/pages" -Headers $h -$pages | ForEach-Object { Write-Host $_.title } +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\wiki_helper.py list +``` + +5. Wiki 페이지 읽기: +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\wiki_helper.py read "Architecture" +``` + +6. Wiki 페이지 업데이트: +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\wiki_helper.py update "페이지-제목" /tmp/wiki_content.md ``` diff --git a/.agent/workflows/check-status.md b/.agent/workflows/check-status.md deleted file mode 100644 index d827347..0000000 --- a/.agent/workflows/check-status.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -description: ?로?트 ?체 ?업 ?황??종합 체크?는 ?크?로??(Git + Vikunja + 로컬) ---- - -# ?로?트 ?황 종합 체크 - -"?업?황 체크", "?황 ?인", "status check" ???청 ?????크?로?? ?행?니?? - -// turbo-all - -## ?차 - -1. Git 로컬 ?태 ?인: -```powershell -git -C "c:\Users\Certes\Desktop\variet-agent" status --short -``` -```powershell -git -C "c:\Users\Certes\Desktop\variet-agent" log --oneline -5 -``` - -2. Vikunja ?스???황 조회: -```powershell -$h = @{Authorization="Bearer tk_070f8e0b715e818bb7178c3815ed5389040eddca"} -$tasks = Invoke-RestMethod -Uri "https://plan.variet.net/api/v1/projects/7/tasks?per_page=50" -Headers $h -$todo = $tasks | Where-Object { -not $_.done } -$done = $tasks | Where-Object { $_.done } -Write-Host "=== Vikunja: TODO $($todo.Count), DONE $($done.Count) ===" -$todo | ForEach-Object { Write-Host " #$($_.id) $($_.title)" } -``` - -3. Gitea 최근 커밋 ?인 (리모??: -```powershell -$h = @{Authorization="token 3a01b4b15a39921572e64c413353e870d4d2161b"} -$commits = Invoke-RestMethod -Uri "https://git.variet.net/api/v1/repos/Variet/variet-agent/commits?limit=5&sha=main" -Headers $h -Write-Host "=== Gitea: Recent Commits ===" -$commits | ForEach-Object { Write-Host " $($_.sha.Substring(0,7)) $($_.commit.message.Split("`n")[0])" } -``` - -4. 결과?종합?여 ?용?에?보고: - - 로컬 uncommitted 변??? - - 로컬 vs 리모??커밋 차이 - - TODO ?스??목록 + ?선?위 - - ?음 ?업 ?안 diff --git a/.agent/workflows/check-vikunja.md b/.agent/workflows/check-vikunja.md index 0da28ce..0eeb7f0 100644 --- a/.agent/workflows/check-vikunja.md +++ b/.agent/workflows/check-vikunja.md @@ -1,50 +1,55 @@ --- -description: Vikunja API?Variet Agent ?로?트 ?스???황??조회?는 ?크?로?? +description: Vikunja API로 프로젝트 태스크 현황을 조회하는 워크플로우 --- -# Vikunja ?스???황 조회 +# Vikunja 태스크 현황 조회 -?비???보??`.agent/workflows/services.md` 참조. +서비스 정보는 `.agent/workflows/services.md` 참조. // turbo-all -## ?차 +## 절차 -1. 간편 조회 (TODO/DONE 리스??: +1. 전체 목록: ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py list +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py list ``` -2. TODO?조회: +2. TODO만: ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py list todo +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py list todo ``` -3. DONE?조회: +3. DONE만: ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py list done +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py list done ``` -4. ?스???료 처리 (**?️ 반드????방법 ?용 ??직접 API ?출 금?**): +4. 태스크 완료 처리 (반드시 이 방법 사용, 직접 API 호출 금지): ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py done {TASK_ID} +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py done {TASK_ID} ``` - ?러 ?스???시: + 복수 태스크 처리: ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py done 71 77 78 +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py done 71 77 78 ``` -5. ?스??코멘??추?: +5. 태스크에 코멘트 추가: ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py comment {TASK_ID} "?용" +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py comment {TASK_ID} "내용" ``` -6. ???스???성: +6. 새 태스크 생성: ```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agent\workflows\vikunja_helper.py create "?목" "?명" +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py create "제목" "설명" --labels Backend,Priority:High +``` + +7. 태스크에 라벨 추가: +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py label {TASK_ID} Backend Priority:High ``` > [!CAUTION] -> **???* `Invoke-RestMethod -Method Post -Body '{"done": true}'` 같? 직접 API ?출???용?? 마세?? -> Vikunja API??POST ??body???함?? ?? ?드?빈값?로 ???니?? -> `vikunja_helper.py`???? GET ??기존 ?드 보존 ??POST ?턴???용?여 title/description 보존??보장?니?? +> 절대로 Invoke-RestMethod로 직접 API를 호출하지 마세요. +> Vikunja API는 POST 시 body에 포함되지 않은 필드를 빈값으로 덮어씁니다. +> vikunja_helper.py는 항상 GET 후 기존 필드 보존 후 POST 패턴을 사용합니다. diff --git a/.agents/workflows/debug.md b/.agent/workflows/debug.md similarity index 93% rename from .agents/workflows/debug.md rename to .agent/workflows/debug.md index 4d701d9..6743b46 100644 --- a/.agents/workflows/debug.md +++ b/.agent/workflows/debug.md @@ -16,7 +16,7 @@ description: 에러/버그 발생 시 체계적 디버깅 워크플로우 (에 ## 2단계: Known Issues 확인 -`.agents/references/known-issues.md`를 읽고 동일하거나 유사한 문제가 있는지 확인합니다. +`.agent/references/known-issues.md`를 읽고 동일하거나 유사한 문제가 있는지 확인합니다. > [!CAUTION] > **known-issues 확인 없이 해결 시도를 시작하지 마세요.** diff --git a/.agent/workflows/dev.md b/.agent/workflows/dev.md deleted file mode 100644 index 2d330d2..0000000 --- a/.agent/workflows/dev.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: 개발 ?버 ?행 방법 ---- - -## ?경 ?정 - -1. Python ?경 ?성?? -// turbo -``` -C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m pip install -r requirements.txt -``` - -2. API ?버 ?행 -``` -C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m uvicorn api.server:app --reload --host 0.0.0.0 --port 8100 -``` - -3. Discord Bot ?행 (별도 ???? -``` -C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m api.discord_bot -``` diff --git a/.agent/workflows/end.md b/.agent/workflows/end.md new file mode 100644 index 0000000..268460f --- /dev/null +++ b/.agent/workflows/end.md @@ -0,0 +1,165 @@ +--- +description: 세션 종료 시 devlog 기록 + git commit + Vikunja 동기화 (끝, 마무리, 커밋해, 완료) +--- + +# 세션 종료 프로토콜 + +작업 완료, "끝", "마무리", "커밋해" 등 요청 시 이 워크플로우를 실행합니다. + +// turbo-all + +## 0. 학습 기록 (실패/시행착오 저장) + +이번 세션에서 발생한 실패, 시행착오, 새로 알게 된 사실을 정리합니다: + +- [ ] `.agent/references/known-issues.md`에 추가할 항목이 있는지 확인 +- [ ] 있다면 아래 포맷으로 추가: + +```markdown +### [날짜] [키워드] — 한줄 요약 +- **증상**: ... +- **원인**: ... +- **해결**: ... +- **주의**: ... +``` + +## 1. Devlog 기록 + +### Index 업데이트 (필수 — 매 작업) + +오늘 날짜의 index 파일에 완료된 작업 1줄을 추가합니다. + +- **파일**: `docs/devlog/YYYY-MM-DD.md` +- **형식**: +```markdown +| NNN | HH:MM | 작업 설명 | `커밋해시` | ✅ 또는 🔧 | +``` + +> [!TIP] +> - ✅ = 완료, 🔧 = 미완료 (다음 세션에서 이어받기) +> - 파일이 없으면 새로 생성 (테이블 헤더 포함) + +### Entry 작성 (선택적 — 필요할 때만) + +> [!IMPORTANT] +> Entry는 **git/Vikunja/wiki에 없는 정보**가 있을 때만 작성합니다. + +**Entry 작성 기준:** +- ✅ 설계 결정이 있었을 때 (왜 A가 아닌 B를 선택했는지) +- ✅ 미완료 사항이 있을 때 (다음 세션이 이어받아야 할 맥락) +- ✅ 삽질/트러블슈팅이 있었을 때 (같은 실수 방지) + +**Entry 불필요:** +- ❌ 단순 버그 픽스 (커밋 메시지로 충분) +- ❌ 문서 업데이트 (git diff로 충분) +- ❌ 이미 Vikunja 태스크에 상세 설명이 있는 경우 + +**Entry 파일**: `docs/devlog/entries/YYYYMMDD-NNN.md` +```markdown +# 작업 제목 + +- **시간**: YYYY-MM-DD HH:MM~HH:MM +- **Commit**: `해시` +- **Vikunja**: #태스크번호 → done/진행중 + +## 결정 사항 +- 왜 이 방식을 선택했는지 + +## 미완료 +- 남은 작업 (있을 경우) +``` + +--- + +## 2. Vikunja 동기화 + +> [!CAUTION] +> **반드시 `vikunja_helper.py` 사용.** 직접 API 호출 금지. +> Vikunja API는 POST 시 body에 없는 필드를 빈값으로 덮어씁니다. + +### 2-1. 커밋 전수 검사 + +이번 세션의 **모든 커밋을 하나씩 검사**하고 Vikunja에 매핑합니다. + +```powershell +git log --oneline -20 +``` + +| 커밋 유형 | Vikunja 액션 | +|-----------|-------------| +| 기존 태스크 해당 작업 **완료** | `C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py done {ID}` | +| 신규 작업 완료 (기존 태스크 없음) | `C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py create "제목" "설명" --done --labels Backend,Priority:High` | +| 작업 중 발견된 **미완료 TODO** | `C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py create "제목" "설명" --labels Backend,Priority:Mid` | + +> [!IMPORTANT] +> 모든 커밋이 기존 또는 신규 태스크에 매핑되었는지 확인. + +### 2-2. 완료 처리 + +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py done {TASK_ID} +``` + +### 2-3. 신규 태스크 생성 + +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py create "제목" "설명" --labels Backend,Priority:High +``` + +### 라벨 규칙 + +**영역 (필수 1개 이상):** `Backend` / `Frontend` / `Engine` / `Infra` / `Test` +**우선순위 (필수 1개):** `Priority:High` / `Priority:Mid` / `Priority:Low` + +--- + +## 3. Wiki 동기화 (해당 시에만) + +| 코드 변경 | 대상 Wiki | +|-----------|----------| +| 서버 변경 | Architecture | +| 프론트엔드 변경 | Architecture | +| 인프라 변경 | Architecture | +| 새 모듈/패키지 추가 | Architecture | + +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\wiki_helper.py update "Architecture" /tmp/wiki_content.md +``` + +--- + +## 4. Git Commit & Push + +```powershell +git add -A +git status --short +``` +```powershell +git commit -m "커밋 메시지" +``` +```powershell +git push origin main +``` + +**커밋 메시지 컨벤션:** +``` +(): + +type: feat|fix|refactor|test|docs|chore|ci|infra +scope: (선택) +``` + +--- + +## 5. 최종 체크리스트 + +> [!WARNING] +> 아래 항목 중 하나라도 누락되면 세션 종료를 완료할 수 없습니다. + +- [ ] known-issues 업데이트됨 (새 이슈가 있었다면) +- [ ] devlog index 업데이트됨 +- [ ] devlog entry 작성됨 (필요한 경우만) +- [ ] Vikunja 태스크 생성/완료 처리됨 (커밋 전수 검사 기반) +- [ ] Wiki 동기화됨 (아키텍처 변경이 있었다면) +- [ ] git push 완료 +- [ ] 사용자에게 완료 보고 diff --git a/.agent/workflows/git.md b/.agent/workflows/git.md deleted file mode 100644 index ff51d47..0000000 --- a/.agent/workflows/git.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -description: Git 및 Gitea 워크플로우 ---- - -## 저장소 정보 -- **Remote**: https://git.variet.net/Variet/variet-agent.git -- **기본 브랜치**: main -- **Vikunja 프로젝트**: https://plan.variet.net/projects/7 - -## 커밋 컨벤션 -``` -feat: 새 기능 -fix: 버그 수정 -docs: 문서 변경 -refactor: 리팩토링 -test: 테스트 추가/수정 -chore: 빌드/설정 변경 -``` - -## 작업 흐름 - -1. 브랜치 생성 -// turbo -``` -git checkout -b feat/feature-name -``` - -2. 커밋 -// turbo -``` -git add -A && git commit -m "feat: description" -``` - -3. 푸시 -``` -git push origin feat/feature-name -``` - -4. Gitea에서 PR 생성 또는 API로 자동 생성 - -## Wiki 업데이트 -작업 완료 시 Gitea Wiki에 관련 내용 업데이트. -Wiki 구조: -- Home: 프로젝트 개요 -- Architecture: 아키텍처 설명 -- Design-Decisions: 설계 결정 이유 -- Changelog: 버전별 변경 이력 diff --git a/.agents/workflows/helpers/vikunja_helper.py b/.agent/workflows/helpers/vikunja_helper.py similarity index 100% rename from .agents/workflows/helpers/vikunja_helper.py rename to .agent/workflows/helpers/vikunja_helper.py diff --git a/.agents/workflows/helpers/wiki_helper.py b/.agent/workflows/helpers/wiki_helper.py similarity index 100% rename from .agents/workflows/helpers/wiki_helper.py rename to .agent/workflows/helpers/wiki_helper.py diff --git a/.agents/workflows/pre-task.md b/.agent/workflows/pre-task.md similarity index 81% rename from .agents/workflows/pre-task.md rename to .agent/workflows/pre-task.md index 70c4570..7f4e2a1 100644 --- a/.agents/workflows/pre-task.md +++ b/.agent/workflows/pre-task.md @@ -16,10 +16,10 @@ description: 모든 구현 작업 전 실행하는 사전 점검 체크리스트 ## 2단계: 레퍼런스 확인 (추측 금지) -- [ ] `.agents/references/architecture.md` — 현재 아키텍처 확인 -- [ ] `.agents/references/tech-stack.md` — 기술 스택 및 버전 확인 -- [ ] `.agents/references/conventions.md` — 코딩 컨벤션 확인 -- [ ] `.agents/references/known-issues.md` — 과거 실패 패턴 확인 +- [ ] `.agent/references/architecture.md` — 현재 아키텍처 확인 +- [ ] `.agent/references/tech-stack.md` — 기술 스택 및 버전 확인 +- [ ] `.agent/references/conventions.md` — 코딩 컨벤션 확인 +- [ ] `.agent/references/known-issues.md` — 과거 실패 패턴 확인 - [ ] 관련 기존 코드 최소 3개 파일 읽기 > [!CAUTION] diff --git a/.agent/workflows/start.md b/.agent/workflows/start.md new file mode 100644 index 0000000..707b022 --- /dev/null +++ b/.agent/workflows/start.md @@ -0,0 +1,65 @@ +--- +description: 세션 시작 시 프로젝트 맥락을 빠르게 복구하는 워크플로우 (시작, continue, 이어서, 작업 시작) +--- + +# 세션 시작 프로토콜 + +새 대화 시작, "continue", "이어서", "작업 시작" 등 요청 시 이 워크플로우를 실행합니다. + +// turbo-all + +## 절차 + +### 0. 에이전트 룰 & 맥락 로딩 (자동) + +`.agent/AGENT.md`를 읽고 에이전트 행동 규칙을 로딩합니다. +`.agent/references/known-issues.md`를 읽어 최근 이슈를 파악합니다. + +### 1. Devlog 맥락 복구 + +오늘 + 어제 devlog index를 읽고 최근 작업 흐름을 파악합니다. + +```powershell +$today = Get-Date -Format "yyyy-MM-dd" +$yesterday = (Get-Date).AddDays(-1).ToString("yyyy-MM-dd") +if (Test-Path "docs\devlog\$today.md") { + Write-Host "=== Devlog: $today ===" + Get-Content "docs\devlog\$today.md" +} elseif (Test-Path "docs\devlog\$yesterday.md") { + Write-Host "=== Devlog: $yesterday (no entry for today yet) ===" + Get-Content "docs\devlog\$yesterday.md" +} else { + Write-Host "=== No recent devlog found ===" +} +``` + +미완료(🔧) 항목이 있으면 해당 entry 파일을 읽어 이어받기 맥락을 확보합니다: +- Entry 경로: `docs/devlog/entries/YYYYMMDD-NNN.md` + +### 2. Git 상태 확인 + +```powershell +git status --short +``` +```powershell +git log --oneline -5 +``` + +### 3. Vikunja TODO 태스크 + +```powershell +C:\ProgramData\miniforge3\envs\variet-agent\python.exe .agent\workflows\helpers\vikunja_helper.py list todo +``` + +### 4. 종합 보고 + +결과를 종합하여 사용자에게 보고: +- 마지막 작업 맥락 + 미완료 항목 (devlog 🔧 기반) +- TODO 태스크 목록 (라벨 + 우선순위) +- 다음 작업 제안 + +**우선순위 판단 기준** (라벨만으로 판단 금지): +- P0: 최근 커밋에서 스키마/모델/인터페이스 변경 → 연쇄 영향 점검 +- P1: 서버 기동/API 응답 장애 +- P2: 기능 미완성/UX 개선 +- P3: 정확도 향상, 신규 기능, CI/CD, 문서 정리 diff --git a/.agent/workflows/sync.md b/.agent/workflows/sync.md deleted file mode 100644 index 64ed070..0000000 --- a/.agent/workflows/sync.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -description: 작업 동기화 및 진행 보고 절차 ---- - -## 작업 시작 시 -1. Vikunja (plan.variet.net/projects/7) 에서 해당 태스크를 "진행 중"으로 변경 -2. 관련 브랜치 생성 (feat/ 또는 fix/) - -## 작업 중간 동기화 -1. 의미 있는 단위로 커밋 + 푸시 -2. 필요 시 Gitea Wiki 업데이트 (Architecture, Changelog 등) -3. 사용자에게 디스코드 또는 Vikunja 코멘트로 진행 상황 보고 - -## 작업 완료 시 -1. Gitea PR 생성 -2. Vikunja 태스크 "완료"로 변경 -3. Changelog 업데이트 -4. Wiki 관련 페이지 업데이트 diff --git a/.agent/workflows/test.md b/.agent/workflows/test.md deleted file mode 100644 index dac8e3f..0000000 --- a/.agent/workflows/test.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -description: ?스???행 방법 ---- - -## ?위 ?스?? -// turbo -``` -C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m pytest tests/ -v -``` - -## Context Manager ?과 ?스?? -``` -C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m tests.test_context_manager -``` - -## Task Pipeline E2E -``` -C:\ProgramData\miniforge3\envs\agent_chat\python.exe -m tests.test_pipeline_e2e -``` - -## Gemini CLI ?동 ?스?? -``` -gemini -p "Hello, respond with 'OK'" --approval-mode yolo -o json -``` diff --git a/.agent/workflows/vikunja_helper.py b/.agent/workflows/vikunja_helper.py deleted file mode 100644 index 610e3ab..0000000 --- a/.agent/workflows/vikunja_helper.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Vikunja safe task updater — preserves existing fields when updating tasks. - -Usage: - python vikunja_helper.py done 75 # Mark task #75 as done - python vikunja_helper.py done 71 77 78 # Mark multiple tasks done - python vikunja_helper.py undone 75 # Mark task #75 as not done - python vikunja_helper.py comment 75 "text" # Add comment to task #75 - python vikunja_helper.py desc 75 "text" # Set description (appends if exists) - python vikunja_helper.py create "title" "description" # Create a new task - python vikunja_helper.py create "title" "description" --done # Create and mark done - python vikunja_helper.py list # List all tasks - python vikunja_helper.py list todo # List TODO only - python vikunja_helper.py list done # List DONE only -""" - -import sys -import json -import urllib.request -import urllib.error -import io - -# Fix Windows console encoding (cp949 → utf-8) -if sys.stdout.encoding != "utf-8": - sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") - -API_BASE = "https://plan.variet.net/api/v1" -TOKEN = "tk_070f8e0b715e818bb7178c3815ed5389040eddca" -PROJECT_ID = 7 - -HEADERS = { - "Authorization": f"Bearer {TOKEN}", - "Content-Type": "application/json", -} - - -def api_get(path: str): - req = urllib.request.Request(f"{API_BASE}{path}", headers=HEADERS) - with urllib.request.urlopen(req) as resp: - return json.loads(resp.read().decode("utf-8")) - - -def api_post(path: str, data: dict): - body = json.dumps(data).encode("utf-8") - req = urllib.request.Request(f"{API_BASE}{path}", data=body, headers=HEADERS, method="POST") - with urllib.request.urlopen(req) as resp: - return json.loads(resp.read().decode("utf-8")) - - -def api_put(path: str, data: dict): - body = json.dumps(data).encode("utf-8") - req = urllib.request.Request(f"{API_BASE}{path}", data=body, headers=HEADERS, method="PUT") - with urllib.request.urlopen(req) as resp: - return json.loads(resp.read().decode("utf-8")) - - -def get_task(task_id: int) -> dict: - """GET full task object — preserves all fields.""" - return api_get(f"/tasks/{task_id}") - - -def safe_update_task(task_id: int, updates: dict) -> dict: - """Safely update task: GET first, then POST with preserved fields.""" - task = get_task(task_id) - safe_body = { - "title": task.get("title", ""), - "description": task.get("description", ""), - "priority": task.get("priority", 0), - "done": task.get("done", False), - } - safe_body.update(updates) - return api_post(f"/tasks/{task_id}", safe_body) - - -def mark_done(task_ids: list[int]): - for tid in task_ids: - result = safe_update_task(tid, {"done": True}) - title = result.get("title", "?") - print(f" ✅ #{tid} → done=True [{title}]") - - -def mark_undone(task_ids: list[int]): - for tid in task_ids: - result = safe_update_task(tid, {"done": False}) - title = result.get("title", "?") - print(f" ⬜ #{tid} → done=False [{title}]") - - -def add_comment(task_id: int, comment: str): - result = api_put(f"/tasks/{task_id}/comments", {"comment": comment}) - print(f" 💬 #{task_id} comment added (id={result.get('id', '?')})") - - -def set_description(task_id: int, desc: str, append: bool = True): - task = get_task(task_id) - existing = task.get("description", "") or "" - if append and existing: - new_desc = existing.rstrip() + "\n\n" + desc - else: - new_desc = desc - result = safe_update_task(task_id, {"description": new_desc}) - print(f" 📝 #{task_id} description updated [{result.get('title', '?')}]") - - -def list_tasks(filter_: str = "all"): - tasks = api_get(f"/projects/{PROJECT_ID}/tasks?per_page=100") - if filter_ == "todo": - tasks = [t for t in tasks if not t["done"]] - elif filter_ == "done": - tasks = [t for t in tasks if t["done"]] - - tasks.sort(key=lambda t: t["id"]) - for t in tasks: - status = "✅" if t["done"] else "⬜" - desc = (t.get("description") or "")[:50].replace("\n", " ") - labels = ", ".join(l["title"] for l in (t.get("labels") or [])) - print(f" {status} #{t['id']:3d} {t['title'][:40]:<40} [{labels}] {desc}") - print(f"\n Total: {len(tasks)} tasks") - - -def create_task(title: str, description: str = "", done: bool = False): - """Create a new task in the project.""" - payload = {"title": title, "description": description} - result = api_put(f"/projects/{PROJECT_ID}/tasks", payload) - task_id = result["id"] - print(f" ✨ #{task_id} created: {result.get('title', '?')}") - if done: - result = safe_update_task(task_id, {"done": True}) - print(f" ✅ #{task_id} → done=True") - return result - - -def main(): - if len(sys.argv) < 2: - print(__doc__) - return - - cmd = sys.argv[1].lower() - - if cmd == "done": - ids = [int(x) for x in sys.argv[2:]] - mark_done(ids) - elif cmd == "undone": - ids = [int(x) for x in sys.argv[2:]] - mark_undone(ids) - elif cmd == "comment": - tid = int(sys.argv[2]) - comment = sys.argv[3] - add_comment(tid, comment) - elif cmd == "desc": - tid = int(sys.argv[2]) - desc = sys.argv[3] - set_description(tid, desc) - elif cmd == "list": - f = sys.argv[2] if len(sys.argv) > 2 else "all" - list_tasks(f) - elif cmd == "create": - title = sys.argv[2] if len(sys.argv) > 2 else "" - desc = sys.argv[3] if len(sys.argv) > 3 else "" - is_done = "--done" in sys.argv - if not title: - print("Error: title is required") - print(' Usage: vikunja_helper.py create "title" "description" [--done]') - return - create_task(title, desc, done=is_done) - else: - print(f"Unknown command: {cmd}") - print(__doc__) - - -if __name__ == "__main__": - main() diff --git a/.agents/README.md b/.agents/README.md deleted file mode 100644 index a27f130..0000000 --- a/.agents/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Agent Guide — AI 에이전트 범용 워크플로우 시스템 - -> AI 코딩 에이전트가 더 똑똑하게 동작하도록 설계된 범용 워크플로우 템플릿. -> 새 프로젝트에서 `.agents/` 폴더를 통째로 복사하고, `{{PLACEHOLDER}}`를 교체하면 즉시 사용 가능합니다. - -## Quick Start - -```bash -# 1. 이 레포를 클론하거나 .agents/ 폴더를 복사 -git clone https://git.variet.net/Variet/agent_guide.git -cp -r agent_guide/.agents/ your-project/.agents/ - -# 2. 프로젝트별 값 2개만 교체 -# - {{GITEA_REPO}} → services.md, check-gitea.md, wiki_helper.py -# - {{VIKUNJA_PROJECT_ID}} → services.md, vikunja_helper.py (PROJECT_ID) -# - references/ → 프로젝트별 아키텍처, 기술스택, 컨벤션 채우기 - -# 3. docs/devlog/ 디렉토리 생성 -mkdir -p docs/devlog/entries - -# 4. AI 에이전트에게 "시작" 또는 "/start" 명령 -``` - -## 파일 구조 - -``` -.agents/ -├── AGENT.md ← 🧠 글로벌 NEVER/ALWAYS 규칙 -├── GUIDE.md ← 📖 상세 가이드 -├── references/ ← 📚 프로젝트 지식 베이스 -│ ├── architecture.md ← 아키텍처 (템플릿) -│ ├── tech-stack.md ← 기술 스택 (템플릿) -│ ├── conventions.md ← 코딩 컨벤션 (템플릿) -│ └── known-issues.md ← 과거 실패 기록 (공통 이슈 포함) -└── workflows/ ← ⚙️ 행동 절차 - ├── start.md ← 세션 시작 (룰 로딩 + Git + Vikunja + Wiki) - ├── end.md ← 세션 종료 (학습 기록 + Vikunja + Git) - ├── pre-task.md ← 작업 전 필수 체크리스트 - ├── debug.md ← 체계적 디버깅 - ├── services.md ← 서비스 연동 정보 ({{PLACEHOLDER}}) - ├── check-gitea.md ← Gitea 현황 조회 - ├── check-vikunja.md ← Vikunja 태스크 조회 - └── helpers/ - ├── vikunja_helper.py ← Vikunja API 안전 래퍼 - └── wiki_helper.py ← Gitea Wiki 래퍼 -``` - -## 교체해야 하는 값 (프로젝트별) - -> Gitea/Vikunja 토큰은 이미 입력되어 있습니다. 프로젝트별로 아래 2개만 교체하면 됩니다. - -| Placeholder | 설명 | 파일 | -|-------------|------|------| -| `{{GITEA_REPO}}` | Gitea 저장소명 | services.md, check-gitea.md, wiki_helper.py | -| `{{VIKUNJA_PROJECT_ID}}` | Vikunja 프로젝트 ID | services.md, vikunja_helper.py (`PROJECT_ID`) | - -## 상세 가이드 - -[GUIDE.md](.agents/GUIDE.md) 참조. - -## 연구 기반 - -7개 AI 에이전트 플랫폼 (Claude, GPT, Gemini, Cursor, Cline, Roo, Windsurf) 분석 + Reflexion Framework, Context Engineering, Sentinel Check 등 최신 연구 기반. - -## License - -Internal — Variet diff --git a/.agents/workflows/check-gitea.md b/.agents/workflows/check-gitea.md deleted file mode 100644 index f528246..0000000 --- a/.agents/workflows/check-gitea.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -description: Gitea API???소 커밋/?슈/PR ?황??조회?는 ?크?로?? ---- - -# Gitea ??소 ?황 조회 - -?비???보??`.agents/workflows/services.md` 참조. - -// turbo-all - -## ?차 - -1. 최근 커밋 조회 (최신 10?: -```powershell -$h = @{Authorization="token 3a01b4b15a39921572e64c413353e870d4d2161b"} -$commits = Invoke-RestMethod -Uri "https://git.variet.net/api/v1/repos/Variet/variet-agent/commits?limit=10&sha=main" -Headers $h -$commits | ForEach-Object { Write-Host "$($_.sha.Substring(0,7)) $($_.commit.message.Split("`n")[0])" } -``` - -2. ?린 ?슈 조회: -```powershell -$h = @{Authorization="token 3a01b4b15a39921572e64c413353e870d4d2161b"} -$issues = Invoke-RestMethod -Uri "https://git.variet.net/api/v1/repos/Variet/variet-agent/issues?state=open&type=issues" -Headers $h -$issues | ForEach-Object { Write-Host "#$($_.number) $($_.title)" } -``` - -3. Wiki ?이지 목록: -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\wiki_helper.py list -``` - -4. Wiki ?이지 ?기: -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\wiki_helper.py read "Architecture" -``` - -5. Wiki ?이지 ?데?트: -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\wiki_helper.py update "?이지-?목" /tmp/wiki_content.md -``` diff --git a/.agents/workflows/check-vikunja.md b/.agents/workflows/check-vikunja.md deleted file mode 100644 index 7ad4150..0000000 --- a/.agents/workflows/check-vikunja.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -description: Vikunja API??로?트 ?스???황??조회?는 ?크?로?? ---- - -# Vikunja ?스???황 조회 - -?비???보??`.agents/workflows/services.md` 참조. - -// turbo-all - -## ?차 - -1. ?체 목록: -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py list -``` - -2. TODO? -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py list todo -``` - -3. DONE? -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py list done -``` - -4. ?스???료 처리 (**?️ 반드????방법 ?용 ??직접 API ?출 금?**): -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py done {TASK_ID} -``` - -5. ???스???성: -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py create "?목" "?명" --labels Backend,Priority:High -``` - -> [!CAUTION] -> **???* `Invoke-RestMethod -Method Post -Body '{"done": true}'` 같? 직접 API ?출???용?? 마세?? -> Vikunja API??POST ??body???함?? ?? ?드?빈값?로 ???니?? -> `vikunja_helper.py`???? GET ??기존 ?드 보존 ??POST ?턴???용?니?? diff --git a/.agents/workflows/end.md b/.agents/workflows/end.md deleted file mode 100644 index 3c5bb24..0000000 --- a/.agents/workflows/end.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -description: ?션 종료 ??devlog 기록 + git commit + Vikunja ?기??(?? 마무? 커밋?? ?료) ---- - -# ?션 종료 ?로?콜 - -?업 ?료, "??, "마무?, "커밋?? ???청 ?????크?로?? ?행?니?? - -// turbo-all - -## 0. ?습 기록 (?패/?행착오 ??? - -?번 ?션?서 발생???패, ?행착오, ?로 ?게 ???실???리?니?? - -- [ ] `.agents/references/known-issues.md`??추????????는지 ?인 -- [ ] ?다??래 ?맷?로 추?: - -```markdown -### [?짜] [?워?? ???줄 ?약 -- **증상**: ... -- **?인**: ... -- **?결**: ... -- **주의**: ... -``` - -## 1. Devlog 기록 - -### Index ?데?트 (?수 ????업) - -?늘 ?짜??index ?일???료???업 1줄을 추??니?? - -- **?일**: `docs/devlog/YYYY-MM-DD.md` -- **?식**: -```markdown -| NNN | HH:MM | ?업 ?명 | `커밋?시` | ???는 ? | -``` - -> [!TIP] -> - ??= ?료, ? = 미완?(?음 ?션?서 ?어받기) -> - ?일???으??로 ?성 (?이??더 ?함) - -### Entry ?성 (?택?????요???만) - -> [!IMPORTANT] -> Entry??**git/Vikunja/wiki???는 ?보**가 ?을 ?만 ?성?니?? - -**Entry ?성 기?:** -- ???계 결정???었????(??A가 ?닌 B??택?는지) -- ??미완??항???을 ??(?음 ?션???어받아????맥락) -- ???질/?러블슈?이 ?었????(같? ?수 방?) - -**Entry 불필??** -- ???순 버그 ?스 (커밋 메시지?충분) -- ??문서 ?데?트 (git diff?충분) -- ???? Vikunja ?스?에 ?세 ?명???는 경우 - -**Entry ?일**: `docs/devlog/entries/YYYYMMDD-NNN.md` -```markdown -# ?업 ?목 - -- **?간**: YYYY-MM-DD HH:MM~HH:MM -- **Commit**: `?시` -- **Vikunja**: #?스?번????done/진행? - -## 결정 ?항 -- ????방식???택?는지 - -## 미완? -- ?? ?업 (?을 경우) -``` - ---- - -## 2. Vikunja ?기?? - -> [!CAUTION] -> **반드??`vikunja_helper.py` ?용.** 직접 API ?출 금?. -> Vikunja API??POST ??body???는 ?드?빈값?로 ???니?? - -### 2-1. 커밋 ?수 검?? - -?번 ?션??**모든 커밋???나??검??*?고 Vikunja??매핑?니?? - -```powershell -git log --oneline -20 -``` - -| 커밋 ?형 | Vikunja ?션 | -|-----------|-------------| -| 기존 ?스???당 ?업 **?료** | `C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py done {ID}` | -| ?규 ?업 ?료 (기존 ?스???음) | `C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py create "?목" "?명" --done --labels Backend,Priority:High` | -| ?업 ?발견??**미완?TODO** | `C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py create "?목" "?명" --labels Backend,Priority:Mid` | - -> [!IMPORTANT] -> 모든 커밋??기존 ?는 ?규 ?스?에 매핑?었?? ?인. - -### 2-2. ?료 처리 - -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py done {TASK_ID} -``` - -### 2-3. ?규 ?스???성 - -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py create "?목" "?명" --labels Backend,Priority:High -``` - -### ?벨 규칙 - -**?역 (?수 1??상):** `Backend` / `Frontend` / `Engine` / `Infra` / `Test` -**?선?위 (?수 1?:** `Priority:High` / `Priority:Mid` / `Priority:Low` - ---- - -## 3. Wiki ?기??(?당 ?에? - -| 코드 변?| ???Wiki | -|-----------|----------| -| ?버 변?| Architecture | -| ?론?엔??변?| Architecture | -| ?프??변?| Architecture | -| ??모듈/?키지 추? | Architecture | - -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\wiki_helper.py update "Architecture" /tmp/wiki_content.md -``` - ---- - -## 4. Git Commit & Push - -```powershell -git add -A -git status --short -``` -```powershell -git commit -m "커밋 메시지" -``` -```powershell -git push origin main -``` - -**커밋 메시지 컨벤??** -``` -(): - -type: feat|fix|refactor|test|docs|chore|ci|infra -scope: (?택) -``` - ---- - -## 5. 최종 체크리스?? - -> [!WARNING] -> ?래 ?? ??나?도 ?락?면 ?션 종료??료?????습?다. - -- [ ] known-issues ?데?트??(???슈가 ?었?면) -- [ ] devlog index ?데?트?? -- [ ] devlog entry ?성??(?요??경우? -- [ ] Vikunja ?스???성/?료 처리??(커밋 ?수 검??기반) -- [ ] Wiki ?기?됨 (?키?처 변경이 ?었?면) -- [ ] git push ?료 -- [ ] ?용?에??료 보고 diff --git a/.agents/workflows/start.md b/.agents/workflows/start.md deleted file mode 100644 index c573955..0000000 --- a/.agents/workflows/start.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: ?션 ?작 ???로?트 맥락??빠르?복구?는 ?크?로??(?작, continue, ?어?? ?업 ?작) ---- - -# ?션 ?작 ?로?콜 - -??????작, "continue", "?어??, "?업 ?작" ???청 ?????크?로?? ?행?니?? - -// turbo-all - -## ?차 - -### 0. ?이?트 ?& 맥락 로딩 (?동) - -`.agents/AGENT.md`??고 ?이?트 ?동 규칙??로딩?니?? -`.agents/references/known-issues.md`??어 최근 ?슈??악?니?? - -### 1. Devlog 맥락 복구 - -?늘 + ?제 devlog index??고 최근 ?업 ?름???악?니?? - -```powershell -$today = Get-Date -Format "yyyy-MM-dd" -$yesterday = (Get-Date).AddDays(-1).ToString("yyyy-MM-dd") -if (Test-Path "docs\devlog\$today.md") { - Write-Host "=== Devlog: $today ===" - Get-Content "docs\devlog\$today.md" -} elseif (Test-Path "docs\devlog\$yesterday.md") { - Write-Host "=== Devlog: $yesterday (no entry for today yet) ===" - Get-Content "docs\devlog\$yesterday.md" -} else { - Write-Host "=== No recent devlog found ===" -} -``` - -미완??) ?????으??당 entry ?일???어 ?어받기 맥락???보?니?? -- Entry 경로: `docs/devlog/entries/YYYYMMDD-NNN.md` - -### 2. Git ?태 ?인 - -```powershell -git status --short -``` -```powershell -git log --oneline -5 -``` - -### 3. Vikunja TODO ?스?? - -```powershell -C:\ProgramData\miniforge3\envs\agent_chat\python.exe .agents\workflows\helpers\vikunja_helper.py list todo -``` - -### 4. 종합 보고 - -결과?종합?여 ?용?에?보고: -- 마???업 맥락 + 미완??? (devlog ? 기반) -- TODO ?스??목록 (?벨 + ?선?위) -- ?음 ?업 ?안 - -**?선?위 ?단 기?** (?벨만으??단 금?): -- P0: 최근 커밋?서 ?키?모델/?터?이??변????쇄 ?향 ?? -- P1: ?버 기동/API ?답 ?애 -- P2: 기능 미완??UX 개선 -- P3: ?확???상, ?규 기능, CI/CD, 문서 ?리 diff --git a/docs/devlog/2026-03-11.md b/docs/devlog/2026-03-11.md new file mode 100644 index 0000000..237201d --- /dev/null +++ b/docs/devlog/2026-03-11.md @@ -0,0 +1,5 @@ +# 2026-03-11 Devlog + +| # | 시간 | 작업 | 커밋 | 상태 | +|---|------|------|------|------| +| 001 | 01:00 | .agents + .agent → 단일 .agent 통합 (agent_guide 포맷 기준, 12→7 워크플로우 축소) | `c6381a7` | ✅ |