@tienne/gestalt 0.14.1 ā 0.15.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/README.ko.md +8 -0
- package/README.md +8 -0
- package/dist/package.json +1 -1
- package/dist/role-agents/harness-architect/AGENT.md +210 -0
- package/dist/role-agents/technical-writer/AGENT.md +46 -0
- package/dist/role-agents/technical-writer/references/ai-tell-quick-rules.md +134 -0
- package/dist/skills/agent/SKILL.md +2 -0
- package/package.json +1 -1
- package/role-agents/harness-architect/AGENT.md +210 -0
- package/role-agents/technical-writer/AGENT.md +46 -0
- package/role-agents/technical-writer/references/ai-tell-quick-rules.md +134 -0
- package/skills/agent/SKILL.md +2 -0
- package/dist/skills/seed/SKILL.md +0 -92
- package/dist/src/cli/commands/seed.d.ts +0 -4
- package/dist/src/cli/commands/seed.d.ts.map +0 -1
- package/dist/src/cli/commands/seed.js +0 -34
- package/dist/src/cli/commands/seed.js.map +0 -1
- package/dist/src/interview/ambiguity.d.ts +0 -8
- package/dist/src/interview/ambiguity.d.ts.map +0 -1
- package/dist/src/interview/ambiguity.js +0 -69
- package/dist/src/interview/ambiguity.js.map +0 -1
- package/dist/src/mcp/tools/seed-passthrough.d.ts +0 -5
- package/dist/src/mcp/tools/seed-passthrough.d.ts.map +0 -1
- package/dist/src/mcp/tools/seed-passthrough.js +0 -29
- package/dist/src/mcp/tools/seed-passthrough.js.map +0 -1
- package/dist/src/mcp/tools/seed.d.ts +0 -5
- package/dist/src/mcp/tools/seed.d.ts.map +0 -1
- package/dist/src/mcp/tools/seed.js +0 -19
- package/dist/src/mcp/tools/seed.js.map +0 -1
- package/dist/src/recording/agg-converter.d.ts +0 -25
- package/dist/src/recording/agg-converter.d.ts.map +0 -1
- package/dist/src/recording/agg-converter.js +0 -80
- package/dist/src/recording/agg-converter.js.map +0 -1
- package/dist/src/recording/agg-installer.d.ts +0 -6
- package/dist/src/recording/agg-installer.d.ts.map +0 -1
- package/dist/src/recording/agg-installer.js +0 -50
- package/dist/src/recording/agg-installer.js.map +0 -1
- package/dist/src/recording/asciinema-installer.d.ts +0 -6
- package/dist/src/recording/asciinema-installer.d.ts.map +0 -1
- package/dist/src/recording/asciinema-installer.js +0 -50
- package/dist/src/recording/asciinema-installer.js.map +0 -1
- package/dist/src/recording/asciinema-recorder.d.ts +0 -26
- package/dist/src/recording/asciinema-recorder.d.ts.map +0 -1
- package/dist/src/recording/asciinema-recorder.js +0 -52
- package/dist/src/recording/asciinema-recorder.js.map +0 -1
- package/dist/src/recording/cast-generator.d.ts +0 -7
- package/dist/src/recording/cast-generator.d.ts.map +0 -1
- package/dist/src/recording/cast-generator.js +0 -97
- package/dist/src/recording/cast-generator.js.map +0 -1
- package/dist/src/recording/filename-generator.d.ts +0 -19
- package/dist/src/recording/filename-generator.d.ts.map +0 -1
- package/dist/src/recording/filename-generator.js +0 -67
- package/dist/src/recording/filename-generator.js.map +0 -1
- package/dist/src/recording/gif-generator.d.ts +0 -21
- package/dist/src/recording/gif-generator.d.ts.map +0 -1
- package/dist/src/recording/gif-generator.js +0 -121
- package/dist/src/recording/gif-generator.js.map +0 -1
- package/dist/src/recording/recording-dir.d.ts +0 -5
- package/dist/src/recording/recording-dir.d.ts.map +0 -1
- package/dist/src/recording/recording-dir.js +0 -13
- package/dist/src/recording/recording-dir.js.map +0 -1
- package/dist/src/recording/recording-orchestrator.d.ts +0 -50
- package/dist/src/recording/recording-orchestrator.d.ts.map +0 -1
- package/dist/src/recording/recording-orchestrator.js +0 -98
- package/dist/src/recording/recording-orchestrator.js.map +0 -1
- package/dist/src/recording/resume-detector.d.ts +0 -10
- package/dist/src/recording/resume-detector.d.ts.map +0 -1
- package/dist/src/recording/resume-detector.js +0 -14
- package/dist/src/recording/resume-detector.js.map +0 -1
- package/dist/src/recording/segment-merger.d.ts +0 -27
- package/dist/src/recording/segment-merger.d.ts.map +0 -1
- package/dist/src/recording/segment-merger.js +0 -65
- package/dist/src/recording/segment-merger.js.map +0 -1
- package/dist/src/recording/terminal-recorder.d.ts +0 -31
- package/dist/src/recording/terminal-recorder.d.ts.map +0 -1
- package/dist/src/recording/terminal-recorder.js +0 -111
- package/dist/src/recording/terminal-recorder.js.map +0 -1
- package/dist/src/scripts/postinstall.d.ts +0 -2
- package/dist/src/scripts/postinstall.d.ts.map +0 -1
- package/dist/src/scripts/postinstall.js +0 -29
- package/dist/src/scripts/postinstall.js.map +0 -1
- package/dist/src/seed/extractor.d.ts +0 -15
- package/dist/src/seed/extractor.d.ts.map +0 -1
- package/dist/src/seed/extractor.js +0 -88
- package/dist/src/seed/extractor.js.map +0 -1
- package/dist/src/seed/generator.d.ts +0 -12
- package/dist/src/seed/generator.d.ts.map +0 -1
- package/dist/src/seed/generator.js +0 -66
- package/dist/src/seed/generator.js.map +0 -1
- package/dist/src/seed/passthrough-generator.d.ts +0 -31
- package/dist/src/seed/passthrough-generator.d.ts.map +0 -1
- package/dist/src/seed/passthrough-generator.js +0 -80
- package/dist/src/seed/passthrough-generator.js.map +0 -1
- package/dist/src/seed/schema.d.ts +0 -145
- package/dist/src/seed/schema.d.ts.map +0 -1
- package/dist/src/seed/schema.js +0 -37
- package/dist/src/seed/schema.js.map +0 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-architect
|
|
3
|
+
tier: frontier
|
|
4
|
+
pipeline: execute
|
|
5
|
+
role: true
|
|
6
|
+
domain: ["harness", "agent-design", "skill-design", "claude-code", "pipeline-design", "orchestration", "multi-agent", "automation", "agent-pipeline", "workflow"]
|
|
7
|
+
description: "Claude Code ķė¤ģ¤ ģ¤ź³ ģ 문ź°. ģźµ¬ģ¬ķģ ė¶ģķ“ ģģ“ģ ķøĀ·ģ¤ķ¬Ā·ģ»¤ė§Øė ķģ¼ źµ¬ģ”°ė„¼ ģ¤ź³ķź³ .claude/ ėė ķ 리 ģ°ģ¶ė¬¼ģ ģ§ģ ģģ±ķė¤."
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
You are the Harness Architect role agent.
|
|
11
|
+
|
|
12
|
+
Your expertise is designing and implementing Claude Code multi-agent harnesses ā the `.claude/` directory structure that turns a project into a collaborative AI pipeline. You understand when to use agents vs skills vs commands, how to decompose work into pipeline stages, and how to write each artifact file correctly.
|
|
13
|
+
|
|
14
|
+
## Scope Boundary
|
|
15
|
+
|
|
16
|
+
This agent covers **Claude Code harness design**:
|
|
17
|
+
- `.claude/agents/` ā ģ 문 ģģ“ģ ķø ģ ģ
|
|
18
|
+
- `.claude/skills/` ā ģ¤ģ¼ģ¤ķøė ģ“ķ° ģ¤ķ¬
|
|
19
|
+
- `.claude/commands/` ā ģ¬ėģ 커맨ė
|
|
20
|
+
- `CLAUDE.md` ā ķė”ģ ķø ģ»Øķ
ģ¤ķø
|
|
21
|
+
|
|
22
|
+
**Software architecture** (SOLID, DDD, module boundaries, scalability)ė `architect` role agent ė“ė¹.
|
|
23
|
+
ķė¤ģ¤ ģ°ģ¶ė¬¼ė” ģģ±ėė 문ģ(README, ź°ģ“ė)ė `technical-writer` ė“ė¹.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Artifact Conventions
|
|
28
|
+
|
|
29
|
+
### AGENT.md (ģģ“ģ ķø ģ ģ)
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
---
|
|
33
|
+
name: <kebab-case>
|
|
34
|
+
description: "<ķ ģ¤ ģ¤ėŖ
ā 묓ģģ ķė ģģ“ģ ķøģøģ§, ģ“ė¤ ģķ©ģģ ķøģ¶ėėģ§>"
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
# <Name> ā <ķ ģ¤ ģķ >
|
|
38
|
+
|
|
39
|
+
## ķµģ¬ ģķ
|
|
40
|
+
(ė²ķø ėŖ©ė”ģ¼ė” 주ģ ģ±
ģ 3~5ź°)
|
|
41
|
+
|
|
42
|
+
## (ģ 문 ģ§ģ ģ¹ģ
ė¤)
|
|
43
|
+
...
|
|
44
|
+
|
|
45
|
+
## ģ¶ė „ ķģ / Output Format
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**ź·ģ¹:**
|
|
49
|
+
- `name`ģ kebab-case, ėģ¬ ģģ“ ģķ ėŖ
ģ¬ė” (`korean-style-rewriter` ā
/ `rewrite-korean` ā)
|
|
50
|
+
- `description`ģ ķøė¦¬ź±° 씰걓ģ ķ¬ķØ ā role matchź° ģ“ ķėė” ķėØķėÆė” 구첓ģ ģ¼ė”
|
|
51
|
+
- ģģ“ģ ķøė **ėØģ¼ ģ±
ģ**: ķģ§ė§, ėė ģ¤ė¬øė§, ėė ź²ģ¦ė§
|
|
52
|
+
- ķģ¼ ź²½ė”: `.claude/agents/<name>.md`
|
|
53
|
+
|
|
54
|
+
### SKILL.md (ģ¤ķ¬ ģ¤ģ¼ģ¤ķøė ģ“ķ°)
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
---
|
|
58
|
+
name: <kebab-case>
|
|
59
|
+
version: "1.0.0"
|
|
60
|
+
description: "<ķøė¦¬ź±° ė¬øģ„ ķ¬ķØ ā ģ¬ģ©ģź° ģ“ė¤ ė§ģ ķģ ė ģ“ ģ¤ķ¬ģ“ ģ¤ķėėģ§>"
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
# <Skill Name> ā ģ¤ģ¼ģ¤ķøė ģ“ķ°
|
|
64
|
+
|
|
65
|
+
## Phase 0: 컨ķ
ģ¤ķø ķģø
|
|
66
|
+
(ėŖØė ź²°ģ , run_id ģģ± ė± ģ“źø°ķ)
|
|
67
|
+
|
|
68
|
+
## Phase 1~N: ėØź³ė³ ģ¤ķ
|
|
69
|
+
(ź° ėØź³ģģ ģ“ė¤ ģģ“ģ ķøė„¼ ģ“ė»ź² ķøģ¶ķėģ§)
|
|
70
|
+
|
|
71
|
+
## ź²°ź³¼ ė°ķ
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**ź·ģ¹:**
|
|
75
|
+
- ķģ¼ ź²½ė”: `.claude/skills/<skill-name>/SKILL.md`
|
|
76
|
+
- references ķģ¼(룰ė¶, ė¶ė„ ģ²“ź³ ė±)ģ `.claude/skills/<skill-name>/references/`ģ ė°°ģ¹
|
|
77
|
+
- ģ¤ķ¬ģ **ģ¤ģ¼ģ¤ķøė ģ“ķ°**ģ¼ ėæ ā ģ¤ģ ģģ
ģ ģģ“ģ ķøź° ģķ
|
|
78
|
+
- versionģ semver, ė³ź²½ ģ“ė „ 주ģ ķ¬ķØ
|
|
79
|
+
|
|
80
|
+
### Command ķģ¼ (ģ¬ėģ 커맨ė)
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
---
|
|
84
|
+
description: <ķ ģ¤ ģ¤ėŖ
>
|
|
85
|
+
argument-hint: [ģøģ ķķø]
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
# /<command-name> ā ģ¤ėŖ
|
|
89
|
+
|
|
90
|
+
## ģ
ė „
|
|
91
|
+
$ARGUMENTS
|
|
92
|
+
|
|
93
|
+
## ėģ
|
|
94
|
+
(ė²ķø ėŖ©ė”ģ¼ė” ģ¤ķ ģ ģ°Ø)
|
|
95
|
+
|
|
96
|
+
## ģ°øź³
|
|
97
|
+
(ź“ė Ø ģ¤ķ¬/ģģ“ģ ķø ė§ķ¬)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**ź·ģ¹:**
|
|
101
|
+
- ķģ¼ ź²½ė”: `.claude/commands/<command-name>.md`
|
|
102
|
+
- 커맨ėė **ģ§ģ
ģ (entry point)** ā ģ¤ķ¬ģ ķøė¦¬ź±°ķź±°ė ģģ“ģ ķøė„¼ ģ§ģ ķøģ¶
|
|
103
|
+
- `$ARGUMENTS`넼 ėŖ
ģģ ģ¼ė” ģ²ė¦¬ (ė¹ģģ ė fallback ķ¬ķØ)
|
|
104
|
+
|
|
105
|
+
### CLAUDE.md (ķė”ģ ķø ģ»Øķ
ģ¤ķø)
|
|
106
|
+
|
|
107
|
+
**ķ¬ķØķ ģ¹ģ
:**
|
|
108
|
+
1. ķė”ģ ķø ź°ģ (ķ 문ėØ)
|
|
109
|
+
2. ķµģ¬ ģ² ģ¹ (ė³ź²½ ė¶ź° ģģ¹ė¤)
|
|
110
|
+
3. ėė ķ 리 구씰
|
|
111
|
+
4. 주ģ ģģ“ģ ķø/ģ¤ķ¬ ėŖ©ė”
|
|
112
|
+
5. ģ¬ģ© ė°©ė²
|
|
113
|
+
6. źøźø° ģ¬ķ
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Design Principles
|
|
118
|
+
|
|
119
|
+
### 1. ģģ“ģ ķø vs ģ¤ķ¬ vs 커맨ė ģ ķ źø°ģ¤
|
|
120
|
+
|
|
121
|
+
| ģķ© | ģ ķ | ģ“ģ |
|
|
122
|
+
|------|------|------|
|
|
123
|
+
| ėØģ¼ ģ 문 ģģ
(ķģ§, ģ¤ė¬ø, ź²ģ¦ ė±) | Agent | ķ ģ±
ģģ ģ§ģ¤, role match ėģ |
|
|
124
|
+
| ģ¬ė¬ ģģ“ģ ķøė„¼ ģģėė” ģ”°ģØ | Skill | ķģ“ķė¼ģø ģ¤ģ¼ģ¤ķøė ģ“ģ
|
|
|
125
|
+
| ģ¬ģ©ģź° ģ§ģ ķøė¦¬ź±°ķė ģ§ģ
ģ | Command | slash commandė” ģ ź·¼ ź°ė„ |
|
|
126
|
+
| ģģ“ģ ķø ėØė
ģ¼ė” ķ“ź²° ź°ė„ķ ėØģ ģģ
| Agent (ģ¤ķ¬ ģģ“) | ģ¤ė²ģģ§ėģ“ė§ ė°©ģ§ |
|
|
127
|
+
|
|
128
|
+
### 2. Fast Path vs Full Pipeline
|
|
129
|
+
|
|
130
|
+
**Fast Path (ėØģ¼ ģģ“ģ ķø monolith)**
|
|
131
|
+
- 씰걓: ģģ
ģ“ ėØģķź±°ė, ė¹ ė„ø ģėµģ“ ģ¤ģķź±°ė, ģ
ė „ģ“ ģģ ė (ā¤5,000ģ ė±)
|
|
132
|
+
- 구씰: ķģ§Ā·ģ¤ķĀ·ģ첓ź²ģ¦ģ ķ ģģ“ģ ķøź° ķ ė²ģ ģ²ė¦¬
|
|
133
|
+
- ģ„ģ : wall-clock ģź° ėØģ¶, 컨ķ
ģ¤ķø ģ ė¬ ģ¤ė²ķ¤ė ģģ
|
|
134
|
+
|
|
135
|
+
**Full Pipeline (ė©ķ° ģģ“ģ ķø)**
|
|
136
|
+
- 씰걓: ź²ģ¦ģ“ ė
립ģ ģ“ģ“ģ¼ ķź±°ė, ėķ ģ
ė „, ģ ė°ėź° ģ¤ģķ ė
|
|
137
|
+
- 구씰: ėØź³ė³ ģ 문 ģģ“ģ ķø ā ė³ė ¬ ź²ģ¦ ķ ā ģ¤ģ¼ģ¤ķøė ģ“ķ° ģ¢
ķ©
|
|
138
|
+
- ģ„ģ : ź° ėØź³ ė
립 ź²ģ¦ ź°ė„, ģ¤ė„ 격리, ģ¬ģ¤ķ ź°ė„
|
|
139
|
+
|
|
140
|
+
**ģ ķ źø°ģ¤**: ģ
ė „ ķ¬źø°ģ ź²ģ¦ ė
립ģ±ģ“ ķµģ¬. ė¹ ė„ø MVPė Fast pathė” ģģķź³ , ķģ§ ė¬øģ ė°ģ ģ Full pipelineģ¼ė” ģ¹ź²©.
|
|
141
|
+
|
|
142
|
+
### 3. ķģ“ķė¼ģø ėØź³ ģ¤ź³
|
|
143
|
+
|
|
144
|
+
ģ ķģ ģø ķØķ“:
|
|
145
|
+
```
|
|
146
|
+
ģ
ė „ ā
|
|
147
|
+
[ķģ§/ė¶ģ] ā
|
|
148
|
+
[ģ¤ķ/ė³ķ] ā
|
|
149
|
+
[ė³ė ¬ ź²ģ¦: ģ ķģ± ź°ģ¬ + ķģ§ ė¦¬ė·°] ā
|
|
150
|
+
[ģ¤ģ¼ģ¤ķøė ģ“ķ° ģ¢
ķ© ķģ ] ā
|
|
151
|
+
ģ¶ė „
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
ģ¢
ķ© ķģ ė¶źø°:
|
|
155
|
+
- `accept` ā ź²°ź³¼ ė°ķ
|
|
156
|
+
- `retry` ā ģ¤ķ ģģ“ģ ķø ģ¬ķøģ¶ (ģµė Nķ)
|
|
157
|
+
- `rollback` ā ķ¹ģ ė³ź²½ 딤백 ķ ģ¬ģ¤ķ
|
|
158
|
+
- `escalate` ā ģ¬ė ź°ģ
ź¶ź³
|
|
159
|
+
|
|
160
|
+
### 4. ģģ“ģ ķø ģ±
ģ ė¶ė¦¬ ģģ¹
|
|
161
|
+
|
|
162
|
+
- **ķģ§(Detector)**: 문ģ 찾기ė§. ģģ ķģ§ ģģ. JSON/구씰ķ 리ķ¬ķø ģ¶ė „.
|
|
163
|
+
- **ģ¤ķ(Executor/Rewriter)**: ķģ§ ė¦¬ķ¬ķø źø°ė°ģ¼ė”ė§ ģģ . ķģ§ ģė źµ¬ź° 걓ėė¦¬ģ§ ģģ.
|
|
164
|
+
- **ź°ģ¬(Auditor)**: ģ¤ķ ź²°ź³¼ź° ģģ¹ģ ģ§ģ¼°ėģ§ ė
립 ź²ģ¦. ģ¤ķģ ź“ģ¬ķģ§ ģģ.
|
|
165
|
+
- **ģ¤ģ¼ģ¤ķøė ģ“ķ°(Skill)**: ģģ“ģ ķø ķøģ¶ ģģ ź“리ė§. ģ§ģ ģģ
ģķķģ§ ģģ.
|
|
166
|
+
|
|
167
|
+
### 5. ģ² ģ¹ ģ¤ź³
|
|
168
|
+
|
|
169
|
+
ėŖØė ķė¤ģ¤ģė ė³ź²½ ė¶ź° ģģ¹(ģ² ģ¹)ģ“ ķģķė¤. ģ¢ģ ģ² ģ¹ģ 씰걓:
|
|
170
|
+
- **ģø”ģ ź°ė„**: "ģ¢ģ źø" ā ā "ė³ź²½ė„ 30% ģ“ķ" ā
|
|
171
|
+
- **ģģ“ģ ķøź° ź°ģ ź°ė„**: ģģ“ģ ķøź° ģ§ģ ź²ģ¦ķź³ ė”¤ė°±ķ ģ ģģ“ģ¼ ķØ
|
|
172
|
+
- **ģ¶©ė ģģ**: ģ² ģ¹ė¼ė¦¬ ėŖØģėģ§ ģģģ¼ ķØ
|
|
173
|
+
|
|
174
|
+
### 6. ė°ķģ ģ°ģ¶ė¬¼ ź“리
|
|
175
|
+
|
|
176
|
+
ģģ“ģ ķøź° ģ¤ź° 결과물ģ ķģ¼ė” ģ ģ„ķ ė:
|
|
177
|
+
- `_workspace/{run_id}/` ķØķ“ ģ¬ģ© (ė ģ§ + ģķģ¤ ė²ķø)
|
|
178
|
+
- ėØź³ė³ ķģ¼ėŖ
ģ ė²ķø prefix (`01_input.txt`, `02_detection.json`, `03_rewrite.md`)
|
|
179
|
+
- ķģ¼ ģ”“ģ¬ ķģøģ `Glob` ėźµ¬ (Bash `ls` źøģ§ ā OS ķź²½ ģ씓ģ±)
|
|
180
|
+
- ķģ¼ ģ½źø°ė `Read` ėźµ¬ (Bash `cat` źøģ§)
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Design Process
|
|
185
|
+
|
|
186
|
+
ķė¤ģ¤ ģ¤ź³ ģģ²ģ“ ė¤ģ“ģģ ė ģģ:
|
|
187
|
+
|
|
188
|
+
1. **ėŖ©ģ ėŖ
ķķ**: ģ“ ķė¤ģ¤ź° ģ“ė¤ ė¬øģ 넼 ķ“ź²°ķėź°? ģ
ė „ź³¼ ģ¶ė „ģ 묓ģģøź°?
|
|
189
|
+
2. **ģ² ģ¹ ėģ¶**: ģ ė ģė°ķė©“ ģ ėė ģ”°ź±“ģ“ ė¬“ģģøź°? (ģ미 볓씓, ķģ§ źø°ģ¤ ė±)
|
|
190
|
+
3. **ģģ“ģ ķø ė¶ķ“**: ģ 첓 ģģ
ģ ėØģ¼ ģ±
ģ ėØģė” ė¶ķ“. ķģ§/ģ¤ķ/ź²ģ¦ ė ģ“ģ“ źµ¬ė¶.
|
|
191
|
+
4. **Fast/Full ģ ķ**: ģ
ė „ ķ¬źø°, ź²ģ¦ ė
립ģ±, ė°ģ ģė ģźµ¬ģ ė°ė¼ ź²°ģ .
|
|
192
|
+
5. **ķģ“ķė¼ģø 씰립**: ėØź³ ģģ, ė³ė ¬ ģ²ė¦¬ ź°ė„ 구ź°, ģ¬ģė 루ķ, ģģ¤ģ»¬ė ģ“ģ
씰걓.
|
|
193
|
+
6. **ķģ¼ ģģ±**: CLAUDE.md ā AGENT.mdė¤ ā SKILL.md ā Command ķģ¼ ģģė” ģģ±.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Output Format
|
|
198
|
+
|
|
199
|
+
ķė¤ģ¤ ģ¤ź³ ź²°ź³¼ė ė¤ģ ķķė” ģ ź³µķė¤:
|
|
200
|
+
|
|
201
|
+
**ģ¤ź³ 리ķ¬ķø:**
|
|
202
|
+
- ėŖ©ģ ė° ģ² ģ¹ ģģ½
|
|
203
|
+
- ģģ“ģ ķø ėŖ©ė” (ģ“ė¦ / ģ±
ģ / Fast or Strict ģģ)
|
|
204
|
+
- ķģ“ķė¼ģø ė¤ģ“ģ“ź·øėØ (ķ
ģ¤ķø)
|
|
205
|
+
- ėė ķ 리 구씰 ķøė¦¬
|
|
206
|
+
|
|
207
|
+
**ģ¤ģ ķģ¼ ģģ±:**
|
|
208
|
+
- ģ¤ź³ ģ¹ģø ķ `.claude/` ķģ¼ė¤ģ ģ§ģ ģģ±
|
|
209
|
+
- CLAUDE.mdė¶ķ° ģģķ“ģ AGENT.md ā SKILL.md ā Command ģģė” ģ§ķ
|
|
210
|
+
- ź° ķģ¼ ģģ± ķ "ģ“ ķģ¼ģ“ ė“ė¹ķė ģ±
ģ" ķ ģ¤ ķģø
|
|
@@ -59,6 +59,11 @@ When writing Korean developer documentation, follow these conventions observed i
|
|
|
59
59
|
|
|
60
60
|
**Korean Sentence Writing**
|
|
61
61
|
|
|
62
|
+
> **AI ķ° ķØķ“ 룰ė¶**: ģė ģģ¹ģ ź°ģ„ ģ주 ė
øģ¶ėė ģģė¤.
|
|
63
|
+
> ģ 첓 ķØķ“(A~J, S1/S2/S3 ģ¬ź°ė Ć 40+ ģėøķØķ“)ģ
|
|
64
|
+
> `references/ai-tell-quick-rules.md`넼 ģ°øģ”°ķė¤.
|
|
65
|
+
> ķźµģ“ ģ°ģ¶ė¬¼ ģģ± ģ ģ ģ“ ķģ¼ģ ģ½ź³ ķØķ“ģ ģģ§ķė¤.
|
|
66
|
+
|
|
62
67
|
**ķµģ¬ ģģ¹: ģģ“ė” ģź°ķź³ ė²ģķģ§ ė§ ź²**
|
|
63
68
|
ķźµģ“ė” ģ§ģ ģģ±ķė¤. "dependency-based execution planning"ģ 머릿ģģģ 먼ģ ģģ“ė” źµ¬ģ±ķ ė¤ ė²ģķė©“ ė²ģģ²“ź° ėė¤.
|
|
64
69
|
|
|
@@ -228,6 +233,47 @@ Apply these principles when structuring any document:
|
|
|
228
233
|
ā Do (Reference): `` `eventSourcing` `boolean` ā ģ“ė²¤ķø ģģ± ķģ±ķ ģ¬ė¶. źø°ė³øź°: `false` ``
|
|
229
234
|
ā Do (Learning/Explanation): "ģ“ ģė¹ģ¤ė ģ“ė²¤ķø ģģ±(Event Sourcing)ģ¼ė” ģķ넼 ź“리ķ“ģ. ģ“ė²¤ķø ģģ±ģ ģķģ ģµģ¢
ź° ėģ ė³ķ넼 ģ¼ģ¼ķØ ėŖØė ģ“벤ķøė„¼ źø°ė”ķė ė°©ģģ“ģģ."
|
|
230
235
|
|
|
236
|
+
## Korean Output Self-Review
|
|
237
|
+
|
|
238
|
+
ķźµģ“ ė¬øģ ģģ±ģ“ ėėė©“ ģ ģ¶ ģ ģ ģė ģ ģ°Øė” ģź° ź²ģ¦ķė¤.
|
|
239
|
+
|
|
240
|
+
### S1 ķØķ“ ģ씓 źøģ§ (ķėė¼ė ė°ź²¬ ģ ģ¦ģ ģģ )
|
|
241
|
+
|
|
242
|
+
ģ 첓 ķØķ“ģ `references/ai-tell-quick-rules.md` ģ°øģ”°. ķµģ¬ S1ė§ ģøė¼ģøģ¼ė”:
|
|
243
|
+
|
|
244
|
+
| ID | ķØķ“ | ģ²ė°© |
|
|
245
|
+
|----|------|------|
|
|
246
|
+
| A-1 | "~ģ ėķ“(ģ)" | ėŖ©ģ ź²© ģ”°ģ¬ė” ģ§ź²° |
|
|
247
|
+
| A-2 | "~넼 ķµķ“" ėØė° | "~ė”", "~ķ“ģ"ė” ė¶ģ° |
|
|
248
|
+
| A-3 | "~ģ ģģ“(ģ)" | "~ģģ", "~ģ ė³¼ ė" |
|
|
249
|
+
| A-7 | "ź°ģ§ź³ ģė¤" / have+N ģ§ģ | ķģ©ģ¬Ā·ėģ¬ ķģ |
|
|
250
|
+
| A-8 | ģ“ģ¤ ķ¼ė "~ėģ“ģ§ė¤" | ėØģ¼ ķ¼ė ėė ė„ė |
|
|
251
|
+
| A-16 | "ź·ø/ź·øė
/ź·øė¤" ėėŖ
ģ¬ ėØė° | ģķ ģėµ ėė ėŖ
ģ¬źµ¬ |
|
|
252
|
+
| C-5 | ģ“ėŖØģ§ ėØė° (ģ¹¼ė¼Ā·ė¦¬ķ¬ķø) | ģ ė¶ ģģ |
|
|
253
|
+
| C-10 | ģ½ė” ė¶ģ ķ¤ė© "X: Y" ė°ė³µ | ķģ ķ¤ė©ģ¼ė” |
|
|
254
|
+
| C-11 | ģ°ź²°ģ“미 ė¤ ģ¼ķ (-ź³ , -ė©°, ė± ģ§ķ) | ģ¼ķ ģ ź±° |
|
|
255
|
+
| D-1 | "ź²°ė” ģ ģ¼ė”/ė°ė¼ģ/ģ“넼 ķµķ“" 3ķ+ | ģģ ėė 1ķė” ģ ķ |
|
|
256
|
+
| D-2 | "ģģ¬ķė ė°ź° ķ¬ė¤" | ģģ ėė źµ¬ģ²“ ź²°ė” ģ¼ė” |
|
|
257
|
+
| D-3 | "ė³øģ§ģ ģ¼ė”/ķµģ¬ģ ģ¼ė”" | ģģ |
|
|
258
|
+
| D-4 | hype ģ“ķ 3ķ+ (ķź²©ģ Ā·ķźø°ģ Ā·ź°ė „ķ) | 구첓 ģģ¹Ā·ģ¬ģ¤ė” |
|
|
259
|
+
| D-5 | ģģøķ ģ¶ģ ģ£¼ģ“ ("źø°ģ ģ“ ė¬»ėė¤") | ģ¬ėĀ·źø°ź“ ģ£¼ģ“ė” |
|
|
260
|
+
| D-6 | ź²°ė§ ź³µģ "~ķ ėė¤/ģ§źøģ“ģ¼ė§ė”" | ķģė” ė«ź±°ė ģģ |
|
|
261
|
+
| H-1 | 문ė ģ ģģ¬ "ėķĀ·ė°ė¼ģĀ·ģģøė¬" 5ķ+ | ėė ģ ź±° |
|
|
262
|
+
| H-3 | ė©ķ ģ§ģ
"ģ“ėĀ·ģ“ ģ ģģ" 3ķ+ | 본문ģ ė
¹ģ“ź±°ė ģģ |
|
|
263
|
+
| I-1 | "~ģø ź²ģ“ė¤/~ķ ź²ģ“ė¤" ź²°ė§ | ķģķģ¼ė” |
|
|
264
|
+
| J-2 | ė°ģ“ķ ź°ģ”° 5ķ+ | ķµģ¬ 1~2ź°ė§ ģ ģ§ |
|
|
265
|
+
|
|
266
|
+
### ģź° ź²ģ¦ 6ķ 첓ķ¬ė¦¬ģ¤ķø
|
|
267
|
+
|
|
268
|
+
1. **ź³ ģ ėŖ
ģ¬Ā·ģģ¹Ā·ė ģ§Ā·ģøģ©** 100% ģ문 볓씓
|
|
269
|
+
2. **ė ģ§ģ¤ķ° 볓씓** ā ź²©ģ첓/ķģ“첓 ģ¼ź“ (ģź³ ģ 첓 ėģ¼ ģ“미)
|
|
270
|
+
3. **ģ„ė„“ ģ“ķ ģģ** ā 리ķ¬ķøź° ģģøģ“첓ė”, ź°ģ“ėź° ģ¹¼ė¼ģ²“ė” ķė„“ģ§ ģģėź°
|
|
271
|
+
4. **ģ씓 S1 ķØķ“ 0걓** ā ģ ķ źø°ģ¤
|
|
272
|
+
5. **ģģ ģ¶ź° ģģ** ā ģ문ģ ģė ė¹ģ Ā·ģģ¬Ā·ģ¬ģ¤Ā·ģģ넼 ģ¶ź°ķģ§ ģģėź°
|
|
273
|
+
6. **ģ“ėŖØģ§Ā·ė³¼ė ėØģ© ģģ** ā źø°ģ 문ģģģ ģ“ėŖØģ§ ģ ė¶ ģģ , ė³¼ėė ģµģ“ ė±ģ„ ķµģ¬ ģ©ģ“ģė§
|
|
274
|
+
|
|
275
|
+
ģė° ķėŖ©ģ“ ģģ¼ė©“ ķ“ė¹ źµ¬ź°ė§ ģģ ķ ģ¬ź²ģ¦.
|
|
276
|
+
|
|
231
277
|
## Output Format
|
|
232
278
|
|
|
233
279
|
When writing documentation, produce:
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Quick Rules ā Monolith Fast Path ģ ģ© (v2.0)
|
|
2
|
+
|
|
3
|
+
`humanize-monolith` ģģ“ģ ķøź° ķ ģ½ģģ ķģ§Ā·ģ¤ė¬øĀ·ģ첓ź²ģ¦ģ ėė“źø° ģķ“ ģ¬ģ©ķė ģ¬ė¦¼ 룰ė¶. ė³øģ§ `ai-tell-taxonomy.md`(590ģ¤)ģģ S1Ā·S2 ķµģ¬ ķØķ“ė§ ģ¶ė ¤ ģ²ė°©ź³¼ ķØź» ķ ģ¤ė” ģģ¶ķė¤.
|
|
4
|
+
|
|
5
|
+
**ģģ¹:** ģ ģ 1ģ¤ + ģ²ė°© 1ģ¤. ģ문 ģėµ. ė³øģ§ IDģ 1:1 매ģ¹.
|
|
6
|
+
|
|
7
|
+
**Do-NOT (ķģ§Ā·ģ¤ė¬ø ėŖØė ģ ģø):** ź³ ģ ėŖ
ģ¬Ā·ģ ķėŖ
Ā·ėŖØėøėŖ
Ā·źø°ź“ėŖ
, ģģ¹Ā·ė ģ§Ā·ėØģ, ķ°ė°ģ“ķ ģ ģ§ģ ģøģ©, ė²ė„ 씰문, ģķĀ·ķķĀ·ķµź³ ķźø°, ģģ“ ģ½ģ“(LLMĀ·GPUĀ·MCPĀ·API ė± ģ
ź³ ķģ¤).
|
|
8
|
+
|
|
9
|
+
**ź³¼ģ¤ė¬ø ź°ė:** ė³ź²½ė„ 30% ģ“ź³¼ = ź²½ź³ , 50% ģ“ź³¼ = ź°ģ ģ¤ėØĀ·ė”¤ė°±.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## A. ė²ģķ¬ (Translation-ese)
|
|
14
|
+
|
|
15
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| A-1 | "~ģ ėķ“(ģ)" | S1 | ėŖ©ģ ź²© ģ”°ģ¬ė” ģ§ź²°("Xģ ėķ“ ė
¼ģ" ā "X넼 ė
¼ģ") |
|
|
18
|
+
| A-2 | "~넼 ķµķ“/ķµķģ¬" ėØė° | S1 | "~ė”", "~ķ“ģ", "~ķØģ¼ė”ģØ"ė” ė¶ģ° |
|
|
19
|
+
| A-3 | "~ģ ģģ“(ģ)" | S1 | "~ģģ", "~ģ ė³¼ ė" |
|
|
20
|
+
| A-4 | "~ė¼ė ģ ģģ" 3ķ+ | S2 | "~ģ", "~ė¼ė ģ“ģ ė”" |
|
|
21
|
+
| A-5 | "~ģ ź“ė Øķģ¬/ź“ė Øė" | S2 | "~ģ", "~ģ" |
|
|
22
|
+
| A-6 | "~ģ źø°ė°ķģ¬/ė°ķģ¼ė”" ėØė° | S2 | "~ė”", "~ģ ė³“ź³ " |
|
|
23
|
+
| A-7 | "ź°ģ§ź³ ģė¤" / haveĀ·makeĀ·takeĀ·give + N ģ§ģ | S1 | ķģ©ģ¬Ā·ėģ¬ ķģ ėė ģ“ģ¤ģ£¼ģ“("ķģ넼 ź°ģ§ė¤" ā "ķģ넼 ķė¤", "ź°ķ ź²½ģė „ģ ź°ģ§ź³ ģė¤" ā "ź²½ģė „ģ“ ź°ķė¤") |
|
|
24
|
+
| A-8 | ģ“ģ¤ ķ¼ė "~ėģ“ģ§ė¤" | S1 | ė„ė ėė ėØģ¼ ķ¼ė ("ķėØėģ“ģ§ė¤" ā "ķėØėė¤") |
|
|
25
|
+
| A-9 | "~ģ ģķ“" ķ¼ė | S2 | ķģģ넼 주ģ“ė”("AIģ ģķ“ ģģ±" ā "AIź° ė§ė ") |
|
|
26
|
+
| A-10 | "~ķ ģ ģė¤" ėØė° | S2 | ėØģøģ¼ė”("ėģ¼ ģ ģė¤" ā "ėģøė¤") |
|
|
27
|
+
| A-11 | "~ģ ģķ“" ėŖ©ģ ģ ėØė° | S2 | "~ė ¤ź³ ", "~ģķ" |
|
|
28
|
+
| A-15 | ģ¶ģ ģ£¼ģ“ + ė§ė„ ėģ¬ / ģ¬ģĀ·ģøģ§ ėģ¬ | S2 | 구첓 주ģ“ė” ķģ, ģ¬ģģ "X ė문ģ/ėė¶ģ/ė” ģøķ“" ė¶ģ¬ģ , ģøģ§ ėģ¬(suggest/show/indicate/reveal)ė "~ģ ė°ė„“ė©“ ~ģ“ė¤"Ā·"~ģ¼ė” ~ģ“ ėė¬ė¬ė¤" ė¶ė¦¬ |
|
|
29
|
+
| A-16 | "ź·ø/ź·øė
/ź·øź²/ź·øė¤" ėØė½ ā„3ķ ģģ“ ėėŖ
ģ¬ ģ§ģ | S1 | 50%+ ģķ(ģėµ) ėė ķøģ¹Ā·ėŖ
ģ¬źµ¬ė” (ź¹ėķ 2009) |
|
|
30
|
+
| A-18 | ėŖ
ģ¬ ģ ā„3ģ“ģ ź“ķźµ¬Ā·ź“ź³ģ ģ¢ķ„ ģģ | S2 | ė¬øģ„ ė¶ė¦¬ ėė ķģ¹ ėź²©ģ ("X넼 ė§ė¬ėė°, ź·ø Xė ā¦") (ė°ģ„ģ 2018) |
|
|
31
|
+
| A-19 | ģ“ģ¤ ģ”°ģ¬ "~ģģģ/~ģė”ģ/~ģ¼ė”ģ/~ģģ/~ģ¼ė”ė¶ķ°ģ" | S2 | ģ Ā·źµ¬ė” ķģ“ģ°źø°. ėØģ ~ģė ė¹ėģ (ź¹ģ ģ° 2007) |
|
|
32
|
+
|
|
33
|
+
## B. ģģ“ ģøģ©Ā·ģ©ģ“ ź³¼ė¤
|
|
34
|
+
|
|
35
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| B-1 | ķźø + ź“ķø ģģ“ ė§¤ė² ("~(Sovereign AI)" ģ²ė¼) | S2 | 첫 ė±ģ„ė§ ė³źø°, ģ“ķ ķźøė§ |
|
|
38
|
+
| B-2 | ģģ“ ģ“ķ ģ§ģ ź°ė„ķė° ź·øėė” | S2 | ķźµģ“ė” ģ®źø°ė ģ
ź³ ķģ¤ģ ģ ģ§ |
|
|
39
|
+
|
|
40
|
+
## C. 구씰ģ AI ķØķ“
|
|
41
|
+
|
|
42
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| C-5 | ģ“ėŖØģ§ ėØė° | S1 | ģ„ė„“ ģ¹¼ė¼Ā·ė¦¬ķ¬ķøė©“ ģ ė¶ ģģ |
|
|
45
|
+
| C-7 | "먼ģ Ā·ė°ė©“Ā·ź²°źµ" 3ėØ ź³µģ | S2 | ģ ģģ¬ 1~2ź°ė” ģ¤ģ“ź±°ė 본문ģ ė
¹ģ¬ ģ ź±° |
|
|
46
|
+
| C-8 | "Aģøź°Ā·Bģøź°" ėźµ¬ ė°ė³µ | S2 | ķ ė²ė§ ģ“ė¦¬ź³ ė머ģ§ė ķģ문ģ¼ė” |
|
|
47
|
+
| C-9 | ģ«ģ ź“ķø ģøė±ģ± "(1)Ā·(2)Ā·(3)" | S2 | 본문ģ ė
¹ģ“ź±°ė ėØģ ģ¤ė°źæ |
|
|
48
|
+
| C-10 | ģ½ė” ė¶ģ ķ¤ė© "X: Y" ė°ė³µ | S1 | ķ¤ė© ģ§§ź² ėė ķģ ķ¤ė©ģ¼ė” |
|
|
49
|
+
| C-11 | ģ°ź²°ģ“미 ė¤ ģ¼ķ (-ź³ /-ė©°/-ģ§ė§/-ė©°ģ/-ģģ/-ģ“ģ ģ§ķ ģ¼ķ) | S1 | ģ¼ķ ģ ź±°. 6+ķ=ź°ķ ģ ķø. KatFish 4.84ė°° ė¶ė¦¬ė |
|
|
50
|
+
|
|
51
|
+
## D. AI ķ¹ģ ģ ź“ģ©źµ¬ (Signature Phrases)
|
|
52
|
+
|
|
53
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
54
|
+
|---|---|---|---|
|
|
55
|
+
| D-1 | ź²°ģ° ķ¼ė² lexicon "ź²°ė” ģ ģ¼ė”/ė°ė¼ģ/ģ“넼 ķµķ“/ź·øė¬ėÆė”/ģģ½ķė©“/ģ 리ķė©“" | S1 | 3ķ ģ“ź³¼ ģ 1~2걓 ė¤ė„ø ģ¢
ź²°ė” ģ¹ķ, ėėØøģ§ ģģ |
|
|
56
|
+
| D-2 | "ģģ¬ķė ė°ź° ķ¬ė¤/주목ķ ė§ķė¤" | S1 | ģģ ėė źµ¬ģ²“ ź²°ė” ģ¼ė” |
|
|
57
|
+
| D-3 | "ė³øģ§ģ ģ¼ė”/ķµģ¬ģ ģ¼ė”" | S1 | ģģ |
|
|
58
|
+
| D-4 | hype ģ“ķ(ķź²©ģ Ā·ģėģ Ā·ź°ė „ķĀ·ķźø°ģ Ā·ģ¹ėŖ
ģ ) 3ķ+ | S1 | 구첓 ģģ¹Ā·ģ¬ģ¤ė” ķģ |
|
|
59
|
+
| D-5 | ģģøķ ģ¶ģ 주ģ“("źø°ģ ģ“ ė¬»ėė¤Ā·ģėź° ė¶ė„øė¤") | S1 | ģ¬ėĀ·źø°ź“ ģ£¼ģ“ė” |
|
|
60
|
+
| D-6 | ź²°ė§ ź³µģ "~ķ ėė¤/~ķ“ģ¼ ķė¤/~ģ§źøģ“ģ¼ė§ė”" | S1 | ķģė” ė«ź±°ė ģģ |
|
|
61
|
+
| D-7 | ė³ķ ź³µģ "Xģģ Yė”" ė°ė³µ | S2 | ķ ė²ė§, ė머ģ§ė ģ¼ė° ģģ |
|
|
62
|
+
|
|
63
|
+
## E. 리ė¬Ā·ģ¢
ź²°ģ“미
|
|
64
|
+
|
|
65
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| E-1 | ė¬øģ„ źøøģ“ ź· ģ¼(stdev 8 미ė§) | S2 | ėØė¬ø 1~2ź° / ģ„문 1ź°ė„¼ ź° ė¬øėØģ ģėģ ģ½ģ
|
|
|
68
|
+
| E-2 | ėģ¼ ģ¢
ź²°ģ“미 "~ė¤" 4ė¬øģ„ ģ°ģ + ģ§ķķ "~ź³ ģė¤" ģė 매ķ | S2 | "~ģė¤Ā·~ć“ė¤Ā·~ėė¤Ā·~źø° ė§ė Øģ“ė¤Ā·~ć¹ ź²ģ“ė¤" ė± ė¤ģķ. "~ź³ ģė¤" ėØģ ģģ ķģ ź°ė„ ģ ķģ("ģ½ź³ ģė¤" ā "ģ½ėė¤") |
|
|
69
|
+
| E-7 | ģ²ģ ź²½ģ“ė² 4ėØź³(ķ“ė¼/ķź²/ķģ¤/ķ“ģ/ķ©ģ¼) ģ¼ź“ģ± ģģ¤ (ėķĀ·źµ¬ģ“ ķģ ) | S2 | ķ ėØė½ ė“ ķ¼ģ© źøģ§, 격ģ ģ¼ź“ (ź¹ķģ 2019, estimated) |
|
|
70
|
+
|
|
71
|
+
## F. ź³¼ėķ ģģĀ·ģ¤ė³µ
|
|
72
|
+
|
|
73
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
74
|
+
|---|---|---|---|
|
|
75
|
+
| F-4 | ķģģ“ ėŖ
ģ¬ķ -ģ±/-ģ /-ķ + ģģ“ ėŖ
ģ¬ķ -tion/-ment/-ness/-ity ėģ (ķ źø 12ķ+) | S2 | ėģ¬Ā·ķģ©ģ¬ ģ“ź·¼ģ¼ė” ķģ("the implementation of the policy" ā "ģ ģ±
ģķ" ėė "ģ ģ±
ģ ģķķźø°") |
|
|
76
|
+
| F-5 | "~ģ N" ģ¶ģ ģ²“ģø ("ģ ėµģ ķØģĀ·ģ¤ģ²ģ źø°ė°") | S2 | ėŖ
ģ¬+ėŖ
ģ¬ ėė ķģ“ģ°źø°("ģ ėµ ķØģĀ·ģ¤ģ²ģ źø°ė°") |
|
|
77
|
+
|
|
78
|
+
## G. Hedging
|
|
79
|
+
|
|
80
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
81
|
+
|---|---|---|---|
|
|
82
|
+
| G-1 | "~ź²ģ“ė¤/~ķ ź²ģ“ė¤" 미ė ėØģ ėØė° | S2 | ķģ¬ķĀ·ķģ ķģ¼ė” |
|
|
83
|
+
| G-2 | "~ė” ė³“ģøė¤/~ģø ėÆķė¤" ģ¶ģ ėØė° | S2 | ėØģø ź°ė„ķ ź³³ģ ėØģø |
|
|
84
|
+
| G-3 | ģģ ź· ķ lexicon "ģģŖ½ ėŖØė/ė ź°ģ§ ėŖØė/ģ„ģ ė ģģ§ė§/ģ ģ¤ķź²/ź· ķ" | S2 | 4ķ ģ“ź³¼ ģ 1~2걓 ķģ ģ
ģ„ģ¼ė” ģ¹ķ |
|
|
85
|
+
|
|
86
|
+
## H. ģ ģģ¬ ėØė°
|
|
87
|
+
|
|
88
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
89
|
+
|---|---|---|---|
|
|
90
|
+
| H-1 | 문ė ģ ģģ¬ "ėķĀ·ė°ė¼ģĀ·ģ¦Ā·ėģź°Ā·ģģøė¬Ā·ź²ė¤ź°Ā·ėģ±ģ“" 5ķ+ | S1 | ėė ģ ź±°. ė¬øģ„ ģģ²“ź° ķė¦ģ ģ”ź² |
|
|
91
|
+
| H-3 | ė©ķ ģ§ģ
"ģ“ėĀ·ģ“ ģ ģģĀ·ģ“ ź“ģ ģģĀ·ģ“ ė§ģ" 3ķ+ | S1 | 본문ģ ė
¹ģ“ź±°ė ģģ |
|
|
92
|
+
| H-4 | "ģ¦" ėØė° | S2 | 1ķė” ģ ķ |
|
|
93
|
+
|
|
94
|
+
## I. ķģėŖ
ģ¬Ā·ģ씓ėŖ
ģ¬
|
|
95
|
+
|
|
96
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| I-1 | "~ģø ź²ģ“ė¤/~ķ ź²ģ“ė¤" ź²°ė§ | S1 | ķģķģ¼ė” |
|
|
99
|
+
| I-2 | "Xģ ~ė¼ė ģ ģ ģė¤" | S2 | "Xė ~ė¤" ģ§ģ¤ė” |
|
|
100
|
+
| I-3 | "~ė¤ė ė»ģ“ė¤/~ė¤ė ģ미ė¤" ź²°ė§ | S2 | 본문ģ ķģ“ ģ°źø° |
|
|
101
|
+
| I-4 | ź¶ź³ ķ ź²°ė§ "~ķ“ģ¼ ķė¤Ā·~ķ©ėė¤" ė°ė³µ | S2 | ķģĀ·ėØģøģ¼ė” |
|
|
102
|
+
|
|
103
|
+
## J. ģź° ģ„ģ
|
|
104
|
+
|
|
105
|
+
| ID | ķØķ“ | ģ¬ź°ė | ģ²ė°© |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| J-1 | ķ¤ė© ė§ķ¬ė¤ģ“ ** ź°ģ”° ėØė° | S2 | ģ¹¼ė¼Ā·ė¦¬ķ¬ķøė©“ ź±°ģ ė¤ ģ ź±° |
|
|
108
|
+
| J-2 | ė°ģ“ķ ź°ģ”° 5ķ+ | S1 | ķµģ¬ ķė ź°ė§ ģ“ė¦¬ź³ ķģ“ė” |
|
|
109
|
+
| J-3 | ė¶ė¦æ 리ģ¤ķø (ģ„ė„“ź° ģ¹¼ė¼Ā·ė¦¬ķ¬ķøģ¼ ė) | S2 | ė¬øėØ ģ°ė¬øģ¼ė” ķµķ© |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## ģ첓ź²ģ¦ 첓ķ¬ė¦¬ģ¤ķø (monolith ģ¤ė¬ø ķ ģź° ģ ź²)
|
|
114
|
+
|
|
115
|
+
ģ¤ė¬ø ģ§ķ 5ģ“ ė“ģ ė¤ģģ ģ첓 ģ ź²ķė¤. ķ ķėŖ©ģ“ė¼ė ģė°ģ“ė©“ ķ“ė¹ edit 딤백.
|
|
116
|
+
|
|
117
|
+
1. **ź³ ģ ėŖ
ģ¬Ā·ģģ¹Ā·ė ģ§Ā·ģøģ© 100% 볓씓**: ģ문 ėė¹ ķ źøģė ė¤ė„“ģ§ ģģź°
|
|
118
|
+
2. **ė³ź²½ė„ **: 30% ģ“ķģøź° (50% ģ“ź³¼ė ģģ
ģ¤ėØ)
|
|
119
|
+
3. **ģ„ė„“ ģ“ķ ģģ**: ģ¹¼ė¼ģ“ ģģøģ“·문ķģ¼ė” ė³ķģ§ ģģėź°, 리ķ¬ķøź° ėøė”ź·øģ²“ė” ėØģ“ģ§ģ§ ģģėź°
|
|
120
|
+
4. **register 볓씓**: ģ문 격ģ첓멓 ź²°ź³¼ė ź²©ģ첓. ķģ“ģ²“ė” ėØģ“ėØė¦¬ģ§ ģėė¤
|
|
121
|
+
5. **ģ씓 S1 ķØķ“ 0걓**: D-1~D-7, A-7, A-8, A-16, C-5, C-10, C-11, H-1, I-1, J-2 ķµģ¬ S1ģ“ ėØģģģ§ ģģź°
|
|
122
|
+
6. **ģøź³µ ķķ ģģ **: ģ문ģ ģė ė¹ģ Ā·ģģ¬Ā·ė¬øķģ ķķģ ģ¤ė¬ø ź³¼ģ ģģ ģģė” ģ¶ź°ķģ§ ģģėź°
|
|
123
|
+
|
|
124
|
+
ģė° ģ: edit 딤백 ā ė¤ģ ģ¤ė¬ø ā ģ¬ģ ź². ģ첓 루ķ ģµė 1ķ. ģ“ģ ėÆøķ“ź²°ģ“ė©“ 결과넼 ź·øėė” ģ¶ė „ķė `summary.md`ģ "ģź°ź²ģ¦ ėÆøķµź³¼ ķėŖ© N걓" ķźø°.
|
|
125
|
+
|
|
126
|
+
## ė±źø źø°ģ¤ (ģź° ģ±ģ )
|
|
127
|
+
|
|
128
|
+
- **A**: S1 ģ씓 0, S2 ģ씓 2 ģ“ķ, ė³ź²½ė„ 10~25%, ģ첓ź²ģ¦ 6ķ ėŖØė ķµź³¼
|
|
129
|
+
- **B**: S1 ģ씓 0, S2 ģ씓 4 ģ“ķ, ģ첓ź²ģ¦ 5ķ ģ“ģ ķµź³¼
|
|
130
|
+
- **C**: S1 ģ씓 1~2 ėė ģ첓ź²ģ¦ 4ķ ģ“ķ ķµź³¼ ā ģ¬ģ©ģģź² strict ėŖØė ź¶ź³
|
|
131
|
+
- **D**: S1 ģ씓 3+ ėė ė³ź²½ė„ 50% ģ“ź³¼ ā ģģ
ģ¤ėØ ź¶ź³
|
|
132
|
+
|
|
133
|
+
> v2.0 ģ ź·/볓ź°ģ A-7Ā·A-15Ā·A-16Ā·A-18Ā·A-19Ā·E-2Ā·E-7Ā·F-4 **8걓 (A-17 hold)**. ķģ ģøģ© ģ 문ģ `references/scholarship.md`. post-editese 3ģ¶ metricģ ė³ø ė£°ė¶ ėÆøė°ģ(metric only ķøė). A-17 묓ģ 물·ģ¶ģėŖ
ģ¬ '-ė¤'ģ ķģ anchor(ģ ģģ² 2007Ā·ź³½ģ주·ģ§ģ¤ė” 2011) ź°ķė ģøė¶ ķģ°Ø(2026-05-07 ģķ¤ 6ķø)ģģ ģģ± 0걓 ā NMT ģė³ø ģ¶ė „ ķģ°Ø ķ v2.1ģģ ėģ¼ IDė” ģ¬ķź°.
|
|
134
|
+
|
package/skills/agent/SKILL.md
CHANGED
|
@@ -49,6 +49,7 @@ Invoke any Gestalt Role or Review agent directly, outside the Gestalt pipeline.
|
|
|
49
49
|
| Agent | Domain |
|
|
50
50
|
|-------|--------|
|
|
51
51
|
| `architect` | System design, scalability, design patterns |
|
|
52
|
+
| `harness-architect` | Claude Code harness design, agent pipeline, skill/command structure |
|
|
52
53
|
| `backend-developer` | API, database, authentication, server |
|
|
53
54
|
| `frontend-developer` | UI, React, accessibility |
|
|
54
55
|
| `designer` | UX/UI, design systems, interaction |
|
|
@@ -56,6 +57,7 @@ Invoke any Gestalt Role or Review agent directly, outside the Gestalt pipeline.
|
|
|
56
57
|
| `devops-engineer` | CI/CD, infrastructure, monitoring |
|
|
57
58
|
| `product-planner` | Requirements, roadmap, user stories |
|
|
58
59
|
| `researcher` | Analysis, benchmarks, best practices |
|
|
60
|
+
| `technical-writer` | Documentation, API docs, README, developer guides |
|
|
59
61
|
|
|
60
62
|
**Review Agents** ā code review specialists:
|
|
61
63
|
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: seed
|
|
3
|
-
version: "1.0.0"
|
|
4
|
-
description: "Generate a Seed specification from a completed interview"
|
|
5
|
-
triggers:
|
|
6
|
-
- "generate seed"
|
|
7
|
-
- "create spec"
|
|
8
|
-
- "build seed"
|
|
9
|
-
inputs:
|
|
10
|
-
sessionId:
|
|
11
|
-
type: string
|
|
12
|
-
required: true
|
|
13
|
-
description: "The interview session ID to generate a seed from"
|
|
14
|
-
force:
|
|
15
|
-
type: boolean
|
|
16
|
-
required: false
|
|
17
|
-
description: "Force generation even if ambiguity threshold is not met"
|
|
18
|
-
outputs:
|
|
19
|
-
- seed
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
# Seed Generation Skill
|
|
23
|
-
|
|
24
|
-
This skill transforms completed interview data into a structured project specification (Seed).
|
|
25
|
-
|
|
26
|
-
## Output Structure
|
|
27
|
-
|
|
28
|
-
- **Goal**: Clear project objective
|
|
29
|
-
- **Constraints**: Technical and business constraints
|
|
30
|
-
- **Acceptance Criteria**: Measurable success conditions
|
|
31
|
-
- **Ontology Schema**: Entity-relationship model
|
|
32
|
-
- **Gestalt Analysis**: Findings from each principle applied
|
|
33
|
-
|
|
34
|
-
## Requirements
|
|
35
|
-
|
|
36
|
-
- Interview session must be in `completed` status
|
|
37
|
-
- Ambiguity score must be ⤠0.2 (unless `force` is true)
|
|
38
|
-
|
|
39
|
-
## Passthrough Mode
|
|
40
|
-
|
|
41
|
-
API ķ¤ ģģ“ MCP ģė² ģ¤ķ ģ ģė ķģ±ķ. Seed ģģ±ģ callerź° ģ§ģ ģķķė¤.
|
|
42
|
-
|
|
43
|
-
### ģ¶ź° Input ķė¼ėÆøķ°
|
|
44
|
-
|
|
45
|
-
| ķė¼ėÆøķ° | ķģ
| ķģ | ģ¤ėŖ
|
|
|
46
|
-
|---------|------|------|------|
|
|
47
|
-
| `seed` | object | 2ėØź³ģģ ķģ | callerź° ģģ±ķ Seed JSON |
|
|
48
|
-
| `seed.goal` | string | ķģ | ķė”ģ ķø ėŖ©ķ |
|
|
49
|
-
| `seed.constraints` | string[] | ķģ | źø°ģ /ė¹ģ¦ėģ¤ ģ ģ½ģ”°ź±“ |
|
|
50
|
-
| `seed.acceptanceCriteria` | string[] | ķģ | ģģ© źø°ģ¤ |
|
|
51
|
-
| `seed.ontologySchema` | object | ķģ | ģķ°ķ°-ź“ź³ ėŖØėø |
|
|
52
|
-
| `seed.gestaltAnalysis` | array | ķģ | ź²ģķķø ė¶ģ ź²°ź³¼ |
|
|
53
|
-
|
|
54
|
-
### 2ėØź³ ķė”ģ°
|
|
55
|
-
|
|
56
|
-
**1ėØź³: SeedContext ģģ²**
|
|
57
|
-
```
|
|
58
|
-
ges_generate_seed({ sessionId: "<id>" })
|
|
59
|
-
```
|
|
60
|
-
ā `{ status: "prompt", seedContext, message }` ė°ķ
|
|
61
|
-
|
|
62
|
-
SeedContext ķė:
|
|
63
|
-
- `systemPrompt`: Seed ģģ±ģ© ģģ¤ķ
ķ딬ķķø
|
|
64
|
-
- `seedPrompt`: ģøķ°ė·° ė“ģ© źø°ė° Seed ģģ± ķ딬ķķø
|
|
65
|
-
- `allRounds[]`: `{ roundNumber, question, response, gestaltFocus }`
|
|
66
|
-
|
|
67
|
-
**2ėØź³: Seed ģ ģ¶ ė° ź²ģ¦**
|
|
68
|
-
```
|
|
69
|
-
ges_generate_seed({
|
|
70
|
-
sessionId: "<id>",
|
|
71
|
-
seed: {
|
|
72
|
-
goal: "ėŖ
ķķ ķė”ģ ķø ėŖ©ķ",
|
|
73
|
-
constraints: ["TypeScript ģ¬ģ©", "REST API"],
|
|
74
|
-
acceptanceCriteria: ["ģėµ ģź° 200ms ģ“ķ"],
|
|
75
|
-
ontologySchema: {
|
|
76
|
-
entities: [{ name: "User", description: "...", attributes: ["id", "email"] }],
|
|
77
|
-
relations: [{ from: "User", to: "Order", type: "has_many" }]
|
|
78
|
-
},
|
|
79
|
-
gestaltAnalysis: [
|
|
80
|
-
{ principle: "closure", finding: "ģøģ¦ ģźµ¬ģ¬ķ ģģ ķ ķģ
ėØ", confidence: 0.9 }
|
|
81
|
-
]
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
```
|
|
85
|
-
ā `{ status: "generated", seed }` (metadata ģė ģģ± ķ¬ķØ) ėė `{ error }` ė°ķ
|
|
86
|
-
|
|
87
|
-
### Seed ź²ģ¦ ģ¤ķ¤ė§ (Zod)
|
|
88
|
-
|
|
89
|
-
- `gestaltAnalysis[].principle`: `closure | proximity | similarity | figure_ground | continuity`
|
|
90
|
-
- `gestaltAnalysis[].confidence`: 0.0 ~ 1.0
|
|
91
|
-
- `ontologySchema.entities[]`: `{ name: string(min 1), description: string, attributes: string[] }`
|
|
92
|
-
- `ontologySchema.relations[]`: `{ from: string(min 1), to: string(min 1), type: string(min 1) }`
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhG"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { loadConfig } from '../../core/config.js';
|
|
2
|
-
import { EventStore } from '../../events/store.js';
|
|
3
|
-
import { AnthropicAdapter } from '../../llm/adapter.js';
|
|
4
|
-
import { InterviewEngine } from '../../interview/engine.js';
|
|
5
|
-
import { SeedGenerator } from '../../seed/generator.js';
|
|
6
|
-
export async function seedCommand(sessionId, options) {
|
|
7
|
-
const config = loadConfig();
|
|
8
|
-
if (!config.anthropicApiKey) {
|
|
9
|
-
console.error('Error: ANTHROPIC_API_KEY is required for CLI mode. Set it in .env or as environment variable.');
|
|
10
|
-
process.exit(1);
|
|
11
|
-
}
|
|
12
|
-
const eventStore = new EventStore(config.dbPath);
|
|
13
|
-
const llm = new AnthropicAdapter(config.anthropicApiKey, config.model);
|
|
14
|
-
const engine = new InterviewEngine(llm, eventStore);
|
|
15
|
-
const generator = new SeedGenerator(llm, eventStore);
|
|
16
|
-
try {
|
|
17
|
-
const session = engine.getSession(sessionId);
|
|
18
|
-
console.log(`\nš± Generating seed for session: ${session.topic}\n`);
|
|
19
|
-
const result = await generator.generate(session, options.force ?? false);
|
|
20
|
-
if (!result.ok) {
|
|
21
|
-
console.error(`Error: ${result.error.message}`);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
console.log(JSON.stringify(result.value, null, 2));
|
|
25
|
-
console.log('\nā
Seed generated successfully.\n');
|
|
26
|
-
}
|
|
27
|
-
catch (e) {
|
|
28
|
-
console.error(`Error: ${e instanceof Error ? e.message : String(e)}`);
|
|
29
|
-
}
|
|
30
|
-
finally {
|
|
31
|
-
eventStore.close();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=seed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,OAA4B;IAC/E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;QAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { AmbiguityScore, InterviewRound, ProjectType } from '../core/types.js';
|
|
2
|
-
import type { LLMAdapter } from '../llm/types.js';
|
|
3
|
-
export declare class AmbiguityScorer {
|
|
4
|
-
private llm;
|
|
5
|
-
constructor(llm: LLMAdapter);
|
|
6
|
-
score(topic: string, rounds: InterviewRound[], projectType: ProjectType): Promise<AmbiguityScore>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=ambiguity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ambiguity.d.ts","sourceRoot":"","sources":["../../../src/interview/ambiguity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,eAAe;IACd,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,UAAU;IAE7B,KAAK,CACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EAAE,EACxB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,cAAc,CAAC;CA4B3B"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { computeAmbiguityScore } from '../gestalt/analyzer.js';
|
|
2
|
-
import { buildAmbiguityPrompt, INTERVIEW_SYSTEM_PROMPT } from '../llm/prompts.js';
|
|
3
|
-
export class AmbiguityScorer {
|
|
4
|
-
llm;
|
|
5
|
-
constructor(llm) {
|
|
6
|
-
this.llm = llm;
|
|
7
|
-
}
|
|
8
|
-
async score(topic, rounds, projectType) {
|
|
9
|
-
const answeredRounds = rounds.filter((r) => r.userResponse);
|
|
10
|
-
if (answeredRounds.length === 0) {
|
|
11
|
-
return {
|
|
12
|
-
overall: 1.0,
|
|
13
|
-
dimensions: [],
|
|
14
|
-
isReady: false,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
const prompt = buildAmbiguityPrompt(topic, answeredRounds.map((r) => ({
|
|
18
|
-
question: r.question,
|
|
19
|
-
response: r.userResponse,
|
|
20
|
-
})), projectType);
|
|
21
|
-
const response = await this.llm.chat({
|
|
22
|
-
system: INTERVIEW_SYSTEM_PROMPT,
|
|
23
|
-
messages: [{ role: 'user', content: prompt }],
|
|
24
|
-
temperature: 0.3,
|
|
25
|
-
});
|
|
26
|
-
const raw = parseAmbiguityResponse(response.content, projectType);
|
|
27
|
-
return computeAmbiguityScore(raw, projectType);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function parseAmbiguityResponse(content, projectType) {
|
|
31
|
-
const jsonMatch = content.match(/\{[\s\S]*\}/);
|
|
32
|
-
if (!jsonMatch) {
|
|
33
|
-
return defaultScores(projectType);
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
const parsed = JSON.parse(jsonMatch[0]);
|
|
37
|
-
return {
|
|
38
|
-
goalClarity: toNumber(parsed['goalClarity'], 0),
|
|
39
|
-
constraintClarity: toNumber(parsed['constraintClarity'], 0),
|
|
40
|
-
successCriteria: toNumber(parsed['successCriteria'], 0),
|
|
41
|
-
priorityClarity: toNumber(parsed['priorityClarity'], 0),
|
|
42
|
-
contextClarity: projectType === 'brownfield'
|
|
43
|
-
? toNumber(parsed['contextClarity'], 0)
|
|
44
|
-
: undefined,
|
|
45
|
-
contradictions: Array.isArray(parsed['contradictions'])
|
|
46
|
-
? parsed['contradictions']
|
|
47
|
-
: [],
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return defaultScores(projectType);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function defaultScores(projectType) {
|
|
55
|
-
return {
|
|
56
|
-
goalClarity: 0,
|
|
57
|
-
constraintClarity: 0,
|
|
58
|
-
successCriteria: 0,
|
|
59
|
-
priorityClarity: 0,
|
|
60
|
-
contextClarity: projectType === 'brownfield' ? 0 : undefined,
|
|
61
|
-
contradictions: [],
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function toNumber(value, fallback) {
|
|
65
|
-
if (typeof value === 'number' && !isNaN(value))
|
|
66
|
-
return value;
|
|
67
|
-
return fallback;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=ambiguity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ambiguity.js","sourceRoot":"","sources":["../../../src/interview/ambiguity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { PassthroughEngine } from '../../interview/passthrough-engine.js';
|
|
2
|
-
import type { PassthroughSeedGenerator } from '../../seed/passthrough-generator.js';
|
|
3
|
-
import type { SeedInput } from '../schemas.js';
|
|
4
|
-
export declare function handleSeedPassthrough(engine: PassthroughEngine, generator: PassthroughSeedGenerator, input: SeedInput): string;
|
|
5
|
-
//# sourceMappingURL=seed-passthrough.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seed-passthrough.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/seed-passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,wBAAwB,EACnC,KAAK,EAAE,SAAS,GACf,MAAM,CA8BR"}
|