@rse/ase 0.0.40 → 0.0.42

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 (33) hide show
  1. package/dst/ase-config.js +2 -0
  2. package/dst/ase-decision.js +67 -0
  3. package/dst/ase-kv.js +105 -6
  4. package/dst/ase-service.js +25 -26
  5. package/dst/ase-skills.js +224 -0
  6. package/package.json +6 -4
  7. package/plugin/.claude-plugin/plugin.json +1 -1
  8. package/plugin/.github/plugin/plugin.json +1 -1
  9. package/plugin/package.json +1 -1
  10. package/plugin/skills/ase-arch-analyze/SKILL.md +0 -1
  11. package/plugin/skills/ase-arch-discover/SKILL.md +44 -32
  12. package/plugin/skills/ase-code-analyze/SKILL.md +54 -56
  13. package/plugin/skills/ase-code-craft/SKILL.md +58 -21
  14. package/plugin/skills/ase-code-explain/SKILL.md +0 -1
  15. package/plugin/skills/ase-code-insight/SKILL.md +0 -1
  16. package/plugin/skills/ase-code-lint/SKILL.md +0 -1
  17. package/plugin/skills/ase-code-refactor/SKILL.md +46 -23
  18. package/plugin/skills/ase-code-resolve/SKILL.md +46 -34
  19. package/plugin/skills/ase-meta-changes/SKILL.md +0 -1
  20. package/plugin/skills/ase-meta-chat/SKILL.md +0 -1
  21. package/plugin/skills/ase-meta-commit/SKILL.md +0 -1
  22. package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -8
  23. package/plugin/skills/ase-meta-quorum/SKILL.md +0 -1
  24. package/plugin/skills/ase-meta-search/SKILL.md +0 -1
  25. package/plugin/skills/ase-meta-why/SKILL.md +0 -1
  26. package/plugin/skills/ase-task-delete/SKILL.md +0 -1
  27. package/plugin/skills/ase-task-edit/SKILL.md +0 -1
  28. package/plugin/skills/ase-task-id/SKILL.md +0 -1
  29. package/plugin/skills/ase-task-implement/SKILL.md +0 -1
  30. package/plugin/skills/ase-task-list/SKILL.md +0 -1
  31. package/plugin/skills/ase-task-preflight/SKILL.md +0 -1
  32. package/plugin/skills/ase-task-reboot/SKILL.md +0 -1
  33. package/plugin/skills/ase-task-view/SKILL.md +0 -1
@@ -9,14 +9,11 @@ disable-model-invocation: false
9
9
  effort: medium
10
10
  allowed-tools:
11
11
  - "Bash(npm search --json *)"
12
- - "Bash(npm view --json *)"
13
12
  - "Skill"
14
13
  - "Agent"
15
- - "WebFetch"
16
14
  ---
17
15
 
18
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
19
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
20
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
21
18
 
22
19
  Discover Components
@@ -113,26 +110,6 @@ for the technology stack to *provide* the *needed functionality*
113
110
  (L=1-M). Merge the results into the already existing result
114
111
  set, but deduplicate entries.
115
112
 
116
- - For each discovered *NPM package* <component-K/> (K=1-N),
117
- use the shell command `npm view --json "<package-K/>"
118
- version time repository.url` to discover
119
- its version <version-K/>, the publish time of that
120
- version <updated-K/> (read from `time[<version-K/>]`),
121
- its time created <created-K/> (read from `time.created`),
122
- and its repository URL <repository-K/>.
123
-
124
- - If the <repository-K/> regexp-matches
125
- `.+?//github\.com/([^/]+/[^/.]+).*` use the `WebFetch` tool
126
- to fetch the URL `https://api.github.com/repos/$1` (`$1`
127
- is the value matched by the first capturing parenthesis
128
- in the regexp) and extract <stars-K/> from its JSON
129
- `stargazers_count` field, else set <stars-K/> to `N.A.`.
130
-
131
- - For each discovered *NPM package* <component-K/>
132
- (K=1-N), use the `WebFetch` tool on the URL
133
- `https://api.npmjs.org/downloads/point/last-month/<package-K/>`
134
- to extract the <downloads-K/> from the `downloads` field.
135
-
136
113
  - If <stack/> is "Java" or "Kotlin":
137
114
 
138
115
  - Based on the essential keywords <keyword-L/> (L=1-M),
