agentleFS
kohj1018kohj1018/agentic-dev-harness/.claude/skills/run-milestone/SKILL.md

run-milestone

Skill2 starsChanged 47 days agoMITView on GitHub

Run a sealed milestone's remaining tasks in one main session, sidelining blocked tasks and batching decisions.

The file

Files
SKILL.md

너는 마일스톤 연속 실행의 운전자다. 절차는 하위 skill 4종(/implement-·/validate-·/repair-·/finalize-workitem)이 소유한다. 너는 다음 단계를 파일로 판정·실행·확인하고, 진행 불가 task는 빼두고 끝에 모아 보고한다. 커밋하지 않는다(task 커밋은 finalize 단독). auto 권한 모드 전제. 정책: ADR-076.

핵심 루프 (컴팩션 뒤에도 이 절부터)

  1. §2로 다음 단계를 판정한다(매 task 전, 기억 대신 파일로).
  2. §3대로 하위 절차를 실행하고 산출물로 확인한다.
  3. 진행 불가면 §4로 그 task만 빼고 1로.
  4. 더 돌릴 task가 없거나 §4-4 종료·전체 멈춤이면 §6.
  • 하위 skill 호출: 처음 쓸 때와 컴팩션 뒤 처음 쓸 때만 Skill 도구로 부르고, 그 사이에는 컨텍스트의 본문을 따른다(절차 생략 금지). 단계 시작 때 ▶ /<skill> T-NNN <인자>를 출력하고, 재사용 본문의 치환된 인자 대신 이 줄의 값을 쓴다.
  • 컴팩션 직후(대화가 요약으로 시작): 이 파일·인계 파일 2개·## 운영 함정 재독 → §1-3 → §2 재판정 → 진행 중이던 하위 절차를 재진입 지점부터.
  • 실행 중 해결 알림은 현재 하위 절차 뒤 §4-5로.

