@rse/ase 0.0.56 → 0.0.58

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 (62) hide show
  1. package/package.json +1 -1
  2. package/plugin/.claude-plugin/plugin.json +1 -1
  3. package/plugin/.github/plugin/plugin.json +1 -1
  4. package/plugin/etc/markdownlint.yaml +1 -0
  5. package/plugin/meta/ase-constitution.md +2 -1
  6. package/plugin/meta/ase-getopt.md +24 -10
  7. package/plugin/meta/ase-skill.md +24 -7
  8. package/plugin/package.json +1 -1
  9. package/plugin/skills/ase-arch-analyze/SKILL.md +3 -10
  10. package/plugin/skills/ase-arch-analyze/help.md +50 -0
  11. package/plugin/skills/ase-arch-discover/SKILL.md +1 -9
  12. package/plugin/skills/ase-arch-discover/help.md +48 -0
  13. package/plugin/skills/ase-code-analyze/SKILL.md +1 -9
  14. package/plugin/skills/ase-code-analyze/help.md +47 -0
  15. package/plugin/skills/ase-code-craft/SKILL.md +36 -14
  16. package/plugin/skills/ase-code-craft/help.md +74 -0
  17. package/plugin/skills/ase-code-explain/SKILL.md +1 -9
  18. package/plugin/skills/ase-code-explain/help.md +43 -0
  19. package/plugin/skills/ase-code-insight/SKILL.md +1 -9
  20. package/plugin/skills/ase-code-insight/help.md +43 -0
  21. package/plugin/skills/ase-code-lint/SKILL.md +1 -9
  22. package/plugin/skills/ase-code-lint/help.md +54 -0
  23. package/plugin/skills/ase-code-refactor/SKILL.md +36 -14
  24. package/plugin/skills/ase-code-refactor/help.md +74 -0
  25. package/plugin/skills/ase-code-resolve/SKILL.md +36 -14
  26. package/plugin/skills/ase-code-resolve/help.md +81 -0
  27. package/plugin/skills/ase-docs-proofread/SKILL.md +3 -12
  28. package/plugin/skills/ase-docs-proofread/help.md +54 -0
  29. package/plugin/skills/ase-meta-changes/SKILL.md +1 -9
  30. package/plugin/skills/ase-meta-changes/help.md +33 -0
  31. package/plugin/skills/ase-meta-chat/SKILL.md +1 -8
  32. package/plugin/skills/ase-meta-chat/help.md +45 -0
  33. package/plugin/skills/ase-meta-commit/SKILL.md +1 -8
  34. package/plugin/skills/ase-meta-commit/help.md +31 -0
  35. package/plugin/skills/ase-meta-evaluate/SKILL.md +1 -9
  36. package/plugin/skills/ase-meta-evaluate/help.md +52 -0
  37. package/plugin/skills/ase-meta-persona/SKILL.md +8 -2
  38. package/plugin/skills/ase-meta-persona/help.md +50 -0
  39. package/plugin/skills/ase-meta-quorum/SKILL.md +1 -8
  40. package/plugin/skills/ase-meta-quorum/help.md +41 -0
  41. package/plugin/skills/ase-meta-search/SKILL.md +1 -8
  42. package/plugin/skills/ase-meta-search/help.md +39 -0
  43. package/plugin/skills/ase-meta-why/SKILL.md +1 -8
  44. package/plugin/skills/ase-meta-why/help.md +39 -0
  45. package/plugin/skills/ase-task-delete/SKILL.md +3 -7
  46. package/plugin/skills/ase-task-delete/help.md +47 -0
  47. package/plugin/skills/ase-task-edit/SKILL.md +52 -70
  48. package/plugin/skills/ase-task-edit/help.md +84 -0
  49. package/plugin/skills/ase-task-id/SKILL.md +5 -4
  50. package/plugin/skills/ase-task-id/help.md +42 -0
  51. package/plugin/skills/ase-task-implement/SKILL.md +13 -9
  52. package/plugin/skills/ase-task-implement/help.md +63 -0
  53. package/plugin/skills/ase-task-list/SKILL.md +5 -4
  54. package/plugin/skills/ase-task-list/help.md +43 -0
  55. package/plugin/skills/ase-task-preflight/SKILL.md +3 -9
  56. package/plugin/skills/ase-task-preflight/help.md +58 -0
  57. package/plugin/skills/ase-task-reboot/SKILL.md +3 -9
  58. package/plugin/skills/ase-task-reboot/help.md +55 -0
  59. package/plugin/skills/ase-task-rename/SKILL.md +3 -8
  60. package/plugin/skills/ase-task-rename/help.md +44 -0
  61. package/plugin/skills/ase-task-view/SKILL.md +3 -7
  62. package/plugin/skills/ase-task-view/help.md +43 -0
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-commit
3
+ argument-hint: "[--help|-h]"
3
4
  description: >
