@rse/ase 0.9.65 → 0.9.66

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 (77) hide show
  1. package/dst/ase-hook.js +1 -1
  2. package/dst/ase-metric.js +103 -0
  3. package/dst/ase-mint.js +106 -0
  4. package/dst/ase-service.js +4 -0
  5. package/dst/ase-setup.js +1 -1
  6. package/dst/ase-spec.js +104 -40
  7. package/dst/ase-statusline.js +11 -2
  8. package/dst/ase.js +4 -0
  9. package/package.json +13 -12
  10. package/plugin/.claude-plugin/plugin.json +1 -1
  11. package/plugin/.codex-plugin/plugin.json +1 -1
  12. package/plugin/.github/plugin/plugin.json +1 -1
  13. package/plugin/agents/ase-docs-proofread.md +13 -7
  14. package/plugin/agents/ase-docs-refine.md +165 -0
  15. package/plugin/agents/ase-docs-shorten.md +182 -0
  16. package/plugin/package.json +4 -4
  17. package/plugin/skills/ase-arch-analyze/help.md +1 -1
  18. package/plugin/skills/ase-arch-discover/help.md +4 -4
  19. package/plugin/skills/ase-code-analyze/help.md +1 -1
  20. package/plugin/skills/ase-code-craft/help.md +7 -7
  21. package/plugin/skills/ase-code-dissect/help.md +5 -5
  22. package/plugin/skills/ase-code-edit/help.md +7 -7
  23. package/plugin/skills/ase-code-explain/help.md +1 -1
  24. package/plugin/skills/ase-code-insight/help.md +1 -1
  25. package/plugin/skills/ase-code-lint/help.md +5 -5
  26. package/plugin/skills/ase-code-refactor/help.md +6 -6
  27. package/plugin/skills/ase-code-resolve/help.md +6 -6
  28. package/plugin/skills/ase-docs-distill/help.md +2 -2
  29. package/plugin/skills/ase-docs-proofread/SKILL.md +16 -12
  30. package/plugin/skills/ase-docs-proofread/help.md +18 -8
  31. package/plugin/skills/ase-docs-refine/SKILL.md +396 -0
  32. package/plugin/skills/ase-docs-refine/help.md +104 -0
  33. package/plugin/skills/ase-docs-shorten/SKILL.md +527 -0
  34. package/plugin/skills/ase-docs-shorten/help.md +120 -0
  35. package/plugin/skills/ase-help-intent/help.md +1 -1
  36. package/plugin/skills/ase-help-skill/catalog.md +4 -1
  37. package/plugin/skills/ase-help-skill/help.md +1 -1
  38. package/plugin/skills/ase-meta-brainstorm/help.md +5 -5
  39. package/plugin/skills/ase-meta-chat/help.md +2 -2
  40. package/plugin/skills/ase-meta-config/help.md +3 -3
  41. package/plugin/skills/ase-meta-diaboli/help.md +2 -2
  42. package/plugin/skills/ase-meta-diff/help.md +3 -3
  43. package/plugin/skills/ase-meta-eli5/help.md +2 -2
  44. package/plugin/skills/ase-meta-evaluate/help.md +1 -1
  45. package/plugin/skills/ase-meta-mint/SKILL.md +157 -0
  46. package/plugin/skills/ase-meta-mint/help.md +114 -0
  47. package/plugin/skills/ase-meta-proximity/help.md +3 -3
  48. package/plugin/skills/ase-meta-quorum/help.md +2 -2
  49. package/plugin/skills/ase-meta-quotes/help.md +4 -4
  50. package/plugin/skills/ase-meta-review/help.md +1 -1
  51. package/plugin/skills/ase-meta-search/help.md +2 -2
  52. package/plugin/skills/ase-meta-steelman/help.md +3 -3
  53. package/plugin/skills/ase-meta-why/help.md +3 -3
  54. package/plugin/skills/ase-meta-workflow/SKILL.md +3 -2
  55. package/plugin/skills/ase-meta-workflow/help.md +4 -4
  56. package/plugin/skills/ase-meta-workflow/workflow.txt +8 -2
  57. package/plugin/skills/ase-spec-edit/SKILL.md +1 -1
  58. package/plugin/skills/ase-spec-edit/help.md +6 -6
  59. package/plugin/skills/ase-sync-export/SKILL.md +3 -1
  60. package/plugin/skills/ase-sync-export/help.md +1 -1
  61. package/plugin/skills/ase-sync-import/SKILL.md +1 -1
  62. package/plugin/skills/ase-sync-import/help.md +2 -2
  63. package/plugin/skills/ase-sync-reconcile/SKILL.md +1 -1
  64. package/plugin/skills/ase-sync-reconcile/help.md +4 -4
  65. package/plugin/skills/ase-task-condense/SKILL.md +7 -4
  66. package/plugin/skills/ase-task-condense/help.md +2 -2
  67. package/plugin/skills/ase-task-delete/help.md +1 -1
  68. package/plugin/skills/ase-task-dissect/help.md +5 -5
  69. package/plugin/skills/ase-task-edit/help.md +4 -4
  70. package/plugin/skills/ase-task-grill/help.md +3 -3
  71. package/plugin/skills/ase-task-id/help.md +1 -1
  72. package/plugin/skills/ase-task-implement/help.md +3 -3
  73. package/plugin/skills/ase-task-list/help.md +3 -3
  74. package/plugin/skills/ase-task-preflight/help.md +2 -2
  75. package/plugin/skills/ase-task-reboot/help.md +2 -2
  76. package/plugin/skills/ase-task-rename/help.md +1 -1
  77. package/plugin/skills/ase-task-view/help.md +2 -2
