@rse/ase 0.9.44 → 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 (47) hide show
  1. package/dst/ase-setup.js +50 -0
  2. package/package.json +1 -1
  3. package/plugin/.claude-plugin/plugin.json +1 -1
  4. package/plugin/.codex-plugin/plugin.json +1 -1
  5. package/plugin/.github/plugin/plugin.json +1 -1
  6. package/plugin/agents/ase-code-lint.md +11 -0
  7. package/plugin/agents/ase-docs-proofread.md +8 -0
  8. package/plugin/agents/ase-meta-chat.md +13 -7
  9. package/plugin/agents/ase-meta-search.md +0 -1
  10. package/plugin/meta/ase-common-task.md +145 -0
  11. package/plugin/meta/ase-constitution.md +4 -1
  12. package/plugin/meta/ase-dialog.md +5 -5
  13. package/plugin/meta/ase-format-arch.md +4 -4
  14. package/plugin/meta/ase-format-spec.md +23 -23
  15. package/plugin/meta/ase-format-task.md +1 -1
  16. package/plugin/meta/ase-persona.md +3 -3
  17. package/plugin/meta/ase-skill.md +2 -2
  18. package/plugin/meta/ase-tenets.md +4 -4
  19. package/plugin/package.json +1 -1
  20. package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
  21. package/plugin/skills/ase-code-craft/SKILL.md +7 -7
  22. package/plugin/skills/ase-code-lint/SKILL.md +19 -3
  23. package/plugin/skills/ase-code-refactor/SKILL.md +7 -7
  24. package/plugin/skills/ase-code-resolve/SKILL.md +6 -6
  25. package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
  26. package/plugin/skills/ase-docs-proofread/SKILL.md +18 -3
  27. package/plugin/skills/ase-meta-changelog/SKILL.md +5 -2
  28. package/plugin/skills/ase-meta-commit/SKILL.md +4 -4
  29. package/plugin/skills/ase-meta-compat/SKILL.md +3 -3
  30. package/plugin/skills/ase-meta-diaboli/SKILL.md +2 -2
  31. package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
  32. package/plugin/skills/ase-meta-quorum/SKILL.md +33 -4
  33. package/plugin/skills/ase-meta-search/SKILL.md +1 -1
  34. package/plugin/skills/ase-meta-steelman/SKILL.md +3 -3
  35. package/plugin/skills/ase-meta-why/SKILL.md +1 -1
  36. package/plugin/skills/ase-sync-export/SKILL.md +7 -7
  37. package/plugin/skills/ase-sync-import/SKILL.md +20 -16
  38. package/plugin/skills/ase-sync-reconcile/SKILL.md +9 -9
  39. package/plugin/skills/ase-task-condense/SKILL.md +34 -79
  40. package/plugin/skills/ase-task-edit/SKILL.md +41 -49
  41. package/plugin/skills/ase-task-grill/SKILL.md +10 -12
  42. package/plugin/skills/ase-task-id/SKILL.md +7 -3
  43. package/plugin/skills/ase-task-implement/SKILL.md +18 -111
  44. package/plugin/skills/ase-task-list/SKILL.md +3 -0
  45. package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
  46. package/plugin/skills/ase-task-reboot/SKILL.md +27 -63
  47. package/plugin/skills/ase-task-view/SKILL.md +7 -7
@@ -4,7 +4,6 @@ argument-hint: "[--help|-h] <source-reference>"
4
4
  description: Review software architecture, including package cohesion and inter-package coupling
5
5
  user-invocable: true
6
6
  disable-model-invocation: false
7
- model: opus
8
7
  effort: high
9
8
  allowed-tools:
10
9
  - "Bash(wc *)"
@@ -252,7 +251,7 @@ interface quality, quality attributes, and architecture governance.
252
251
  - *god-package*: *incoming ≥ 5* and *outgoing ≥ 3* -
253
252
  coordinator dumping ground that should be split along its
254
253
  internal topical clusters
255
- - *fragment*: 12 files under a sibling parent that share a
254
+ - *fragment*: 1-2 files under a sibling parent that share a
256
255
  *name prefix* or *imported interface* with that sibling -
257
256
  consolidation candidate
258
257
 
@@ -278,7 +277,7 @@ interface quality, quality attributes, and architecture governance.
278
277
  which operations sit *between* the specific acquire and