0. 입력·승인 범위

  • $ARGUMENTS: M[0-9]+ 정확히 1개 + 선택 --handoff. 그 밖이면 안내 후 종료.
  • 이 호출 = 이 M의 task 사이클 연속 진행 + finalize 로컬 커밋 승인. push·배포·제품 결정·새 실행 권한은 불포함 — 따로 받은 권한(대화·인계 ## 1)만 그 범위에서 쓰고, 거부된 명령은 우회·재시도하지 않는다.
  • 특정 task를 지목한 실행 증거 면제 사유는 그 task implement에만 문구 그대로 --waiver "<문구>".
  • --handoff·대화로 인계·중단 요청: 진행 중 하위 절차가 끝난 지점에서(없으면 §1 없이 바로) §5 인계를 쓰고 종료.
  • «상태» = git -c core.quotePath=false status --porcelain -uall.

1. 시작 (1회)

  1. docs/30-workitems/handoffs/M<N>.md·_common.md, docs/00-meta/STACK_SETUP_PLAN.md의 ## 운영 함정을 읽는다. ## 1은 복구·질문보다 먼저 첫 출력에 이어받는 지시·권한 N건: …으로 인용 그대로.
  2. milestone ## 10 - 봉인일:이 비면 /seal-milestone M<N> 안내 후 종료.
  3. 마감 중단 복구: 트리의 task 문서만 done이면(HEAD는 아님) — staged이고 staged diff에 마지막 - closure가 있으면(Needs Commit 잔존) 그대로 finalize(§3-5 표), 아니면 status를 in-progress로, HEAD에 없는 마지막 - closure 줄은 지운다(- ac-pending은 둔다).
  4. 막힌 목록 = git stash list --format='%gd %H %s'에서 이름이 run-milestone M<N> T-NNN:인 항목(## 4에 적용 완료 <hash>면 제외) + 인계 ## 4의 - T-NNN — 줄. 트리 status가 done인 task는 제외. stash 목록에 없는 hash의 적용 완료 줄과 done task의 - T-NNN — 줄은 지운다.
  5. 산하 task(## 7 Milestone 링크가 이 M)가 전부 done이고 막힌 목록이 비었으면 /stabilize-milestone M<N> 안내 후 종료.
  6. «상태»의 변경이 진행 중 task 것이 아니면 사용자 변경 — 건드리지 않고 멈춰 보고.
  7. 시작 점검: 트리가 깨끗하고 통합 명령이 있으면 1회 실행 — 실패(기준선 깨짐)나 «상태» 변경(통합 명령 부작용)이면 전체 멈춤 + 안내(부작용 경로는 .gitignore 또는 명령이 원복).
  8. 시작 질문(해당할 때만, 첫 task 전 한 메시지): 막힌 목록·필요한 행동 → 해결된 task / ## 1의 push·배포·외부 write·운영 환경 접근 권한 → 한 줄씩 재확인 / 남은 task에 ## 2 (a) 영속 저장소 쓰기가 있고 ## 로컬 환경 동기화의 DB 초기화가 허용이 아님 → 이번 실행 동안 필요할 때마다 자동 초기화 허용(명령을 보이고 답에 명령 포함 — 행이 없으면 명령도. 인계 안 함). 고른 task는 §4-5로 되살린다. 재확인 못 받은 권한은 쓰지 않고 인계에서 빼고, 나머지는 승계.

2. 다음 task·단계 판정 (HTML 주석 밖 줄만)

  • 후보: ## 9의 T-<번호>:AC-<번호> 토큰 전부가 선행이다(:AC- 없는 ID는 의존 아님). 선행이 모두 done이고 막힌 목록에 없는 task를 번호순으로 — 단 트리에 변경이 남은 in-progress task(막힌 목록 밖)가 있으면 그것부터. 막힌 목록의 task는 ready로 보여도 미완이며 직·간접 후행도 후보가 아니다. 트리에 막힌 task의 변경이 남아 있으면(재개방 done task) 후보를 고르지 않고 전체 멈춤. blocked·deprecated task는 건너뛰고 §6에.
상태다음
ready/implement-workitem T-NNN --run-milestone
in-progress + 구현 완료 미충족같은 implement (재개 — task당 이번 실행 2회, 넘으면 §4)
in-progress + 구현 완료 + report 신선하지 않음/validate-workitem T-NNN
report 신선§3-3
  • 구현 완료 = ① 기계 AC(## 6-1의 [자동 테스트]·[산출물 검사]·표기 없음)가 있으면 ## 4-1이 비어 있지 않고 그 AC마다 ## 8 - verify-power, 없으면 관측 AC마다 - ac-pending ② ## 2 - 외부 경계: 종류마다 - exec-evidence(마지막 줄이 미확보가 아님) ③ ## 3에 [미실측] 없음 ④ 정지 신호(3-1)가 없거나 해소됨 — 다음 implement·repair가 신호 없이 끝나거나 사용자가 해결을 알림(뒤 단계 Pass는 해소 아님).
  • 신선 = 이 컨텍스트에서 그 task의 validate가 쓴 report이고 그 뒤 편집이 없다(새 세션·컴팩션 직후 report는 아님).

3. 한 task 사이클

결과는 하위 skill의 말 대신 산출물(report - 판정:·task 문서·git)로. implement 직전 이 task의 이월(인계 ## 3·세션 메모)·관련 함정·사용자의 해석 답(말 그대로)을 대화에 적는다.

3-1 정지 신호 (implement·repair 출력만) — Needs SSOT Amendment·Fact Resolution·Execution Evidence·Install·MCP Access·Dependency Tool Decision·미해소 Research·잠정 금지 범주의 해석 보고·repair Needs Follow-up, 또는 사용자만 할 수 있는 행동(자격증명·원격 실행·권한 거부)이 필요하면 §4. implement 3-R (1)(선행 done task 산출 누락)이면 트리를 비운 뒤(§4-1) 선행 task를 §5 done task 수리로 고치고 재시도. Needs Stack Guard·마일스톤 게이트 거부(같은 M draft task·미해결 plan-review)는 전체 멈춤. 아래 표에 없는 결과도 §4.

3-2 validate 직전 대조 (매번) — «상태» 중 ## 4-1에 없는 경로(finalize 자동 add·제외 대상 빼고)가 있으면 §4(되돌리지 않음). 이 «상태»를 기억한다.

3-3 validate 뒤 — «상태»에 3-2 때 없던 경로가 생기면 §1-7의 부작용: 전체 멈춤 + 안내.

report행동
Needs Fix + P0 [Spec-gap]·상위 결정 필요§4
Needs Fix, 실패가 전부 감사 미완validate 1회 재실행, 또 그러면 §4
그 외 Needs Fix/repair-workitem T-NNN → validate
Pass·Pending Acceptance + 이번 라운드 코드가 만든 계약 P1/repair-workitem T-NNN "<요약>" (task당 1라운드) → validate
그 외 Pass·Pending Acceptance3-5
  • 계약 P1 = 라벨 [Arch-iface-*]·[Design-*]·[Seam]이거나 승인 프로토타입 PX-·닫힌 결정 D-NNN을 인용하는 P1. 위치 파일이 ## 4-1에 있으면 이번 라운드 것. P2 제외(일반 repair는 전 severity). Reject-*로 기각되면 다시 부르지 않는다. 다른 task 소유면 §5.

3-4 루프 상한 — 일반 repair 3라운드. 먼저 끊는다: (a) repair가 기각한 P0가 같은 라벨·같은 파일(AC 지적은 같은 AC — repair 줄 위치 칸, 줄 번호 무시)로 재등장(§6 교차 검증 권장) (b) 한 라운드 뒤 같은 테스트가 같은 이유로 실패. 둘 다 §4.

3-5 finalize — validate 뒤에는 task 문서·작업 트리를 고치지 않는다(고칠 것이 생기면 고친 뒤 validate부터). /finalize-workitem T-NNN:

관측행동
HEAD 커밋에 T-NNN 문서(status=done·마지막 - closure=T-NNN) + ## 4-1 파일 잔존 없음성공
Needs Commitfinalize 1회 재실행(1-G가 커밋만 재시도), 또 그러면 전체 멈춤 + 원인
Needs Fixrepair → validate → finalize (3-4 상한)
Needs Review·Needs Validation이 task 변경의 ## 4-1 누락이면 추가 후 validate부터 1회 재시도, 그 밖이거나 또 그러면 §4
다른 task가 커밋·변경됨전체 멈춤·보고(되돌리지 않음)

4. 빼두기 (전체를 멈추지 않는다)

  1. 트리에 그 task 변경이 있으면(task 문서 상태 줄뿐이어도) git stash push -u -m "run-milestone M<N> T-NNN: <사유 1줄>". task status는 쓰지 않는다. done·재개방 task면 stash하지 않고 전체 멈춤.
  2. 곧바로 인계 ## 4에 - T-NNN — <사유> / 필요한 것: <행동·결정> / stash: <hash>|없음(없으면 §5 양식으로). 필요한 것을 한 줄로 요청하고 기다리지 않고 계속한다.
  3. 환경 동기화(stash를 만들거나 되살렸을 때) — 그 변경에 의존성 목록·lockfile이 있으면 STACK_SETUP_PLAN.md ## 로컬 환경 동기화의 의존성 명령(없으면 ## Dependency Tools의 lockfile 고정 설치), DB 마이그레이션·스키마가 있거나 그 task ## 2에 (a) 영속 저장소 쓰기가 있으면 DB 명령((예: 행 무시). 명령이 거부·실패하거나, DB 명령이 없거나 확인 필요인데 §1-8 허용이 없으면 전체 멈춤.
  4. 같은 원인(같은 Needs * 대상·실패 명령)으로 연속 2건이면 그 원인에 걸릴 남은 task를 문서로 가린다(같은 - 외부 경계: 종류·대상, ## 3의 같은 설치·MCP 항목). 가려지면 시도 없이 2의 줄(같은 원인: T-NNN, stash 없음)로 빼두고 계속, 가릴 수 없으면 §6.
  5. 재개: 트리가 깨끗할 때 그 hash의 stash@{k}를 git stash pop(한 번에 하나, finalize 뒤 다음). 충돌 없으면 ## 4 줄 삭제 → 3 → §2. 충돌이면 확신이 있을 때만 풀고 git reset -q → ## 4 줄을 - 적용 완료 <hash> (T-NNN)로 → 3 → implement 재개(stash 항목은 지우지 않는다). 확신이 없거나 부분 실패면 그 상태로 전체 멈춤(충돌 파일·hash·되돌리는 법 안내). stash 없는 task는 ## 4 줄 삭제 → §2.
  6. done task(task 층) 수리는 현재 task를 finalize하거나 빼둬 트리를 비운 직후, 다음 후보보다 먼저.
  • 즉시 전체 멈춤: 굵게 적은 «전체 멈춤» 전부 + 되돌릴 수 없는 외부 운영 환경 작업 + stash 명령(push·pop) 거부·실패. 멈춘 task는 ## 4 줄을 남긴다(있으면 유지, 없으면 2의 줄을 실제 stash hash나 없음으로).

5. 이월·함정·인계

  • 이월: 같은 M 뒤 task 소유 → 그 task implement 때 대화로(세션을 넘기면 인계 ## 3). done task(task 층) 소유 P0/P1 → §4-6 뒤 /repair-workitem T-OLD "<요약>" → validate(전부 기각 시 생략) → finalize. 그 밖(P2·마일스톤 층·cross-cutting·다음 M)은 report에(stabilize 회수).
  • 운전자가 쓰는 커밋 대상은 현재 task ## 4-1(3-5 Needs Review 해소)과 §1-3 복구뿐(§6 승격 제외). 반복 함정은 _common.md에 - <규칙 1줄> — 근거: <T-NNN 사건> 추가.
  • 인계(멈출 때만): §1-1의 인계 파일을 읽고 해소 안 된 ## 4 줄은 유지한 채 새로 쓴다. ## 1은 사용자 말 그대로 + 날짜·적용 범위(task·명령). 파일로 알 수 있는 것은 쓰지 않는다. 양식: # M<N> 인계 / - 기록: <YYYY-MM-DD> / HEAD <sha> / ## 1. 사용자 지시·권한 / ## 2. 외부 상태 (확인 시점) / ## 3. 이월 / ## 4. 막힌 task.

6. 종료 — 배치 보고

한 메시지로 보고하고 §5 인계를 쓴다.

  • 막힌 task와 필요한 행동 → 해결 후 재실행
  • 잠정 해석 목록(M 전체의 해석 확정: 없는 해석 잠정: AC) — 묻지 않는다(stabilize·repair-milestone이 확인)
  • 교차 검증 권장(보안·인증·권한·데이터 무결성 경계를 건드렸고 oracle gap 보안 항목이 not covered/partial인 task·3-4 (a) task) → stabilize 뒤 /validate-milestone --reviewer-tag
  • 정리할 stash: ## 4의 적용 완료 hash — 사용자가 지운다
  • (전 task done·막힌 목록 빔일 때만) _common.md의 오래갈 함정을 STACK_SETUP_PLAN.md ## 운영 함정으로 승격 제안 — 승인분만 옮기고 _common.md에서 지운다. 커밋은 사용자. 인계 잔여 항목은 목적지 제안·확인 후 삭제. 다음 /stabilize-milestone M<N>.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.