@rse/ase 0.9.48 → 0.9.50

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 (36) hide show
  1. package/dst/ase-config.js +45 -1
  2. package/dst/ase-guidance.js +89 -0
  3. package/dst/ase-hook.js +17 -6
  4. package/dst/ase-service.js +0 -2
  5. package/dst/ase-setup.js +7 -5
  6. package/dst/ase-statusline.js +28 -4
  7. package/package.json +2 -2
  8. package/plugin/.claude-plugin/plugin.json +1 -1
  9. package/plugin/.codex-plugin/plugin.json +1 -1
  10. package/plugin/.github/plugin/plugin.json +1 -1
  11. package/plugin/meta/ase-common-task.md +9 -0
  12. package/plugin/meta/ase-constitution.md +6 -21
  13. package/plugin/meta/ase-getopt.md +11 -1
  14. package/plugin/meta/ase-persona.md +2 -3
  15. package/plugin/meta/ase-skill.md +92 -4
  16. package/plugin/package.json +2 -2
  17. package/plugin/skills/ase-arch-analyze/SKILL.md +8 -6
  18. package/plugin/skills/ase-arch-discover/SKILL.md +12 -0
  19. package/plugin/skills/ase-code-analyze/SKILL.md +6 -4
  20. package/plugin/skills/ase-code-lint/SKILL.md +16 -0
  21. package/plugin/skills/ase-docs-proofread/SKILL.md +10 -0
  22. package/plugin/skills/ase-help-skill/SKILL.md +10 -2
  23. package/plugin/skills/ase-help-skill/catalog.md +1 -1
  24. package/plugin/skills/ase-meta-brainstorm/SKILL.md +8 -0
  25. package/plugin/skills/ase-meta-commit/SKILL.md +13 -0
  26. package/plugin/skills/ase-meta-config/SKILL.md +165 -0
  27. package/plugin/skills/ase-meta-config/help.md +136 -0
  28. package/plugin/skills/ase-meta-diaboli/help.md +1 -1
  29. package/plugin/skills/ase-meta-diff/SKILL.md +22 -0
  30. package/plugin/skills/ase-meta-review/SKILL.md +13 -1
  31. package/plugin/skills/ase-sync-export/SKILL.md +14 -0
  32. package/plugin/skills/ase-sync-import/SKILL.md +10 -0
  33. package/plugin/skills/ase-task-list/SKILL.md +21 -0
  34. package/plugin/skills/ase-task-view/SKILL.md +21 -0
  35. package/plugin/skills/ase-meta-persona/SKILL.md +0 -84
  36. package/plugin/skills/ase-meta-persona/help.md +0 -60
@@ -6,7 +6,7 @@
6
6
  "homepage": "https://ase.tools",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "https://github.com/rse/ase/issues" },
9
- "version": "0.9.48",
9
+ "version": "0.9.50",
10
10
  "license": "Apache-2.0",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -17,7 +17,7 @@
17
17
  "@rse/stx": "1.1.6",
18
18
  "markdownlint": "0.41.1",
19
19
  "markdownlint-cli2": "0.23.1",
20
- "eslint": "10.7.0",
20
+ "eslint": "10.8.0",
21
21
  "@eslint/markdown": "8.0.3",
22
22
  "eslint-markdown": "0.12.1"
23
23
  },
