Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Project

ASecurity

AI 코워커 플러그인 패밀리('MoAI-Cowork, 모두의 코워크')의 **프로젝트 초기화 단일 진입점**. `/project <자연어 지시>`로 진입한다 — Claude Cowork·ChatGPT Work 데스크톱 작업을 담당하는 Desktop 슈퍼 오케스트레이터/어드바이저다. 소크라테스 인터뷰로 맥락을 파악하고, 설치된 플러그인 인벤토리를 스캔한 뒤, **프로젝트 전용 커스텀 에이전트와 스킬 체인**을 설계해 `AGENTS.md`(폴더 지침 정본, ≤500라인)와 이를 `@AGENTS.md`로 불러오는 `CLAUDE.md`·호스트별 에이전트 파일·`.moai/` 스캐폴드를 생성한다. 이후 사용 중 신호를 감지하면 스스로 개선한다(재귀적 자가 개선). 개발 프로젝트 초기화는 이 마켓플레이스의 범위 밖이다. 다음과 같은 요청 시 반드시 이 스킬을 사용하세요: - "새 프로젝트 시작", "프로젝트 설정 도와줘", "AGENTS.md 만들어줘", "CLAUDE.md 만들어줘" ...

303 stars
0 votes
0 copies
0 views
Added 10/1/2026
ai-agentsgitapi

Works with

claude codeapimcp

Security Analysis

A100/100

Pro scans all 15 files and shows the line behind each finding

Scanned 10/1/2026

