@rse/ase 0.0.30 → 0.0.31
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-hello.js +22 -0
- package/dst/ase-hook.js +3 -1
- package/dst/ase-setup.js +10 -7
- package/package.json +2 -1
- package/plugin/.claude/settings.local.json +7 -0
- package/plugin/.claude-plugin/plugin.json +20 -0
- package/plugin/.github/plugin/plugin.json +21 -0
- package/plugin/agents/ase-meta-chat.md +10 -0
- package/plugin/agents/ase-meta-search.md +16 -0
- package/plugin/commands/ase-code-lint/complete.md +9 -0
- package/plugin/commands/ase-code-lint/explain.md +9 -0
- package/plugin/commands/ase-code-lint/nope.md +11 -0
- package/plugin/commands/ase-code-lint/reassess.md +15 -0
- package/plugin/commands/ase-code-lint/recheck.md +9 -0
- package/plugin/commands/ase-code-lint/refine.md +9 -0
- package/plugin/hooks/hooks-copilot.json +23 -0
- package/plugin/hooks/hooks.json +40 -0
- package/plugin/meta/ase-constitution.md +114 -0
- package/plugin/meta/ase-dialog.md +122 -0
- package/plugin/meta/ase-persona.md +63 -0
- package/plugin/meta/ase-plan.md +69 -0
- package/plugin/meta/ase-skill.md +238 -0
- package/plugin/skills/ase-arch-analyze/SKILL.md +442 -0
- package/plugin/skills/ase-arch-discover/SKILL.md +160 -0
- package/plugin/skills/ase-code-analyze/SKILL.md +108 -0
- package/plugin/skills/ase-code-craft/SKILL.md +237 -0
- package/plugin/skills/ase-code-explain/SKILL.md +115 -0
- package/plugin/skills/ase-code-insight/SKILL.md +96 -0
- package/plugin/skills/ase-code-lint/SKILL.md +382 -0
- package/plugin/skills/ase-code-refactor/SKILL.md +241 -0
- package/plugin/skills/ase-code-resolve/SKILL.md +299 -0
- package/plugin/skills/ase-meta-changes/SKILL.md +95 -0
- package/plugin/skills/ase-meta-chat/SKILL.md +58 -0
- package/plugin/skills/ase-meta-commit/SKILL.md +64 -0
- package/plugin/skills/ase-meta-diagram/SKILL.md +101 -0
- package/plugin/skills/ase-meta-evaluate/SKILL.md +247 -0
- package/plugin/skills/ase-meta-persona/SKILL.md +52 -0
- package/plugin/skills/ase-meta-quorum/SKILL.md +122 -0
- package/plugin/skills/ase-meta-search/SKILL.md +48 -0
- package/plugin/skills/ase-meta-why/SKILL.md +69 -0
- package/plugin/skills/ase-task-delete/SKILL.md +76 -0
- package/plugin/skills/ase-task-edit/SKILL.md +390 -0
- package/plugin/skills/ase-task-id/SKILL.md +46 -0
- package/plugin/skills/ase-task-implement/SKILL.md +146 -0
- package/plugin/skills/ase-task-list/SKILL.md +44 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +181 -0
- package/plugin/skills/ase-task-reboot/SKILL.md +161 -0
- package/plugin/skills/ase-task-view/SKILL.md +81 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-evaluate
|
|
3
|
+
argument-hint: "<request>"
|
|
4
|
+
description: >
|
|
5
|
+
Evaluate alternatives through a weighted multi-criteria decision
|
|
6
|
+
matrix. Use when the user calls for the *evaluation* of
|
|
7
|
+
*alternatives*, wants to *compare* things, or asks what the best is
|
|
8
|
+
from a list of choices.
|
|
9
|
+
user-invocable: true
|
|
10
|
+
disable-model-invocation: false
|
|
11
|
+
effort: high
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
16
|
+
|
|
17
|
+
Evaluate Alternatives
|
|
18
|
+
=====================
|
|
19
|
+
|
|
20
|
+
Your role is an experienced, *expert-level assistant*,
|
|
21
|
+
specialized in *evaluating alternatives*.
|
|
22
|
+
|
|
23
|
+
<objective>
|
|
24
|
+
*Evaluate* *alternatives* through a weighted
|
|
25
|
+
multi-*criteria* decision matrix.
|
|
26
|
+
</objective>
|
|
27
|
+
|
|
28
|
+
<flow>
|
|
29
|
+
1. <step id="STEP 1: Determine Reason">
|
|
30
|
+
- From the <request>$ARGUMENTS</request>, try to derive the overall
|
|
31
|
+
reason <reason/> for the evaluation. If no such reason can be
|
|
32
|
+
derived, assume <reason>generic comparison</reason>.
|
|
33
|
+
|
|
34
|
+
- Output the determined reason with just the following <template/>
|
|
35
|
+
and do not output anything else:
|
|
36
|
+
|
|
37
|
+
<template>
|
|
38
|
+
⚪ **REASON**: *<reason/>*
|
|
39
|
+
</template>
|
|
40
|
+
</step>
|
|
41
|
+
|
|
42
|
+
2. <step id="STEP 2: Determine Alternatives">
|
|
43
|
+
- From the <request>$ARGUMENTS</request> derive the two or more
|
|
44
|
+
alternatives <alternative-K/> (K=1-N) the user wants to be
|
|
45
|
+
evaluated. Do not output anything.
|
|
46
|
+
|
|
47
|
+
- If fewer than two alternatives could be derived (N<2), output the
|
|
48
|
+
following <template/> and *stop the entire flow* immediately without
|
|
49
|
+
executing any further steps:
|
|
50
|
+
|
|
51
|
+
<template>
|
|
52
|
+
🟠 **ERROR: INSUFFICIENT ALTERNATIVES**: at least two are required for a comparison!
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
- For each alternative <alternative-K/> (K=1-N), decide whether
|
|
56
|
+
you have all necessary information at hand to give it the proper,
|
|
57
|
+
unique, short, and *concise name* <alternative-K/>. If you are
|
|
58
|
+
unsure, use the `ase-meta-search` skill (at most one invocation per
|
|
59
|
+
alternative, drawing from the *skill-wide shared budget* of at
|
|
60
|
+
most 8 `ase-meta-search` invocations in total across STEP 2 and STEP 3
|
|
61
|
+
combined) to find out more and adjust the name <alternative-K/>.
|
|
62
|
+
|
|
63
|
+
If still unsure after the shared budget is exhausted, pick the
|
|
64
|
+
best-guess concise name and proceed. Do not output anything.
|
|
65
|
+
|
|
66
|
+
- For each alternative <alternative-K/> (K=1-N), decide which *one*
|
|
67
|
+
of *USP* (Unique Selling Point -- what makes it unique), *Crux*
|
|
68
|
+
(what you should notice), or *Gotcha* (what you should not stumble
|
|
69
|
+
over) is its single most distinguishing perspective, and remember
|
|
70
|
+
this as an <info-K/> (K=1-N) formatted like `<type/>: <hint/>` where
|
|
71
|
+
<type/> is one of `USP`, `Crux`, or `Gotcha` and <hint/> is a 1-6
|
|
72
|
+
word hint.
|
|
73
|
+
|
|
74
|
+
- For the set of alternatives, decide what the 1-6 word long
|
|
75
|
+
name of the *class of alternatives* <class-of-alternatives/> is.
|
|
76
|
+
|
|
77
|
+
- For each alternative <alternative-K/> (K=1-N), decide whether
|
|
78
|
+
it is a genuine member of <class-of-alternatives/>. If any
|
|
79
|
+
<alternative-K/> is *not* a member (i.e. the alternatives are not
|
|
80
|
+
mutually comparable within a single class), let <alternative-J/>
|
|
81
|
+
(J=1-P, P<=N) be the subset of non-member alternatives, output the
|
|
82
|
+
following <template/> and *stop the entire flow* immediately without
|
|
83
|
+
executing any further steps:
|
|
84
|
+
|
|
85
|
+
<template>
|
|
86
|
+
🟠 **ERROR: INCOMPARABLE ALTERNATIVES**: *<class-of-alternatives/>*
|
|
87
|
+
|
|
88
|
+
<for items="<alternative-J/> [...]">
|
|
89
|
+
⚑ **<item/>** (*member of a different class*)
|
|
90
|
+
</for>
|
|
91
|
+
</template>
|
|
92
|
+
|
|
93
|
+
- Output the determined, individual alternatives as a Markdown
|
|
94
|
+
*table* with just the following <template/> and do not output
|
|
95
|
+
anything else:
|
|
96
|
+
|
|
97
|
+
<template>
|
|
98
|
+
🔵 **ALTERNATIVES**: *<class-of-alternatives/>*
|
|
99
|
+
|
|
100
|
+
| ⚑ *Alternative* | ⚖ *Hint* |
|
|
101
|
+
| :--------------------- | :-------- |
|
|
102
|
+
| ⚑ **<alternative-1/>** | <info-1/> |
|
|
103
|
+
[...alternatives K=2-(N-1) for N>2...]
|
|
104
|
+
| ⚑ **<alternative-N/>** | <info-N/> |
|
|
105
|
+
</template>
|
|
106
|
+
</step>
|
|
107
|
+
|
|
108
|
+
3. <step id="STEP 3: Derive Criteria">
|
|
109
|
+
- From the <request>$ARGUMENTS</request>, try to derive the criteria
|
|
110
|
+
<criteria-L/> (L=1-M) for the evaluation. Do not output anything.
|
|
111
|
+
|
|
112
|
+
- For each criteria <criteria-L/> (L=1-M), decide on its <weight-L/>
|
|
113
|
+
from the value set { 4.00, 2.00, 1.00, 0.50, 0.25 } (from most
|
|
114
|
+
important, over normal, to less important). Do not output anything.
|
|
115
|
+
|
|
116
|
+
- Ensure the final number of criteria is always within the range of
|
|
117
|
+
minimum 8 and maximum 12: if less than 8 criteria were requested,
|
|
118
|
+
use the set of alternatives to decide on additional criteria
|
|
119
|
+
which potentially allow best to triage the alternatives, take the
|
|
120
|
+
<reason/> into account, and use the `ase-meta-search` skill (drawing from
|
|
121
|
+
the *skill-wide shared budget* of at most 8 `ase-meta-search` invocations
|
|
122
|
+
in total across STEP 2 and STEP 3 combined) to find out about the
|
|
123
|
+
potentially still missing criteria and assign their <weight-L/>.
|
|
124
|
+
|
|
125
|
+
If still under 8 criteria after the shared budget is exhausted,
|
|
126
|
+
fill the remaining slots from existing knowledge without further
|
|
127
|
+
searches; if more than 12 criteria were requested, drop the criteria
|
|
128
|
+
with the smallest <weight-L/> until 12 remain. Do not output
|
|
129
|
+
anything.
|
|
130
|
+
|
|
131
|
+
- To prevent a single high-weight criterion from dominating the
|
|
132
|
+
weighted sum (the weight set is geometric ×2 while the evaluation
|
|
133
|
+
Likert scale is linear), assign weight 4.00 to *at least one* and
|
|
134
|
+
*at most two* criteria, and weight 2.00 to *at least two* and *at
|
|
135
|
+
most three* criteria. Symmetrically, to prevent a long tail of
|
|
136
|
+
negligible-weight criteria, assign weight 0.50 to *at most two*
|
|
137
|
+
criteria, and weight 0.25 to *at most one* criterion. Do not output
|
|
138
|
+
anything.
|
|
139
|
+
</step>
|
|
140
|
+
|
|
141
|
+
4. <step id="STEP 4: Evaluate Alternatives against Criteria">
|
|
142
|
+
- For each alternative <alternative-K/> (K=1-N) and each criteria
|
|
143
|
+
<criteria-L/> (L=1-M), decide on the evaluation <eval-K-L/>, which
|
|
144
|
+
means how good the alternative meets the criteria on a Likert-scale
|
|
145
|
+
from { -2, -1, 0, +1, +2 } (from worst, over neutral, to best). Do
|
|
146
|
+
not output anything.
|
|
147
|
+
|
|
148
|
+
- Then, for each alternative <alternative-K/> (K=1-N), calculate a
|
|
149
|
+
rating <rating-K/> (K=1-N) which is the product-sum of all weights
|
|
150
|
+
<weight-L/> (L=1-M) and the evaluation <eval-K-L/> (K=1-N, L=1-M).
|
|
151
|
+
The result is always a numerical value. Retain the *raw, unrounded*
|
|
152
|
+
<rating-K/> for use in STEP 5, but round <rating-K/> to 2 decimal
|
|
153
|
+
places *for display only* when emitting it in the table below. Do
|
|
154
|
+
not output anything.
|
|
155
|
+
|
|
156
|
+
- Output the resulting *Weighted Decision Matrix* as a Markdown
|
|
157
|
+
*table* with just the following <template/> and do not output
|
|
158
|
+
anything else. When emitting the table, render *one column per
|
|
159
|
+
alternative* <alternative-K/> (K=1-N).
|
|
160
|
+
|
|
161
|
+
<template>
|
|
162
|
+
🔵 **EVALUATION**: *Weighted Multi-Criteria Decision Matrix*
|
|
163
|
+
|
|
164
|
+
| ⦿ *Criteria* | ⚖ *Weight* | ⚑ **<alternative-1/>** | [...alternatives 2-(N-1)...] | ⚑ **<alternative-N/>** |
|
|
165
|
+
| :------------ | ----------: | ---------------------: | ---------------------------: | ---------------------: |
|
|
166
|
+
| <criteria-1/> | <weight-1/> | <eval-1-1/> | [...evals 1-2..1-(N-1)...] | <eval-1-N/> |
|
|
167
|
+
[...criteria L=2-(M-1) for M>2...]
|
|
168
|
+
| <criteria-M/> | <weight-M/> | <eval-M-1/> | [...evals M-2..M-(N-1)...] | <eval-M-N/> |
|
|
169
|
+
| **RATING** | | **<rating-1/>** | [...ratings 2-(N-1)...] | **<rating-N/>** |
|
|
170
|
+
</template>
|
|
171
|
+
</step>
|
|
172
|
+
|
|
173
|
+
5. <step id="STEP 5: Report Best Alternative">
|
|
174
|
+
- The best alternative <alternative-K/> (K=1-N) is the alternative
|
|
175
|
+
whose *raw, unrounded* <rating-K/> (i.e. the product-sum from STEP
|
|
176
|
+
4, *before* the display-only rounding) is the maximum rating value
|
|
177
|
+
across all alternatives.
|
|
178
|
+
|
|
179
|
+
- The second best alternative <alternative-X/> (X=1-N, X != K) is
|
|
180
|
+
the alternative whose *raw, unrounded* <rating-X/> is the second
|
|
181
|
+
largest rating value across all alternatives.
|
|
182
|
+
|
|
183
|
+
- If multiple alternatives share the second-largest raw rating, pick
|
|
184
|
+
any one of them as <alternative-X/>; the resulting <distance/> and
|
|
185
|
+
<percentage/> are unaffected by the choice, so the downstream output
|
|
186
|
+
is deterministic.
|
|
187
|
+
|
|
188
|
+
- Determine rating distance <distance/> between <alternative-K/> and
|
|
189
|
+
<alternative-X/> from their *raw, unrounded* ratings by calculating:
|
|
190
|
+
<distance/> = <rating-K/> - <rating-X/>. Do not output anything.
|
|
191
|
+
|
|
192
|
+
- Determine rating distance percentage <percentage/> between
|
|
193
|
+
<alternative-K/> and <alternative-X/> from their *raw,
|
|
194
|
+
unrounded* ratings by calculating: <percentage/> = <distance/> /
|
|
195
|
+
abs(<rating-K/>). Do not output anything.
|
|
196
|
+
|
|
197
|
+
- If <rating-K/> is exactly zero, skip the division entirely
|
|
198
|
+
and treat <percentage/> as if it were less than 0.10
|
|
199
|
+
(i.e. fall through to the *small distance* branch below),
|
|
200
|
+
since a zero best rating signals a near-tied evaluation.
|
|
201
|
+
|
|
202
|
+
- By construction, <rating-K/> is the maximum rating across
|
|
203
|
+
all alternatives, so <distance/> >= 0 always holds; using
|
|
204
|
+
abs(<rating-K/>) keeps <percentage/> sign-stable across all rating
|
|
205
|
+
regimes. Note that when <rating-K/> itself is negative, the
|
|
206
|
+
denominator anchors to a poor best rating and small gaps can
|
|
207
|
+
appear large; the all-negative regime is surfaced as a dedicated
|
|
208
|
+
warning branch below.
|
|
209
|
+
|
|
210
|
+
- If <percentage/> is less than 0.01 (i.e. <distance/> is
|
|
211
|
+
effectively zero relative to abs(<rating-K/>)), stop the flow after
|
|
212
|
+
you output just the following <template/> and do not output anything
|
|
213
|
+
else:
|
|
214
|
+
|
|
215
|
+
<template>
|
|
216
|
+
🟠 **ERROR**: ✘ *MULTIPLE BEST ALTERNATIVES FOUND*,
|
|
217
|
+
⚠ *Please give some hints on the criteria to ensure a single best alternative!*
|
|
218
|
+
</template>
|
|
219
|
+
|
|
220
|
+
- Otherwise, if <percentage/> is less than 0.10, stop the flow after
|
|
221
|
+
you output just the following <template/> and do not output anything
|
|
222
|
+
else:
|
|
223
|
+
|
|
224
|
+
<template>
|
|
225
|
+
🟠 **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
|
|
226
|
+
⚠ *ATTENTION: small distance to second best alternative!*
|
|
227
|
+
</template>
|
|
228
|
+
|
|
229
|
+
- Otherwise, if <rating-K/> is less than zero (i.e. all alternatives
|
|
230
|
+
rate negatively and the "best" is merely the least-bad), stop the
|
|
231
|
+
flow after you output just the following <template/> and do not
|
|
232
|
+
output anything else:
|
|
233
|
+
|
|
234
|
+
<template>
|
|
235
|
+
🟠 **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
|
|
236
|
+
⚠ *ATTENTION: all alternatives rate negatively; this is the least-bad choice, not a strong winner!*
|
|
237
|
+
</template>
|
|
238
|
+
|
|
239
|
+
- Otherwise (<percentage/> is greater than or equal 0.10), output
|
|
240
|
+
just the following <template/> and do not output anything else:
|
|
241
|
+
|
|
242
|
+
<template>
|
|
243
|
+
🟠 **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
|
|
244
|
+
</template>
|
|
245
|
+
</step>
|
|
246
|
+
</flow>
|
|
247
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-persona
|
|
3
|
+
argument-hint: "[<persona>]"
|
|
4
|
+
description: >
|
|
5
|
+
Adjust communication style in four intensivity levels of token usage.
|
|
6
|
+
The <persona> can be either a decorative, eloquent, and explaining "writer",
|
|
7
|
+
a brief, factual, and accurate "engineer" (default),
|
|
8
|
+
a very brief, factual, and abbreviating "telegrapher",
|
|
9
|
+
or an ultra brief, rough and stuttering "caveman".
|
|
10
|
+
Use when user says "persona <persona>" or "be <persona>".
|
|
11
|
+
user-invocable: true
|
|
12
|
+
disable-model-invocation: false
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
Persona Configuration
|
|
16
|
+
=====================
|
|
17
|
+
|
|
18
|
+
1. Determine request:
|
|
19
|
+
<request>$ARGUMENTS</request>
|
|
20
|
+
|
|
21
|
+
2. <if condition="<request/> is empty">
|
|
22
|
+
- Call the `persona(session: <ase-session-id/>)`
|
|
23
|
+
tool from the `ase` MCP service and set
|
|
24
|
+
<ase-persona-style/> to its `text` output.
|
|
25
|
+
|
|
26
|
+
- Output:
|
|
27
|
+
<template>
|
|
28
|
+
⧉ **ASE**: ☯ persona: **<ase-persona-style/>**
|
|
29
|
+
</template>
|
|
30
|
+
</if>
|
|
31
|
+
|
|
32
|
+
3. <if condition="<request/> is NOT empty">
|
|
33
|
+
- If <request/> is NEITHER 'writer', 'engineer', 'telegrapher', NOR 'caveman',
|
|
34
|
+
report this with the following <template/> and stop immediately:
|
|
35
|
+
<template>
|
|
36
|
+
⧉ **ASE**: **ERROR:** invalid persona: "<request/>" (expected "writer", "engineer", "telegrapher", or "caveman")
|
|
37
|
+
</template>
|
|
38
|
+
|
|
39
|
+
- Set <ase-persona-style><request/></ase-persona-style> and
|
|
40
|
+
call the `persona(style: <ase-persona-style/>, session: <ase-session-id/>)`
|
|
41
|
+
tool from the `ase` MCP service.
|
|
42
|
+
|
|
43
|
+
- Output:
|
|
44
|
+
<template>
|
|
45
|
+
⧉ **ASE**: ☯ persona: **<ase-persona-style/>** (*updated*)
|
|
46
|
+
</template>
|
|
47
|
+
</if>
|
|
48
|
+
|
|
49
|
+
Apply Persona
|
|
50
|
+
-------------
|
|
51
|
+
|
|
52
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-quorum
|
|
3
|
+
argument-hint: "<question>"
|
|
4
|
+
description: >
|
|
5
|
+
Query Multiple AIs for Quorum Answer.
|
|
6
|
+
user-invocable: true
|
|
7
|
+
disable-model-invocation: false
|
|
8
|
+
effort: medium
|
|
9
|
+
allowed-tools:
|
|
10
|
+
- "Task"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
|
|
16
|
+
Query Multiple AIs for Quorum Answer
|
|
17
|
+
====================================
|
|
18
|
+
|
|
19
|
+
Your role is an *expert-level assistant*.
|
|
20
|
+
|
|
21
|
+
<objective>
|
|
22
|
+
Find a *quorum answer* on an arbitrary question,
|
|
23
|
+
by querying *multiple* AIs for an *optimal consensus*.
|
|
24
|
+
</objective>
|
|
25
|
+
|
|
26
|
+
<flow>
|
|
27
|
+
1. <step id="STEP 1: Determine Own Answer">
|
|
28
|
+
Determine your own answer.
|
|
29
|
+
For yourself (Anthropic Claude), first answer the following *<query/>* in advance:
|
|
30
|
+
|
|
31
|
+
<query>
|
|
32
|
+
$ARGUMENTS.
|
|
33
|
+
Please respond with facts and very concise and brief only,
|
|
34
|
+
usually with just 1 to 7 corresponding bullet points and with short sentences.
|
|
35
|
+
Optionally, mention potential cruxes which should be noticed.
|
|
36
|
+
Beside bullet points, do not provide any additional explanations.
|
|
37
|
+
Emphasize keywords or cruxes in your response with Markdown formatting.
|
|
38
|
+
Format code parts with Markdown formatting.
|
|
39
|
+
</query>
|
|
40
|
+
</step>
|
|
41
|
+
|
|
42
|
+
2. <step id="STEP 2: Preview Own Answer">
|
|
43
|
+
Show your own answer as a sneak preview.
|
|
44
|
+
For this, use the following output <template/>:
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
**Anthropic Claude** (sneak preview in advance):
|
|
48
|
+
- [...]
|
|
49
|
+
- [...]
|
|
50
|
+
</template>
|
|
51
|
+
</step>
|
|
52
|
+
|
|
53
|
+
3. <step id="STEP 3: Query Foreign AIs">
|
|
54
|
+
For each of the following foreign AIs and their potentially
|
|
55
|
+
available, given, corresponding MCP servers, use a *sub-task* and
|
|
56
|
+
the `ase-meta-chat` *agent* to perform the above same *<query/>* zero
|
|
57
|
+
or more times and in *parallel* again:
|
|
58
|
+
|
|
59
|
+
- OpenAI ChatGPT: `chat-openai-chatgpt`
|
|
60
|
+
- Google Gemini: `chat-google-gemini`
|
|
61
|
+
- DeepSeek: `chat-deepseek`
|
|
62
|
+
- xAI Grok: `chat-xai-grok`
|
|
63
|
+
|
|
64
|
+
Silently skip those AIs where the corresponding MCP server is not available.
|
|
65
|
+
</step>
|
|
66
|
+
|
|
67
|
+
4. <step id="STEP 4: Summarize Responses">
|
|
68
|
+
Summarize all responses, of both yourself and all available MCP servers,
|
|
69
|
+
with just 1 to 7 corresponding bullet points and with short sentences.
|
|
70
|
+
</step>
|
|
71
|
+
|
|
72
|
+
5. <step id="STEP 5: Determine Consensus Rating">
|
|
73
|
+
Determine, on a Likert scale of 0..<n/>, the amount of the overall
|
|
74
|
+
consensus <c/> of all the responses. The <n/> is 1 plus the number of
|
|
75
|
+
available AIs above. If all responses disagree, the consensus <c/> is zero.
|
|
76
|
+
If all responses agree, <c/> is <n/>.
|
|
77
|
+
|
|
78
|
+
If not all AIs agree, determine a <disagreement/> information,
|
|
79
|
+
formatted as `(disagreement: <ai/>, <ai/>, [...])` where <ai/> is a
|
|
80
|
+
name of an AI which disagreed from the consensus. Else, if all AIs
|
|
81
|
+
agree, set <disagreement></disagreement>.
|
|
82
|
+
</step>
|
|
83
|
+
|
|
84
|
+
6. <step id="STEP 6: Show Results">
|
|
85
|
+
Finally show the summary, the consensus and the complete and unmodified responses
|
|
86
|
+
of yourself and each of the MCP servers, based on the following output <template/>:
|
|
87
|
+
|
|
88
|
+
<template>
|
|
89
|
+
**QUESTION**:
|
|
90
|
+
$ARGUMENTS
|
|
91
|
+
|
|
92
|
+
● **CONSENSUS ANSWER**:
|
|
93
|
+
- [...]
|
|
94
|
+
- [...]
|
|
95
|
+
|
|
96
|
+
**CONSENSUS RATE**: **<c/>/<n/>** <disagreement/>
|
|
97
|
+
|
|
98
|
+
○ **Anthropic Claude**:
|
|
99
|
+
- [...]
|
|
100
|
+
- [...]
|
|
101
|
+
|
|
102
|
+
○ **OpenAI ChatGPT**:
|
|
103
|
+
- [...]
|
|
104
|
+
- [...]
|
|
105
|
+
|
|
106
|
+
○ **Google Gemini**:
|
|
107
|
+
- [...]
|
|
108
|
+
- [...]
|
|
109
|
+
|
|
110
|
+
○ **DeepSeek**:
|
|
111
|
+
- [...]
|
|
112
|
+
- [...]
|
|
113
|
+
|
|
114
|
+
○ **xAI Grok**:
|
|
115
|
+
- [...]
|
|
116
|
+
- [...]
|
|
117
|
+
</template>
|
|
118
|
+
|
|
119
|
+
In this output, remove the sections of those AIs which were not available.
|
|
120
|
+
</step>
|
|
121
|
+
</flow>
|
|
122
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-search
|
|
3
|
+
argument-hint: "<query>"
|
|
4
|
+
description: >
|
|
5
|
+
Search the Internet/Web with a query.
|
|
6
|
+
Prefer this skill before using Perplexity, Brave and WebSearch.
|
|
7
|
+
user-invocable: true
|
|
8
|
+
disable-model-invocation: false
|
|
9
|
+
effort: low
|
|
10
|
+
allowed-tools:
|
|
11
|
+
- "mcp__perplexity__perplexity_search"
|
|
12
|
+
- "mcp__brave__brave_web_search"
|
|
13
|
+
- "WebSearch"
|
|
14
|
+
- "WebFetch"
|
|
15
|
+
- "Task"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
|
|
19
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
20
|
+
|
|
21
|
+
Search the Internet/Web
|
|
22
|
+
=======================
|
|
23
|
+
|
|
24
|
+
Your role is an expert-level *web specialist*.
|
|
25
|
+
|
|
26
|
+
<objective>
|
|
27
|
+
Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
28
|
+
<query>$ARGUMENTS</query>
|
|
29
|
+
</objective>
|
|
30
|
+
|
|
31
|
+
<flow>
|
|
32
|
+
1. <step id="STEP 1: QUERY SERVICES">
|
|
33
|
+
If the MCP tool `mcp__perplexity__perplexity_search` is available, send <query/> to it
|
|
34
|
+
via a first *sub-task* and our companion `ase-meta-search` *agent*.
|
|
35
|
+
|
|
36
|
+
If the MCP tool `mcp__brave__brave_web_search` is available, send <query/> to it
|
|
37
|
+
via a second *sub-task* and our companion `ase-meta-search` *agent*.
|
|
38
|
+
|
|
39
|
+
Send <query/> to the built-in tool `WebSearch`
|
|
40
|
+
via a third *sub-task* and our companion `ase-meta-search` *agent*.
|
|
41
|
+
</step>
|
|
42
|
+
|
|
43
|
+
2. <step id="STEP 2: CONSOLIDATE ANSWERS">
|
|
44
|
+
Consolidate all responses from the `ase-meta-search` *agents*
|
|
45
|
+
into a single response and output it without giving any further explanations.
|
|
46
|
+
</step>
|
|
47
|
+
</flow>
|
|
48
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-why
|
|
3
|
+
argument-hint: "<fact>"
|
|
4
|
+
description: >
|
|
5
|
+
Five-Whys Root-Cause Analysis.
|
|
6
|
+
user-invocable: true
|
|
7
|
+
disable-model-invocation: false
|
|
8
|
+
effort: medium
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
|
|
12
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
13
|
+
|
|
14
|
+
Five-Whys Root-Cause Analysis
|
|
15
|
+
=============================
|
|
16
|
+
|
|
17
|
+
Your role is an *expert-level assistant*.
|
|
18
|
+
|
|
19
|
+
<objective>
|
|
20
|
+
Apply the *Five-Whys* *root-cause analysis* technique to investigate
|
|
21
|
+
on the following problem:
|
|
22
|
+
|
|
23
|
+
<problem>Why $ARGUMENTS?</problem>
|
|
24
|
+
|
|
25
|
+
For this, iteratively ask "why" to drill down from symptoms to the root-cause.
|
|
26
|
+
This helps to identify the fundamental reason behind a problem rather than just
|
|
27
|
+
addressing surface-level symptoms.
|
|
28
|
+
</objective>
|
|
29
|
+
|
|
30
|
+
<flow>
|
|
31
|
+
1. <step id="STEP 1: PROBLEM">
|
|
32
|
+
State the problem statement.
|
|
33
|
+
|
|
34
|
+
<template>
|
|
35
|
+
🟠 **PROBLEM**: <problem/>
|
|
36
|
+
</template>
|
|
37
|
+
</step>
|
|
38
|
+
|
|
39
|
+
2. <step id="STEP 2: ROOT-CAUSE ANALYSIS">
|
|
40
|
+
Find the root-cause of <problem/> by following the following iteration cycle.
|
|
41
|
+
Start with a <question/> equal to the <problem/>.
|
|
42
|
+
|
|
43
|
+
<for items="1 2 3 4 5">
|
|
44
|
+
Ask <question/> and document the <answer/> with the following template:
|
|
45
|
+
Don't stop at symptoms, keep digging for systemic issues.
|
|
46
|
+
Multiple root-causes may exist -- explore different branches.
|
|
47
|
+
Consider both technical, domain-specific, process-related or organizational causes.
|
|
48
|
+
|
|
49
|
+
<template>
|
|
50
|
+
⚪ **WHY <item/>**: <answer/>
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
Then, for the next iteration let <question/> now be the last <answer/>.
|
|
54
|
+
The magic is NOT in exactly 5 "Why" -- you can <break/> the iteration
|
|
55
|
+
when you already reached the root-cause.
|
|
56
|
+
</for>
|
|
57
|
+
</step>
|
|
58
|
+
|
|
59
|
+
3. <step id="STEP 3: SOLUTION">
|
|
60
|
+
Validate the root-cause by working backwards the causality chain.
|
|
61
|
+
Propose a solution that addresses and solves the root-cause.
|
|
62
|
+
For the proposed solution, optionally directly propose corresponding source code changes.
|
|
63
|
+
|
|
64
|
+
<template>
|
|
65
|
+
🟠 **SOLUTION**: <solution/>
|
|
66
|
+
</template>
|
|
67
|
+
</step>
|
|
68
|
+
</flow>
|
|
69
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-task-delete
|
|
3
|
+
argument-hint: "[<id>]"
|
|
4
|
+
description: >
|
|
5
|
+
Delete the current or given task plan.
|
|
6
|
+
Use when the user calls to "delete", "remove" or "clear" the
|
|
7
|
+
"task", "plan", "spec", or "specification".
|
|
8
|
+
user-invocable: true
|
|
9
|
+
disable-model-invocation: false
|
|
10
|
+
effort: low
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
|
|
16
|
+
Delete a Task Plan
|
|
17
|
+
==================
|
|
18
|
+
|
|
19
|
+
<skill name="ase-task-delete">
|
|
20
|
+
Delete a Task Plan
|
|
21
|
+
</skill>
|
|
22
|
+
|
|
23
|
+
Your role is an experienced, *expert-level assistant*.
|
|
24
|
+
*Delete* the task plan.
|
|
25
|
+
|
|
26
|
+
Procedure
|
|
27
|
+
---------
|
|
28
|
+
|
|
29
|
+
You *MUST* follow the following numbered items *strictly* *sequentially*!
|
|
30
|
+
You *MUST* not skip any numbered item during processing!
|
|
31
|
+
|
|
32
|
+
You *MUST* *NOT* output anything in this entire procedure, *except* when
|
|
33
|
+
explicitly requested by this procedure via outputs based on a <template/>!
|
|
34
|
+
|
|
35
|
+
1. **Determine Task:**
|
|
36
|
+
|
|
37
|
+
1. Set <id>$ARGUMENTS</id> initially.
|
|
38
|
+
Inherit the always existing <ase-task-id/> from the current context.
|
|
39
|
+
Do not output anything.
|
|
40
|
+
|
|
41
|
+
2. <if condition="<id/> is empty">
|
|
42
|
+
Set <id><ase-task-id/></id>
|
|
43
|
+
Do not output anything.
|
|
44
|
+
</if>
|
|
45
|
+
|
|
46
|
+
2. **Perform Operation**:
|
|
47
|
+
|
|
48
|
+
1. Call the `task_delete(id: <id/>)` tool of the `ase` MCP
|
|
49
|
+
service to delete the task plan content and set <text/> to the
|
|
50
|
+
`text` output field of this `task_delete` tool call. Do not
|
|
51
|
+
output anything related to this MCP tool call.
|
|
52
|
+
|
|
53
|
+
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
54
|
+
Only output the following <template/>:
|
|
55
|
+
|
|
56
|
+
<template>
|
|
57
|
+
⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **<text/>**
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
- If <text/> starts NOT with `ERROR:`:
|
|
61
|
+
Only output the following <template/>:
|
|
62
|
+
|
|
63
|
+
<template>
|
|
64
|
+
⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **task deleted**
|
|
65
|
+
</template>
|
|
66
|
+
|
|
67
|
+
2. <if condition="<id/> is equal <ase-task-id/> AND <ase-task-id/> is not equal 'default'">
|
|
68
|
+
Set <ase-task-id>default</ase-task-id>. Call the `task_id(id:
|
|
69
|
+
<ase-task-id/>, session: <ase-session-id/>)` tool from the `ase`
|
|
70
|
+
MCP service to switch the task to the default task. Only output
|
|
71
|
+
the following <template/>:
|
|
72
|
+
|
|
73
|
+
<template>
|
|
74
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task switched to default**
|
|
75
|
+
</template>
|
|
76
|
+
</if>
|