4
5
  Determine commit message for staged Git changes.
5
6
  user-invocable: true
@@ -12,18 +13,10 @@ allowed-tools:
12
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
13
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
14
15
 
15
- Git Commit
16
- ==========
17
-
18
16
  <skill name="ase-meta-commit">
19
17
  Git Commit
20
18
  </skill>
21
19
 
22
- <role>
23
- Your role is an experienced, *expert-level software developer*,
24
- specialized in *Git commit messages*.
25
- </role>
26
-
27
20
  <objective>
28
21
  Help to *craft* a *concise commit message* for the
29
22
  currently staged Git changes.
@@ -0,0 +1,31 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-commit` - Git Commit Message
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-commit`
9
+ [`--help`|`-h`]
10
+
11
+ ## DESCRIPTION
12
+
13
+ The `ase-meta-commit` skill helps to *craft* a *concise commit
14
+ message* for the currently staged Git changes. It inspects the
15
+ output of `git diff --cached` and produces a single-line message of
16
+ the form `<type>: <summary>` where *type* is one of `FEATURE`,
17
+ `IMPROVEMENT`, `BUGFIX`, `UPDATE`, `CLEANUP`, or `REFACTOR`, and
18
+ *summary* is a 60-80 character imperative-mood summary without
19
+ trailing period or Markdown formatting.
20
+
21
+ ## EXAMPLES
22
+
23
+ Craft a commit message for the currently staged changes:
24
+
25
+ ```text
26
+ ❯ /ase-meta-commit
27
+ ```
28
+
29
+ ## SEE ALSO
30
+
31
+ `ase-meta-changes`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-evaluate
3
- argument-hint: "<request>"
3
+ argument-hint: "[--help|-h] <request>"
4
4
  description: >
5
5
  Evaluate alternatives through a weighted multi-criteria decision
6
6
  matrix. Use when the user calls for the *evaluation* of
@@ -14,18 +14,10 @@ effort: high
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
16
16
 
17
- Evaluate Alternatives
18
- =====================
19
-
20
17
  <skill name="ase-meta-evaluate">
21
18
  Evaluate Alternatives
22
19
  </skill>
23
20
 
24
- <role>
25
- Your role is an experienced, *expert-level assistant*,
26
- specialized in *evaluating alternatives*.
27
- </role>
28
-
29
21
  <objective>
30
22
  *Evaluate* *alternatives* through a weighted
31
23
  multi-*criteria* decision matrix.
@@ -0,0 +1,52 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-evaluate` - Evaluate Alternatives
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-evaluate`
9
+ [`--help`|`-h`]
10
+ *request*
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-evaluate` skill evaluates two or more *alternatives*
15
+ through a *weighted multi-criteria decision matrix*. From the
16
+ *request*, the skill derives the reason for the evaluation, the
17
+ alternatives, and the criteria, fills in additional criteria up to a
18
+ range of 8-12 (using `ase-meta-search` where helpful), assigns weights
19
+ from `{ 4.00, 2.00, 1.00, 0.50, 0.25 }`, evaluates each alternative
20
+ against each criterion on a `{ -2, -1, 0, +1, +2 }` Likert scale, and
21
+ computes the final ratings via the `ase_decision_matrix` MCP tool.
22
+
23
+ The result is reported as a Markdown decision matrix along with the
24
+ single *BEST ALTERNATIVE*, including a warning if multiple
25
+ alternatives tie, if the distance to the second best is small, or if
26
+ all alternatives rate negatively.
27
+
28
+ ## ARGUMENTS
29
+
30
+ *request*:
31
+ A description of what should be evaluated, including the
32
+ alternatives and, optionally, the criteria to consider.
33
+
34
+ ## EXAMPLES
35
+
36
+ Compare logging libraries for a TypeScript project:
37
+
38
+ ```text
39
+ ❯ /ase-meta-evaluate Compare pino, winston, and bunyan as logging libraries.
40
+ ```
41
+
42
+ Evaluate database options with hinted criteria:
43
+
44
+ ```text
45
+ ❯ /ase-meta-evaluate Compare PostgreSQL, MySQL, and SQLite for an
46
+ embedded use case; criteria include footprint and write throughput.
47
+ ```
48
+
49
+ ## SEE ALSO
50
+
51
+ `ase-meta-quorum`, `ase-meta-search`, `ase-arch-discover`,
52
+ `ase-meta-why`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-persona
3
- argument-hint: "[<persona>]"
3
+ argument-hint: "[--help|-h] [<persona>]"
4
4
  description: >
5
5
  Adjust communication style in four intensity levels of token usage.
6
6
  The <persona> can be either the decorative, eloquent, and explaining "writer",
@@ -16,8 +16,14 @@ effort: medium
16
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
17
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
18
18
 
19
+ <skill name="ase-meta-persona">
19
20
  Persona Configuration
20
- =====================
21
+ </skill>
22
+
23
+ <objective>
24
+ *Configure* the *persona style* of the agent to adjust the communication
25
+ style and token usage intensity.
26
+ </objective>
21
27
 
22
28
  1. Determine request:
23
29
  <request>$ARGUMENTS</request>
@@ -0,0 +1,50 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-persona` - Persona Configuration
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-persona`
9
+ [`--help`|`-h`]
10
+ [*persona*]
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-persona` skill gets or sets the active *communication
15
+ style* (persona) of the assistant. Four intensity levels of token
16
+ usage are supported, from most verbose to most terse:
17
+
18
+ - `writer`: decorative, eloquent, and explaining
19
+ - `engineer`: concise, factual, and accurate (default)
20
+ - `telegrapher`: brief, factual, and abbreviating
21
+ - `caveman`: terse, rough, and stuttering
22
+
23
+ Without arguments, the skill reports the currently active persona.
24
+ With a *persona* argument, it switches to that persona via the
25
+ `ase_persona` MCP tool.
26
+
27
+ ## ARGUMENTS
28
+
29
+ *persona*:
30
+ The persona to activate; one of `writer`, `engineer`,
31
+ `telegrapher`, or `caveman`. If omitted, the currently active
32
+ persona is reported.
33
+
34
+ ## EXAMPLES
35
+
36
+ Show the currently active persona:
37
+
38
+ ```text
39
+ ❯ /ase-meta-persona
40
+ ```
41
+
42
+ Switch to the telegrapher persona:
43
+
44
+ ```text
45
+ ❯ /ase-meta-persona telegrapher
46
+ ```
47
+
48
+ ## SEE ALSO
49
+
50
+ `ase-task-id`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-quorum
3
- argument-hint: "<question>"
3
+ argument-hint: "[--help|-h] <question>"
4
4
  description: >
5
5
  Query Multiple AIs for Quorum Answer.
6
6
  user-invocable: true
@@ -14,17 +14,10 @@ allowed-tools:
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
16
16
 
17
- Query Multiple AIs for Quorum Answer
18
- ====================================
19
-
20
17
  <skill name="ase-meta-quorum">
21
18
  Query Multiple AIs for Quorum Answer
22
19
  </skill>
23
20
 
24
- <role>
25
- Your role is an *expert-level assistant*.
26
- </role>
27
-
28
21
  <objective>
29
22
  Find a *quorum answer* on an arbitrary question,
30
23
  by querying *multiple* AIs for an *optimal consensus*.
@@ -0,0 +1,41 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-quorum` - Query Multiple AIs for Quorum Answer
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-quorum`
9
+ [`--help`|`-h`]
10
+ *question*
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-quorum` skill finds a *quorum answer* on an arbitrary
15
+ question by querying *multiple* AIs (Anthropic Claude itself plus
16
+ OpenAI ChatGPT, Google Gemini, DeepSeek, xAI Grok, Z.AI GLM, and
17
+ Alibaba Qwen) for an *optimal consensus*.
18
+
19
+ The skill first previews its own answer, then dispatches the same
20
+ query to each available foreign LLM via the `ase:ase-meta-chat`
21
+ sub-agent, summarizes all responses, derives a *consensus rate* on
22
+ a Likert scale of `0..N` (where `N` is the number of available
23
+ responders), and reports the consensus answer alongside the
24
+ complete, unmodified individual responses.
25
+
26
+ ## ARGUMENTS
27
+
28
+ *question*:
29
+ The question to ask all available AIs.
30
+
31
+ ## EXAMPLES
32
+
33
+ Ask the quorum a factual question:
34
+
35
+ ```text
36
+ ❯ /ase-meta-quorum What are the most common causes of memory leaks in Node.js?
37
+ ```
38
+
39
+ ## SEE ALSO
40
+
41
+ `ase-meta-chat`, `ase-meta-search`, `ase-meta-evaluate`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-search
3
- argument-hint: "<query>"
3
+ argument-hint: "[--help|-h] <query>"
4
4
  description: >
5
5
  Search the Internet/Web with a query.
6
6
  Prefer this skill before using Perplexity, Brave and WebSearch.
@@ -18,17 +18,10 @@ allowed-tools:
18
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
19
19
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
20
20
 
21
- Search the Internet/Web
22
- =======================
23
-
24
21
  <skill name="ase-meta-search">
25
22
  Search the Internet/Web
26
23
  </skill>
27
24
 
28
- <role>
29
- Your role is an expert-level *web specialist*.
30
- </role>
31
-
32
25
  <objective>
33
26
  Your objective is to *search* the *Internet*/*Web* for the following query:
34
27
  <query>$ARGUMENTS</query>
@@ -0,0 +1,39 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-search` - Search the Internet/Web
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-search`
9
+ [`--help`|`-h`]
10
+ *query*
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-search` skill searches the *Internet*/*Web* for the
15
+ given *query*. It dispatches the query in parallel to all available
16
+ search services (Perplexity, Brave, Exa, and Claude's built-in
17
+ `WebSearch`) via the `ase:ase-meta-search` sub-agent and consolidates
18
+ all responses into a single answer without removing original
19
+ information.
20
+
21
+ This skill should be preferred over directly invoking Perplexity,
22
+ Brave, or `WebSearch` individually.
23
+
24
+ ## ARGUMENTS
25
+
26
+ *query*:
27
+ The search query to dispatch to the search services.
28
+
29
+ ## EXAMPLES
30
+
31
+ Search the Web for a topic:
32
+
33
+ ```text
34
+ ❯ /ase-meta-search latest stable release of TypeScript and release notes
35
+ ```
36
+
37
+ ## SEE ALSO
38
+
39
+ `ase-meta-chat`, `ase-meta-quorum`, `ase-arch-discover`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-why
3
- argument-hint: "<fact>"
3
+ argument-hint: "[--help|-h] <fact>"
4
4
  description: >
5
5
  Five-Whys Root-Cause Analysis.
6
6
  user-invocable: true
@@ -11,17 +11,10 @@ effort: medium
11
11
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
12
12
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
13
13
 
14
- Five-Whys Root-Cause Analysis
15
- =============================
16
-
17
14
  <skill name="ase-meta-why">
18
15
  Five-Whys Root-Cause Analysis
19
16
  </skill>
20
17
 
21
- <role>
22
- Your role is an *expert-level assistant*.
23
- </role>
24
-
25
18
  <objective>
26
19
  Apply the *Five-Whys* *root-cause analysis* technique to investigate
27
20
  the following problem:
@@ -0,0 +1,39 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-why` - Five-Whys Root-Cause Analysis
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-why`
9
+ [`--help`|`-h`]
10
+ *fact*
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-why` skill applies the *Five-Whys* *root-cause
15
+ analysis* technique to the supplied *fact*. The skill iteratively
16
+ asks "why" — up to five times — to drill down from surface symptoms
17
+ to the underlying root cause, considering technical, domain-specific,
18
+ process-related, and organizational causes. After identifying the
19
+ root cause it proposes a *SOLUTION* that addresses it, optionally
20
+ including concrete source code changes.
21
+
22
+ ## ARGUMENTS
23
+
24
+ *fact*:
25
+ The observed *fact* (symptom, problem, or surprising outcome)
26
+ whose root cause should be investigated. The skill implicitly
27
+ prepends "Why" to form the initial question.
28
+
29
+ ## EXAMPLES
30
+
31
+ Investigate the root cause of a build failure:
32
+
33
+ ```text
34
+ ❯ /ase-meta-why the CI build is intermittently failing on macOS runners
35
+ ```
36
+
37
+ ## SEE ALSO
38
+
39
+ `ase-code-analyze`, `ase-code-resolve`, `ase-arch-analyze`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-task-delete
3
- argument-hint: "[<id>]"
3
+ argument-hint: "[--help|-h] [<id>]"
4
4
  description: >
5
5
  Delete the current or given task plan.
6
6
  Use when the user calls to "delete", "remove" or "clear" the
@@ -13,17 +13,13 @@ effort: low
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
15
 
16
- Delete a Task Plan
17
- ==================
18
-
19
16
  <skill name="ase-task-delete">
20
17
  Delete a Task Plan
21
18
  </skill>
22
19
 
23
- <role>
24
- Your role is an experienced, *expert-level assistant*.
25
- </role>
20
+ <objective>
26
21
  *Delete* the task plan.
22
+ </objective>
27
23
 
28
24
  Procedure
29
25
  ---------
@@ -0,0 +1,47 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-task-delete` - Delete a Task Plan
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-task-delete`
9
+ [`--help`|`-h`]
10
+ [*id*]
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-task-delete` skill deletes the *task plan* identified by
15
+ *id*. If *id* is omitted, the *current* task id (inherited from the
16
+ session context) is used. When the deleted task is the current task
17
+ and not the `default` task, the current task id is automatically
18
+ switched back to `default`.
19
+
20
+ The task plan is stored in `.ase/tasks/`*id*`/plan.md` files of the
21
+ project and can be alternatively deleted with the
22
+ "`ase task delete` *id*" command from outside the agent tool.
23
+
24
+ ## ARGUMENTS
25
+
26
+ *id*:
27
+ The unique identifier of the task plan to delete. If omitted,
28
+ the current task id is used.
29
+
30
+ ## EXAMPLES
31
+
32
+ Delete the current task plan:
33
+
34
+ ```text
35
+ ❯ /ase-task-delete
36
+ ```
37
+
38
+ Delete a specific task plan:
39
+
40
+ ```text
41
+ ❯ /ase-task-delete hello
42
+ ```
43
+
44
+ ## SEE ALSO
45
+
46
+ `ase-task-edit`, `ase-task-list`, `ase-task-view`,
47
+ `ase-task-rename`, `ase-task-reboot`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-task-edit
3
- argument-hint: "[<id> | <id>: <instruction> | <instruction>]"
3
+ argument-hint: "[--help|-h] [--plan|-p <option>] [--dry|-d] [--next|-n <option>] [<id> | <id>: <instruction> | <instruction>]"
4
4
  description: >
5
5
  Iteratively edit and refine a named plan for a task through a
6
6
  conversational loop. Each round, the current plan is shown and the
@@ -17,29 +17,22 @@ effort: high
17
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
18
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
19
19
 
20
- Iteratively Edit a Task Plan
21
- ============================
22
-
23
20
  <skill name="ase-task-edit">
24
21
  Iteratively Edit a Task Plan
25
22
  </skill>
26
23
 
27
24
  <expand name="getopt"
28
25
  arg1="ase-task-edit"
29
- arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --next|-n=(none|DONE|IMPLEMENT|PREFLIGHT|REFINE)">
26
+ arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --dry|-d --next|-n=(none|DONE|IMPLEMENT|PREFLIGHT|REFINE)">
30
27
  $ARGUMENTS
31
28
  </expand>
32
29
 
33
- <role>
34
- Your role is an experienced, *expert-level assistant*,
35
- specialized in the *planning* of changes
36
- through *iterative conversational refinement*.
37
- </role>
38
-
30
+ <objective>
39
31
  Establish and refine the *task plan* purely through a *chat-driven
40
- loop*. The user steers each round via interactive dialog that offers
32
+ loop*. The user steers each round via an interactive dialog that offers
41
33
  continued refinement, finalization, or hand-off to implementation or
42
34
  preflight.
35
+ </objective>
43
36
 
44
37
  @${CLAUDE_SKILL_DIR}/../../meta/ase-plan.md
45
38
 
@@ -52,6 +45,47 @@ You *MUST* not skip any numbered item during processing!
52
45
  You *MUST* *NOT* output anything in this entire procedure, *except* when
53
46
  explicitly requested by this procedure via outputs based on a <template/>!
54
47
 
48
+ <define name="apply-refinement">
49
+ Treat the <instruction/> as a *refinement instruction* for
50
+ the plan, and update <content/> in-place by *applying* the
51
+ requested <instruction/> to the *plan*. When refining the
52
+ plan this way, preserve the overall structure of the plan
53
+ and only modify what the user actually requested. Do *not*
54
+ rewrite unrelated sections of the plan.
55
+
56
+ Calculate the number of words <words/> of <content/>.
57
+ Set <content-dirty>true</content-dirty>.
58
+ </define>
59
+
60
+ <define name="generate-plan">
61
+ Create a new plan from scratch and store the result as
62
+ <content/> by closely following the defined plan format
63
+ <format/> and injecting into it all the information from
64
+ the <instruction/> and all decisions you derived from the
65
+ <instruction/>.
66
+
67
+ If a `CHANGELOG.md` file exists in the project (or in any
68
+ affected sub-package), the plan *MUST* include, as part of
69
+ its `## ※ CHANGES` section, an explicit bullet point
70
+ describing the addition of a corresponding new entry to
71
+ that `CHANGELOG.md` file, aligned with its existing style
72
+ and conventions.
73
+
74
+ <if condition="<getopt-option-dry/> is equal `true`">
75
+ You *MUST* completely omit the `## ※ VERIFICATION` section
76
+ (including its heading and all of its bullet points) from
77
+ <content/>.
78
+ </if>
79
+
80
+ Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
81
+ `ase` MCP server and use the `text` field of its response
82
+ for fresh <timestamp-created/> and <timestamp-modified/>
83
+ information. Then insert the current <ase-task-id/>,
84
+ <timestamp-created/>, and <timestamp-modified/> information
85
+ and calculate the number of words <words/> of <content/>.
86
+ Set <content-dirty>true</content-dirty>.
87
+ </define>
88
+
55
89
  1. **Determine Task and Instruction:**
56
90
 
57
91
  1. Set <instruction><getopt-arguments/></instruction> initially.
@@ -201,19 +235,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
201
235
 
202
236
  - If <result/> is `OVERWRITE`:
203
237
 
204
- Create a new plan from scratch and store the result as
205
- <content/> by closely following the defined plan format
206
- <format/> and injecting into it all the information from
207
- the <instruction/> and all decisions you derived from the
208
- <instruction/>.
209
-
210
- Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
211
- `ase` MCP server and use the `text` field of its response
212
- for fresh <timestamp-created/> and <timestamp-modified/>
213
- information. Then insert the current <ase-task-id/>,
214
- <timestamp-created/>, and <timestamp-modified/> information
215
- and calculate the number of words <words/> of <content/>.
216
- Set <content-dirty>true</content-dirty>.
238
+ <expand name="generate-plan"/>
217
239
 
218
240
  Only output the following <template/> and continue processing:
219
241
 
@@ -224,15 +246,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
224
246
 
225
247
  - If <result/> is `REFINE`:
226
248
 
227
- Treat the <instruction/> as a *refinement instruction* for
228
- the plan, and update <content/> in-place by *applying* the
229
- requested <instruction/> to the *plan*. When refining the
230
- plan this way, preserve the overall structure of the plan
231
- and only modify what the user actually requested. Do *not*
232
- rewrite unrelated sections of the plan.
233
-
234
- Calculate the number of words <words/> of <content/>.
235
- Set <content-dirty>true</content-dirty>.
249
+ <expand name="apply-refinement"/>
236
250
 
237
251
  Only output the following <template/> and continue processing:
238
252
 
@@ -246,15 +260,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
246
260
  Set <instruction><instruction/> <text/></instruction> (append
247
261
  the user's free-text hint to the existing instruction).
248
262
 
249
- Treat the <instruction/> as a *refinement instruction* for
250
- the plan, and update <content/> in-place by *applying* the
251
- requested <instruction/> to the *plan*. When refining the
252
- plan this way, preserve the overall structure of the plan
253
- and only modify what the user actually requested. Do *not*
254
- rewrite unrelated sections of the plan.
255
-
256
- Calculate the number of words <words/> of <content/>.
257
- Set <content-dirty>true</content-dirty>.
263
+ <expand name="apply-refinement"/>
258
264
 
259
265
  Only output the following <template/> and continue processing:
260
266
 
@@ -272,19 +278,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
272
278
  </if>
273
279
 
274
280
  5. <if condition="<content/> is empty AND <instruction/> is not empty">
275
- Create a new plan from scratch and store the result as
276
- <content/> by closely following the defined plan format
277
- <format/> and injecting into it all the information from
278
- the <instruction/> and all decisions you derived from the
279
- <instruction/>.
280
-
281
- Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
282
- `ase` MCP server and use the `text` field of its response
283
- for fresh <timestamp-created/> and <timestamp-modified/>
284
- information. Then insert the current <ase-task-id/>,
285
- <timestamp-created/>, and <timestamp-modified/> information
286
- and calculate the number of words <words/> of <content/>.
287
- Set <content-dirty>true</content-dirty>.
281
+ <expand name="generate-plan"/>
288
282
 
289
283
  Only output the following <template/> and continue processing:
290
284
 
@@ -405,13 +399,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
405
399
  your instruction for further refining the plan?**`. Then set
406
400
  <instruction/> to the response of the user.
407
401
 
408
- Treat the <instruction/> as a *refinement instruction* for
409
- the plan, and update <content/> in-place by *applying* the
410
- requested <instruction/> to the *plan*. When refining the
411
- plan this way, preserve the overall structure of the plan
412
- and only modify what the user actually requested. Do *not*
413
- rewrite unrelated sections of the plan.
414
- Set <content-dirty>true</content-dirty>.
402
+ <expand name="apply-refinement"/>
415
403
 
416
404
  Finally, only output the following <template/> and then
417
405
  *continue* the *loop* at step **3.1**!
@@ -424,13 +412,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
424
412
 
425
413
  Set <instruction><text/></instruction> (replace existing instruction).
426
414
 
427
- Treat the <instruction/> as a *refinement instruction* for
428
- the plan, and update <content/> in-place by *applying* the
429
- requested <instruction/> to the *plan*. When refining the
430
- plan this way, preserve the overall structure of the plan
431
- and only modify what the user actually requested. Do *not*
432
- rewrite unrelated sections of the plan.
433
- Set <content-dirty>true</content-dirty>.
415
+ <expand name="apply-refinement"/>
434
416
 
435
417
  Finally, only output the following <template/> and then
436
418
  *continue* the *loop* at step **3.1**!