@@ -0,0 +1,120 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-docs-shorten` - Shorten a Document to a Target Length
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-docs-shorten`
9
+ [`--help`|`-h`]
10
+ [`--auto`|`-a`]
11
+ (`--chars`|`-c` *N* | `--words`|`-w` *N*)
12
+ *docs-reference*
13
+
14
+ ## DESCRIPTION
15
+
16
+ The `ase-docs-shorten` skill reduces the length of a *single* document
17
+ until it reaches a requested *target length*. The investigation is
18
+ dispatched to a sub-agent (`ase:ase-docs-shorten`) so that scanning
19
+ details do not leak into the user-visible transcript.
20
+
21
+ The target length is stated either as `--chars` *N* or as `--words` *N*.
22
+ The two options are *mutually exclusive*, exactly *one* of them is
23
+ *mandatory*, and neither carries a default, because the target length is
24
+ the very quantity the shortening optimizes for. A document reference
25
+ which expands to *more than one* document is rejected, as it would leave
26
+ open whether the target bounds each document or their sum.
27
+
28
+ The shortening runs as a *three-stage cascade*, and a stage is entered
29
+ *only* while the target is still not met:
30
+
31
+ 1. *Tighten*: shorten individual sentences without losing any content -
32
+ filler words struck, nominal constructions turned into verbs,
33
+ redundant restatements within a sentence cut.
34
+
35
+ 2. *Drop*: remove low-value content - redundant restatements,
36
+ illustrative examples, asides, parentheticals, and the whole
37
+ sentences or list items which carry the least value for the reader.
38
+ Content is genuinely lost in this stage.
39
+
40
+ 3. *Compress*: merge and rewrite the remaining content into shorter
41
+ expressions and sentences - related sentences fused, prose
42
+ enumerations turned into compact lists, multi-sentence passages
43
+ re-expressed as single sentences.
44
+
45
+ The skill never shortens *beyond* the target: it stops at the first
46
+ change which reaches it. What *survives* the shortening stays exact -
47
+ every surviving fact, number, technical term, qualifier, and negation is
48
+ preserved verbatim, nothing is invented, the order of the surviving
49
+ argument is kept, and fenced code blocks, inline code spans, link
50
+ targets, Markdown frontmatter, and the heading structure are never
51
+ touched.
52
+
53
+ Each proposed change is cut as a *whole block* - a paragraph, a list
54
+ item, a blockquote, or a heading with its following paragraph - because
55
+ a shortening is only judgeable in the context of the whole block it
56
+ rewrites. It is rendered as a *unified diff* with up to two lines of
57
+ context, annotated with the length it saves, exactly as in
58
+ [`ase-docs-refine`](../ase-docs-refine/help.md) and
59
+ [`ase-docs-proofread`](../ase-docs-proofread/help.md). The user
60
+ either accepts or rejects each block interactively (or refines it via a
61
+ free-text hint, which re-proposes the block without limit) or - with
62
+ `--auto` - applies all of them automatically. A closing *LENGTH REPORT*
63
+ states the achieved length against the target, so rejected blocks stay
64
+ visible in the outcome.
65
+
66
+ `ase-docs-shorten` is the length-reducing member of the document triple.
67
+ The recommended order over one document is `ase-docs-shorten` first (cut
68
+ the bulk), then [`ase-docs-refine`](../ase-docs-refine/help.md) (polish
69
+ what survives), then
70
+ [`ase-docs-proofread`](../ase-docs-proofread/help.md) (final correctness
71
+ pass), so no polishing effort is spent on text which is later dropped.
72
+
73
+ ## OPTIONS
74
+
75
+ - `--chars`|`-c` *N*:
76
+ Shorten the document to at most *N* characters, counted over the
77
+ entire document content including whitespace and newlines.
78
+ Mutually exclusive with `--words`.
79
+
80
+ - `--words`|`-w` *N*:
81
+ Shorten the document to at most *N* whitespace-separated words,
82
+ counted over the entire document content.
83
+ Mutually exclusive with `--chars`.
84
+
85
+ - `--auto`|`-a`:
86
+ Automatically apply every proposed shortening without asking the
87
+ user via the interactive dialog.
88
+
89
+ ## ARGUMENTS
90
+
91
+ - *docs-reference*:
92
+ A reference to the *single* document to shorten. A reference
93
+ expanding to more than one document is rejected.
94
+
95
+ ## SCENARIOS
96
+
97
+ - You want a README section cut down to a hard character budget
98
+ - You want an abstract brought under a word limit for a submission
99
+ - You want the least valuable examples and asides dropped first
100
+ - You want to see what a shortening costs before accepting it
101
+ - You want a whole document shortened unattended in one pass
102
+ - You want the achieved length reported against the target
103
+
104
+ ## EXAMPLES
105
+
106
+ Shorten a document to at most 4000 characters interactively:
107
+
108
+ ```text
109
+ ❯ /ase-docs-shorten --chars 4000 README.md
110
+ ```
111
+
112
+ Shorten a document to at most 250 words unattended:
113
+
114
+ ```text
115
+ ❯ /ase-docs-shorten --auto --words 250 docs/abstract.md
116
+ ```
117
+
118
+ ## SEE ALSO
119
+
120
+ [`ase-docs-refine`](../ase-docs-refine/help.md), [`ase-docs-proofread`](../ase-docs-proofread/help.md), [`ase-docs-distill`](../ase-docs-distill/help.md).
@@ -36,7 +36,7 @@ entirely through the intent argument and the interactive dialog.
36
36
 