@@ -140,25 +117,60 @@ for the technology stack to *provide* the *needed functionality*
140
117
  discover an initial set of a maximum of 12 *Java packages*
141
118
  <component-K/> and at least their real name <name-K/> and
142
119
  their unique package names <package-K/>.
120
+
121
+ - Call the `component_info(stack: <stack/>, components:
122
+ [ <package-1/>, ..., <package-N/> ])` tool of the `ase` MCP
123
+ service *once* for the entire set of discovered packages.
124
+ The tool dispatches internally on <stack/> and fetches all
125
+ metadata in maximum parallel and returns an array of objects `{
126
+ name, version, time, repository, stars, downloads }`. For each
127
+ component <component-K/> (K=1-N) read from its corresponding
128
+ entry: <version-K/> from `version`, <updated-K/> from `updated`,
129
+ <created-K/> from `created`, <repository-K/> from `repository`,
130
+ <stars-K/> from `stars` (numeric or `N.A.`), <downloads-K/>
131
+ from `downloads` (numeric or `N.A.`) and <rank-K/> from `rank`
132
+ (numeric).
133
+
134
+ - Sort, in descending order, the discovered components
135
+ <component-K/> (K=1-N) by their `rank` field and trim the result
136
+ list to just a maximum of 12 total components.
137
+
138
+ - For each component <component-K/> (K=1-N), research and then
139
+ decide which *one* of *USP* (Unique Selling Point -- what makes
140
+ it unique), *Crux* (what you should notice), or *Gotcha* (what
141
+ you should not stumble over) is its single most distinguishing
142
+ perspective, and remember this as an <info-K/> (K=1-N) formatted
143
+ like `<type/>: <hint/>` where <type/> is one of `USP`, `Crux`,
144
+ or `Gotcha` and <hint/> is a 1-6 word hint. Do not output
145
+ anything.
143
146
  </step>
144
147
 
145
148
  4. <step id="STEP 4: Report Components">
146
- - Sort, in descending order, the discovered components
147
- <component-K/> (K=1-N) first by their <downloads-K/> and second
148
- by their <stars-K/> and trim the result list to just a maximum
149
- of 12 total components.
149
+ - Display the determined, individual components as a Markdown
150
+ *table* with just the following <template/> and do not output
151
+ anything else:
152
+
153
+ <template>
154
+ &#x1F535; **COMPONENT HINTS**:
155
+
156
+ | ⚑ *Component* | ▣ *Package* | ⚖ *Hint* |
157
+ | :----------------- | :------------- | :-------- |
158
+ | **<component-1/>** | `<package-1/>` | <info-1/> |
159
+ [...]
160
+ | **<component-N/>** | `<package-N/>` | <info-N/> |
161
+ </template>
150
162
 
151
163
  - Display the discovered components as a Markdown *table*
152
164
  with just the following <template/>:
153
165
 
154
166
  <template>
155
- &#x1F535; **COMPONENTS**:
167
+ &#x1F535; **COMPONENT RANKING**:
156
168
 
157
- | *Component* | *Package* | *Version* | *Downloads* | *Stars* | *Updated* | *Created* |
158
- | :------------ | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
159
- | **<name-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
169
+ | *Component* | *Package* | *Version* | *Downloads* | *Stars* | *Updated* | *Created* |
170
+ | :----------------- | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
171
+ | **<component-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
160
172
  [...]
161
- | **<name-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
173
+ | **<component-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
162
174
  </template>
163
175
  </step>
164
176
  </flow>
@@ -11,7 +11,6 @@ allowed-tools:
11
11
  ---
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
15
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
16
15
 
17
16
  Analyze Source Code
@@ -34,78 +33,77 @@ code, for problems in its *logic* and *semantics* and its related
34
33
 
35
34
  <flow>
36
35
 
37
- 1. <step id="STEP 1: Investigate Code Base">
38
- In this STEP 1, investigate on the code. If the code base is large,
39
- you *MUST* use the `Agent` tool (not inline work) to create multiple
40
- sub-agents to split the investigation task into appropriate chunks.
41
- Hints:
36
+ 1. <step id="STEP 1: Investigate Code Base">
37
+ In this STEP 1, investigate on the code. If the code base is large,
38
+ you *MUST* use the `Agent` tool (not inline work) to create multiple
39
+ sub-agents to split the investigation task into appropriate chunks.
42
40
 
