@rse/ase 0.9.28 → 0.9.30

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.
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import path from "node:path";
7
7
  import fs from "node:fs";
package/dst/ase-compat.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  /* the canonical expected values for every ase-meta-compat probe,
7
7
  keyed by "<category>/<probe-name>" as used in the skill */
package/dst/ase-config.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import path from "node:path";
7
7
  import os from "node:os";
@@ -20,7 +20,7 @@ export const projectClassification = {
20
20
  };
21
21
  /* agent classification taxonomy */
22
22
  export const agentClassification = {
23
- persona: ["writer", "engineer", "telegrapher", "caveman"]
23
+ persona: ["writer", "engineer", "journalist", "telegrapher", "caveman"]
24
24
  };
25
25
  /* classification presets */
26
26
  export const projectClassificationPresets = {
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import fs from "node:fs";
7
7
  import { InvalidArgumentError } from "commander";
package/dst/ase-getopt.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { Command, Option } from "commander";
package/dst/ase-hook.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import path from "node:path";
7
7
  import fs from "node:fs";
package/dst/ase-kv.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import { z } from "zod";
7
7
  /* reusable functionality: in-memory key/value store living inside the
package/dst/ase-log.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import fs from "node:fs";
7
7
  import chalk from "chalk";
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import { z } from "zod";
7
7
  /* the reusable functionality */
package/dst/ase-mcp.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import path from "node:path";
7
7
  import { fileURLToPath } from "node:url";
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import { isScalar } from "yaml";
7
7
  import { z } from "zod";
@@ -9,7 +9,7 @@ import { Config, configSchema, parseScope } from "./ase-config.js";
9
9
  /* reusable functionality: ASE agent persona style get/set */
10
10
  export class Persona {
11
11
  /* allowed persona style values */
12
- static styles = ["writer", "engineer", "telegrapher", "caveman"];
12
+ static styles = ["writer", "engineer", "journalist", "telegrapher", "caveman"];
13
13
  /* get the effective persona style for an optional session;
14
14
  returns the default "engineer" if nothing is configured */
15
15
  static get(log, session) {
@@ -55,6 +55,7 @@ export default class PersonaMCP {
55
55
  "otherwise it operates on the strongest/closest scope (user/project cascade). " +
56
56
  "Allowed styles: \"writer\" (decorative, eloquent, explaining), " +
57
57
  "\"engineer\" (concise, factual, accurate), " +
58
+ "\"journalist\" (layered, pyramid-structured title/core/detail), " +
58
59
  "\"telegrapher\" (very brief, factual, abbreviating), " +
59
60
  "\"caveman\" (ultra brief, rough, stuttering).",
60
61
  inputSchema: {
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import path from "node:path";
7
7
  import fs from "node:fs";
package/dst/ase-setup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import fs from "node:fs/promises";
7
7
  import path from "node:path";
package/dst/ase-skills.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { ofetch } from "ofetch";
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import fs from "node:fs";
7
7
  import os from "node:os";
package/dst/ase-task.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import path from "node:path";
7
7
  import fs from "node:fs";
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { DateTime } from "luxon";
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
  import updateNotifier from "update-notifier";
7
7
  import pkg from "../package.json" with { type: "json" };
package/dst/ase.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /*
3
3
  ** Agentic Software Engineering (ASE)
4
4
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
5
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
5
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
6
6
  */
7
7
  import { Command, CommanderError, Option } from "commander";
8
8
  import Log from "./ase-log.js";
package/package.json CHANGED
@@ -6,8 +6,8 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.28",
10
- "license": "GPL-3.0-only",
9
+ "version": "0.9.30",
10
+ "license": "Apache-2.0",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
13
13
  "email": "rse@engelschall.com",
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.28",
3
+ "version": "0.9.30",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
7
7
  "repository": "https://github.com/rse/ase",
8
- "license": "GPL-3.0",
8
+ "license": "Apache-2.0",
9
9
  "author": {
10
10
  "name": "Dr. Ralf S. Engelschall",
11
11
  "email": "rse@engelschall.com",
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.28",
3
+ "version": "0.9.30",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
7
7
  "repository": "https://github.com/rse/ase",
8
- "license": "GPL-3.0",
8
+ "license": "Apache-2.0",
9
9
  "author": {
10
10
  "name": "Dr. Ralf S. Engelschall",
11
11
  "email": "rse@engelschall.com",
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.28",
3
+ "version": "0.9.30",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
7
7
  "repository": "https://github.com/rse/ase",
8
- "license": "GPL-3.0",
8
+ "license": "Apache-2.0",
9
9
  "author": {
10
10
  "name": "Dr. Ralf S. Engelschall",
11
11
  "email": "rse@engelschall.com",
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** Agentic Software Engineering (ASE)
3
3
  ** Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ** Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  */
6
6
 
7
7
  import { defineConfig } from "eslint/config"
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  ## Agentic Software Engineering (ASE)
3
3
  ## Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ## Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ## Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  ##
6
6
 
7
7
  no-multiple-blanks:
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  ## Agentic Software Engineering (ASE)
3
3
  ## Copyright (c) 2025-2026 Dr. Ralf S. Engelschall <rse@engelschall.com>
4
- ## Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
4
+ ## Licensed under Apache 2.0 <https://spdx.org/licenses/Apache-2.0>
5
5
  ##
6
6
 
7
7
  # [plugin] lint project
@@ -2,30 +2,34 @@
2
2
  Persona Communication Style
3
3
  ---------------------------
4
4
 
5
- *IMPORTANT*: The communication style in your outputs *MUST* in all cases
6
- follow the following conditional rules. Re-evaluate and internalize
7
- them for each value change of <ase-persona-style/> in order to strictly
8
- honor the requested communication style at any time during a session.
9
- If <ase-persona-style/> is neither `writer`, `engineer`, `telegrapher`,
10
- nor `caveman`, treat it as `engineer`. In the ordered list of personas
11
- `writer`, `engineer`, `telegrapher`, and `caveman`, each following
12
- persona uses a more terse communication style than the previous one.
5
+ *IMPORTANT*: The communication style in your outputs *MUST* follow the
6
+ following conditional rules. Re-evaluate and internalize them for each
7
+ value change of <ase-persona-style/> in order to strictly honor the
8
+ requested communication style at any time during a session.
13
9
 
14
10
  - If <ase-persona-style/> is `writer`:
15
- - You *MUST* use the decorative, eloquent, and explaining communication style of a *writer*.
11
+ You *MUST* use the decorative, eloquent, and explaining communication style of a *writer*.
16
12
  - If <ase-persona-style/> is `engineer`:
17
- - You *MUST* use the concise, factual, and accurate communication style of an *engineer*.
13
+ You *MUST* use the concise, factual, and accurate communication style of an *engineer*.
14
+ - If <ase-persona-style/> is `journalist`:
15
+ You *MUST* use the layered, pyramid-structured communication style of a *journalist*.
18
16
  - If <ase-persona-style/> is `telegrapher`:
19
- - You *MUST* use the brief, factual, and abbreviating communication style of a *telegrapher*.
17
+ You *MUST* use the brief, factual, and abbreviating communication style of a *telegrapher*.
20
18
  - If <ase-persona-style/> is `caveman`:
21
- - You *MUST* use the terse, rough, and stuttering communication style of a *caveman*.
19
+ You *MUST* use the terse, rough, and stuttering communication style of a *caveman*.
22
20
 
23
- - If <ase-persona-style/> is `writer`, `engineer`, `telegrapher` or `caveman`:
24
- - You *MUST* *always keep* technical terms exactly.
25
- - You *MUST* *always keep* errors quoted exactly.
26
- - You *MUST* *always keep* code blocks unchanged.
21
+ - If <ase-persona-style/> is `writer`, `engineer`, `journalist`, `telegrapher` or `caveman`:
22
+ - You *MUST* *always keep* technical terms exactly, independent of other persona rules below.
23
+ - You *MUST* *always keep* errors quoted exactly, independent of other persona rules below.
24
+ - You *MUST* *always keep* code blocks unchanged, independent of other persona rules below.
27
25
 
28
- - If <ase-persona-style/> is `engineer`, `telegrapher` or `caveman`:
26
+ - If <ase-persona-style/> is `writer`:
27
+ - You *MUST* explain aspects with full prose sentences.
28
+ - You *MUST* bundle related aspects into paragraphs.
29
+ - You *MUST* output blank lines between paragraphs.
30
+
31
+ - If <ase-persona-style/> is `engineer`, `journalist`, `telegrapher` or `caveman`:
32
+ - You *MUST* use `○` as the bullet point marker symbol in bullet point lists.
29
33
  - You *MUST* *drop* filler words
30
34
  ("just", "really", "basically", "actually", "simply", etc).
31
35
  - You *MUST* *drop* pleasantries
@@ -33,33 +37,72 @@ persona uses a more terse communication style than the previous one.
33
37
  - You *MUST* *drop* hedging
34
38
  ("I think", "maybe", "perhaps", "it seems", "sort of",
35
39
  "probably", "I'm not sure but", "it might be", etc).
36
- - If <ase-persona-style/> is `engineer` or `telegrapher`:
37
- - You *MUST* *prefer* lists with bullet points, instead of long prose paragraphs.
38
- - You *MUST* *prefer* bullet points with just one or two sentences.
40
+
41
+ - If <ase-persona-style/> is `engineer`:
42
+ - You *MUST* *prefer* lists with bullet points, instead of prose paragraphs.
43
+ - You *MUST* *prefer* bullet point lists with blank lines between bullet points.
44
+ - You *MUST* *prefer* one bullet point per explanation aspect.
45
+ - You *MUST* *prefer* bullet points with just one to four sentences.
46
+
47
+ - If <ase-persona-style/> is `journalist`, `telegrapher`, or `caveman`:
48
+ - You *MUST* *use only* lists with bullet points, instead of prose paragraphs.
49
+
50
+ - If <ase-persona-style/> is `journalist`:
51
+ - You *MUST* *use only* bullet point lists with blank lines between bullet points.
52
+ - You *MUST* *use only* one bullet point per explanation aspect.
53
+ - You *MUST* structure every bullet point by
54
+ following exactly the *pyramid* structure and formatting
55
+ `○ **<title/>**: <core/> ▶ **<keywords/>**: <details/>`, where:
56
+ - <title/> is only one or two *words* capturing the aspect
57
+ - <core/> is a *very terse core* stating the essence of the aspect
58
+ using one of the following three sentence patterns:
59
+ - `<subject/> <action/> <object/>, <reason/>.`
60
+ - `<subject/> <action/> <object/>.`
61
+ - `<subject/> <action/>.`
62
+ - <keywords/> is only one to four keywords summarizing the <details/>
63
+ - <details/> is one to four prose sentences explaining the aspect
39
64
 
40
65
  - If <ase-persona-style/> is `telegrapher` or `caveman`:
66
+ - You *MUST* *use only* bullet point lists without blank lines between bullet points.
67
+ - You *MUST* *use only* one bullet point per explanation aspect.
41
68
  - You *MUST* *use* shorter synonyms
42
69
  ("big" not "extensive", "fix" not "implement a solution for").
43
70
  - You *MUST* *use* abbreviations
44
71
  ("DB", "auth", "config", "req", "res", "fn", "impl", etc).
45
- - You *MUST* *use* arrows for causality
46
- ("X → Y").
47
- - You *MUST* *use* em-dashes for short subsequent facts
48
- ("X — Y").
49
72
  - You *MUST* *drop* articles
50
73
  ("a", "an", "the", etc).
51
74
  - You *MUST* *use* short separate sentences instead of conjunctions
52
75
  ("and", "but", "or", "so", "because", "however", "therefore", "although", etc).
76
+ - You *MUST* *use* arrows for causality
77
+ ("X → Y").
78
+ - You *MUST* *use* em-dashes for short subsequent facts
79
+ ("X — Y").
53
80
  - You *MUST* *drop* all fluff in wording.
54
81
 
82
+ - If <ase-persona-style/> is `telegrapher`:
83
+ - You *MUST* structure every bullet point by
84
+ following exactly the *pyramid* structure and formatting
85
+ `○ **<title/>**: <core/>`, where:
86
+ - <title/> is only one or two *words* capturing the aspect
87
+ - <core/> is a *very terse core* stating the essence of the aspect
88
+ using one of the following three sentence patterns:
89
+ - `<subject/> ▶ <action/> ▷ <object/> **∵** <reason/>.`
90
+ - `<subject/> ▶ <action/> ▷ <object/>.`
91
+ - `<subject/> ▶ <action/>.`
92
+ Each of <subject/>, <action/>, <object/>, and <reason/>
93
+ are just one to six words.
94
+
55
95
  - If <ase-persona-style/> is `caveman`:
56
- - You *MUST* *use* only one word, when one word is expressive enough.
57
- - You *MUST* *use* only two words, when two words are expressive enough.
58
- - You *MUST* *use* the following three sentence patterns
59
- when one or two words are not expressive enough
60
- (depending on what information has to be expressed):
61
- - `<subject/> <action/> <object/>, <reason/>.` → e.g. `Cat eats fish, hungry.`
62
- - `<subject/> <action/> <object/>.` → e.g. `Dog chases ball.`
63
- - `<subject/> <action/>.` → e.g. `Birds fly.`
64
- - You *MUST* *drop* all lists and their bullet points and instead
65
- provide very short subsequent sentences only.
96
+ - You *MUST* structure every bullet point by
97
+ following exactly the formatting `○ <core/>`, where:
98
+ <core/> is a *very terse core* stating the essence of the aspect
99
+ using one of the following three sentence patterns:
100
+ - `<expression/>!`
101
+ - `<subject/> <action/> <object/>, <reason/>.`
102
+ - `<subject/> <action/> <object/>.`
103
+ - `<subject/> <action/>.`
104
+ Each of <subject/>, <action/>, <object/>, and <reason/> is
105
+ preferably just one word. Each <expression/> is preferably only
106
+ one word, when one word is enough to express the aspect, or
107
+ preferably only two words, when two words are enough to express
108
+ the aspect.
@@ -6,8 +6,8 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.28",
10
- "license": "GPL-3.0-only",
9
+ "version": "0.9.30",
10
+ "license": "Apache-2.0",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
13
13
  "email": "rse@engelschall.com",
@@ -21,8 +21,9 @@ into the user-visible transcript.
21
21
 
22
22
  For each detected problem, the skill renders a unified-diff *SOLUTION*
23
23
  preview and either asks the user to `ACCEPT` or `REJECT` the proposed
24
- correction interactively or - with `--auto` - applies all corrections
25
- automatically.
24
+ correction interactively (or refine it via a free-text hint, which
25
+ re-proposes the correction without limit) or - with `--auto` - applies
26
+ all corrections automatically.
26
27
 
27
28
  ## OPTIONS
28
29
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  The `ase-docs-distill` skill reads a *provided document* and distills it
16
16
  into a *flat*, *importance-ranked* list of its *key points*. The
17
- *docs-reference* is resolved *probe-as-file-first*: if the argument names
17
+ *document-reference* is resolved *probe-as-file-first*: if the argument names
18
18
  a *readable file* it is read from disk, otherwise the argument is taken
19
19
  *verbatim* as *pasted text*. The document is read *silently* - only the
20
20
  final ranked list is shown - so even a large document does not flood the
@@ -45,7 +45,7 @@ non-numeric value falls back to the default *5*.
45
45
  document does not contain *N* salient ones, and an invalid or
46
46
  non-positive *N* reverts to the default.
47
47
 
48
- *docs-reference*:
48
+ *document-reference*:
49
49
  The document to distill - either a *path* to a readable file or the
50
50
  *text* itself pasted inline. If it resolves to a readable file the
51
51
  file is read; otherwise it is treated verbatim as pasted text.
@@ -20,8 +20,9 @@ the user-visible transcript.
20
20
 
21
21
  For each detected problem, the skill renders a unified-diff
22
22
  *CORRECTION* preview and either asks the user to `ACCEPT` or `REJECT`
23
- the proposed correction interactively or - with `--auto` - applies
24
- all corrections automatically.
23
+ the proposed correction interactively (or refine it via a free-text
24
+ hint, which re-proposes the correction without limit) or - with
25
+ `--auto` - applies all corrections automatically.
25
26
 
26
27
  ## OPTIONS
27
28
 
@@ -2,9 +2,10 @@
2
2
  name: ase-meta-persona
3
3
  argument-hint: "[--help|-h] [<persona>]"
4
4
  description: >
5
- Adjust communication style in four intensity levels of token usage.
5
+ Adjust communication style in five intensity levels of token usage.
6
6
  The <persona> can be either the decorative, eloquent, and explaining "writer",
7
7
  the concise, factual, and accurate "engineer" (default),
8
+ the layered, pyramid-structured "journalist",
8
9
  the brief, factual, and abbreviating "telegrapher",
9
10
  the terse, rough, and stuttering "caveman".
10
11
  Use when user says "persona <persona>" or "be <persona>".
@@ -48,12 +49,12 @@ style and token usage intensity.
48
49
  </if>
49
50
 
50
51
  3. <if condition="<request/> is NOT empty">
51
- 1. If <request/> is NEITHER 'writer', 'engineer', 'telegrapher',
52
- NOR 'caveman', report this with the following <template/> and then
53
- *STOP* immediately:
52
+ 1. If <request/> is NEITHER 'writer', 'engineer', 'journalist',
53
+ 'telegrapher', NOR 'caveman', report this with the following
54
+ <template/> and then *STOP* immediately:
54
55
 
55
56
  <template>
56
- ⧉ **ASE**: **ERROR:** invalid persona: "<request/>" (expected `writer`, `engineer`, `telegrapher`, or `caveman`)
57
+ ⧉ **ASE**: **ERROR:** invalid persona: "<request/>" (expected `writer`, `engineer`, `journalist`, `telegrapher`, or `caveman`)
57
58
  </template>
58
59
 
59
60
  2. If <request/> is equal <ase-persona-style/> report this with the
@@ -12,13 +12,23 @@
12
12
  ## DESCRIPTION
13
13
 
14
14
  The `ase-meta-persona` skill gets or sets the active *communication
15
- style* (persona) of the assistant. Four intensity levels of token
15
+ style* (persona) of the assistant. Five intensity levels of token
16
16
  usage are supported, from most verbose to most terse:
17
17
 
18
- - `writer`: decorative, eloquent, and explaining
19
- - `engineer`: concise, factual, and accurate (default)
20
- - `telegrapher`: brief, factual, and abbreviating
21
- - `caveman`: terse, rough, and stuttering
18
+ - `writer`: decorative, eloquent, and explaining; full prose
19
+ sentences bundled into paragraphs separated by blank lines
20
+ - `engineer`: concise, factual, and accurate (default); prefers
21
+ bullet point lists with one aspect per bullet
22
+ - `journalist`: layered, pyramid-structured; every aspect a single-line
23
+ bullet following `**<title>**: <core> ▶ **<keywords>**: <details>.`,
24
+ with a one-to-two word title, a terse core, one-to-four keywords, and
25
+ a one-to-four sentence detail
26
+ - `telegrapher`: brief, factual, and abbreviating; every aspect a
27
+ single-line bullet following `**<title>**: <core>.`, with a one-to-two
28
+ word title and a terse, arrow/em-dash-joined core
29
+ - `caveman`: terse, rough, and stuttering; every aspect a single-line
30
+ bullet with a very terse core of one-word fields or a one-to-two word
31
+ expression
22
32
 
23
33
  Without arguments, the skill reports the currently active persona.
24
34
  With a *persona* argument, it switches to that persona via the
@@ -27,7 +37,7 @@ With a *persona* argument, it switches to that persona via the
27
37
  ## ARGUMENTS
28
38
 
29
39
  *persona*:
30
- The persona to activate; one of `writer`, `engineer`,
40
+ The persona to activate; one of `writer`, `engineer`, `journalist`,
31
41
  `telegrapher`, or `caveman`. If omitted, the currently active
32
42
  persona is reported.
33
43
 
@@ -8,6 +8,7 @@
8
8
  `ase-sync-export`
9
9
  [`--help`|`-h`]
10
10
  [`--source`|`-s` *source*[,...]]
11
+ [*filter*]
11
12
 
12
13
  ## DESCRIPTION
13
14
 
@@ -28,7 +29,8 @@ An *export* is declared by a `- Export:` bullet point in an artifact's
28
29
  format definition (see `ase-format-meta.md`, `ase-format-spec.md`, and
29
30
  `ase-format-arch.md`); an artifact *without* such a bullet is *not*
30
31
  exported. Each exported file is named
31
- `YYYY-MM-DD-<set>-<slug>-<id>.<ext>` and stored in the artifact's own
32
+ `<set>-<no>-<id>-<slug>-<export-name>.<ext>` (e.g.
33
+ `SPEC-07-DM-Data-Model-export.svg`) and stored in the artifact's own
32
34
  base directory. Initially, the *Data Model* (`SPEC-DM`) exports as a
33
35
  Mermaid UML diagram converted to SVG, and the *Technology Stack*
34
36
  (`ARCH-TS`) exports as a compact Markdown table.
@@ -39,6 +41,14 @@ Mermaid UML diagram converted to SVG, and the *Technology Stack*
39
41
  The comma-separated list of artifact kinds to export. Defaults to
40
42
  `SPEC,ARCH` (the skill errors out on an empty source).
41
43
 
44
+ ## ARGUMENTS
45
+
46
+ *filter*:
47
+ An optional free-form filtering hint that narrows the source
48
+ artifacts, or the aspects of those artifacts, to take into account
49
+ when materializing the exports. If omitted, every export declared by
50
+ a source artifact is materialized.
51
+
42
52
  ## EXAMPLES
43
53
 
44
54
  Export the specification and architecture artifacts to their
@@ -54,6 +64,12 @@ Export only the specification artifacts:
54
64
  ❯ /ase-sync-export -s SPEC
55
65
  ```
56
66
 
67
+ Export only the data-model artifact:
68
+
69
+ ```text
70
+ ❯ /ase-sync-export -s SPEC data model
71
+ ```
72
+
57
73
  ## SEE ALSO
58
74
 
59
75
  [`ase-sync-reconcile`](../ase-sync-reconcile/help.md),