37
37
  ## ARGUMENTS
38
38
 
39
- *intent*:
39
+ - *intent*:
40
40
  The free-text intent to be realized. It describes *what* the user
41
41
  wants to achieve; the skill determines *which* ASE skills and *which*
42
42
  options and arguments realize it.
@@ -37,8 +37,10 @@
37
37
  ○ `ase-sync-export`: Export Artifact Set to Side-by-Side Files
38
38
 
39
39
  ⎈ **DOCUMENTATION**
40
- ○ `ase-docs-distill`: Distill Document Key Points
40
+ ○ `ase-docs-shorten`: Shorten a Document to a Target Length
41
+ ○ `ase-docs-refine`: Refine Document Wording
41
42
  ○ `ase-docs-proofread`: Proofread Documents
43
+ ○ `ase-docs-distill`: Distill Document Key Points
42
44
 
43
45
  ⎈ **VERSION CONTROL**
44
46
  ○ `ase-meta-changelog`: Update ChangeLog Entries
@@ -63,6 +65,7 @@
63
65
 
64
66
  ⎈ **OTHER SKILLS**
65
67
  ○ `ase-meta-workflow`: Generate a Workflow Skill
68
+ ○ `ase-meta-mint`: Mint an Identifier or Name
66
69
  ○ `ase-meta-config`: Configuration Management
67
70
  ○ `ase-meta-compat`: Self-Test ASE Compatibility
68
71
 
@@ -41,7 +41,7 @@ The skill exposes *no* option flags beyond `--help`/`-h`.
41
41
 
42
42
  ## ARGUMENTS
43
43
 
44
- *skill-name*:
44
+ - *skill-name*:
45
45
  The full name of the ASE skill, any abbreviation of it, or a
46
46
  description of its purpose. If omitted, the entire skill catalog is
47
47
  listed.
@@ -35,29 +35,29 @@ the highest-ranked option or a principled synthesis of the shortlist.
35
35
 
36
36
  ## OPTIONS
