@rse/ase 2.0.1 → 2.0.3

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 (155) hide show
  1. package/dst/ase-agent-definition-core.js +111 -87
  2. package/dst/ase-agent-fleet.js +1 -1
  3. package/dst/ase-agent-runtime-claim.js +5 -3
  4. package/dst/ase-agent-runtime-engine.js +1 -1
  5. package/dst/ase-agent-runtime-phase.js +1 -1
  6. package/dst/ase-agent-runtime-request.js +1 -1
  7. package/dst/ase-agent-runtime.js +3 -5
  8. package/dst/ase-artifact.js +3 -3
  9. package/dst/ase-config-core.js +2 -16
  10. package/dst/ase-config-schema.js +1 -3
  11. package/dst/ase-config.js +4 -1
  12. package/dst/ase-hook.js +14 -19
  13. package/dst/ase-lib-daemon-cli.js +117 -4
  14. package/dst/ase-lib-server-cli.js +10 -10
  15. package/dst/ase-mcp.js +4 -4
  16. package/dst/ase-service-getopt.js +2 -2
  17. package/dst/ase-service-otel.js +4 -4
  18. package/dst/ase-service-skills.js +5 -15
  19. package/dst/ase-service.js +87 -210
  20. package/dst/ase-setup-common.js +1 -2
  21. package/dst/ase-setup-settings.js +6 -9
  22. package/dst/ase-setup.js +2 -3
  23. package/dst/ase-statusline.js +170 -170
  24. package/dst/ase-task-board-core.js +1 -1
  25. package/dst/ase-task-board-flow.js +7 -6
  26. package/dst/ase-task-board-graph.js +5 -4
  27. package/dst/ase-task-board-tui-control.js +51 -45
  28. package/dst/ase-task-board-tui-model.js +195 -181
  29. package/dst/ase-task-board-tui-popup.js +2 -3
  30. package/dst/ase-task-board-tui-view.js +88 -79
  31. package/dst/ase-task-board-web-client.css +1 -1
  32. package/dst/ase-task-board-web-client.js +2 -2
  33. package/dst/ase-task-board-web-server.js +4 -27
  34. package/dst/ase-task-board.js +1 -1
  35. package/dst/ase-task-format.js +1 -1
  36. package/dst/ase-task-store-client.js +17 -5
  37. package/dst/ase-task-store-core.js +5 -7
  38. package/dst/ase-task-store-issues.js +91 -0
  39. package/dst/ase-task-store-plugin-ase.js +7 -3
  40. package/dst/ase-task-store-plugin-gitea.js +11 -97
  41. package/dst/ase-task-store-plugin-github.js +5 -77
  42. package/dst/ase-task-store-plugin-gitlab.js +4 -83
  43. package/dst/ase-task.js +51 -23
  44. package/dst/ase-util-compat.js +1 -1
  45. package/dst/ase-util-diagram.js +16 -42
  46. package/dst/ase.js +5 -5
  47. package/dst/man/ase-agent-adhoc.1 +1 -1
  48. package/dst/man/ase-agent-condenser.1 +1 -1
  49. package/dst/man/ase-agent-editor.1 +1 -1
  50. package/dst/man/ase-agent-estimator.1 +1 -1
  51. package/dst/man/ase-agent-fleet.1 +1 -1
  52. package/dst/man/ase-agent-implementer.1 +1 -1
  53. package/dst/man/ase-agent-integrator.1 +1 -1
  54. package/dst/man/ase-agent-qualifier.1 +1 -1
  55. package/dst/man/ase-agent-rebooter.1 +1 -1
  56. package/dst/man/ase-agent-relay.1 +1 -1
  57. package/dst/man/ase-agent-researcher.1 +1 -1
  58. package/dst/man/ase-agent.1 +1 -1
  59. package/dst/man/ase-artifact-list.1 +1 -1
  60. package/dst/man/ase-artifact-name.1 +1 -1
  61. package/dst/man/ase-artifact.1 +1 -1
  62. package/dst/man/ase-config-delete.1 +1 -1
  63. package/dst/man/ase-config-edit.1 +1 -1
  64. package/dst/man/ase-config-get.1 +1 -1
  65. package/dst/man/ase-config-init.1 +1 -1
  66. package/dst/man/ase-config-list.1 +1 -1
  67. package/dst/man/ase-config-set.1 +1 -1
  68. package/dst/man/ase-config.1 +1 -1
  69. package/dst/man/ase-hook-permission-request.1 +1 -1
  70. package/dst/man/ase-hook-pre-tool-use.1 +1 -1
  71. package/dst/man/ase-hook-session-end.1 +1 -1
  72. package/dst/man/ase-hook-session-persona.1 +1 -1
  73. package/dst/man/ase-hook-session-start.1 +1 -1
  74. package/dst/man/ase-hook-stop.1 +1 -1
  75. package/dst/man/ase-hook-user-prompt-submit.1 +1 -1
  76. package/dst/man/ase-hook.1 +1 -1
  77. package/dst/man/ase-man.1 +1 -1
  78. package/dst/man/ase-mcp.1 +1 -1
  79. package/dst/man/ase-service-log.1 +1 -1
  80. package/dst/man/ase-service-send.1 +1 -1
  81. package/dst/man/ase-service-start.1 +1 -1
  82. package/dst/man/ase-service-status.1 +1 -1
  83. package/dst/man/ase-service-stop.1 +1 -1
  84. package/dst/man/ase-service.1 +1 -1
  85. package/dst/man/ase-setup-disable.1 +1 -1
  86. package/dst/man/ase-setup-enable.1 +1 -1
  87. package/dst/man/ase-setup-install.1 +1 -1
  88. package/dst/man/ase-setup-mcp.1 +1 -1
  89. package/dst/man/ase-setup-status.1 +1 -1
  90. package/dst/man/ase-setup-statusline.1 +1 -1
  91. package/dst/man/ase-setup-telemetry.1 +1 -1
  92. package/dst/man/ase-setup-uninstall.1 +1 -1
  93. package/dst/man/ase-setup-update.1 +1 -1
  94. package/dst/man/ase-setup.1 +1 -1
  95. package/dst/man/ase-spec-export.1 +1 -1
  96. package/dst/man/ase-spec-lint.1 +1 -1
  97. package/dst/man/ase-spec-preview.1 +1 -1
  98. package/dst/man/ase-spec.1 +1 -1
  99. package/dst/man/ase-statusline.1 +1 -1
  100. package/dst/man/ase-task-assign.1 +1 -1
  101. package/dst/man/ase-task-board.1 +3 -3
  102. package/dst/man/ase-task-delete.1 +1 -1
  103. package/dst/man/ase-task-edit.1 +1 -1
  104. package/dst/man/ase-task-idscheme.1 +1 -1
  105. package/dst/man/ase-task-lifecycle.1 +1 -1
  106. package/dst/man/ase-task-list.1 +1 -1
  107. package/dst/man/ase-task-load.1 +1 -1
  108. package/dst/man/ase-task-newid.1 +1 -1
  109. package/dst/man/ase-task-purge.1 +1 -1
  110. package/dst/man/ase-task-rename.1 +1 -1
  111. package/dst/man/ase-task-request.1 +1 -1
  112. package/dst/man/ase-task-save.1 +1 -1
  113. package/dst/man/ase-task-status.1 +1 -1
  114. package/dst/man/ase-task-store.1 +1 -1
  115. package/dst/man/ase-task-view.1 +1 -1
  116. package/dst/man/ase-task.1 +1 -1
  117. package/dst/man/ase-util-compat.1 +1 -1
  118. package/dst/man/ase-util-diagram.1 +1 -1
  119. package/dst/man/ase-util-meta.1 +1 -1
  120. package/dst/man/ase-util-metric.1 +1 -1
  121. package/dst/man/ase-util-mint.1 +1 -1
  122. package/dst/man/ase-util-worktree.1 +1 -1
  123. package/dst/man/ase-util.1 +1 -1
  124. package/dst/man/ase.1 +1 -1
  125. package/package.json +1 -1
  126. package/plugin/.claude-plugin/plugin.json +1 -1
  127. package/plugin/.codex-plugin/plugin.json +1 -1
  128. package/plugin/.github/plugin/plugin.json +1 -1
  129. package/plugin/meta/ase-common-resolve.md +2 -2
  130. package/plugin/meta/ase-skill.md +7 -0
  131. package/plugin/mods/ase-mods.ts +16 -12
  132. package/plugin/skills/ase-arch-analyze/SKILL.md +3 -1
  133. package/plugin/skills/ase-code-analyze/SKILL.md +26 -10
  134. package/plugin/skills/ase-code-analyze/help.md +11 -6
  135. package/plugin/skills/ase-code-edit/SKILL.md +5 -4
  136. package/plugin/skills/ase-code-edit/help.md +1 -1
  137. package/plugin/skills/ase-code-lint/SKILL.md +52 -27
  138. package/plugin/skills/ase-code-lint/help.md +10 -5
  139. package/plugin/skills/ase-help-intent/data.md +60 -30
  140. package/plugin/skills/ase-help-skill/help.md +3 -4
  141. package/plugin/skills/ase-meta-quorum/SKILL.md +9 -0
  142. package/plugin/skills/ase-meta-quorum/help.md +5 -3
  143. package/plugin/skills/ase-meta-workflow/sample.md +5 -3
  144. package/plugin/skills/ase-repo-changelog/SKILL.md +8 -9
  145. package/plugin/skills/ase-repo-changelog/help.md +2 -2
  146. package/plugin/skills/ase-repo-review/SKILL.md +5 -3
  147. package/plugin/skills/ase-repo-review/help.md +3 -1
  148. package/plugin/skills/ase-spec-edit/SKILL.md +2 -1
  149. package/plugin/skills/ase-spec-edit/help.md +2 -1
  150. package/plugin/skills/ase-sync-reconcile/help.md +4 -4
  151. package/plugin/skills/ase-task-dissect/SKILL.md +10 -6
  152. package/plugin/skills/ase-task-grill/help.md +1 -1
  153. package/plugin/skills/ase-task-implement/SKILL.md +58 -1
  154. package/plugin/skills/ase-task-implement/help.md +16 -0
  155. package/plugin/skills/ase-task-list/help.md +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-code-analyze
3
- argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(LOW|MEDIUM|HIGH)] [--prefix|-P=<prefix>] [--staged] [--unstaged] [<source-reference>]"
3
+ argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(AUTO|LOW|MEDIUM|HIGH)] [--prefix|-P=<prefix>] [--staged] [--unstaged] [<source-reference>]"
4
4
  description: >
5
5
  Analyze the source code for problems in either the logic and
6
6
  semantics and its related control flow, performance and efficiency,
@@ -25,7 +25,7 @@ Analyze Source Code
25
25
 
26
26
  <expand name="getopt"
27
27
  arg1="ase-code-analyze"
28
- arg2="--performance|-p --security|-s --severity|-S=(LOW|MEDIUM|HIGH) --prefix|-P= --staged --unstaged">
28
+ arg2="--performance|-p --security|-s --severity|-S=(AUTO|LOW|MEDIUM|HIGH) --prefix|-P= --staged --unstaged">
29
29
  $ARGUMENTS
30
30
  </expand>
31
31
 
@@ -56,10 +56,11 @@ problems in *performance* and *efficiency*, or problems in *security*.
56
56
 
57
57
  2. <step id="STEP 2: Investigate Code Base">
58
58
 
59
- <if condition="<ase-project-boxing/> is equal `black`">
59
+ <if condition="<ase-project-boxing/> is equal `black` and <getopt-option-severity/> is equal `AUTO`">
60
60
 