279
278
  release in source order.
280
279
 
281
- - *Package-graph construction (SA19SA21)*: parse each file's
280
+ - *Package-graph construction (SA19-SA21)*: parse each file's
282
281
  import (or equivalent language construct) statement, keep
283
282
  only first-party packages within the analyzed scope, and
284
283
  persist two intermediate structures: the per-package
@@ -2,7 +2,7 @@
2
2
  name: ase-code-craft
3
3
  argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <feature>"
4
4
  description: >
5
- Craft Source:
5
+ Craft Source Code:
6
6
  Use when user wants to "create", "add", or "craft" a new feature from scratch.
7
7
  user-invocable: true
8
8
  disable-model-invocation: false
@@ -109,7 +109,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
109
109
  7. Ask the user for clarification if the goal of this crafting is too
110
110
  unclear.
111
111
 
112
- 8. Do not output anything in this step, unless you asked the user.
112
+ 8. Do not output anything else in this step, unless you asked the user.
113
113
 
114
114
  </step>
115
115
 
@@ -231,18 +231,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
231
231
  closely aligning to the existing architecture and the existing
232
232
  code base. Use the <format/> defined for a task plan and inject
233
233
  the information from feature A<n/> and all derived realization
234
- decisions into it. Store the resulting task plan in <content/>.
234
+ decisions into it. Store the resulting task plan in <task-content/>.
235
235
 
236
236
  If a `CHANGELOG.md` file exists in the project (or in any
237
237
  affected sub-package), the plan *MUST* include, as part of its
238
- `##CHANGES` section, an explicit bullet point describing
238
+ `## CHANGES` section, an explicit bullet point describing
239
239
  the addition of a corresponding new entry to that `CHANGELOG.md`
240
240
  file, aligned with its existing style and conventions.
241
241
 
242
242
  <if condition="<getopt-option-dry/> is equal `true`">
243
243
  You *MUST* completely omit the `## VERIFICATION` section
244
244
  (including its heading and all of its bullet points) from
245
- <content/>.
245
+ <task-content/>.
246
246
  </if>
247
247
 
248
248
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
@@ -253,10 +253,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
253
253
  <timestamp-created/> and <timestamp-modified/> information. Then
254
254
  insert the current <ase-task-id/>, <timestamp-created/>, and
255
255
  <timestamp-modified/> information and calculate the number of
256
- words <words/> of <content/>.
256
+ words <words/> of <task-content/>.
257
257
 
258
258
  3. You then *MUST* *save* the resulting plan content with the
259
- `ase_task_save(id: "<ase-task-id/>", text: "<content/>")`.
259
+ `ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`.
260
260
 
261
261
  4. Output a hint with the following <template/>:
262
262
 
@@ -154,11 +154,14 @@ related to a set of code quality aspects.
154
154
  still perform substep 3 first. Never leave this marker active
155
155
  for a later, unrelated `Edit`.
156
156
 
157
- 2. Iterate over all problems:
157
+ 2. Set <total/> to the number of problems in <problems/> and
158
+ <index/> to `0`. Then iterate over all problems:
158
159
 
159
160
  <for items="<problems/>">
160
161
 
161
- 1. Set <aspect/> to the `aspect` field of <item/>.
162
+ 1. Increment <index/> by one (the 1-based position of the
163
+ current <item/> within <problems/>).
164
+ Set <aspect/> to the `aspect` field of <item/>.
162
165
  Set <severity/> to the `severity` field of <item/>.
163
166
  Set <description/> to the `description` field of <item/>.
164
167
  Set <change-set/> to the `change-set` field of <item/>.
@@ -193,6 +196,19 @@ related to a set of code quality aspects.
193
196
  Set <new-text/> to the `new_text` field of <item/>.
194
197
  Set <context-after/> to the `context_after` field of <item/>.
195
198
 
199
+ Then *normalize* the hunk to its *minimal* form, so
200
+ that the proposed diff shows exactly the lines the
201
+ later `Edit` will actually change: while the *first*
202
+ line of <old-text/> is identical to the *first* line
203
+ of <new-text/>, *move* that line from both to the
204
+ end of <context-before/> and increment <line/> by
205
+ one; likewise, while the *last* line of <old-text/>
206
+ is identical to the *last* line of <new-text/>,
207
+ *move* that line from both to the front of
208
+ <context-after/>. Finally, *trim* <context-before/>
209
+ to its *last* two lines and <context-after/> to its
210
+ *first* two lines.
211
+
196
212
  2. *Skip* this substep entirely when <ase-project-boxing/>
197
213
  is equal `grey` - the full unified diff is suppressed
198
214
  there, so none of the <hunk-body/>, <old-count/>,
@@ -288,7 +304,7 @@ related to a set of code quality aspects.
288
304
  4. Report the problem with the following <template/>:
289
305
 
290
306
  <template>
291
- <ase-tpl-bullet-signal/> **<aspect/> PROBLEM** (`<severity/>`): <context/>
307
+ <ase-tpl-bullet-signal/> [<index/>/<total/>]: **<aspect/> PROBLEM** (`<severity/>`): <context/>
292
308
 
293
309
  <description/>
294
310
 
@@ -18,7 +18,7 @@ allowed-tools:
18
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
19
19
 
20
20
  <skill name="ase-code-refactor">
21
- Refactor Artifacts
21
+ Refactor Source Code
22
22
  </skill>
23
23
 
24
24
  <expand name="getopt"
@@ -109,7 +109,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
109
109
  7. Ask the user for clarification if the goal of this refactoring is
110
110
  too unclear.
111
111
 
112
- 8. Do not output anything in this step, unless you asked the user.
112
+ 8. Do not output anything else in this step, unless you asked the user.
113
113
 
114
114
  </step>
115
115
 
@@ -231,18 +231,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
231
231
  closely aligning to the existing architecture and the existing
232
232
  code base. Use the <format/> defined for a task plan and inject
233
233
  the information from refactoring A<n/> and all derived realization
234
- decisions into it. Store the resulting task plan in <content/>.
234
+ decisions into it. Store the resulting task plan in <task-content/>.
235
235
 
236
236
  If a `CHANGELOG.md` file exists in the project (or in any
237
237
  affected sub-package), the plan *MUST* include, as part of its
238
- `##CHANGES` section, an explicit bullet point describing
238
+ `## CHANGES` section, an explicit bullet point describing
239
239
  the addition of a corresponding new entry to that `CHANGELOG.md`
240
240
  file, aligned with its existing style and conventions.
241
241
 
242
242
  <if condition="<getopt-option-dry/> is equal `true`">
243
243
  You *MUST* completely omit the `## VERIFICATION` section
244
244
  (including its heading and all of its bullet points) from
245
- <content/>.
245
+ <task-content/>.
246
246
  </if>
247
247
 
248
248
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
@@ -253,10 +253,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
253
253
  <timestamp-created/> and <timestamp-modified/> information. Then
254
254
  insert the current <ase-task-id/>, <timestamp-created/>, and
255
255
  <timestamp-modified/> information and calculate the number of
256
- words <words/> of <content/>.
256
+ words <words/> of <task-content/>.
257
257
 
258
258
  3. You then *MUST* *save* the resulting plan content with the
259
- `ase_task_save(id: "<ase-task-id/>", text: "<content/>")`.
259
+ `ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`.
260
260
 
261
261
  4. Output a hint with the following <template/>:
262
262
 
@@ -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/>:
@@ -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/>`),
@@ -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
@@ -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,10 +151,22 @@ 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>
@@ -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
@@ -108,7 +108,10 @@ Processing
108
108
  corresponding Git tag already exists with the command `git tag --list