37
37
 
38
- `--max-clarify`|`-c=3`:
38
+ - `--max-clarify`|`-c=3`:
39
39
  The *maximum* number of essential-unknown clarification questions
40
40
  asked in the *clarify intent* phase (default: 3). Lower it for a
41
41
  faster, leaner intake, raise it for more upfront grounding.
42
42
 
43
- `--min-ideas`|`-i=12`:
43
+ - `--min-ideas`|`-i=12`:
44
44
  The *minimum* number of candidate ideas to generate in the *diverge*
45
45
  phase before converging (default: 12). Raise it for a broader idea
46
46
  space, lower it for a quicker, narrower session.
47
47
 
48
- `--min-rank`|`-r=7`:
48
+ - `--min-rank`|`-r=7`:
49
49
  The *minimum* 0-10 fit rank an idea must score to survive the
50
50
  *converge* phase (default: 7). Raise it for a stricter filter, lower
51
51
  it to retain more ideas.
52
52
 
53
- `--max-shortlist`|`-s=4`:
53
+ - `--max-shortlist`|`-s=4`:
54
54
  The *maximum* number of distilled options on the final *shortlist*
55
55
  (default: 4). Lower it for a sharper focus, raise it for more
56
56
  finalists.
57
57
 
58
58
  ## ARGUMENTS
59
59
 
60
- *topic*:
60
+ - *topic*:
61
61
  The subject to brainstorm - a feature, component, behavior, or
62
62
  design question to explore *what* to build before *how*.
63
63
 
@@ -19,11 +19,11 @@ without any further interpretation.
19
19
 
20
20
  ## ARGUMENTS
21
21
 
22
- *llm*:
22
+ - *llm*:
23
23
  Identifier of the foreign LLM to query, e.g. `chatgpt`,
24
24
  `gemini`, `deepseek`, `grok`, `glm`, or `qwen`.
25
25
 
26
- *query*:
26
+ - *query*:
27
27
  The chat message to send to the foreign LLM.
28
28
 
29
29
  ## SCENARIOS
@@ -73,7 +73,7 @@ preset-bootstrapping operation that stays a shell concern next to
73
73
 
74
74
  ## OPTIONS
75
75
 
76
- `--scope`|`-s` *scope*:
76
+ - `--scope`|`-s` *scope*:
77
77
  The scope chain to operate on, given as a comma-separated list of
78
78
  `user`, `project`, `task:`*id*, and/or `session:`*id* terms, in any
79
79
  order and at most one term per kind. The `user` term is always
@@ -87,10 +87,10 @@ preset-bootstrapping operation that stays a shell concern next to
87
87
 
88
88
  ## ARGUMENTS
89
89
 
90
- *operation*:
90
+ - *operation*:
91
91
  The operation to perform; one of `list`, `get`, `set`, or `delete`.
92
92
 
93
- *args*:
93
+ - *args*:
94
94
  The operands of the operation: none for `list`, a dotted *key* for
95
95
  `get` and `delete`, and a dotted *key* plus a *value* for `set`.
96
96
 
@@ -41,12 +41,12 @@ contrarian.
41
41
 
42
42
  ## ARGUMENTS
43
43
 
44
- `--count`, `-c` *count*:
44
+ - `--count`, `-c` *count*:
45
45
  Surface at least *count* strong anti-theses (default *10*) before
46
46
  sorting and reporting the top *count* and deriving the *SYNTHESIS*. An
47
47
  invalid or non-positive *count* reverts to the default *10*.
48
48
 
49
- *thesis*:
49
+ - *thesis*:
50
50
  The statement, claim, or position to be relentlessly challenged.
51
51
  It may be technical, factual, or opinion-based; the skill attacks
52
52
  its strongest ("steelman") interpretation.
@@ -53,21 +53,21 @@ giving a visual sense of *what a diff endangers* before a deeper review.
53
53
 
54
54
  ## ARGUMENTS
55
55
 
56
- `--coherence`, `-c`:
56
+ - `--coherence`, `-c`:
57
57
  In addition to the intent-grouped summary, reconstruct the diff's
58
58
  *single intended change* as one crisp *thesis* sentence and flag
59
59
  *every* hunk that does *not* serve it - *scope creep* or *stray
60
60
  debug* - then emit an overall **COHERENT** / **INCOHERENT** verdict
61
61
  with a table of the flagged hunks.
62
62
 
63
- `--risk`, `-r`:
63
+ - `--risk`, `-r`:
64
64
  In addition to the intent-grouped summary, score the diff against
65
65
  the *coupling-criticality-coverage-reversibility* rubric and emit a
66
66
  *graded risk report* with an overall risk band and per-axis
67
67
  *mitigations*. Scores are equal-weighted, evidence-backed, and
68
68
  deliberately untuned to the project.
69
69
 
70
- `--blast`, `-b`:
70
+ - `--blast`, `-b`:
71
71
  In addition to the intent-grouped summary, render a *blast-radius
72
72
  map* - a Mermaid `flowchart` of the *touched modules* and their
73
73
  *reverse dependencies* - plus a *brief impact summary* of what
@@ -30,14 +30,14 @@ knowledge.
30
30
 
31
31
  ## OPTIONS
32
32
 
33
- `--ground`|`-g`:
33
+ - `--ground`|`-g`:
34
34
  Ground the explanation in Internet/Web facts gathered via the
35
35
  `ase-meta-search` skill before explaining. Without this option,
36
36
  the explanation is derived from model knowledge only.
37
37
 
38
38
  ## ARGUMENTS
39
39
 
40
- *topic*:
40
+ - *topic*:
41
41
  The topic to be explained. It may be a technical concept, a
42
42
  phenomenon, or any other subject; the skill explains it in a
43
43
  child-friendly way.
@@ -27,7 +27,7 @@ all alternatives rate negatively.
27
27
 
28
28
  ## ARGUMENTS
29
29
 
30
- *request*:
30
+ - *request*:
31
31
  A description of what should be evaluated, including the
32
32
  alternatives and, optionally, the criteria to consider.
33
33
 
