@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.
- package/dst/ase-config.js +2 -0
- package/dst/ase-decision.js +67 -0
- package/dst/ase-kv.js +105 -6
- package/dst/ase-service.js +25 -26
- package/dst/ase-skills.js +224 -0
- package/package.json +6 -4
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +0 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +44 -32
- package/plugin/skills/ase-code-analyze/SKILL.md +54 -56
- package/plugin/skills/ase-code-craft/SKILL.md +58 -21
- package/plugin/skills/ase-code-explain/SKILL.md +0 -1
- package/plugin/skills/ase-code-insight/SKILL.md +0 -1
- package/plugin/skills/ase-code-lint/SKILL.md +0 -1
- package/plugin/skills/ase-code-refactor/SKILL.md +46 -23
- package/plugin/skills/ase-code-resolve/SKILL.md +46 -34
- package/plugin/skills/ase-meta-changes/SKILL.md +0 -1
- package/plugin/skills/ase-meta-chat/SKILL.md +0 -1
- package/plugin/skills/ase-meta-commit/SKILL.md +0 -1
- package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -8
- package/plugin/skills/ase-meta-quorum/SKILL.md +0 -1
- package/plugin/skills/ase-meta-search/SKILL.md +0 -1
- package/plugin/skills/ase-meta-why/SKILL.md +0 -1
- package/plugin/skills/ase-task-delete/SKILL.md +0 -1
- package/plugin/skills/ase-task-edit/SKILL.md +0 -1
- package/plugin/skills/ase-task-id/SKILL.md +0 -1
- package/plugin/skills/ase-task-implement/SKILL.md +0 -1
- package/plugin/skills/ase-task-list/SKILL.md +0 -1
- package/plugin/skills/ase-task-preflight/SKILL.md +0 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +0 -1
- 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
|
-
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
+
🔵 **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
|
-
🔵 **
|
|
167
|
+
🔵 **COMPONENT RANKING**:
|
|
156
168
|
|
|
157
|
-
| *Component*
|
|
158
|
-
|
|
|
159
|
-
| **<
|
|
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
|
-
| **<
|
|
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.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
44
|
-
especially do not give any further explanations or information.
|
|
41
|
+
Tenets:
|
|
45
42
|
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
50
|
-
|
|
47
|
+
- **Practical Relevance Only**:
|
|
48
|
+
Focus on *practically relevant* cases and especially do *not*
|
|
49
|
+
investigate on theoretical or fictive cases.
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
with the following output <template/>, based on concise bullet
|
|
63
|
-
points.
|
|
61
|
+
<template>
|
|
62
|
+
🟠 PROBLEM (Severity: **<severity/>**): **P<n/>**: **<title/>**
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
<description/>
|
|
65
|
+
</template>
|
|
67
66
|
|
|
68
|
-
|
|
69
|
-
</template>
|
|
67
|
+
Hints:
|
|
70
68
|
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
72
|
+
- Uniquely identify the problems with `P<n/>` where <n/> is 1, 2, ...
|
|
76
73
|
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
- In <description/>, use *ultra brief* but still as *precise* as
|
|
75
|
+
possible problem descriptions.
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
- In <description/>, highlight *code* as <template>`<code/>`</template>
|
|
78
|
+
and *key aspects* as <template>*<aspect/>*</template>.
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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.
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
124
|
+
You *MUST* internalize and honor the following tenets when crafting the new feature.
|
|
126
125
|
Do not output anything.
|
|
127
126
|
|
|
128
|
-
1.
|
|
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
|
-
- **
|
|
134
|
-
|
|
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
|
-
- **
|
|
137
|
-
|
|
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
|
-
- **
|
|
140
|
-
|
|
160
|
+
- **Single Responsibility Principle (SRP)**:
|
|
161
|
+
Every module, class, or function should have only one reason
|
|
162
|
+
to change.
|
|
141
163
|
|
|
142
|
-
- **
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
169
|
+
- **Clear Interfaces**:
|
|
170
|
+
Design clear interfaces, contracts, and data models --
|
|
171
|
+
with high attention to boundaries and modularity.
|
|
147
172
|
|
|
148
|
-
- **
|
|
149
|
-
|
|
150
|
-
|
|
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.
|
|
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
|
-
|
|
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`:
|
|
@@ -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
|
-
|
|
124
|
+
You *MUST* internalize and honor the following tenets when refactoring.
|
|
126
125
|
Do not output anything.
|
|
127
126
|
|
|
128
|
-
1.
|
|
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
|
-
- **
|
|
137
|
-
|
|
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
|
|
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
|
-
- **
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
- **Boy Scout Rule**:
|
|
145
|
+
After the refactoring, leave the source code base cleaner
|
|
146
|
+
than you found it.
|
|
145
147
|
|
|
146
|
-
|
|
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
|
-
- **
|
|
149
|
-
|
|
153
|
+
- **Single Responsibility Principle (SRP)**:
|
|
154
|
+
Every module, class, or function should have only one reason
|
|
155
|
+
to change.
|
|
150
156
|
|
|
151
|
-
- **
|
|
152
|
-
Strike for a set of small, focused parts
|
|
153
|
-
thin, explicit wires
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
172
|
+
You *MUST* internalize and honor the following tenets when resolving the problem.
|
|
174
173
|
Do not output anything.
|
|
175
174
|
|
|
176
|
-
1.
|
|
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
|
-
- **
|
|
185
|
-
|
|
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
|
-
|
|
188
|
-
Refactoring changes only re-structure, never change any observable behavior.
|
|
185
|
+
2. Specific Tenets:
|
|
189
186
|
|
|
190
|
-
- **
|
|
191
|
-
|
|
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
|
|
198
|
-
with any other necessary code cleanups, except they are
|
|
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.
|
|
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
|
-
|
|
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`:
|