@rse/ase 1.0.6 → 2.0.0
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-agent-definition-api.d.ts +184 -0
- package/dst/ase-agent-definition-api.js +6 -0
- package/dst/ase-agent-definition-builtin/condenser.js +42 -0
- package/dst/ase-agent-definition-builtin/editor.js +45 -0
- package/dst/ase-agent-definition-builtin/estimator.js +98 -0
- package/dst/ase-agent-definition-builtin/implementer.js +121 -0
- package/dst/ase-agent-definition-builtin/integrator.js +56 -0
- package/dst/ase-agent-definition-builtin/qualifier.js +61 -0
- package/dst/ase-agent-definition-builtin/rebooter.js +41 -0
- package/dst/ase-agent-definition-builtin/researcher.js +77 -0
- package/dst/ase-agent-definition-core.js +827 -0
- package/dst/ase-agent-fleet.js +772 -0
- package/dst/ase-agent-process.js +232 -0
- package/dst/ase-agent-relay-client.js +509 -0
- package/dst/ase-agent-relay-core.js +213 -0
- package/dst/ase-agent-relay-server-bind.js +242 -0
- package/dst/ase-agent-relay-server-cli.js +50 -0
- package/dst/ase-agent-runtime-claim.js +189 -0
- package/dst/ase-agent-runtime-engine.js +1100 -0
- package/dst/ase-agent-runtime-exec.js +275 -0
- package/dst/ase-agent-runtime-phase.js +581 -0
- package/dst/ase-agent-runtime-request.js +272 -0
- package/dst/ase-agent-runtime-tool.js +207 -0
- package/dst/ase-agent-runtime.js +1316 -0
- package/dst/ase-agent.js +65 -0
- package/dst/ase-artifact.js +6 -5
- package/dst/ase-config-core.js +465 -0
- package/dst/ase-config-schema.js +351 -0
- package/dst/ase-config-scope.js +172 -0
- package/dst/ase-config.js +25 -585
- package/dst/ase-hook.js +230 -116
- package/dst/ase-lib-daemon-cli.js +130 -0
- package/dst/ase-lib-hash.js +20 -0
- package/dst/{ase-log.js → ase-lib-log.js} +40 -7
- package/dst/ase-lib-server-bind.js +115 -0
- package/dst/ase-lib-server-cli.js +474 -0
- package/dst/{ase-table.js → ase-lib-table.js} +1 -1
- package/dst/{ase-version.js → ase-lib-version.js} +3 -0
- package/dst/ase-man.js +96 -0
- package/dst/ase-mcp.js +166 -13
- package/dst/{ase-getopt.js → ase-service-getopt.js} +82 -80
- package/dst/{ase-markdown.js → ase-service-markdown.js} +18 -11
- package/dst/ase-service-otel.js +1246 -0
- package/dst/{ase-skills.js → ase-service-skills.js} +29 -64
- package/dst/ase-service-state.js +101 -0
- package/dst/ase-service.js +251 -76
- package/dst/ase-setup-common.js +141 -0
- package/dst/ase-setup-mcp.js +359 -0
- package/dst/ase-setup-settings.js +837 -0
- package/dst/ase-setup.js +113 -869
- package/dst/ase-spec.js +31 -19
- package/dst/ase-statusline.js +108 -43
- package/dst/ase-task-board-core.js +739 -0
- package/dst/ase-task-board-filter.js +127 -0
- package/dst/ase-task-board-flow.js +237 -0
- package/dst/ase-task-board-graph.js +497 -0
- package/dst/ase-task-board-stats.js +263 -0
- package/dst/ase-task-board-tui-control.js +775 -0
- package/dst/ase-task-board-tui-model.js +1008 -0
- package/dst/ase-task-board-tui-popup.js +626 -0
- package/dst/ase-task-board-tui-style.js +106 -0
- package/dst/ase-task-board-tui-view.js +847 -0
- package/dst/ase-task-board-tui.js +189 -0
- package/dst/ase-task-board-web-client.css +1 -0
- package/dst/ase-task-board-web-client.html +20 -0
- package/dst/ase-task-board-web-client.js +81 -0
- package/dst/ase-task-board-web-server.js +823 -0
- package/dst/ase-task-board.js +134 -0
- package/dst/ase-task-format.js +757 -0
- package/dst/ase-task-request.js +208 -0
- package/dst/ase-task-store-client.js +495 -0
- package/dst/ase-task-store-core.js +804 -0
- package/dst/ase-task-store-issues.js +237 -0
- package/dst/ase-task-store-plugin-api.js +6 -0
- package/dst/ase-task-store-plugin-ase.js +484 -0
- package/dst/ase-task-store-plugin-delegate.js +137 -0
- package/dst/ase-task-store-plugin-gitea.js +666 -0
- package/dst/ase-task-store-plugin-github.js +696 -0
- package/dst/ase-task-store-plugin-gitlab.js +668 -0
- package/dst/ase-task-store-server-bind.js +538 -0
- package/dst/ase-task-store-server-cli.js +154 -0
- package/dst/ase-task.js +1335 -357
- package/dst/{ase-compat.js → ase-util-compat.js} +2 -2
- package/dst/{ase-diagram.js → ase-util-diagram.js} +107 -32
- package/dst/{ase-meta.js → ase-util-meta.js} +2 -2
- package/dst/{ase-metric.js → ase-util-metric.js} +2 -2
- package/dst/{ase-mint.js → ase-util-mint.js} +19 -12
- package/dst/{ase-worktree.js → ase-util-worktree.js} +30 -19
- package/dst/ase-util.js +20 -0
- package/dst/ase.js +108 -32
- package/dst/man/ase-agent-adhoc.1 +515 -0
- package/dst/man/ase-agent-condenser.1 +193 -0
- package/dst/man/ase-agent-editor.1 +212 -0
- package/dst/man/ase-agent-estimator.1 +214 -0
- package/dst/man/ase-agent-fleet.1 +185 -0
- package/dst/man/ase-agent-implementer.1 +233 -0
- package/dst/man/ase-agent-integrator.1 +213 -0
- package/dst/man/ase-agent-qualifier.1 +214 -0
- package/dst/man/ase-agent-rebooter.1 +193 -0
- package/dst/man/ase-agent-relay.1 +128 -0
- package/dst/man/ase-agent-researcher.1 +217 -0
- package/dst/man/ase-agent.1 +264 -0
- package/dst/man/ase-artifact-list.1 +38 -0
- package/dst/man/ase-artifact-name.1 +39 -0
- package/dst/man/ase-artifact.1 +56 -0
- package/dst/man/ase-config-delete.1 +45 -0
- package/dst/man/ase-config-edit.1 +48 -0
- package/dst/man/ase-config-get.1 +46 -0
- package/dst/man/ase-config-init.1 +60 -0
- package/dst/man/ase-config-list.1 +42 -0
- package/dst/man/ase-config-set.1 +52 -0
- package/dst/man/ase-config.1 +225 -0
- package/dst/man/ase-hook-permission-request.1 +36 -0
- package/dst/man/ase-hook-pre-tool-use.1 +59 -0
- package/dst/man/ase-hook-session-end.1 +47 -0
- package/dst/man/ase-hook-session-persona.1 +37 -0
- package/dst/man/ase-hook-session-start.1 +81 -0
- package/dst/man/ase-hook-stop.1 +34 -0
- package/dst/man/ase-hook-user-prompt-submit.1 +34 -0
- package/dst/man/ase-hook.1 +51 -0
- package/dst/man/ase-man.1 +67 -0
- package/dst/man/ase-mcp.1 +61 -0
- package/dst/man/ase-service-log.1 +43 -0
- package/dst/man/ase-service-send.1 +47 -0
- package/dst/man/ase-service-start.1 +54 -0
- package/dst/man/ase-service-status.1 +46 -0
- package/dst/man/ase-service-stop.1 +37 -0
- package/dst/man/ase-service.1 +85 -0
- package/dst/man/ase-setup-disable.1 +44 -0
- package/dst/man/ase-setup-enable.1 +45 -0
- package/dst/man/ase-setup-install.1 +73 -0
- package/dst/man/ase-setup-mcp.1 +124 -0
- package/dst/man/ase-setup-status.1 +60 -0
- package/dst/man/ase-setup-statusline.1 +92 -0
- package/dst/man/ase-setup-telemetry.1 +92 -0
- package/dst/man/ase-setup-uninstall.1 +59 -0
- package/dst/man/ase-setup-update.1 +64 -0
- package/dst/man/ase-setup.1 +93 -0
- package/dst/man/ase-spec-export.1 +62 -0
- package/dst/man/ase-spec-lint.1 +40 -0
- package/dst/man/ase-spec-preview.1 +40 -0
- package/dst/man/ase-spec.1 +46 -0
- package/dst/man/ase-statusline.1 +189 -0
- package/dst/man/ase-task-assign.1 +71 -0
- package/dst/man/ase-task-board.1 +384 -0
- package/dst/man/ase-task-delete.1 +35 -0
- package/dst/man/ase-task-edit.1 +46 -0
- package/dst/man/ase-task-idscheme.1 +65 -0
- package/dst/man/ase-task-lifecycle.1 +57 -0
- package/dst/man/ase-task-list.1 +47 -0
- package/dst/man/ase-task-load.1 +36 -0
- package/dst/man/ase-task-newid.1 +61 -0
- package/dst/man/ase-task-purge.1 +37 -0
- package/dst/man/ase-task-rename.1 +44 -0
- package/dst/man/ase-task-request.1 +61 -0
- package/dst/man/ase-task-save.1 +48 -0
- package/dst/man/ase-task-status.1 +55 -0
- package/dst/man/ase-task-store.1 +194 -0
- package/dst/man/ase-task-view.1 +40 -0
- package/dst/man/ase-task.1 +160 -0
- package/dst/man/ase-util-compat.1 +25 -0
- package/dst/man/ase-util-diagram.1 +76 -0
- package/dst/man/ase-util-meta.1 +45 -0
- package/dst/man/ase-util-metric.1 +54 -0
- package/dst/man/ase-util-mint.1 +59 -0
- package/dst/man/ase-util-worktree.1 +72 -0
- package/dst/man/ase-util.1 +50 -0
- package/dst/man/ase.1 +124 -0
- package/package.json +79 -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-meta-diagram.md +12 -8
- package/plugin/agents/ase-repo-review.md +322 -0
- package/plugin/hooks/hooks-codex.json +5 -0
- package/plugin/hooks/hooks-copilot.json +5 -0
- package/plugin/hooks/hooks.json +8 -0
- package/plugin/meta/ase-common-approach.md +117 -0
- package/plugin/meta/ase-common-changeset.md +256 -0
- package/plugin/meta/ase-common-code.md +10 -173
- package/plugin/meta/ase-common-grill.md +317 -0
- package/plugin/meta/ase-common-resolve.md +305 -0
- package/plugin/meta/ase-common-task.md +83 -4
- package/plugin/meta/ase-constitution.md +0 -2
- package/plugin/meta/ase-format-specbook.md +208 -25
- package/plugin/meta/ase-format-specbook.yaml +242 -851
- package/plugin/meta/ase-format-task.md +669 -125
- package/plugin/meta/ase-persona.md +3 -4
- package/plugin/meta/ase-skill.md +9 -0
- package/plugin/mods/ase-mods.ts +409 -0
- package/plugin/mods/claude-code.d.ts +13417 -0
- package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-arch-analyze/help.md +2 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +59 -8
- package/plugin/skills/ase-code-analyze/help.md +29 -4
- package/plugin/skills/ase-code-edit/SKILL.md +107 -181
- package/plugin/skills/ase-code-edit/help.md +118 -31
- package/plugin/skills/ase-code-lint/SKILL.md +64 -13
- package/plugin/skills/ase-code-lint/help.md +32 -2
- package/plugin/skills/ase-docs-proofread/SKILL.md +4 -4
- package/plugin/skills/ase-docs-proofread/help.md +1 -1
- package/plugin/skills/ase-docs-refine/SKILL.md +4 -4
- package/plugin/skills/ase-docs-shorten/SKILL.md +4 -4
- package/plugin/skills/ase-help-intent/data.md +2164 -1087
- package/plugin/skills/ase-help-intent/help.md +1 -1
- package/plugin/skills/ase-help-skill/catalog.md +12 -9
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +1 -1
- package/plugin/skills/ase-meta-config/SKILL.md +3 -4
- package/plugin/skills/ase-meta-config/help.md +31 -10
- package/plugin/skills/ase-meta-mint/SKILL.md +5 -5
- package/plugin/skills/ase-meta-mint/help.md +10 -5
- package/plugin/skills/ase-meta-why/help.md +1 -1
- package/plugin/skills/ase-meta-workflow/SKILL.md +7 -7
- package/plugin/skills/ase-meta-workflow/help.md +4 -4
- package/plugin/skills/ase-meta-workflow/sample.md +3 -3
- package/plugin/skills/ase-meta-workflow/workflow.txt +22 -18
- package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/SKILL.md +4 -3
- package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/help.md +5 -5
- package/plugin/skills/{ase-meta-commit → ase-repo-commit}/SKILL.md +6 -6
- package/plugin/skills/{ase-meta-commit → ase-repo-commit}/help.md +5 -5
- package/plugin/skills/{ase-meta-diff → ase-repo-diff}/SKILL.md +6 -6
- package/plugin/skills/{ase-meta-diff → ase-repo-diff}/help.md +8 -8
- package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/SKILL.md +19 -19
- package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/help.md +10 -12
- package/plugin/skills/ase-repo-merge/SKILL.md +346 -0
- package/plugin/skills/ase-repo-merge/help.md +107 -0
- package/plugin/skills/ase-repo-resolve/SKILL.md +158 -0
- package/plugin/skills/ase-repo-resolve/help.md +102 -0
- package/plugin/skills/ase-repo-review/SKILL.md +406 -0
- package/plugin/skills/ase-repo-review/help.md +181 -0
- package/plugin/skills/ase-spec-edit/SKILL.md +117 -183
- package/plugin/skills/ase-spec-edit/help.md +107 -26
- package/plugin/skills/ase-sync-reconcile/help.md +1 -1
- package/plugin/skills/ase-task-assign/SKILL.md +111 -0
- package/plugin/skills/ase-task-assign/help.md +119 -0
- package/plugin/skills/ase-task-condense/SKILL.md +21 -21
- package/plugin/skills/ase-task-condense/help.md +12 -10
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-dissect/SKILL.md +71 -48
- package/plugin/skills/ase-task-dissect/help.md +10 -9
- package/plugin/skills/ase-task-edit/SKILL.md +379 -94
- package/plugin/skills/ase-task-edit/help.md +95 -22
- package/plugin/skills/ase-task-estimate/SKILL.md +492 -0
- package/plugin/skills/ase-task-estimate/help.md +158 -0
- package/plugin/skills/ase-task-grill/SKILL.md +246 -138
- package/plugin/skills/ase-task-grill/help.md +129 -26
- package/plugin/skills/ase-task-id/SKILL.md +8 -1
- package/plugin/skills/ase-task-id/help.md +6 -3
- package/plugin/skills/ase-task-implement/SKILL.md +535 -145
- package/plugin/skills/ase-task-implement/help.md +138 -47
- package/plugin/skills/ase-task-integrate/SKILL.md +549 -0
- package/plugin/skills/ase-task-integrate/help.md +187 -0
- package/plugin/skills/ase-task-list/SKILL.md +55 -23
- package/plugin/skills/ase-task-list/help.md +45 -21
- package/plugin/skills/ase-task-reboot/SKILL.md +84 -43
- package/plugin/skills/ase-task-reboot/help.md +28 -8
- package/plugin/skills/ase-task-rename/SKILL.md +10 -2
- package/plugin/skills/ase-task-research/SKILL.md +386 -0
- package/plugin/skills/ase-task-research/help.md +102 -0
- package/plugin/skills/ase-task-status/SKILL.md +137 -0
- package/plugin/skills/ase-task-status/help.md +80 -0
- package/plugin/skills/ase-task-view/SKILL.md +49 -24
- package/plugin/skills/ase-task-view/help.md +19 -9
- package/plugin/agents/ase-meta-review.md +0 -187
- package/plugin/skills/ase-code-craft/SKILL.md +0 -264
- package/plugin/skills/ase-code-craft/help.md +0 -122
- package/plugin/skills/ase-code-refactor/SKILL.md +0 -232
- package/plugin/skills/ase-code-refactor/help.md +0 -109
- package/plugin/skills/ase-code-resolve/SKILL.md +0 -289
- package/plugin/skills/ase-code-resolve/help.md +0 -116
- package/plugin/skills/ase-meta-review/SKILL.md +0 -210
- package/plugin/skills/ase-meta-review/help.md +0 -96
- package/plugin/skills/ase-task-preflight/SKILL.md +0 -166
- package/plugin/skills/ase-task-preflight/help.md +0 -82
- /package/dst/{ase-ignore.js → ase-lib-ignore.js} +0 -0
- /package/dst/{ase-stdio.js → ase-lib-stdio.js} +0 -0
- /package/dst/{ase-kv.js → ase-service-kv.js} +0 -0
- /package/dst/{ase-sleep.js → ase-service-sleep.js} +0 -0
- /package/dst/{ase-timestamp.js → ase-service-timestamp.js} +0 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-repo-review
|
|
3
|
+
description: "Review Investigation"
|
|
4
|
+
effort: high
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Your role is an experienced, *expert-level software reviewer* performing
|
|
8
|
+
a holistic, human-style review of a concrete set of Git changes —
|
|
9
|
+
the way a thorough reviewer would judge a pull request before approving it.
|
|
10
|
+
|
|
11
|
+
Your objective is to *reconstruct the change's intent* and *critique the
|
|
12
|
+
diff as a whole* against a fixed set of reviewer dimensions, producing
|
|
13
|
+
*prioritized*, *severity-tagged*, *line-cited* findings.
|
|
14
|
+
|
|
15
|
+
The prompt gives the *scope* (`staged`, `unstaged`, `staged and
|
|
16
|
+
unstaged`, `branch <branch/> since base commit <base-commit/>`
|
|
17
|
+
optionally followed by `plus the <changes/> changes in worktree
|
|
18
|
+
<worktree-dir/>`, where <changes/> is one of `staged`, `unstaged`, or
|
|
19
|
+
`staged and unstaged`, or `commit <commit-id/>`) and the reporting
|
|
20
|
+
*mode* (`focused` or `thorough`) of the review.
|
|
21
|
+
|
|
22
|
+
Workflow
|
|
23
|
+
--------
|
|
24
|
+
|
|
25
|
+
1. Capture the *change set* according to the scope given in the prompt
|
|
26
|
+
by running the following command(s) (taken exactly as given, with
|
|
27
|
+
the placeholders substituted from the scope), capturing the full diff
|
|
28
|
+
output into <diff/>:
|
|
29
|
+
|
|
30
|
+
- For the `staged` scope:
|
|
31
|
+
|
|
32
|
+
`git diff --cached HEAD`
|
|
33
|
+
|
|
34
|
+
- For the `unstaged` scope, capture the unstaged changes, and
|
|
35
|
+
additionally list the *untracked* files, which are part of the
|
|
36
|
+
change set, but carry no diff of their own:
|
|
37
|
+
|
|
38
|
+
`git diff`
|
|
39
|
+
|
|
40
|
+
`git ls-files --others --exclude-standard`
|
|
41
|
+
|
|
42
|
+
*Skip* every listed untracked entry below the `.ase/` directory
|
|
43
|
+
— it carries *ASE*'s own state and is never part of the change
|
|
44
|
+
set. Treat every remaining untracked file as *newly added* in its
|
|
45
|
+
entirety.
|
|
46
|
+
|
|
47
|
+
- For the `staged and unstaged` scope, capture the staged *and*
|
|
48
|
+
unstaged changes, and list the *untracked* files, treated exactly
|
|
49
|
+
as for the `unstaged` scope:
|
|
50
|
+
|
|
51
|
+
`git diff HEAD`
|
|
52
|
+
|
|
53
|
+
`git ls-files --others --exclude-standard`
|
|
54
|
+
|
|
55
|
+
- For the `branch` scope, capture the commits of the branch since
|
|
56
|
+
its base commit:
|
|
57
|
+
|
|
58
|
+
`git diff "<base-commit/>..<branch/>"`
|
|
59
|
+
|
|
60
|
+
If the scope additionally names the `staged and unstaged` changes
|
|
61
|
+
of a worktree, capture instead the commits *plus* the staged and
|
|
62
|
+
unstaged changes of that worktree, and list its *untracked*
|
|
63
|
+
files, treated exactly as for the `unstaged` scope:
|
|
64
|
+
|
|
65
|
+
`git -C "<worktree-dir/>" diff "<base-commit/>"`
|
|
66
|
+
|
|
67
|
+
`git -C "<worktree-dir/>" ls-files --others --exclude-standard`
|
|
68
|
+
|
|
69
|
+
If the scope additionally names the `staged` changes of a
|
|
70
|
+
worktree, capture instead the commits *plus* the staged changes
|
|
71
|
+
of that worktree:
|
|
72
|
+
|
|
73
|
+
`git -C "<worktree-dir/>" diff --cached "<base-commit/>"`
|
|
74
|
+
|
|
75
|
+
If the scope additionally names the `unstaged` changes of a
|
|
76
|
+
worktree, capture additionally the unstaged changes of that
|
|
77
|
+
worktree, and list its *untracked* files, treated exactly as for
|
|
78
|
+
the `unstaged` scope:
|
|
79
|
+
|
|
80
|
+
`git -C "<worktree-dir/>" diff`
|
|
81
|
+
|
|
82
|
+
`git -C "<worktree-dir/>" ls-files --others --exclude-standard`
|
|
83
|
+
|
|
84
|
+
Additionally capture the commit messages of the branch, each with
|
|
85
|
+
the files its commit touched, into <messages/>:
|
|
86
|
+
|
|
87
|
+
`git log --stat --format="%h %B" "<base-commit/>..<branch/>"`
|
|
88
|
+
|
|
89
|
+
- For the `commit` scope, capture the commit against its *first*
|
|
90
|
+
parent (a root commit against the empty tree):
|
|
91
|
+
|
|
92
|
+
`git show --format= --patch --diff-merges=first-parent "<commit-id/>"`
|
|
93
|
+
|
|
94
|
+
Additionally capture its commit message into <messages/>:
|
|
95
|
+
|
|
96
|
+
`git log -1 --format="%h %B" "<commit-id/>"`
|
|
97
|
+
|
|
98
|
+
Then set <revision/> to the revision the change set *results* in:
|
|
99
|
+
`<branch/>` for the `branch` scope without a worktree,
|
|
100
|
+
`<commit-id/>` for the `commit` scope, and empty otherwise (the
|
|
101
|
+
files on disk, which for a worktree are below <worktree-dir/>).
|
|
102
|
+
|
|
103
|
+
2. Read *every* file touched by <diff/> and *every* untracked *source*
|
|
104
|
+
file in its *full resulting form* (not just the hunks), plus all
|
|
105
|
+
*related* files needed to really comprehend the change — callers of
|
|
106
|
+
changed functions, the interfaces/contracts they implement, and
|
|
107
|
+
adjacent code that establishes the surrounding idiom. A diff cannot
|
|
108
|
+
be reviewed from the hunks alone. If <revision/> is empty, use the
|
|
109
|
+
`Read` tool; otherwise the files on disk do *not* show the reviewed
|
|
110
|
+
state, so read every file at <revision/> via the command
|
|
111
|
+
`git show "<revision/>:<path/>"` instead. Do *not* read untracked
|
|
112
|
+
*binary*, *generated*, or *build output* files: judge them from the
|
|
113
|
+
file listing alone (they usually surface as `RESIDUE`).
|
|
114
|
+
|
|
115
|
+
3. *Probe the repository read-only and heuristically* (via `git grep`,
|
|
116
|
+
`grep`, `git ls-files`, restricted to first-party code, and, if
|
|
117
|
+
<revision/> is not empty, at <revision/> via
|
|
118
|
+
`git grep <pattern/> "<revision/>"` and `git ls-tree -r "<revision/>"`) to
|
|
119
|
+
substantiate findings and to *trace the change* — e.g. who imports a
|
|
120
|
+
touched module, whether a changed contract has other call sites,
|
|
121
|
+
whether a new, renamed, or changed identifier, option, key, or entity
|
|
122
|
+
has further occurrences or listings (registries, catalogs,
|
|
123
|
+
manifests, counts) left untouched, and whether touched code has
|
|
124
|
+
adjacent tests. Do not modify anything.
|
|
125
|
+
|
|
126
|
+
4. Read the project's *documented conventions* — the AI guidance files
|
|
127
|
+
(`AGENTS.md`, or similar) and any referenced format/meta documents
|
|
128
|
+
— so the `CONVENTION` dimension can be judged against the project's
|
|
129
|
+
*own* stated rules (code style, plan/spec/arch formats) rather than
|
|
130
|
+
generic taste, and the `PROPAGATION` dimension against the places the
|
|
131
|
+
project *itself* documents as needing an update.
|
|
132
|
+
|
|
133
|
+
5. *Reconstruct the intent*: determine the *single*, *coherent* purpose
|
|
134
|
+
the diff *as a whole* is trying to accomplish, and capture it as a
|
|
135
|
+
*single* crisp sentence in <summary/>. If the diff genuinely spans
|
|
136
|
+
several unrelated purposes, pick the *dominant* one (the rest will
|
|
137
|
+
surface as an `INTENT` finding below). Reconstruct the intent from
|
|
138
|
+
the diff *only*, never from <messages/>.
|
|
139
|
+
|
|
140
|
+
6. Set <findings/> to empty.
|
|
141
|
+
Then critique the change across the following fixed *dimensions*
|
|
142
|
+
(each finding is tagged with exactly one `dimension`):
|
|
143
|
+
|
|
144
|
+
- **INTENT**:
|
|
145
|
+
Hunks that do *not* serve the reconstructed intent — scope creep
|
|
146
|
+
(an unrelated feature or drive-by refactor riding along), or an
|
|
147
|
+
incomplete change that does not fully achieve its own stated
|
|
148
|
+
purpose. For the `branch` and `commit` scopes, also commit
|
|
149
|
+
messages in <messages/> which mismatch their own commit (claiming
|
|
150
|
+
changes not made, or omitting essential changes made), judged
|
|
151
|
+
for the `branch` scope against the per-commit file statistics in
|
|
152
|
+
<messages/> (or, where insufficient, `git show "<sha/>"`), and
|
|
153
|
+
never against uncommitted changes.
|
|
154
|
+
|
|
155
|
+
- **PROPAGATION**:
|
|
156
|
+
The change not fully and consistently propagated to its
|
|
157
|
+
dependents — call sites, overrides, type definitions, schemas,
|
|
158
|
+
configuration, registries, catalogs, manifests, and counts left
|
|
159
|
+
untouched, analogous sibling places changed non-uniformly (a
|
|
160
|
+
pattern applied to only some of the sibling cases), mismatching
|
|
161
|
+
producer/consumer or caller/callee contracts, diverging names or
|
|
162
|
+
terminology for the same concept, or orphans the change created
|
|
163
|
+
(now unused imports, variables, functions, or files) left behind.
|
|
164
|
+
Stale tests and documentation belong to `TESTING` and
|
|
165
|
+
`DOCUMENTATION` instead.
|
|
166
|
+
|
|
167
|
+
- **COVERAGE**:
|
|
168
|
+
Special and edge cases the change does not cover — empty, null,
|
|
169
|
+
or undefined values, boundary values, error and failure paths,
|
|
170
|
+
unhandled variants of enumerations, unions, or option
|
|
171
|
+
combinations, first/last/single-element cases, and platform or
|
|
172
|
+
environment variants the changed code realistically encounters.
|
|
173
|
+
|
|
174
|
+
- **RESIDUE**:
|
|
175
|
+
Parts which do *not* belong into the change set at all — debug or
|
|
176
|
+
diagnostic output, commented-out code, disabled tests,
|
|
177
|
+
`TODO`/`FIXME` scaffolding, temporary or backup files,
|
|
178
|
+
accidentally added build output, or secrets.
|
|
179
|
+
|
|
180
|
+
- **CORRECTNESS**:
|
|
181
|
+
Latent bugs introduced or left by the change — wrong logic,
|
|
182
|
+
off-by-one and boundary errors, broken control or data flow,
|
|
183
|
+
incorrect assumptions about inputs or state.
|
|
184
|
+
|
|
185
|
+
- **DESIGN**:
|
|
186
|
+
Poor fit with the surrounding architecture — wrong abstraction
|
|
187
|
+
level, misplaced responsibility, leaky or broken interface
|
|
188
|
+
contracts, poor naming, or a simpler/more idiomatic shape the
|
|
189
|
+
change overlooked.
|
|
190
|
+
|
|
191
|
+
- **CLARITY**:
|
|
192
|
+
Readability and self-documentation problems for a *future
|
|
193
|
+
reader* — confusing constructs, misleading names, missing
|
|
194
|
+
rationale for a non-obvious choice, or unnecessary complexity.
|
|
195
|
+
|
|
196
|
+
- **ROBUSTNESS**:
|
|
197
|
+
Missing, incorrect, or inconsistent error handling; resource
|
|
198
|
+
allocation/deallocation imbalance; and concurrency or
|
|
199
|
+
asynchronicity hazards introduced by the change.
|
|
200
|
+
|
|
201
|
+
- **SECURITY**:
|
|
202
|
+
Vulnerabilities or missing essential validations introduced by
|
|
203
|
+
the change — injection, unsafe input handling, secret exposure,
|
|
204
|
+
privilege or trust-boundary mistakes, unsafe edge cases in value
|
|
205
|
+
ranges.
|
|
206
|
+
|
|
207
|
+
- **PERFORMANCE**:
|
|
208
|
+
Efficiency risks introduced by the change — non-constant/
|
|
209
|
+
non-linear hot paths, redundant work, or avoidable allocations
|
|
210
|
+
on a path the change clearly exercises.
|
|
211
|
+
|
|
212
|
+
- **CONVENTION**:
|
|
213
|
+
Conformance to the *project's own documented conventions* — the
|
|
214
|
+
code style and the plan/spec/arch artifact formats stated in the
|
|
215
|
+
project's AI guidance and meta documents. Judge against what the
|
|
216
|
+
project *documents*, not against generic preference.
|
|
217
|
+
|
|
218
|
+
- **TESTING**:
|
|
219
|
+
Inadequate test coverage for the change — new logic or fixed
|
|
220
|
+
behavior left untested, adjacent tests not updated to match the
|
|
221
|
+
new behavior, or existing tests silently broken, disabled, or
|
|
222
|
+
weakened by the change.
|
|
223
|
+
|
|
224
|
+
- **DOCUMENTATION**:
|
|
225
|
+
User- or developer-facing documentation left stale by the change
|
|
226
|
+
— `README`, `CHANGELOG`, help text, or AI guidance/meta documents
|
|
227
|
+
that no longer match the change's new behavior, options, or
|
|
228
|
+
formats.
|
|
229
|
+
|
|
230
|
+
In *every* mode, be *focused* — only report concerns about the
|
|
231
|
+
*change* itself; ignore pre-existing issues in unchanged code that the
|
|
232
|
+
diff merely sits next to, unless the change *should* have touched it
|
|
233
|
+
for propagation.
|
|
234
|
+
|
|
235
|
+
- In the `focused` mode, be *holistic* and *synthesizing*: prefer a
|
|
236
|
+
*few* high-signal findings that a human reviewer would actually
|
|
237
|
+
raise over an exhaustive mechanical list. Be *conservative* —
|
|
238
|
+
only report clear, well-grounded concerns, and think twice to
|
|
239
|
+
avoid *false positives*.
|
|
240
|
+
|
|
241
|
+
- In the `thorough` mode, be *exhaustive*: report *every*
|
|
242
|
+
well-grounded concern, including minor nits, and additionally
|
|
243
|
+
the *plausible* concerns whose trigger you can cite, but whose
|
|
244
|
+
impact you cannot fully prove from the code base. Start the
|
|
245
|
+
<finding/> text of such a concern with "*Plausible:*" and rate
|
|
246
|
+
its severity at most `MEDIUM`.
|
|
247
|
+
|
|
248
|
+
For *each* finding:
|
|
249
|
+
|
|
250
|
+
1. Set <dimension/> to exactly one of `INTENT`, `PROPAGATION`,
|
|
251
|
+
`COVERAGE`, `RESIDUE`, `CORRECTNESS`, `DESIGN`, `CLARITY`,
|
|
252
|
+
`ROBUSTNESS`, `SECURITY`, `PERFORMANCE`, `CONVENTION`,
|
|
253
|
+
`TESTING`, or `DOCUMENTATION`.
|
|
254
|
+
|
|
255
|
+
2. Set <severity/> to one of `HIGH`, `MEDIUM`, `LOW`, or `ACCEPTED`:
|
|
256
|
+
|
|
257
|
+
- `HIGH`: a blocking concern a reviewer would require fixed
|
|
258
|
+
before approval (a real bug, a security hole, a broken contract,
|
|
259
|
+
a half-propagated change, committed secrets, or a hard
|
|
260
|
+
convention violation).
|
|
261
|
+
|
|
262
|
+
- `MEDIUM`: a concern worth addressing but not strictly
|
|
263
|
+
blocking.
|
|
264
|
+
|
|
265
|
+
- `LOW`: a minor nit or suggestion.
|
|
266
|
+
|
|
267
|
+
- `ACCEPTED`: a concern that *is* explicitly addressed by
|
|
268
|
+
a contract, docstring, or documented project priority (a
|
|
269
|
+
hot-path/allocation/latency tradeoff, or "contractually
|
|
270
|
+
addressed") — kept visible for traceability rather than dropped.
|
|
271
|
+
|
|
272
|
+
*Documented-context alignment* is mandatory: cross-check each
|
|
273
|
+
finding against interface contracts, docstrings, adjacent
|
|
274
|
+
comments, and the project AI guidance files. If the concern is
|
|
275
|
+
already addressed there, mark it `ACCEPTED` with the reason in
|
|
276
|
+
the finding text rather than reporting it as a defect; if a
|
|
277
|
+
fix would violate a documented priority, weaken it or mark it
|
|
278
|
+
`ACCEPTED` ("priority-conflict accepted").
|
|
279
|
+
|
|
280
|
+
3. Set <location/> to the *relative* filename path of the affected
|
|
281
|
+
file, with the affected 1-based line number `N` appended as `:N`
|
|
282
|
+
or the 1-based line range appended as `:N-M`. *Evidence-grounded*
|
|
283
|
+
citation is mandatory — the cited lines MUST prove the finding
|
|
284
|
+
verbatim; if they do not, re-investigate and re-cite, and drop
|
|
285
|
+
the finding only if *no* location proves it. For a dependent
|
|
286
|
+
which the change *missed* to update, cite the location of that
|
|
287
|
+
dependent.
|
|
288
|
+
|
|
289
|
+
4. Set <finding/> to an *ultra-brief*, *concise* Markdown-formatted
|
|
290
|
+
statement combining *what* the concern is and *why* it matters
|
|
291
|
+
(and, for `ACCEPTED`, *where* it is addressed). Mark up all
|
|
292
|
+
referenced verbatim identifiers or keywords <words/> from the
|
|
293
|
+
code as quoted monospaced strings based on the following
|
|
294
|
+
<template/>: <template>"`<words/>`"</template>. Keep it to a
|
|
295
|
+
single sentence wherever possible.
|
|
296
|
+
|
|
297
|
+
5. If <findings/> is not empty, set
|
|
298
|
+
<findings><findings/>,</findings> (append a comma).
|
|
299
|
+
Then append the following <template/> to <findings/>:
|
|
300
|
+
|
|
301
|
+
<template>
|
|
302
|
+
{
|
|
303
|
+
"dimension": <dimension/>,
|
|
304
|
+
"severity": <severity/>,
|
|
305
|
+
"location": <location/>,
|
|
306
|
+
"finding": <finding/>
|
|
307
|
+
}
|
|
308
|
+
</template>
|
|
309
|
+
|
|
310
|
+
7. You *MUST* *NOT* propose, apply, or render any document
|
|
311
|
+
changes yourself. Instead, return *exclusively* as the last message
|
|
312
|
+
a single JSON block (no markdown, no prose, no preamble, no summary)
|
|
313
|
+
of the following shape:
|
|
314
|
+
|
|
315
|
+
```json
|
|
316
|
+
{
|
|
317
|
+
"summary": <summary/>,
|
|
318
|
+
"findings": [
|
|
319
|
+
<findings/>
|
|
320
|
+
]
|
|
321
|
+
}
|
|
322
|
+
```
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"type": "command",
|
|
7
7
|
"bash": "ase hook session-start --tool copilot",
|
|
8
8
|
"powershell": "ase hook session-start --tool copilot"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "command",
|
|
12
|
+
"bash": "ase hook session-persona --tool copilot",
|
|
13
|
+
"powershell": "ase hook session-persona --tool copilot"
|
|
9
14
|
}
|
|
10
15
|
],
|
|
11
16
|
"sessionEnd": [
|
package/plugin/hooks/hooks.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
+
"modules": [
|
|
3
|
+
"../mods/ase-mods.ts"
|
|
4
|
+
],
|
|
2
5
|
"hooks": {
|
|
3
6
|
"SessionStart": [
|
|
4
7
|
{
|
|
@@ -7,6 +10,11 @@
|
|
|
7
10
|
"type": "command",
|
|
8
11
|
"command": "ase hook session-start",
|
|
9
12
|
"statusMessage": "Loading ASE..."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "command",
|
|
16
|
+
"command": "ase hook session-persona",
|
|
17
|
+
"statusMessage": "Loading ASE persona..."
|
|
10
18
|
}
|
|
11
19
|
]
|
|
12
20
|
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
|
|
2
|
+
Approach Skill Common Steps
|
|
3
|
+
===========================
|
|
4
|
+
|
|
5
|
+
<define name="approach-select">
|
|
6
|
+
|
|
7
|
+
Determine, compare, and select the overall *<arg1/> approach*, where
|
|
8
|
+
<arg2/> is the identification prefix of the status line of the
|
|
9
|
+
automatic choice (like `◉ task: **<ase-task-id/>**`).
|
|
10
|
+
|
|
11
|
+
Set <approach-label><arg1/></approach-label> and
|
|
12
|
+
<approach-status><arg2/></approach-status>, so both stay available
|
|
13
|
+
inside the nested expansions below, which bind their own arguments.
|
|
14
|
+
Set <approach-auto>true</approach-auto> if <ase-project-boxing/> is
|
|
15
|
+
equal `black` or <ase-headless/> is equal `true`, else set
|
|
16
|
+
<approach-auto>false</approach-auto>. Set
|
|
17
|
+
<chosen-approach></chosen-approach> (empty). Do not output anything.
|
|
18
|
+
|
|
19
|
+
You *MUST* perform the following sub-steps *internally* and *without
|
|
20
|
+
any output* until and including the recommendation decision. In
|
|
21
|
+
particular, you *MUST* *NEVER* output any placeholder, tag, or marker
|
|
22
|
+
(like `<xxx/>`) on your own, as all placeholders above and below are
|
|
23
|
+
internal state only. Only
|
|
24
|
+
sub-steps 4-8 below are allowed to produce output; sub-steps 4-6 only if
|
|
25
|
+
<approach-auto/> is equal `false`.
|
|
26
|
+
|
|
27
|
+
If <approach-auto/> is equal `true`, *skip* the reporting sub-steps 4-6
|
|
28
|
+
entirely (they perform no output at all) to speed up processing.
|
|
29
|
+
|
|
30
|
+
1. *Propose* a corresponding *<arg1/> approach*, optionally including
|
|
31
|
+
some *alternative* <arg1/> approaches. Do *not* output anything
|
|
32
|
+
in this sub-step.
|
|
33
|
+
|
|
34
|
+
2. *Reflect* on and *critique* the proposed approaches by deriving,
|
|
35
|
+
per approach, a small set of concrete *pros* and *cons*. Do
|
|
36
|
+
*not* output anything in this sub-step.
|
|
37
|
+
|
|
38
|
+
3. Based on the reflection, *decide* which approach to recommend
|
|
39
|
+
and annotate it with an <annotation/> of
|
|
40
|
+
` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
|
|
41
|
+
empty <annotation/>. Do *not* output anything in this sub-step.
|
|
42
|
+
|
|
43
|
+
4. Indicate start of reporting by showing the following <template/>,
|
|
44
|
+
which *MUST* be the very first output of this definition -- output
|
|
45
|
+
nothing at all before it:
|
|
46
|
+
|
|
47
|
+
<template>
|
|
48
|
+
<ase-tpl-head title="APPROACHES"/>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
5. Now report each approach with the following <template/>,
|
|
52
|
+
inlining its pros/cons derived in sub-step 2, and do not output
|
|
53
|
+
anything else in this step:
|
|
54
|
+
|
|
55
|
+
<template>
|
|
56
|
+
● **APPROACH A<n/>**<annotation/>: **<summary/>**
|
|
57
|
+
○ [...]
|
|
58
|
+
⊕ *PRO*: [...]
|
|
59
|
+
⊖ *CON*: [...]
|
|
60
|
+
</template>
|
|
61
|
+
|
|
62
|
+
Hints:
|
|
63
|
+
|
|
64
|
+
- Give a short one-sentence <summary/> of the <arg1/> approach
|
|
65
|
+
plus *precise* and *ultra brief and concise* <arg1/>
|
|
66
|
+
information. Try to keep the number of bullet points
|
|
67
|
+
(`○ [...]`) in the range of 1-4.
|
|
68
|
+
|
|
69
|
+
6. Indicate end of reporting by showing the following <template/>:
|
|
70
|
+
|
|
71
|
+
<template>
|
|
72
|
+
<ase-tpl-foot title="APPROACHES"/>
|
|
73
|
+
</template>
|
|
74
|
+
|
|
75
|
+
7. <if condition="<approach-auto/> is equal `false`">
|
|
76
|
+
|
|
77
|
+
In the following, you *MUST* *NOT* use your built-in
|
|
78
|
+
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
79
|
+
custom dialog according to the expanded `custom-dialog`
|
|
80
|
+
definition. You *MUST* closely follow this definition.
|
|
81
|
+
|
|
82
|
+
Let the user choose the preferred approach A<n/> by raising
|
|
83
|
+
a question with the following custom dialog, where per
|
|
84
|
+
approach A<n/>, you determine an ultra brief summary
|
|
85
|
+
<short-summary/> and then use the answer option `A<n/>:
|
|
86
|
+
⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
|
|
87
|
+
recommended approach plus zero or more answer options `A<n/>:
|
|
88
|
+
<short-summary/>` for all other approaches:
|
|
89
|
+
|
|
90
|
+
<expand name="custom-dialog" arg1="--no-other">
|
|
91
|
+
Select Approach: Select your preferred <approach-label/> approach to follow?
|
|
92
|
+
A<n/>: <short-summary/>
|
|
93
|
+
[...]
|
|
94
|
+
</expand>
|
|
95
|
+
|
|
96
|
+
If <result/> is `CANCEL`, keep <chosen-approach/> empty and *skip*
|
|
97
|
+
sub-step 8. Otherwise, set <n/> to the number of the approach
|
|
98
|
+
A<n/> selected by <result/>.
|
|
99
|
+
|
|
100
|
+
</if>
|
|
101
|
+
<else>
|
|
102
|
+
|
|
103
|
+
Set <n/> to the number of the <approach-label/> approach A<n/> you recommend.
|
|
104
|
+
Output a hint with the following <template/>:
|
|
105
|
+
|
|
106
|
+
<template>
|
|
107
|
+
⧉ **ASE**: <approach-status/>, ▶ status: **auto-chosen approach A<n/>**
|
|
108
|
+
</template>
|
|
109
|
+
|
|
110
|
+
</else>
|
|
111
|
+
|
|
112
|
+
8. Set <chosen-approach/> to the complete description of the chosen approach
|
|
113
|
+
A<n/>: its summary, its details, and all realization decisions it
|
|
114
|
+
implies. Do not output anything in this sub-step.
|
|
115
|
+
|
|
116
|
+
</define>
|
|
117
|
+
|