aw-spec-cli 0.1.28 → 0.1.30

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.
Files changed (67) hide show
  1. package/assets/.amp/agent.json +22 -0
  2. package/assets/.amp/settings-edit.json +5 -0
  3. package/assets/.amp/settings-read.json +12 -0
  4. package/assets/.appweaver/DESIGN-FORMAT.md +9 -0
  5. package/assets/.appweaver/STACK-PROFILES.md +102 -15
  6. package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +40 -18
  7. package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +56 -4
  8. package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +17 -1
  9. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +12 -3
  10. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +289 -24
  11. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +370 -85
  12. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +349 -65
  13. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +39 -7
  14. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +63 -4
  15. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +5 -4
  16. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +430 -138
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +392 -76
  18. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-lane.orch.yaml +104 -0
  19. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +20 -3
  20. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +26 -3
  21. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +314 -44
  22. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +249 -20
  23. package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +17 -2
  24. package/assets/.appweaver/scripts/python/aw-plangate.py +109 -19
  25. package/assets/.appweaver/scripts/python/aw-stack.py +1295 -9
  26. package/assets/.appweaver/templates/delta-design-template.md +7 -5
  27. package/assets/.appweaver/templates/delta-spec-template.md +2 -0
  28. package/assets/.appweaver/templates/design-template.md +17 -0
  29. package/assets/.appweaver/templates/ui-design-template.md +19 -4
  30. package/assets/.augment/agent.json +22 -0
  31. package/assets/.augment/commands/appweaver.md +12 -0
  32. package/assets/.cline/agent.json +22 -0
  33. package/assets/.clinerules/workflows/appweaver.md +7 -0
  34. package/assets/.codex/agent.json +22 -0
  35. package/assets/.continue/agent.json +22 -0
  36. package/assets/.continue/prompts/appweaver.md +13 -0
  37. package/assets/.cursor/agent.json +22 -0
  38. package/assets/.cursor/commands/appweaver.md +7 -0
  39. package/assets/.devin/agent.json +22 -0
  40. package/assets/.devin/workflows/appweaver.md +11 -0
  41. package/assets/.factory/agent.json +22 -0
  42. package/assets/.factory/commands/appweaver.md +12 -0
  43. package/assets/.gemini/agent.json +22 -0
  44. package/assets/.github/prompts/appweaver.prompt.md +13 -0
  45. package/assets/.kilo/agent.json +28 -0
  46. package/assets/.kilo/agents/appweaver-edit.md +12 -0
  47. package/assets/.kilo/agents/appweaver-read.md +12 -0
  48. package/assets/.kilo/commands/appweaver.md +11 -0
  49. package/assets/.kiro/agent.json +22 -0
  50. package/assets/.kiro/skills/appweaver/SKILL.md +12 -0
  51. package/assets/.opencode/agent.json +22 -0
  52. package/assets/.opencode/agents/appweaver-edit.md +12 -0
  53. package/assets/.opencode/agents/appweaver-read.md +13 -0
  54. package/assets/.opencode/commands/appweaver.md +11 -0
  55. package/assets/.roo/agent.json +22 -0
  56. package/assets/.roo/commands/appweaver.md +12 -0
  57. package/dist/commands/init.d.ts.map +1 -1
  58. package/dist/commands/init.js +14 -1
  59. package/dist/commands/init.js.map +1 -1
  60. package/dist/utils/config.d.ts.map +1 -1
  61. package/dist/utils/config.js +14 -0
  62. package/dist/utils/config.js.map +1 -1
  63. package/dist/utils/copy-assets.d.ts +16 -3
  64. package/dist/utils/copy-assets.d.ts.map +1 -1
  65. package/dist/utils/copy-assets.js +29 -14
  66. package/dist/utils/copy-assets.js.map +1 -1
  67. package/package.json +1 -1
@@ -115,17 +115,19 @@ realisation); new migration needed? (yes/no); any contract change other systems
115
115
  ## Contract deltas for the frontend lane
116
116
 
117
117
  <!--
