@rse/ase 0.9.53 → 0.9.55
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-log.js +5 -0
- package/dst/ase-service.js +45 -6
- package/dst/ase-task.js +117 -18
- package/package.json +2 -2
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-common-code.md +34 -0
- package/plugin/meta/ase-common-task.md +3 -2
- package/plugin/meta/ase-constitution.md +6 -1
- package/plugin/meta/ase-format-task.md +96 -11
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +8 -7
- package/plugin/skills/ase-code-lint/help.md +2 -2
- package/plugin/skills/ase-code-refactor/SKILL.md +8 -7
- package/plugin/skills/ase-code-resolve/SKILL.md +8 -7
- package/plugin/skills/ase-meta-config/help.md +3 -3
- package/plugin/skills/ase-meta-quotes/help.md +4 -3
- package/plugin/skills/ase-task-condense/SKILL.md +6 -5
- package/plugin/skills/ase-task-condense/help.md +1 -1
- package/plugin/skills/ase-task-edit/SKILL.md +26 -5
- package/plugin/skills/ase-task-grill/SKILL.md +8 -4
- package/plugin/skills/ase-task-grill/help.md +2 -1
- package/plugin/skills/ase-task-implement/SKILL.md +150 -5
- package/plugin/skills/ase-task-implement/help.md +40 -1
- package/plugin/skills/ase-task-list/SKILL.md +51 -15
- package/plugin/skills/ase-task-list/help.md +49 -6
- package/plugin/skills/ase-task-preflight/SKILL.md +15 -3
- package/plugin/skills/ase-task-preflight/help.md +9 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +1 -1
- package/plugin/skills/ase-task-view/SKILL.md +23 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-task-list
|
|
3
|
-
argument-hint: "[--help|-h] [--verbose|-v]"
|
|
3
|
+
argument-hint: "[--help|-h] [--verbose|-v] [--include|-i=<state>[,...]] [--exclude|-e=<state>[,...]]"
|
|
4
4
|
description: >
|
|
5
5
|
List all available task ids.
|
|
6
6
|
Use when user wants to see all tasks.
|
|
@@ -19,7 +19,7 @@ List Task Plans
|
|
|
19
19
|
|
|
20
20
|
<expand name="getopt"
|
|
21
21
|
arg1="ase-task-list"
|
|
22
|
-
arg2="--verbose|-v">
|
|
22
|
+
arg2="--verbose|-v --include|-i=none --exclude|-e=COMPLETED,CANCELLED">
|
|
23
23
|
$ARGUMENTS
|
|
24
24
|
</expand>
|
|
25
25
|
|
|
@@ -30,13 +30,40 @@ List Task Plans
|
|
|
30
30
|
Procedure
|
|
31
31
|
---------
|
|
32
32
|
|
|
33
|
-
1.
|
|
33
|
+
1. Determine the *effective state set* <states/>, i.e., the lifecycle
|
|
34
|
+
states a task plan has to be in to be listed at all. For this, parse
|
|
35
|
+
<getopt-option-include/> and <getopt-option-exclude/> as
|
|
36
|
+
comma-separated token lists, silently dropping the `none` sentinel
|
|
37
|
+
and any empty token. If a token <token/> is *not* one of the eight
|
|
38
|
+
`Status:` values `DRAFTED`, `REJECTED`, `APPROVED`, `DEFERRED`,
|
|
39
|
+
`STARTED`, `BLOCKED`, `COMPLETED`, or `CANCELLED`, only output the
|
|
40
|
+
following <template/> and then *STOP* processing the entire current
|
|
41
|
+
skill:
|
|
42
|
+
|
|
43
|
+
<template>
|
|
44
|
+
⧉ **ASE**: ✪ skill: **ase-task-list**, ▶ ERROR: invalid state: **<token/>**
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
Otherwise set <states/> to *all* eight states if both lists are
|
|
48
|
+
empty, to the *include* list if only it is non-empty, to all eight
|
|
49
|
+
*minus* the *exclude* list if only it is non-empty, and to the
|
|
50
|
+
*include* list *minus* the *exclude* list if both are non-empty. If
|
|
51
|
+
the resulting <states/> is *empty*, only output the following
|
|
52
|
+
<template/> and then *STOP* processing the entire current skill:
|
|
53
|
+
|
|
54
|
+
<template>
|
|
55
|
+
⧉ **ASE**: ✪ skill: **ase-task-list**, ▶ ERROR: options `--include` and `--exclude` cancel out to an empty state set
|
|
56
|
+
</template>
|
|
57
|
+
|
|
58
|
+
2. Call the `ase_task_list(verbose: <getopt-option-verbose/>)` tool from
|
|
34
59
|
the `ase` MCP server. The result is a structured object with a
|
|
35
|
-
`tasks` array where each entry has an `id` field, and
|
|
36
|
-
<getopt-option-verbose/> is `true` -- additionally an `mtime`
|
|
37
|
-
(formatted as `YYYY-MM-DD HH:MM`).
|
|
60
|
+
`tasks` array where each entry has an `id` and a `status` field, and
|
|
61
|
+
-- if <getopt-option-verbose/> is `true` -- additionally an `mtime`
|
|
62
|
+
field (formatted as `YYYY-MM-DD HH:MM`). *Drop* from the `tasks`
|
|
63
|
+
array every entry whose `status` is *not* contained in <states/>. Do
|
|
64
|
+
not output anything.
|
|
38
65
|
|
|
39
|
-
|
|
66
|
+
3. If the `tasks` array is empty, output the following <template/>:
|
|
40
67
|
|
|
41
68
|
<template>
|
|
42
69
|
⧉ **ASE**: ◉ tasks: *(none)*
|
|
@@ -45,16 +72,16 @@ Procedure
|
|
|
45
72
|
Else, dispatch on <getopt-option-verbose/>:
|
|
46
73
|
|
|
47
74
|
- If <getopt-option-verbose/> is `true`, output the list of tasks
|
|
48
|
-
with the following <template/>, where each <id
|
|
49
|
-
correspond to an entry in the task list:
|
|
75
|
+
with the following <template/>, where each <id/>, <status/>, and
|
|
76
|
+
<mtime/> correspond to an entry in the task list:
|
|
50
77
|
|
|
51
78
|
<template>
|
|
52
79
|
⧉ **ASE**: ◉ tasks:
|
|
53
80
|
|
|
54
|
-
| *Task Id* | *Last Modified* |
|
|
55
|
-
|
|
56
|
-
| **<id/>** | `<mtime/>` |
|
|
57
|
-
| [...] | [...] |
|
|
81
|
+
| *Task Id* | *Status* | *Last Modified* |
|
|
82
|
+
|-----------|-------------|--------------------|
|
|
83
|
+
| **<id/>** | `<status/>` | `<mtime/>` |
|
|
84
|
+
| [...] | [...] | [...] |
|
|
58
85
|
|
|
59
86
|
</template>
|
|
60
87
|
|
|
@@ -72,7 +99,7 @@ Procedure
|
|
|
72
99
|
|
|
73
100
|
</template>
|
|
74
101
|
|
|
75
|
-
|
|
102
|
+
4. Finally, give the closing hints by expanding the following (which,
|
|
76
103
|
depending on the configured <ase-guidance-level/>, may each expand
|
|
77
104
|
into nothing and hence emit no output at all):
|
|
78
105
|
|
|
@@ -81,6 +108,11 @@ Procedure
|
|
|
81
108
|
Use `/ase-task-id <id>` to switch to one of the listed tasks and `/ase-task-view` to inspect its plan.
|
|
82
109
|
</ase-tpl-hint>
|
|
83
110
|
</if>
|
|
111
|
+
<elseif condition="entries were dropped by the state filtering of step 2">
|
|
112
|
+
<ase-tpl-hint level="normal">
|
|
113
|
+
All task plans were filtered out by the effective state set -- use `/ase-task-list --exclude none` to list them regardless of their status.
|
|
114
|
+
</ase-tpl-hint>
|
|
115
|
+
</elseif>
|
|
84
116
|
<else>
|
|
85
117
|
<ase-tpl-hint level="normal">
|
|
86
118
|
No task plan exists yet -- use `/ase-task-edit` to create one through a conversational loop.
|
|
@@ -89,7 +121,11 @@ Procedure
|
|
|
89
121
|
|
|
90
122
|
<if condition="<getopt-option-verbose/> is not equal `true`">
|
|
91
123
|
<ase-tpl-hint level="verbose">
|
|
92
|
-
Use `/ase-task-list --verbose` to additionally show the last-modified timestamp of each task plan.
|
|
124
|
+
Use `/ase-task-list --verbose` to additionally show the status and the last-modified timestamp of each task plan.
|
|
93
125
|
</ase-tpl-hint>
|
|
94
126
|
</if>
|
|
95
127
|
|
|
128
|
+
<ase-tpl-hint level="verbose">
|
|
129
|
+
Use `/ase-task-list --include`/`--exclude` to narrow the listing to certain lifecycle states, e.g. `--include STARTED,BLOCKED`.
|
|
130
|
+
</ase-tpl-hint>
|
|
131
|
+
|
|
@@ -8,35 +8,78 @@
|
|
|
8
8
|
`ase-task-list`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
10
|
[`--verbose`|`-v`]
|
|
11
|
+
[`--include`|`-i`=*state*[`,`...]]
|
|
12
|
+
[`--exclude`|`-e`=*state*[`,`...]]
|
|
11
13
|
|
|
12
14
|
## DESCRIPTION
|
|
13
15
|
|
|
14
16
|
The `ase-task-list` skill lists all available *task ids* in the
|
|
15
17
|
current project by calling the `ase_task_list` MCP tool. In the
|
|
16
18
|
default mode, only the task ids are rendered as a single-column
|
|
17
|
-
Markdown table. In verbose mode, the
|
|
18
|
-
each task plan
|
|
19
|
+
Markdown table. In verbose mode, the lifecycle status and the
|
|
20
|
+
last-modified timestamp of each task plan are rendered as additional
|
|
21
|
+
columns.
|
|
22
|
+
|
|
23
|
+
The listing is restricted to an *effective state set*, derived from the
|
|
24
|
+
`Status:` frontmatter key of each task plan (which defaults to `DRAFTED`
|
|
25
|
+
for a plan carrying no such key): with `--include` only, exactly the
|
|
26
|
+
listed states are shown; with `--exclude` only, all states except the
|
|
27
|
+
listed ones; with both, the included ones minus the excluded ones. An
|
|
28
|
+
unknown state, or a combination which cancels out to an empty set,
|
|
29
|
+
aborts the skill with an error. By default,
|
|
30
|
+
`--exclude COMPLETED,CANCELLED` is in effect, so finished and
|
|
31
|
+
abandoned task plans stay out of the way. The eight states are:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
DRAFTED APPROVED STARTED COMPLETED
|
|
35
|
+
REJECTED DEFERRED BLOCKED CANCELLED
|
|
36
|
+
```
|
|
19
37
|
|
|
20
38
|
## OPTIONS
|
|
21
39
|
|
|
22
40
|
`--verbose`|`-v`:
|
|
23
|
-
Render an additional `
|
|
24
|
-
`YYYY-MM-DD HH:MM`
|
|
41
|
+
Render an additional `Status` column with the lifecycle state and an
|
|
42
|
+
additional `Last Modified` column with the `YYYY-MM-DD HH:MM`
|
|
43
|
+
timestamp of each task plan.
|
|
44
|
+
|
|
45
|
+
`--include`|`-i`=*state*[`,`...]:
|
|
46
|
+
Restrict the listed task plans to the given comma-separated list of
|
|
47
|
+
lifecycle states (e.g. `STARTED,BLOCKED`). Without this option, all
|
|
48
|
+
eight states are listed. The `none` sentinel selects no state at all.
|
|
49
|
+
|
|
50
|
+
`--exclude`|`-e`=*state*[`,`...]:
|
|
51
|
+
Remove the given comma-separated list of lifecycle states from the
|
|
52
|
+
listed task plans. Applied *after* `--include`, so
|
|
53
|
+
`-i DRAFTED,STARTED -e STARTED` lists `DRAFTED` only. Defaults to
|
|
54
|
+
`COMPLETED,CANCELLED`; pass `--exclude none` to suppress the
|
|
55
|
+
default and list task plans in every state.
|
|
25
56
|
|
|
26
57
|
## EXAMPLES
|
|
27
58
|
|
|
28
|
-
List all task ids:
|
|
59
|
+
List all unfinished task ids:
|
|
29
60
|
|
|
30
61
|
```text
|
|
31
62
|
❯ /ase-task-list
|
|
32
63
|
```
|
|
33
64
|
|
|
34
|
-
List all task ids together with their last-modified timestamps:
|
|
65
|
+
List all task ids together with their status and last-modified timestamps:
|
|
35
66
|
|
|
36
67
|
```text
|
|
37
68
|
❯ /ase-task-list --verbose
|
|
38
69
|
```
|
|
39
70
|
|
|
71
|
+
List the task ids of every task plan, including the finished ones:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
❯ /ase-task-list --exclude none
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
List only the task ids of the task plans currently under work:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
❯ /ase-task-list --include STARTED,BLOCKED
|
|
81
|
+
```
|
|
82
|
+
|
|
40
83
|
## SEE ALSO
|
|
41
84
|
|
|
42
85
|
[`ase-task-id`](../ase-task-id/help.md), [`ase-task-view`](../ase-task-view/help.md), [`ase-task-edit`](../ase-task-edit/help.md),
|
|
@@ -32,6 +32,8 @@ for a corresponding, *complete source code change set*.
|
|
|
32
32
|
|
|
33
33
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
34
34
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
|
|
35
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-tenets.md
|
|
36
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-code.md
|
|
35
37
|
|
|
36
38
|
Procedure
|
|
37
39
|
---------
|
|
@@ -59,6 +61,10 @@ Procedure
|
|
|
59
61
|
or `ase-task-edit` skills first to create a task plan. Then
|
|
60
62
|
immediately stop processing this skill.
|
|
61
63
|
|
|
64
|
+
3. Internalize the tenets stated by the plan:
|
|
65
|
+
|
|
66
|
+
<expand name="code-tenets-from-plan"></expand>
|
|
67
|
+
|
|
62
68
|
3. **Create Implementation Draft:**
|
|
63
69
|
|
|
64
70
|
1. Perform a *preflight* of the *implementation* of <task-content/> by creating a
|
|
@@ -82,16 +88,22 @@ Procedure
|
|
|
82
88
|
|
|
83
89
|
</template>
|
|
84
90
|
|
|
85
|
-
3. <if condition="<task-content/>
|
|
91
|
+
3. <if condition="the frontmatter of <task-content/> carries a `Modified:` key">
|
|
86
92
|
Update <timestamp-modified/> with the current time in
|
|
87
93
|
ISO-style format, which has to be determined by calling the
|
|
88
94
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
|
|
89
95
|
MCP server and use the `text` field of its response. Update
|
|
90
|
-
the
|
|
91
|
-
|
|
96
|
+
the `Modified: ...` frontmatter key of <task-content/> with the
|
|
97
|
+
new <timestamp-modified/> value.
|
|
92
98
|
Do not output anything.
|
|
93
99
|
</if>
|
|
94
100
|
|
|
101
|
+
Additionally *add* the value `preflighted` to the `Properties:`
|
|
102
|
+
frontmatter key of <task-content/> if it is still absent, keeping
|
|
103
|
+
all already present values and *creating* the whole key (with the
|
|
104
|
+
single value `preflighted`) if the plan carries none. Do not
|
|
105
|
+
output anything.
|
|
106
|
+
|
|
95
107
|
4. Finally, call the `ase_task_save(id: "<ase-task-id/>",
|
|
96
108
|
text: "<task-content/>")` tool of the `ase` MCP server to save the updated
|
|
97
109
|
task plan content. Calculate the number of words <words/> of
|
|
@@ -16,9 +16,17 @@ The `ase-task-preflight` skill performs a *preflight* (dry-run,
|
|
|
16
16
|
test-drive) of the *implementation* of a task plan by creating a
|
|
17
17
|
draft for a corresponding, complete *artifact change set* in
|
|
18
18
|
*unified diff* format. The draft is appended to the task plan as
|
|
19
|
-
an `IMPLEMENTATION DRAFT` section (replacing any previous draft)
|
|
19
|
+
an `IMPLEMENTATION DRAFT` section (replacing any previous draft) and
|
|
20
|
+
the plan's `Properties:` frontmatter key gains the value `preflighted`.
|
|
20
21
|
No source files are modified.
|
|
21
22
|
|
|
23
|
+
The *kind of change* stated by the plan's `Kind:` frontmatter key
|
|
24
|
+
(`CRAFTING`, `REFACTORING`, or `RESOLVING`) selects which
|
|
25
|
+
*operation-specific tenet set* of the **ASE Tenets** is internalized
|
|
26
|
+
before the draft is produced, in addition to the always applying
|
|
27
|
+
**GENERIC TENETS**. If a plan carries no such key, the kind is
|
|
28
|
+
*inferred* from the plan content, defaulting to `CRAFTING`.
|
|
29
|
+
|
|
22
30
|
After the preflight, the user is asked whether to stop, hand
|
|
23
31
|
off to `ase-task-edit`, or hand off to `ase-task-implement`,
|
|
24
32
|
unless `--next` pre-selects this choice.
|
|
@@ -126,7 +126,7 @@ Procedure
|
|
|
126
126
|
(append extracted text to instruction).
|
|
127
127
|
</if>
|
|
128
128
|
|
|
129
|
-
6. <if condition="<task-content/>
|
|
129
|
+
6. <if condition="the frontmatter of <task-content/> carries a `Created: <text/>` key">
|
|
130
130
|
Set <timestamp-created><text/></timestamp-created> (set
|
|
131
131
|
timestamp-created to extracted text)
|
|
132
132
|
</if>
|
|
@@ -78,6 +78,27 @@ Procedure
|
|
|
78
78
|
|
|
79
79
|
2. <if condition="<task-content/> is not empty">
|
|
80
80
|
Treat <task-content/> as *verbatim* Markdown.
|
|
81
|
+
|
|
82
|
+
For the *rendering only*, drop the leading *frontmatter* block --
|
|
83
|
+
both `---` delimiters and all of their keys -- and instead place
|
|
84
|
+
the following column-aligned glyph lines *before* the
|
|
85
|
+
`# TASK: <title/>` heading, separated from it by an empty line,
|
|
86
|
+
omitting the line of every key absent from the frontmatter. The
|
|
87
|
+
glyph lines *MUST* stay *above* the heading, exactly where the
|
|
88
|
+
frontmatter block sits in the plan file, and *MUST NOT* be moved
|
|
89
|
+
below it. This keeps the `---` delimiters from rendering as a
|
|
90
|
+
horizontal rule plus a *setext heading*. This rewrite is
|
|
91
|
+
*display-only* and *MUST NOT* change <task-content/> itself:
|
|
92
|
+
|
|
93
|
+
<format>
|
|
94
|
+
◉ **Id:** <task-id/>
|
|
95
|
+
⎈ **Created:** <timestamp-created/>
|
|
96
|
+
⚙ **Modified:** <timestamp-modified/>
|
|
97
|
+
◐ **Status:** <task-status/>
|
|
98
|
+
⚑ **Properties:** <task-properties/>
|
|
99
|
+
☯ **Kind:** <task-kind/>
|
|
100
|
+
</format>
|
|
101
|
+
|
|
81
102
|
*Render plan*: Only output the following <template/>. If
|
|
82
103
|
<getopt-option-full/> is *not* `true`, <task-content/> is longer than
|
|
83
104
|
90 lines, and a `## IMPLEMENTATION DRAFT` section (from the
|
|
@@ -87,9 +108,9 @@ Procedure
|
|
|
87
108
|
Use the following <template/>:
|
|
88
109
|
|
|
89
110
|
<template>
|
|
90
|
-
<ase-tpl-head title="TASK"/>
|
|
111
|
+
<ase-tpl-head title="TASK" subtitle="<task-id/>"/>
|
|
91
112
|
<task-content/>
|
|
92
|
-
<ase-tpl-foot title="TASK"/>
|
|
113
|
+
<ase-tpl-foot title="TASK" subtitle="<task-id/>"/>
|
|
93
114
|
</template>
|
|
94
115
|
</if>
|
|
95
116
|
|