61
61
  The project source artifacts are classified as a *black box*, so
62
- the user does *not* want them inspected or their problems surfaced.
62
+ the user does *not* want them inspected or their problems surfaced
63
+ (an *explicitly* given severity floor lifts this skip).
63
64
  *Skip* the entire investigation and analysis: do *not* invoke any
64
65
  `Bash`, `Glob`, or `Agent` tool and do *not* read any source, only
65
66
  output the following <template/> and then *SKIP* the remaining step
@@ -136,6 +137,14 @@ problems in *performance* and *efficiency*, or problems in *security*.
136
137
  <sources/> of individual source code files, expanding any
137
138
  directory or wildcard references with the `Glob` tool.
138
139
 
140
+ If <sources/> is empty (no *source-reference* given or none of it
141
+ resolvable), only output the following <template/> and then *STOP*
142
+ the entire flow (do not perform any further steps):
143
+
144
+ <template>
145
+ ⧉ **ASE**: ✪ skill: **ase-code-analyze**, ▶ ERROR: no source files to analyze -- give a *source-reference* or use `--staged`/`--unstaged`
146
+ </template>
147
+
139
148
  </else>
140
149
 
141
150
  Then partition <sources/>, preserving order, into at most *eight*
@@ -183,17 +192,24 @@ problems in *performance* and *efficiency*, or problems in *security*.
183
192
  do not overwrite each other.
184
193
 
185
194
  Before reporting, determine the *effective severity floor* <floor/>:
186
- define the ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3, start from
187
- <floor><getopt-option-severity/></floor> (default `LOW`), and - if
188
- <ase-project-boxing/> is equal `grey` - raise <floor/> to `MEDIUM`
189
- whenever its current rank is below `rank(MEDIUM)` (grey boxing
190
- surfaces only *material* findings of severity `MEDIUM` and above).
195
+ define the ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3.
196
+
197
+ <if condition="<getopt-option-severity/> is equal `AUTO`">
198
+ Set <floor>MEDIUM</floor> if <ase-project-boxing/> is equal `grey`
199
+ (grey boxing surfaces only *material* findings of severity `MEDIUM`
200
+ and above), and <floor>LOW</floor> otherwise.
201
+ </if>
202
+ <else>
203
+ Set <floor><getopt-option-severity/></floor>: an *explicitly* given
204
+ severity floor always *wins* over the boxing, both over the `grey`
205
+ floor and over the `black` skip.
206
+ </else>
191
207
 
192
208
  Then *apply the effective severity floor* <floor/>: *Keep* a detected
193
209
  problem if and only if its `severity` field is `ACCEPTED` *or*
194
210
  `rank(severity)` is greater than or equal to `rank(<floor/>)`;
195
211
  *silently drop* all other problems (they are neither reported nor
196
- persisted). With the default floor `LOW`, all problems are kept.
212
+ persisted). With the floor `LOW`, all problems are kept.
197
213
  `ACCEPTED` problems are *never* dropped.
198
214
 
199
215
  Then sort the surviving problems in <problems/> by their `severity`
@@ -9,7 +9,7 @@
9
9
  [`--help`|`-h`]
10
10
  [`--performance`|`-p`]
11
11
  [`--security`|`-s`]