@@ -465,14 +465,16 @@ interface quality, quality attributes, and architecture governance.
465
465
  "<title/>: <description/>" }` entry per reported PROBLEM and one
466
466
  `{ command: "set", key: "ase-issue-T<n/>", val: "<title/>:
467
467
  <description/>" }` entry per reported TRADEOFF.
468
- </step>
469
468
 
470
- 4. <step id="STEP 4: Give Final Hint">
471
- Finally, output the following <template/> to give a final hint:
469
+ Finally, give a final hint by expanding the following (which,
470
+ depending on the configured <ase-guidance-level/>, may expand into
471
+ nothing and hence emit no output at all):
472
+
473
+ <ase-tpl-hint level="minimal">
474
+ For deeper analysis, suggestions on solution approaches and then final source code changes, use `/ase-code-resolve P{n}` or `/ase-code-resolve T{n}` in the same or even a different session.
475
+ </ase-tpl-hint>
472
476
 
473
- <template>
474
- ⧉ **ASE**: ↪ hint: **For deeper analysis, suggestions on solution approaches and then final source code changes, use `/ase-code-resolve P{n}` or `/ase-code-resolve T{n}` in the same or even a different session.**
475
- </template>
476
477
  </step>
478
+
477
479
  </flow>
478
480
 
@@ -238,6 +238,18 @@ for the technology stack to *provide* the *needed functionality*
238
238
  [...]
239
239
  | **<name-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> | <deps-N/> |
240
240
  </template>
241
+
242
+ 3. Finally, give the closing hints by expanding the following
243
+ (which, depending on the configured <ase-guidance-level/>, may
244
+ each expand into nothing and hence emit no output at all):
245
+
246
+ <ase-tpl-hint level="normal">
247
+ To pick a single component from the ranking against weighted criteria, use `/ase-meta-evaluate`.
248
+ </ase-tpl-hint>
249
+
250
+ <ase-tpl-hint level="verbose">
251
+ Use `/ase-arch-discover --limit` to widen the candidate set, `--staleness` to change the aging threshold, and `--small-scope` to prefer small, focused components.
252
+ </ase-tpl-hint>
241
253
  </step>
242
254
  </flow>
243
255
 
@@ -196,11 +196,13 @@ problems in *performance* and *efficiency*, or problems in *security*.
196
196
  followed by one `{ command: "set", key: "ase-issue-P<n/>", val:
197
197
  "<title/>: <description/>" }` entry per reported problem.
198
198
 
199
- Finally, output the following <template/> to give a final hint:
199
+ Finally, give a final hint by expanding the following (which,
200
+ depending on the configured <ase-guidance-level/>, may expand into
201
+ nothing and hence emit no output at all):
200
202
 
201
- <template>
202
- ⧉ **ASE**: ↪ hint: **For deeper analysis, suggestions on solution approaches and then final problem resolution, use `/ase-code-resolve P{n}` in the same or even a different session.**
203
- </template>
203
+ <ase-tpl-hint level="minimal">
204
+ For deeper analysis, suggestions on solution approaches and then final problem resolution, use `/ase-code-resolve P{n}` in the same or even a different session.
205
+ </ase-tpl-hint>
204
206
 
205
207
  You *MUST* not output anything else in this STEP 3,
206
208
  especially not any further explanations.
@@ -431,6 +431,22 @@ related to a set of code quality aspects.
431
431
  <ase-tpl-bullet-secondary/> **LINT FINISHED**
432
432
  </template>
433
433
 
434
+ 5. Finally, give the closing hints by expanding the following
435
+ (which, depending on the configured <ase-guidance-level/>, may
436
+ each expand into nothing and hence emit no output at all):
437
+
438
+ <if condition="at least one problem in <problems/> was left uncorrected">
439
+ <ase-tpl-hint level="normal">
440
+ For problems whose correction demands more than a local edit, use `/ase-code-resolve` to derive and apply a full solution approach.
441
+ </ase-tpl-hint>
442
+ </if>
443
+
444
+ <if condition="<getopt-option-auto/> is not equal `true`">
445
+ <ase-tpl-hint level="verbose">
446
+ Use `/ase-code-lint --auto` to apply all corrections unattended, and `--severity` to raise the reporting floor.
447
+ </ase-tpl-hint>
448
+ </if>
449
+
434
450
  </step>
435
451
 
436
452
  </flow>
@@ -322,6 +322,16 @@ Analyze documents for spelling, punctuation, or grammar errors
322
322
  <ase-tpl-bullet-secondary/> **PROOFREAD FINISHED**
323
323
  </template>
324
324
 
325
+ 5. Finally, give the closing hint by expanding the following
326
+ (which, depending on the configured <ase-guidance-level/>, may
327
+ expand into nothing and hence emit no output at all):
328
+
329
+ <if condition="<getopt-option-auto/> is not equal `true`">
330
+ <ase-tpl-hint level="verbose">
331
+ Use `/ase-docs-proofread --auto` to apply all corrections unattended.
332
+ </ase-tpl-hint>
333
+ </if>
334
+
325
335
  </step>
326
336
 
327
337
  </flow>
@@ -63,9 +63,17 @@ the *sole* index <skill-ref/> is resolved against:
63
63
  <catalog/>
64
64
 
65
65
  <ase-tpl-foot title="SKILL CATALOG"/>
66
-
67
- ⧉ **ASE**: ✪ skill: **ase-help-skill**, ▶ hint: **run `/ase-help-skill ase-xxx-xxx` for manual page of individual skill**
68
66
  </template>
67
+
68
+ The rendered <catalog/> itself was explicitly requested and
69
+ hence is *always* emitted. Only the trailing pointer to the
70
+ per-skill manual page is a *hint*, so emit it by expanding the
71
+ following (which, depending on the configured
72
+ <ase-guidance-level/>, may expand into nothing):
73
+
74
+ <ase-tpl-hint level="normal">
75
+ run `/ase-help-skill ase-xxx-xxx` for manual page of individual skill
76
+ </ase-tpl-hint>
69
77
  </if>
70
78
 
71
79
  2. Set <skill-ref-raw/> to <skill-ref/> with only its leading and
@@ -55,6 +55,6 @@
55
55
  ○ `ase-task-delete`: Delete a Task Plan
56
56
 
57
57
  ⎈ **OTHER SKILLS**
58
- ○ `ase-meta-persona`: Persona Configuration
58
+ ○ `ase-meta-config`: Configuration Management
59
59
  ○ `ase-meta-compat`: Self-Test ASE Compatibility
60
60
 
@@ -271,6 +271,14 @@ Honor the following tenets throughout the brainstorming:
271
271
  <ase-tpl-bullet-signal/> **RECOMMENDED IDEA**: <recommendation/>
272
272
  </template>
273
273
 
274
+ 5. Finally, give the closing hint by expanding the following (which,
275
+ depending on the configured <ase-guidance-level/>, may expand
276
+ into nothing and hence emit no output at all):
277
+
278
+ <ase-tpl-hint level="normal">
279
+ To turn the recommended idea into a plan, use `/ase-task-edit`; to turn it directly into code, use `/ase-code-craft`.
280
+ </ase-tpl-hint>
281
+
274
282
  </step>
275
283
 
276
284
  </flow>
@@ -71,6 +71,19 @@ currently staged Git changes.
71
71
 
72
72
  Do *not* output any further explanation.
73
73
 
74
+ Finally, give the closing hint by expanding the following (which,
75
+ depending on the configured <ase-guidance-level/>, may expand into
76
+ nothing and hence emit no output at all):
77
+
78
+ <if condition="
79
+ a `CHANGELOG.md` file exists in the project (or in any affected
80
+ sub-package) and is *not* itself part of the staged changes
81
+ ">
82
+ <ase-tpl-hint level="normal">
83
+ The staged changes do not touch `CHANGELOG.md` -- use `/ase-meta-changelog` to update its entries before committing.
84
+ </ase-tpl-hint>
85
+ </if>
86
+
74
87
  </step>
75
88
 
76
89
  </flow>
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: ase-meta-config
3
+ argument-hint: "[--help|-h] [--scope|-s <scope>] <operation> [<args>]"
4
+ description: >
5
+ List, get, set, or delete the layered ASE configuration values across
6
+ the user/project/task/session scope chain.
7
+ Use when the user wants to "configure" ASE, or to inspect or change a
8
+ configuration key like `agent.persona`, `agent.guidance`, `agent.task`,
9
+ or `project.boxing`.
10
+ user-invocable: true
11
+ disable-model-invocation: false
12
+ effort: high
13
+ ---
14
+
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
16
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
18
+
19
+ <skill name="ase-meta-config">
20
+ Configuration Management
21
+ </skill>
22
+
23
+ <expand name="getopt"
24
+ arg1="ase-meta-config"
25
+ arg2="--scope|-s=">
26
+ $ARGUMENTS
27
+ </expand>
28
+
29
+ <objective>
30
+ *List*, *get*, *set*, or *delete* the values of the *layered
31
+ configuration* of ASE, mirroring the non-interactive `ase config
32
+ <operation>` CLI subcommands *exclusively* through the `ase` MCP server.
33
+ </objective>
34
+
35
+ Procedure
36
+ ---------
37
+
38
+ 1. **Determine Operation:**
39
+
40
+ 1. Set <arguments><getopt-arguments/></arguments>, with any leading
41
+ and trailing whitespace stripped. Split <arguments/> into
42
+ whitespace-separated tokens, honoring single and double quotes
43
+ (a quoted token is *one* token, with its surrounding quotes
44
+ removed). Set <operation/> to the *first* token, lower-cased,
45
+ and <operands/> to the list of the *remaining* tokens. If
46
+ <arguments/> is empty, set <operation>(none)</operation> and
47
+ <operands/> to the empty list. Inherit the always existing
48
+ <ase-session-id/> from the current context.
49
+ Do not output anything.
50
+
51
+ 2. Determine the target scope chain:
52
+
53
+ <if condition="<getopt-option-scope/> is empty">
54
+ Set <scope>session:<ase-session-id/></scope>. Reads then cascade
55
+ `user` -> `project` -> `session`, and writes land on the *session*
56
+ layer -- the only layer on which the `agent.task` and `agent.skill`
57
+ keys are writable at all.
58
+ </if>
59
+ <else>
60
+ Set <scope><getopt-option-scope/></scope>, forwarding the given
61
+ scope chain verbatim.
62
+ </else>
63
+
64
+ Do not output anything.
65
+
66
+ 3. You *MUST* *NOT* use `Bash`, `Read`, `Write`, `Edit`, or any
67
+ other filesystem-touching tool anywhere in this skill. *Every*
68
+ configuration access is performed *exclusively* through the
69
+ `ase_config_*` tools of the `ase` MCP server.
70
+ Do not output anything.
71
+
72
+ 2. **Dispatch Operation:**
73
+
74
+ 1. <if condition="<operation/> is `list` AND <operands/> is empty">
75
+ Call the `ase_config_list(scope: "<scope/>")` tool from the `ase`
76
+ MCP server. The result is a structured object with an `entries`
77
+ array where each entry has a `key`, a `value`, and a `scope` field.
78
+
79
+ - If the `entries` array is empty, output the following <template/>:
80
+
81
+ <template>
82
+ ⧉ **ASE**: ⚙ config (scope: `<scope/>`): *(none)*
83
+ </template>
84
+
85
+ - Else output the following <template/>, where each <key/>,
86
+ <value/>, and <entry-scope/> correspond to one entry of the
87
+ `entries` array, in the given order:
88
+
89
+ <template>
90
+ ⧉ **ASE**: ⚙ config (scope: `<scope/>`):
91
+
92
+ | *Key* | *Value* | *Scope* |
93
+ |------------------|------------------|------------------|
94
+ | `<key/>` | **<value/>** | `<entry-scope/>` |
95
+ | [...] | [...] | [...] |
96
+
97
+ </template>
98
+ </if>
99
+
100
+ 2. <elseif condition="<operation/> is `get` AND <operands/> has exactly one token">
101
+ Set <key/> to the single token of <operands/>. Call the
102
+ `ase_config_get(key: "<key/>", scope: "<scope/>")` tool from the
103
+ `ase` MCP server and set <text/> to its `text` output field.
104
+
105
+ - If <text/> is empty, the key is not set at all. Output the
106
+ following <template/>:
107
+
108
+ <template>
109
+ ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): *(not set)*
110
+ </template>
111
+
112
+ - Else set <value/> to the JSON-decoded <text/> and output the
113
+ following <template/>:
114
+
115
+ <template>
116
+ ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): **<value/>**
117
+ </template>
118
+ </elseif>
119
+
120
+ 3. <elseif condition="<operation/> is `set` AND <operands/> has exactly two tokens">
121
+ Set <key/> to the *first* and <value/> to the *second* token of
122
+ <operands/>. Call the `ase_config_set(key: "<key/>", val:
123
+ "<value/>", scope: "<scope/>")` tool from the `ase` MCP server.
124
+
125
+ Then, if <key/> is one of the three keys steering your *own*
126
+ behaviour, you *MUST* immediately adopt the new <value/> for
127
+ the remainder of the session -- *including* the output of this
128
+ very skill run -- by re-evaluating and internalizing the
129
+ corresponding rules of the constitution: for `agent.persona` set
130
+ <ase-persona-style><value/></ase-persona-style> and re-evaluate
131
+ the `Persona Communication Style` rules, for `agent.guidance` set
132
+ <ase-guidance-level><value/></ase-guidance-level> and re-evaluate
133
+ the `Guidance Hint Level` rules, and for `project.boxing` set
134
+ <ase-project-boxing><value/></ase-project-boxing> and re-evaluate
135
+ the `Artifact Boxing Transparency` rules. Do not output anything
136
+ for this.
137
+
138
+ Then only output the following <template/>:
139
+
140
+ <template>
141
+ ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): **<value/>** (*updated*)
142
+ </template>
143
+ </elseif>
144
+
145
+ 4. <elseif condition="<operation/> is `delete` AND <operands/> has exactly one token">
146
+ Set <key/> to the single token of <operands/>. Call the
147
+ `ase_config_delete(key: "<key/>", scope: "<scope/>")` tool from
148
+ the `ase` MCP server. Then only output the following <template/>:
149
+
150
+ <template>
151
+ ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): (*deleted*)
152
+ </template>
153
+ </elseif>
154
+
155
+ 5. <else>
156
+ The <operation/> is either missing, unknown, or was given with
157
+ the wrong number of operands. Notice that the `init` and `edit`
158
+ subcommands of the `ase config` CLI are deliberately *not*
159
+ mirrored by this skill. Only output the following <template/>
160
+ and then immediately *STOP* processing the entire current skill:
161
+
162
+ <template>
163
+ ⧉ **ASE**: ☻ skill: **ase-meta-config**, ▶ ERROR: invalid operation: **<operation/>** (expected `list`, `get <key>`, `set <key> <value>`, or `delete <key>`)
164
+ </template>
165
+ </else>
@@ -0,0 +1,136 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-config` - Configuration Management
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-config`
9
+ [`--help`|`-h`]
10
+ [`--scope`|`-s` *scope*]
11
+ *operation*
12
+ [*args*]
13
+
14
+ ## DESCRIPTION
15
+
16
+ The `ase-meta-config` skill lists, reads, writes, and removes the values
17
+ of the *layered ASE configuration* from inside the assistant session. It
18
+ mirrors the non-interactive subcommands of the `ase config` CLI, but
19
+ performs *every* access through the `ase_config_list`, `ase_config_get`,
20
+ `ase_config_set`, and `ase_config_delete` tools of the `ase` MCP server -
21
+ it never shells out and never touches a file directly.
22
+
23
+ The configuration is organized as a chain of *scopes*, canonically
24
+ ordered `default` < `user` < `project` < `task` < `session`. Reads
25
+ cascade from the strongest (rightmost) scope down to the weakest and
26
+ return the first value that is defined; writes are always confined to
27
+ the strongest (target) scope of the chain.
28
+
29
+ The recognized keys are grouped under `project.*` (`project.id`,
30
+ `project.name`, `project.boxing`, and the
31
+ `project.artifact.`*kind*`.{basedir,files}` globs) and `agent.*`
32
+ (`agent.persona`, `agent.guidance`, `agent.task`, and `agent.skill`).
33
+ Some keys are writable on selected scopes only; in particular
34
+ `agent.task` and `agent.skill` are writable on a `session` scope only,
35
+ and the `project.artifact.*` globs are writable on the `user` and
36
+ `project` scopes only.
37
+
38
+ The three keys steering the behaviour of the agent itself accept fixed
39
+ value sets: `agent.persona` selects the *communication style* and is one
40
+ of the decorative, eloquent, and explaining `writer`, the concise,
41
+ factual, and accurate `engineer` (the default), the layered,
42
+ pyramid-structured `journalist`, the brief, factual, and abbreviating
43
+ `telegrapher`, or the terse, rough, and stuttering `caveman`;
44
+ `agent.guidance` selects the amount of unsolicited hints and is one of
45
+ `none`, `minimal`, `normal` (the default), or `verbose`; and
46
+ `project.boxing` selects the artifact transparency and is one of `white`,
47
+ `grey`, or `black`. Setting `agent.persona`, `agent.guidance`, or
48
+ `project.boxing` takes effect immediately, i.e. still within the running
49
+ session.
50
+
51
+ The following *operations* exist:
52
+
53
+ - `list`: List all effective configuration entries of the scope chain as
54
+ a table of key, value, and the scope that supplied the value. For
55
+ overlapping keys only the value of the strongest scope is shown.
56
+
57
+ - `get` *key*: Report the effective value at the dotted *key*, or
58
+ `(not set)` if no scope of the chain defines it.
59
+
60
+ - `set` *key* *value*: Write *value* at the dotted *key* on the target
61
+ scope. The value is validated against the configuration schema before
62
+ it is persisted.
63
+
64
+ - `delete` *key*: Remove the value at the dotted *key* from the target
65
+ scope. A key that is not present is silently ignored.
66
+
67
+ The `init` and `edit` subcommands of the `ase config` CLI are
68
+ deliberately *not* mirrored: `edit` is bound to the interactive `$EDITOR`
69
+ and therefore has no meaning inside an assistant turn, and `init` is a
70
+ preset-bootstrapping operation that stays a shell concern next to `ase
71
+ setup`. Both remain available as `ase config init` and `ase config edit`
72
+ on the command line.
73
+
74
+ ## OPTIONS
75
+
76
+ `--scope`|`-s` *scope*:
77
+ The scope chain to operate on, given as a comma-separated list of
78
+ `user`, `project`, `task:`*id*, and/or `session:`*id* terms, in any
79
+ order and at most one term per kind. The `user` term is always
80
+ implicitly added at the bottom of the chain, and `project` is
81
+ implicitly added whenever a project context exists. If the option is
82
+ omitted, the chain of the *current session* (`session:`*id*) is used,
83
+ so that reads see the full `user` -> `project` -> `session` cascade
84
+ and writes -- including those to the session-only keys `agent.task`
85
+ and `agent.skill` -- land on the session layer.
86
+
87
+ ## ARGUMENTS
88
+
89
+ *operation*:
90
+ The operation to perform; one of `list`, `get`, `set`, or `delete`.
91
+
92
+ *args*:
93
+ The operands of the operation: none for `list`, a dotted *key* for
94
+ `get` and `delete`, and a dotted *key* plus a *value* for `set`.
95
+
96
+ ## EXAMPLES
97
+
98
+ List all effective configuration entries:
99
+
100
+ ```text
101
+ ❯ /ase-meta-config list
102
+ ```
103
+
104
+ Report the effective persona style:
105
+
106
+ ```text
107
+ ❯ /ase-meta-config get agent.persona
108
+ ```
109
+
110
+ Switch the communication style for the current session only:
111
+
112
+ ```text
113
+ ❯ /ase-meta-config set agent.persona telegrapher
114
+ ```
115
+
116
+ Switch the project boxing for the current session only:
117
+
118
+ ```text
119
+ ❯ /ase-meta-config set project.boxing grey
120
+ ```
121
+
122
+ Persist the guidance level for the whole project instead:
123
+
124
+ ```text
125
+ ❯ /ase-meta-config --scope project set agent.guidance minimal
126
+ ```
127
+
128
+ Remove a value from the user-level configuration:
129
+
130
+ ```text
131
+ ❯ /ase-meta-config --scope user delete project.name
132
+ ```
133
+
134
+ ## SEE ALSO
135
+
136
+ [`ase-task-id`](../ase-task-id/help.md).
@@ -74,5 +74,5 @@ Surface at least fifteen anti-theses:
74
74
  ## SEE ALSO
