@rse/ase 0.9.43 → 0.9.45

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.
Files changed (86) hide show
  1. package/dst/ase-artifact.js +28 -24
  2. package/dst/ase-config.js +27 -36
  3. package/dst/ase-diagram.js +15 -35
  4. package/dst/ase-getopt.js +10 -15
  5. package/dst/ase-hook.js +29 -27
  6. package/dst/ase-kv.js +24 -29
  7. package/dst/ase-log.js +10 -3
  8. package/dst/ase-markdown.js +135 -102
  9. package/dst/ase-mcp.js +3 -10
  10. package/dst/ase-meta.js +6 -4
  11. package/dst/ase-persona.js +7 -11
  12. package/dst/ase-service.js +28 -28
  13. package/dst/ase-setup.js +65 -28
  14. package/dst/ase-skills.js +2 -2
  15. package/dst/ase-statusline.js +26 -34
  16. package/dst/ase-task.js +60 -63
  17. package/dst/ase-version.js +2 -1
  18. package/dst/ase.js +7 -11
  19. package/package.json +12 -10
  20. package/plugin/.claude-plugin/plugin.json +1 -1
  21. package/plugin/.codex-plugin/plugin.json +1 -1
  22. package/plugin/.github/plugin/plugin.json +2 -2
  23. package/plugin/agents/ase-code-lint.md +15 -4
  24. package/plugin/agents/ase-docs-proofread.md +9 -1
  25. package/plugin/agents/ase-meta-chat.md +19 -13
  26. package/plugin/agents/ase-meta-diagram.md +1 -1
  27. package/plugin/agents/ase-meta-search.md +1 -2
  28. package/plugin/etc/eslint.mjs +0 -2
  29. package/plugin/meta/ase-common-task.md +145 -0
  30. package/plugin/meta/ase-constitution.md +5 -2
  31. package/plugin/meta/ase-control.md +1 -1
  32. package/plugin/meta/ase-dialog.md +7 -7
  33. package/plugin/meta/ase-format-arch.md +12 -12
  34. package/plugin/meta/ase-format-spec.md +23 -23
  35. package/plugin/meta/ase-format-task.md +9 -11
  36. package/plugin/meta/ase-getopt.md +1 -1
  37. package/plugin/meta/ase-persona.md +3 -3
  38. package/plugin/meta/ase-skill.md +3 -3
  39. package/plugin/meta/ase-tenets.md +4 -4
  40. package/plugin/package.json +8 -8
  41. package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
  42. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  43. package/plugin/skills/ase-arch-discover/SKILL.md +2 -2
  44. package/plugin/skills/ase-arch-discover/help.md +3 -2
  45. package/plugin/skills/ase-code-analyze/SKILL.md +0 -1
  46. package/plugin/skills/ase-code-craft/SKILL.md +11 -11
  47. package/plugin/skills/ase-code-lint/SKILL.md +31 -13
  48. package/plugin/skills/ase-code-refactor/SKILL.md +13 -13
  49. package/plugin/skills/ase-code-refactor/help.md +1 -1
  50. package/plugin/skills/ase-code-resolve/SKILL.md +10 -10
  51. package/plugin/skills/ase-code-resolve/help.md +1 -1
  52. package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
  53. package/plugin/skills/ase-docs-distill/help.md +6 -4
  54. package/plugin/skills/ase-docs-proofread/SKILL.md +23 -8
  55. package/plugin/skills/ase-meta-brainstorm/help.md +1 -1
  56. package/plugin/skills/ase-meta-changelog/SKILL.md +9 -5
  57. package/plugin/skills/ase-meta-commit/SKILL.md +8 -6
  58. package/plugin/skills/ase-meta-compat/SKILL.md +14 -5
  59. package/plugin/skills/ase-meta-diaboli/SKILL.md +6 -6
  60. package/plugin/skills/ase-meta-diff/SKILL.md +10 -10
  61. package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
  62. package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
  63. package/plugin/skills/ase-meta-quorum/SKILL.md +43 -12
  64. package/plugin/skills/ase-meta-search/SKILL.md +1 -1
  65. package/plugin/skills/ase-meta-search/help.md +4 -2
  66. package/plugin/skills/ase-meta-steelman/SKILL.md +5 -5
  67. package/plugin/skills/ase-meta-steelman/help.md +5 -3
  68. package/plugin/skills/ase-meta-why/SKILL.md +2 -2
  69. package/plugin/skills/ase-meta-why/help.md +3 -1
  70. package/plugin/skills/ase-sync-export/SKILL.md +20 -17
  71. package/plugin/skills/ase-sync-import/SKILL.md +20 -16
  72. package/plugin/skills/ase-sync-import/help.md +2 -2
  73. package/plugin/skills/ase-sync-reconcile/SKILL.md +10 -10
  74. package/plugin/skills/ase-sync-reconcile/help.md +1 -1
  75. package/plugin/skills/ase-task-condense/SKILL.md +39 -85
  76. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  77. package/plugin/skills/ase-task-edit/SKILL.md +43 -51
  78. package/plugin/skills/ase-task-grill/SKILL.md +11 -13
  79. package/plugin/skills/ase-task-id/SKILL.md +7 -3
  80. package/plugin/skills/ase-task-implement/SKILL.md +18 -111
  81. package/plugin/skills/ase-task-implement/help.md +2 -2
  82. package/plugin/skills/ase-task-list/SKILL.md +3 -0
  83. package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
  84. package/plugin/skills/ase-task-reboot/SKILL.md +39 -71
  85. package/plugin/skills/ase-task-reboot/help.md +2 -1
  86. package/plugin/skills/ase-task-view/SKILL.md +7 -7
