Receber por email
← Voltar para o catálogo

setup

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

12estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add ggombee/code-forge

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/setup-ggombee/svg)](https://www.skillteca.com.br/skills/setup-ggombee)
#ai

Skills relacionadas

Ver todas de Desenvolvimento →

Alerta por categoria

Receba novas skills de Desenvolvimento toda segunda

1 email curto, só com as skills novas de Desenvolvimento. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

/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) → react-nextjs-app
  State:         jotai (2.x) + @tanstack/react-query (5.x) → jotai-tanstack
  Styling:       @emotion/styled (11.x) → emotion
  Testing:       vitest (1.x) → vitest
  Design System: 감지 안 됨

감지된 명령어:
  dev:   yarn dev
  build: yarn build
  lint:  yarn lint
  test:  yarn test

package.json이 없으면 이 단계를 건너뛰고 1-3으로 직행한다.

1-2. 프리셋 매칭 및 제안

감지 결과를 기존 프리셋과 비교한다.

매칭 알고리즘:

  • 감지된 modules와 preset.json의 modules를 비교
  • 모든 필드 일치 → "일치합니다"
  • 80%+ 일치 → "유사합니다 (차이: X)"
  • 그 외 → "매칭 없음"

프리셋 매칭 시:

감지 결과가 "standard" 프리셋과 일치합니다.

  standard: Pages Router + Jotai + Emotion + Jest

> standard 프리셋으로 진행
  직접 선택할게요

→ "standard 프리셋으로 진행" 선택 시: 1-4로 건너뜀 (프로젝트 정보 확인) → "직접 선택할게요" 선택 시: 1-3으로 진행

프리셋 매칭 안 될 때:

사용 가능한 프리셋:

> standard — Pages Router + Jotai + Emotion + Jest
  modern-stack — MUI + App Router + Zustand + Tailwind + Vitest
  backend-api — Node.js Express + TypeScript + Jest
  직접 선택 (감지 결과 기반)

1-3. 카테고리별 순차 질문

직접 선택 시 한 번에 한 카테고리씩 질문한다. 자동 감지 결과가 있으면 해당 항목에 > 커서를 놓는다 (기본 선택).

각 카테고리마다 "기타" 옵션이 있다. 감지되었지만 옵션에 없는 라이브러리는 자동으로 옵션에 추가된다.

[1/5] Framework

> react-nextjs-app — Next.js App Router     ← 감지됨
  react-nextjs-pages — Next.js Pages Router
  react-spa — React SPA (Vite/CRA)
  기타 (직접 입력)
[2/5] Design System

> 없음
  mui — Material UI
  ant-design — Ant Design
  기타 (직접 입력)
[3/5] State Management

> jotai-tanstack — Jotai + TanStack Query   ← 감지됨
  zustand-tanstack — Zustand + TanStack Query
  redux-rtk — Redux Toolkit + RTK Query
  기타 (직접 입력)

감지되었지만 옵션에 없는 경우 (예: recoil 감지):

[3/5] State Management

> recoil — Recoil                            ← 감지됨
  jotai-tanstack — Jotai + TanStack Query
  zustand-tanstack — Zustand + TanStack Query
  redux-rtk — Redux Toolkit + RTK Query
  기타 (직접 입력)
[4/5] Styling

> emotion — Emotion (@emotion/styled)       ← 감지됨
  tailwind — Tailwind CSS
  styled-components — Styled Components
  기타 (직접 입력)
[5/5] Testing

> vitest — Vitest                            ← 감지됨
  jest — Jest
  기타 (직접 입력)

"기타" 선택 시 동작:

[3/5] State Management

사용 중인 상태 관리 라이브러리를 입력해 주세요:
> recoil

입력값은 modules.state에 문자열로 저장된다. 대응하는 모듈 SKILL.md가 없으면 규칙 참조에서 제외되지만, pro

Compartilhar X LinkedIn