@rse/ase 2.0.1 → 2.0.2

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 (119) hide show
  1. package/dst/ase-config.js +2 -1
  2. package/dst/ase-hook.js +2 -7
  3. package/dst/ase-lib-server-cli.js +6 -5
  4. package/dst/ase-task-board-core.js +1 -1
  5. package/dst/ase-task-board-tui-control.js +10 -10
  6. package/dst/ase-task-board-tui-model.js +10 -14
  7. package/dst/ase-task-board-tui-view.js +14 -9
  8. package/dst/ase-task-board-web-client.css +1 -1
  9. package/dst/ase-task-board-web-client.js +2 -2
  10. package/dst/ase-task-board-web-server.js +2 -25
  11. package/dst/ase-task-store-issues.js +76 -0
  12. package/dst/ase-task-store-plugin-gitea.js +2 -65
  13. package/dst/ase-task-store-plugin-github.js +2 -65
  14. package/dst/ase-task-store-plugin-gitlab.js +2 -65
  15. package/dst/ase-util-diagram.js +3 -5
  16. package/dst/man/ase-agent-adhoc.1 +1 -1
  17. package/dst/man/ase-agent-condenser.1 +1 -1
  18. package/dst/man/ase-agent-editor.1 +1 -1
  19. package/dst/man/ase-agent-estimator.1 +1 -1
  20. package/dst/man/ase-agent-fleet.1 +1 -1
  21. package/dst/man/ase-agent-implementer.1 +1 -1
  22. package/dst/man/ase-agent-integrator.1 +1 -1
  23. package/dst/man/ase-agent-qualifier.1 +1 -1
  24. package/dst/man/ase-agent-rebooter.1 +1 -1
  25. package/dst/man/ase-agent-relay.1 +1 -1
  26. package/dst/man/ase-agent-researcher.1 +1 -1
  27. package/dst/man/ase-agent.1 +1 -1
  28. package/dst/man/ase-artifact-list.1 +1 -1
  29. package/dst/man/ase-artifact-name.1 +1 -1
  30. package/dst/man/ase-artifact.1 +1 -1
  31. package/dst/man/ase-config-delete.1 +1 -1
  32. package/dst/man/ase-config-edit.1 +1 -1
  33. package/dst/man/ase-config-get.1 +1 -1
  34. package/dst/man/ase-config-init.1 +1 -1
  35. package/dst/man/ase-config-list.1 +1 -1
  36. package/dst/man/ase-config-set.1 +1 -1
  37. package/dst/man/ase-config.1 +1 -1
  38. package/dst/man/ase-hook-permission-request.1 +1 -1
  39. package/dst/man/ase-hook-pre-tool-use.1 +1 -1
  40. package/dst/man/ase-hook-session-end.1 +1 -1
  41. package/dst/man/ase-hook-session-persona.1 +1 -1
  42. package/dst/man/ase-hook-session-start.1 +1 -1
  43. package/dst/man/ase-hook-stop.1 +1 -1
  44. package/dst/man/ase-hook-user-prompt-submit.1 +1 -1
  45. package/dst/man/ase-hook.1 +1 -1
  46. package/dst/man/ase-man.1 +1 -1
  47. package/dst/man/ase-mcp.1 +1 -1
  48. package/dst/man/ase-service-log.1 +1 -1
  49. package/dst/man/ase-service-send.1 +1 -1
  50. package/dst/man/ase-service-start.1 +1 -1
  51. package/dst/man/ase-service-status.1 +1 -1
  52. package/dst/man/ase-service-stop.1 +1 -1
  53. package/dst/man/ase-service.1 +1 -1
  54. package/dst/man/ase-setup-disable.1 +1 -1
  55. package/dst/man/ase-setup-enable.1 +1 -1
  56. package/dst/man/ase-setup-install.1 +1 -1
  57. package/dst/man/ase-setup-mcp.1 +1 -1
  58. package/dst/man/ase-setup-status.1 +1 -1
  59. package/dst/man/ase-setup-statusline.1 +1 -1
  60. package/dst/man/ase-setup-telemetry.1 +1 -1
  61. package/dst/man/ase-setup-uninstall.1 +1 -1
  62. package/dst/man/ase-setup-update.1 +1 -1
  63. package/dst/man/ase-setup.1 +1 -1
  64. package/dst/man/ase-spec-export.1 +1 -1
  65. package/dst/man/ase-spec-lint.1 +1 -1
  66. package/dst/man/ase-spec-preview.1 +1 -1
  67. package/dst/man/ase-spec.1 +1 -1
  68. package/dst/man/ase-statusline.1 +1 -1
  69. package/dst/man/ase-task-assign.1 +1 -1
  70. package/dst/man/ase-task-board.1 +3 -3
  71. package/dst/man/ase-task-delete.1 +1 -1
  72. package/dst/man/ase-task-edit.1 +1 -1
  73. package/dst/man/ase-task-idscheme.1 +1 -1
  74. package/dst/man/ase-task-lifecycle.1 +1 -1
  75. package/dst/man/ase-task-list.1 +1 -1
  76. package/dst/man/ase-task-load.1 +1 -1
  77. package/dst/man/ase-task-newid.1 +1 -1
  78. package/dst/man/ase-task-purge.1 +1 -1
  79. package/dst/man/ase-task-rename.1 +1 -1
  80. package/dst/man/ase-task-request.1 +1 -1
  81. package/dst/man/ase-task-save.1 +1 -1
  82. package/dst/man/ase-task-status.1 +1 -1
  83. package/dst/man/ase-task-store.1 +1 -1
  84. package/dst/man/ase-task-view.1 +1 -1
  85. package/dst/man/ase-task.1 +1 -1
  86. package/dst/man/ase-util-compat.1 +1 -1
  87. package/dst/man/ase-util-diagram.1 +1 -1
  88. package/dst/man/ase-util-meta.1 +1 -1
  89. package/dst/man/ase-util-metric.1 +1 -1
  90. package/dst/man/ase-util-mint.1 +1 -1
  91. package/dst/man/ase-util-worktree.1 +1 -1
  92. package/dst/man/ase-util.1 +1 -1
  93. package/dst/man/ase.1 +1 -1
  94. package/package.json +1 -1
  95. package/plugin/.claude-plugin/plugin.json +1 -1
  96. package/plugin/.codex-plugin/plugin.json +1 -1
  97. package/plugin/.github/plugin/plugin.json +1 -1
  98. package/plugin/meta/ase-common-resolve.md +2 -2
  99. package/plugin/mods/ase-mods.ts +6 -5
  100. package/plugin/skills/ase-arch-analyze/SKILL.md +3 -1
  101. package/plugin/skills/ase-code-analyze/SKILL.md +8 -0
  102. package/plugin/skills/ase-code-edit/SKILL.md +5 -4
  103. package/plugin/skills/ase-code-edit/help.md +1 -1
  104. package/plugin/skills/ase-code-lint/SKILL.md +15 -4
  105. package/plugin/skills/ase-help-intent/data.md +36 -18
  106. package/plugin/skills/ase-help-skill/help.md +3 -4
  107. package/plugin/skills/ase-meta-quorum/SKILL.md +9 -0
  108. package/plugin/skills/ase-meta-quorum/help.md +5 -3
  109. package/plugin/skills/ase-meta-workflow/sample.md +5 -3
  110. package/plugin/skills/ase-repo-changelog/SKILL.md +8 -9
  111. package/plugin/skills/ase-repo-changelog/help.md +2 -2
  112. package/plugin/skills/ase-spec-edit/SKILL.md +2 -1
  113. package/plugin/skills/ase-spec-edit/help.md +2 -1
  114. package/plugin/skills/ase-sync-reconcile/help.md +4 -4
  115. package/plugin/skills/ase-task-dissect/SKILL.md +10 -6
  116. package/plugin/skills/ase-task-grill/help.md +1 -1
  117. package/plugin/skills/ase-task-implement/SKILL.md +58 -1
  118. package/plugin/skills/ase-task-implement/help.md +16 -0
  119. package/plugin/skills/ase-task-list/help.md +2 -2
