@rse/ase 0.9.44 → 0.9.46

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 (57) hide show
  1. package/dst/ase-setup.js +50 -0
  2. package/package.json +3 -3
  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/etc/stx.conf +6 -1
  11. package/plugin/meta/ase-common-task.md +145 -0
  12. package/plugin/meta/ase-constitution.md +4 -1
  13. package/plugin/meta/ase-dialog.md +7 -7
  14. package/plugin/meta/ase-format-arch.md +4 -4
  15. package/plugin/meta/ase-format-spec.md +23 -23
  16. package/plugin/meta/ase-format-task.md +1 -1
  17. package/plugin/meta/ase-persona.md +3 -3
  18. package/plugin/meta/ase-skill.md +2 -2
  19. package/plugin/meta/ase-tenets.md +4 -4
  20. package/plugin/package.json +1 -1
  21. package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
  22. package/plugin/skills/ase-code-craft/SKILL.md +23 -9
  23. package/plugin/skills/ase-code-craft/help.md +5 -4
  24. package/plugin/skills/ase-code-lint/SKILL.md +19 -3
  25. package/plugin/skills/ase-code-refactor/SKILL.md +23 -9
  26. package/plugin/skills/ase-code-refactor/help.md +5 -4
  27. package/plugin/skills/ase-code-resolve/SKILL.md +22 -8
  28. package/plugin/skills/ase-code-resolve/help.md +6 -5
  29. package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
  30. package/plugin/skills/ase-docs-proofread/SKILL.md +18 -3
  31. package/plugin/skills/ase-meta-changelog/SKILL.md +5 -2
  32. package/plugin/skills/ase-meta-commit/SKILL.md +4 -4
  33. package/plugin/skills/ase-meta-compat/SKILL.md +3 -3
  34. package/plugin/skills/ase-meta-diaboli/SKILL.md +2 -2
  35. package/plugin/skills/ase-meta-eli5/SKILL.md +116 -0
  36. package/plugin/skills/ase-meta-eli5/help.md +61 -0
  37. package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
  38. package/plugin/skills/ase-meta-intent/SKILL.md +157 -0
  39. package/plugin/skills/ase-meta-intent/help.md +56 -0
  40. package/plugin/skills/ase-meta-proximity/SKILL.md +224 -0
  41. package/plugin/skills/ase-meta-proximity/help.md +78 -0
  42. package/plugin/skills/ase-meta-quorum/SKILL.md +33 -4
  43. package/plugin/skills/ase-meta-search/SKILL.md +1 -1
  44. package/plugin/skills/ase-meta-steelman/SKILL.md +3 -3
  45. package/plugin/skills/ase-meta-why/SKILL.md +1 -1
  46. package/plugin/skills/ase-sync-export/SKILL.md +7 -7
  47. package/plugin/skills/ase-sync-import/SKILL.md +20 -16
  48. package/plugin/skills/ase-sync-reconcile/SKILL.md +9 -9
  49. package/plugin/skills/ase-task-condense/SKILL.md +34 -79
  50. package/plugin/skills/ase-task-edit/SKILL.md +41 -49
  51. package/plugin/skills/ase-task-grill/SKILL.md +10 -12
  52. package/plugin/skills/ase-task-id/SKILL.md +7 -3
  53. package/plugin/skills/ase-task-implement/SKILL.md +18 -111
  54. package/plugin/skills/ase-task-list/SKILL.md +3 -0
  55. package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
  56. package/plugin/skills/ase-task-reboot/SKILL.md +27 -63
  57. package/plugin/skills/ase-task-view/SKILL.md +7 -7
@@ -5,7 +5,7 @@ ASE Tenets
5
5
  The following are the **ASE Tenets** -- the guiding principles you
6
6
  *MUST* internalize when requested. They are organized into *Generic
7
7
  Tenets*, which always apply, and *Operation-Specific Tenets*, which
8
- apply only to a particular kind of operation (Crafting, Aligning,
8
+ apply only to a particular kind of operation (Crafting, Reconciling,
9
9
  Refactoring, Resolving).
10
10
 
11
11
  GENERIC TENETS
@@ -80,7 +80,7 @@ CRAFTING TENETS
80
80
  ---------------
81
81
 
82
82
  When *crafting* from scratch a new artifact, a feature, or an aspect,
83
- you *MUST* honor the following so-called "CRAFTING TENETS":
83
+ you *MUST* honor the following so-called **CRAFTING TENETS**:
84
84
 
85
85
  - **Clear Minimal Scope**:
86
86
  Establish explicit boundaries for the new feature.
@@ -167,7 +167,7 @@ REFACTORING TENETS
167
167
  ------------------
168
168
 
169
169
  When *refactoring* existing artifacts or aspects,
170
- you *MUST* honor the following so-called **REFACTORING TENETS**
170
+ you *MUST* honor the following so-called **REFACTORING TENETS**:
171
171
 
172
172
  - **Behavior Preservation**:
173
173
  Refactoring changes only re-structure, never change any
@@ -200,7 +200,7 @@ RESOLVING TENETS
200
200
  ----------------
201
201
 
202
202
  When *resolving* a problem or challenge (bug-fixing),
203
- you *MUST* honor the following so-called **RESOLVING TENETS**
203
+ you *MUST* honor the following so-called **RESOLVING TENETS**:
204
204
 
205
205
  - **No Cleanups**:
206
206
  Strictly focus on resolving the problem and do not mix the task with
@@ -6,7 +6,7 @@
6
6
  "homepage": "https://ase.tools",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "https://github.com/rse/ase/issues" },
9
- "version": "0.9.44",
9
+ "version": "0.9.46",
10
10
  "license": "Apache-2.0",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -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
@@ -23,7 +23,7 @@ Craft Source Code
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-craft"
26
- arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)...">
26
+ arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|GRILL|PREFLIGHT|IMPLEMENT)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -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
 
@@ -303,7 +303,21 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
303
303
  to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
304
304
  </elseif>
305
305
 
306
- 4. <else>
306
+ 4. <elseif condition="<head/> is equal `GRILL`">
307
+ Consume the head: set <getopt-option-next/> to the remaining
308
+ tokens (joined back with `,`, or `none` if empty). `GRILL`
309
+ is this skill's own dispatch token, *not* part of
310
+ `ase-task-grill`'s `--next` vocabulary, so it must be
311
+ stripped here rather than forwarded. All remaining tokens are
312
+ `ase-task-grill`'s own vocabulary and are forwarded verbatim.
313
+ <if condition="<getopt-option-next/> is not equal `none`">
314
+ Set <args><args/> --next <getopt-option-next/></args>
315
+ </if>
316
+ Call the tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
317
+ to *grill* the freshly composed plan, bypassing `ase-task-edit`.
318
+ </elseif>
319
+
320
+ 5. <else>
307
321
  Hand off to `ase-task-edit`.
308
322
  <if condition="<head/> is equal `EDIT`">
309
323
  Consume the head: set <getopt-option-next/> to the remaining
@@ -50,15 +50,16 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
50
50
  `--next`|`-n` *option*[,...]:
51
51
  Automatically choose the next step after composing the plan.
52
52
  *option* is a single token or a *comma-separated chronological
53
- list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
54
- consumed by this skill (bypassing `ase-task-edit`), and any
53
+ list* of tokens; an `IMPLEMENT`, `PREFLIGHT`, or `GRILL` head token
54
+ is consumed by this skill (bypassing `ase-task-edit`), and any
55
55
  remaining tokens are *forwarded* (via `--next`) to the downstream
56
56
  skill. For all other head tokens, the *entire* list is forwarded
57
57
  to `ase-task-edit`, which consumes its head itself. This lets an
58
58
  entire pipeline be pre-scripted in one shot. Recognized tokens at
59
59
  this skill: `none` (default, hand-off to `ase-task-edit`
60
60
  interactively), `DONE` (stop), `EDIT` (hand off to
61
- `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
61
+ `ase-task-edit`), `GRILL` (hand off to `ase-task-grill`),
62
+ `PREFLIGHT` (hand off to `ase-task-preflight`),
62
63
  or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
63
64
  `--next PREFLIGHT,IMPLEMENT,DONE` crafts the plan, preflights it,
64
65
  implements it, and exits without further dialog.
@@ -87,4 +88,4 @@ Craft a feature under a named task and directly hand off to implementation:
87
88
  ## SEE ALSO
88
89
 
89
90
  [`ase-code-refactor`](../ase-code-refactor/help.md), [`ase-code-resolve`](../ase-code-resolve/help.md), [`ase-task-edit`](../ase-task-edit/help.md),
90
- [`ase-task-preflight`](../ase-task-preflight/help.md), [`ase-task-implement`](../ase-task-implement/help.md).
91
+ [`ase-task-grill`](../ase-task-grill/help.md), [`ase-task-preflight`](../ase-task-preflight/help.md), [`ase-task-implement`](../ase-task-implement/help.md).
@@ -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,12 +18,12 @@ 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"
25
25
  arg1="ase-code-refactor"
26
- arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)...">
26
+ arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|GRILL|PREFLIGHT|IMPLEMENT)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -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
 
@@ -303,7 +303,21 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
303
303
  to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
304
304
  </elseif>
305
305
 
306
- 4. <else>
306
+ 4. <elseif condition="<head/> is equal `GRILL`">
307
+ Consume the head: set <getopt-option-next/> to the remaining
308
+ tokens (joined back with `,`, or `none` if empty). `GRILL`
309
+ is this skill's own dispatch token, *not* part of
310
+ `ase-task-grill`'s `--next` vocabulary, so it must be
311
+ stripped here rather than forwarded. All remaining tokens are
312
+ `ase-task-grill`'s own vocabulary and are forwarded verbatim.
313
+ <if condition="<getopt-option-next/> is not equal `none`">
314
+ Set <args><args/> --next <getopt-option-next/></args>
315
+ </if>
316
+ Call the tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
317
+ to *grill* the freshly composed plan, bypassing `ase-task-edit`.
318
+ </elseif>
319
+
320
+ 5. <else>
307
321
  Hand off to `ase-task-edit`.
308
322
  <if condition="<head/> is equal `EDIT`">
309
323
  Consume the head: set <getopt-option-next/> to the remaining
@@ -50,15 +50,16 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
50
50
  `--next`|`-n` *option*[,...]:
51
51
  Automatically choose the next step after composing the plan.
52
52
  *option* is a single token or a *comma-separated chronological
53
- list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
54
- consumed by this skill (bypassing `ase-task-edit`), and any
53
+ list* of tokens; an `IMPLEMENT`, `PREFLIGHT`, or `GRILL` head token
54
+ is consumed by this skill (bypassing `ase-task-edit`), and any
55
55
  remaining tokens are *forwarded* (via `--next`) to the downstream
56
56
  skill. For all other head tokens, the *entire* list is forwarded
57
57
  to `ase-task-edit`, which consumes its head itself. This lets an
58
58
  entire pipeline be pre-scripted in one shot. Recognized tokens at
59
59
  this skill: `none` (default, hand off to `ase-task-edit`
60
60
  interactively), `DONE` (stop), `EDIT` (hand off to
61
- `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
61
+ `ase-task-edit`), `GRILL` (hand off to `ase-task-grill`),
62
+ `PREFLIGHT` (hand off to `ase-task-preflight`),
62
63
  or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
63
64
  `--next PREFLIGHT,IMPLEMENT,DONE` refactors, preflights, implements,
64
65
  and exits without further dialog.
@@ -87,4 +88,4 @@ Refactor under a named task and directly hand off to implementation:
87
88
  ## SEE ALSO
