@vpxa/aikit 0.1.107 → 0.1.108
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/package.json +1 -1
- package/packages/cli/dist/index.js +10 -10
- package/packages/cli/dist/{init-BB9sfLbE.js → init-DqjJZClg.js} +1 -1
- package/packages/cli/dist/{templates-Dz2d2veK.js → templates-BRWMrqFI.js} +2 -3
- package/packages/cli/dist/{user-H68wV-dO.js → user-D4p6n-Q5.js} +1 -1
- package/packages/flows/dist/index.js +2 -2
- package/packages/server/dist/index.js +1 -1
- package/packages/server/dist/{server-DfCR_Bix.js → server-28XBH2md.js} +174 -183
- package/packages/tools/dist/index.d.ts +1 -57
- package/packages/tools/dist/index.js +72 -70
- package/scaffold/dist/adapters/claude-code.mjs +2 -2
- package/scaffold/dist/adapters/copilot.mjs +1 -1
- package/scaffold/dist/definitions/bodies.mjs +33 -42
- package/scaffold/dist/definitions/flows.mjs +13 -13
- package/scaffold/dist/definitions/prompts.mjs +18 -18
- package/scaffold/dist/definitions/skills.mjs +566 -5
- package/scaffold/dist/definitions/tools.mjs +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{AGENTS as e}from"../definitions/agents.mjs";import{AGENT_BODIES as t}from"../definitions/bodies.mjs";import{HOOKS as n}from"../definitions/hooks.mjs";import{MCP_SERVER_ENTRY as r,SERVER_NAME as i}from"../definitions/mcp.mjs";import{CLAUDE_MODELS as a}from"../definitions/models.mjs";import{PROMPTS as o}from"../definitions/prompts.mjs";import{PROTOCOLS as s}from"../definitions/protocols.mjs";import{buildAgentTable as c,buildHooksSection as l,buildInlineAgentSection as u,buildMcpConfigJson as d,buildPromptSections as f}from"./_shared.mjs";const p=[`## Flows`,``,"This project uses aikit's pluggable flow system. Check flow status with the `
|
|
2
|
-
`),m=[`## Flows`,``,"This project uses aikit's pluggable flow system. Check flow status with the `
|
|
1
|
+
import{AGENTS as e}from"../definitions/agents.mjs";import{AGENT_BODIES as t}from"../definitions/bodies.mjs";import{HOOKS as n}from"../definitions/hooks.mjs";import{MCP_SERVER_ENTRY as r,SERVER_NAME as i}from"../definitions/mcp.mjs";import{CLAUDE_MODELS as a}from"../definitions/models.mjs";import{PROMPTS as o}from"../definitions/prompts.mjs";import{PROTOCOLS as s}from"../definitions/protocols.mjs";import{buildAgentTable as c,buildHooksSection as l,buildInlineAgentSection as u,buildMcpConfigJson as d,buildPromptSections as f}from"./_shared.mjs";const p=[`## Flows`,``,"This project uses aikit's pluggable flow system. Check flow status with the `flow` MCP tool.","If a flow is active, follow the current step's skill instructions. Advance with `flow({ action: 'step', advance: 'next' })`.","Use `flow({ action: 'list' })` to see available flows and `flow({ action: 'start', name, topic })` to begin one."].join(`
|
|
2
|
+
`),m=[`## Flows`,``,"This project uses aikit's pluggable flow system. Check flow status with the `flow` MCP tool.","If a flow is active, follow the current step's skill instructions. Advance with `flow({ action: 'step', advance: 'next' })`.","Use `flow({ action: 'list' })` to see available flows and `flow({ action: 'start', name, topic })` to begin one."].join(`
|
|
3
3
|
`);function h(e,t){let n=[];return n.push(`# aikit ${e}`),n.push(``),t.description&&(n.push(`> ${t.description}`),n.push(``)),n.push(t.content.trim()),n.push(``),n.join(`
|
|
4
4
|
`)}function g(e,n){let r=t[e];return typeof r==`function`?r(n):r||``}function _(e){let t=[];e.extraBody&&t.push(e.extraBody),e.sharedBase&&s[e.sharedBase]&&t.push(s[e.sharedBase]);for(let n of e.sharedProtocols||[])s[n]&&t.push(s[n]);return t}function v(t){let n=[];for(let[r,i]of Object.entries(e)){let e=g(r,t),a=_(i);if(i.variants){for(let[t,o]of Object.entries(i.variants))n.push(u({name:`${r}-${t}`,title:i.title,description:o.description||i.description,body:e,skills:i.skills,additionalSections:[...a,o.bodyAddendum].filter(Boolean)}));continue}let o=[...a];r===`Orchestrator`&&o.push(p,m),n.push(u({name:r,title:i.title,description:i.description,body:e,skills:i.skills,additionalSections:o}))}return n.join(`
|
|
5
5
|
`)}function y(){let t=c(e,a);return[`# aikit — Claude Code Instructions`,``,"This project uses an MCP server (`aikit`) providing tools for search, analysis, memory, and validation.",``,`## MCP Server`,``,"Server name: `aikit`","Configured in `.mcp.json` (already done if scaffold was deployed).",``,`## Agents`,``,t,``,`## Agent Instructions`,``,v(t),`## Prompts`,``,f(o),``,`## Session Protocol`,``,l(n),``].join(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{AGENTS as e}from"../definitions/agents.mjs";import{AGENT_BODIES as t}from"../definitions/bodies.mjs";import{COPILOT_MODELS as n,VARIANT_GROUPS as r}from"../definitions/models.mjs";import{PROMPTS as i}from"../definitions/prompts.mjs";import{PROTOCOLS as a,TEMPLATES as o}from"../definitions/protocols.mjs";import{IDE_CAPABILITIES as s}from"../definitions/tools.mjs";const c={terminal:`execute/runInTerminal`,problems:`read/problems`,readFile:`read/readFile`,lastCommand:`read/terminalLastCommand`,subagent:`agent/runSubagent`,createFile:`edit/createFile`,editFiles:`edit/editFiles`,rename:`edit/rename`,createDirectory:`edit/createDirectory`,search:`search/changes, search/codebase, search/usages`,web:`web/fetch, web/githubRepo`,todo:`todo`,memory:`vscode/memory`,newWorkspace:`vscode/newWorkspace`,reviewPlan:`vscode/reviewPlan`,askQuestions:`vscode/askQuestions`,resolveMemoryFileUri:`vscode/resolveMemoryFileUri`,runCommand:`vscode/runCommand`,switchAgent:`vscode/switchAgent`,killTerminal:`execute/killTerminal`,createTask:`execute/createAndRunTask`,terminalSel:`read/terminalSelection`,fileSearch:`search/fileSearch`,listDir:`search/listDirectory`,textSearch:`search/textSearch`,searchSubagent:`search/searchSubagent`,browser:`browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog`};function l(e){return`[${[...(s[e]||[]).map(e=>c[e]).filter(Boolean),`aikit/*`].join(`, `)}]`}function u(e){let t=n[e];return t?Array.isArray(t)?t[0]||`Auto (copilot)`:t:`Auto (copilot)`}const d=[`## Flows`,``,"This project uses aikit's pluggable flow system. Check flow status with the `
|
|
1
|
+
import{AGENTS as e}from"../definitions/agents.mjs";import{AGENT_BODIES as t}from"../definitions/bodies.mjs";import{COPILOT_MODELS as n,VARIANT_GROUPS as r}from"../definitions/models.mjs";import{PROMPTS as i}from"../definitions/prompts.mjs";import{PROTOCOLS as a,TEMPLATES as o}from"../definitions/protocols.mjs";import{IDE_CAPABILITIES as s}from"../definitions/tools.mjs";const c={terminal:`execute/runInTerminal`,problems:`read/problems`,readFile:`read/readFile`,lastCommand:`read/terminalLastCommand`,subagent:`agent/runSubagent`,createFile:`edit/createFile`,editFiles:`edit/editFiles`,rename:`edit/rename`,createDirectory:`edit/createDirectory`,search:`search/changes, search/codebase, search/usages`,web:`web/fetch, web/githubRepo`,todo:`todo`,memory:`vscode/memory`,newWorkspace:`vscode/newWorkspace`,reviewPlan:`vscode/reviewPlan`,askQuestions:`vscode/askQuestions`,resolveMemoryFileUri:`vscode/resolveMemoryFileUri`,runCommand:`vscode/runCommand`,switchAgent:`vscode/switchAgent`,killTerminal:`execute/killTerminal`,createTask:`execute/createAndRunTask`,terminalSel:`read/terminalSelection`,fileSearch:`search/fileSearch`,listDir:`search/listDirectory`,textSearch:`search/textSearch`,searchSubagent:`search/searchSubagent`,browser:`browser/openBrowserPage, browser/readPage, browser/screenshotPage, browser/navigatePage, browser/clickElement, browser/dragElement, browser/hoverElement, browser/typeInPage, browser/runPlaywrightCode, browser/handleDialog`};function l(e){return`[${[...(s[e]||[]).map(e=>c[e]).filter(Boolean),`aikit/*`].join(`, `)}]`}function u(e){let t=n[e];return t?Array.isArray(t)?t[0]||`Auto (copilot)`:t:`Auto (copilot)`}const d=[`## Flows`,``,"This project uses aikit's pluggable flow system. Check flow status with the `flow` MCP tool.","If a flow is active, follow the current step's skill instructions. Advance with `flow({ action: 'step', advance: 'next' })`.","Use `flow({ action: 'list' })` to see available flows and `flow({ action: 'start', name, topic })` to begin one."].join(`
|
|
2
2
|
`);function f(){let t=[];for(let[i,a]of Object.entries(e))if(a.variants)for(let e of r[i]||[]){let r=`${i}-${e}`,o=n[r]||n[i],s=Array.isArray(o)?o[0]:o||`Unknown`,c=(a.variants[e]||{}).description||a.description;t.push(`| **${r}** | ${c} | ${s} | ${a.category} |`)}else{let e=n[i],r=Array.isArray(e)?e[0]:e||`Unknown`;t.push(`| **${i}** | ${a.description} | ${r} | ${a.category} |`)}return`| Agent | Purpose | Model | Category |\n|-------|---------|-------|----------|\n${t.join(`
|
|
3
3
|
`)}`}function p(e,t,n){let i=`${e}-${t}`,o=n.variants[t]||{},s=u(i),c=o.description||n.description,f=o.identity||(t===r[e]?.[0]?`, the primary ${e} agent.`:`, a variant of ${e}. Same responsibilities, different model perspective.`),p=n.sharedBase&&a[n.sharedBase]?`\n\n${a[n.sharedBase]}`:``,m=n.extraBody?`\n\n${n.extraBody}`:``,h=o.bodyAddendum?`\n\n${o.bodyAddendum}`:``,g=n.skills?.length?`\n\n## Skills (load on demand)\n\n| Skill | When to load |\n|-------|--------------|\n${n.skills.map(([e,t])=>`| ${e} | ${t} |`).join(`
|
|
4
4
|
`)}`:``,_=n.title||e;return`---
|
|
@@ -70,14 +70,14 @@ This is the **proportional response** — match ceremony to complexity. Floor-ti
|
|
|
70
70
|
|
|
71
71
|
### Flow Activation (MANDATORY after bootstrap)
|
|
72
72
|
|
|
73
|
-
1. \`
|
|
73
|
+
1. \`flow({ action: 'status' })\` — check for an active flow from a previous session
|
|
74
74
|
2. **If active flow exists:**
|
|
75
75
|
- Note current step name and instruction path
|
|
76
|
-
- Read the current step instruction with \`
|
|
76
|
+
- Read the current step instruction with \`flow({ action: 'read' })\`
|
|
77
77
|
- Follow its instructions
|
|
78
|
-
- When complete: \`
|
|
78
|
+
- When complete: \`flow({ action: 'step', advance: 'next' })\`
|
|
79
79
|
3. **If NO active flow:**
|
|
80
|
-
- \`
|
|
80
|
+
- \`flow({ action: 'list' })\` — retrieve ALL available flows (builtin AND custom)
|
|
81
81
|
- **Auto-select** the flow when the task clearly matches:
|
|
82
82
|
|
|
83
83
|
| Task signal | Auto-activate flow |
|
|
@@ -87,7 +87,7 @@ This is the **proportional response** — match ceremony to complexity. Floor-ti
|
|
|
87
87
|
| New feature, API design, architecture change, multi-component work | \`aikit:advanced\` |
|
|
88
88
|
| Task matches a custom flow's description/tags exactly | That custom flow |
|
|
89
89
|
|
|
90
|
-
- **Auto-start:** When exactly one flow matches, start it immediately — \`
|
|
90
|
+
- **Auto-start:** When exactly one flow matches, start it immediately — \`flow({ action: 'start', name: '<matched>', topic: '<task description>' })\` — and inform the user which flow was activated and why. The \`topic\` becomes the \`.flows/\` directory name (slugified).
|
|
91
91
|
- **Ask only when ambiguous:** If the task could fit multiple flows, or no flow clearly matches, present the options and let the user choose.
|
|
92
92
|
- Do NOT present a menu for obvious cases. Speed matters.
|
|
93
93
|
4. **Every Standard/Critical task goes through a flow.** Floor-tier tasks use the fast path above.
|
|
@@ -96,20 +96,20 @@ This is the **proportional response** — match ceremony to complexity. Floor-ti
|
|
|
96
96
|
|
|
97
97
|
For EACH step in the active flow:
|
|
98
98
|
|
|
99
|
-
1. \`
|
|
99
|
+
1. \`flow({ action: 'read' })\` — read the current step's README.md
|
|
100
100
|
2. Follow the step's instructions — delegate work to the appropriate agents
|
|
101
101
|
3. Apply **Orchestrator Protocols** (PRE-DISPATCH GATE, FORGE, review cycle) during execution
|
|
102
102
|
4. When the step is complete and results are approved:
|
|
103
|
-
- \`
|
|
103
|
+
- \`flow({ action: 'step', advance: 'next' })\` to advance
|
|
104
104
|
5. Repeat until all flow steps AND epilogue steps are complete
|
|
105
105
|
|
|
106
106
|
**Epilogue steps** (mandatory, injected by aikit):
|
|
107
107
|
- After the last flow step, the state machine transitions to epilogue steps (e.g., \`_docs-sync\`)
|
|
108
|
-
- \`
|
|
108
|
+
- \`flow({ action: 'status' })\` will show \`phase: 'after'\` and \`isEpilogue: true\` during epilogue
|
|
109
109
|
- Delegate epilogue work to the appropriate agent (e.g., Documenter for \`_docs-sync\`)
|
|
110
|
-
- Epilogue steps follow the same execution pattern: \`
|
|
110
|
+
- Epilogue steps follow the same execution pattern: \`flow({ action: 'read' })\` → do work → \`flow({ action: 'step', advance: 'next' })\`
|
|
111
111
|
|
|
112
|
-
**Custom flows work identically** — \`
|
|
112
|
+
**Custom flows work identically** — \`flow({ action: 'list' })\` returns them alongside builtins. The execution loop is the same for ALL flows.
|
|
113
113
|
|
|
114
114
|
### Design & Decision Detection (applies to ALL flows including custom)
|
|
115
115
|
|
|
@@ -133,8 +133,8 @@ Custom flows are NOT expected to reference these protocols in their step instruc
|
|
|
133
133
|
Flows MUST be driven to completion. A flow left active forever blocks future work.
|
|
134
134
|
|
|
135
135
|
**Normal completion:**
|
|
136
|
-
- When the last flow step's \`
|
|
137
|
-
- Epilogue steps run automatically after every flow — they are NOT optional (but can be skipped with \`
|
|
136
|
+
- When the last flow step's \`flow({ action: 'step', advance: 'next' })\` is called, the flow transitions to **mandatory epilogue steps** (e.g., \`_docs-sync\`)
|
|
137
|
+
- Epilogue steps run automatically after every flow — they are NOT optional (but can be skipped with \`flow({ action: 'step', advance: 'skip' })\` + warning)
|
|
138
138
|
- The \`_docs-sync\` epilogue loads the \`docs\` skill and updates \`docs/\` based on changes made during the flow
|
|
139
139
|
- After ALL epilogue steps complete, the flow reaches \`completed\` status
|
|
140
140
|
- After completion: run post-implementation protocol (\`check\` → \`test_run\` → \`blast_radius\` → \`reindex\`)
|
|
@@ -142,13 +142,13 @@ Flows MUST be driven to completion. A flow left active forever blocks future wor
|
|
|
142
142
|
- Then continue with \`produce_knowledge\` → \`remember\`
|
|
143
143
|
- Inform the user the flow is complete with a summary of artifacts produced
|
|
144
144
|
|
|
145
|
-
**Stale flow detection** (check at session start when \`
|
|
145
|
+
**Stale flow detection** (check at session start when \`flow({ action: 'status' })\` returns an active flow):
|
|
146
146
|
- If the active flow's current step has no matching work context in the conversation → **ask the user**: "A flow \`<name>\` is active at step \`<step>\`. Continue, or reset to start fresh?"
|
|
147
|
-
- If the user says reset → \`
|
|
147
|
+
- If the user says reset → \`flow({ action: 'reset' })\` then activate a new flow for the current task
|
|
148
148
|
- If the user says continue → resume from the current step
|
|
149
149
|
|
|
150
150
|
**Abandoned step recovery:**
|
|
151
|
-
- If a step has been attempted ≥ 2 times with \`BLOCKED\` status → escalate to user with diagnostics, offer to \`
|
|
151
|
+
- If a step has been attempted ≥ 2 times with \`BLOCKED\` status → escalate to user with diagnostics, offer to \`flow({ action: 'step', advance: 'skip' })\` or \`flow({ action: 'reset' })\`
|
|
152
152
|
- Never silently retry a blocked step indefinitely
|
|
153
153
|
|
|
154
154
|
**One active flow at a time.** To switch tasks, the current flow must be completed or reset first.
|
|
@@ -177,7 +177,7 @@ Batch 2 (after batch 1):
|
|
|
177
177
|
2. **Goal** — acceptance criteria, testable
|
|
178
178
|
3. **Arch Context** — varies by \`config.tokenBudget\`: efficient → \`stratum_card({tier:'T1'})\`, normal → \`compact({path, query})\`, full → \`digest({sources})\`. Default to efficient unless task complexity requires more.
|
|
179
179
|
4. **Constraints** — patterns, conventions
|
|
180
|
-
5. **Artifacts Path** — the active flow's run directory and artifacts path from \`
|
|
180
|
+
5. **Artifacts Path** — the active flow's run directory and artifacts path from \`flow({ action: 'status' })\` (e.g. \`.flows/add-authentication/.spec/\`)
|
|
181
181
|
6. **FORGE** — tier + task_id + evidence requirements (reviewers add CRITICAL/HIGH claims into your task_id; never create their own)
|
|
182
182
|
7. **Self-Review** — checklist before declaring status
|
|
183
183
|
|
|
@@ -196,35 +196,26 @@ Reviewers add findings to the Orchestrator's existing \`evidence_map\` \`task_id
|
|
|
196
196
|
|
|
197
197
|
| Tool | Purpose |
|
|
198
198
|
|------|---------|
|
|
199
|
-
| \`
|
|
200
|
-
| \`flow_info\` | Get detailed flow info including steps |
|
|
201
|
-
| \`flow_start\` | Start a flow with a topic — creates \`.flows/{topic-slug}/\` run directory |
|
|
202
|
-
| \`flow_step\` | Advance: next, skip, or redo current step |
|
|
203
|
-
| \`flow_status\` | Check current execution state including slug, runDir, artifactsPath |
|
|
204
|
-
| \`flow_reset\` | Abandon the active flow (preserves run directory for history) |
|
|
205
|
-
| \`flow_read_instruction\` | Read the current step's instruction with \`{{artifacts_path}}\` resolved |
|
|
206
|
-
| \`flow_runs\` | List all flow runs (current and past) with topic, status, progress |
|
|
207
|
-
| \`flow_add\` | Install a new flow from a git URL, local path, or shorthand (e.g. "openspec") |
|
|
208
|
-
| \`flow_remove\` | Remove an installed flow by name (builtin flows cannot be removed) |
|
|
209
|
-
| \`flow_update\` | Update an installed flow to its latest version (git pull / npm update) |
|
|
199
|
+
| \`flow\` | Manage flows — list, start, navigate steps, read instructions, inspect runs, and add/remove/update. Use the \`action\` parameter. |
|
|
210
200
|
|
|
211
201
|
### Multi-Root Workspace Support
|
|
212
202
|
|
|
213
203
|
When the IDE workspace contains **multiple repository roots**, flows support cross-repo orchestration:
|
|
214
204
|
|
|
215
|
-
**Detection:** \`
|
|
205
|
+
**Detection:** \`flow({ action: 'list' })\` and \`flow({ action: 'status' })\` return \`allRoots\` — the list of all workspace roots. When \`allRoots.length > 1\`, the workspace is multi-root.
|
|
216
206
|
|
|
217
207
|
**Single-repo task (default):** Omit the \`roots\` parameter — flow creates \`.flows/\` in the primary root only.
|
|
218
208
|
|
|
219
|
-
**Multi-repo task:** Pass \`roots\` to \`
|
|
209
|
+
**Multi-repo task:** Pass \`roots\` to \`flow({ action: 'start', ... })\` listing ALL participating repositories:
|
|
220
210
|
\`\`\`
|
|
221
|
-
|
|
222
|
-
|
|
211
|
+
flow({
|
|
212
|
+
action: 'start',
|
|
213
|
+
name: 'aikit:advanced',
|
|
223
214
|
topic: "cross-repo-auth",
|
|
224
215
|
roots: ["E:/repos/api-gateway", "E:/repos/auth-service", "E:/repos/shared-types", "E:/repos/frontend"]
|
|
225
216
|
})
|
|
226
217
|
\`\`\`
|
|
227
|
-
This creates \`.flows/cross-repo-auth/\` with synchronized \`meta.json\` in each listed root. Every \`
|
|
218
|
+
This creates \`.flows/cross-repo-auth/\` with synchronized \`meta.json\` in each listed root. Every \`flow\` step/reset action and state change is automatically replicated to all roots.
|
|
228
219
|
|
|
229
220
|
**Decision criteria for multi-root flows:**
|
|
230
221
|
|
|
@@ -371,12 +362,12 @@ This applies to YOU (the Orchestrator) when you use \`web_fetch\`/\`http\` direc
|
|
|
371
362
|
### Start (do ALL)
|
|
372
363
|
|
|
373
364
|
\`\`\`
|
|
374
|
-
|
|
375
|
-
# If flow active →
|
|
365
|
+
flow({ action: 'status' }) # Check/resume active flow FIRST
|
|
366
|
+
# If flow active → flow({ action: 'read', step }) → follow step instructions
|
|
376
367
|
status({}) # Check AI Kit health + onboard state
|
|
377
368
|
# If onboard not run → onboard({ path: "." }) # First-time codebase analysis
|
|
378
|
-
|
|
379
|
-
# Select flow based on task →
|
|
369
|
+
flow({ action: 'list' }) # See available flows
|
|
370
|
+
# Select flow based on task → flow({ action: 'start', name: "<name>", topic: "<task>" }) # Start flow — creates .flows/{topic}/
|
|
380
371
|
knowledge({ action: "list" }) # See stored knowledge
|
|
381
372
|
search({ query: "SESSION CHECKPOINT", origin: "curated" }) # Resume prior work
|
|
382
373
|
\`\`\`
|
|
@@ -399,9 +390,9 @@ search({ query: "SESSION CHECKPOINT", origin: "curated" }) # Resume prior wo
|
|
|
399
390
|
|
|
400
391
|
## Flows
|
|
401
392
|
|
|
402
|
-
This project uses aikit's pluggable flow system. Check flow status with the \`
|
|
403
|
-
If a flow is active, follow the current step's instructions. Advance with \`
|
|
404
|
-
Use \`
|
|
393
|
+
This project uses aikit's pluggable flow system. Check flow status with the \`flow\` MCP tool.
|
|
394
|
+
If a flow is active, follow the current step's instructions. Advance with \`flow({ action: 'step', advance: 'next' })\`.
|
|
395
|
+
Use \`flow({ action: 'list' })\` to see available flows and \`flow({ action: 'start', name, topic })\` to begin one.
|
|
405
396
|
`,Planner:`**Read \`AGENTS.md\`** in the workspace root for project conventions and AI Kit protocol.
|
|
406
397
|
|
|
407
398
|
Load the \`aikit\` skill for full tool documentation, workflow chains, and session protocol.
|
|
@@ -437,13 +428,13 @@ Load the \`aikit\` skill for full tool documentation, workflow chains, and sessi
|
|
|
437
428
|
The Planner is typically activated by the Orchestrator as part of a flow step (e.g., \`aikit:advanced\` plan step, \`aikit:basic\` assess step, or a custom flow's planning step).
|
|
438
429
|
|
|
439
430
|
**When activated as part of a flow:**
|
|
440
|
-
1. \`
|
|
441
|
-
2. \`
|
|
431
|
+
1. \`flow({ action: 'status' })\` — check current step context and which flow is active
|
|
432
|
+
2. \`flow({ action: 'read' })\` — read the current step's README.md for specific instructions
|
|
442
433
|
3. Follow the step's instructions as the primary guide, applying Planner methodology on top
|
|
443
434
|
4. Read the flow's README.md for overall context on how the flow works
|
|
444
435
|
5. Produce required artifacts (as specified by the flow step's \`produces\` field)
|
|
445
436
|
6. When complete, report status to Orchestrator: \`DONE\` | \`DONE_WITH_CONCERNS\` | \`NEEDS_CONTEXT\` | \`BLOCKED\`
|
|
446
|
-
7. Do NOT
|
|
437
|
+
7. Do NOT advance the flow with \`flow\` — the Orchestrator controls flow advancement
|
|
447
438
|
|
|
448
439
|
**When no flow is active** (standalone mode), operate autonomously following normal Planner methodology.
|
|
449
440
|
|
|
@@ -17,7 +17,7 @@ Load the \`docs\` skill before proceeding — it contains the full documentation
|
|
|
17
17
|
Read all artifacts produced during this flow — they contain design decisions, requirements, and verification results that are the most valuable documentation input.
|
|
18
18
|
|
|
19
19
|
\`\`\`
|
|
20
|
-
|
|
20
|
+
flow({ action: 'status' }) # Get artifactsPath
|
|
21
21
|
find({ pattern: "*.md", path: "{{artifacts_path}}" }) # Discover all flow artifacts
|
|
22
22
|
digest({ sources: [ # Compress artifacts for context
|
|
23
23
|
{ path: "<found-artifact-1>" },
|
|
@@ -117,7 +117,7 @@ If the flow's changes don't warrant doc updates (e.g., pure bug fix with no reve
|
|
|
117
117
|
- [ ] \`docs/\` bootstrapped with tool outputs if it didn't exist
|
|
118
118
|
- [ ] Relevant docs created or updated (or skipped with reason)
|
|
119
119
|
- [ ] \`docs/README.md\` index is current
|
|
120
|
-
- [ ] No placeholder/empty docs created — all content tool-generated or hand-written with purpose`}],"aikit-advanced":[{file:`README.md`,content:"# aikit:advanced — Full Development Flow\n\nFull development flow for **new features, API design, and architecture changes**.\n\n## Steps\n\n| # | Step | Skill | Produces | Requires | Agents |\n|---|------|-------|----------|----------|--------|\n| 1 | **Design Gate** | `steps/design/README.md` | `design-decisions.md` | — | Researcher-Alpha/Beta/Gamma/Delta |\n| 2 | **Specification** | `steps/spec/README.md` | `spec.md` | `design-decisions.md` | Researcher-Alpha |\n| 3 | **Planning** | `steps/plan/README.md` | `plan.md` | `spec.md` | Planner, Explorer |\n| 4 | **Task Breakdown** | `steps/task/README.md` | `tasks.md` | `plan.md` | Planner, Architect-Reviewer-Alpha |\n| 5 | **Execution** | `steps/execute/README.md` | `progress.md` | `tasks.md` | Orchestrator, Implementer, Frontend, Refactor |\n| 6 | **Verification** | `steps/verify/README.md` | `verify-report.md` | `progress.md` | Code-Reviewer-Alpha/Beta, Architect-Reviewer-Alpha/Beta, Security |\n\n## How It Works\n\nEach step has a **README.md** file that contains the detailed instructions for the agent(s) executing that step. The Orchestrator reads the README.md via `
|
|
120
|
+
- [ ] No placeholder/empty docs created — all content tool-generated or hand-written with purpose`}],"aikit-advanced":[{file:`README.md`,content:"# aikit:advanced — Full Development Flow\n\nFull development flow for **new features, API design, and architecture changes**.\n\n## Steps\n\n| # | Step | Skill | Produces | Requires | Agents |\n|---|------|-------|----------|----------|--------|\n| 1 | **Design Gate** | `steps/design/README.md` | `design-decisions.md` | — | Researcher-Alpha/Beta/Gamma/Delta |\n| 2 | **Specification** | `steps/spec/README.md` | `spec.md` | `design-decisions.md` | Researcher-Alpha |\n| 3 | **Planning** | `steps/plan/README.md` | `plan.md` | `spec.md` | Planner, Explorer |\n| 4 | **Task Breakdown** | `steps/task/README.md` | `tasks.md` | `plan.md` | Planner, Architect-Reviewer-Alpha |\n| 5 | **Execution** | `steps/execute/README.md` | `progress.md` | `tasks.md` | Orchestrator, Implementer, Frontend, Refactor |\n| 6 | **Verification** | `steps/verify/README.md` | `verify-report.md` | `progress.md` | Code-Reviewer-Alpha/Beta, Architect-Reviewer-Alpha/Beta, Security |\n\n## How It Works\n\nEach step has a **README.md** file that contains the detailed instructions for the agent(s) executing that step. The Orchestrator reads the README.md via `flow({ action: 'read' })` and delegates work accordingly.\n\n### Step 1: Design Gate\n- Full brainstorming session for new features and architectural changes\n- FORGE classification (`forge_classify`) + grounding (`forge_ground`) for complex tasks\n- Full 3-phase multi-model decision protocol for non-trivial technical decisions (see Orchestrator's inlined Multi-Model Decision Protocol)\n- ADR generation for critical-tier tasks\n- **Mandatory user stop** before proceeding — design decisions must be approved\n- Read `steps/design/README.md` for the full protocol\n\n### Step 2: Specification\n- Elicit requirements from the user, clarify scope\n- Define acceptance criteria and constraints\n- Build on design decisions from the previous step\n\n### Step 3: Planning\n- Deep codebase analysis using `search`, `scope_map`, `trace`, `analyze_*`\n- Design architecture based on spec and design decisions\n- Create comprehensive implementation plan with file-level changes\n\n### Step 4: Task Breakdown\n- Break the plan into ordered, atomic implementation tasks\n- Define dependencies between tasks\n- Identify parallel batches for multi-agent execution\n- Architecture review of the task structure\n\n### Step 5: Execution\n- Orchestrator dispatches agents in parallel batches per the task breakdown\n- Each agent gets a scoped task (1-3 files) with clear acceptance criteria\n- TDD: write tests first, then implement\n- Per-batch review cycle: Code Review (dual) → Arch Review → Security → Evidence Gate\n\n### Step 6: Verification\n- Dual code review (Code-Reviewer-Alpha + Beta)\n- Architecture review (Architect-Reviewer-Alpha + Beta)\n- Security review\n- Run `check({})` + `test_run({})` + `blast_radius({})`\n- `evidence_map({ action: \"gate\" })` for final quality gate\n\n## Using Skills Inside Steps\n\nWhen the Orchestrator activates a step:\n\n1. **Read the instruction first** — `flow({ action: 'read' })` returns the README.md for the current step\n2. **Follow step instructions** — the README.md is the primary guide for what to do\n3. **Delegate to listed agents** — each step lists which agents are appropriate\n4. **Produce the required artifact** — the step's `produces` field specifies what file to create in the artifacts directory\n5. **Check dependencies** — the step's `requires` field lists artifacts from previous steps that must exist\n6. **Report status** — agents report `DONE` | `DONE_WITH_CONCERNS` | `NEEDS_CONTEXT` | `BLOCKED` to the Orchestrator\n\n## Artifacts\n\nAll artifacts are stored in the run directory under `.flows/{topic}/`. The template variable `{{artifacts_path}}` resolves to the actual path at runtime.\n"},{file:`steps/design/README.md`,content:`# Design Gate — Advanced Flow
|
|
121
121
|
|
|
122
122
|
Full design gate for new features, API design, and architecture changes. Runs brainstorming, decision protocol, and FORGE classification before specification begins.
|
|
123
123
|
|
|
@@ -244,7 +244,7 @@ After user approves:
|
|
|
244
244
|
- \`DONE_WITH_CONCERNS\` — approved with caveats (list them)
|
|
245
245
|
- \`NEEDS_CONTEXT\` — user raised questions that need more research
|
|
246
246
|
|
|
247
|
-
**Do NOT call \`
|
|
247
|
+
**Do NOT call \`flow({ action: 'step', advance: 'next' })\`** — let the Orchestrator advance the flow.
|
|
248
248
|
|
|
249
249
|
## Outputs
|
|
250
250
|
|
|
@@ -311,7 +311,7 @@ Before starting this step, verify:
|
|
|
311
311
|
- [ ] Task breakdown approved with valid task graph
|
|
312
312
|
- [ ] \`{{artifacts_path}}/tasks.md\` exists with defined batches and dependencies
|
|
313
313
|
|
|
314
|
-
If prerequisites are NOT met -> **backtrack to task step** (\`
|
|
314
|
+
If prerequisites are NOT met -> **backtrack to task step** (\`flow({ action: 'step', advance: 'redo' })\` on previous step)
|
|
315
315
|
|
|
316
316
|
## Purpose
|
|
317
317
|
|
|
@@ -456,7 +456,7 @@ Before starting this step, verify:
|
|
|
456
456
|
- [ ] Specification approved with clarity score ≥90
|
|
457
457
|
- [ ] \`{{artifacts_path}}/spec.md\` exists and is complete
|
|
458
458
|
|
|
459
|
-
If prerequisites are NOT met → **backtrack to spec step** (\`
|
|
459
|
+
If prerequisites are NOT met → **backtrack to spec step** (\`flow({ action: 'step', advance: 'redo' })\` on previous step)
|
|
460
460
|
|
|
461
461
|
## Purpose
|
|
462
462
|
|
|
@@ -582,7 +582,7 @@ Before starting this step, verify:
|
|
|
582
582
|
- [ ] Design decisions approved (design-decisions.md exists with user approval)
|
|
583
583
|
- [ ] FORGE tier assigned and documented
|
|
584
584
|
|
|
585
|
-
If prerequisites are NOT met -> **backtrack to design step** (\`
|
|
585
|
+
If prerequisites are NOT met -> **backtrack to design step** (\`flow({ action: 'step', advance: 'redo' })\` on previous step)
|
|
586
586
|
|
|
587
587
|
## Purpose
|
|
588
588
|
|
|
@@ -703,7 +703,7 @@ Before starting this step, verify:
|
|
|
703
703
|
- [ ] Implementation plan approved
|
|
704
704
|
- [ ] \`{{artifacts_path}}/plan.md\` exists with defined phases
|
|
705
705
|
|
|
706
|
-
If prerequisites are NOT met → **backtrack to plan step** (\`
|
|
706
|
+
If prerequisites are NOT met → **backtrack to plan step** (\`flow({ action: 'step', advance: 'redo' })\` on previous step)
|
|
707
707
|
|
|
708
708
|
## Purpose
|
|
709
709
|
|
|
@@ -823,7 +823,7 @@ Before starting this step, verify:
|
|
|
823
823
|
- [ ] \`check({})\` and \`test_run({})\` pass
|
|
824
824
|
- [ ] \`{{artifacts_path}}/progress.md\` exists with execution results
|
|
825
825
|
|
|
826
|
-
If prerequisites are NOT met → **backtrack to execute step** (\`
|
|
826
|
+
If prerequisites are NOT met → **backtrack to execute step** (\`flow({ action: 'step', advance: 'redo' })\` on previous step)
|
|
827
827
|
|
|
828
828
|
## Purpose
|
|
829
829
|
|
|
@@ -954,7 +954,7 @@ Before completing this step, persist important findings using \`knowledge({ acti
|
|
|
954
954
|
- **Session checkpoint**: Summarize what was accomplished, decisions made, and any remaining work
|
|
955
955
|
|
|
956
956
|
**Every step produces knowledge worth preserving.** If you discovered something that would help a future session, call \`knowledge({ action: "remember", ... })\` now.
|
|
957
|
-
`}],"aikit-basic":[{file:`README.md`,content:"# aikit:basic — Quick Development Flow\n\nQuick development flow for **bug fixes, small features, and refactoring**.\n\n## Steps\n\n| # | Step | Skill | Produces | Requires | Agents |\n|---|------|-------|----------|----------|--------|\n| 1 | **Design Gate** | `steps/design/README.md` | `design-decisions.md` | — | Researcher-Alpha/Beta/Gamma/Delta |\n| 2 | **Assessment** | `steps/assess/README.md` | `assessment.md` | `design-decisions.md` | Explorer, Researcher-Alpha |\n| 3 | **Implementation** | `steps/implement/README.md` | `progress.md` | `assessment.md` | Implementer, Frontend |\n| 4 | **Verification** | `steps/verify/README.md` | `verify-report.md` | `progress.md` | Code-Reviewer-Alpha, Security |\n\n## How It Works\n\nEach step has a **README.md** file that contains the detailed instructions for the agent(s) executing that step. The Orchestrator reads the README.md via `
|
|
957
|
+
`}],"aikit-basic":[{file:`README.md`,content:"# aikit:basic — Quick Development Flow\n\nQuick development flow for **bug fixes, small features, and refactoring**.\n\n## Steps\n\n| # | Step | Skill | Produces | Requires | Agents |\n|---|------|-------|----------|----------|--------|\n| 1 | **Design Gate** | `steps/design/README.md` | `design-decisions.md` | — | Researcher-Alpha/Beta/Gamma/Delta |\n| 2 | **Assessment** | `steps/assess/README.md` | `assessment.md` | `design-decisions.md` | Explorer, Researcher-Alpha |\n| 3 | **Implementation** | `steps/implement/README.md` | `progress.md` | `assessment.md` | Implementer, Frontend |\n| 4 | **Verification** | `steps/verify/README.md` | `verify-report.md` | `progress.md` | Code-Reviewer-Alpha, Security |\n\n## How It Works\n\nEach step has a **README.md** file that contains the detailed instructions for the agent(s) executing that step. The Orchestrator reads the README.md via `flow({ action: 'read' })` and delegates work accordingly.\n\n### Step 1: Design Gate\n- **Auto-skips** for bug fixes and refactors (produces a minimal `design-decisions.md` noting it was skipped)\n- For small features: runs quick brainstorming, FORGE classification, and optional decision protocol (see Orchestrator's inlined Multi-Model Decision Protocol for the full 3-phase process)\n- Read `steps/design/README.md` for the full decision tree\n\n### Step 2: Assessment\n- Explore the codebase to understand scope and impact\n- Use `search`, `scope_map`, `file_summary`, `compact` to gather context\n- Identify the approach and produce `assessment.md`\n\n### Step 3: Implementation\n- Write code following the assessment plan\n- The Orchestrator dispatches Implementer/Frontend agents with specific file scopes\n- Follow TDD practices where applicable\n\n### Step 4: Verification\n- Code review, test execution, security check\n- Run `check({})` + `test_run({})` + `blast_radius({})`\n- Produce `verify-report.md` with findings\n\n## Using Skills Inside Steps\n\nWhen the Orchestrator activates a step:\n\n1. **Read the instruction first** — `flow({ action: 'read' })` returns the README.md for the current step\n2. **Follow step instructions** — the README.md is the primary guide for what to do\n3. **Delegate to listed agents** — each step lists which agents are appropriate\n4. **Produce the required artifact** — the step's `produces` field specifies what file to create in the artifacts directory\n5. **Check dependencies** — the step's `requires` field lists artifacts from previous steps that must exist\n6. **Report status** — agents report `DONE` | `DONE_WITH_CONCERNS` | `NEEDS_CONTEXT` | `BLOCKED` to the Orchestrator\n\n## Artifacts\n\nAll artifacts are stored in the run directory under `.flows/{topic}/`. The template variable `{{artifacts_path}}` resolves to the actual path at runtime.\n"},{file:`steps/assess/README.md`,content:`---
|
|
958
958
|
name: assess
|
|
959
959
|
description: Understand scope, analyze the codebase, and identify the implementation approach.
|
|
960
960
|
---
|
|
@@ -980,7 +980,7 @@ Before executing this step, verify:
|
|
|
980
980
|
|
|
981
981
|
If any prerequisites are missing or incomplete:
|
|
982
982
|
1. Inform the Orchestrator with specifics about what's missing
|
|
983
|
-
2. Recommend \`
|
|
983
|
+
2. Recommend \`flow({ action: 'step', advance: 'redo' })\` on the **design** step
|
|
984
984
|
3. Do NOT proceed with partial inputs — quality degrades downstream
|
|
985
985
|
|
|
986
986
|
## Process
|
|
@@ -1132,7 +1132,7 @@ When complete, report status:
|
|
|
1132
1132
|
- \`DONE\` — design decisions captured, ready for assessment
|
|
1133
1133
|
- \`DONE_WITH_CONCERNS\` — design captured but open questions remain (list them)
|
|
1134
1134
|
|
|
1135
|
-
**Do NOT call \`
|
|
1135
|
+
**Do NOT call \`flow({ action: 'step', advance: 'next' })\`** — let the Orchestrator advance the flow.
|
|
1136
1136
|
|
|
1137
1137
|
## Outputs
|
|
1138
1138
|
|
|
@@ -1206,7 +1206,7 @@ Before executing this step, verify:
|
|
|
1206
1206
|
|
|
1207
1207
|
If any prerequisites are missing or incomplete:
|
|
1208
1208
|
1. Inform the Orchestrator with specifics about what's missing
|
|
1209
|
-
2. Recommend \`
|
|
1209
|
+
2. Recommend \`flow({ action: 'step', advance: 'redo' })\` on the **assess** step
|
|
1210
1210
|
3. Do NOT proceed with partial inputs — quality degrades downstream
|
|
1211
1211
|
|
|
1212
1212
|
## Process
|
|
@@ -1338,7 +1338,7 @@ Before executing this step, verify:
|
|
|
1338
1338
|
|
|
1339
1339
|
If any prerequisites are missing or incomplete:
|
|
1340
1340
|
1. Inform the Orchestrator with specifics about what's missing
|
|
1341
|
-
2. Recommend \`
|
|
1341
|
+
2. Recommend \`flow({ action: 'step', advance: 'redo' })\` on the **implement** step
|
|
1342
1342
|
3. Do NOT proceed with partial inputs — quality degrades downstream
|
|
1343
1343
|
|
|
1344
1344
|
## Process
|
|
@@ -52,7 +52,7 @@ Merge findings from both reviewers:
|
|
|
52
52
|
- **Disagreements**: Contradicting verdicts → present both to user
|
|
53
53
|
|
|
54
54
|
### Step 5: Report
|
|
55
|
-
Present unified review with: verdict, findings by severity, recommended actions.`},"flow-add":{description:`Install a new flow from a git URL or local path — with interactive error recovery`,agent:`Orchestrator`,tools:[`
|
|
55
|
+
Present unified review with: verdict, findings by severity, recommended actions.`},"flow-add":{description:`Install a new flow from a git URL or local path — with interactive error recovery`,agent:`Orchestrator`,tools:[`flow`,`search`,`compact`,`file_summary`,`present`],content:`## Flow Installation Assistant
|
|
56
56
|
|
|
57
57
|
Install a development flow from a git repository or local directory.
|
|
58
58
|
|
|
@@ -65,8 +65,8 @@ Provide a git URL or local path:
|
|
|
65
65
|
|
|
66
66
|
### Workflow
|
|
67
67
|
|
|
68
|
-
1. **Attempt Install** — Call \`
|
|
69
|
-
2. **On Success** — Show installed flow info with \`
|
|
68
|
+
1. **Attempt Install** — Call \`flow({ action: 'add', source })\` with the provided source
|
|
69
|
+
2. **On Success** — Show installed flow info with \`flow({ action: 'info', name })\`, present summary to user
|
|
70
70
|
3. **On Failure** — Classify the error and enter the appropriate recovery path:
|
|
71
71
|
|
|
72
72
|
### Error Recovery Paths
|
|
@@ -79,7 +79,7 @@ If the error mentions authentication, credentials, 401, 403, permission denied,
|
|
|
79
79
|
- **SSH key**: Walk through \`ssh-keygen -t ed25519\`, adding the public key to their git host, and retrying with the SSH URL
|
|
80
80
|
- **Personal Access Token (PAT)**: Guide them to create a PAT in their git host settings, configure \`git credential.helper store\`, and retry
|
|
81
81
|
- **Git Credential Manager**: Check if GCM is installed, help install if needed, then retry (GCM opens a browser for auth)
|
|
82
|
-
3. After credentials are configured, retry \`
|
|
82
|
+
3. After credentials are configured, retry \`flow({ action: 'add', source })\`
|
|
83
83
|
|
|
84
84
|
#### Network / Connectivity Failure
|
|
85
85
|
If the error mentions timeout, host not found, SSL, or proxy:
|
|
@@ -89,7 +89,7 @@ If the error mentions timeout, host not found, SSL, or proxy:
|
|
|
89
89
|
3. Retry after the issue is resolved
|
|
90
90
|
|
|
91
91
|
#### Format Not Recognized
|
|
92
|
-
If \`
|
|
92
|
+
If \`flow({ action: 'add', source })\` succeeds cloning but returns a format/structure error:
|
|
93
93
|
|
|
94
94
|
1. Explain that the source was fetched but doesn't match any supported format
|
|
95
95
|
2. List the 3 supported formats:
|
|
@@ -102,7 +102,7 @@ If \`flow_add\` succeeds cloning but returns a format/structure error:
|
|
|
102
102
|
- If it has a different workflow format → propose conversion
|
|
103
103
|
- If it's missing key parts → guide user to fill them in
|
|
104
104
|
5. Create the missing \`flow.json\` manifest and step structure
|
|
105
|
-
6. Retry \`
|
|
105
|
+
6. Retry \`flow({ action: 'add', source })\` with the fixed source
|
|
106
106
|
|
|
107
107
|
### Native flow.json Format Reference
|
|
108
108
|
\`\`\`json
|
|
@@ -130,25 +130,25 @@ If \`flow_add\` succeeds cloning but returns a format/structure error:
|
|
|
130
130
|
### Post-Install
|
|
131
131
|
After successful installation:
|
|
132
132
|
- Show the flow name, steps, and description via \`present\`
|
|
133
|
-
- Remind user they can start it with \`
|
|
133
|
+
- Remind user they can start it with \`flow({ action: 'start', name, topic })\``},"flow-manage":{description:`List, inspect, update, and remove installed flows`,agent:`Orchestrator`,tools:[`flow`,`present`],content:`## Flow Management
|
|
134
134
|
|
|
135
135
|
Manage your installed development flows.
|
|
136
136
|
|
|
137
137
|
### Available Actions
|
|
138
138
|
|
|
139
|
-
1. **List flows** — \`
|
|
140
|
-
2. **Inspect a flow** — \`
|
|
141
|
-
3. **Check status** — \`
|
|
142
|
-
4. **Update a flow** — \`
|
|
143
|
-
5. **Remove a flow** — \`
|
|
144
|
-
6. **Start a flow** — \`
|
|
145
|
-
7. **Reset active flow** — \`
|
|
139
|
+
1. **List flows** — \`flow({ action: 'list' })\` to see all installed flows with status
|
|
140
|
+
2. **Inspect a flow** — \`flow({ action: 'info', name })\` to see detailed steps, agents, and artifacts
|
|
141
|
+
3. **Check status** — \`flow({ action: 'status' })\` to see the active flow and current step
|
|
142
|
+
4. **Update a flow** — \`flow({ action: 'update', name })\` to pull latest changes for git-installed flows
|
|
143
|
+
5. **Remove a flow** — \`flow({ action: 'remove', name })\` to uninstall (builtin flows cannot be removed)
|
|
144
|
+
6. **Start a flow** — \`flow({ action: 'start', name, topic })\` to begin executing a flow
|
|
145
|
+
7. **Reset active flow** — \`flow({ action: 'reset' })\` to clear active flow state
|
|
146
146
|
|
|
147
147
|
### Workflow
|
|
148
|
-
1. If no specific action requested, start with \`
|
|
148
|
+
1. If no specific action requested, start with \`flow({ action: 'list' })\` and present overview
|
|
149
149
|
2. Use \`present\` to display flow information in a clear table/card format
|
|
150
150
|
3. For updates, warn if there's an active flow that might be affected
|
|
151
|
-
4. For removals, confirm with user before proceeding`},"flow-create":{description:`Create a new flow from scratch or migrate an existing workflow to aikit format`,agent:`Orchestrator`,tools:[`
|
|
151
|
+
4. For removals, confirm with user before proceeding`},"flow-create":{description:`Create a new flow from scratch or migrate an existing workflow to aikit format`,agent:`Orchestrator`,tools:[`flow`,`search`,`compact`,`file_summary`,`present`],content:`## Flow Creation Assistant
|
|
152
152
|
|
|
153
153
|
Create a new development flow or migrate an existing workflow to the aikit flow format.
|
|
154
154
|
|
|
@@ -166,7 +166,7 @@ Guide the user through building a complete flow:
|
|
|
166
166
|
- Optionally assign preferred agents
|
|
167
167
|
4. **Generate flow.json** — Create the manifest with all steps
|
|
168
168
|
5. **Write step READMEs** — Create instruction files for each step
|
|
169
|
-
6. **Install** — Use \`
|
|
169
|
+
6. **Install** — Use \`flow({ action: 'add', source })\` to install from the local directory
|
|
170
170
|
|
|
171
171
|
### Mode 2: Migrate Existing Workflow
|
|
172
172
|
|
|
@@ -177,7 +177,7 @@ If the user has an existing workflow (scripts, docs, runbooks) that they want to
|
|
|
177
177
|
3. **Identify gaps** — What's missing for a complete flow? (instructions? ordering? agents?)
|
|
178
178
|
4. **Fill gaps with user** — Ask user to clarify any ambiguous parts
|
|
179
179
|
5. **Generate the flow** — Create flow.json + step READMEs
|
|
180
|
-
6. **Install and validate** — Use \`
|
|
180
|
+
6. **Install and validate** — Use \`flow({ action: 'add', source })\` and \`flow({ action: 'info', name })\` to verify
|
|
181
181
|
|
|
182
182
|
### Flow Structure
|
|
183
183
|
|