helm은(는) 무엇을 하나요?
하나의 태스크를 위한 라이브 보드입니다. 사람이 브라우저에서 이를 열어두고; 당신(에이전트)은 작업 중 저렴한 helm 호출로 업데이트하며; 단기 로컬 서버가 페이지에 변경 사항을 실시간 스트리밍합니다. 사람은 핸들을 잡을 수 있습니다 — 목표/조향을 편집하고 — 당신은 다음 체크포인트에서 이를 따릅니다.
두 가지 규칙
- 오직
helm만 호출하세요. HTML, 서버, state.json을 직접 작성하거나 편집하지 마세요. 각helm호출은 몇 토큰에 불과하며, 이것이 핵심입니다: 작업 중 보드를 정직하게 유지하는 비용을 낮게 유지합니다. 스타일이 적용된 페이지를 재전송하는 것은 10배 비용이 들며 목적을 무너뜨립니다. - 모든 체크포인트에서 사람의 조향을 다시 읽으세요 (계획 단계 사이, 되돌릴 수 없는 작업 전)
helm goal을 사용하여. 사람은 페이지를 통해 조향하며; 당신은 확인할 때만 볼 수 있습니다. 목표나 조향이 변경되었다면 새 버전을 따르고 이를event에 명시하세요.
도우미
helm은 빌드된 의존성 없는 Node 스크립트 dist/helm.mjs로 제공됩니다 (기본 node에서 실행 — npm install 불필요, 설치 시 빌드 없음). 경로를 한 번 캡처하여 재사용하세요:
HELM="<이-스킬-디렉토리>/dist/helm.mjs" # 예: ~/.claude/skills/helm/dist/helm.mjs
이 경로로 호출하세요 — "$HELM" …는 shebang을 통해 작동하거나 node "$HELM" …를 사용하세요. Kubernetes를 사용한다면 helm을 별칭으로 두지 마세요 — 그것은 다른 helm입니다. init 후에는 cwd에서 상위로 이동하여 보드가 자동으로 발견되므로 이후 호출에 --dir이 필요하지 않습니다.
워크플로
-
한 번 init, 지켜볼 가치가 있는 태스크 시작 시. 사람이 첫 순간부터 조향할 수 있도록 목표를 제공하세요:
"$HELM" init --title "인증을 JWT로 마이그레이션" --agent "Claude Code" --model claude-opus-4-8 \ --goal "세션을 쿠키에서 상태 비저장 JWT로 이동, 아무도 잃지 않기"이 명령은 서버를 시작하고 브라우저를 엽니다. 사용자에게 보드가 준비되었으며 언제든지 목표/조향을 편집할 수 있다고 알리세요.
-
계획을 세워 작업의 형태를 볼 수 있게 한 다음, 단계를 진행하세요.
step N은 이전 단계를 완료로 표시하고 N을 현재 활동으로 설정하며 진행률을 업데이트합니다 — 한 번의 호출로 모든 것이 변경됩니다:"$HELM" plan "사용자 백업" "RS256 발급/검증 추가" "세션 마이그레이션" "전환" "회귀 테스트" "$HELM" step 2 -
작업 중 설명하세요 — 작고, 자주, 정직하게. 각각은 한 번의 호출입니다:
"$HELM" event ok "사용자 테이블이 backups/users.sql로 백업됨" "$HELM" event warn "3개 세션이 레거시 쿠키 형태를 사용, 수동 마이그레이션 필요" # 함정도 여기에 포함 "$HELM" decide "서비스가 공개 키로만 검증하도록 RS256을 HS256보다 선택" "$HELM" decide "먼저 스테이징에 배포, 프로덕션은 사람의 승인 대기" --assumption # 확인되지 않은 가정 표시 -
체크포인트 — 사람의 조향을 읽고 따르세요:
"$HELM" goal # GOAL + STEERING을 출력합니다; 사용자가 편집했다면 해당 줄에 명시됨 — 따르세요방향이 변경되었다면 적응하고 기록하세요:
"$HELM" event info "조향 변경됨 → 스테이징만 진행". -
실제 차단 요인이 발생하는 즉시 표면화하고, 답변을 받으면 해결하세요:
"$HELM" ask "스테이징 DB 또는 프로덕션 DB를 먼저 마이그레이션할까요?" # 진정한 인간 개입 질문만 "$HELM" status "프로덕션 결정을 기다리는 중" --state blocked # blocked/new 질문은 인간에게 알림 "$HELM" resolve 1 -
완료:
"$HELM" done "모든 세션 마이그레이션 완료, 테스트 통과". 보드는 계속 볼 수 있으며, 아무도 보고 있지 않으면 서버가 자동 종료됩니다."$HELM" stop은 즉시 종료하고;"$HELM" open은 다시 엽니다.
자주, 작게 업데이트하세요. 상태 변경, 완료된 단계, 함정, 결정, 새 아티팩트 — 각각은 한 번의 호출입니다. 보드는 분 단위로 현실을 추적할 때만 가치가 있습니다.
명령어
| 명령어 | 기능 |
|---|---|
helm init --title T [--subtitle S] [--agent A] [--model M] [--goal G] [--theme light|dark] [--no-open] | 보드 생성, 서버 시작, 브라우저 열기. |
helm status TEXT [--state running|blocked|waiting|done] [--phase P] [--pct N] | 현재 활동(NOW) 줄 설정. blocked는 인간에게 알림. |
helm plan A B C … · helm plan --add TEXT | 계획 단계 설정 또는 하나 추가. |
helm step N [--text NOW] | 단계 N으로 진행: 이전 단계 완료, N 활성화, NOW + 진행률 업데이트. |
helm event KIND TEXT | 타임라인 항목 추가. KIND ∈ ok fail warn info run. 함정/막다른 길 → warn/fail. |
helm decide TEXT [--assumption] | 결정 기록; --assumption은 확인되지 않은 것으로 표시(사람이 수정 가능). |
helm ask QUESTION · helm resolve N | "입력 필요" 항목 추가/제거 (인간에게 알림). |
helm goal · helm goal --set TEXT | 사람의 목표+조향 읽기 (체크포인트에서 수행) 또는 목표 설정. |
helm link LABEL URL · helm image PATH [--label L] · helm data LABEL VALUE | 아티팩트 첨부 (링크/이미지/통계). |
helm meta [--title …] [--subtitle …] [--theme …] [--agent …] [--model …] | 나중에 헤더 필드 편집. |
helm done [TEXT] · helm stop · helm open | 완료 · 서버 즉시 중지 · 보드 다시 열기. |
규칙 (자동 처리되거나 필요함)
ask는 진정한 결정에만 사용하세요. 해결되었거나 수사적인 질문으로 채우지 마세요. 인간의 입력이 필요하지 않으면 비워두세요 — 조용한 보드는 정직한 보드입니다.--state는 실시간 펄스, 색상, 알림을 제어합니다. 작업 중에는running을 사용하고, 막혔거나 인간을 기다릴 때는blocked/waiting을 사용하세요 (데스크톱 알림과 탭 제목의 🔴 카운트로 알림). 종료 시done.- 결정 vs 가정. 일반
decide는 확정된 선택에;--assumption은 확인되지 않았지만 가정하는 사항에 사용하세요. 가정 태그는 인간이 초기에 잘못된 방향을 잡아줄 정확한 지점이므로 정직하게 표시하세요. - 출처 바닥글과 활동 범례는 자동으로 렌더링됩니다 — 직접 만들지 마세요.
- 프로세스는 단기 수명입니다. 태스크가 완료되고 아무도 보고 있지 않으면 자동 종료되며, 다시 시작되지 않습니다. 페이지가 닫혀 있는 동안 업데이트가 발생해도 저장됩니다;
helm open은 최신 상태를 보여줍니다.
파일
실행 파일 (커밋됨, 의존성 없음 — dist/):
dist/helm.mjs— 모든 업데이트에 호출하는 CLI.dist/server.mjs— 단기 로컬 서버: UI 제공, SSE로 상태 스트리밍, 조향 기록 수신, 버려지면 자동 종료.dist/board.html— 보드 UI (투 컬럼, 라벤더 라이트 + 다크) 서버가 제공.
빌드 방법 (개발 전용, 실행에 불필요): src/*.ts (TypeScript 소스, 하나의 공유 types.ts 데이터 모델), build.mjs (esbuild), package.json. src/ 편집 후 npm run build 실행. 비협상 조건은 DEVRULES.md 참조.