75
75
 
76
76
  [`ase-meta-why`](../ase-meta-why/help.md), [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md),
77
- [`ase-meta-persona`](../ase-meta-persona/help.md).
77
+ [`ase-meta-steelman`](../ase-meta-steelman/help.md).
78
78
 
@@ -356,5 +356,27 @@ Procedure
356
356
 
357
357
  </step>
358
358
 
359
+ 6. <step id="STEP 6: Give Final Hints">
360
+
361
+ Finally, give the closing hints by expanding the following (which,
362
+ depending on the configured <ase-guidance-level/>, may each expand
363
+ into nothing and hence emit no output at all):
364
+
365
+ <ase-tpl-hint level="normal">
366
+ For a human-reviewer-style critique of the very same staged changes, with an approve/reject verdict, use `/ase-meta-review`.
367
+ </ase-tpl-hint>
368
+
369
+ <if condition="
370
+ <getopt-option-coherence/> is not equal `true` or
371
+ <getopt-option-risk/> is not equal `true` or
372
+ <getopt-option-blast/> is not equal `true`
373
+ ">
374
+ <ase-tpl-hint level="verbose">
375
+ Use `/ase-meta-diff --coherence --risk --blast` to additionally scrutinize the intent coherence, the risk profile, and the blast radius of the staged changes.
376
+ </ase-tpl-hint>
377
+ </if>
378
+
379
+ </step>
380
+
359
381
  </flow>
