@rse/ase 2.0.2 → 2.0.4

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 (236) hide show
  1. package/dst/ase-agent-definition-core.js +111 -87
  2. package/dst/ase-agent-fleet.js +1 -1
  3. package/dst/ase-agent-runtime-claim.js +5 -3
  4. package/dst/ase-agent-runtime-engine.js +1 -1
  5. package/dst/ase-agent-runtime-phase.js +1 -1
  6. package/dst/ase-agent-runtime-request.js +1 -1
  7. package/dst/ase-agent-runtime.js +3 -5
  8. package/dst/ase-artifact.js +3 -3
  9. package/dst/ase-config-core.js +2 -16
  10. package/dst/ase-config-schema.js +1 -3
  11. package/dst/ase-config.js +2 -0
  12. package/dst/ase-hook.js +13 -13
  13. package/dst/ase-lib-daemon-cli.js +117 -4
  14. package/dst/ase-lib-server-cli.js +4 -5
  15. package/dst/ase-lib-version.js +14 -5
  16. package/dst/ase-man-catalog.js +229 -0
  17. package/dst/ase-man-render.js +278 -0
  18. package/dst/ase-man-tui.js +636 -0
  19. package/dst/ase-man.js +33 -27
  20. package/dst/ase-mcp.js +4 -4
  21. package/dst/ase-service-getopt.js +2 -2
  22. package/dst/ase-service-otel.js +4 -4
  23. package/dst/ase-service-skills.js +5 -15
  24. package/dst/ase-service.js +87 -210
  25. package/dst/ase-setup-common.js +1 -2
  26. package/dst/ase-setup-settings.js +6 -9
  27. package/dst/ase-setup.js +4 -5
  28. package/dst/ase-spec.js +103 -20
  29. package/dst/ase-statusline.js +170 -170
  30. package/dst/ase-task-board-filter.js +5 -4
  31. package/dst/ase-task-board-flow.js +7 -6
  32. package/dst/ase-task-board-graph.js +5 -4
  33. package/dst/ase-task-board-tui-control.js +41 -35
  34. package/dst/ase-task-board-tui-model.js +185 -167
  35. package/dst/ase-task-board-tui-popup.js +2 -3
  36. package/dst/ase-task-board-tui-view.js +74 -70
  37. package/dst/ase-task-board-web-client.js +27 -27
  38. package/dst/ase-task-board-web-server.js +2 -2
  39. package/dst/ase-task-board.js +1 -1
  40. package/dst/ase-task-format.js +1 -1
  41. package/dst/ase-task-store-client.js +17 -5
  42. package/dst/ase-task-store-core.js +5 -7
  43. package/dst/ase-task-store-issues.js +16 -1
  44. package/dst/ase-task-store-plugin-ase.js +7 -3
  45. package/dst/ase-task-store-plugin-gitea.js +9 -32
  46. package/dst/ase-task-store-plugin-github.js +3 -12
  47. package/dst/ase-task-store-plugin-gitlab.js +2 -18
  48. package/dst/ase-task.js +51 -23
  49. package/dst/ase-util-compat.js +1 -1
  50. package/dst/ase-util-diagram.js +13 -37
  51. package/dst/ase.js +5 -5
  52. package/dst/man/ase-agent-adhoc.md +1165 -0
  53. package/dst/man/ase-agent-condenser.md +383 -0
  54. package/dst/man/ase-agent-editor.md +441 -0
  55. package/dst/man/ase-agent-estimator.md +477 -0
  56. package/dst/man/ase-agent-fleet.md +358 -0
  57. package/dst/man/ase-agent-implementer.md +521 -0
  58. package/dst/man/ase-agent-integrator.md +449 -0
  59. package/dst/man/ase-agent-qualifier.md +426 -0
  60. package/dst/man/ase-agent-rebooter.md +384 -0
  61. package/dst/man/ase-agent-relay.md +262 -0
  62. package/dst/man/ase-agent-researcher.md +478 -0
  63. package/dst/man/ase-agent.md +628 -0
  64. package/dst/man/ase-artifact-list.md +57 -0
  65. package/dst/man/ase-artifact-name.md +56 -0
  66. package/dst/man/ase-artifact.md +92 -0
  67. package/dst/man/ase-config-delete.md +74 -0
  68. package/dst/man/ase-config-edit.md +83 -0
  69. package/dst/man/ase-config-get.md +70 -0
  70. package/dst/man/ase-config-init.md +110 -0
  71. package/dst/man/ase-config-list.md +68 -0
  72. package/dst/man/ase-config-set.md +92 -0
  73. package/dst/man/ase-config.md +426 -0
  74. package/dst/man/ase-hook-permission-request.md +61 -0
  75. package/dst/man/ase-hook-pre-tool-use.md +96 -0
  76. package/dst/man/ase-hook-session-end.md +71 -0
  77. package/dst/man/ase-hook-session-persona.md +65 -0
  78. package/dst/man/ase-hook-session-start.md +184 -0
  79. package/dst/man/ase-hook-stop.md +52 -0
  80. package/dst/man/ase-hook-user-prompt-submit.md +54 -0
  81. package/dst/man/ase-hook.md +93 -0
  82. package/dst/man/ase-man.md +195 -0
  83. package/dst/man/ase-mcp.md +102 -0
  84. package/dst/man/ase-service-log.md +59 -0
  85. package/dst/man/ase-service-send.md +60 -0
  86. package/dst/man/ase-service-start.md +93 -0
  87. package/dst/man/ase-service-status.md +58 -0
  88. package/dst/man/ase-service-stop.md +52 -0
  89. package/dst/man/ase-service.md +124 -0
  90. package/dst/man/ase-setup-disable.md +67 -0
  91. package/dst/man/ase-setup-enable.md +66 -0
  92. package/dst/man/ase-setup-install.md +116 -0
  93. package/dst/man/ase-setup-mcp.md +213 -0
  94. package/dst/man/ase-setup-status.md +101 -0
  95. package/dst/man/ase-setup-statusline.md +162 -0
  96. package/dst/man/ase-setup-telemetry.md +166 -0
  97. package/dst/man/ase-setup-uninstall.md +85 -0
  98. package/dst/man/ase-setup-update.md +117 -0
  99. package/dst/man/ase-setup.md +156 -0
  100. package/dst/man/ase-spec-export.md +99 -0
  101. package/dst/man/ase-spec-init.md +57 -0
  102. package/dst/man/ase-spec-lint.md +74 -0
  103. package/dst/man/ase-spec-preview.md +57 -0
  104. package/dst/man/ase-spec.md +85 -0
  105. package/dst/man/ase-statusline.md +330 -0
  106. package/dst/man/ase-task-assign.md +138 -0
  107. package/dst/man/ase-task-board.md +651 -0
  108. package/dst/man/ase-task-delete.md +46 -0
  109. package/dst/man/ase-task-edit.md +73 -0
  110. package/dst/man/ase-task-idscheme.md +92 -0
  111. package/dst/man/ase-task-lifecycle.md +92 -0
  112. package/dst/man/ase-task-list.md +86 -0
  113. package/dst/man/ase-task-load.md +48 -0
  114. package/dst/man/ase-task-newid.md +100 -0
  115. package/dst/man/ase-task-purge.md +49 -0
  116. package/dst/man/ase-task-rename.md +69 -0
  117. package/dst/man/ase-task-request.md +108 -0
  118. package/dst/man/ase-task-save.md +78 -0
  119. package/dst/man/ase-task-status.md +79 -0
  120. package/dst/man/ase-task-store.md +377 -0
  121. package/dst/man/ase-task-view.md +50 -0
  122. package/dst/man/ase-task.md +335 -0
  123. package/dst/man/ase-util-compat.md +38 -0
  124. package/dst/man/ase-util-diagram.md +140 -0
  125. package/dst/man/ase-util-meta.md +68 -0
  126. package/dst/man/ase-util-metric.md +74 -0
  127. package/dst/man/ase-util-mint.md +85 -0
  128. package/dst/man/ase-util-worktree.md +109 -0
  129. package/dst/man/ase-util.md +81 -0
  130. package/dst/man/ase.md +228 -0
  131. package/package.json +12 -17
  132. package/plugin/.claude-plugin/plugin.json +1 -1
  133. package/plugin/.codex-plugin/plugin.json +1 -1
  134. package/plugin/.github/plugin/plugin.json +1 -1
  135. package/plugin/agents/ase-code-lint.md +3 -3
  136. package/plugin/agents/ase-docs-proofread.md +3 -3
  137. package/plugin/agents/ase-docs-refine.md +3 -3
  138. package/plugin/agents/ase-spec-lint.md +338 -0
  139. package/plugin/meta/ase-skill.md +7 -0
  140. package/plugin/mods/ase-mods.ts +10 -7
  141. package/plugin/mods/claude-code.d.ts +26 -3
  142. package/plugin/skills/ase-code-analyze/SKILL.md +18 -10
  143. package/plugin/skills/ase-code-analyze/help.md +11 -6
  144. package/plugin/skills/ase-code-lint/SKILL.md +37 -23
  145. package/plugin/skills/ase-code-lint/help.md +10 -5
  146. package/plugin/skills/ase-help-intent/data.md +204 -13
  147. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  148. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  149. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  150. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  151. package/plugin/skills/ase-repo-review/SKILL.md +5 -3
  152. package/plugin/skills/ase-repo-review/help.md +3 -1
  153. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  154. package/plugin/skills/ase-spec-edit/help.md +1 -1
  155. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  156. package/plugin/skills/ase-spec-lint/help.md +171 -0
  157. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  158. package/plugin/skills/ase-task-implement/help.md +11 -1
  159. package/dst/man/ase-agent-adhoc.1 +0 -515
  160. package/dst/man/ase-agent-condenser.1 +0 -193
  161. package/dst/man/ase-agent-editor.1 +0 -212
  162. package/dst/man/ase-agent-estimator.1 +0 -214
  163. package/dst/man/ase-agent-fleet.1 +0 -185
  164. package/dst/man/ase-agent-implementer.1 +0 -233
  165. package/dst/man/ase-agent-integrator.1 +0 -213
  166. package/dst/man/ase-agent-qualifier.1 +0 -214
  167. package/dst/man/ase-agent-rebooter.1 +0 -193
  168. package/dst/man/ase-agent-relay.1 +0 -128
  169. package/dst/man/ase-agent-researcher.1 +0 -217
  170. package/dst/man/ase-agent.1 +0 -264
  171. package/dst/man/ase-artifact-list.1 +0 -38
  172. package/dst/man/ase-artifact-name.1 +0 -39
  173. package/dst/man/ase-artifact.1 +0 -56
  174. package/dst/man/ase-config-delete.1 +0 -45
  175. package/dst/man/ase-config-edit.1 +0 -48
  176. package/dst/man/ase-config-get.1 +0 -46
  177. package/dst/man/ase-config-init.1 +0 -60
  178. package/dst/man/ase-config-list.1 +0 -42
  179. package/dst/man/ase-config-set.1 +0 -52
  180. package/dst/man/ase-config.1 +0 -231
  181. package/dst/man/ase-hook-permission-request.1 +0 -36
  182. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  183. package/dst/man/ase-hook-session-end.1 +0 -47
  184. package/dst/man/ase-hook-session-persona.1 +0 -37
  185. package/dst/man/ase-hook-session-start.1 +0 -81
  186. package/dst/man/ase-hook-stop.1 +0 -34
  187. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  188. package/dst/man/ase-hook.1 +0 -51
  189. package/dst/man/ase-man.1 +0 -67
  190. package/dst/man/ase-mcp.1 +0 -61
  191. package/dst/man/ase-service-log.1 +0 -43
  192. package/dst/man/ase-service-send.1 +0 -47
  193. package/dst/man/ase-service-start.1 +0 -54
  194. package/dst/man/ase-service-status.1 +0 -46
  195. package/dst/man/ase-service-stop.1 +0 -37
  196. package/dst/man/ase-service.1 +0 -85
  197. package/dst/man/ase-setup-disable.1 +0 -44
  198. package/dst/man/ase-setup-enable.1 +0 -45
  199. package/dst/man/ase-setup-install.1 +0 -73
  200. package/dst/man/ase-setup-mcp.1 +0 -124
  201. package/dst/man/ase-setup-status.1 +0 -60
  202. package/dst/man/ase-setup-statusline.1 +0 -92
  203. package/dst/man/ase-setup-telemetry.1 +0 -92
  204. package/dst/man/ase-setup-uninstall.1 +0 -59
  205. package/dst/man/ase-setup-update.1 +0 -64
  206. package/dst/man/ase-setup.1 +0 -93
  207. package/dst/man/ase-spec-export.1 +0 -62
  208. package/dst/man/ase-spec-lint.1 +0 -40
  209. package/dst/man/ase-spec-preview.1 +0 -40
  210. package/dst/man/ase-spec.1 +0 -46
  211. package/dst/man/ase-statusline.1 +0 -189
  212. package/dst/man/ase-task-assign.1 +0 -71
  213. package/dst/man/ase-task-board.1 +0 -384
  214. package/dst/man/ase-task-delete.1 +0 -35
  215. package/dst/man/ase-task-edit.1 +0 -46
  216. package/dst/man/ase-task-idscheme.1 +0 -65
  217. package/dst/man/ase-task-lifecycle.1 +0 -57
  218. package/dst/man/ase-task-list.1 +0 -47
  219. package/dst/man/ase-task-load.1 +0 -36
  220. package/dst/man/ase-task-newid.1 +0 -61
  221. package/dst/man/ase-task-purge.1 +0 -37
  222. package/dst/man/ase-task-rename.1 +0 -44
  223. package/dst/man/ase-task-request.1 +0 -61
  224. package/dst/man/ase-task-save.1 +0 -48
  225. package/dst/man/ase-task-status.1 +0 -55
  226. package/dst/man/ase-task-store.1 +0 -194
  227. package/dst/man/ase-task-view.1 +0 -40
  228. package/dst/man/ase-task.1 +0 -160
  229. package/dst/man/ase-util-compat.1 +0 -25
  230. package/dst/man/ase-util-diagram.1 +0 -76
  231. package/dst/man/ase-util-meta.1 +0 -45
  232. package/dst/man/ase-util-metric.1 +0 -54
  233. package/dst/man/ase-util-mint.1 +0 -59
  234. package/dst/man/ase-util-worktree.1 +0 -72
  235. package/dst/man/ase-util.1 +0 -50
  236. package/dst/man/ase.1 +0 -124
@@ -0,0 +1,171 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-spec-lint` - Lint Specification
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-spec-lint`
9
+ [`--help`|`-h`]
10
+ [`--auto`|`-a`]
11
+ [`--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`)]
12
+ [`--include`|`-i`=*aspect*[`,`...]]
13
+ [`--exclude`|`-e`=*aspect*[`,`...]]
14
+ [`--staged`]
15
+ [`--unstaged`]
16
+ [*spec-reference*]
17
+
18
+ ## DESCRIPTION
19
+
20
+ The `ase-spec-lint` skill lints the *SpecBook*-based specification
21
+ (SPEC) for *potential quality problems* related to a fixed set of
22
+ specification quality aspects: from its syntax and formatting, over
23
+ its individual statements, up to the logical gaps of its model and its
24
+ completeness for an implementation. The investigation is dispatched to
25
+ sub-agents (`ase:ase-spec-lint`) so that scanning details do not leak
26
+ into the user-visible transcript.
27
+
28
+ For each detected problem, the skill renders a unified-diff *SOLUTION*
29
+ preview and either asks the user to `ACCEPT` or `REJECT` the proposed
30
+ correction interactively (or refine it via a free-text hint, which
31
+ re-proposes the correction without limit) or - with `--auto` - applies
32
+ all corrections automatically. Every applied correction refreshes the
33
+ `Modified:` timestamp of the changed specification files.
34
+
35
+ By default all ten specification quality aspects are checked. The
36
+ `--include` and `--exclude` options narrow this to an *effective aspect
37
+ set*: with `--include` only, exactly the listed aspects are checked;
38
+ with `--exclude` only, all aspects except the listed ones; with both,
39
+ the included ones minus the excluded ones. An unknown aspect id, or a
40
+ combination which cancels out to an empty set, aborts the skill with an
41
+ error. The ten aspect ids are:
42
+
43
+ ```text
44
+ S01 SYNTAX S04 AMBIGUITY S07 REDUNDANCY S10 COMPLETENESS
45
+ S02 FORMAT S05 ATOMICITY S08 CONSISTENCY
46
+ S03 RATIONALE S06 REALIZATION S09 LOGIC
47
+ ```
48
+
49
+ The `S01 SYNTAX` aspect reports the diagnostics of the specification
50
+ linting against the *SpecBook* schema configuration of the project and
51
+ of the generic Markdown linting via *markdownlint* (both as with `ase
52
+ spec lint --markdown`), mapping the severity `error` onto `HIGH` and
53
+ `warning` onto `MEDIUM`. The `S02 FORMAT` aspect checks the formatting
54
+ against the *SpecBook* format variants and the prevailing conventions
55
+ of the specification itself. The aspects `S03 RATIONALE` up to `S07
56
+ REDUNDANCY` check the statements against the *Specifying Tenets* of
57
+ *ASE*: a `, BECAUSE` rationale per statement, unambiguous and
58
+ verifiable statements, atomic statements, intent instead of
59
+ realization, and a single source of truth per fact.
60
+
61
+ The *model-wide* aspects `S07 REDUNDANCY` up to `S10 COMPLETENESS` are
62
+ judged on the *entire* specification, even if only parts of it are
63
+ linted: `S08 CONSISTENCY` checks for contradictions and drifting
64
+ terminology, `S09 LOGIC` for logical gaps in the specification model
65
+ (like unreachable states or entities without any relationship), and
66
+ `S10 COMPLETENESS` for open ends which would force an implementer to
67
+ guess. As the corrections of `S09 LOGIC` and `S10 COMPLETENESS` fill
68
+ gaps with *best-guess* content, they are proposed for review only and
69
+ are *never* applied under `--auto`.
70
+
71
+ ## OPTIONS
72
+
73
+ - `--auto`|`-a`:
74
+ Automatically apply every proposed correction without asking the
75
+ user via the interactive dialog, except for the best-guess
76
+ corrections of the aspects `S09 LOGIC` and `S10 COMPLETENESS`,
77
+ which are only reported.
78
+
79
+ - `--severity`|`-S`=(`AUTO`|`LOW`|`MEDIUM`|`HIGH`):
80
+ Set the *severity floor* (default `AUTO`): findings below the chosen
81
+ threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
82
+ `HIGH`. The default `AUTO` means `MEDIUM` for a project with `grey`
83
+ boxing, no linting at all for a project with `black` boxing, and
84
+ `LOW` (keep all findings) otherwise; an explicitly given floor always
85
+ wins over the boxing, i.e. it also lints a project with `black`
86
+ boxing and, e.g. with `LOW`, acts on all findings of a project with
87
+ `grey` boxing. `ACCEPTED` findings are never suppressed. Surviving
88
+ findings are reported in *descending severity* order `HIGH`,
89
+ `MEDIUM`, `LOW`, `ACCEPTED`, keeping the `file`/`line` order within
90
+ the same severity.
91
+
92
+ - `--include`|`-i`=*aspect*[`,`...]:
93
+ Restrict the checked specification quality aspects to the given
94
+ comma-separated list of aspect ids (e.g. `S01,S02`). Without this
95
+ option, all ten aspects are checked.
96
+
97
+ - `--exclude`|`-e`=*aspect*[`,`...]:
98
+ Remove the given comma-separated list of aspect ids from the checked
99
+ specification quality aspects. Applied *after* `--include`, so
100
+ `-i S09,S10 -e S10` checks `S09` only.
101
+
102
+ - `--staged`:
103
+ Restrict the linting to the specification files with *staged* Git
104
+ changes. Deleted files are skipped, and the files are linted in
105
+ their current working copy state. Combined with `--unstaged`, lint
106
+ the specification files with *any* uncommitted Git changes.
107
+
108
+ - `--unstaged`:
109
+ Restrict the linting to the specification files with *unstaged* Git
110
+ changes plus the *untracked* specification files. Deleted files are
111
+ skipped. Combined with `--staged`, lint the specification files with
112
+ *any* uncommitted Git changes.
113
+
114
+ ## ARGUMENTS
115
+
116
+ - *spec-reference*:
117
+ A file, directory, or wildcard reference to the specification files
118
+ to lint. Without it, the *entire* specification is linted, resp.
119
+ under `--staged` or `--unstaged` all changed specification files.
120
+
121
+ ## SCENARIOS
122
+
123
+ - You want your specification checked for specification quality problems
124
+ - You want to know whether your specification is sufficient for an implementation
125
+ - You want logical gaps in your specification model detected
126
+ - You want corrections proposed which you accept or reject one by one
127
+ - You want all mechanical corrections applied automatically
128
+ - You want only your staged or unstaged specification changes linted before committing
129
+
130
+ ## EXAMPLES
131
+
132
+ Lint the entire specification interactively:
133
+
134
+ ```text
135
+ ❯ /ase-spec-lint
136
+ ```
137
+
138
+ Lint a single specification file and automatically apply all corrections:
139
+
140
+ ```text
141
+ ❯ /ase-spec-lint --auto docs/spec/data-model.md
142
+ ```
143
+
144
+ Lint the specification for its syntax and formatting only:
145
+
146
+ ```text
147
+ ❯ /ase-spec-lint -i S01,S02
148
+ ```
149
+
150
+ Check the specification model for logical gaps and completeness only:
151
+
152
+ ```text
153
+ ❯ /ase-spec-lint -i S09,S10
154
+ ```
155
+
156
+ Lint the specification, reporting only `MEDIUM` and `HIGH` findings:
157
+
158
+ ```text
159
+ ❯ /ase-spec-lint -S MEDIUM
160
+ ```
161
+
162
+ Lint only the specification files with staged Git changes:
163
+
164
+ ```text
165
+ ❯ /ase-spec-lint --staged
166
+ ```
167
+
168
+ ## SEE ALSO
169
+
170
+ [`ase-spec-edit`](../ase-spec-edit/help.md), [`ase-spec-activate`](../ase-spec-activate/help.md),
171
+ [`ase-code-lint`](../ase-code-lint/help.md), [`ase-sync-export`](../ase-sync-export/help.md).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-task-implement
3
- argument-hint: "[--help|-h] [--next|-n <option>[,...]] [--worktree|-w <name>] [--source|-s <source>] [--changeset|-c <changeset>] [--draft|-d] [--stateless|-S] [<id>]"
3
+ argument-hint: "[--help|-h] [--next|-n <option>[,...]] [--worktree|-w <name>] [--source|-s <source>] [--changeset|-c <changeset>] [--draft|-d] [--no-cleanup|-K] [--stateless|-S] [<id>]"
4
4
  description: >
5
5
  Implement current or given task plan, optionally as an implementation
6
6
  draft attachment only. Use when the user calls to "implement", "realize",
@@ -22,7 +22,7 @@ Implement a Task Plan
22
22
 
23
23
  <expand name="getopt"
24
24
  arg1="ase-task-implement"
25
- arg2="--next|-n=(none|DONE|EDIT|INTEGRATE|DELETE)... --worktree|-w= --source|-s= --changeset|-c= --draft|-d --stateless|-S --int-reuse-task">
25
+ arg2="--next|-n=(none|DONE|EDIT|INTEGRATE|DELETE)... --worktree|-w= --source|-s= --changeset|-c= --draft|-d --no-cleanup|-K --stateless|-S --int-reuse-task">
26
26
  $ARGUMENTS
27
27
  </expand>
28
28
 
@@ -233,8 +233,10 @@ Procedure
233
233
  `git worktree list --porcelain` (taken exactly as given).
234
234
 
235
235
  - If the branch <changeset-name/> is checked out in a
236
- registered worktree, set <work-dir/> to its directory and
237
- <work-label/> to its path. If the command
236
+ registered worktree, set <work-dir/> to its directory,
237
+ <work-label/> to its path, and
238
+ <work-created>false</work-created>, as this *pre-existing*
239
+ worktree is never removed by this skill. If the command
238
240
  `git -C "<work-dir/>" status --porcelain` reports any
239
241
  output, the change set could not be committed separately,
240
242
  so only output the following <template/> and then
@@ -271,7 +273,8 @@ Procedure
271
273
  (each taken exactly as given). If the command fails, only
272
274
  output the same error <template/> as above and then
273
275
  immediately *STOP* processing the entire current skill.
274
- Otherwise, only output the following <template/>:
276
+ Otherwise, set <work-created>true</work-created> and only
277
+ output the following <template/>:
275
278
 
276
279
  <template>
277
280
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ◉ worktree: **<work-label/>**, ⎇ branch: **<changeset-name/>**, ▶ status: **worktree created**
@@ -486,8 +489,18 @@ Procedure
486
489
  double-quote (`"`), backtick (`` ` ``), dollar (`$`), or
487
490
  backslash (`\`) characters, and commit the change set by
488
491
  running the command
489
- `git -C "<work-dir/>" commit -m "<message/>"`. If the commit
492
+ `git -C "<work-dir/>" commit -m "<message/>"`. Never add
493
+ `Co-Authored-By` trailers to commit messages. If the commit
490
494
  fails, treat the change set as *not* applied successfully.
495
+ Set <work-removed>false</work-removed>. If
496
+ <getopt-option-no-cleanup/> is not equal `true`,
497
+ <work-created/> is `true`, and the commit (if any) succeeded,
498
+ the change set lives on the branch alone, so remove the
499
+ worktree created by this run by running the commands
500
+ `git worktree remove "<work-dir/>"` and `git worktree prune`
501
+ (taken exactly as given, *never* with `--force`, so a
502
+ worktree with uncommitted changes is kept), and set
503
+ <work-removed>true</work-removed> if the removal succeeded.
491
504
  Do not output anything.
492
505
 
493
506
  - `attachment`: Capture the *cumulative* change set into
@@ -660,6 +673,11 @@ Procedure
660
673
  The change set is uncommitted in `<context-label/>` -- review it there, then use `/ase-task-integrate` to deliver it.
661
674
  </ase-tpl-hint>
662
675
  </if>
676
+ <elseif condition="<changeset-type/> is `branch` and <work-removed/> is `true`">
677
+ <ase-tpl-hint level="minimal">
678
+ The change set is committed on branch `<changeset-name/>` -- review it via `git diff <source-commit/>...<changeset-name/>`, then use `/ase-task-integrate` to deliver it.
679
+ </ase-tpl-hint>
680
+ </elseif>
663
681
  <elseif condition="<changeset-type/> is `branch`">
664
682
  <ase-tpl-hint level="minimal">
665
683
  The change set is committed on branch `<changeset-name/>` in `<work-label/>` -- review it there, then use `/ase-task-integrate` to deliver it.
@@ -12,6 +12,7 @@
12
12
  [`--source`|`-s` *source*]
13
13
  [`--changeset`|`-c` *changeset*]
14
14
  [`--draft`|`-d`]
15
+ [`--no-cleanup`|`-K`]
15
16
  [`--stateless`|`-S`]
16
17
  [*id*]
17
18
 
@@ -54,7 +55,9 @@ overridable via `--changeset`:
54
55
  - `branch:`*name*: the change set is *committed* onto the branch
55
56
  *name* -- created from the source if missing -- inside the worktree
56
57
  in which this branch is checked out, or inside a newly created
57
- worktree `.ase/worktree/<name>`.
58
+ worktree `.ase/worktree/<name>`, which is removed again after the
59
+ commit (unless `--no-cleanup` is given), while an already existing
60
+ worktree is always kept.
58
61
  - `attachment:`*name*: the change set is made and verified in a
59
62
  *temporary* worktree, detached at the source commit, and stored as
60
63
  the attachment block of type `text/x-diff; charset=utf-8;
@@ -161,6 +164,13 @@ plan, unless `--next` pre-selects this choice.
161
164
  *implementation draft* of the plan only, leaving all artifacts
162
165
  untouched (a dry-run). Mutually exclusive with `--changeset`.
163
166
 
167
+ - `--no-cleanup`|`-K`:
168
+ For a `branch:` changeset, keep the worktree `.ase/worktree/<name>`
169
+ newly created by this run, instead of removing it after the commit,
170
+ so the change set can be reviewed, built, and tested there. Without
171
+ this option, the worktree is removed only if it has no uncommitted
172
+ changes, as the change set lives on the branch alone.
173
+
164
174
  - `--stateless`|`-S`:
165
175
  Leave the plan's `Status:` key untouched.
166
176