@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.
Files changed (85) hide show
  1. package/dst/ase-getopt.js +71 -5
  2. package/dst/ase-hook.js +6 -21
  3. package/dst/ase-markdown.js +32 -11
  4. package/dst/ase-mcp.js +22 -8
  5. package/dst/ase-notify.js +32 -0
  6. package/dst/ase-service.js +5 -2
  7. package/dst/ase-setup.js +45 -131
  8. package/dst/ase-skills.js +17 -13
  9. package/dst/ase-statusline.js +8 -12
  10. package/dst/ase-task.js +32 -23
  11. package/package.json +3 -3
  12. package/plugin/.claude-plugin/plugin.json +1 -1
  13. package/plugin/.github/plugin/plugin.json +1 -1
  14. package/plugin/agents/ase-docs-proofread.md +2 -2
  15. package/plugin/meta/ase-constitution.md +7 -0
  16. package/plugin/meta/ase-control.md +24 -3
  17. package/plugin/meta/ase-dialog.md +105 -7
  18. package/plugin/meta/ase-format-task.md +2 -2
  19. package/plugin/meta/ase-getopt.md +31 -22
  20. package/plugin/meta/ase-skill.md +87 -12
  21. package/plugin/package.json +2 -2
  22. package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
  23. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  24. package/plugin/skills/ase-arch-discover/SKILL.md +56 -34
  25. package/plugin/skills/ase-arch-discover/help.md +1 -1
  26. package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
  27. package/plugin/skills/ase-code-analyze/help.md +2 -2
  28. package/plugin/skills/ase-code-craft/SKILL.md +83 -71
  29. package/plugin/skills/ase-code-craft/help.md +2 -2
  30. package/plugin/skills/ase-code-explain/SKILL.md +1 -1
  31. package/plugin/skills/ase-code-explain/help.md +1 -1
  32. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  33. package/plugin/skills/ase-code-insight/help.md +1 -1
  34. package/plugin/skills/ase-code-lint/SKILL.md +35 -18
  35. package/plugin/skills/ase-code-lint/help.md +2 -2
  36. package/plugin/skills/ase-code-refactor/SKILL.md +81 -70
  37. package/plugin/skills/ase-code-refactor/help.md +2 -2
  38. package/plugin/skills/ase-code-resolve/SKILL.md +83 -70
  39. package/plugin/skills/ase-code-resolve/help.md +3 -3
  40. package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
  41. package/plugin/skills/ase-docs-distill/help.md +4 -4
  42. package/plugin/skills/ase-docs-proofread/SKILL.md +36 -19
  43. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  44. package/plugin/skills/ase-meta-brainstorm/SKILL.md +29 -8
  45. package/plugin/skills/ase-meta-brainstorm/help.md +7 -11
  46. package/plugin/skills/ase-meta-changelog/help.md +1 -1
  47. package/plugin/skills/ase-meta-chat/help.md +1 -1
  48. package/plugin/skills/ase-meta-commit/help.md +1 -1
  49. package/plugin/skills/ase-meta-diaboli/help.md +2 -2
  50. package/plugin/skills/ase-meta-diff/SKILL.md +6 -5
  51. package/plugin/skills/ase-meta-diff/help.md +11 -12
  52. package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
  53. package/plugin/skills/ase-meta-evaluate/help.md +2 -2
  54. package/plugin/skills/ase-meta-persona/help.md +1 -1
  55. package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
  56. package/plugin/skills/ase-meta-quorum/help.md +1 -1
  57. package/plugin/skills/ase-meta-review/SKILL.md +3 -4
  58. package/plugin/skills/ase-meta-review/help.md +5 -5
  59. package/plugin/skills/ase-meta-search/SKILL.md +9 -8
  60. package/plugin/skills/ase-meta-search/help.md +1 -1
  61. package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
  62. package/plugin/skills/ase-meta-steelman/help.md +2 -2
  63. package/plugin/skills/ase-meta-why/SKILL.md +16 -10
  64. package/plugin/skills/ase-meta-why/help.md +1 -1
  65. package/plugin/skills/ase-task-condense/SKILL.md +36 -19
  66. package/plugin/skills/ase-task-condense/help.md +3 -3
  67. package/plugin/skills/ase-task-delete/SKILL.md +6 -3
  68. package/plugin/skills/ase-task-delete/help.md +2 -2
  69. package/plugin/skills/ase-task-edit/SKILL.md +61 -36
  70. package/plugin/skills/ase-task-edit/help.md +4 -4
  71. package/plugin/skills/ase-task-grill/SKILL.md +57 -26
  72. package/plugin/skills/ase-task-grill/help.md +3 -3
  73. package/plugin/skills/ase-task-id/SKILL.md +11 -2
  74. package/plugin/skills/ase-task-id/help.md +2 -2
  75. package/plugin/skills/ase-task-implement/SKILL.md +40 -17
  76. package/plugin/skills/ase-task-implement/help.md +2 -2
  77. package/plugin/skills/ase-task-list/SKILL.md +1 -1
  78. package/plugin/skills/ase-task-list/help.md +2 -2
  79. package/plugin/skills/ase-task-preflight/SKILL.md +44 -22
  80. package/plugin/skills/ase-task-preflight/help.md +3 -3
  81. package/plugin/skills/ase-task-reboot/SKILL.md +31 -20
  82. package/plugin/skills/ase-task-reboot/help.md +2 -2
  83. package/plugin/skills/ase-task-rename/SKILL.md +5 -3
  84. package/plugin/skills/ase-task-rename/help.md +2 -2
  85. package/plugin/skills/ase-task-view/help.md +26 -7