@@ -0,0 +1,157 @@
1
+ ---
2
+ name: ase-meta-mint
3
+ argument-hint: "[--help|-h] [--type|-t uuid|sha1|const|var|class|func|path|name] [--count|-c <count>] [<hint>]"
4
+ description: >
5
+ Mint an identifier or a name of a requested type out of a free-text
6
+ hint: a UUID, a SHA-1 digest, a constant, variable, function, or
7
+ class identifier, a path component, or a product-like name. Use when
8
+ the user wants an identifier, id, symbol, slug, or name "minted",
9
+ "coined", "derived", or "generated" from a description.
10
+ user-invocable: true
11
+ disable-model-invocation: false
12
+ effort: high
13
+ ---
14
+
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
16
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
18
+
19
+ <purpose name="ase-meta-mint">
20
+ Mint an Identifier or Name
21
+ </purpose>
22
+
23
+ <expand name="getopt"
24
+ arg1="ase-meta-mint"
25
+ arg2="--type|-t=(uuid|sha1|const|var|class|func|path|name) --count|-c=1">
26
+ $ARGUMENTS
27
+ </expand>
28
+
29
+ <objective>
30
+ *Mint* an identifier or a name of the requested type out of the
31
+ following hint:
32
+ <hint><getopt-arguments/></hint>
33
+ </objective>
34
+
35
+ <flow>
36
+
37
+ 1. <step id="STEP 1: Sanity Check Usage">
38
+
39
+ 1. Set <type><getopt-option-type/></type> and set <hint/> to
40
+ <getopt-arguments/> with any leading and trailing whitespace
41
+ stripped.
42
+
43
+ 2. Determine the number of identifiers to mint: set <count/> to
44
+ <getopt-option-count/>; if <getopt-option-count/> is
45
+ *non-numeric*, *less than 1*, or *greater than 100*, use the
46
+ default *1* instead.
47
+
48
+ 3. <if condition="<hint/> is empty AND <type/> is NOT `uuid`">
49
+ Only output the following <template/> and then immediately *STOP*
50
+ processing the entire current skill -- every type except `uuid`
51
+ needs a hint to derive anything from:
52
+
53
+ <template>
54
+ ⧉ **ASE**: ✪ skill: **ase-meta-mint**, ▶ ERROR: expected a `<hint>` argument for type **<type/>**
55
+ </template>
56
+ </if>
57
+
58
+ 4. Set <results></results> and <warning></warning> (set both to empty).
59
+
60
+ </step>
61
+
62
+ 2. <step id="STEP 2: Mint Hash-Derived Identifiers" condition="<type/> is `uuid` or `sha1`">
63
+
64
+ 1. Call the `ase_mint(type: "<type/>", hint: "<hint/>", count:
65
+ <count/>)` tool of the `ase` MCP server and set <results/> to
66
+ the returned lines of its `text` output, one identifier per
67
+ line. You *MUST* *NOT* derive a UUID or a SHA-1 digest yourself
68
+ -- only the tool hashes correctly and reproducibly.
69
+
70
+ 2. <if condition="a line of the `text` output starts with `WARNING:`">
71
+ Remove that line from <results/> and set <warning/> to its text
72
+ with the leading `WARNING:` stripped -- hashing a non-empty
73
+ hint is deterministic, so <count/> was clamped to *1*.
74
+ </if>
75
+
76
+ </step>
77
+
78
+ 3. <step id="STEP 3: Derive Linguistic Identifiers" condition="<type/> is `const`, `var`, `class`, `func`, `path`, or `name`">
79
+
80
+ 1. Distill <hint/> into its *essential words*: drop filler words,
81
+ articles, and prepositions, keep the two to four words which
82
+ carry the actual meaning, and order them from the most general
83
+ to the most specific one. Prefer established terminology of the
84
+ surrounding domain over invented wording. Do not output
85
+ anything.
86
+
87
+ 2. Assemble <count/> *distinct* candidates from these words,
88
+ ordered best-first, honoring the rules of <type/>:
89
+
90
+ - `const`: an `UPPER_SNAKE_CASE` constant identifier such as
91
+ `FOO_BAR_QUUX` -- upper-case ASCII words joined by `_`,
92
+ never starting with a digit.
93
+
94
+ - `var`: a `lowerCamelCase` variable identifier such as
95
+ `fooBarQuux` -- the *last* part *MUST* be a *substantive*
96
+ (`Quux`) naming *what the value is*, never a verb, as a
97
+ variable holds a thing and not an action.
98
+
99
+ - `func`: a `lowerCamelCase` function identifier such as
100
+ `fooBarQuux` -- the *first* part *MUST* be a *verb* (`foo`)
101
+ naming *what the function does*, as a function performs an
102
+ action and does not hold a thing.
103
+
104
+ - `class`: an `UpperCamelCase` class identifier such as
105
+ `FooBarQuux` -- a substantive phrase naming the modeled
106
+ entity, in singular form and without a `The` prefix.
107
+
108
+ - `path`: a `kebab-case` path component such as
109
+ `foo-bar-quux` -- lower-case ASCII letters, digits, and `-`
110
+ only, never starting or ending with `-`.
111
+
112
+ - `name`: an `UpperCamelCase` *product name* such as
113
+ `FooBarQuux` -- optimize for a *brand*, not for a
114
+ description: short (preferably two to three syllables),
115
+ pronounceable, memorable, and distinctive. Coinages,
116
+ blends, and evocative metaphors are explicitly welcome
117
+ here, and a plain concatenation of the hint words is
118
+ explicitly not.
119
+
120
+ Store the candidates in <results/>. Do not output anything.
121
+
122
+ </step>
123
+
124
+ 4. <step id="STEP 4: Render Result">
125
+
126
+ 1. <if condition="<hint/> is empty">
127
+ Set <hint-shown>*(none -- random UUID)*</hint-shown>.
128
+ </if>
129
+ <else>
130
+ Set <hint-shown><hint/></hint-shown>.
131
+ </else>
132
+
133
+ 2. Output the minted identifiers of <results/>, one per line and
134
+ each enclosed in backticks, with the following <template/>:
135
+
136
+ <template>
137
+ <ase-tpl-boxed title="MINT" subtitle="<type/>">
138
+ ● **HINT**: <hint-shown/>
139
+
140
+ ○ `<result-1/>`
141
+ ○ `<result-2/>`
142
+ ○ [...]
143
+ </ase-tpl-boxed>
144
+ </template>
145
+
146
+ 3. <if condition="<warning/> is non-empty">
147
+ Additionally output the following <template/> directly below the
148
+ box:
149
+
150
+ <template>
151
+ ⧉ **ASE**: ✪ skill: **ase-meta-mint**, ▶ WARNING: <warning/>
152
+ </template>
153
+ </if>
154
+
155
+ </step>
156
+
157
+ </flow>
@@ -0,0 +1,114 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-mint` - Mint an Identifier or Name
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-mint`
9
+ [`--help`|`-h`]
10
+ [`--type`|`-t` `uuid`|`sha1`|`const`|`var`|`class`|`func`|`path`|`name`]
11
+ [`--count`|`-c` *count*]
12
+ [*hint*]
13
+
14
+ ## DESCRIPTION
15
+
16
+ The `ase-meta-mint` skill *mints* an identifier or a name of a requested
17
+ type out of the free-text *hint* formed by the positional arguments. It
18
+ dispatches on `--type` and emits the generated strings as its result.
19
+
20
+ The two *hash-derived* types are delegated to the `ase_mint` tool of the
21
+ `ase` MCP server, which derives them reproducibly instead of guessing
22
+ them:
23
+
24
+ - `uuid`:
25
+ a deterministic *UUID V5* over the *hint*, within the fixed *ASE*
26
+ namespace (itself a *UUID V5* over `https://ase.tools` in the
27
+ standard URL namespace), or a random *UUID V4* if no *hint* is
28
+ given.
29
+
30
+ - `sha1`:
31
+ the 40-character hexadecimal *SHA-1* digest of the *hint*.
32
+
33
+ The six *linguistic* types are derived by the skill itself: the *hint*
34
+ is distilled into its essential words, which are then assembled
35
+ according to the conventions of the type:
36
+
37
+ - `const`:
38
+ an `UPPER_SNAKE_CASE` constant identifier, such as `FOO_BAR_QUUX`.
39
+
40
+ - `var`:
41
+ a `lowerCamelCase` variable identifier, such as `fooBarQuux`, whose
42
+ *last* part is a substantive naming what the value *is*, never a
43
+ verb.
44
+
45
+ - `func`:
46
+ a `lowerCamelCase` function identifier, such as `fooBarQuux`, whose
47
+ *first* part is a verb naming what the function *does*.
48
+
49
+ - `class`:
50
+ an `UpperCamelCase` class identifier, such as `FooBarQuux`, as a
51
+ singular substantive phrase naming the modeled entity.
52
+
53
+ - `path`:
54
+ a `kebab-case` path component, such as `foo-bar-quux`.
55
+
56
+ - `name`:
57
+ an `UpperCamelCase` *product name*, such as `FooBarQuux`, optimized
58
+ for a brand rather than for a description: short, pronounceable,
59
+ memorable, and distinctive.
60
+
61
+ A *hint* is mandatory for every type except `uuid`, which falls back to
62
+ a random *UUID V4* without one.
63
+
64
+ ## OPTIONS
65
+
66
+ `--type`|`-t` `uuid`|`sha1`|`const`|`var`|`class`|`func`|`path`|`name`:
67
+ Select the type of the minted identifier or name (default: `uuid`).
68
+
69
+ `--count`|`-c` *count*:
70
+ Mint *count* identifiers instead of just one (default: `1`, maximum:
71
+ `100`). For the hash-derived types it is honored only for an empty
72
+ *hint*, where *count* random *UUID V4* values are emitted; with a
73
+ non-empty *hint*, hashing is a pure function of that *hint* and
74
+ hence always yields exactly one identifier, so *count* is clamped to
75
+ `1` and a warning is emitted. For the linguistic types, *count*
76
+ distinct candidates are emitted, ordered best-first.
77
+
78
+ ## ARGUMENTS
79
+
80
+ *hint*:
81
+ The free-text hint the identifier or name is derived from. It may be
82
+ a short description, a phrase, or a few keywords. It is mandatory
83
+ for all types except `uuid`.
84
+
85
+ ## SCENARIOS
86
+
87
+ - You need a stable, reproducible UUID or SHA-1 digest for a concept
88
+ - You need a well-formed constant, variable, function, or class identifier
89
+ - You need a path component or slug derived from a description
90
+ - You need a catchy product name for a new component or tool
91
+
92
+ ## EXAMPLES
93
+
94
+ Mint a deterministic UUID for a concept:
95
+
96
+ ```text
97
+ ❯ /ase-meta-mint --type uuid the ASE artifact kind resolution cache
98
+ ```
99
+
100
+ Mint a function identifier from a description:
101
+
102
+ ```text
103
+ ❯ /ase-meta-mint -t func compute the checksum of an artifact file
104
+ ```
105
+
106
+ Mint three product name candidates:
107
+
108
+ ```text
109
+ ❯ /ase-meta-mint -t name -c 3 a background service bridging a project into the agent tool
110
+ ```
111
+
112
+ ## SEE ALSO
113
+
114
+ [`ase-task-id`](../ase-task-id/help.md), [`ase-meta-brainstorm`](../ase-meta-brainstorm/help.md), [`ase-code-craft`](../ase-code-craft/help.md), [`ase-arch-discover`](../ase-arch-discover/help.md).
@@ -39,14 +39,14 @@ the `ase-meta-proximity` sub-agent before its proximity is re-determined.
39
39
 
