@rse/ase 1.0.7 → 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.
Files changed (279) hide show
  1. package/dst/ase-agent-definition-api.d.ts +184 -0
  2. package/dst/ase-agent-definition-api.js +6 -0
  3. package/dst/ase-agent-definition-builtin/condenser.js +42 -0
  4. package/dst/ase-agent-definition-builtin/editor.js +45 -0
  5. package/dst/ase-agent-definition-builtin/estimator.js +98 -0
  6. package/dst/ase-agent-definition-builtin/implementer.js +121 -0
  7. package/dst/ase-agent-definition-builtin/integrator.js +56 -0
  8. package/dst/ase-agent-definition-builtin/qualifier.js +61 -0
  9. package/dst/ase-agent-definition-builtin/rebooter.js +41 -0
  10. package/dst/ase-agent-definition-builtin/researcher.js +77 -0
  11. package/dst/ase-agent-definition-core.js +827 -0
  12. package/dst/ase-agent-fleet.js +772 -0
  13. package/dst/ase-agent-process.js +232 -0
  14. package/dst/ase-agent-relay-client.js +509 -0
  15. package/dst/ase-agent-relay-core.js +213 -0
  16. package/dst/ase-agent-relay-server-bind.js +242 -0
  17. package/dst/ase-agent-relay-server-cli.js +50 -0
  18. package/dst/ase-agent-runtime-claim.js +189 -0
  19. package/dst/ase-agent-runtime-engine.js +1100 -0
  20. package/dst/ase-agent-runtime-exec.js +275 -0
  21. package/dst/ase-agent-runtime-phase.js +581 -0
  22. package/dst/ase-agent-runtime-request.js +272 -0
  23. package/dst/ase-agent-runtime-tool.js +207 -0
  24. package/dst/ase-agent-runtime.js +1316 -0
  25. package/dst/ase-agent.js +65 -0
  26. package/dst/ase-artifact.js +6 -5
  27. package/dst/ase-config-core.js +465 -0
  28. package/dst/ase-config-schema.js +351 -0
  29. package/dst/ase-config-scope.js +172 -0
  30. package/dst/ase-config.js +25 -585
  31. package/dst/ase-hook.js +228 -111
  32. package/dst/ase-lib-daemon-cli.js +130 -0
  33. package/dst/ase-lib-hash.js +20 -0
  34. package/dst/{ase-log.js → ase-lib-log.js} +40 -7
  35. package/dst/ase-lib-server-bind.js +115 -0
  36. package/dst/ase-lib-server-cli.js +474 -0
  37. package/dst/{ase-table.js → ase-lib-table.js} +1 -1
  38. package/dst/{ase-version.js → ase-lib-version.js} +3 -0
  39. package/dst/ase-man.js +96 -0
  40. package/dst/ase-mcp.js +166 -13
  41. package/dst/{ase-getopt.js → ase-service-getopt.js} +82 -80
  42. package/dst/{ase-markdown.js → ase-service-markdown.js} +18 -11
  43. package/dst/ase-service-otel.js +1246 -0
  44. package/dst/{ase-skills.js → ase-service-skills.js} +29 -64
  45. package/dst/ase-service-state.js +101 -0
  46. package/dst/ase-service.js +251 -76
  47. package/dst/ase-setup-common.js +141 -0
  48. package/dst/ase-setup-mcp.js +359 -0
  49. package/dst/ase-setup-settings.js +837 -0
  50. package/dst/ase-setup.js +113 -869
  51. package/dst/ase-spec.js +31 -19
  52. package/dst/ase-statusline.js +108 -43
  53. package/dst/ase-task-board-core.js +739 -0
  54. package/dst/ase-task-board-filter.js +127 -0
  55. package/dst/ase-task-board-flow.js +237 -0
  56. package/dst/ase-task-board-graph.js +497 -0
  57. package/dst/ase-task-board-stats.js +263 -0
  58. package/dst/ase-task-board-tui-control.js +775 -0
  59. package/dst/ase-task-board-tui-model.js +1008 -0
  60. package/dst/ase-task-board-tui-popup.js +626 -0
  61. package/dst/ase-task-board-tui-style.js +106 -0
  62. package/dst/ase-task-board-tui-view.js +847 -0
  63. package/dst/ase-task-board-tui.js +189 -0
  64. package/dst/ase-task-board-web-client.css +1 -0
  65. package/dst/ase-task-board-web-client.html +20 -0
  66. package/dst/ase-task-board-web-client.js +81 -0
  67. package/dst/ase-task-board-web-server.js +823 -0
  68. package/dst/ase-task-board.js +134 -0
  69. package/dst/ase-task-format.js +757 -0
  70. package/dst/ase-task-request.js +208 -0
  71. package/dst/ase-task-store-client.js +495 -0
  72. package/dst/ase-task-store-core.js +804 -0
  73. package/dst/ase-task-store-issues.js +237 -0
  74. package/dst/ase-task-store-plugin-api.js +6 -0
  75. package/dst/ase-task-store-plugin-ase.js +484 -0
  76. package/dst/ase-task-store-plugin-delegate.js +137 -0
  77. package/dst/ase-task-store-plugin-gitea.js +666 -0
  78. package/dst/ase-task-store-plugin-github.js +696 -0
  79. package/dst/ase-task-store-plugin-gitlab.js +668 -0
  80. package/dst/ase-task-store-server-bind.js +538 -0
  81. package/dst/ase-task-store-server-cli.js +154 -0
  82. package/dst/ase-task.js +1335 -357
  83. package/dst/{ase-compat.js → ase-util-compat.js} +2 -2
  84. package/dst/{ase-diagram.js → ase-util-diagram.js} +107 -32
  85. package/dst/{ase-meta.js → ase-util-meta.js} +2 -2
  86. package/dst/{ase-metric.js → ase-util-metric.js} +2 -2
  87. package/dst/{ase-mint.js → ase-util-mint.js} +19 -12
  88. package/dst/{ase-worktree.js → ase-util-worktree.js} +30 -19
  89. package/dst/ase-util.js +20 -0
  90. package/dst/ase.js +108 -32
  91. package/dst/man/ase-agent-adhoc.1 +515 -0
  92. package/dst/man/ase-agent-condenser.1 +193 -0
  93. package/dst/man/ase-agent-editor.1 +212 -0
  94. package/dst/man/ase-agent-estimator.1 +214 -0
  95. package/dst/man/ase-agent-fleet.1 +185 -0
  96. package/dst/man/ase-agent-implementer.1 +233 -0
  97. package/dst/man/ase-agent-integrator.1 +213 -0
  98. package/dst/man/ase-agent-qualifier.1 +214 -0
  99. package/dst/man/ase-agent-rebooter.1 +193 -0
  100. package/dst/man/ase-agent-relay.1 +128 -0
  101. package/dst/man/ase-agent-researcher.1 +217 -0
  102. package/dst/man/ase-agent.1 +264 -0
  103. package/dst/man/ase-artifact-list.1 +38 -0
  104. package/dst/man/ase-artifact-name.1 +39 -0
  105. package/dst/man/ase-artifact.1 +56 -0
  106. package/dst/man/ase-config-delete.1 +45 -0
  107. package/dst/man/ase-config-edit.1 +48 -0
  108. package/dst/man/ase-config-get.1 +46 -0
  109. package/dst/man/ase-config-init.1 +60 -0
  110. package/dst/man/ase-config-list.1 +42 -0
  111. package/dst/man/ase-config-set.1 +52 -0
  112. package/dst/man/ase-config.1 +225 -0
  113. package/dst/man/ase-hook-permission-request.1 +36 -0
  114. package/dst/man/ase-hook-pre-tool-use.1 +59 -0
  115. package/dst/man/ase-hook-session-end.1 +47 -0
  116. package/dst/man/ase-hook-session-persona.1 +37 -0
  117. package/dst/man/ase-hook-session-start.1 +81 -0
  118. package/dst/man/ase-hook-stop.1 +34 -0
  119. package/dst/man/ase-hook-user-prompt-submit.1 +34 -0
  120. package/dst/man/ase-hook.1 +51 -0
  121. package/dst/man/ase-man.1 +67 -0
  122. package/dst/man/ase-mcp.1 +61 -0
  123. package/dst/man/ase-service-log.1 +43 -0
  124. package/dst/man/ase-service-send.1 +47 -0
  125. package/dst/man/ase-service-start.1 +54 -0
  126. package/dst/man/ase-service-status.1 +46 -0
  127. package/dst/man/ase-service-stop.1 +37 -0
  128. package/dst/man/ase-service.1 +85 -0
  129. package/dst/man/ase-setup-disable.1 +44 -0
  130. package/dst/man/ase-setup-enable.1 +45 -0
  131. package/dst/man/ase-setup-install.1 +73 -0
  132. package/dst/man/ase-setup-mcp.1 +124 -0
  133. package/dst/man/ase-setup-status.1 +60 -0
  134. package/dst/man/ase-setup-statusline.1 +92 -0
  135. package/dst/man/ase-setup-telemetry.1 +92 -0
  136. package/dst/man/ase-setup-uninstall.1 +59 -0
  137. package/dst/man/ase-setup-update.1 +64 -0
  138. package/dst/man/ase-setup.1 +93 -0
  139. package/dst/man/ase-spec-export.1 +62 -0
  140. package/dst/man/ase-spec-lint.1 +40 -0
  141. package/dst/man/ase-spec-preview.1 +40 -0
  142. package/dst/man/ase-spec.1 +46 -0
  143. package/dst/man/ase-statusline.1 +189 -0
  144. package/dst/man/ase-task-assign.1 +71 -0
  145. package/dst/man/ase-task-board.1 +384 -0
  146. package/dst/man/ase-task-delete.1 +35 -0
  147. package/dst/man/ase-task-edit.1 +46 -0
  148. package/dst/man/ase-task-idscheme.1 +65 -0
  149. package/dst/man/ase-task-lifecycle.1 +57 -0
  150. package/dst/man/ase-task-list.1 +47 -0
  151. package/dst/man/ase-task-load.1 +36 -0
  152. package/dst/man/ase-task-newid.1 +61 -0
  153. package/dst/man/ase-task-purge.1 +37 -0
  154. package/dst/man/ase-task-rename.1 +44 -0
  155. package/dst/man/ase-task-request.1 +61 -0
  156. package/dst/man/ase-task-save.1 +48 -0
  157. package/dst/man/ase-task-status.1 +55 -0
  158. package/dst/man/ase-task-store.1 +194 -0
  159. package/dst/man/ase-task-view.1 +40 -0
  160. package/dst/man/ase-task.1 +160 -0
  161. package/dst/man/ase-util-compat.1 +25 -0
  162. package/dst/man/ase-util-diagram.1 +76 -0
  163. package/dst/man/ase-util-meta.1 +45 -0
  164. package/dst/man/ase-util-metric.1 +54 -0
  165. package/dst/man/ase-util-mint.1 +59 -0
  166. package/dst/man/ase-util-worktree.1 +72 -0
  167. package/dst/man/ase-util.1 +50 -0
  168. package/dst/man/ase.1 +124 -0
  169. package/package.json +79 -21
  170. package/plugin/.claude-plugin/plugin.json +1 -1
  171. package/plugin/.codex-plugin/plugin.json +1 -1
  172. package/plugin/.github/plugin/plugin.json +1 -1
  173. package/plugin/agents/ase-meta-diagram.md +12 -8
  174. package/plugin/agents/ase-repo-review.md +322 -0
  175. package/plugin/hooks/hooks-codex.json +5 -0
  176. package/plugin/hooks/hooks-copilot.json +5 -0
  177. package/plugin/hooks/hooks.json +8 -0
  178. package/plugin/meta/ase-common-approach.md +117 -0
  179. package/plugin/meta/ase-common-changeset.md +256 -0
  180. package/plugin/meta/ase-common-code.md +10 -173
  181. package/plugin/meta/ase-common-grill.md +317 -0
  182. package/plugin/meta/ase-common-resolve.md +305 -0
  183. package/plugin/meta/ase-common-task.md +83 -4
  184. package/plugin/meta/ase-constitution.md +0 -2
  185. package/plugin/meta/ase-format-specbook.md +208 -25
  186. package/plugin/meta/ase-format-specbook.yaml +242 -851
  187. package/plugin/meta/ase-format-task.md +669 -125
  188. package/plugin/meta/ase-persona.md +3 -4
  189. package/plugin/meta/ase-skill.md +9 -0
  190. package/plugin/mods/ase-mods.ts +409 -0
  191. package/plugin/mods/claude-code.d.ts +13417 -0
  192. package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
  193. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  194. package/plugin/skills/ase-code-analyze/SKILL.md +59 -8
  195. package/plugin/skills/ase-code-analyze/help.md +29 -4
  196. package/plugin/skills/ase-code-edit/SKILL.md +107 -181
  197. package/plugin/skills/ase-code-edit/help.md +118 -31
  198. package/plugin/skills/ase-code-lint/SKILL.md +64 -13
  199. package/plugin/skills/ase-code-lint/help.md +32 -2
  200. package/plugin/skills/ase-docs-proofread/SKILL.md +4 -4
  201. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  202. package/plugin/skills/ase-docs-refine/SKILL.md +4 -4
  203. package/plugin/skills/ase-docs-shorten/SKILL.md +4 -4
  204. package/plugin/skills/ase-help-intent/data.md +2164 -1087
  205. package/plugin/skills/ase-help-intent/help.md +1 -1
  206. package/plugin/skills/ase-help-skill/catalog.md +12 -9
  207. package/plugin/skills/ase-meta-brainstorm/SKILL.md +1 -1
  208. package/plugin/skills/ase-meta-config/SKILL.md +3 -4
  209. package/plugin/skills/ase-meta-config/help.md +31 -10
  210. package/plugin/skills/ase-meta-mint/SKILL.md +5 -5
  211. package/plugin/skills/ase-meta-mint/help.md +10 -5
  212. package/plugin/skills/ase-meta-why/help.md +1 -1
  213. package/plugin/skills/ase-meta-workflow/SKILL.md +7 -7
  214. package/plugin/skills/ase-meta-workflow/help.md +4 -4
  215. package/plugin/skills/ase-meta-workflow/sample.md +3 -3
  216. package/plugin/skills/ase-meta-workflow/workflow.txt +22 -18
  217. package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/SKILL.md +4 -3
  218. package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/help.md +5 -5
  219. package/plugin/skills/{ase-meta-commit → ase-repo-commit}/SKILL.md +6 -6
  220. package/plugin/skills/{ase-meta-commit → ase-repo-commit}/help.md +5 -5
  221. package/plugin/skills/{ase-meta-diff → ase-repo-diff}/SKILL.md +6 -6
  222. package/plugin/skills/{ase-meta-diff → ase-repo-diff}/help.md +8 -8
  223. package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/SKILL.md +19 -19
  224. package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/help.md +10 -12
  225. package/plugin/skills/ase-repo-merge/SKILL.md +346 -0
  226. package/plugin/skills/ase-repo-merge/help.md +107 -0
  227. package/plugin/skills/ase-repo-resolve/SKILL.md +158 -0
  228. package/plugin/skills/ase-repo-resolve/help.md +102 -0
  229. package/plugin/skills/ase-repo-review/SKILL.md +406 -0
  230. package/plugin/skills/ase-repo-review/help.md +181 -0
  231. package/plugin/skills/ase-spec-edit/SKILL.md +117 -183
  232. package/plugin/skills/ase-spec-edit/help.md +107 -26
  233. package/plugin/skills/ase-sync-reconcile/help.md +1 -1
  234. package/plugin/skills/ase-task-assign/SKILL.md +111 -0
  235. package/plugin/skills/ase-task-assign/help.md +119 -0
  236. package/plugin/skills/ase-task-condense/SKILL.md +21 -21
  237. package/plugin/skills/ase-task-condense/help.md +12 -10
  238. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  239. package/plugin/skills/ase-task-dissect/SKILL.md +71 -48
  240. package/plugin/skills/ase-task-dissect/help.md +10 -9
  241. package/plugin/skills/ase-task-edit/SKILL.md +379 -94
  242. package/plugin/skills/ase-task-edit/help.md +95 -22
  243. package/plugin/skills/ase-task-estimate/SKILL.md +492 -0
  244. package/plugin/skills/ase-task-estimate/help.md +158 -0
  245. package/plugin/skills/ase-task-grill/SKILL.md +246 -138
  246. package/plugin/skills/ase-task-grill/help.md +129 -26
  247. package/plugin/skills/ase-task-id/SKILL.md +8 -1
  248. package/plugin/skills/ase-task-id/help.md +6 -3
  249. package/plugin/skills/ase-task-implement/SKILL.md +535 -145
  250. package/plugin/skills/ase-task-implement/help.md +138 -47
  251. package/plugin/skills/ase-task-integrate/SKILL.md +549 -0
  252. package/plugin/skills/ase-task-integrate/help.md +187 -0
  253. package/plugin/skills/ase-task-list/SKILL.md +55 -23
  254. package/plugin/skills/ase-task-list/help.md +45 -21
  255. package/plugin/skills/ase-task-reboot/SKILL.md +84 -43
  256. package/plugin/skills/ase-task-reboot/help.md +28 -8
  257. package/plugin/skills/ase-task-rename/SKILL.md +10 -2
  258. package/plugin/skills/ase-task-research/SKILL.md +386 -0
  259. package/plugin/skills/ase-task-research/help.md +102 -0
  260. package/plugin/skills/ase-task-status/SKILL.md +137 -0
  261. package/plugin/skills/ase-task-status/help.md +80 -0
  262. package/plugin/skills/ase-task-view/SKILL.md +49 -24
  263. package/plugin/skills/ase-task-view/help.md +19 -9
  264. package/plugin/agents/ase-meta-review.md +0 -187
  265. package/plugin/skills/ase-code-craft/SKILL.md +0 -264
  266. package/plugin/skills/ase-code-craft/help.md +0 -122
  267. package/plugin/skills/ase-code-refactor/SKILL.md +0 -232
  268. package/plugin/skills/ase-code-refactor/help.md +0 -109
  269. package/plugin/skills/ase-code-resolve/SKILL.md +0 -289
  270. package/plugin/skills/ase-code-resolve/help.md +0 -116
  271. package/plugin/skills/ase-meta-review/SKILL.md +0 -210
  272. package/plugin/skills/ase-meta-review/help.md +0 -96
  273. package/plugin/skills/ase-task-preflight/SKILL.md +0 -166
  274. package/plugin/skills/ase-task-preflight/help.md +0 -82
  275. /package/dst/{ase-ignore.js → ase-lib-ignore.js} +0 -0
  276. /package/dst/{ase-stdio.js → ase-lib-stdio.js} +0 -0
  277. /package/dst/{ase-kv.js → ase-service-kv.js} +0 -0
  278. /package/dst/{ase-sleep.js → ase-service-sleep.js} +0 -0
  279. /package/dst/{ase-timestamp.js → ase-service-timestamp.js} +0 -0
@@ -8,19 +8,23 @@
8
8
  `ase-code-edit`
9
9
  [`--help`|`-h`]
10
10
  [`--mode`|`-m` `auto`|`craft`|`refactor`|`resolve`]
11
+ [`--approach`|`-a`]
11
12
  [`--grill`|`-g`]
12
13
  [`--grill-rounds`|`-r` *n*]
14
+ [`--grill-until`|`-u` `MUST`|`SHOULD`|`MAY`]
15
+ [`--grill-perspective`|`-p` *perspective*]
16
+ [`--grill-ground`|`-G`]
13
17
  [`--verify`|`-v`]
14
- [`--worktree`|`-w`]
18
+ [`--worktree`|`-w` *name*[`:`*branch*]]
15
19
  [`--loop`|`-l`]
16
20
  [*query*]
17
21
 
18
22
  ## DESCRIPTION
19
23
 
20
24
  The `ase-code-edit` skill edits the code base *directly* from a *query*,
21
- in one shot and without any task plan ceremony. It is a *plan-less*
22
- fusion of `ase-code-craft`, `ase-code-refactor`, `ase-code-resolve`,
23
- `ase-task-grill`, and `ase-task-implement`.
25
+ in one shot and without any task plan ceremony. It is the *plan-less*
26
+ counterpart of `ase-task-edit`, `ase-task-grill`, and
27
+ `ase-task-implement`, covering crafting, refactoring, and resolving.
24
28
 
25
29
  Each single-shot run (or each `--loop` iteration) walks through five
26
30
  states: *querying* (take the *query* argument or ask for a query via an
@@ -28,11 +32,12 @@ interactive `Edit Query` dialog, and
28
32
  split it into its domain-specific WHAT and its implementation-detail HOW
29
33
  parts), *discovering* (read the source artifacts related to the query),
30
34
  *grilling* (optionally stress-test the query with rounds of questions),
31
- *implementing* (apply the change set in place, honoring the tenet set
32
- selected via `--mode`), and *verifying* (optionally verify the
33
- implementation until it passes). The *querying* state and every
34
- *grilling* round close with an `EDIT TODO` box showing the established
35
- `WHAT` and `HOW` information.
35
+ *implementing* (optionally select an approach, then apply the change
36
+ set in place, honoring the tenet set selected via `--mode`), and
37
+ *verifying* (optionally verify the implementation until it passes). The
38
+ *querying* state, every *grilling* round, and the approach selection
39
+ close with an `EDIT TODO` box showing the established `WHAT` and `HOW`
40
+ information.
36
41
 
37
42
  ## OPTIONS
38
43
 
@@ -41,6 +46,15 @@ implementation until it passes). The *querying* state and every
41
46
  (CRAFTING), `refactor` (REFACTORING), or `resolve` (RESOLVING).
42
47
  The default `auto` infers the tenet set from the query itself.
43
48
 
49
+ - `--approach`|`-a`:
50
+ Before applying the change set, propose one or more crafting,
51
+ refactoring, or resolution approaches with pros and cons, recommend
52
+ one of them, and let the user pick the preferred one via an
53
+ interactive dialog (or, under the `black` project boxing or in
54
+ headless mode, automatically pick the recommended one). The chosen
55
+ approach is merged into the HOW part of the query. Without
56
+ `--approach`, no approaches are determined at all.
57
+
44
58
  - `--grill`|`-g`:
45
59
  Grill the query before implementing, similar to `ase-task-grill`:
46
60
  raise 1-10 questions per round which resolve the open points of the
@@ -48,31 +62,73 @@ implementation until it passes). The *querying* state and every
48
62
  (domain-specifics, must be clarified), `INTERFACE` (externally
49
63
  observable behavior or UI/API interfaces, must be clarified),
50
64
  `ARCHITECTURE` (structure, wiring, placement, or dependencies,
51
- should be clarified), or `IMPLEMENTATION` (inner technical details,
52
- can be clarified) -- and a 1-2 word `TOPIC` hint. The questions of a
53
- round are sorted by descending focus area importance (`DOMAIN`,
54
- `INTERFACE`, `ARCHITECTURE`, `IMPLEMENTATION`).
65
+ should be clarified), `IMPLEMENTATION` (inner technical details,
66
+ can be clarified), `REGRESSION` (what must not break, should be
67
+ clarified), or `CONFIRMATION` (what proves the specified behavior,
68
+ should be clarified) -- and a 1-2 word `TOPIC` hint. The questions
69
+ of a round are sorted by descending focus area importance
70
+ (`DOMAIN`, `INTERFACE`, `ARCHITECTURE`, `IMPLEMENTATION`,
71
+ `REGRESSION`, `CONFIRMATION`). Questions of focus area
72
+ `REGRESSION` and `CONFIRMATION` are raised only together with
73
+ `--verify`, as only then a verification honors their decisions.
55
74
  All questions of a round are announced together below a
56
- `GRILLING ROUND K/L` line (the announcement line and round numbering
57
- are omitted when only a single round is performed) as an
58
- `#`/`FOCUS ▶ TOPIC`/`QUESTION` table with one row per
59
- question, each row carrying two to four grounded answer alternatives
60
- (with the alternative reflecting the current understanding marked as
61
- `CURRENT`). They are then asked in *one* batch via a single
75
+ `GRILLING ROUND K/L` line (the round numbering is omitted when only
76
+ a single round is performed) as a `QUESTION`/`ANSWERS` table with
77
+ one row per question, each row carrying two to three grounded answer
78
+ alternatives (with the alternative reflecting the current understanding
79
+ marked with `⚑`). They are then asked in *one* batch via a single
62
80
  interactive dialog titled `GRILLING ROUND K/L` (or plain `GRILLING`
63
81
  for a single round), whose question asks for the combined answer to
64
82
  all (or a subset) of the listed aspect questions and whose only
65
83
  answer options are the fixed `STOP SKILL` (stop the skill) and
66
84
  `SKIP GRILLING` (skip the remaining grilling) ones, plus free-text
67
- input. The answers are
85
+ input. The questions are numbered `1`, `2`, etc. and their answer
86
+ alternatives are lettered `A`, `B`, etc., so the free-text input can
87
+ cherry-pick answers with short responses matching `\d+[a-zA-Z]`
88
+ (like `1A 2c`), freely mixed with keyword text. The answers are
68
89
  merged back into the WHAT and HOW parts of the query. Without
69
90
  `--grill`, no questions are asked at all.
70
91
 
71
92
  - `--grill-rounds`|`-r` *n*:
72
- The number of grill rounds to apply (default: `1`). Each round
73
- starts from scratch from only the current WHAT and HOW parts,
93
+ The *maximum* number of grill rounds to apply (default: `1`). Each
94
+ round starts from scratch from only the current WHAT and HOW parts,
74
95
  forgetting all information of previous rounds, and closes with an
75
- `EDIT TODO` box. Only effective together with `--grill`.
96
+ `EDIT TODO` box. The grilling stops early -- announced by a
97
+ `grilling finished early` status line -- once a round, even the
98
+ first one, finds the open points clear enough according to
99
+ `--grill-until`. Only effective together with `--grill`.
100
+
101
+ - `--grill-until`|`-u` `MUST`|`SHOULD`|`MAY`:
102
+ Grill until at least all open points of the given severity or
103
+ higher are clear (default: `MUST`), where the severity follows from
104
+ the focus area: `MUST` (`DOMAIN`, `INTERFACE`), `SHOULD`
105
+ (`ARCHITECTURE`, `REGRESSION`, `CONFIRMATION`), and `MAY`
106
+ (`IMPLEMENTATION`). Independent of this, every open point is rated
107
+ with an individual impact (`HIGH`, `MEDIUM`, or `LOW`), which
108
+ decides which points are raised as questions and in which order
109
+ within a focus area. Only effective together with `--grill`.
110
+
111
+ - `--grill-perspective`|`-p` *perspective*:
112
+ Grill exclusively from the logical *perspective* -- a keyword or
113
+ short hint like `domain`, `performance`, or `security`. The
114
+ perspective acts as an exclusive lens: only open points relevant from
115
+ this perspective are raised as questions, while every question still
116
+ carries its focus area, severity, and impact. The active perspective
117
+ is shown in the announcement line, like `GRILLING (security)`.
118
+ Without a perspective, the grilling is holistic. Only effective together with `--grill`.
119
+
120
+ - `--grill-ground`|`-G`:
121
+ Ground the grilling in facts instead of the world knowledge of the
122
+ model alone: once before the first round, the artifacts of all kinds
123
+ (`SPEC`, `CODE`, `DOCS`, `INFR`, and `OTHR`) are scanned for
124
+ the project facts relevant to the grilled subject (from the given
125
+ perspective, if any) and the Internet/Web is searched for the
126
+ established practices, standards, patterns, and pitfalls about it.
127
+ These facts serve all rounds, both for raising the questions and for
128
+ preferably deriving their answer alternatives. The grounding is shown
129
+ in the announcement line, like `GRILLING (security, grounded)`. If
130
+ no usable facts are found, a warning is shown and the grilling falls
131
+ back to model knowledge. Only effective together with `--grill`.
76
132
 
77
133
  - `--verify`|`-v`:
78
134
  Verify whether the implementation fulfills the requirements, by
@@ -81,12 +137,21 @@ implementation until it passes). The *querying* state and every
81
137
  until the verification passes. Without `--verify`, strictly no
82
138
  verification is performed at all.
83
139
 
84
- - `--worktree`|`-w`:
85
- Apply the change sets inside a dedicated Git worktree (as
86
- `ase-task-implement --worktree`) instead of the current working
87
- copy. One single worktree, named by a two-word id derived from the
88
- first query, serves the whole skill run: all `--loop` iterations
89
- land in it and it is left uncommitted for review.
140
+ - `--worktree`|`-w` *name*[`:`*branch*]:
141
+ Apply the change sets inside the dedicated Git worktree
142
+ `.ase/worktree/<name>` instead of the current working copy. The
143
+ worktree is *reused* if it already exists -- then switched to
144
+ *branch* if given and it has no uncommitted changes --, otherwise
145
+ it is *created* with the branch *branch* (default: *name*),
146
+ checked out if it exists or created from `HEAD` otherwise. One
147
+ single worktree serves the whole skill run: it is prepared before
148
+ the first discovery, so discovering, grilling, and implementing all
149
+ operate on it, all `--loop` iterations land in it, and it is left
150
+ uncommitted for review. If
151
+ *name* is a bare lower-case word naming no existing worktree and a
152
+ *query* follows (like `-w fix the crash`, a former boolean `-w`
153
+ usage), the skill asks whether *name* is the worktree name or the
154
+ first query word.
90
155
 
91
156
  - `--loop`|`-l`:
92
157
  Loop the whole state cycle: after each iteration, ask for the next
@@ -107,6 +172,7 @@ implementation until it passes). The *querying* state and every
107
172
  - You want an analyzer issue like `P1` fixed directly without a plan
108
173
  - You want a quick change with optional grilling and verification
109
174
  - You want several edits chained in a loop, optionally in a worktree
175
+ - You want the change set to land on a specific Git branch or worktree
110
176
 
111
177
  ## EXAMPLES
112
178
 
@@ -122,13 +188,34 @@ Grill the query with two rounds first, then implement and verify:
122
188
  ❯ /ase-code-edit -g -r 2 -v refactor the config loading into layers
123
189
  ```
124
190
 
191
+ Let the user pick one of several resolution approaches first, then
192
+ implement:
193
+
194
+ ```text
195
+ ❯ /ase-code-edit -a fix race condition in cache invalidation
196
+ ```
197
+
198
+ Grill the query exclusively from the security perspective, grounded in
199
+ the project artifacts and the Internet/Web, then implement:
200
+
201
+ ```text
202
+ ❯ /ase-code-edit -g -p security -G add a file upload endpoint to the API
203
+ ```
204
+
125
205
  Loop over multiple edits inside a dedicated Git worktree:
126
206
 
127
207
  ```text
128
- ❯ /ase-code-edit -l -w
208
+ ❯ /ase-code-edit -l -w config-layers
209
+ ```
210
+
211
+ Edit inside the dedicated Git worktree `.ase/worktree/verbose` on the
212
+ branch `feature-verbose`:
213
+
214
+ ```text
215
+ ❯ /ase-code-edit -w verbose:feature-verbose add a --verbose option to the CLI
129
216
  ```
130
217
 
131
218
  ## SEE ALSO
132
219
 
133
- [`ase-code-craft`](../ase-code-craft/help.md), [`ase-code-refactor`](../ase-code-refactor/help.md), [`ase-code-resolve`](../ase-code-resolve/help.md),
220
+ [`ase-task-edit`](../ase-task-edit/help.md), [`ase-spec-edit`](../ase-spec-edit/help.md),
134
221
  [`ase-task-grill`](../ase-task-grill/help.md), [`ase-task-implement`](../ase-task-implement/help.md).
@@ -1,12 +1,15 @@
1
1
  ---
2
2
  name: ase-code-lint
3
- argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(LOW|MEDIUM|HIGH)] [--include|-i=<aspect>[,...]] [--exclude|-e=<aspect>[,...]] <source-reference>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(LOW|MEDIUM|HIGH)] [--include|-i=<aspect>[,...]] [--exclude|-e=<aspect>[,...]] [--staged] [--unstaged] [<source-reference>]"
4
4
  description: >
5
5
  Lint source code for potential code quality problems.
6
6
  Use when the user wants to "lint" or "check" source code.
7
7
  user-invocable: true
8
8
  disable-model-invocation: false
9
9
  effort: high
10
+ allowed-tools:
11
+ - "Bash(git rev-parse *)"
12
+ - "Bash(git -C *)"
10
13
  ---
11
14
 
12
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -20,7 +23,7 @@ Lint Source Code
20
23
 
21
24
  <expand name="getopt"
22
25
  arg1="ase-code-lint"
23
- arg2="--auto|-a --severity|-S=(LOW|MEDIUM|HIGH) --include|-i=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --exclude|-e=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)...">
26
+ arg2="--auto|-a --severity|-S=(LOW|MEDIUM|HIGH) --include|-i=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --exclude|-e=(none|A01|A02|A03|A04|A05|A06|A07|A08|A09|A10|A11|A12|A13|A14|A15|A16|A17|A18|A19|A20|A21)... --staged --unstaged">
24
27
  $ARGUMENTS
25
28
  </expand>
26
29
 
@@ -38,9 +41,9 @@ related to a set of code quality aspects.
38
41
  The project source artifacts are classified as a *black box*, so
39
42
  the user does *not* want them inspected or their problems surfaced.
40
43
  *Skip* the entire investigation and reporting: do *not* invoke any
41
- `Glob` or `Agent` tool and do *not* read any source, only output
42
- the following <template/> and then *SKIP* the remaining steps STEP 2
43
- and STEP 3:
44
+ `Bash`, `Glob`, or `Agent` tool and do *not* read any source, only
45
+ output the following <template/> and then *SKIP* the remaining steps
46
+ STEP 2 and STEP 3:
44
47
 
45
48
  <template>
46
49
  <ase-tpl-bullet-normal/> **LINT**: *suppressed* (`project.boxing` is `black`)
@@ -83,10 +86,58 @@ related to a set of code quality aspects.
83
86
  transcript. The sub-agents perform the silent reading and checking;
84
87
  only their final structured return values are consumed here.
85
88
 
89
+ <if condition="<getopt-option-staged/> is equal `true` or <getopt-option-unstaged/> is equal `true`">
90
+
91
+ For this, first *silently* restrict the linting to the *changed*
92
+ files of the Git working copy. Set <changes>staged and
93
+ unstaged</changes> if both <getopt-option-staged/> and
94
+ <getopt-option-unstaged/> are equal `true`, set
95
+ <changes>staged</changes> if only <getopt-option-staged/> is equal
96
+ `true`, and set <changes>unstaged</changes> otherwise. Determine the
97
+ *repository root* by running the command `git rev-parse
98
+ --show-toplevel` (taken exactly as given) and capturing its output
99
+ into <repo-root/>. Then determine the changed files by running the
100
+ corresponding commands (taken exactly as given), each listing one
101
+ path relative to <repo-root/> per line, and collect all listed
102
+ paths, dropping duplicates:
103
+
104
+ <if condition="<getopt-option-staged/> is equal `true`">
105
+ `git -C "<repo-root/>" -c core.quotepath=off diff --cached --name-only --diff-filter=d`
106
+ </if>
107
+
108
+ <if condition="<getopt-option-unstaged/> is equal `true`">
109
+ `git -C "<repo-root/>" -c core.quotepath=off diff --name-only --diff-filter=d`
110
+
111
+ `git -C "<repo-root/>" -c core.quotepath=off ls-files --others --exclude-standard`
112
+ </if>
113
+
114
+ *Skip* every listed path below the `.ase/` directory (it carries
115
+ *ASE*'s own state) and every path which is not a source code file
116
+ (e.g. a binary file), and prefix every remaining path with
117
+ `<repo-root/>/`. If `<getopt-arguments/>` is not empty, keep only
118
+ those files which lie within the source code referenced by it,
119
+ expanding any directory or wildcard references with the `Glob`
120
+ tool. Set <sources/> to the resulting list of individual source
121
+ code files, preserving order.
122
+
123
+ If <sources/> is empty, only output the following <template/>
124
+ and then *SKIP* the rest of this STEP 1 and the remaining steps
125
+ STEP 2 and STEP 3:
126
+
127
+ <template>
128
+ <ase-tpl-bullet-normal/> **LINT**: *no <changes/> source files to lint*
129
+ </template>
130
+
131
+ </if>
132
+ <else>
133
+
86
134
  For this, first *silently* resolve `<getopt-arguments/>` to the
87
135
  list <sources/> of individual source code files, expanding any
88
- directory or wildcard references with the `Glob` tool. Then
89
- partition <sources/>, preserving order, into at most *eight*
136
+ directory or wildcard references with the `Glob` tool.
137
+
138
+ </else>
139
+
140
+ Then partition <sources/>, preserving order, into at most *eight*
90
141
  batches of roughly equal size (a single file yields a single
91
142
  batch), and invoke the following tool once per batch, emitting
92
143
  *all* invocations *in one single message* so they run in
@@ -171,8 +222,8 @@ related to a set of code quality aspects.
171
222
  1. *Mark this skill as the active edit-capable skill* so that the
172
223
  ASE `pre-tool-use` hook auto-approves the subsequent `Edit`
173
224
  invocations on *any* invocation path (slash command *or* `Skill`
174
- tool). Call the `ase_config_set(key: "agent.skill", val:
175
- "ase-code-lint", scope: "session:<ase-session-id/>")` tool
225
+ tool). Call the `ase_state_set(key: "skill", val:
226
+ "ase-code-lint", session: "<ase-session-id/>")` tool
176
227
  from the `ase` MCP server. Do not output anything in this substep.
177
228
 
178
229
  *Critical safety invariant*: the marker set here grants `Edit`
@@ -478,8 +529,8 @@ related to a set of code quality aspects.
478
529
 
479
530
  3. *Clear the active edit-capable skill marker* now that all `Edit`
480
531
  invocations are done, so a later unrelated `Edit` is *not*
481
- auto-approved. Call the `ase_config_delete(key: "agent.skill",
482
- scope: "session:<ase-session-id/>")` tool from the `ase` MCP
532
+ auto-approved. Call the `ase_state_delete(key: "skill",
533
+ session: "<ase-session-id/>")` tool from the `ase` MCP
483
534
  server. Do not output anything in this substep.
484
535
 
485
536
  4. You *MUST* *NOT* output any further additional explanations or
@@ -496,13 +547,13 @@ related to a set of code quality aspects.
496
547
 
497
548
  <if condition="at least one problem in <problems/> was left uncorrected">
498
549
  <ase-tpl-hint level="normal">
499
- For problems whose correction demands more than a local edit, use `/ase-code-resolve` to derive and apply a full solution approach.
550
+ For problems whose correction demands more than a local edit, use `/ase-task-edit` to derive a full solution approach and plan, or `/ase-code-edit -a` to derive and apply it directly.
500
551
  </ase-tpl-hint>
501
552
  </if>
502
553
 
503
554
  <if condition="<getopt-option-auto/> is not equal `true`">
504
555
  <ase-tpl-hint level="verbose">
505
- Use `/ase-code-lint --auto` to apply all corrections unattended, `--severity` to raise the reporting floor, and `--include`/`--exclude` to narrow the checked aspects.
556
+ 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.
506
557
  </ase-tpl-hint>
507
558
  </if>
508
559
 
@@ -11,7 +11,9 @@
11
11
  [`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
12
12
  [`--include`|`-i`=*aspect*[`,`...]]
13
13
  [`--exclude`|`-e`=*aspect*[`,`...]]
14
- *source-reference*
14
+ [`--staged`]
15
+ [`--unstaged`]
16
+ [*source-reference*]
15
17
 
16
18
  ## DESCRIPTION
17
19
 
@@ -76,10 +78,25 @@ the code, and comments contradicting the code.
76
78
  code quality aspects. Applied *after* `--include`, so
77
79
  `-i A01,A02 -e A02` checks `A01` only.
78
80
 
81
+ - `--staged`:
82
+ Restrict the linting to the source files with *staged* Git changes.
83
+ Deleted files are skipped, and the files are linted in their current
84
+ working copy state. Combined with `--unstaged`, lint the source
85
+ files with *any* uncommitted Git changes.
86
+
87
+ - `--unstaged`:
88
+ Restrict the linting to the source files with *unstaged* Git changes
89
+ plus the *untracked* source files. Deleted files are skipped.
90
+ Combined with `--staged`, lint the source files with *any*
91
+ uncommitted Git changes.
92
+
79
93
  ## ARGUMENTS
80
94
 
81
95
  - *source-reference*:
82
96
  A file, directory, or other reference to the source code to lint.
97
+ Optional only under `--staged` or `--unstaged`: with it, only the
98
+ changed files within it are linted; without it, all changed files
99
+ of the repository are linted.
83
100
 
84
101
  ## SCENARIOS
85
102
 
@@ -88,6 +105,7 @@ the code, and comments contradicting the code.
88
105
  - You want all quality corrections applied automatically
89
106
  - You want only specific quality aspects like formatting or spelling checked
90
107
  - You want missing or excessive code documentation flagged
108
+ - You want only your staged or unstaged changes linted before committing
91
109
 
92
110
  ## EXAMPLES
93
111
 
@@ -127,7 +145,19 @@ Lint a directory for the documentation aspect only:
127
145
  ❯ /ase-code-lint -i A21 src/handlers/
128
146
  ```
129
147
 
148
+ Lint only the source files with staged Git changes:
149
+
150
+ ```text
151
+ ❯ /ase-code-lint --staged
152
+ ```
153
+
154
+ Lint only the unstaged and untracked source files and apply all corrections:
155
+
156
+ ```text
157
+ ❯ /ase-code-lint --auto --unstaged
158
+ ```
159
+
130
160
  ## SEE ALSO
131
161
 
132
- [`ase-code-analyze`](../ase-code-analyze/help.md), [`ase-code-resolve`](../ase-code-resolve/help.md), [`ase-code-refactor`](../ase-code-refactor/help.md),
162
+ [`ase-code-analyze`](../ase-code-analyze/help.md), [`ase-code-edit`](../ase-code-edit/help.md), [`ase-task-edit`](../ase-task-edit/help.md),
133
163
  [`ase-docs-proofread`](../ase-docs-proofread/help.md).
@@ -125,8 +125,8 @@ Analyze documents for spelling, capitalization, punctuation, word break, or gram
125
125
  1. *Mark this skill as the active edit-capable skill* so that the
126
126
  ASE `pre-tool-use` hook auto-approves the subsequent `Edit`
127
127
  invocations on *any* invocation path (slash command *or* `Skill`
128
- tool). Call the `ase_config_set(key: "agent.skill", val:
129
- "ase-docs-proofread", scope: "session:<ase-session-id/>")` tool
128
+ tool). Call the `ase_state_set(key: "skill", val:
129
+ "ase-docs-proofread", session: "<ase-session-id/>")` tool
130
130
  from the `ase` MCP server. Do not output anything in this substep.
131
131
 
132
132
  *Critical safety invariant*: the marker set here grants `Edit`
@@ -339,8 +339,8 @@ Analyze documents for spelling, capitalization, punctuation, word break, or gram
339
339
 
340
340
  3. *Clear the active edit-capable skill marker* now that all `Edit`
341
341
  invocations are done, so a later unrelated `Edit` is *not*
342
- auto-approved. Call the `ase_config_delete(key: "agent.skill",
343
- scope: "session:<ase-session-id/>")` tool from the `ase` MCP
342
+ auto-approved. Call the `ase_state_delete(key: "skill",
343
+ session: "<ase-session-id/>")` tool from the `ase` MCP
344
344
  server. Do not output anything in this substep.
345
345
 
346
346
  4. You *MUST* *NOT* output any further additional explanations or
@@ -69,4 +69,4 @@ Proofread an entire documentation directory automatically:
69
69
 
70
70
  ## SEE ALSO
71
71
 
72
- [`ase-docs-shorten`](../ase-docs-shorten/help.md), [`ase-docs-refine`](../ase-docs-refine/help.md), [`ase-docs-distill`](../ase-docs-distill/help.md), [`ase-code-lint`](../ase-code-lint/help.md), [`ase-meta-changelog`](../ase-meta-changelog/help.md).
72
+ [`ase-docs-shorten`](../ase-docs-shorten/help.md), [`ase-docs-refine`](../ase-docs-refine/help.md), [`ase-docs-distill`](../ase-docs-distill/help.md), [`ase-code-lint`](../ase-code-lint/help.md), [`ase-repo-changelog`](../ase-repo-changelog/help.md).
@@ -148,8 +148,8 @@ reduction*, not refinement, and belongs to the `ase-docs-shorten` skill.
148
148
  1. *Mark this skill as the active edit-capable skill* so that the
149
149
  ASE `pre-tool-use` hook auto-approves the subsequent `Edit`
150
150
  invocations on *any* invocation path (slash command *or* `Skill`
151
- tool). Call the `ase_config_set(key: "agent.skill", val:
152
- "ase-docs-refine", scope: "session:<ase-session-id/>")` tool
151
+ tool). Call the `ase_state_set(key: "skill", val:
152
+ "ase-docs-refine", session: "<ase-session-id/>")` tool
153
153
  from the `ase` MCP server. Do not output anything in this substep.
154
154
 
155
155
  *Critical safety invariant*: the marker set here grants `Edit`
@@ -369,8 +369,8 @@ reduction*, not refinement, and belongs to the `ase-docs-shorten` skill.
369
369
 
370
370
  3. *Clear the active edit-capable skill marker* now that all `Edit`
371
371
  invocations are done, so a later unrelated `Edit` is *not*
372
- auto-approved. Call the `ase_config_delete(key: "agent.skill",
373
- scope: "session:<ase-session-id/>")` tool from the `ase` MCP
372
+ auto-approved. Call the `ase_state_delete(key: "skill",
373
+ session: "<ase-session-id/>")` tool from the `ase` MCP
374
374
  server. Do not output anything in this substep.
375
375
 
376
376
  4. You *MUST* *NOT* output any further additional explanations or
@@ -215,8 +215,8 @@ than the user asked for.
215
215
  1. *Mark this skill as the active edit-capable skill* so that the
216
216
  ASE `pre-tool-use` hook auto-approves the subsequent `Edit`
217
217
  invocations on *any* invocation path (slash command *or* `Skill`
218
- tool). Call the `ase_config_set(key: "agent.skill", val:
219
- "ase-docs-shorten", scope: "session:<ase-session-id/>")` tool
218
+ tool). Call the `ase_state_set(key: "skill", val:
219
+ "ase-docs-shorten", session: "<ase-session-id/>")` tool
220
220
  from the `ase` MCP server. Do not output anything in this substep.
221
221
 
222
222
  *Critical safety invariant*: the marker set here grants `Edit`
@@ -454,8 +454,8 @@ than the user asked for.
454
454
 
455
455
  3. *Clear the active edit-capable skill marker* now that all `Edit`
456
456
  invocations are done, so a later unrelated `Edit` is *not*
457
- auto-approved. Call the `ase_config_delete(key: "agent.skill",
458
- scope: "session:<ase-session-id/>")` tool from the `ase` MCP
457
+ auto-approved. Call the `ase_state_delete(key: "skill",
458
+ session: "<ase-session-id/>")` tool from the `ase` MCP
459
459
  server. Do not output anything in this substep.
460
460
 
461
461
  </step>