43
- - During investigation in this STEP 1, do *not* output anything else,
44
- especially do not give any further explanations or information.
41
+ Tenets:
45
42
 
46
- - Focus on *practically relevant* cases and especially do *not*
47
- investigate on theoretical or fictive cases.
43
+ - **Quiet Operation**:
44
+ During investigation in this STEP 1, do *not* output anything else,
45
+ especially do not give any further explanations or information.
48
46
 
49
- - In case of problems related to *obvious or expected* errors,
50
- they *should* be handled *near the origin*.
47
+ - **Practical Relevance Only**:
48
+ Focus on *practically relevant* cases and especially do *not*
49
+ investigate on theoretical or fictive cases.
51
50
 
52
- - In case of problems related to *theoretical or unexpected* errors,
53
- they *should* be handled in parent scopes to avoid cluttering the
54
- source code with too much error handling at all.
51
+ - **Problem Focus Only**:
52
+ Still focus on the *problem only* and do *not* already
53
+ investigate on any possible *solution*.
54
+ </step>
55
55
 
56
- - In this STEP 1, still focus on the *problem only* and do *not*
57
- investigate on any possible *solution*.
58
- </step>
56
+ 2. <step id="STEP 2: Show Results">
57
+ In this STEP 2, for every detected problem, immediately report it
58
+ with the following output <template/>, based on concise bullet
59
+ points.
59
60
 
60
- 2. <step id="STEP 2: Show Results">
61
- In this STEP 2, for every detected problem, immediately report it
62
- with the following output <template/>, based on concise bullet
63
- points.
61
+ <template>
62
+ &#x1F7E0; PROBLEM (Severity: **<severity/>**): **P<n/>**: **<title/>**
64
63
 
65
- <template>
66
- &#x1F7E0; PROBLEM (Severity: **<severity/>**): **P<n/>**: **<title/>**
64
+ <description/>
65
+ </template>
67
66
 
68
- <description/>
69
- </template>
67
+ Hints:
70
68
 
71
- Hints:
72
- - For the final results, do *not* output anything else, especially do
73
- *not* give any further explanations or information.
69
+ - For the final results, do *not* output anything else, especially do
70
+ *not* give any further explanations or information.
74
71
 
75
- - Uniquely identify the problems with `P<n/>` where <n/> is 1, 2, ...
72
+ - Uniquely identify the problems with `P<n/>` where <n/> is 1, 2, ...
76
73
 
77
- - In <description/>, use *very brief* but as *precise* as possible problem
78
- descriptions.
74
+ - In <description/>, use *ultra brief* but still as *precise* as
75
+ possible problem descriptions.
79
76
 
80
- - In <description/>, highlight *code* as <template>`<code/>`</template>
81
- and *key aspects* as <template>*<aspect/>*</template>.
77
+ - In <description/>, highlight *code* as <template>`<code/>`</template>
78
+ and *key aspects* as <template>*<aspect/>*</template>.
82
79
 
83
- - In <description/>, add inline *references* to the related
84
- code positions in the form of either
85
- <template>(`<filename/>:<line-number/>`)</template>,
86
- <template>(`<filename/>:<line-number/>-<line-number/>`)</template> or
87
- <template>(`<filename/>#<function-or-method/>`)</template>.
80
+ - In <description/>, add inline *references* to the related
81
+ code positions in the form of either
82
+ <template>(`<filename/>:<line-number/>`)</template>,
83
+ <template>(`<filename/>:<line-number/>-<line-number/>`)</template> or
84
+ <template>(`<filename/>#<function-or-method/>`)</template>.
88
85
 
89
- - In <description/>, classify the problem with a <severity/>
90
- of <template>LOW</template>, <template>MEDIUM</template> or
91
- <template>HIGH</template>.
86
+ - In <description/>, classify the problem with a <severity/>
87
+ of <template>LOW</template>, <template>MEDIUM</template> or
88
+ <template>HIGH</template>.
92
89
 