@@ -124,7 +124,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
124
124
  8. Ask the user for clarification if the goal of this resolution is
125
125
  too unclear.
126
126
 
127
- 9. Do not output anything in this step, unless you asked the user.
127
+ 9. Do not output anything else in this step, unless you asked the user.
128
128
 
129
129
  10. Investigate and *figure out details* related to this problem.
130
130
  Report those details with the following <template/>:
@@ -193,15 +193,15 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
193
193
 
194
194
  You *MUST* perform the following sub-steps *internally* and *without
195
195
  any output* until and including the recommendation decision. Only
196
- sub-steps 4-6 below are allowed to produce output, and only if
196
+ sub-steps 4-7 below are allowed to produce output; sub-steps 4-6 only if
197
197
  <getopt-option-auto/> is equal `false` *and* <ase-project-boxing/>
198
198
  is *not* equal `black`.
199
199
 
200
200
  If <getopt-option-auto/> is equal `true` or <ase-project-boxing/> is
201
- equal `black`, *skip* the reporting sub-steps 4-6 entirely (perform
202
- no output at all) to speed up processing.
201
+ equal `black`, *skip* the reporting sub-steps 4-6 entirely (they
202
+ perform no output at all) to speed up processing.
203
203
 
204
- 1. *Propose* corresponding *resolution approach*, including optionally,
204
+ 1. *Propose* a corresponding *resolution approach*, optionally including
205
205
  some *alternative* resolution approaches. Do *not* output anything
206
206
  in this sub-step.
207
207
 
@@ -285,18 +285,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
285
285
  problem, the chosen resolution approach, a preview of the *unified
286
286
  diff* of the necessary code changes, and a possible way to verify
287
287
  the success of the resolution, by using the <format/> defined for a
288
- task plan. Store the resulting task plan in <content/>.
288
+ task plan. Store the resulting task plan in <task-content/>.
289
289
 
290
290
  If a `CHANGELOG.md` file exists in the project (or in any
291
291
  affected sub-package), the plan *MUST* include, as part of its
292
- `##CHANGES` section, an explicit bullet point describing
292
+ `## CHANGES` section, an explicit bullet point describing
293
293
  the addition of a corresponding new entry to that `CHANGELOG.md`
294
294
  file, aligned with its existing style and conventions.
295
295
 
296
296
  <if condition="<getopt-option-dry/> is equal `true`">
297
297
  You *MUST* completely omit the `## VERIFICATION` section
298
298
  (including its heading and all of its bullet points) from
299
- <content/>.
299
+ <task-content/>.
300
300
  </if>
301
301
 
302
302
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
@@ -307,10 +307,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
307
307
  <timestamp-created/> and <timestamp-modified/> information. Then
308
308
  insert the current <ase-task-id/>, <timestamp-created/>, and
309
309
  <timestamp-modified/> information and calculate the number of
310
- words <words/> of <content/>.
310
+ words <words/> of <task-content/>.
311
311
 
312
312
  3. You then *MUST* *save* the resulting plan content with the
313
- `ase_task_save(id: "<ase-task-id/>", text: "<content/>")`.
313
+ `ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`.
314
314
 
315
315
  4. If <problem-id/> is set (i.e. the <problem/> was retrieved from
316
316
  `ase_kv_get` in STEP 1.1 via key `ase-issue-<problem-id/>`),
@@ -61,7 +61,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
61
61
  skill. For all other head tokens, the *entire* list is forwarded
