Skip to content
Development
Skill

/setup

profile.json을 읽어 CLAUDE.md를 자동 생성한다. 프로젝트 스택에 맞는 모듈을 조합하여 Claude Code 환경을 세팅한다. 세션 시작 시 "code-forge updated" 또는 "version mismatch" 메시지가 보이면 사용자에게 재실행 여부를 물어본 후 이 스킬을 실행한다.

From plugin
code-forge
1323 skills58 agents11 hooks2 MCP
Install
$ npx -y skills add ggombee/code-forge --skill setup --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/setup

Context preview

The summary Claude sees to decide when to auto-load this skill.

profile.json을 읽어 CLAUDE.md를 자동 생성한다. 프로젝트 스택에 맞는 모듈을 조합하여 Claude Code 환경을 세팅한다. 세션 시작 시 "code-forge updated" 또는 "version mismatch" 메시지가 보이면 사용자에게 재실행 여부를 물어본 후 이 스킬을 실행한다.

SKILL.md

setup.SKILL.md
name: setup
description: profile.json을 읽어 CLAUDE.md를 자동 생성한다. 프로젝트 스택에 맞는 모듈을 조합하여 Claude Code 환경을 세팅한다. 세션 시작 시 "code-forge updated" 또는 "version mismatch" 메시지가 보이면 사용자에게 재실행 여부를 물어본 후 이 스킬을 실행한다.
category: setup

/setup 스킬

프로젝트의 `.claude/profile.json`을 읽어 스택에 맞는 CLAUDE.md를 자동 생성한다.

---

동작 흐름

profile.json 존재 → Step 2로 바로 진행 (기존 파싱)
profile.json 없음 → Step 1 대화형 온보딩

---

ARGUMENT 처리

$ARGUMENTS 없음     → .claude/profile.json 자동 탐색
$ARGUMENTS 있음     → 파일 경로로 인식 (예: /setup .claude/profile.json)
$ARGUMENTS --profile → 코딩 프로필 생성만 실행 (아래 "코딩 프로필" 섹션 참조)

---

코딩 프로필 (`/setup --profile`)

`/setup --profile` 또는 "코딩 스타일 분석해줘" 요청 시 실행. `/setup` 기본 흐름에서는 묻지 않는다.

**흐름:** 1. Step 1에서 감지한 스택 정보(또는 package.json 분석)를 기반으로 **분석 카테고리를 동적 선택** 2. 프로젝트 코드를 실제로 읽고 (주요 디렉토리에서 2-3개 파일 샘플링) 패턴 분석 3. 결과를 `.candidate/profile.md`에 저장 (레거시 `.claude/coding-profile.md` 는 폴백으로만) 4. 사용자에게 결과 보여주고 수정 여부 확인

**스택별 분석 카테고리 (동적 선택):**

| 카테고리 | 적용 스택 | 분석 내용 | |---------|----------|----------| | **추상화 습관** | 모든 스택 | 중복 코드 추출 기준, 함수/모듈 분리 기준 | | **모듈/컴포넌트 설계** | React/Vue → 컴포넌트, Python/Go → 모듈/클래스 | 분리 기준, 계층 구조 | | **상태/데이터 관리** | React → hooks/Query, 백엔드 → ORM/캐시 | 데이터 흐름 | | **타입/스키마** | TS → interface/type, Python → type hints, Go → struct | 엄격도 | | **에러 처리** | 모든 스택 | try-catch 전략, 에러 계층 | | **네이밍/스타일** | 모든 스택 | 네이밍, early return, 비동기 | | **폴더 구조** | 모든 스택 | 기능별/레이어별 | | **커밋 스타일** | 모든 스택 | git log 분석 | | **테스트 전략** | 모든 스택 | 단위/통합/E2E 비율 | | **프레임워크 특화** | 감지된 것만 | Next.js→SSR, Django→view, Go→interface 등 |

**감지 못한 스택이면:** 범용 카테고리(추상화, 에러, 네이밍, 폴더, 커밋)만 분석 + Claude가 코드를 읽고 해당 언어에 맞는 질문 동적 생성

**참조 템플릿:** `${CLAUDE_PLUGIN_ROOT}/.candidate/code-analysis-prompt.md` (React/TS 예시)

