@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.
- package/engineering/skills/grill-me/README.md +11 -0
- package/engineering/skills/grill-me/SKILL.md +66 -0
- package/engineering/skills/loop-plan/SKILL.md +15 -15
- package/engineering/skills/write-adr/README.md +17 -0
- package/engineering/skills/write-adr/SKILL.md +70 -0
- package/engineering/skills/write-adr/templates/adr.md +4 -0
- package/engineering/skills/write-glossary/README.md +14 -0
- package/engineering/skills/write-glossary/SKILL.md +60 -0
- package/engineering/skills/write-glossary/templates/glossary.md +9 -0
- package/package.json +1 -1
- package/engineering/skills/socratic-interview/SKILL.md +0 -22
|
@@ -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 → [$
|
|
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
|
-
`$
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
the decision ledger.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
useful investigation first with a decision
|
|
150
|
-
conditional rather than inventing certainty.
|
|
151
|
-
rank decision drivers, resolve conflicts
|
|
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,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,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
|
-
```
|