@rse/ase 2.0.3 → 2.0.5

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 (198) hide show
  1. package/dst/ase-hook.js +13 -4
  2. package/dst/ase-lib-version.js +14 -5
  3. package/dst/ase-man-catalog.js +229 -0
  4. package/dst/ase-man-render.js +278 -0
  5. package/dst/ase-man-tui.js +636 -0
  6. package/dst/ase-man.js +33 -27
  7. package/dst/ase-setup.js +2 -2
  8. package/dst/ase-spec.js +103 -20
  9. package/dst/ase-task-board-filter.js +5 -4
  10. package/dst/ase-task-board-web-client.js +26 -26
  11. package/dst/man/ase-agent-adhoc.md +1165 -0
  12. package/dst/man/ase-agent-condenser.md +383 -0
  13. package/dst/man/ase-agent-editor.md +441 -0
  14. package/dst/man/ase-agent-estimator.md +477 -0
  15. package/dst/man/ase-agent-fleet.md +358 -0
  16. package/dst/man/ase-agent-implementer.md +521 -0
  17. package/dst/man/ase-agent-integrator.md +449 -0
  18. package/dst/man/ase-agent-qualifier.md +426 -0
  19. package/dst/man/ase-agent-rebooter.md +384 -0
  20. package/dst/man/ase-agent-relay.md +262 -0
  21. package/dst/man/ase-agent-researcher.md +478 -0
  22. package/dst/man/ase-agent.md +628 -0
  23. package/dst/man/ase-artifact-list.md +57 -0
  24. package/dst/man/ase-artifact-name.md +56 -0
  25. package/dst/man/ase-artifact.md +92 -0
  26. package/dst/man/ase-config-delete.md +74 -0
  27. package/dst/man/ase-config-edit.md +83 -0
  28. package/dst/man/ase-config-get.md +70 -0
  29. package/dst/man/ase-config-init.md +110 -0
  30. package/dst/man/ase-config-list.md +68 -0
  31. package/dst/man/ase-config-set.md +92 -0
  32. package/dst/man/ase-config.md +426 -0
  33. package/dst/man/ase-hook-permission-request.md +61 -0
  34. package/dst/man/ase-hook-pre-tool-use.md +96 -0
  35. package/dst/man/ase-hook-session-end.md +71 -0
  36. package/dst/man/ase-hook-session-persona.md +65 -0
  37. package/dst/man/ase-hook-session-start.md +184 -0
  38. package/dst/man/ase-hook-stop.md +52 -0
  39. package/dst/man/ase-hook-user-prompt-submit.md +54 -0
  40. package/dst/man/ase-hook.md +93 -0
  41. package/dst/man/ase-man.md +195 -0
  42. package/dst/man/ase-mcp.md +102 -0
  43. package/dst/man/ase-service-log.md +59 -0
  44. package/dst/man/ase-service-send.md +60 -0
  45. package/dst/man/ase-service-start.md +93 -0
  46. package/dst/man/ase-service-status.md +58 -0
  47. package/dst/man/ase-service-stop.md +52 -0
  48. package/dst/man/ase-service.md +124 -0
  49. package/dst/man/ase-setup-disable.md +67 -0
  50. package/dst/man/ase-setup-enable.md +66 -0
  51. package/dst/man/ase-setup-install.md +116 -0
  52. package/dst/man/ase-setup-mcp.md +213 -0
  53. package/dst/man/ase-setup-status.md +101 -0
  54. package/dst/man/ase-setup-statusline.md +162 -0
  55. package/dst/man/ase-setup-telemetry.md +166 -0
  56. package/dst/man/ase-setup-uninstall.md +85 -0
  57. package/dst/man/ase-setup-update.md +117 -0
  58. package/dst/man/ase-setup.md +156 -0
  59. package/dst/man/ase-spec-export.md +99 -0
  60. package/dst/man/ase-spec-init.md +57 -0
  61. package/dst/man/ase-spec-lint.md +74 -0
  62. package/dst/man/ase-spec-preview.md +57 -0
  63. package/dst/man/ase-spec.md +85 -0
  64. package/dst/man/ase-statusline.md +330 -0
  65. package/dst/man/ase-task-assign.md +138 -0
  66. package/dst/man/ase-task-board.md +651 -0
  67. package/dst/man/ase-task-delete.md +46 -0
  68. package/dst/man/ase-task-edit.md +73 -0
  69. package/dst/man/ase-task-idscheme.md +92 -0
  70. package/dst/man/ase-task-lifecycle.md +92 -0
  71. package/dst/man/ase-task-list.md +86 -0
  72. package/dst/man/ase-task-load.md +48 -0
  73. package/dst/man/ase-task-newid.md +100 -0
  74. package/dst/man/ase-task-purge.md +49 -0
  75. package/dst/man/ase-task-rename.md +69 -0
  76. package/dst/man/ase-task-request.md +108 -0
  77. package/dst/man/ase-task-save.md +78 -0
  78. package/dst/man/ase-task-status.md +79 -0
  79. package/dst/man/ase-task-store.md +377 -0
  80. package/dst/man/ase-task-view.md +50 -0
  81. package/dst/man/ase-task.md +335 -0
  82. package/dst/man/ase-util-compat.md +38 -0
  83. package/dst/man/ase-util-diagram.md +140 -0
  84. package/dst/man/ase-util-meta.md +68 -0
  85. package/dst/man/ase-util-metric.md +74 -0
  86. package/dst/man/ase-util-mint.md +85 -0
  87. package/dst/man/ase-util-worktree.md +109 -0
  88. package/dst/man/ase-util.md +81 -0
  89. package/dst/man/ase.md +228 -0
  90. package/package.json +16 -21
  91. package/plugin/.claude-plugin/plugin.json +1 -1
  92. package/plugin/.codex-plugin/plugin.json +1 -1
  93. package/plugin/.github/plugin/plugin.json +1 -1
  94. package/plugin/agents/ase-code-lint.md +3 -3
  95. package/plugin/agents/ase-docs-proofread.md +3 -3
  96. package/plugin/agents/ase-docs-refine.md +3 -3
  97. package/plugin/agents/ase-spec-lint.md +338 -0
  98. package/plugin/mods/ase-mods-common.ts +444 -0
  99. package/plugin/mods/ase-mods-grill.ts +312 -0
  100. package/plugin/mods/ase-mods-help-browse.ts +405 -0
  101. package/plugin/mods/ase-mods-help-compose.ts +561 -0
  102. package/plugin/mods/ase-mods-help-find.ts +426 -0
  103. package/plugin/mods/ase-mods-help-hint.ts +134 -0
  104. package/plugin/mods/ase-mods-help-show.ts +142 -0
  105. package/plugin/mods/ase-mods.ts +214 -381
  106. package/plugin/mods/claude-code.d.ts +26 -3
  107. package/plugin/skills/ase-code-lint/SKILL.md +15 -15
  108. package/plugin/skills/ase-code-lint/help.md +21 -8
  109. package/plugin/skills/ase-help-intent/SKILL.md +2 -1
  110. package/plugin/skills/ase-help-intent/data.md +214 -9
  111. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  112. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  113. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  114. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  115. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  116. package/plugin/skills/ase-spec-edit/help.md +1 -1
  117. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  118. package/plugin/skills/ase-spec-lint/help.md +184 -0
  119. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  120. package/plugin/skills/ase-task-implement/help.md +11 -1
  121. package/dst/man/ase-agent-adhoc.1 +0 -515
  122. package/dst/man/ase-agent-condenser.1 +0 -193
  123. package/dst/man/ase-agent-editor.1 +0 -212
  124. package/dst/man/ase-agent-estimator.1 +0 -214
  125. package/dst/man/ase-agent-fleet.1 +0 -185
  126. package/dst/man/ase-agent-implementer.1 +0 -233
  127. package/dst/man/ase-agent-integrator.1 +0 -213
  128. package/dst/man/ase-agent-qualifier.1 +0 -214
  129. package/dst/man/ase-agent-rebooter.1 +0 -193
  130. package/dst/man/ase-agent-relay.1 +0 -128
  131. package/dst/man/ase-agent-researcher.1 +0 -217
  132. package/dst/man/ase-agent.1 +0 -264
  133. package/dst/man/ase-artifact-list.1 +0 -38
  134. package/dst/man/ase-artifact-name.1 +0 -39
  135. package/dst/man/ase-artifact.1 +0 -56
  136. package/dst/man/ase-config-delete.1 +0 -45
  137. package/dst/man/ase-config-edit.1 +0 -48
  138. package/dst/man/ase-config-get.1 +0 -46
  139. package/dst/man/ase-config-init.1 +0 -60
  140. package/dst/man/ase-config-list.1 +0 -42
  141. package/dst/man/ase-config-set.1 +0 -52
  142. package/dst/man/ase-config.1 +0 -231
  143. package/dst/man/ase-hook-permission-request.1 +0 -36
  144. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  145. package/dst/man/ase-hook-session-end.1 +0 -47
  146. package/dst/man/ase-hook-session-persona.1 +0 -37
  147. package/dst/man/ase-hook-session-start.1 +0 -81
  148. package/dst/man/ase-hook-stop.1 +0 -34
  149. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  150. package/dst/man/ase-hook.1 +0 -51
  151. package/dst/man/ase-man.1 +0 -67
  152. package/dst/man/ase-mcp.1 +0 -61
  153. package/dst/man/ase-service-log.1 +0 -43
  154. package/dst/man/ase-service-send.1 +0 -47
  155. package/dst/man/ase-service-start.1 +0 -54
  156. package/dst/man/ase-service-status.1 +0 -46
  157. package/dst/man/ase-service-stop.1 +0 -37
  158. package/dst/man/ase-service.1 +0 -85
  159. package/dst/man/ase-setup-disable.1 +0 -44
  160. package/dst/man/ase-setup-enable.1 +0 -45
  161. package/dst/man/ase-setup-install.1 +0 -73
  162. package/dst/man/ase-setup-mcp.1 +0 -124
  163. package/dst/man/ase-setup-status.1 +0 -60
  164. package/dst/man/ase-setup-statusline.1 +0 -92
  165. package/dst/man/ase-setup-telemetry.1 +0 -92
  166. package/dst/man/ase-setup-uninstall.1 +0 -59
  167. package/dst/man/ase-setup-update.1 +0 -64
  168. package/dst/man/ase-setup.1 +0 -93
  169. package/dst/man/ase-spec-export.1 +0 -62
  170. package/dst/man/ase-spec-lint.1 +0 -40
  171. package/dst/man/ase-spec-preview.1 +0 -40
  172. package/dst/man/ase-spec.1 +0 -46
  173. package/dst/man/ase-statusline.1 +0 -189
  174. package/dst/man/ase-task-assign.1 +0 -71
  175. package/dst/man/ase-task-board.1 +0 -384
  176. package/dst/man/ase-task-delete.1 +0 -35
  177. package/dst/man/ase-task-edit.1 +0 -46
  178. package/dst/man/ase-task-idscheme.1 +0 -65
  179. package/dst/man/ase-task-lifecycle.1 +0 -57
  180. package/dst/man/ase-task-list.1 +0 -47
  181. package/dst/man/ase-task-load.1 +0 -36
  182. package/dst/man/ase-task-newid.1 +0 -61
  183. package/dst/man/ase-task-purge.1 +0 -37
  184. package/dst/man/ase-task-rename.1 +0 -44
  185. package/dst/man/ase-task-request.1 +0 -61
  186. package/dst/man/ase-task-save.1 +0 -48
  187. package/dst/man/ase-task-status.1 +0 -55
  188. package/dst/man/ase-task-store.1 +0 -194
  189. package/dst/man/ase-task-view.1 +0 -40
  190. package/dst/man/ase-task.1 +0 -160
  191. package/dst/man/ase-util-compat.1 +0 -25
  192. package/dst/man/ase-util-diagram.1 +0 -76
  193. package/dst/man/ase-util-meta.1 +0 -45
  194. package/dst/man/ase-util-metric.1 +0 -54
  195. package/dst/man/ase-util-mint.1 +0 -59
  196. package/dst/man/ase-util-worktree.1 +0 -72
  197. package/dst/man/ase-util.1 +0 -50
  198. package/dst/man/ase.1 +0 -124
@@ -1,160 +0,0 @@
1
- .TH "ASE-TASK" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-task\fR - Manage Persisted Task Plans
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase task\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIcommand\fR \[lB]\fIoptions\fR \[lB]...\[rB]\[rB] \[lB]\fIargs\fR \[lB]...\[rB]\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase task\fR manages the persisted \fItask plans\fR of the current project. A task plan is a Markdown document in the textual \fIASE\fR task format (see \fBase util meta format-task\fR): a frontmatter block with the keys \fBType\fR, \fBId\fR, \fBCreated\fR, \fBModified\fR, \fBGroup\fR, \fBPhase\fR, \fBAfter\fR, \fBStatus\fR, \fBAssignee\fR, \fBKind\fR, \fBEffort\fR, \fBTags\fR, \fBSource\fR, \fBChangeset\fR, and \fBTarget\fR, followed by the plan body and optional attachment blocks.
10
- .P
11
- The optional \fBEffort\fR key carries the estimated effort of the task as \fIsize\fR \fIhash\fR, with \fIsize\fR one of the T-shirt sizes \fBXS\fR, \fBS\fR, \fBM\fR, \fBL\fR, or \fBXL\fR (see \fBproject.task.effort.scale\fR in \fBase-config\fR(1)) and \fIhash\fR the content hash of the plan body the size was given for. The task store drops a \fIstale\fR \fBEffort\fR (whose \fIhash\fR no longer matches the body, ignoring checkboxes, whitespace, and cancelled or deferred bullet-points) on load and save, and stamps an \fBEffort\fR given without \fIhash\fR with the content hash of the body on save.
12
- .P
13
- All commands are forwarded to the \fItask store\fR selected by the \fBproject.task.store.url\fR configuration (see \fBTASK STORES\fR below). The project is identified in the task store by \fBproject.id\fR (default: the sanitized basename of the project root, i.e., the Git top-level directory, or the current working directory outside a Git working tree).
14
- .P
15
- The \fBStatus\fR of the task plans follows the \fItask lifecycle model\fR of the project (see \fBTASK LIFECYCLE MODELS\fR below), and new task ids are generated after the \fItask id scheme\fR of the project (see \fBTASK ID SCHEMES\fR below).
16
- .P
17
- Without a \fIcommand\fR, the usage information is shown and the command exits with status \fB1\fR.
18
- .SH "OPTIONS"
19
- .RS 0
20
- .IP \(bu 4
21
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information of \fBase task\fR, including the list of all sub-commands, and exit.
22
- .RE 0
23
- .SH "COMMANDS"
24
- .RS 0
25
- .IP \(bu 4
26
- \fBase task list\fR \[lB]\fB-v\fR|\fB--verbose\fR\[rB] \[lB]\fB-i\fR|\fB--include\fR \fIstates\fR\[rB] \[lB]\fB-e\fR|\fB--exclude\fR \fIstates\fR\[rB]: List the persisted task ids. See \fBase-task-list\fR(1).
27
- .IP \(bu 4
28
- \fBase task status\fR \[lB]\fIid\fR\[lB]\fB:\fR\[rB]\[rB] \[lB]\fIstatus\fR\[rB]: Get or set the lifecycle status of a task. See \fBase-task-status\fR(1).
29
- .IP \(bu 4
30
- \fBase task request\fR \fIid\fR \fIname\fR \[lB]\fIprompt\fR ...\[rB]: Request the processing of a task by a prompt. See \fBase-task-request\fR(1).
31
- .IP \(bu 4
32
- \fBase task assign\fR \[lB]\fB-s\fR|\fB--session\fR \fIid\fR\[rB] \[lB]\fIid\fR\[lB]\fB:\fR\[rB]\[rB] \fIassignee\fR: Assign a task (and handle the AI usage window of a session). See \fBase-task-assign\fR(1).
33
- .IP \(bu 4
34
- \fBase task load\fR \fIid\fR: Write a task plan to standard output. See \fBase-task-load\fR(1).
35
- .IP \(bu 4
36
- \fBase task view\fR \fIid\fR: Show a task plan in the pager. See \fBase-task-view\fR(1).
37
- .IP \(bu 4
38
- \fBase task edit\fR \fIid\fR: Edit a task plan in the editor. See \fBase-task-edit\fR(1).
39
- .IP \(bu 4
40
- \fBase task save\fR \[lB]\fB-c\fR|\fB--create\fR\[rB] \fIid\fR: Save a task plan read from standard input. See \fBase-task-save\fR(1).
41
- .IP \(bu 4
42
- \fBase task delete\fR \fIid\fR: Delete a task plan. See \fBase-task-delete\fR(1).
43
- .IP \(bu 4
44
- \fBase task rename\fR \fIold-id\fR \fInew-id\fR: Rename a task plan and its references. See \fBase-task-rename\fR(1).
45
- .IP \(bu 4
46
- \fBase task newid\fR \[lB]\fB-p\fR|\fB--proposal\fR \fIid\fR\[rB] \[lB]\fB-t\fR|\fB--taken\fR \fIids\fR\[rB] \[lB]\fB-v\fR|\fB--verbose\fR\[rB] \[lB]\fItitle\fR\[rB]: Print the next free task id. See \fBase-task-newid\fR(1).
47
- .IP \(bu 4
48
- \fBase task purge\fR \[lB]\fIage\fR\[rB]: Remove all task plans older than an age. See \fBase-task-purge\fR(1).
49
- .IP \(bu 4
50
- \fBase task lifecycle\fR \[lB]\fIname\fR\[rB]: Get or set the task lifecycle model of the project. See \fBase-task-lifecycle\fR(1).
51
- .IP \(bu 4
52
- \fBase task idscheme\fR \[lB]\fIscheme\fR\[rB]: Get or set the task id scheme of the project. See \fBase-task-idscheme\fR(1).
53
- .IP \(bu 4
54
- \fBase task store\fR \fIcommand\fR \[lB]...\[rB]: Manage the per-user task store REST API server. See \fBase-task-store\fR(1).
55
- .IP \(bu 4
56
- \fBase task board\fR \[lB]\fIoptions\fR\[rB]: Show the interactive task board in the terminal or the browser. See \fBase-task-board\fR(1).
57
- .RE 0
58
- .SH "TASK IDS"
59
- .P
60
- A task id consists of the characters \fBA-Z\fR, \fBa-z\fR, \fB0-9\fR, \fB#\fR, \fB_\fR, and \fB-\fR, where it has to start with a letter, a digit, or \fB#\fR, i.e., it has to match \fB\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*\fR. The id \fBdefault\fR is the reserved id of the default task of a session. As \fB#\fR starts a comment in the shell, an id containing \fB#\fR has to be quoted on the command line, e.g., \fBase task view "#7"\fR.
61
- .SH "TASK STORES"
62
- .P
63
- The task store is selected by the \fBproject.task.store.url\fR configuration URL (see \fBase-config\fR(1)):
64
- .RS 0
65
- .IP \(bu 4
66
- \fBase:\fR\fIpath\fR: The built-in file-based storage plugin, running in-process, storing each plan as a file \fBTASK-\fR\fIid\fR\fB.md\fR directly in the directory \fIpath\fR, which is resolved relative to the project root (default: \fBase:./.ase/task\fR).
67
- .sp
68
- On the \fBproject\fR and \fBtask:\fR\fIid\fR scopes, \fIpath\fR must not escape the project root (also not through symbolic links), as a cloned repository could otherwise direct task writes anywhere; a directory outside of it is accepted on the \fBuser\fR or \fBsession\fR scope only. The lifecycle model and task id scheme of a local task store always follow \fBproject.task.lifecycle\fR and \fBproject.task.idscheme\fR.
69
- .IP \(bu 4
70
- \fBase://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB]: A remote task store server (see \fBase-task-store\fR(1)), connected via HTTP. It requires an explicitly configured \fBproject.id\fR, as a basename-derived one likely collides on a shared server.
71
- .sp
72
- On first use, the project is registered in the task store under the configured \fBproject.task.lifecycle\fR and \fBproject.task.idscheme\fR; afterwards the registered model and scheme apply to all clients of the project, and a deviating configuration is warned about once per deviation only (see \fBase-task-lifecycle\fR(1)).
73
- .sp
74
- The bearer token is the embedded \fItoken\fR (warned about if the URL is configured on the \fBproject\fR or a \fBtask:\fR\fIid\fR scope, as it might be committed), else \fB$ASE_TASK_STORE_TOKEN\fR, else \fBproject.task.store.token\fR (warned about if not configured on the \fBuser\fR scope), else the \fBtoken\fR of the per-user \fBstore.yaml\fR of a locally started task store server (only if the URL addresses exactly this server). Sending a token to a non-loopback host selected on the \fBproject\fR or a \fBtask:\fR\fIid\fR scope is warned about.
75
- .IP \(bu 4
76
- \fBases://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB]\[lB]\fB?insecure\fR\[rB]: The same as \fBase://\fR, but connecting via HTTPS, verifying the server certificate against the Node.js CA store (extendable via \fB$NODE_EXTRA_CA_CERTS\fR). With the suffix \fB?insecure\fR, the verification of the server certificate is skipped.
77
- .IP \(bu 4
78
- \fBgithub:\fR\fIowner\fR\fB/\fR\fIrepo\fR, \fBgithub+https://\fR\fIhost\fR\fB/\fR\fIowner\fR\fB/\fR\fIrepo\fR, or \fBgithub+http://\fR\fIhost\fR\fB/\fR\fIowner\fR\fB/\fR\fIrepo\fR: The built-in GitHub storage plugin, running in-process, storing the plans as the issues of the repository \fIowner\fR\fB/\fR\fIrepo\fR on GitHub resp. on the GitHub (Enterprise) instance \fIhost\fR. It requires a \fBseq\fR task id scheme (e.g., \fBseq:#%d\fR), as the task ids are the issue numbers. The GitHub token is \fBproject.task.store.token\fR, else \fB$GITHUB_TOKEN\fR, else \fB$GH_TOKEN\fR.
79
- .IP \(bu 4
80
- \fBgitlab:\fR\fInamespace\fR\fB/\fR\fIproject\fR, \fBgitlab://\fR\fIhost\fR\fB/\fR\fInamespace\fR\fB/\fR\fIproject\fR, \fBgitlab+https://\fR\fIhost\fR\fB/\fR\fInamespace\fR\fB/\fR\fIproject\fR, or \fBgitlab+http://\fR\fIhost\fR\fB/\fR\fInamespace\fR\fB/\fR\fIproject\fR: The built-in GitLab storage plugin, running in-process, storing the plans as the issues of the GitLab project \fInamespace\fR\fB/\fR\fIproject\fR (with nested groups allowed) on the GitLab instance \fIhost\fR, else \fB$GITLAB_HOST\fR, else \fBgitlab.com\fR. It also requires a \fBseq\fR task id scheme. The GitLab token is \fBproject.task.store.token\fR, else \fB$GITLAB_TOKEN\fR.
81
- .IP \(bu 4
82
- \fBgitea+https://\fR\fIhost\fR\fB/\fR\fIowner\fR\fB/\fR\fIrepo\fR or \fBgitea+http://\fR\fIhost\fR\fB/\fR\fIowner\fR\fB/\fR\fIrepo\fR: The built-in Gitea storage plugin, running in-process, storing the plans as the issues of the repository \fIowner\fR\fB/\fR\fIrepo\fR on the Gitea instance \fIhost\fR. It also requires a \fBseq\fR task id scheme. The Gitea token is \fBproject.task.store.token\fR, else \fB$GITEA_TOKEN\fR.
83
- .RE 0
84
- .P
85
- For the GitHub, GitLab, and Gitea task stores, a repository selected on the \fBproject\fR or a \fBtask:\fR\fIid\fR scope is warned about once per project and repository only (remembered in the \fIper-user state directory\fR as \fBtask-github.json\fR, \fBtask-gitlab.json\fR, resp. \fBtask-gitea.json\fR), and a \fBproject.task.store.token\fR not configured on the \fBuser\fR scope is warned about.
86
- .SH "TASK LIFECYCLE MODELS"
87
- .P
88
- The \fBStatus\fR frontmatter key of a task plan holds a state of the task lifecycle model of the project, selected by \fBproject.task.lifecycle\fR for a local task store resp. registered in a remote task store (see \fBase-task-lifecycle\fR(1)). A plan without a \fBStatus\fR key reads as the \fIinitial\fR state of the model.
89
- .P
90
- A status change has to be reachable from the current state via one or more transitions of the model (a status foreign to the model can be changed to any state, to allow its correction). The \fIfinished\fR states end the lifecycle, and in the \fIactivity\fR states a task is actively worked on (by a human or an agent), so its plan must not be changed concurrently.
91
- .RS 0
92
- .IP \(bu 4
93
- \fBsolo\fR: The single-phase lifecycle for a local solo developer (default). States: \fBOPEN\fR (initial), \fBSHELVED\fR, \fBCLOSED\fR (finished), and \fBCANCELLED\fR (finished); no activity states. Transitions: \fBOPEN\fR to \fBSHELVED\fR, \fBCLOSED\fR, or \fBCANCELLED\fR; \fBSHELVED\fR to \fBOPEN\fR or \fBCANCELLED\fR.
94
- .IP \(bu 4
95
- \fBteam\fR: The two-phase lifecycle for a distributed small team. States: \fBPLANNING\fR (initial), \fBSHELVED\fR, \fBIMPLEMENTING\fR (activity), \fBSTALLED\fR, \fBIMPLEMENTED\fR (finished), and \fBCANCELLED\fR (finished). Transitions: \fBPLANNING\fR to \fBSHELVED\fR, \fBIMPLEMENTING\fR, or \fBCANCELLED\fR; \fBSHELVED\fR to \fBPLANNING\fR or \fBCANCELLED\fR; \fBIMPLEMENTING\fR to \fBPLANNING\fR, \fBSTALLED\fR, \fBIMPLEMENTED\fR, or \fBCANCELLED\fR; \fBSTALLED\fR to \fBIMPLEMENTING\fR or \fBCANCELLED\fR.
96
- .IP \(bu 4
97
- \fBenterprise\fR: The four-phase lifecycle (planning, implementation, qualification, and integration) for a gated enterprise pipeline, driven headless by the agents of \fBase-agent\fR(1). States: \fBDRAFTED\fR (initial), \fBSHELVED\fR, \fBPLANNING\fR (activity), \fBPLANNED\fR, \fBSTALLED\fR, \fBIMPLEMENTING\fR (activity), \fBIMPLEMENTED\fR, \fBDECLINED\fR, \fBQUALIFYING\fR (activity), \fBQUALIFIED\fR, \fBDEFERRED\fR, \fBINTEGRATING\fR (activity), \fBINTEGRATED\fR (finished), and \fBCANCELLED\fR (finished).
98
- .sp
99
- Transitions: \fBDRAFTED\fR to \fBSHELVED\fR, \fBPLANNING\fR, or \fBCANCELLED\fR; \fBSHELVED\fR to \fBDRAFTED\fR or \fBCANCELLED\fR; \fBPLANNING\fR to \fBDRAFTED\fR, \fBSHELVED\fR, \fBPLANNED\fR, or \fBCANCELLED\fR; \fBPLANNED\fR to \fBSTALLED\fR, \fBIMPLEMENTING\fR, or \fBCANCELLED\fR; \fBSTALLED\fR to \fBPLANNED\fR or \fBCANCELLED\fR; \fBIMPLEMENTING\fR to \fBDRAFTED\fR, \fBPLANNED\fR, \fBSTALLED\fR, \fBIMPLEMENTED\fR, or \fBCANCELLED\fR; \fBIMPLEMENTED\fR to \fBDECLINED\fR, \fBQUALIFYING\fR, or \fBCANCELLED\fR; \fBDECLINED\fR to \fBIMPLEMENTED\fR or \fBCANCELLED\fR; \fBQUALIFYING\fR to \fBDRAFTED\fR, \fBPLANNED\fR, \fBIMPLEMENTED\fR, \fBDECLINED\fR, \fBQUALIFIED\fR, or \fBCANCELLED\fR; \fBQUALIFIED\fR to \fBDEFERRED\fR, \fBINTEGRATING\fR, or \fBCANCELLED\fR; \fBDEFERRED\fR to \fBQUALIFIED\fR or \fBCANCELLED\fR; \fBINTEGRATING\fR to \fBDRAFTED\fR, \fBPLANNED\fR, \fBQUALIFIED\fR, \fBDEFERRED\fR, \fBINTEGRATED\fR, or \fBCANCELLED\fR.
100
- .RE 0
101
- .P
102
- In all models, no transition leaves a finished state.
103
- .SH "TASK ID SCHEMES"
104
- .P
105
- New task ids are generated by \fBase-task-newid\fR(1) after the task id scheme of the project, selected by \fBproject.task.idscheme\fR for a local task store resp. registered in a remote task store (see \fBase-task-idscheme\fR(1)):
106
- .RS 0
107
- .IP \(bu 4
108
- \fBslug\fR\[lB]\fB:\fR\fIwords\fR\[rB]: The slug of the first \fIwords\fR (\fB1\fR-\fB16\fR, default: \fB2\fR) words of the task title, starting with the first word beginning with a letter, with diacritics stripped, lower-cased, and joined with \fB-\fR, e.g., \fBjson-export\fR (default scheme). Conforming ids match \fB^\[lB]a-z\[rB]\[lB]a-z0-9\[rB]*(?:-\[lB]a-z0-9\[rB]+){0,\fR\fIwords-1\fR\fB}(?:-\[lB]0-9\[rB]+)?$\fR.
109
- .IP \(bu 4
110
- \fBseq\fR\[lB]\fB:\fR\fItemplate\fR\[rB]: A continuously increasing sequence number, rendered through the sprintf-style \fItemplate\fR (default: \fB%d\fR) with exactly one \fB%d\fR or \fB%0\fR\fIwidth\fR\fBd\fR (\fIwidth\fR \fB0\fR-\fB16\fR) and otherwise only the characters \fBA-Z\fR, \fBa-z\fR, \fB#\fR, \fB_\fR, and \fB-\fR (but not starting with \fB_\fR or \fB-\fR), e.g., \fBFOO-%03d\fR (\fBFOO-007\fR) or \fB#%d\fR (\fB#7\fR). Conforming ids match \fIprefix\fR\fB(\[lB]0-9\[rB]+)\fR\fIsuffix\fR (resp. with at least \fIwidth\fR digits).
111
- .IP \(bu 4
112
- \fBany\fR: An arbitrary id, as proposed by the caller. Conforming ids match \fB^\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*$\fR.
113
- .RE 0
114
- .P
115
- An id not conforming to the scheme is accepted, but warned about on \fBase task save\fR, \fBase task edit\fR, and \fBase task rename\fR (the reserved id \fBdefault\fR always conforms).
116
- .SH "ENVIRONMENT"
117
- .RS 0
118
- .IP \(bu 4
119
- \fBASE_TASK_ID\fR: The default task id of \fBase task status\fR and \fBase task assign\fR (default: \fBdefault\fR).
120
- .IP \(bu 4
121
- \fBASE_TASK_STORE_TOKEN\fR: The bearer token of a remote (\fBase://\fR or \fBases://\fR) task store.
122
- .IP \(bu 4
123
- \fBGITHUB_TOKEN\fR, \fBGH_TOKEN\fR, \fBGITLAB_TOKEN\fR, \fBGITLAB_HOST\fR, \fBGITEA_TOKEN\fR: The tokens resp. the default host of the GitHub, GitLab, and Gitea task stores (see \fBTASK STORES\fR).
124
- .RE 0
125
- .SH "FILES"
126
- .RS 0
127
- .IP \(bu 4
128
- \fB.ase/task/TASK-\fR\fIid\fR\fB.md\fR: The persisted task plans of the default local task store \fBase:./.ase/task\fR, relative to the project root.
129
- .IP \(bu 4
130
- \fB.ase/config.yaml\fR: The \fBproject\fR scope configuration with the \fBproject.id\fR, \fBproject.task.store.url\fR, \fBproject.task.lifecycle\fR, and \fBproject.task.idscheme\fR keys.
131
- .IP \(bu 4
132
- \fIper-user state directory\fR\fB/task-lifecycle.json\fR: The deviations of the configured lifecycle model and task id scheme from the ones of a remote task store already warned about.
133
- .IP \(bu 4
134
- \fIper-user state directory\fR\fB/task-github.json\fR, \fBtask-gitlab.json\fR, \fBtask-gitea.json\fR: The repositories of the issue tracker task stores already warned about.
135
- .RE 0
136
- .SH "EXAMPLES"
137
- .P
138
- .RS 2
139
- .nf
140
- # list all unfinished tasks with their status, time, effort, and title
141
- $ ase task list -v
142
-
143
- # create a new task from a title and a plan file
144
- $ id=$(ase task newid "Export as JSON")
145
- $ ase task save --create "$id" <plan.md
146
-
147
- # move the task forward in the lifecycle
148
- $ ase task status "$id" CLOSED
149
-
150
- # use a shared remote task store
151
- $ ase config --scope project set project.id myproject
152
- $ ase config --scope project set project.task.store.url ase://127.0.0.1:4711
153
- .fi
154
- .RE
155
- .SH "SEE ALSO"
156
- .P
157
- \fBase\fR(1), \fBase-task-list\fR(1), \fBase-task-status\fR(1), \fBase-task-request\fR(1), \fBase-task-assign\fR(1), \fBase-task-load\fR(1), \fBase-task-view\fR(1), \fBase-task-edit\fR(1), \fBase-task-save\fR(1), \fBase-task-delete\fR(1), \fBase-task-rename\fR(1), \fBase-task-newid\fR(1), \fBase-task-purge\fR(1), \fBase-task-lifecycle\fR(1), \fBase-task-idscheme\fR(1), \fBase-task-store\fR(1), \fBase-task-board\fR(1), \fBase-config\fR(1), \fBase-agent\fR(1).
158
- .SH "AUTHOR"
159
- .P
160
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,25 +0,0 @@
1
- .TH "ASE-UTIL-COMPAT" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util-compat\fR - Output Expected Probe Values of the Compatibility Self-Test
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util compat\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase util compat\fR writes the canonical expected values of all probes of the \fBase-meta-compat\fR self-test skill to standard output, one probe per line as \fIid\fR\fB: \fR\fIvalue\fR, where \fIid\fR is \fIcategory\fR\fB/\fR\fIprobe-name\fR. The probe categories are \fBxml-placeholders\fR, \fBcontrol-flow\fR, \fBregex\fR, and \fBarithmetic\fR, which check whether the model of the agent tool correctly interprets the pseudo-code constructs the \fIASE\fR skills are written in.
10
- .P
11
- This command is intended to be invoked by the skill only after it has recorded all actual probe results (so the model cannot see the expected values beforehand), and not directly by end users. The MCP tool \fBase_compat\fR provides the same.
12
- .SH "OPTIONS"
13
- .RS 0
14
- .IP \(bu 4
15
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
16
- .RE 0
17
- .SH "EXIT STATUS"
18
- .P
19
- Exits with status \fB0\fR.
20
- .SH "SEE ALSO"
21
- .P
22
- \fBase\fR(1), \fBase-util\fR(1).
23
- .SH "AUTHOR"
24
- .P
25
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,76 +0,0 @@
1
- .TH "ASE-UTIL-DIAGRAM" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util-diagram\fR - Render Mermaid or D2 Diagrams as Unicode/ASCII Art or SVG
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util diagram\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-i\fR|\fB--input\fR \fIfile\fR\[rB] \[lB]\fB-l\fR|\fB--lang\fR \fBmermaid\fR|\fBd2\fR\[rB] \[lB]\fB-f\fR|\fB--format\fR \fBascii\fR|\fBsvg\fR\[rB] \[lB]\fB-a\fR|\fB--ascii\fR\[rB] \[lB]\fB-c\fR|\fB--color-mode\fR \fBnone\fR|\fBansi16\fR|\fBansi256\fR\[rB] \[lB]\fB--node-margin-x\fR \fIn\fR\[rB] \[lB]\fB--node-margin-y\fR \fIn\fR\[rB] \[lB]\fB--node-padding\fR \fIn\fR\[rB] \[lB]\fB--diagram-clip-x\fR \fIn\fR\[rB] \[lB]\fB--diagram-clip-y\fR \fIn\fR\[rB] \[lB]\fB--terminal-width\fR \fIn\fR\[rB] \[lB]\fB--terminal-height\fR \fIn\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase util diagram\fR renders a diagram specification, written in the \fIMermaid\fR or \fID2\fR diagram language and read from standard input or a file, as Unicode box-drawing (or plain ASCII) art for the terminal, or as a self-contained SVG document. The \fIMermaid\fR diagrams are rendered via \fIbeautiful-mermaid\fR (supporting, e.g., flowcharts, UML state, sequence, and class diagrams, ER diagrams, and XY-charts), and the \fID2\fR diagrams via the WebAssembly build of \fID2\fR.
10
- .P
11
- For the \fBascii\fR format, the rendering is optionally clipped to the terminal dimensions (reduced by the extra clipping amounts): lines wider than the width budget are truncated (preserving and properly terminating any ANSI color sequences), and lines beyond the height budget are dropped.
12
- .P
13
- A clipped rendering is followed by a warning paragraph which states the overflow and advises how to regenerate the diagram source to fit (e.g., by preferring a portrait orientation, reducing siblings per row, abbreviating node labels, or nesting). The output always ends with a newline.
14
- .P
15
- The MCP tool \fBase_diagram\fR provides the same to the skills.
16
- .SH "OPTIONS"
17
- .RS 0
18
- .IP \(bu 4
19
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
20
- .IP \(bu 4
21
- \[lB]\fB-i\fR|\fB--input\fR \fIfile\fR\[rB]: Read the diagram specification from \fIfile\fR instead of standard input. An empty (or whitespace-only) specification is an error.
22
- .IP \(bu 4
23
- \[lB]\fB-l\fR|\fB--lang\fR \fBmermaid\fR|\fBd2\fR\[rB]: The diagram language: \fBmermaid\fR for \fIMermaid\fR (default) or \fBd2\fR for \fID2\fR.
24
- .IP \(bu 4
25
- \[lB]\fB-f\fR|\fB--format\fR \fBascii\fR|\fBsvg\fR\[rB]: The output format: \fBascii\fR for Unicode/ASCII art (default) or \fBsvg\fR for an SVG document. The clipping options apply to \fBascii\fR only.
26
- .IP \(bu 4
27
- \[lB]\fB-a\fR|\fB--ascii\fR\[rB]: Emit plain ASCII characters (\fB+\fR, \fB-\fR, \fB|\fR) instead of the Unicode box-drawing characters (for both languages).
28
- .IP \(bu 4
29
- \[lB]\fB-c\fR|\fB--color-mode\fR \fBnone\fR|\fBansi16\fR|\fBansi256\fR\[rB]: The color mode of the ANSI escape sequences in the rendered art (\fIMermaid\fR and \fBascii\fR only): \fBnone\fR for no colors, \fBansi16\fR for 16 colors, or \fBansi256\fR for 256 colors, where colors render the diagram in gray shades. Default: \fB$ASE_TERM_COLORS\fR if set to one of these values, else derived from the color depth of standard output if it is a terminal (\fBansi256\fR for at least 8 bits, \fBansi16\fR for at least 4 bits), else \fBnone\fR.
30
- .IP \(bu 4
31
- \[lB]\fB--node-margin-x\fR \fIn\fR\[rB]: The horizontal margin between nodes in characters (\fIMermaid\fR only, default: \fB3\fR).
32
- .IP \(bu 4
33
- \[lB]\fB--node-margin-y\fR \fIn\fR\[rB]: The vertical margin between nodes in lines (\fIMermaid\fR only, default: \fB3\fR).
34
- .IP \(bu 4
35
- \[lB]\fB--node-padding\fR \fIn\fR\[rB]: The horizontal and vertical inner padding of each node in characters (\fIMermaid\fR only, default: \fB1\fR).
36
- .IP \(bu 4
37
- \[lB]\fB--diagram-clip-x\fR \fIn\fR\[rB]: The extra horizontal clipping: the width budget is the terminal width minus \fIn\fR characters (default: \fB0\fR).
38
- .IP \(bu 4
39
- \[lB]\fB--diagram-clip-y\fR \fIn\fR\[rB]: The extra vertical clipping: the height budget is the terminal height minus \fIn\fR lines (default: \fB0\fR).
40
- .IP \(bu 4
41
- \[lB]\fB--terminal-width\fR \fIn\fR\[rB]: The terminal width in characters for the clipping, where \fB0\fR disables the horizontal clipping. Default: \fB$ASE_TERM_WIDTH\fR if a positive integer, else the width of standard output if it is a terminal, else \fB0\fR.
42
- .IP \(bu 4
43
- \[lB]\fB--terminal-height\fR \fIn\fR\[rB]: The terminal height in lines for the clipping, where \fB0\fR disables the vertical clipping. Default: \fB$ASE_TERM_HEIGHT\fR if a positive integer, else the height of standard output if it is a terminal, else \fB0\fR.
44
- .RE 0
45
- .P
46
- All numeric values \fIn\fR have to be non-negative integers.
47
- .SH "ENVIRONMENT"
48
- .RS 0
49
- .IP \(bu 4
50
- \fBASE_TERM_COLORS\fR: The default of \fB--color-mode\fR (\fBnone\fR, \fBansi16\fR, or \fBansi256\fR).
51
- .IP \(bu 4
52
- \fBASE_TERM_WIDTH\fR, \fBASE_TERM_HEIGHT\fR: The defaults of \fB--terminal-width\fR and \fB--terminal-height\fR.
53
- .RE 0
54
- .SH "EXIT STATUS"
55
- .P
56
- Exits with status \fB0\fR on success, and with status \fB1\fR on an invalid option value, an unreadable input file, an empty specification, or a rendering failure (e.g., a syntax error in the specification).
57
- .SH "EXAMPLES"
58
- .P
59
- .RS 2
60
- .nf
61
- # render a Mermaid flowchart as Unicode art
62
- $ printf 'flowchart LR\[rs]n A --> B --> C\[rs]n' | ase util diagram
63
-
64
- # render a D2 diagram from a file as plain ASCII art without colors
65
- $ ase util diagram -l d2 -i arch.d2 -a -c none
66
-
67
- # render a Mermaid diagram as an SVG document
68
- $ ase util diagram -i flow.mmd -f svg >flow.svg
69
- .fi
70
- .RE
71
- .SH "SEE ALSO"
72
- .P
73
- \fBase\fR(1), \fBase-util\fR(1).
74
- .SH "AUTHOR"
75
- .P
76
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,45 +0,0 @@
1
- .TH "ASE-UTIL-META" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util-meta\fR - Output Plugin Meta Files
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util meta\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIname\fR \[lB]...\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase util meta\fR writes the contents of one or more \fImeta files\fR of the \fIASE\fR plugin to standard output, concatenated in the given order and without any separator.
10
- .P
11
- The meta files are the shared instructions and format conventions of the \fIASE\fR skills, e.g., the constitution (\fBase-constitution.md\fR), the tenets (\fBase-tenets.md\fR), the persona (\fBase-persona.md\fR), the dialog conventions (\fBase-dialog.md\fR), the option parsing conventions (\fBase-getopt.md\fR), and the artifact format conventions (\fBase-format-*.md\fR, plus the standard \fISpecBook\fR schema configuration \fBase-format-specbook.yaml\fR).
12
- .P
13
- The meta files are read from the \fBplugin/meta/\fR directory bundled with the tool package itself, independent of any environment variables. All requested files are read before any output is written, so a failing name produces no output at all.
14
- .P
15
- This command is intended to be leveraged by the \fIASE\fR skills, and not typically invoked directly by end users.
16
- .SH "OPTIONS"
17
- .RS 0
18
- .IP \(bu 4
19
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
20
- .RE 0
21
- .SH "ARGUMENTS"
22
- .RS 0
23
- .IP \(bu 4
24
- \fIname\fR \[lB]...\[rB]: One or more meta file names. Each \fIname\fR is reduced to its base name (so no directory traversal or absolute path is possible), the extension \fB.md\fR is appended if it has no extension, and the prefix \fBase-\fR is prepended if missing, so \fBtenets\fR, \fBase-tenets\fR, and \fBtenets.md\fR all select \fBase-tenets.md\fR, while \fBformat-specbook.yaml\fR selects \fBase-format-specbook.yaml\fR. An empty name, \fB.\fR, and \fB..\fR are invalid.
25
- .RE 0
26
- .SH "EXIT STATUS"
27
- .P
28
- Exits with status \fB0\fR on success, and with status \fB1\fR if a name is invalid or a meta file cannot be read.
29
- .SH "EXAMPLES"
30
- .P
31
- .RS 2
32
- .nf
33
- # output the ASE constitution
34
- $ ase util meta constitution
35
-
36
- # output the tenets and the persona definition
37
- $ ase util meta tenets persona
38
- .fi
39
- .RE
40
- .SH "SEE ALSO"
41
- .P
42
- \fBase\fR(1), \fBase-util\fR(1), \fBase-spec\fR(1).
43
- .SH "AUTHOR"
44
- .P
45
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,54 +0,0 @@
1
- .TH "ASE-UTIL-METRIC" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util-metric\fR - Measure the Length Metrics of a Text
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util metric\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-f\fR|\fB--file\fR \fIfile\fR\[rB] \[lB]\fItext\fR \[lB]...\[rB]\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase util metric\fR measures the length metrics of a text, given either as the content of a \fIfile\fR or as the \fItext\fR formed by the remaining arguments (joined by single spaces), which are mutually exclusive and of which exactly one has to be given. The metrics are printed to standard output as a single-line JSON object with the fields:
10
- .RS 0
11
- .IP \(bu 4
12
- \fBwords\fR: The number of whitespace-separated tokens.
13
- .IP \(bu 4
14
- \fBlines\fR: The number of newline-separated lines, where a trailing line without a final newline still counts as one line (and an empty text has \fB0\fR lines).
15
- .IP \(bu 4
16
- \fBchars\fR: The number of Unicode characters, i.e., code points.
17
- .IP \(bu 4
18
- \fBbytes\fR: The number of octets: the raw file size for a \fIfile\fR (as its encoding is not necessarily UTF-8), resp. the UTF-8 length for a \fItext\fR.
19
- .RE 0
20
- .P
21
- A \fIfile\fR is decoded as UTF-8 for the other metrics. This backs the MCP tool \fBase_text_metric\fR, which the skills use instead of estimating a text length themselves.
22
- .SH "OPTIONS"
23
- .RS 0
24
- .IP \(bu 4
25
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
26
- .IP \(bu 4
27
- \[lB]\fB-f\fR|\fB--file\fR \fIfile\fR\[rB]: Measure the content of \fIfile\fR instead of the \fItext\fR arguments.
28
- .RE 0
29
- .SH "ARGUMENTS"
30
- .RS 0
31
- .IP \(bu 4
32
- \[lB]\fItext\fR \[lB]...\[rB]\[rB]: The text to measure, formed by all arguments joined by single spaces (mutually exclusive with \fB--file\fR).
33
- .RE 0
34
- .SH "EXIT STATUS"
35
- .P
36
- Exits with status \fB0\fR on success, and with status \fB1\fR if both or none of \fIfile\fR and \fItext\fR are given, or \fIfile\fR cannot be read.
37
- .SH "EXAMPLES"
38
- .P
39
- .RS 2
40
- .nf
41
- # measure a document
42
- $ ase util metric -f README.md
43
-
44
- # measure a text
45
- $ ase util metric "Hello, World!"
46
- {"words":2,"lines":1,"chars":13,"bytes":13}
47
- .fi
48
- .RE
49
- .SH "SEE ALSO"
50
- .P
51
- \fBase\fR(1), \fBase-util\fR(1), \fBwc\fR(1).
52
- .SH "AUTHOR"
53
- .P
54
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,59 +0,0 @@
1
- .TH "ASE-UTIL-MINT" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util-mint\fR - Mint Hash-Derived Identifiers
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util mint\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-t\fR|\fB--type\fR \fBuuid\fR|\fBsha1\fR|\fBnanoid\fR\[rB] \[lB]\fB-c\fR|\fB--count\fR \fIcount\fR\[rB] \[lB]\fIhint\fR \[lB]...\[rB]\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase util mint\fR mints one or more hash-derived identifiers out of the \fIhint\fR formed by the remaining arguments (joined by single spaces), and prints them to standard output, one identifier per line:
10
- .RS 0
11
- .IP \(bu 4
12
- With type \fBuuid\fR, a non-empty \fIhint\fR yields a deterministic \fIUUID V5\fR over the \fIhint\fR within the fixed \fIASE\fR namespace (itself the \fIUUID V5\fR of the URL \fBhttps://ase.tools\fR within the standard URL namespace), so the same \fIhint\fR always yields the same UUID, disjoint from those of other applications. An empty \fIhint\fR yields random \fIUUID V4\fR values instead.
13
- .IP \(bu 4
14
- With type \fBsha1\fR, the \fIhint\fR yields its 40-character hexadecimal \fISHA-1\fR digest. This requires a non-empty \fIhint\fR.
15
- .IP \(bu 4
16
- With type \fBnanoid\fR, the \fIhint\fR yields its 10-character, \fINanoId\fR-style \fIbase62\fR hash (its \fISHA-1\fR digest, \fIbase62\fR-encoded and truncated), a short but still reproducible identifier, as used for the content binding of the \fBEffort\fR key of the task plans. This requires a non-empty \fIhint\fR, too.
17
- .RE 0
18
- .P
19
- This backs the \fBuuid\fR, \fBsha1\fR, and \fBnanoid\fR types of the \fBase-meta-mint\fR skill (and the MCP tool \fBase_mint\fR), while the language-level identifier types of that skill require the AI and hence exist in the skill only.
20
- .SH "OPTIONS"
21
- .RS 0
22
- .IP \(bu 4
23
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
24
- .IP \(bu 4
25
- \[lB]\fB-t\fR|\fB--type\fR \fBuuid\fR|\fBsha1\fR|\fBnanoid\fR\[rB]: The identifier type (default: \fBuuid\fR).
26
- .IP \(bu 4
27
- \[lB]\fB-c\fR|\fB--count\fR \fIcount\fR\[rB]: The number of identifiers to mint, a positive integer (default: \fB1\fR). It is honored for an empty \fIhint\fR only, where random \fIUUID V4\fR values are minted. As hashing a non-empty \fIhint\fR always yields exactly one identifier, a larger \fIcount\fR is then reduced to \fB1\fR, and a warning is printed on standard error.
28
- .RE 0
29
- .SH "ARGUMENTS"
30
- .RS 0
31
- .IP \(bu 4
32
- \[lB]\fIhint\fR \[lB]...\[rB]\[rB]: The hint the identifiers are derived from, formed by all remaining arguments joined by single spaces (default: empty).
33
- .RE 0
34
- .SH "EXIT STATUS"
35
- .P
36
- Exits with status \fB0\fR on success, and with status \fB1\fR on an invalid \fIcount\fR or type \fBsha1\fR or \fBnanoid\fR with an empty \fIhint\fR.
37
- .SH "EXAMPLES"
38
- .P
39
- .RS 2
40
- .nf
41
- # mint the deterministic UUID of a hint
42
- $ ase util mint the user account entity
43
-
44
- # mint three random UUIDs
45
- $ ase util mint -c 3
46
-
47
- # mint the SHA-1 digest of a hint
48
- $ ase util mint -t sha1 the user account entity
49
-
50
- # mint the short NanoId-style hash of a hint
51
- $ ase util mint -t nanoid the user account entity
52
- .fi
53
- .RE
54
- .SH "SEE ALSO"
55
- .P
56
- \fBase\fR(1), \fBase-util\fR(1).
57
- .SH "AUTHOR"
58
- .P
59
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,72 +0,0 @@
1
- .TH "ASE-UTIL-WORKTREE" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util-worktree\fR - Resolve the ASE Worktree Directories
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util worktree\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .P
8
- \fBase util worktree base\fR \[lB]\fB-c\fR|\fB--create\fR\[rB] \[lB]\fB-t\fR|\fB--temp\fR\[rB]
9
- .P
10
- \fBase util worktree path\fR \[lB]\fB-c\fR|\fB--create\fR\[rB] \[lB]\fB-t\fR|\fB--temp\fR\[rB] \fIid\fR
11
- .SH "DESCRIPTION"
12
- .P
13
- \fBase util worktree\fR safely resolves the directories of the Git worktrees managed by \fIASE\fR (e.g., the worktrees of the \fB--worktree\fR option of the skills and of the agents), which all reside below the base directory \fB<repo-root>/.ase/worktree\fR, where \fIrepo-root\fR is the fully resolved top-level directory of the Git working tree of the current working directory. The \fItemporary\fR worktrees reside below \fB<repo-root>/.ase/worktree/.temp\fR, a namespace disjoint from all regular worktree ids (as ids never contain a \fB.\fR).
14
- .P
15
- The resolution is \fIvalidated\fR: as \fBgit worktree add\fR silently follows a symbolic link, every already existing path component below the repository root (\fB.ase\fR, \fBworktree\fR, \fB.temp\fR, and the \fIid\fR leaf) has to be a real directory, neither a symbolic link, nor any other file, nor an aliased path, so a repository carrying a committed \fB.ase\fR symbolic link can never make a worktree be written outside of it. Not yet existing components are fine, as they are created later on.
16
- .P
17
- The resolved directory is printed to standard output. Without a sub-command, the usage information is shown and the command exits with status \fB1\fR.
18
- .SH "OPTIONS"
19
- .RS 0
20
- .IP \(bu 4
21
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
22
- .RE 0
23
- .SH "COMMANDS"
24
- .RS 0
25
- .IP \(bu 4
26
- \fBase util worktree base\fR \[lB]\fB-c\fR|\fB--create\fR\[rB] \[lB]\fB-t\fR|\fB--temp\fR\[rB]: Print the validated base directory \fB<repo-root>/.ase/worktree\fR holding all \fIASE\fR worktrees. The options are:
27
- .RS 4
28
- .IP \(bu 4
29
- \[lB]\fB-c\fR|\fB--create\fR\[rB]: Create the base directory (with all its missing parents) if it does not exist yet, and validate it again afterwards.
30
- .IP \(bu 4
31
- \[lB]\fB-t\fR|\fB--temp\fR\[rB]: Print the base directory \fB<repo-root>/.ase/worktree/.temp\fR of the temporary worktrees instead.
32
- .IP \(bu 4
33
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
34
- .RE 0
35
- .IP \(bu 4
36
- \fBase util worktree path\fR \[lB]\fB-c\fR|\fB--create\fR\[rB] \[lB]\fB-t\fR|\fB--temp\fR\[rB] \fIid\fR: Print the validated worktree directory \fB<repo-root>/.ase/worktree/<id>\fR of a single worktree \fIid\fR, which has to be non-empty and match \fB\[lB]A-Za-z0-9_-\[rB]+\fR, so it is safe both as a single path component and as the Git branch name derived from it. The worktree directory itself is not created, as this is done by \fBgit worktree add\fR. The options are:
37
- .RS 4
38
- .IP \(bu 4
39
- \[lB]\fB-c\fR|\fB--create\fR\[rB]: Create the base directory (not the worktree directory itself) if it does not exist yet.
40
- .IP \(bu 4
41
- \[lB]\fB-t\fR|\fB--temp\fR\[rB]: Resolve the \fIid\fR below the base directory \fB<repo-root>/.ase/worktree/.temp\fR of the temporary worktrees.
42
- .IP \(bu 4
43
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
44
- .RE 0
45
- .RE 0
46
- .SH "FILES"
47
- .RS 0
48
- .IP \(bu 4
49
- \fB<repo-root>/.ase/worktree/\fR: The base directory of all \fIASE\fR worktrees, ignored by Git via the self-ignoring \fB.ase/.gitignore\fR.
50
- .IP \(bu 4
51
- \fB<repo-root>/.ase/worktree/.temp/\fR: The base directory of the temporary \fIASE\fR worktrees.
52
- .RE 0
53
- .SH "EXIT STATUS"
54
- .P
55
- Exits with status \fB0\fR on success, and with status \fB1\fR outside of a Git working tree, on an invalid \fIid\fR, or if a path component is a symbolic link, not a directory, or an aliased path. The group command without a sub-command exits with status \fB1\fR.
56
- .SH "EXAMPLES"
57
- .P
58
- .RS 2
59
- .nf
60
- # print the base directory of all ASE worktrees, creating it if needed
61
- $ ase util worktree base -c
62
-
63
- # create a worktree for the id "FOO-42" at its validated location
64
- $ git worktree add "$(ase util worktree path -c FOO-42)" -b FOO-42
65
- .fi
66
- .RE
67
- .SH "SEE ALSO"
68
- .P
69
- \fBase\fR(1), \fBase-util\fR(1), \fBgit-worktree\fR(1).
70
- .SH "AUTHOR"
71
- .P
72
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,50 +0,0 @@
1
- .TH "ASE-UTIL" "1" "October 2026" "2.0.3" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-util\fR - Utility Commands
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase util\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .P
8
- \fBase util meta\fR \fIname\fR \[lB]...\[rB]
9
- .P
10
- \fBase util compat\fR
11
- .P
12
- \fBase util diagram\fR \[lB]\fIoptions\fR\[rB]
13
- .P
14
- \fBase util worktree\fR \fBbase\fR|\fBpath\fR \[lB]\fIoptions\fR\[rB] \[lB]\fIid\fR\[rB]
15
- .P
16
- \fBase util mint\fR \[lB]\fB-t\fR|\fB--type\fR \fItype\fR\[rB] \[lB]\fB-c\fR|\fB--count\fR \fIcount\fR\[rB] \[lB]\fIhint\fR \[lB]...\[rB]\[rB]
17
- .P
18
- \fBase util metric\fR \[lB]\fB-f\fR|\fB--file\fR \fIfile\fR\[rB] \[lB]\fItext\fR \[lB]...\[rB]\[rB]
19
- .SH "DESCRIPTION"
20
- .P
21
- \fBase util\fR is the entry point group for miscellaneous utility commands. Most of them back the MCP tools of the per-project \fIASE\fR service and the \fIASE\fR skills, but can be used standalone, too. Without a sub-command, the usage information is shown and the command exits with status \fB1\fR.
22
- .SH "OPTIONS"
23
- .RS 0
24
- .IP \(bu 4
25
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
26
- .RE 0
27
- .SH "COMMANDS"
28
- .RS 0
29
- .IP \(bu 4
30
- \fBase util meta\fR \fIname\fR \[lB]...\[rB]: Output the contents of one or more plugin meta files. See \fBase-util-meta\fR(1).
31
- .IP \(bu 4
32
- \fBase util compat\fR: Output the expected probe values of the \fBase-meta-compat\fR self-test skill. See \fBase-util-compat\fR(1).
33
- .IP \(bu 4
34
- \fBase util diagram\fR \[lB]\fIoptions\fR\[rB]: Render a \fIMermaid\fR or \fID2\fR diagram specification as Unicode/ASCII art or SVG. See \fBase-util-diagram\fR(1).
35
- .IP \(bu 4
36
- \fBase util worktree\fR \fBbase\fR|\fBpath\fR \[lB]\fIoptions\fR\[rB] \[lB]\fIid\fR\[rB]: Safely resolve the \fIASE\fR worktree directories below \fB<repo-root>/.ase/worktree\fR. See \fBase-util-worktree\fR(1).
37
- .IP \(bu 4
38
- \fBase util mint\fR \[lB]\fIoptions\fR\[rB] \[lB]\fIhint\fR \[lB]...\[rB]\[rB]: Mint hash-derived identifiers (UUID, SHA-1) out of a hint. See \fBase-util-mint\fR(1).
39
- .IP \(bu 4
40
- \fBase util metric\fR \[lB]\fIoptions\fR\[rB] \[lB]\fItext\fR \[lB]...\[rB]\[rB]: Measure the words, lines, characters, and bytes of a file or a text. See \fBase-util-metric\fR(1).
41
- .RE 0
42
- .SH "EXIT STATUS"
43
- .P
44
- The group command without a sub-command exits with status \fB1\fR.
45
- .SH "SEE ALSO"
46
- .P
47
- \fBase\fR(1), \fBase-util-meta\fR(1), \fBase-util-compat\fR(1), \fBase-util-diagram\fR(1), \fBase-util-worktree\fR(1), \fBase-util-mint\fR(1), \fBase-util-metric\fR(1).
48
- .SH "AUTHOR"
49
- .P
50
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR