@rse/ase 2.0.3 → 2.0.5
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-hook.js +13 -4
- package/dst/ase-lib-version.js +14 -5
- package/dst/ase-man-catalog.js +229 -0
- package/dst/ase-man-render.js +278 -0
- package/dst/ase-man-tui.js +636 -0
- package/dst/ase-man.js +33 -27
- package/dst/ase-setup.js +2 -2
- package/dst/ase-spec.js +103 -20
- package/dst/ase-task-board-filter.js +5 -4
- package/dst/ase-task-board-web-client.js +26 -26
- package/dst/man/ase-agent-adhoc.md +1165 -0
- package/dst/man/ase-agent-condenser.md +383 -0
- package/dst/man/ase-agent-editor.md +441 -0
- package/dst/man/ase-agent-estimator.md +477 -0
- package/dst/man/ase-agent-fleet.md +358 -0
- package/dst/man/ase-agent-implementer.md +521 -0
- package/dst/man/ase-agent-integrator.md +449 -0
- package/dst/man/ase-agent-qualifier.md +426 -0
- package/dst/man/ase-agent-rebooter.md +384 -0
- package/dst/man/ase-agent-relay.md +262 -0
- package/dst/man/ase-agent-researcher.md +478 -0
- package/dst/man/ase-agent.md +628 -0
- package/dst/man/ase-artifact-list.md +57 -0
- package/dst/man/ase-artifact-name.md +56 -0
- package/dst/man/ase-artifact.md +92 -0
- package/dst/man/ase-config-delete.md +74 -0
- package/dst/man/ase-config-edit.md +83 -0
- package/dst/man/ase-config-get.md +70 -0
- package/dst/man/ase-config-init.md +110 -0
- package/dst/man/ase-config-list.md +68 -0
- package/dst/man/ase-config-set.md +92 -0
- package/dst/man/ase-config.md +426 -0
- package/dst/man/ase-hook-permission-request.md +61 -0
- package/dst/man/ase-hook-pre-tool-use.md +96 -0
- package/dst/man/ase-hook-session-end.md +71 -0
- package/dst/man/ase-hook-session-persona.md +65 -0
- package/dst/man/ase-hook-session-start.md +184 -0
- package/dst/man/ase-hook-stop.md +52 -0
- package/dst/man/ase-hook-user-prompt-submit.md +54 -0
- package/dst/man/ase-hook.md +93 -0
- package/dst/man/ase-man.md +195 -0
- package/dst/man/ase-mcp.md +102 -0
- package/dst/man/ase-service-log.md +59 -0
- package/dst/man/ase-service-send.md +60 -0
- package/dst/man/ase-service-start.md +93 -0
- package/dst/man/ase-service-status.md +58 -0
- package/dst/man/ase-service-stop.md +52 -0
- package/dst/man/ase-service.md +124 -0
- package/dst/man/ase-setup-disable.md +67 -0
- package/dst/man/ase-setup-enable.md +66 -0
- package/dst/man/ase-setup-install.md +116 -0
- package/dst/man/ase-setup-mcp.md +213 -0
- package/dst/man/ase-setup-status.md +101 -0
- package/dst/man/ase-setup-statusline.md +162 -0
- package/dst/man/ase-setup-telemetry.md +166 -0
- package/dst/man/ase-setup-uninstall.md +85 -0
- package/dst/man/ase-setup-update.md +117 -0
- package/dst/man/ase-setup.md +156 -0
- package/dst/man/ase-spec-export.md +99 -0
- package/dst/man/ase-spec-init.md +57 -0
- package/dst/man/ase-spec-lint.md +74 -0
- package/dst/man/ase-spec-preview.md +57 -0
- package/dst/man/ase-spec.md +85 -0
- package/dst/man/ase-statusline.md +330 -0
- package/dst/man/ase-task-assign.md +138 -0
- package/dst/man/ase-task-board.md +651 -0
- package/dst/man/ase-task-delete.md +46 -0
- package/dst/man/ase-task-edit.md +73 -0
- package/dst/man/ase-task-idscheme.md +92 -0
- package/dst/man/ase-task-lifecycle.md +92 -0
- package/dst/man/ase-task-list.md +86 -0
- package/dst/man/ase-task-load.md +48 -0
- package/dst/man/ase-task-newid.md +100 -0
- package/dst/man/ase-task-purge.md +49 -0
- package/dst/man/ase-task-rename.md +69 -0
- package/dst/man/ase-task-request.md +108 -0
- package/dst/man/ase-task-save.md +78 -0
- package/dst/man/ase-task-status.md +79 -0
- package/dst/man/ase-task-store.md +377 -0
- package/dst/man/ase-task-view.md +50 -0
- package/dst/man/ase-task.md +335 -0
- package/dst/man/ase-util-compat.md +38 -0
- package/dst/man/ase-util-diagram.md +140 -0
- package/dst/man/ase-util-meta.md +68 -0
- package/dst/man/ase-util-metric.md +74 -0
- package/dst/man/ase-util-mint.md +85 -0
- package/dst/man/ase-util-worktree.md +109 -0
- package/dst/man/ase-util.md +81 -0
- package/dst/man/ase.md +228 -0
- package/package.json +16 -21
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-lint.md +3 -3
- package/plugin/agents/ase-docs-proofread.md +3 -3
- package/plugin/agents/ase-docs-refine.md +3 -3
- package/plugin/agents/ase-spec-lint.md +338 -0
- package/plugin/mods/ase-mods-common.ts +444 -0
- package/plugin/mods/ase-mods-grill.ts +312 -0
- package/plugin/mods/ase-mods-help-browse.ts +405 -0
- package/plugin/mods/ase-mods-help-compose.ts +561 -0
- package/plugin/mods/ase-mods-help-find.ts +426 -0
- package/plugin/mods/ase-mods-help-hint.ts +134 -0
- package/plugin/mods/ase-mods-help-show.ts +142 -0
- package/plugin/mods/ase-mods.ts +214 -381
- package/plugin/mods/claude-code.d.ts +26 -3
- package/plugin/skills/ase-code-lint/SKILL.md +15 -15
- package/plugin/skills/ase-code-lint/help.md +21 -8
- package/plugin/skills/ase-help-intent/SKILL.md +2 -1
- package/plugin/skills/ase-help-intent/data.md +214 -9
- package/plugin/skills/ase-help-skill/catalog.md +1 -0
- package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
- package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
- package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
- package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
- package/plugin/skills/ase-spec-edit/help.md +1 -1
- package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
- package/plugin/skills/ase-spec-lint/help.md +184 -0
- package/plugin/skills/ase-task-implement/SKILL.md +24 -6
- package/plugin/skills/ase-task-implement/help.md +11 -1
- package/dst/man/ase-agent-adhoc.1 +0 -515
- package/dst/man/ase-agent-condenser.1 +0 -193
- package/dst/man/ase-agent-editor.1 +0 -212
- package/dst/man/ase-agent-estimator.1 +0 -214
- package/dst/man/ase-agent-fleet.1 +0 -185
- package/dst/man/ase-agent-implementer.1 +0 -233
- package/dst/man/ase-agent-integrator.1 +0 -213
- package/dst/man/ase-agent-qualifier.1 +0 -214
- package/dst/man/ase-agent-rebooter.1 +0 -193
- package/dst/man/ase-agent-relay.1 +0 -128
- package/dst/man/ase-agent-researcher.1 +0 -217
- package/dst/man/ase-agent.1 +0 -264
- package/dst/man/ase-artifact-list.1 +0 -38
- package/dst/man/ase-artifact-name.1 +0 -39
- package/dst/man/ase-artifact.1 +0 -56
- package/dst/man/ase-config-delete.1 +0 -45
- package/dst/man/ase-config-edit.1 +0 -48
- package/dst/man/ase-config-get.1 +0 -46
- package/dst/man/ase-config-init.1 +0 -60
- package/dst/man/ase-config-list.1 +0 -42
- package/dst/man/ase-config-set.1 +0 -52
- package/dst/man/ase-config.1 +0 -231
- package/dst/man/ase-hook-permission-request.1 +0 -36
- package/dst/man/ase-hook-pre-tool-use.1 +0 -59
- package/dst/man/ase-hook-session-end.1 +0 -47
- package/dst/man/ase-hook-session-persona.1 +0 -37
- package/dst/man/ase-hook-session-start.1 +0 -81
- package/dst/man/ase-hook-stop.1 +0 -34
- package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
- package/dst/man/ase-hook.1 +0 -51
- package/dst/man/ase-man.1 +0 -67
- package/dst/man/ase-mcp.1 +0 -61
- package/dst/man/ase-service-log.1 +0 -43
- package/dst/man/ase-service-send.1 +0 -47
- package/dst/man/ase-service-start.1 +0 -54
- package/dst/man/ase-service-status.1 +0 -46
- package/dst/man/ase-service-stop.1 +0 -37
- package/dst/man/ase-service.1 +0 -85
- package/dst/man/ase-setup-disable.1 +0 -44
- package/dst/man/ase-setup-enable.1 +0 -45
- package/dst/man/ase-setup-install.1 +0 -73
- package/dst/man/ase-setup-mcp.1 +0 -124
- package/dst/man/ase-setup-status.1 +0 -60
- package/dst/man/ase-setup-statusline.1 +0 -92
- package/dst/man/ase-setup-telemetry.1 +0 -92
- package/dst/man/ase-setup-uninstall.1 +0 -59
- package/dst/man/ase-setup-update.1 +0 -64
- package/dst/man/ase-setup.1 +0 -93
- package/dst/man/ase-spec-export.1 +0 -62
- package/dst/man/ase-spec-lint.1 +0 -40
- package/dst/man/ase-spec-preview.1 +0 -40
- package/dst/man/ase-spec.1 +0 -46
- package/dst/man/ase-statusline.1 +0 -189
- package/dst/man/ase-task-assign.1 +0 -71
- package/dst/man/ase-task-board.1 +0 -384
- package/dst/man/ase-task-delete.1 +0 -35
- package/dst/man/ase-task-edit.1 +0 -46
- package/dst/man/ase-task-idscheme.1 +0 -65
- package/dst/man/ase-task-lifecycle.1 +0 -57
- package/dst/man/ase-task-list.1 +0 -47
- package/dst/man/ase-task-load.1 +0 -36
- package/dst/man/ase-task-newid.1 +0 -61
- package/dst/man/ase-task-purge.1 +0 -37
- package/dst/man/ase-task-rename.1 +0 -44
- package/dst/man/ase-task-request.1 +0 -61
- package/dst/man/ase-task-save.1 +0 -48
- package/dst/man/ase-task-status.1 +0 -55
- package/dst/man/ase-task-store.1 +0 -194
- package/dst/man/ase-task-view.1 +0 -40
- package/dst/man/ase-task.1 +0 -160
- package/dst/man/ase-util-compat.1 +0 -25
- package/dst/man/ase-util-diagram.1 +0 -76
- package/dst/man/ase-util-meta.1 +0 -45
- package/dst/man/ase-util-metric.1 +0 -54
- package/dst/man/ase-util-mint.1 +0 -59
- package/dst/man/ase-util-worktree.1 +0 -72
- package/dst/man/ase-util.1 +0 -50
- package/dst/man/ase.1 +0 -124
|
@@ -2593,7 +2593,7 @@ declare module 'claude-code' {
|
|
|
2593
2593
|
call: EventCalls['tool']['call'];
|
|
2594
2594
|
/**
|
|
2595
2595
|
* Asks the engine's permission decision for a tool call now: the event
|
|
2596
|
-
* `tool.check`, resolved to `{ decision, reason?,
|
|
2596
|
+
* `tool.check`, resolved to its verdict (`{ decision, reason?, ... }`).
|
|
2597
2597
|
*
|
|
2598
2598
|
* The hooks run (the calling hook's own frame skipped, `next.origin` this
|
|
2599
2599
|
* plugin, no `tool_use_id`); nothing runs, no dialog opens, no PreToolUse
|
|
@@ -3719,7 +3719,7 @@ declare module 'claude-code' {
|
|
|
3719
3719
|
*/
|
|
3720
3720
|
'tool.call': ToolCallResult;
|
|
3721
3721
|
/**
|
|
3722
|
-
* `{ decision, reason?, rule?, hook?, ceiling? }`.
|
|
3722
|
+
* `{ decision, reason?, rule?, hook?, setting?, decider?, ceiling? }`.
|
|
3723
3723
|
*/
|
|
3724
3724
|
'tool.check': ToolCheckResult;
|
|
3725
3725
|
/**
|
|
@@ -10123,6 +10123,12 @@ declare module 'claude-code' {
|
|
|
10123
10123
|
*/
|
|
10124
10124
|
type ToolCheckArgs = Pick<ToolCheckInput, 'tool' | 'input'>;
|
|
10125
10125
|
|
|
10126
|
+
/**
|
|
10127
|
+
* Who an ask is put to, where that is not a dialog here: `host`, the program
|
|
10128
|
+
* that answers a hosted session's asks, or a served call's own session.
|
|
10129
|
+
*/
|
|
10130
|
+
type ToolCheckDecider = 'host';
|
|
10131
|
+
|
|
10126
10132
|
/**
|
|
10127
10133
|
* The verdict of `tool.check`: run the tool, put it to the mode's decider
|
|
10128
10134
|
* (the dialog, the auto-mode classifier, a headless host), or refuse it.
|
|
@@ -10158,7 +10164,7 @@ declare module 'claude-code' {
|
|
|
10158
10164
|
|
|
10159
10165
|
/**
|
|
10160
10166
|
* What a `tool.check` hook returns and what `next(e)` resolves to: the
|
|
10161
|
-
* verdict, why,
|
|
10167
|
+
* verdict, why, what stands behind it, and who answers core's ask.
|
|
10162
10168
|
*
|
|
10163
10169
|
* From core, the engine's declarative decision for the session's mode and
|
|
10164
10170
|
* rules. A hook may answer any verdict in either direction; the last word up
|
|
@@ -10188,6 +10194,23 @@ declare module 'claude-code' {
|
|
|
10188
10194
|
* Absent on a `$.tool.check` query, which runs no classic hook.
|
|
10189
10195
|
*/
|
|
10190
10196
|
hook?: string;
|
|
10197
|
+
/**
|
|
10198
|
+
* The key of the option whose own check asked, whoever configured it
|
|
10199
|
+
* (`permissions.blockReadsOutsideWorkingDirectories`).
|
|
10200
|
+
*
|
|
10201
|
+
* From core, for the read block: its ask on a shell command that reads
|
|
10202
|
+
* outside the working directories or, the block on, leaves the sandbox.
|
|
10203
|
+
*/
|
|
10204
|
+
setting?: string;
|
|
10205
|
+
/**
|
|
10206
|
+
* Who an ask is put to, where that is not a dialog here: `host`, a hosted
|
|
10207
|
+
* session's permission callback or the cloud session a served call is for.
|
|
10208
|
+
*
|
|
10209
|
+
* From core, on its own ask, only where a host would be asked: an ask the
|
|
10210
|
+
* mode or the loop refuses with nobody asked (dontAsk, no prompt to show)
|
|
10211
|
+
* names none, and neither does a host whose card the person answers.
|
|
10212
|
+
*/
|
|
10213
|
+
decider?: ToolCheckDecider;
|
|
10191
10214
|
/**
|
|
10192
10215
|
* The most permissive verdict the organization lets a call of the tool
|
|
10193
10216
|
* reach (`ask`), as its administrators set it on a connector's tool.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-lint
|
|
3
|
-
argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(AUTO|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)] [--force|-f] [--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=(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">
|
|
26
|
+
arg2="--auto|-a --severity|-S=(AUTO|LOW|MEDIUM|HIGH) --force|-f --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,11 +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` and <getopt-option-
|
|
39
|
+
<if condition="<ase-project-boxing/> is equal `black` and <getopt-option-force/> is not equal `true`">
|
|
40
40
|
|
|
41
41
|
The project source artifacts are classified as a *black box*, so
|
|
42
42
|
the user does *not* want them inspected or their problems surfaced
|
|
43
|
-
(
|
|
43
|
+
(the `--force` option lifts this skip).
|
|
44
44
|
*Skip* the entire investigation and reporting: do *not* invoke any
|
|
45
45
|
`Bash`, `Glob`, or `Agent` tool and do *not* read any source, only
|
|
46
46
|
output the following <template/> and then *SKIP* the remaining steps
|
|
@@ -53,9 +53,9 @@ related to a set of code quality aspects.
|
|
|
53
53
|
</if>
|
|
54
54
|
|
|
55
55
|
Set <condensed>true</condensed> if <ase-project-boxing/> is equal
|
|
56
|
-
`grey`
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
`grey` and <getopt-option-force/> is not equal `true`, and
|
|
57
|
+
<condensed>false</condensed> otherwise: a *condensed* report
|
|
58
|
+
suppresses the full unified diffs of STEP 3.
|
|
59
59
|
|
|
60
60
|
First, determine the *effective aspect set* <aspects/>, i.e., the
|
|
61
61
|
code quality aspects which are checked at all. For this, parse
|
|
@@ -189,13 +189,13 @@ related to a set of code quality aspects.
|
|
|
189
189
|
|
|
190
190
|
<if condition="<getopt-option-severity/> is equal `AUTO`">
|
|
191
191
|
Set <floor>MEDIUM</floor> if <ase-project-boxing/> is equal `grey`
|
|
192
|
-
|
|
193
|
-
and above), and
|
|
192
|
+
and <getopt-option-force/> is not equal `true` (grey boxing surfaces
|
|
193
|
+
only *material* findings of severity `MEDIUM` and above), and
|
|
194
|
+
<floor>LOW</floor> otherwise.
|
|
194
195
|
</if>
|
|
195
196
|
<else>
|
|
196
197
|
Set <floor><getopt-option-severity/></floor>: an *explicitly* given
|
|
197
|
-
severity floor always *wins* over the
|
|
198
|
-
floor and over the `black` skip.
|
|
198
|
+
severity floor always *wins* over the `grey` boxing floor.
|
|
199
199
|
</else>
|
|
200
200
|
|
|
201
201
|
Then *apply the effective severity floor* <floor/>: *Keep* a problem
|
|
@@ -448,9 +448,9 @@ related to a set of code quality aspects.
|
|
|
448
448
|
|
|
449
449
|
<if condition="<condensed/> is equal `true`">
|
|
450
450
|
|
|
451
|
-
The project source artifacts are classified as a *grey box
|
|
452
|
-
|
|
453
|
-
|
|
451
|
+
The project source artifacts are classified as a *grey box*,
|
|
452
|
+
so the user does *not* want the full artifact internals
|
|
453
|
+
surfaced:
|
|
454
454
|
*suppress* the full unified diff and instead show only the
|
|
455
455
|
*condensed* one-line-per-hunk representation. Report the
|
|
456
456
|
solution with the following <template/>:
|
|
@@ -578,7 +578,7 @@ related to a set of code quality aspects.
|
|
|
578
578
|
|
|
579
579
|
<if condition="<getopt-option-auto/> is not equal `true`">
|
|
580
580
|
<ase-tpl-hint level="verbose">
|
|
581
|
-
Use `/ase-code-lint --auto` to apply all corrections unattended, `--severity` to raise the reporting floor, `--include`/`--exclude` to narrow the checked aspects, and `--staged`/`--unstaged` to lint only the changed files.
|
|
581
|
+
Use `/ase-code-lint --auto` to apply all corrections unattended, `--severity` to raise the reporting floor, `--force` to ignore the project boxing, `--include`/`--exclude` to narrow the checked aspects, and `--staged`/`--unstaged` to lint only the changed files.
|
|
582
582
|
</ase-tpl-hint>
|
|
583
583
|
</if>
|
|
584
584
|
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
[`--help`|`-h`]
|
|
10
10
|
[`--auto`|`-a`]
|
|
11
11
|
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
12
|
+
[`--force`|`-f`]
|
|
12
13
|
[`--include`|`-i`=*aspect*[`,`...]]
|
|
13
14
|
[`--exclude`|`-e`=*aspect*[`,`...]]
|
|
14
15
|
[`--staged`]
|
|
@@ -64,14 +65,20 @@ the code, and comments contradicting the code.
|
|
|
64
65
|
Set the *severity floor* (default `AUTO`): findings below the chosen
|
|
65
66
|
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
66
67
|
`HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
|
|
67
|
-
boxing
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
boxing (unless `--force` is given) and `LOW` (keep all findings)
|
|
69
|
+
otherwise; an explicitly given floor always wins over the `grey`
|
|
70
|
+
boxing, i.e. e.g. with `LOW`, it acts on all findings of a project
|
|
71
|
+
with `grey` boxing. `ACCEPTED` findings are never suppressed.
|
|
72
|
+
Surviving findings are reported in *descending severity* order
|
|
73
|
+
`HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the `file`/`line` order
|
|
74
|
+
within the same severity.
|
|
75
|
+
|
|
76
|
+
- `--force`|`-f`:
|
|
77
|
+
Ignore the project boxing entirely: lint a project with `black`
|
|
78
|
+
boxing (which is otherwise not linted at all), and show the full
|
|
79
|
+
unified diffs and the default `LOW` severity floor for a project
|
|
80
|
+
with `grey` boxing (which otherwise shows only condensed one-line
|
|
81
|
+
diffs and defaults to the `MEDIUM` severity floor).
|
|
75
82
|
|
|
76
83
|
- `--include`|`-i`=*aspect*[`,`...]:
|
|
77
84
|
Restrict the checked code quality aspects to the given
|
|
@@ -132,6 +139,12 @@ Lint a directory, reporting only `MEDIUM` and `HIGH` findings:
|
|
|
132
139
|
❯ /ase-code-lint -S MEDIUM src/handlers/
|
|
133
140
|
```
|
|
134
141
|
|
|
142
|
+
Lint a directory regardless of the project boxing:
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
❯ /ase-code-lint --force src/handlers/
|
|
146
|
+
```
|
|
147
|
+
|
|
135
148
|
Lint a source file for the formatting and spelling aspects only:
|
|
136
149
|
|
|
137
150
|
```text
|
|
@@ -72,7 +72,8 @@ catalog you match <intent/> against:
|
|
|
72
72
|
Match the current <intent/> against the <corpus/> and select
|
|
73
73
|
*every* skill that adequately fits it -- judging the fit
|
|
74
74
|
primarily by each skill's `## SCENARIOS` ("You want ...") and
|
|
75
|
-
`## DESCRIPTION` sections
|
|
75
|
+
`## DESCRIPTION` sections, and secondarily by its `## NAME`
|
|
76
|
+
and `## SYNOPSIS` sections. Order the selected skills from
|
|
76
77
|
best-fitting to worst-fitting and keep at most the *8* best
|
|
77
78
|
ones, so the dispatch dialog of sub-step 4 stays addressable.
|
|
78
79
|
Set <count/> to the number of kept skills. Then, for each kept
|
|
@@ -633,6 +633,7 @@ Get insights into a specific subsystem:
|
|
|
633
633
|
[`--help`|`-h`]
|
|
634
634
|
[`--auto`|`-a`]
|
|
635
635
|
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
636
|
+
[`--force`|`-f`]
|
|
636
637
|
[`--include`|`-i`=*aspect*[`,`...]]
|
|
637
638
|
[`--exclude`|`-e`=*aspect*[`,`...]]
|
|
638
639
|
[`--staged`]
|
|
@@ -688,14 +689,20 @@ the code, and comments contradicting the code.
|
|
|
688
689
|
Set the *severity floor* (default `AUTO`): findings below the chosen
|
|
689
690
|
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
690
691
|
`HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
|
|
691
|
-
boxing
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
692
|
+
boxing (unless `--force` is given) and `LOW` (keep all findings)
|
|
693
|
+
otherwise; an explicitly given floor always wins over the `grey`
|
|
694
|
+
boxing, i.e. e.g. with `LOW`, it acts on all findings of a project
|
|
695
|
+
with `grey` boxing. `ACCEPTED` findings are never suppressed.
|
|
696
|
+
Surviving findings are reported in *descending severity* order
|
|
697
|
+
`HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the `file`/`line` order
|
|
698
|
+
within the same severity.
|
|
699
|
+
|
|
700
|
+
- `--force`|`-f`:
|
|
701
|
+
Ignore the project boxing entirely: lint a project with `black`
|
|
702
|
+
boxing (which is otherwise not linted at all), and show the full
|
|
703
|
+
unified diffs and the default `LOW` severity floor for a project
|
|
704
|
+
with `grey` boxing (which otherwise shows only condensed one-line
|
|
705
|
+
diffs and defaults to the `MEDIUM` severity floor).
|
|
699
706
|
|
|
700
707
|
- `--include`|`-i`=*aspect*[`,`...]:
|
|
701
708
|
Restrict the checked code quality aspects to the given
|
|
@@ -756,6 +763,12 @@ Lint a directory, reporting only `MEDIUM` and `HIGH` findings:
|
|
|
756
763
|
❯ /ase-code-lint -S MEDIUM src/handlers/
|
|
757
764
|
```
|
|
758
765
|
|
|
766
|
+
Lint a directory regardless of the project boxing:
|
|
767
|
+
|
|
768
|
+
```text
|
|
769
|
+
❯ /ase-code-lint --force src/handlers/
|
|
770
|
+
```
|
|
771
|
+
|
|
759
772
|
Lint a source file for the formatting and spelling aspects only:
|
|
760
773
|
|
|
761
774
|
```text
|
|
@@ -3574,6 +3587,188 @@ Loop over multiple specification edits inside a dedicated Git worktree:
|
|
|
3574
3587
|
❯ /ase-spec-edit -l -w event-series
|
|
3575
3588
|
```
|
|
3576
3589
|
|
|
3590
|
+
</purpose>
|
|
3591
|
+
<purpose name="ase-spec-lint">
|
|
3592
|
+
|
|
3593
|
+
## NAME
|
|
3594
|
+
|
|
3595
|
+
`ase-spec-lint` - Lint Specification
|
|
3596
|
+
|
|
3597
|
+
## SYNOPSIS
|
|
3598
|
+
|
|
3599
|
+
`ase-spec-lint`
|
|
3600
|
+
[`--help`|`-h`]
|
|
3601
|
+
[`--auto`|`-a`]
|
|
3602
|
+
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
3603
|
+
[`--force`|`-f`]
|
|
3604
|
+
[`--include`|`-i`=*aspect*[`,`...]]
|
|
3605
|
+
[`--exclude`|`-e`=*aspect*[`,`...]]
|
|
3606
|
+
[`--staged`]
|
|
3607
|
+
[`--unstaged`]
|
|
3608
|
+
[*spec-reference*]
|
|
3609
|
+
|
|
3610
|
+
## DESCRIPTION
|
|
3611
|
+
|
|
3612
|
+
The `ase-spec-lint` skill lints the *SpecBook*-based specification
|
|
3613
|
+
(SPEC) for *potential quality problems* related to a fixed set of
|
|
3614
|
+
specification quality aspects: from its syntax and formatting, over
|
|
3615
|
+
its individual statements, up to the logical gaps of its model and its
|
|
3616
|
+
completeness for an implementation. The investigation is dispatched to
|
|
3617
|
+
sub-agents (`ase:ase-spec-lint`) so that scanning details do not leak
|
|
3618
|
+
into the user-visible transcript.
|
|
3619
|
+
|
|
3620
|
+
For each detected problem, the skill renders a unified-diff *SOLUTION*
|
|
3621
|
+
preview and either asks the user to `ACCEPT` or `REJECT` the proposed
|
|
3622
|
+
correction interactively (or refine it via a free-text hint, which
|
|
3623
|
+
re-proposes the correction without limit) or - with `--auto` - applies
|
|
3624
|
+
all corrections automatically. Every applied correction refreshes the
|
|
3625
|
+
`Modified:` timestamp of the changed specification files.
|
|
3626
|
+
|
|
3627
|
+
By default all ten specification quality aspects are checked. The
|
|
3628
|
+
`--include` and `--exclude` options narrow this to an *effective aspect
|
|
3629
|
+
set*: with `--include` only, exactly the listed aspects are checked;
|
|
3630
|
+
with `--exclude` only, all aspects except the listed ones; with both,
|
|
3631
|
+
the included ones minus the excluded ones. An unknown aspect id, or a
|
|
3632
|
+
combination which cancels out to an empty set, aborts the skill with an
|
|
3633
|
+
error. The ten aspect ids are:
|
|
3634
|
+
|
|
3635
|
+
```text
|
|
3636
|
+
S01 SYNTAX S04 AMBIGUITY S07 REDUNDANCY S10 COMPLETENESS
|
|
3637
|
+
S02 FORMAT S05 ATOMICITY S08 CONSISTENCY
|
|
3638
|
+
S03 RATIONALE S06 REALIZATION S09 LOGIC
|
|
3639
|
+
```
|
|
3640
|
+
|
|
3641
|
+
The `S01 SYNTAX` aspect reports the diagnostics of the specification
|
|
3642
|
+
linting against the *SpecBook* schema configuration of the project and
|
|
3643
|
+
of the generic Markdown linting via *markdownlint* (both as with `ase
|
|
3644
|
+
spec lint --markdown`), mapping the severity `error` onto `HIGH` and
|
|
3645
|
+
`warning` onto `MEDIUM`. The `S02 FORMAT` aspect checks the formatting
|
|
3646
|
+
against the *SpecBook* format variants and the prevailing conventions
|
|
3647
|
+
of the specification itself. The aspects `S03 RATIONALE` up to `S07
|
|
3648
|
+
REDUNDANCY` check the statements against the *Specifying Tenets* of
|
|
3649
|
+
*ASE*: a `, BECAUSE` rationale per statement, unambiguous and
|
|
3650
|
+
verifiable statements, atomic statements, intent instead of
|
|
3651
|
+
realization, and a single source of truth per fact.
|
|
3652
|
+
|
|
3653
|
+
The *model-wide* aspects `S07 REDUNDANCY` up to `S10 COMPLETENESS` are
|
|
3654
|
+
judged on the *entire* specification, even if only parts of it are
|
|
3655
|
+
linted: `S08 CONSISTENCY` checks for contradictions and drifting
|
|
3656
|
+
terminology, `S09 LOGIC` for logical gaps in the specification model
|
|
3657
|
+
(like unreachable states or entities without any relationship), and
|
|
3658
|
+
`S10 COMPLETENESS` for open ends which would force an implementer to
|
|
3659
|
+
guess. As the corrections of `S09 LOGIC` and `S10 COMPLETENESS` fill
|
|
3660
|
+
gaps with *best-guess* content, they are proposed for review only and
|
|
3661
|
+
are *never* applied under `--auto`.
|
|
3662
|
+
|
|
3663
|
+
## OPTIONS
|
|
3664
|
+
|
|
3665
|
+
- `--auto`|`-a`:
|
|
3666
|
+
Automatically apply every proposed correction without asking the
|
|
3667
|
+
user via the interactive dialog, except for the best-guess
|
|
3668
|
+
corrections of the aspects `S09 LOGIC` and `S10 COMPLETENESS`,
|
|
3669
|
+
which are only reported.
|
|
3670
|
+
|
|
3671
|
+
- `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
|
|
3672
|
+
Set the *severity floor* (default `AUTO`): findings below the chosen
|
|
3673
|
+
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
3674
|
+
`HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
|
|
3675
|
+
boxing (unless `--force` is given) and `LOW` (keep all findings)
|
|
3676
|
+
otherwise; an explicitly given floor always wins over the `grey`
|
|
3677
|
+
boxing, i.e. e.g. with `LOW`, it acts on all findings of a project
|
|
3678
|
+
with `grey` boxing. `ACCEPTED` findings are never suppressed.
|
|
3679
|
+
Surviving findings are reported in *descending severity* order
|
|
3680
|
+
`HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`, keeping the `file`/`line` order
|
|
3681
|
+
within the same severity.
|
|
3682
|
+
|
|
3683
|
+
- `--force`|`-f`:
|
|
3684
|
+
Ignore the project boxing entirely: lint a project with `black`
|
|
3685
|
+
boxing (which is otherwise not linted at all), and show the full
|
|
3686
|
+
unified diffs and the default `LOW` severity floor for a project
|
|
3687
|
+
with `grey` boxing (which otherwise shows only condensed one-line
|
|
3688
|
+
diffs and defaults to the `MEDIUM` severity floor).
|
|
3689
|
+
|
|
3690
|
+
- `--include`|`-i`=*aspect*[`,`...]:
|
|
3691
|
+
Restrict the checked specification quality aspects to the given
|
|
3692
|
+
comma-separated list of aspect ids (e.g. `S01,S02`). Without this
|
|
3693
|
+
option, all ten aspects are checked.
|
|
3694
|
+
|
|
3695
|
+
- `--exclude`|`-e`=*aspect*[`,`...]:
|
|
3696
|
+
Remove the given comma-separated list of aspect ids from the checked
|
|
3697
|
+
specification quality aspects. Applied *after* `--include`, so
|
|
3698
|
+
`-i S09,S10 -e S10` checks `S09` only.
|
|
3699
|
+
|
|
3700
|
+
- `--staged`:
|
|
3701
|
+
Restrict the linting to the specification files with *staged* Git
|
|
3702
|
+
changes. Deleted files are skipped, and the files are linted in
|
|
3703
|
+
their current working copy state. Combined with `--unstaged`, lint
|
|
3704
|
+
the specification files with *any* uncommitted Git changes.
|
|
3705
|
+
|
|
3706
|
+
- `--unstaged`:
|
|
3707
|
+
Restrict the linting to the specification files with *unstaged* Git
|
|
3708
|
+
changes plus the *untracked* specification files. Deleted files are
|
|
3709
|
+
skipped. Combined with `--staged`, lint the specification files with
|
|
3710
|
+
*any* uncommitted Git changes.
|
|
3711
|
+
|
|
3712
|
+
## ARGUMENTS
|
|
3713
|
+
|
|
3714
|
+
- *spec-reference*:
|
|
3715
|
+
A file, directory, or wildcard reference to the specification files
|
|
3716
|
+
to lint. Without it, the *entire* specification is linted, resp.
|
|
3717
|
+
under `--staged` or `--unstaged` all changed specification files.
|
|
3718
|
+
|
|
3719
|
+
## SCENARIOS
|
|
3720
|
+
|
|
3721
|
+
- You want your specification checked for specification quality problems
|
|
3722
|
+
- You want to know whether your specification is sufficient for an implementation
|
|
3723
|
+
- You want logical gaps in your specification model detected
|
|
3724
|
+
- You want corrections proposed which you accept or reject one by one
|
|
3725
|
+
- You want all mechanical corrections applied automatically
|
|
3726
|
+
- You want only your staged or unstaged specification changes linted before committing
|
|
3727
|
+
|
|
3728
|
+
## EXAMPLES
|
|
3729
|
+
|
|
3730
|
+
Lint the entire specification interactively:
|
|
3731
|
+
|
|
3732
|
+
```text
|
|
3733
|
+
❯ /ase-spec-lint
|
|
3734
|
+
```
|
|
3735
|
+
|
|
3736
|
+
Lint a single specification file and automatically apply all corrections:
|
|
3737
|
+
|
|
3738
|
+
```text
|
|
3739
|
+
❯ /ase-spec-lint --auto docs/spec/data-model.md
|
|
3740
|
+
```
|
|
3741
|
+
|
|
3742
|
+
Lint the specification for its syntax and formatting only:
|
|
3743
|
+
|
|
3744
|
+
```text
|
|
3745
|
+
❯ /ase-spec-lint -i S01,S02
|
|
3746
|
+
```
|
|
3747
|
+
|
|
3748
|
+
Check the specification model for logical gaps and completeness only:
|
|
3749
|
+
|
|
3750
|
+
```text
|
|
3751
|
+
❯ /ase-spec-lint -i S09,S10
|
|
3752
|
+
```
|
|
3753
|
+
|
|
3754
|
+
Lint the specification, reporting only `MEDIUM` and `HIGH` findings:
|
|
3755
|
+
|
|
3756
|
+
```text
|
|
3757
|
+
❯ /ase-spec-lint -S MEDIUM
|
|
3758
|
+
```
|
|
3759
|
+
|
|
3760
|
+
Lint the specification regardless of the project boxing:
|
|
3761
|
+
|
|
3762
|
+
```text
|
|
3763
|
+
❯ /ase-spec-lint --force
|
|
3764
|
+
```
|
|
3765
|
+
|
|
3766
|
+
Lint only the specification files with staged Git changes:
|
|
3767
|
+
|
|
3768
|
+
```text
|
|
3769
|
+
❯ /ase-spec-lint --staged
|
|
3770
|
+
```
|
|
3771
|
+
|
|
3577
3772
|
</purpose>
|
|
3578
3773
|
<purpose name="ase-sync-export">
|
|
3579
3774
|
|
|
@@ -4847,6 +5042,7 @@ Switch to a specific task:
|
|
|
4847
5042
|
[`--source`|`-s` *source*]
|
|
4848
5043
|
[`--changeset`|`-c` *changeset*]
|
|
4849
5044
|
[`--draft`|`-d`]
|
|
5045
|
+
[`--no-cleanup`|`-K`]
|
|
4850
5046
|
[`--stateless`|`-S`]
|
|
4851
5047
|
[*id*]
|
|
4852
5048
|
|
|
@@ -4889,7 +5085,9 @@ overridable via `--changeset`:
|
|
|
4889
5085
|
- `branch:`*name*: the change set is *committed* onto the branch
|
|
4890
5086
|
*name* -- created from the source if missing -- inside the worktree
|
|
4891
5087
|
in which this branch is checked out, or inside a newly created
|
|
4892
|
-
worktree `.ase/worktree/<name
|
|
5088
|
+
worktree `.ase/worktree/<name>`, which is removed again after the
|
|
5089
|
+
commit (unless `--no-cleanup` is given), while an already existing
|
|
5090
|
+
worktree is always kept.
|
|
4893
5091
|
- `attachment:`*name*: the change set is made and verified in a
|
|
4894
5092
|
*temporary* worktree, detached at the source commit, and stored as
|
|
4895
5093
|
the attachment block of type `text/x-diff; charset=utf-8;
|
|
@@ -4996,6 +5194,13 @@ plan, unless `--next` pre-selects this choice.
|
|
|
4996
5194
|
*implementation draft* of the plan only, leaving all artifacts
|
|
4997
5195
|
untouched (a dry-run). Mutually exclusive with `--changeset`.
|
|
4998
5196
|
|
|
5197
|
+
- `--no-cleanup`|`-K`:
|
|
5198
|
+
For a `branch:` changeset, keep the worktree `.ase/worktree/<name>`
|
|
5199
|
+
newly created by this run, instead of removing it after the commit,
|
|
5200
|
+
so the change set can be reviewed, built, and tested there. Without
|
|
5201
|
+
this option, the worktree is removed only if it has no uncommitted
|
|
5202
|
+
changes, as the change set lives on the branch alone.
|
|
5203
|
+
|
|
4999
5204
|
- `--stateless`|`-S`:
|
|
5000
5205
|
Leave the plan's `Status:` key untouched.
|
|
5001
5206
|
|
|
@@ -15,6 +15,7 @@ START -> ase-arch-discover
|
|
|
15
15
|
START -> ase-code-insight
|
|
16
16
|
START -> ase-code-explain
|
|
17
17
|
START -> ase-code-lint
|
|
18
|
+
START -> ase-spec-lint
|
|
18
19
|
START -> ase-docs-shorten
|
|
19
20
|
START -> ase-docs-refine
|
|
20
21
|
START -> ase-docs-proofread
|
|
@@ -46,6 +47,7 @@ ase-arch-discover -> END
|
|
|
46
47
|
ase-code-insight -> END
|
|
47
48
|
ase-code-explain -> END
|
|
48
49
|
ase-code-lint -> END
|
|
50
|
+
ase-spec-lint -> END
|
|
49
51
|
ase-docs-shorten -> END
|
|
50
52
|
ase-docs-refine -> END
|
|
51
53
|
ase-docs-proofread -> END
|
|
@@ -71,6 +71,7 @@ currently staged Git changes.
|
|
|
71
71
|
- Use imperative mood ("add" not "added")
|
|
72
72
|
- Use *no* period at the end
|
|
73
73
|
- Use *no* Markdown formatting
|
|
74
|
+
- Never add `Co-Authored-By` trailers to commit messages
|
|
74
75
|
|
|
75
76
|
Output this crafted commit message with the following <template/>:
|
|
76
77
|
|
|
@@ -121,6 +121,7 @@ processing the entire current skill:
|
|
|
121
121
|
imperative-mood summary without a trailing period, without
|
|
122
122
|
Markdown formatting, and without any double-quote (`"`),
|
|
123
123
|
backtick (`` ` ``), dollar (`$`), or backslash (`\`) characters.
|
|
124
|
+
Never add `Co-Authored-By` trailers to commit messages.
|
|
124
125
|
|
|
125
126
|
4. Commit the changes by running the command
|
|
126
127
|
`git -C "<source-dir/>" commit -m "<message/>"`. If it fails,
|
|
@@ -393,9 +393,9 @@ empty <todo-what/> or <todo-how/> renders as `(none)`:
|
|
|
393
393
|
|
|
394
394
|
<if condition="<worktree-dir/> is not empty">
|
|
395
395
|
Run the command `ase spec lint` with <worktree-dir/> as its
|
|
396
|
-
working directory and parse its
|
|
397
|
-
|
|
398
|
-
<diagnostics/> -- the `ase_specbook_lint` tool always validates
|
|
396
|
+
working directory and parse its logged
|
|
397
|
+
`lint: specbook: <file/>:<line/>:<column/>: <message/>` lines
|
|
398
|
+
(on standard error) into <diagnostics/> -- the `ase_specbook_lint` tool always validates
|
|
399
399
|
the *project* working copy and hence *MUST* *NOT* be used here.
|
|
400
400
|
</if>
|
|
401
401
|
<else>
|
|
@@ -215,5 +215,5 @@ Loop over multiple specification edits inside a dedicated Git worktree:
|
|
|
215
215
|
|
|
216
216
|
## SEE ALSO
|
|
217
217
|
|
|
218
|
-
[`ase-spec-activate`](../ase-spec-activate/help.md), [`ase-code-edit`](../ase-code-edit/help.md), [`ase-sync-import`](../ase-sync-import/help.md),
|
|
218
|
+
[`ase-spec-activate`](../ase-spec-activate/help.md), [`ase-spec-lint`](../ase-spec-lint/help.md), [`ase-code-edit`](../ase-code-edit/help.md), [`ase-sync-import`](../ase-sync-import/help.md),
|
|
219
219
|
[`ase-sync-reconcile`](../ase-sync-reconcile/help.md), [`ase-sync-export`](../ase-sync-export/help.md), [`ase-task-grill`](../ase-task-grill/help.md).
|