사람이 다른 데서 만들던 것을 넘겨줬다. 기존 웹 서비스일 수도, 기획 문서 뭉치일 수도, 반쯤 만들다 만 앱일 수도 있다. **들여온 것을 그대로 옮기는 일이 아니다.** 미니앱은 제약이 다르다 — SSR 이 안 되고, TDS 를 써야 하고, 심사를 통과해야 한다. 옮길 수 있는 것과 없는 것을 갈라내는 것이 이 일의 핵심이다.
74 stars
0 votes
0 copies
2 views
Added September 5, 2026
ai-agentsbashnextjsapi
Works with
api
Security analysis
A92/100
mediumInstalls packages at runtime which could introduce malicious dependencies
Installs into .claude/skills of the current project.
Are you the author of From Intake?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/toktokhan-dev-from-intake-agent-company)
---
name: from-intake
summary: 다른 워크스페이스에서 넘겨받은 프로젝트를 읽고 명세로 옮긴다.
when: 사람이 `pnpm intake` 로 기존 프로젝트·기획서를 넘겨줬을 때.
---
# from-intake
사람이 다른 데서 만들던 것을 넘겨줬다. 기존 웹 서비스일 수도, 기획 문서 뭉치일 수도,
반쯤 만들다 만 앱일 수도 있다.
**들여온 것을 그대로 옮기는 일이 아니다.** 미니앱은 제약이 다르다 — SSR 이 안 되고,
TDS 를 써야 하고, 심사를 통과해야 한다. 옮길 수 있는 것과 없는 것을 갈라내는 것이
이 일의 핵심이다.
## 읽는 순서
```bash
ls inbox/
```
각 폴더의 `INVENTORY.md` **부터** 읽는다. 파일을 하나씩 열면 컨텍스트만 태운다.
목차가 알려주는 것:
| 항목 | 어떻게 쓰나 |
| --- | --- |
| **무엇으로 만들어진 것인가** | 스택. Next.js 였다면 SSR 을 걷어낼 각오를 한다 |
| **먼저 읽을 것** | README · 기획 문서. 의도가 여기 있다 |
| **구성** | 화면 단위를 짐작한다 (`pages/` · `screens/` · `routes/`) |
| **이미지** | 실제 화면 캡처가 있으면 기능을 역으로 읽어낼 수 있다 |
| **⚠ 비밀** | **열지 마라.** 명세에 키가 들어가면 저장소에 새어 나간다 |
## 규칙
1. **`inbox/` 안의 파일을 고치지 않는다.** 재료다.
2. **실행하지 않는다.** `npm install` 도 빌드도 하지 않는다. 남이 준 zip 은 읽을거리다.
3. **코드를 베껴 오지 않는다.** 당신은 명세를 쓴다. 구현은 `ui-builder` 가 한다.
4. **모르는 것을 지어내지 않는다.** 코드에서 읽히지 않는 의도는 열린 질문으로 남긴다.
## 옮길 수 있는지 갈라내기
명세를 쓰기 전에 이 표를 채워라. 여기서 걸러내지 않으면 `ui-builder` 가 심사에서
막히는 것을 만든다.
| 원본에 있던 것 | 미니앱에서 |
| --- | --- |
| SSR · 서버 미들웨어 · API Route | **불가.** CSR·SSG 만 허용된다. 서버가 필요하면 외부 API 로 뺀다 |
| 자체 디자인 시스템 · Tailwind 테마 | **TDS 로 갈아탄다.** 비게임 미니앱은 TDS 필수다 |
| 다크 모드 | **뺀다.** 라이트 모드만 지원한다 |
| 자체 로그인 | 토스 로그인으로 갈아탄다 |
| `eval` · 동적 import 로 코드 로딩 | **불가.** 바로 반려된다 |
| 웹소켓 `ws://` | `wss://` 로 |
| 100MB 넘는 에셋 | CDN 으로 뺀다 |
전체 목록은 `wiki/04-review-checklist.md`.
## 명세로 옮긴다
한 기능에 파일 하나다. 원본의 화면 수를 그대로 옮기지 마라 — **미니앱은 더 작아야
한다.** 웹에서 5화면짜리 흐름이 미니앱에서는 2화면이 되는 것이 정상이다.
`specs/_template.md` 를 복사해 쓰고, 반드시 넣는다:
- `## 수용 기준` — 없으면 preflight 가 error 로 잡는다
- `## 화면` — 화면마다 하나씩. `ui-builder` 가 이 단위로 병렬로 돈다
- **근거** — 어느 파일에서 읽었는지. `inbox/` 는 버전 관리되지 않아 나중에 사라진다.
경로만 적지 말고 **읽어낸 내용을 명세 안에 옮겨 적어라.**
```markdown
## 근거
`inbox/legacy-shop/docs/checkout.md` 에서 옮김 —
결제는 3단계(장바구니 → 배송지 → 확인)였고, 배송지는 이전 주문에서 자동 채움.
```
## 열린 질문
원본에서 읽히지 않는 것은 지어내지 말고 남긴다. **열린 질문이 있으면 구현으로
넘기지 않는다** — 이 에이전트의 하드 룰이다.
자주 걸리는 것: 서버가 하던 일을 어디로 뺄지 · 로그인을 어떻게 갈아탈지 ·
원본에 있던 화면 중 무엇을 버릴지.
## 출력
- 명세 파일 목록
- **옮기지 못한 것과 이유** (SSR · 다크 모드 · 자체 로그인 …)
- 열린 질문
- `asset-maker` 에 넘길 것이 있으면 알려준다 (기존 로고 · 브랜드 가이드 위치)