**생성 경로:** `.candidate/profile.md` (local, 우선) 또는 `~/.claude/coding-profile.md` (global, 레거시 폴백)

---

선택 UI 규칙

**모든 선택은 `AskUserQuestion` 도구를 사용하여 인터랙티브 선택 UI로 제시한다.** 텍스트로 `>` 커서를 출력하거나 숫자/Y/n 입력을 받지 않는다.

구현 방식

1. **`AskUserQuestion` 도구를 호출**하여 클릭 가능한 선택지를 보여준다 2. 감지된 항목이 있으면 해당 옵션의 label에 `(Recommended)` 를 붙여 첫 번째에 배치한다 3. `options`에 없는 선택은 사용자가 "Other"를 통해 자유 입력할 수 있다 (자동 제공됨) 4. 한 번에 최대 4개 질문까지 묶을 수 있지만, 의존 관계가 있으면 순차적으로 묻는다

예시

AskUserQuestion({
  questions: [{
    question: "이 설정을 어디에 적용할까요?",
    header: "설치 위치",
    options: [
      { label: "이 프로젝트에만 (.claude/)", description: "현재 프로젝트에만 적용" },
      { label: "전역 설정 (~/.claude/)", description: "모든 프로젝트에 적용" }
    ],
    multiSelect: false
  }]
})

**핵심: 한 번에 하나만 묻고, 응답을 받은 후 다음으로 넘어간다. 반드시 AskUserQuestion 도구를 사용한다.**

---

Step 1: 대화형 온보딩 (profile.json 없을 때)

`.claude/profile.json`이 없으면 아래 서브스텝을 순차 진행한다. **한 번에 하나씩 질문하고, 사용자 응답을 받은 후 다음으로 넘어간다.**

> **참고:** 아래의 `> 옵션` 형식 예시들은 AskUserQuestion 도구에 전달할 옵션 내용의 참고 자료이다. 실제 구현 시 반드시 AskUserQuestion 도구를 호출하여 인터랙티브 선택 UI로 표시한다. 텍스트로 `>` 커서를 출력하지 않는다.

1-0. 설치 위치 선택

code-forge 설정을 시작합니다.

이 설정을 어디에 적용할까요?

> 이 프로젝트에만 (.claude/)
  전역 설정 (~/.claude/)

| 선택 | installTarget | profile.json 경로 | CLAUDE.md 경로 | |------|--------------|-------------------|---------------| | 이 프로젝트에만 | `local` | `.claude/profile.json` | `./CLAUDE.md` | | 전역 설정 | `global` | `~/.claude/profile.json` | `~/.claude/CLAUDE.md` |

1-1. package.json 자동 감지 + 프로젝트 유형 판별

`package.json`이 존재하면 dependencies를 분석하여 스택을 자동 추론한다.

**프로젝트 유형 판별:**

먼저 프로젝트가 프론트엔드 서비스인지 판별한다.

| 조건 | 유형 | 스택 설정 | |------|------|----------| | `react`, `next`, `vue`, `angular` 등 UI 프레임워크 존재 | **서비스** | 스택 설정 진행 | | `bin` 필드 존재 + UI 프레임워크 없음 | **CLI/도구** | 스택 설정 건너뛰기 | | `main`/`exports` 필드 + UI 프레임워크 없음 | **라이브러리** | 스택 설정 건너뛰기 | | `package.json` 없음 | **기타** | 스택 설정 건너뛰기 | | UI 프레임워크 없지만 판단 불확실 | **확인 필요** | 사용자에게 질문 |

**서비스가 아닌 경우:**

이 프로젝트는 프론트엔드 서비스가 아닌 것 같습니다.
(감지: CLI 도구 / 라이브러리 / 스택 미감지)

스택 모듈 설정이 필요한가요?

> 건너뛰기 (명령어 + 기능 설정만)
  아니요, 스택 설정도 할게요

→ "건너뛰기" 선택 시: 1-2, 1-3을 건너뛰고 1-4(프로젝트 정보)로 직행 → "스택 설정도 할게요" 선택 시: 정상 진행

**감지 규칙 (서비스인 경우):**

