@rse/ase 0.0.49 → 0.0.50

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/dst/ase-hook.js CHANGED
@@ -147,6 +147,7 @@ export default class HookCommand {
147
147
  const taskId = process.env.ASE_TASK_ID ?? "default";
148
148
  if (hasSession)
149
149
  cfg.lock(() => {
150
+ cfg.read();
150
151
  cfg.set("agent.task", taskId);
151
152
  cfg.write();
152
153
  });
@@ -191,8 +191,8 @@ export default class StatuslineCommand {
191
191
  .option("-m, --margin <n>", "reduce maximum used terminal width by <n> characters on each side", parseInteger("--margin"), 2)
192
192
  .option("--no-icons", "disable icons in placeholder rendering")
193
193
  .option("--no-labels", "disable labels in front of bold values")
194
- .argument("[lines...]", "one or more template lines with %u %p %T %s %m %e %t %P %c %C %L %N %a %r " +
195
- "%S %D %W %Q %H %X %b %g %G %d %M %V %o placeholders and <color>...</color> markup " +
194
+ .argument("[lines...]", "one or more template lines with %u %p %T %s %m %e %t %O %P %c %C %a %r " +
195
+ "%S %D %W %Q %H %X %b %g %G %d %M %V placeholders and <color>...</color> markup " +
196
196
  "(color: black, red, green, yellow, blue, magenta, cyan, white, default) " +
197
197
  "(default: single line \"%m %e %t\")")
198
198
  .action(async (lines, opts) => {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.0.49",
9
+ "version": "0.0.50",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.0.49",
3
+ "version": "0.0.50",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.0.49",
3
+ "version": "0.0.50",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,10 +1,43 @@
1
1
  ---
2
2
  name: ase-meta-chat
3
- description: "Query Foreign LLM for Chat"
4
- model: haiku
3
+ description: "Query Foreign LLM for Chat via MCP Tool"
4
+ effort: low
5
+ tools:
6
+ - "mcp__chat-openai-chatgpt__chat-with-openai-chatgpt"
7
+ - "mcp__chat-google-gemini__chat-with-google-gemini"
8
+ - "mcp__chat-deepseek__chat-with-deepseek"
9
+ - "mcp__chat-xai-grok__chat-with-xai-grok"
5
10
  ---
6
11
 
7
- With a corresponding *MCP server* named `ase-chat-xxx`,
8
- just perform the given *queries*,
9
- and give back the *plain responses without any modifications*.
12
+ 1. **Determine LLM and Query**:
13
+
14
+ Set <llm>$ARGUMENTS[0]</llm>.
15
+ Set <query/> to the second and following tokens in `$ARGUMENTS`.
16
+ You *MUST* *NOT* output anything related to this step.
17
+
18
+ 2. **Determine MCP Tool**:
19
+
20
+ Use the <llm/> to determine the corresponding MCP tool <tool/>, from
21
+ the following list of potentially available MCP tool:
22
+
23
+ - **OpenAI ChatGPT** (<llm/> `chatgpt`): MCP <tool/> `chat-with-openai-chatgpt`
24
+ - **Google Gemini** (<llm/> `gemini`): MCP <tool/> `chat-with-google-gemini`
25
+ - **DeepSeek** (<llm/> `deepseek`): MCP <tool/> `chat-with-deepseek`
26
+ - **xAI Grok** (<llm/> `grok`): MCP <tool/> `chat-with-xai-grok`
27
+
28
+ You *MUST* *NOT* output anything related to this step, except if the
29
+ MCP tool <tool/> cannot be determined (because the corresponding
30
+ MCP server is not available or currently disabled), just output the
31
+ following <template/> and immediately *STOP* processing:
32
+
33
+ <template>
34
+ ERROR: LLM `<llm/>` required MCP tool `<tool/>`, but this is (currently) not available.
35
+ </template>
36
+
37
+ 3. **Call MCP Tool**:
38
+
39
+ Else, call the MCP tool with `<tool/>(content: <query/>)` and
40
+ then return its result *verbatim* and *without any modifications*.
41
+ Especially, do *NOT* add or remove any text from the agent response
42
+ on your own and do not interpret the result in any way.
10
43
 
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: ase-meta-diagram
3
+ description: "Diagram Rendering"
4
+ tools:
5
+ - "mcp__plugin_ase_ase__diagram"
6
+ effort: low
7
+ ---
8
+
9
+ Your role is to render a *single* diagram, with *deterministic* and
10
+ *clean* output. Your objective is to produce a beautifully rendered
11
+ diagram, derived from the *Mermaid* diagram specification passed in
12
+ `$ARGUMENTS`, which is rendered with the `diagram` tool of the `ase`
13
+ MCP service. The rendered diagram is returned to the caller, who
14
+ reproduces it directly in the user-visible response text.
15
+
16
+ Rules
17
+ -----
18
+
19
+ - INPUT:
20
+ The `$ARGUMENTS` *MUST* be treated as a *Mermaid* diagram
21
+ specification!
22
+
23
+ The renderer supports the following Mermaid diagram types only:
24
+
25
+ - *structure / layout / components / dependencies* → `flowchart`
26
+ - *control flow / branching / concurrency* → `flowchart`
27
+ - *state machine / states / transitions* → `stateDiagram-v2`
28
+ - *data flow / actors / messages / protocols* → `sequenceDiagram`
29
+ - *data structure / classes / methods* → `classDiagram`
30
+ - *data model / entities / relationships* → `erDiagram`
31
+ - *metrics / distributions / time series* → `xychart-beta`
32
+
33
+ Other Mermaid diagram types are *not* supported by the renderer.
34
+
35
+ - RENDER:
36
+ You *MUST* always use the `diagram` tool from the `ase` MCP service
37
+ to render the diagram!
38
+
39
+ Pass the Mermaid diagram specification from `$ARGUMENTS` in the
40
+ `diagram` field, and pass a `colorMode` of `none` to always get
41
+ monochrome renderings. You *MUST* *NEVER* hand-draw diagrams under
42
+ any circumstances! Box-drawing characters (`┌`, `│`, `└`, `┐`,
43
+ `┘`, `─`, `┼`, `├`, `┤`, `┬`, `┴`, `╭`, `╰`), ASCII surrogates
44
+ (`+`, `-`, `|`), or any other attempt to draw a framed shape
45
+ token-by-token are *forbidden* as your own output.
46
+
47
+ - OUTPUT:
48
+ You *MUST* return *exclusively* the `text` output of the `diagram`
49
+ tool, reproduced *verbatim* into a single Markdown-fenced code block
50
+ (triple backticks). Do *not* return any other output, especially no
51
+ prose, no preamble, no summary, and no Mermaid specification.
52
+
53
+ ```
54
+ <text-output-of-diagram-tool/>
55
+ ```
56
+
57
+ The caller copies this returned block directly into the user-visible
58
+ response text. Returning anything other than the fenced rendered
59
+ block is a defect: the diagram is then effectively invisible or
60
+ polluted with extraneous text.
@@ -1,16 +1,14 @@
1
1
  ---
2
2
  name: ase-meta-search
3
- description: Use the `ase-meta-search` agent to find answers to your questions!
3
+ description: Query the Web
4
4
  tools:
5
5
  - "mcp__perplexity__perplexity_search"
6
6
  - "mcp__brave__brave_web_search"
7
7
  - "WebSearch"
8
- - "WebFetch"
9
8
  model: sonnet
10
9
  effort: low
11
10
  ---
12
11
 
13
- Just perform the given *query*
14
- and give back the *plain responses*
15
- without any modifications.
12
+ Just perform the given *query* `$ARGUMENTS` and
13
+ give back the *plain responses* without any modifications.
16
14
 
@@ -34,11 +34,13 @@ Skill Output
34
34
 
35
35
  - *IMPORTANT*: For *Diagrams*: whenever the response needs a
36
36
  diagram (structural, control-flow, state, sequence, class,
37
- entity-relationship, or metrics), you *MUST* invoke the
38
- `ase-meta-diagram` skill via the `Skill` tool and follow its rules.
39
- All hand-drawn ASCII frames, raw Mermaid source as a
40
- substitute for a rendered block, and missing stdout
41
- reproduction are defects defined by that skill.
37
+ entity-relationship, or metrics), you *MUST* build a Mermaid
38
+ specification and dispatch its rendering to the `ase-meta-diagram`
39
+ sub-agent via the `Agent` tool (`subagent_type: "ase:ase-meta-diagram"`),
40
+ then reproduce its returned fenced code block verbatim in the
41
+ response text. All hand-drawn ASCII frames, raw Mermaid source as a
42
+ substitute for a rendered block, and missing reproduction of the
43
+ rendered block are defects defined by that agent.
42
44
 
43
45
  - *IMPORTANT*: For Markdown *Tables*:
44
46
 
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.0.49",
9
+ "version": "0.0.50",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -304,11 +304,12 @@ interface quality, quality attributes, and architecture governance.
304
304
 
305
305
  - For <rendered-diagram-as-fenced-code-block/>, build a Mermaid
306
306
  specification <mermaid-spec/> for a `flowchart TB` of the
307
- high-level component or layer structure and invoke the
308
- `ase-meta-diagram` skill by calling the tool `Skill(skill:
309
- "ase:ase-meta-diagram", args: <mermaid-spec/>)` to render it.
310
- Show layers / slices / major components and their dependency
311
- direction.
307
+ high-level component or layer structure and dispatch the rendering
308
+ to the `ase-meta-diagram` sub-agent by calling the tool
309
+ `Agent(name: "ase:ase-meta-diagram", description: "Diagram Rendering",
310
+ subagent_type: "ase:ase-meta-diagram", prompt: <mermaid-spec/>)`,
311
+ using its returned fenced code block verbatim. Show layers /
312
+ slices / major components and their dependency direction.
312
313
 
313
314
  - Mark detected *anomalies* directly in the Mermaid source.
314
315
  Because `!` and `?` are Mermaid special characters, *always
@@ -9,6 +9,7 @@ disable-model-invocation: false
9
9
  effort: high
10
10
  allowed-tools:
11
11
  - "Skill"
12
+ - "Agent"
12
13
  ---
13
14
 
14
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -222,14 +223,17 @@ permitted way to persist artifacts is via `task_save(...)`.
222
223
  it with an optional diagram <optional-diagram/> by building
223
224
  a Mermaid specification <mermaid-spec/> (e.g. `flowchart
224
225
  TB`, `stateDiagram-v2`, `sequenceDiagram`, `classDiagram`,
225
- or `erDiagram`, depending on intent) and invoking the
226
- `ase-meta-diagram` skill by calling the tool `Skill(skill:
227
- "ase:ase-meta-diagram", args: <mermaid-spec/>)`. For
228
- *current vs. proposed* comparisons, render each side as
229
- a *separate* `ase-meta-diagram` invocation and stack the
230
- rendered blocks *vertically* (labels `**Before:**` /
231
- `**After:**`); never side-by-side. Omit <optional-diagram/>
232
- entirely for simple or purely local situations.
226
+ or `erDiagram`, depending on intent) and dispatching the
227
+ rendering to the `ase-meta-diagram` sub-agent by calling
228
+ the tool `Agent(name: "ase:ase-meta-diagram", description:
229
+ "Diagram Rendering", subagent_type: "ase:ase-meta-diagram",
230
+ prompt: <mermaid-spec/>)`, reproducing its returned fenced
231
+ code block verbatim. For *current vs. proposed* comparisons,
232
+ render each side as a *separate* `ase-meta-diagram`
233
+ invocation and stack the rendered blocks *vertically*
234
+ (labels `**Before:**` / `**After:**`); never side-by-side.
235
+ Omit <optional-diagram/> entirely for simple or purely local
236
+ situations.
233
237
 
234
238
  6. Indicate end of reporting by showing the following <template/>:
235
239
 
@@ -75,10 +75,12 @@ code and *explain* it in a *brief*, *standardized*, and *concise* way.
75
75
  Build a Mermaid specification <mermaid-spec/>, choosing the Mermaid
76
76
  diagram type per intent: `classDiagram` for class/method structure,
77
77
  `sequenceDiagram` for actor/message flow, or `flowchart TB` for
78
- boxes-and-lines component layouts. Then invoke the
79
- `ase-meta-diagram` skill by calling the tool `Skill(skill:
80
- "ase:ase-meta-diagram", args: <mermaid-spec/>)` to render the
81
- diagram. Do *not* hand-draw.
78
+ boxes-and-lines component layouts. Then dispatch the rendering to
79
+ the `ase-meta-diagram` sub-agent by calling the tool `Agent(name:
80
+ "ase:ase-meta-diagram", description: "Diagram Rendering", subagent_type:
81
+ "ase:ase-meta-diagram", prompt: <mermaid-spec/>)` and reproduce its
82
+ returned fenced code block verbatim in the response text. Do *not*
83
+ hand-draw.
82
84
 
83
85
  Keep your explanation *brief* and *concise*.
84
86
  Output the result with the following <template/>:
@@ -12,6 +12,7 @@ allowed-tools:
12
12
  - "Bash(uniq)"
13
13
  - "Bash(head)"
14
14
  - "Skill"
15
+ - "Agent"
15
16
  ---
16
17
 
17
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -93,10 +94,12 @@ Give *insights* into the project through the source code of $ARGUMENTS.
93
94
  Find all modules (or OOP classes) and build a Mermaid specification
94
95
  <mermaid-spec/> for a `flowchart TB` diagram with all modules as
95
96
  boxes and the imports between modules as the directed edges. Then
96
- invoke the `ase-meta-diagram` skill by calling the tool
97
- `Skill(skill: "ase:ase-meta-diagram", args: <mermaid-spec/>)`
98
- to render the diagram. Do not display any further explanation except
99
- for this diagram.
97
+ dispatch the rendering to the `ase-meta-diagram` sub-agent by
98
+ calling the tool `Agent(name: "ase:ase-meta-diagram", description:
99
+ "Diagram Rendering", subagent_type: "ase:ase-meta-diagram", prompt:
100
+ <mermaid-spec/>)` and reproduce its returned fenced code block
101
+ verbatim in the response text. Do not display any further
102
+ explanation except for this diagram.
100
103
  </step>
101
104
  </flow>
102
105
 
@@ -56,9 +56,9 @@ related to a set of code quality aspects.
56
56
 
57
57
  ```text
58
58
  Agent(
59
- name: "ase-code-lint",
59
+ name: "ase:ase-code-lint",
60
60
  description: "Lint Investigation",
61
- subagent_type: "ase-code-lint",
61
+ subagent_type: "ase:ase-code-lint",
62
62
  mode: "plan",
63
63
  prompt: <getopt-arguments/>
64
64
  )
@@ -9,6 +9,7 @@ disable-model-invocation: false
9
9
  effort: high
10
10
  allowed-tools:
11
11
  - "Skill"
12
+ - "Agent"
12
13
  ---
13
14
 
14
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -213,13 +214,16 @@ permitted way to persist artifacts is via `task_save(...)`.
213
214
  by building a Mermaid specification <mermaid-spec/>
214
215
  (e.g. `flowchart TB`, `stateDiagram-v2`, `sequenceDiagram`,
215
216
  `classDiagram`, or `erDiagram`, depending on intent) and
216
- invoking the `ase-meta-diagram` skill by calling the tool
217
- `Skill(skill: "ase:ase-meta-diagram", args: <mermaid-spec/>)`.
218
- For *current vs. proposed* comparisons, render each side as
219
- a *separate* `ase-meta-diagram` invocation and stack the
220
- rendered blocks *vertically* (labels `**Before:**` /
221
- `**After:**`); never side-by-side. Omit <optional-diagram/>
222
- entirely for simple or purely local situations.
217
+ dispatching the rendering to the `ase-meta-diagram`
218
+ sub-agent by calling the tool `Agent(name: "ase:ase-meta-diagram",
219
+ description: "Diagram Rendering", subagent_type:
220
+ "ase:ase-meta-diagram", prompt: <mermaid-spec/>)`, reproducing
221
+ its returned fenced code block verbatim. For *current
222
+ vs. proposed* comparisons, render each side as a *separate*
223
+ `ase-meta-diagram` invocation and stack the rendered blocks
224
+ *vertically* (labels `**Before:**` / `**After:**`); never
225
+ side-by-side. Omit <optional-diagram/> entirely for simple
226
+ or purely local situations.
223
227
 
224
228
  6. Indicate end of reporting by showing the following <template/>:
225
229
 
@@ -9,6 +9,7 @@ disable-model-invocation: false
9
9
  effort: high
10
10
  allowed-tools:
11
11
  - "Skill"
12
+ - "Agent"
12
13
  ---
13
14
 
14
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -152,10 +153,13 @@ permitted way to persist artifacts is via `task_save(...)`.
152
153
  visualize it with an optional diagram <optional-diagram/> by
153
154
  building a Mermaid specification <mermaid-spec/> (e.g. `flowchart
154
155
  TB`, `stateDiagram-v2`, `sequenceDiagram`, `classDiagram`, or
155
- `erDiagram`, depending on intent) and invoking the
156
- `ase-meta-diagram` skill by calling the tool `Skill(skill:
157
- "ase:ase-meta-diagram", args: <mermaid-spec/>)`. Omit
158
- <optional-diagram/> entirely for simple or purely local situations.
156
+ `erDiagram`, depending on intent) and dispatching the rendering
157
+ to the `ase-meta-diagram` sub-agent by calling the tool
158
+ `Agent(name: "ase:ase-meta-diagram", description: "Diagram
159
+ Rendering", subagent_type: "ase:ase-meta-diagram", prompt:
160
+ <mermaid-spec/>)`, reproducing its returned fenced code block
161
+ verbatim. Omit <optional-diagram/> entirely for simple or
162
+ purely local situations.
159
163
 
160
164
  2. **Investigate Code Base**:
161
165
 
@@ -259,13 +263,16 @@ permitted way to persist artifacts is via `task_save(...)`.
259
263
  by building a Mermaid specification <mermaid-spec/>
260
264
  (e.g. `flowchart TB`, `stateDiagram-v2`, `sequenceDiagram`,
261
265
  `classDiagram`, or `erDiagram`, depending on intent) and
262
- invoking the `ase-meta-diagram` skill by calling the tool
263
- `Skill(skill: "ase:ase-meta-diagram", args: <mermaid-spec/>)`.
264
- For *current vs. proposed* comparisons, render each side as
265
- a *separate* `ase-meta-diagram` invocation and stack the
266
- rendered blocks *vertically* (labels `**Before:**` /
267
- `**After:**`); never side-by-side. Omit <optional-diagram/>
268
- entirely for simple or purely local situations.
266
+ dispatching the rendering to the `ase-meta-diagram`
267
+ sub-agent by calling the tool `Agent(name: "ase:ase-meta-diagram",
268
+ description: "Diagram Rendering", subagent_type:
269
+ "ase:ase-meta-diagram", prompt: <mermaid-spec/>)`, reproducing
270
+ its returned fenced code block verbatim. For *current
271
+ vs. proposed* comparisons, render each side as a *separate*
272
+ `ase-meta-diagram` invocation and stack the rendered blocks
273
+ *vertically* (labels `**Before:**` / `**After:**`); never
274
+ side-by-side. Omit <optional-diagram/> entirely for simple
275
+ or purely local situations.
269
276
 
270
277
  6. Indicate end of reporting by showing the following <template/>:
271
278
 
@@ -57,9 +57,9 @@ documents.
57
57
 
58
58
  ```text
59
59
  Agent(
60
- name: "ase-docs-proofread",
60
+ name: "ase:ase-docs-proofread",
61
61
  description: "Proofread Investigation",
62
- subagent_type: "ase-docs-proofread",
62
+ subagent_type: "ase:ase-docs-proofread",
63
63
  mode: "plan",
64
64
  prompt: <getopt-arguments/>
65
65
  )
@@ -2,64 +2,48 @@
2
2
  name: ase-meta-chat
3
3
  argument-hint: "<llm> <query>"
4
4
  description: >
5
- Query foreign LLM for Chat.
5
+ Query foreign LLM for chat.
6
6
  Use this skill if a foreign LLM like OpenAI ChatGPT, Google Gemini,
7
7
  DeepSeek or xAI Grok should be queried with a single chat message.
8
8
  user-invocable: true
9
9
  disable-model-invocation: false
10
- context: fork
11
10
  effort: low
12
11
  allowed-tools:
13
- - "mcp__chat-openai-chatgpt"
14
- - "mcp__chat-google-gemini"
15
- - "mcp__chat-deepseek"
16
- - "mcp__chat-xai-grok"
17
- - "Task"
18
12
  - "Agent"
19
13
  ---
20
14
 
21
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
22
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
23
17
 
24
- Query Foreign LLMs for Chat
25
- ===========================
18
+ Query Foreign LLM for Chat
19
+ ==========================
26
20
 
27
21
  <skill name="ase-meta-chat">
28
- Query Foreign LLMs for Chat
22
+ Query Foreign LLM for Chat
29
23
  </skill>
30
24
 
25
+ <role>
31
26
  Your role is to act as a proxy to query a foreign LLM for a single chat message.
27
+ </role>
32
28
 
33
29
  <objective>
34
30
  Query foreign LLM for: <query>$ARGUMENTS</query>
35
31
  </objective>
36
32
 
37
- <flow>
38
-
39
- 1. <step id="STEP 1: Select LLMs">
40
- Use the *first word* of the following <query/> for selecting the
41
- foreign LLMs to query, and their corresponding MCP servers, from the
42
- following list:
43
-
44
- - **OpenAI ChatGPT**: via MCP server `chat-openai-chatgpt`
45
- - **Google Gemini**: via MCP server `chat-google-gemini`
46
- - **DeepSeek**: via MCP server `chat-deepseek`
47
- - **xAI Grok**: via MCP server `chat-xai-grok`
48
- </step>
49
-
50
- 2. <step id="STEP 2: Spawn Agents">
51
- Spawn a *sub-task* with the companion `ase-meta-chat` *agent* (and
52
- not this *skill*, but the agent of the same name) for the selected
53
- foreign LLMs, and pass the *second and all remaining* words of the
54
- following <query/> as the query for the selected LLM.
55
- </step>
56
-
57
- 3. <step id="STEP 3: Return Responses">
58
- Return the *plain response* of the `ase-meta-chat` agent 1:1 and
59
- *without any modifications*. Especially, do *NOT* add or remove any
60
- text from the agent response on your own and do not interpret the
61
- result in any way.
62
- </step>
63
-
64
- </flow>
33
+ 1. You *MUST* *NOT* output anything in this step.
34
+ Just call the underlying agent with the following tool:
35
+
36
+ ```text
37
+ Agent(
38
+ name: "ase:ase-meta-chat",
39
+ description: "Query Foreign LLM for Chat",
40
+ subagent_type: "ase:ase-meta-chat",
41
+ prompt: <query/>
42
+ )
43
+ ```
44
+
45
+ 2. Output the *plain response* of the `ase:ase-meta-chat` agent
46
+ *verbatim* and *without any modifications*. Especially, do *NOT* add or
47
+ remove any text from the agent response on your own and do not interpret
48
+ the result in any way.
65
49
 
@@ -21,7 +21,9 @@ Query Multiple AIs for Quorum Answer
21
21
  Query Multiple AIs for Quorum Answer
22
22
  </skill>
23
23
 
24
+ <role>
24
25
  Your role is an *expert-level assistant*.
26
+ </role>
25
27
 
26
28
  <objective>
27
29
  Find a *quorum answer* on an arbitrary question,
@@ -29,11 +31,12 @@ by querying *multiple* AIs for an *optimal consensus*.
29
31
  </objective>
30
32
 
31
33
  <flow>
32
- 1. <step id="STEP 1: Determine Own Answer">
33
- Determine your own answer.
34
- For yourself (Anthropic Claude), first answer the following <query/> in advance:
35
34
 
36
- <query>
35
+ 1. <step id="STEP 1: Preview Own Answer">
36
+
37
+ Prepare the LLM query by setting <query/> to the following <template/>:
38
+
39
+ <template>
37
40
  $ARGUMENTS.
38
41
  Please respond with facts and very concise and brief only,
39
42
  usually with just 1 to 7 corresponding bullet points and with short sentences.
@@ -41,40 +44,60 @@ by querying *multiple* AIs for an *optimal consensus*.
41
44
  Beside bullet points, do not provide any additional explanations.
42
45
  Emphasize keywords or cruxes in your response with Markdown formatting.
43
46
  Format code parts with Markdown formatting.
44
- </query>
45
- </step>
47
+ </template>
46
48
 
47
- 2. <step id="STEP 2: Preview Own Answer">
48
- Show your own answer as a sneak preview.
49
- For this, use the following output <template/>:
49
+ For yourself (Anthropic Claude), first answer this <query/> in
50
+ advance yourself by showing your own answer to the query as a sneak
51
+ preview. For this, output the following <template/>:
50
52
 
51
53
  <template>
52
54
  **Anthropic Claude** (sneak preview in advance):
53
55
  - [...]
54
56
  - [...]
55
57
  </template>
58
+
56
59
  </step>
57
60
 
58
- 3. <step id="STEP 3: Query Foreign AIs">
59
- For each of the following foreign AIs and their potentially
60
- available, given, corresponding MCP servers, use a *sub-task* and
61
- the `ase-meta-chat` *agent* to perform the above same <query/> zero
62
- or more times and in *parallel* again:
61
+ 2. <step id="STEP 2: Query Foreign AIs">
62
+
63
+ <define name="agent">
64
+ Call the `Agent` tool:
65
+
66
+ ```text
67
+ Agent(
68
+ name: "ase:ase-meta-chat",
69
+ description: "Query Foreign LLM: <arg1/>",
70
+ subagent_type: "ase:ase-meta-chat",
71
+ prompt: "<arg2/> <query/>"
72
+ )
73
+ ```
74
+
75
+ </define>
76
+
77
+ <expand name="agent" arg1="OpenAI ChatGPT" arg2="chatgpt"></expand>
78
+ <expand name="agent" arg1="Google Gemini" arg2="gemini"></expand>
79
+ <expand name="agent" arg1="DeepSeek" arg2="deepseek"></expand>
80
+ <expand name="agent" arg1="xAI Grok" arg2="grok"></expand>
63
81
 
64
- - OpenAI ChatGPT: `chat-openai-chatgpt`
65
- - Google Gemini: `chat-google-gemini`
66
- - DeepSeek: `chat-deepseek`
67
- - xAI Grok: `chat-xai-grok`
82
+ You *MUST* *NOT* output anything in this step.
68
83
 
69
- Silently skip those AIs where the corresponding MCP server is not available.
70
84
  </step>
71
85
 
72
- 4. <step id="STEP 4: Summarize Responses">
73
- Summarize all responses, of both yourself and all available MCP servers,
74
- with just 1 to 7 corresponding bullet points and with short sentences.
86
+ 3. <step id="STEP 3: Summarize Responses">
87
+
88
+ Agents which returned a response with an `ERROR:` prefix are
89
+ silently skipped and are treatd as not available.
90
+
91
+ Summarize all responses, of both yourself and all available agents
92
+ with just 1 to 7 corresponding bullet points and with short
93
+ sentences.
94
+
95
+ You *MUST* *NOT* output anything in this step.
96
+
75
97
  </step>
76
98
 
77
- 5. <step id="STEP 5: Determine Consensus Rating">
99
+ 4. <step id="STEP 4: Determine Consensus Rating">
100
+
78
101
  Determine, on a Likert scale of 0..<n/>, the amount of the overall
79
102
  consensus <c/> of all the responses. The <n/> is the *total number of
80
103
  responders* (yourself plus all available foreign AIs above).
@@ -85,11 +108,16 @@ by querying *multiple* AIs for an *optimal consensus*.
85
108
  formatted as `(disagreement: <ai/>, <ai/>, [...])` where <ai/> is a
86
109
  name of an AI which disagreed with the consensus. Else, if all AIs
87
110
  agree, set <disagreement></disagreement>.
111
+
112
+ You *MUST* *NOT* output anything in this step.
113
+
88
114
  </step>
89
115
 
90
- 6. <step id="STEP 6: Show Results">
91
- Finally show the summary, the consensus and the complete and unmodified responses
92
- of yourself and each of the MCP servers, based on the following output <template/>:
116
+ 5. <step id="STEP 5: Show Results">
117
+
118
+ Finally show the summary, the consensus and the complete and
119
+ unmodified responses of yourself and each of the MCP servers, based
120
+ on the following output <template/>:
93
121
 
94
122
  <template>
95
123
  **QUESTION**:
@@ -123,6 +151,9 @@ by querying *multiple* AIs for an *optimal consensus*.
123
151
  </template>
124
152
 
125
153
  In this output, remove the sections of those AIs which were not available.
154
+ You *MUST* *NOT* output any further explanations yourself.
155
+
126
156
  </step>
157
+
127
158
  </flow>
128
159
 
@@ -10,9 +10,7 @@ effort: low
10
10
  allowed-tools:
11
11
  - "mcp__perplexity__perplexity_search"
12
12
  - "mcp__brave__brave_web_search"
13
- - "WebSearch"
14
- - "WebFetch"
15
- - "Task"
13
+ - "Agent"
16
14
  ---
17
15
 
18
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -25,7 +23,9 @@ Search the Internet/Web
25
23
  Search the Internet/Web
26
24
  </skill>
27
25
 
26
+ <role>
28
27
  Your role is an expert-level *web specialist*.
28
+ </role>
29
29
 
30
30
  <objective>
31
31
  Your objective is to *search* the *Internet*/*Web* for the following query:
@@ -33,20 +33,46 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
33
33
  </objective>
34
34
 
35
35
  <flow>
36
- 1. <step id="STEP 1: QUERY SERVICES">
37
- If the MCP tool `mcp__perplexity__perplexity_search` is available, send <query/> to it
38
- via a first *sub-task* and our companion `ase-meta-search` *agent*.
39
36
 
40
- If the MCP tool `mcp__brave__brave_web_search` is available, send <query/> to it
41
- via a second *sub-task* and our companion `ase-meta-search` *agent*.
37
+ 1. <step id="STEP 1: Query Search Services">
38
+
39
+ <define name="agent">
40
+ ```text
41
+ Agent(
42
+ name: "ase:ase-meta-search",
43
+ description: "Query Web Search Service",
44
+ subagent_type: "ase:ase-meta-search",
45
+ prompt: <content/>
46
+ )
47
+ ```
48
+ </define>
49
+
50
+ If the MCP tool `mcp__perplexity__perplexity_search` is available, call:
51
+ <expand name="agent">
52
+ Call the MCP tool `mcp__perplexity__perplexity_search(query: "<query/>")`
53
+ </expand>
54
+
55
+ If the MCP tool `mcp__brave__brave_web_search` is available, call:
56
+ <expand name="agent">
57
+ Call the MCP tool `mcp__brave__brave_web_search(query: "<query/>")`
58
+ </expand>
59
+
60
+ <expand name="agent">
61
+ Call the tool `WebSearch(query: "<query/>")`
62
+ </expand>
42
63
 
43
- Send <query/> to the built-in tool `WebSearch`
44
- via a third *sub-task* and our companion `ase-meta-search` *agent*.
45
64
  </step>
46
65
 
47
- 2. <step id="STEP 2: CONSOLIDATE ANSWERS">
48
- Consolidate all responses from the `ase-meta-search` *agents*
49
- into a single response and output it without giving any further explanations.
66
+ 2. <step id="STEP 2: Consolidate Search Answers">
67
+
68
+ Consolidate all responses from the `ase:ase-meta-search` agents
69
+ calls above into a single response and output it without giving any
70
+ further explanations.
71
+
72
+ For the consolidation, do *NOT* remove any orginal information,
73
+ just *MERGE* all overlapping information.
74
+
50
75
  </step>
76
+
51
77
  </flow>
52
78
 
@@ -1,101 +0,0 @@
1
- ---
2
- name: ase-meta-diagram
3
- description: >
4
- Render diagrams via the `diagram` tool of the `ase` MCP service.
5
- *Always use* when you have to *visualize*
6
- structure/layout/components/dependencies as Flowchart,
7
- control-flow/branching/concurrency as Flowchart,
8
- state-machine/states/transitions as a UML State Diagram,
9
- data-flow/actors/messages/protocols as a UML Sequence Diagram,
10
- data-structure/classes/methods as a UML Class Diagram,
11
- data-model/entities/relationships as an ER Diagram, or
12
- metrics/distributions/time-series as XY-Charts.
13
- user-invocable: false
14
- disable-model-invocation: false
15
- effort: low
16
- allowed-tools:
17
- - "mcp__plugin_ase_ase__diagram"
18
- ---
19
-
20
- Render Diagrams
21
- ===============
22
-
23
- Your role is to render *every* diagram in the current session, with
24
- *deterministic* and *clean* output. For this, your objective is to
25
- produce a beautifully rendered diagram that the user can read directly
26
- in the response text, derived from a *Mermaid* diagram specification,
27
- which is rendered with the `diagram` tool of the `ase` MCP service.
28
-
29
- Rules
30
- -----
31
-
32
- - WHEN NOT:
33
- You *MUST* *NEVER* hand-draw diagrams under any circumstances!
34
-
35
- Box-drawing characters (`┌`, `│`, `└`, `┐`, `┘`, `─`, `┼`, `├`,
36
- `┤`, `┬`, `┴`, `╭`, `╰`), ASCII surrogates (`+`, `-`, `|`), or any
37
- other attempt to draw a framed shape token-by-token are *forbidden*
38
- as your own diagram output.
39
-
40
- - WHEN:
41
- You *MUST* always use the `diagram` tool from the `ase` MCP service,
42
- whenever a diagram should be drawn!
43
-
44
- Every diagram in the output *MUST* originate from a `diagram`
45
- MCP tool call, with Mermaid diagram specification passed in the
46
- `diagram` field, made in the *same* session response turn. Also,
47
- pass a `colorMode` of `none` to always get monochrome renderings.
48
-
49
- - INPUT:
50
- For describing the diagrams, you *MUST* use the *Mermaid* diagram
51
- specification language!
52
-
53
- Use the following Mermaid diagram types per intent:
54
-
55
- - *structure / layout / components / dependencies* → `flowchart`
56
- - *control flow / branching / concurrency* → `flowchart`
57
- - *state machine / states / transitions* → `stateDiagram-v2`
58
- - *data flow / actors / messages / protocols* → `sequenceDiagram`
59
- - *data structure / classes / methods* → `classDiagram`
60
- - *data model / entities / relationships* → `erDiagram`
61
- - *metrics / distributions / time series* → `xychart-beta`
62
-
63
- Other Mermaid diagram types are *not* supported by the renderer
64
- and hence should *not* be specified!
65
-
66
- - OUTPUT:
67
- You *MUST* reproduce the `text` output of the `diagram` tool from
68
- the `ase` MCP service in the response text! Do not produce any other
69
- output, especially no explanations.
70
-
71
- In other words, after the `diagram` tool call completes, the
72
- skill *MUST* copy the tool's `text` result *verbatim* into a
73
- Markdown-fenced code block (triple backticks), directly placed
74
- in the response text immediately after the MCP tool call — the
75
- user reads the Markdown fenced block in the response, not the
76
- (truncated) tool call display. Emitting only the tool call without
77
- the reproduction of the `text` output is a defect: the diagram is
78
- then effectively invisible.
79
-
80
- - NOTICE 1:
81
- You *MUST* *NEVER* emit the plain Mermaid diagram specification, as
82
- it is just an intermediate format for driving the rendering process!
83
-
84
- - NOTICE 2:
85
- You *SHOULD* keep diagrams narrow!
86
-
87
- The renderer's horizontal extent scales with siblings per row, node
88
- label lengths, and inter-node padding. Limit *≤6 siblings per row*
89
- and group further items into nested `subgraph` hierarchies; keep
90
- *node labels* *≤20 chars* (abbreviate long names, drop adjectives).
91
-
92
- - NOTICE 3:
93
- You *SHOULD* stack diagrams vertically!
94
-
95
- For *comparison diagrams* (e.g., *current vs. proposed*, *before
96
- vs. after*), render each side as a *separate* Mermaid diagram
97
- specification via the `diagram` tool from the `ase` MCP service, and
98
- then stack the two rendered blocks *vertically* — each preceded by
99
- a bold label (`**BEFORE:**` / `**AFTER:**`, or similar). Do *not*
100
- attempt side-by-side layout.
101
-