40
40
  ## OPTIONS
41
41
 
42
- `--ground`|`-g`:
42
+ - `--ground`|`-g`:
43
43
  Ground the determination in Internet/Web facts gathered by the
44
44
  `ase-meta-proximity` agent before determining the proximity. Without
45
45
  this option, the determination is derived from model knowledge only.
46
46
  When combined with `--loop`, every newly navigated-to topic is
47
47
  re-grounded.
48
48
 
49
- `--loop`|`-l`:
49
+ - `--loop`|`-l`:
50
50
  Present the neighboring topics in an interactive dialog and, upon
51
51
  selection, adopt the picked topic as the new current topic and
52
52
  restart the determination. Without this option, the proximity of the
@@ -54,7 +54,7 @@ the `ase-meta-proximity` sub-agent before its proximity is re-determined.
54
54
 
55
55
  ## ARGUMENTS
56
56
 
57
- *topic*:
57
+ - *topic*:
58
58
  The topic whose conceptual proximity is to be determined. It may be
59
59
  a technical concept, a phenomenon, or any other subject; the skill
60
60
  determines its parent, sibling, and child topics.
@@ -26,7 +26,7 @@ complete, unmodified individual responses.
26
26
 
27
27
  ## OPTIONS
28
28
 
29
- `--models`|`-m` *model*[,...]:
29
+ - `--models`|`-m` *model*[,...]:
30
30
  Restrict the *foreign* LLMs that are queried to the given