118
- What this change adds to or alters in the service's PUBLISHED surface — the only part
119
- of this document the frontend lane may bind against. One row per contract; the frontend
120
- delta plan cites these rather than re-deriving them. "None" when the surface is
118
+ What this change adds to, alters in or removes from the service's PUBLISHED surface — the
119
+ only part of this document the frontend lane may bind against. One row per contract; the
120
+ frontend delta plan cites these rather than re-deriving them. "None" when the surface is
121
121
  unchanged, which is what a purely internal refactor should say. The operation id is the
122
122
  endpoint's name in the published API document, unique across the service; an endpoint
123
- the master plan already names keeps that id.
123
+ the master plan already names keeps that id. A `changed` or `removed` row whose operation
124
+ the frontend plan binds to is reported by analyze-plan-delta until the frontend delta plan
125
+ of this change — or a follow-up change — carries the matching change.
124
126
  -->
125
127
 
126
128
  | Operation id | Contract | Change | Shape | Serves |
127
129
  |---|---|---|---|---|
128
- | `[OperationId]` | `[VERB] [/route]` | added / changed | [request → response field shapes] | IC-[nnn] · FR-[nnn] |
130
+ | `[OperationId]` | `[VERB] [/route]` | added / changed / removed | [request → response field shapes] | IC-[nnn] · FR-[nnn] |
129
131
 
130
132
  ## Other open deltas
131
133
 
@@ -8,6 +8,8 @@
8
8
 
9
9
  **Wave**: [N] <!-- script-stamped; same wave = developable in parallel, higher wave = after -->
10
10
 
11
+ **Lanes**: [backend, frontend] <!-- script-stamped from the answer specify asks when it opens the change: the lanes that plan and build it. The spec is written whole either way. Changed later with aw-spec-actions cr-lanes --cr-id <id> --set both|backend|frontend -->
12
+
11
13
  **Base version**: [vX.Y] <!-- the current master version; close-delta bumps the minor at the end of the chain -->
12
14
 
13
15
  **Model delta**: `specs/[Context]/domain-model.[CR-ID].delta.md` <!-- "none" when this change is behaviour-only -->
@@ -274,6 +274,23 @@ text, and do not add a rule the model does not carry)*
274
274
 
275
275
  - **Maps to**: `[Command/Query]` (§2.2)
276
276
 
277
+ ### Requests from the frontend lane
278
+
279
+ <!-- THE ANSWERS to the frontend plan's §5 "Contract deltas needed" table, one row
280
+ per RQ-n it raises. PUBLISH: add the endpoint above — under the proposed
281
+ operation id unless it clashes with one this service already uses — and name
282
+ the id here. DECLINE: say why in one line; a request the spec does not
283
+ support is declined as a spec gap for `specify`, never published on a guess.
284
+ The frontend plan re-binds to the id given here. Keep every answered row;
285
+ write `None` instead of the table when the frontend plan raises no request.
286
+ plan and analyze-plan draft the endpoints above, by script, into
287
+ api-draft.json beside this plan, so a frontend can bind to an endpoint before
288
+ the service is built. -->
289
+
290
+ | Request | Outcome | Operation id | Why |
291
+ |---|---|---|---|
292
+ | RQ-[n] | published / declined | `[OperationId]` / — | [one line — required when declined] |
293
+
277
294
  ## 4. Infrastructure Layer
278
295
 
279
296
  <!--
@@ -197,8 +197,10 @@ a lost connection mid-flight.]
197
197
  line. An interface the experience needs and the service does not offer is a
198
198
  CONTRACT DELTA raised back to the service lane, never a workaround in the
199
199
  client. The OPERATION ID is the one backend-plan.md §3 gives the endpoint —
200
- the name implement finds it by in the exported API document, and checks
201
- before generating. `—` when no service plan names it yet, with a §8 DA-n. -->
200
+ the name implement finds it by in the API document, and checks before
201
+ generating. A row that needs an operation the service does not publish yet
202
+ cites the operation id its request below proposes, and names the RQ-n in
203
+ its Serves cell. -->
202
204
 
203
205
  | Screen / component | Operation id | Operation | Sends (field shape) | Receives (field shape) | Failure handling | Serves |
204
206
  |---|---|---|---|---|---|---|
@@ -207,8 +209,21 @@ a lost connection mid-flight.]
207
209
  **Write semantics**: [per mutating operation — optimistic or pessimistic, what
208
210
  it invalidates, and how an optimistic update rolls back.]
