--- title: "가이드: 단일 스킬 실행" description: oh-my-agent의 단일 도메인 태스크에 대한 상세 가이드 — 사용 시점, 사전검증 체크리스트, 설명이 포함된 프롬프트 템플릿, 프론트엔드/백엔드/모바일/데이터베이스 태스크의 실제 예제, 예상 실행 흐름, 품질 게이트 체크리스트, 에스컬레이션 신호. --- # 단일 스킬 실행 단일 스킬 실행은 가장 빠른 방법입니다. 에이전트 하나, 도메인 하나, 집중할 태스크 하나. 오케스트레이션 오버헤드도, 멀티 에이전트 조율도 없습니다. 자연어 프롬프트를 입력하면 스킬이 자동으로 활성화됩니다. --- ## 단일 스킬을 사용할 때 다음 기준을 모두 충족할 때 사용합니다: - **하나의 도메인이 소유** — 태스크 전체가 프론트엔드, 백엔드, 모바일, 데이터베이스, 디자인, 인프라 또는 다른 단일 도메인에 속함 - **독립적** — 크로스 도메인 API 컨트랙트 변경이 없고, 프론트엔드 태스크를 위해 백엔드를 변경할 필요 없음 - **명확한 범위** — 출력물이 무엇인지 알고 있음 (컴포넌트, 엔드포인트, 스키마, 수정) - **조율 불필요** — 다른 에이전트가 전후로 실행될 필요 없음 **단일 스킬 태스크 예시:** - UI 컴포넌트 하나 구축 - API 엔드포인트 하나 추가 - 하나의 레이어에서 버그 하나 수정 - 데이터베이스 테이블 하나 설계 - Terraform 모듈 하나 작성 - i18n 문자열 세트 하나 번역 - 디자인 시스템 섹션 하나 생성 **다음의 경우 멀티 에이전트로 전환** (`/work` 또는 `/orchestrate`): - UI 작업에 새로운 API 컨트랙트가 필요한 경우 (프론트엔드 + 백엔드) - 하나의 수정이 여러 레이어에 걸쳐 연쇄되는 경우 (디버그 + 구현 에이전트) - 기능이 프론트엔드, 백엔드, 데이터베이스에 걸쳐 있는 경우 - 첫 번째 반복 후 범위가 하나의 도메인을 넘어 확장되는 경우 --- ## 사전검증 체크리스트 프롬프트를 작성하기 전에 다음 네 가지 질문에 답해 보세요 ([프롬프트 구조](/docs/core-concepts/skills)의 네 가지 요소에 해당합니다): | 요소 | 질문 | 중요한 이유 | |------|------|------------| | **목표** | 어떤 구체적인 산출물을 만들거나 변경해야 하는가? | 모호성 방지 — "버튼 추가" vs "유효성 검사가 있는 폼 추가" | | **컨텍스트** | 어떤 스택, 프레임워크, 규칙이 적용되는가? | 에이전트가 프로젝트 파일에서 감지하지만, 명시적인 것이 더 좋음 | | **제약 조건** | 어떤 규칙을 따라야 하는가? (스타일, 보안, 성능, 호환성) | 제약 조건 없이 에이전트는 프로젝트와 맞지 않을 수 있는 기본값을 사용함 | | **완료 기준** | 어떤 인수 기준을 확인할 것인가? | 에이전트에게 목표를 제공하고 사용자에게 검증 체크리스트를 제공함 | 프롬프트에 요소가 누락된 경우 에이전트는 다음 중 하나를 수행합니다: - **LOW 불확실성:** 기본값을 적용하고 가정을 나열 - **MEDIUM 불확실성:** 2-3개 옵션을 제시하고 가장 가능성 높은 것으로 진행 - **HIGH 불확실성:** 차단하고 질문 (코드를 작성하지 않음) --- ## 프롬프트 템플릿 ```text Build using . Constraints: . Acceptance criteria: 1) 2) 3) Add tests for: . ``` ### 템플릿 분석 | 부분 | 목적 | 예시 | |------|------|------| | `Build ` | 목표 — 무엇을 만들 것인가 | "Build a user registration form component" | | `using ` | 컨텍스트 — 기술 스택 | "using React + TypeScript + Tailwind CSS" | | `Constraints:` | 에이전트가 따라야 할 규칙 | "accessible labels, no external form libraries, client-side validation only" | | `Acceptance criteria:` | 완료 기준 — 검증 가능한 결과 | "1) email format validation 2) password strength indicator 3) submit disabled while invalid" | | `Add tests for:` | 테스트 요구사항 | "valid/invalid submit paths, edge cases for email validation" | --- ## 실제 예제 ### 프론트엔드: 로그인 폼 ```text Create a login form component in React + TypeScript + Tailwind CSS. Constraints: accessible labels, client-side validation with Zod, no external form library beyond @tanstack/react-form, shadcn/ui Button and Input components. Acceptance criteria: 1) Email validation with meaningful error messages 2) Password minimum 8 characters with feedback 3) Disabled submit button while form is invalid 4) Keyboard and screen-reader friendly (ARIA labels, focus management) 5) Loading state while submitting Add unit tests for: valid submission path, invalid email, short password, loading state. ``` **예상 실행 흐름:** 1. **스킬 활성화:** `oma-frontend` 활성화 (키워드: "form", "component", "Tailwind CSS", "React") 2. **난이도 평가:** 중간 (2-3개 파일, 유효성 검사 UX에 대한 일부 설계 결정) 3. **로드된 리소스:** - `execution-protocol.md` (항상) - `snippets.md` (폼 + Zod 패턴) - `component-template.tsx` (React 구조) 4. **CHARTER_CHECK 출력:** ``` CHARTER_CHECK: - Clarification level: LOW - Task domain: frontend - Must NOT do: backend API, database, mobile screens - Success criteria: form validation, accessibility, loading state, tests - Assumptions: Next.js App Router, @tanstack/react-form + Zod, shadcn/ui, FSD-lite architecture ``` 5. **구현:** - `src/features/auth/components/login-form.tsx` 생성 (`"use client"`를 포함한 Client Component) - `src/features/auth/utils/login-schema.ts` 생성 (Zod 스키마) - `src/features/auth/components/skeleton/login-form-skeleton.tsx` 생성 - shadcn/ui `