93
- - *Additionally*, first call the `kv_clear()` tool of the `ase`
94
- MCP service to clear the in-memory key/value store, and then, for
95
- *every* reported problem, persist its problem analysis result
96
- via the `kv_set` tool of the `ase` MCP service, using `key` set
97
- to `ase-issue-P<n/>` and `val` set to `<title/>: <description/>`.
98
- </step>
90
+ - *Additionally*, persist all reported problems in a *single*
91
+ `kv_batch` call to the `ase` MCP service with `transactional`
92
+ set to `true`. The `commands` parameter array of this call
93
+ starts with one `{ command: "clear" }` entry, followed by one
94
+ `{ command: "set", key: "ase-issue-P<n/>", val: "<title/>:
95
+ <description/>" }` entry per reported problem.
96
+ </step>
99
97
 
100
- 3. <step id="STEP 3: Give Final Hint">
101
- Finally, in this STEP 3, output the following <template/> to give a
102
- final hint:
98
+ 3. <step id="STEP 3: Give Final Hint">
99
+ Finally, in this STEP 3, output the following <template/> to give a
100
+ final hint:
103
101
 
104
- <template>
105
- ⧉ **ASE**: ☻ skill: **<skill-name/>**, ▶ status: **skill finished**
106
- ⧉ **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.**
107
- </template>
108
- </step>
102
+ <template>
103
+ ⧉ **ASE**: ☻ skill: **<skill-name/>**, ▶ status: **skill finished**
104
+ ⧉ **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.**
105
+ </template>
106
+ </step>
109
107
 
110
108
  </flow>
111
109
 
@@ -12,7 +12,6 @@ allowed-tools:
12
12
  ---
13
13
 
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
16
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
18
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
@@ -122,32 +121,58 @@ permitted way to persist artifacts is via `task_save(...)`.
122
121
 
123
122
  3. **Internalize Crafting Tenets**:
124
123
 
125
- Internalize and honor the following tenets.
124
+ You *MUST* internalize and honor the following tenets when crafting the new feature.
126
125
  Do not output anything.
127
126
 
128
- 1. *Recommended* Tenets (generic):
127
+ 1. Generic Tenets:
128
+
129
+ - **Separation of Concerns**:
130
+ Clearly separate all individual concerns as good as possible.
131
+
132
+ - **Code Base Alignment**:
133
+ Strictly align with the existing source code base by exactly
134
+ following its coding style, its structure, its naming
135
+ conventions, etc.
136
+
137
+ 2. Specific Tenets:
129
138
 
130
139
  - **Surgical Changes**:
131
140
  Keep source code changes always as small as possible.
132
141
 
133
- - **Separation of Concerns**:
134
- Clearly separate all individual concerns as good as possible.
142
+ - **Clear Minimal Scope**:
143
+ Establish explicit boundaries for the new feature.
144
+ Avoid feature scope creep and over-engineering.
145
+
146
+ - **Keep it Simple, Stupid (KISS)**:
147
+ Build with the simplest design that solves the real problem.
148
+ Avoid over-engineering.
149
+
150
+ - **You Aren't Gonna Need It (YAGNI)**:
151
+ Build for today's actual needs, not speculative futures.
152
+ Avoid premature optimizations, premature abstractions,
153
+ over-configurability, etc.
135
154
 
136
- - **Single Responsibility Principle**:
137
- Every module, class, or function should have only one reason to change.
155
+ - **Don't Repeat Yourself (DRY)**:
156
+ Avoid redundancies, but honor the *Rule of Three*: Don't
157
+ abstract on the first occurrence -- tolerate (small)
158
+ duplication on the second -- factor out on the third only.
138
159
 
139
- - **Behavior Preservation**:
140
- Refactoring changes only re-structure, never change any observable behavior.
160
+ - **Single Responsibility Principle (SRP)**:
161
+ Every module, class, or function should have only one reason
162
+ to change.
141
163
 
142
- - **Align with Code Base**:
143
- Strictly align with the existing code base by exactly following its
144
- coding style, its structure, its naming conventions, etc.
164
+ - **Loose Coupling, High Cohesion**:
165
+ Strike for good modularity by a set of small, focused parts
166
+ (high cohesion), connected by thin, explicit wires and
167
+ interfaces (loose coupling).
145
168
 
146
- 2. *Essential* Tenets (feature crafting specific):
169
+ - **Clear Interfaces**:
170
+ Design clear interfaces, contracts, and data models --
171
+ with high attention to boundaries and modularity.
147
172
 
148
- - **High Cohesion, Low Coupling**:
149
- Strike for a set of small, focused parts (high cohesion) connected by
150
- thin, explicit wires (low coupling).
173
+ - **Non-Functional Requirements**:
174
+ Honor the non-functional requirements Performance, Security,
175
+ Scalability, Comprehensibility.
151
176
 