109
109
  N.M.K`. If this command produces *no* output, the first section is
110
110
  still in-progress/untagged, so use the `N.M.K` from the *second*
111
- 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*
112
115
  produce output, the first section is already released/tagged, so use
113
116
  the `N.M.K` from the *first* level-2 header as the baseline tag. Then
114
117
  check all Git commits between `HEAD` and this baseline tag with the
@@ -48,10 +48,10 @@ currently staged Git changes.
48
48
  of the `ase-meta-diff` and `ase-meta-changelog` skills) and their
49
49
  usual corresponding kind of change are:
50
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
51
+ - `FEATURE`: new functionality or configuration
52
+ - `IMPROVEMENT`: improved functionality or configuration
53
+ - `BUGFIX`: corrected functionality or configuration
54
+ - `UPDATE`: updated functionality or configuration
55
55
  - `CLEANUP`: cleaned up functionality or configuration
56
56
  - `REFACTOR`: refactored functionality or configuration
57
57
 
@@ -40,8 +40,8 @@ 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
 
42
42
  Notice that this skill intentionally does not strictly follow the ASE
43
- skill format, especially it does not include any meta skill information,
44
- etc.
43
+ skill format; in particular, it does not include the usual meta skill
44
+ information.
45
45
 
46
46
  Procedure
47
47
  ---------
@@ -107,7 +107,7 @@ Procedure
107
107
  Record <s/> as actual result for `control-flow/while-sum`.
108
108
 
109
109
  3. *for-order*: Set <s></s>, then evaluate
110
- `<for items="x y z"><s><s/>-<item/></for>`.
110
+ `<for items="x y z"><s><s/>-<item/></s></for>`.
111
111
  Record <s/> as actual result for `control-flow/for-order`.
112
112
 
113
113
  4. *while-break*: Set <i>1</i> and <hit></hit>, then evaluate
@@ -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
@@ -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
@@ -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
 
@@ -65,7 +69,8 @@ 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*
72
+ `gemini`, `deepseek`, `grok`, `glm`, `qwen`, `claude`, `codex`,
73
+ `copilot`. If any token is *not*
69
74
  in this set, bind <token/> to that offending token, then only output
70
75
  the following <template/> and then immediately *STOP* processing the
71
76
  entire current skill:
@@ -76,7 +81,10 @@ by querying *multiple* AIs for an *optimal consensus*.
76
81
 
77
82
  The default is the single token `all`. If <getopt-option-models/>
78
83
  contains the token `all`, you *MUST* treat it as the full list
79
- `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
80
88
  Claude (yourself) is *always* included, independent of this option.
81
89
 
82
90
  <define name="agent">
@@ -116,6 +124,15 @@ by querying *multiple* AIs for an *optimal consensus*.
116
124
  <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `qwen`">
117
125
  <expand name="agent" arg1="Alibaba Qwen" arg2="qwen"></expand>
118
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>
119
136
 
120
137
  You *MUST* *NOT* output anything in this step.
121
138
 
@@ -202,6 +219,18 @@ by querying *multiple* AIs for an *optimal consensus*.
202
219
  &#x25CB; **Alibaba Qwen**:
203
220
  - [...]
204
221
  - [...]
222
+
223
+ &#x25CB; **Anthropic Claude (harness)**:
224
+ - [...]
225
+ - [...]
226
+
227
+ &#x25CB; **OpenAI Codex**:
228
+ - [...]
229
+ - [...]
230
+
231
+ &#x25CB; **GitHub Copilot**:
232
+ - [...]
233
+ - [...]
205
234
  </template>
206
235
 
207
236
  In this output, when a quorum was *not* possible (see STEP 4),
@@ -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
 
@@ -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
@@ -47,7 +47,7 @@ addressing surface-level symptoms.
47
47
 
48
48
  2. <step id="STEP 2: Root-Cause Analysis">
49
49
 
50
- Find the root-cause of <problem/> by following the following iteration cycle.
50
+ Find the root-cause of <problem/> by following this iteration cycle.
51
51
  Start with a <question/> set equal to the <problem/>.
52
52
 
53
53
  Determine the *maximum chain length* from <getopt-option-depth/>:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-sync-export
3
- argument-hint: "[--help|-h] [--source|-s <source>[,...]] [<filter>]"
3
+ argument-hint: "[--help|-h] [--source|-s <source>[,...]] [<hint>]"
4
4
  description: >
5
5
  Export artifact content into side-by-side, ready-to-consume files,
6
6
  one per artifact that declares an export. Use when the user wants to
@@ -18,7 +18,7 @@ allowed-tools:
18
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
19
19
 
20
20
  <skill name="ase-sync-export">
21
- Export Artifact Set to Side-by-Side Files
21
+ Export Artifact Set to Side-by-Side Files
22
22
  </skill>
23
23
 
24
24
  <expand name="getopt"
@@ -28,11 +28,11 @@ allowed-tools:
28
28
  </expand>
29
29
 
30
30
  <objective>
