@solaqua/ghosts 0.2.1 → 0.3.0

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.
@@ -0,0 +1,11 @@
1
+ # Grill Me
2
+
3
+ An interview that stress-tests a plan, decision, or idea through question rounds
4
+ ordered by their dependencies, ending with a short, grouped decision summary.
5
+
6
+ ## Credits
7
+
8
+ Shout-out to [Matt Pocock](https://github.com/mattpocock) for the original
9
+ [grilling skill](https://github.com/mattpocock/skills/blob/main/skills/productivity/grilling/SKILL.md).
10
+ This adaptation keeps its interview flow and adds guidance for a concise,
11
+ readable result summary.
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: grill-me
3
+ description: Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking or asks to be grilled.
4
+ ---
5
+
6
+ Interview the user relentlessly until you reach a shared understanding. Map
7
+ this as a design tree: every decision branches into the decisions that depend
8
+ on it.
9
+
10
+ Work the tree in rounds. The frontier is every decision whose prerequisites
11
+ are already settled: questions you can ask now without guessing at answers you
12
+ have not heard yet. Ask the whole frontier in one round, number each question,
13
+ and give your recommended answer. Then wait for the user's answers.
14
+
15
+ Format a round like this:
16
+
17
+ ```md
18
+ ❓ **Q1** - **<Question title>**: <Question, with choices when useful>
19
+
20
+ ➡️ <Recommended answer>
21
+
22
+ ---
23
+
24
+ ❓ **Q2** - **<Question title>**: <Question, with choices when useful>
25
+
26
+ ➡️ <Recommended answer>
27
+ ```
28
+
29
+ Each round reshapes the tree. Settled decisions unblock their dependent
30
+ questions; recompute the frontier and ask the next round. A question depending
31
+ on another question still open in this round belongs to a later round.
32
+
33
+ Finding facts is your job, never the user's. When a question needs a fact from
34
+ the environment, dispatch a subagent to find it. A running exploration is an
35
+ unsettled prerequisite: only downstream questions wait; ask the rest of the
36
+ frontier now. The decisions are the user's: put each to them and wait.
37
+
38
+ The session is done when every branch within scope is resolved and nothing
39
+ remains silently assumed. An empty frontier while research is pending is not
40
+ completion. Do not act until the user confirms the shared understanding.
41
+
42
+ Present the result using this template in the user's language. Replace
43
+ placeholders, repeat decision groups as needed, and omit constraints when none:
44
+
45
+ ```md
46
+ ## Outcome
47
+
48
+ <Agreed goal and direction in 1–2 sentences>
49
+
50
+ ## Decisions
51
+
52
+ ### <Related decision group>
53
+
54
+ - <Agreed choice and its key reason or accepted trade-off>
55
+
56
+ ## Constraints
57
+
58
+ - <Material scope boundary or constraint>
59
+
60
+ Does this capture our shared understanding?
61
+ ```
62
+
63
+ Keep it readable in one screen without scrolling. Include only what someone
64
+ needs to understand the result; omit the interview transcript, question IDs,
65
+ and full decision tree. Use a compact table or diagram only when it makes the
66
+ decisions easier to understand.
@@ -58,7 +58,7 @@ fixed ceremony.
58
58
  ```text
59
59
  [Understand] → [Route unknowns]
60
60
  ├─ evidence → [$loop-research] ┐
61
- ├─ user decision → [$socratic-interview] ├→ [Frame + ledger] → [Draft]
61
+ ├─ user decision → [$grill-me] ├→ [Frame + ledger] → [Draft]
62
62
  └─ known →─────────────────────┘ ↓
63
63
  [Any high-impact uncertainty?]
64
64
  ├─ No → [Self challenge]
@@ -136,20 +136,20 @@ Route unresolved inputs before making design decisions. Use `$loop-research` for
136
136
  repository or document investigation, current or contested evidence,
137
137
  comparisons, feasibility checks, or source citations; it returns verified
138
138
  claims, provenance, uncertainty, and leads that could change the plan. Use
139
- `$socratic-interview` for choices only the user can make, such as outcome,
140
- scope, priority, risk tolerance, or external action; it asks one focused
141
- question at a time and returns an execution brief, but does not plan or edit.
142
- Do not ask the user for facts inspection or research can establish, and do not
143
- replace a user decision with an inferred preference. Carry both outputs into
144
- the decision ledger.
145
-
146
- Ask the smallest question when an unknown could change scope, success, or a
147
- costly decision; continue independent inspection while waiting. State ordinary
148
- assumptions and proceed. If feasibility remains unestablished, put the cheapest
149
- useful investigation first with a decision criterion and keep dependent work
150
- conditional rather than inventing certainty. State task-specific principles,
151
- rank decision drivers, resolve conflicts explicitly, and define observable
152
- success before choosing.
139
+ `$grill-me` for choices only the user can make, such as outcome, scope, priority,
140
+ risk tolerance, or external action. It asks the whole ready frontier in each
141
+ round and returns a short, grouped decision summary. Wait for the user to confirm
142
+ the shared understanding before carrying its decisions into the plan. Do not
143
+ ask the user for facts that inspection or research can establish, or infer a
144
+ material preference. Carry both outputs into the decision ledger.
145
+
146
+ Resolve material user choices through the interview's dependency-aware rounds;
147
+ continue independent inspection while waiting. State ordinary assumptions only
148
+ when they do not replace a material user decision. If feasibility remains
149
+ unestablished, put the cheapest useful investigation first with a decision
150
+ criterion and keep dependent work conditional rather than inventing certainty.
151
+ State task-specific principles, rank decision drivers, resolve conflicts
152
+ explicitly, and define observable success before choosing.
153
153
 
154
154
  ## Compare and draft
155
155
 
@@ -0,0 +1,17 @@
1
+ # Write ADR
2
+
3
+ Write a compact decision record about architecture, technology, infrastructure,
4
+ security, engineering practices, or domain design. Starts with a title and a
5
+ short paragraph; adds status, alternatives, or consequences when useful.
6
+ Works independently of a glossary.
7
+
8
+ New records default to `/tmp/write-adr-<safe-decision-slug>.md`. A supplied
9
+ destination takes precedence, and requests to revise a specific record edit
10
+ that file.
11
+
12
+ ## Credits
13
+
14
+ Shout-out to [Matt Pocock](https://github.com/mattpocock) for the ADR format in
15
+ [domain-modeling](https://github.com/mattpocock/skills/blob/main/skills/engineering/domain-modeling/ADR-FORMAT.md).
16
+ This skill adapts that format for standalone ADR writing across engineering
17
+ decisions.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: write-adr
3
+ description: Create or revise Architecture Decision Records (ADRs) that explain a decision, its context, and its rationale. Use when the user asks to document a decision about architecture, technology, infrastructure, security, engineering practices, or domain design.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Write ADR
8
+
9
+ Record a decision so a future reader can understand what was chosen and why.
10
+ ADRs can cover system structure, technology, deployment, security, engineering
11
+ practices, or domain boundaries. A glossary or domain-modeling session is not
12
+ a prerequisite.
13
+
14
+ ## Gather context
15
+
16
+ Read the relevant discussion, existing ADRs, and supporting documentation or
17
+ code. Identify the decision, the constraints that shaped it, the reason for
18
+ the choice, and any material trade-off.
19
+
20
+ Separate a proposal from an agreed decision, and an agreed decision from its
21
+ implementation. Code can show what exists; it does not establish the original
22
+ rationale. Do not invent alternatives, evidence, or agreement. Ask only when
23
+ a missing choice or reason prevents an accurate record; otherwise state
24
+ material uncertainty explicitly.
25
+
26
+ ## Write
27
+
28
+ Save a new record to the path the user supplies; otherwise use
29
+ `/tmp/write-adr-<safe-decision-slug>.md`, appending a timestamp when needed to
30
+ avoid a collision. This default applies even when the repository already has
31
+ an ADR directory. Create a repository directory only when the user specifies
32
+ it as the destination.
33
+
34
+ When the user asks to revise a specific record, edit that file. When saving a
35
+ new record to a user-specified ADR directory, follow its filename conventions;
36
+ if it uses sequential numbers, take the highest existing number plus one.
37
+ Do not renumber records or overwrite an unrelated file.
38
+
39
+ Follow an established document format when one exists. Otherwise use
40
+ [templates/adr.md](templates/adr.md). Write in the user's language. A title
41
+ and one short paragraph are sufficient when they explain:
42
+
43
+ - the situation or constraint that required a choice;
44
+ - the chosen approach and its scope;
45
+ - the reason for choosing it, including the key accepted trade-off.
46
+
47
+ Add only what helps a future reader assess the decision:
48
+
49
+ - **Status:** distinguish a proposal, an accepted decision, or a retired or
50
+ replaced record when that distinction matters. Use `proposed` for an
51
+ unsettled choice; do not mark it accepted without evidence of agreement.
52
+ - **Considered options:** explain alternatives actually considered when their
53
+ rejection is worth preserving.
54
+ - **Consequences:** state material costs, limits, or downstream effects that
55
+ the short paragraph cannot explain clearly.
56
+
57
+ Keep one decision per record. Edit an existing record for corrections or
58
+ clarifications when requested. When a new decision replaces an accepted one,
59
+ write a new ADR and link to the earlier record to make the replacement clear.
60
+ Update the earlier record only when requested. Documenting a decision does
61
+ not implement it or establish that implementation is complete.
62
+
63
+ ## Verify and deliver
64
+
65
+ Reread the record without the preceding conversation. Check that the choice,
66
+ scope, rationale, and decision state are understandable, claims match the
67
+ available evidence, and referenced files or records exist.
68
+
69
+ Report the file path, the recorded decision, and any open questions or
70
+ proposal status.
@@ -0,0 +1,4 @@
1
+ # <Decision title>
2
+
3
+ <In one to three sentences, explain the situation, the chosen approach, and
4
+ the reason for the choice, including the key accepted trade-off.>
@@ -0,0 +1,14 @@
1
+ # Write Glossary
2
+
3
+ Create or update a project's vocabulary with short definitions, canonical
4
+ terms, and names to avoid. Respects existing document formats.
5
+
6
+ New glossaries default to `/tmp/write-glossary-<safe-project-slug>.md`. A
7
+ supplied destination takes precedence, and requests to revise a specific
8
+ glossary edit that file.
9
+
10
+ ## Credits
11
+
12
+ Shout-out to [Matt Pocock](https://github.com/mattpocock) for the glossary format
13
+ in [domain-modeling](https://github.com/mattpocock/skills/blob/main/skills/engineering/domain-modeling/GLOSSARY-FORMAT.md).
14
+ This skill adapts that format for standalone glossary writing.
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: write-glossary
3
+ description: Create or update a project's GLOSSARY.md with precise definitions and canonical terminology. Use when the user asks to write a glossary, document project vocabulary, or revise existing definitions.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Write Glossary
8
+
9
+ Write a glossary that gives the project a shared vocabulary. Capture the
10
+ meaning of terms; keep implementation choices and decision rationale in
11
+ their own documents.
12
+
13
+ ## Gather context
14
+
15
+ Read the relevant discussion, documentation, and existing glossary. Inspect
16
+ code when it helps establish how a term is currently used. Distinguish current
17
+ usage from an intended definition; surface material contradictions instead of
18
+ silently treating either as authoritative.
19
+
20
+ Choose a canonical term for each concept. If a word names several concepts,
21
+ separate their definitions and make their scope clear. Ask only when the
22
+ available context cannot resolve a distinction that changes the meaning.
23
+ Do not invent agreement or turn unresolved terminology into a settled entry.
24
+
25
+ ## Write
26
+
27
+ Save a new glossary to the path the user supplies; otherwise use
28
+ `/tmp/write-glossary-<safe-project-slug>.md`, appending a timestamp when needed
29
+ to avoid a collision. This default applies even when the repository already
30
+ has a glossary. When the user asks to revise a specific glossary, edit that
31
+ file. Create a repository directory only when the user specifies it as the
32
+ destination. Write once there is a resolved term to record. A single glossary
33
+ can group terms by area and qualify names whose meaning varies by area.
34
+
35
+ Follow an established document format when one exists. Otherwise use
36
+ [templates/glossary.md](templates/glossary.md). Write in the user's language
37
+ and preserve canonical names used by the project.
38
+
39
+ - Keep each definition to one or two sentences explaining the concept and
40
+ the boundary that distinguishes it from nearby concepts.
41
+ - Include vocabulary with a specific meaning in this project. Omit generic
42
+ programming definitions unless the project gives them a distinct meaning.
43
+ - List competing names under `_Avoid_` when they refer to the same concept or
44
+ would mislead readers. Omit the line when there are none.
45
+ - Group entries only when it helps readers find or distinguish terms.
46
+ - Keep schemas, algorithms, storage choices, and decision histories out of
47
+ glossary entries. Include conceptual relationships only when they clarify
48
+ the definition.
49
+
50
+ Update the relevant entries without rewriting unrelated content. This skill
51
+ produces the glossary; it does not rename code or create decision records.
52
+
53
+ ## Verify and deliver
54
+
55
+ Reread the definitions without the preceding conversation. Check that each
56
+ term has a clear meaning within its stated scope, nearby concepts remain
57
+ distinct, and no entry presents an unresolved assumption as fact.
58
+
59
+ Report the file path, the vocabulary added or changed, and any unresolved
60
+ definitions left out.
@@ -0,0 +1,9 @@
1
+ # <Project or area name>
2
+
3
+ <One or two sentences describing the scope of this vocabulary.>
4
+
5
+ ## Language
6
+
7
+ **<Canonical term>**:
8
+ <One or two sentences defining the concept and its distinguishing boundary.>
9
+ _Avoid_: <Competing or misleading names; omit this line when none apply.>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solaqua/ghosts",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Reusable agent skills and reviewers.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,22 +0,0 @@
1
- ---
2
- name: socratic-interview
3
- description: Conduct a Socratic interview to resolve only material uncertainty, then provide a concise execution brief.
4
- disable-model-invocation: true
5
- ---
6
-
7
- Conduct a Socratic interview only when missing information could materially change the outcome, scope, behavior, safety, cost, or external action. Inspect context first and make normal in-scope assumptions when sufficient.
8
-
9
- Ask the smallest useful question, one at a time. Do not collect background that will not change the work. Stop when remaining uncertainty is immaterial; state assumptions and proceed unless doing so could cause an unwanted or costly result.
10
-
11
- Do not plan, implement, create tasks, write specs, or edit files during the interview.
12
-
13
- When sufficient, summarize only the decisions needed to execute:
14
-
15
- ```md
16
- # Execution Brief
17
-
18
- - Outcome:
19
- - Decisions:
20
- - Scope and constraints:
21
- - Assumptions:
22
- ```