152
177
  4. **Find Feature Crafting Approaches**:
153
178
 
@@ -168,14 +193,20 @@ permitted way to persist artifacts is via `task_save(...)`.
168
193
  ` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
169
194
  empty <annotation/>. Do *not* output anything in this sub-step.
170
195
 
171
- 4. *Now* report each approach with the following <template/>,
196
+ 4. Indicate start of reporting by showing the following <template/>:
197
+
198
+ <template>
199
+ ⧉ **ASE**: ┈┈┈┈┈┈┈┈────────━━━━━━━━**(** `APPROACHES-BEGIN` **)**━━━━━━━━────────┈┈┈┈┈┈┈┈
200
+ </template>
201
+
202
+ 5. Now report each approach with the following <template/>,
172
203
  inlining its pros/cons derived in sub-step 2:
173
204
 
174
205
  <template>
175
- &#x1F535; **APPROACH A<n/>**<annotation/>: *<summary/>*
176
- [...]
177
- [...]
178
- [...]
206
+ **APPROACH A<n/>**<annotation/>: *<summary/>*
207
+ [...]
208
+ [...]
209
+ [...]
179
210
  ⊕ *pro*: [...]
180
211
  ⊖ *con*: [...]
181
212
  <optional-diagram/>
@@ -200,6 +231,12 @@ permitted way to persist artifacts is via `task_save(...)`.
200
231
  `**After:**`); never side-by-side. Omit <optional-diagram/>
201
232
  entirely for simple or purely local situation.
202
233
 
234
+ 6. Indicate end of reporting by showing the following <template/>:
235
+
236
+ <template>
237
+ ⧉ **ASE**: ┈┈┈┈┈┈┈┈────────━━━━━━━━**(** `APPROACHES-END` **)**━━━━━━━━────────┈┈┈┈┈┈┈┈
238
+ </template>
239
+
203
240
  5. **Choose Feature Crafting Approach**:
204
241
 
205
242
  1. If <getopt-option-auto/> is equal `false`:
@@ -13,7 +13,6 @@ allowed-tools:
13
13
  ---
14
14
 
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
16
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
17
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
18
17
 
19
18
  Explain Source Code
@@ -15,7 +15,6 @@ allowed-tools:
15
15
  ---
16
16
 
17
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
18
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
19
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
20
19
 
21
20
  Project Insight
@@ -9,7 +9,6 @@ effort: medium
9
9
  ---
10
10
 
11
11
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
12
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
13
12
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
14
13
 
15
14
  Lint Source Code
@@ -12,7 +12,6 @@ allowed-tools:
12
12
  ---
13
13
 
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
16
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
18
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
@@ -122,35 +121,47 @@ permitted way to persist artifacts is via `task_save(...)`.
122
121
 
123
122
  3. **Internalize Refactoring Tenets**:
124
123
 
125
- Internalize and honor the following tenets.
124
+ You *MUST* internalize and honor the following tenets when refactoring.
126
125
  Do not output anything.
127
126
 
128
- 1. *Recommended* Tenets (generic):
129
-
130
- - **Surgical Changes**:
131
- Keep source code changes always as small as possible.
127
+ 1. Generic Tenets:
132
128
 
133
129
  - **Separation of Concerns**:
134
130
  Clearly separate all individual concerns as good as possible.
135
131
 
136
- - **Single Responsibility Principle**:
137
- Every module, class, or function should have only one reason to change.
132
+ - **Code Base Alignment**:
133
+ Strictly align with the existing source code base by exactly
134
+ following its coding style, its structure, its naming
135
+ conventions, etc.
136
+
137
+ 2. Specific Tenets:
138
138
 
139
139
  - **Behavior Preservation**:
140
- Refactoring changes only re-structure, never change any observable behavior.
140
+ Refactoring changes only re-structure, never change any
141
+ observable behavior at all. Especially, do not mix with
142
+ problem resolving and feature crafting.
141
143
 
142
- - **Align with Code Base**:
143
- Strictly align with the existing code base by exactly following its
144
- coding style, its structure, its naming conventions, etc.
144
+ - **Boy Scout Rule**:
145
+ After the refactoring, leave the source code base cleaner
146
+ than you found it.
145
147
 
146
- 2. *Essential* Tenets (refactoring specific):
148
+ - **Don't Repeat Yourself (DRY)**:
149
+ Avoid redundancies, but honor the *Rule of Three*: Don't
150
+ abstract on the first occurrence -- tolerate (small)
151
+ duplication on the second -- factor out on the third only.
147
152
 
148
- - **Boy Scout Rule**:
149
- After the refactoring, leave the code base cleaner than you found it.
153
+ - **Single Responsibility Principle (SRP)**:
154
+ Every module, class, or function should have only one reason
155
+ to change.
150
156
 
151
- - **High Cohesion, Low Coupling**:
152
- Strike for a set of small, focused parts (high cohesion) connected by
153
- thin, explicit wires (low coupling).
157
+ - **Loose Coupling, High Cohesion**:
158
+ Strike for good modularity by a set of small, focused parts
159
+ (high cohesion), connected by thin, explicit wires and
160
+ interfaces (loose coupling).
161
+
162
+ - **Clear Interfaces**:
163
+ Design clear interfaces, contracts, and data models --
164
+ with high attention to boundaries and modularity.
154
165
 
155
166
  4. **Find Refactoring Approaches**:
156
167
 
@@ -171,15 +182,21 @@ permitted way to persist artifacts is via `task_save(...)`.
171
182
  ` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