360
382
 
@@ -151,7 +151,9 @@ Procedure
151
151
 
152
152
  2. <if condition="<findings/> is empty">
153
153
  Only output the following <template/> and then *SKIP* the
154
- remainder of this STEP 3:
154
+ remainder of this STEP 3 (an empty finding list implies the
155
+ `APPROVE` verdict, so the closing hint of substep 4 would expand
156
+ into nothing anyway):
155
157
 
156
158
  <template>
157
159
 
@@ -191,6 +193,16 @@ Procedure
191
193
  Do *not* output any further explanation.
192
194
  </if>
193
195
 
196
+ 4. Finally, give the closing hint by expanding the following
197
+ (which, depending on the configured <ase-guidance-level/>, may
198
+ expand into nothing and hence emit no output at all):
199
+
200
+ <if condition="<verdict/> starts with `REJECT`">
201
+ <ase-tpl-hint level="normal">
202
+ Use `/ase-code-resolve` to derive and apply a solution approach for the findings which demand changes.
203
+ </ase-tpl-hint>
204
+ </if>
205
+
194
206
  </step>
195
207
 
196
208
  </flow>
@@ -174,6 +174,20 @@ Procedure
174
174
 
175
175
  </if>
176
176
 
177
+ 3. Finally, give the closing hints by expanding the following
178
+ (which, depending on the configured <ase-guidance-level/>, may
179
+ each expand into nothing and hence emit no output at all):
180
+
181
+ <if condition="at least one export file was written">
182
+ <ase-tpl-hint level="normal">
183
+ Exports are *derived* and go stale as their source artifacts drift -- use `/ase-sync-reconcile` to align the artifacts first, then re-run this skill.
184
+ </ase-tpl-hint>
185
+ </if>
186
+
187
+ <ase-tpl-hint level="verbose">
188
+ Use `/ase-sync-export --source` to narrow the exported artifact kinds, and a trailing filtering hint to narrow the exports themselves.
189
+ </ase-tpl-hint>
190
+
177
191
  </step>