12
- [`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
12
+ [`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
13
13
  [`--prefix`|`-P` *prefix*]
14
14
  [`--staged`]
15
15
  [`--unstaged`]
@@ -32,11 +32,16 @@ The *analysis lens* depends on the selected options:
32
32
 
33
33
  The `--performance` and `--security` options are *mutually exclusive*.
34
34
 
35
- The `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`) option sets a *severity
36
- floor* (default `LOW`): problems below the chosen threshold are silently
37
- suppressed (neither reported nor persisted), ordered `LOW` < `MEDIUM` <
38
- `HIGH`. The default `LOW` keeps all problems; `ACCEPTED` problems are
39
- never suppressed. Surviving problems are reported in *descending
35
+ The `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`) option sets a
36
+ *severity floor* (default `AUTO`): problems below the chosen threshold
37
+ are silently suppressed (neither reported nor persisted), ordered `LOW`
38
+ < `MEDIUM` < `HIGH`. The default `AUTO` means `MEDIUM` for a project
39
+ with `grey` boxing, no analysis at all for a project with `black`
40
+ boxing, and `LOW` (keep all problems) otherwise; an explicitly given
41
+ floor always wins over the boxing, i.e. it also analyzes a project with
42
+ `black` boxing and, e.g. with `LOW`, reports all problems of a project
43
+ with `grey` boxing. `ACCEPTED` problems are never suppressed. Surviving
44
+ problems are reported in *descending
40
45
  severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED` - keeping the
41
46
  `file`/`line` order within the same severity - and are renumbered
42
47
  contiguously as `P<n>`, so `P1` is the most severe problem.
@@ -137,10 +137,11 @@ empty <todo-what/> or <todo-how/> renders as `(none)`:
137
137
  ⧉ **ASE**: ✪ skill: **ase-code-edit**, ⇌ issue: **<issue-id/>**, ▶ status: **issue retrieved**
138
138
  </template>
139
139
 
140
- Otherwise, set <issue-id></issue-id> (empty) and only output the
141
- following <template/>, then, under `--loop`, continue with the
142
- *next* iteration at item 3.1 above, or, without `--loop`,
143
- immediately *STOP* processing the entire current skill:
140
+ Otherwise, only output the following <template/>, then set
141
+ <issue-id></issue-id> and <query></query> (both empty, so the
142
+ next iteration asks for a fresh query), and then, under `--loop`,
143
+ continue with the *next* iteration at item 3.1 above, or, without
144
+ `--loop`, immediately *STOP* processing the entire current skill:
144
145
 
145
146
  <template>
146
147
  ⧉ **ASE**: ✪ skill: **ase-code-edit**, ▶ ERROR: no analyzer result exists for issue **<query/>**
@@ -65,7 +65,7 @@ information.
65
65
  should be clarified), `IMPLEMENTATION` (inner technical details,
66
66
  can be clarified), `REGRESSION` (what must not break, should be
67
67
  clarified), or `CONFIRMATION` (what proves the specified behavior,
68
- should be clarified) -- and a 1-2 word `TOPIC` hint. The questions
68
+ should be clarified) -- and a 1-3 word `TOPIC` hint. The questions
69
69
  of a round are sorted by descending focus area importance
70
70
  (`DOMAIN`, `INTERFACE`, `ARCHITECTURE`, `IMPLEMENTATION`,
71
71
  `REGRESSION`, `CONFIRMATION`). Questions of focus area
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-code-lint
3
- argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(LOW|MEDIUM|HIGH)] [--include|-i=<aspect>[,...]] [--exclude|-e=<aspect>[,...]] [--staged] [--unstaged] [<source-reference>]"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(AUTO|LOW|MEDIUM|HIGH)] [--include|-i=<aspect>[,...]] [--exclude|-e=<aspect>[,...]] [--staged] [--unstaged] [<source-reference>]"
4
4
  description: >
5
5
  Lint source code for potential code quality problems.
6
6
  Use when the user wants to "lint" or "check" source code.
@@ -23,7 +23,7 @@ Lint Source Code
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-lint"
26
- arg2="--auto|-a --severity|-S=(LOW|MEDIUM|HIGH) --include|-i=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --exclude|-e=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --staged --unstaged">
26
+ arg2="--auto|-a --severity|-S=(AUTO|LOW|MEDIUM|HIGH) --include|-i=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --exclude|-e=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --staged --unstaged">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -36,10 +36,11 @@ related to a set of code quality aspects.
36
36
 
37
37
  1. <step id="STEP 1: Investigation">
38
38
 
39
- <if condition="<ase-project-boxing/> is equal `black`">
39
+ <if condition="<ase-project-boxing/> is equal `black` and <getopt-option-severity/> is equal `AUTO`">
40
40
 
41
41
  The project source artifacts are classified as a *black box*, so
42
- the user does *not* want them inspected or their problems surfaced.
42
+ the user does *not* want them inspected or their problems surfaced
43
+ (an *explicitly* given severity floor lifts this skip).
43
44
  *Skip* the entire investigation and reporting: do *not* invoke any
44
45
  `Bash`, `Glob`, or `Agent` tool and do *not* read any source, only
45
46
  output the following <template/> and then *SKIP* the remaining steps
@@ -51,6 +52,11 @@ related to a set of code quality aspects.
51
52
 
52
53
  </if>
53
54
 
55
+ Set <condensed>true</condensed> if <ase-project-boxing/> is equal
56
+ `grey` or `black` (the latter reached only under an explicitly given
57
+ severity floor), and <condensed>false</condensed> otherwise: a
58
+ *condensed* report suppresses the full unified diffs of STEP 3.
59
+
54
60
  First, determine the *effective aspect set* <aspects/>, i.e., the
55
61
  code quality aspects which are checked at all. For this, parse
56
62
  <getopt-option-include/> and <getopt-option-exclude/> as
@@ -135,6 +141,14 @@ related to a set of code quality aspects.
135
141
  list <sources/> of individual source code files, expanding any
136
142
  directory or wildcard references with the `Glob` tool.
137
143
 
144
+ If <sources/> is empty (no *source-reference* given or none of it
145
+ resolvable), only output the following <template/> and then *STOP*
146
+ the entire flow (do not perform any further steps):
147
+
148
+ <template>
149
+ ⧉ **ASE**: ✪ skill: **ase-code-lint**, ▶ ERROR: no source files to lint -- give a *source-reference* or use `--staged`/`--unstaged`
150
+ </template>
151
+
138
152
  </else>
139
153
 
140
154
  Then partition <sources/>, preserving order, into at most *eight*
@@ -160,24 +174,34 @@ related to a set of code quality aspects.
160
174
  parallel invocation is distinguishable in the progress display.
161
175
 
162
176
  Parse the result message of each `Agent` tool invocation as a JSON
163
- array and concatenate all those arrays. Then *deduplicate* the
164
- combined list: when two problems share the same `file`, `line`, and
177
+ array and concatenate all those arrays. Determine the *anchor* of
178
+ each problem as the `file` of its *first* `change-set` entry and the
179
+ `line` of that entry's *first* `change-hunks` entry, as problems carry
180
+ no top-level `file` and `line` fields. Then *deduplicate* the
181
+ combined list: when two problems share the same anchor and
165
182
  `aspect`, *silently drop* all but the first one (sub-agents may
166
183
  have read overlapping *related* files for comprehension). Finally
167
- sort the list by `file` and then numerically by `line`, and set
168
- <problems/> to that list.
184
+ sort the list by the anchor `file` and then numerically by the anchor
185
+ `line`, and set <problems/> to that list.
169
186
 
170
187
  Then determine the *effective severity floor* <floor/>: define the
171
- ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3, start from
172
- <floor><getopt-option-severity/></floor> (default `LOW`), and - if
173
- <ase-project-boxing/> is equal `grey` - raise <floor/> to `MEDIUM`
174
- whenever its current rank is below `rank(MEDIUM)` (grey boxing
175
- surfaces only *material* findings of severity `MEDIUM` and above).
188
+ ordinal rank `LOW`=1, `MEDIUM`=2, `HIGH`=3.
189
+
190
+ <if condition="<getopt-option-severity/> is equal `AUTO`">
191
+ Set <floor>MEDIUM</floor> if <ase-project-boxing/> is equal `grey`
192
+ (grey boxing surfaces only *material* findings of severity `MEDIUM`
193
+ and above), and <floor>LOW</floor> otherwise.
194
+ </if>
195
+ <else>
196
+ Set <floor><getopt-option-severity/></floor>: an *explicitly* given
197
+ severity floor always *wins* over the boxing, both over the `grey`
198
+ floor and over the `black` skip.
199
+ </else>
176
200
 
177
201
  Then *apply the effective severity floor* <floor/>: *Keep* a problem
178
202
  in <problems/> if and only if its `severity` field is `ACCEPTED` *or*
179
203
  `rank(severity)` is greater than or equal to `rank(<floor/>)`;
180
- *silently drop* all other problems. With the default floor `LOW`, all
204
+ *silently drop* all other problems. With the floor `LOW`, all
181
205
  problems are kept. `ACCEPTED` problems are *never* dropped.
182
206
 
183
207
  Finally, sort the surviving problems in <problems/> by their
@@ -259,7 +283,7 @@ related to a set of code quality aspects.
259
283
  1. Set <file/> to the `file` field of <item/>.
260
284
  Set <change-hunks/> to the `change-hunks` field of <item/>.
261
285
 
262
- Unless <ase-project-boxing/> is equal `grey` (where the
286
+ Unless <condensed/> is equal `true` (where the
263
287
  full unified diff is suppressed and no context lines are
264
288
  rendered at all), *silently* read the current content of
265
289
  <file/> with the `Read` tool - reusing the content read
@@ -273,7 +297,7 @@ related to a set of code quality aspects.
273
297
  context lines of substep 2 below, so the rendered diff
274
298
  shows real context even when a sub-agent supplied none.
275
299
 
276
- Unless <ase-project-boxing/> is equal `grey` (where the
300
+ Unless <condensed/> is equal `true` (where the
277
301
  full unified diff is suppressed and this per-file header is
278
302
  unused), set <diff-file/> to the following <template/>:
279
303
 
@@ -317,8 +341,8 @@ related to a set of code quality aspects.
317
341
  Keep the sub-agent supplied values only when
318
342
  <file-lines/> is empty.
319
343
 
320
- 2. *Skip* this substep entirely when <ase-project-boxing/>
321
- is equal `grey` - the full unified diff is suppressed
344
+ 2. *Skip* this substep entirely when <condensed/>
345
+ is equal `true` - the full unified diff is suppressed
322
346
  there, so none of the <hunk-body/>, <old-count/>,
323
347
  <new-count/>, <old-start/>, or <new-start/> values
324
348
  below are consumed (substep 4 builds only the condensed
@@ -373,10 +397,10 @@ related to a set of code quality aspects.
373
397
 
374
398
  <template>`<file/>`:<line/></template>
375
399
 
376
- 4. <if condition="<ase-project-boxing/> is equal `grey`">
400
+ 4. <if condition="<condensed/> is equal `true`">
377
401
 
378
- The full unified diff is *suppressed* under grey boxing
379
- (see substep 5 below), so *skip* the full-diff append
402
+ The full unified diff is *suppressed* in a condensed
403
+ report (see substep 5 below), so *skip* the full-diff append
380
404
  and instead build only a *condensed* one-line
381
405
  representation of this hunk: determine <old-snippet/>
382
406
  as the *single-line* collapse of <old-text/> (join its
@@ -406,7 +430,7 @@ related to a set of code quality aspects.
406
430
 
407
431
  </for>
408
432
 
409
- 3. Unless <ase-project-boxing/> is equal `grey` (where
433
+ 3. Unless <condensed/> is equal `true` (where
410
434
  <diff-file/> is unused), append <diff-file/> to <diff/>.
411
435
 
412
436
  </for>
@@ -422,10 +446,11 @@ related to a set of code quality aspects.
422
446
 
423
447
  5. <if condition="<getopt-option-auto/> is not equal `true`">
424
448
 
425
- <if condition="<ase-project-boxing/> is equal `grey`">
449
+ <if condition="<condensed/> is equal `true`">
426
450
 
427
- The project source artifacts are classified as a *grey box*, so
428
- the user does *not* want the full artifact internals surfaced:
451
+ The project source artifacts are classified as a *grey box* (or
452
+ *black box*), so the user does *not* want the full artifact
453
+ internals surfaced:
429
454
  *suppress* the full unified diff and instead show only the
430
455
  *condensed* one-line-per-hunk representation. Report the
431
456
  solution with the following <template/>:
@@ -494,8 +519,8 @@ related to a set of code quality aspects.
494
519
  - <if condition="<result/> is 'ACCEPT'">
495
520
  Invoke the `Edit` tool to apply the changes exactly
496
521
  as given by the hunks of the current <change-set/>
497
- (rendered as <diff/>, unless suppressed under grey
498
- boxing). The operation will be auto-approved by the ASE
522
+ (rendered as <diff/>, unless suppressed in a condensed
523
+ report). The operation will be auto-approved by the ASE
499
524
  `pre-tool-use` hook (which tracks the active skill),
500
525
  so *no* interactive permission prompt will appear.
501
526
  After applying the changes, just continue with the next
@@ -8,7 +8,7 @@
8
8
  `ase-code-lint`
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
- [`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
11
+ [`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
12
12
  [`--include`|`-i`=*aspect*[`,`...]]
13
13
  [`--exclude`|`-e`=*aspect*[`,`...]]
14
14
  [`--staged`]
@@ -60,11 +60,16 @@ the code, and comments contradicting the code.
60
60
  Automatically apply every proposed correction without asking the
61
61
  user via the interactive dialog.
62
62
 
63
- - `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
64
- Set the *severity floor* (default `LOW`): findings below the chosen
63
+ - `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
64
+ Set the *severity floor* (default `AUTO`): findings below the chosen
65
65
  threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
66
- `HIGH`. The default `LOW` keeps all findings; `ACCEPTED` findings are
67
- never suppressed. Surviving findings are reported in *descending
66
+ `HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
67
+ boxing, no linting at all for a project with `black` boxing, and
68
+ `LOW` (keep all findings) otherwise; an explicitly given floor always
69
+ wins over the boxing, i.e. it also lints a project with `black`
70
+ boxing and, e.g. with `LOW`, acts on all findings of a project with
71
+ `grey` boxing. `ACCEPTED` findings are never suppressed. Surviving
72
+ findings are reported in *descending
68
73
  severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the
69
74
  `file`/`line` order within the same severity.
70
75
 
@@ -175,7 +175,7 @@ Discover HTTP clients, flagging any without a release in the last 12 months:
175
175
  [`--help`|`-h`]
176
176
  [`--performance`|`-p`]
177
177
  [`--security`|`-s`]
178
- [`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
178
+ [`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
179
179
  [`--prefix`|`-P` *prefix*]
180
180
  [`--staged`]
181
181
  [`--unstaged`]
@@ -198,11 +198,16 @@ The *analysis lens* depends on the selected options:
198
198
 
199
199
  The `--performance` and `--security` options are *mutually exclusive*.
200
200
 
201
- The `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`) option sets a *severity
202
- floor* (default `LOW`): problems below the chosen threshold are silently
203
- suppressed (neither reported nor persisted), ordered `LOW` < `MEDIUM` <
204
- `HIGH`. The default `LOW` keeps all problems; `ACCEPTED` problems are
205
- never suppressed. Surviving problems are reported in *descending
201
+ The `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`) option sets a
202
+ *severity floor* (default `AUTO`): problems below the chosen threshold
203
+ are silently suppressed (neither reported nor persisted), ordered `LOW`
204
+ < `MEDIUM` < `HIGH`. The default `AUTO` means `MEDIUM` for a project
205
+ with `grey` boxing, no analysis at all for a project with `black`
206
+ boxing, and `LOW` (keep all problems) otherwise; an explicitly given
207
+ floor always wins over the boxing, i.e. it also analyzes a project with
208
+ `black` boxing and, e.g. with `LOW`, reports all problems of a project
209
+ with `grey` boxing. `ACCEPTED` problems are never suppressed. Surviving
210
+ problems are reported in *descending
206
211
  severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED` - keeping the
207
212
  `file`/`line` order within the same severity - and are renumbered
208
213
  contiguously as `P<n>`, so `P1` is the most severe problem.
@@ -367,7 +372,7 @@ information.
367
372
  should be clarified), `IMPLEMENTATION` (inner technical details,
368
373
  can be clarified), `REGRESSION` (what must not break, should be
369
374
  clarified), or `CONFIRMATION` (what proves the specified behavior,
370
- should be clarified) -- and a 1-2 word `TOPIC` hint. The questions
375
+ should be clarified) -- and a 1-3 word `TOPIC` hint. The questions
371
376
  of a round are sorted by descending focus area importance
372
377
  (`DOMAIN`, `INTERFACE`, `ARCHITECTURE`, `IMPLEMENTATION`,
373
378
  `REGRESSION`, `CONFIRMATION`). Questions of focus area
@@ -627,7 +632,7 @@ Get insights into a specific subsystem:
627
632
  `ase-code-lint`
628
633
  [`--help`|`-h`]
629
634
  [`--auto`|`-a`]
630
- [`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
635
+ [`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
631
636
  [`--include`|`-i`=*aspect*[`,`...]]
632
637
  [`--exclude`|`-e`=*aspect*[`,`...]]
633
638
  [`--staged`]
@@ -679,11 +684,16 @@ the code, and comments contradicting the code.
679
684
  Automatically apply every proposed correction without asking the
680
685
  user via the interactive dialog.
681
686
 
682
- - `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
683
- Set the *severity floor* (default `LOW`): findings below the chosen
687
+ - `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
688
+ Set the *severity floor* (default `AUTO`): findings below the chosen
684
689
  threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
685
- `HIGH`. The default `LOW` keeps all findings; `ACCEPTED` findings are
686
- never suppressed. Surviving findings are reported in *descending
690
+ `HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
691
+ boxing, no linting at all for a project with `black` boxing, and
692
+ `LOW` (keep all findings) otherwise; an explicitly given floor always
693
+ wins over the boxing, i.e. it also lints a project with `black`
694
+ boxing and, e.g. with `LOW`, acts on all findings of a project with
695
+ `grey` boxing. `ACCEPTED` findings are never suppressed. Surviving
696
+ findings are reported in *descending
687
697
  severity* order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the
688
698
  `file`/`line` order within the same severity.
689
699
 
@@ -1169,11 +1179,10 @@ Shorten a document to at most 250 words unattended:
1169
1179
 
1170
1180
  The `ase-help-skill` skill renders the *manual page* (`help.md`) of the
1171
1181
  ASE skill addressed by *skill-name*. The page is emitted verbatim,
1172
- framed between a `( HELP )` header and footer rule.
1182
+ framed between a `MANUAL PAGE` header and footer rule.
1173
1183
 
1174
1184
  The *skill-name* is resolved against a *catalog* of all ASE skills --
1175
- one `name: purpose` entry per skill, generated into
1176
- `skills/ase-help-skill/data.md` by `npm start build` in `plugin/`.
1185
+ one `name: purpose` entry per skill, grouped by skill category.
1177
1186
  Before resolving, any leading `/` and `ase:` prefix is stripped, so
1178
1187
  `ase-code-lint`, `/ase-code-lint`, and `ase:ase-code-lint` are
1179
1188
  equivalent. Resolution then proceeds in three tiers, each tried only if
@@ -1191,7 +1200,7 @@ most nine answer lines, a broader abbreviation such as `task` shows the
1191
1200
  first nine candidates and states how many exist in total.
1192
1201
 
1193
1202
  If *skill-name* is omitted, the whole catalog is rendered as a
1194
- browsable `Skill`/`Purpose` table instead.
1203
+ browsable list, grouped by skill category, instead.
1195
1204
 
1196
1205
  The skill exposes *no* option flags beyond `--help`/`-h`.
1197
1206
 
@@ -2062,9 +2071,11 @@ complete, unmodified individual responses.
2062
2071
  - `--models`|`-m` *model*[,...]:
2063
2072
  Restrict the *foreign* LLMs that are queried to the given
2064
2073
  comma-separated list of *model* tokens. Recognized tokens are
2065
- `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, and `qwen`,
2066
- where `all` selects every model. The default is `all`. Models that
2067
- are not selected (or not available) are *silently skipped*.
2074
+ `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, `qwen`,
2075
+ `claude`, `codex`, and `copilot`, where `all` selects every API-based
2076
+ model, but *not* the harness-based `claude`, `codex`, and `copilot`
2077
+ models, which are queried only when given explicitly. The default
2078
+ is `all`. Models that are not selected (or not available) are *silently skipped*.
2068
2079
  Anthropic Claude (the skill itself) is *always* included,
2069
2080
  independent of this option.
2070
2081
 
@@ -2597,8 +2608,8 @@ changes in the Git *index*.
2597
2608
  Each entry is formatted as `<change-type> [<artifact-kind>]: <summary>`
2598
2609
  where *change-type* is one of `FEATURE`, `IMPROVEMENT`, `BUGFIX`,
2599
2610
  `UPDATE`, `CLEANUP`, or `REFACTOR`, and *artifact-kind* is one or more
2600
- comma-separated *artifact class* tags out of `spec`, `arch`, `code`,
2601
- `docs`, `infr`, or `othr`. Entries are grouped and sorted by this
2611
+ comma-separated *artifact class* tags out of `spec`, `code`, `docs`,
2612
+ `infr`, or `othr`. Entries are grouped and sorted by this
2602
2613
  prefix. The date in the section header is also updated to the current
2603
2614
  date.
2604
2615
 
@@ -3169,7 +3180,9 @@ before it is committed or merged.
3169
3180
  threshold are suppressed, ordered `LOW` < `MEDIUM` < `HIGH`. The
3170
3181
  default `AUTO` means `MEDIUM` for a project with `grey` boxing and
3171
3182
  `LOW` (keep all findings) otherwise; an explicitly given floor always
3172
- wins over the boxing. `ACCEPTED` findings are never suppressed, and
3183
+ wins over the boxing, i.e. it also reviews a project with `black`
3184
+ boxing and, e.g. with `LOW`, shows all findings of a project with
3185
+ `grey` boxing. `ACCEPTED` findings are never suppressed, and
3173
3186
  the number of suppressed findings is always reported. Surviving
3174
3187
  findings are rendered in *descending severity* order `HIGH`,
3175
3188
  `MEDIUM`, `LOW`, `ACCEPTED`. The floor only affects the rendered
@@ -3392,7 +3405,8 @@ approach selection close with an `EDIT TODO` box showing the established
3392
3405
 
3393
3406
  The change set stays strictly restricted to the `SPEC` artifacts -- the
3394
3407
  artifact kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are never
3395
- touched. Every generated artifact carries the current `Created:` and
3408
+ touched, except for an entry in an already existing `CHANGELOG.md`
3409
+ file. Every generated artifact carries the current `Created:` and
3396
3410
  `Modified:` timestamps, and every changed artifact gets its `Modified:`
3397
3411
  timestamp refreshed.
3398
3412
 
@@ -3800,13 +3814,13 @@ a unified diff instead.
3800
3814
  as nothing is written to disk.
3801
3815
 
3802
3816
  - `--target`|`-t` *target*[,...]:
3803
- The comma-separated list of artifact kinds to update. Required (the
3804
- skill errors out on an empty target).
3817
+ The comma-separated list of artifact kinds to update (default:
3818
+ `CODE,DOCS,INFR,OTHR`). An empty target lets the skill error out.
3805
3819
 
3806
3820
  - `--source`|`-s` *source*[,...]:
3807
3821
  The comma-separated list of artifact kinds to update *from*. The
3808
- special value `auto` resolves to all recognized kinds except those
3809
- in *target*.
3822
+ special value `auto` (the default) resolves to all recognized kinds
3823
+ except those in *target*.
3810
3824
 
3811
3825
  ## ARGUMENTS
3812
3826
 
@@ -4711,7 +4725,7 @@ in state `[-]` (cancelled) or `[>]` (deferred) are never questioned.
4711
4725
  ## ARGUMENTS
4712
4726
 
4713
4727
  - *id*:
4714
- Grill the task with the unique identifier *id* (default: `default`).
4728
+ Grill the task with the unique identifier *id* (default: the current task).
4715
4729
  The skill accepts *only* an optional *id* argument and never a
4716
4730
  free-text instruction.
4717
4731
 
@@ -4923,6 +4937,22 @@ the entire verification phase is strictly skipped: no build, tests,
4923
4937
  linter, type-checker, or program execution is performed once the
4924
4938
  source files have been modified.
4925
4939
 
4940
+ The implementation runs to *completion*: the skill never concludes
4941
+ while any point of the plan is still unimplemented, neither because the
4942
+ change set grew large nor because an open question stands in the way.
4943
+ Undecided details and defensible alternatives are therefore *decided by
4944
+ the skill itself*, guided by the surrounding artifacts and the
4945
+ internalized tenets, instead of interrupting the run with a question.
4946
+ Once the change set is applied, the run closes with up to two boxed
4947
+ summaries: `OPEN POINTS` lists everything now waiting for the user --
4948
+ points left unimplemented on a *genuine blocker* no assumption can
4949
+ bridge, follow-ups deliberately left out of scope with their reason,
4950
+ and results needing review -- and `DECISIONS` lists each decision the
4951
+ skill took on its own together with its rationale, so it can be
4952
+ revisited or overruled. Either box is omitted entirely when it has no
4953
+ content; a run which implemented every point and decided nothing on its
4954
+ own emits no box at all.
4955
+
4926
4956
  After implementation, the user is asked whether to stop, hand off to
4927
4957
  `ase-task-edit`, hand off to `ase-task-integrate`, or delete the task
4928
4958
  plan, unless `--next` pre-selects this choice.
@@ -5275,8 +5305,8 @@ DEFERRED INTEGRATING INTEGRATED CANCELLED
5275
5305
  - `--include`|`-i`=*state*[`,`...]:
5276
5306
  Restrict the listed task plans to the given comma-separated list of
5277
5307
  lifecycle states (e.g. `IMPLEMENTING,STALLED`). Without this option,
5278
- all states are listed. The `none` sentinel selects no state at all,
5279
- the `finished` sentinel selects the finished states.
5308
+ all states are listed. The `none` sentinel (the default) imposes no
5309
+ restriction, the `finished` sentinel selects the finished states.
5280
5310
 
5281
5311
  - `--exclude`|`-e`=*state*[`,`...]:
5282
5312
  Remove the given comma-separated list of lifecycle states from the
@@ -13,11 +13,10 @@
13
13
 
14
14
  The `ase-help-skill` skill renders the *manual page* (`help.md`) of the
15
15
  ASE skill addressed by *skill-name*. The page is emitted verbatim,
16
- framed between a `( HELP )` header and footer rule.
16
+ framed between a `MANUAL PAGE` header and footer rule.
17
17
 
18
18
  The *skill-name* is resolved against a *catalog* of all ASE skills --
19
- one `name: purpose` entry per skill, generated into
20
- `skills/ase-help-skill/data.md` by `npm start build` in `plugin/`.
19
+ one `name: purpose` entry per skill, grouped by skill category.
21
20
  Before resolving, any leading `/` and `ase:` prefix is stripped, so
22
21
  `ase-code-lint`, `/ase-code-lint`, and `ase:ase-code-lint` are
23
22
  equivalent. Resolution then proceeds in three tiers, each tried only if
@@ -35,7 +34,7 @@ most nine answer lines, a broader abbreviation such as `task` shows the
35
34
  first nine candidates and states how many exist in total.
36
35
 
37
36
  If *skill-name* is omitted, the whole catalog is rendered as a
38
- browsable `Skill`/`Purpose` table instead.
37
+ browsable list, grouped by skill category, instead.
39
38
 
40
39
  The skill exposes *no* option flags beyond `--help`/`-h`.
41
40
 
@@ -38,6 +38,15 @@ by querying *multiple* AIs for an *optimal consensus*.
38
38
 
39
39
  1. <step id="STEP 1: Preview Own Answer">
40
40
 
41
+ <if condition="<getopt-arguments/> is empty">
42
+ Only output the following <template/> and then immediately *STOP*
43
+ processing the entire current skill:
44
+
45
+ <template>
46
+ ⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: expected a `<question>` argument
47
+ </template>
48
+ </if>
49
+
41
50
  The user-selectable foreign models are restricted by the
42
51
  `--models`/`-m` option, parsed into <getopt-option-models/>
43
52
  as a comma-separated list of model tokens. The getopt parser
@@ -29,9 +29,11 @@ complete, unmodified individual responses.
29
29
  - `--models`|`-m` *model*[,...]:
30
30
  Restrict the *foreign* LLMs that are queried to the given
31
31
  comma-separated list of *model* tokens. Recognized tokens are
32
- `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, and `qwen`,
33
- where `all` selects every model. The default is `all`. Models that
34
- are not selected (or not available) are *silently skipped*.
32
+ `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, `qwen`,
33
+ `claude`, `codex`, and `copilot`, where `all` selects every API-based
34
+ model, but *not* the harness-based `claude`, `codex`, and `copilot`
35
+ models, which are queried only when given explicitly. The default
36
+ is `all`. Models that are not selected (or not available) are *silently skipped*.
35
37
  Anthropic Claude (the skill itself) is *always* included,
36
38
  independent of this option.
37
39
 
@@ -17,10 +17,12 @@ Analyze and Resolve Source Code Problems
17
17
 
18
18
  <expand name="getopt"
19
19
  arg1="optimizer"
20
- arg2="--id|-i <id>=optimizer">
20
+ arg2="--id|-i=optimizer">
21
21
  $ARGUMENTS
22
22
  </expand>
23
23
 
24
+ Set <id><getopt-option-id/></id>.
25
+
24
26
  <flow>
25
27
 
26
28
  1. <step id="STEP 1: Analyze Code">
@@ -29,7 +31,7 @@ Analyze and Resolve Source Code Problems
29
31
  subagent_type="general-purpose"
30
32
  run_in_background=false>
31
33
 
32
- Run <skill name="ase-code-analyze" args="--prefix <id/> <getopt-arguments/>"/>
34
+ Run <skill name="ase:ase-code-analyze" args="--prefix <id/> <getopt-arguments/>"/>
33
35
 
34
36
  </agent>
35
37
 
@@ -39,7 +41,7 @@ Analyze and Resolve Source Code Problems
39
41
 
40
42
  <parallel>
41
43
 
42
- For each `P<n/>` in the result set, in ascending order and strictly *one at a time*:
44
+ For each `P<n/>` in the result set, in ascending order:
43
45
 
44
46
  1. Call the Agent:
45
47