Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions .agents/skills/git/timo-commit/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@

## 스코프 판정 기준

| 스코프 | 기준 |
|--------|------|
| `web` | `apps/timo-web/**` 변경 |
| `ui` | `packages/ui/**` 변경 |
| `root` | 루트 설정 (`turbo.json`, `pnpm-workspace.yaml`, 루트 `package.json` 등) |
| `config` | `packages/eslint-config/**`, `packages/typescript-config/**` 변경 |
| 스코프 | 기준 |
| -------- | ----------------------------------------------------------------------- |
| `web` | `apps/timo-web/**` 변경 |
| `ui` | `packages/ui/**` 변경 |
| `root` | 루트 설정 (`turbo.json`, `pnpm-workspace.yaml`, 루트 `package.json` 등) |
| `config` | `packages/eslint-config/**`, `packages/typescript-config/**` 변경 |

---

Expand All @@ -81,18 +81,18 @@

### 타입 목록

| 타입 | 쓰는 경우 |
|------|----------|
| `feat` | 새로운 기능 추가 |
| `fix` | 버그 수정 |
| `refactor` | 동작 변경 없는 코드 정리 |
| `style` | 포맷·세미콜론 등 동작 무관 스타일 |
| `docs` | 문서 추가·수정·삭제 |
| `chore` | 빌드, 설정, 의존성 |
| `name` | 변수·파일·함수 이름 변경 |
| `file` | 파일 이동·삭제·구조 변경 |
| `comment` | 주석 추가·수정 |
| `remove` | 파일 삭제만 수행 |
| 타입 | 쓰는 경우 |
| ---------- | --------------------------------- |
| `feat` | 새로운 기능 추가 |
| `fix` | 버그 수정 |
| `refactor` | 동작 변경 없는 코드 정리 |
| `style` | 포맷·세미콜론 등 동작 무관 스타일 |
| `docs` | 문서 추가·수정·삭제 |
| `chore` | 빌드, 설정, 의존성 |
| `name` | 변수·파일·함수 이름 변경 |
| `file` | 파일 이동·삭제·구조 변경 |
| `comment` | 주석 추가·수정 |
| `remove` | 파일 삭제만 수행 |

### 메시지 규칙

Expand Down
34 changes: 17 additions & 17 deletions .agents/skills/git/timo-issue/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@

## 이슈 타입

| 타입 | 이슈 제목 PREFIX |
|------|-----------------|
| `feat` | `[FEAT]` |
| `fix` | `[FIX]` |
| `refactor` | `[REFACTOR]` |
| `ui` | `[UI]` |
| `style` | `[STYLE]` |
| `docs` | `[DOCS]` |
| `chore` | `[CHORE]` |
| `ci` | `[CI]` |
| `init` | `[INIT]` |
| `perf` | `[PERF]` |
| 타입 | 이슈 제목 PREFIX |
| ---------- | ---------------- |
| `feat` | `[FEAT]` |
| `fix` | `[FIX]` |
| `refactor` | `[REFACTOR]` |
| `ui` | `[UI]` |
| `style` | `[STYLE]` |
| `docs` | `[DOCS]` |
| `chore` | `[CHORE]` |
| `ci` | `[CI]` |
| `init` | `[INIT]` |
| `perf` | `[PERF]` |

PREFIX는 작업 성격에 따라 위 목록 외에도 자유롭게 지정할 수 있다.

