agestra 4.9.0 → 4.10.1
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-plugin/marketplace.json +4 -4
- package/.claude-plugin/plugin.json +2 -2
- package/README.ja.md +9 -7
- package/README.ko.md +7 -5
- package/README.md +9 -7
- package/README.zh.md +9 -7
- package/agents/agestra-moderator.md +112 -34
- package/commands/design.md +85 -76
- package/commands/idea.md +120 -61
- package/commands/implement.md +9 -0
- package/commands/review.md +120 -111
- package/commands/setup.md +3 -16
- package/dist/bundle.js +147 -147
- package/hooks/user-prompt-submit.js +40 -11
- package/package.json +1 -1
- package/skills/design.md +170 -161
- package/skills/idea.md +62 -22
- package/skills/review.md +9 -0
- package/skills/setup.md +5 -4
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
{
|
|
12
12
|
"name": "agestra",
|
|
13
13
|
"source": "./",
|
|
14
|
-
"description": "Orchestrate Ollama, Gemini, and Codex for multi-AI debates,
|
|
15
|
-
"version": "4.
|
|
14
|
+
"description": "Orchestrate Ollama, Gemini, and Codex for multi-AI debates, code review, and cross-validation",
|
|
15
|
+
"version": "4.10.1",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "mua-vtuber"
|
|
18
18
|
},
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"tags": [
|
|
33
33
|
"orchestration",
|
|
34
34
|
"debate",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
35
|
+
"code-review",
|
|
36
|
+
"cross-validation"
|
|
37
37
|
]
|
|
38
38
|
}
|
|
39
39
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agestra",
|
|
3
|
-
"version": "4.
|
|
4
|
-
"description": "Claude Code plugin — orchestrate Ollama, Gemini, and Codex for multi-AI debates,
|
|
3
|
+
"version": "4.10.1",
|
|
4
|
+
"description": "Claude Code plugin — orchestrate Ollama, Gemini, and Codex for multi-AI debates, code review, and cross-validation",
|
|
5
5
|
"mcpServers": {
|
|
6
6
|
"agestra": {
|
|
7
7
|
"command": "node",
|
package/README.ja.md
CHANGED
|
@@ -84,7 +84,7 @@ Gemini ではリポジトリ直下の [GEMINI.md](GEMINI.md) と、[`.gemini/com
|
|
|
84
84
|
| `/agestra setup` | 初期 AI プロバイダー選択とセットアップ |
|
|
85
85
|
| `/agestra implement [task]` | Claude only または Multi-AI モードで実装を進める |
|
|
86
86
|
|
|
87
|
-
外部プロバイダーが利用可能な場合、テキストコマンド(review、design、idea
|
|
87
|
+
外部プロバイダーが利用可能な場合、テキストコマンド(review、design、idea)は直接ディベートモードに入り、マルチ AI クロスバリデーションを行います。プロバイダーが検出されない場合、Claude が自動的に単独で作業します。
|
|
88
88
|
|
|
89
89
|
## エージェント
|
|
90
90
|
|
|
@@ -137,7 +137,7 @@ Turborepo モノレポで、9 パッケージ構成です:
|
|
|
137
137
|
|
|
138
138
|
### 作業モード
|
|
139
139
|
|
|
140
|
-
**Text work**(レビュー、設計、アイデア): プロバイダーあり →
|
|
140
|
+
**Text work**(レビュー、設計、アイデア): プロバイダーあり → ディベートモード; なし → Claude only
|
|
141
141
|
|
|
142
142
|
**Implementation work**(team-lead orchestration):
|
|
143
143
|
- **Claude만으로** — Claude がプロジェクト/グローバルエージェントを使って直接実装します。
|
|
@@ -240,16 +240,18 @@ Turborepo モノレポで、9 パッケージ構成です:
|
|
|
240
240
|
|
|
241
241
|
## 設定
|
|
242
242
|
|
|
243
|
-
### providers.config.json
|
|
243
|
+
### providers.config.json
|
|
244
244
|
|
|
245
|
-
|
|
245
|
+
`/agestra setup` が生成します。単一のプラグイン範囲の場所に保存されます(解決順: `AGESTRA_CONFIG_PATH` 環境変数 → `$CLAUDE_PLUGIN_ROOT/providers.config.json` → `~/.agestra/providers.config.json`)。リポジトリには置かない方針で、gitignore 済みです。
|
|
246
246
|
|
|
247
247
|
| 項目 | 説明 |
|
|
248
248
|
|------|------|
|
|
249
|
-
| `
|
|
249
|
+
| `selectionPolicy` | `"default-only"`(現状サポートされる唯一の値) |
|
|
250
|
+
| `locale` | モデレーターの UI ロケール (`ko`/`en`/`ja`/`zh`) |
|
|
250
251
|
| `providers[].id` | 一意の識別子 |
|
|
251
|
-
| `providers[].type` | `ollama`, `gemini-cli`, `codex-cli` |
|
|
252
|
-
| `providers[].enabled` |
|
|
252
|
+
| `providers[].type` | `ollama`, `gemini-cli`, `codex-cli`, `claude-cli` |
|
|
253
|
+
| `providers[].enabled` | 起動時に登録するか — `false` は明示的オプトアウト |
|
|
254
|
+
| `providers[].executionPolicy` | `read-only` または `workspace-write` |
|
|
253
255
|
| `providers[].config` | タイプ別設定(host、timeout など) |
|
|
254
256
|
|
|
255
257
|
### ランタイムデータ
|
package/README.ko.md
CHANGED
|
@@ -281,16 +281,18 @@ Turborepo 모노레포, 9개 패키지:
|
|
|
281
281
|
|
|
282
282
|
## 설정
|
|
283
283
|
|
|
284
|
-
### providers.config.json
|
|
284
|
+
### providers.config.json
|
|
285
285
|
|
|
286
|
-
|
|
286
|
+
`/agestra setup`이 생성합니다. 단일 플러그인 범위 경로에 저장됩니다 (해석 우선순위: `AGESTRA_CONFIG_PATH` 환경변수 → `$CLAUDE_PLUGIN_ROOT/providers.config.json` → `~/.agestra/providers.config.json`). 프로젝트 저장소에 두지 않으며 gitignore에도 등록되어 있습니다.
|
|
287
287
|
|
|
288
288
|
| 필드 | 설명 |
|
|
289
289
|
|------|------|
|
|
290
|
-
| `
|
|
290
|
+
| `selectionPolicy` | `"default-only"` (현재 지원 값) |
|
|
291
|
+
| `locale` | 중재자 내러티브 로케일 (`ko`/`en`/`ja`/`zh`) |
|
|
291
292
|
| `providers[].id` | 고유 식별자 |
|
|
292
|
-
| `providers[].type` | `ollama`, `gemini-cli`, `codex-cli` |
|
|
293
|
-
| `providers[].enabled` | 시작 시
|
|
293
|
+
| `providers[].type` | `ollama`, `gemini-cli`, `codex-cli`, `claude-cli` |
|
|
294
|
+
| `providers[].enabled` | 시작 시 등록 여부 — `false`면 강제 제외 |
|
|
295
|
+
| `providers[].executionPolicy` | `read-only` 또는 `workspace-write` |
|
|
294
296
|
| `providers[].config` | 타입별 설정 (host, timeout 등) |
|
|
295
297
|
|
|
296
298
|
### 런타임 데이터
|
package/README.md
CHANGED
|
@@ -125,7 +125,7 @@ All three hosts drive the same MCP server and shared workflow specs from `comman
|
|
|
125
125
|
| `/agestra setup` | Initial AI provider selection and setup |
|
|
126
126
|
| `/agestra implement [task]` | Execute implementation in Claude-only or Multi-AI mode |
|
|
127
127
|
|
|
128
|
-
When external providers are available, text commands (review, design, idea) go directly to debate mode
|
|
128
|
+
When external providers are available, text commands (review, design, idea) go directly to debate mode for multi-AI cross-validation. When no providers are detected, Claude works alone automatically.
|
|
129
129
|
|
|
130
130
|
## Agents
|
|
131
131
|
|
|
@@ -178,7 +178,7 @@ Turborepo monorepo with 9 packages:
|
|
|
178
178
|
|
|
179
179
|
### Work Modes
|
|
180
180
|
|
|
181
|
-
**Text work** (review, design, idea): providers available →
|
|
181
|
+
**Text work** (review, design, idea): providers available → debate mode; no providers → Claude only
|
|
182
182
|
|
|
183
183
|
**Implementation work** (team-lead orchestration):
|
|
184
184
|
- **Claude만으로** — Claude implements directly with project/global agents.
|
|
@@ -281,16 +281,18 @@ Turborepo monorepo with 9 packages:
|
|
|
281
281
|
|
|
282
282
|
## Configuration
|
|
283
283
|
|
|
284
|
-
### providers.config.json
|
|
284
|
+
### providers.config.json
|
|
285
285
|
|
|
286
|
-
|
|
286
|
+
Created by `/agestra setup`. The file lives at a single plugin-scoped location (resolution order: `AGESTRA_CONFIG_PATH` env var → `$CLAUDE_PLUGIN_ROOT/providers.config.json` → `~/.agestra/providers.config.json`). It is not meant to sit in the project repo and is gitignored accordingly.
|
|
287
287
|
|
|
288
288
|
| Field | Description |
|
|
289
289
|
|-------|-------------|
|
|
290
|
-
| `
|
|
290
|
+
| `selectionPolicy` | `"default-only"` (only supported value today) |
|
|
291
|
+
| `locale` | UI locale for moderator narration (`ko`/`en`/`ja`/`zh`) |
|
|
291
292
|
| `providers[].id` | Unique identifier |
|
|
292
|
-
| `providers[].type` | `ollama`, `gemini-cli`, or `
|
|
293
|
-
| `providers[].enabled` |
|
|
293
|
+
| `providers[].type` | `ollama`, `gemini-cli`, `codex-cli`, or `claude-cli` |
|
|
294
|
+
| `providers[].enabled` | Whether to register this provider at startup — hard opt-out when `false` |
|
|
295
|
+
| `providers[].executionPolicy` | `read-only` or `workspace-write` |
|
|
294
296
|
| `providers[].config` | Type-specific settings (host, timeout, etc.) |
|
|
295
297
|
|
|
296
298
|
### Runtime Data
|
package/README.zh.md
CHANGED
|
@@ -84,7 +84,7 @@ Gemini 会结合仓库根目录下的 [GEMINI.md](GEMINI.md) 与 [`.gemini/comma
|
|
|
84
84
|
| `/agestra setup` | 初始 AI 提供方选择与设置 |
|
|
85
85
|
| `/agestra implement [task]` | 以 Claude only 或 Multi-AI 模式执行实现 |
|
|
86
86
|
|
|
87
|
-
当外部提供方可用时,文本命令(review、design、idea
|
|
87
|
+
当外部提供方可用时,文本命令(review、design、idea)直接进入辩论模式,进行多 AI 交叉验证。当未检测到提供方时,Claude 自动独立工作。
|
|
88
88
|
|
|
89
89
|
## 代理
|
|
90
90
|
|
|
@@ -137,7 +137,7 @@ Gemini 会结合仓库根目录下的 [GEMINI.md](GEMINI.md) 与 [`.gemini/comma
|
|
|
137
137
|
|
|
138
138
|
### 工作模式
|
|
139
139
|
|
|
140
|
-
**文本工作**(review、design、idea):有提供方 →
|
|
140
|
+
**文本工作**(review、design、idea):有提供方 → 辩论模式;无提供方 → Claude only
|
|
141
141
|
|
|
142
142
|
**实现工作**(team-lead orchestration):
|
|
143
143
|
- **Claude만으로** — Claude 直接结合项目/全局代理完成实现。
|
|
@@ -240,16 +240,18 @@ Gemini 会结合仓库根目录下的 [GEMINI.md](GEMINI.md) 与 [`.gemini/comma
|
|
|
240
240
|
|
|
241
241
|
## 配置
|
|
242
242
|
|
|
243
|
-
### providers.config.json
|
|
243
|
+
### providers.config.json
|
|
244
244
|
|
|
245
|
-
|
|
245
|
+
由 `/agestra setup` 生成。文件存放于单一的插件范围位置(解析顺序:`AGESTRA_CONFIG_PATH` 环境变量 → `$CLAUDE_PLUGIN_ROOT/providers.config.json` → `~/.agestra/providers.config.json`)。不随仓库一起提交,已加入 gitignore。
|
|
246
246
|
|
|
247
247
|
| 字段 | 说明 |
|
|
248
248
|
|------|------|
|
|
249
|
-
| `
|
|
249
|
+
| `selectionPolicy` | `"default-only"`(目前唯一支持的取值) |
|
|
250
|
+
| `locale` | 主持人叙述的 UI 语言 (`ko`/`en`/`ja`/`zh`) |
|
|
250
251
|
| `providers[].id` | 唯一标识符 |
|
|
251
|
-
| `providers[].type` | `ollama`、`gemini-cli
|
|
252
|
-
| `providers[].enabled` |
|
|
252
|
+
| `providers[].type` | `ollama`、`gemini-cli`、`codex-cli`、`claude-cli` |
|
|
253
|
+
| `providers[].enabled` | 启动时是否注册 — `false` 为强制跳过 |
|
|
254
|
+
| `providers[].executionPolicy` | `read-only` 或 `workspace-write` |
|
|
253
255
|
| `providers[].config` | 类型相关配置(host、timeout 等) |
|
|
254
256
|
|
|
255
257
|
### 运行时数据
|
|
@@ -250,57 +250,135 @@ Invoked when multiple AIs have independently analyzed the same target and their
|
|
|
250
250
|
|
|
251
251
|
### Mode: Document Review Round (Debate Phase 2)
|
|
252
252
|
|
|
253
|
-
Invoked after Independent Aggregation has produced an initial document. The document is iteratively reviewed
|
|
253
|
+
Invoked after Independent Aggregation has produced an initial (Round 0) working document. The document is iteratively reviewed until every participant's `<round-votes>` block reports no `disagree`.
|
|
254
254
|
|
|
255
|
-
**Input:** Current
|
|
255
|
+
**Input:** Current working doc + ordered participant list.
|
|
256
256
|
|
|
257
|
-
**
|
|
257
|
+
**Turn order within a round:** external providers alphabetical first, Claude last. Providers are invoked **sequentially, not in parallel** — each one must read every earlier Round `N` review before writing its own, so late-turn providers can endorse-and-move-on instead of re-stating. This is the single biggest lever against round-after-round churn.
|
|
258
258
|
|
|
259
|
-
|
|
260
|
-
- **Claude:** Spawn the appropriate specialist agent → analyze document → produce feedback.
|
|
261
|
-
- **External providers:** Call `agent_debate_turn` with the document as prompt context, requesting feedback on each section.
|
|
259
|
+
**Per round `N` procedure:**
|
|
262
260
|
|
|
263
|
-
|
|
261
|
+
1. For each participant in turn:
|
|
264
262
|
|
|
265
|
-
|
|
266
|
-
-
|
|
267
|
-
-
|
|
263
|
+
a. Build the prompt envelope:
|
|
264
|
+
- Working doc (full content).
|
|
265
|
+
- Round 0 aggregated doc (for anchoring the idea IDs).
|
|
266
|
+
- Every Round `N` review already written this round, by ID (fetched with `workspace_read`).
|
|
267
|
+
- The `<round-votes>` contract below.
|
|
268
268
|
|
|
269
|
-
|
|
270
|
-
- If a revision is supported by evidence or reasoning, apply it.
|
|
271
|
-
- If revisions contradict each other, present both positions in the document.
|
|
269
|
+
b. Send the review request. For Claude, spawn the appropriate specialist agent (`agestra-ideator`, `agestra-reviewer`, etc.). For external providers, use `ai_chat` with `save_as_document.kind = "debate"`.
|
|
272
270
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
271
|
+
c. File the reply as a dedicated round review doc (kind `"debate"`, title `Round {N} Review — {provider}`).
|
|
272
|
+
|
|
273
|
+
2. **`<round-votes>` contract** (every reviewer appends this at the end of its review):
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
<round-votes>
|
|
277
|
+
<item id="IDEA-01" stance="agree"/>
|
|
278
|
+
<item id="IDEA-02" stance="agree-with-note" note="priority should be MEDIUM not HIGH"/>
|
|
279
|
+
<item id="IDEA-03" stance="disagree" reason="conflicts with stated constraint X"/>
|
|
280
|
+
<item id="IDEA-04" stance="defer-to-codex"/>
|
|
281
|
+
</round-votes>
|
|
278
282
|
```
|
|
279
283
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
+
Closed stance set: `agree | agree-with-note | disagree | defer-to-<providerId>`. One `<item>` per idea in the working doc. `reason` is required for `disagree`; `note` is required for `agree-with-note`; `defer-to-<providerId>` must reference a provider that already wrote a review earlier in the same round.
|
|
285
|
+
|
|
286
|
+
3. **Round wrap-up** (moderator, after all reviewers finish):
|
|
287
|
+
- Absorb every `agree-with-note` the moderator judges well-reasoned; cite the source review in the working doc.
|
|
288
|
+
- Mark every unresolved `disagree` as Disputed, preserving both positions with proposer + reason verbatim.
|
|
289
|
+
- Record every `defer-to` edge for the final endorsement graph.
|
|
290
|
+
|
|
291
|
+
4. **Consensus check:**
|
|
292
|
+
- Round `N` has zero `disagree` items AND every `agree-with-note` was either applied or explicitly declined-with-reason → consensus reached. Write the synthesis per `<Final_Consensus_Format>`.
|
|
293
|
+
- Otherwise → Round `N+1` with the revised working doc.
|
|
294
|
+
- **Every 10 rounds:** call `AskUserQuestion` offering `continue`, `stop with current state`, `escalate split positions`.
|
|
295
|
+
|
|
296
|
+
**Why sequential:** parallel rounds produce the "everyone independently says the same thing" pathology the idea workflow suffered from before. Reading prior reviews lets a late-turn participant simply `stance="defer-to-{earlier}"` instead of re-writing three paragraphs that say the same thing.
|
|
297
|
+
|
|
298
|
+
</Workflow_Document_Review_Round>
|
|
299
|
+
|
|
300
|
+
<Final_Consensus_Format>
|
|
301
|
+
|
|
302
|
+
### Mode: Final Consensus document (idea/review workflows)
|
|
284
303
|
|
|
285
|
-
|
|
304
|
+
The idea/review final doc is for **humans skimming after the fact**, not for machine parsing. Write it for readability first: expanded prose, explicit per-idea reasoning, clear visual hierarchy. Avoid the metadata-header-plus-tables-only pattern — tables are a quick-reference layer, not the whole document.
|
|
305
|
+
|
|
306
|
+
**Required sections (in order):**
|
|
307
|
+
|
|
308
|
+
#### 1. 한눈에 보기 (Executive Summary)
|
|
309
|
+
|
|
310
|
+
3–5 sentences in plain prose. What was decided, how many rounds it took, which dimensions were disputed, and what the reader should do with the doc. No tables here.
|
|
311
|
+
|
|
312
|
+
#### 2. 참여자 및 라운드 요약
|
|
313
|
+
|
|
314
|
+
Plain list (not a table):
|
|
315
|
+
- **참여자:** `claude/ideator`, `codex`, … — one line per participant, with a short note if any dropped out mid-flow and why.
|
|
316
|
+
- **라운드:** `{N}/{max}` with a one-sentence arc ("Round 1: big-picture disagreement on tool scope. Round 2: narrowed to implementation priorities. Round 3: consensus.").
|
|
317
|
+
- **사용자 제약:** every binding constraint the user gave during Phase 1, verbatim.
|
|
318
|
+
|
|
319
|
+
#### 3. 최종 결정 (Accepted Ideas)
|
|
320
|
+
|
|
321
|
+
One **subsection per accepted idea** (not a single table row). For each idea:
|
|
286
322
|
|
|
287
|
-
**Final document format:**
|
|
288
323
|
```markdown
|
|
289
|
-
|
|
324
|
+
### ✓ {idea title} `IDEA-XX`
|
|
290
325
|
|
|
291
|
-
|
|
292
|
-
[content all parties agreed on]
|
|
326
|
+
**요약.** 1–2문장으로 이 아이디어가 무엇이고 왜 채택됐는지.
|
|
293
327
|
|
|
294
|
-
|
|
295
|
-
[content agreed after revision in round 3]
|
|
328
|
+
**근거.** 구체 파일/패턴/사용자 피드백 인용. 제안자가 제시한 Evidence를 그대로.
|
|
296
329
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
330
|
+
**노력 · 우선순위.** {effort} · {priority} — 협의 결과면 그렇게 표기 ("Round 2 protocol: 노력 S→M, codex 근거 채택").
|
|
331
|
+
|
|
332
|
+
**동의 현황.**
|
|
333
|
+
- 🟢 agree: claude/ideator, codex
|
|
334
|
+
- 🟡 agree-with-note: gemini — "MEDIUM이 더 현실적, HIGH는 낙관적"
|
|
335
|
+
- 모두가 agree이면 "전원 agree — 이견 없음." 한 줄로 대체.
|
|
301
336
|
```
|
|
302
337
|
|
|
303
|
-
|
|
338
|
+
Emoji indicators (🟢 agree / 🟡 note / 🔴 disagree) are load-bearing: they're the "at-a-glance 동의 어디서 하는지" signal the user asked for. Use them every time.
|
|
339
|
+
|
|
340
|
+
#### 4. 분쟁 항목 (Disputed Ideas)
|
|
341
|
+
|
|
342
|
+
One subsection per item where Round `N-final` still had any `disagree`. Format:
|
|
343
|
+
|
|
344
|
+
```markdown
|
|
345
|
+
### ✗ {idea title} `IDEA-YY` — Disputed
|
|
346
|
+
|
|
347
|
+
**쟁점.** 1–2문장으로 무엇이 걸려 있는지.
|
|
348
|
+
|
|
349
|
+
**입장 대립.**
|
|
350
|
+
- **{provider-A}** — (agree/disagree/revise). 주장: "…". 근거: "…"
|
|
351
|
+
- **{provider-B}** — …
|
|
352
|
+
|
|
353
|
+
**중재자 노트.** 왜 합의가 안 됐는지, 어떤 추가 정보가 있으면 결정 가능한지. 본인 의견은 주입하지 않는다.
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
#### 5. 범위 외 / 보류
|
|
357
|
+
|
|
358
|
+
한 줄씩. 왜 보류했는지 포함.
|
|
359
|
+
|
|
360
|
+
#### 6. 전체 동의 매트릭스 (at-a-glance reference)
|
|
361
|
+
|
|
362
|
+
마지막에 한 번만 나오는 축약 표 — 3~5번 섹션의 중복이 아니라 **스캔용**. 열은 아이디어 ID, 행은 프로바이더, 셀은 🟢/🟡/🔴만.
|
|
363
|
+
|
|
364
|
+
```markdown
|
|
365
|
+
| Idea | claude/ideator | codex | gemini |
|
|
366
|
+
|------|----------------|-------|--------|
|
|
367
|
+
| IDEA-01 Auto-focus on Create | 🟢 | 🟢 | 🟢 |
|
|
368
|
+
| IDEA-02 숫자 키 타입 선택 | 🟢 | 🟡 | 🟢 |
|
|
369
|
+
| IDEA-03 Tab-to-Next-Field | 🟢 | 🟢 | 🔴 |
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
#### 7. 참조 문서
|
|
373
|
+
|
|
374
|
+
Round 0 aggregated doc, 각 라운드의 provider별 review doc, 원본 individual docs — 전부 ID 리스트. 독자가 전체 전사본으로 내려갈 수 있게.
|
|
375
|
+
|
|
376
|
+
**금지 사항:**
|
|
377
|
+
- "참여자: A, B, C" 한 줄로 동의 내역을 뭉뚱그리지 말 것. 누가 무엇에 동의했는지 아이디어별로 분리.
|
|
378
|
+
- 표 하나로 모든 근거를 퉁치지 말 것. 표는 축약이지 본문이 아니다.
|
|
379
|
+
- 메타데이터만 잔뜩 적고 본문이 얇은 상태로 닫지 말 것. 각 아이디어의 "요약 + 근거" 본문이 항상 표보다 먼저.
|
|
380
|
+
|
|
381
|
+
</Final_Consensus_Format>
|
|
304
382
|
|
|
305
383
|
<Workflow_Conflict_Resolution>
|
|
306
384
|
|
package/commands/design.md
CHANGED
|
@@ -1,76 +1,85 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Explore architecture and design trade-offs before implementation"
|
|
3
|
-
argument-hint: "[idea, feature, or system to design]"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
You are executing the `/agestra design` command.
|
|
7
|
-
|
|
8
|
-
**Subject:** $ARGUMENTS
|
|
9
|
-
|
|
10
|
-
## Step
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- If **
|
|
31
|
-
- If **
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
1
|
+
---
|
|
2
|
+
description: "Explore architecture and design trade-offs before implementation"
|
|
3
|
+
argument-hint: "[idea, feature, or system to design]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are executing the `/agestra design` command.
|
|
7
|
+
|
|
8
|
+
**Subject:** $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
## Step 0: Setup preflight (MANDATORY)
|
|
11
|
+
|
|
12
|
+
Before anything else, call `setup_status`. If it reports `Current config: not found`, **stop this command and run setup first**:
|
|
13
|
+
|
|
14
|
+
1. Invoke the `agestra:setup` skill (or `/agestra setup` inline) — provider detection, selection, locale, `setup_apply`.
|
|
15
|
+
2. After the config is written, resume this `/agestra design` command **from Step 1**, preserving `$ARGUMENTS`. Do not ask the user to retype.
|
|
16
|
+
|
|
17
|
+
Agestra uses a single plugin-scoped `providers.config.json`. No config → no sanctioned provider set → setup is the only correct starting point.
|
|
18
|
+
|
|
19
|
+
## Step 1: Determine design subject
|
|
20
|
+
|
|
21
|
+
If `$ARGUMENTS` is empty, present a starting-point choice using AskUserQuestion (in the user's language):
|
|
22
|
+
|
|
23
|
+
| Option | Description |
|
|
24
|
+
|--------|-------------|
|
|
25
|
+
| **Describe an idea** | User has a specific feature or system in mind — proceed to designer |
|
|
26
|
+
| **Find ideas first** | User doesn't know what to design yet — run `/agestra idea` to discover opportunities, then return here |
|
|
27
|
+
| **Use recent context** | Organize ideas from the current conversation into a design subject |
|
|
28
|
+
|
|
29
|
+
- If **"Describe an idea"**: ask a follow-up "What would you like to design?" and proceed.
|
|
30
|
+
- If **"Find ideas first"**: run the `agestra:agestra-ideator` agent (or `/agestra idea`) to generate suggestions. After the user selects an idea from the results, continue to Step 2 with that as the subject.
|
|
31
|
+
- If **"Use recent context"**: scan the current conversation for previously discussed ideas, improvements, or features. Summarize them and ask the user which to design.
|
|
32
|
+
|
|
33
|
+
If `$ARGUMENTS` is provided, use it directly as the subject.
|
|
34
|
+
|
|
35
|
+
## Step 2: Check environment and select mode
|
|
36
|
+
|
|
37
|
+
Call `environment_check` to determine which providers and modes are available.
|
|
38
|
+
|
|
39
|
+
- If **no providers are available**: run the `agestra:agestra-designer` agent directly (Claude only) with the subject as context. The designer will ask questions to understand intent, explore the codebase for existing patterns, propose 2-3 approaches with trade-offs, refine based on feedback, and produce a design document in `docs/plans/`. Skip to presenting the result.
|
|
40
|
+
- If **1+ providers are available**: proceed to 끝장토론 execution below.
|
|
41
|
+
|
|
42
|
+
## Step 3: Execute 끝장토론
|
|
43
|
+
|
|
44
|
+
**팀 구성:** `agestra:agestra-moderator` (리더) + `agestra:agestra-designer` (Claude) + 사용 가능한 외부 AI (gemini, codex, ollama 등)
|
|
45
|
+
|
|
46
|
+
1. Independent work + initial aggregation:
|
|
47
|
+
|
|
48
|
+
a. In parallel:
|
|
49
|
+
- Spawn the `agestra:agestra-designer` agent for Claude's independent architecture exploration.
|
|
50
|
+
After the agent completes, save Claude's result as a document via `workspace_create_document`:
|
|
51
|
+
- **title:** `Architecture Design — claude/designer`
|
|
52
|
+
- **metadata:** `{ "Provider": "claude/designer", "Task": "{subject}", "Mode": "Independent" }`
|
|
53
|
+
- **content:** The designer agent's full output.
|
|
54
|
+
- For each available provider, call `ai_chat` with `save_as_document` to let each AI produce its own document directly:
|
|
55
|
+
- **save_as_document.title:** `Architecture Design — {provider}`
|
|
56
|
+
- **save_as_document.metadata:** `{ "Task": "{subject}", "Mode": "Independent" }`
|
|
57
|
+
- **prompt:**
|
|
58
|
+
|
|
59
|
+
> Create a complete design document for [subject]. Include: 1) Problem definition — what exactly we're solving and why. 2) Constraints and requirements — technical limits, compatibility needs, performance targets. 3) 2-3 architecture approaches — each with detailed pros/cons, component diagrams, data flow, and effort estimates. 4) Recommended approach — pick one and justify the choice. 5) Implementation plan — step-by-step build sequence with dependencies. 6) Risks and mitigations. Be thorough and detailed — this document will be debated and refined.
|
|
60
|
+
>
|
|
61
|
+
> Subject: [the design subject]
|
|
62
|
+
|
|
63
|
+
b. Collect all document IDs.
|
|
64
|
+
|
|
65
|
+
c. Spawn the `agestra:agestra-moderator` agent in **Independent Aggregation** mode:
|
|
66
|
+
- Pass the **document ID list**.
|
|
67
|
+
- Moderator reads each document via `workspace_read`.
|
|
68
|
+
- Moderator classifies: consensus approaches, unique ideas, disputed trade-offs.
|
|
69
|
+
- Moderator creates an **aggregated document** via `workspace_create_document`.
|
|
70
|
+
- The moderator's integrated document becomes the starting document.
|
|
71
|
+
|
|
72
|
+
2. Document review rounds (no max — until all agree):
|
|
73
|
+
a. Moderator sends the current document to each AI for review:
|
|
74
|
+
- Claude: spawn `agestra:agestra-designer` → analyze document → write section-by-section feedback
|
|
75
|
+
- Other providers: `agent_debate_turn` with the document as prompt, requesting agree/disagree per section
|
|
76
|
+
b. Moderator collects all feedback.
|
|
77
|
+
c. Classify: agree/disagree per section per provider.
|
|
78
|
+
d. Revise document incorporating disagreement feedback.
|
|
79
|
+
e. If all providers agree on all sections → consensus reached.
|
|
80
|
+
f. If not → next round with revised document.
|
|
81
|
+
g. **Every 10 rounds:** Ask the user via AskUserQuestion whether to continue or stop with current state.
|
|
82
|
+
|
|
83
|
+
3. Present the final document:
|
|
84
|
+
- Consensus sections: marked as agreed
|
|
85
|
+
- Disputed sections: show split positions with each provider's rationale
|