@@ -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" [...]/>` corresponds to a `TaskCreate({
102
- subject: "xxx", description: "xxx", activeForm: "xxx" })`. In other
103
- words, use the text of the `id` attribute of <step/> for both
104
- the `subject`, the `description`, and the `activeForm` fields of
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
- Make the `TaskCreate` tool calls *sequentially*, *not* in parallel,
108
- so the user can see intermediate results.
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 (70 - 8 - length("<title/>")), i.e., <bar/> is
212
- the "─" character repeated (70 - 16 - length("<title/>")) times):
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
- ╭────━━━━**(** `<title/>` **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
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 (70 - 8 - length("<title/>")), i.e., <bar/> is
230
- the "─" character repeated (70 - 16 - length("<title/>")) times):
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
- ╰────━━━━**(** `<title/>` **)**━━━━────<bar/>┈┈┈┈┈┈┈┈┈┈
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>
@@ -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.7",
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.40.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:* | 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:*)"
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`, `ase-code-analyze`, `ase-code-resolve`,
50
- `ase-code-refactor`, `ase-code-insight`.
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
- - Derive the needed <functionality/> from the <request/>, but keep
40
+ 1. Derive the needed <functionality/> from the <request/>, but keep
41
41
  the functionality description very *brief* but still *precise*.
42
42
 
43
- - If <functionality/> is not clear or not precise enough, raise
44
- questions to the user with the help of an interactive user dialog tool.
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
- - Display the determined final functionality with just the following
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
- - Determine the used technology stack:
68
+ 1. Determine the used technology stack:
56
69
 
57
- - If a file `package.json` is found in the top-level directory
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
- - Else, if a file `package.json` is found in the top-level directory
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
- - Else, if a file `build.gradle.kts` or `settings.gradle.kts`
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
- - Else, if a file `build.gradle` is found in the top-level directory and
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
- - Else, if a file `pom.xml` is found in the top-level directory and
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
- - Else, if a file `pom.xml` or `build.gradle` is found in the top-level directory
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
- - Else, use <stack>Unknown</stack>.
91
+ 7. Else, use <stack>Unknown</stack>.
79
92
 
80
- - Display the determined final technology stack with just the
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
- - From <stack/> and <functionality/>, derive essential keywords
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
- - In the to be discovered result set of components <component-K/>
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
- - If <stack/> is "JavaScript" or "TypeScript":
122
+ 4. If <stack/> is "JavaScript" or "TypeScript":
101
123
 
102
- - Based on the essential keywords <keyword-L/> (L=1-M),
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
- - Use the shell command `npm search --json --searchlimit <getopt-option-limit/>
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
- - If <stack/> is "Java" or "Kotlin":
138
+ 5. If <stack/> is "Java" or "Kotlin":
117
139
 
118
- - Based on the essential keywords <keyword-L/> (L=1-M),
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
- - Use the shell command `curl -s 'https://search.maven.org/solrsearch/select?q=<keyword-1/>+<keyword-M/>&rows=<getopt-option-limit/>&wt=json'`
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
- - Call the `ase_component_info(stack: "<stack/>", components:
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
- - Sort, in descending order, the discovered components
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
- - For each component <component-K/> (K=1-N), research and then
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
- - Display the determined, individual components as a Markdown
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* | ▣ *Package* | ⚖ *Hint* |
171
- | :----------------- | :------------- | :-------- |
172
- | **<component-1/>** | `<package-1/>` | <info-1/> |
192
+ | ⚑ *Component* | ▣ *Package* | ⚖ *Hint* |
193
+ | :------------ | :------------- | :-------- |
194
+ | **<name-1/>** | `<package-1/>` | <info-1/> |
173
195
  [...]
174
- | **<component-N/>** | `<package-N/>` | <info-N/> |
196
+ | **<name-N/>** | `<package-N/>` | <info-N/> |
175
197
  </template>
176
198
 
177
- - Display the discovered components as a Markdown *table*
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* | ▣ *Package* | ❖ *Version* | ↓ *Downloads* | ⎈ *Stars* | ⏲ *Updated* | ☆ *Created* |
184
- | :----------------- | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
185
- | **<component-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
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
- | **<component-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
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`, `ase-meta-search`, `ase-meta-evaluate`.
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> or
206
- <template>HIGH</template>, ranked by the estimated *impact* of the
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`, `ase-code-refactor`, `ase-code-lint`,
87
- `ase-code-explain`, `ase-arch-analyze`.
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).