@rse/ase 2.0.5 → 2.0.6

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 (38) hide show
  1. package/dst/ase-config-schema.js +1 -1
  2. package/dst/ase-setup-settings.js +111 -1
  3. package/dst/ase-setup.js +19 -7
  4. package/dst/ase-spec.js +184 -49
  5. package/dst/ase-task-board-tui-model.js +8 -1
  6. package/dst/ase-task-board-tui.js +26 -2
  7. package/dst/ase-task-board-web-client.js +10 -10
  8. package/dst/man/ase-artifact.md +1 -1
  9. package/dst/man/ase-config.md +5 -3
  10. package/dst/man/ase-mcp.md +1 -1
  11. package/dst/man/ase-setup-install.md +10 -1
  12. package/dst/man/ase-setup-status.md +6 -0
  13. package/dst/man/ase-setup-uninstall.md +3 -1
  14. package/dst/man/ase-setup-update.md +3 -0
  15. package/dst/man/ase-setup.md +4 -4
  16. package/dst/man/ase-spec-export.md +14 -3
  17. package/dst/man/ase-spec-init.md +10 -1
  18. package/dst/man/ase-spec-lint.md +2 -1
  19. package/dst/man/ase-spec-preview.md +10 -1
  20. package/dst/man/ase-spec-query.md +96 -0
  21. package/dst/man/ase-spec.md +32 -11
  22. package/dst/man/ase.md +3 -3
  23. package/package.json +18 -15
  24. package/plugin/.claude-plugin/icon.png +0 -0
  25. package/plugin/.claude-plugin/plugin.json +1 -1
  26. package/plugin/.codex-plugin/plugin.json +1 -1
  27. package/plugin/.github/plugin/plugin.json +1 -1
  28. package/plugin/meta/ase-format-spec.md +29 -5
  29. package/plugin/meta/ase-format-specbook.md +427 -47
  30. package/plugin/meta/ase-format-specbook.yaml +180 -78
  31. package/plugin/mods/ase-mods-common.ts +36 -6
  32. package/plugin/mods/ase-mods-evaluate.ts +227 -0
  33. package/plugin/mods/ase-mods-grill.ts +1 -30
  34. package/plugin/mods/ase-mods-help-browse.ts +18 -13
  35. package/plugin/mods/ase-mods-help-find.ts +17 -9
  36. package/plugin/mods/ase-mods.ts +23 -17
  37. package/plugin/skills/ase-spec-activate/SKILL.md +4 -1
  38. package/plugin/mods/claude-code.d.ts +0 -13440
@@ -21,7 +21,7 @@ which provide the same) to locate the files of a kind. The recognized
21
21
  kinds are:
22
22
 
23
23
  - `spec`: the specification (by default below `docs/specbook`,
24
- the files `*.{md,txt,svg,png,jpg}`).
24
+ the files `**/*.{md,txt,svg,png,jpg}`).
25
25
  - `code`: the source code (by default below `src`, all files
26
26
  except `**/etc/**` and `**/{.gitignore,.npmignore,package.json}`).
27
27
  - `docs`: the documentation (by default below `doc`, all files plus
@@ -259,12 +259,14 @@ glob). See `ase-artifact`(1):
259
259
 
260
260
  - `project.artifact.spec.basedir`, `project.artifact.spec.files`:
261
261
  The specification files (default: `docs/specbook` and
262
- `*.{md,txt,svg,png,jpg}`).
262
+ `**/*.{md,txt,svg,png,jpg}`).
263
263
 
264
264
  - `project.artifact.spec.schema` (*string*):
265
265
  The whitespace-separated list of *SpecBook* schema configuration
266
- files, where `std` names the bundled standard one and every other
267
- entry is a file relative to the project root (default: empty, i.e.,
266
+ files, where `std`, `meta`, and `pm` name the bundled standard, meta,
267
+ and project management ones, `npm:`, `github:`, `http:`, and
268
+ `https:` references name remote ones, and every other entry is a file
269
+ or glob pattern relative to the project root (default: empty, i.e.,
268
270
  `std`). See `ase-spec`(1).
269
271
 
270
272
  - `project.artifact.code.basedir`, `project.artifact.code.files`:
@@ -53,7 +53,7 @@ The service provides the `ase_*` MCP tools of the skills, e.g.,
53
53
  `ase_config_list`, `ase_state_get`, `ase_state_set`,
54
54
  `ase_state_delete`, `ase_kv_get`, `ase_kv_set`, `ase_kv_delete`,
55
55
  `ase_kv_clear`, `ase_kv_batch`, the `ase_task_*` tools, `ase_artifact_list`,
56
- `ase_artifact_name`, `ase_specbook_lint`, `ase_specbook_export`,
56
+ `ase_artifact_name`, `ase_specbook_lint`, `ase_specbook_export`, `ase_specbook_query`,
57
57
  `ase_diagram`, `ase_worktree_path`, `ase_mint`, `ase_text_metric`,
58
58
  `ase_getopt`, `ase_markdown_prepare`, `ase_timestamp`, `ase_sleep`,
59
59
  `ase_compat`, `ase_component_info`, and `ase_decision_matrix`.
@@ -34,6 +34,14 @@ and `--tool codex`, which have no output style concept, the `ase hook
34
34
  session-start` handler injects the identical style instructions into
35
35
  the session context instead (see `ase-hook`(1)).
36
36
 
37
+ For `--tool claude`, the function hooks of the plugin-shipped
38
+ *Claude Code* mods (e.g., the clickable grilling table and the help
39
+ bands above the prompt) are additionally enabled by writing
40
+ `"CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1"` into the `env` of the
41
+ `settings.json` of the installation scope, unless the variable is
42
+ already present there: an *ASE* one (value `1`) is left as is, and a
43
+ foreign one (any other value) is preserved with a warning.
44
+
37
45
  The *ASE* tool itself is not installed by this command, as it is
38
46
  already installed when running it (e.g., via `npm install -g
39
47
  @rse/ase`).
@@ -82,7 +90,8 @@ already installed when running it (e.g., via `npm install -g
82
90
 
83
91
  - `~/.claude/settings.json`, `.claude/settings.json`, `.claude/settings.local.json`:
84
92
  The settings file of the `user`, `project`, resp. `local` scope,
85
- receiving the `outputStyle` selection for `--tool claude`.
93
+ receiving the `outputStyle` selection and the
94
+ `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` variable for `--tool claude`.
86
95
 
87
96
  ## EXIT STATUS
88
97
 
@@ -33,6 +33,12 @@ the agent tool to be found in `$PATH`. The rows are:
33
33
  (the *ASE* output style `ase:ase-terse`) or `foreign`
34
34
  (hand-selected).
35
35
 
36
+ - `FUNCTIONHOOKS` (`--tool claude` only):
37
+ One row per settings file (of the scopes `user`, `project`, and
38
+ `local`) carrying a `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` variable in
39
+ its `env`, with the status `enabled` (value `1`) or `foreign` (any
40
+ other value).
41
+
36
42
  - `STATUSLINE` (`--tool claude` and `--tool copilot` only):
37
43
  One row per settings file carrying a `statusLine` entry, with the
38
44
  status `activated` (its command starts with `ase statusline`, i.e.,
@@ -20,7 +20,9 @@ steps are:
20
20
  2. For `--tool claude`, the selection of the output style
21
21
  `ase:ase-terse` is removed from the `settings.json` of the
22
22
  installation scope, while a foreign `outputStyle` is preserved with
23
- a warning.
23
+ a warning. Likewise, the variable `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS`
24
+ (value `1`) is removed from its `env` (together with an `env` which
25
+ became empty), while a foreign value is preserved with a warning.
24
26
  3. The plugin `ase@ase` is uninstalled (`<cli> plugin uninstall
25
27
  ase@ase`, resp. `codex plugin remove ase@ase`) and the plugin
26
28
  marketplace `ase` is removed (`<cli> plugin marketplace remove
@@ -42,6 +42,9 @@ carry no version change in the plugin manifest.
42
42
  Like `ase setup install`, for `--tool claude`, the output style
43
43
  `ase:ase-terse` is finally selected in the `settings.json` of the
44
44
  installation scope, unless a foreign `outputStyle` is already selected
45
+ there, which is preserved with a warning, and the function hooks are
46
+ enabled through `"CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1"` in its
47
+ `env`, unless a foreign value of the variable is already present
45
48
  there, which is preserved with a warning.
46
49
 
47
50
  ## OPTIONS
@@ -23,8 +23,8 @@ The target agent tool is either *Anthropic Claude Code CLI*
23
23
  (`codex`). All operations are performed through the plugin and MCP
24
24
  commands of the respective agent tool CLI (e.g., `claude plugin
25
25
  install`), which hence has to be found in `$PATH`, and through direct
26
- edits of its settings files (for the output style, the statusline,
27
- and the telemetry). Every sub-process command is logged (with API keys
26
+ edits of its settings files (for the output style, the function
27
+ hooks, the statusline, and the telemetry). Every sub-process command is logged (with API keys
28
28
  masked) and its output is shown only on failure.
29
29
 
30
30
  ## OPTIONS
@@ -79,8 +79,8 @@ individual manual pages for the exact applicability):
79
79
  `ase-setup-disable`(1).
80
80
 
81
81
  - `ase setup status` \[`-t`|`--tool` *tool*\]:
82
- Report the plugin, MCP server, output style, statusline, and
83
- telemetry registrations of all scopes. See `ase-setup-status`(1).
82
+ Report the plugin, MCP server, output style, function hooks,
83
+ statusline, and telemetry registrations of all scopes. See `ase-setup-status`(1).
84
84
 
85
85
  - `ase setup mcp` `list`|`activate`|`deactivate` \[...\]:
86
86
  List, activate, or deactivate the pre-defined foreign MCP servers.
@@ -6,6 +6,7 @@
6
6
  \[`-h`|`--help`\]
7
7
  \[`-o`|`--output` \[*format*`:`\]*file*\] \[...\]
8
8
  \[`-w`|`--watch`\]
9
+ \[`-S`|`--schema`\]
9
10
 
10
11
  ## DESCRIPTION
11
12
 
@@ -55,8 +56,10 @@ The MCP tool `ase_specbook_export` provides the same to the skills.
55
56
  mixes into the export on standard output. An unknown format prefix and
56
57
  a not inferable format are errors. A relative *file* is relative to the
57
58
  current working directory. Default: the HTML rendering into
58
- `index.html` inside the specification base directory (e.g.,
59
- `docs/specbook/index.html`).
59
+ `index.html` (resp. `schema.html` under `--schema`) inside the
60
+ specification base directory (e.g., `docs/specbook/index.html`).
61
+ A `md` output inside the specification base directory is refused,
62
+ as it would be parsed as a specification file itself.
60
63
 
61
64
  - \[`-w`|`--watch`\]:
62
65
  Do not terminate after the initial export, but keep the outputs in
@@ -67,6 +70,10 @@ The MCP tool `ase_specbook_export` provides the same to the skills.
67
70
  `--watch` rejects the `-` standard output. The command then runs
68
71
  until it is interrupted (e.g., via `CTRL+C`).
69
72
 
73
+ - \[`-S`|`--schema`\]:
74
+ Export the effective schema configuration `project.artifact.spec.schema`
75
+ itself, rendered as a *SpecBook* document, instead of the specification.
76
+
70
77
  ## EXIT STATUS
71
78
 
72
79
  Exits with status `0` on success, and with status `1` on any lint
@@ -88,11 +95,15 @@ $ ase spec export -o md:-
88
95
 
89
96
  # keep an HTML export in sync with the sources
90
97
  $ ase spec export -o /tmp/spec.html -w
98
+
99
+ # export the schema configuration as PDF
100
+ $ ase spec export -S -o schema.pdf
91
101
  ```
92
102
 
93
103
  ## SEE ALSO
94
104
 
95
- `ase`(1), `ase-spec`(1), `ase-spec-lint`(1), `ase-spec-preview`(1).
105
+ `ase`(1), `ase-spec`(1), `ase-spec-lint`(1), `ase-spec-query`(1),
106
+ `ase-spec-preview`(1).
96
107
 
97
108
  ## AUTHOR
98
109
 
@@ -4,6 +4,7 @@
4
4
 
5
5
  `ase spec init`
6
6
  \[`-h`|`--help`\]
7
+ \[`-s`|`--sample`\]
7
8
 
8
9
  ## DESCRIPTION
9
10
 
@@ -31,6 +32,11 @@ configuration are taken from the *ASE* configuration (see
31
32
  - \[`-h`|`--help`\]:
32
33
  Show usage information and exit.
33
34
 
35
+ - \[`-s`|`--sample`\]:
36
+ Additionally scaffold one lint-clean sample object per allowed object
37
+ kind into the created files, with placeholder values satisfying the
38
+ schema configuration, so the format is learnable from them.
39
+
34
40
  ## EXIT STATUS
35
41
 
36
42
  Exits with status `0` on success, and with status `1` if the
@@ -44,12 +50,15 @@ $ ase spec init
44
50
 
45
51
  # initialize and then lint the specification
46
52
  $ ase spec init && ase spec lint
53
+
54
+ # initialize the specification with sample objects
55
+ $ ase spec init -s
47
56
  ```
48
57
 
49
58
  ## SEE ALSO
50
59
 
51
60
  `ase`(1), `ase-spec`(1), `ase-spec-lint`(1), `ase-spec-export`(1),
52
- `ase-spec-preview`(1), `ase-config`(1).
61
+ `ase-spec-query`(1), `ase-spec-preview`(1), `ase-config`(1).
53
62
 
54
63
  ## AUTHOR
55
64
 
@@ -67,7 +67,8 @@ $ ase spec lint -m
67
67
 
68
68
  ## SEE ALSO
69
69
 
70
- `ase`(1), `ase-spec`(1), `ase-spec-export`(1), `ase-spec-preview`(1).
70
+ `ase`(1), `ase-spec`(1), `ase-spec-export`(1), `ase-spec-query`(1),
71
+ `ase-spec-preview`(1).
71
72
 
72
73
  ## AUTHOR
73
74
 
@@ -6,6 +6,7 @@
6
6
  \[`-h`|`--help`\]
7
7
  \[`-a`|`--addr` *ip-addr*\]
8
8
  \[`-p`|`--port` *tcp-port*\]
9
+ \[`-S`|`--schema`\]
9
10
 
10
11
  ## DESCRIPTION
11
12
 
@@ -33,6 +34,10 @@ interrupted (e.g., via `CTRL+C`).
33
34
  The TCP port to listen on, an integer in the range `1`..`65535`
34
35
  (default: `12345`).
35
36
 
37
+ - \[`-S`|`--schema`\]:
38
+ Preview the effective schema configuration `project.artifact.spec.schema`
39
+ itself, rendered as a *SpecBook* document, instead of the specification.
40
+
36
41
  ## EXIT STATUS
37
42
 
38
43
  Runs until interrupted. Exits with status `1` on an invalid TCP port
@@ -46,11 +51,15 @@ $ ase spec preview
46
51
 
47
52
  # serve the live preview on all interfaces on port 8080
48
53
  $ ase spec preview -a 0.0.0.0 -p 8080
54
+
55
+ # serve the live preview of the schema configuration
56
+ $ ase spec preview -S
49
57
  ```
50
58
 
51
59
  ## SEE ALSO
52
60
 
53
- `ase`(1), `ase-spec`(1), `ase-spec-export`(1), `ase-spec-lint`(1).
61
+ `ase`(1), `ase-spec`(1), `ase-spec-export`(1), `ase-spec-lint`(1),
62
+ `ase-spec-query`(1).
54
63
 
55
64
  ## AUTHOR
56
65
 
@@ -0,0 +1,96 @@
1
+ # ase-spec-query(1) -- Query the Project Specification
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase spec query`
6
+ \[`-h`|`--help`\]
7
+ \[`-P`|`--param` *name*`=`*value*\] \[...\]
8
+ \[`-f`|`--format` *format*\]
9
+ \[`-o`|`--output` \[*format*`:`\]*file*\]
10
+ \[`-S`|`--schema`\]
11
+ *selector*
12
+
13
+ ## DESCRIPTION
14
+
15
+ **ase spec query** loads the *SpecBook*-based specification Markdown
16
+ files below `project.artifact.spec.basedir` (see `ase-spec`(1)),
17
+ strictly validated like for `ase spec export` (see `ase-spec-export`(1)),
18
+ and queries its Abstract Syntax Tree (AST) with the XPath-like *ASTq*
19
+ *selector*, e.g., `// USE-CASE [ @STATUS == 'Done' ]`. The matched
20
+ nodes are written as a JSON, JSON5, YAML, or TOON array, their subtrees
21
+ included and the embedded file contents dropped.
22
+
23
+ The queried tree consists of:
24
+
25
+ - the root node of type `specification`,
26
+ - its children of type `artifact`, with the attributes `created`,
27
+ `modified`, and `file`, and
28
+ - the objects below, typed by their kind (with whitespace dashed),
29
+ with the attributes `kind`, `id`, `anchor`, `paren`, `name`,
30
+ `primary`, `description`, `rationale`, `elaboration`, and one per
31
+ property key.
32
+
33
+ The query function `refs()` yields the objects the references of the
34
+ current object resolve to, e.g., `// USE-CASE [ count(refs()) == 0 ]`.
35
+
36
+ The query fails on any lint diagnostic of `error` severity (see
37
+ `ase-spec-lint`(1)), while warnings are only logged, so a partial or
38
+ invalid specification is never queried.
39
+
40
+ The MCP tool `ase_specbook_query` provides the same to the skills.
41
+
42
+ ## OPTIONS
43
+
44
+ - \[`-h`|`--help`\]:
45
+ Show usage information and exit.
46
+
47
+ - \[`-P`|`--param` *name*`=`*value*\]:
48
+ Substitute the value *value* for the parameter `{`*name*`}` of the
49
+ *selector*. The option is repeatable, one per parameter.
50
+
51
+ - \[`-f`|`--format` *format*\]:
52
+ The output format `json`, `json5`, `yaml`, or `toon` (default:
53
+ inferred from the *file* of `--output` like for `ase spec export`,
54
+ else `json`).
55
+
56
+ - \[`-o`|`--output` \[*format*`:`\]*file*\]:
57
+ Write the result into *file*, or to standard output for `-`
58
+ (default: `-`). A relative *file* is relative to the current working
59
+ directory.
60
+
61
+ - \[`-S`|`--schema`\]:
62
+ Query the effective schema configuration `project.artifact.spec.schema`
63
+ itself, described as a *SpecBook* document of the bundled meta schema
64
+ configuration, instead of the specification.
65
+
66
+ ## EXIT STATUS
67
+
68
+ Exits with status `0` on success, and with status `1` on any lint
69
+ diagnostic of `error` severity, an invalid *selector* or parameter, an
70
+ unsupported output format, or an unwritable output file.
71
+
72
+ ## EXAMPLES
73
+
74
+ ```sh
75
+ # list all use cases as JSON
76
+ $ ase spec query "// USE-CASE"
77
+
78
+ # list the finished use cases as YAML
79
+ $ ase spec query -f yaml "// USE-CASE [ @STATUS == 'Done' ]"
80
+
81
+ # list the objects of a given kind into a TOON file
82
+ $ ase spec query -P kind=ROLE -o roles.toon "// * [ @kind == {kind} ]"
83
+
84
+ # list the artifacts of the schema configuration itself
85
+ $ ase spec query -S "/ artifact"
86
+ ```
87
+
88
+ ## SEE ALSO
89
+
90
+ `ase`(1), `ase-spec`(1), `ase-spec-lint`(1), `ase-spec-export`(1),
91
+ `ase-spec-preview`(1).
92
+
93
+ ## AUTHOR
94
+
95
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
96
+
@@ -1,4 +1,4 @@
1
- # ase-spec(1) -- Initialize, Lint, Export, and Preview the Project Specification
1
+ # ase-spec(1) -- Initialize, Lint, Export, Query, and Preview the Project Specification
2
2
 
3
3
  ## SYNOPSIS
4
4
 
@@ -6,6 +6,7 @@
6
6
  \[`-h`|`--help`\]
7
7
 
8
8
  `ase spec init`
9
+ \[`-s`|`--sample`\]
9
10
 
10
11
  `ase spec lint`
11
12
  \[`-m`|`--markdown`\]
@@ -14,27 +15,42 @@
14
15
  `ase spec export`
15
16
  \[`-o`|`--output` \[*format*`:`\]*file*\] \[...\]
16
17
  \[`-w`|`--watch`\]
18
+ \[`-S`|`--schema`\]
19
+
20
+ `ase spec query`
21
+ \[`-P`|`--param` *name*`=`*value*\] \[...\]
22
+ \[`-f`|`--format` *format*\]
23
+ \[`-o`|`--output` \[*format*`:`\]*file*\]
24
+ \[`-S`|`--schema`\]
25
+ *selector*
17
26
 
18
27
  `ase spec preview`
19
28
  \[`-a`|`--addr` *ip-addr*\]
20
29
  \[`-p`|`--port` *tcp-port*\]
30
+ \[`-S`|`--schema`\]
21
31
 
22
32
  ## DESCRIPTION
23
33
 
24
34
  **ase spec** is the entry point group for initializing, linting,
25
- exporting, and previewing the *SpecBook*-based project specification
26
- (SPEC), i.e., the Markdown files (plus their embedded assets) of the
27
- artifact kind `spec` below the base directory
35
+ exporting, querying, and previewing the *SpecBook*-based project
36
+ specification (SPEC), i.e., the Markdown files (plus their embedded
37
+ assets) of the artifact kind `spec` below the base directory
28
38
  `project.artifact.spec.basedir` (default: `docs/specbook`, relative to
29
- the project root).
39
+ the project root). Every `.md` file below the base directory
40
+ (recursively, except below `.`-prefixed entries), whatever its name,
41
+ is taken as a specification file.
30
42
 
31
43
  The specification is governed by the *SpecBook* YAML schema
32
44
  configuration `project.artifact.spec.schema`: a whitespace-separated
33
45
  list of schema files, merged in the given order, where the entry `std`
34
46
  names the full standard schema bundled with *SpecBook* (not its
35
47
  compressed variant `ase-format-specbook.yaml` bundled with the plugin
36
- for the agents, see `ase-util-meta`(1)) and every other entry is a file
37
- path relative to the project root. An unset or empty value means `std`.
48
+ for the agents, see `ase-util-meta`(1)), the entries `meta` and `pm`
49
+ name the meta and project management schemas bundled with *SpecBook*,
50
+ the entries prefixed with `npm:`, `github:`, `http://`, or `https://`
51
+ name remote schemas (fetched and cached by *SpecBook*), and every other
52
+ entry is a file path or glob pattern relative to the project root. An
53
+ unset or empty value means `std`.
38
54
 
39
55
  All reading specification commands honor the Git exclude rules exactly
40
56
  like `ase artifact list` does (see `ase-artifact`(1)): an artifact file
@@ -55,7 +71,7 @@ exits with status `1`.
55
71
 
56
72
  ## COMMANDS
57
73
 
58
- - `ase spec init`:
74
+ - `ase spec init` \[`-s`|`--sample`\]:
59
75
  Initialize the absent specification Markdown files of the schema
60
76
  configuration. See `ase-spec-init`(1).
61
77
 
@@ -63,11 +79,15 @@ exits with status `1`.
63
79
  Lint the specification against the schema configuration, and
64
80
  optionally for its generic Markdown formatting. See `ase-spec-lint`(1).
65
81
 
66
- - `ase spec export` \[`-o`|`--output` \[*format*`:`\]*file*\] \[...\] \[`-w`|`--watch`\]:
82
+ - `ase spec export` \[`-o`|`--output` \[*format*`:`\]*file*\] \[...\] \[`-w`|`--watch`\] \[`-S`|`--schema`\]:
67
83
  Export the specification as JSON, JSON5, YAML, TOON, HTML, PDF, or
68
84
  normalized Markdown. See `ase-spec-export`(1).
69
85
 
70
- - `ase spec preview` \[`-a`|`--addr` *ip-addr*\] \[`-p`|`--port` *tcp-port*\]:
86
+ - `ase spec query` \[`-P`|`--param` *name*`=`*value*\] \[...\] \[`-f`|`--format` *format*\] \[`-o`|`--output` \[*format*`:`\]*file*\] \[`-S`|`--schema`\] *selector*:
87
+ Query the specification with an *ASTq* selector, writing the matched
88
+ nodes as JSON, JSON5, YAML, or TOON. See `ase-spec-query`(1).
89
+
90
+ - `ase spec preview` \[`-a`|`--addr` *ip-addr*\] \[`-p`|`--port` *tcp-port*\] \[`-S`|`--schema`\]:
71
91
  Serve the HTML export of the specification as a live preview. See
72
92
  `ase-spec-preview`(1).
73
93
 
@@ -78,7 +98,8 @@ The group command without a sub-command exits with status `1`.
78
98
  ## SEE ALSO
79
99
 
80
100
  `ase`(1), `ase-spec-init`(1), `ase-spec-lint`(1), `ase-spec-export`(1),
81
- `ase-spec-preview`(1), `ase-artifact`(1), `ase-config`(1).
101
+ `ase-spec-query`(1), `ase-spec-preview`(1), `ase-artifact`(1),
102
+ `ase-config`(1).
82
103
 
83
104
  ## AUTHOR
84
105
 
package/dst/man/ase.md CHANGED
@@ -25,8 +25,8 @@ hook handlers, the statusline rendering, the persisted task plan
25
25
  management (including a task store server and an interactive task
26
26
  board), the autonomous task lifecycle agents (plus their agent relay
27
27
  and fleet supervisor), the project artifact resolution, the
28
- *SpecBook*-based specification initializing, linting, exporting and
29
- previewing, and miscellaneous utilities like diagram rendering,
28
+ *SpecBook*-based specification initializing, linting, exporting,
29
+ querying, and previewing, and miscellaneous utilities like diagram rendering,
30
30
  identifier minting, and text measuring.
31
31
 
32
32
  Most commands are sub-command groups. Each group and each command has
@@ -100,7 +100,7 @@ The following top-level commands exist:
100
100
  `ase-artifact`(1).
101
101
 
102
102
  - `ase spec` *command* \[...\]:
103
- Initialize, lint, export, and preview the *SpecBook*-based project
103
+ Initialize, lint, export, query, and preview the *SpecBook*-based project
104
104
  specification. See `ase-spec`(1).
105
105
 
106
106
  - `ase util` *command* \[...\]:
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": "2.0.5",
9
+ "version": "2.0.6",
10
10
  "license": "Apache-2.0",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -21,22 +21,23 @@
21
21
  "./package.json": "./package.json"
22
22
  },
23
23
  "devDependencies": {
24
- "eslint": "10.13.0",
24
+ "eslint": "10.14.0",
25
25
  "@eslint/js": "10.0.1",
26
- "@typescript-eslint/parser": "8.72.0",
27
- "@typescript-eslint/eslint-plugin": "8.72.0",
28
- "typescript-eslint": "8.72.0",
26
+ "@typescript-eslint/parser": "8.72.1",
27
+ "@typescript-eslint/eslint-plugin": "8.72.1",
28
+ "typescript-eslint": "8.72.1",
29
29
  "eslint-plugin-promise": "7.3.0",
30
30
  "neostandard": "0.14.1",
31
- "globals": "17.13.0",
31
+ "globals": "17.14.0",
32
32
  "typescript": "6.0.3",
33
- "eslint-plugin-vue": "10.11.1",
33
+ "eslint-plugin-vue": "10.12.0",
34
34
  "vue-eslint-parser": "10.4.1",
35
- "vue-tsc": "3.3.13",
35
+ "vue-tsc": "3.3.14",
36
36
 
37
37
  "@rse/stx": "1.1.7",
38
38
  "nodemon": "3.1.14",
39
39
  "shx": "0.4.0",
40
+ "sync-directory": "6.0.6",
40
41
  "stylus": "0.64.0",
41
42
  "vite": "8.3.5",
42
43
  "@vitejs/plugin-vue": "6.0.10",
@@ -55,10 +56,10 @@
55
56
  "source-sans": "3.52.0",
56
57
  "@fontsource/dejavu-mono": "5.3.0",
57
58
 
58
- "@types/node": "26.6.5",
59
+ "@types/node": "26.6.6",
59
60
  "@types/luxon": "3.7.6",
60
61
  "@types/which": "3.0.4",
61
- "@types/update-notifier": "6.0.8",
62
+ "@types/update-notifier": "6.0.9",
62
63
  "@types/semver": "7.8.0",
63
64
  "@types/shell-quote": "1.7.5",
64
65
  "@types/proper-lockfile": "4.1.4",
@@ -77,14 +78,15 @@
77
78
  "valibot": "1.5.0",
78
79
  "execa": "10.2.1",
79
80
  "mkdirp": "3.0.1",
80
- "@hapi/hapi": "21.4.11",
81
+ "@hapi/hapi": "21.4.12",
81
82
  "beautiful-mermaid": "1.1.3",
82
83
  "@d2lang/d2": "0.1.34",
83
- "elkjs": "0.12.0",
84
+ "elkjs": "0.12.1",
84
85
  "ink": "8.0.0",
86
+ "string-width": "8.3.0",
85
87
  "react": "19.3.1",
86
88
  "chokidar": "6.0.0",
87
- "marked": "18.1.1",
89
+ "marked": "18.1.2",
88
90
  "shiki": "4.5.0",
89
91
  "cli-table3": "0.6.5",
90
92
  "chalk": "6.0.1",
@@ -106,12 +108,12 @@
106
108
  "undici": "8.12.3",
107
109
  "picomatch": "4.0.7",
108
110
  "lru-cache": "11.5.3",
109
- "@rse/specbook": "1.5.2",
111
+ "@rse/specbook": "1.6.1",
110
112
  "markdownlint": "0.42.0",
111
113
  "tail": "2.2.6",
112
114
  "source-code-error": "1.2.0",
113
115
  "pure-uuid": "2.0.0",
114
- "ws": "8.22.0",
116
+ "ws": "8.22.1",
115
117
  "@rse/mrcs": "0.9.2",
116
118
  "@octokit/core": "7.0.8",
117
119
  "@octokit/plugin-rest-endpoint-methods": "18.0.0",
@@ -142,6 +144,7 @@
142
144
  "!plugin/node_modules/**",
143
145
  "!plugin/package.json",
144
146
  "!plugin/etc/**",
147
+ "!plugin/mods/claude-code.d.ts",
145
148
  ".claude-plugin/**/*",
146
149
  "README.md"
147
150
  ],
Binary file
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -20,16 +20,40 @@ SpecBook Project Instantiation
20
20
  with **ASE** in the file `meta/ase-format-specbook.yaml`
21
21
  (relative to the plugin root).
22
22
 
23
+ - For each entry `meta`, `pm`, or `npm:...`, `github:...`,
24
+ `http://...`, or `https://...` in the list:
25
+
26
+ The entry names a YAML schema configuration bundled with or
27
+ fetched by **SpecBook** itself (the meta, the project
28
+ management, or a remote one), which has no file to read.
29
+ Instead, obtain the *effective* (merged) schema configuration
30
+ once via the `ase_specbook_query(schema: true, selector: "/
31
+ artifact", format: "yaml")` tool of the `ase` MCP server, which
32
+ describes it as a **SpecBook** document.
33
+
23
34
  - For each *other* entry in the list:
24
35
 
25
- The entry names a custom YAML schema configuration file of the
26
- project (relative to the project root).
36
+ The entry names a custom YAML schema configuration file (or
37
+ glob pattern of files) of the project (relative to the project
38
+ root).
27
39
 
28
40
  You *MUST* read all resulting schema configuration files via the
29
41
  `Read` tool before working on the specification of the **SpecBook
30
42
  SPEC Model**.
31
43
 
32
44
  - The **SpecBook SPEC Model** of this project is the set of specification
33
- Markdown files in the directory <ase-spec-basedir/> (relative
34
- to the project root), whose files are resolved via the
35
- `ase_artifact_list(kind: [ "spec" ])` tool of the `ase` MCP server.
45
+ Markdown files below the directory <ase-spec-basedir/> (relative
46
+ to the project root, recursively, where every `.md` file is a
47
+ specification file, whatever its name), whose files are resolved
48
+ via the `ase_artifact_list(kind: [ "spec" ])` tool of the `ase` MCP
49
+ server.
50
+
51
+ - The **SpecBook SPEC Model** of this project can be queried
52
+ *structurally* via the `ase_specbook_query(selector: "<selector/>")`
53
+ tool of the `ase` MCP server, with an XPath-like *ASTq* selector
54
+ like `// USE-CASE [ @STATUS == 'Done' ]` (object nodes typed by
55
+ their kind with whitespace dashed, attributes `id`, `name`,
56
+ `description`, `rationale`, and one per property key, and the
57
+ function `refs()` yielding the objects referenced by an object).
58
+ Prefer it over reading many artifact files when a question spans
59
+ objects of entire kinds, property values, or reference relations.