npx claudepluginhub pokuding/my-harness --plugin my-harnessThis skill uses the workspace's default tool permissions.
Slack List의 수정요청/작업 아이템을 가져와서 구조화된 작업 계획서를 생성한다.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Slack List의 수정요청/작업 아이템을 가져와서 구조화된 작업 계획서를 생성한다.
URL 입력 같은 자유 텍스트는 일반 대화로 받되, 분기 선택은 AskUserQuestion. Step 3 후 "계획서 완료 · 다음 단계" 분기에서 활용.
/slack-plan <SLACK_LIST_URL 또는 LIST_ID>
.harness/config.env 파일이 존재하고 SLACK_BOT_TOKEN 또는 SLACK_USER_TOKEN 키가 포함되어 있는지 확인한다.
설정이 없으면:
Slack 토큰이 설정되지 않았습니다.
먼저 /slack-setup 을 실행해 토큰을 저장하세요.
라고 안내하고 실행을 중단한다.
사용할 URL 결정 (우선순위 순):
.harness/config.env의 SLACK_LIST_URL을 업데이트config.env에 SLACK_LIST_URL 존재 → 저장된 URL 사용SLACK_LIST_URL 없음 → 사용자에게 URL 입력 요청 후 config.env에 저장URL을 새로 저장/업데이트할 때:
# SLACK_LIST_URL이 없으면 추가, 있으면 교체
grep -q "^SLACK_LIST_URL=" .harness/config.env \
&& sed -i '' "s|^SLACK_LIST_URL=.*|SLACK_LIST_URL=<URL>|" .harness/config.env \
|| echo "SLACK_LIST_URL=<URL>" >> .harness/config.env
아래 명령으로 fetch 스크립트를 실행하여 Slack List 데이터를 가져온다.
python3 skills/slack-plan/scripts/fetch_slack_list.py "<결정된 URL>"
가져온 JSON 데이터의 items 배열을 분석하여 아래 형식의 markdown 계획서를 작성한다.
출력 파일: docs/plans/slack-list-<list_id>-plan.md
(list_id는 JSON의 metadata.list_id에서 가져온다)
# 작업 계획서: <리스트 제목 또는 list_id>
생성일: YYYY-MM-DD
원본: <Slack List URL>
총 아이템: N개
---
## 1. 개요 및 범위
이 계획서의 목적과 다루는 범위를 1-2문단으로 서술한다.
## 2. 원문 요청 요약
Slack List의 각 아이템을 원문 그대로 요약한다.
원문에 없는 내용을 추가하지 않는다.
`record_id`는 JSON 응답의 각 item에 있는 `record_id` 필드를 그대로 기록한다. `/slack-review`가 아이템을 식별하는 데 사용한다.
| # | record_id | 원문 요청 | 담당자 | 상태 |
|---|-----------|----------|--------|------|
| 1 | Rec... | ... | ... | ... |
## 3. 실행 TODO
비슷한 요청은 묶어서 정리한다. 각 TODO는 아래 형식을 따른다.
### TODO-001: <제목>
- **설명**: 구체적인 작업 내용
- **우선순위**: P0 / P1 / P2
- **예상 작업 범위**: 영향받는 파일/모듈/시스템
- **선행 조건**: 이 작업 전에 완료되어야 할 것
- **완료 기준**: 이것이 충족되면 완료로 간주
- **관련 원문**: #N (원문 요청 요약 테이블의 번호)
- **Slack record_id**: Rec... (관련 Slack 아이템의 record_id, 여러 개면 쉼표 구분)
## 4. 우선순위 분류
### P0 (긴급 - 즉시 처리)
- TODO-XXX: ...
### P1 (높음 - 이번 스프린트)
- TODO-XXX: ...
### P2 (보통 - 다음 스프린트 이후)
- TODO-XXX: ...
## 5. 단계별 작업 계획
시간순으로 어떤 순서로 작업할지 단계별로 서술한다.
### Phase 1: <제목>
- 작업 내용
- 예상 산출물
### Phase 2: <제목>
- ...
## 6. 확인 필요 사항
원문이 모호하거나 추가 확인이 필요한 항목을 나열한다.
요청 원문에 없는 사실은 단정하지 않는다.
- [ ] <확인 필요한 내용> (관련: TODO-XXX)
- [ ] ...
## 7. 리스크 / 의존성
### 리스크
- <리스크 항목>: 영향도, 대응 방안
### 의존성
- <의존하는 시스템/팀/작업>
## 8. 완료 기준 / 테스트 포인트
전체 작업이 완료되었다고 판단할 수 있는 기준.
- [ ] <완료 기준 1>
- [ ] <완료 기준 2>
- [ ] ...
계획서에 포함된 아이템들의 상태를 진행중으로 변경한다.
변경 대상: Step 1에서 가져온 아이템 중 상태가 완료가 아닌 항목
완료, done, complete, completed, 백엔드 배포완료, 이슈아님진행중으로 변경python3 skills/slack-plan/scripts/update_slack_list.py <LIST_ID> \
--record Rec... Rec... \
--status "진행중"
상태 변경에 실패한 아이템이 있으면 경고를 표시하되 나머지는 계속 진행한다.
완료 후 사용자에게 알린다:
상태 변경: N개 아이템 → 진행중
- <아이템 요약 1>
- <아이템 요약 2>
...
계획서 생성과 상태 변경이 끝나면 자연스러운 다음 액션을 물어본다:
AskUserQuestion({
questions: [{
question: "계획서가 생성됐습니다. 다음 단계는?",
header: "Next step",
options: [
{ label: "지금 /plan-execute 실행 (Recommended)",
description: "생성된 TODO들을 의존성 분석 후 병렬 실행. 구현이 자동으로 시작됨." },
{ label: "계획서 먼저 검토",
description: "생성된 docs/plans/... 파일을 먼저 열어 확인. 수동으로 수정한 뒤 /plan-execute 권장" },
{ label: "여기서 마무리",
description: "이번엔 계획서 생성까지만. 나중에 필요하면 /plan-execute 실행" }
],
multiSelect: false
}]
})
"/plan-execute" 선택 시 Claude가 바로 해당 스킬 호출. "계획서 검토" 선택 시 파일 경로만 안내하고 세션 종료.
Slack 토큰 및 List URL은 /slack-setup으로 설정한다. 스크립트는 .harness/config.env에서 SLACK_BOT_TOKEN/SLACK_USER_TOKEN을 자동으로 로드한다.
Slack App에 필요한 스코프: lists:read, lists:write.