@rse/ase 0.9.10 → 0.9.12
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-compat.js +68 -0
- package/dst/ase-hook.js +158 -67
- package/dst/ase-service.js +2 -0
- package/dst/ase-setup.js +52 -23
- package/dst/ase-statusline.js +7 -3
- package/dst/ase.js +2 -0
- package/package.json +2 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/mcp.json +8 -0
- package/plugin/.codex-plugin/plugin.json +17 -0
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/hooks/hooks-codex.json +67 -0
- package/plugin/meta/ase-dialog.md +20 -0
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +6 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +2 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +12 -5
- package/plugin/skills/ase-code-craft/SKILL.md +6 -3
- package/plugin/skills/ase-code-explain/SKILL.md +6 -1
- package/plugin/skills/ase-code-insight/SKILL.md +6 -1
- package/plugin/skills/ase-code-lint/SKILL.md +9 -3
- package/plugin/skills/ase-code-refactor/SKILL.md +6 -3
- package/plugin/skills/ase-code-resolve/SKILL.md +13 -9
- package/plugin/skills/ase-docs-proofread/SKILL.md +9 -3
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +3 -4
- package/plugin/skills/ase-meta-changelog/SKILL.md +16 -5
- package/plugin/skills/ase-meta-chat/SKILL.md +6 -1
- package/plugin/skills/ase-meta-commit/SKILL.md +5 -0
- package/plugin/skills/ase-meta-compat/SKILL.md +288 -0
- package/plugin/skills/ase-meta-compat/help.md +67 -0
- package/plugin/skills/ase-meta-diaboli/SKILL.md +5 -1
- package/plugin/skills/ase-meta-diff/SKILL.md +1 -1
- package/plugin/skills/ase-meta-evaluate/SKILL.md +20 -12
- package/plugin/skills/ase-meta-persona/SKILL.md +6 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +15 -3
- package/plugin/skills/ase-meta-steelman/SKILL.md +5 -1
- package/plugin/skills/ase-task-delete/SKILL.md +6 -1
- package/plugin/skills/ase-task-grill/SKILL.md +30 -9
- package/plugin/skills/ase-task-id/SKILL.md +10 -3
- package/plugin/skills/ase-task-reboot/SKILL.md +2 -2
- package/plugin/skills/ase-task-rename/SKILL.md +15 -1
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-compat
|
|
3
|
+
description: >
|
|
4
|
+
Self-test the LLM's ability to execute ASE's core interpreter
|
|
5
|
+
machinery (control flow, XML placeholders, regex matching,
|
|
6
|
+
arithmetic) and report an overall compatibility rating. Use when
|
|
7
|
+
the user wants to check how well the current model/harness is
|
|
8
|
+
compatible with ASE, or asks to "test ASE compatibility" or "check
|
|
9
|
+
ASE compatibility".
|
|
10
|
+
user-invocable: true
|
|
11
|
+
disable-model-invocation: true
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
15
|
+
|
|
16
|
+
Self-Test ASE Compatibility
|
|
17
|
+
===========================
|
|
18
|
+
|
|
19
|
+
Objective
|
|
20
|
+
---------
|
|
21
|
+
|
|
22
|
+
*Self-test* how faithfully the current LLM (and its harness) executes the
|
|
23
|
+
four *core interpreter primitives* that every ASE skill silently relies
|
|
24
|
+
on -- *control flow*, *XML placeholders*, *regex matching*, and
|
|
25
|
+
*arithmetic* -- and report an overall **0%…100% compatibility** rating.
|
|
26
|
+
|
|
27
|
+
This skill is unusual: it is both the *test definition* and the *system
|
|
28
|
+
under test*. Each *probe* is a pure ASE construct that you execute and
|
|
29
|
+
record its *actual* result. You *MUST NOT* compare against any expected
|
|
30
|
+
value until STEP 6. Do not fabricate passes: a probe whose actual result
|
|
31
|
+
differs from its expected result *MUST* be recorded as a *fail*.
|
|
32
|
+
|
|
33
|
+
Notice that this skill intentionally does not strictly follow the ASE
|
|
34
|
+
skill format, especially it does not include any meta skill information,
|
|
35
|
+
etc.
|
|
36
|
+
|
|
37
|
+
Procedure
|
|
38
|
+
---------
|
|
39
|
+
|
|
40
|
+
1. STEP 1: Initialize Self-Test
|
|
41
|
+
|
|
42
|
+
Initialize the running map of actual probe results <actuals></actuals>
|
|
43
|
+
(set to empty) -- every probe in STEPs 2-5 stores its result here as
|
|
44
|
+
a `<category/>/<probe-name/>` entry with its *actual* computed value.
|
|
45
|
+
|
|
46
|
+
Initialize the running list of failed probes <failures></failures>
|
|
47
|
+
(set to empty) -- this is populated only in STEP 6 after comparing
|
|
48
|
+
actuals against the expected values.
|
|
49
|
+
|
|
50
|
+
2. STEP 2: Probe XML Placeholders
|
|
51
|
+
|
|
52
|
+
Execute *all* of the following XML-placeholder probes (in the given
|
|
53
|
+
order). For each probe, record the *actual* result in <actuals/>
|
|
54
|
+
under the key `xml-placeholders/<probe-name/>`. Do *not* compare to
|
|
55
|
+
any expected value here.
|
|
56
|
+
|
|
57
|
+
1. *get-and-set*: Set <v>42</v>, then get <v/>.
|
|
58
|
+
Record actual result for `xml-placeholders/get-and-set`.
|
|
59
|
+
|
|
60
|
+
2. *self-ref*: Set <v>42</v>, then set `<v>pre_<v/></v>`, then get <v/>.
|
|
61
|
+
Record actual result for `xml-placeholders/self-ref`.
|
|
62
|
+
|
|
63
|
+
3. *overwrite*: Set <v>42</v>, then set `<v>99</v>`, then get <v/>.
|
|
64
|
+
Record actual result for `xml-placeholders/overwrite`.
|
|
65
|
+
|
|
66
|
+
4. *indexed*: Set `<eval-1-2>+1</eval-1-2>` and `<eval-2-1>-1</eval-2-1>`,
|
|
67
|
+
then get <eval-1-2/> and <eval-2-1/> via `<eval-1-2/>,<eval-2-1/>`.
|
|
68
|
+
Record actual result for `xml-placeholders/indexed`.
|
|
69
|
+
|
|
70
|
+
5. *nested-attr*: With <w>20</w>, build the value of an XML attribute
|
|
71
|
+
`width="<w/>"` and read the attribute `width` back.
|
|
72
|
+
Record actual result for `xml-placeholders/nested-attr`.
|
|
73
|
+
|
|
74
|
+
6. *entity*: Evaluate the XML entity `○` and get the rendered
|
|
75
|
+
Unicode character.
|
|
76
|
+
Record actual result for `xml-placeholders/entity`.
|
|
77
|
+
|
|
78
|
+
Set <xml-total/> to the number of XML-placeholder probes above.
|
|
79
|
+
|
|
80
|
+
3. STEP 3: Probe Control Flow
|
|
81
|
+
|
|
82
|
+
Execute *all* of the following control-flow probes (in the given
|
|
83
|
+
order). For each probe, record the *actual* result in <actuals/>
|
|
84
|
+
under the key `control-flow/<probe-name/>`. Do *not* compare to any
|
|
85
|
+
expected value here.
|
|
86
|
+
|
|
87
|
+
1. *branch*: Set <a>3</a>, then evaluate
|
|
88
|
+
`<if condition="<a/> is greater than 5">big</if>
|
|
89
|
+
<elseif condition="<a/> is greater than 2">mid</elseif>
|
|
90
|
+
<else>small</else>`.
|
|
91
|
+
Record actual result for `control-flow/branch`.
|
|
92
|
+
|
|
93
|
+
2. *while-sum*: Set <s>0</s> and <i>1</i>, then evaluate
|
|
94
|
+
`<while condition="<i/> is less than or equal to 5">
|
|
95
|
+
set <s/> to <s/> + <i/>,
|
|
96
|
+
set <i/> to <i/> + 1
|
|
97
|
+
</while>`.
|
|
98
|
+
Record <s/> as actual result for `control-flow/while-sum`.
|
|
99
|
+
|
|
100
|
+
3. *for-order*: Set <s></s>, then evaluate
|
|
101
|
+
`<for items="x y z"><s><s/>-<item/></for>`.
|
|
102
|
+
Record <s/> as actual result for `control-flow/for-order`.
|
|
103
|
+
|
|
104
|
+
4. *while-break*: Set <i>1</i> and <hit></hit>, then evaluate
|
|
105
|
+
`<while condition="<i/> is less than or equal to 9">
|
|
106
|
+
if <i/> equals 4 set <hit/> to <i/> and <break/>,
|
|
107
|
+
else set <i/> to <i/> + 1
|
|
108
|
+
</while>`.
|
|
109
|
+
Record <hit/> as actual result for `control-flow/while-break`.
|
|
110
|
+
|
|
111
|
+
5. *step-skip*: A `<step condition="[...]">[...]</step>` either expands
|
|
112
|
+
to its body (if condition evaluates to true) or to the empty string,
|
|
113
|
+
so what does `<step condition="42 is greater than 7">X</step>` expands into?
|
|
114
|
+
Record the result of this construct for `control-flow/step-skip`.
|
|
115
|
+
|
|
116
|
+
6. *expand-subst*: With `<define name="foo">[<arg1/>:<content/>]</define>`,
|
|
117
|
+
evaluate `<expand name="foo" arg1="K">V</expand>`.
|
|
118
|
+
Record actual result for `control-flow/expand-subst`.
|
|
119
|
+
|
|
120
|
+
Set <cf-total/> to the number of control-flow probes above.
|
|
121
|
+
|
|
122
|
+
4. STEP 4: Probe Regex Matching
|
|
123
|
+
|
|
124
|
+
Execute *all* of the following regex probes (in the given order).
|
|
125
|
+
For each probe, record the *actual* result in <actuals/> under the
|
|
126
|
+
key `regex/<probe-name/>`. Do *not* compare to any expected value
|
|
127
|
+
here.
|
|
128
|
+
|
|
129
|
+
1. *getopt-dash*: Does the string `-l foo` match the regexp `(^|\s)-`?
|
|
130
|
+
Record `yes` or `no` as actual result for `regex/getopt-dash`.
|
|
131
|
+
|
|
132
|
+
2. *getopt-nodash*: Does the string `foo` match the regexp `(^|\s)-`?
|
|
133
|
+
Record `yes` or `no` as actual result for `regex/getopt-nodash`.
|
|
134
|
+
|
|
135
|
+
3. *anchored-int*: Does `123` fully match `^\d+$`, and does `12a` fully
|
|
136
|
+
match `^\d+$`? Report as `<yes-or-no/>,<yes-or-no/>`.
|
|
137
|
+
Record actual result for `regex/anchored-int`.
|
|
138
|
+
|
|
139
|
+
4. *alternation*: Does `thorough` match `^(basic|standard|thorough)$`?
|
|
140
|
+
Record `yes` or `no` as actual result for `regex/alternation`.
|
|
141
|
+
|
|
142
|
+
5. *capture*: Apply `^--(\w+).+` to `--foo-bar-quux`.
|
|
143
|
+
Record the first capture group as actual result for `regex/capture`.
|
|
144
|
+
|
|
145
|
+
6. *whitespace*: Does ` -x` (leading space then dash) match `(^|\s)-`
|
|
146
|
+
(the `\s` alternative)?
|
|
147
|
+
Record `yes` or `no` as actual result for `regex/whitespace`.
|
|
148
|
+
|
|
149
|
+
7. *complex*: Does `--level=(low|high)...` match
|
|
150
|
+
`^--([A-Za-z][A-Za-z0-9-]*)(?:\|-([A-Za-z]))?(?:=(\((.*)\)(\.\.\.)?|.*))?$`?
|
|
151
|
+
Record `yes` or `no` as actual result for `regex/complex`.
|
|
152
|
+
|
|
153
|
+
Set <re-total/> to the number of regex probes above.
|
|
154
|
+
|
|
155
|
+
</step>
|
|
156
|
+
|
|
157
|
+
5. STEP 5: Probe Arithmetic
|
|
158
|
+
|
|
159
|
+
Execute *all* of the following arithmetic probes (in the given
|
|
160
|
+
order). For each probe, record the *actual* result in <actuals/>
|
|
161
|
+
under the key `arithmetic/<probe-name/>`. Do *not* compare to any
|
|
162
|
+
expected value here.
|
|
163
|
+
|
|
164
|
+
1. *increment*: With <n>7</n>, compute <n/> + 2.
|
|
165
|
+
Record actual result for `arithmetic/increment`.
|
|
166
|
+
|
|
167
|
+
2. *product-sum*: Compute `4.00 * 1.00 + 2.00 * 0.50`.
|
|
168
|
+
Record actual result (as `X.XX`) for `arithmetic/product-sum`.
|
|
169
|
+
|
|
170
|
+
3. *percentage*: Compute `3 / 7` rounded to 2 decimal places.
|
|
171
|
+
Record actual result (as `0.XX`) for `arithmetic/percentage`.
|
|
172
|
+
|
|
173
|
+
4. *bar-width*: With <title-len>13</title-len>, compute `67 - <title-len/>`.
|
|
174
|
+
Record actual result for `arithmetic/bar-width`.
|
|
175
|
+
|
|
176
|
+
5. *threshold*: Is `0.095` less than `0.10`?
|
|
177
|
+
Record `yes` or `no` as actual result for `arithmetic/threshold`.
|
|
178
|
+
|
|
179
|
+
6. *round-half*: Round `2.5` to the nearest integer (round half up).
|
|
180
|
+
Record actual result for `arithmetic/round-half`.
|
|
181
|
+
|
|
182
|
+
Set <arith-total/> to the number of arithmetic probes above.
|
|
183
|
+
|
|
184
|
+
</step>
|
|
185
|
+
|
|
186
|
+
6. STEP 6: Fetch Expected Values and Score
|
|
187
|
+
|
|
188
|
+
Call the `ase_compat()` tool of the `ase` MCP server with an
|
|
189
|
+
*internal* *programmatic* MCP tool call (and *NOT* with an external
|
|
190
|
+
shell command) and set <compat-output/> to the `text` content of the
|
|
191
|
+
response.
|
|
192
|
+
|
|
193
|
+
Parse <compat-output/> into a map <expected/> by splitting on
|
|
194
|
+
newlines; for each non-empty line of the form `<id/>: <value/>`, set
|
|
195
|
+
`<expected[<id/>]>` to `<value/>` (value may be empty for probes
|
|
196
|
+
whose correct answer is an empty string).
|
|
197
|
+
|
|
198
|
+
For each probe in <actuals/>, compare the actual result to
|
|
199
|
+
`<expected[<id/>]>` using an exact-match comparison:
|
|
200
|
+
|
|
201
|
+
- If they match, count the probe as *pass*.
|
|
202
|
+
- If they differ, count the probe as *fail* and append `<id/>`
|
|
203
|
+
to <failures/>.
|
|
204
|
+
|
|
205
|
+
Tally pass counts per category:
|
|
206
|
+
|
|
207
|
+
- Set <xml-pass/> to the number of `xml-placeholders/*` probes that passed.
|
|
208
|
+
- Set <cf-pass/> to the number of `control-flow/*` probes that passed.
|
|
209
|
+
- Set <re-pass/> to the number of `regex/*` probes that passed.
|
|
210
|
+
- Set <arith-pass/> to the number of `arithmetic/*` probes that passed.
|
|
211
|
+
|
|
212
|
+
</step>
|
|
213
|
+
|
|
214
|
+
7. STEP 7: Compute and Report Compatibility
|
|
215
|
+
|
|
216
|
+
Compute each category's *pass-rate* (a value in 0.0…1.0) by dividing
|
|
217
|
+
its passes by its total:
|
|
218
|
+
|
|
219
|
+
set <xml-rate/> to <xml-pass/> / <xml-total/>,
|
|
220
|
+
set <cf-rate/> to <cf-pass/> / <cf-total/>,
|
|
221
|
+
set <re-rate/> to <re-pass/> / <re-total/>,
|
|
222
|
+
set <arith-rate/> to <arith-pass/> / <arith-total/>.
|
|
223
|
+
|
|
224
|
+
Compute the overall compatibility as a *weighted average* of the
|
|
225
|
+
four pass-rates, where *XML placeholders* carry weight `4.00` (the
|
|
226
|
+
backbone of every skill), *control flow* carries weight `3.00`,
|
|
227
|
+
*regex matching* carries weight `2.00`, and *arithmetic* carries
|
|
228
|
+
weight `1.00`. Use the `ase_decision_matrix` MCP tool with a single
|
|
229
|
+
"compatibility" alternative column, one matrix row per category of
|
|
230
|
+
the form `[ <weight/>, <rate/> ]`:
|
|
231
|
+
|
|
232
|
+
Call...
|
|
233
|
+
|
|
234
|
+
`ase_decision_matrix(matrix: [
|
|
235
|
+
[ 4.00, <xml-rate/> ],
|
|
236
|
+
[ 3.00, <cf-rate/> ],
|
|
237
|
+
[ 2.00, <re-rate/> ],
|
|
238
|
+
[ 1.00, <arith-rate/> ]
|
|
239
|
+
])`
|
|
240
|
+
|
|
241
|
+
...of the `ase` MCP server with an *internal* *programmatic* MCP
|
|
242
|
+
tool call (and *NOT* with an external shell command) and set
|
|
243
|
+
<product-sum/> to the *single* numerical value of the returned
|
|
244
|
+
array.
|
|
245
|
+
|
|
246
|
+
The product-sum is the sum over the four rows of `<weight/> *
|
|
247
|
+
<rate/>`, so dividing by the sum of weights (4.00 + 3.00 + 2.00 +
|
|
248
|
+
1.00 = 10.00) yields the weighted-average compatibility on 0.0…1.0:
|
|
249
|
+
|
|
250
|
+
Set <overall/> to <product-sum/> / 10.00.
|
|
251
|
+
Set <overall-pct/> to round(<overall/> * 100) (an integer percentage).
|
|
252
|
+
|
|
253
|
+
Also compute each category's display percentage:
|
|
254
|
+
|
|
255
|
+
Set <cf-pct/> to round(<cf-rate/> * 100), and
|
|
256
|
+
likewise <xml-pct/>, <re-pct/>, <arith-pct/>.
|
|
257
|
+
|
|
258
|
+
Determine the <verdict/> from <overall-pct/>:
|
|
259
|
+
|
|
260
|
+
1. If <overall-pct/> is greater than or equal to 90:
|
|
261
|
+
Set <verdict>✓ *FULLY COMPATIBLE*</verdict>.
|
|
262
|
+
|
|
263
|
+
2. Else if <overall-pct/> is greater than or equal to 60:
|
|
264
|
+
Set <verdict>⚠ *PARTIALLY COMPATIBLE*</verdict>.
|
|
265
|
+
|
|
266
|
+
3. Else:
|
|
267
|
+
Set <verdict>✘ *INCOMPATIBLE*</verdict>.
|
|
268
|
+
|
|
269
|
+
4. If <failures/> is not empty:
|
|
270
|
+
Append to <verdict/> the suffix ` (failed: <failures/>)`.
|
|
271
|
+
|
|
272
|
+
Output the final compatibility report with the following <template/>:
|
|
273
|
+
|
|
274
|
+
<template>
|
|
275
|
+
|
|
276
|
+
**RESULTS**:
|
|
277
|
+
|
|
278
|
+
| ⦿ *Capability* | ⚖ *Weight* | ✓ *Passed* | ⚑ *Rate* |
|
|
279
|
+
| :------------------- | ----------: | ---------------------------: | ------------------: |
|
|
280
|
+
| XML Placeholders | 4.00 | <xml-pass/>/<xml-total/> | <xml-pct/>% |
|
|
281
|
+
| Control Flow | 3.00 | <cf-pass/>/<cf-total/> | <cf-pct/>% |
|
|
282
|
+
| Regex Matching | 2.00 | <re-pass/>/<re-total/> | <re-pct/>% |
|
|
283
|
+
| Arithmetic | 1.00 | <arith-pass/>/<arith-total/> | <arith-pct/>% |
|
|
284
|
+
| **OVERALL** | | | **<overall-pct/>%** |
|
|
285
|
+
|
|
286
|
+
**VERDICT**: <verdict/>
|
|
287
|
+
|
|
288
|
+
</template>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
|
|
2
|
+
## NAME
|
|
3
|
+
|
|
4
|
+
`ase-meta-compat` - Self-Test ASE Compatibility
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
|
|
8
|
+
`ase-meta-compat`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
|
|
11
|
+
## DESCRIPTION
|
|
12
|
+
|
|
13
|
+
The `ase-meta-compat` skill *self-tests* how faithfully the current LLM
|
|
14
|
+
(and its harness) executes the four *core interpreter primitives* that
|
|
15
|
+
every ASE skill silently relies on, and reports an overall *0%…100%
|
|
16
|
+
compatibility* rating. ASE skills are not run by a conventional
|
|
17
|
+
interpreter - they are interpreted by the *model itself*, which must honor
|
|
18
|
+
control-flow constructs, substitute XML placeholders, evaluate regex
|
|
19
|
+
conditions, and perform arithmetic. If a model cannot execute these
|
|
20
|
+
primitives reliably, *every* ASE skill silently misbehaves, so this skill
|
|
21
|
+
lets a user measure the fit *before* relying on ASE.
|
|
22
|
+
|
|
23
|
+
The skill is both the *test definition* and the *system under test*. It
|
|
24
|
+
probes four capability categories:
|
|
25
|
+
|
|
26
|
+
- *XML Placeholders*: the get (`<x/>`) and set (`<x>v</x>`) semantics,
|
|
27
|
+
including the get-and-set composite, indexed names, and XML-entity
|
|
28
|
+
rendering.
|
|
29
|
+
|
|
30
|
+
- *Control Flow*: the `<if>`/`<elseif>`/`<else>`, `<while>`/`<break>`,
|
|
31
|
+
`<for>`, `<step condition=…>`, and `<expand>`/`<define>` constructs.
|
|
32
|
+
|
|
33
|
+
- *Regex Matching*: the patterns ASE genuinely uses (e.g. the getopt
|
|
34
|
+
short-circuit `(^|\s)-`), plus anchoring, alternation, and captures.
|
|
35
|
+
|
|
36
|
+
- *Arithmetic*: counter increments, decision-matrix product-sums,
|
|
37
|
+
percentage rounding, and bar-width computations.
|
|
38
|
+
|
|
39
|
+
Each *probe* embeds a construct with a *known expected result*; the model
|
|
40
|
+
executes it and honestly self-checks its actual result against the
|
|
41
|
+
expected one. Per-category pass-rates are combined into the overall rating
|
|
42
|
+
via the `ase_decision_matrix` MCP tool as a *weighted average*, with
|
|
43
|
+
*XML Placeholders* weighted `4.00` (the backbone of every skill),
|
|
44
|
+
*Control Flow* weighted `3.00`, *Regex Matching* weighted `2.00`, and
|
|
45
|
+
*Arithmetic* weighted `1.00`. The
|
|
46
|
+
result is a boxed per-category table (passes and percentage per category),
|
|
47
|
+
a final *OVERALL COMPATIBILITY* percentage, and a one-line *VERDICT*
|
|
48
|
+
(`✓ fully compatible` at `≥ 90%`, `⚠ partially compatible` at `60–89%`,
|
|
49
|
+
`✘ incompatible` below `60%`) that names any failed probes.
|
|
50
|
+
|
|
51
|
+
## ARGUMENTS
|
|
52
|
+
|
|
53
|
+
The `ase-meta-compat` skill takes no arguments (besides `--help`|`-h`). It
|
|
54
|
+
always runs the most rigorous self-test, with 6 *probes per category*
|
|
55
|
+
(7 for *Regex Matching*), for 25 probes in total.
|
|
56
|
+
|
|
57
|
+
## EXAMPLES
|
|
58
|
+
|
|
59
|
+
Run the compatibility self-test:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
❯ /ase-meta-compat
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## SEE ALSO
|
|
66
|
+
|
|
67
|
+
[`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-why`](../ase-meta-why/help.md).
|
|
@@ -120,7 +120,11 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
120
120
|
Anti-Theses or Counter-Arguments until you EITHER have found at
|
|
121
121
|
least <count/> Anti-Theses or Counter-Arguments with at least a rank
|
|
122
122
|
of 7 OR you have already checked a total of <count/> x 5 Anti-Theses
|
|
123
|
-
or Counter-Arguments.
|
|
123
|
+
or Counter-Arguments. If the second condition is reached first and
|
|
124
|
+
fewer than <count/> Anti-Theses or Counter-Arguments reached a rank
|
|
125
|
+
of at least 7, nevertheless surface the <count/> highest-ranked ones
|
|
126
|
+
found so far, because <count/> is the *minimum* number of
|
|
127
|
+
Anti-Theses to surface.
|
|
124
128
|
|
|
125
129
|
Then, for the top-<count/> highest-ranked Anti-Theses or
|
|
126
130
|
Counter-Arguments, sort them by their rank from highest to lowest,
|
|
@@ -109,7 +109,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
109
109
|
|
|
110
110
|
3. For each discovered *intent group*, emit the following row
|
|
111
111
|
<template/>, where <intent/> is the intent label, <changes/>
|
|
112
|
-
is the total number of lines changed per
|
|
112
|
+
is the total number of lines changed per intent group in format
|
|
113
113
|
`+N/-M`, <files/> is the list of affected file references,
|
|
114
114
|
and <description/> is a *brief* one-to-two-sentence
|
|
115
115
|
narrative of what changed and why:
|
|
@@ -13,11 +13,16 @@ effort: high
|
|
|
13
13
|
|
|
14
14
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
15
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
16
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
16
17
|
|
|
17
18
|
<skill name="ase-meta-evaluate">
|
|
18
19
|
Evaluate Alternatives
|
|
19
20
|
</skill>
|
|
20
21
|
|
|
22
|
+
<expand name="getopt" arg1="ase-meta-evaluate">
|
|
23
|
+
$ARGUMENTS
|
|
24
|
+
</expand>
|
|
25
|
+
|
|
21
26
|
<objective>
|
|
22
27
|
*Evaluate* *alternatives* through a weighted
|
|
23
28
|
multi-*criteria* decision matrix.
|
|
@@ -25,7 +30,7 @@ multi-*criteria* decision matrix.
|
|
|
25
30
|
|
|
26
31
|
<flow>
|
|
27
32
|
1. <step id="STEP 1: Determine Reason">
|
|
28
|
-
- From the <request
|
|
33
|
+
- From the <request><getopt-arguments/></request>, try to derive the overall
|
|
29
34
|
reason <reason/> for the evaluation. If no such reason can be
|
|
30
35
|
derived, assume <reason>generic comparison</reason>.
|
|
31
36
|
|
|
@@ -38,7 +43,7 @@ multi-*criteria* decision matrix.
|
|
|
38
43
|
</step>
|
|
39
44
|
|
|
40
45
|
2. <step id="STEP 2: Determine Alternatives">
|
|
41
|
-
- From the <request
|
|
46
|
+
- From the <request><getopt-arguments/></request> derive the two or more
|
|
42
47
|
alternatives <alternative-K/> (K=1-N) the user wants to be
|
|
43
48
|
evaluated. Do not output anything.
|
|
44
49
|
|
|
@@ -105,7 +110,7 @@ multi-*criteria* decision matrix.
|
|
|
105
110
|
</step>
|
|
106
111
|
|
|
107
112
|
3. <step id="STEP 3: Derive Criteria">
|
|
108
|
-
- From the <request
|
|
113
|
+
- From the <request><getopt-arguments/></request>, try to derive the criteria
|
|
109
114
|
<criteria-L/> (L=1-M) for the evaluation. Do not output anything.
|
|
110
115
|
|
|
111
116
|
- For each criterion <criteria-L/> (L=1-M), decide on its <weight-L/>
|
|
@@ -222,23 +227,26 @@ multi-*criteria* decision matrix.
|
|
|
222
227
|
⚠ *Please give some hints on the criteria to ensure a single best alternative!*
|
|
223
228
|
</template>
|
|
224
229
|
|
|
225
|
-
- Otherwise, if <
|
|
226
|
-
|
|
227
|
-
|
|
230
|
+
- Otherwise, if <rating-K/> is less than zero (i.e. all alternatives
|
|
231
|
+
rate negatively and the "best" is merely the least-bad), stop the
|
|
232
|
+
flow after you output just the following <template/> and do not
|
|
233
|
+
output anything else. This all-negative check is evaluated *before*
|
|
234
|
+
the small-distance check below, so that an all-negative alternative
|
|
235
|
+
set with a small winning gap surfaces the all-negative warning rather
|
|
236
|
+
than being masked by the small-distance branch:
|
|
228
237
|
|
|
229
238
|
<template>
|
|
230
239
|
<ase-tpl-bullet-signal/> **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
|
|
231
|
-
⚠ *ATTENTION:
|
|
240
|
+
⚠ *ATTENTION: all alternatives rate negatively; this is the least-bad choice, not a strong winner!*
|
|
232
241
|
</template>
|
|
233
242
|
|
|
234
|
-
- Otherwise, if <
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
output anything else:
|
|
243
|
+
- Otherwise, if <percentage/> is less than 0.10, stop the flow after
|
|
244
|
+
you output just the following <template/> and do not output anything
|
|
245
|
+
else:
|
|
238
246
|
|
|
239
247
|
<template>
|
|
240
248
|
<ase-tpl-bullet-signal/> **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
|
|
241
|
-
⚠ *ATTENTION:
|
|
249
|
+
⚠ *ATTENTION: small distance to second best alternative!*
|
|
242
250
|
</template>
|
|
243
251
|
|
|
244
252
|
- Otherwise (<percentage/> is greater than or equal to 0.10), output
|
|
@@ -15,18 +15,23 @@ effort: high
|
|
|
15
15
|
|
|
16
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
17
17
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
18
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
18
19
|
|
|
19
20
|
<skill name="ase-meta-persona">
|
|
20
21
|
Persona Configuration
|
|
21
22
|
</skill>
|
|
22
23
|
|
|
24
|
+
<expand name="getopt" arg1="ase-meta-persona">
|
|
25
|
+
$ARGUMENTS
|
|
26
|
+
</expand>
|
|
27
|
+
|
|
23
28
|
<objective>
|
|
24
29
|
*Configure* the *persona style* of the agent to adjust the communication
|
|
25
30
|
style and token usage intensity.
|
|
26
31
|
</objective>
|
|
27
32
|
|
|
28
33
|
1. Determine request:
|
|
29
|
-
<request
|
|
34
|
+
<request><getopt-arguments/></request>
|
|
30
35
|
Do not output anything.
|
|
31
36
|
|
|
32
37
|
2. <if condition="<request/> is empty">
|
|
@@ -134,9 +134,17 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
134
134
|
|
|
135
135
|
4. <step id="STEP 4: Determine Consensus Rating">
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
First, count the number of *available foreign AIs* (those queried in
|
|
138
|
+
STEP 2 which did *not* return an `ERROR:` response). If this count is
|
|
139
|
+
*zero* -- i.e., every foreign AI errored out or none were reachable
|
|
140
|
+
and only yourself (Anthropic Claude) remains -- a quorum is *not*
|
|
141
|
+
possible. In this case, set <c></c> and <n></n> to empty and instead
|
|
142
|
+
set <disagreement/> to `(no quorum: no foreign AIs were available)`,
|
|
143
|
+
then skip the rest of this step.
|
|
144
|
+
|
|
145
|
+
Otherwise, determine, on a Likert scale of 0..<n/>, the amount of the
|
|
146
|
+
overall consensus <c/> of all the responses. The <n/> is the *total
|
|
147
|
+
number of responders* (yourself plus all available foreign AIs above).
|
|
140
148
|
If all responses disagree, the consensus <c/> is zero.
|
|
141
149
|
If all responses agree, <c/> is <n/>.
|
|
142
150
|
|
|
@@ -165,6 +173,10 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
165
173
|
|
|
166
174
|
**CONSENSUS RATE**: **<c/>/<n/>** <disagreement/>
|
|
167
175
|
|
|
176
|
+
When a quorum was *not* possible (see STEP 4), render this line
|
|
177
|
+
instead as just `**CONSENSUS RATE**: *n/a* <disagreement/>` (omitting
|
|
178
|
+
the `<c/>/<n/>` fraction), as a single AI cannot form a consensus.
|
|
179
|
+
|
|
168
180
|
○ **Anthropic Claude**:
|
|
169
181
|
- [...]
|
|
170
182
|
- [...]
|
|
@@ -142,7 +142,11 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
142
142
|
more Pro-Theses or Supporting-Arguments until you EITHER have found
|
|
143
143
|
at least <count/> Pro-Theses or Supporting-Arguments with at least a
|
|
144
144
|
rank of 7 OR you have already checked a total of <count/> x 5
|
|
145
|
-
Pro-Theses or Supporting-Arguments.
|
|
145
|
+
Pro-Theses or Supporting-Arguments. If the second condition is
|
|
146
|
+
reached first and fewer than <count/> Pro-Theses or
|
|
147
|
+
Supporting-Arguments reached a rank of at least 7, nevertheless
|
|
148
|
+
surface the <count/> highest-ranked ones found so far, because
|
|
149
|
+
<count/> is the *minimum* number of Pro-Theses to surface.
|
|
146
150
|
|
|
147
151
|
Then, for the top-<count/> highest-ranked Pro-Theses or
|
|
148
152
|
Supporting-Arguments, sort them by their rank from highest to lowest,
|
|
@@ -12,11 +12,16 @@ effort: high
|
|
|
12
12
|
|
|
13
13
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
14
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
15
16
|
|
|
16
17
|
<skill name="ase-task-delete">
|
|
17
18
|
Delete a Task Plan
|
|
18
19
|
</skill>
|
|
19
20
|
|
|
21
|
+
<expand name="getopt" arg1="ase-task-delete">
|
|
22
|
+
$ARGUMENTS
|
|
23
|
+
</expand>
|
|
24
|
+
|
|
20
25
|
<objective>
|
|
21
26
|
*Delete* the task plan.
|
|
22
27
|
</objective>
|
|
@@ -32,7 +37,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
32
37
|
|
|
33
38
|
1. **Determine Task:**
|
|
34
39
|
|
|
35
|
-
1. Set <id
|
|
40
|
+
1. Set <id><getopt-arguments/></id> initially, with any leading and trailing
|
|
36
41
|
whitespace stripped.
|
|
37
42
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
38
43
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
@@ -175,14 +175,32 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
175
175
|
|
|
176
176
|
2. Check the code base and your world knowledge and
|
|
177
177
|
use this information to find *up to three* grounded
|
|
178
|
-
alternative answers <answer-N-K/> (K={2,3,4})
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
178
|
+
alternative answers <answer-N-K/> (K={2,3,4}), so there
|
|
179
|
+
are between two and four answer options in total.
|
|
180
|
+
|
|
181
|
+
3. In the following, you *MUST* *NOT* use the
|
|
182
|
+
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
183
|
+
custom output, let the user enter input, and then you set
|
|
184
|
+
the result accordingly.
|
|
185
|
+
|
|
186
|
+
Let the user select the <answer-N/> out of the answer
|
|
187
|
+
alternatives <answer-N-K/> by raising a question with the
|
|
188
|
+
following custom dialog, where per alternative <answer-N-K/>
|
|
189
|
+
you determine a brief label <answer-N-K-label/> and a
|
|
190
|
+
description <answer-N-K-description/>, and you mark the
|
|
191
|
+
<answer-N-1/> by prefixing its description with
|
|
192
|
+
`⚝ **CURRENT PLAN** ⚝ `. Emit only the answer lines for the
|
|
193
|
+
alternatives <answer-N-K/> you actually determined in the
|
|
194
|
+
previous step (between two and four lines in total):
|
|
195
|
+
|
|
196
|
+
<expand name="custom-dialog" arg1="--other">
|
|
197
|
+
<aspect-N/>: <question-N/>
|
|
198
|
+
<answer-N-1-label/>: ⚝ **CURRENT PLAN** ⚝ - <answer-N-1-description/>
|
|
199
|
+
<answer-N-K-label/>: <answer-N-K-description/>
|
|
200
|
+
[...]
|
|
201
|
+
</expand>
|
|
202
|
+
|
|
203
|
+
Set <answer-N/> to the selected <result/>.
|
|
186
204
|
|
|
187
205
|
4. Output the following <template/>:
|
|
188
206
|
|
|
@@ -199,7 +217,10 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
199
217
|
|
|
200
218
|
4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
201
219
|
`ase` MCP server and use the `text` field of its response for
|
|
202
|
-
<timestamp-modified/> information.
|
|
220
|
+
<timestamp-modified/> information. If <timestamp-created/> is
|
|
221
|
+
still unset (because the previous <plan/> had no `Created:`
|
|
222
|
+
line), set <timestamp-created><timestamp-modified/></timestamp-created>
|
|
223
|
+
(fall back to the modified timestamp). Then insert the current
|
|
203
224
|
<ase-task-id/>, previous <timestamp-created/>, and refreshed
|
|
204
225
|
<timestamp-modified/> information and calculate the number of
|
|
205
226
|
words <words/> of <plan/>.
|
|
@@ -12,17 +12,23 @@ effort: high
|
|
|
12
12
|
|
|
13
13
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
14
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
15
16
|
|
|
16
17
|
<skill name="ase-task-id">
|
|
17
18
|
Configure Task Id
|
|
18
19
|
</skill>
|
|
19
20
|
|
|
21
|
+
<expand name="getopt" arg1="ase-task-id">
|
|
22
|
+
$ARGUMENTS
|
|
23
|
+
</expand>
|
|
24
|
+
|
|
20
25
|
<objective>
|
|
21
26
|
*Get* or *set* the unique *task id* of the current session.
|
|
22
27
|
</objective>
|
|
23
28
|
|
|
24
29
|
1. Determine request:
|
|
25
|
-
<request
|
|
30
|
+
<request><getopt-arguments/></request>
|
|
31
|
+
Inherit the always existing <ase-session-id/> from the current context.
|
|
26
32
|
|
|
27
33
|
2. <if condition="<request/> is NOT empty AND <request/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`">
|
|
28
34
|
Only output the following <template/> and then immediately
|
|
@@ -35,8 +41,9 @@ Configure Task Id
|
|
|
35
41
|
|
|
36
42
|
3. <if condition="<request/> is empty">
|
|
37
43
|
- Call the `ase_task_id(session: "<ase-session-id/>")`
|
|
38
|
-
tool from the `ase` MCP server and set
|
|
39
|
-
|
|
44
|
+
tool from the `ase` MCP server and set <text/> to its
|
|
45
|
+
`text` output. Check the response as mandated above; only
|
|
46
|
+
on a clean response set <ase-task-id><text/></ase-task-id>.
|
|
40
47
|
|
|
41
48
|
- Output:
|
|
42
49
|
<template>
|