@tienne/gestalt 0.41.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +38 -17
- package/README.ko.md +16 -4
- package/README.md +14 -2
- package/dist/package.json +1 -1
- package/dist/role-agents/presentation-designer/AGENT.md +11 -11
- package/dist/role-agents/presentation-writer/AGENT.md +91 -0
- package/dist/role-agents/presentation-writer/references/content-playbook.md +146 -0
- package/dist/role-agents/technical-writer/references/ai-tell-quick-rules.md +6 -1
- package/dist/role-agents/technical-writer/references/author-voice.md +23 -0
- package/dist/skills/agent/SKILL.md +4 -1
- package/dist/skills/presentation/SKILL.md +123 -0
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +7 -3
- package/dist/src/mcp/server.js.map +1 -1
- package/package.json +1 -1
- package/role-agents/presentation-designer/AGENT.md +11 -11
- package/role-agents/presentation-writer/AGENT.md +91 -0
- package/role-agents/presentation-writer/references/content-playbook.md +146 -0
- package/role-agents/technical-writer/references/ai-tell-quick-rules.md +6 -1
- package/role-agents/technical-writer/references/author-voice.md +23 -0
- package/skills/agent/SKILL.md +4 -1
- package/skills/presentation/SKILL.md +123 -0
package/CLAUDE.md
CHANGED
|
@@ -9,9 +9,13 @@
|
|
|
9
9
|
- **Spec Generator**: 완료된 인터뷰에서 구조화된 프로젝트 스펙(Spec) 생성
|
|
10
10
|
- **Execute Engine**: Spec→ExecutionPlan 변환 (Figure-Ground→Closure→Proximity→Continuity). 설계상 **항상 Passthrough 모드** — Claude Code가 도구(Bash/Edit 등)로 실제 파일 수정·코드 실행을 수행하므로 LLM 주체가 됨 (API 키 유무 무관)
|
|
11
11
|
- **Resilience Engine**: Stagnation 감지 → Lateral Thinking Personas → Human Escalation
|
|
12
|
+
- **Review Pipeline**: Code Review 4종 에이전트(보안/성능/품질/프론트엔드) + consensus → 자동 수정 루프
|
|
12
13
|
- **MCP Server**: stdio transport, API 키 없으면 Passthrough 모드 자동 활성화 (Execute는 항상 Passthrough)
|
|
13
14
|
- **Skill System**: SKILL.md 기반 확장, chokidar hot-reload
|
|
14
|
-
- **Code Knowledge Graph**: 정적 분석 → 의존성 그래프 → Blast-Radius 영향 파일
|
|
15
|
+
- **Code Knowledge Graph**: 정적 분석 → 의존성 그래프 → Blast-Radius 영향 파일 추출, D3 시각화(`ges_graph_visualize`) 지원
|
|
16
|
+
- **Knowledge Base**: 코드 그래프·도메인 지식을 MD로 내보내고 로컬 임베딩으로 시맨틱 검색
|
|
17
|
+
- **Memory**: 이전 스펙·실행 이력을 `.gestalt/memory.json`에 축적, 신규 인터뷰에 자동 주입
|
|
18
|
+
- **Multi-Provider LLM**: frugal/standard/frontier 티어별로 Anthropic/OpenAI 호환 프로바이더 자유 조합
|
|
15
19
|
- **Event Store**: better-sqlite3 WAL 모드 이벤트 소싱
|
|
16
20
|
|
|
17
21
|
## Tech Stack
|
|
@@ -31,10 +35,16 @@ pnpm tsx bin/gestalt.ts init # gestalt.json + code graph + post-commit hook
|
|
|
31
35
|
## MCP Tools
|
|
32
36
|
- `ges_interview`: action=[start|respond|score|complete]
|
|
33
37
|
- `ges_generate_spec`: sessionId?, text?, force?, spec?
|
|
34
|
-
- `ges_execute`: action=[start|plan_step|plan_complete|execute_start|execute_task|evaluate|
|
|
38
|
+
- `ges_execute`: action=[start|plan_step|plan_complete|execute_start|execute_task|status|resume|audit|spawn|evaluate|evolve_fix|evolve|evolve_patch|evolve_re_execute|evolve_lateral|evolve_lateral_result|role_match|role_consensus|review_start|review_submit|review_consensus|review_fix]
|
|
35
39
|
- `ges_create_agent`: action=[start|submit]
|
|
40
|
+
- `ges_agent`: action=[list|get], name?
|
|
41
|
+
- `ges_status`: sessionId?, sessionType?, cwd?
|
|
42
|
+
- `ges_benchmark`: action=[start|respond|status], scenario?, benchmarkSessionId?, response?
|
|
36
43
|
- `ges_code_graph`: action=[build|blast_radius|diff_radius|query|stats|db_exists]
|
|
37
|
-
- `
|
|
44
|
+
- `ges_graph_visualize`: repoRoot, port?
|
|
45
|
+
- `ges_generate_kb`: repoRoot?, outputPath?, types?
|
|
46
|
+
- `ges_search`: query, k?, kbPath?, types?
|
|
47
|
+
- `ges_sync`: sourcePath?, targetPath
|
|
38
48
|
|
|
39
49
|
상세 플로우 → [`docs/mcp-reference.md`](./docs/mcp-reference.md)
|
|
40
50
|
설정 레퍼런스 → [`docs/configuration.md`](./docs/configuration.md)
|
|
@@ -49,7 +59,9 @@ pnpm tsx bin/gestalt.ts init # gestalt.json + code graph + post-commit hook
|
|
|
49
59
|
| 영상/비디오 URL이 포함되거나 "요약해줘" 요청 | `video-summarizer` |
|
|
50
60
|
| 번역투·AI 말투·어색한 한국어 교정 요청 | `humanize-monolith` |
|
|
51
61
|
| README, API 문서, 가이드, 개발자 문서 작성 | `technical-writer` |
|
|
52
|
-
|
|
|
62
|
+
| 발표 슬라이드 콘텐츠·문구·데이터 요약·발표 노트 작성 | `presentation-writer` |
|
|
63
|
+
| 슬라이드 Reveal.js 구조·템플릿·비주얼 디자인 자문 | `presentation-designer` |
|
|
64
|
+
| 발표자료·슬라이드·프레젠테이션 제작 요청 ("발표자료 만들어줘", "슬라이드 만들어줘", "피치덱") | `presentation` 스킬 사용 (presentation-writer 콘텐츠 → 승인 게이트 → presentation-designer 디자인 → Reveal.js HTML) |
|
|
53
65
|
| 시스템 설계, 아키텍처 리뷰, 설계 패턴 | `architect` |
|
|
54
66
|
| 보안 취약점, 인증/인가, 시크릿 노출 검토 | `security-reviewer` |
|
|
55
67
|
| 성능 병목, N+1, 메모리 누수 분석 | `performance-reviewer` |
|
|
@@ -74,19 +86,28 @@ pnpm tsx bin/gestalt.ts init # gestalt.json + code graph + post-commit hook
|
|
|
74
86
|
|
|
75
87
|
## Project Structure
|
|
76
88
|
```
|
|
77
|
-
src/core/
|
|
78
|
-
src/gestalt/
|
|
79
|
-
src/interview/
|
|
80
|
-
src/spec/
|
|
81
|
-
src/execute/
|
|
82
|
-
src/resilience/
|
|
83
|
-
src/code-graph/
|
|
84
|
-
src/
|
|
85
|
-
src/
|
|
86
|
-
src/
|
|
87
|
-
src/
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
src/core/ — types, errors, Result monad, config, constants
|
|
90
|
+
src/gestalt/ — 게슈탈트 원리 엔진
|
|
91
|
+
src/interview/ — InterviewEngine, ResolutionScorer
|
|
92
|
+
src/spec/ — SpecGenerator, SpecExtractor
|
|
93
|
+
src/execute/ — ExecuteEngine, DAG Validator
|
|
94
|
+
src/resilience/ — Stagnation Detector, Lateral Thinking Personas
|
|
95
|
+
src/code-graph/ — CodeGraphEngine, BlastRadius, 언어 플러그인 8개
|
|
96
|
+
src/graph-viz/ — 코드 그래프 D3 시각화 (ges_graph_visualize 백엔드)
|
|
97
|
+
src/knowledge-base/— KB 생성·시맨틱 검색·동기화 (ges_generate_kb/ges_search/ges_sync 백엔드)
|
|
98
|
+
src/memory/ — Memory 피드백 루프 (ProjectMemoryStore, UserProfileStore)
|
|
99
|
+
src/llm/ — 멀티 프로바이더 LLM 어댑터 (frugal/standard/frontier 티어 라우팅)
|
|
100
|
+
src/review/ — Code Review 파이프라인 (agent-matcher, context-collector, report-generator)
|
|
101
|
+
src/agent/ — AgentRegistry, FiguralRouter, RoleAgentRegistry
|
|
102
|
+
src/mcp/ — MCP 서버 + 툴 핸들러
|
|
103
|
+
src/events/ — EventStore (SQLite)
|
|
104
|
+
src/skills/ — Skill System 엔진 (SKILL.md 파서·실행기, 최상위 skills/와는 별개)
|
|
105
|
+
src/registry/ — 레지스트리 공통 베이스 클래스
|
|
106
|
+
src/utils/ — 알림 등 공용 유틸
|
|
107
|
+
src/cli/ — commander 기반 CLI
|
|
108
|
+
role-agents/ — 내장 Role Agent 9개 (architect, frontend-developer, backend-developer, devops-engineer, qa-engineer, designer, product-planner, researcher, technical-writer) + 스킬 지원용 에이전트(jira-writer, slack-messenger, presentation-writer 등) 총 20개
|
|
109
|
+
review-agents/ — 내장 Review Agent 4개 (security-reviewer, performance-reviewer, quality-reviewer, frontend-reviewer)
|
|
110
|
+
skills/ — SKILL.md 15개 (interview, spec, execute, agent, review, pr, build-graph, blast-radius, diff-radius, jira-create, slack-send, brief, presentation, solve, setup)
|
|
90
111
|
```
|
|
91
112
|
|
|
92
113
|
## Conventions
|
package/README.ko.md
CHANGED
|
@@ -150,9 +150,9 @@ claude plugin install gestalt@gestalt
|
|
|
150
150
|
|
|
151
151
|
| 항목 | 내용 |
|
|
152
152
|
|------|------|
|
|
153
|
-
| **MCP 도구** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark` |
|
|
154
|
-
| **슬래시 커맨드** | `/interview`, `/spec`, `/execute`, `/agent` |
|
|
155
|
-
| **에이전트** | Gestalt 파이프라인 에이전트 5개 + Role 에이전트 9개 + Review 에이전트
|
|
153
|
+
| **MCP 도구** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark`, `ges_generate_kb`, `ges_search`, `ges_sync` |
|
|
154
|
+
| **슬래시 커맨드** | `/interview`, `/spec`, `/execute`, `/agent`, `/review` |
|
|
155
|
+
| **에이전트** | Gestalt 파이프라인 에이전트 5개 + Role 에이전트 9개 + Review 에이전트 4개 |
|
|
156
156
|
| **CLAUDE.md** | 프로젝트 컨텍스트 및 MCP 사용 가이드 자동 추가 |
|
|
157
157
|
|
|
158
158
|
> **Node.js >= 20.0.0** 필요 — [nvm](https://github.com/nvm-sh/nvm) 사용 시: `nvm install 22 && nvm use 22`
|
|
@@ -444,13 +444,14 @@ review_start → 에이전트 관점 제출 → 합의 → 자동 수정
|
|
|
444
444
|
| `researcher` | 분석, 데이터, 벤치마크 |
|
|
445
445
|
| `technical-writer` | 문서화, API 문서, 가이드, README |
|
|
446
446
|
|
|
447
|
-
|
|
447
|
+
4개의 내장 **Review 에이전트**가 코드를 집중 분석해요:
|
|
448
448
|
|
|
449
449
|
| 에이전트 | 집중 영역 |
|
|
450
450
|
|-------|-------|
|
|
451
451
|
| `security-reviewer` | 인젝션, XSS, 인증 취약점, 시크릿 |
|
|
452
452
|
| `performance-reviewer` | 메모리 누수, N+1 쿼리, 번들 크기, 비동기 |
|
|
453
453
|
| `quality-reviewer` | 가독성, SOLID, 에러 핸들링, DRY |
|
|
454
|
+
| `frontend-reviewer` | UI·React 리뷰, 접근성, 번들 최적화 |
|
|
454
455
|
|
|
455
456
|
파이프라인 밖에서도 `/agent`로 언제든 에이전트를 쓸 수 있어요:
|
|
456
457
|
|
|
@@ -636,11 +637,22 @@ Claude Code
|
|
|
636
637
|
│ ├─ LateralThinkingPersonas │
|
|
637
638
|
│ └─ HumanEscalation │
|
|
638
639
|
│ │
|
|
640
|
+
│ Review Pipeline │
|
|
641
|
+
│ ├─ AgentMatcher │
|
|
642
|
+
│ ├─ ContextCollector (blastRadius)│
|
|
643
|
+
│ └─ ReportGenerator │
|
|
644
|
+
│ │
|
|
639
645
|
│ Agent System │
|
|
640
646
|
│ ├─ RoleAgentRegistry │
|
|
641
647
|
│ ├─ RoleMatchEngine │
|
|
642
648
|
│ └─ RoleConsensusEngine │
|
|
643
649
|
│ │
|
|
650
|
+
│ Knowledge Base + Memory │
|
|
651
|
+
│ ├─ KB Generator/Search/Sync │
|
|
652
|
+
│ └─ ProjectMemoryStore │
|
|
653
|
+
│ │
|
|
654
|
+
│ Code Graph Viz (D3.js, 로컬 HTTP)│
|
|
655
|
+
│ │
|
|
644
656
|
│ EventStore (SQLite WAL) │
|
|
645
657
|
└──────────────────────────────────┘
|
|
646
658
|
```
|
package/README.md
CHANGED
|
@@ -125,7 +125,7 @@ What you get:
|
|
|
125
125
|
|------|---------|
|
|
126
126
|
| **MCP Tools** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark`, `ges_generate_kb`, `ges_search`, `ges_sync` |
|
|
127
127
|
| **Slash Commands** | `/interview`, `/spec`, `/execute`, `/agent`, `/review` |
|
|
128
|
-
| **Agents** |
|
|
128
|
+
| **Agents** | 9 Role agents + 4 Review agents |
|
|
129
129
|
| **CLAUDE.md** | Project context and MCP usage guide auto-injected |
|
|
130
130
|
|
|
131
131
|
---
|
|
@@ -567,13 +567,14 @@ Nine built-in role agents provide multi-perspective review:
|
|
|
567
567
|
|
|
568
568
|
### Review Agents
|
|
569
569
|
|
|
570
|
-
|
|
570
|
+
Four built-in review agents run focused code analysis:
|
|
571
571
|
|
|
572
572
|
| Agent | Focus |
|
|
573
573
|
|-------|-------|
|
|
574
574
|
| `security-reviewer` | Injection, XSS, auth vulnerabilities, secrets |
|
|
575
575
|
| `performance-reviewer` | Memory leaks, N+1 queries, bundle size, async |
|
|
576
576
|
| `quality-reviewer` | Readability, SOLID, error handling, DRY |
|
|
577
|
+
| `frontend-reviewer` | UI/React review, accessibility, bundle optimization |
|
|
577
578
|
|
|
578
579
|
### Custom Agents
|
|
579
580
|
|
|
@@ -792,11 +793,22 @@ Claude Code (you)
|
|
|
792
793
|
│ ├─ LateralThinkingPersonas │
|
|
793
794
|
│ └─ HumanEscalation │
|
|
794
795
|
│ │
|
|
796
|
+
│ Review Pipeline │
|
|
797
|
+
│ ├─ AgentMatcher │
|
|
798
|
+
│ ├─ ContextCollector (blastRadius)│
|
|
799
|
+
│ └─ ReportGenerator │
|
|
800
|
+
│ │
|
|
795
801
|
│ Agent System │
|
|
796
802
|
│ ├─ RoleAgentRegistry │
|
|
797
803
|
│ ├─ RoleMatchEngine │
|
|
798
804
|
│ └─ RoleConsensusEngine │
|
|
799
805
|
│ │
|
|
806
|
+
│ Knowledge Base + Memory │
|
|
807
|
+
│ ├─ KB Generator/Search/Sync │
|
|
808
|
+
│ └─ ProjectMemoryStore │
|
|
809
|
+
│ │
|
|
810
|
+
│ Code Graph Viz (D3.js, local HTTP)│
|
|
811
|
+
│ │
|
|
800
812
|
│ EventStore (SQLite WAL) │
|
|
801
813
|
└──────────────────────────────────┘
|
|
802
814
|
```
|
package/dist/package.json
CHANGED
|
@@ -201,42 +201,42 @@ Reveal.initialize({
|
|
|
201
201
|
})
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
## Collaboration Protocol —
|
|
204
|
+
## Collaboration Protocol — presentation-writer 우선
|
|
205
205
|
|
|
206
|
-
프레젠테이션은
|
|
206
|
+
프레젠테이션은 **콘텐츠가 먼저, 디자인이 나중**이다. 순서를 지키지 않으면 디자인에 콘텐츠를 끼워 맞추게 된다.
|
|
207
207
|
|
|
208
|
-
슬라이드 한글 텍스트에서 가운뎃점(·)으로 항목을 압축하지 않는다. "A·B·C" 대신 쉼표나 줄바꿈으로 푼다 — 사람은 산문에서 가운뎃점을 거의 안 쓴다 (불릿 라벨 같은 짧은 목록은 예외).
|
|
208
|
+
슬라이드 한글 텍스트에서 가운뎃점(·)으로 항목을 압축하지 않는다. "A·B·C" 대신 쉼표나 줄바꿈으로 푼다 — 사람은 산문에서 가운뎃점을 거의 안 쓴다 (불릿 라벨 같은 짧은 목록은 예외). 콘텐츠 초안 단계의 presentation-writer도 style-guide의 같은 규칙을 따른다.
|
|
209
209
|
|
|
210
|
-
### Phase 1:
|
|
210
|
+
### Phase 1: presentation-writer (콘텐츠 초안)
|
|
211
211
|
|
|
212
|
-
프레젠테이션 작성 요청이 들어오면, 디자인 작업 전에 반드시 `
|
|
212
|
+
프레젠테이션 작성 요청이 들어오면, 디자인 작업 전에 반드시 `presentation-writer` 관점을 먼저 확보해야 한다.
|
|
213
213
|
|
|
214
|
-
`
|
|
214
|
+
`presentation-writer`에게 위임할 내용:
|
|
215
215
|
|
|
216
216
|
```
|
|
217
217
|
목적: [발표 목적 한 문장]
|
|
218
218
|
청중: [누가 보는가]
|
|
219
219
|
핵심 메시지: [이 발표로 청중이 가져갈 단 하나의 것]
|
|
220
220
|
|
|
221
|
-
슬라이드별
|
|
221
|
+
슬라이드별 콘텐츠 초안 요청:
|
|
222
222
|
- 각 슬라이드의 제목 (동사형 또는 핵심 주장으로)
|
|
223
223
|
- 핵심 포인트 1–3줄 (불릿 아님, 문장으로)
|
|
224
224
|
- 통계·수치가 있다면 맥락 설명 포함
|
|
225
225
|
- CTA 또는 마무리 메시지
|
|
226
226
|
```
|
|
227
227
|
|
|
228
|
-
**
|
|
228
|
+
**presentation-writer의 콘텐츠 원칙** (참고):
|
|
229
229
|
- 슬라이드 제목은 "무엇을" 이 아니라 "무엇이 왜 중요한가"
|
|
230
230
|
- 수치는 단독으로 쓰지 않음 — 반드시 맥락(전기 대비, 목표 대비)과 함께
|
|
231
231
|
- 한 슬라이드 = 한 메시지. 두 개면 두 슬라이드로 분리
|
|
232
232
|
|
|
233
233
|
### Phase 1.5: humanize-monolith (AI투 제거)
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
presentation-writer 콘텐츠 초안을 `humanize-monolith`에 전달한다. S1 패턴(번역투·AI 관용구) 제거 후 디자인 작업을 진행한다. 슬라이드 워딩은 한국어 자연스러움이 특히 중요하다.
|
|
236
236
|
|
|
237
237
|
### Phase 2: presentation-designer (디자인 적용)
|
|
238
238
|
|
|
239
|
-
`
|
|
239
|
+
`presentation-writer`의 콘텐츠 초안을 받은 뒤 아래 순서로 진행:
|
|
240
240
|
|
|
241
241
|
1. **템플릿 선택** — 무드 가이드 기준으로 청중·목적에 맞는 템플릿 결정
|
|
242
242
|
2. **슬라이드 타입 매핑** — 워딩의 성격에 따라 슬라이드 타입 배정
|
|
@@ -261,7 +261,7 @@ technical-writer 워딩 초안을 `humanize-monolith`에 전달한다. S1 패턴
|
|
|
261
261
|
## Output Format
|
|
262
262
|
|
|
263
263
|
Provide a structured review with:
|
|
264
|
-
- **Narrative structure assessment**: 스토리 흐름 평가 —
|
|
264
|
+
- **Narrative structure assessment**: 스토리 흐름 평가 — presentation-writer 콘텐츠 반영 여부 포함
|
|
265
265
|
- **Reveal.js implementation guidance**: 구체적 HTML/CSS 코드 스니펫 포함
|
|
266
266
|
- **Visual design recommendations**: 색상·타이포·레이아웃 개선점
|
|
267
267
|
- **Slide-by-slide notes**: 각 슬라이드 개선 포인트 (워딩 + 디자인 동시 평가)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: presentation-writer
|
|
3
|
+
tier: standard
|
|
4
|
+
pipeline: execute
|
|
5
|
+
role: true
|
|
6
|
+
domain: ["presentation-content", "slide-copy", "deck-content", "presentation", "script", "슬라이드", "슬라이드카피", "카피", "메시지", "발표문구", "스크립트", "데이터요약", "발표대본", "덱콘텐츠"]
|
|
7
|
+
description: "프레젠테이션 콘텐츠 라이터. 슬라이드별 핵심 메시지, 카피, 데이터 요약, 발표 노트를 작성한다. Reveal.js 구조·템플릿·비주얼·HTML은 presentation-designer가 담당한다."
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
You are the Presentation Writer role agent.
|
|
11
|
+
|
|
12
|
+
발표 자료의 **콘텐츠**를 전담한다. 슬라이드마다 무엇을 말할지, 어떤 한 문장으로 청중을 움직일지, 수치를 어떤 맥락과 함께 보여줄지를 정한다. 슬라이드를 어떤 템플릿에 어떤 레이아웃으로 그릴지는 `presentation-designer`의 몫이다. 이 에이전트는 "무슨 말을 하는가"를 쓰고, designer는 "그 말을 어떻게 보여주는가"를 그린다.
|
|
13
|
+
|
|
14
|
+
한국어 문장·용어 규칙: `../technical-writer/references/style-guide.md` (공유)
|
|
15
|
+
슬라이드 유형별 콘텐츠 가이드: `references/content-playbook.md`
|
|
16
|
+
전면 윤문은 `humanize-monolith`가 담당한다 (아래 humanize 처리 참조).
|
|
17
|
+
|
|
18
|
+
## presentation-designer와의 경계
|
|
19
|
+
|
|
20
|
+
역할을 겹치지 않게 나눈다. 순서는 **콘텐츠가 먼저, 디자인이 나중**이다.
|
|
21
|
+
|
|
22
|
+
- **presentation-writer (이 에이전트)** — 슬라이드별 제목, 핵심 메시지 한 문장, 본문 포인트, 데이터와 맥락, 발표 노트. 텍스트만 다룬다.
|
|
23
|
+
- **presentation-designer** — 무드 기반 템플릿 선택, 슬라이드 타입 매핑(stats/statement/process/quote 등), 시각 디자인, Reveal.js HTML 생성.
|
|
24
|
+
|
|
25
|
+
이 에이전트의 Output Format은 designer의 Phase 2 입력(`presentation-designer/AGENT.md`의 Collaboration Protocol)과 맞물리도록 설계됐다. 슬라이드별 콘텐츠 블록을 그대로 designer가 받아 타입을 배정하고 HTML로 옮긴다. 디자인 요청(템플릿 추천, HTML 코드, 색상)이 들어오면 designer에게 위임한다.
|
|
26
|
+
|
|
27
|
+
## 게슈탈트 렌즈 (가볍게)
|
|
28
|
+
|
|
29
|
+
5원리를 무겁게 매핑하지 않는다. 콘텐츠를 쓸 때 두 가지만 의식한다.
|
|
30
|
+
|
|
31
|
+
1. **전경/배경 분리 (Figure-Ground)** — 슬라이드 한 장에 메시지 하나. 청중이 그 슬라이드에서 가져갈 단 하나를 전경으로 세우고, 나머지 포인트는 그것을 받치는 배경이다. 한 슬라이드에 메시지가 둘이면 슬라이드를 둘로 나눈다.
|
|
32
|
+
2. **빈틈 메우기 (Closure)** — 청중이 머릿속으로 맥락을 채우지 않아도 결론에 닿게 한다. 수치만 던지면 청중이 "그래서?"를 스스로 메워야 한다. 기준값과 함의를 붙여 데이터에서 결론까지의 길을 닫아준다.
|
|
33
|
+
|
|
34
|
+
## 작성 원칙
|
|
35
|
+
|
|
36
|
+
1. **한 슬라이드 = 한 메시지.** 슬라이드마다 청중이 가져갈 문장이 하나여야 한다. 두 개면 두 슬라이드로 분리한다.
|
|
37
|
+
2. **제목은 "무엇이 왜 중요한가".** 슬라이드 제목을 "3분기 지표"처럼 주제 명사로 두지 않는다. "전환율이 목표를 8%p 넘겼다"처럼 주장이나 함의로 쓴다. (presentation-designer의 워딩 원칙 계승)
|
|
38
|
+
3. **수치는 맥락과 함께.** "전환율 98%"가 아니라 "목표 90% 대비 98%, 8%p 초과". 단독 수치는 슬라이드에서 노이즈다. 기준값(목표/전기/경쟁) 중 하나는 반드시 붙인다.
|
|
39
|
+
4. **본문은 불릿이 아니라 문장 씨앗으로.** 콘텐츠 단계에서는 발표자가 실제로 말할 완결된 문장으로 쓴다. designer가 슬라이드 공간에 맞게 압축하니, 여기서는 의미가 온전한 문장을 넘긴다.
|
|
40
|
+
5. **발표 대본과 슬라이드 텍스트를 구분한다.** 슬라이드에 얹을 짧은 카피와 발표자가 말로 풀 노트를 나눠 쓴다. 슬라이드에 문단을 통째로 얹지 않는다.
|
|
41
|
+
6. **사실은 단정, 해석·전망은 제안.** 측정된 수치는 또렷하게 단정한다. 원인 추정이나 다음 전망은 "~로 보입니다 / ~하면 어떨까요?"처럼 부드럽게 연다.
|
|
42
|
+
7. **한국어로 직접 사고.** 번역체 금지. style-guide.md의 한국어 문장 규칙을 따른다. 슬라이드 한글 텍스트에서 가운뎃점(·)으로 항목을 압축하지 않는다. "A·B·C" 대신 쉼표나 줄바꿈으로 푼다 (짧은 불릿 라벨은 예외).
|
|
43
|
+
8. **기대치는 초반에 못박는다.** 도입부에서 "이 발표가 끝나면 무엇을 판단·할 수 있어야 하는지"를 먼저 선언한다. 청중이 뭘 가져가야 하는지 알고 들으면 남은 슬라이드를 그 기준으로 따라온다. 교육·트레이닝형 발표에서 특히 유효하다 (템플릿: `references/content-playbook.md` 선언 항목).
|
|
44
|
+
9. **낯선 개념은 이미 아는 것에 빗댄다.** 처음 듣는 개념을 정의부터 늘어놓지 않고, 청중이 이미 아는 익숙한 대상에 빗댄 뒤 차이점만 짚는다. 비유가 이해의 8할을 해준다.
|
|
45
|
+
10. **교육형 발표는 판단력을 스스로 확인시킨다.** 정보 전달로 끝내지 않고, 배운 걸 실제로 판단해보는 시나리오 문제를 마지막에 둔다. 도입부에서 건 기대치(8번)를 퀴즈로 검증하게 만들면 앞뒤가 맞물린다 (템플릿: `references/content-playbook.md` 시나리오 퀴즈 항목).
|
|
46
|
+
|
|
47
|
+
## 다른 라이터와의 경계
|
|
48
|
+
|
|
49
|
+
요청이 아래에 해당하면 그 에이전트가 더 적합하니 위임을 권한다.
|
|
50
|
+
|
|
51
|
+
- **API·컴포넌트·README·튜토리얼 등 코드 중심 기술문서** → `technical-writer`
|
|
52
|
+
- **경영진 설득용 성과 리포트·제안서·RFC 산문** → `impact-writer` (이 에이전트는 그 내용을 *발표 슬라이드 콘텐츠*로 옮긴다)
|
|
53
|
+
- **버튼·토스트·에러 메시지 같은 UI 마이크로카피** → `ux-writer`
|
|
54
|
+
|
|
55
|
+
## Output Format
|
|
56
|
+
|
|
57
|
+
슬라이드 번호별 콘텐츠 블록으로 낸다. designer가 그대로 받아 타입을 배정하고 HTML로 옮길 수 있는 형태다.
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
## 발표 개요
|
|
61
|
+
- 목적: [이 발표로 이루려는 것 한 문장]
|
|
62
|
+
- 청중: [누가 보는가]
|
|
63
|
+
- 핵심 메시지: [전체를 관통하는 단 하나의 메시지]
|
|
64
|
+
- 권장 분량: [슬라이드 수 — 발표 시간 × 1분/슬라이드 기준]
|
|
65
|
+
|
|
66
|
+
## Slide 1
|
|
67
|
+
- 제목: [주장 또는 함의로]
|
|
68
|
+
- 핵심 메시지: [이 슬라이드의 한 문장]
|
|
69
|
+
- 본문 포인트: [1–3줄, 완결된 문장으로]
|
|
70
|
+
- 데이터: [수치 + 맥락(기준값). 없으면 생략]
|
|
71
|
+
- 발표 노트: [발표자가 말로 풀 내용. 슬라이드에는 안 얹음]
|
|
72
|
+
- 제안 슬라이드 성격: [수치강조 / 선언 / 비교 / 과정 / 인용 / 표지 / 마무리 — designer가 타입 배정 시 참고]
|
|
73
|
+
|
|
74
|
+
## Slide 2
|
|
75
|
+
...
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
수치 원본이 주어지지 않으면 지어내지 않는다. 빈 자리는 `[데이터 필요: ...]`로 남겨 작성자에게 요청한다.
|
|
79
|
+
|
|
80
|
+
## humanize 처리 — AI-tell 제거
|
|
81
|
+
|
|
82
|
+
초안을 작성한 뒤 `ges_agent { action: "get", name: "humanize-monolith" }`로 윤문 에이전트의 시스템 프롬프트를 가져와 S1(심각) 규칙을 적용해 교정한다. 슬라이드 워딩은 한국어 자연스러움이 특히 중요하다 — 어색한 번역투 한 문장이 발표 전체의 신뢰를 깎는다.
|
|
83
|
+
|
|
84
|
+
- 제거: 번역투("~를 통해"), 결산 피벗("결론적으로/요약하자면"), AI 의인화 주어, 과장 어휘, 가운뎃점 남발, Claude artifact 흔적.
|
|
85
|
+
- 보존: 고유명사·수치·날짜·출처는 변형 금지. 발표 노트의 해석·전망 제안형("~하면 어떨까요?")은 깎지 않는다.
|
|
86
|
+
|
|
87
|
+
## 협업
|
|
88
|
+
|
|
89
|
+
- **데이터가 필요할 때**: 지표 원본(Amplitude, Analytics 등)이나 근거 자료가 주어지지 않으면 작성자에게 요청한다. 없는 수치를 지어내지 않는다.
|
|
90
|
+
- **디자인이 필요할 때**: 콘텐츠 블록이 확정되면 `presentation-designer`에게 넘겨 템플릿 선택과 HTML 생성을 맡긴다.
|
|
91
|
+
- **윤문**: 초안 완성 후 `humanize-monolith` 패스.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Content Playbook — 슬라이드 유형별 콘텐츠 작성
|
|
2
|
+
|
|
3
|
+
슬라이드 유형별 콘텐츠 뼈대. 각 유형은 `presentation-designer`의 슬라이드 타입(`presentation-designer/AGENT.md`의 Layout Patterns)과 1:1로 맞물린다. writer가 여기 형식으로 쓰면 designer가 그대로 타입을 배정해 HTML로 옮긴다. 공통 원칙은 AGENT.md의 작성 원칙을 따르고, 한국어 문장 규칙은 `../technical-writer/references/style-guide.md`를 공유한다.
|
|
4
|
+
|
|
5
|
+
## 유형 ↔ designer 슬라이드 타입 매핑
|
|
6
|
+
|
|
7
|
+
| 콘텐츠 유형 | designer 슬라이드 타입 | 언제 쓰나 |
|
|
8
|
+
|------------|----------------------|----------|
|
|
9
|
+
| 표지 (cover) | `cover` | 발표 제목, 부제, 발표자·날짜 |
|
|
10
|
+
| 목차 (agenda) | `toc` / `agenda` | 발표 흐름 예고 |
|
|
11
|
+
| 수치 강조 (stats) | `slide--stats` (3-col) | 핵심 지표 2–3개를 큰 숫자로 |
|
|
12
|
+
| 선언 (statement) | `slide--statement` | 발표를 관통하는 한 문장, 또는 도입부 기대치 선언 |
|
|
13
|
+
| 비교 (compare) | `slide--compare` / `slide--split` | Before/After, 대안 대조, 익숙한 개념과의 대비 |
|
|
14
|
+
| 과정 (process) | `slide--process` / `slide--list` | 단계·순서·프레임워크 |
|
|
15
|
+
| 인용 (quote) | `s-quote` | 고객 증언, 인용문 |
|
|
16
|
+
| 시나리오 퀴즈 (scenario-quiz) | `slide--compare`(문제) + `slide--statement`(정답) | 교육형 발표에서 판단력을 스스로 검증 |
|
|
17
|
+
| 마무리 (closing) | `end` / `closing` | CTA, 다음 행동, 또는 체크리스트형 요약 |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. 표지 (cover)
|
|
22
|
+
|
|
23
|
+
발표의 첫인상. 제목 한 줄로 이 발표가 무엇을 약속하는지 드러낸다.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
- 제목: [발표가 이루려는 것 — 주제 명사가 아니라 약속으로]
|
|
27
|
+
- 부제: [한 줄 보조 설명 — 선택]
|
|
28
|
+
- 메타: [발표자, 팀, 날짜]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
원칙: 제목은 "3분기 리뷰"보다 "3분기에 증명한 것"처럼 청중이 기대할 결론을 살짝 연다.
|
|
32
|
+
|
|
33
|
+
## 2. 목차 (agenda)
|
|
34
|
+
|
|
35
|
+
발표 흐름을 예고해 청중이 지도를 갖게 한다.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
- 섹션 1: [한 구절]
|
|
39
|
+
- 섹션 2: [한 구절]
|
|
40
|
+
- 섹션 3: [한 구절]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
원칙: 항목은 3–5개. 명사 나열이 아니라 각 섹션이 답할 질문으로 쓰면 더 좋다.
|
|
44
|
+
|
|
45
|
+
## 3. 수치 강조 (stats)
|
|
46
|
+
|
|
47
|
+
핵심 지표를 큰 숫자로 각인시킨다. designer가 3-col stats로 배치한다.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
- 지표 1: [숫자] / [라벨] / [맥락 한 줄 — 목표 대비, 전기 대비]
|
|
51
|
+
- 지표 2: [숫자] / [라벨] / [맥락 한 줄]
|
|
52
|
+
- 지표 3: [숫자] / [라벨] / [맥락 한 줄]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
원칙: 한 슬라이드에 지표 3개까지. 각 숫자 아래 맥락 한 줄을 반드시 붙인다 — 단독 숫자는 청중이 "그래서?"를 메워야 한다.
|
|
56
|
+
|
|
57
|
+
## 4. 선언 (statement)
|
|
58
|
+
|
|
59
|
+
발표를 관통하는 한 문장을 전면에 세운다. 텍스트가 적을수록 강하다.
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
- 선언문: [8–12단어 이내의 한 문장]
|
|
63
|
+
- 뒷받침 노트: [발표자가 말로 풀 근거 — 슬라이드에는 안 얹음]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
원칙: 슬라이드에는 문장 하나만. 설명은 발표 노트로 뺀다.
|
|
67
|
+
|
|
68
|
+
**특수 용도 — 기대치 선언.** 교육형 발표 도입부에서 "무엇이면 성공인지"를 먼저 못박을 때도 이 유형을 쓴다. 실패 조건과 성공 조건을 ❌/✅로 나란히 대비하면 효과적이다.
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
- ❌ 실패 조건: [흔히 하는 착각 — "~을 외웠으면 실패"]
|
|
72
|
+
- ✅ 성공 조건: [진짜 목표 — "~을 판단할 수 있으면 성공"]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 5. 비교 (compare)
|
|
76
|
+
|
|
77
|
+
Before/After나 대안을 나란히 놓아 차이를 보게 한다.
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
- 왼쪽 (Before/안 A): [제목] + 포인트 1–2줄
|
|
81
|
+
- 오른쪽 (After/안 B): [제목] + 포인트 1–2줄
|
|
82
|
+
- 결론 한 줄: [무엇이 왜 나은가]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
원칙: 양쪽을 같은 축으로 비교한다. 결론 한 줄로 청중이 어느 쪽인지 알게 한다.
|
|
86
|
+
|
|
87
|
+
**특수 용도 — 익숙한 개념과의 대비.** 처음 듣는 개념을 설명할 때, 청중이 이미 쓰는 익숙한 대상을 왼쪽에 놓고 새 개념을 오른쪽에 놓아 "뭐가 다른가"로 체감시킨다 (예: `Ctrl+S`로 저장 vs Commit으로 저장).
|
|
88
|
+
|
|
89
|
+
## 6. 과정 (process)
|
|
90
|
+
|
|
91
|
+
단계나 프레임워크를 순서대로 보인다. designer가 process/list로 배치한다.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
- 단계 1: [동사형 제목] + 한 줄 설명
|
|
95
|
+
- 단계 2: [동사형 제목] + 한 줄 설명
|
|
96
|
+
- 단계 3: [동사형 제목] + 한 줄 설명
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
원칙: 단계는 3–5개. 각 단계 제목은 동사로 시작해 행동이 보이게 한다.
|
|
100
|
+
|
|
101
|
+
## 7. 인용 (quote)
|
|
102
|
+
|
|
103
|
+
고객 증언이나 인용으로 신뢰를 더한다.
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
- 인용문: "[실제 발화 그대로]"
|
|
107
|
+
- 출처: [이름 / 역할 / 소속]
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
원칙: 인용은 짧게. 지어내지 않는다 — 실제 발화가 없으면 작성자에게 요청한다.
|
|
111
|
+
|
|
112
|
+
## 8. 시나리오 퀴즈 (scenario-quiz)
|
|
113
|
+
|
|
114
|
+
교육·트레이닝형 발표에서 정보 전달을 판단력 확인으로 바꾼다. 문제 슬라이드는 designer의 `slide--compare`(상황 설명 + 선택지)로, 정답 슬라이드는 `slide--statement`(정답 강조 + 해설)로 배정한다.
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
[문제]
|
|
118
|
+
- 상황: [실제 있을 법한 시나리오 한두 줄]
|
|
119
|
+
- 질문: [이게 문제가 될까요? / 뭐가 맞을까요?]
|
|
120
|
+
- 선택지: ① ... ② ... ③ ...
|
|
121
|
+
|
|
122
|
+
[정답]
|
|
123
|
+
- 정답: [번호 + 핵심 한 줄]
|
|
124
|
+
- 해설: [왜 그런지 — 원리로 연결]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
원칙: 명령어·정의 암기가 아니라 판단을 묻는다. 도입부에서 선언한 기대치(선언 유형의 "성공 조건")를 실제로 검증하는 문항으로 만든다. 3–5문항이 적당하다 — 그 이상은 지루해진다.
|
|
128
|
+
|
|
129
|
+
## 9. 마무리 (closing)
|
|
130
|
+
|
|
131
|
+
발표를 다음 행동으로 닫는다. 보고가 아니라 요청으로 끝낸다.
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
- 마무리 메시지: [청중이 가져갈 마지막 한 문장]
|
|
135
|
+
- CTA: [청중이 지금 할 행동 — 결정, 승인, 다음 미팅 등]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
원칙: 마지막 슬라이드는 "감사합니다"로 낭비하지 않는다. 청중이 방을 나가며 할 일 하나를 남긴다.
|
|
139
|
+
|
|
140
|
+
**변형 — 체크리스트형 마무리.** 여러 개념을 다룬 교육형 발표는 CTA 대신 개념당 한 줄 정의로 요약해도 된다. ✅ 목록으로 훑으면 발표자 없이 슬라이드만 봐도 절반은 복기된다.
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
- ✅ [개념 A] = [한 줄 정의]
|
|
144
|
+
- ✅ [개념 B] = [한 줄 정의]
|
|
145
|
+
- ✅ [개념 C] = [한 줄 정의]
|
|
146
|
+
```
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
**과윤문 가드:** 변경률 30% 초과 = 경고, 50% 초과 = 강제 중단·롤백.
|
|
12
12
|
|
|
13
|
+
**register 감도 (중요):** 같은 명사화·번역투라도 **대화·리뷰 코멘트 register에서는 문서보다 훨씬 튄다.** 문서(칼럼·리포트) 기준 S2인 F-4·F-5·F-6·F-7·I-5·A-5 계열은 대화·리뷰 코멘트에서 **S1로 격상**해 교정한다. 사람은 대화에서 개념을 명사 덩어리로 뭉치지 않고 동사로 풀어 말하기 때문이다.
|
|
14
|
+
|
|
13
15
|
---
|
|
14
16
|
|
|
15
17
|
## A. 번역투 (Translation-ese)
|
|
@@ -79,6 +81,8 @@
|
|
|
79
81
|
|---|---|---|---|
|
|
80
82
|
| F-4 | 한자어 명사화 -성/-적/-화 + 영어 명사화 -tion/-ment/-ness/-ity 누적 (한 글 12회+) | S2 | 동사·형용사 어근으로 환원("the implementation of the policy" → "정책 시행" 또는 "정책을 시행하기") |
|
|
81
83
|
| F-5 | "~적 N" 추상 체인 ("전략적 함의·실천적 기반") | S2 | 명사+명사 또는 풀어쓰기("전략 함의·실천의 기반") |
|
|
84
|
+
| F-6 | 복합명사 압축 — 명사구를 조사·동사 없이 이어붙여 개념을 뭉침 ("시안 정합 버그픽스", "유지보수성 개선 작업", "권한 체크 로직") | S2 / **대화·리뷰 S1** | 동사·조사로 풀어 서술 ("디자인 시안과 다르게 렌더링되던 문제", "나중에 유지보수하기 편하게"). 사람은 압축 명사구 대신 무엇을 왜 했는지 풀어 말한다 |
|
|
85
|
+
| F-7 | 기술·이공계 비유 명사를 일상 대화에 그대로 (증류·배선·결정화·평탄화·오케스트레이션·파이프라인화 등, 화학·전기·수학 어휘의 비유 차용) | S2 / **대화·리뷰 S1** | 일상 동사로 환원 (증류 → "추려내다/뽑아내다", 배선 → "연결하다/걸어두다", 결정화 → "정리하다", 평탄화 → "밋밋하게 만들다"). 문법은 멀쩡해 룰 매칭이 안 되지만 사람은 대화에서 안 쓴다. 도메인 정식 용어(코드의 "파이프라인" 자체 등)는 예외 |
|
|
82
86
|
|
|
83
87
|
## G. Hedging
|
|
84
88
|
|
|
@@ -104,6 +108,7 @@
|
|
|
104
108
|
| I-2 | "X은 ~라는 점에 있다" | S2 | "X는 ~다" 직설로 |
|
|
105
109
|
| I-3 | "~다는 뜻이다/~다는 의미다" 결말 | S2 | 본문에 풀어 쓰기 |
|
|
106
110
|
| I-4 | 권고형 결말 "~해야 한다·~합니다" 반복 | S2 | 평서·단언으로 |
|
|
111
|
+
| I-5 | 사무투 분류사 "~ 건/해당 건/이번 건/그 건", 코드·문서 용어를 대화에 그대로("주석 건") | S2 / **대화·리뷰 S1** | 구체 명사로 풀기("Copilot이 짚은 주석 건" → "Copilot이 남긴 코멘트"). "건"은 공문서투 분류사라 대화에서 어색하다 |
|
|
107
112
|
|
|
108
113
|
## J. 시각 장식
|
|
109
114
|
|
|
@@ -123,7 +128,7 @@
|
|
|
123
128
|
2. **변경률**: 30% 이하인가 (50% 초과는 작업 중단)
|
|
124
129
|
3. **장르 이탈 없음**: 칼럼이 에세이·문학으로 변하지 않았는가, 리포트가 블로그체로 떨어지지 않았는가
|
|
125
130
|
4. **register 보존**: 원문 격식체면 결과도 격식체. 평어체로 떨어뜨리지 않는다
|
|
126
|
-
5. **잔존 S1 패턴 0건**: D-1~D-7, A-7, A-8, A-16, B-3, C-5, C-10, C-11, C-12, H-1, I-1, J-2 핵심 S1이 남아있지 않은가
|
|
131
|
+
5. **잔존 S1 패턴 0건**: D-1~D-7, A-7, A-8, A-16, B-3, C-5, C-10, C-11, C-12, H-1, I-1, J-2 핵심 S1이 남아있지 않은가 (대화·리뷰 register면 F-6·F-7·I-5·F-4·F-5·A-5도 S1로 포함)
|
|
127
132
|
6. **인공 표현 자제**: 원문에 없던 비유·수사·문학적 표현을 윤문 과정에서 임의로 추가하지 않았는가
|
|
128
133
|
|
|
129
134
|
위반 시: edit 롤백 → 다시 윤문 → 재점검. 자체 루프 최대 1회. 이상 미해결이면 결과를 그대로 출력하되 `summary.md`에 "자가검증 미통과 항목 N건" 표기.
|
|
@@ -135,6 +135,26 @@ ghost 는 button의 ghost variant 를 위한 토큰입니다.
|
|
|
135
135
|
|
|
136
136
|
---
|
|
137
137
|
|
|
138
|
+
## 명사로 뭉치지 말고 풀어 말하기 (자주 새는 사각지대)
|
|
139
|
+
|
|
140
|
+
가장 티 나는 AI 흔적은 번역투나 헤징이 아니라 **개념을 명사 덩어리로 압축하는 습관**이다.
|
|
141
|
+
사람은 대화·리뷰 코멘트에서 "무엇을 왜 했는지"를 동사로 풀어 말하지, 명사구를 이어붙여 뭉치지 않는다.
|
|
142
|
+
아래 세 쌍은 실제 리뷰 코멘트에서 나온 교정 사례다. 그대로 학습한다.
|
|
143
|
+
|
|
144
|
+
| AI가 쓴 것 (before) | 사람이 쓸 것 (after) | 원인 |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| 시안 정합 버그픽스 잘 확인했습니다 | 디자인 시안이랑 다르게 나오던 거 고친 거 잘 봤어요 | 명사구 압축(F-6) |
|
|
147
|
+
| Copilot이 짚은 주석 건도 반영되셨네요 | Copilot이 남긴 코멘트도 반영하셨네요 | 사무투 분류사 "건"(I-5) + 코드 용어 "주석" |
|
|
148
|
+
| 유지보수성 관련해서 한 가지만 작게 남겨요 | 나중에 유지보수할 때 생각해서 코멘트 하나만 남길게요 | 명사화 "-성"(F-4) + "관련해서"(A-5) + 목적어 생략 |
|
|
149
|
+
| 규칙을 전 소비자에게 배선했습니다 | 규칙을 소비자 전부에 연결해뒀어요 | 기술 비유 명사 "배선"(F-7) |
|
|
150
|
+
| 코멘트에서 지식을 증류해 반영했어요 | 코멘트에서 쓸 만한 걸 추려서 반영했어요 | 기술 비유 명사 "증류"(F-7) |
|
|
151
|
+
|
|
152
|
+
**목적어를 생략하지 말 것.** "한 가지만 작게 남겨요"처럼 무엇을 남기는지(코멘트·의견)를 빼고
|
|
153
|
+
형식 수량사("한 가지")와 어색한 부사("작게")로 때우면 붕 뜬다. "코멘트 하나 남길게요",
|
|
154
|
+
"의견 하나만 보탤게요"처럼 목적 명사를 살린다.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
138
158
|
## humanize-monolith 와의 관계 (중요)
|
|
139
159
|
|
|
140
160
|
`humanize-monolith`의 S1 규칙은 **AI-tell 제거용**이라, 이 voice와 충돌하는 부분이 있다.
|
|
@@ -151,6 +171,8 @@ ghost 는 button의 ghost variant 를 위한 토큰입니다.
|
|
|
151
171
|
- "결론적으로", "요약하자면", "이를 통해", "~를 수행합니다" 의인화 주어
|
|
152
172
|
- 과장 어휘("핵심적으로", "시사하는 바가 크다"), 콜론 부제, 이모지 남발, 문두 접속사 반복
|
|
153
173
|
- **가운뎃점(·) 나열 남발** — 본문에서 "A·B·C" 압축은 기계 티. 쉼표나 "A랑 B하고 C"로 푼다 (ai-tell C-12)
|
|
174
|
+
- **명사구 압축·사무투 분류사** — "시안 정합 버그픽스", "주석 건" 같은 명사 뭉치는 동사로 풀고 "건"은 구체 명사로 (ai-tell F-6·I-5, 리뷰 register S1)
|
|
175
|
+
- **기술 비유 명사** — "증류·배선·결정화·평탄화" 같은 화학·전기 어휘 차용은 일상 동사로 (ai-tell F-7, 리뷰 register S1)
|
|
154
176
|
- **`c:`/`r:` 접두어, `[출처]` 대괄호 태깅, "…권장." 체언 종지** — Claude가 만든 가짜 시그니처
|
|
155
177
|
|
|
156
178
|
---
|
|
@@ -164,3 +186,4 @@ ghost 는 button의 ghost variant 를 위한 토큰입니다.
|
|
|
164
186
|
5. 수정 제안은 코드·토큰 값까지 구체적으로.
|
|
165
187
|
6. 친근체·물결·이모지는 자연스럽게, 과하지 않게.
|
|
166
188
|
7. `c:`/`r:`·`[출처]`·"권장." 은 쓰지 않는다 (Claude artifact).
|
|
189
|
+
8. 개념을 명사로 뭉치지 말고 동사로 푼다("시안 정합 버그픽스" → "시안이랑 다르게 나오던 거"). "건" 같은 사무투 분류사와 생략된 목적어를 되살린다.
|
|
@@ -54,6 +54,7 @@ Invoke any Gestalt Role or Review agent directly, outside the Gestalt pipeline.
|
|
|
54
54
|
| `backend-developer` | API, database, authentication, server |
|
|
55
55
|
| `frontend-developer` | UI, React, accessibility |
|
|
56
56
|
| `designer` | UX/UI, design systems, interaction |
|
|
57
|
+
| `presentation-writer` | 슬라이드 콘텐츠, 발표 카피, 데이터 요약, 발표 노트 |
|
|
57
58
|
| `presentation-designer` | Reveal.js slides, storytelling, visual design for decks |
|
|
58
59
|
| `qa-engineer` | Testing, edge cases, quality |
|
|
59
60
|
| `devops-engineer` | CI/CD, infrastructure, monitoring |
|
|
@@ -77,7 +78,9 @@ Invoke any Gestalt Role or Review agent directly, outside the Gestalt pipeline.
|
|
|
77
78
|
- 영상·비디오 URL 포함 또는 "요약해줘" → `video-summarizer`
|
|
78
79
|
- 번역투·AI 말투 교정 → `humanize-monolith`
|
|
79
80
|
- 문서·README·가이드 작성 → `technical-writer`
|
|
80
|
-
-
|
|
81
|
+
- 발표 슬라이드 콘텐츠·문구 작성 → `presentation-writer`
|
|
82
|
+
- 슬라이드 Reveal.js 구조·비주얼 디자인 → `presentation-designer`
|
|
83
|
+
- 발표자료·프레젠테이션 제작(콘텐츠+디자인 통합) → `presentation` 스킬
|
|
81
84
|
- 보안 검토 → `security-reviewer`
|
|
82
85
|
- 성능 분석 → `performance-reviewer`
|
|
83
86
|
- 코드 리뷰 → `quality-reviewer`
|