프로젝트 실행에 필요한 모든 의존성을 결정적으로 검사하고 설치하며, 어떤 템플릿(회사)을 펼칠지 정한다. GitHub 조직 팔로우와 레포 스타는 선택으로 물어본다. 처음 클론했을 때, 환경이 바뀌었을 때, 무언가 동작하지 않을 때 사용.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add TOKTOKHAN-DEV/agent-company --skill company-setup --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Company Setup?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/toktokhan-dev-company-setup)More formats (shields.io, HTML) on the badges page.
---
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 가 없다고 다른 이미지 생성 도구를 제안하지 마세요. 폴백은 정해져 있습니다.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!