@rse/ase 0.9.55 → 0.9.57
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-config.js +72 -31
- package/dst/ase-getopt.js +3 -1
- package/dst/ase-hook.js +5 -3
- package/dst/ase-markdown.js +7 -4
- package/dst/ase-service.js +1 -1
- package/dst/ase-setup.js +4 -2
- package/dst/ase-statusline.js +6 -8
- package/dst/ase-task.js +37 -11
- package/package.json +5 -5
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-analyze.md +1 -1
- package/plugin/agents/ase-code-lint.md +4 -4
- package/plugin/agents/ase-meta-chat.md +1 -1
- package/plugin/agents/ase-meta-proximity.md +1 -1
- package/plugin/meta/ase-common-code.md +168 -1
- package/plugin/meta/ase-common-task.md +31 -13
- package/plugin/meta/ase-constitution.md +3 -3
- package/plugin/meta/ase-control.md +7 -7
- package/plugin/meta/ase-dialog.md +5 -4
- package/plugin/meta/ase-format-arch.md +6 -21
- package/plugin/meta/ase-format-meta.md +15 -2
- package/plugin/meta/ase-format-spec.md +9 -24
- package/plugin/meta/ase-format-task.md +2 -2
- package/plugin/meta/ase-getopt.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +14 -24
- package/plugin/meta/ase-tenets.md +5 -5
- package/plugin/package.json +2 -2
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -2
- package/plugin/skills/ase-arch-analyze/help.md +1 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +9 -7
- package/plugin/skills/ase-code-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-code-analyze/help.md +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +2 -153
- package/plugin/skills/ase-code-craft/help.md +1 -1
- package/plugin/skills/ase-code-explain/SKILL.md +3 -3
- package/plugin/skills/ase-code-insight/SKILL.md +9 -7
- package/plugin/skills/ase-code-lint/SKILL.md +7 -5
- package/plugin/skills/ase-code-refactor/SKILL.md +4 -155
- package/plugin/skills/ase-code-resolve/SKILL.md +48 -173
- package/plugin/skills/ase-code-resolve/help.md +15 -4
- package/plugin/skills/ase-docs-distill/SKILL.md +2 -2
- package/plugin/skills/ase-docs-distill/help.md +1 -1
- package/plugin/skills/ase-docs-proofread/SKILL.md +7 -3
- package/plugin/skills/ase-help-intent/SKILL.md +33 -9
- package/plugin/skills/ase-help-skill/SKILL.md +1 -1
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +11 -2
- package/plugin/skills/ase-meta-changelog/SKILL.md +13 -8
- package/plugin/skills/ase-meta-chat/SKILL.md +9 -0
- package/plugin/skills/ase-meta-commit/SKILL.md +11 -1
- package/plugin/skills/ase-meta-compat/SKILL.md +2 -2
- package/plugin/skills/ase-meta-config/help.md +3 -2
- package/plugin/skills/ase-meta-diaboli/SKILL.md +12 -3
- package/plugin/skills/ase-meta-diff/SKILL.md +11 -13
- package/plugin/skills/ase-meta-eli5/SKILL.md +3 -3
- package/plugin/skills/ase-meta-eli5/help.md +1 -1
- package/plugin/skills/ase-meta-evaluate/SKILL.md +3 -3
- package/plugin/skills/ase-meta-quorum/SKILL.md +17 -17
- package/plugin/skills/ase-meta-quotes/SKILL.md +1 -1
- package/plugin/skills/ase-meta-review/SKILL.md +7 -5
- package/plugin/skills/ase-meta-review/help.md +2 -2
- package/plugin/skills/ase-meta-search/SKILL.md +18 -0
- package/plugin/skills/ase-meta-steelman/SKILL.md +11 -2
- package/plugin/skills/ase-meta-why/SKILL.md +15 -6
- package/plugin/skills/ase-meta-why/help.md +3 -3
- package/plugin/skills/ase-sync-export/SKILL.md +2 -1
- package/plugin/skills/ase-sync-export/help.md +1 -1
- package/plugin/skills/ase-sync-reconcile/SKILL.md +16 -2
- package/plugin/skills/ase-task-condense/SKILL.md +13 -67
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-dissect/SKILL.md +5 -18
- package/plugin/skills/ase-task-edit/SKILL.md +49 -22
- package/plugin/skills/ase-task-grill/SKILL.md +31 -129
- package/plugin/skills/ase-task-id/SKILL.md +12 -2
- package/plugin/skills/ase-task-implement/SKILL.md +11 -7
- package/plugin/skills/ase-task-implement/help.md +1 -1
- package/plugin/skills/ase-task-list/SKILL.md +9 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +17 -33
- package/plugin/skills/ase-task-reboot/SKILL.md +24 -100
- package/plugin/skills/ase-task-reboot/help.md +1 -1
- package/plugin/skills/ase-task-view/SKILL.md +4 -2
- package/dst/ase-guidance.js +0 -89
- package/dst/ase-persona.js +0 -87
- package/dst/ase-stdout.js +0 -18
|
@@ -78,6 +78,15 @@ Honor the following tenets throughout the brainstorming:
|
|
|
78
78
|
|
|
79
79
|
1. <step id="STEP 1: Restate Topic">
|
|
80
80
|
|
|
81
|
+
<if condition="<topic/> is empty">
|
|
82
|
+
Only output the following <template/> and then immediately *STOP*
|
|
83
|
+
processing the entire current skill:
|
|
84
|
+
|
|
85
|
+
<template>
|
|
86
|
+
⧉ **ASE**: ✪ skill: **ase-meta-brainstorm**, ▶ ERROR: expected a `<topic>` argument
|
|
87
|
+
</template>
|
|
88
|
+
</if>
|
|
89
|
+
|
|
81
90
|
Restate the topic to be brainstormed by outputting the following <template/>:
|
|
82
91
|
|
|
83
92
|
<template>
|
|
@@ -99,7 +108,7 @@ Honor the following tenets throughout the brainstorming:
|
|
|
99
108
|
1..<getopt-option-max-clarify/> unknowns, as too much upfront intent
|
|
100
109
|
clarification kills the brainstorming of ideas later. So, you *MUST*
|
|
101
110
|
reduce the clarifications of the unknowns to the absolute minimum in
|
|
102
|
-
general and cap
|
|
111
|
+
general and cap them at <getopt-option-max-clarify/>!
|
|
103
112
|
|
|
104
113
|
For each essential unknown to clarify, derive a short 1-3 word facet
|
|
105
114
|
<facet-M/> and a corresponding question <question-M/> whose answer
|
|
@@ -185,7 +194,7 @@ Honor the following tenets throughout the brainstorming:
|
|
|
185
194
|
the unconventional/wildcard angle - because variety in origin yields
|
|
186
195
|
variety in outcome.
|
|
187
196
|
|
|
188
|
-
|
|
197
|
+
Still do *not* judge, rank, or prune ideas in this step. Generate
|
|
189
198
|
ideas until you either reach at least <getopt-option-min-ideas/> distinct
|
|
190
199
|
candidate ideas or have clearly exhausted the meaningfully distinct
|
|
191
200
|
space.
|
|
@@ -11,6 +11,7 @@ allowed-tools:
|
|
|
11
11
|
- "Bash(git diff *)"
|
|
12
12
|
- "Bash(git show *)"
|
|
13
13
|
- "Bash(git tag --list *)"
|
|
14
|
+
- "Read"
|
|
14
15
|
- "Write"
|
|
15
16
|
- "Edit"
|
|
16
17
|
---
|
|
@@ -106,14 +107,18 @@ Processing
|
|
|
106
107
|
correct baseline Git tag. Take the `N.M.K` from the *first* (most
|
|
107
108
|
recent) level-2 header in the *ChangeLog* file and check whether a
|
|
108
109
|
corresponding Git tag already exists with the command `git tag --list
|
|
109
|
-
N.M.K`. If this command
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
N.M.K`. If this command *does* produce output, the first section is
|
|
111
|
+
already released/tagged, so use the `N.M.K` from the *first* level-2
|
|
112
|
+
header as the baseline tag and *insert* a new, still-unreleased
|
|
113
|
+
level-2 section (next patch version, current date) *above* it, which
|
|
114
|
+
then becomes the *first* (most recent) section all subsequent steps
|
|
115
|
+
operate on - the already released section *MUST* *NOT* be modified.
|
|
116
|
+
If this command produces *no* output, the
|
|
117
|
+
first section is still in-progress/untagged, so use the `N.M.K` from
|
|
118
|
+
the *second* level-2 header as the baseline tag instead. If *no*
|
|
119
|
+
second level-2 header exists (very first, still untagged release),
|
|
120
|
+
skip the baseline tag and check *all* Git commits with the command
|
|
121
|
+
`git log HEAD --numstat --pretty=format:'%h: %s'` instead. Then
|
|
117
122
|
check all Git commits between `HEAD` and this baseline tag with the
|
|
118
123
|
command `git log N.M.K..HEAD --numstat --pretty=format:'%h: %s'`.
|
|
119
124
|
|
|
@@ -28,6 +28,15 @@ Query Foreign LLM for Chat
|
|
|
28
28
|
Query foreign LLM for: <query><getopt-arguments/></query>
|
|
29
29
|
</objective>
|
|
30
30
|
|
|
31
|
+
<if condition="<query/> is empty">
|
|
32
|
+
Only output the following <template/> and then immediately *STOP*
|
|
33
|
+
processing the entire current skill:
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
⧉ **ASE**: ✪ skill: **ase-meta-chat**, ▶ ERROR: expected a `<query>` argument
|
|
37
|
+
</template>
|
|
38
|
+
</if>
|
|
39
|
+
|
|
31
40
|
1. You *MUST* *NOT* output anything in this step.
|
|
32
41
|
Just call the underlying agent with the following tool:
|
|
33
42
|
|
|
@@ -8,6 +8,7 @@ disable-model-invocation: false
|
|
|
8
8
|
effort: medium
|
|
9
9
|
allowed-tools:
|
|
10
10
|
- "Bash(git diff *)"
|
|
11
|
+
- "Bash(git ls-files *)"
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
@@ -32,10 +33,19 @@ currently staged Git changes.
|
|
|
32
33
|
1. <step id="STEP 1: Find out staged changes">
|
|
33
34
|
|
|
34
35
|
Run the following command to find out details of what changes are
|
|
35
|
-
currently staged in the Git *index* for commit
|
|
36
|
+
currently staged in the Git *index* for commit, capturing its output
|
|
37
|
+
into <diff/>:
|
|
36
38
|
|
|
37
39
|
`git diff --cached`
|
|
38
40
|
|
|
41
|
+
<if condition="<diff/> is empty">
|
|
42
|
+
Only output the following <template/> and then *STOP* immediately:
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
⧉ **ASE**: ✪ skill: **ase-meta-commit**, ▶ status: **no changes to commit**
|
|
46
|
+
</template>
|
|
47
|
+
</if>
|
|
48
|
+
|
|
39
49
|
</step>
|
|
40
50
|
|
|
41
51
|
2. <step id="STEP 2: Craft a consolidated commit message">
|
|
@@ -34,8 +34,8 @@ on -- *control flow*, *XML placeholders*, *regex matching*, and
|
|
|
34
34
|
*arithmetic* -- and report an overall **0%…100% compatibility** rating.
|
|
35
35
|
|
|
36
36
|
This skill is unusual: it is both the *test definition* and the *system
|
|
37
|
-
under test*. Each *probe* is a pure ASE construct that you execute
|
|
38
|
-
|
|
37
|
+
under test*. Each *probe* is a pure ASE construct that you execute,
|
|
38
|
+
recording its *actual* result. You *MUST NOT* compare against any expected
|
|
39
39
|
value until STEP 6. Do not fabricate passes: a probe whose actual result
|
|
40
40
|
differs from its expected result *MUST* be recorded as a *fail*.
|
|
41
41
|
|
|
@@ -41,7 +41,7 @@ of the decorative, eloquent, and explaining `writer`, the concise,
|
|
|
41
41
|
factual, and accurate `engineer` (the default), the layered,
|
|
42
42
|
pyramid-structured `journalist`, the brief, factual, and abbreviating
|
|
43
43
|
`telegrapher`, or the terse, rough, and stuttering `caveman`;
|
|
44
|
-
`agent.guidance` selects the
|
|
44
|
+
`agent.guidance` selects the number of unsolicited hints and is one of
|
|
45
45
|
`none`, `minimal`, `normal` (the default), or `verbose`; and
|
|
46
46
|
`project.boxing` selects the artifact transparency and is one of `white`,
|
|
47
47
|
`grey`, or `black`. Setting `agent.persona`, `agent.guidance`, or
|
|
@@ -78,7 +78,8 @@ preset-bootstrapping operation that stays a shell concern next to
|
|
|
78
78
|
`user`, `project`, `task:`*id*, and/or `session:`*id* terms, in any
|
|
79
79
|
order and at most one term per kind. The `user` term is always
|
|
80
80
|
implicitly added at the bottom of the chain, and `project` is
|
|
81
|
-
implicitly added whenever a project context exists
|
|
81
|
+
implicitly added whenever a project context exists, but never above
|
|
82
|
+
the strongest explicitly requested term. If the option is
|
|
82
83
|
omitted, the chain of the *current session* (`session:`*id*) is used,
|
|
83
84
|
so that reads see the full `user` -> `project` -> `session` cascade
|
|
84
85
|
and writes -- including those to the session-only keys `agent.task`
|
|
@@ -37,6 +37,15 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
37
37
|
|
|
38
38
|
1. <step id="STEP 1: Restate Thesis">
|
|
39
39
|
|
|
40
|
+
<if condition="<thesis/> is empty">
|
|
41
|
+
Only output the following <template/> and then immediately *STOP*
|
|
42
|
+
processing the entire current skill:
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
⧉ **ASE**: ✪ skill: **ase-meta-diaboli**, ▶ ERROR: expected a `<thesis>` argument
|
|
46
|
+
</template>
|
|
47
|
+
</if>
|
|
48
|
+
|
|
40
49
|
Output the thesis with the following <template/>:
|
|
41
50
|
|
|
42
51
|
<template>
|
|
@@ -112,10 +121,10 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
112
121
|
just a contrarian.
|
|
113
122
|
|
|
114
123
|
- **Pre-Mortem Thinking**:
|
|
115
|
-
Imagine failure scenarios of the thesis, because better to
|
|
116
|
-
prevent them in advance than
|
|
124
|
+
Imagine failure scenarios of the thesis, because it is better to
|
|
125
|
+
prevent them in advance than to have to resolve them later.
|
|
117
126
|
|
|
118
|
-
For each Anti-Thesis or Counter-Argument rank it on a Likert scale
|
|
127
|
+
For each Anti-Thesis or Counter-Argument, rank it on a Likert scale
|
|
119
128
|
of 0 (weak) to 10 (strong). Repeat the process of finding more
|
|
120
129
|
Anti-Theses or Counter-Arguments until you EITHER have found at
|
|
121
130
|
least <count/> Anti-Theses or Counter-Arguments with at least a rank
|
|
@@ -52,13 +52,13 @@ Procedure
|
|
|
52
52
|
(taken exactly as given) and capturing the full diff output into
|
|
53
53
|
<diff/> for the subsequent analysis:
|
|
54
54
|
|
|
55
|
-
`git diff --cached
|
|
55
|
+
`git diff --cached`
|
|
56
56
|
|
|
57
57
|
2. Determine the *diff statistics* by running the corresponding command
|
|
58
58
|
(taken exactly as given) and capturing the full stat output into
|
|
59
59
|
<stat/> for the subsequent analysis:
|
|
60
60
|
|
|
61
|
-
`git diff --cached --numstat
|
|
61
|
+
`git diff --cached --numstat`
|
|
62
62
|
|
|
63
63
|
</step>
|
|
64
64
|
|
|
@@ -112,7 +112,7 @@ Procedure
|
|
|
112
112
|
| **<intent/>** | <changes/> | <files/>: <description/> |
|
|
113
113
|
</template>
|
|
114
114
|
|
|
115
|
-
In the <files/> part of the second column,
|
|
115
|
+
In the <files/> part of the second column, mark up all file
|
|
116
116
|
references as code (with backticks), prepend them with `▢ `,
|
|
117
117
|
append ` [+N/-M]` (based on the information in <stat/>) to them,
|
|
118
118
|
and separate them with `, ` (a comma and space). Do *not* repeat
|
|
@@ -174,7 +174,7 @@ Procedure
|
|
|
174
174
|
logging, `TODO`/`FIXME` scaffolding, disabled tests), which
|
|
175
175
|
should be just removed and not part of any commit.
|
|
176
176
|
|
|
177
|
-
3. A hunk that *serves* <thesis/> will
|
|
177
|
+
3. A hunk that *serves* <thesis/> will *not* be reported. Only hunks that
|
|
178
178
|
do *not* serve it will be reported. If *every* hunk serves the thesis,
|
|
179
179
|
the diff is *coherent* and you report *no* flagged hunks.
|
|
180
180
|
|
|
@@ -203,7 +203,7 @@ Procedure
|
|
|
203
203
|
the hunk does not serve <thesis/> and what to do with it (e.g.
|
|
204
204
|
split into its own commit, drop the debug residue).
|
|
205
205
|
|
|
206
|
-
In the <location/> column,
|
|
206
|
+
In the <location/> column, mark up all file references as code
|
|
207
207
|
(with backticks), prepend them with `▢ ` and append ` [+N/-M]`
|
|
208
208
|
(based on the information in <stat/>) to them.
|
|
209
209
|
|
|
@@ -212,7 +212,7 @@ Procedure
|
|
|
212
212
|
|
|
213
213
|
<template>
|
|
214
214
|
|
|
215
|
-
| Deviation | Location | Why it
|
|
215
|
+
| Deviation | Location | Why does it not serve the thesis? |
|
|
216
216
|
| ---------------- | ----------- | --------------------------------- |
|
|
217
217
|
| **<deviation/>** | <location/> | <reason/> |
|
|
218
218
|
|
|
@@ -278,7 +278,7 @@ Procedure
|
|
|
278
278
|
and <mitigation/> texts *concise* and *ultra brief*. Do *not*
|
|
279
279
|
output any further explanation.
|
|
280
280
|
|
|
281
|
-
In <evidence/>
|
|
281
|
+
In <evidence/> mark up all file references as code (with
|
|
282
282
|
backticks), prepend them with `▢ ` and append ` [+N/-M]` (based
|
|
283
283
|
on the information in <stat/>) to them.
|
|
284
284
|
|
|
@@ -297,7 +297,7 @@ Procedure
|
|
|
297
297
|
|
|
298
298
|
1. From the *same* captured <diff/> and <stat/>, *extract the
|
|
299
299
|
touched modules* - the distinct changed source files (or their
|
|
300
|
-
enclosing modules/
|
|
300
|
+
enclosing modules/packages, according to the language idiom).
|
|
301
301
|
|
|
302
302
|
2. Then, for each touched module, *scan its reverse dependencies*
|
|
303
303
|
- the other first-party files that *import* or *reference* it
|
|
@@ -322,14 +322,14 @@ Procedure
|
|
|
322
322
|
calling the tool `Agent(description: "Diagram Rendering",
|
|
323
323
|
subagent_type: "ase:ase-meta-diagram", prompt:
|
|
324
324
|
"<mermaid-spec/>", run_in_background: false)` and capture
|
|
325
|
-
its returned
|
|
325
|
+
its returned *fenced code block* verbatim as <diagram/>.
|
|
326
326
|
|
|
327
327
|
4. Then emit the following <template/>, showing <diagram/> and
|
|
328
328
|
appending a *brief impact summary* of bullets, where each
|
|
329
329
|
<module/> is a *touched* module and <impact/> is a one-sentence
|
|
330
330
|
note on *what depends on it* and *how far the blast reaches*.
|
|
331
331
|
|
|
332
|
-
In <module/> and <impact/>,
|
|
332
|
+
In <module/> and <impact/>, mark up all file references as code
|
|
333
333
|
(with backticks), prepend them with `▢ ` and append ` [+N/-M]`
|
|
334
334
|
(based on the information in <stat/>) to them.
|
|
335
335
|
|
|
@@ -341,9 +341,7 @@ Procedure
|
|
|
341
341
|
|
|
342
342
|
<ase-tpl-bullet-signal/> **CHANGE BLAST RADIUS MAP**:
|
|
343
343
|
|
|
344
|
-
```text
|
|
345
344
|
<diagram/>
|
|
346
|
-
```
|
|
347
345
|
|
|
348
346
|
<ase-tpl-bullet-signal/> **BLAST**: ⚑ **<module/>**: <impact/>
|
|
349
347
|
|
|
@@ -351,7 +349,7 @@ Procedure
|
|
|
351
349
|
|
|
352
350
|
[...]
|
|
353
351
|
|
|
354
|
-
<ase-tpl-foot/>
|
|
352
|
+
<ase-tpl-foot title="CHANGE BLAST RADIUS"/>
|
|
355
353
|
</template>
|
|
356
354
|
|
|
357
355
|
</step>
|
|
@@ -29,7 +29,7 @@ Explain a Topic Like I'm 5
|
|
|
29
29
|
|
|
30
30
|
<objective>
|
|
31
31
|
*Explain* the following topic in "Explain Like I'm 5" (ELI5) style,
|
|
32
|
-
so that even a five
|
|
32
|
+
so that even a five-year-old child could understand it:
|
|
33
33
|
<topic><getopt-arguments/></topic>
|
|
34
34
|
</objective>
|
|
35
35
|
|
|
@@ -46,7 +46,7 @@ so that even a five year old child could understand it:
|
|
|
46
46
|
</template>
|
|
47
47
|
</if>
|
|
48
48
|
|
|
49
|
-
Set <facts></facts> (set to empty)
|
|
49
|
+
Set <facts></facts> (set to empty).
|
|
50
50
|
|
|
51
51
|
</step>
|
|
52
52
|
|
|
@@ -80,7 +80,7 @@ so that even a five year old child could understand it:
|
|
|
80
80
|
3. <step id="STEP 3: Explain Topic">
|
|
81
81
|
|
|
82
82
|
Explain the <topic/> in "Explain Like I'm 5" (ELI5) style: use
|
|
83
|
-
*simple*, *jargon-free* wording a five
|
|
83
|
+
*simple*, *jargon-free* wording a five-year-old child could
|
|
84
84
|
understand -- short sentences, everyday words, and familiar images.
|
|
85
85
|
Do *not* use technical terms without immediately putting them into
|
|
86
86
|
child-friendly words.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
## DESCRIPTION
|
|
14
14
|
|
|
15
15
|
The `ase-meta-eli5` skill explains the supplied *topic* in "Explain
|
|
16
|
-
Like I'm 5" (ELI5) style, so that even a five
|
|
16
|
+
Like I'm 5" (ELI5) style, so that even a five-year-old child could
|
|
17
17
|
understand it. The explanation uses simple, jargon-free wording --
|
|
18
18
|
short sentences, everyday words, and familiar images -- and is
|
|
19
19
|
structured into three labeled blocks: *WHAT* (a plain-words summary),
|
|
@@ -114,12 +114,12 @@ multi-*criteria* decision matrix.
|
|
|
114
114
|
|
|
115
115
|
- For each criterion <criteria-L/> (L=1-M), decide on its <weight-L/>
|
|
116
116
|
from the value set { 4.00, 2.00, 1.00, 0.50, 0.25 } (from most
|
|
117
|
-
important,
|
|
117
|
+
important, via normal, to less important). Do not output anything.
|
|
118
118
|
|
|
119
119
|
- Ensure the final number of criteria is always within the range of
|
|
120
120
|
minimum 8 and maximum 12: if fewer than 8 criteria were requested,
|
|
121
121
|
use the set of alternatives to decide on additional criteria
|
|
122
|
-
which potentially
|
|
122
|
+
which potentially best allow triaging the alternatives, take the
|
|
123
123
|
<reason/> into account, and use the `ase-meta-search` skill (drawing from
|
|
124
124
|
the *skill-wide shared budget* of at most 8 `ase-meta-search` invocations
|
|
125
125
|
in total across STEP 2 and STEP 3 combined) to find out about the
|
|
@@ -145,7 +145,7 @@ multi-*criteria* decision matrix.
|
|
|
145
145
|
- For each alternative <alternative-K/> (K=1-N) and each criterion
|
|
146
146
|
<criteria-L/> (L=1-M), decide on the evaluation <eval-K-L/>, which
|
|
147
147
|
means how well the alternative meets the criterion on a Likert-scale
|
|
148
|
-
from { -2, -1, 0, +1, +2 } (from worst,
|
|
148
|
+
from { -2, -1, 0, +1, +2 } (from worst, via neutral, to best). Do
|
|
149
149
|
not output anything.
|
|
150
150
|
|
|
151
151
|
- Then, calculate the ratings <rating-K/> (K=1-N) for all
|
|
@@ -38,6 +38,21 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
38
38
|
|
|
39
39
|
1. <step id="STEP 1: Preview Own Answer">
|
|
40
40
|
|
|
41
|
+
The user-selectable foreign models are restricted by the
|
|
42
|
+
`--models`/`-m` option, parsed into <getopt-option-models/>
|
|
43
|
+
as a comma-separated list of model tokens. The getopt parser
|
|
44
|
+
validates only the *first* token, so you *MUST* validate each
|
|
45
|
+
remaining token yourself against the allowed set `all`, `chatgpt`,
|
|
46
|
+
`gemini`, `deepseek`, `grok`, `glm`, `qwen`, `claude`, `codex`,
|
|
47
|
+
`copilot`. If any token is *not*
|
|
48
|
+
in this set, bind <token/> to that offending token, then only output
|
|
49
|
+
the following <template/> and then immediately *STOP* processing the
|
|
50
|
+
entire current skill:
|
|
51
|
+
|
|
52
|
+
<template>
|
|
53
|
+
⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: invalid `--models` token: **<token/>**
|
|
54
|
+
</template>
|
|
55
|
+
|
|
41
56
|
Prepare the LLM query by setting <query/> to the following <template/>:
|
|
42
57
|
|
|
43
58
|
<template>
|
|
@@ -64,21 +79,6 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
64
79
|
|
|
65
80
|
2. <step id="STEP 2: Query Foreign AIs">
|
|
66
81
|
|
|
67
|
-
The user-selectable foreign models are restricted by the
|
|
68
|
-
`--models`/`-m` option, parsed into <getopt-option-models/>
|
|
69
|
-
as a comma-separated list of model tokens. The getopt parser
|
|
70
|
-
validates only the *first* token, so you *MUST* validate each
|
|
71
|
-
remaining token yourself against the allowed set `all`, `chatgpt`,
|
|
72
|
-
`gemini`, `deepseek`, `grok`, `glm`, `qwen`, `claude`, `codex`,
|
|
73
|
-
`copilot`. If any token is *not*
|
|
74
|
-
in this set, bind <token/> to that offending token, then only output
|
|
75
|
-
the following <template/> and then immediately *STOP* processing the
|
|
76
|
-
entire current skill:
|
|
77
|
-
|
|
78
|
-
<template>
|
|
79
|
-
⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: invalid `--models` token: **<token/>**
|
|
80
|
-
</template>
|
|
81
|
-
|
|
82
82
|
The default is the single token `all`. If <getopt-option-models/>
|
|
83
83
|
contains the token `all`, you *MUST* treat it as the full list
|
|
84
84
|
`chatgpt,gemini,deepseek,grok,glm,qwen` (all API-based models). The
|
|
@@ -143,7 +143,7 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
143
143
|
Agents which returned a response with an `ERROR:` prefix are
|
|
144
144
|
silently skipped and are treated as not available.
|
|
145
145
|
|
|
146
|
-
Summarize all responses, of both yourself and all available agents
|
|
146
|
+
Summarize all responses, of both yourself and all available agents,
|
|
147
147
|
with just 1 to 7 corresponding bullet points and with short
|
|
148
148
|
sentences.
|
|
149
149
|
|
|
@@ -178,7 +178,7 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
178
178
|
|
|
179
179
|
5. <step id="STEP 5: Show Results">
|
|
180
180
|
|
|
181
|
-
Finally show the summary, the consensus and the complete and
|
|
181
|
+
Finally, show the summary, the consensus, and the complete and
|
|
182
182
|
unmodified responses of yourself and each of the queried foreign
|
|
183
183
|
AIs, based on the following output <template/>:
|
|
184
184
|
|
|
@@ -185,7 +185,7 @@ Find Quotes on a Topic
|
|
|
185
185
|
- ` *(unverified)*` if the exact wording or the attribution of
|
|
186
186
|
the quote could not be established with confidence -- but
|
|
187
187
|
omit this marker for a quote whose wording and attribution
|
|
188
|
-
the Internet/Web search of STEP 2.2 confirmed
|
|
188
|
+
the Internet/Web search of STEP 2.2 confirmed, including
|
|
189
189
|
its re-application for a neighborhood topic in STEP 3.
|
|
190
190
|
|
|
191
191
|
Render the single line `○ (none)` for a quadrant without any
|
|
@@ -150,14 +150,16 @@ Procedure
|
|
|
150
150
|
You *MUST* *NOT* output anything else in this STEP 3.1.
|
|
151
151
|
|
|
152
152
|
2. <if condition="<findings/> is empty">
|
|
153
|
-
Only output the following <template/>
|
|
154
|
-
|
|
155
|
-
`
|
|
153
|
+
Only output the following <template/> - with <note/> set to `the
|
|
154
|
+
change was not reviewed` if <verdict/> starts with `SKIPPED` and
|
|
155
|
+
to `the change is clean` otherwise - and then *SKIP* the
|
|
156
|
+
remainder of this STEP 3 (an empty finding list never yields the
|
|
157
|
+
`REJECT` verdict, so the closing hint of substep 4 would expand
|
|
156
158
|
into nothing anyway):
|
|
157
159
|
|
|
158
160
|
<template>
|
|
159
161
|
|
|
160
|
-
<ase-tpl-bullet-normal/> **NO FINDINGS**:
|
|
162
|
+
<ase-tpl-bullet-normal/> **NO FINDINGS**: <note/>, nothing to flag.
|
|
161
163
|
|
|
162
164
|
</template>
|
|
163
165
|
</if>
|
|
@@ -173,7 +175,7 @@ Procedure
|
|
|
173
175
|
<dimension/> to its `dimension` field, set <location/> to its
|
|
174
176
|
`location` field, and set <finding/> to its `finding` field.
|
|
175
177
|
|
|
176
|
-
In the <location/> column,
|
|
178
|
+
In the <location/> column, mark up the `file:line` reference
|
|
177
179
|
as code (with backticks) and prepend it with `▢ ` - keep the
|
|
178
180
|
sub-agent's own `:N` / `:N-M` line citation intact and do *not*
|
|
179
181
|
append any further line-count decoration.
|
|
@@ -45,12 +45,12 @@ sub-agent so that the silent reading and read-only repository probing
|
|
|
45
45
|
never leak into the transcript; only the structured verdict and findings
|
|
46
46
|
are rendered.
|
|
47
47
|
|
|
48
|
-
The skill *complements* rather than duplicates its
|
|
48
|
+
The skill *complements* rather than duplicates its neighbors:
|
|
49
49
|
`ase-code-lint` flags *mechanical* code-quality issues, `ase-code-analyze`
|
|
50
50
|
inspects *logic and semantics*, `ase-meta-diff` narrates *what changed*
|
|
51
51
|
(with optional coherence, risk, and blast-radius reports), and
|
|
52
52
|
`ase-meta-diaboli` *adversarially challenges a thesis* - whereas
|
|
53
|
-
`ase-meta-review` renders a *reviewer's
|
|
53
|
+
`ase-meta-review` renders a *reviewer's judgment* on a concrete diff
|
|
54
54
|
before it is committed.
|
|
55
55
|
|
|
56
56
|
## OPTIONS
|
|
@@ -38,6 +38,15 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
|
38
38
|
|
|
39
39
|
1. <step id="STEP 1: Query Search Services">
|
|
40
40
|
|
|
41
|
+
<if condition="<query/> is empty">
|
|
42
|
+
Only output the following <template/> and then immediately *STOP*
|
|
43
|
+
processing the entire current skill:
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
⧉ **ASE**: ✪ skill: **ase-meta-search**, ▶ ERROR: expected a `<query>` argument
|
|
47
|
+
</template>
|
|
48
|
+
</if>
|
|
49
|
+
|
|
41
50
|
<define name="agent">
|
|
42
51
|
```text
|
|
43
52
|
Agent(
|
|
@@ -105,6 +114,15 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
|
105
114
|
Call the tool `web_search(query: "<query/>")`.
|
|
106
115
|
</expand>
|
|
107
116
|
|
|
117
|
+
If *none* of the selected backends could be invoked - because no
|
|
118
|
+
corresponding tool is available - only output the following
|
|
119
|
+
<template/> and then immediately *STOP* processing the entire current
|
|
120
|
+
skill:
|
|
121
|
+
|
|
122
|
+
<template>
|
|
123
|
+
⧉ **ASE**: ✪ skill: **ase-meta-search**, ▶ ERROR: no search backend available: **<getopt-option-services/>**
|
|
124
|
+
</template>
|
|
125
|
+
|
|
108
126
|
</step>
|
|
109
127
|
|
|
110
128
|
2. <step id="STEP 2: Consolidate Search Answers">
|
|
@@ -41,6 +41,15 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
41
41
|
|
|
42
42
|
1. <step id="STEP 1: Restate Thesis">
|
|
43
43
|
|
|
44
|
+
<if condition="<thesis/> is empty">
|
|
45
|
+
Only output the following <template/> and then immediately *STOP*
|
|
46
|
+
processing the entire current skill:
|
|
47
|
+
|
|
48
|
+
<template>
|
|
49
|
+
⧉ **ASE**: ✪ skill: **ase-meta-steelman**, ▶ ERROR: expected a `<thesis>` argument
|
|
50
|
+
</template>
|
|
51
|
+
</if>
|
|
52
|
+
|
|
44
53
|
Begin a *round* of fortification and consolidating reasoning. On
|
|
45
54
|
the first visit, set <i>1</i> (set round counter to one); on each
|
|
46
55
|
subsequent visit (via the jump back in the last step), <i/> has
|
|
@@ -125,7 +134,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
125
134
|
|
|
126
135
|
- **Argue in Good Faith**:
|
|
127
136
|
Make clear you are building the best honest case, not
|
|
128
|
-
overselling, because the goal
|
|
137
|
+
overselling, because the goal is a better
|
|
129
138
|
final decision, not a sales pitch.
|
|
130
139
|
|
|
131
140
|
- **Concede the Real Weaknesses**:
|
|
@@ -137,7 +146,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
|
137
146
|
Imagine success scenarios of the thesis, because envisioning
|
|
138
147
|
how it wins clarifies the conditions worth securing in advance.
|
|
139
148
|
|
|
140
|
-
For each Pro-Thesis or Supporting-Argument rank it on a Likert
|
|
149
|
+
For each Pro-Thesis or Supporting-Argument, rank it on a Likert
|
|
141
150
|
scale of 0 (weak) to 10 (strong). Repeat the process of finding
|
|
142
151
|
more Pro-Theses or Supporting-Arguments until you EITHER have found
|
|
143
152
|
at least <count/> Pro-Theses or Supporting-Arguments with at least a
|
|
@@ -37,6 +37,15 @@ addressing surface-level symptoms.
|
|
|
37
37
|
|
|
38
38
|
1. <step id="STEP 1: Restate Problem">
|
|
39
39
|
|
|
40
|
+
<if condition="<getopt-arguments/> is empty">
|
|
41
|
+
Only output the following <template/> and then immediately *STOP*
|
|
42
|
+
processing the entire current skill:
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
⧉ **ASE**: ✪ skill: **ase-meta-why**, ▶ ERROR: expected a `<fact>` argument
|
|
46
|
+
</template>
|
|
47
|
+
</if>
|
|
48
|
+
|
|
40
49
|
State the problem statement.
|
|
41
50
|
|
|
42
51
|
<template>
|
|
@@ -67,16 +76,16 @@ addressing surface-level symptoms.
|
|
|
67
76
|
<while condition="<n/> is less than or equal to <depth/>">
|
|
68
77
|
|
|
69
78
|
Ask <question/> and document the answer in <answer/> with the following template.
|
|
70
|
-
Don't stop at symptoms
|
|
79
|
+
Don't stop at symptoms; keep digging for systemic issues.
|
|
71
80
|
Consider technical, domain-specific, process-related, or organizational causes.
|
|
72
81
|
|
|
73
82
|
<template>
|
|
74
83
|
<ase-tpl-bullet-secondary/> **WHY <n/>**: <answer/>
|
|
75
84
|
</template>
|
|
76
85
|
|
|
77
|
-
Then, for the next iteration set <question/> now to be the last <answer/>.
|
|
78
|
-
The magic is NOT in exactly <depth/> "
|
|
79
|
-
the iteration when you already reached the root-cause.
|
|
86
|
+
Then, for the next iteration, set <question/> now to be the last <answer/>.
|
|
87
|
+
The magic is NOT in exactly <depth/> "Whys" -- you can <break/>
|
|
88
|
+
the iteration when you have already reached the root-cause.
|
|
80
89
|
Finally, set <n/> to <n/> + 1 (increment iteration counter).
|
|
81
90
|
|
|
82
91
|
</while>
|
|
@@ -108,7 +117,7 @@ addressing surface-level symptoms.
|
|
|
108
117
|
*non-overlapping* candidate sub-causes, each documented in <answer-k/>.
|
|
109
118
|
Let <count/> be the number of candidates you actually surfaced
|
|
110
119
|
(at least one, at most <width/>).
|
|
111
|
-
Don't stop at symptoms
|
|
120
|
+
Don't stop at symptoms; keep digging for systemic issues.
|
|
112
121
|
Explore *different* candidates -- technical, domain-specific,
|
|
113
122
|
process-related, or organizational causes -- and avoid restating
|
|
114
123
|
the same cause in different words.
|
|
@@ -136,7 +145,7 @@ addressing surface-level symptoms.
|
|
|
136
145
|
|
|
137
146
|
Record the remaining candidates as <fallbacks/> for level <n/>.
|
|
138
147
|
Then, for the next iteration, set <question/> to the chosen candidate.
|
|
139
|
-
You can <break/> the iteration when the chosen candidate already
|
|
148
|
+
You can <break/> the iteration when the chosen candidate has already
|
|
140
149
|
reached its root-cause.
|
|
141
150
|
Finally, set <n/> to <n/> + 1 (increment iteration counter).
|
|
142
151
|
|
|
@@ -44,9 +44,9 @@ source code changes.
|
|
|
44
44
|
candidate sub-causes, descends into the single most significant one
|
|
45
45
|
(justifying the choice), and retains the rest as *fallbacks*. During
|
|
46
46
|
backward validation a mis-rooted choice is *backtracked* into a fallback
|
|
47
|
-
and re-descended, so the widening actively improves which root
|
|
47
|
+
and re-descended, so the widening actively improves which root cause is
|
|
48
48
|
reached rather than merely listing alternatives. The result is still a
|
|
49
|
-
single, but better-justified, root
|
|
49
|
+
single, but better-justified, root cause. A non-numeric or non-positive
|
|
50
50
|
value falls back to the default.
|
|
51
51
|
|
|
52
52
|
## ARGUMENTS
|
|
@@ -71,7 +71,7 @@ Drill down deeper with a tunable chain length of seven:
|
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
Weigh several candidate sub-causes per level (with backtracking) to avoid
|
|
74
|
-
committing early to the wrong root
|
|
74
|
+
committing early to the wrong root cause:
|
|
75
75
|
|
|
76
76
|
```text
|
|
77
77
|
❯ /ase-meta-why -w 3 the release was delayed by two weeks
|