| dependency / 파일 | 추론 모듈 | |-----------|----------| | `next` | framework: `react-nextjs-pages` 또는 `react-nextjs-app` | | `react` (next 없음) | framework: `react-spa` | | `jotai` + `@tanstack/react-query` | state: `jotai-tanstack` | | `zustand` + `@tanstack/react-query` | state: `zustand-tanstack` | | `@reduxjs/toolkit` | state: `redux-rtk` | | `@emotion/styled` 또는 `@emotion/react` | styling: `emotion` | | `tailwindcss` | styling: `tailwind` | | `styled-components` | styling: `styled-components` | | `@mui/material` | design-system: `mui` | | `antd` | design-system: `ant-design` | | `jest` | testing: `jest` | | `vitest` | testing: `vitest` | | `fastapi` in requirements.txt/pyproject.toml | framework: `python-fastapi` | | `django` in requirements.txt/pyproject.toml | framework: `python-django` | | `express` in package.json | framework: `node-express` | | `go.mod` 존재 | framework: `go-standard` |

**추가 감지:**

| 조건 | 추론 | |------|------| | `app/layout.tsx` 존재 | App Router | | `pages/_app.tsx` 존재 | Pages Router | | `tailwind.config.*` 존재 | styling: `tailwind` | | `jest.config.*` 존재 | testing: `jest` | | `vitest.config.*` 존재 | testing: `vitest` |

**미매칭 라이브러리 감지:**

감지 규칙에 매칭되지 않는 관련 라이브러리가 있으면 해당 카테고리의 "기타" 옵션으로 자동 추가한다.

예시:

  • `recoil` 감지 → State 카테고리에 `recoil (감지됨)` 옵션 동적 추가
  • `sass` 감지 → Styling 카테고리에 `sass (감지됨)` 옵션 동적 추가
  • `@testing-library/react` 있지만 jest/vitest 없음 → Testing에 해당 정보 표시

**카테고리별 감지 확장 규칙:**

| 카테고리 | 추가 감지 대상 | |---------|--------------| | Framework | `vue`, `angular`, `svelte`, `solid-js`, `remix`, `gatsby` | | State | `recoil`, `mobx`, `valtio`, `xstate`, `swr` (TanStack Query 대체) | | Styling | `sass`/`scss`, `less`, `vanilla-extract`, `panda-css`, `linaria` | | Design System | `chakra-ui`, `radix-ui`, `shadcn`, `mantine` | | Testing | `playwright`, `cypress`, `storybook` |

감지되면 해당 카테고리 옵션 목록에 `{라이브러리명} (감지됨)` 형태로 자동 삽입한다.

**프로젝트 정보 자동 추출:**

`package.json`의 `scripts`에서 `dev`, `build`, `lint`, `test` 명령어를 추출한다. 패키지 매니저는 lock 파일로 판단: `yarn.lock` → yarn, `pnpm-lock.yaml` → pnpm, 그 외 → npm.

package.json을 분석합니다...

감지된 스택:
  Framework:     next (14.2.x)
Read more
Ships withcode-forge

설치하면 Claude Code가 더 잘 동작합니다. 전문 에이전트, 슬래시 스킬, 스택 모듈을 제공하는 Claude Code 플러그인. 검증된 사고모델(GROUND→APPLY→VERIFY→ADAPT)이 모든 작업의 품질을 일관되게 유지합니다. (에이전트/스킬 개수는 디스크가 진실 — ls agents/.md | wc -l, ls skills//SKILL.md | wc -l) 현재 상태: 개인 GitHub 운영 중 (마켓플레이스 배포 4.10.0).

Get the whole plugin

Other skills on code-forge.

debate
Skill

debate

교차 모델 토론. Agent Teams / Codex CLI / self-debate 모드 선택. 설계 결정, 아키텍처 선택 시 활용. "어느 쪽이 나을까", "설계 비교해줘", "토론시켜줘", "교차 검증해줘" 등의 요청에 사용.

e2e
Skill

e2e

화면 단위 E2E 테스트 자동화. Figma/코드 기반 테스트 케이스 도출 → Playwright 코드 생성 → Forge Loop(에스컬레이션 기반 자율 실행). "E2E 돌려줘", "화면 테스트 만들어줘", "이 페이지 자동 테스트" 등의 요청에 사용.