LLM이 포스터를 생성·수정하고, 브라우저에서 시각화하며, PNG로 내보낼 수 있는 오픈 텍스트 포맷과 렌더러.
posterscript/
├── docs/
│ └── SPEC.md # 언어 스펙 (source of truth)
├── packages/
│ ├── parser/ # .poster 파싱 → AST (TypeScript, zero deps)
│ ├── renderer/ # AST → 브라우저 렌더링 (Vanilla JS)
│ └── cli/ # CLI 도구
├── playground/ # 웹 데모 (Vite + Vanilla JS)
├── examples/ # 예시 .poster 파일들
├── CLAUDE.md
└── package.json # pnpm workspace
- LLM이
content만 수정 —@editable블록의 content 값만 바꾸고, 레이아웃/스타일은 건드리지 않음 - 결정론적 렌더링 — 같은 .poster 파일 = 항상 같은 결과
- 단순한 스펙 — AI가 프롬프트 하나로 즉시 사용 가능한 수준의 단순함 유지
- Zero-dep 파서 — @posterscript/parser는 외부 의존성 없음
- 패키지 매니저: pnpm workspaces
- 언어: TypeScript (strict)
- 렌더러: Vanilla JS (프레임워크 없음)
- 플레이그라운드: Vite + Vanilla JS
- 테스트: Vitest
- 빌드: tsup
pnpm install # 의존성 설치
pnpm dev # playground 개발 서버
pnpm build # 전체 빌드
pnpm test # 전체 테스트
pnpm test:parser # parser만 테스트- ES modules (import/export), CommonJS 금지
- Named exports 선호, default export 최소화
- 2스페이스 들여쓰기
- 타입 명시 (any 금지)
- 에러는 throw 대신 Result 타입 반환 (파서에서)
packages/parser— 파서 + 타입 + 테스트packages/renderer— 렌더러 (단일 HTML 파일로 먼저)playground— 에디터 + 미리보기 연결packages/cli— CLI 마지막
- 언어 스펙: @docs/SPEC.md
- 예시 파일들: @examples/