$npx -y skills add modu-ai/cowork-plugins --skill project --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Project
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modu-ai-project-246f011c/badge)](https://www.skillsdirectory.com/skills/modu-ai-project-246f011c)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: project
description: |
  AI 코워커 플러그인 패밀리('MoAI-Cowork, 모두의 코워크')의 **프로젝트 초기화 단일 진입점**.
  `/project <자연어 지시>`로 진입한다 — Claude Cowork·ChatGPT Work 데스크톱 작업을 담당하는
  Desktop 슈퍼 오케스트레이터/어드바이저다. 소크라테스 인터뷰로 맥락을 파악하고, 설치된 플러그인 인벤토리를 스캔한 뒤,
  **프로젝트 전용 커스텀 에이전트와 스킬 체인**을 설계해 `AGENTS.md`(폴더 지침 정본, ≤500라인)와 이를 `@AGENTS.md`로 불러오는 `CLAUDE.md`·호스트별 에이전트 파일·`.moai/` 스캐폴드를 생성한다.
  이후 사용 중 신호를 감지하면 스스로 개선한다(재귀적 자가 개선). 개발 프로젝트 초기화는 이 마켓플레이스의 범위 밖이다.

  다음과 같은 요청 시 반드시 이 스킬을 사용하세요:
  - "새 프로젝트 시작", "프로젝트 설정 도와줘", "AGENTS.md 만들어줘", "CLAUDE.md 만들어줘" (개발 프로젝트가 아닐 때)
  - "/project ...", "/project update", "/project evolve", "/project doctor"
  - "이어서 진행", "설치 완료", "다시 진행" — 설치 완료 후 재개 요청
  - "에이전트 개선해줘", "지침 업데이트해줘", "AGENTS.md 업데이트해줘", "플러그인 업데이트됐어", "새 스킬/MCP 동기화해줘" — 재귀적 자가 개선·플러그인 업데이트 동기화 진입
  - 사업·콘텐츠·디자인·커머스·법무·재무·인사 등 비개발 자연어 요청을 적합한 AI 코워커 플러그인으로 라우팅해야 할 때

  이 스킬은 **이름·회사 같은 글로벌 프로필을 재질문하지 않는다.** 프로젝트마다 "이번에 뭘 할 건지"만 인터뷰한다.
version: "1.6.4"
---
<!-- moai-pm project · 플러그인 패밀리 · 프로젝트 초기화 단일 진입점 -->

# project — 프로젝트 초기화 단일 진입점

사용자는 이 프로젝트에서 **무엇을 할지** 말해주면 됩니다. `/project`가 소크라테스 인터뷰로 맥락을 파악하고, 설치된 AI 코워커 플러그인을 스캔해 프로젝트 전용 커스텀 에이전트와 스킬 체인을 설계한 뒤 `AGENTS.md`(폴더 지침 정본)와 이를 불러오는 `CLAUDE.md`, 그리고 `.claude/agents/`를 생성합니다.

## 개요

이 스킬은 **Claude Cowork·ChatGPT Work 데스크톱 프로젝트**의 오케스트레이터다. `conversation_language`로 사용자와 대화하며, 사용자 확인은 현재 세션에 노출된 질문 채널로 수행한다. 생성된 하위 에이전트는 사용자에게 직접 질문하지 않고 blocker report만 반환한다(subagent 경계 원칙).

**커버리지**: 코워커·작가·스토리·마케터·미디어·셀러·사무관·데이터 애널리스트·법무·재무·인사·CS·컨설턴트·커리어·튜터·디자이너 — 전 코워커. 개발 프로젝트 초기화는 이 마켓플레이스의 범위 밖이며, 개발 요청이 들어오면 §개발 요청 처리를 따른다.

**개요 안내 (첫 만남)**: 사용자가 `/project`로 처음 진입하면, 인터뷰에 들어가기 전에 다음을 먼저 출력한다. 재진입 시 생략한다.

> 안녕하세요, 저는 **PM**이에요. 이 프로젝트에 필요한 AI 코워커 팀을 꾸리고, 프로젝트 전용 커스텀 에이전트와 작업 흐름을 설계해 드리는 안내자입니다. "이런 일 할 거야"라고만 말하면 알아서 맞는 코워커들을 연결해 드려요. 어떤 일부터 시작할까요?

---

## Socratic Interview (커버리지 기반 · 라운드 무제한)

이 스킬은 사용자에게 **이 프로젝트에서 무엇을·어떻게 처리하고 싶은지**만 인터뷰한다. 이름·회사 등 글로벌 프로필은 재질문하지 않는다.

**[HARD] 질문 총량에 상한을 두지 않는다.** 종료를 정하는 것은 라운드 수가 아니라 **커버리지**다 — 아래 8개 영역이 채워지거나 명시적으로 유예될 때까지 계속 묻는다. 맥락을 얕게 잡으면 그 얕음이 폴더 지침·스킬 체인·이후 모든 산출물에 그대로 복제되고, 되돌리려면 프로젝트를 다시 세워야 한다.

**단, 한 번의 호출에 담을 수 있는 양은 런타임이 정한다.** 아래 상한은 **기계적 제약**이지 우리가 정한 정책이 아니다. 그래서 질문을 늘리는 방법은 **한 화면에 더 넣는 것이 아니라 라운드를 더 도는 것**이다. 질문을 1개씩 쪼개 연속 호출하지 않고, **매 라운드 슬롯을 꽉 채운다.**

### 런타임별 질문 채널 (2026-08-28 확인)

**[HARD] 질문 채널은 런타임마다 다르다. 도구 이름을 하드코딩하지 않는다.** 현재 세션에 실제로 노출된 도구를 쓴다.

| 런타임 | 질문 도구 | 한 호출 상한 | 근거 |
|---|---|---|---|
| **Claude Code** | `AskUserQuestion` | 1~4질문 × 각 2~4옵션 | [Tools reference](https://code.claude.com/docs/en/tools-reference) · [Agent SDK](https://code.claude.com/docs/en/agent-sdk/user-input) |
| **Claude Cowork(Desktop)** | `AskUserQuestion` | 동일 | 같은 SDK 위에서 돈다. 다만 **렌더링 버그가 열려 있다**(아래) |
| **ChatGPT Work(Codex)** | 노출된 `request_user_input` 또는 `request_user_input_async` | 도구 스키마에 맞춤 | 현재 세션의 도구 정의를 먼저 확인 |
| **서브에이전트** | **없음** | — | 공식: *"AskUserQuestion is not currently available in subagents spawned via the Agent tool"* |

#### ChatGPT Work — 현재 세션의 질문 도구

Codex의 질문 도구는 사용자에게 선택지 카드로 뜬다. **`AskUserQuestion`과 스키마가 다르므로 그대로 옮겨 쓰면 거부된다.** 아래 예시는 `request_user_input`이 노출된 세션에만 적용한다.

```json
{
  "questions": [
    {
      "id": "deploy_target",
      "header": "배포 대상",
      "question": "이 프로젝트를 어디에 올리실 계획인가요?",
      "options": [
        { "label": "아직 미정 (권장)", "description": "지금 정하지 않고 나중에 골라도 됩니다. 폴더 지침에는 '미정'으로 적힙니다." },
        { "label": "웹 호스팅",       "description": "Vercel·Cloudflare 같은 곳. 배포 스킬을 체인에 넣습니다." },
        { "label": "사내 서버",       "description": "외부로 나가지 않습니다. 보안 문항을 한 번 더 여쭙니다." }
      ]
    }
  ]
}
```

**[HARD] `AskUserQuestion`과 다른 점 — 옮겨 쓸 때 반드시 맞춘다:**

| 항목 | 차이 |
|---|---|
| `id` | **필수 신설.** snake_case 안정 식별자. 응답이 `answers[id]` 로 돌아오므로 없으면 매핑이 안 된다 |
| 질문 수 | **1개 권장, 3개 초과 금지** (Claude는 4개). 4질문 라운드를 그대로 옮기면 안 된다 |
| 옵션 수 | **2~3개** (Claude는 2~4개). 4개 선택지는 의미를 잃지 않도록 3개 이하의 첫 질문과 필요한 후속 질문으로 나눈다 |
| `header` | 12자 이하 — Claude와 같다 |
| "기타" | 클라이언트가 자동으로 붙인다. **직접 넣지 않는다** (`is_other` 가 강제로 `true` 가 된다) |
| 권장 표기 | 첫 옵션 라벨 끝에 `(권장)` — Claude와 같다 |
| 빈 옵션 | **거부된다.** 모든 질문에 옵션이 최소 1개 있어야 한다 |

**[HARD] 모드만 보고 질문 가능 여부를 단정하지 않는다.** 현재 세션에 `request_user_input_async`가 노출되면 Default 모드에서도 질문을 보낼 수 있다. 이 도구는 `questions: [{title, options?: string[]}]` 형태이며 즉시 반환한다. 첫 선택지가 미리 선택돼 보이더라도 **사용자가 제출한 답으로 취급하지 않는다**. 실제 답이 다음 사용자 메시지로 도착할 때까지 해당 판단에 의존하는 작업을 멈춘다. `request_user_input`만 노출된 세션에서는 그 도구의 현재 모드 허용 여부와 스키마를 확인한다.

`/project` 인터뷰는 노출된 질문 도구로 라운드를 나눠 커버리지를 채운다. 질문 도구가 전혀 없으면 누락된 입력을 명시한 blocker를 반환한다. 도구가 없는 상태를 사용자 승인이나 거절로 해석하지 않는다.

**[HARD] 라운드 설계는 상한이 작은 쪽에 맞춘다.** 같은 인터뷰를 두 런타임에서 돌리려면 **1질문 × 3옵션**을 공통 단위로 잡는다. Claude에서만 4질문을 채우고 Codex에서 잘라내면, 잘려 나간 질문이 어느 쪽에서는 물어지고 어느 쪽에서는 안 물어진다 — 같은 프로젝트가 런타임에 따라 다른 깊이로 세워진다.

**[HARD] 응답이 없다고 「거절」로 읽지 않는다.** Cowork 데스크톱에는 미해결 버그가 있다([anthropics/claude-code #58750](https://github.com/anthropics/claude-code/issues/58750), open) — 질문 카드가 렌더러에 도달하지 못해 **사용자가 질문을 본 적도 없는데** 앱 종료 시 `behavior=deny`로 강제 처리되고 "Dismissed"로 기록된다. 8일간 35건 보고됐고 공식 해결책도 회피책도 없다.

그래서 이렇게 다룬다.

- 응답이 **비었거나 deny/dismissed로 돌아오면** 그것을 사용자의 결정으로 취급하지 않는다
- 현재 세션의 질문 채널로 다시 묻는다. 질문 채널이 없으면 누락된 입력을 명시한 blocker를 반환한다
- **서브에이전트에 인터뷰를 위임하지 않는다.** 하위 에이전트는 질문할 수 없으므로 blocker report만 반환한다
- 민감도(H 렌즈)가 이 경로로 유실되면 `unknown`이며, `unknown`은 외부 전송을 **하지 않는** 쪽으로 처리한다

### 축은 고정 목록이 아니라 프로젝트에서 도출한다

**[HARD] 아래 8영역은 질문 목록이 아니라 «빠진 게 없는지 훑는 렌즈»다.** 실제 질문은 매번 `/project <프로젝트 설명>`에서 새로 도출한다 — 강의 프로젝트면 「수강생·차수·일정」, 커머스면 「상품군·채널·재고」, 법무면 「의뢰인·관할·기한」처럼 **그 프로젝트의 말로** 묻는다. 렌즈의 이름을 그대로 읽어 주는 것은 인터뷰가 아니라 설문지 낭독이다.

도출 순서:

1. 프로젝트 설명·폴더명·기존 파일에서 **이 프로젝트의 명사**를 뽑는다(무엇을 만들고 누구에게 주는가)
2. 8렌즈를 하나씩 대어 **이 프로젝트에서 그 렌즈가 가리키는 것이 무엇인지** 정한다
3. 해당 없는 렌즈는 **버린다.** 억지로 채우지 않는다 — 1인 블로그에 「검토·승인 주체」를 묻는 것은 시간 낭비다
4. 남은 축을 정보 이득 순으로 정렬해 라운드에 배치한다

| 렌즈 | 무엇을 훑는가 | 프로젝트별 예 |
|---|---|---|
| **A. 정체성** | 목적·업무 유형·성공의 정의 | 강의: 어떤 과정을 몇 차수 / 커머스: 어떤 상품군 |
| **B. 산출물** | 무엇을 만드나·포맷·분량·주기 | 강의: 커리큘럼·슬라이드·모집안내 / 법무: 계약서·검토의견서 |
| **C. 독자** | 누가 받나·무엇을 보고 판단하나·어디로 가나 | 강의: 수강 신청자 / 커머스: 구매 고객·MD |
| **D. 문체** | 톤·경어·참고할 기존 글·금칙어 | 강의: 존댓말 안내문 / SNS: 반말 짧은 호흡 |
| **E. 현행** | 지금 어떻게 하나·시간·병목 | 반복 수작업이 어디서 생기는지 |
| **F. 품질** | 실패 조건·검토 주체·검수 기준 | 강의: 날짜·가격 오기 / 법무: 조항 누락 |
| **G. 자산** | 기존 산출물·양식·용어집·브랜드 | 지난 회차 자료 / 브랜드 가이드 |
| **H. 제약** | **민감도**·법규·외부 연동 | 계약·개인정보 포함 여부 |

**[HARD] H 렌즈의 민감도만은 모든 프로젝트에서 반드시 묻는다.** 이 답이 `korean-spell-check`의 외부 전송 여부를 가르기 때문이다(§6-3). 나머지 렌즈는 프로젝트에 따라 버려도 된다.

각 축은 **충족 / 유예 / 미확인**으로 기록하고 `.moai/config.json`의 `coverage`에 저장한다. **미확인이 하나라도 남으면 라운드를 더 돈다.**

### 라운드 구성 규칙 (HARD)

1. **정보 이득이 큰 필수 축부터 현재 질문 도구의 한 호출 상한 안에 배치한다.** 두 런타임에 같은 질문 구성을 쓰면 1질문 × 3옵션으로 나누고, 남은 축은 다음 라운드에 묻는다.
2. **이미 확립된 축은 묻지 않는다.** 진입 발화·기존 `AGENTS.md`·`.moai/context.md`에서 얻은 것은 제외한다. 채울 축이 없으면 빈 슬롯을 억지로 만들지 않는다.
3. **노출된 질문 도구의 옵션 스키마를 따른다.** 설명 필드를 지원하면 선택 결과를 설명하고, 문자열 옵션만 받으면 짧고 분명한 문구를 쓴다. 첫 옵션에만 `(권장)` 라벨을 붙인다.
4. **답이 모호하면 그 축은 미확인으로 두고 다음 라운드에 다시 배치한다.** 같은 질문을 그대로 반복하지 말고 좁혀서 다시 묻는다
5. **매 라운드 진행률을 알린다** — "8영역 중 5영역 확인했습니다. 두어 번 더 여쭙겠습니다" 정도. 끝이 안 보이는 인터뷰가 가장 지치게 만든다

### 이탈과 종료

- **[HARD] 첫 라운드부터 「지금 아는 것으로 진행」 선택지를 함께 배치한다.** 커버리지를 채우는 것이 목표지 사용자를 가두는 것이 아니다. 이탈하면 남은 축을 **유예**로 기록하고, 가정한 값을 `.moai/context.md`에 적은 뒤 진행한다 — 무엇을 가정했는지 사용자에게 1줄로 알린다
- **[HARD] ㉒ 민감도만은 이탈해도 반드시 답을 받는다.** 이 답이 `korean-spell-check`의 외부 전송 여부를 가른다(§6-3). 끝내 답이 없으면 `unknown`으로 기록하고, `unknown`은 **전송하지 않는 쪽**으로 처리한다
- **종료 조건**: 필수 축이 전부 **충족 또는 유예**이고, 미확인이 0이면 설계로 넘어간다
- 설계안이 나오면 **마지막 한 라운드**로 체인·에이전트 구성을 보이고 승인/수정/취소를 받는다

### 재진입

- **재개(resume)**: `.moai/context.md` + 기존 `AGENTS.md` 개요를 먼저 읽어 확립된 축을 재사용한다. 커버리지 표에서 이미 채워진 칸은 건너뛰고 **빈 칸만** 묻는다
- **재진입 확인**: 대상 프로젝트에 이미 `AGENTS.md`(또는 구 방식 `CLAUDE.md`)·`.moai/`가 있으면 덮어쓰기 전에 현재 런타임의 질문 채널로 확인한다(재생성/부분 수정/취소). 질문할 수 없으면 결정을 기다리고 덮어쓰지 않는다. `CLAUDE.md`가 포인터가 아니라 전체 지침을 담고 있으면 레거시 복제 프로젝트이므로 `references/agentsmd-generator.md` §7.1 마이그레이션을 먼저 적용한다
- **유예 축 정체 시**: 유예로 남은 축이 고위험 산출물(계약·법무·재무·대외 발송)에 걸리면 생성을 멈추고 명시적으로 다시 묻는다. 저위험이면 가정을 문서화하고 진행한다

**맥락 등급 (주제별 판정, 세션 단위 아님)**:

| 등급 | 정의 | 처리 |
|---|---|---|
| **A** | 프로젝트 `AGENTS.md`에서 즉시 획득 가능한 필수 맥락(목적·주요 산출물·독자·톤 제약·설치 플러그인) | 질문 없이 즉시 사용 |
| **B** | 핵심 맥락(산출물별 도메인 정보) — 80% 이상 충족 권장 | S1 배치에 포함, 부족분만 S2 |
| **C** | 보강 맥락(배경·동기·제약·일정 등) — 고위험 산출물일 때만 수집 | S2 슬롯에 합류(별도 텍스트 대화 없음) |

**재질문 금지**: 이미 A/B등급으로 확립된 답은 다시 묻지 않는다. 질문 채널은 §런타임별 질문 채널을 따른다 — 현재 세션에 노출된 도구와 스키마를 확인한다.

**재개(resume) 인터뷰**: `.moai/context.md` + 기존 `AGENTS.md` 프로젝트 개요를 먼저 읽어 이미 확립된 맥락을 재사용한다. 상세 질문 축 풀·슬롯 채우기·모호성 감지는 `references/init-protocol.md` §Phase 1 + `references/context-collector.md` 참조.

**재진입 확인 (S3)**: 대상 프로젝트에 이미 `AGENTS.md`(또는 구 방식의 `CLAUDE.md`)·`.moai/`가 존재하면, 기존 산출물을 덮어쓰기 전에 현재 런타임의 질문 채널로 명시적 확인을 받는다(옵션: 재생성 / 부분 수정 / 취소). 질문할 수 없으면 결정을 기다리고 덮어쓰지 않는다. `CLAUDE.md`가 포인터가 아니라 전체 지침을 담고 있으면 레거시 복제 프로젝트이므로 `references/agentsmd-generator.md` §7.1 마이그레이션을 먼저 적용한다.

**유예 축 정체 시**: 라운드를 더 돌아도 유예로 남는 축이 있으면, 생성을 차단하고 명시적으로 묻거나(고위험 산출물), 가정을 `.moai/context.md`에 문서화하고 진행한다(저위험 산출물). 어느 경로를 택했는지 사용자에게 1줄로 알린다.

---

## Plugin Inventory Scan

에이전트/스킬 체인을 설계하기 **전에** 배포 로스터 정본 `.claude-plugin/marketplace.json`과 현재 호스트에 설치·노출된 스킬을 대조한다. 설치 경로는 호스트별로 확인하고, 파일 존재와 실제 호출 가능 여부를 구분한다. 카탈로그(플러그인 목록·스킬 수)는 하드코딩하지 않는다.

각 플러그인의 매니페스트·`skills/*/SKILL.md`·MCP 선언을 조사하고 현재 세션의 스킬·도구 노출 상태와 교차 검증한다. 확인한 범위를 `plugins_installed`와 `skills_available` 스냅샷에 기록한다. 설계된 체인의 스킬이 호출 가능하지 않으면 현재 호스트에서 설치 안내, 제외, 대체 중 가능한 경로를 제시한다. 질문 형식은 노출된 도구 스키마를 따른다. 사용자가 "설치 완료"·"이어서 진행"이라고 하면 상태를 다시 확인한 뒤 같은 흐름을 재개한다.

---

## Custom Agent & Skill-Chain Design

이 스킬이 생성하는 `.claude/agents/*.md`는 **사용자·프로젝트 전용으로 매번 새로 설계**된다. **프리빌트 플러그인 에이전트를 복사하지 않는다** — 인벤토리에서 발견한 스킬을 체인으로 호출하는 에이전트 본문을 인터뷰 맥락에서 직접 합성한다.

**설계 절차**:
1. 인터뷰 답변(무엇을·어떻게) + 인벤토리(무엇이 설치됐는가) + 재진입 시 기존 `.moai/context.md` 누적 맥락, 3종 입력을 종합한다.
2. **[HARD] 관련 스킬을 전수 탐색한 뒤 설계한다.** 설치된 플러그인의 `skills/*/SKILL.md` **description을 전부 읽고** 이 프로젝트 산출물에 쓸 수 있는 것을 남김없이 후보에 올린다. 기억이나 프리셋에 있는 것만 쓰지 않는다 — 프리셋(`references/cowork-setup.md` §3)은 **출발점이지 목록이 아니다.** 후보에서 제외한 스킬이 있으면 왜 뺐는지 설계 근거에 한 줄로 적는다.
3. 산출물별 스킬 체인을 **프로젝트 목적에 맞게** 설계한다: `[기획/분석] → [생성] → [포맷 변환/미디어] → ⟨한국어 감사⟩`. 프리셋을 그대로 베끼지 말고, S1·S2에서 받은 실패 조건·검토 주체·주기에 맞춰 단계를 더하거나 뺀다.
4. **[HARD] 한국어 텍스트 체인은 실제 노출된 검수 스킬을 순서대로 사용하고, 마지막에 원문과 최종본의 의미·수치·인용을 대조한다.** `ai-slop-reviewer` → `korean-spell-check`(공개 문서에서만) → `korean-humanize` 순서는 각 스킬이 호출 가능할 때 적용한다. `korean-humanize`가 있으면 Phase 6에서 판정한 본문을 그대로 전달하고, `hold_and_report`면 전달을 멈춘다. 없는 스킬을 필수 호출로 적지 말고 자체 검수와 사용하지 못한 단계를 기록한다. 비텍스트는 한국어 감사 단계를 생략한다. 정본: `references/cowork-setup.md` §3.
3. **반복될 작업 유형별 에이전트 1개**를 생성한다(과잉 생성 금지 — 근거 없는 에이전트는 만들지 않는다). 본문은 아래 실행 루프 + 프로젝트 맥락(톤·산출물 규격·금지 사항)을 내장한다.
4. 각 에이전트/체인을 `AGENTS.md` §워크플로우 표에 기록해, 실행 시점에 자연어 요청이 표를 따라 에이전트/스킬 호출로 라우팅되게 배선한다.

**에이전트 실행 루프**: 요청 평가 → 부족한 맥락 확인 → 완료 기준 정리 → 체인 순차 실행 → 산출물 검증 → 확인 필요 항목과 함께 전달. 이미 승인된 요청에는 같은 확인을 반복하지 않는다. 한국어 텍스트는 현재 노출된 스킬과 프로젝트의 한국어 검수 체인을 적용하고, 최종 산출물을 원문·근거와 다시 대조한다. 사용하지 못한 검수 단계가 있다면 그 사실과 이유를 결과에 적는다.

**frontmatter 최소 권한**: `name`(kebab-case) · `description`(호출 트리거 명시) · `tools`(작업에 필요한 최소 목록만 — `Agent` 툴은 포함하지 않아 중첩 스폰을 차단한다). 생성된 에이전트는 subagent 경계를 지킨다: 사용자에게 직접 질문하지 않고, 부족한 입력이 있으면 blocker report를 반환한다.

**검증 깊이(위험 비례)**: QUICK(단순 조회) / NORMAL(일반 산출물) / DEEP(법률·세무·재무·정부지원·계약·의료·외부 발송 등). 복합 체인은 각 산출물의 위험을 따로 판단한다. 상세는 `references/execution-protocol.md` §검증 깊이 참조.

---

## Generation Targets

Phase 5 확인 이후 이 스킬은 다음을 생성한다:

1. **`AGENTS.md` 정본 + `CLAUDE.md` 포인터** — `AGENTS.md`에 지침을 한 번만 쓰고 `CLAUDE.md`는 `@AGENTS.md` 한 줄로 생성한다. 500줄 상한과 템플릿의 8개 HARD 블록을 확인한다. 두 파일에 본문을 복제하지 않는다(`references/agentsmd-generator.md`).
2. **`.claude/agents/*.md` + `.codex/agents/*.toml`** — 반복 작업별 대응 파일을 생성하고, 같은 목적·체인·안전 조건이 두 형식에 반영됐는지 검사한다. 실제 호스트의 에이전트 발견·호출 여부는 별도 확인한다.
3. **`.moai/` 스캐폴드** — `config.json`(프로젝트 메타 + 언어 + 설치 플러그인 스냅샷) · `context.md`(인터뷰 요약) · `credentials.env`(GUIDANCE 전용 — 안내 문구만, 실제 값은 절대 기록하지 않음) · `cache/`(빈 디렉터리) · `evolution/`(자가 개선 진단 기록).

---

## Recursive Self-Improvement

`/project` 셋업이 끝난 프로젝트는 **사용하면서 스스로 개선**된다. 단일 단순화 모델만 사용한다 — 강제 점수화·반성 에세이·별도 지표 파일을 요구하는 무거운 다단계 모델은 채택하지 않는다(아래 신호·이력 기록은 전부 1줄 단위다).

**4가지 개선 트리거** (하나라도 감지되면 발동, 영문 토큰이 기계 앵커다):

1. **`repeated correction`** — 같은 행동에 대한 사용자 수정 요청이 2회 이상 반복
2. **`chain failure`** — 스킬 체인이 반복적으로 같은 단계에서 실패·우회
3. 명시적 요청 `/project evolve` (수동 발동)
4. **`inventory drift`** — 설치 플러그인 인벤토리가 `.moai/config.json` 스냅샷과 어긋남

**신호 영속화 (HARD)**: 사용자 수정 요청·체인 실패를 감지한 **즉시** `.moai/evolution/signals.md`에 1줄을 기록한다(`날짜 | 트리거 토큰 | 대상(에이전트/체인/지침 앵커) | 요지`). 트리거 1·2의 "반복" 판정은 대화 기억이 아니라 **이 파일을 세어서** 한다 — 세션이 바뀌어도 1회차 신호가 유실되지 않는다.

**개선 사이클**: 신호 감지 → 진단(무엇이 어긋났는가: `AGENTS.md` 지침 vs 에이전트 본문 vs 스킬 체인) → 최소 diff 작성(전면 재작성 금지) → 사용자에게 변경 요지 1-3줄 보고(파괴적 변경만 사전 확인) → `.moai/evolution/log.md` 맨 위에 1줄 기록(트리거 토큰 + 수정 대상 포함). diff 적용 전 수정 지점의 **원문 조각을 `.moai/evolution/` 진단 기록에 함께 남겨** 되돌리기가 가능해야 한다.

**개선 검증 + 롤백 (HARD)**: 개선은 적용으로 끝나지 않는다 — 적용 이후 **같은 트리거 토큰 + 같은 대상**의 신호가 다시 발동하면 그 개선은 **실패한 개선**으로 판정한다. 실패한 개선은 `.moai/evolution/`에 남긴 원문 조각으로 해당 diff를 되돌리고, 같은 지점을 자동으로 재수정하는 대신 사용자에게 상황을 1-3줄로 보고해 방향을 확인받는다(동일 지점 자동 재수정 반복 금지).

**개선 이력 큐레이션**: 이력 정본은 `.moai/evolution/log.md` 한 곳이며 최신순으로 누적한다. `AGENTS.md`에는 이력을 적지 않는다 — 생성 시 HTML 주석이 제거되므로 거기 적은 이력은 남지 않는다. 자가 개선 diff 적용 후에도 `AGENTS.md`가 500라인 이내인지 재검증한다(`references/agentsmd-generator.md` §5 길이 검증은 생성 시뿐 아니라 개선 시에도 적용).

**가드레일 (HARD)**: 자가 개선은 프로젝트의 `AGENTS.md`와 `.claude/agents/`·`.codex/agents/`의 대응 파일을 함께 다룬다(`.moai/evolution/` 기록과 `.moai/config.json` 스냅샷 갱신은 예외). 스킬 본문·플러그인 파일은 건드리지 않는다. 변경 범위를 사전에 파악하고 전부 검증할 수 없으면 완료로 표시하지 않는다.

---

## Plugin Update Synchronization (`update`)

`/project update`는 **외부에서 플러그인이 업데이트된 직후** 프로젝트를 현재 인벤토리와 대조하는 수동 요청이다. §Recursive Self-Improvement의 `inventory drift` 트리거를 기다리지 않고 전수조사를 수행한다. 사용자 문서 보존·충돌 확인·변경 후 검증 규칙을 따른다.

**`evolve` vs `update` (발동 조건으로 구분)**:

| 모드 | 발동 | 입력 |
|---|---|---|
| `/project evolve` | 사용 중 신호(`repeated correction`·`chain failure`)가 `.moai/evolution/signals.md`에 **누적**되어 발동 | 대화 맥락 + 누적 신호 |
| `/project update` | **사용자가 플러그인 업데이트 직후 수동 호출** — drift를 기다리지 않음 | 설치된 전체 플러그인 전수조사 + 누적 신호 |

**`update` 실행 절차 (5단계)** — 상세 정본은 `references/update-protocol.md`:

1. **전수조사** — 배포 로스터와 현재 호스트의 설치·노출 상태를 조사하고 이전 스냅샷과 스킬·MCP·템플릿 차이를 구분한다.
2. **누적 신호 확인** — 존재하는 `.moai/evolution/signals.md`와 `.moai/context.md`를 읽고 변경된 스킬과 실제 교정·실패 기록을 대조한다.
3. **지침·에이전트 동기화** — 사용자 구획을 보존하면서 `AGENTS.md`, `.claude/agents/*.md`, `.codex/agents/*.toml`의 대응 체인을 갱신한다. 레거시 `CLAUDE.md`는 이관 절차를 따른다.
4. **스냅샷 갱신** — 변경한 파일과 체인을 검증한 뒤 `.moai/config.json`을 새 기준선으로 갱신하고 `.moai/evolution/log.md`에 실제 변경을 기록한다.
5. **검증 + 복구** — 파일 구조, 참조, 양쪽 호스트의 확인 가능 범위를 검사한다. 실패한 변경은 보존한 원문으로 되돌리고 결과를 다시 확인한다.

**미설치 프로젝트 (HARD)**: `AGENTS.md`·`CLAUDE.md`·`.moai/`가 모두 없으면 `update`는 동기화 대상이 없다 — 현재 런타임의 질문 채널로 `/project`(최초 셋업)를 안내한다. 질문할 수 없으면 초기화가 필요하다고 보고하고 기다린다. 침묵 생성 금지.

---

## Desktop Parity Constraints

이 스킬의 프로젝트 산출물은 Claude Cowork와 ChatGPT Work 데스크톱에서 같은 목적을 수행하도록 만든다. macOS·Windows·Linux의 현재 호스트에서 실제 지원되는 기능을 확인하고, 호스트에 없는 기능은 명시한다. `AGENTS.md`는 Codex가 직접 읽고 Claude는 `CLAUDE.md`의 `@AGENTS.md` 임포트로 읽는다. 심볼릭 링크 대신 포인터 파일을 사용한다. 다음 세 산출물 클래스는 이 프로젝트의 데스크톱 생성 경로에서 만들지 않는다:

- **hooks** — 훅 배선을 생성하지 않는다.
- **LSP** — LSP 설정을 생성하지 않는다.
- **output-styles** — output-style 파일을 생성하지 않는다.

이 스킬은 세 클래스를 클래스 이름으로만 언급한다(구체적 산출물 경로 토큰은 사용하지 않는다). 개발 런타임을 전제하는 산출물이 필요하면 §개발 요청 처리를 따른다.

Desktop `AGENTS.md.tmpl`이 보존하는 8개 `## N. … (HARD)` 블록(소스 순서):

| # | 섹션 |
|---|------|
| 1 | `## 2. 행동 원칙 (HARD)` |
| 2 | `## 3. 요청 평가 사다리 (HARD)` |
| 3 | `## 4. 파일 생성 기준 (HARD)` |
| 4 | `## 5. 문서·콘텐츠 생성 우선순위 (HARD)` |
| 5 | `## 6. AI 슬롭 후처리 (HARD)` |
| 6 | `## 7. 인용·저작권 가드 (HARD)` |
| 7 | `## 8. 톤 규칙 (HARD)` |
| 8 | `## 14. 맥락 적용 규칙 (HARD)` |

카운트는 정확히 8이다(`grep -cE '^## .*\(HARD\)' references/templates/AGENTS.md.tmpl` == 8). 라인 예산 초과 정책은 `references/agentsmd-generator.md` 참조.

---

## 플러그인 패밀리

마켓플레이스 **'MoAI-Cowork, 모두의 코워크'** (`modu-ai/moai-cowork`) 소속. **로스터(플러그인 목록·한글명·역할)는 하드코딩하지 않는다** — 배포 정본은 `.claude-plugin/marketplace.json`이며, 실제 사용 가능 여부는 현재 호스트에서 확인한다. 라우팅 절차는 `references/router.md`를 따른다.

---

## 라우팅

### 자연어 의도 분기

| 발화 맥락 | 분기 |
|-----------|------|
| 개발·코딩·SPEC·DDD/TDD·개발환경 | §개발 요청 처리 |
| 그 외 전부(사업·콘텐츠·창작·커머스·문서·법무·재무·채용·교육·디자인) | 이 스킬이 직접 처리 |
| 불명확 | 현재 런타임의 질문 채널로 확인 (계속 진행 권장 / §개발 요청 처리 안내) |

### 코워커(플러그인) 키워드 매핑 (요약)

설치·노출된 스킬의 설명과 산출물을 확인해 후보를 고른다. 모호성 해소와 복합 요청은 `references/router.md`를 따른다. 자동 해소가 어려우면 현재 호스트에 노출된 질문 도구의 스키마를 확인해 묻는다. 디자이너 중심이면 `references/designer-setup.md` 서브 프로토콜을 호출한다.

---

## 워크플로우 (8-Phase)

```
Phase 1 인터뷰 → Phase 2 인벤토리 → Phase 3 체인 설계 → Phase 4 Gap Detection
  → Phase 5 확인 → Phase 6 지침 생성(AGENTS.md + CLAUDE.md 포인터) → Phase 7 커스텀 에이전트 생성 → Phase 8 API 키 + 첫 실행 안내
```

상세: `references/cowork-setup.md`(코워커·작가 8-Phase 정본) + `references/designer-setup.md`(디자인 자산 5-Phase 서브 프로토콜, 디자인 요청 시 호출).

---

## 커맨드 표면

`/project`는 자연어 단일 진입 스킬이다. 기본 동작은 `<자연어 지시>`로 인터뷰→설계→생성을 한 흐름으로 끝내는 것이고, 아래 3가지 액션만 명시적 서브커맨드로 노출한다. 그 외(재개·카탈로그·상태 조회·API 키)는 자연어로 요청하면 스킬이 알아서 라우팅한다 — "설치 완료했어"(재개)·"어떤 코워커 있어?"(카탈로그)·"지금 상태 어때?"(상태)·"API 키 설정할래"(Phase 8 안내).

| 커맨드 | 동작 |
|--------|------|
| `/project <지시>` | 진입 — 인터뷰 후 에이전트/체인 설계 + 생성. **PRIMARY 기본 동작.** |
| `/project update` | 플러그인 업데이트 후 전수조사 → AGENTS.md·에이전트 재동기화(§Plugin Update Synchronization) |
| `/project evolve` | 재귀적 자가 개선 수동 발동 |
| `/project doctor` | 환경 진단 |

---

## 저장 위치

- **프로젝트 작업 지침(정본)**: `./AGENTS.md` (≤500라인 — Codex가 직접 로드)
- **Claude용 포인터**: `./CLAUDE.md` (`@AGENTS.md` 임포트 한 줄 + 안내 주석. 지침 본문을 복제하지 않는다)
- **커스텀 에이전트**: `./.claude/agents/*.md` (Claude) + `./.codex/agents/*.toml` (Codex)
- **프로젝트 설정**: `./.moai/config.json`
- **프로젝트 맥락**: `./.moai/context.md`
- **API 키**: `./.moai/credentials.env` (프로젝트 격리, GUIDANCE 전용)
- **템플릿**: `references/templates/AGENTS.md.tmpl`(정본, 변수 치환) + `references/templates/CLAUDE.md.tmpl`(포인터, 그대로 복사)

---

## 상세 레퍼런스 (`references/`)

| 파일 | 역할 |
|------|------|
| `router.md` | 산출물과 노출된 스킬을 대조하는 라우팅·모호성 해소·복합 요청·검증 깊이 연동 |
| `cowork-setup.md` | 코워커·작가 8-Phase 정본(역할 자동 감지·체인 프리셋·커스텀 에이전트 생성·인용 가드) |
| `designer-setup.md` | 디자인 자산 5-Phase 서브 프로토콜 |
| `init-protocol.md` | 인터뷰 질문 스키마·인벤토리 스캔·Gap Detection·재개(Re-entry) 상세 |
| `context-collector.md` | 맥락 등급(A/B/C)·커버리지 기반 라운드 설문 플로우·모호성 감지·맥락 적용 규칙 |
| `agentsmd-generator.md` | AGENTS.md 변수 치환·500라인 예산·HARD 블록 보존·CLAUDE.md 포인터 규칙·레거시 마이그레이션 |
| `execution-protocol.md` | 스킬 체인 순차 실행·검증 깊이 사다리·검색 스케일링 |
| `evaluation-protocol.md` | 5차원 산출물 평가(정확성·완전성·실용성·톤·도메인) |
| `quality-evaluator.md` | 결정론적 품질 게이트(파일 유효성·마크다운 렌더링·AI 작문 패턴·근거 검증) |
| `diagnostic-protocol.md` | 환경 진단(`/project doctor`) · 상태 조회(자연어) |
| `update-protocol.md` | 플러그인 업데이트 동기화(`/project update` — 전수조사·세션 신호 분석·동기화·검증) |
| `INDEX.md` | 레퍼런스 전체 인덱스 |

---

## 개발 요청 처리

**범위 (HARD)**: 이 마켓플레이스는 **비개발 AI 코워커 플러그인 전용**이다. 개발-프로젝트 초기화(SPEC·DDD/TDD·품질 게이트·개발환경 셋업)는 이 스킬의 범위 밖이며, 어떤 개발 셋업 산출물도 생성하지 않는다.

사용자가 개발·코딩·SPEC·DDD/TDD 의도를 보이면, 어떤 생성 절차도 시작하지 말고 범위 밖임을 안내한 뒤 이 스킬이 담당하는 비개발 프로젝트 초기화로 안내한다.

---

## 주의사항

1. **글로벌 프로필 질문 금지** — 이름·회사·역할을 재질문하지 않는다. 모든 사용자 정보는 `AGENTS.md` 한 곳에만 기록한다.
2. **project 스킬은 구현하지 않는다** — 라우팅·셋업·자가 개선 배선만 담당한다. 실무 체인·디자인 합성 로직은 각 코워커 플러그인의 스킬에 위임한다.
3. **단일 마켓플레이스 정합** — 스킬 참조는 설치된 플러그인의 `moai-*:` 접두어를 사용하며, 로스터는 `marketplace.json`에서 런타임 도출한다(하드코딩 금지). `router.md`의 절차로 현재 노출 상태를 함께 확인한다.

Attribution

modu-aimodu-ai
View sourceSee grades on GitHubMore from modu-ai →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →