@rse/ase 0.9.9 → 0.9.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-dialog.md +52 -24
- package/plugin/meta/ase-format-arch.md +3 -3
- package/plugin/meta/ase-format-spec.md +13 -4
- package/plugin/meta/ase-getopt.md +11 -7
- package/plugin/meta/ase-skill.md +17 -10
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +6 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +9 -6
- package/plugin/skills/ase-code-analyze/SKILL.md +12 -5
- package/plugin/skills/ase-code-craft/SKILL.md +20 -16
- package/plugin/skills/ase-code-explain/SKILL.md +6 -1
- package/plugin/skills/ase-code-insight/SKILL.md +11 -5
- package/plugin/skills/ase-code-lint/SKILL.md +16 -10
- package/plugin/skills/ase-code-refactor/SKILL.md +20 -16
- package/plugin/skills/ase-code-resolve/SKILL.md +27 -22
- package/plugin/skills/ase-docs-proofread/SKILL.md +16 -10
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +26 -10
- package/plugin/skills/ase-meta-changelog/SKILL.md +16 -5
- package/plugin/skills/ase-meta-chat/SKILL.md +6 -1
- package/plugin/skills/ase-meta-commit/SKILL.md +5 -0
- package/plugin/skills/ase-meta-diaboli/SKILL.md +9 -5
- package/plugin/skills/ase-meta-diff/SKILL.md +1 -1
- package/plugin/skills/ase-meta-evaluate/SKILL.md +20 -12
- package/plugin/skills/ase-meta-persona/SKILL.md +6 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +15 -3
- package/plugin/skills/ase-meta-search/SKILL.md +9 -1
- package/plugin/skills/ase-meta-steelman/SKILL.md +5 -1
- package/plugin/skills/ase-meta-why/SKILL.md +6 -4
- package/plugin/skills/ase-task-condense/SKILL.md +5 -4
- package/plugin/skills/ase-task-delete/SKILL.md +6 -1
- package/plugin/skills/ase-task-edit/SKILL.md +10 -8
- package/plugin/skills/ase-task-grill/SKILL.md +35 -13
- package/plugin/skills/ase-task-id/SKILL.md +10 -3
- package/plugin/skills/ase-task-implement/SKILL.md +5 -4
- package/plugin/skills/ase-task-preflight/SKILL.md +5 -4
- package/plugin/skills/ase-task-reboot/SKILL.md +7 -6
- package/plugin/skills/ase-task-rename/SKILL.md +15 -1
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.11",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -11,6 +11,7 @@ User Dialog
|
|
|
11
11
|
</if>
|
|
12
12
|
|
|
13
13
|
<define name="user-dialog">
|
|
14
|
+
|
|
14
15
|
Let the *user interactively choose* an answer.
|
|
15
16
|
|
|
16
17
|
1. Take the following question specification:
|
|
@@ -140,13 +141,17 @@ Let the *user interactively choose* an answer.
|
|
|
140
141
|
</define>
|
|
141
142
|
|
|
142
143
|
<define name="custom-dialog">
|
|
143
|
-
|
|
144
|
+
|
|
145
|
+
In the following, you *MUST* *NOT* use the <user-dialog-tool/> tool!
|
|
146
|
+
Instead, you *MUST* just show a custom output, let the user enter input,
|
|
147
|
+
and then you set the result accordingly. For this, closely follow the
|
|
148
|
+
following procedure:
|
|
144
149
|
|
|
145
150
|
1. Take the following question specification:
|
|
151
|
+
<spec><content/></spec>
|
|
146
152
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
</spec>
|
|
153
|
+
Take the following options:
|
|
154
|
+
<opts><arg1/></opts>
|
|
150
155
|
|
|
151
156
|
The first line of <spec/> (separated by newlines) is of the format:
|
|
152
157
|
`<question-label/>: <question-description/>`
|
|
@@ -166,13 +171,17 @@ Let the *user interactively choose* an answer.
|
|
|
166
171
|
|
|
167
172
|
Set <text></text> (set to empty).
|
|
168
173
|
Set <keys></keys> (set to empty).
|
|
169
|
-
Set <n>
|
|
170
|
-
Set <width/> to the maximum length plus 3 of
|
|
174
|
+
Set <n>0</n> (set entry count to zero).
|
|
175
|
+
Set <width/> to the maximum length plus 3 of the <label/> strings in the
|
|
176
|
+
contiguous answer lines of <spec/> starting at line 2 (the answer labels only,
|
|
177
|
+
excluding the question label on line 1, and stopping at the first missing line --
|
|
178
|
+
the same lines the entry loop below renders).
|
|
171
179
|
|
|
172
180
|
<for items="2 3 4 5 6 7 8 9">
|
|
173
181
|
Take from <spec/> the line number <item/>.
|
|
174
182
|
If this line does not exist, <break/>.
|
|
175
183
|
If this line exists, parse it according to the format `<label/>: <description/>`.
|
|
184
|
+
Set <n/> to <n/> + 1 (increment entry count).
|
|
176
185
|
Set <label-key/> to <ase-tpl-key digit="<n/>"/>.
|
|
177
186
|
Set <label-text/> to `<ase-tpl-pad width="<width/>" text="<label/>:"/>`.
|
|
178
187
|
Append an entry to <text/>:
|
|
@@ -182,7 +191,6 @@ Let the *user interactively choose* an answer.
|
|
|
182
191
|
<ase-tpl-boxline><label-key/> ▶ **<label-text/>** <description/></ase-tpl-boxline>
|
|
183
192
|
</text>
|
|
184
193
|
|
|
185
|
-
Set <n/> to <n/> + 1 (increment entry count).
|
|
186
194
|
<if condition="<keys/> is empty">
|
|
187
195
|
Set <keys><label-key/></keys>
|
|
188
196
|
</if>
|
|
@@ -191,47 +199,67 @@ Let the *user interactively choose* an answer.
|
|
|
191
199
|
</else>
|
|
192
200
|
</for>
|
|
193
201
|
|
|
202
|
+
<if condition="<opts/> contains `--other`">
|
|
203
|
+
Set <hint>Please choose *one* option by typing <keys/>/**CANCEL**, or other free-text instruction.</hint>.
|
|
204
|
+
</if>
|
|
205
|
+
<else>
|
|
206
|
+
Set <hint>Please choose *one* option by typing <keys/>/**CANCEL**.</hint>.
|
|
207
|
+
</else>
|
|
208
|
+
|
|
194
209
|
Set:
|
|
195
210
|
|
|
196
211
|
<text>
|
|
197
|
-
<ase-tpl-boxed title="
|
|
212
|
+
<ase-tpl-boxed title="DIALOG" subtitle="<question-label/>">
|
|
198
213
|
|
|
199
214
|
<ase-tpl-boxline>**<question-description/>**</ase-tpl-boxline>
|
|
200
215
|
|
|
201
216
|
<text/>
|
|
202
217
|
|
|
203
|
-
|
|
218
|
+
<hint/>
|
|
204
219
|
|
|
205
220
|
</ase-tpl-boxed>
|
|
206
221
|
</text>
|
|
207
222
|
|
|
208
|
-
If <n/> is less than
|
|
209
|
-
Set <result>ERROR:
|
|
210
|
-
and *SKIP* the following step 2 and continue with step 3 dispatch.
|
|
223
|
+
If <n/> is less than 2:
|
|
224
|
+
Set <result>ERROR: custom-dialog requires 2-8 answer lines, got <n/></result>
|
|
225
|
+
and *SKIP* the following step 2.2 and continue with step 2.3 dispatch.
|
|
211
226
|
|
|
212
227
|
2. Output the following <template/>, end the current turn, wait for the
|
|
213
|
-
user input, store the user input in <result/> and then continue with
|
|
228
|
+
user input, store the user input in <result/> and then continue with
|
|
229
|
+
step 2.3 below:
|
|
214
230
|
|
|
215
231
|
<template>
|
|
216
232
|
<text/>
|
|
217
233
|
</template>
|
|
218
234
|
|
|
219
|
-
3.
|
|
235
|
+
3. Do not output anything in this step!
|
|
236
|
+
Check the <result/> and dispatch accordingly:
|
|
220
237
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
238
|
+
1. If <result/> is `cancel`, `CANCEL`, `reject`, `REJECT`, or
|
|
239
|
+
otherwise indicates that the user doesn't want to proceed,
|
|
240
|
+
or the user declined to answer the question, or that
|
|
241
|
+
the dialog was cancelled, rejected or skipped, set
|
|
242
|
+
<result>CANCEL</result>.
|
|
224
243
|
|
|
225
|
-
|
|
244
|
+
2. Otherwise, determine the selected <label/>
|
|
226
245
|
by mapping the <result/> (usually containing one of the
|
|
227
|
-
"key" or "label" strings) to one of the answer labels
|
|
228
|
-
<result><label/></result>.
|
|
246
|
+
"key" or "label" strings) to one of the answer labels in
|
|
247
|
+
<spec/>. Set <result><label/></result>.
|
|
229
248
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
249
|
+
3. If <result/> is then *NEITHER* one of the "key"
|
|
250
|
+
*NOR* "label" values from <spec/>:
|
|
251
|
+
<if condition="<opts/> contains `--other`">
|
|
252
|
+
Set <result>OTHER: <result/></result>
|
|
253
|
+
(prefix result with "OTHER").
|
|
254
|
+
</if>
|
|
255
|
+
<else>
|
|
256
|
+
Output the following <template/> and then *START OVER*
|
|
257
|
+
by *GOING* to step 2.2 above.
|
|
233
258
|
|
|
234
|
-
|
|
259
|
+
<template>
|
|
260
|
+
⧉ **ASE**: ERROR: **Invalid option selected!**
|
|
261
|
+
</template>
|
|
262
|
+
</else>
|
|
235
263
|
|
|
236
264
|
</define>
|
|
237
265
|
|
|
@@ -77,14 +77,14 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
|
|
|
77
77
|
The **Artifact**s have the following cross-references:
|
|
78
78
|
|
|
79
79
|
```text
|
|
80
|
-
ARCH-02-FV Functionality View ──(depends on)─► ARCH-
|
|
81
|
-
ARCH-03-IV Information View ──(entity)─► SPEC-
|
|
80
|
+
ARCH-02-FV Functionality View ──(depends on)─► ARCH-01-CV Context View
|
|
81
|
+
ARCH-03-IV Information View ──(entity)─► SPEC-07-DM Data Model
|
|
82
82
|
ARCH-03-IV Information View ──(owner)─► ARCH-02-FV Functionality View
|
|
83
83
|
ARCH-04-CO Concurrency View ──(hosts)─► ARCH-02-FV Functionality View
|
|
84
84
|
ARCH-06-DP Deployment View ──(hosts)─► ARCH-02-FV Functionality View
|
|
85
85
|
ARCH-07-OV Operations View ──(element)─► ARCH-02-FV Functionality View
|
|
86
86
|
ARCH-07-OV Operations View ──(element)─► ARCH-06-DP Deployment View
|
|
87
|
-
ARCH-08-QP Quality Perspectives ──(addresses)─► SPEC-
|
|
87
|
+
ARCH-08-QP Quality Perspectives ──(addresses)─► SPEC-05-NR Non-Functional Requirements
|
|
88
88
|
ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-02-FV Functionality View
|
|
89
89
|
ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-06-DP Deployment View
|
|
90
90
|
ARCH-09-DR Decision Record ──(affects)─► ARCH-02-FV Functionality View
|
|
@@ -563,7 +563,7 @@ manages, defining how information is organized and connected.
|
|
|
563
563
|
|
|
564
564
|
### RELATIONS
|
|
565
565
|
|
|
566
|
-
- `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
|
|
566
|
+
- `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#<spec-dm-relation-target-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
|
|
567
567
|
<spec-dm-relation-description/>,
|
|
568
568
|
**BECAUSE** <spec-dm-relation-rationale/>.
|
|
569
569
|
|
|
@@ -615,7 +615,7 @@ manages, defining how information is organized and connected.
|
|
|
615
615
|
- <spec-dm-relation-target/>: the <spec-dm-entity-name/> of the
|
|
616
616
|
entity the directed relation targets.
|
|
617
617
|
|
|
618
|
-
- <spec-dm-relation-id/>: the <spec-dm-entity-id/> of the
|
|
618
|
+
- <spec-dm-relation-target-id/>: the <spec-dm-entity-id/> of the
|
|
619
619
|
entity the directed relation targets.
|
|
620
620
|
|
|
621
621
|
- <spec-dm-relation-cardinality/>: the cardinality of the entity
|
|
@@ -724,8 +724,17 @@ making the forbidden moves as explicit as the allowed ones.
|
|
|
724
724
|
is implicitly forbidden.
|
|
725
725
|
|
|
726
726
|
- Every <spec-sm-state-name/> used in a transition *MUST* be
|
|
727
|
-
declared in the `### STATES` block, and every
|
|
728
|
-
*MUST*
|
|
727
|
+
declared in the `### STATES` block, and every state with no
|
|
728
|
+
outgoing transition *MUST* be listed in <spec-sm-lifecycle-final/>
|
|
729
|
+
(a state with no outgoing transition that is not final would be a
|
|
730
|
+
stuck dead-end). The converse does *not* hold: a
|
|
731
|
+
<spec-sm-lifecycle-final/> state *MAY* still have outgoing
|
|
732
|
+
transitions, modeling a resting state that can later be left again
|
|
733
|
+
(e.g. a `Closed` state with a `reopen` transition back to
|
|
734
|
+
`Active`). Thus <spec-sm-lifecycle-final/> designates the states in
|
|
735
|
+
which the entity may legally come to rest, which is a superset of,
|
|
736
|
+
but not necessarily equal to, the set of declared states that have
|
|
737
|
+
no outgoing transition.
|
|
729
738
|
|
|
730
739
|
- In case a transition has no side effect, the
|
|
731
740
|
entire `<spec-sm-transition-effect/>,` clause is omitted.
|
|
@@ -26,8 +26,10 @@ set placeholders into the context as a side-effect.
|
|
|
26
26
|
For each option token in <getopt-spec/> of the form
|
|
27
27
|
`--<long/>[|-<short/>][=<default/>|=(<c1/>|<c2/>|...)[...]]`, set
|
|
28
28
|
<getopt-option-<long/>/> to <default/> (for `=<default/>`
|
|
29
|
-
form), or to <c1/> (the first choice,
|
|
30
|
-
|
|
29
|
+
form), or to the *single token* <c1/> (the first choice, both
|
|
30
|
+
for the choice form `=(<c1/>|<c2>/|...)` and for the list form
|
|
31
|
+
`=(<c1/>|<c2>/|...)...` -- an *unsupplied* list-option always
|
|
32
|
+
defaults to the single token <c1/>, *not* to a whole list),
|
|
31
33
|
or to `false` (for value-less options). Then set
|
|
32
34
|
<getopt-arguments><getopt-args/></getopt-arguments>.
|
|
33
35
|
|
|
@@ -52,11 +54,13 @@ set placeholders into the context as a side-effect.
|
|
|
52
54
|
`=(<c1>|<c2>|...)` declares a value-taking option restricted to the
|
|
53
55
|
listed fixed choices (the first choice acts as the default), and the
|
|
54
56
|
trailing `...` (as in `=(<c1>|<c2>|...)...`) declares a value-taking
|
|
55
|
-
option whose value is a *comma-separated list* of choice
|
|
56
|
-
(
|
|
57
|
-
token
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
option whose *supplied* value is a *comma-separated list* of choice
|
|
58
|
+
tokens (when *unsupplied*, the option defaults to the *single
|
|
59
|
+
token* `<c1>`, identical to the non-list choice form -- the list
|
|
60
|
+
semantics apply only to an explicitly supplied value; only the
|
|
61
|
+
*first* token of a supplied list is validated by the parser against
|
|
62
|
+
the choice set -- subsequent tokens are *not* validated, and skills
|
|
63
|
+
validate each remaining token themselves as they consume it).
|
|
60
64
|
|
|
61
65
|
4. **Short-Circuit for Error**:
|
|
62
66
|
If <text/> starts with `ERROR:`:
|
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -215,6 +215,11 @@ Skill Identification
|
|
|
215
215
|
@${CLAUDE_SKILL_DIR}/help.md
|
|
216
216
|
</template>
|
|
217
217
|
|
|
218
|
+
- *IMPORTANT*:
|
|
219
|
+
You *MUST* *NOT* output any summaries, explanations, or next
|
|
220
|
+
steps at the end of a skill beside the explicit outputs via any
|
|
221
|
+
<template/>.
|
|
222
|
+
|
|
218
223
|
Template Patterns
|
|
219
224
|
-----------------
|
|
220
225
|
|
|
@@ -227,12 +232,13 @@ Template Patterns
|
|
|
227
232
|
</template>
|
|
228
233
|
|
|
229
234
|
- When `<ase-tpl-head title="<title/>"/>` should be expanded, use
|
|
230
|
-
(where <
|
|
231
|
-
|
|
235
|
+
(where <title-len/> is the number of characters in the string
|
|
236
|
+
`⧉ ASE: <title/>`, and <bar/> is the `─` character repeated exactly
|
|
237
|
+
(67 - <title-len/>) times):
|
|
232
238
|
|
|
233
239
|
<template>
|
|
234
240
|
|
|
235
|
-
╭────━━━━**(**
|
|
241
|
+
╭────━━━━**(** ⧉ ASE: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
|
|
236
242
|
|
|
237
243
|
</template>
|
|
238
244
|
|
|
@@ -245,12 +251,13 @@ Template Patterns
|
|
|
245
251
|
</template>
|
|
246
252
|
|
|
247
253
|
- When `<ase-tpl-foot title="<title/>"/>` should be expanded, use
|
|
248
|
-
(where <
|
|
249
|
-
|
|
254
|
+
(where <title-len/> is the number of characters in the string
|
|
255
|
+
`⧉ ASE: <title/>`, and <bar/> is the `─` character repeated exactly
|
|
256
|
+
(67 - <title-len/>) times):
|
|
250
257
|
|
|
251
258
|
<template>
|
|
252
259
|
|
|
253
|
-
╰────━━━━**(**
|
|
260
|
+
╰────━━━━**(** ⧉ ASE: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
|
|
254
261
|
|
|
255
262
|
</template>
|
|
256
263
|
|
|
@@ -272,14 +279,14 @@ Template Patterns
|
|
|
272
279
|
|
|
273
280
|
- <if condition="<subtitle/> is not empty">
|
|
274
281
|
Set <raw-title>⧉ ASE: <title/>: <subtitle/><raw-title>.
|
|
275
|
-
Set <render-title
|
|
282
|
+
Set <render-title>⧉ ASE: **`<title/>`**: `<subtitle/>`</render-title>.
|
|
276
283
|
</if>
|
|
277
284
|
<else>
|
|
278
285
|
Set <raw-title>⧉ ASE: <title/><raw-title>.
|
|
279
|
-
Set <render-title
|
|
286
|
+
Set <render-title>⧉ ASE: **`<title/>`**</render-title>.
|
|
280
287
|
</else>
|
|
281
|
-
- Set <
|
|
282
|
-
|
|
288
|
+
- Set <raw-title-len/> to the number of characters in <raw-title/>.
|
|
289
|
+
- Set <bar/> to the `─` character repeated exactly (67 - <raw-title-len/>) times.
|
|
283
290
|
- Set <body> to <content/> with all line-starts prefixed with `│ `.
|
|
284
291
|
|
|
285
292
|
<template>
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.11",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -101,14 +101,19 @@ allowed-tools:
|
|
|
101
101
|
|
|
102
102
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
103
103
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
104
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
104
105
|
|
|
105
106
|
<skill name="ase-arch-analyze">
|
|
106
107
|
Review Software Architecture
|
|
107
108
|
</skill>
|
|
108
109
|
|
|
110
|
+
<expand name="getopt" arg1="ase-arch-analyze">
|
|
111
|
+
$ARGUMENTS
|
|
112
|
+
</expand>
|
|
113
|
+
|
|
109
114
|
<objective>
|
|
110
115
|
With the mindset of an *expert-level software architect*,
|
|
111
|
-
*review* the *software architecture* of
|
|
116
|
+
*review* the *software architecture* of <getopt-arguments/>, and its directly
|
|
112
117
|
related source code, for *potential problems* across component
|
|
113
118
|
boundaries, structural organization, architecture principles,
|
|
114
119
|
interface quality, quality attributes, and architecture governance.
|
|
@@ -42,15 +42,18 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
42
42
|
|
|
43
43
|
2. If <functionality/> is not clear, not precise, or not specific
|
|
44
44
|
enough, let the *user interactively choose* the intended
|
|
45
|
-
functionality.
|
|
46
|
-
and *NOT* the `AskUserQuestion` based "user-dialog":
|
|
45
|
+
functionality.
|
|
47
46
|
|
|
48
|
-
<
|
|
47
|
+
In the following, you *MUST* *NOT* use the <user-dialog-tool/>
|
|
48
|
+
tool! Instead, you *MUST* just show a custom output, let the
|
|
49
|
+
user enter input, and then you set the result accordingly.
|
|
50
|
+
|
|
51
|
+
<expand name="custom-dialog" arg1="--no-other">
|
|
49
52
|
Functionality: Which functionality should the components provide?
|
|
50
53
|
<answer-1/>: (grounded candidate functionality 1)
|
|
51
54
|
<answer-2/>: (grounded candidate functionality 2)
|
|
52
|
-
<answer-3/>: (grounded candidate functionality
|
|
53
|
-
<answer-4/>: (grounded candidate functionality
|
|
55
|
+
<answer-3/>: (grounded candidate functionality 3)
|
|
56
|
+
<answer-4/>: (grounded candidate functionality 4)
|
|
54
57
|
</expand>
|
|
55
58
|
|
|
56
59
|
Then use the <result/> and its corresponding grounded candidate
|
|
@@ -112,7 +115,7 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
112
115
|
<keyword-L/> (L=1-M), which allow you to search for suitable
|
|
113
116
|
components.
|
|
114
117
|
|
|
115
|
-
3
|
|
118
|
+
3. In the to be discovered result set of components <component-K/>
|
|
116
119
|
(K=1-N), remember the component name as <name-K/>, the
|
|
117
120
|
official package name as <package-K/>, the latest version as
|
|
118
121
|
<version-K/>, the stars as <stars-K/>, the created date as
|
|
@@ -40,7 +40,8 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
40
40
|
|
|
41
41
|
<if condition="<getopt-option-performance/> is equal `true` and <getopt-option-security/> is equal `true`">
|
|
42
42
|
|
|
43
|
-
Only output the following <template/> and then *STOP*
|
|
43
|
+
Only output the following <template/> and then *STOP* the entire flow
|
|
44
|
+
(do not perform any further steps):
|
|
44
45
|
|
|
45
46
|
<template>
|
|
46
47
|
⧉ **ASE**: ✪ skill: **ase-code-analyze**, ▶ ERROR: options `--performance` and `--security` are mutually exclusive
|
|
@@ -146,10 +147,12 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
146
147
|
than or equal to `rank(<getopt-option-severity/>)`; *silently drop*
|
|
147
148
|
all other problems (they are neither reported nor persisted). With
|
|
148
149
|
the default floor `LOW`, all problems are kept. `ACCEPTED` problems
|
|
149
|
-
are *never* dropped.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
are *never* dropped.
|
|
151
|
+
|
|
152
|
+
Then renumber the surviving problems contiguously as `P<n/>` with
|
|
153
|
+
<n/> = 1, 2, ... in the original ordering. If *all* problems are
|
|
154
|
+
dropped, skip the per-problem report but still emit the final hint
|
|
155
|
+
<template/> below.
|
|
153
156
|
|
|
154
157
|
In this STEP 3, for *EVERY* surviving problem, immediately report
|
|
155
158
|
it with the following output <template/>, based on concise bullet
|
|
@@ -209,6 +212,10 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
209
212
|
justified trade-off that should remain on record but is never
|
|
210
213
|
dropped by the severity floor (see STEP 3).
|
|
211
214
|
|
|
215
|
+
- For <title/> ultra-compress the <description/> to a concise,
|
|
216
|
+
short, single sentence. Keep one inline reference to the code
|
|
217
|
+
position which is most relevant to the problem.
|
|
218
|
+
|
|
212
219
|
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
213
220
|
In <evidence/>, ground the finding by citing either the inferred
|
|
214
221
|
*Big-O* time/space complexity (e.g. `O(n²)` reducible to `O(n)`)
|
|
@@ -220,10 +220,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
220
220
|
anything else in this step:
|
|
221
221
|
|
|
222
222
|
<template>
|
|
223
|
-
● **APPROACH A<n/>**<annotation/>:
|
|
223
|
+
● **APPROACH A<n/>**<annotation/>: **<summary/>**
|
|
224
224
|
○ [...]
|
|
225
|
-
⊕
|
|
226
|
-
⊖
|
|
225
|
+
⊕ *PRO*: [...]
|
|
226
|
+
⊖ *CON*: [...]
|
|
227
227
|
</template>
|
|
228
228
|
|
|
229
229
|
Hints:
|
|
@@ -241,18 +241,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
241
241
|
|
|
242
242
|
7. <if condition="<getopt-option-auto/> is not equal `true`">
|
|
243
243
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
In the following, you *MUST* *NOT* use the <user-dialog-tool/>
|
|
245
|
+
tool! Instead, you *MUST* just show a custom output, let the
|
|
246
|
+
user enter input, and then you set the result accordingly.
|
|
247
247
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
A<n
|
|
251
|
-
|
|
248
|
+
Let the user choose the preferred approach A<n/> by raising
|
|
249
|
+
a question with the following custom dialog, where per
|
|
250
|
+
approach A<n/>, you determine an ultra brief summary
|
|
251
|
+
<short-summary/> and then use the answer option `A<n/>:
|
|
252
|
+
⚝ **RECOMMENDATION** ⚝: <short-summary/>` for your
|
|
253
|
+
recommended approach plus zero or more answer options `A<n/>:
|
|
254
|
+
<short-summary/>` for all other approaches:
|
|
252
255
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
<expand name="custom-dialog">
|
|
256
|
+
<expand name="custom-dialog" arg1="--no-other">
|
|
256
257
|
Select Approach: Select your preferred crafting approach to follow?
|
|
257
258
|
A<n/>: <short-summary/>
|
|
258
259
|
[...]
|
|
@@ -342,17 +343,20 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
342
343
|
Hand off to `ase-task-edit`.
|
|
343
344
|
<if condition="<head/> is equal `EDIT`">
|
|
344
345
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
345
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
346
|
+
tokens (joined back with `,`, or `none` if empty). `EDIT`
|
|
347
|
+
is this skill's own dispatch token, *not* part of
|
|
348
|
+
`ase-task-edit`'s `--next` vocabulary, so it must be
|
|
349
|
+
stripped here rather than forwarded.
|
|
346
350
|
</if>
|
|
347
351
|
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
348
352
|
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
349
|
-
head itself.
|
|
353
|
+
own head itself.
|
|
350
354
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
351
355
|
Set <args><args/> --next <getopt-option-next/></args>
|
|
352
356
|
</if>
|
|
353
357
|
Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
|
|
354
358
|
</else>
|
|
355
359
|
|
|
356
|
-
|
|
360
|
+
</step>
|
|
357
361
|
|
|
358
362
|
</flow>
|
|
@@ -14,13 +14,18 @@ allowed-tools:
|
|
|
14
14
|
|
|
15
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
16
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
17
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
17
18
|
|
|
18
19
|
<skill name="ase-code-explain">
|
|
19
20
|
Explain Source Code
|
|
20
21
|
</skill>
|
|
21
22
|
|
|
23
|
+
<expand name="getopt" arg1="ase-code-explain">
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</expand>
|
|
26
|
+
|
|
22
27
|
<objective>
|
|
23
|
-
*Analyze* the source code of
|
|
28
|
+
*Analyze* the source code of <getopt-arguments/>, and its directly related source
|
|
24
29
|
code and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
25
30
|
</objective>
|
|
26
31
|
|
|
@@ -7,23 +7,29 @@ user-invocable: true
|
|
|
7
7
|
disable-model-invocation: false
|
|
8
8
|
effort: high
|
|
9
9
|
allowed-tools:
|
|
10
|
-
- "Bash(git)"
|
|
11
|
-
- "Bash(
|
|
12
|
-
- "Bash(
|
|
13
|
-
- "Bash(
|
|
10
|
+
- "Bash(git *)"
|
|
11
|
+
- "Bash(grep *)"
|
|
12
|
+
- "Bash(sort *)"
|
|
13
|
+
- "Bash(uniq *)"
|
|
14
|
+
- "Bash(head *)"
|
|
14
15
|
- "Skill"
|
|
15
16
|
- "Agent"
|
|
16
17
|
---
|
|
17
18
|
|
|
18
19
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
19
20
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
21
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
20
22
|
|
|
21
23
|
<skill name="ase-code-insight">
|
|
22
24
|
Project Insight
|
|
23
25
|
</skill>
|
|
24
26
|
|
|
27
|
+
<expand name="getopt" arg1="ase-code-insight">
|
|
28
|
+
$ARGUMENTS
|
|
29
|
+
</expand>
|
|
30
|
+
|
|
25
31
|
<objective>
|
|
26
|
-
Give *insights* into the project through the source code of
|
|
32
|
+
Give *insights* into the project through the source code of <getopt-arguments/>.
|
|
27
33
|
</objective>
|
|
28
34
|
|
|
29
35
|
<flow>
|
|
@@ -152,7 +152,7 @@ related to a set of code quality aspects.
|
|
|
152
152
|
3. Append the following <template/> to <diff-file/>:
|
|
153
153
|
|
|
154
154
|
<template>
|
|
155
|
-
@@ -<old-start/>,<
|
|
155
|
+
@@ -<old-start/>,<old-count/> +<new-start/>,<new-count/> @@
|
|
156
156
|
<context-before/>
|
|
157
157
|
-<old-text/>
|
|
158
158
|
+<new-text/>
|
|
@@ -164,10 +164,10 @@ related to a set of code quality aspects.
|
|
|
164
164
|
the line of <context-before/> (one before <line/>).
|
|
165
165
|
- The <new-start/> is the same as <old-start/> (the unchanged
|
|
166
166
|
<context-before/> line shares the same start in both files).
|
|
167
|
-
- The <
|
|
167
|
+
- The <old-count/> is the total number of old-side hunk lines, i.e.,
|
|
168
168
|
the number of lines in <context-before/>, <old-text/>, and
|
|
169
169
|
<context-after/> combined.
|
|
170
|
-
- The <
|
|
170
|
+
- The <new-count/> is the total number of new-side hunk lines, i.e.,
|
|
171
171
|
the number of lines in <context-before/>, <new-text/>, and
|
|
172
172
|
<context-after/> combined.
|
|
173
173
|
|
|
@@ -215,11 +215,11 @@ related to a set of code quality aspects.
|
|
|
215
215
|
|
|
216
216
|
6. <if condition="<getopt-option-auto/> is not 'true'">
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
In the following, you *MUST* *NOT* use the <user-dialog-tool/>
|
|
219
|
+
tool! Instead, you *MUST* just show a custom output, let the
|
|
220
|
+
user enter input, and then you set the result accordingly.
|
|
221
221
|
|
|
222
|
-
<expand name="custom-dialog">
|
|
222
|
+
<expand name="custom-dialog" arg1="--other">
|
|
223
223
|
CORRECTION: How would you like to proceed with this proposed correction?
|
|
224
224
|
ACCEPT: Apply the proposed correction.
|
|
225
225
|
REJECT: Skip this proposed correction.
|
|
@@ -248,9 +248,15 @@ related to a set of code quality aspects.
|
|
|
248
248
|
- <if condition="<result/> starts with 'OTHER'">
|
|
249
249
|
Generate a *new* proposal for the *same* <item/>
|
|
250
250
|
(incorporating the user's free-text hint from <result/> if
|
|
251
|
-
provided via the "OTHER" prefix)
|
|
252
|
-
|
|
253
|
-
|
|
251
|
+
provided via the "OTHER" prefix). *Reassign* <description/>
|
|
252
|
+
and <change-set/> to reflect this refined proposal (each
|
|
253
|
+
change-hunk's `old_text` stays anchored to the existing
|
|
254
|
+
text at its `file`:`line`; `new_text` carries the
|
|
255
|
+
refinement) so that the substep 2/3 rebuild renders the new
|
|
256
|
+
<diff/> and any `Edit` applies the new proposal rather than
|
|
257
|
+
the original. Then loop back to substep 2 of this iteration.
|
|
258
|
+
There is *no* cap on refinement rounds - keep refining until
|
|
259
|
+
the user picks `ACCEPT` or `REJECT`.
|
|
254
260
|
</if>
|
|
255
261
|
|
|
256
262
|
- <if condition="
|