@@ -367,7 +367,7 @@ information.
367
367
  should be clarified), `IMPLEMENTATION` (inner technical details,
368
368
  can be clarified), `REGRESSION` (what must not break, should be
369
369
  clarified), or `CONFIRMATION` (what proves the specified behavior,
370
- should be clarified) -- and a 1-2 word `TOPIC` hint. The questions
370
+ should be clarified) -- and a 1-3 word `TOPIC` hint. The questions
371
371
  of a round are sorted by descending focus area importance
372
372
  (`DOMAIN`, `INTERFACE`, `ARCHITECTURE`, `IMPLEMENTATION`,
373
373
  `REGRESSION`, `CONFIRMATION`). Questions of focus area
@@ -1169,11 +1169,10 @@ Shorten a document to at most 250 words unattended:
1169
1169
 
1170
1170
  The `ase-help-skill` skill renders the *manual page* (`help.md`) of the
1171
1171
  ASE skill addressed by *skill-name*. The page is emitted verbatim,
1172
- framed between a `( HELP )` header and footer rule.
1172
+ framed between a `MANUAL PAGE` header and footer rule.
1173
1173
 
1174
1174
  The *skill-name* is resolved against a *catalog* of all ASE skills --
1175
- one `name: purpose` entry per skill, generated into
1176
- `skills/ase-help-skill/data.md` by `npm start build` in `plugin/`.
1175
+ one `name: purpose` entry per skill, grouped by skill category.
1177
1176
  Before resolving, any leading `/` and `ase:` prefix is stripped, so
1178
1177
  `ase-code-lint`, `/ase-code-lint`, and `ase:ase-code-lint` are
1179
1178
  equivalent. Resolution then proceeds in three tiers, each tried only if
@@ -1191,7 +1190,7 @@ most nine answer lines, a broader abbreviation such as `task` shows the
1191
1190
  first nine candidates and states how many exist in total.
1192
1191
 
1193
1192
  If *skill-name* is omitted, the whole catalog is rendered as a
1194
- browsable `Skill`/`Purpose` table instead.
1193
+ browsable list, grouped by skill category, instead.
1195
1194
 
1196
1195
  The skill exposes *no* option flags beyond `--help`/`-h`.
1197
1196
 
@@ -2062,9 +2061,11 @@ complete, unmodified individual responses.
2062
2061
  - `--models`|`-m` *model*[,...]:
2063
2062
  Restrict the *foreign* LLMs that are queried to the given
2064
2063
  comma-separated list of *model* tokens. Recognized tokens are
2065
- `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, and `qwen`,
2066
- where `all` selects every model. The default is `all`. Models that
2067
- are not selected (or not available) are *silently skipped*.
2064
+ `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, `qwen`,
2065
+ `claude`, `codex`, and `copilot`, where `all` selects every API-based
2066
+ model, but *not* the harness-based `claude`, `codex`, and `copilot`
2067
+ models, which are queried only when given explicitly. The default
2068
+ is `all`. Models that are not selected (or not available) are *silently skipped*.
2068
2069
  Anthropic Claude (the skill itself) is *always* included,
2069
2070
  independent of this option.
2070
2071
 
@@ -2597,8 +2598,8 @@ changes in the Git *index*.
2597
2598
  Each entry is formatted as `<change-type> [<artifact-kind>]: <summary>`
2598
2599
  where *change-type* is one of `FEATURE`, `IMPROVEMENT`, `BUGFIX`,
2599
2600
  `UPDATE`, `CLEANUP`, or `REFACTOR`, and *artifact-kind* is one or more
2600
- comma-separated *artifact class* tags out of `spec`, `arch`, `code`,
2601
- `docs`, `infr`, or `othr`. Entries are grouped and sorted by this
2601
+ comma-separated *artifact class* tags out of `spec`, `code`, `docs`,
2602
+ `infr`, or `othr`. Entries are grouped and sorted by this
2602
2603
  prefix. The date in the section header is also updated to the current
2603
2604
  date.
2604
2605
 
@@ -3392,7 +3393,8 @@ approach selection close with an `EDIT TODO` box showing the established
3392
3393
 
3393
3394
  The change set stays strictly restricted to the `SPEC` artifacts -- the
3394
3395
  artifact kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are never
3395
- touched. Every generated artifact carries the current `Created:` and
3396
+ touched, except for an entry in an already existing `CHANGELOG.md`
3397
+ file. Every generated artifact carries the current `Created:` and
3396
3398
  `Modified:` timestamps, and every changed artifact gets its `Modified:`
3397
3399
  timestamp refreshed.
3398
3400
 
@@ -3800,13 +3802,13 @@ a unified diff instead.
3800
3802
  as nothing is written to disk.
3801
3803
 
3802
3804
  - `--target`|`-t` *target*[,...]:
3803
- The comma-separated list of artifact kinds to update. Required (the
3804
- skill errors out on an empty target).
3805
+ The comma-separated list of artifact kinds to update (default:
3806
+ `CODE,DOCS,INFR,OTHR`). An empty target lets the skill error out.
3805
3807
 
3806
3808
  - `--source`|`-s` *source*[,...]:
3807
3809
  The comma-separated list of artifact kinds to update *from*. The
3808
- special value `auto` resolves to all recognized kinds except those
3809
- in *target*.
3810
+ special value `auto` (the default) resolves to all recognized kinds
3811
+ except those in *target*.
3810
3812
 
3811
3813
  ## ARGUMENTS
3812
3814
 
@@ -4711,7 +4713,7 @@ in state `[-]` (cancelled) or `[>]` (deferred) are never questioned.
4711
4713
  ## ARGUMENTS
4712
4714
 
4713
4715
  - *id*:
4714
- Grill the task with the unique identifier *id* (default: `default`).
4716
+ Grill the task with the unique identifier *id* (default: the current task).
4715
4717
  The skill accepts *only* an optional *id* argument and never a
4716
4718
  free-text instruction.
4717
4719
 
@@ -4923,6 +4925,22 @@ the entire verification phase is strictly skipped: no build, tests,
4923
4925
  linter, type-checker, or program execution is performed once the
4924
4926
  source files have been modified.
4925
4927
 
4928
+ The implementation runs to *completion*: the skill never concludes
4929
+ while any point of the plan is still unimplemented, neither because the
4930
+ change set grew large nor because an open question stands in the way.
4931
+ Undecided details and defensible alternatives are therefore *decided by
4932
+ the skill itself*, guided by the surrounding artifacts and the
4933
+ internalized tenets, instead of interrupting the run with a question.
4934
+ Once the change set is applied, the run closes with up to two boxed
4935
+ summaries: `OPEN POINTS` lists everything now waiting for the user --
4936
+ points left unimplemented on a *genuine blocker* no assumption can
4937
+ bridge, follow-ups deliberately left out of scope with their reason,
4938
+ and results needing review -- and `DECISIONS` lists each decision the
4939
+ skill took on its own together with its rationale, so it can be
4940
+ revisited or overruled. Either box is omitted entirely when it has no
4941
+ content; a run which implemented every point and decided nothing on its
4942
+ own emits no box at all.
4943
+
4926
4944
  After implementation, the user is asked whether to stop, hand off to
4927
4945
  `ase-task-edit`, hand off to `ase-task-integrate`, or delete the task
4928
4946
  plan, unless `--next` pre-selects this choice.
@@ -5275,8 +5293,8 @@ DEFERRED INTEGRATING INTEGRATED CANCELLED
5275
5293
  - `--include`|`-i`=*state*[`,`...]:
5276
5294
  Restrict the listed task plans to the given comma-separated list of
5277
5295
  lifecycle states (e.g. `IMPLEMENTING,STALLED`). Without this option,
5278
- all states are listed. The `none` sentinel selects no state at all,
5279
- the `finished` sentinel selects the finished states.
5296
+ all states are listed. The `none` sentinel (the default) imposes no
5297
+ restriction, the `finished` sentinel selects the finished states.
5280
5298
 
5281
5299
  - `--exclude`|`-e`=*state*[`,`...]:
5282
5300
  Remove the given comma-separated list of lifecycle states from the
@@ -13,11 +13,10 @@
13
13
 
14
14
  The `ase-help-skill` skill renders the *manual page* (`help.md`) of the
15
15
  ASE skill addressed by *skill-name*. The page is emitted verbatim,
16
- framed between a `( HELP )` header and footer rule.
16
+ framed between a `MANUAL PAGE` header and footer rule.
17
17
 
18
18
  The *skill-name* is resolved against a *catalog* of all ASE skills --
19
- one `name: purpose` entry per skill, generated into
20
- `skills/ase-help-skill/data.md` by `npm start build` in `plugin/`.
19
+ one `name: purpose` entry per skill, grouped by skill category.
21
20
  Before resolving, any leading `/` and `ase:` prefix is stripped, so
22
21
  `ase-code-lint`, `/ase-code-lint`, and `ase:ase-code-lint` are
23
22
  equivalent. Resolution then proceeds in three tiers, each tried only if
@@ -35,7 +34,7 @@ most nine answer lines, a broader abbreviation such as `task` shows the
35
34
  first nine candidates and states how many exist in total.
36
35
 
37
36
  If *skill-name* is omitted, the whole catalog is rendered as a
38
- browsable `Skill`/`Purpose` table instead.
37
+ browsable list, grouped by skill category, instead.
39
38
 
40
39
  The skill exposes *no* option flags beyond `--help`/`-h`.
41
40
 
@@ -38,6 +38,15 @@ by querying *multiple* AIs for an *optimal consensus*.
38
38
 
39
39
  1. <step id="STEP 1: Preview Own Answer">
40
40
 
41
+ <if condition="<getopt-arguments/> is empty">
42
+ Only output the following <template/> and then immediately *STOP*
43
+ processing the entire current skill:
44
+
45
+ <template>
46
+ ⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: expected a `<question>` argument
47
+ </template>
48
+ </if>
49
+
41
50
  The user-selectable foreign models are restricted by the
42
51
  `--models`/`-m` option, parsed into <getopt-option-models/>
43
52
  as a comma-separated list of model tokens. The getopt parser
@@ -29,9 +29,11 @@ complete, unmodified individual responses.
29
29
  - `--models`|`-m` *model*[,...]:
30
30
  Restrict the *foreign* LLMs that are queried to the given
31
31
  comma-separated list of *model* tokens. Recognized tokens are
32
- `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, and `qwen`,
33
- where `all` selects every model. The default is `all`. Models that
34
- are not selected (or not available) are *silently skipped*.
32
+ `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, `qwen`,
33
+ `claude`, `codex`, and `copilot`, where `all` selects every API-based
34
+ model, but *not* the harness-based `claude`, `codex`, and `copilot`
35
+ models, which are queried only when given explicitly. The default
36
+ is `all`. Models that are not selected (or not available) are *silently skipped*.
35
37
  Anthropic Claude (the skill itself) is *always* included,
36
38
  independent of this option.
37
39
 
@@ -17,10 +17,12 @@ Analyze and Resolve Source Code Problems
17
17
 
18
18
  <expand name="getopt"
19
19
  arg1="optimizer"
20
- arg2="--id|-i <id>=optimizer">
20
+ arg2="--id|-i=optimizer">
21
21
  $ARGUMENTS
22
22
  </expand>
23
23
 
24
+ Set <id><getopt-option-id/></id>.
25
+
24
26
  <flow>
25
27
 
26
28
  1. <step id="STEP 1: Analyze Code">
@@ -29,7 +31,7 @@ Analyze and Resolve Source Code Problems
29
31
  subagent_type="general-purpose"
30
32
  run_in_background=false>
31
33
 
32
- Run <skill name="ase-code-analyze" args="--prefix <id/> <getopt-arguments/>"/>
34
+ Run <skill name="ase:ase-code-analyze" args="--prefix <id/> <getopt-arguments/>"/>
33
35
 
34
36
  </agent>
35
37
 
@@ -39,7 +41,7 @@ Analyze and Resolve Source Code Problems
39
41
 
40
42
  <parallel>
41
43
 
42
- For each `P<n/>` in the result set, in ascending order and strictly *one at a time*:
44
+ For each `P<n/>` in the result set, in ascending order:
43
45
 
44
46
  1. Call the Agent:
45
47
 
@@ -58,10 +58,9 @@ related changes:
58
58
  The <artifact-kind/> is one or more of the following *artifact* tags,
59
59
  classifying which kind of artifact the change primarily touches. If
60
60
  multiple artifact kinds apply, comma-separate them
61
- (e.g. `[arch, code]`):
61
+ (e.g. `[code, docs]`):
62
62
 
63
63
  - `spec`: requirement/specification artifacts
64
- - `arch`: architecture/design artifacts
65
64
  - `code`: source code artifacts
66
65
  - `docs`: documentation artifacts
67
66
  - `infr`: infrastructure/build/tooling artifacts
@@ -114,14 +113,14 @@ Processing
114
113
  level-2 section (next patch version, current date) *above* it, which
115
114
  then becomes the *first* (most recent) section all subsequent steps
116
115
  operate on - the already released section *MUST* *NOT* be modified.
117
- If this command produces *no* output, the
118
- first section is still in-progress/untagged, so use the `N.M.K` from
119
- the *second* level-2 header as the baseline tag instead. If *no*
116
+ If this command produces *no* output, the first section is still
117
+ in-progress/untagged, so use the `N.M.K` from the *second* level-2
118
+ header as the baseline tag instead. Then check all Git commits
119
+ between `HEAD` and this baseline tag with the command
120
+ `git log N.M.K..HEAD --numstat --pretty=format:'%h: %s'`. If *no*
120
121
  second level-2 header exists (very first, still untagged release),
121
122
  skip the baseline tag and check *all* Git commits with the command
122
- `git log HEAD --numstat --pretty=format:'%h: %s'` instead. Then
123
- check all Git commits between `HEAD` and this baseline tag with the
124
- command `git log N.M.K..HEAD --numstat --pretty=format:'%h: %s'`.
123
+ `git log HEAD --numstat --pretty=format:'%h: %s'` instead.
125
124
 
126
125
  For finding the corresponding staged Git *changes* in the Git
127
126
  *index*, use the command `git diff --cached --numstat`, but silently
@@ -152,7 +151,7 @@ Processing
152
151
  tag(s) from the paths of the changed files. To classify a changed
153
152
  file to its artifact class, call the `ase_artifact_list(kind: [
154
153
  ... ])` tool of the `ase` MCP server *once*, passing the `kind`
155
- tokens (`spec`, `arch`, `code`, `docs`, `infr`, `othr`), and read
154
+ tokens (`spec`, `code`, `docs`, `infr`, `othr`), and read
156
155
  the returned `artifacts` array of `{ kind, files }` objects to match
157
156
  each changed file to its kind. Use the matched lower-cased kind
158
157
  directly as its <artifact-kind/> tag, and comma-separate multiple
@@ -18,8 +18,8 @@ changes in the Git *index*.
18
18
  Each entry is formatted as `<change-type> [<artifact-kind>]: <summary>`
19
19
  where *change-type* is one of `FEATURE`, `IMPROVEMENT`, `BUGFIX`,
20
20
  `UPDATE`, `CLEANUP`, or `REFACTOR`, and *artifact-kind* is one or more
21
- comma-separated *artifact class* tags out of `spec`, `arch`, `code`,
22
- `docs`, `infr`, or `othr`. Entries are grouped and sorted by this
21
+ comma-separated *artifact class* tags out of `spec`, `code`, `docs`,
22
+ `infr`, or `othr`. Entries are grouped and sorted by this
23
23
  prefix. The date in the section header is also updated to the current
24
24
  date.
25
25
 
@@ -47,7 +47,8 @@ and *MUST* *NOT* call `ase_task_save(...)`. Instead, it applies the
47
47
  requested edit *in place*, so the *implementing* state *requires* `Edit`
48
48
  and `Write` to modify the affected artifacts. Every modification *MUST*
49
49
  stay restricted to the `SPEC` artifacts the edit actually demands -- the
50
- kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are *never* touched.
50
+ kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are *never* touched,
51
+ except for an entry in an already existing `CHANGELOG.md` file.
51
52
 
52
53
  <define name="todo-box">
53
54
 
@@ -44,7 +44,8 @@ approach selection close with an `EDIT TODO` box showing the established
44
44
 
45
45
  The change set stays strictly restricted to the `SPEC` artifacts -- the
46
46
  artifact kinds `CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are never
47
- touched. Every generated artifact carries the current `Created:` and
47
+ touched, except for an entry in an already existing `CHANGELOG.md`
48
+ file. Every generated artifact carries the current `Created:` and
48
49
  `Modified:` timestamps, and every changed artifact gets its `Modified:`
49
50
  timestamp refreshed.
50
51
 
@@ -70,13 +70,13 @@ a unified diff instead.
70
70
  as nothing is written to disk.
71
71
 
72
72
  - `--target`|`-t` *target*[,...]:
73
- The comma-separated list of artifact kinds to update. Required (the
74
- skill errors out on an empty target).
73
+ The comma-separated list of artifact kinds to update (default:
74
+ `CODE,DOCS,INFR,OTHR`). An empty target lets the skill error out.
75
75
 
76
76
  - `--source`|`-s` *source*[,...]:
77
77
  The comma-separated list of artifact kinds to update *from*. The
78
- special value `auto` resolves to all recognized kinds except those
79
- in *target*.
78
+ special value `auto` (the default) resolves to all recognized kinds
79
+ except those in *target*.
80
80
 
81
81
  ## ARGUMENTS
82
82
 
@@ -142,7 +142,8 @@ Procedure
142
142
 
143
143
  2. *Identify the parts* according to the task id scheme of the
144
144
  project: for *every* part in <parts/>, in their derived order,
145
- call the `ase_task_newid(title: "<scope/>", proposal:
145
+ remember its <part-id/> as its <part-proposal/> and call the
146
+ `ase_task_newid(title: "<scope/>", proposal:
146
147
  "<part-id/>", taken: [ <previous/> ])` tool of the `ase` MCP
147
148
  server, where <previous/> lists the already re-identified
148
149
  <part-id/> of all preceding parts (as the tool reserves ids for
@@ -175,8 +176,9 @@ Procedure
175
176
  Call the `ase_task_list(verbose: false)` tool of the `ase` MCP
176
177
  server and set <existing/> to the `id` fields of the returned
177
178
  `tasks` array. Do not output anything related to this MCP tool
178
- call. Set <collisions/> to all <part-id/> of <parts/> which are
179
- already present in <existing/>.
179
+ call. Set <collisions/> to all <part-proposal/> of <parts/> which
180
+ are already present in <existing/> (as each <part-id/> itself was
181
+ re-identified to a free id in step 3.2).
180
182
 
181
183
  <if condition="<collisions/> is not empty AND <getopt-option-force/> is not equal `true`">
182
184
  Only output the following <template/> -- with <collisions/>
@@ -200,8 +202,9 @@ Procedure
200
202
  </if>
201
203
 
202
204
  <if condition="<collisions/> is not empty AND <getopt-option-force/> is equal `true`">
203
- The colliding sub-task plans are *overwritten* in sub-step 4.3
204
- below. Do not output anything.
205
+ Set the <part-id/> of every colliding part back to its
206
+ <part-proposal/>, so the colliding sub-task plans are
207
+ *overwritten* in sub-step 4.3 below. Do not output anything.
205
208
  </if>
206
209
 
207
210
  3. *Compose and persist one sub-task plan per part*:
@@ -263,7 +266,8 @@ Procedure
263
266
  </elseif>
264
267
 
265
268
  2. Call the `ase_task_save(id: "<part-id/>", text:
266
- "<part-content/>", create: true)` tool of the `ase` MCP server to persist
269
+ "<part-content/>", create: true)` tool of the `ase` MCP server -- for
270
+ a part of <collisions/> *without* the `create` argument -- to persist
267
271
  the sub-task plan -- this MCP tool call is the *only*
268
272
  permitted way to persist it, *NEVER* write the plan file
269
273
  via `Write`/`Edit` or by executing a shell command. If this
@@ -152,7 +152,7 @@ in state `[-]` (cancelled) or `[>]` (deferred) are never questioned.
152
152
  ## ARGUMENTS
153
153
 
154
154
  - *id*:
155
- Grill the task with the unique identifier *id* (default: `default`).
155
+ Grill the task with the unique identifier *id* (default: the current task).
156
156
  The skill accepts *only* an optional *id* argument and never a
157
157
  free-text instruction.
158
158
 
@@ -409,6 +409,32 @@ Procedure
409
409
  here. Do not output anything.
410
410
  </if>
411
411
 
412
+ Set <decisions></decisions> (empty) and
413
+ <open-points></open-points> (empty). They collect, one entry
414
+ each, the decisions you take on your own while implementing and
415
+ whatever ends up waiting for the *user*.
416
+
417
+ The implementation is *complete or it is not done*: you *MUST*
418
+ *NEVER* conclude this step while any point of the task plan is
419
+ still unimplemented -- not because the change set already grew
420
+ large, not because the remaining points look secondary or
421
+ cosmetic, and not because an open question stands in the way.
422
+ Work through *every* point of the plan within this single run.
423
+
424
+ Open questions therefore *MUST* *NOT* end the run: whenever the
425
+ plan leaves a detail undecided or admits several defensible
426
+ alternatives, *decide it yourself* -- picking what best fits the
427
+ surrounding artifacts and the internalized tenets -- and append
428
+ the decision plus a half-sentence rationale to <decisions/>,
429
+ instead of asking the user and stopping. Only a *genuine
430
+ blocker*, which no defensible assumption can bridge (a missing
431
+ credential, an inaccessible external system), may leave a point
432
+ unimplemented; append such a point to <open-points/> instead,
433
+ naming what remains open and why. Append to <open-points/> as
434
+ well whatever else now waits for the user once this run ends --
435
+ follow-ups you deliberately left out of scope, each with its
436
+ reason, and results which genuinely need their review.
437
+
412
438
  You *MUST* *skip* every bullet-point of <task-content/> in
413
439
  checkbox state `[-]` (cancelled) or `[>]` (deferred): neither
414
440
  realize its <text/> in the change set nor perform its check, and
@@ -594,7 +620,38 @@ Procedure
594
620
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇢ changeset: **<task-changeset/>**, ▶ status: **plan implemented**
595
621
  </template>
596
622
 
597
- 7. Give the closing hint by expanding the following (which,
623
+ 7. Close the implementation with the boxed summary of what this run
624
+ left open and what it decided on its own. Both boxes are written
625
+ in the conversation language and the active persona style, list
626
+ *one entry per line*, and are *omitted entirely* when they carry
627
+ no content -- a run which implemented every point and took no
628
+ decision of its own outputs no box at all.
629
+
630
+ <if condition="<open-points/> is not empty">
631
+ Output everything which now waits for the *user* with the
632
+ following <template/>:
633
+
634
+ <template>
635
+ <ase-tpl-boxed title="OPEN POINTS">
636
+ ○ <open-point/>
637
+ </ase-tpl-boxed>
638
+ </template>
639
+ </if>
640
+
641
+ <if condition="<decisions/> is not empty">
642
+ The run decided open questions *on the user's behalf*, so they
643
+ *MUST* be able to revisit or overrule each of them. Output the
644
+ collected decisions -- each naming the chosen option and its
645
+ rationale -- directly below, with the following <template/>:
646
+
647
+ <template>
648
+ <ase-tpl-boxed title="DECISIONS">
649
+ ○ <decision/> -- <rationale/>
650
+ </ase-tpl-boxed>
651
+ </template>
652
+ </if>
653
+
654
+ 8. Give the closing hint by expanding the following (which,
598
655
  depending on the configured <ase-guidance-level/>, may expand
599
656
  into nothing and hence emit no output at all):
600
657
 
@@ -102,6 +102,22 @@ the entire verification phase is strictly skipped: no build, tests,
102
102
  linter, type-checker, or program execution is performed once the
103
103
  source files have been modified.
104
104
 
105
+ The implementation runs to *completion*: the skill never concludes
106
+ while any point of the plan is still unimplemented, neither because the
107
+ change set grew large nor because an open question stands in the way.
108
+ Undecided details and defensible alternatives are therefore *decided by
109
+ the skill itself*, guided by the surrounding artifacts and the
110
+ internalized tenets, instead of interrupting the run with a question.
111
+ Once the change set is applied, the run closes with up to two boxed
112
+ summaries: `OPEN POINTS` lists everything now waiting for the user --
113
+ points left unimplemented on a *genuine blocker* no assumption can
114
+ bridge, follow-ups deliberately left out of scope with their reason,
115
+ and results needing review -- and `DECISIONS` lists each decision the
116
+ skill took on its own together with its rationale, so it can be
117
+ revisited or overruled. Either box is omitted entirely when it has no
118
+ content; a run which implemented every point and decided nothing on its
119
+ own emits no box at all.
120
+
105
121
  After implementation, the user is asked whether to stop, hand off to
106
122
  `ase-task-edit`, hand off to `ase-task-integrate`, or delete the task
107
123
  plan, unless `--next` pre-selects this choice.
@@ -68,8 +68,8 @@ DEFERRED INTEGRATING INTEGRATED CANCELLED
68
68
  - `--include`|`-i`=*state*[`,`...]:
69
69
  Restrict the listed task plans to the given comma-separated list of
70
70
  lifecycle states (e.g. `IMPLEMENTING,STALLED`). Without this option,
71
- all states are listed. The `none` sentinel selects no state at all,
72
- the `finished` sentinel selects the finished states.
71
+ all states are listed. The `none` sentinel (the default) imposes no
72
+ restriction, the `finished` sentinel selects the finished states.
73
73
 
74
74
  - `--exclude`|`-e`=*state*[`,`...]:
75
75
  Remove the given comma-separated list of lifecycle states from the