172
183
  empty <annotation/>. Do *not* output anything in this sub-step.
173
184
 
174
- 4. *Now* report each approach with the following <template/>,
185
+ 4. Indicate start of reporting by showing the following <template/>:
186
+
187
+ <template>
188
+ ⧉ **ASE**: ┈┈┈┈┈┈┈┈────────━━━━━━━━**(** `APPROACHES-BEGIN` **)**━━━━━━━━────────┈┈┈┈┈┈┈┈
189
+ </template>
190
+
191
+ 5. Now report each approach with the following <template/>,
175
192
  inlining its pros/cons derived in sub-step 2, and do not output
176
193
  anything else in this step:
177
194
 
178
195
  <template>
179
- &#x1F535; **APPROACH A<n/>**<annotation/>: *<summary/>*
180
- [...]
181
- [...]
182
- [...]
196
+ **APPROACH A<n/>**<annotation/>: *<summary/>*
197
+ [...]
198
+ [...]
199
+ [...]
183
200
  ⊕ *pro*: [...]
184
201
  ⊖ *con*: [...]
185
202
  <optional-diagram/>
@@ -204,6 +221,12 @@ permitted way to persist artifacts is via `task_save(...)`.
204
221
  `**After:**`); never side-by-side. Omit <optional-diagram/>
205
222
  entirely for simple or purely local situation.
206
223
 
224
+ 6. Indicate end of reporting by showing the following <template/>:
225
+
226
+ <template>
227
+ ⧉ **ASE**: ┈┈┈┈┈┈┈┈────────━━━━━━━━**(** `APPROACHES-END` **)**━━━━━━━━────────┈┈┈┈┈┈┈┈
228
+ </template>
229
+
207
230
  5. **Choose Refactoring Approach**:
208
231
 
209
232
  1. If <getopt-option-auto/> is equal `false`:
@@ -12,7 +12,6 @@ allowed-tools:
12
12
  ---
13
13
 
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
- @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
16
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
18
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
@@ -170,33 +169,45 @@ permitted way to persist artifacts is via `task_save(...)`.
170
169
 
171
170
  3. **Internalize Problem Resolution Tenets**:
172
171
 
173
- Internalize and honor the following tenets.
172
+ You *MUST* internalize and honor the following tenets when resolving the problem.
174
173
  Do not output anything.
175
174
 
176
- 1. *Recommended* Tenets (generic):
177
-
178
- - **Surgical Changes**:
179
- Keep source code changes always as small as possible.
175
+ 1. Generic Tenets:
180
176
 
181
177
  - **Separation of Concerns**:
182
178
  Clearly separate all individual concerns as good as possible.
183
179
 
184
- - **Single Responsibility Principle**:
185
- Every module, class, or function should have only one reason to change.
180
+ - **Code Base Alignment**:
181
+ Strictly align with the existing source code base by exactly
182
+ following its coding style, its structure, its naming
183
+ conventions, etc.
186
184
 
187
- - **Behavior Preservation**:
188
- Refactoring changes only re-structure, never change any observable behavior.
185
+ 2. Specific Tenets:
189
186
 
190
- - **Align with Code Base**:
191
- Strictly align with the existing code base by exactly following its
192
- coding style, its structure, its naming conventions, etc.
193
-
194
- 2. *Essential* Tenets (problem resolving specific):
187
+ - **Surgical Changes**:
188
+ Keep source code changes always as small as possible.
195
189
 
196
190
  - **No Cleanups**:
197
- Strictly focus on resolving the problem and do not mix this task
198
- with any other necessary code cleanups, except they are really
199
- necessary for resolving the task.
191
+ Strictly focus on resolving the problem and do not mix this
192
+ task with any other necessary code cleanups, except they are
193
+ really necessary for resolving the task.
194
+
195
+ - **Minimum Flags**:
196
+ Use the absolute minimum total number of flags (boolean
197
+ variables) to span the entire space of scenarios. Prefer the
198
+ adjustment of existing flags over the introduction of new
199
+ flags.
200
+
201
+ - **Code Adequacy**:
202
+ As little increase in overall source code complexity as
203
+ possible, as much new problem resolution source code as
204
+ necessary.
205
+
206
+ - **Origin Proximity**:
207
+ Problems for *obvious, particular, or expected* errors
208
+ *should* be handled *near the origin*. Problems for
209
+ *theoretical, fictive, or unexpected* errors, *should* be
210
+ handled more general and in parent scopes.
200
211
 
201
212
  4. **Find Problem Resolution Approaches**:
202
213
 
@@ -217,15 +228,21 @@ permitted way to persist artifacts is via `task_save(...)`.
217
228
  ` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
218
229
  empty <annotation/>. Do *not* output anything in this sub-step.
219
230
 
220
- 4. *Now* report each approach with the following <template/>,
231
+ 4. Indicate start of reporting by showing the following <template/>:
232
+
233
+ <template>
234
+ ⧉ **ASE**: ┈┈┈┈┈┈┈┈────────━━━━━━━━**(** `APPROACHES-BEGIN` **)**━━━━━━━━────────┈┈┈┈┈┈┈┈
235
+ </template>
236
+
237
+ 5. Now report each approach with the following <template/>,
221
238
  inlining its pros/cons derived in sub-step 2, and do not output
222
239
  anything else in this step:
223
240
 
224
241
  <template>
225
- &#x1F535; **APPROACH A<n/>**<annotation/>: *<summary/>*
226
- [...]
227
- [...]
228
- [...]
242
+ **APPROACH A<n/>**<annotation/>: *<summary/>*
243
+ [...]
244
+ [...]
245
+ [...]
229
246
  ⊕ *pro*: [...]
230
247
  ⊖ *con*: [...]
231
248
  <optional-diagram/>
@@ -237,17 +254,6 @@ permitted way to persist artifacts is via `task_save(...)`.
237
254
  *precise* and *brief* resolution information. Try to keep the
238
255
  number of bullet points (●) in the range of 1-4.
239
256
 
240
- - Focus on resolution approaches for *practically relevant* cases and do *not*
241
- investigate on theoretical or fictive cases. This is especially the case
242
- for error handling cases and race condition cases.
243
-
244
- - In case of resolution approaches for problems related to *obvious or
245
- expected* errors, they *should* be handled *near the origin*.
246
-
247
- - In case of resolution approaches for problems related to *theoretical
248
- or unexpected* errors, they *should* be handled in parent scopes to
249
- avoid cluttering the source code with too much error handling at all.
250
-
251
257
  - In case of a *complex resolution situation* only,
252
258
  visualize it with an optional diagram <optional-diagram/>
253
259
  by building a Mermaid specification <mermaid-spec/>
@@ -261,6 +267,12 @@ permitted way to persist artifacts is via `task_save(...)`.
261
267
  `**After:**`); never side-by-side. Omit <optional-diagram/>
262
268
  entirely for simple or purely local situation.
263
269
 
270
+ 6. Indicate end of reporting by showing the following <template/>:
271
+
272
+ <template>
273
+ ⧉ **ASE**: ┈┈┈┈┈┈┈┈────────━━━━━━━━**(** `APPROACHES-END` **)**━━━━━━━━────────┈┈┈┈┈┈┈┈
274
+ </template>
275
+
264
276
  5. **Choose Problem Resolution Approach**:
265
277
 
266
278
  1. If <getopt-option-auto/> is equal `false`: