@rse/ase 0.9.69 → 1.0.1
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/package.json +4 -4
- 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/package.json +2 -2
- package/plugin/skills/ase-help-skill/catalog.md +1 -0
- package/plugin/skills/ase-spec-activate/SKILL.md +203 -0
- package/plugin/skills/ase-spec-activate/help.md +76 -0
- package/plugin/skills/ase-spec-edit/help.md +2 -2
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "https://ase.tools",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "https://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.1",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"eslint": "10.10.0",
|
|
20
20
|
"@eslint/js": "10.0.1",
|
|
21
|
-
"@typescript-eslint/parser": "8.
|
|
22
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
23
|
-
"typescript-eslint": "8.
|
|
21
|
+
"@typescript-eslint/parser": "8.70.0",
|
|
22
|
+
"@typescript-eslint/eslint-plugin": "8.70.0",
|
|
23
|
+
"typescript-eslint": "8.70.0",
|
|
24
24
|
"eslint-plugin-promise": "7.3.0",
|
|
25
25
|
"neostandard": "0.14.0-next.1",
|
|
26
26
|
"globals": "17.12.0",
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "https://ase.tools",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "https://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.1",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"markdownlint-cli2": "0.23.2",
|
|
21
21
|
"eslint": "10.10.0",
|
|
22
22
|
"@eslint/markdown": "8.0.3",
|
|
23
|
-
"eslint-markdown": "0.
|
|
23
|
+
"eslint-markdown": "0.15.0"
|
|
24
24
|
},
|
|
25
25
|
"engines": {
|
|
26
26
|
"npm": ">=10.0.0",
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-spec-activate
|
|
3
|
+
argument-hint: "[--help|-h] [<query>]"
|
|
4
|
+
description: >
|
|
5
|
+
Activate Specification Know-How: load the SpecBook format contract,
|
|
6
|
+
the SpecBook schema configuration of the project, and the list of
|
|
7
|
+
specification (SPEC) artifacts into the context, so the specification
|
|
8
|
+
can be read, queried, explained, and edited ad-hoc in plain
|
|
9
|
+
conversation. Use *automatically* whenever the user wants to work
|
|
10
|
+
with the specification files -- asks what the "spec" or
|
|
11
|
+
"specification" says, wants to "look up", "query", "check", or
|
|
12
|
+
"explain" specification content, or wants a small ad-hoc change to
|
|
13
|
+
it -- and no dedicated specification skill (`ase-spec-edit`,
|
|
14
|
+
`ase-sync-import`, `ase-sync-reconcile`, `ase-sync-export`) is
|
|
15
|
+
invoked, as those activate the know-how implicitly.
|
|
16
|
+
user-invocable: true
|
|
17
|
+
disable-model-invocation: false
|
|
18
|
+
effort: medium
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
22
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
23
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
24
|
+
|
|
25
|
+
<purpose name="ase-spec-activate">
|
|
26
|
+
Activate Specification Know-How
|
|
27
|
+
</purpose>
|
|
28
|
+
|
|
29
|
+
<expand name="getopt" arg1="ase-spec-activate">
|
|
30
|
+
$ARGUMENTS
|
|
31
|
+
</expand>
|
|
32
|
+
|
|
33
|
+
<objective>
|
|
34
|
+
*Activate* the know-how about the **SpecBook**-based specification --
|
|
35
|
+
the format contract, the schema configuration, and the artifact set --
|
|
36
|
+
so the specification can be worked with *ad-hoc* in plain conversation.
|
|
37
|
+
</objective>
|
|
38
|
+
|
|
39
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
|
|
40
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-spec.md
|
|
41
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-tenets.md
|
|
42
|
+
|
|
43
|
+
Procedure
|
|
44
|
+
---------
|
|
45
|
+
|
|
46
|
+
This skill is *plan-less* and *read-mostly*: it *never* composes or
|
|
47
|
+
persists a task plan and *MUST* *NOT* call `ase_task_save(...)`. It
|
|
48
|
+
only *loads* know-how into the context and answers an optional *query*.
|
|
49
|
+
It modifies `SPEC` artifacts only when the *query* explicitly asks for
|
|
50
|
+
an ad-hoc change, and it *never* touches the artifact kinds `CODE`,
|
|
51
|
+
`DOCS`, `TASK`, `INFR`, and `OTHR`.
|
|
52
|
+
|
|
53
|
+
1. **Initialize:**
|
|
54
|
+
|
|
55
|
+
Set <query><getopt-arguments/></query> (with any leading and
|
|
56
|
+
trailing whitespace stripped). Do not output anything.
|
|
57
|
+
|
|
58
|
+
2. **Activate Format:**
|
|
59
|
+
|
|
60
|
+
The **SpecBook** format contract is already loaded into the context
|
|
61
|
+
through the included `ase-format-spec.md` (and its nested
|
|
62
|
+
`ase-format-specbook.md`). Internalize it now: the object kinds,
|
|
63
|
+
the object ids and `{{<id/>}}` anchors, the `[[xxx]]` references,
|
|
64
|
+
the `, BECAUSE ` rationale split, the Complex/Concise/Grouped
|
|
65
|
+
format variants, and the `Created:`/`Modified:` frontmatter block.
|
|
66
|
+
Do not output anything.
|
|
67
|
+
|
|
68
|
+
3. **Activate Schema:**
|
|
69
|
+
|
|
70
|
+
1. Set <schema-file/> to the path of the **SpecBook SCHEMA Model**
|
|
71
|
+
of the project (resolved as described in `ase-format-spec.md`)
|
|
72
|
+
and <schema-kind/> to `standard` for the bundled schema or
|
|
73
|
+
`custom` for a project-specific one. Do not output anything.
|
|
74
|
+
|
|
75
|
+
2. <if condition="the content of <schema-file/> was *not* already read into the current context -- neither by an earlier run of this skill nor by a dedicated specification skill">
|
|
76
|
+
Read the **SpecBook SCHEMA Model** in <schema-file/> via the
|
|
77
|
+
`Read` tool to learn the allowed object kinds, properties,
|
|
78
|
+
nestings, and value constraints. Do not output anything.
|
|
79
|
+
</if>
|
|
80
|
+
<else>
|
|
81
|
+
Do *not* read <schema-file/> again -- its content is already
|
|
82
|
+
active in the context. Do not output anything.
|
|
83
|
+
</else>
|
|
84
|
+
|
|
85
|
+
4. **Activate Artifacts:**
|
|
86
|
+
|
|
87
|
+
Resolve the `SPEC` artifacts by calling the
|
|
88
|
+
`ase_artifact_list(kind: [ "spec" ])` tool of the `ase` MCP server
|
|
89
|
+
*once* and reading the returned `artifacts` array of `{ kind, files
|
|
90
|
+
}` objects. Set <artifact-files/> to the project-relative file list
|
|
91
|
+
and <artifact-count/> to its length. Do *not* read the artifacts
|
|
92
|
+
themselves in this step. Do not output anything.
|
|
93
|
+
|
|
94
|
+
5. **Report Activation:**
|
|
95
|
+
|
|
96
|
+
Only output the following <template/>:
|
|
97
|
+
|
|
98
|
+
<template>
|
|
99
|
+
<ase-tpl-boxed title="SPEC" subtitle="ACTIVATED">
|
|
100
|
+
|
|
101
|
+
**SCHEMA**: `<schema-file/>` (<schema-kind/>)
|
|
102
|
+
**SPEC**: `<ase-spec-basedir/>` (<artifact-count/> artifacts)
|
|
103
|
+
|
|
104
|
+
</ase-tpl-boxed>
|
|
105
|
+
</template>
|
|
106
|
+
|
|
107
|
+
6. **Answer Query:**
|
|
108
|
+
|
|
109
|
+
<if condition="<query/> is empty">
|
|
110
|
+
Silently *skip* this item. Do not output anything about the skipping.
|
|
111
|
+
</if>
|
|
112
|
+
<else>
|
|
113
|
+
The <query/> argument *mainly* serves the *automatic* invocation by
|
|
114
|
+
the agent harness, which passes the triggering user request
|
|
115
|
+
*verbatim*, so activation and answer happen in *one* skill run.
|
|
116
|
+
|
|
117
|
+
Serve <query/> *ad-hoc* under the **Activated Behavior** below:
|
|
118
|
+
read the `SPEC` artifacts of <artifact-files/> which are related to
|
|
119
|
+
<query/>, resolve their `[[xxx]]` references across artifacts, and
|
|
120
|
+
answer the query grounded in the specification content, citing the
|
|
121
|
+
artifact file and object id of every statement you rely on. If
|
|
122
|
+
<query/> asks for a change, apply it as an *ad-hoc modification*
|
|
123
|
+
according to the **Activated Behavior**. Set <answer/> to the
|
|
124
|
+
resulting answer and only output the following <template/>:
|
|
125
|
+
|
|
126
|
+
<template>
|
|
127
|
+
<ase-tpl-bullet-normal/> **SPEC ANSWER**:
|
|
128
|
+
|
|
129
|
+
<answer/>
|
|
130
|
+
</template>
|
|
131
|
+
</else>
|
|
132
|
+
|
|
133
|
+
7. **Finish:**
|
|
134
|
+
|
|
135
|
+
Finish the skill processing, but first give the closing hints by
|
|
136
|
+
expanding the following (which, depending on the configured
|
|
137
|
+
<ase-guidance-level/>, may each expand into nothing and hence emit
|
|
138
|
+
no output at all):
|
|
139
|
+
|
|
140
|
+
<ase-tpl-hint level="normal">
|
|
141
|
+
The specification know-how now stays active for this session: read, query, and ad-hoc edit
|
|
142
|
+
the `SPEC` artifacts in plain conversation, or use `/ase-spec-edit` for a complete one-shot edit.
|
|
143
|
+
</ase-tpl-hint>
|
|
144
|
+
|
|
145
|
+
<ase-tpl-hint level="verbose">
|
|
146
|
+
Use `/ase-sync-import -t SPEC` to bring foreign sources into the specification,
|
|
147
|
+
use `/ase-sync-reconcile -s SPEC` to propagate it into the other artifact kinds, and
|
|
148
|
+
use `/ase-sync-export` to render it into HTML or PDF.
|
|
149
|
+
</ase-tpl-hint>
|
|
150
|
+
|
|
151
|
+
Activated Behavior
|
|
152
|
+
------------------
|
|
153
|
+
|
|
154
|
+
Once this skill has run, the following rules stay in force for the
|
|
155
|
+
*remainder of the session* whenever `SPEC` artifacts are read, queried,
|
|
156
|
+
explained, or modified *ad-hoc* in plain conversation -- i.e. *outside*
|
|
157
|
+
of any dedicated specification skill:
|
|
158
|
+
|
|
159
|
+
- **Resolution**: You *MUST* resolve the `SPEC` artifacts via the
|
|
160
|
+
`ase_artifact_list(kind: [ "spec" ])` tool of the `ase` MCP server
|
|
161
|
+
and *never* guess their file paths. Re-resolve them whenever
|
|
162
|
+
artifacts might have been added or removed.
|
|
163
|
+
|
|
164
|
+
- **Interpretation**: You *MUST* interpret the specification content
|
|
165
|
+
strictly according to the **SpecBook** format contract and the
|
|
166
|
+
**SpecBook SCHEMA Model**: object kinds, object ids and `{{<id/>}}`
|
|
167
|
+
anchors, properties, `[[xxx]]` references, and `, BECAUSE `
|
|
168
|
+
rationales. Before answering a query, resolve the `[[xxx]]`
|
|
169
|
+
references *across* artifacts, and ground every answer in the
|
|
170
|
+
specification content by citing artifact file and object id.
|
|
171
|
+
|
|
172
|
+
- **Modification**: Every ad-hoc modification of a `SPEC` artifact
|
|
173
|
+
*MUST* honor the **GENERIC TENETS** and the **SPECIFYING TENETS** of
|
|
174
|
+
the **ASE Tenets**, and *MUST* keep the artifact conformant to the
|
|
175
|
+
format contract and the schema: the `Created:`/`Modified:`
|
|
176
|
+
frontmatter block, the heading levels, the format variants, the
|
|
177
|
+
schema-allowed object kinds, nestings, and property keys, the object
|
|
178
|
+
ids and anchors, the rationale split, and the references. Call the
|
|
179
|
+
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase` MCP
|
|
180
|
+
server *once* per change set and use its result to refresh the
|
|
181
|
+
`Modified:` line of every changed artifact and for both the
|
|
182
|
+
`Created:` and `Modified:` lines of every generated artifact.
|
|
183
|
+
|
|
184
|
+
- **Validation**: After every ad-hoc modification, call the
|
|
185
|
+
`ase_specbook_lint()` tool of the `ase` MCP server, fix the reported
|
|
186
|
+
`diagnostics` in the affected `SPEC` artifacts for at most *three*
|
|
187
|
+
rounds, and report any remaining diagnostics as
|
|
188
|
+
`<file/>:<line/>:<column/>: <message/>` lines.
|
|
189
|
+
|
|
190
|
+
- **Restriction**: An ad-hoc modification of the specification *MUST*
|
|
191
|
+
stay restricted to the `SPEC` artifacts -- the artifact kinds
|
|
192
|
+
`CODE`, `DOCS`, `TASK`, `INFR`, and `OTHR` are *never* touched as
|
|
193
|
+
part of it. For a substantial or multi-artifact change, point the
|
|
194
|
+
user to `/ase-spec-edit` instead of applying it ad-hoc.
|
|
195
|
+
|
|
196
|
+
- **Tandem**: The dedicated specification skills `ase-spec-edit`,
|
|
197
|
+
`ase-sync-import`, `ase-sync-reconcile`, and `ase-sync-export`
|
|
198
|
+
include the format contract themselves and activate the know-how
|
|
199
|
+
*implicitly*. Whenever one of them is invoked, its own procedure
|
|
200
|
+
takes *precedence* over these rules, and this skill *MUST* *NOT* be
|
|
201
|
+
invoked from within it. Conversely, a run of this skill *never*
|
|
202
|
+
replaces such a dedicated skill when the user explicitly asks for
|
|
203
|
+
it.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
|
|
2
|
+
## NAME
|
|
3
|
+
|
|
4
|
+
`ase-spec-activate` - Activate Specification Know-How
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
|
|
8
|
+
`ase-spec-activate`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
[*query*]
|
|
11
|
+
|
|
12
|
+
## DESCRIPTION
|
|
13
|
+
|
|
14
|
+
The `ase-spec-activate` skill activates the know-how about the
|
|
15
|
+
*SpecBook*-based specification (`SPEC`) of the project in the current
|
|
16
|
+
session: it loads the *SpecBook* format contract, reads the *SpecBook*
|
|
17
|
+
schema configuration of the project (the standard schema bundled with
|
|
18
|
+
*ASE*, or the custom schema configured via `project.artifact.spec.schema`),
|
|
19
|
+
and resolves the list of `SPEC` artifacts in the configured specification
|
|
20
|
+
base directory. The activation is reported in a `SPEC ACTIVATED` box,
|
|
21
|
+
listing the schema file (marked `standard` or `custom`) and the base
|
|
22
|
+
directory with the number of resolved artifacts.
|
|
23
|
+
|
|
24
|
+
Once activated, the specification can be worked with *ad-hoc* in plain
|
|
25
|
+
conversation for the remainder of the session: reading, querying, and
|
|
26
|
+
explaining its content (with `[[xxx]]` references resolved across
|
|
27
|
+
artifacts and every answer grounded in artifact file and object id), and
|
|
28
|
+
applying small changes to it (kept conformant to the format contract and
|
|
29
|
+
the schema, with refreshed `Modified:` timestamps and *SpecBook* linting
|
|
30
|
+
afterwards). Ad-hoc changes stay strictly restricted to the `SPEC`
|
|
31
|
+
artifacts; substantial changes are deferred to `ase-spec-edit`.
|
|
32
|
+
|
|
33
|
+
The skill is both user-callable and model-callable: the model invokes it
|
|
34
|
+
*automatically* whenever the user wants to work with the specification
|
|
35
|
+
files without invoking a dedicated specification skill. It works in
|
|
36
|
+
tandem with `ase-spec-edit`, `ase-sync-import`, `ase-sync-reconcile`, and
|
|
37
|
+
`ase-sync-export`, which include the format contract themselves and hence
|
|
38
|
+
activate the know-how implicitly -- their own procedures take precedence
|
|
39
|
+
whenever they run.
|
|
40
|
+
|
|
41
|
+
## ARGUMENTS
|
|
42
|
+
|
|
43
|
+
- *query*:
|
|
44
|
+
Optional question about, or small ad-hoc change to, the
|
|
45
|
+
specification, served directly after the activation. When omitted,
|
|
46
|
+
the skill only activates the know-how. This argument mainly serves
|
|
47
|
+
the automatic invocation by the agent harness: the user's request
|
|
48
|
+
which triggered the activation is passed through as the *query*,
|
|
49
|
+
so activation and answer happen in one skill run under the skill's
|
|
50
|
+
rules instead of in the plain conversation afterwards.
|
|
51
|
+
|
|
52
|
+
## SCENARIOS
|
|
53
|
+
|
|
54
|
+
- You want to ask what the specification says about a topic
|
|
55
|
+
- You want to look up, check, or explain specification content in plain conversation
|
|
56
|
+
- You want a small ad-hoc change applied to the specification
|
|
57
|
+
- You want the SpecBook know-how loaded before working with the specification files
|
|
58
|
+
|
|
59
|
+
## EXAMPLES
|
|
60
|
+
|
|
61
|
+
Activate the specification know-how only:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
❯ /ase-spec-activate
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Activate and directly answer a question about the specification:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
❯ /ase-spec-activate which personas does the specification define?
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## SEE ALSO
|
|
74
|
+
|
|
75
|
+
[`ase-spec-edit`](../ase-spec-edit/help.md), [`ase-sync-import`](../ase-sync-import/help.md), [`ase-sync-reconcile`](../ase-sync-reconcile/help.md),
|
|
76
|
+
[`ase-sync-export`](../ase-sync-export/help.md).
|
|
@@ -133,5 +133,5 @@ Loop over multiple specification edits inside a dedicated Git worktree:
|
|
|
133
133
|
|
|
134
134
|
## SEE ALSO
|
|
135
135
|
|
|
136
|
-
[`ase-
|
|
137
|
-
[`ase-sync-export`](../ase-sync-export/help.md), [`ase-task-grill`](../ase-task-grill/help.md).
|
|
136
|
+
[`ase-spec-activate`](../ase-spec-activate/help.md), [`ase-code-edit`](../ase-code-edit/help.md), [`ase-sync-import`](../ase-sync-import/help.md),
|
|
137
|
+
[`ase-sync-reconcile`](../ase-sync-reconcile/help.md), [`ase-sync-export`](../ase-sync-export/help.md), [`ase-task-grill`](../ase-task-grill/help.md).
|