Skip to content

[DOCS] AI를 이용한 개발을 위한 설정#440

Open
jaeml06 wants to merge 9 commits intodevelopfrom
docs/#438
Open

[DOCS] AI를 이용한 개발을 위한 설정#440
jaeml06 wants to merge 9 commits intodevelopfrom
docs/#438

Conversation

@jaeml06
Copy link
Copy Markdown
Contributor

@jaeml06 jaeml06 commented Apr 1, 2026

🚩 연관 이슈

closed #438

📝 작업 내용

이 PR은 AI 에이전트(Claude Code, Codex, Antigravity 등)를 활용한 개발 환경을 프로젝트에 설정합니다.
처음 접하는 분도 이해할 수 있도록 개념부터 사용법까지 상세히 설명합니다.


🤖 전체 구조 한눈에 보기

debate-timer-fe/
├── AGENTS.md                    # AI 에이전트를 위한 프로젝트 문서 (진입점)
├── skills-lock.json             # 설치된 스킬 버전 잠금 파일
│
├── .specify/                    # Speckits 워크플로우 핵심 파일
│   ├── memory/constitution.md  # 프로젝트 헌법 (AI가 따르는 코딩 규칙)
│   ├── templates/               # 명세서/계획서/태스크 문서 템플릿
│   └── scripts/bash/            # 자동화 스크립트
│
├── .agents/skills/              # 설치된 스킬 원본 (모든 AI 공유)
│   ├── frontend-fundamentals/
│   ├── vercel-react-best-practices/
│   ├── vercel-composition-patterns/
│   └── remotion-best-practices/
│
├── .claude/                     # Claude Code 전용 설정
│   ├── commands/                # /커맨드 정의 파일
│   │   ├── pr-develop.md
│   │   └── speckits/            # Speckits 커맨드 모음
│   └── skills/ -> .agents/skills/ (심볼릭 링크)
│
├── .agent/workflows/            # Antigravity 전용 워크플로우
└── .codex/prompts/              # OpenAI Codex 전용 프롬프트

💡 핵심 개념 설명

1. Skills (스킬) — AI의 전문 지식 모듈

한 줄 요약: AI에게 특정 분야의 전문 지식을 주입하는 플러그인

AI는 기본적으로 모든 걸 알지만, 깊이가 얕을 수 있습니다.
스킬은 특정 도메인의 Best Practice를 AI에게 미리 학습시켜두는 파일입니다.

예를 들어 vercel-react-best-practices 스킬을 설치하면, AI가 React 컴포넌트를 작성할 때
Vercel Engineering이 검증한 성능 최적화 패턴(67가지 규칙)을 자동으로 따릅니다.

스킬을 사용하지 않으면 → 일반적인 React 코드
스킬을 사용하면 → 불필요한 리렌더링 방지, 번들 최적화, 메모이제이션 패턴이 자동 적용

2. Speckits — 명세 주도 개발 워크플로우

한 줄 요약: AI와 함께 기능을 "설계 → 검토 → 구현"하는 체계적인 프로세스

일반적으로 AI에게 "이 기능 만들어줘"라고 하면 바로 코드를 작성합니다.
하지만 명세(Spec)가 없으면 요구사항 오해, 테스트 누락, 아키텍처 불일치가 발생합니다.

Speckits는 이를 방지하기 위해 아래 단계를 강제합니다:

요구사항 → 명세서 → 모호한 부분 질문 → 구현 계획 → 태스크 분리 → 검증 → 구현

각 단계가 커맨드로 분리되어 있어, 팀원이 각 단계의 결과물을 검토할 수 있습니다.

3. Constitution (헌법) — 프로젝트 고유 규칙

한 줄 요약: AI가 이 프로젝트에서 반드시 지켜야 할 코드 컨벤션 문서

.specify/memory/constitution.md에 저장된 이 파일은 AI에게 다음을 알려줍니다:

  • 폴더 구조 규칙 (어디에 무엇을 두어야 하는가)
  • 코드 스타일 (arrow function 금지, const 우선 등)
  • TDD 방식 (테스트를 먼저 작성한다)
  • 네이밍 컨벤션 (isLoading, handleSubmit 등)

이 파일 덕분에 AI가 생성하는 코드가 기존 프로젝트 스타일과 일치합니다.

4. AGENTS.md — AI 진입점 문서

AI 에이전트가 프로젝트를 처음 열었을 때 가장 먼저 읽는 파일입니다.
기술 스택, 폴더 구조, 주요 명령어, Git 워크플로우를 요약해 AI가 빠르게 컨텍스트를 파악합니다.