209
211
 
210
- **Contract deltas needed**: [anything the experience requires that the service
211
- surface does not offer, raised back to the service lane. Or `None`.]
212
+ **Contract deltas needed**
213
+
214
+ <!-- THE REQUEST LEDGER. One row per operation the experience needs that the
215
+ service's published surface does not offer — and, when there is no backend
216
+ plan yet, one per binding. Each request keeps its RQ-n for life: never
217
+ renumber or reuse one. Propose the operation id and the field shapes; the
218
+ backend plan answers in its "Requests from the frontend lane" table —
219
+ published under an operation id, or declined with the reason. An answered
220
+ request is re-bound in the table above to the id the backend gave it; a
221
+ declined one is planned around, or routed to `specify` when the spec needs
222
+ it. Write `None` instead of the table when every binding is published. -->
223
+
224
+ | Request | Operation id | Needed by | Sends (field shape) | Receives (field shape) | Serves |
225
+ |---|---|---|---|---|---|
226
+ | RQ-[n] | `[ProposedOperationId]` | `[Screen / component]` | [field: type, …] | [field: type, …] | FR-[nnn] |
212
227
 
213
228
  ## 6. Cross-Cutting
214
229
 
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "augment",
3
+ "runtime": "Augment CLI (auggie --print)",
4
+ "note": "auggie has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: Augment rules and AGENTS.md still load. --print is the one-shot print flag; the prompt that follows it is the positional argument. Print mode skips the indexing confirmation and indexes the workspace root, which is where the engine runs. --quiet prints only the final assistant message. Read-only steps add --ask (retrieval and non-editing tools only); edit-capable steps run with Augment's own tool permissions. No sdk block: Augment has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "auggie",
6
+ "args": ["--quiet"],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "--print" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": [],
13
+ "bypassPermissions": [],
14
+ "default": [],
15
+ "readonly": ["--ask"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: "Parametric launcher (Augment): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn)."
3
+ argument-hint: "<skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API', 'analyze-slice'"
4
+ ---
5
+
6
+ # AppWeaver launcher (Augment)
7
+
8
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
9
+
10
+ You are Augment: your row in its profile table is `.augment/agent.json`.
11
+
12
+ The arguments are: $ARGUMENTS
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "cline",
3
+ "runtime": "Cline CLI (cline)",
4
+ "note": "cline's -s/--system replaces Cline's own system prompt (its tool instructions), so 'system' is folded into the prompt instead (system: prepend). No tools allowlist or bare mode, so isolation is best-effort: .clinerules and AGENTS.md still load. The prompt is the positional argument, and -p means plan mode in Cline, so the engine puts '--' before the prompt. Steps run in act mode with --auto-approve true; read-only steps add --plan. Output stays plain text: --json prints NDJSON events, which the engine cannot read. -m takes a model id for the provider set up with 'cline auth'. The profile lives in .cline/ because Cline loads every file in .clinerules/ into every prompt as a rule; the launcher is .clinerules/workflows/appweaver.md. No sdk block: Cline has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "cline",
6
+ "args": ["--auto-approve", "true"],
7
+ "model_flag": "-m",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "--" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": [],
13
+ "bypassPermissions": [],
14
+ "default": [],
15
+ "readonly": ["--plan"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,7 @@
1
+ # AppWeaver launcher (Cline)
2
+
3
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
4
+
5
+ You are Cline: your row in its profile table is `.cline/agent.json`.
6
+
7
+ The arguments are the text the user typed after `/appweaver.md`.
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "codex",
3
+ "runtime": "OpenAI Codex CLI (codex exec)",
4
+ "note": "codex exec has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: AGENTS.md and Codex config still load. The prompt is read from stdin; progress goes to stderr and only the final agent message to stdout. Edit-capable steps run with --sandbox workspace-write: edits and commands inside the workspace, network off unless the developer's Codex config turns it on, so package restores can fail. Read-only steps run with --sandbox read-only. --skip-git-repo-check lets it run in a project that is not a git repository yet; --ephemeral keeps spawned steps out of the session history. -m takes a Codex model name. Codex has no launcher of its own: it reads .agents/skills/appweaver/SKILL.md. No sdk block: Codex has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "codex",
6
+ "args": ["exec", "--skip-git-repo-check", "--ephemeral", "--color", "never"],
7
+ "model_flag": "-m",
8
+ "system": "prepend",
9
+ "user": { "mode": "stdin" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--sandbox", "workspace-write"],
13
+ "bypassPermissions": ["--sandbox", "workspace-write"],
14
+ "default": [],
15
+ "readonly": ["--sandbox", "read-only"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "continue",
3
+ "runtime": "Continue CLI (cn -p)",
4
+ "note": "cn has no system-prompt flag (--rule adds a rule, not a system prompt), so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: Continue rules still load. -p is a boolean print flag; the prompt that follows it is the positional argument. --silent strips think tags and excess whitespace from the reply. Edit-capable steps run with --auto (all tools allowed); read-only steps with --readonly (plan mode, read-only tools). --model takes a Continue Hub model slug (owner/package). No sdk block: Continue has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "cn",
6
+ "args": ["--silent"],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "-p" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--auto"],
13
+ "bypassPermissions": ["--auto"],
14
+ "default": [],
15
+ "readonly": ["--readonly"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: appweaver
3
+ description: "Parametric launcher (Continue): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn). Usage: /appweaver <skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API'"
4
+ invokable: true
5
+ ---
6
+
7
+ # AppWeaver launcher (Continue)
8
+
9
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
10
+
11
+ You are Continue: your row in its profile table is `.continue/agent.json`.
12
+
13
+ The arguments are the text the user typed after `/appweaver`.
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "cursor",
3
+ "runtime": "Cursor CLI (cursor-agent -p)",
4
+ "note": "cursor-agent has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: project rules such as .cursor/rules and AGENTS.md still load. 'agent' is the same binary, but other CLIs (e.g. Grok) also install 'agent', so the profile names cursor-agent. -p is a boolean print flag; the prompt that follows it is the positional argument. No sdk block: Cursor has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "cursor-agent",
6
+ "args": ["--output-format", "json", "--trust"],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "-p" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--force"],
13
+ "bypassPermissions": ["--force"],
14
+ "default": [],
15
+ "readonly": ["--mode", "ask"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,7 @@
1
+ # AppWeaver launcher (Cursor)
2
+
3
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
4
+
5
+ You are Cursor: your row in its profile table is `.cursor/agent.json`.
6
+
7
+ The arguments are the text the user typed after `/appweaver`.
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "devin",
3
+ "runtime": "Devin CLI (devin -p) — Devin Desktop, formerly Windsurf",
4
+ "note": "devin has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: project rules and AGENTS.md still load. Print mode takes the prompt as the value of -p (it does not read stdin) and cannot show the workspace-trust prompt, hence --respect-workspace-trust false. Edit-capable steps run with --permission-mode dangerous so they can also run builds and tests. Devin has no read-only mode flag: read-only steps run in its default 'normal' mode, which asks before edits; that print mode then refuses them is not yet confirmed on a real run. Output is plain text, so the engine reads raw stdout. No sdk block: Devin has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "devin",
6
+ "args": ["--respect-workspace-trust", "false"],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "-p" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--permission-mode", "dangerous"],
13
+ "bypassPermissions": ["--permission-mode", "dangerous"],
14
+ "default": [],
15
+ "readonly": []
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: "Parametric launcher (Devin Desktop): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn). Usage: /appweaver <skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API'"
3
+ ---
4
+
5
+ # AppWeaver launcher (Devin Desktop)
6
+
7
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
8
+
9
+ You are Devin: your row in its profile table is `.devin/agent.json`.
10
+
11
+ The arguments are the text the user typed after `/appweaver`.
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "factory",
3
+ "runtime": "Factory Droid CLI (droid exec)",
4
+ "note": "droid exec reads the prompt from stdin and, with -o json, prints one object whose 'result' holds the reply. 'system' is folded into the prompt (system: prepend). No tools allowlist (droid's tool IDs differ from the engine's tool names) or bare mode, so isolation is best-effort: AGENTS.md and project droids still load. Without --auto, droid exec is read-only, so read-only steps pass no flag; edit-capable steps run with --auto high so they can also run builds, tests and git operations, including push. -m takes a Factory model id. No sdk block: Factory has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "droid",
6
+ "args": ["exec", "-o", "json"],
7
+ "model_flag": "-m",
8
+ "system": "prepend",
9
+ "user": { "mode": "stdin" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--auto", "high"],
13
+ "bypassPermissions": ["--auto", "high"],
14
+ "default": [],
15
+ "readonly": []
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: "Parametric launcher (Factory Droid): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn)."
3
+ argument-hint: "<skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API', 'analyze-slice'"
4
+ ---
5
+
6
+ # AppWeaver launcher (Factory Droid)
7
+
8
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
9
+
10
+ You are Factory Droid: your row in its profile table is `.factory/agent.json`.
11
+
12
+ The arguments are: $ARGUMENTS
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "gemini",
3
+ "runtime": "Gemini CLI (gemini -p)",
4
+ "note": "gemini has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: GEMINI.md and project Gemini settings still load. -p takes the prompt as its value. -o json prints one object whose 'response' holds the reply. --skip-trust trusts the workspace for the run, since headless mode cannot show the folder-trust prompt. Edit-capable steps run with --approval-mode auto_edit: file edits are auto-approved, shell commands are not, so builds and tests do not run inside spawned steps. Read-only steps run with --approval-mode plan. -m takes a Gemini model name. Gemini CLI has no launcher of its own: it reads .agents/skills/appweaver/SKILL.md. No sdk block: Gemini CLI has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "gemini",
6
+ "args": ["-o", "json", "--skip-trust"],
7
+ "model_flag": "-m",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "-p" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--approval-mode", "auto_edit"],
13
+ "bypassPermissions": ["--approval-mode", "auto_edit"],
14
+ "default": [],
15
+ "readonly": ["--approval-mode", "plan"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["response"]
22
+ }
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: "Parametric launcher (GitHub Copilot): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn)."
3
+ argument-hint: "<skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API', 'analyze-slice'"
4
+ agent: agent
5
+ ---
6
+
7
+ # AppWeaver launcher (GitHub Copilot)
8
+
9
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
10
+
11
+ You are GitHub Copilot: your row in its profile table is `.copilot/agent.json`.
12
+
13
+ The arguments are the text the user typed after `/appweaver`.
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "kilocode",
3
+ "sdk": {
4
+ "type": "claude-agent-sdk",
5
+ "package": "claude-agent-sdk",
6
+ "module": "claude_agent_sdk",
7
+ "adapter": "../.appweaver/orchestrator/adapters/claude_agent_sdk.py"
8
+ },
9
+ "runtime": "Kilo CLI (kilo run)",
10
+ "note": "kilo run has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and the prompt is read from stdin (--prompt-stdin). No tools allowlist or bare mode, so isolation is best-effort: AGENTS.md and project Kilo rules still load. --auto refuses anything not explicitly allowed, so each step runs as one of the kit's Kilo agents in .kilo/agents/: appweaver-edit (read, edit, bash) or appweaver-read (read only). Output stays plain text: --format json prints JSON-lines events, which the engine cannot read. --model takes Kilo's provider/model form. Kilo has no Python SDK, so the sdk block uses the Claude Agent SDK: sdk/sdk-apply only work for developers who also have Claude access.",
11
+ "bin": "kilo",
12
+ "args": ["run", "--auto", "--prompt-stdin"],
13
+ "model_flag": "--model",
14
+ "system": "prepend",
15
+ "user": { "mode": "stdin" },
16
+ "tools_flag": null,
17
+ "approval": {
18
+ "acceptEdits": ["--agent", "appweaver-edit"],
19
+ "bypassPermissions": ["--agent", "appweaver-edit"],
20
+ "default": ["--agent", "appweaver-edit"],
21
+ "readonly": ["--agent", "appweaver-read"]
22
+ },
23
+ "isolation": {
24
+ "bare": [],
25
+ "fresh": []
26
+ },
27
+ "result_keys": ["result"]
28
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Runs one AppWeaver workflow step that may edit files and run commands (builds, tests). Used by the AppWeaver engine when it spawns `kilo run`; not for interactive use.
3
+ mode: primary
4
+ permission:
5
+ read: allow
6
+ glob: allow
7
+ grep: allow
8
+ edit: allow
9
+ bash: allow
10
+ ---
11
+
12
+ You run one step of an AppWeaver workflow. The prompt holds your complete instructions and context: follow it exactly, and end your reply in the format it asks for.
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Runs one read-only AppWeaver workflow step (author, query, review). Used by the AppWeaver engine when it spawns `kilo run`; not for interactive use.
3
+ mode: primary
4
+ permission:
5
+ read: allow
6
+ glob: allow
7
+ grep: allow
8
+ edit: deny
9
+ bash: deny
10
+ ---
11
+
12
+ You run one read-only step of an AppWeaver workflow. The prompt holds your complete instructions and context: follow it exactly, do not modify any file, and end your reply in the format it asks for.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: "Parametric launcher (Kilo Code): run ANY converted aw-spec skill on the aw-orchestrator under one of the 4 strategies (agent [default], spawn, sdk, sdk-apply). Usage: /appweaver <skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API'"
3
+ ---
4
+
5
+ # AppWeaver launcher (Kilo Code)
6
+
7
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
8
+
9
+ You are Kilo Code: your row in its profile table is `.kilo/agent.json`.
10
+
11
+ The arguments are: $ARGUMENTS
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "kiro",
3
+ "runtime": "Kiro CLI (kiro-cli chat --no-interactive)",
4
+ "note": "kiro-cli has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: Kiro steering and AGENTS.md still load. Headless mode reads the prompt from stdin. It cannot ask for tool approval, so edit-capable steps run with --trust-all-tools and read-only steps with --trust-tools=read,grep. Headless sign-in uses the KIRO_API_KEY environment variable. Output is plain text, so the engine reads raw stdout. No sdk block: Kiro has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "kiro-cli",
6
+ "args": ["chat", "--no-interactive"],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "stdin" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--trust-all-tools"],
13
+ "bypassPermissions": ["--trust-all-tools"],
14
+ "default": [],
15
+ "readonly": ["--trust-tools=read,grep"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: appweaver
3
+ description: "Parametric launcher (Kiro): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn). Usage: /appweaver <skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API'"
4
+ ---
5
+
6
+ # AppWeaver launcher (Kiro)
7
+
8
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
9
+
10
+ You are Kiro: your row in its profile table is `.kiro/agent.json`.
11
+
12
+ The arguments are the text the user typed after `/appweaver`.
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "opencode",
3
+ "runtime": "opencode CLI (opencode run)",
4
+ "note": "opencode run has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: AGENTS.md and project opencode rules still load. The message is positional only (no stdin), so the engine puts '--' before the prompt. --auto approves every permission that is not explicitly denied, so each step runs as one of the kit's opencode agents in .opencode/agents/: appweaver-edit (read, edit, bash) or appweaver-read (read only; edit, bash and subagents denied). Output stays plain text: --format json prints raw JSON events, which the engine cannot read. --model takes opencode's provider/model form. No sdk block: opencode has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "opencode",
6
+ "args": ["run", "--auto"],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "--" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--agent", "appweaver-edit"],
13
+ "bypassPermissions": ["--agent", "appweaver-edit"],
14
+ "default": ["--agent", "appweaver-edit"],
15
+ "readonly": ["--agent", "appweaver-read"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Runs one AppWeaver workflow step that may edit files and run commands (builds, tests). Used by the AppWeaver engine when it spawns `opencode run`; not for interactive use.
3
+ mode: primary
4
+ permission:
5
+ read: allow
6
+ glob: allow
7
+ grep: allow
8
+ edit: allow
9
+ bash: allow
10
+ ---
11
+
12
+ You run one step of an AppWeaver workflow. The prompt holds your complete instructions and context: follow it exactly, and end your reply in the format it asks for.
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Runs one read-only AppWeaver workflow step (author, query, review). Used by the AppWeaver engine when it spawns `opencode run`; not for interactive use.
3
+ mode: primary
4
+ permission:
5
+ read: allow
6
+ glob: allow
7
+ grep: allow
8
+ edit: deny
9
+ bash: deny
10
+ task: deny
11
+ ---
12
+
13
+ You run one read-only step of an AppWeaver workflow. The prompt holds your complete instructions and context: follow it exactly, do not modify any file, and end your reply in the format it asks for.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: "Parametric launcher (opencode): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn). Usage: /appweaver <skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API'"
3
+ ---
4
+
5
+ # AppWeaver launcher (opencode)
6
+
7
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
8
+
9
+ You are opencode: your row in its profile table is `.opencode/agent.json`.
10
+
11
+ The arguments are: $ARGUMENTS
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "roo",
3
+ "runtime": "Roo Code CLI (roo --print)",
4
+ "note": "roo has no system-prompt flag, so 'system' is folded into the prompt (system: prepend), and no tools allowlist or bare mode, so isolation is best-effort: .roo rules and AGENTS.md still load. --print is a boolean print flag; the prompt that follows it is the positional argument. Roo auto-approves tool use unless --require-approval is passed; edit-capable steps run in --mode code, read-only steps in --mode ask. Roo's default provider is OpenRouter: set your own provider and key (--provider / --api-key, or Roo's environment variables) before using spawn. Output is plain text, so the engine reads raw stdout. No sdk block: Roo has no Python SDK adapter, so sdk/sdk-apply are unavailable.",
5
+ "bin": "roo",
6
+ "args": [],
7
+ "model_flag": "--model",
8
+ "system": "prepend",
9
+ "user": { "mode": "arg", "flag": "--print" },
10
+ "tools_flag": null,
11
+ "approval": {
12
+ "acceptEdits": ["--mode", "code"],
13
+ "bypassPermissions": ["--mode", "code"],
14
+ "default": ["--mode", "code"],
15
+ "readonly": ["--mode", "ask"]
16
+ },
17
+ "isolation": {
18
+ "bare": [],
19
+ "fresh": []
20
+ },
21
+ "result_keys": ["result"]
22
+ }
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: "Parametric launcher (Roo Code): run ANY converted aw-spec skill on the aw-orchestrator under one of 2 strategies (agent [default], spawn)."
3
+ argument-hint: "<skill> [strategy] [input…] — e.g. 'select-stack', 'specify spawn Build an order API', 'analyze-slice'"
4
+ ---
5
+
6
+ # AppWeaver launcher (Roo Code)
7
+
8
+ Read `.appweaver/orchestrator/LAUNCHER.md` and follow it exactly.
9
+
10
+ You are Roo Code: your row in its profile table is `.roo/agent.json`.
11
+
12
+ The arguments are the text the user typed after `/appweaver`.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SA2DpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAwEpB,CAAC"}
@@ -27,7 +27,20 @@ export const initCommand = new Command('init')
27
27
  choices: [
28
28
  { name: 'Claude Code (.claude/skills)', value: 'claude' },
29
29
  { name: 'Antigravity (.agents/skills)', value: 'antigravity' },
30
- { name: 'KiloCode (.kilocode/skills)', value: 'kilocode' },
30
+ { name: 'KiloCode (.kilocode/skills)', value: 'kilo' },
31
+ { name: 'Cursor (.cursor/commands)', value: 'cursor' },
32
+ { name: 'Cline (.clinerules/workflows)', value: 'cline' },
33
+ { name: 'GitHub Copilot (.github/prompts)', value: 'github' },
34
+ { name: 'Devin CLI (.devin/workflows)', value: 'devin' },
35
+ { name: 'Roo code (.roo/commands)', value: 'roo' },
36
+ { name: 'Opencode (.opencode/commands)', value: 'opencode' },
37
+ { name: 'Factory Droid (.factory/commands)', value: 'factory' },
38
+ { name: 'Augment (.augment/commands)', value: 'augment' },
39
+ { name: 'Continue (.continue/prompts)', value: 'continue' },
40
+ { name: 'Kiro (.kiro/skills)', value: 'kiro' },
41
+ { name: 'OpenAI Codex (.agents/skills)', value: 'codex' },
42
+ { name: 'Gemini CLI (.agents/skills)', value: 'gemini' },
43
+ { name: 'Amp (.agents/skills)', value: 'amp' }
31
44
  ],
32
45
  default: 'claude',
33
46
  },