31
- *Export* the *source* artifact kinds (optionally filtered by
32
- <hint/>) into side-by-side files, by reading the source artifacts
33
- and materializing, for every artifact that declares an export,
34
- the corresponding derived file next to the artifact itself.
35
- <hint><getopt-arguments/></hint>.
31
+ *Export* the *source* artifact kinds (optionally filtered by
32
+ <hint/>) into side-by-side files, by reading the source artifacts
33
+ and materializing, for every artifact that declares an export,
34
+ the corresponding derived file next to the artifact itself.
35
+ <hint><getopt-arguments/></hint>.
36
36
  </objective>
37
37
 
38
38
  @${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
@@ -17,7 +17,7 @@ effort: xhigh
17
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
18
18
 
19
19
  <skill name="ase-sync-import">
20
- Import Foreign Sources into Artifact Set
20
+ Import Foreign Sources into Artifact Set
21
21
  </skill>
22
22
 
23
23
  <expand name="getopt"
@@ -27,11 +27,11 @@ effort: xhigh
27
27
  </expand>
28
28
 
29
29
  <objective>
30
- *Import* the information of the *foreign sources* (named by the
31
- <hint/>) into the *target* artifact kinds, by reading the foreign
32
- sources and generating or updating the target artifacts to faithfully
33
- reflect the imported information:
34
- <hint><getopt-arguments/></hint>.
30
+ *Import* the information of the *foreign sources* (named by the
31
+ <hint/>) into the *target* artifact kinds, by reading the foreign
32
+ sources and generating or updating the target artifacts to faithfully
33
+ reflect the imported information:
34
+ <hint><getopt-arguments/></hint>.
35
35
  </objective>
36
36
 
37
37
  @${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
@@ -49,7 +49,7 @@ Procedure
49
49
 
50
50
  1. The recognized artifact kinds are the seven tokens `TASK`,
51
51
  `SPEC`, `ARCH`, `CODE`, `DOCS`, `INFR`, and `OTHR`. Parse
52
- <getopt-target/> as the comma-separated <target/> kind list.
52
+ <getopt-option-target/> as the comma-separated <target/> kind list.
53
53
  Upper-case and trim every parsed kind token. Do not output
54
54
  anything.
55
55
 
@@ -111,12 +111,15 @@ Procedure
111
111
 
112
112
  3. <step id="STEP 3: Generate or Update Artifacts">
113
113
 
114
- 1. For all kinds in <target/>, call the `ase_artifact_list(kind: [
115
- ... ])` tool of the `ase` MCP server *once*, passing the
116
- lower-cased `kind` tokens, and read the returned `artifacts`
117
- array of `{ kind, files }` objects to obtain the project-relative
118
- file list per kind. Read all *existing* target artifacts to
119
- understand their current state.
114
+ 1. For all kinds in <target/> except `TASK`, call the
115
+ `ase_artifact_list(kind: [ ... ])` tool of the `ase` MCP server
116
+ *once*, passing the lower-cased `kind` tokens, and read the
117
+ returned `artifacts` array of `{ kind, files }` objects to
118
+ obtain the project-relative file list per kind. The `TASK` kind
119
+ is *not* resolvable via `ase_artifact_list` (task plans are
120
+ managed by the `ase_task_*` tools), so resolve and read it via
121
+ the `ase_task_id` and `ase_task_load` tools instead. Read all
122
+ *existing* target artifacts to understand their current state.
120
123
 
121
124
  2. Internalize and honor the artifact-format conventions:
122
125
 
@@ -136,8 +139,8 @@ Procedure
136
139
  **ASE Tenets** when generating or updating in the following. Do
137
140
  not output anything.
138
141
 
139
- 4. Once call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of
140
- the `ase` MCP server to find out the current time and store it in
142
+ 4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
143
+ `ase` MCP server *once* to find out the current time and store it in
141
144
  <timestamp-modified/>.
142
145
 
143
146
  5. *Generate or update* the <target/> artifact files so that they
@@ -163,7 +166,8 @@ Procedure
163
166
  abstraction (a SPEC states intent, an ARCH states structure).
164
167
 
165
168
  Apply the generation/update directly to the target artifacts via
166
- the `Write`/`Edit` tools.
169
+ the `Write`/`Edit` tools. For a `TASK` target, apply it via the
170
+ `ase_task_save` tool instead.
167
171
 
168
172
  6. Report the performed changes with the following <template/>, listing
169
173
  one bullet line per generated or updated file (with <file/> its