📦 설치된 스킬 목록

스킬 설명 언제 자동 활성화되는가
frontend-fundamentals 토스 Frontend Fundamentals 기반 가이드. 코드 품질, 번들링, 접근성, 디버깅 4개 도메인 코드 리뷰, 리팩토링, 접근성(a11y), 번들링 설정 질문 시
vercel-react-best-practices Vercel Engineering의 React/Next.js 성능 최적화 67가지 규칙 React 컴포넌트 작성, 리렌더링 최적화, 데이터 페칭 관련 작업 시
vercel-composition-patterns React 컴포넌트 설계 패턴 (Compound Component, Render Props, Context 등) 컴포넌트 구조 설계, boolean props 리팩토링, 재사용 가능한 컴포넌트 작성 시
remotion-best-practices Remotion(React 기반 영상 제작) 관련 Best Practice Remotion을 사용하는 애니메이션/영상 작업 시

🛠️ 커맨드 설명

Speckits 워크플로우 커맨드

아래 커맨드는 순서대로 실행하는 것이 권장됩니다.

1단계: /speckits/specify — 명세서 작성

기능 요구사항을 입력하면 구조화된 명세서(spec.md)를 생성합니다.
"무엇을 만들어야 하는가"를 문서화합니다.

2단계: /speckits/clarify — 모호한 부분 질문

명세서에서 불명확한 부분을 최대 5개의 질문으로 정리합니다.
AI가 잘못 이해한 부분을 사전에 교정할 수 있습니다.

3단계: /speckits/plan — 구현 계획 수립

명세서를 기반으로 TDD 기반 구현 계획(plan.md)을 생성합니다.
어떤 파일을 어떤 순서로 만들어야 하는지 설계합니다.

4단계: /speckits/tasks — 태스크 분리

계획을 의존성 순서대로 정렬된 실행 가능한 태스크 목록(tasks.md)으로 변환합니다.
각 태스크는 독립적으로 검토하고 실행할 수 있습니다.

5단계: /speckits/analyze — 일관성 검증

spec.md, plan.md, tasks.md 간의 불일치를 검사합니다.
구현 전에 문서 간 충돌을 사전에 발견합니다.

6단계: /speckits/implement — 구현 실행

tasks.md에 정의된 태스크를 순서대로 실행합니다.
TDD 사이클(Red→Green→Refactor)에 따라 코드를 작성합니다.

부가 커맨드

  • /speckits/checklist: 현재 기능에 맞는 품질 체크리스트 생성
  • /speckits/taskstoissues: tasks.md의 태스크를 GitHub Issues로 자동 변환
  • /speckits/constitution: 프로젝트 헌법 생성 또는 업데이트

PR 커맨드

/pr-develop — develop 브랜치로 PR 자동 생성

현재 브랜치에서 develop 브랜치로 PR을 자동 생성합니다.
브랜치명에서 이슈 번호를 추출해 이슈 연결, 커밋 내역 분석 후 PR 본문을 작성합니다.


🔄 전체 개발 플로우