31
31
  comma-separated list of *model* tokens. Recognized tokens are
32
32
  `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, and `qwen`,
@@ -37,7 +37,7 @@ complete, unmodified individual responses.
37
37
 
38
38
  ## ARGUMENTS
39
39
 
40
- *question*:
40
+ - *question*:
41
41
  The question to ask all available AIs.
42
42
 
43
43
  ## SCENARIOS
@@ -50,7 +50,7 @@ the attribution of the quote.
50
50
 
51
51
  ## OPTIONS
52
52
 
53
- `--ground`|`-g`:
53
+ - `--ground`|`-g`:
54
54
  Gather quotes from the Internet/Web via the `ase-meta-search` skill
55
55
  (dispatched in a sub-agent, querying all available search backends)
56
56
  *in addition to* -- and never *instead* of -- the model knowledge,
@@ -63,7 +63,7 @@ the attribution of the quote.
63
63
  and the skill falls back to the model knowledge only. Without this
64
64
  option, the quotes are derived from model knowledge only.
65
65
 
66
- `--proximity`|`-p`:
66
+ - `--proximity`|`-p`:
67
67
  Widen the harvest beyond the given topic to its *conceptual
68
68
  neighborhood* -- the parent (more general) topic, the four sibling
69
69
  (same-level) topics, and the four child (more specialized) topics --
@@ -76,7 +76,7 @@ the attribution of the quote.
76
76
  warning is emitted and the skill continues with the narrow topic
77
77
  only. Without this option, only the given topic is harvested.
78
78
 
79
- `--count`|`-c` *count*:
79
+ - `--count`|`-c` *count*:
80
80
  Maximum total number of quotes across all four quadrants (default:
81
81
  `8`, i.e. about two quotes per quadrant). The quotes are distributed
82
82
  as evenly as possible across the quadrants, preferring the most
@@ -85,7 +85,7 @@ the attribution of the quote.
85
85
 
86
86
  ## ARGUMENTS
87
87
 
88
- *topic-keywords*:
88
+ - *topic-keywords*:
89
89
  The topic keywords the quotes are searched for. They act both as the
90
90
  search query and as the keyword set of the *literalness* dimension of
91
91
  the matrix.
@@ -55,7 +55,7 @@ before it is committed.
55
55
 
56
56
  ## OPTIONS
57
57
 
58
- `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
58
+ - `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
59
59
  Set the *severity floor* (default `LOW`): findings below the chosen
60
60
  threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
61
61
  `HIGH`. The default `LOW` keeps all findings; `ACCEPTED` findings are