@rse/ase 0.9.7 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dst/ase-getopt.js +71 -5
- package/dst/ase-hook.js +6 -21
- package/dst/ase-markdown.js +32 -11
- package/dst/ase-mcp.js +22 -8
- package/dst/ase-notify.js +32 -0
- package/dst/ase-service.js +5 -2
- package/dst/ase-setup.js +45 -131
- package/dst/ase-skills.js +17 -13
- package/dst/ase-statusline.js +8 -12
- package/dst/ase-task.js +32 -23
- package/package.json +3 -3
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-docs-proofread.md +2 -2
- package/plugin/meta/ase-constitution.md +7 -0
- package/plugin/meta/ase-control.md +24 -3
- package/plugin/meta/ase-dialog.md +105 -7
- package/plugin/meta/ase-format-task.md +2 -2
- package/plugin/meta/ase-getopt.md +31 -22
- package/plugin/meta/ase-skill.md +87 -12
- package/plugin/package.json +2 -2
- package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
- package/plugin/skills/ase-arch-analyze/help.md +2 -2
- package/plugin/skills/ase-arch-discover/SKILL.md +56 -34
- package/plugin/skills/ase-arch-discover/help.md +1 -1
- package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
- package/plugin/skills/ase-code-analyze/help.md +2 -2
- package/plugin/skills/ase-code-craft/SKILL.md +83 -71
- package/plugin/skills/ase-code-craft/help.md +2 -2
- package/plugin/skills/ase-code-explain/SKILL.md +1 -1
- package/plugin/skills/ase-code-explain/help.md +1 -1
- package/plugin/skills/ase-code-insight/SKILL.md +1 -1
- package/plugin/skills/ase-code-insight/help.md +1 -1
- package/plugin/skills/ase-code-lint/SKILL.md +35 -18
- package/plugin/skills/ase-code-lint/help.md +2 -2
- package/plugin/skills/ase-code-refactor/SKILL.md +81 -70
- package/plugin/skills/ase-code-refactor/help.md +2 -2
- package/plugin/skills/ase-code-resolve/SKILL.md +83 -70
- package/plugin/skills/ase-code-resolve/help.md +3 -3
- package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
- package/plugin/skills/ase-docs-distill/help.md +4 -4
- package/plugin/skills/ase-docs-proofread/SKILL.md +36 -19
- package/plugin/skills/ase-docs-proofread/help.md +1 -1
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +29 -8
- package/plugin/skills/ase-meta-brainstorm/help.md +7 -11
- package/plugin/skills/ase-meta-changelog/help.md +1 -1
- package/plugin/skills/ase-meta-chat/help.md +1 -1
- package/plugin/skills/ase-meta-commit/help.md +1 -1
- package/plugin/skills/ase-meta-diaboli/help.md +2 -2
- package/plugin/skills/ase-meta-diff/SKILL.md +6 -5
- package/plugin/skills/ase-meta-diff/help.md +11 -12
- package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
- package/plugin/skills/ase-meta-evaluate/help.md +2 -2
- package/plugin/skills/ase-meta-persona/help.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
- package/plugin/skills/ase-meta-quorum/help.md +1 -1
- package/plugin/skills/ase-meta-review/SKILL.md +3 -4
- package/plugin/skills/ase-meta-review/help.md +5 -5
- package/plugin/skills/ase-meta-search/SKILL.md +9 -8
- package/plugin/skills/ase-meta-search/help.md +1 -1
- package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
- package/plugin/skills/ase-meta-steelman/help.md +2 -2
- package/plugin/skills/ase-meta-why/SKILL.md +16 -10
- package/plugin/skills/ase-meta-why/help.md +1 -1
- package/plugin/skills/ase-task-condense/SKILL.md +36 -19
- package/plugin/skills/ase-task-condense/help.md +3 -3
- package/plugin/skills/ase-task-delete/SKILL.md +6 -3
- package/plugin/skills/ase-task-delete/help.md +2 -2
- package/plugin/skills/ase-task-edit/SKILL.md +61 -36
- package/plugin/skills/ase-task-edit/help.md +4 -4
- package/plugin/skills/ase-task-grill/SKILL.md +57 -26
- package/plugin/skills/ase-task-grill/help.md +3 -3
- package/plugin/skills/ase-task-id/SKILL.md +11 -2
- package/plugin/skills/ase-task-id/help.md +2 -2
- package/plugin/skills/ase-task-implement/SKILL.md +40 -17
- package/plugin/skills/ase-task-implement/help.md +2 -2
- package/plugin/skills/ase-task-list/SKILL.md +1 -1
- package/plugin/skills/ase-task-list/help.md +2 -2
- package/plugin/skills/ase-task-preflight/SKILL.md +44 -22
- package/plugin/skills/ase-task-preflight/help.md +3 -3
- package/plugin/skills/ase-task-reboot/SKILL.md +31 -20
- package/plugin/skills/ase-task-reboot/help.md +2 -2
- package/plugin/skills/ase-task-rename/SKILL.md +5 -3
- package/plugin/skills/ase-task-rename/help.md +2 -2
- package/plugin/skills/ase-task-view/help.md +26 -7
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -25,6 +25,18 @@ Skill Output
|
|
|
25
25
|
Unicode characters, and the potential reduction of prose according
|
|
26
26
|
to the currently defined persona style.
|
|
27
27
|
|
|
28
|
+
- *IMPORTANT*: For *Final-Message-Only Display* ("focus mode"):
|
|
29
|
+
some agent harnesses show the user only the *final* text message of
|
|
30
|
+
a turn and *hide* all text emitted *between* tool calls. If your
|
|
31
|
+
harness instructions indicate such a mode (e.g. *Claude Code* with
|
|
32
|
+
"focus mode" enabled), you *MUST* repeat *all* <template/> outputs
|
|
33
|
+
emitted since the last shown final text message -- *verbatim*, in
|
|
34
|
+
their *original order*, and each only *once* -- at the *top* of the
|
|
35
|
+
next final text message (i.e. the text after the last tool call of
|
|
36
|
+
a turn). Never *drop* or *summarize* a <template/> output just
|
|
37
|
+
because it would land between tool calls. If no such display mode
|
|
38
|
+
is indicated, do *not* repeat anything.
|
|
39
|
+
|
|
28
40
|
- *IMPORTANT*: The active *persona style* (see `ase-persona.md`) *MUST* be applied
|
|
29
41
|
to all *free-text placeholders* within <template/> sections - i.e. any placeholder
|
|
30
42
|
whose content you author yourself (such as `<description/>`, `<title/>`, `<objective/>`,
|
|
@@ -98,14 +110,21 @@ Skill Sequential Processing
|
|
|
98
110
|
- *IMPORTANT*: For each given <flow/>, you *MUST* use the
|
|
99
111
|
`TaskCreate` tool to create a corresponding set of processing steps.
|
|
100
112
|
|
|
101
|
-
Each `<step id="xxx" [...]
|
|
102
|
-
subject: "xxx", description: "xxx"
|
|
103
|
-
words, use the text of the `id` attribute of <step/>
|
|
104
|
-
|
|
113
|
+
Each `<step id="xxx" [...]>...</step>` corresponds to a
|
|
114
|
+
`TaskCreate({ subject: "xxx", description: "xxx" })`. In other
|
|
115
|
+
words, use the text of the `id` attribute of <step/> exactly
|
|
116
|
+
*as-is* for both the `subject`, and the `description` fields of
|
|
105
117
|
`TaskCreate`.
|
|
106
118
|
|
|
107
|
-
|
|
108
|
-
|
|
119
|
+
For speed, emit *all* `TaskCreate` calls together in a *single* turn
|
|
120
|
+
(issued in parallel), *not* one-per-turn sequentially. Do *not*
|
|
121
|
+
rely on the call order to establish the step order, as the parallel
|
|
122
|
+
results carry no guaranteed ordering. Instead, in the *immediately
|
|
123
|
+
following* turn, establish the strict order explicitly by chaining
|
|
124
|
+
the created tasks with `TaskUpdate`: for each <step/> after the
|
|
125
|
+
first one, call `TaskUpdate({ taskId: "<this/>", addBlockedBy:
|
|
126
|
+
[ "<prev/>" ] })` so that every step (with `taskId` <this/>) is
|
|
127
|
+
blocked by its predecessor step (with `taskId` <prev/>).
|
|
109
128
|
|
|
110
129
|
- *IMPORTANT*: For each <step/> you *MUST* use the `TaskUpdate` tool
|
|
111
130
|
for updating its status during processing.
|
|
@@ -208,12 +227,12 @@ Template Patterns
|
|
|
208
227
|
</template>
|
|
209
228
|
|
|
210
229
|
- When `<ase-tpl-head title="<title/>"/>` should be expanded, use
|
|
211
|
-
(where <bar/> = "─" x (
|
|
212
|
-
the "─" character repeated (
|
|
230
|
+
(where <bar/> = "─" x (67 - length("⧉ ASE: <title/>")), i.e., <bar/> is
|
|
231
|
+
the "─" character repeated (67 - length("⧉ ASE: <title/>")) times):
|
|
213
232
|
|
|
214
233
|
<template>
|
|
215
234
|
|
|
216
|
-
╭────━━━━**(**
|
|
235
|
+
╭────━━━━**(** `⧉ ASE`: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
|
|
217
236
|
|
|
218
237
|
</template>
|
|
219
238
|
|
|
@@ -226,15 +245,65 @@ Template Patterns
|
|
|
226
245
|
</template>
|
|
227
246
|
|
|
228
247
|
- When `<ase-tpl-foot title="<title/>"/>` should be expanded, use
|
|
229
|
-
(where <bar/> = "─" x (
|
|
230
|
-
the "─" character repeated (
|
|
248
|
+
(where <bar/> = "─" x (67 - length("⧉ ASE: <title/>")), i.e., <bar/> is
|
|
249
|
+
the "─" character repeated (67 - length("⧉ ASE: <title/>")) times):
|
|
250
|
+
|
|
251
|
+
<template>
|
|
252
|
+
|
|
253
|
+
╰────━━━━**(** `⧉ ASE`: **`<title/>`** **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
|
|
254
|
+
|
|
255
|
+
</template>
|
|
256
|
+
|
|
257
|
+
- When `<ase-tpl-boxline><line/></ase-tpl-boxline>` should be expanded, use:
|
|
258
|
+
|
|
259
|
+
<if condition="<line/> is not empty">
|
|
260
|
+
<template>
|
|
261
|
+
│ <line/>
|
|
262
|
+
</template>
|
|
263
|
+
</if>
|
|
264
|
+
<else>
|
|
265
|
+
<template>
|
|
266
|
+
│
|
|
267
|
+
</template>
|
|
268
|
+
</else>
|
|
269
|
+
|
|
270
|
+
- When `<ase-tpl-boxed title="<title/>"[ subtitle="<subtitle/>"]><content/></ase-tpl-boxed>`
|
|
271
|
+
should be expanded use the following helper placeholder and then the <template/>:
|
|
272
|
+
|
|
273
|
+
- <if condition="<subtitle/> is not empty">
|
|
274
|
+
Set <raw-title>⧉ ASE: <title/>: <subtitle/><raw-title>.
|
|
275
|
+
Set <render-title>`⧉ ASE`: **`<title/>`**: `<subtitle/>`</render-title>.
|
|
276
|
+
</if>
|
|
277
|
+
<else>
|
|
278
|
+
Set <raw-title>⧉ ASE: <title/><raw-title>.
|
|
279
|
+
Set <render-title>`⧉ ASE`: **`<title/>`**</render-title>.
|
|
280
|
+
</else>
|
|
281
|
+
- Set <bar/> to ("─" x (67 - length("<raw-title/>"))),
|
|
282
|
+
i.e., set <bar/> to the "─" character repeated (67 - length("<raw-title/>")) times.
|
|
283
|
+
- Set <body> to <content/> with all line-starts prefixed with `│ `.
|
|
231
284
|
|
|
232
285
|
<template>
|
|
233
286
|
|
|
234
|
-
|
|
287
|
+
╭────━━━━**(** <render-title/> **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
|
|
288
|
+
│
|
|
289
|
+
<body/>
|
|
290
|
+
│
|
|
291
|
+
╰────━━━━**(** <render-title/> **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
|
|
235
292
|
|
|
236
293
|
</template>
|
|
237
294
|
|
|
295
|
+
- When `<ase-tpl-key digit="<digit/>"/>` should be expanded, use:
|
|
296
|
+
|
|
297
|
+
<if condition="<digit/> is '1'"><template>➊</template></if>
|
|
298
|
+
<if condition="<digit/> is '2'"><template>➋</template></if>
|
|
299
|
+
<if condition="<digit/> is '3'"><template>➌</template></if>
|
|
300
|
+
<if condition="<digit/> is '4'"><template>➍</template></if>
|
|
301
|
+
<if condition="<digit/> is '5'"><template>➎</template></if>
|
|
302
|
+
<if condition="<digit/> is '6'"><template>➏</template></if>
|
|
303
|
+
<if condition="<digit/> is '7'"><template>➐</template></if>
|
|
304
|
+
<if condition="<digit/> is '8'"><template>➑</template></if>
|
|
305
|
+
<if condition="<digit/> is '9'"><template>➒</template></if>
|
|
306
|
+
|
|
238
307
|
- When `<ase-tpl-bullet-secondary/>` should be expanded, use:
|
|
239
308
|
|
|
240
309
|
<template>⚪</template>
|
|
@@ -246,3 +315,9 @@ Template Patterns
|
|
|
246
315
|
- When `<ase-tpl-bullet-signal/>` should be expanded, use:
|
|
247
316
|
|
|
248
317
|
<template>🟠</template>
|
|
318
|
+
|
|
319
|
+
- When `<ase-tpl-pad width="<width/>" text="<text/>"/>` should be expanded, use
|
|
320
|
+
(where <ws/> = ` ` x (<width/> - length("<text/>")), i.e., <ws/> is
|
|
321
|
+
the ` ` character repeated (<width/> - length("<text/>")) times):
|
|
322
|
+
|
|
323
|
+
<template><text/><ws/></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.9",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@rse/stx": "1.1.5",
|
|
18
|
-
"markdownlint": "0.
|
|
18
|
+
"markdownlint": "0.41.0",
|
|
19
19
|
"markdownlint-cli2": "0.22.1",
|
|
20
20
|
"eslint": "10.4.1",
|
|
21
21
|
"@eslint/markdown": "8.0.2",
|
|
@@ -7,94 +7,94 @@ disable-model-invocation: false
|
|
|
7
7
|
model: opus
|
|
8
8
|
effort: high
|
|
9
9
|
allowed-tools:
|
|
10
|
-
- "Bash(wc
|
|
11
|
-
- "Bash(ls
|
|
12
|
-
- "Bash(tree
|
|
13
|
-
- "Bash(file
|
|
14
|
-
- "Bash(du
|
|
15
|
-
- "Bash(stat
|
|
16
|
-
- "Bash(grep
|
|
17
|
-
- "Bash(awk
|
|
18
|
-
- "Bash(head
|
|
19
|
-
- "Bash(tail
|
|
20
|
-
- "Bash(sort
|
|
21
|
-
- "Bash(uniq
|
|
22
|
-
- "Bash(cat
|
|
23
|
-
- "Bash(cut
|
|
24
|
-
- "Bash(tr
|
|
25
|
-
- "Bash(nl
|
|
26
|
-
- "Bash(column
|
|
27
|
-
- "Bash(diff
|
|
28
|
-
- "Bash(cmp
|
|
29
|
-
- "Bash(jq
|
|
30
|
-
- "Bash(cloc
|
|
31
|
-
- "Bash(tokei
|
|
32
|
-
- "Bash(scc
|
|
33
|
-
- "Bash(basename
|
|
34
|
-
- "Bash(dirname
|
|
35
|
-
- "Bash(realpath
|
|
36
|
-
- "Bash(readlink
|
|
37
|
-
- "Bash(pwd
|
|
38
|
-
- "Bash(which
|
|
39
|
-
- "Bash(whereis
|
|
40
|
-
- "Bash(type
|
|
41
|
-
- "Bash(namei
|
|
42
|
-
- "Bash(git log
|
|
43
|
-
- "Bash(git show
|
|
44
|
-
- "Bash(git diff
|
|
45
|
-
- "Bash(git blame
|
|
46
|
-
- "Bash(git ls-files
|
|
47
|
-
- "Bash(git ls-tree
|
|
48
|
-
- "Bash(git grep
|
|
49
|
-
- "Bash(git status
|
|
50
|
-
- "Bash(git rev-list
|
|
51
|
-
- "Bash(git rev-parse
|
|
52
|
-
- "Bash(git for-each-ref
|
|
53
|
-
- "Bash(git reflog
|
|
54
|
-
- "Bash(git cat-file
|
|
55
|
-
- "Bash(git config --get
|
|
56
|
-
- "Bash(git config --list
|
|
57
|
-
- "Bash(git remote
|
|
58
|
-
- "Bash(git branch
|
|
59
|
-
- "Bash(git tag --list
|
|
60
|
-
- "Bash(git describe
|
|
61
|
-
- "Bash(git shortlog
|
|
62
|
-
- "Bash(find * -name
|
|
63
|
-
- "Bash(find * -type
|
|
64
|
-
- "Bash(find * -path
|
|
65
|
-
- "Bash(find * -maxdepth
|
|
66
|
-
- "Bash(find * -mindepth
|
|
67
|
-
- "Bash(find * -size
|
|
68
|
-
- "Bash(find * -mtime
|
|
69
|
-
- "Bash(find * -newer
|
|
70
|
-
- "Bash(git diff
|
|
71
|
-
- "Bash(git diff
|
|
72
|
-
- "Bash(git diff
|
|
73
|
-
- "Bash(git diff
|
|
74
|
-
- "Bash(git diff
|
|
75
|
-
- "Bash(git log
|
|
76
|
-
- "Bash(git log
|
|
77
|
-
- "Bash(git log
|
|
78
|
-
- "Bash(git show
|
|
79
|
-
- "Bash(git show
|
|
80
|
-
- "Bash(git grep
|
|
81
|
-
- "Bash(git grep
|
|
82
|
-
- "Bash(git ls-files
|
|
83
|
-
- "Bash(git ls-files
|
|
84
|
-
- "Bash(git ls-files
|
|
85
|
-
- "Bash(grep
|
|
86
|
-
- "Bash(grep
|
|
87
|
-
- "Bash(grep
|
|
88
|
-
- "Bash(grep
|
|
89
|
-
- "Bash(cat
|
|
90
|
-
- "Bash(cat
|
|
91
|
-
- "Bash(cat
|
|
92
|
-
- "Bash(cat
|
|
93
|
-
- "Bash(find
|
|
94
|
-
- "Bash(find
|
|
95
|
-
- "Bash(awk
|
|
96
|
-
- "Bash(sort
|
|
97
|
-
- "Bash(sort
|
|
10
|
+
- "Bash(wc *)"
|
|
11
|
+
- "Bash(ls *)"
|
|
12
|
+
- "Bash(tree *)"
|
|
13
|
+
- "Bash(file *)"
|
|
14
|
+
- "Bash(du *)"
|
|
15
|
+
- "Bash(stat *)"
|
|
16
|
+
- "Bash(grep *)"
|
|
17
|
+
- "Bash(awk *)"
|
|
18
|
+
- "Bash(head *)"
|
|
19
|
+
- "Bash(tail *)"
|
|
20
|
+
- "Bash(sort *)"
|
|
21
|
+
- "Bash(uniq *)"
|
|
22
|
+
- "Bash(cat *)"
|
|
23
|
+
- "Bash(cut *)"
|
|
24
|
+
- "Bash(tr *)"
|
|
25
|
+
- "Bash(nl *)"
|
|
26
|
+
- "Bash(column *)"
|
|
27
|
+
- "Bash(diff *)"
|
|
28
|
+
- "Bash(cmp *)"
|
|
29
|
+
- "Bash(jq *)"
|
|
30
|
+
- "Bash(cloc *)"
|
|
31
|
+
- "Bash(tokei *)"
|
|
32
|
+
- "Bash(scc *)"
|
|
33
|
+
- "Bash(basename *)"
|
|
34
|
+
- "Bash(dirname *)"
|
|
35
|
+
- "Bash(realpath *)"
|
|
36
|
+
- "Bash(readlink *)"
|
|
37
|
+
- "Bash(pwd *)"
|
|
38
|
+
- "Bash(which *)"
|
|
39
|
+
- "Bash(whereis *)"
|
|
40
|
+
- "Bash(type *)"
|
|
41
|
+
- "Bash(namei *)"
|
|
42
|
+
- "Bash(git log *)"
|
|
43
|
+
- "Bash(git show *)"
|
|
44
|
+
- "Bash(git diff *)"
|
|
45
|
+
- "Bash(git blame *)"
|
|
46
|
+
- "Bash(git ls-files *)"
|
|
47
|
+
- "Bash(git ls-tree *)"
|
|
48
|
+
- "Bash(git grep *)"
|
|
49
|
+
- "Bash(git status *)"
|
|
50
|
+
- "Bash(git rev-list *)"
|
|
51
|
+
- "Bash(git rev-parse *)"
|
|
52
|
+
- "Bash(git for-each-ref *)"
|
|
53
|
+
- "Bash(git reflog *)"
|
|
54
|
+
- "Bash(git cat-file *)"
|
|
55
|
+
- "Bash(git config --get *)"
|
|
56
|
+
- "Bash(git config --list *)"
|
|
57
|
+
- "Bash(git remote *)"
|
|
58
|
+
- "Bash(git branch *)"
|
|
59
|
+
- "Bash(git tag --list *)"
|
|
60
|
+
- "Bash(git describe *)"
|
|
61
|
+
- "Bash(git shortlog *)"
|
|
62
|
+
- "Bash(find * -name *)"
|
|
63
|
+
- "Bash(find * -type *)"
|
|
64
|
+
- "Bash(find * -path *)"
|
|
65
|
+
- "Bash(find * -maxdepth *)"
|
|
66
|
+
- "Bash(find * -mindepth *)"
|
|
67
|
+
- "Bash(find * -size *)"
|
|
68
|
+
- "Bash(find * -mtime *)"
|
|
69
|
+
- "Bash(find * -newer *)"
|
|
70
|
+
- "Bash(git diff * | awk *)"
|
|
71
|
+
- "Bash(git diff * | grep *)"
|
|
72
|
+
- "Bash(git diff * | head *)"
|
|
73
|
+
- "Bash(git diff * | tail *)"
|
|
74
|
+
- "Bash(git diff * | wc *)"
|
|
75
|
+
- "Bash(git log * | head *)"
|
|
76
|
+
- "Bash(git log * | grep *)"
|
|
77
|
+
- "Bash(git log * | wc *)"
|
|
78
|
+
- "Bash(git show * | head *)"
|
|
79
|
+
- "Bash(git show * | grep *)"
|
|
80
|
+
- "Bash(git grep * | head *)"
|
|
81
|
+
- "Bash(git grep * | wc *)"
|
|
82
|
+
- "Bash(git ls-files * | grep *)"
|
|
83
|
+
- "Bash(git ls-files * | head *)"
|
|
84
|
+
- "Bash(git ls-files * | wc *)"
|
|
85
|
+
- "Bash(grep * | head *)"
|
|
86
|
+
- "Bash(grep * | sort *)"
|
|
87
|
+
- "Bash(grep * | wc *)"
|
|
88
|
+
- "Bash(grep * | sort * | uniq *)"
|
|
89
|
+
- "Bash(cat * | grep *)"
|
|
90
|
+
- "Bash(cat * | awk *)"
|
|
91
|
+
- "Bash(cat * | head *)"
|
|
92
|
+
- "Bash(cat * | wc *)"
|
|
93
|
+
- "Bash(find * | head *)"
|
|
94
|
+
- "Bash(find * | wc *)"
|
|
95
|
+
- "Bash(awk * | head *)"
|
|
96
|
+
- "Bash(sort * | uniq *)"
|
|
97
|
+
- "Bash(sort * | head *)"
|
|
98
98
|
- "Agent"
|
|
99
99
|
- "Skill"
|
|
100
100
|
---
|
|
@@ -437,7 +437,6 @@ interface quality, quality attributes, and architecture governance.
|
|
|
437
437
|
Finally, output the following <template/> to give a final hint:
|
|
438
438
|
|
|
439
439
|
<template>
|
|
440
|
-
⧉ **ASE**: ☻ skill: **<skill-name/>**, ▶ status: **skill finished**
|
|
441
440
|
⧉ **ASE**: ↪ hint: **For deeper analysis, suggestions on solution approaches and then final source code changes, use `/ase-code-resolve P{n}` or `/ase-code-resolve T{n}` in the same or even a different session.**
|
|
442
441
|
</template>
|
|
443
442
|
</step>
|
|
@@ -46,5 +46,5 @@ Analyze a specific module:
|
|
|
46
46
|
|
|
47
47
|
## SEE ALSO
|
|
48
48
|
|
|
49
|
-
`ase-arch-discover
|
|
50
|
-
`ase-code-refactor
|
|
49
|
+
[`ase-arch-discover`](../ase-arch-discover/help.md), [`ase-code-analyze`](../ase-code-analyze/help.md), [`ase-code-resolve`](../ase-code-resolve/help.md),
|
|
50
|
+
[`ase-code-refactor`](../ase-code-refactor/help.md), [`ase-code-insight`](../ase-code-insight/help.md).
|
|
@@ -37,13 +37,26 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
37
37
|
|
|
38
38
|
<flow>
|
|
39
39
|
1. <step id="STEP 1: Determine Functionality">
|
|
40
|
-
|
|
40
|
+
1. Derive the needed <functionality/> from the <request/>, but keep
|
|
41
41
|
the functionality description very *brief* but still *precise*.
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
2. If <functionality/> is not clear, not precise, or not specific
|
|
44
|
+
enough, let the *user interactively choose* the intended
|
|
45
|
+
functionality. For this you *MUST* use the custom `custom-dialog`
|
|
46
|
+
and *NOT* the `AskUserQuestion` based "user-dialog":
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
<expand name="custom-dialog">
|
|
49
|
+
Functionality: Which functionality should the components provide?
|
|
50
|
+
<answer-1/>: (grounded candidate functionality 1)
|
|
51
|
+
<answer-2/>: (grounded candidate functionality 2)
|
|
52
|
+
<answer-3/>: (grounded candidate functionality 2)
|
|
53
|
+
<answer-4/>: (grounded candidate functionality 3)
|
|
54
|
+
</expand>
|
|
55
|
+
|
|
56
|
+
Then use the <result/> and its corresponding grounded candidate
|
|
57
|
+
functionality to adjust <functionality/> accordingly.
|
|
58
|
+
|
|
59
|
+
3. Display the determined final functionality with just the following
|
|
47
60
|
<template/>:
|
|
48
61
|
|
|
49
62
|
<template>
|
|
@@ -52,32 +65,32 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
52
65
|
</step>
|
|
53
66
|
|
|
54
67
|
2. <step id="STEP 2: Determine Technology Stack">
|
|
55
|
-
|
|
68
|
+
1. Determine the used technology stack:
|
|
56
69
|
|
|
57
|
-
|
|
70
|
+
1. If a file `package.json` is found in the top-level directory
|
|
58
71
|
of the project and contains an entry `typescript` under `dependencies`
|
|
59
72
|
or `devDependencies`, then <stack>TypeScript</stack>.
|
|
60
73
|
|
|
61
|
-
|
|
74
|
+
2. Else, if a file `package.json` is found in the top-level directory
|
|
62
75
|
of the project, then <stack>JavaScript</stack>.
|
|
63
76
|
|
|
64
|
-
|
|
77
|
+
3. Else, if a file `build.gradle.kts` or `settings.gradle.kts`
|
|
65
78
|
is found in the top-level directory, then <stack>Kotlin</stack>.
|
|
66
79
|
|
|
67
|
-
|
|
80
|
+
4. Else, if a file `build.gradle` is found in the top-level directory and
|
|
68
81
|
is applying `kotlin`, `org.jetbrains.kotlin.jvm`, `kotlin-android`,
|
|
69
82
|
or `kotlin-multiplatform` plugins, then <stack>Kotlin</stack>.
|
|
70
83
|
|
|
71
|
-
|
|
84
|
+
5. Else, if a file `pom.xml` is found in the top-level directory and
|
|
72
85
|
contains `kotlin-maven-plugin` or `kotlin-stdlib` dependencies, then
|
|
73
86
|
<stack>Kotlin</stack>.
|
|
74
87
|
|
|
75
|
-
|
|
88
|
+
6. Else, if a file `pom.xml` or `build.gradle` is found in the top-level directory
|
|
76
89
|
of the project, then <stack>Java</stack>.
|
|
77
90
|
|
|
78
|
-
|
|
91
|
+
7. Else, use <stack>Unknown</stack>.
|
|
79
92
|
|
|
80
|
-
|
|
93
|
+
2. Display the determined final technology stack with just the
|
|
81
94
|
following <template/>:
|
|
82
95
|
|
|
83
96
|
<template>
|
|
@@ -86,26 +99,35 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
86
99
|
</step>
|
|
87
100
|
|
|
88
101
|
3. <step id="STEP 3: Discover Components">
|
|
89
|
-
|
|
102
|
+
1. If <stack/> is "Unknown", the technology stack could not be
|
|
103
|
+
determined and no component discovery backend is available.
|
|
104
|
+
Inform the user with just the following <template/> and then
|
|
105
|
+
*STOP* the entire flow (do not perform any further steps):
|
|
106
|
+
|
|
107
|
+
<template>
|
|
108
|
+
<ase-tpl-bullet-normal/> **RESULT**: technology stack could not be determined -- component discovery is only supported for JavaScript, TypeScript, Java, and Kotlin projects.
|
|
109
|
+
</template>
|
|
110
|
+
|
|
111
|
+
2. From <stack/> and <functionality/>, derive essential keywords
|
|
90
112
|
<keyword-L/> (L=1-M), which allow you to search for suitable
|
|
91
113
|
components.
|
|
92
114
|
|
|
93
|
-
|
|
115
|
+
3.. In the to be discovered result set of components <component-K/>
|
|
94
116
|
(K=1-N), remember the component name as <name-K/>, the
|
|
95
117
|
official package name as <package-K/>, the latest version as
|
|
96
118
|
<version-K/>, the stars as <stars-K/>, the created date as
|
|
97
119
|
<created-K/>, the last updated date as <updated-K/>, the total
|
|
98
120
|
number of downloads in the last month as <downloads-K/>.
|
|
99
121
|
|
|
100
|
-
|
|
122
|
+
4. If <stack/> is "JavaScript" or "TypeScript":
|
|
101
123
|
|
|
102
|
-
|
|
124
|
+
1. Based on the essential keywords <keyword-L/> (L=1-M),
|
|
103
125
|
use the `ase-meta-search` skill in a subagent to *generally*
|
|
104
126
|
discover an initial set of a maximum of <getopt-option-limit/> *NPM packages*
|
|
105
127
|
<component-K/> and at least their real name <name-K/> and
|
|
106
128
|
their unique package names <package-K/>.
|
|
107
129
|
|
|
108
|
-
|
|
130
|
+
2. Use the shell command `npm search --json --searchlimit <getopt-option-limit/>
|
|
109
131
|
"<keyword-1/>" [...] "<keyword-M/>"` to *specifically*
|
|
110
132
|
discover an additional set of a maximum of <getopt-option-limit/> *NPM packages*
|
|
111
133
|
<component-K/> and at least their unique package names
|
|
@@ -113,16 +135,16 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
113
135
|
(L=1-M). Merge the results into the already existing result
|
|
114
136
|
set, but deduplicate entries.
|
|
115
137
|
|
|
116
|
-
|
|
138
|
+
5. If <stack/> is "Java" or "Kotlin":
|
|
117
139
|
|
|
118
|
-
|
|
140
|
+
1. Based on the essential keywords <keyword-L/> (L=1-M),
|
|
119
141
|
use the `ase-meta-search` skill in a subagent to *generally*
|
|
120
142
|
discover an initial set of a maximum of <getopt-option-limit/> *Maven packages*
|
|
121
143
|
<component-K/> and at least their real name <name-K/> and
|
|
122
144
|
their unique Maven coordinates <package-K/> of the form
|
|
123
145
|
`groupId:artifactId`.
|
|
124
146
|
|
|
125
|
-
|
|
147
|
+
2. Use the shell command `curl -s 'https://search.maven.org/solrsearch/select?q=<keyword-1/>+[...]+<keyword-M/>&rows=<getopt-option-limit/>&wt=json'`
|
|
126
148
|
to *specifically* discover an additional set of a maximum
|
|
127
149
|
of <getopt-option-limit/> *Maven packages* <component-K/> and at least their
|
|
128
150
|
unique Maven coordinates <package-K/> (i.e. `<g/>:<a/>` from
|
|
@@ -131,7 +153,7 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
131
153
|
into the already existing result set, but deduplicate
|
|
132
154
|
entries by Maven coordinate.
|
|
133
155
|
|
|
134
|
-
|
|
156
|
+
6. Call the `ase_component_info(stack: "<stack/>", components:
|
|
135
157
|
[ "<package-1/>", ..., "<package-N/>" ])` tool of the `ase` MCP
|
|
136
158
|
server *once* for the entire set of discovered packages.
|
|
137
159
|
The tool dispatches internally on <stack/> and fetches all
|
|
@@ -145,11 +167,11 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
145
167
|
from `downloads` (numeric or `N.A.`) and <rank-K/> from `rank`
|
|
146
168
|
(numeric).
|
|
147
169
|
|
|
148
|
-
|
|
170
|
+
7. Sort, in descending order, the discovered components
|
|
149
171
|
<component-K/> (K=1-N) by their `rank` field and trim the result
|
|
150
172
|
list to just a maximum of <getopt-option-limit/> total components.
|
|
151
173
|
|
|
152
|
-
|
|
174
|
+
8. For each component <component-K/> (K=1-N), research and then
|
|
153
175
|
decide which *one* of *USP* (Unique Selling Point -- what makes
|
|
154
176
|
it unique), *Crux* (what you should notice), or *Gotcha* (what
|
|
155
177
|
you should not stumble over) is its single most distinguishing
|
|
@@ -160,31 +182,31 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
160
182
|
</step>
|
|
161
183
|
|
|
162
184
|
4. <step id="STEP 4: Report Components">
|
|
163
|
-
|
|
185
|
+
1. Display the determined, individual components as a Markdown
|
|
164
186
|
*table* with just the following <template/> and do not output
|
|
165
187
|
anything else:
|
|
166
188
|
|
|
167
189
|
<template>
|
|
168
190
|
<ase-tpl-bullet-normal/> **COMPONENT HINTS**:
|
|
169
191
|
|
|
170
|
-
| ⚑ *Component*
|
|
171
|
-
|
|
|
172
|
-
| **<
|
|
192
|
+
| ⚑ *Component* | ▣ *Package* | ⚖ *Hint* |
|
|
193
|
+
| :------------ | :------------- | :-------- |
|
|
194
|
+
| **<name-1/>** | `<package-1/>` | <info-1/> |
|
|
173
195
|
[...]
|
|
174
|
-
| **<
|
|
196
|
+
| **<name-N/>** | `<package-N/>` | <info-N/> |
|
|
175
197
|
</template>
|
|
176
198
|
|
|
177
|
-
|
|
199
|
+
2. Display the discovered components as a Markdown *table*
|
|
178
200
|
with just the following <template/>:
|
|
179
201
|
|
|
180
202
|
<template>
|
|
181
203
|
<ase-tpl-bullet-normal/> **COMPONENT RANKING**:
|
|
182
204
|
|
|
183
|
-
| ⚑ *Component*
|
|
184
|
-
|
|
|
185
|
-
| **<
|
|
205
|
+
| ⚑ *Component* | ▣ *Package* | ❖ *Version* | ↓ *Downloads* | ⎈ *Stars* | ⏲ *Updated* | ☆ *Created* |
|
|
206
|
+
| :------------ | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
|
|
207
|
+
| **<name-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
|
|
186
208
|
[...]
|
|
187
|
-
| **<
|
|
209
|
+
| **<name-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
|
|
188
210
|
</template>
|
|
189
211
|
</step>
|
|
190
212
|
</flow>
|
|
@@ -59,4 +59,4 @@ Discover a broader set of up to 20 HTTP client components:
|
|
|
59
59
|
|
|
60
60
|
## SEE ALSO
|
|
61
61
|
|
|
62
|
-
`ase-arch-analyze
|
|
62
|
+
[`ase-arch-analyze`](../ase-arch-analyze/help.md), [`ase-meta-search`](../ase-meta-search/help.md), [`ase-meta-evaluate`](../ase-meta-evaluate/help.md).
|
|
@@ -202,9 +202,12 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
202
202
|
<template>(`<filename/>#<function-or-method/>`)</template>.
|
|
203
203
|
|
|
204
204
|
- In <description/>, classify the problem with a <severity/>
|
|
205
|
-
of <template>LOW</template>, <template>MEDIUM</template
|
|
206
|
-
<template>HIGH</template>,
|
|
207
|
-
problem.
|
|
205
|
+
of <template>LOW</template>, <template>MEDIUM</template>,
|
|
206
|
+
<template>HIGH</template>, or <template>ACCEPTED</template>,
|
|
207
|
+
ranked by the estimated *impact* of the problem. Use
|
|
208
|
+
<template>ACCEPTED</template> when the problem is a deliberate,
|
|
209
|
+
justified trade-off that should remain on record but is never
|
|
210
|
+
dropped by the severity floor (see STEP 3).
|
|
208
211
|
|
|
209
212
|
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
210
213
|
In <evidence/>, ground the finding by citing either the inferred
|
|
@@ -241,5 +244,3 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
241
244
|
</step>
|
|
242
245
|
|
|
243
246
|
</flow>
|
|
244
|
-
|
|
245
|
-
</output>
|
|
@@ -83,5 +83,5 @@ Analyze a directory, reporting only `MEDIUM` and `HIGH` problems:
|
|
|
83
83
|
|
|
84
84
|
## SEE ALSO
|
|
85
85
|
|
|
86
|
-
`ase-code-resolve
|
|
87
|
-
`ase-code-explain
|
|
86
|
+
[`ase-code-resolve`](../ase-code-resolve/help.md), [`ase-code-refactor`](../ase-code-refactor/help.md), [`ase-code-lint`](../ase-code-lint/help.md),
|
|
87
|
+
[`ase-code-explain`](../ase-code-explain/help.md), [`ase-arch-analyze`](../ase-arch-analyze/help.md).
|