Expand Down Expand Up @@ -95,11 +95,11 @@ PREFIX는 작업 성격에 따라 위 목록 외에도 자유롭게 지정할
{type}/{scope}/{이슈번호}-{kebab-case-영어설명}
```

| 스코프 | 기준 |
|--------|------|
| `web` | `apps/timo-web/**` 관련 작업 |
| `ui` | `packages/ui/**` 관련 작업 |
| `root` | 루트 설정 파일 관련 작업 |
| 스코프 | 기준 |
| -------- | ------------------------------------------------------------ |
| `web` | `apps/timo-web/**` 관련 작업 |
| `ui` | `packages/ui/**` 관련 작업 |
| `root` | 루트 설정 파일 관련 작업 |
| `config` | `packages/eslint-config/**`, `packages/typescript-config/**` |

- 설명은 **영어** kebab-case로 변환 (한국어 그대로 금지)
Expand Down
10 changes: 8 additions & 2 deletions .agents/skills/git/timo-pr/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,15 @@ close #5
기존에 어떤 구조였는지, 그 구조에서 어떤 문제가 발생했는지를 먼저 설명한다.

좋은 예:
```

```text
기존에는 클라이언트에서 로그인 상태를 확인한 뒤 query가 실행되는 구조라
첫 진입 시 서버에서 목록 데이터를 준비하기 어려웠습니다.
```

피해야 할 예:
```

```text
- 탐색 SSR 적용
- query 파일 분리
- build 성공
Expand All @@ -172,6 +174,7 @@ close #5
각 섹션 안에 **왜 그렇게 했는지 이유**를 자연스럽게 녹인다.

구조 변경이 있으면 "왜"를 반드시 적는다:

- server/client 런타임 경계를 나눈 이유
- 모듈 분리 기준 (shared/base/options/server 등)
- 중복을 허용하거나 공통화를 미룬 이유
Expand All @@ -181,6 +184,7 @@ close #5
선택한 접근과 고려한 대안을 적는다. interface나 경계를 짧은 코드 블록으로 보여줄 수 있다. 긴 구현 전체를 붙이지 않는다.

예시:

```markdown
## What is this PR? 🔍

Expand All @@ -205,13 +209,15 @@ close #5
reviewer가 중점적으로 봐야 할 지점을 좁혀 준다. 별도 항목 구조 없이 본문 안에 자연스럽게 녹여 쓴다.

적을 내용:

- 판단이 필요한 구조 선택
- 서버/클라이언트 import boundary가 올바른지
- 현재 구현이 기대는 정책 또는 전제
- 남은 리스크, 의도적으로 제외한 범위
- 임시 fixture, mock, TODO

예시:

```markdown
## To Reviewers

Expand Down
15 changes: 10 additions & 5 deletions .agents/skills/meta/timo-manage/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,32 @@
## 워크플로우

### Phase 1 — 작업 유형 파악

사용자 요청에서 작업 유형(추가 / 수정 / 폐기)을 판단하고, 대상 스킬명과 카테고리를 확인한다.

### Phase 2 — SKILL.md 작업

**추가**

1. `.agents/skills/{category}/{timo-name}/SKILL.md` 생성
2. 트리거·참조·워크플로우 섹션 작성 (`how-to-add-skill.md` 형식 준수)

**수정**

1. 해당 `SKILL.md` 를 읽고 변경 내용을 반영한다

**폐기**

1. `SKILL.md` 상단에 `> ⚠️ DEPRECATED — {대체 스킬명} 사용` 표시

### Phase 3 — 연관 문서 반영

| 작업 | `docs/agent/skill-index.md` | `AGENTS.md` |
|------|----------------------------|-------------|
| 추가 | 한 줄 요약 추가 | 트리거 → 파일 행 추가 |
| 수정 | 라우팅 변경 시 갱신 | 라우팅 변경 시 갱신 |
| 폐기 | 항목 제거 | 트리거 행 제거 |
| 작업 | `docs/agent/skill-index.md` | `AGENTS.md` |
| ---- | --------------------------- | --------------------- |
| 추가 | 한 줄 요약 추가 | 트리거 → 파일 행 추가 |
| 수정 | 라우팅 변경 시 갱신 | 라우팅 변경 시 갱신 |
| 폐기 | 항목 제거 | 트리거 행 제거 |

### Phase 4 — 완료 확인

변경된 파일 목록을 요약하고 `timo-commit` 스킬로 커밋할지 사용자에게 확인한다.
5 changes: 5 additions & 0 deletions .agents/skills/meta/timo-orchestrate/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
## 워크플로우

### Phase 1 — 요청 분해

사용자 요청을 읽고 필요한 스킬 목록과 실행 순서를 도출한다.

예시: "소셜 로그인 페이지 만들고 커밋까지"

```
1. timo-issue → 이슈 생성 및 브랜치명 제안
2. timo-page → 페이지 구현
Expand All @@ -26,11 +28,14 @@
```

### Phase 2 — 계획 확인

실행 순서와 각 스킬 역할을 사용자에게 보여주고 승인받는다.

### Phase 3 — 순차 실행

각 스킬을 순서대로 실행한다.
블로커 발생 시 중단하고 사용자 확인을 요청한다.

### Phase 4 — 완료 보고

전체 실행 결과를 요약한다.
14 changes: 9 additions & 5 deletions .agents/skills/quality/timo-refactor/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,27 @@
## 워크플로우

### Phase 1 — 필요성 판단

아래 중 하나라도 해당하면 리팩터링 권고한다:

- 함수 50줄 초과
- 파일 800줄 초과
- 동일 로직이 3곳 이상 중복
- 컴포넌트 계층 위반
- 하나의 컴포넌트가 너무 많은 관심사 처리

### Phase 2 — 범위 정의

리팩터링 대상을 명확히 하고, 기능 변경 없이 구조만 개선함을 명시한다.

### Phase 3 — 우선순위 제시

| 우선순위 | 기준 |
|----------|------|
| 높음 | 버그 유발 가능성 있는 구조 문제 |
| 중간 | 가독성·유지보수성 저하 |
| 낮음 | 스타일·네이밍 정리 |
| 우선순위 | 기준 |
| -------- | ------------------------------- |
| 높음 | 버그 유발 가능성 있는 구조 문제 |
| 중간 | 가독성·유지보수성 저하 |
| 낮음 | 스타일·네이밍 정리 |

### Phase 4 — 실행 계획 제안

변경할 파일, 추출할 함수/컴포넌트, 커밋 단위를 제안하고 승인 후 실행한다.
15 changes: 10 additions & 5 deletions .agents/skills/quality/timo-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,40 @@
## 워크플로우

### Phase 1 — 변경 파일 파악

`git diff develop...HEAD --name-only` 로 변경된 파일 목록 확인한다.

### Phase 2 — 타입 안전성

- `any` 사용 여부
- Props 타입 누락 여부
- 외부 데이터를 `unknown` 없이 직접 사용 여부
- exported 함수 반환 타입 명시 여부

### Phase 3 — 코드 스타일

- Arrow function + Named export 준수
- 이벤트 핸들러 `handle` 접두사
- 함수 50줄 이하, 파일 800줄 이하
- 절대 경로 import

### Phase 4 — 접근성

- 시맨틱 태그 사용 여부
- 텍스트 없는 버튼에 `aria-label` 여부
- `<input>` ↔ `<label>` 연결 여부
- 포커스 스타일 제거 여부

### Phase 5 — 아키텍처

- 컴포넌트 계층 위반 여부
- 서버 상태를 Zustand에 복사하는 패턴 여부
- `packages/ui` → `apps` 참조 등 모듈 경계 위반 여부

### Phase 6 — 결과 출력

| 레벨 | 의미 |
|------|------|
| **BLOCK** | 머지 전 반드시 수정 |
| **SUGGEST** | 권장 개선 사항 |
| **NOTE** | 참고용 |
| 레벨 | 의미 |
| ----------- | ------------------- |
| **BLOCK** | 머지 전 반드시 수정 |
| **SUGGEST** | 권장 개선 사항 |
| **NOTE** | 참고용 |
4 changes: 4 additions & 0 deletions .agents/skills/quality/timo-verify/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
## 워크플로우

### Phase 1 — 자동화 검증

순서대로 실행하고 실패 시 즉시 중단하여 원인을 리포트한다.

```bash
Expand All @@ -22,13 +23,16 @@ pnpm build # 빌드 성공
```

### Phase 2 — 수동 체크리스트

자동화로 잡히지 않는 항목을 확인한다:

- [ ] `any` 타입 미사용
- [ ] `console.log` 제거
- [ ] 커밋 메시지에 이슈 번호 포함
- [ ] 브랜치명 컨벤션 준수 (`prefix/scope/이슈번호-작업내용`)
- [ ] 접근성 속성 누락 없음

### Phase 3 — 결과 리포트

전체 통과 → `timo-pr` 스킬로 진행한다.
실패 항목 있으면 수정 후 재실행을 요청한다.
17 changes: 12 additions & 5 deletions .agents/skills/ui/timo-component/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,39 +13,46 @@
## 워크플로우

### Phase 1 — 범위 파악

- 여러 앱에서 공유할지, 앱 전역에서 공유할지, 특정 도메인에만 쓰일지 판단
- 순수 UI(props만 받음)인지, 클라이언트 로직(상태·쿼리) 포함인지 구분
- 파일 위치 결정:

| 유형 | 위치 |
|------|------|
| 패키지 공유 범용 UI | `packages/timo-design-system/src/` |
| 앱 전역 공유 UI | `apps/timo-web/components/` |
| 도메인 종속 순수 UI | `apps/timo-web/app/(domain)/_components/` |
| 유형 | 위치 |
| ------------------------------- | ----------------------------------------- |
| 패키지 공유 범용 UI | `packages/timo-design-system/src/` |
| 앱 전역 공유 UI | `apps/timo-web/components/` |
| 도메인 종속 순수 UI | `apps/timo-web/app/(domain)/_components/` |
| 도메인 종속 클라이언트 컨테이너 | `apps/timo-web/app/(domain)/_containers/` |

**`_components` vs `_containers` 구분 기준:**

- `_components/` — `'use client'` 없이도 동작 가능한 순수 표현 컴포넌트. props만 받고 외부 상태·사이드이펙트 없음
- `_containers/` — `'use client'` 필수. useQuery, zustand store, useState 등 외부 상태와 결합된 컨테이너

### Phase 2 — Props 설계

- `interface XxxProps` 로 props 타입 정의
- 필수/선택 props 구분, `any` 금지
- 콜백 props는 반환 타입까지 명시 (`onSelect: (id: string) => void`)

### Phase 3 — 마크업 구조 설계

- 시맨틱 태그 우선, 의미 없는 div 래퍼 지양
- 인터랙티브 요소는 올바른 태그 사용 (버튼 → `<button>`)
- 텍스트 없는 버튼·아이콘에 `aria-label` 부여
- Fragment `<>` 를 최상단 래퍼로 사용

### Phase 4 — 구현 및 스타일링

- Arrow function + Named export
- Tailwind 클래스로만 스타일링
- 이벤트 핸들러는 `handle` 접두사

### Phase 5 — 자가 검토

생성 후 아래를 확인한다:

- [ ] `any` 미사용
- [ ] 절대 경로 import
- [ ] 접근성 속성 누락 없음
Expand Down
5 changes: 5 additions & 0 deletions .agents/skills/ui/timo-figma/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,21 @@
## 워크플로우

### Phase 1 — 피그마 노드 읽기

피그마 MCP를 통해 대상 프레임/컴포넌트 스펙을 읽는다.

- 크기, 패딩, 색상, 타이포그래피, 간격

### Phase 2 — 디자인 토큰 매핑

읽어온 값을 `docs/design.md` 의 토큰에 매핑한다.
토큰에 없는 값이 있으면 사용자에게 토큰 추가 여부 확인한다.

### Phase 3 — 컴포넌트 생성

`timo-component` 워크플로우를 따라 컴포넌트 생성.
피그마 스펙을 Tailwind 클래스로 변환한다.

### Phase 4 — Story 생성

`timo-storybook` 워크플로우를 따라 Story 파일을 함께 생성한다.
Loading
Loading