178
192
 
179
193
  </flow>
@@ -191,6 +191,16 @@ Procedure
191
191
 
192
192
  </if>
193
193
 
194
+ 7. Finally, give the closing hint by expanding the following (which,
195
+ depending on the configured <ase-guidance-level/>, may expand
196
+ into nothing and hence emit no output at all):
197
+
198
+ <if condition="at least one target artifact was generated or updated">
199
+ <ase-tpl-hint level="normal">
200
+ To propagate the imported information to the remaining artifact kinds, use `/ase-sync-reconcile`.
201
+ </ase-tpl-hint>
202
+ </if>
203
+
194
204
  </step>
195
205
 
196
206
  </flow>
@@ -72,3 +72,24 @@ Procedure
72
72
 
73
73
  </template>
74
74
 
75
+ 3. Finally, give the closing hints by expanding the following (which,
76
+ depending on the configured <ase-guidance-level/>, may each expand
77
+ into nothing and hence emit no output at all):
78
+
79
+ <if condition="the `tasks` array is NOT empty">
80
+ <ase-tpl-hint level="normal">
81
+ Use `/ase-task-id <id>` to switch to one of the listed tasks and `/ase-task-view` to inspect its plan.
82
+ </ase-tpl-hint>
83
+ </if>
84
+ <else>
85
+ <ase-tpl-hint level="normal">
86
+ No task plan exists yet -- use `/ase-task-edit` to create one through a conversational loop.
87
+ </ase-tpl-hint>
88
+ </else>
89
+
90
+ <if condition="<getopt-option-verbose/> is not equal `true`">
91
+ <ase-tpl-hint level="verbose">
92
+ Use `/ase-task-list --verbose` to additionally show the last-modified timestamp of each task plan.
93
+ </ase-tpl-hint>
94
+ </if>
95
+
@@ -93,3 +93,24 @@ Procedure
93
93
  </template>
94
94
  </if>
95
95
 
96
+ 3. Finally, give the closing hints by expanding the following (which,
97
+ depending on the configured <ase-guidance-level/>, may each
98
+ expand into nothing and hence emit no output at all):
99
+
100
+ <if condition="<task-content/> is not empty">
101
+ <ase-tpl-hint level="normal">
102
+ 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.
103
+ </ase-tpl-hint>
104
+
105
+ <if condition="<getopt-option-full/> is not equal `true` and the `## IMPLEMENTATION DRAFT` section was replaced with `[...]`">
106
+ <ase-tpl-hint level="verbose">
107
+ Use `/ase-task-view --full` to show the elided `IMPLEMENTATION DRAFT` section, too.
108
+ </ase-tpl-hint>
109
+ </if>
110
+ </if>
111
+ <else>
112
+ <ase-tpl-hint level="normal">
113
+ No plan exists under this task id -- use `/ase-task-list` to see the available tasks and `/ase-task-edit` to create a plan.
114
+ </ase-tpl-hint>
115
+ </else>
116
+