@rse/ase 0.9.10 → 0.9.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- 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 +5 -2
- 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 +5 -2
- package/plugin/skills/ase-code-resolve/SKILL.md +12 -8
- 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-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
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.9.
|
|
9
|
+
"version": "0.9.11",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
package/plugin/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.9.
|
|
9
|
+
"version": "0.9.11",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -101,14 +101,19 @@ allowed-tools:
|
|
|
101
101
|
|
|
102
102
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
103
103
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
104
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
104
105
|
|
|
105
106
|
<skill name="ase-arch-analyze">
|
|
106
107
|
Review Software Architecture
|
|
107
108
|
</skill>
|
|
108
109
|
|
|
110
|
+
<expand name="getopt" arg1="ase-arch-analyze">
|
|
111
|
+
$ARGUMENTS
|
|
112
|
+
</expand>
|
|
113
|
+
|
|
109
114
|
<objective>
|
|
110
115
|
With the mindset of an *expert-level software architect*,
|
|
111
|
-
*review* the *software architecture* of
|
|
116
|
+
*review* the *software architecture* of <getopt-arguments/>, and its directly
|
|
112
117
|
related source code, for *potential problems* across component
|
|
113
118
|
boundaries, structural organization, architecture principles,
|
|
114
119
|
interface quality, quality attributes, and architecture governance.
|
|
@@ -52,8 +52,8 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
52
52
|
Functionality: Which functionality should the components provide?
|
|
53
53
|
<answer-1/>: (grounded candidate functionality 1)
|
|
54
54
|
<answer-2/>: (grounded candidate functionality 2)
|
|
55
|
-
<answer-3/>: (grounded candidate functionality
|
|
56
|
-
<answer-4/>: (grounded candidate functionality
|
|
55
|
+
<answer-3/>: (grounded candidate functionality 3)
|
|
56
|
+
<answer-4/>: (grounded candidate functionality 4)
|
|
57
57
|
</expand>
|
|
58
58
|
|
|
59
59
|
Then use the <result/> and its corresponding grounded candidate
|
|
@@ -40,7 +40,8 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
40
40
|
|
|
41
41
|
<if condition="<getopt-option-performance/> is equal `true` and <getopt-option-security/> is equal `true`">
|
|
42
42
|
|
|
43
|
-
Only output the following <template/> and then *STOP*
|
|
43
|
+
Only output the following <template/> and then *STOP* the entire flow
|
|
44
|
+
(do not perform any further steps):
|
|
44
45
|
|
|
45
46
|
<template>
|
|
46
47
|
⧉ **ASE**: ✪ skill: **ase-code-analyze**, ▶ ERROR: options `--performance` and `--security` are mutually exclusive
|
|
@@ -146,10 +147,12 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
146
147
|
than or equal to `rank(<getopt-option-severity/>)`; *silently drop*
|
|
147
148
|
all other problems (they are neither reported nor persisted). With
|
|
148
149
|
the default floor `LOW`, all problems are kept. `ACCEPTED` problems
|
|
149
|
-
are *never* dropped.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
are *never* dropped.
|
|
151
|
+
|
|
152
|
+
Then renumber the surviving problems contiguously as `P<n/>` with
|
|
153
|
+
<n/> = 1, 2, ... in the original ordering. If *all* problems are
|
|
154
|
+
dropped, skip the per-problem report but still emit the final hint
|
|
155
|
+
<template/> below.
|
|
153
156
|
|
|
154
157
|
In this STEP 3, for *EVERY* surviving problem, immediately report
|
|
155
158
|
it with the following output <template/>, based on concise bullet
|
|
@@ -209,6 +212,10 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
209
212
|
justified trade-off that should remain on record but is never
|
|
210
213
|
dropped by the severity floor (see STEP 3).
|
|
211
214
|
|
|
215
|
+
- For <title/> ultra-compress the <description/> to a concise,
|
|
216
|
+
short, single sentence. Keep one inline reference to the code
|
|
217
|
+
position which is most relevant to the problem.
|
|
218
|
+
|
|
212
219
|
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
213
220
|
In <evidence/>, ground the finding by citing either the inferred
|
|
214
221
|
*Big-O* time/space complexity (e.g. `O(n²)` reducible to `O(n)`)
|
|
@@ -343,11 +343,14 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
343
343
|
Hand off to `ase-task-edit`.
|
|
344
344
|
<if condition="<head/> is equal `EDIT`">
|
|
345
345
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
346
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
346
|
+
tokens (joined back with `,`, or `none` if empty). `EDIT`
|
|
347
|
+
is this skill's own dispatch token, *not* part of
|
|
348
|
+
`ase-task-edit`'s `--next` vocabulary, so it must be
|
|
349
|
+
stripped here rather than forwarded.
|
|
347
350
|
</if>
|
|
348
351
|
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
349
352
|
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
350
|
-
head itself.
|
|
353
|
+
own head itself.
|
|
351
354
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
352
355
|
Set <args><args/> --next <getopt-option-next/></args>
|
|
353
356
|
</if>
|
|
@@ -14,13 +14,18 @@ allowed-tools:
|
|
|
14
14
|
|
|
15
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
16
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
17
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
17
18
|
|
|
18
19
|
<skill name="ase-code-explain">
|
|
19
20
|
Explain Source Code
|
|
20
21
|
</skill>
|
|
21
22
|
|
|
23
|
+
<expand name="getopt" arg1="ase-code-explain">
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</expand>
|
|
26
|
+
|
|
22
27
|
<objective>
|
|
23
|
-
*Analyze* the source code of
|
|
28
|
+
*Analyze* the source code of <getopt-arguments/>, and its directly related source
|
|
24
29
|
code and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
25
30
|
</objective>
|
|
26
31
|
|
|
@@ -18,13 +18,18 @@ allowed-tools:
|
|
|
18
18
|
|
|
19
19
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
20
20
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
21
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
21
22
|
|
|
22
23
|
<skill name="ase-code-insight">
|
|
23
24
|
Project Insight
|
|
24
25
|
</skill>
|
|
25
26
|
|
|
27
|
+
<expand name="getopt" arg1="ase-code-insight">
|
|
28
|
+
$ARGUMENTS
|
|
29
|
+
</expand>
|
|
30
|
+
|
|
26
31
|
<objective>
|
|
27
|
-
Give *insights* into the project through the source code of
|
|
32
|
+
Give *insights* into the project through the source code of <getopt-arguments/>.
|
|
28
33
|
</objective>
|
|
29
34
|
|
|
30
35
|
<flow>
|
|
@@ -248,9 +248,15 @@ related to a set of code quality aspects.
|
|
|
248
248
|
- <if condition="<result/> starts with 'OTHER'">
|
|
249
249
|
Generate a *new* proposal for the *same* <item/>
|
|
250
250
|
(incorporating the user's free-text hint from <result/> if
|
|
251
|
-
provided via the "OTHER" prefix)
|
|
252
|
-
|
|
253
|
-
|
|
251
|
+
provided via the "OTHER" prefix). *Reassign* <description/>
|
|
252
|
+
and <change-set/> to reflect this refined proposal (each
|
|
253
|
+
change-hunk's `old_text` stays anchored to the existing
|
|
254
|
+
text at its `file`:`line`; `new_text` carries the
|
|
255
|
+
refinement) so that the substep 2/3 rebuild renders the new
|
|
256
|
+
<diff/> and any `Edit` applies the new proposal rather than
|
|
257
|
+
the original. Then loop back to substep 2 of this iteration.
|
|
258
|
+
There is *no* cap on refinement rounds - keep refining until
|
|
259
|
+
the user picks `ACCEPT` or `REJECT`.
|
|
254
260
|
</if>
|
|
255
261
|
|
|
256
262
|
- <if condition="
|
|
@@ -332,11 +332,14 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
332
332
|
Hand off to `ase-task-edit`.
|
|
333
333
|
<if condition="<head/> is equal `EDIT`">
|
|
334
334
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
335
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
335
|
+
tokens (joined back with `,`, or `none` if empty). `EDIT`
|
|
336
|
+
is this skill's own dispatch token, *not* part of
|
|
337
|
+
`ase-task-edit`'s `--next` vocabulary, so it must be
|
|
338
|
+
stripped here rather than forwarded.
|
|
336
339
|
</if>
|
|
337
340
|
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
338
341
|
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
339
|
-
head itself.
|
|
342
|
+
own head itself.
|
|
340
343
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
341
344
|
Set <args><args/> --next <getopt-option-next/></args>
|
|
342
345
|
</if>
|
|
@@ -60,14 +60,15 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
60
60
|
1. If <problem/> matches the regexp `^[PT]\d+$` (i.e. a bare issue
|
|
61
61
|
identifier like `P1`, `P2`, `T1`, `T2`, ...),
|
|
62
62
|
set <problem-id><problem/></problem-id> and
|
|
63
|
-
<ase-task-id><problem/></ase-task-id>, call the
|
|
64
|
-
|
|
65
|
-
`ase` MCP server to implicitly switch the task, and then
|
|
66
|
-
call the `ase_kv_get(key: "ase-issue-<problem-id/>")` tool of
|
|
63
|
+
<ase-task-id><problem/></ase-task-id>, then call the
|
|
64
|
+
`ase_kv_get(key: "ase-issue-<problem-id/>")` tool of
|
|
67
65
|
the `ase` MCP server to retrieve the previously persisted
|
|
68
66
|
problem description. If the returned `text` is non-empty, set
|
|
69
|
-
<problem><text/></problem
|
|
70
|
-
|
|
67
|
+
<problem><text/></problem> and call the `ase_task_id(id:
|
|
68
|
+
"<ase-task-id/>", session: "<ase-session-id/>")` tool from the
|
|
69
|
+
`ase` MCP server to implicitly switch the task, otherwise
|
|
70
|
+
complain to the user that no analyzer result exists for
|
|
71
|
+
<problem-id/> and stop processing.
|
|
71
72
|
|
|
72
73
|
2. <if condition="
|
|
73
74
|
<problem/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
@@ -389,11 +390,14 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
389
390
|
Hand off to `ase-task-edit`.
|
|
390
391
|
<if condition="<head/> is equal `EDIT`">
|
|
391
392
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
392
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
393
|
+
tokens (joined back with `,`, or `none` if empty). `EDIT`
|
|
394
|
+
is this skill's own dispatch token, *not* part of
|
|
395
|
+
`ase-task-edit`'s `--next` vocabulary, so it must be
|
|
396
|
+
stripped here rather than forwarded.
|
|
393
397
|
</if>
|
|
394
398
|
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
395
399
|
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
396
|
-
head itself.
|
|
400
|
+
own head itself.
|
|
397
401
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
398
402
|
Set <args><args/> --next <getopt-option-next/></args>
|
|
399
403
|
</if>
|
|
@@ -188,9 +188,15 @@ Analyze documents for spelling, punctuation, or grammar errors
|
|
|
188
188
|
|
|
189
189
|
Generate a *new* proposal for the *same* <item/>,
|
|
190
190
|
incorporating the user's free-text hint from <result/>
|
|
191
|
-
after the "OTHER:" prefix
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
after the "OTHER:" prefix. *Reassign* <description/>,
|
|
192
|
+
<old-text/>, and <new-text/> to reflect this refined
|
|
193
|
+
proposal (<old-text/> stays anchored to the existing text
|
|
194
|
+
at <file/>:<line/>; <new-text/> and <description/> carry the
|
|
195
|
+
refinement) so the subsequent rendering and any `Edit` use
|
|
196
|
+
the new proposal rather than the original. Then *go back* to
|
|
197
|
+
substep 2 of this `for`-iteration. There is *no* cap on
|
|
198
|
+
refinement rounds - keep refining until the user picks
|
|
199
|
+
`ACCEPT` or `REJECT`.
|
|
194
200
|
|
|
195
201
|
</if>
|
|
196
202
|
|
|
@@ -129,10 +129,9 @@ Honor the following tenets throughout the brainstorming:
|
|
|
129
129
|
|
|
130
130
|
<expand name="custom-dialog" arg1="--other">
|
|
131
131
|
<facet-M/>: <question-M/>
|
|
132
|
-
<answer-M-1/>: (
|
|
133
|
-
<answer-M-2/>: (
|
|
134
|
-
|
|
135
|
-
<answer-M-4/>: (fourth grounded candidate answer)
|
|
132
|
+
<answer-M-1/>: (grounded candidate answer 1)
|
|
133
|
+
<answer-M-2/>: (grounded candidate answer 2)
|
|
134
|
+
[...]
|
|
136
135
|
</expand>
|
|
137
136
|
|
|
138
137
|
4. Dispatch on the dialog <result/>:
|
|
@@ -16,11 +16,16 @@ allowed-tools:
|
|
|
16
16
|
|
|
17
17
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
18
18
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
19
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
19
20
|
|
|
20
21
|
<skill name="ase-meta-changelog">
|
|
21
22
|
Update ChangeLog Entries
|
|
22
23
|
</skill>
|
|
23
24
|
|
|
25
|
+
<expand name="getopt" arg1="ase-meta-changelog">
|
|
26
|
+
$ARGUMENTS
|
|
27
|
+
</expand>
|
|
28
|
+
|
|
24
29
|
<objective>
|
|
25
30
|
Help to complete, consolidate and sort *ChangeLog* entries of the most
|
|
26
31
|
recent *ChangeLog* section, based on underlying *Git* commits and staged
|
|
@@ -81,11 +86,17 @@ Processing
|
|
|
81
86
|
the Git *commits* plus the currently already staged changes in the Git
|
|
82
87
|
*index*, but *ignore* the Git *stash* and still unstaged changes.
|
|
83
88
|
|
|
84
|
-
For finding the corresponding Git *commits*,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
with the command `git
|
|
88
|
-
|
|
89
|
+
For finding the corresponding Git *commits*, first determine the
|
|
90
|
+
correct baseline Git tag. Take the `N.M.K` from the *first* (most
|
|
91
|
+
recent) level-2 header in the *ChangeLog* file and check whether a
|
|
92
|
+
corresponding Git tag already exists with the command `git tag --list
|
|
93
|
+
N.M.K`. If this command produces *no* output, the first section is
|
|
94
|
+
still in-progress/untagged, so use the `N.M.K` from the *second*
|
|
95
|
+
level-2 header as the baseline tag instead. If this command *does*
|
|
96
|
+
produce output, the first section is already released/tagged, so use
|
|
97
|
+
the `N.M.K` from the *first* level-2 header as the baseline tag. Then
|
|
98
|
+
check all Git commits between `HEAD` and this baseline tag with the
|
|
99
|
+
command `git log N.M.K..HEAD --numstat --pretty=format:'%h: %s'`.
|
|
89
100
|
|
|
90
101
|
For finding the corresponding staged Git *changes* in the Git
|
|
91
102
|
*index*, use the command `git diff --cached --numstat`, but silently
|
|
@@ -14,13 +14,18 @@ allowed-tools:
|
|
|
14
14
|
|
|
15
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
16
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
17
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
17
18
|
|
|
18
19
|
<skill name="ase-meta-chat">
|
|
19
20
|
Query Foreign LLM for Chat
|
|
20
21
|
</skill>
|
|
21
22
|
|
|
23
|
+
<expand name="getopt" arg1="ase-meta-chat">
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</expand>
|
|
26
|
+
|
|
22
27
|
<objective>
|
|
23
|
-
Query foreign LLM for: <query
|
|
28
|
+
Query foreign LLM for: <query><getopt-arguments/></query>
|
|
24
29
|
</objective>
|
|
25
30
|
|
|
26
31
|
1. You *MUST* *NOT* output anything in this step.
|
|
@@ -12,11 +12,16 @@ allowed-tools:
|
|
|
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-meta-commit">
|
|
17
18
|
Git Commit
|
|
18
19
|
</skill>
|
|
19
20
|
|
|
21
|
+
<expand name="getopt" arg1="ase-meta-commit">
|
|
22
|
+
$ARGUMENTS
|
|
23
|
+
</expand>
|
|
24
|
+
|
|
20
25
|
<objective>
|
|
21
26
|
Help to *craft* a *concise commit message* for the
|
|
22
27
|
currently staged Git changes.
|
|
@@ -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>
|
|
@@ -119,10 +119,10 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
119
119
|
Set <instruction><text/></instruction> (set instruction to extracted text).
|
|
120
120
|
</if>
|
|
121
121
|
|
|
122
|
-
5. <
|
|
122
|
+
5. <if condition="<content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
|
|
123
123
|
Set <instruction><instruction/>, BECAUSE <text/></instruction>
|
|
124
124
|
(append extracted text to instruction).
|
|
125
|
-
</
|
|
125
|
+
</if>
|
|
126
126
|
|
|
127
127
|
6. <if condition="<content/> contains 'Created: <text/>'">
|
|
128
128
|
Set <timestamp-created><text/></timestamp-created> (set
|
|
@@ -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-rename">
|
|
17
18
|
Rename a Task Plan
|
|
18
19
|
</skill>
|
|
19
20
|
|
|
21
|
+
<expand name="getopt" arg1="ase-task-rename">
|
|
22
|
+
$ARGUMENTS
|
|
23
|
+
</expand>
|
|
24
|
+
|
|
20
25
|
<objective>
|
|
21
26
|
*Rename* 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. Parse <arguments
|
|
40
|
+
1. Parse <arguments><getopt-arguments/></arguments> into a whitespace-separated
|
|
36
41
|
list of tokens. Inherit the always existing <ase-task-id/> and
|
|
37
42
|
<ase-session-id/> from the current context. Do not output anything.
|
|
38
43
|
|
|
@@ -57,6 +62,15 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
57
62
|
</template>
|
|
58
63
|
</if>
|
|
59
64
|
|
|
65
|
+
5. <if condition="<old/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` OR <new/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`">
|
|
66
|
+
Only output the following <template/> and then immediately
|
|
67
|
+
*STOP* processing the entire current skill:
|
|
68
|
+
|
|
69
|
+
<template>
|
|
70
|
+
⧉ **ASE**: ☻ skill: **ase-task-rename**, ▶ ERROR: invalid task id (expected `^[a-zA-Z][a-zA-Z0-9_-]*$`)
|
|
71
|
+
</template>
|
|
72
|
+
</if>
|
|
73
|
+
|
|
60
74
|
2. **Perform Operation**:
|
|
61
75
|
|
|
62
76
|
1. Call the `ase_task_rename(old: "<old/>", new: "<new/>")` tool of the
|