1. 이슈 생성
   └─ GitHub에서 기능 이슈 생성 (e.g. #439)

2. 브랜치 생성
   └─ feat/#439-timer-reset

3. AI와 명세 작성 (Speckits)
   ├─ /speckits/specify  → spec.md 생성
   ├─ /speckits/clarify  → 모호한 부분 확인
   ├─ /speckits/plan     → plan.md 생성
   ├─ /speckits/tasks    → tasks.md 생성
   └─ /speckits/analyze  → 문서 일관성 검증

4. AI가 구현
   └─ /speckits/implement → TDD로 코드 작성

5. PR 생성
   └─ /pr-develop → develop 브랜치로 PR 자동 생성

🖥️ AI 도구별 사용법

Claude Code (.claude/ 폴더 사용)

설치 확인 방법: 터미널에서 claude 실행

# 개발 서버 실행 후 Claude Code 시작
npm run dev-mock
claude

# 슬래시 커맨드로 Speckits 워크플로우 실행
/speckits/specify 타이머 리셋 기능 추가
/speckits/plan
/speckits/implement
/pr-develop

스킬은 .claude/skills/ 폴더(.agents/skills/의 심볼릭 링크)에서 자동으로 로드됩니다.
커맨드 정의는 .claude/commands/ 폴더에 있습니다.

OpenAI Codex (.codex/ 폴더 사용)

설치 확인 방법: codex CLI 설치 후 실행

codex "타이머 리셋 기능을 추가해줘. .codex/prompts/specify.md의 방식으로 진행해"

.codex/prompts/ 폴더의 프롬프트 파일을 Codex에 직접 참조하거나 붙여넣어 사용합니다.
각 파일은 Claude의 슬래시 커맨드와 동일한 역할을 합니다:

  • specify.md → Speckits specify 프롬프트
  • plan.md → Speckits plan 프롬프트
  • implement.md → Speckits implement 프롬프트

Antigravity (.agent/workflows/ 폴더 사용)

설치 확인 방법: antigravity CLI 설치 후 실행

# 워크플로우 파일을 직접 실행
antigravity run .agent/workflows/speckits-specify.md
antigravity run .agent/workflows/speckits-plan.md
antigravity run .agent/workflows/speckits-implement.md
antigravity run .agent/workflows/pr-develop.md

.agent/workflows/ 폴더의 각 파일이 Claude의 슬래시 커맨드에 대응합니다.

세 도구 비교

기능 Claude Code OpenAI Codex Antigravity
Speckits specify /speckits/specify .codex/prompts/specify.md 참조 antigravity run speckits-specify.md
Speckits implement /speckits/implement .codex/prompts/implement.md 참조 antigravity run speckits-implement.md
PR 생성 /pr-develop 미지원 antigravity run pr-develop.md
스킬 자동 로드 .claude/skills/ ❌ 수동 참조 ❌ 수동 참조
헌법 자동 적용 ✅ 자동 ⚠️ 프롬프트에 포함 필요 ⚠️ 프롬프트에 포함 필요

🗣️ 리뷰 요구사항 (선택)

jaeml06 and others added 6 commits April 1, 2026 14:46
프로젝트 개요, 기술 스택, 코드 컨벤션, 테스트 전략, Speckits 워크플로우,
Git 워크플로우 등 AI 에이전트가 참조할 프로젝트 문서를 추가한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
기능 명세, 계획, 태스크 생성, 구현을 위한 Speckits 워크플로우 핵심 파일을
추가한다. 템플릿, 실행 스크립트, 헌법(constitution) 파일을 포함한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
frontend-fundamentals, remotion-best-practices, vercel-composition-patterns,
vercel-react-best-practices 스킬을 추가한다. skills-lock.json으로 버전을 고정한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Speckits 슬래시 커맨드, pr-develop 커맨드, 권한 설정, 스킬 심볼릭 링크를
포함한 Claude Code 설정을 추가한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Speckits 워크플로우(specify, clarify, plan, tasks, analyze, implement, checklist,
taskstoissues)와 pr-develop 워크플로우를 에이전트용 형식으로 추가한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Speckits 워크플로우(specify, clarify, plan, tasks, analyze, implement, checklist)를
OpenAI Codex용 프롬프트 형식으로 추가한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 1, 2026

Important

Review skipped

Too many files!

This PR contains 176 files, which is 26 over the limit of 150.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 206e3b12-ffe5-4dba-b441-6209b0b44280

📥 Commits

Reviewing files that changed from the base of the PR and between 8aaff3a and 73f40bd.

📒 Files selected for processing (176)
  • .agent/workflows/pr-develop.md
  • .agent/workflows/speckits-analyze.md
  • .agent/workflows/speckits-checklist.md
  • .agent/workflows/speckits-clarify.md
  • .agent/workflows/speckits-constitution.md
  • .agent/workflows/speckits-implement.md
  • .agent/workflows/speckits-plan.md
  • .agent/workflows/speckits-specify.md
  • .agent/workflows/speckits-tasks.md
  • .agent/workflows/speckits-taskstoissues.md
  • .agents/skills/frontend-fundamentals/SKILL.md
  • .agents/skills/frontend-fundamentals/references/a11y.md
  • .agents/skills/frontend-fundamentals/references/bundling.md
  • .agents/skills/frontend-fundamentals/references/code-quality.md
  • .agents/skills/frontend-fundamentals/references/debugging.md
  • .agents/skills/remotion-best-practices/SKILL.md
  • .agents/skills/remotion-best-practices/rules/3d.md
  • .agents/skills/remotion-best-practices/rules/animations.md
  • .agents/skills/remotion-best-practices/rules/assets.md
  • .agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx
  • .agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx
  • .agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx
  • .agents/skills/remotion-best-practices/rules/audio-visualization.md
  • .agents/skills/remotion-best-practices/rules/audio.md
  • .agents/skills/remotion-best-practices/rules/calculate-metadata.md
  • .agents/skills/remotion-best-practices/rules/can-decode.md
  • .agents/skills/remotion-best-practices/rules/charts.md
  • .agents/skills/remotion-best-practices/rules/compositions.md
  • .agents/skills/remotion-best-practices/rules/display-captions.md
  • .agents/skills/remotion-best-practices/rules/extract-frames.md
  • .agents/skills/remotion-best-practices/rules/ffmpeg.md
  • .agents/skills/remotion-best-practices/rules/fonts.md
  • .agents/skills/remotion-best-practices/rules/get-audio-duration.md
  • .agents/skills/remotion-best-practices/rules/get-video-dimensions.md
  • .agents/skills/remotion-best-practices/rules/get-video-duration.md
  • .agents/skills/remotion-best-practices/rules/gifs.md
  • .agents/skills/remotion-best-practices/rules/images.md
  • .agents/skills/remotion-best-practices/rules/import-srt-captions.md
  • .agents/skills/remotion-best-practices/rules/light-leaks.md
  • .agents/skills/remotion-best-practices/rules/lottie.md
  • .agents/skills/remotion-best-practices/rules/maps.md
  • .agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md
  • .agents/skills/remotion-best-practices/rules/measuring-text.md
  • .agents/skills/remotion-best-practices/rules/parameters.md
  • .agents/skills/remotion-best-practices/rules/sequencing.md
  • .agents/skills/remotion-best-practices/rules/sfx.md
  • .agents/skills/remotion-best-practices/rules/subtitles.md
  • .agents/skills/remotion-best-practices/rules/tailwind.md
  • .agents/skills/remotion-best-practices/rules/text-animations.md
  • .agents/skills/remotion-best-practices/rules/timing.md
  • .agents/skills/remotion-best-practices/rules/transcribe-captions.md
  • .agents/skills/remotion-best-practices/rules/transitions.md
  • .agents/skills/remotion-best-practices/rules/transparent-videos.md
  • .agents/skills/remotion-best-practices/rules/trimming.md
  • .agents/skills/remotion-best-practices/rules/videos.md
  • .agents/skills/remotion-best-practices/rules/voiceover.md
  • .agents/skills/vercel-composition-patterns/AGENTS.md
  • .agents/skills/vercel-composition-patterns/README.md
  • .agents/skills/vercel-composition-patterns/SKILL.md
  • .agents/skills/vercel-composition-patterns/rules/_sections.md
  • .agents/skills/vercel-composition-patterns/rules/_template.md
  • .agents/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md
  • .agents/skills/vercel-composition-patterns/rules/architecture-compound-components.md
  • .agents/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md
  • .agents/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md
  • .agents/skills/vercel-composition-patterns/rules/react19-no-forwardref.md
  • .agents/skills/vercel-composition-patterns/rules/state-context-interface.md
  • .agents/skills/vercel-composition-patterns/rules/state-decouple-implementation.md
  • .agents/skills/vercel-composition-patterns/rules/state-lift-state.md
  • .agents/skills/vercel-react-best-practices/AGENTS.md
  • .agents/skills/vercel-react-best-practices/README.md
  • .agents/skills/vercel-react-best-practices/SKILL.md
  • .agents/skills/vercel-react-best-practices/rules/_sections.md
  • .agents/skills/vercel-react-best-practices/rules/_template.md
  • .agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md
  • .agents/skills/vercel-react-best-practices/rules/advanced-init-once.md
  • .agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md
  • .agents/skills/vercel-react-best-practices/rules/async-api-routes.md
  • .agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md
  • .agents/skills/vercel-react-best-practices/rules/async-defer-await.md
  • .agents/skills/vercel-react-best-practices/rules/async-dependencies.md
  • .agents/skills/vercel-react-best-practices/rules/async-parallel.md
  • .agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md
  • .agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md
  • .agents/skills/vercel-react-best-practices/rules/bundle-conditional.md
  • .agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md
  • .agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md
  • .agents/skills/vercel-react-best-practices/rules/bundle-preload.md
  • .agents/skills/vercel-react-best-practices/rules/client-event-listeners.md
  • .agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md
  • .agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md
  • .agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md
  • .agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md
  • .agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md
  • .agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md
  • .agents/skills/vercel-react-best-practices/rules/js-cache-storage.md
  • .agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md
  • .agents/skills/vercel-react-best-practices/rules/js-early-exit.md
  • .agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md
  • .agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md
  • .agents/skills/vercel-react-best-practices/rules/js-index-maps.md
  • .agents/skills/vercel-react-best-practices/rules/js-length-check-first.md
  • .agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md
  • .agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md
  • .agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md
  • .agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-activity.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md
  • .agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-memo.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-transitions.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md
  • .agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md
  • .agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md
  • .agents/skills/vercel-react-best-practices/rules/server-auth-actions.md
  • .agents/skills/vercel-react-best-practices/rules/server-cache-lru.md
  • .agents/skills/vercel-react-best-practices/rules/server-cache-react.md
  • .agents/skills/vercel-react-best-practices/rules/server-dedup-props.md
  • .agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md
  • .agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md
  • .agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md
  • .agents/skills/vercel-react-best-practices/rules/server-serialization.md
  • .claude/commands/pr-develop.md
  • .claude/commands/speckits/analyze.md
  • .claude/commands/speckits/checklist.md
  • .claude/commands/speckits/clarify.md
  • .claude/commands/speckits/constitution.md
  • .claude/commands/speckits/implement.md
  • .claude/commands/speckits/plan.md
  • .claude/commands/speckits/specify.md
  • .claude/commands/speckits/tasks.md
  • .claude/commands/speckits/taskstoissues.md
  • .claude/skills/frontend-fundamentals
  • .claude/skills/remotion-best-practices
  • .claude/skills/vercel-composition-patterns
  • .claude/skills/vercel-react-best-practices
  • .codex/prompts/analyze.md
  • .codex/prompts/checklist.md
  • .codex/prompts/clarify.md
  • .codex/prompts/implement.md
  • .codex/prompts/plan.md
  • .codex/prompts/specify.md
  • .codex/prompts/tasks.md
  • .specify/memory/constitution.md
  • .specify/scripts/bash/check-prerequisites.sh
  • .specify/scripts/bash/common.sh
  • .specify/scripts/bash/create-new-feature.sh
  • .specify/scripts/bash/setup-plan.sh
  • .specify/scripts/bash/update-agent-context.sh
  • .specify/templates/agent-file-template.md
  • .specify/templates/checklist-template.md
  • .specify/templates/plan-template.md
  • .specify/templates/spec-template.md
  • .specify/templates/tasks-template.md
  • AGENTS.md
  • eslint.config.js
  • skills-lock.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/#438

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 1, 2026

🚀 Preview 배포 완료!

환경 URL
Preview 열기
API Dev 환경

PR이 닫히면 자동으로 정리됩니다.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the 'Speckits' workflow, a comprehensive framework for specification-driven development, and adds several AI agent skills covering frontend fundamentals, Remotion best practices, and React performance patterns. The review feedback identifies multiple violations of the project's 'Constitution' regarding component declaration styles within the example code. Additionally, a bug in the shell escaping logic for agent context updates was flagged, along with a recommendation to use more robust methods for handling PR bodies in shell commands to prevent execution errors.

Comment on lines +14 to +20
const Title: React.FC<{children: React.ReactNode}> = ({children}) => (
<div style={{textAlign: 'center', marginBottom: 40}}>
<div style={{color: COLOR_TEXT, fontSize: 48, fontWeight: 600}}>
{children}
</div>
</div>
);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

프로젝트 헌법(.specify/memory/constitution.md 33행)의 '컴포넌트 정의 시 함수 선언(function declaration) 사용' 규칙을 준수해야 합니다. AI 에이전트가 프로젝트 컨벤션에 맞는 코드를 생성할 수 있도록 예제 코드를 수정하는 것이 좋습니다.

function Title({children}: {children: React.ReactNode}) {
	return (
		<div style={{textAlign: 'center', marginBottom: 40}}>
			<div style={{color: COLOR_TEXT, fontSize: 48, fontWeight: 600}}>
				{children}
			</div>
		</div>
	);
}

Comment on lines +22 to +25
const YAxis: React.FC<{steps: number[]; height: number}> = ({
steps,
height,
}) => (
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

이 컴포넌트도 프로젝트 헌법의 함수 선언 규칙을 따르도록 수정이 필요합니다. 파일 내의 다른 컴포넌트들(Bar, XAxis)도 동일하게 수정해 주세요.

function YAxis({
	steps,
	height,
}: {
	steps: number[];
	height: number;
}) {

</div>
);

export const MyAnimation = () => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

프로젝트 헌법의 컴포넌트 작성 규칙에 따라 화살표 함수 대신 export default function 형식을 사용해야 합니다.

Suggested change
export const MyAnimation = () => {
export default function MyAnimation() {

Comment on lines +52 to +56
const Cursor: React.FC<{
frame: number;
blinkFrames: number;
symbol?: string;
}> = ({frame, blinkFrames, symbol = '\u258C'}) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

프로젝트 헌법의 컴포넌트 작성 규칙(함수 선언 사용)을 준수하도록 수정이 필요합니다.

function Cursor({
	frame,
	blinkFrames,
	symbol = '\u258C',
}: {
	frame: number;
	blinkFrames: number;
	symbol?: string;
}) {

return <span style={{opacity}}>{symbol}</span>;
};

export const MyAnimation = () => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

프로젝트 헌법의 컴포넌트 작성 규칙에 따라 export default function 형식을 사용해야 합니다.

Suggested change
export const MyAnimation = () => {
export default function MyAnimation() {

Comment on lines +305 to +307
local escaped_lang=$(printf '%s\n' "$NEW_LANG" | sed 's/[\[\.*^$()+{}|]/\\&/g')
local escaped_framework=$(printf '%s\n' "$NEW_FRAMEWORK" | sed 's/[\[\.*^$()+{}|]/\\&/g')
local escaped_branch=$(printf '%s\n' "$CURRENT_BRANCH" | sed 's/[\[\.*^$()+{}|]/\\&/g')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

현재 이스케이프 로직이 정규표현식 기준으로 되어 있어, sed 치환 결과물에 불필요한 역슬래시가 포함되는 문제가 발생합니다(예: Node.js -> Node\.js). 치환 문자열(replacement string)에서는 구분자(|), &, \만 이스케이프하면 됩니다.

Suggested change
local escaped_lang=$(printf '%s\n' "$NEW_LANG" | sed 's/[\[\.*^$()+{}|]/\\&/g')
local escaped_framework=$(printf '%s\n' "$NEW_FRAMEWORK" | sed 's/[\[\.*^$()+{}|]/\\&/g')
local escaped_branch=$(printf '%s\n' "$CURRENT_BRANCH" | sed 's/[\[\.*^$()+{}|]/\\&/g')
local escaped_lang=$(printf '%s\n' "$NEW_LANG" | sed 's/[\\&|]/\\&/g')
local escaped_framework=$(printf '%s\n' "$NEW_FRAMEWORK" | sed 's/[\\&|]/\\&/g')
local escaped_branch=$(printf '%s\n' "$CURRENT_BRANCH" | sed 's/[\\&|]/\\&/g')


6. Push current branch to remote if not already pushed.

7. Create PR: `gh pr create --base develop --title "{title}" --body "{body}"` using heredoc for multi-line body.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

PR 본문({body})에 특수문자나 따옴표가 포함될 경우 쉘 명령어가 깨질 수 있습니다. 가이드에 언급된 heredoc을 실제 명령어 예시에도 반영하거나, --body-file 옵션을 사용하는 것이 더 안전합니다.

.agents/, .claude/, .agent/, .codex/ 내 파일이 ESLint 검사 대상에
포함되어 발생하던 에러를 ignores 추가로 해결한다.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- 컴포넌트 작성 시 화살표 함수 대신 함수 선언 방식으로 변경 (프로젝트 헌법 준수)
- sed 치환 문자열 이스케이프 로직 수정 (Node.js → Node\.js 오류 방지)
- pr-develop 워크플로우에 heredoc 사용 예시 명확화

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@jaeml06 jaeml06 requested review from i-meant-to-be and useon April 1, 2026 10:49
@jaeml06 jaeml06 self-assigned this Apr 1, 2026
@jaeml06 jaeml06 added the docs 문서 관련 작업 label Apr 1, 2026
@jaeml06 jaeml06 changed the title docs/#438 AI를 이용한 개발을 위한 설정 [DOCS] AI를 이용한 개발을 위한 설정 Apr 1, 2026
feat으로 고정되어 있던 이슈/브랜치 타입을 작업 종류에 따라
선택 가능하도록 변경 (feat/fix/design/docs/refactor/chore 등)

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@jaeml06 jaeml06 deployed to PREVIEW_ENV April 4, 2026 09:59 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs 문서 관련 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DOCS] AI를 이용한 개발을 위한 설정

1 participant