88
89
 
89
90
  [`ase-code-craft`](../ase-code-craft/help.md), [`ase-code-resolve`](../ase-code-resolve/help.md), [`ase-task-edit`](../ase-task-edit/help.md),
90
- [`ase-task-preflight`](../ase-task-preflight/help.md), [`ase-task-implement`](../ase-task-implement/help.md).
91
+ [`ase-task-grill`](../ase-task-grill/help.md), [`ase-task-preflight`](../ase-task-preflight/help.md), [`ase-task-implement`](../ase-task-implement/help.md).
@@ -23,7 +23,7 @@ Resolve Problem
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-resolve"
26
- arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)...">
26
+ arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|GRILL|PREFLIGHT|IMPLEMENT)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -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/>`),
@@ -364,7 +364,21 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
364
364
  to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
365
365
  </elseif>
366
366
 
367
- 4. <else>
367
+ 4. <elseif condition="<head/> is equal `GRILL`">
368
+ Consume the head: set <getopt-option-next/> to the remaining
369
+ tokens (joined back with `,`, or `none` if empty). `GRILL`
370
+ is this skill's own dispatch token, *not* part of
371
+ `ase-task-grill`'s `--next` vocabulary, so it must be
372
+ stripped here rather than forwarded. All remaining tokens are
373
+ `ase-task-grill`'s own vocabulary and are forwarded verbatim.
374
+ <if condition="<getopt-option-next/> is not equal `none`">
375
+ Set <args><args/> --next <getopt-option-next/></args>
376
+ </if>
377
+ Call the tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
378
+ to *grill* the freshly composed plan, bypassing `ase-task-edit`.
379
+ </elseif>
380
+
381
+ 5. <else>
368
382
  Hand off to `ase-task-edit`.
369
383
  <if condition="<head/> is equal `EDIT`">
370
384
  Consume the head: set <getopt-option-next/> to the remaining
@@ -55,15 +55,16 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
55
55
  `--next`|`-n` *option*[,...]:
56
56
  Automatically choose the next step after composing the plan.
57
57
  *option* is a single token or a *comma-separated chronological
58
- list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
59
- consumed by this skill (bypassing `ase-task-edit`), and any
58
+ list* of tokens; an `IMPLEMENT`, `PREFLIGHT`, or `GRILL` head token
59
+ is consumed by this skill (bypassing `ase-task-edit`), and any
60
60
  remaining tokens are *forwarded* (via `--next`) to the downstream
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
64
  this skill: `none` (default, hand off to `ase-task-edit`
65
65
  interactively), `DONE` (stop), `EDIT` (hand off to
66
- `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
66
+ `ase-task-edit`), `GRILL` (hand off to `ase-task-grill`),
67
+ `PREFLIGHT` (hand off to `ase-task-preflight`),
67
68
  or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
68
69
  `--next IMPLEMENT,DONE` resolves the problem, implements it, and
69
70
  exits without further dialog.
@@ -93,5 +94,5 @@ Resolve a previously analyzed issue and hand off to implementation:
93
94
  ## SEE ALSO
94
95
 
95
96
  [`ase-code-craft`](../ase-code-craft/help.md), [`ase-code-refactor`](../ase-code-refactor/help.md), [`ase-code-analyze`](../ase-code-analyze/help.md),
96
- [`ase-arch-analyze`](../ase-arch-analyze/help.md), [`ase-task-edit`](../ase-task-edit/help.md), [`ase-task-preflight`](../ase-task-preflight/help.md),
97
- [`ase-task-implement`](../ase-task-implement/help.md).
97
+ [`ase-arch-analyze`](../ase-arch-analyze/help.md), [`ase-task-edit`](../ase-task-edit/help.md), [`ase-task-grill`](../ase-task-grill/help.md),
98
+ [`ase-task-preflight`](../ase-task-preflight/help.md), [`ase-task-implement`](../ase-task-implement/help.md).
@@ -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