一键导入
slack
현재 진행중인 프로젝트의 Slack 알림을 설정·테스트·확인·해제할 때 사용한다. 활성화 시 작업 완료·사용자 승인 이벤트가 해당 프로젝트 채널로 전송된다. 설정은 `workspace/projects/{PROJECT}/.slack.env` 를 SSOT 로 관리한다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
현재 진행중인 프로젝트의 Slack 알림을 설정·테스트·확인·해제할 때 사용한다. 활성화 시 작업 완료·사용자 승인 이벤트가 해당 프로젝트 채널로 전송된다. 설정은 `workspace/projects/{PROJECT}/.slack.env` 를 SSOT 로 관리한다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | slack |
| description | 현재 진행중인 프로젝트의 Slack 알림을 설정·테스트·확인·해제할 때 사용한다. 활성화 시 작업 완료·사용자 승인 이벤트가 해당 프로젝트 채널로 전송된다. 설정은 `workspace/projects/{PROJECT}/.slack.env` 를 SSOT 로 관리한다. |
현재 진행중인 프로젝트에 Slack 알림을 설정한다.
사용법: $ARGUMENTS
서브커맨드:
| 인자 | 동작 |
|---|---|
| (없음) | .slack.env 를 생성하고 채널·이벤트를 대화식으로 설정 |
test | 현재 설정으로 테스트 메시지 1건 발송 |
status | .slack.env 존재·필드·gitignore 보호 여부 요약 |
disable | 비활성화 방법 안내 (파일 직접 삭제) |
사용 예:
/pilot:slack
/pilot:slack test
/pilot:slack status
/pilot:slack disable
preamble.md 의 P1 수행.
{PROJECT} 획득. 없으면 messages.md 의 no_active_project 출력 후 종료.{PROJECT_DIR} = workspace/projects/{PROJECT}.
모든 서브커맨드는 먼저 doctor 로 .gitignore 보호 상태를 점검한다. 누락 시 즉시 주입되므로 secret 이 절대 커밋되지 않도록 보장.
python3 ${CLAUDE_PLUGIN_ROOT}/tools/doctor.py workspace 2>&1 | grep -E "\.gitignore secrets|\[CRITICAL\]" || true
[CRITICAL] 이 출력되면 즉시 중단하고 사용자에게 원문을 그대로 보여준다. 이후 서브커맨드 수행 금지 — 사용자의 git rm --cached + webhook 재발급이 선행되어야 한다..gitignore secrets: 누락 패턴 자동 주입 이 출력되면 사용자에게 "리포 루트 .gitignore 에 .slack.env 가 자동 추가되었습니다. 이 변경을 커밋하세요." 안내.{PROJECT_DIR}/.slack.env 존재 여부 확인.
slack.already_active 출력 후 종료. 파일 편집·slack status·slack disable 을 안내한다.대화식 입력:
#project-x) — 필수. 빈 값이면 재질의.complete,approval. 사용자가 엔터만 치면 기본값 적용. 별도 입력 시 complete·approval 중 쉼표 구분.{PROJECT_DIR}/.slack.env 를 아래 내용으로 Write (파일 퍼미션 0600):
# pilot Slack notifier — do NOT commit
# 리포 루트 .gitignore 에 `.slack.env` 가 있어야 안전합니다.
SLACK_WEBHOOK_URL=
SLACK_CHANNEL={채널명}
SLACK_EVENTS={이벤트목록}
퍼미션 설정:
chmod 600 {PROJECT_DIR}/.slack.env
git check-ignore {PROJECT_DIR}/.slack.env 실행. exit code ≠ 0 이면 .gitignore 가 제대로 동작하지 않는 것 — 파일을 즉시 삭제하고 slack.tracked_critical 요지의 경고를 출력한 뒤 종료.
messages.md 의 slack.activated 를 {채널명}·{이벤트목록}·{파일경로} 로 치환해 출력.
사용자에게 "SLACK_WEBHOOK_URL 을 파일에 붙여넣으셨다면 /pilot:slack test 를 실행하세요." 안내.
test{PROJECT_DIR}/.slack.env 없으면 "활성화된 Slack 설정이 없습니다. /pilot:slack 으로 먼저 활성화하세요." 출력 후 종료.
아래 Bash 명령 실행:
python3 ${CLAUDE_PLUGIN_ROOT}/tools/slack-notify.py \
--event approval \
--workspace workspace \
--message "테스트 메시지입니다 (/pilot:slack test)"
stderr 가 비어 있으면 messages.md 의 slack.test_ok 출력.
stderr 에 내용이 있으면 원문 그대로 출력 + slack.test_fail 의 "원인/재시도" 안내 덧붙이기.
status아래 항목을 표 1개로 출력:
| 항목 | 상태 |
|---|---|
.slack.env | 존재 / 없음 (없으면 이후 행 전부 -) |
SLACK_WEBHOOK_URL | 설정됨 / 비어있음 (URL 자체는 출력 금지) |
SLACK_CHANNEL | 값 그대로 |
SLACK_EVENTS | 값 그대로 (빈 값이면 기본값 complete,approval) |
.gitignore 패턴 | ✅ / ❌ (grep -q "^\.slack\.env$" {리포루트}/.gitignore 로 판단) |
| git tracked | 안전 (untracked) / 위험 (tracked) |
판단 명령:
# tracked 검사
git -C {PROJECT_DIR} ls-files --error-unmatch .slack.env
# gitignore 패턴
grep -q "^\.slack\.env$" $(git rev-parse --show-toplevel)/.gitignore
git tracked: 위험 이면 messages.md 의 slack.tracked_critical 의 git rm --cached 명령을 실제 경로로 치환해 함께 출력.
disablemessages.md 의 slack.disable_hint 를 {프로젝트경로} 치환해 출력. Claude 가 직접 rm 을 실행하지 않는다. destructive 조치는 사용자 확인이 필요한 경로.
없음. 이 스킬은 .slack.env 를 직접 쓰는 유일 경로이므로 drift 가 발생할 소스가 없다.
프로젝트 진행 중 작성된 코드를 PR 이전에 품질 관점에서 리뷰한다. 변경분(git diff)을 대상으로 pilot-code-review 에이전트를 호출하며, 결함마다 severity 와 재진입 라우팅(feature/planner/generator)을 제시한다. evaluator 의 요구사항·게이트 판정과는 별개 축이다.
사용자가 "PR 올려줘", "풀 리퀘스트 생성" 등 현재 브랜치를 GitHub Pull Request 로 올리길 요청할 때 사용한다. base branch 는 state·config· 공통 config 순으로 자동 결정하며 사용자 명시 입력 시 state 에 저장한다. 제목·본문 컨벤션은 `skills/context/shared/pr.md` 를 따른다.
이미 저장된 docs/ 기획서를 features/ 기능 명세로 분할·구조화할 때 사용한다. PM 작성 표 중심 기획서를 기능 단위 문서로 변환하고 project.md 의 목표 섹션 과 prompts/ 파일(planner·generator·evaluator)을 자동 갱신한다. 기획서 fetch 는 `/pilot:confl`, 프롬프트 기반 단일 기능 추가는 `/pilot:create-feature` 를 사용한다.
사용자가 "커밋해줘", "변경 묶어서 커밋" 등 git 커밋 작성을 요청할 때 사용한다. 변경 파일을 확인하고 `skills/context/shared/commit.md` 규칙(scope 표기, 한국어 본문, 50자 이내 요약)에 맞춰 메시지를 작성해 커밋한다. unstaged 파일이 있으면 포함 여부를 사용자에게 확인한다.
Confluence 기획서를 프로젝트 docs/ 폴더에 fetch 하거나 저장된 docs/ 를 search·all·search+action 모드로 조회할 때 사용한다. 저장된 docs/ 를 features/ 로 가공하는 작업은 `/pilot:analyze` 가 담당한다.
활성 프로젝트에 사용자 프롬프트 한 줄로 단일 feature 명세를 추가할 때 사용한다. features/NN-{slug}.md 를 prompt-origin 템플릿으로 생성하고 `/pilot:analyze` 와 동일하게 project.md (목표·관련 파일) 와 prompts/* (planner·generator·evaluator) 를 함께 동기화한다. 기획서(docs/) 기반 다건 분할은 `/pilot:analyze` 를 사용한다. 실행은 @pilot-planner 호출로 시작 — 자동 파이프라인 아님.