@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,406 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-repo-review
|
|
3
|
+
argument-hint: "[--help|-h] [--severity|-S=(AUTO|LOW|MEDIUM|HIGH)] [--thorough|-t] [--staged] [--unstaged] [--branch|-b <branch>] [--commit|-c <commit>]"
|
|
4
|
+
description: >
|
|
5
|
+
Perform a holistic, human-reviewer-style critique of the currently
|
|
6
|
+
staged Git changes (or, with `--unstaged`, of the unstaged and
|
|
7
|
+
untracked changes, with `--branch`, of a branch against its base,
|
|
8
|
+
or, with `--commit`, of a single commit) and emit an approve/reject verdict
|
|
9
|
+
with prioritized, severity-tagged, line-cited findings. Use when the
|
|
10
|
+
user wants the staged diff, a branch, or a commit "reviewed",
|
|
11
|
+
"critiqued", or "code-reviewed".
|
|
12
|
+
user-invocable: true
|
|
13
|
+
disable-model-invocation: false
|
|
14
|
+
effort: high
|
|
15
|
+
allowed-tools:
|
|
16
|
+
- "Bash(git diff *)"
|
|
17
|
+
- "Bash(git ls-files *)"
|
|
18
|
+
- "Bash(git rev-parse *)"
|
|
19
|
+
- "Bash(git for-each-ref *)"
|
|
20
|
+
- "Bash(git rev-list *)"
|
|
21
|
+
- "Bash(git merge-base *)"
|
|
22
|
+
- "Bash(git branch *)"
|
|
23
|
+
- "Bash(git worktree list *)"
|
|
24
|
+
- "Bash(git show *)"
|
|
25
|
+
- "Bash(git -C *)"
|
|
26
|
+
- "Agent"
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
30
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
31
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
32
|
+
|
|
33
|
+
<purpose name="ase-repo-review">
|
|
34
|
+
Review Changes
|
|
35
|
+
</purpose>
|
|
36
|
+
|
|
37
|
+
<expand name="getopt"
|
|
38
|
+
arg1="ase-repo-review"
|
|
39
|
+
arg2="--severity|-S=(AUTO|LOW|MEDIUM|HIGH) --thorough|-t --staged --unstaged --branch|-b= --commit|-c=">
|
|
40
|
+
$ARGUMENTS
|
|
41
|
+
</expand>
|
|
42
|
+
|
|
43
|
+
<objective>
|
|
44
|
+
Review the currently staged (and/or unstaged) Git changes, the changes
|
|
45
|
+
of a branch against its base, or a single commit the way an
|
|
46
|
+
*experienced human reviewer* would - judging them *holistically* against
|
|
47
|
+
the change's *own intent* and against *correctness*, *design fit*,
|
|
48
|
+
*clarity*, *robustness*, *propagation*, freedom of *residue*, and
|
|
49
|
+
*project-convention conformance* - and emit a single *approve /
|
|
50
|
+
request-changes verdict* backed by *prioritized*, *severity-tagged*,
|
|
51
|
+
*line-cited* findings. This is a *synthesizing critique*, not a mechanical
|
|
52
|
+
scan: it complements `ase-code-lint` (mechanical quality), `ase-code-analyze`
|
|
53
|
+
(logic/semantics), and `ase-repo-diff` (intent narrative and risk).
|
|
54
|
+
</objective>
|
|
55
|
+
|
|
56
|
+
Procedure
|
|
57
|
+
---------
|
|
58
|
+
|
|
59
|
+
<flow>
|
|
60
|
+
|
|
61
|
+
1. <step id="STEP 1: Determine Change Set">
|
|
62
|
+
|
|
63
|
+
1. <if condition="<getopt-option-commit/> is not empty and (<getopt-option-branch/> is not empty or <getopt-option-staged/> is equal `true` or <getopt-option-unstaged/> is equal `true`)">
|
|
64
|
+
Only output the following <template/> and then *STOP* immediately:
|
|
65
|
+
|
|
66
|
+
<template>
|
|
67
|
+
⧉ **ASE**: ✪ skill: **ase-repo-review**, ▶ ERROR: option `--commit` cannot be combined with `--branch`, `--staged`, or `--unstaged`
|
|
68
|
+
</template>
|
|
69
|
+
</if>
|
|
70
|
+
|
|
71
|
+
Set <changes/> to the *uncommitted* changes to review: to
|
|
72
|
+
`staged and unstaged` if both <getopt-option-staged/> and
|
|
73
|
+
<getopt-option-unstaged/> are equal `true`, to `staged` if only
|
|
74
|
+
<getopt-option-staged/> is equal `true`, to `unstaged` if only
|
|
75
|
+
<getopt-option-unstaged/> is equal `true`, and to empty otherwise.
|
|
76
|
+
Here, the `unstaged` changes always include the *untracked* files.
|
|
77
|
+
|
|
78
|
+
2. <if condition="<getopt-option-branch/> is not empty">
|
|
79
|
+
Determine the *base* of the branch:
|
|
80
|
+
|
|
81
|
+
1. Run the command
|
|
82
|
+
`git rev-parse --verify --quiet "<getopt-option-branch/>^{commit}"`.
|
|
83
|
+
If it fails, only output the following <template/> and then
|
|
84
|
+
*STOP* immediately:
|
|
85
|
+
|
|
86
|
+
<template>
|
|
87
|
+
⧉ **ASE**: ✪ skill: **ase-repo-review**, ▶ ERROR: branch **<getopt-option-branch/>** does not exist
|
|
88
|
+
</template>
|
|
89
|
+
|
|
90
|
+
2. Determine the *candidate base branches* by running the command
|
|
91
|
+
`git for-each-ref --format="%(refname:short)" refs/heads/`
|
|
92
|
+
(taken exactly as given), excluding <getopt-option-branch/>
|
|
93
|
+
itself. For each <candidate/>, run the command
|
|
94
|
+
`git rev-list --count "<candidate/>..<getopt-option-branch/>"`
|
|
95
|
+
to count the commits of the branch since its fork point from
|
|
96
|
+
<candidate/>, and *drop* every candidate with a count of `0`,
|
|
97
|
+
as it already contains the branch. Set <base/> to the
|
|
98
|
+
remaining candidate with the *smallest* count (the *nearest*
|
|
99
|
+
fork point); on a tie, prefer the checked-out branch (the
|
|
100
|
+
output of `git branch --show-current`), and then the first
|
|
101
|
+
candidate. If no candidate remains, only output the following
|
|
102
|
+
<template/> and then *STOP* immediately:
|
|
103
|
+
|
|
104
|
+
<template>
|
|
105
|
+
⧉ **ASE**: ✪ skill: **ase-repo-review**, ▶ ERROR: no base branch determinable for branch **<getopt-option-branch/>**
|
|
106
|
+
</template>
|
|
107
|
+
|
|
108
|
+
3. Run the command
|
|
109
|
+
`git merge-base "<base/>" "<getopt-option-branch/>"` and
|
|
110
|
+
capture its output into <base-commit/>.
|
|
111
|
+
|
|
112
|
+
4. Only output the following <template/>:
|
|
113
|
+
|
|
114
|
+
<template>
|
|
115
|
+
⧉ **ASE**: ✪ skill: **ase-repo-review**, ⎇ branch: **<getopt-option-branch/>**, ⎇ base: **<base/>**
|
|
116
|
+
</template>
|
|
117
|
+
|
|
118
|
+
</if>
|
|
119
|
+
<elseif condition="<getopt-option-commit/> is not empty">
|
|
120
|
+
Run the command
|
|
121
|
+
`git rev-parse --verify --quiet "<getopt-option-commit/>^{commit}"`
|
|
122
|
+
and capture its output into <commit-id/>. If it fails, only output
|
|
123
|
+
the following <template/> and then *STOP* immediately:
|
|
124
|
+
|
|
125
|
+
<template>
|
|
126
|
+
⧉ **ASE**: ✪ skill: **ase-repo-review**, ▶ ERROR: commit **<getopt-option-commit/>** does not exist
|
|
127
|
+
</template>
|
|
128
|
+
</elseif>
|
|
129
|
+
|
|
130
|
+
3. Determine *whether there are changes at all* by running the
|
|
131
|
+
corresponding command(s) (taken exactly as given) and capturing
|
|
132
|
+
their combined output - the bare *list of changed file names* -
|
|
133
|
+
into <diff/>. This is a lightweight gate; the full diff is fetched
|
|
134
|
+
by the sub-agent in STEP 2, so capturing only the file-name list
|
|
135
|
+
here is sufficient:
|
|
136
|
+
|
|
137
|
+
<if condition="<getopt-option-branch/> is not empty and <changes/> is not empty">
|
|
138
|
+
Determine the *worktree* of the branch by running the command
|
|
139
|
+
`git worktree list --porcelain` and setting <worktree-dir/> to the
|
|
140
|
+
`worktree` path of the entry whose `branch` line is
|
|
141
|
+
`refs/heads/<getopt-option-branch/>` (or to empty if there is
|
|
142
|
+
none, as a branch not checked out anywhere carries no uncommitted
|
|
143
|
+
changes).
|
|
144
|
+
|
|
145
|
+
If <worktree-dir/> is not empty, set <scope>branch
|
|
146
|
+
<getopt-option-branch/> since base commit <base-commit/> plus the
|
|
147
|
+
<changes/> changes in worktree <worktree-dir/></scope> and run:
|
|
148
|
+
|
|
149
|
+
- If <changes/> is equal `staged and unstaged`:
|
|
150
|
+
|
|
151
|
+
`git -C "<worktree-dir/>" diff --name-only "<base-commit/>"`
|
|
152
|
+
|
|
153
|
+
`git -C "<worktree-dir/>" ls-files --others --exclude-standard`
|
|
154
|
+
|
|
155
|
+
- If <changes/> is equal `staged`:
|
|
156
|
+
|
|
157
|
+
`git -C "<worktree-dir/>" diff --cached --name-only "<base-commit/>"`
|
|
158
|
+
|
|
159
|
+
- If <changes/> is equal `unstaged`:
|
|
160
|
+
|
|
161
|
+
`git diff --name-only "<base-commit/>..<getopt-option-branch/>"`
|
|
162
|
+
|
|
163
|
+
`git -C "<worktree-dir/>" diff --name-only`
|
|
164
|
+
|
|
165
|
+
`git -C "<worktree-dir/>" ls-files --others --exclude-standard`
|
|
166
|
+
|
|
167
|
+
From the output of the `ls-files` command, *skip* every listed
|
|
168
|
+
entry below the `.ase/` directory -- it carries *ASE*'s own
|
|
169
|
+
state, and hence is never part of the user's change set.
|
|
170
|
+
|
|
171
|
+
Otherwise, set <scope>branch <getopt-option-branch/> since base
|
|
172
|
+
commit <base-commit/></scope> and run:
|
|
173
|
+
|
|
174
|
+
`git diff --name-only "<base-commit/>..<getopt-option-branch/>"`
|
|
175
|
+
</if>
|
|
176
|
+
<elseif condition="<getopt-option-branch/> is not empty">
|
|
177
|
+
Set <scope>branch <getopt-option-branch/> since base commit
|
|
178
|
+
<base-commit/></scope> and run:
|
|
179
|
+
|
|
180
|
+
`git diff --name-only "<base-commit/>..<getopt-option-branch/>"`
|
|
181
|
+
</elseif>
|
|
182
|
+
<elseif condition="<getopt-option-commit/> is not empty">
|
|
183
|
+
Set <scope>commit <commit-id/></scope> and run:
|
|
184
|
+
|
|
185
|
+
`git show --format= --name-only --diff-merges=first-parent "<commit-id/>"`
|
|
186
|
+
</elseif>
|
|
187
|
+
<elseif condition="<changes/> is equal `staged and unstaged`">
|
|
188
|
+
Set <scope>staged and unstaged</scope> and run:
|
|
189
|
+
|
|
190
|
+
`git diff --name-only HEAD`
|
|
191
|
+
|
|
192
|
+
`git ls-files --others --exclude-standard`
|
|
193
|
+
|
|
194
|
+
From the output of the second command, *skip* every listed
|
|
195
|
+
entry below the `.ase/` directory -- it carries *ASE*'s own
|
|
196
|
+
state, and hence is never part of the user's change set.
|
|
197
|
+
</elseif>
|
|
198
|
+
<elseif condition="<changes/> is equal `unstaged`">
|
|
199
|
+
Set <scope>unstaged</scope> and run:
|
|
200
|
+
|
|
201
|
+
`git diff --name-only`
|
|
202
|
+
|
|
203
|
+
`git ls-files --others --exclude-standard`
|
|
204
|
+
|
|
205
|
+
From the output of the second command, *skip* every listed
|
|
206
|
+
entry below the `.ase/` directory -- it carries *ASE*'s own
|
|
207
|
+
state, and hence is never part of the user's change set.
|
|
208
|
+
</elseif>
|
|
209
|
+
<else>
|
|
210
|
+
Set <scope>staged</scope> and run:
|
|
211
|
+
|
|
212
|
+
`git diff --cached --name-only HEAD`
|
|
213
|
+
</else>
|
|
214
|
+
|
|
215
|
+
4. <if condition="<diff/> is empty">
|
|
216
|
+
Only output the following <template/> and then *STOP* immediately:
|
|
217
|
+
|
|
218
|
+
<template>
|
|
219
|
+
⧉ **ASE**: ✪ skill: **ase-repo-review**, ▶ status: **no changes to review**
|
|
220
|
+
</template>
|
|
221
|
+
</if>
|
|
222
|
+
|
|
223
|
+
</step>
|
|
224
|
+
|
|
225
|
+
2. <step id="STEP 2: Review Investigation">
|
|
226
|
+
|
|
227
|
+
<if condition="<ase-project-boxing/> is equal `black`">
|
|
228
|
+
|
|
229
|
+
The project source artifacts are classified as a *black box*, so
|
|
230
|
+
the user does *not* want the changes scrutinized or their
|
|
231
|
+
findings surfaced. *Skip* the entire review investigation: do
|
|
232
|
+
*not* invoke the `Agent` tool and do *not* read any change, set
|
|
233
|
+
<findings/> to the *empty* list, set <hidden/> to `0`, set
|
|
234
|
+
<verdict/> to `SKIPPED (boxing: black)`, set <summary/> to a
|
|
235
|
+
*one-line* neutral restatement of the change intent derived solely
|
|
236
|
+
from STEP 1, and proceed *directly* to STEP 3.
|
|
237
|
+
|
|
238
|
+
</if>
|
|
239
|
+
|
|
240
|
+
First, use the following <template/> to give a hint on this step:
|
|
241
|
+
|
|
242
|
+
<template>
|
|
243
|
+
<ase-tpl-bullet-secondary/> **REVIEW INVESTIGATION**
|
|
244
|
+
</template>
|
|
245
|
+
|
|
246
|
+
Dispatch the review investigation to a *sub-agent* via the `Agent`
|
|
247
|
+
tool so that *no* investigation details leak into the user-visible
|
|
248
|
+
transcript. The sub-agent performs the silent reading, the read-only
|
|
249
|
+
repository probing, and the critique; only its final structured return
|
|
250
|
+
value is consumed here.
|
|
251
|
+
|
|
252
|
+
Set <mode>thorough</mode> if <getopt-option-thorough/> is equal
|
|
253
|
+
`true`, and <mode>focused</mode> otherwise.
|
|
254
|
+
|
|
255
|
+
For this, invoke *exactly once* the tool:
|
|
256
|
+
|
|
257
|
+
```text
|
|
258
|
+
Agent(
|
|
259
|
+
description: "Review Investigation",
|
|
260
|
+
subagent_type: "ase:ase-repo-review",
|
|
261
|
+
prompt: "Review in <mode/> mode the changes of scope: <scope/>",
|
|
262
|
+
run_in_background: false
|
|
263
|
+
)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Parse the single result message of the `Agent` tool as a JSON object,
|
|
267
|
+
set <summary/> to its `summary` field (a single crisp sentence
|
|
268
|
+
reconstructing the change's intent), and set <findings/> to its
|
|
269
|
+
`findings` field (a list).
|
|
270
|
+
|
|
271
|
+
Then *derive* the overall <verdict/> from <findings/>: set
|
|
272
|
+
<verdict/> to `REJECT - DEMANDS CHANGES` if *any* finding in
|
|
273
|
+
<findings/> has a `severity` field of `HIGH`; otherwise set
|
|
274
|
+
<verdict/> to `APPROVE`. The verdict is derived *before* the
|
|
275
|
+
severity floor below, so the floor only affects which findings are
|
|
276
|
+
*rendered*, never the verdict.
|
|
277
|
+
|
|
278
|
+
Then determine the *effective severity floor* <floor/> and its
|
|
279
|
+
origin <floor-origin/>: define the ordinal rank `LOW`=1, `MEDIUM`=2,
|
|
280
|
+
`HIGH`=3.
|
|
281
|
+
|
|
282
|
+
<if condition="<getopt-option-severity/> is equal `AUTO`">
|
|
283
|
+
Set <floor>MEDIUM</floor> and <floor-origin>boxing: grey</floor-origin>
|
|
284
|
+
if <ase-project-boxing/> is equal `grey` (grey boxing surfaces only
|
|
285
|
+
*material* findings of severity `MEDIUM` and above), and
|
|
286
|
+
<floor>LOW</floor> and <floor-origin>default</floor-origin> otherwise.
|
|
287
|
+
</if>
|
|
288
|
+
<else>
|
|
289
|
+
Set <floor><getopt-option-severity/></floor> and
|
|
290
|
+
<floor-origin>--severity <getopt-option-severity/></floor-origin>:
|
|
291
|
+
an *explicitly* given severity floor always *wins* over the boxing.
|
|
292
|
+
</else>
|
|
293
|
+
|
|
294
|
+
Then *apply the effective severity floor* <floor/>: *Keep* a finding
|
|
295
|
+
in <findings/> if and only if its `severity` field is `ACCEPTED` *or*
|
|
296
|
+
`rank(severity)` is greater than or equal to `rank(<floor/>)`;
|
|
297
|
+
*drop* all other findings, but set <hidden/> to the *number* of
|
|
298
|
+
dropped findings. With the floor `LOW`, all findings are kept.
|
|
299
|
+
`ACCEPTED` findings are *never* dropped. The floor affects only which
|
|
300
|
+
findings are *rendered*, never the <verdict/> derived above.
|
|
301
|
+
|
|
302
|
+
You *MUST* *NOT* output anything else in this STEP 2.
|
|
303
|
+
|
|
304
|
+
</step>
|
|
305
|
+
|
|
306
|
+
3. <step id="STEP 3: Verdict and Findings">
|
|
307
|
+
|
|
308
|
+
1. Use the following <template/> to output the overall review in
|
|
309
|
+
<verdict/> and the reconstructed intent <summary/>:
|
|
310
|
+
|
|
311
|
+
<template>
|
|
312
|
+
|
|
313
|
+
<ase-tpl-bullet-signal/> **REVIEW VERDICT**: **<verdict/>**
|
|
314
|
+
|
|
315
|
+
<ase-tpl-bullet-normal/> **CHANGE INTENT**: <summary/>
|
|
316
|
+
|
|
317
|
+
</template>
|
|
318
|
+
|
|
319
|
+
You *MUST* *NOT* output anything else in this STEP 3.1.
|
|
320
|
+
|
|
321
|
+
2. <if condition="<findings/> is empty">
|
|
322
|
+
Only output the following <template/> - with <note/> set to `the
|
|
323
|
+
change was not reviewed` if <verdict/> starts with `SKIPPED`, to
|
|
324
|
+
`no finding reaches severity <floor/>` if <hidden/> is greater
|
|
325
|
+
than `0`, and to `the change is clean` otherwise - and then
|
|
326
|
+
*SKIP* substep 3 of this STEP 3:
|
|
327
|
+
|
|
328
|
+
<template>
|
|
329
|
+
|
|
330
|
+
<ase-tpl-bullet-normal/> **NO FINDINGS**: <note/>, nothing to flag.
|
|
331
|
+
|
|
332
|
+
</template>
|
|
333
|
+
</if>
|
|
334
|
+
|
|
335
|
+
3. <if condition="<findings/> is NOT empty">
|
|
336
|
+
Sort the findings by <severity/> from highest to lowest in the
|
|
337
|
+
fixed order `HIGH`, `MEDIUM`, `LOW`, `ACCEPTED`. Within the same
|
|
338
|
+
severity, keep the order returned by the sub-agent.
|
|
339
|
+
|
|
340
|
+
Then render a *three-column table* with one row per finding by
|
|
341
|
+
using the following output <template/>. For each finding, repeat
|
|
342
|
+
the third line, set <severity/> to its `severity` field, set
|
|
343
|
+
<dimension/> to its `dimension` field, set <location/> to its
|
|
344
|
+
`location` field, and set <finding/> to its `finding` field.
|
|
345
|
+
|
|
346
|
+
In the <location/> column, mark up the `file:line` reference
|
|
347
|
+
as code (with backticks) and prepend it with `▢ ` - keep the
|
|
348
|
+
sub-agent's own `:N` / `:N-M` line citation intact and do *not*
|
|
349
|
+
append any further line-count decoration.
|
|
350
|
+
|
|
351
|
+
Because the <finding/> text is free-form Markdown, *before*
|
|
352
|
+
emitting any row you *MUST* escape every literal `|` pipe
|
|
353
|
+
character inside <location/> and <finding/> as `\|` so it cannot
|
|
354
|
+
break the table column structure.
|
|
355
|
+
|
|
356
|
+
<template>
|
|
357
|
+
| Severity | Dimension | Finding |
|
|
358
|
+
| --------------- | ------------ | ----------------------- |
|
|
359
|
+
| **<severity/>** | <dimension/> | <location/>: <finding/> |
|
|
360
|
+
</template>
|
|
361
|
+
|
|
362
|
+
Keep the overall report *concise* and *brief*.
|
|
363
|
+
Do *not* output any further explanation.
|
|
364
|
+
</if>
|
|
365
|
+
|
|
366
|
+
4. <if condition="<hidden/> is greater than `0`">
|
|
367
|
+
Output the following <template/>, so that suppressed findings
|
|
368
|
+
are never mistaken for a clean change:
|
|
369
|
+
|
|
370
|
+
<template>
|
|
371
|
+
|
|
372
|
+
<ase-tpl-bullet-normal/> **HIDDEN FINDINGS**: <hidden/> finding(s) below severity **<floor/>** suppressed (<floor-origin/>).
|
|
373
|
+
|
|
374
|
+
</template>
|
|
375
|
+
</if>
|
|
376
|
+
|
|
377
|
+
5. Finally, give the closing hints by expanding the following
|
|
378
|
+
(which, depending on the configured <ase-guidance-level/>, may
|
|
379
|
+
expand into nothing and hence emit no output at all):
|
|
380
|
+
|
|
381
|
+
<if condition="<verdict/> starts with `REJECT`">
|
|
382
|
+
<ase-tpl-hint level="normal">
|
|
383
|
+
Use `/ase-task-edit` to derive a solution approach and plan for the findings which demand changes.
|
|
384
|
+
</ase-tpl-hint>
|
|
385
|
+
</if>
|
|
386
|
+
|
|
387
|
+
<if condition="<hidden/> is greater than `0`">
|
|
388
|
+
Set <rerun>/ase-repo-review -S LOW</rerun>, append ` --staged`
|
|
389
|
+
to <rerun/> if <getopt-option-staged/> is equal `true`, append
|
|
390
|
+
` --unstaged` to <rerun/> if <getopt-option-unstaged/> is equal
|
|
391
|
+
`true`, append
|
|
392
|
+
` -b <getopt-option-branch/>` to <rerun/> if
|
|
393
|
+
<getopt-option-branch/> is not empty, append
|
|
394
|
+
` -c <getopt-option-commit/>` to <rerun/> if
|
|
395
|
+
<getopt-option-commit/> is not empty, and
|
|
396
|
+
append ` -t` to <rerun/> if <getopt-option-thorough/> is equal
|
|
397
|
+
`true`, so that the re-run reviews the same scope in the same mode.
|
|
398
|
+
|
|
399
|
+
<ase-tpl-hint level="normal">
|
|
400
|
+
Use `<rerun/>` to re-run the review with all findings shown (a fresh review, so its findings can differ).
|
|
401
|
+
</ase-tpl-hint>
|
|
402
|
+
</if>
|
|
403
|
+
|
|
404
|
+
</step>
|
|
405
|
+
|
|
406
|
+
</flow>
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
|
|
2
|
+
## NAME
|
|
3
|
+
|
|
4
|
+
`ase-repo-review` - Review Changes
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
|
|
8
|
+
`ase-repo-review`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
[`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
|
|
11
|
+
[`--thorough`|`-t`]
|
|
12
|
+
[`--staged`]
|
|
13
|
+
[`--unstaged`]
|
|
14
|
+
[`--branch`|`-b` *branch*]
|
|
15
|
+
[`--commit`|`-c` *commit*]
|
|
16
|
+
|
|
17
|
+
## DESCRIPTION
|
|
18
|
+
|
|
19
|
+
The `ase-repo-review` skill performs a *holistic*,
|
|
20
|
+
*human-reviewer-style* critique of the *staged* Git changes (or, with
|
|
21
|
+
`--unstaged`, of the *unstaged* and *untracked* changes, with both
|
|
22
|
+
`--staged` and `--unstaged`, of *all* uncommitted changes, with
|
|
23
|
+
`--branch`, of the changes of a *branch* against its *base*, or, with
|
|
24
|
+
`--commit`, of a *single commit*) and emits a single
|
|
25
|
+
*approve* / *reject* **verdict** backed by *prioritized*,
|
|
26
|
+
*severity-tagged*, *line-cited* **findings**. Rather than scanning the
|
|
27
|
+
code mechanically, it first *reconstructs the change's own intent* and
|
|
28
|
+
then judges the diff *as a whole* against that intent - the way an
|
|
29
|
+
experienced reviewer would on a pull request.
|
|
30
|
+
|
|
31
|
+
The critique spans a fixed set of reviewer *dimensions*: **intent**
|
|
32
|
+
(does the diff do what it set out to, without scope creep),
|
|
33
|
+
**propagation** (the change fully and consistently carried over to call
|
|
34
|
+
sites, types, schemas, registries, catalogs, and analogous sibling
|
|
35
|
+
places, with matching contracts and terminology, and without orphans left
|
|
36
|
+
behind), **coverage** (all special and edge cases handled, like empty
|
|
37
|
+
values, boundaries, error paths, and all variants), **residue** (debug
|
|
38
|
+
output, commented-out code, scaffolding, temporary files, build output,
|
|
39
|
+
or secrets which do not belong into the change), **correctness**
|
|
40
|
+
(latent bugs, broken control/data flow), **design** (fit with the surrounding architecture,
|
|
41
|
+
naming, abstraction level), **clarity** (readability and
|
|
42
|
+
self-documentation for a future reader), **robustness** (error handling,
|
|
43
|
+
resource and concurrency safety), **security** and **performance** (risks
|
|
44
|
+
introduced by the change), **convention** (conformance to the
|
|
45
|
+
project's documented conventions - code style and the plan/spec
|
|
46
|
+
formats described in `AGENTS.md` and the `ase-format-*` meta documents),
|
|
47
|
+
**testing** (inadequate coverage for the change - new or fixed behavior
|
|
48
|
+
left untested, adjacent tests not updated, or existing tests silently
|
|
49
|
+
broken, disabled, or weakened), and **documentation** (user- or
|
|
50
|
+
developer-facing docs - `README`, `CHANGELOG`, help text, or AI
|
|
51
|
+
guidance/meta documents - left stale by the change).
|
|
52
|
+
|
|
53
|
+
Each finding carries a *severity* - **HIGH**, **MEDIUM**, **LOW**, or
|
|
54
|
+
**ACCEPTED** (a concern that is contractually addressed or accepted as a
|
|
55
|
+
documented priority conflict) - and is *evidence-grounded*: it cites the
|
|
56
|
+
exact `file:line` location it stems from. The overall verdict is
|
|
57
|
+
**REJECT - DEMANDS CHANGES** when any *HIGH* finding remains, and
|
|
58
|
+
**APPROVE** otherwise. The work is performed by a dedicated `ase-repo-review`
|
|
59
|
+
sub-agent so that the silent reading and read-only repository probing
|
|
60
|
+
never leak into the transcript; only the structured verdict and findings
|
|
61
|
+
are rendered.
|
|
62
|
+
|
|
63
|
+
The skill *complements* rather than duplicates its neighbors:
|
|
64
|
+
`ase-code-lint` flags *mechanical* code-quality issues, `ase-code-analyze`
|
|
65
|
+
inspects *logic and semantics*, `ase-repo-diff` narrates *what changed*
|
|
66
|
+
(with optional coherence, risk, and blast-radius reports), and
|
|
67
|
+
`ase-meta-diaboli` *adversarially challenges a thesis* - whereas
|
|
68
|
+
`ase-repo-review` renders a *reviewer's judgment* on a concrete diff
|
|
69
|
+
before it is committed or merged.
|
|
70
|
+
|
|
71
|
+
## OPTIONS
|
|
72
|
+
|
|
73
|
+
- `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
|
|
74
|
+
Set the *severity floor* (default `AUTO`): findings below the chosen
|
|
75
|
+
threshold are suppressed, ordered `LOW` < `MEDIUM` < `HIGH`. The
|
|
76
|
+
default `AUTO` means `MEDIUM` for a project with `grey` boxing and
|
|
77
|
+
`LOW` (keep all findings) otherwise; an explicitly given floor always
|
|
78
|
+
wins over the boxing. `ACCEPTED` findings are never suppressed, and
|
|
79
|
+
the number of suppressed findings is always reported. Surviving
|
|
80
|
+
findings are rendered in *descending severity* order `HIGH`,
|
|
81
|
+
`MEDIUM`, `LOW`, `ACCEPTED`. The floor only affects the rendered
|
|
82
|
+
findings table, not the overall *verdict*, which is always derived
|
|
83
|
+
from all findings before the floor is applied.
|
|
84
|
+
|
|
85
|
+
- `--thorough`|`-t`:
|
|
86
|
+
Review *exhaustively* instead of reporting only a *few* high-signal
|
|
87
|
+
findings: report every well-grounded concern, including minor nits,
|
|
88
|
+
and additionally *plausible* concerns whose impact cannot be fully
|
|
89
|
+
proven, marked with "*Plausible:*" and rated at most `MEDIUM`.
|
|
90
|
+
|
|
91
|
+
- `--staged`:
|
|
92
|
+
Review the *staged* changes of the working copy. This is the default
|
|
93
|
+
if neither `--unstaged`, `--branch`, nor `--commit` is given.
|
|
94
|
+
Combined with `--unstaged`, review *all* uncommitted changes.
|
|
95
|
+
Combined with `--branch`, additionally review the staged changes of
|
|
96
|
+
the worktree where the *branch* is checked out.
|
|
97
|
+
|
|
98
|
+
- `--unstaged`:
|
|
99
|
+
Review the *unstaged* changes and the *untracked* files of the
|
|
100
|
+
working copy (except *ASE*'s own state below `.ase/`) instead of the
|
|
101
|
+
*staged* changes. Combined with `--staged`, review *all* uncommitted
|
|
102
|
+
changes. Combined with `--branch`, additionally review the unstaged
|
|
103
|
+
changes and untracked files of the worktree where the *branch* is
|
|
104
|
+
checked out.
|
|
105
|
+
|
|
106
|
+
- `--branch`|`-b` *branch*:
|
|
107
|
+
Review the commits of *branch* (any Git revision) since its fork
|
|
108
|
+
point from its *base*, instead of the *staged* changes. The base is
|
|
109
|
+
determined automatically as the local branch with the *nearest* fork
|
|
110
|
+
point (preferring the checked-out branch on a tie) and is reported
|
|
111
|
+
before the review. The commit messages are checked for mismatches
|
|
112
|
+
against the diff.
|
|
113
|
+
|
|
114
|
+
- `--commit`|`-c` *commit*:
|
|
115
|
+
Review the single *commit* (any Git revision) against its first
|
|
116
|
+
parent, instead of the *staged* changes. Its commit message is
|
|
117
|
+
checked for mismatches against the diff. This option cannot be
|
|
118
|
+
combined with `--branch`, `--staged`, or `--unstaged`.
|
|
119
|
+
|
|
120
|
+
## ARGUMENTS
|
|
121
|
+
|
|
122
|
+
The `ase-repo-review` skill takes no positional arguments; it reviews the
|
|
123
|
+
currently *staged* Git changes, with `--unstaged` the unstaged and
|
|
124
|
+
untracked changes, with both `--staged` and `--unstaged` all uncommitted
|
|
125
|
+
changes, with `--branch` a branch against its base, or with `--commit` a
|
|
126
|
+
single commit.
|
|
127
|
+
|
|
128
|
+
## SCENARIOS
|
|
129
|
+
|
|
130
|
+
- You want the staged changes reviewed like a human reviewer would
|
|
131
|
+
- You want an approve or reject verdict before committing
|
|
132
|
+
- You want severity-tagged, line-cited findings on a diff
|
|
133
|
+
- You want a holistic judgment instead of a mechanical lint
|
|
134
|
+
- You want your not yet staged changes reviewed
|
|
135
|
+
- You want an exhaustive review of all uncommitted changes
|
|
136
|
+
- You want a feature branch reviewed before merging it
|
|
137
|
+
- You want a single, already committed change reviewed
|
|
138
|
+
|
|
139
|
+
## EXAMPLES
|
|
140
|
+
|
|
141
|
+
Review the currently staged changes before committing:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
❯ /ase-repo-review
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Review the staged changes, reporting only `MEDIUM` and `HIGH` findings:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
❯ /ase-repo-review -S MEDIUM
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Review the unstaged and untracked changes only:
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
❯ /ase-repo-review --unstaged
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Review all uncommitted changes exhaustively, reporting all findings:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
❯ /ase-repo-review --staged --unstaged -t -S LOW
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Review the branch `feature` against its base, including the uncommitted
|
|
166
|
+
changes of its worktree:
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
❯ /ase-repo-review -b feature --staged --unstaged
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Review the last commit:
|
|
173
|
+
|
|
174
|
+
```text
|
|
175
|
+
❯ /ase-repo-review -c HEAD
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## SEE ALSO
|
|
179
|
+
|
|
180
|
+
[`ase-repo-diff`](../ase-repo-diff/help.md), [`ase-repo-commit`](../ase-repo-commit/help.md), [`ase-code-lint`](../ase-code-lint/help.md), [`ase-code-analyze`](../ase-code-analyze/help.md),
|
|
181
|
+
[`ase-meta-diaboli`](../ase-meta-diaboli/help.md).
|