62
62
  to `ase-task-edit`, which consumes its head itself. This lets an
63
63
  entire pipeline be pre-scripted in one shot. Recognized tokens at
64
- this skill: `none` (default, hand-off to `ase-task-edit`
64
+ this skill: `none` (default, hand off to `ase-task-edit`
65
65
  interactively), `DONE` (stop), `EDIT` (hand off to
66
66
  `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
67
67
  or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
@@ -17,7 +17,7 @@ effort: high
17
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
18
18
 
19
19
  <skill name="ase-docs-distill">
20
- Distill Key Points
20
+ Distill Key Points
21
21
  </skill>
22
22
 
23
23
  <expand name="getopt"
@@ -27,11 +27,11 @@ effort: high
27
27
  </expand>
28
28
 
29
29
  <objective>
30
- *Distill* the content `<getopt-arguments/>` into a *flat*,
31
- *importance-ranked* list of its *key points* - each point an
32
- *atomic* claim carrying a *0-10 salience rank*, a *one-line
33
- rationale*, and a *verbatim, line-cited evidence* snippet - keeping
34
- at most `<getopt-option-top/>` points.
30
+ *Distill* the content `<getopt-arguments/>` into a *flat*,
31
+ *importance-ranked* list of its *key points* - each point an
32
+ *atomic* claim carrying a *0-10 salience rank*, a *one-line
33
+ rationale*, and a *verbatim, line-cited evidence* snippet - keeping
34
+ at most `<getopt-option-top/>` points.
35
35
  </objective>
36
36
 
37
37
  Procedure
@@ -37,14 +37,16 @@ document has fewer salient points than *N*, the skill emits only the
37
37
  points it found and *never pads* the list with filler; a `0`, negative, or
38
38
  non-numeric value falls back to the default *5*.
39
39
 
40
- ## ARGUMENTS
40
+ ## OPTIONS
41
41
 
42
- `--top`, `-t` *N*:
42
+ `--top`|`-t` *N*:
43
43
  Bound the ranked list to at most *N* key points (default *5*). The
44
44
  bound is a *cap*, never a *quota* - fewer points are emitted when the
45
45
  document does not contain *N* salient ones, and an invalid or
46
46
  non-positive *N* reverts to the default.
47
47
 
48
+ ## ARGUMENTS
49
+
48
50
  *document-reference*:
49
51
  The document to distill - either a *path* to a readable file or the
50
52
  *text* itself pasted inline. If it resolves to a readable file the
@@ -58,10 +60,10 @@ Distill the key points of a document file:
58
60
  ❯ /ase-docs-distill doc/architecture.md
59
61
  ```
60
62
 
61
- Distill only the top 5 key points:
63
+ Distill only the top 3 key points:
62
64
 
63
65
  ```text
64
- ❯ /ase-docs-distill --top 5 doc/architecture.md
66
+ ❯ /ase-docs-distill --top 3 doc/architecture.md
65
67
  ```
66
68
 
67
69
  Distill a pasted block of text:
@@ -88,8 +88,8 @@ Analyze documents for spelling, punctuation, or grammar errors
88
88
  `file` and then numerically by `line`, and set <problems/> to that
89
89
  list.
90
90
 
91
- You *MUST* *NOT* output anything at all in this step 1 beyond the
92
- `Glob` and `Agent` tool invocations.
91
+ You *MUST* *NOT* output anything at all in this STEP 1 beyond the
92
+ above hint template and the `Glob` and `Agent` tool invocations.
93
93
  </step>
94
94
 
95
95
  2. <step id="STEP 2: Summary">
@@ -135,11 +135,14 @@ Analyze documents for spelling, punctuation, or grammar errors
135
135
  still perform substep 3 first. Never leave this marker active
136
136
  for a later, unrelated `Edit`.
137
137
 
138
- 2. Iterate over all problems:
138
+ 2. Set <total/> to the number of problems in <problems/> and
139
+ <index/> to `0`. Then iterate over all problems:
139
140
 
140
141
  <for items="<problems/>">
141
142
 
142
- 1. Set <type/> to the `type` field of <item/>.
143
+ 1. Increment <index/> by one (the 1-based position of the
144
+ current <item/> within <problems/>).
145
+ Set <type/> to the `type` field of <item/>.
143
146
  Set <file/> to the `file` field of <item/>.
144
147
  Set <line/> to the `line` field of <item/>.
145
148
  Set <description/> to the `description` field of <item/>.
@@ -148,15 +151,27 @@ Analyze documents for spelling, punctuation, or grammar errors
148
151
  Set <new-text/> to the `new_text` field of <item/>.
149
152
  Set <context-after/> to the `context_after` field of <item/>.
150
153
 
154
+ Then *normalize* the change to its *minimal* form, so
155
+ that the proposed diff shows exactly the lines the later
156
+ `Edit` will actually change: while the *first* line of
157
+ <old-text/> is identical to the *first* line of
158
+ <new-text/>, *move* that line from both to the end of
159
+ <context-before/> and increment <line/> by one; likewise,
160
+ while the *last* line of <old-text/> is identical to the
161
+ *last* line of <new-text/>, *move* that line from both to
162
+ the front of <context-after/>. Finally, *trim*
163
+ <context-before/> to its *last* two lines and
164
+ <context-after/> to its *first* two lines.
165
+
151
166
  2. Report the problem with the following <template/>:
152
167
 
153
168
  <template>
154
- <ase-tpl-bullet-signal/> **<type/> PROBLEM**: `<file/>`:<line/>:
169
+ <ase-tpl-bullet-signal/> [<index/>/<total/>]: **<type/> PROBLEM**: `<file/>`:<line/>:
155
170
 
156
171
  <description/>
157
172
  </template>
158
173
 
159
- 3. <if condition="<getopt-option-auto/> is not 'true' and <ase-project-boxing/> is equal `grey`">
174
+ 3. <if condition="<getopt-option-auto/> is not equal `true` and <ase-project-boxing/> is equal `grey`">
160
175
 
161
176
  The project source artifacts are classified as a *grey box*, so
162
177
  the user does *not* want the full artifact internals surfaced:
@@ -175,7 +190,7 @@ Analyze documents for spelling, punctuation, or grammar errors
175
190
  </template>
176
191
 
177
192
  </if>
178
- <elseif condition="<getopt-option-auto/> is not 'true'">
193
+ <elseif condition="<getopt-option-auto/> is not equal `true`">
179
194
 
180
195
  Determine the hunk *body* as an ordered list of lines, each
181
196
  carrying a one-character prefix (` ` for context, `-` for
@@ -231,7 +246,7 @@ Analyze documents for spelling, punctuation, or grammar errors
231
246
 
232
247
  </elseif>
233
248
 
234
- 4. <if condition="<getopt-option-auto/> is not 'true'">
249
+ 4. <if condition="<getopt-option-auto/> is not equal `true`">
235
250
 
236
251
  In the following, you *MUST* *NOT* use your built-in
237
252
  <user-dialog-tool/> tool! Instead, you *MUST* just show a
@@ -84,4 +84,4 @@ and a tighter shortlist:
84
84
 
85
85
  ## SEE ALSO
86
86
 
87
- [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-diaboli`](../ase-meta-diaboli/help.md)
87
+ [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-diaboli`](../ase-meta-diaboli/help.md).
@@ -2,7 +2,7 @@
2
2
  name: ase-meta-changelog
3
3
  argument-hint: "[--help|-h]"
4
4
  description: >
5
- Update changes entries in CHANGELOG.md files
5
+ Update ChangeLog entries in CHANGELOG.md files
6
6
  user-invocable: true
7
7
  disable-model-invocation: false
8
8
  effort: high
@@ -10,6 +10,7 @@ allowed-tools:
10
10
  - "Bash(git log *)"
11
11
  - "Bash(git diff *)"
12
12
  - "Bash(git show *)"
13
+ - "Bash(git tag --list *)"
13
14
  - "Write"
14
15
  - "Edit"
15
16
  ---
@@ -97,7 +98,7 @@ Processing
97
98
  <ase-tpl-bullet-normal/> **DETERMINE ARTIFACT CHANGES:**
98
99
  </template>
99
100
 
100
- To update to entries of the most recent *ChangeLog* section, consult
101
+ To update the entries of the most recent *ChangeLog* section, consult
101
102
  the Git *commits* plus the currently already staged changes in the Git
102
103
  *index*, but *ignore* the Git *stash* and still unstaged changes.
103
104
 
@@ -107,7 +108,10 @@ Processing
107
108
  corresponding Git tag already exists with the command `git tag --list
108
109
  N.M.K`. If this command produces *no* output, the first section is
109
110
  still in-progress/untagged, so use the `N.M.K` from the *second*
110
- level-2 header as the baseline tag instead. If this command *does*
111
+ level-2 header as the baseline tag instead. If *no* second level-2
112
+ header exists (very first, still untagged release), skip the baseline
113
+ tag and check *all* Git commits with the command `git log HEAD
114
+ --numstat --pretty=format:'%h: %s'` instead. If this command *does*
111
115
  produce output, the first section is already released/tagged, so use
112
116
  the `N.M.K` from the *first* level-2 header as the baseline tag. Then
113
117
  check all Git commits between `HEAD` and this baseline tag with the
@@ -144,8 +148,8 @@ Processing
144
148
  ... ])` tool of the `ase` MCP server *once*, passing the `kind`
145
149
  tokens (`spec`, `arch`, `code`, `docs`, `infr`, `othr`), and read
146
150
  the returned `artifacts` array of `{ kind, files }` objects to match
147
- each changed file to its kind. Map the matched lower-cased kind back
148
- to its upper-cased <artifact-kind/> tag, and comma-separate multiple
151
+ each changed file to its kind. Use the matched lower-cased kind
152
+ directly as its <artifact-kind/> tag, and comma-separate multiple
149
153
  tags when more than one artifact class applies.
150
154
 
151
155
  If a <summary/> is too short or especially is not comprehensible
@@ -44,12 +44,14 @@ currently staged Git changes.
44
44
 
45
45
  `<type/>: <summary/>`
46
46
 
47
- The known <type/>s and their usual corresponding kind of change are:
48
-
49
- - `FEATURE`: new functionality or configuration
50
- - `IMPROVEMENT`: improved functionality or configuration
51
- - `BUGFIX`: corrected functionality or configuration
52
- - `UPDATE`: updated functionality or configuration
47
+ The known <type/>s (kept deliberately in sync with the intent groups
48
+ of the `ase-meta-diff` and `ase-meta-changelog` skills) and their
49
+ usual corresponding kind of change are:
50
+
51
+ - `FEATURE`: new functionality or configuration
52
+ - `IMPROVEMENT`: improved functionality or configuration
53
+ - `BUGFIX`: corrected functionality or configuration
54
+ - `UPDATE`: updated functionality or configuration
53
55
  - `CLEANUP`: cleaned up functionality or configuration
54
56
  - `REFACTOR`: refactored functionality or configuration
55
57
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-compat
3
+ argument-hint: "[--help|-h]"
3
4
  description: >
4
5
  Self-test the LLM's ability to execute ASE's core interpreter
5
6
  machinery (control flow, XML placeholders, regex matching,
@@ -13,6 +14,14 @@ disable-model-invocation: true
13
14
 
14
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
16
 
17
+ If `$1` (the first token of the skill arguments) is equal to `-h` or
18
+ `--help`, you *MUST* once output the following output <template/> and
19
+ then *IMMEDIATELY* *STOP* the further skill processing:
20
+
21
+ <template>
22
+ @${CLAUDE_SKILL_DIR}/help.md
23
+ </template>
24
+
16
25
  Self-Test ASE Compatibility
17
26
  ===========================
18
27
 
@@ -31,8 +40,8 @@ value until STEP 6. Do not fabricate passes: a probe whose actual result
31
40
  differs from its expected result *MUST* be recorded as a *fail*.
32
41
 
33
42
  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.
43
+ skill format; in particular, it does not include the usual meta skill
44
+ information.
36
45
 
37
46
  Procedure
38
47
  ---------
@@ -98,7 +107,7 @@ Procedure
98
107
  Record <s/> as actual result for `control-flow/while-sum`.
99
108
 
100
109
  3. *for-order*: Set <s></s>, then evaluate
101
- `<for items="x y z"><s><s/>-<item/></for>`.
110
+ `<for items="x y z"><s><s/>-<item/></s></for>`.
102
111
  Record <s/> as actual result for `control-flow/for-order`.
103
112
 
104
113
  4. *while-break*: Set <i>1</i> and <hit></hit>, then evaluate
@@ -110,7 +119,7 @@ Procedure
110
119
 
111
120
  5. *step-skip*: A `<step condition="[...]">[...]</step>` either expands
112
121
  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?
122
+ so what does `<step condition="42 is greater than 7">X</step>` expand into?
114
123
  Record the result of this construct for `control-flow/step-skip`.
115
124
 
116
125
  6. *expand-subst*: With `<define name="foo">[<arg1/>:<content/>]</define>`,
@@ -146,7 +155,7 @@ Procedure
146
155
  (the `\s` alternative)?
147
156
  Record `yes` or `no` as actual result for `regex/whitespace`.
148
157
 
149
- 7. *complex*: Does `--level=(low|high)...` match
158
+ 7. *complex*: Does `--level=(low|high)...` match
150
159
  `^--([A-Za-z][A-Za-z0-9-]*)(?:\|-([A-Za-z]))?(?:=(\((.*)\)(\.\.\.)?|.*))?$`?
151
160
  Record `yes` or `no` as actual result for `regex/complex`.
152
161
 
@@ -2,7 +2,7 @@
2
2
  name: ase-meta-diaboli
3
3
  argument-hint: "[--help|-h] [--count|-c <count>] <thesis>"
4
4
  description: >
5
- Challenge a thesis by playing "Devils Advocate" (Latin: "Advocatus
5
+ Challenge a thesis by playing "Devil's Advocate" (Latin: "Advocatus
6
6
  Diaboli"). Use when the user wants a thesis or statement
7
7
  relentlessly challenged or criticised.
8
8
  user-invocable: true
@@ -15,7 +15,7 @@ effort: xhigh
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
16
16
 
17
17
  <skill name="ase-meta-diaboli">
18
- Play "Devil's Advocate"
18
+ Play "Devil's Advocate"
19
19
  </skill>
20
20
 
21
21
  <expand name="getopt"
@@ -25,8 +25,8 @@ effort: xhigh
25
25
  </expand>
26
26
 
27
27
  <objective>
28
- Play "Devils Advocate" (Latin: "Advocatus Diaboli") by relentlessly
29
- challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
28
+ Play "Devil's Advocate" (Latin: "Advocatus Diaboli") by relentlessly
29
+ challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
30
30
  </objective>
31
31
 
32
32
  Determine the minimum number of *anti-theses* to surface: set <count/>
@@ -103,8 +103,8 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
103
103
 
104
104
  - **Argue in Good Faith**:
105
105
  Make clear you're just stress-testing the thesis, not
106
- obstructing, because the goal of the objective is a better final
107
- decision, not winning.
106
+ obstructing, because the goal is a better final decision, not
107
+ winning.
108
108
 
109
109
  - **Know When to Yield**:
110
110
  Conceding when the argument holds is what makes the challenge
@@ -72,16 +72,16 @@ Procedure
72
72
  </template>
73
73
  </if>
74
74
 
75
- 2. Analyze the <diff/> and <stat/> and synthesize a *concise* narrative of
76
- WHAT changed and WHY, *grouped by intent* rather than by file.
77
- Honor the following intents:
78
-
79
- - `FEATURE`: new functionality or configuration
80
- - `IMPROVEMENT`: improved functionality or configuration
81
- - `BUGFIX`: corrected functionality or configuration
82
- - `UPDATE`: updated functionality or configuration
83
- - `CLEANUP`: cleaned up functionality or configuration
84
- - `REFACTOR`: refactored functionality or configuration
75
+ 2. Analyze the <diff/> and <stat/> and synthesize a *concise* narrative of
76
+ WHAT changed and WHY, *grouped by intent* rather than by file.
77
+ Honor the following intents:
78
+
79
+ - `FEATURE`: new functionality or configuration
80
+ - `IMPROVEMENT`: improved functionality or configuration
81
+ - `BUGFIX`: corrected functionality or configuration
82
+ - `UPDATE`: updated functionality or configuration
83
+ - `CLEANUP`: cleaned up functionality or configuration
84
+ - `REFACTOR`: refactored functionality or configuration
85
85
 
86
86
  3. <if condition="<diff/> is NOT empty">
87
87
  1. First, output the following header <template/>:
@@ -81,19 +81,16 @@ multi-*criteria* decision matrix.
81
81
  - For each alternative <alternative-K/> (K=1-N), decide whether
82
82
  it is a genuine member of <class-of-alternatives/>. If any
83
83
  <alternative-K/> is *not* a member (i.e. the alternatives are not
84
- mutually comparable within a single class), collect the subset
85
- of non-member alternatives into the space-separated list
86
- <non-members/> (the <alternative-K/> for which the membership
87
- decision was negative), output the following <template/> and
88
- *stop the entire flow* immediately without executing any further
89
- steps:
84
+ mutually comparable within a single class), output the following
85
+ <template/> (repeating the `⚑` line once per non-member
86
+ alternative, i.e. once for each <alternative-K/> for which the
87
+ membership decision was negative) and *stop the entire flow*
88
+ immediately without executing any further steps:
90
89
 
91
90
  <template>
92
91
  <ase-tpl-bullet-signal/> **ERROR: INCOMPARABLE ALTERNATIVES**: *<class-of-alternatives/>*
93
92
 
94
- <for items="<non-members/>">
95
- ⚑ **<item/>** (*member of a different class*)
96
- </for>
93
+ **<alternative-K/>** (*member of a different class*)
97
94
  </template>
98
95
 
99
96
  - Output the determined, individual alternatives as a Markdown
@@ -7,7 +7,7 @@ description: >
7
7
  the concise, factual, and accurate "engineer" (default),
8
8
  the layered, pyramid-structured "journalist",
9
9
  the brief, factual, and abbreviating "telegrapher",
10
- the terse, rough, and stuttering "caveman".
10
+ or the terse, rough, and stuttering "caveman".
11
11
  Use when user says "persona <persona>" or "be <persona>".
12
12
  user-invocable: true
13
13
  disable-model-invocation: false
@@ -2,13 +2,17 @@
2
2
  name: ase-meta-quorum
3
3
  argument-hint: "[--help|-h] [--models|-m <model>[,...]] <question>"
4
4
  description: >
5
- Query Multiple AIs for Quorum Answer.
5
+ Query multiple foreign AIs in parallel and synthesize a consensus
6
+ ("quorum") answer with a consensus rating. Use when the user wants
7
+ a quorum, a consensus answer, or the opinions of multiple AIs on a
8
+ question.
6
9
  user-invocable: true
7
10
  disable-model-invocation: false
8
11
  effort: high
9
12
  allowed-tools:
10
13
  - "Agent"
11
14
  - "TaskCreate"
15
+ - "TaskUpdate"
12
16
  ---
13
17
 
14
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -21,7 +25,7 @@ Query Multiple AIs for Quorum Answer
21
25
 
22
26
  <expand name="getopt"
23
27
  arg1="ase-meta-quorum"
24
- arg2="--models|-m=(all|chatgpt|gemini|deepseek|grok|glm|qwen)...">
28
+ arg2="--models|-m=(all|chatgpt|gemini|deepseek|grok|glm|qwen|claude|codex|copilot)...">
25
29
  $ARGUMENTS
26
30
  </expand>
27
31
 
@@ -38,10 +42,10 @@ by querying *multiple* AIs for an *optimal consensus*.
38
42
 
39
43
  <template>
40
44
  <getopt-arguments/>.
41
- Please respond with facts and very concise and brief only,
45
+ Please respond very concisely and briefly, with facts only,
42
46
  usually with just 1 to 7 corresponding bullet points and with short sentences.
43
47
  Optionally, mention potential cruxes which should be noticed.
44
- Beside bullet points, do not provide any additional explanations.
48
+ Besides bullet points, do not provide any additional explanations.
45
49
  Emphasize keywords or cruxes in your response with Markdown formatting.
46
50
  Format code parts with Markdown formatting.
47
51
  </template>
@@ -65,9 +69,11 @@ by querying *multiple* AIs for an *optimal consensus*.
65
69
  as a comma-separated list of model tokens. The getopt parser
66
70
  validates only the *first* token, so you *MUST* validate each
67
71
  remaining token yourself against the allowed set `all`, `chatgpt`,
68
- `gemini`, `deepseek`, `grok`, `glm`, `qwen`. If any token is *not*
69
- in this set, only output the following <template/> and then
70
- immediately *STOP* processing the entire current skill:
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:
71
77
 
72
78
  <template>
73
79
  ⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: invalid `--models` token: **<token/>**
@@ -75,7 +81,10 @@ by querying *multiple* AIs for an *optimal consensus*.
75
81
 
76
82
  The default is the single token `all`. If <getopt-option-models/>
77
83
  contains the token `all`, you *MUST* treat it as the full list
78
- `chatgpt,gemini,deepseek,grok,glm,qwen` (all models). Anthropic
84
+ `chatgpt,gemini,deepseek,grok,glm,qwen` (all API-based models). The
85
+ harness-based models `claude`, `codex`, and `copilot` are *never*
86
+ part of `all` and are queried only when their token is given
87
+ *explicitly* (in addition to `all`, if wished). Anthropic
79
88
  Claude (yourself) is *always* included, independent of this option.
80
89
 
81
90
  <define name="agent">
@@ -115,6 +124,15 @@ by querying *multiple* AIs for an *optimal consensus*.
115
124
  <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `qwen`">
116
125
  <expand name="agent" arg1="Alibaba Qwen" arg2="qwen"></expand>
117
126
  </if>
127
+ <if condition="<getopt-option-models/> contains `claude`">
128
+ <expand name="agent" arg1="Anthropic Claude (harness)" arg2="claude"></expand>
129
+ </if>
130
+ <if condition="<getopt-option-models/> contains `codex`">
131
+ <expand name="agent" arg1="OpenAI Codex" arg2="codex"></expand>
132
+ </if>
133
+ <if condition="<getopt-option-models/> contains `copilot`">
134
+ <expand name="agent" arg1="GitHub Copilot" arg2="copilot"></expand>
135
+ </if>
118
136
 
119
137
  You *MUST* *NOT* output anything in this step.
120
138
 
@@ -174,10 +192,6 @@ by querying *multiple* AIs for an *optimal consensus*.
174
192
 
175
193
  **CONSENSUS RATE**: **<c/>/<n/>** <disagreement/>
176
194
 
177
- When a quorum was *not* possible (see STEP 4), render this line
178
- instead as just `**CONSENSUS RATE**: *n/a* <disagreement/>` (omitting
179
- the `<c/>/<n/>` fraction), as a single AI cannot form a consensus.
180
-
181
195
  &#x25CB; **Anthropic Claude**:
182
196
  - [...]
183
197
  - [...]
@@ -205,8 +219,25 @@ by querying *multiple* AIs for an *optimal consensus*.
205
219
  &#x25CB; **Alibaba Qwen**:
206
220
  - [...]
207
221
  - [...]
222
+
223
+ &#x25CB; **Anthropic Claude (harness)**:
224
+ - [...]
225
+ - [...]
226
+
227
+ &#x25CB; **OpenAI Codex**:
228
+ - [...]
229
+ - [...]
230
+
231
+ &#x25CB; **GitHub Copilot**:
232
+ - [...]
233
+ - [...]
208
234
  </template>
209
235
 
236
+ In this output, when a quorum was *not* possible (see STEP 4),
237
+ render the consensus rate line instead as just `**CONSENSUS RATE**:
238
+ *n/a* <disagreement/>` (omitting the `<c/>/<n/>` fraction), as a
239
+ single AI cannot form a consensus.
240
+
210
241
  In this output, remove the sections of those AIs which were not
211
242
  queried (excluded via `--models`/`-m`) or were not available.
212
243
  You *MUST* *NOT* output any further explanations yourself.
@@ -109,7 +109,7 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
109
109
 
110
110
  2. <step id="STEP 2: Consolidate Search Answers">
111
111
 
112
- Consolidate all responses from the `ase:ase-meta-search` agents
112
+ Consolidate all responses from the `ase:ase-meta-search` agent
113
113
  calls above into a single response and output it without giving any
114
114
  further explanations.
115
115
 
@@ -22,13 +22,15 @@ information.
22
22
  This skill should be preferred over directly invoking Perplexity,
23
23
  Brave, or `WebSearch` individually.
24
24
 
25
- ## ARGUMENTS
25
+ ## OPTIONS
26
26
 
27
27
  `--services`|`-s`=(`all`|`perplexity`|`brave`|`exa`|`websearch`)...:
28
28
  The comma-separated list of search backends to query. The default
29
- `all` queries every available backend (the original behavior);
29
+ `all` queries every available backend;
30
30
  otherwise only the listed backends are queried.
31
31
 
32
+ ## ARGUMENTS
33
+
32
34
  *query*:
33
35
  The search query to dispatch to the search services.
34
36
 
@@ -15,7 +15,7 @@ effort: xhigh
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
16
16
 
17
17
  <skill name="ase-meta-steelman">
18
- Build the "Steelman" Argument
18
+ Build the "Steelman" Argument
19
19
  </skill>
20
20
 
21
21
  <expand name="getopt"
@@ -25,8 +25,8 @@ effort: xhigh
25
25
  </expand>
26
26
 
27
27
  <objective>
28
- Build the "Steelman" argument by constructing the strongest
29
- possible case for the thesis: <thesis><getopt-arguments/></thesis>
28
+ Build the "Steelman" argument by constructing the strongest
29
+ possible case for the thesis: <thesis><getopt-arguments/></thesis>
30
30
  </objective>
31
31
 
32
32
  Determine the number of *rounds* to perform: set <rounds/> to
@@ -98,7 +98,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
98
98
  strongest available evidence is the one hardest to dismiss.
99
99
 
100
100
  - **Seek the Confirming Case**:
101
- Actively hunt for the supporting example, the favourable
101
+ Actively hunt for the supporting example, the favorable
102
102
  scenario, the precedent where the position succeeds, because
103
103
  one solid confirming case anchors the argument in reality.
104
104
 
@@ -130,7 +130,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
130
130
 
131
131
  - **Concede the Real Weaknesses**:
132
132
  Acknowledging where the thesis genuinely falls short is what
133
- makes the defence credible, because a Steelman who can never
133
+ makes the defense credible, because a Steelman who can never
134
134
  admit a flaw is just an apologist.
135
135
 
136
136
  - **Pre-Parade Thinking**: