@rse/ase 1.0.7 → 2.0.1

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 +357 -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} +8 -1
  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 +269 -81
  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 +231 -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 +81 -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
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: ase-task-status
3
+ argument-hint: "[--help|-h] [<id>:] [<status>]"
4
+ description: >
5
+ Get or set the lifecycle status of the current or given task plan.
6
+ Use when the user wants to know or change the "status" or "state"
7
+ of the "task" or "plan", e.g. to "close", "shelve", "cancel", or
8
+ "re-open" it.
9
+ user-invocable: true
10
+ disable-model-invocation: false
11
+ effort: high
12
+ ---
13
+
14
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
16
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
17
+
18
+ <purpose name="ase-task-status">
19
+ Configure Task Status
20
+ </purpose>
21
+
22
+ <expand name="getopt" arg1="ase-task-status">
23
+ $ARGUMENTS
24
+ </expand>
25
+
26
+ <objective>
27
+ *Get* or *set* the lifecycle *status* of the task plan.
28
+ </objective>
29
+
30
+ Procedure
31
+ ---------
32
+
33
+ 1. **Determine Task and Status:**
34
+
35
+ 1. Parse <arguments><getopt-arguments/></arguments> (with any
36
+ leading and trailing whitespace stripped) into a
37
+ whitespace-separated list of tokens. Inherit the always
38
+ existing <ase-task-id/> from the current context. Set
39
+ <id><ase-task-id/></id> and <status></status> (empty). Set
40
+ <states/> to the states of the task lifecycle model
41
+ <ase-project-task-lifecycle/> of the current project:
42
+
43
+ - If <ase-project-task-lifecycle/> is `solo` (or absent):
44
+ `OPEN`, `SHELVED`, `CLOSED`, and `CANCELLED`.
45
+
46
+ - If <ase-project-task-lifecycle/> is `team`:
47
+ `PLANNING`, `SHELVED`, `IMPLEMENTING`, `STALLED`,
48
+ `IMPLEMENTED`, and `CANCELLED`.
49
+
50
+ - If <ase-project-task-lifecycle/> is `enterprise`:
51
+ `DRAFTED`, `SHELVED`, `PLANNING`, `PLANNED`, `STALLED`,
52
+ `IMPLEMENTING`, `IMPLEMENTED`, `DECLINED`, `QUALIFYING`,
53
+ `QUALIFIED`, `DEFERRED`, `INTEGRATING`, `INTEGRATED`, and
54
+ `CANCELLED`.
55
+
56
+ Do not output anything.
57
+
58
+ 2. <if condition="<arguments/> contains two tokens">
59
+ Set <id/> to the first token with a trailing `:` removed and
60
+ <status/> to the second token. Do not output anything.
61
+ </if>
62
+
63
+ 3. <if condition="<arguments/> contains exactly one token">
64
+ - If the token ends with `:`:
65
+ Set <id/> to the token with the trailing `:` removed.
66
+ - Else if the token, upper-cased, is one of <states/>:
67
+ Set <status/> to the token.
68
+ - Else:
69
+ Set <id/> to the token.
70
+
71
+ Do not output anything.
72
+ </if>
73
+
74
+ 4. <if condition="<arguments/> contains more than two tokens">
75
+ Only output the following <template/> and then immediately
76
+ *STOP* processing the entire current skill:
77
+
78
+ <template>
79
+ ⧉ **ASE**: ☻ skill: **ase-task-status**, ▶ ERROR: expected `[<id>:] [<status>]` arguments
80
+ </template>
81
+ </if>
82
+
83
+ 5. <if condition="<id/> does NOT match the regexp `^[a-zA-Z0-9#][a-zA-Z0-9#_-]*$`">
84
+ Only output the following <template/> and then immediately
85
+ *STOP* processing the entire current skill:
86
+
87
+ <template>
88
+ ⧉ **ASE**: ☻ skill: **ase-task-status**, ▶ ERROR: invalid task id `<id/>` (expected `^[a-zA-Z0-9#][a-zA-Z0-9#_-]*$`)
89
+ </template>
90
+ </if>
91
+
92
+ 2. **Perform Operation:**
93
+
94
+ 1. <if condition="<status/> is empty">
95
+ Call the `ase_task_status(id: "<id/>")` tool of the `ase` MCP
96
+ server to get the lifecycle status of the task plan and set
97
+ <text/> to the `text` output field of this tool call. Do not
98
+ output anything related to this MCP tool call.
99
+
100
+ - If <text/> starts with `ERROR:` or `WARNING:`:
101
+ Only output the following <template/>:
102
+
103
+ <template>
104
+ ⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **<text/>**
105
+ </template>
106
+
107
+ - If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
108
+ Only output the following <template/>:
109
+
110
+ <template>
111
+ ⧉ **ASE**: ◉ task: **<id/>**, ◐ status: **<text/>**
112
+ </template>
113
+ </if>
114
+
115
+ 2. <if condition="<status/> is NOT empty">
116
+ Call the `ase_task_status(id: "<id/>", status: "<status/>")`
117
+ tool of the `ase` MCP server to set the lifecycle status of the
118
+ task plan and set <text/> to the `text` output field of this
119
+ tool call. Do not output anything related to this MCP tool
120
+ call.
121
+
122
+ - If <text/> starts with `ERROR:`:
123
+ Only output the following <template/>:
124
+
125
+ <template>
126
+ ⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **<text/>**
127
+ </template>
128
+
129
+ - If <text/> starts NOT with `ERROR:`:
130
+ Strip the leading `OK: ` prefix from <text/> and only output
131
+ the following <template/>:
132
+
133
+ <template>
134
+ ⧉ **ASE**: ◉ task: **<id/>**, ◐ status: **<status/>** (*updated*), ▶ <text/>
135
+ </template>
136
+ </if>
137
+
@@ -0,0 +1,80 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-task-status` - Configure Task Status
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-task-status`
9
+ [`--help`|`-h`]
10
+ [*id*`:`] [*status*]
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-task-status` skill gets or sets the *lifecycle status* of a
15
+ *task plan*, i.e. its `Status:` frontmatter key, via the
16
+ `ase_task_status` MCP tool. Without a *status* argument, it reports the
17
+ current status of the plan (defaulting to the initial state of the task
18
+ lifecycle model if the plan carries no `Status:` key). With a *status*
19
+ argument, it sets the status of the plan, leaving its `Modified:` key
20
+ alone, as that key tracks changes of the plan body only.
21
+
22
+ The *status* is matched case-insensitively against the states of the
23
+ task lifecycle model configured for the project via
24
+ `project.task.lifecycle` (`solo`, `team`, or `enterprise`) and rejected
25
+ if it is no such state. A status not reachable from the current one via
26
+ one or more transitions of the state machine of the model is *rejected*,
27
+ too.
28
+
29
+ If *id*`:` is omitted, the *current* task id (inherited from the session
30
+ context) is used. A single bare token which is no state of the model is
31
+ also taken as the task id. The current task id of the session is never
32
+ switched.
33
+
34
+ ## ARGUMENTS
35
+
36
+ - *id*`:`:
37
+ The unique identifier of the task plan, with a trailing colon.
38
+ If omitted, the current task id is used.
39
+
40
+ - *status*:
41
+ The lifecycle status to set, one of the states of the configured
42
+ task lifecycle model (case-insensitive). If omitted, the current
43
+ status is reported.
44
+
45
+ ## SCENARIOS
46
+
47
+ - You want to know the lifecycle status of the current or a given task plan
48
+ - You want a task plan closed, shelved, cancelled, or re-opened
49
+ - You want a task plan moved into a certain lifecycle state by hand
50
+
51
+ ## EXAMPLES
52
+
53
+ Show the status of the current task plan:
54
+
55
+ ```text
56
+ ❯ /ase-task-status
57
+ ```
58
+
59
+ Show the status of a specific task plan:
60
+
61
+ ```text
62
+ ❯ /ase-task-status hello:
63
+ ```
64
+
65
+ Close the current task plan (`solo` lifecycle model):
66
+
67
+ ```text
68
+ ❯ /ase-task-status closed
69
+ ```
70
+
71
+ Shelve a specific task plan:
72
+
73
+ ```text
74
+ ❯ /ase-task-status hello: SHELVED
75
+ ```
76
+
77
+ ## SEE ALSO
78
+
79
+ [`ase-task-list`](../ase-task-list/help.md), [`ase-task-id`](../ase-task-id/help.md), [`ase-task-view`](../ase-task-view/help.md),
80
+ [`ase-task-implement`](../ase-task-implement/help.md), [`ase-task-delete`](../ase-task-delete/help.md).
@@ -43,7 +43,7 @@ Procedure
43
43
  Do not output anything.
44
44
  </if>
45
45
 
46
- 3. <if condition="<id/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`">
46
+ 3. <if condition="<id/> does NOT match the regexp `^[a-zA-Z0-9#][a-zA-Z0-9#_-]*$`">
47
47
  Only output the following <template/> and then immediately
48
48
  *STOP* processing the entire current skill:
49
49
 
@@ -55,7 +55,10 @@ Procedure
55
55
  2. **Perform Operation**:
56
56
 
57
57
  1. Call the `ase_task_load(id: "<id/>", variant: "render")` tool
58
- of the `ase` MCP server to load the task plan content in its
58
+ of the `ase` MCP server -- if <getopt-option-full/> is `true`,
59
+ additionally with the argument `attachments: "full"`, else with
60
+ the payloads of all attachments *elided* to `[elided: <n/> lines]`
61
+ markers (the default) -- to load the task plan content in its
59
62
  *rendering-prepared* form -- this skill is *display-only* and
60
63
  hence never persists the plan again -- and set <text/> to the
61
64
  `text` output field of this `ase_task_load` tool call. Do not
@@ -84,35 +87,51 @@ Procedure
84
87
  both `---` delimiters and all of their keys -- and instead place
85
88
  the following column-aligned glyph lines *before* the
86
89
  `# TASK: <title/>` heading, separated from it by an empty line,
87
- omitting the line of every key absent from the frontmatter. The
88
- glyph lines *MUST* stay *above* the heading, exactly where the
89
- frontmatter block sits in the plan file, and *MUST NOT* be moved
90
- below it. This keeps the `---` delimiters from rendering as a
91
- horizontal rule plus a *setext heading*. This rewrite is
92
- *display-only* and *MUST NOT* change <task-content/> itself:
90
+ omitting the line of every key absent from the frontmatter and
91
+ always omitting the `Type` key. The glyph lines *MUST* stay
92
+ *above* the heading, exactly where the frontmatter block sits in
93
+ the plan file, and *MUST NOT* be moved below it. This keeps the
94
+ `---` delimiters from rendering as a horizontal rule plus a
95
+ *setext heading*. This rewrite is *display-only* and *MUST NOT*
96
+ change <task-content/> itself:
93
97
 
94
98
  <format>
95
- ◉ **Id:** <task-id/>
96
- ⎈ **Created:** <timestamp-created/>
97
- ⚙ **Modified:** <timestamp-modified/>
98
- ◐ **Status:** <task-status/>
99
- ⚑ **Properties:** <task-properties/>
100
- ☯ **Kind:** <task-kind/>
99
+ ◉ **Id:** <task-id/>
100
+ ⎈ **Created:** <timestamp-created/>
101
+ ⚙ **Modified:** <timestamp-modified/>
102
+ ⊞ **Group:** <task-group/>
103
+ ◷ **Phase:** <task-phase/>
104
+ ⇢ **After:** <task-after/>
105
+ ◐ **Status:** <task-status/>
106
+ ☯ **Kind:** <task-kind/>
107
+ ⚖ **Effort:** <task-effort/>
108
+ ⚑ **Tags:** <task-tags/>
109
+ ⇤ **Source:** <task-source/>
110
+ ⇢ **Changeset:** <task-changeset/>
111
+ ⇥ **Target:** <task-target/>
101
112
  </format>
102
113
 
103
- *Render plan*: Only output the following <template/>. If
104
- <getopt-option-full/> is *not* `true`, <task-content/> is longer than
105
- 90 lines, and a `## IMPLEMENTATION DRAFT` section (from the
106
- companion skill `ase-task-preflight`) exists, replace the entire
107
- content of the `## IMPLEMENTATION DRAFT` section with `[...]`.
108
- Else, do *not* truncate, summarize, or partially show the plan.
109
- Use the following <template/>:
114
+ *Render plan*: Only output the following <template/>. Do *not*
115
+ truncate, summarize, or partially show the plan. Use the
116
+ following <template/>:
110
117
 
111
118
  <template>
112
119
  <ase-tpl-head title="TASK" subtitle="<task-id/>"/>
113
120
  <task-content/>
114
121
  <ase-tpl-foot title="TASK" subtitle="<task-id/>"/>
115
122
  </template>
123
+
124
+ <if condition="the backmatter of <task-content/> contains an attachment
125
+ block with the `Type` key value `text/x-diff; charset=utf-8; kind="draft"`
126
+ which is *stale*, i.e. its `Modified` key is absent or older
127
+ than the `Modified` key of the frontmatter">
128
+ Directly *after* this <template/>, only output the following
129
+ <template/>:
130
+
131
+ <template>
132
+ ⧉ **ASE**: ◉ task: **<task-id/>**, ▶ WARNING: implementation draft attachment is **stale** (older than the plan)
133
+ </template>
134
+ </if>
116
135
  </if>
117
136
 
118
137
  3. Finally, give the closing hints by expanding the following (which,
@@ -121,12 +140,18 @@ Procedure
121
140
 
122
141
  <if condition="<task-content/> is not empty">
123
142
  <ase-tpl-hint level="normal">
124
- Use `/ase-task-edit` or `/ase-task-grill` to refine this plan, `/ase-task-preflight` to dry-run it, and `/ase-task-implement` to realize it.
143
+ Use `/ase-task-edit` or `/ase-task-grill` to refine this plan, `/ase-task-implement --draft` to draft its implementation, `/ase-task-implement` to realize it, and `/ase-task-integrate` to deliver it.
125
144
  </ase-tpl-hint>
126
145
 
127
- <if condition="<getopt-option-full/> is not equal `true` and the `## IMPLEMENTATION DRAFT` section was replaced with `[...]`">
146
+ <if condition="<getopt-option-full/> is not equal `true` and the backmatter of <task-content/> contains an elided `Data` payload">
128
147
  <ase-tpl-hint level="verbose">
129
- Use `/ase-task-view --full` to show the elided `IMPLEMENTATION DRAFT` section, too.
148
+ Use `/ase-task-view --full` to show the elided attachment payloads, too.
149
+ </ase-tpl-hint>
150
+ </if>
151
+
152
+ <if condition="the implementation draft attachment block was reported as *stale* above">
153
+ <ase-tpl-hint level="minimal">
154
+ Run `/ase-task-implement --draft` again to re-create the implementation draft for the changed plan, as `/ase-task-integrate --draft` refuses a stale draft.
130
155
  </ase-tpl-hint>
131
156
  </if>
132
157
  </if>
@@ -17,18 +17,28 @@ The plan is loaded via the `ase_task_load` MCP tool and shown framed
17
17
  between a `( TASK )` header and footer rule. If *id* is omitted, the
18
18
  *current* task id (inherited from the session context) is used.
19
19
 
20
- By default, when the plan is longer than 90 lines and contains an
21
- `IMPLEMENTATION DRAFT` section (produced by `ase-task-preflight`), the
22
- content of that section is collapsed to `[...]` to keep the view
23
- compact. The `--full`|`-f` option suppresses this collapsing and renders
24
- the plan in full, without any truncation or summarization.
20
+ By default, the payload of every attachment in the backmatter (like an
21
+ implementation draft of `ase-task-implement --draft` or the processing
22
+ log of an `ase agent`) is elided to an `[elided: <n> lines]` marker to
23
+ keep the view compact. The `--full`|`-f` option loads the payloads, too,
24
+ and renders the plan in full, without any truncation or summarization.
25
+
26
+ An implementation draft attachment whose `Modified:` key is absent or
27
+ older than the `Modified:` key of the plan frontmatter is *stale*, as
28
+ the plan changed after the draft was created. Such a draft is reported
29
+ with a warning after the rendering, together with a hint that
30
+ `ase-task-implement --draft` has to be run again, as
31
+ `ase-task-integrate --draft` refuses a stale draft.
32
+
33
+ The frontmatter keys `Source:`, `Changeset:`, and `Target:` are
34
+ rendered as well, stating where the change set of the plan is
35
+ created from, stored in, and delivered to.
25
36
 
26
37
  ## OPTIONS
27
38
 
28
39
  - `--full`|`-f`:
29
- Render the plan in full, without collapsing the
30
- `IMPLEMENTATION DRAFT` section. By default, that section is
31
- replaced with `[...]` for plans longer than 90 lines.
40
+ Render the plan in full, including the payloads of its attachments.
41
+ By default, each payload is elided to an `[elided: <n> lines]` marker.
32
42
 
33
43
  ## ARGUMENTS
34
44
 
@@ -56,7 +66,7 @@ View a specific task plan:
56
66
  ❯ /ase-task-view hello
57
67
  ```
58
68
 
59
- View a plan in full, including its `IMPLEMENTATION DRAFT` section:
69
+ View a plan in full, including its implementation draft attachment:
60
70
 
61
71
  ```text
62
72
  ❯ /ase-task-view --full hello
@@ -1,187 +0,0 @@
1
- ---
2
- name: ase-meta-review
3
- description: "Review Investigation"
4
- effort: high
5
- ---
6
-
7
- Your role is an experienced, *expert-level software reviewer* performing
8
- a holistic, human-style review of a concrete set of staged Git changes —
9
- the way a thorough reviewer would judge a pull request before approving it.
10
-
11
- Your objective is to *reconstruct the change's intent* and *critique the
12
- staged diff as a whole* against a fixed set of reviewer dimensions,
13
- producing *prioritized*, *severity-tagged*, *line-cited* findings.
14
-
15
- Workflow
16
- --------
17
-
18
- 1. Capture the *staged change set* by running the following command
19
- (taken exactly as given), capturing the full diff output into <diff/>:
20
-
21
- `git diff --cached HEAD`
22
-
23
- 2. Use the `Read` tool to read *every* file touched by <diff/> in its
24
- *full current form* (not just the hunks), plus all *related* files
25
- needed to really comprehend the change — callers of changed
26
- functions, the interfaces/contracts they implement, and adjacent
27
- code that establishes the surrounding idiom. A diff cannot be
28
- reviewed from the hunks alone.
29
-
30
- 3. *Probe the repository read-only and heuristically* (via `git grep`,
31
- `grep`, `git ls-files`, restricted to first-party code) only as
32
- needed to substantiate findings — e.g. who imports a touched module,
33
- whether a changed contract has other call sites, whether touched code
34
- has adjacent tests. Do not modify anything.
35
-
36
- 4. Read the project's *documented conventions* — the AI guidance files
37
- (`AGENTS.md`, or similar) and any referenced format/meta documents
38
- — so the `CONVENTION` dimension can be judged against the project's
39
- *own* stated rules (code style, plan/spec/arch formats) rather than
40
- generic taste.
41
-
42
- 5. *Reconstruct the intent*: determine the *single*, *coherent* purpose
43
- the diff *as a whole* is trying to accomplish, and capture it as a
44
- *single* crisp sentence in <summary/>. If the diff genuinely spans
45
- several unrelated purposes, pick the *dominant* one (the residue will
46
- surface as an `INTENT` finding below).
47
-
48
- 6. Set <findings/> to empty.
49
- Then critique the change across the following fixed *dimensions*
50
- (each finding is tagged with exactly one `dimension`):
51
-
52
- - **INTENT**:
53
- Hunks that do *not* serve the reconstructed intent — scope creep
54
- (an unrelated feature or drive-by refactor riding along), stray
55
- debug/diagnostic residue (debug prints, commented-out code,
56
- disabled tests, `TODO`/`FIXME` scaffolding), or an incomplete
57
- change that does not fully achieve its own stated purpose.
58
-
59
- - **CORRECTNESS**:
60
- Latent bugs introduced or left by the change — wrong logic,
61
- unhandled edge cases, off-by-one and boundary errors, broken
62
- control or data flow, incorrect assumptions about inputs or state.
63
-
64
- - **DESIGN**:
65
- Poor fit with the surrounding architecture — wrong abstraction
66
- level, misplaced responsibility, leaky or broken interface
67
- contracts, poor naming, or a simpler/more idiomatic shape the
68
- change overlooked.
69
-
70
- - **CLARITY**:
71
- Readability and self-documentation problems for a *future
72
- reader* — confusing constructs, misleading names, missing
73
- rationale for a non-obvious choice, or unnecessary complexity.
74
-
75
- - **ROBUSTNESS**:
76
- Missing, incorrect, or inconsistent error handling; resource
77
- allocation/deallocation imbalance; and concurrency or
78
- asynchronicity hazards introduced by the change.
79
-
80
- - **SECURITY**:
81
- Vulnerabilities or missing essential validations introduced by
82
- the change — injection, unsafe input handling, secret exposure,
83
- privilege or trust-boundary mistakes, unsafe edge cases in value
84
- ranges.
85
-
86
- - **PERFORMANCE**:
87
- Efficiency risks introduced by the change — non-constant/
88
- non-linear hot paths, redundant work, or avoidable allocations
89
- on a path the change clearly exercises.
90
-
91
- - **CONVENTION**:
92
- Conformance to the *project's own documented conventions* — the
93
- code style and the plan/spec/arch artifact formats stated in the
94
- project's AI guidance and meta documents. Judge against what the
95
- project *documents*, not against generic preference.
96
-
97
- - **TESTING**:
98
- Inadequate test coverage for the change — new logic or fixed
99
- behavior left untested, adjacent tests not updated to match the
100
- new behavior, or existing tests silently broken, disabled, or
101
- weakened by the change.
102
-
103
- - **DOCUMENTATION**:
104
- User- or developer-facing documentation left stale by the change
105
- — `README`, `CHANGELOG`, help text, or AI guidance/meta documents
106
- that no longer match the change's new behavior, options, or
107
- formats.
108
-
109
- Be *holistic* and *synthesizing*: prefer a *few* high-signal findings
110
- that a human reviewer would actually raise over an exhaustive
111
- mechanical list. Be *conservative* — only report clear, well-grounded
112
- concerns, and think twice to avoid *false positives*. Be *focused* —
113
- only report concerns about the *staged change* itself; ignore
114
- pre-existing issues in unchanged code that the diff merely sits next
115
- to.
116
-
117
- For *each* finding:
118
-
119
- 1. Set <dimension/> to exactly one of `INTENT`, `CORRECTNESS`,
120
- `DESIGN`, `CLARITY`, `ROBUSTNESS`, `SECURITY`, `PERFORMANCE`,
121
- `CONVENTION`, `TESTING`, or `DOCUMENTATION`.
122
-
123
- 2. Set <severity/> to one of `HIGH`, `MEDIUM`, `LOW`, or `ACCEPTED`:
124
-
125
- - `HIGH`: a blocking concern a reviewer would require fixed
126
- before approval (a real bug, a security hole, a broken contract,
127
- a hard convention violation).
128
-
129
- - `MEDIUM`: a concern worth addressing but not strictly
130
- blocking.
131
-
132
- - `LOW`: a minor nit or suggestion.
133
-
134
- - `ACCEPTED`: a concern that *is* explicitly addressed by
135
- a contract, docstring, or documented project priority (a
136
- hot-path/allocation/latency tradeoff, or "contractually
137
- addressed") — kept visible for traceability rather than dropped.
138
-
139
- *Documented-context alignment* is mandatory: cross-check each
140
- finding against interface contracts, docstrings, adjacent
141
- comments, and the project AI guidance files. If the concern is
142
- already addressed there, mark it `ACCEPTED` with the reason in
143
- the finding text rather than reporting it as a defect; if a
144
- fix would violate a documented priority, weaken it or mark it
145
- `ACCEPTED` ("priority-conflict accepted").
146
-
147
- 3. Set <location/> to the *relative* filename path of the affected
148
- file, with the affected 1-based line number `N` appended as `:N`
149
- or the 1-based line range appended as `:N-M`. *Evidence-grounded*
150
- citation is mandatory — the cited lines MUST prove the finding
151
- verbatim; if they do not, re-investigate and re-cite, and drop
152
- the finding only if *no* location in the changed files proves it.
153
-
154
- 4. Set <finding/> to an *ultra-brief*, *concise* Markdown-formatted
155
- statement combining *what* the concern is and *why* it matters
156
- (and, for `ACCEPTED`, *where* it is addressed). Mark up all
157
- referenced verbatim identifiers or keywords <words/> from the
158
- code as quoted monospaced strings based on the following
159
- <template/>: <template>"`<words/>`"</template>. Keep it to a
160
- single sentence wherever possible.
161
-
162
- 5. If <findings/> is not empty, set
163
- <findings><findings/>,</findings> (append a comma).
164
- Then append the following <template/> to <findings/>:
165
-
166
- <template>
167
- {
168
- "dimension": <dimension/>,
169
- "severity": <severity/>,
170
- "location": <location/>,
171
- "finding": <finding/>
172
- }
173
- </template>
174
-
175
- 7. You *MUST* *NOT* propose, apply, or render any document
176
- changes yourself. Instead, return *exclusively* as the last message
177
- a single JSON block (no markdown, no prose, no preamble, no summary)
178
- of the following shape:
179
-
180
- ```json
181
- {
182
- "summary": <summary/>,
183
- "findings": [
184
- <findings/>
185
- ]
186
- }
187
- ```