Installs into .claude/skills of the current project.
Are you the author of Company Setup?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/toktokhan-dev-company-setup)
---
name: company-setup
description: 프로젝트 실행에 필요한 모든 의존성을 결정적으로 검사하고 설치하며, 어떤 템플릿(회사)을 펼칠지 정한다. GitHub 조직 팔로우와 레포 스타는 선택으로 물어본다. 처음 클론했을 때, 환경이 바뀌었을 때, 무언가 동작하지 않을 때 사용.
allowed-tools: Bash, Read, Edit, AskUserQuestion
---
# /company-setup
프로젝트를 돌릴 수 있는 상태로 만든다.
## 핵심 원칙
**당신이 직접 검사하지 마세요.** 이 스킬의 존재 이유는 결정성입니다. 셸 스크립트가 항상 같은 순서로 같은
검사를 수행하고, 당신은 결과를 해석해 사용자에게 다음 행동을 안내합니다.
체크리스트를 모델이 매번 다르게 해석하면 "확인했습니다"가 실제로는 확인하지 않은 상태를 의미하게 됩니다.
## 순서
1. [템플릿을 정합니다](#1-템플릿-먼저-정하기) — 스크립트를 돌리기 **전에**.
2. [스크립트를 한 번 실행합니다](#2-실행).
3. [GitHub 응원을 묻습니다](#github-응원-선택) — 선택.
## 1. 템플릿 먼저 정하기
이 저장소는 **코어 + 템플릿** 구조입니다. 템플릿이 `apps/` · `packages/` · `agents/` 를 루트에
펼치므로, 무엇을 만들 회사인지 정해야 셋업이 의미 있게 끝납니다.
```bash
bash scripts/template.sh current # 이미 적용된 것이 있는지
bash scripts/template.sh list # 고를 수 있는 것
```
| `current` 결과 | 당신이 할 일 |
| --- | --- |
| `none` 이 아님 | **묻지 마세요.** 이미 정해졌습니다. `--template` 없이 그대로 실행합니다 |
| `none` + 사용자가 무엇을 만들지 이미 말함 | 그에 맞는 id 를 `--template` 로 넘깁니다 |
| `none` + 모름 | AskUserQuestion 으로 물어봅니다 (아래) |
`none` 이고 무엇을 만들지 모를 때 물어볼 것: **"어떤 회사를 차릴까요?"**
옵션은 `list` 출력에서 `planned` 를 뺀 것들 + "나중에 고르기". 각 옵션의 설명에는 매니페스트의
`summary` 를 그대로 쓰세요.
**`planned` 상태 템플릿을 제안하지 마세요.** 내용물이 없어서 `apply` 가 거부합니다.
**임의로 고르지 마세요.** 템플릿은 파일을 루트에 펼치고, 갈아타면 이전 파일이 남습니다.
사용자가 "나중에"를 고르면 `--template` 없이 실행하고, 나중에 `pnpm template apply <id>` 로
할 수 있다고 알려주세요.
## 2. 실행
```bash
bash scripts/company-setup.sh --no-community-prompt --template <id>
```
**정리(prune)는 셋업에 포함되어 자동으로 실행됩니다.** 회사를 고른 것 자체가 의사 표시이므로
따로 묻지 않습니다. 남은 카탈로그가 필요한 특수한 경우에만 `--no-prune` 을 붙이세요.
`--no-community-prompt` 를 **항상** 붙이세요. 스크립트의 텍스트 메뉴는 `/dev/tty` 에서 입력을 읽는데,
Claude Code 의 Bash 도구에는 tty 가 없어 그 자리에서 막히거나 조용히 기본값(건너뛰기)으로 떨어집니다.
7단계는 아래 **GitHub 응원** 절차대로 당신이 AskUserQuestion 으로 직접 묻습니다.
같은 이유로 3단계(회사 선택)도 tty 가 없으면 **건너뜁니다**. 그래서 템플릿은 위에서 미리 정해
`--template` 로 넘기는 것입니다.
그 외 옵션은 필요할 때만 붙입니다:
| 옵션 | 언제 |
| --- | --- |
| `--yes` | 비대화형 환경(CI). 모든 확인을 자동 승인 |
| `--skip-install` | 방금 `pnpm install` 을 돌렸고 다시 돌릴 필요가 없을 때 |
## 스크립트가 하는 일
1. **필수 도구** — node ≥20.11, pnpm ≥10, git. 없으면 설치 명령을 출력하고 중단.
2. **도구 상태** — codex(선택), gh(선택), claude 상태를 알림.
3. **회사 선택** — `--template` 이 있으면 적용. 없고 tty 도 없으면 건너뜀.
4. **환경** — `.env` 생성, 템플릿이 요구하는 디렉터리 생성, 실행 권한 부여.
5. **의존성** — `pnpm install`.
6. **검증** — 구조 검사 + 타입 검사.
7. **GitHub 응원 (선택)** — `--no-community-prompt` 로 넘겼으므로 아무것도 하지 않습니다.
## 카탈로그 정리 (prune)
셋업이 끝나고, 템플릿이 실제로 적용됐을 때만 진행합니다.
### 1. 물어볼 상황인지 확인
```bash
bash scripts/template.sh current # none 이면 물어보지 마세요
ls .company/PRODUCT 2>/dev/null # 있으면 제품 레포 — 물어보지 마세요
```
`.company/PRODUCT` 가 있으면 여기는 이 템플릿의 **제품 레포**입니다. 카탈로그와 랜딩이 이
레포의 내용물이므로 정리 대상이 아닙니다. 화제로 꺼내지 마세요.
### 2. AskUserQuestion 으로 묻기
질문: **"이 프로젝트는 `<id>` 회사 하나입니다. 나머지 템플릿과 제품 랜딩을 지울까요?"**
| 라벨 | 설명 |
| --- | --- |
| `정리하기` | 안 쓰는 템플릿과 `site/` 삭제. 고른 템플릿의 매니페스트는 남습니다 |
| `그대로 두기` | 나중에 `pnpm template prune` 으로 할 수 있습니다 |
**되돌릴 수 없는 삭제라고 반드시 알리세요.** 다만 upstream 에서 다시 가져올 수 있다는 것도
함께 말하세요.
### 3. 답에 따라 실행
```bash
bash scripts/template.sh prune
```
정리 뒤 남는 것은 `templates/<id>/{template.yaml,README.md}` 뿐입니다. 이건 **필요해서 남기는
것**입니다 — `pnpm check` 의 검사 항목과 세션 하드 룰이 그 파일에서 옵니다. 사용자가 "이것도
지워도 되냐"고 물으면 안 된다고 답하세요.
## GitHub 응원 (선택)
1~6단계가 끝난 뒤에 진행합니다. **선택 단계입니다.** 거절은 정상적인 답이고, 거절하면 기록되어
다시 묻지 않습니다.
### 1. 물어볼 상황인지 먼저 확인
```bash
bash scripts/community.sh status
```
| 출력 | 당신이 할 일 |
| --- | --- |
| `pending` | 아래 2번으로 진행 — 물어봅니다 |
| `done` | **묻지 마세요.** 이미 팔로우 · 스타 완료입니다. 한 줄로 고맙다고만 하세요 |
| `optout` | **묻지 마세요.** 이전에 거절했습니다. 언급조차 하지 마세요 |
| `unavailable` | **묻지 마세요.** gh 미설치 또는 미인증입니다. `https://github.com/TOKTOKHAN-DEV/agent-company` 를 한 번 알려주고 끝냅니다 |
`gh` 를 설치하거나 로그인하라고 권하지 마세요. 선택 단계를 위해 인증을 요구하는 건 과합니다.
### 2. `pending` 일 때만 AskUserQuestion 으로 묻기
질문: **"Agent Company 가 도움이 되셨다면, GitHub 에서 응원해 주시겠어요?"**
옵션은 정확히 세 개, 이 순서로:
| 라벨 | 설명 |
| --- | --- |
| `Yes, star it!` | 레포에 스타를 누르고 `@TOKTOKHAN-DEV` 를 팔로우합니다 |
| `No thanks` | 건너뜁니다. 다시 묻지 않습니다 |
| `Maybe later` | 건너뜁니다. 다시 묻지 않습니다 |
`No thanks` 와 `Maybe later` 는 동작이 같습니다 — 둘 다 즉시 건너뛰고 기록합니다.
두 번째 기회를 주려고 다시 묻거나, 마음을 돌리려고 설득하지 마세요.
### 3. 답에 따라 실행
```bash
# Yes, star it!
bash scripts/community.sh apply
# No thanks
bash scripts/community.sh optout no-thanks
# Maybe later
bash scripts/community.sh optout maybe-later
```
`apply` 가 실패해도 **셋업은 성공입니다.** 실패 출력을 그대로 전달하고 넘어가세요. 흔한 원인은
토큰에 `user:follow` 스코프가 없는 것이고, 스크립트가 명령을 함께 출력합니다.
## 결과 해석
| 스크립트 결과 | 당신이 할 일 |
| --- | --- |
| 완료 메시지 출력 | 마지막에 찍힌 **템플릿의 `next:` 안내를 그대로** 전달하고 끝냅니다. 추가 검사를 하지 마세요. |
| 템플릿을 건너뛴 채 완료 | `pnpm template apply <id>` 로 나중에 고를 수 있다고 알립니다. `pnpm dev` 를 안내하지 마세요 — 띄울 앱이 없습니다. |
| `✘` 로 중단 | 출력된 명령을 사용자에게 그대로 전달합니다. 대안을 임의로 제안하지 마세요. |
| `!` 경고만 | 무엇이 비활성화되는지 설명합니다. codex 경고라면 이미지 폴백 순서를 함께 안내합니다. |
| 응원 단계 실패 | 셋업 실패가 아닙니다. 출력된 명령을 전달하고 정상 완료로 보고하세요. |
**`pnpm dev → :3000` 을 외워서 안내하지 마세요.** 무엇이 뜨는지는 템플릿이 정하고, 스크립트가
매니페스트를 읽어 이미 출력했습니다.
## 상태만 확인하고 싶을 때
설치 없이 현재 상태만 보려면:
```bash
bash scripts/check-deps.sh
```
**커뮤니티 (선택)** 섹션이 응원 상태를 보여줍니다. 선택 항목이라 경고로 세지 않습니다.
## 하지 말아야 할 것
- **스크립트를 실행하지 않은 채 "설정해 뒀습니다"라고 보고하지 마세요.** 코드를 작성한 것과 실행한 것은
다릅니다.
- 스크립트가 검사한 것을 다시 손으로 확인하지 마세요 (`node -v` 를 따로 실행하는 등).
- 스크립트가 실패한 단계를 우회하는 방법을 찾지 마세요. 실패는 실제 문제입니다.
- **`status` 가 `pending` 이 아닐 때 응원을 묻지 마세요.** 특히 `optout` 이면 화제로 꺼내지도 마세요.
- 거절한 사용자를 다시 설득하지 마세요. "다시 묻지 않습니다"는 지켜야 하는 약속입니다.
- 응원 단계 실패를 셋업 실패로 보고하지 마세요.
- codex 가 없다고 다른 이미지 생성 도구를 제안하지 마세요. 폴백은 정해져 있습니다.