ostacky 0.5.6 → 0.5.7

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.
@@ -15,16 +15,25 @@ Implement tasks from an OpenSpec change.
15
15
 
16
16
  **Steps**
17
17
 
18
- 1. **Select the change**
18
+ 1. **Check Engram for past implementation patterns**
19
+
20
+ Before implementing, `engram_mem_search` with keywords from the change name and affected modules. Look for:
21
+ - Similar changes implemented before (approaches that worked or failed)
22
+ - Known gotchas or edge cases in related areas
23
+ - Model selection patterns for similar task complexity
24
+
25
+ Surface relevant findings to inform implementation decisions.
26
+
27
+ 2. **Select the change**
19
28
 
20
29
  If a name is provided, use it. Otherwise:
21
30
  - Infer from conversation context if the user mentioned a change
22
31
  - Auto-select if only one active change exists
23
- - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select
32
+ - If ambiguous, run `openspec list --json` to get available changes and use the **question tool** to let the user select. After calling `question`, STOP and wait for the answer.
24
33
 
25
34
  Always announce: "Using change: <name>" and how to override (e.g., `/opsx-apply <other>`).
26
35
 
27
- 2. **Check status to understand the schema**
36
+ 3. **Check status to understand the schema**
28
37
  ```bash
29
38
  openspec status --change "<name>" --json
30
39
  ```
@@ -32,7 +41,7 @@ Implement tasks from an OpenSpec change.
32
41
  - `schemaName`: The workflow being used (e.g., "spec-driven")
33
42
  - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
34
43
 
35
- 3. **Get apply instructions**
44
+ 4. **Get apply instructions**
36
45
 
37
46
  ```bash
38
47
  openspec instructions apply --change "<name>" --json
@@ -49,14 +58,14 @@ Implement tasks from an OpenSpec change.
49
58
  - If `state: "all_done"`: congratulate, suggest archive
50
59
  - Otherwise: proceed to implementation
51
60
 
52
- 4. **Read context files**
61
+ 5. **Read context files**
53
62
 
54
- Read every file path listed under `contextFiles` from the apply instructions output.
63
+ Use **CodeGraph** (`codegraph_explore`) to understand the code structure before reading files directly. Then read every file path listed under `contextFiles` from the apply instructions output.
55
64
  The files depend on the schema being used:
56
65
  - **spec-driven**: proposal, specs, design, tasks
57
66
  - Other schemas: follow the contextFiles from CLI output
58
67
 
59
- 5. **Show current progress**
68
+ 6. **Show current progress**
60
69
 
61
70
  Display:
62
71
  - Schema being used
@@ -64,7 +73,7 @@ Implement tasks from an OpenSpec change.
64
73
  - Remaining tasks overview
65
74
  - Dynamic instruction from CLI
66
75
 
67
- 6. **Implement tasks (loop until done or blocked)**
76
+ 7. **Implement tasks (loop until done or blocked)**
68
77
 
69
78
  For each pending task:
70
79
  - Show which task is being worked on
@@ -79,7 +88,7 @@ Implement tasks from an OpenSpec change.
79
88
  - Error or blocker encountered → report and wait for guidance
80
89
  - User interrupts
81
90
 
82
- 7. **On completion or pause, show status**
91
+ 8. **On completion or pause, show status**
83
92
 
84
93
  Display:
85
94
  - Tasks completed this session
@@ -17,7 +17,7 @@ Archive a completed change in the experimental workflow.
17
17
 
18
18
  1. **If no change name provided, prompt for selection**
19
19
 
20
- Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select.
20
+ Run `openspec list --json` to get available changes. Use the **question tool** to let the user select. After calling `question`, STOP and wait for the answer.
21
21
 
22
22
  Show only active changes (not already archived).
23
23
  Include the schema used for each change if available.
@@ -34,7 +34,7 @@ Archive a completed change in the experimental workflow.
34
34
 
35
35
  **If any artifacts are not `done`:**
36
36
  - Display warning listing incomplete artifacts
37
- - Use **AskUserQuestion tool** to confirm user wants to proceed
37
+ - Use **question tool** to confirm user wants to proceed. After calling `question`, STOP and wait for the answer.
38
38
  - Proceed if user confirms
39
39
 
40
40
  3. **Check task completion status**
@@ -45,7 +45,7 @@ Archive a completed change in the experimental workflow.
45
45
 
46
46
  **If incomplete tasks found:**
47
47
  - Display warning showing count of incomplete tasks
48
- - Use **AskUserQuestion tool** to confirm user wants to proceed
48
+ - Use **question tool** to confirm user wants to proceed. After calling `question`, STOP and wait for the answer.
49
49
  - Proceed if user confirms
50
50
 
51
51
  **If no tasks file exists:** Proceed without task-related warning.
@@ -24,22 +24,24 @@ When ready to implement, run /opsx-apply
24
24
 
25
25
  **Steps**
26
26
 
27
- 1. **If no clear input provided, ask what they want to build**
27
+ 1. **Check Engram for similar changes** — `engram_mem_search` with keywords from the user's description. If a similar change was proposed or implemented before, surface it to the user. They may want to extend the existing work instead of starting fresh.
28
28
 
29
- Use the **AskUserQuestion tool** (open-ended, no preset options) to ask:
29
+ 2. **If no clear input provided, ask what they want to build**
30
+
31
+ Use the **question tool** (open-ended, no preset options) to ask:
30
32
  > "What change do you want to work on? Describe what you want to build or fix."
31
33
 
32
34
  From their description, derive a kebab-case name (e.g., "add user authentication" → `add-user-auth`).
33
35
 
34
- **IMPORTANT**: Do NOT proceed without understanding what the user wants to build.
36
+ **IMPORTANT**: Do NOT proceed without understanding what the user wants to build. **IMPORTANT**: After calling `question`, STOP. Do not generate more text or execute tools.
35
37
 
36
- 2. **Create the change directory**
38
+ 3. **Create the change directory**
37
39
  ```bash
38
40
  openspec new change "<name>"
39
41
  ```
40
42
  This creates a scaffolded change at `openspec/changes/<name>/` with `.openspec.yaml`.
41
43
 
42
- 3. **Get the artifact build order**
44
+ 4. **Get the artifact build order**
43
45
  ```bash
44
46
  openspec status --change "<name>" --json
45
47
  ```
@@ -47,7 +49,7 @@ When ready to implement, run /opsx-apply
47
49
  - `applyRequires`: array of artifact IDs needed before implementation (e.g., `["tasks"]`)
48
50
  - `artifacts`: list of all artifacts with their status and dependencies
49
51
 
50
- 4. **Create artifacts in sequence until apply-ready**
52
+ 5. **Create artifacts in sequence until apply-ready**
51
53
 
52
54
  Use the **TodoWrite tool** to track progress through the artifacts.
53
55
 
@@ -76,10 +78,10 @@ When ready to implement, run /opsx-apply
76
78
  - Stop when all `applyRequires` artifacts are done
77
79
 
78
80
  c. **If an artifact requires user input** (unclear context):
79
- - Use **AskUserQuestion tool** to clarify
81
+ - Use **question tool** to clarify, then STOP and wait for the answer
80
82
  - Then continue with creation
81
83
 
82
- 5. **Show final status**
84
+ 6. **Show final status**
83
85
  ```bash
84
86
  openspec status --change "<name>"
85
87
  ```
@@ -52,10 +52,12 @@ After obtaining the diff, if it is empty, inform the user that there are no chan
52
52
 
53
53
  Before analyzing the diff:
54
54
 
55
- 1. **Read changed files in full** - Do not review a diff in isolation. Read each modified file to understand the surrounding code, imports, types, and control flow.
56
- 2. **Identify the tech stack** - Note languages, frameworks, and libraries in use. This affects what patterns are risky.
57
- 3. **Check for related test files** - For each changed source file, look for corresponding test files. Note whether tests were updated alongside the changes.
58
- 4. **Check for configuration changes** - If config files changed (env, CI, package.json, tsconfig, etc.), pay extra attention to side effects.
55
+ 1. **Follow Core Instructions** `ostacky.md` Core Instructions section for CodeGraph usage patterns. Use `codegraph_explore` to understand the code structure before reading files directly.
56
+ 2. **Use CodeGraph for code understanding** `codegraph_explore` on the changed symbols gives you call paths, blast radius, and related code in ONE call. Only `Read` files for details CodeGraph didn't cover.
57
+ 3. **Read changed files for full context** After CodeGraph exploration, read each modified file to understand the surrounding code, imports, types, and control flow.
58
+ 4. **Identify the tech stack** Note languages, frameworks, and libraries in use. This affects what patterns are risky.
59
+ 5. **Check for related test files** — For each changed source file, look for corresponding test files. Note whether tests were updated alongside the changes.
60
+ 6. **Check for configuration changes** — If config files changed (env, CI, package.json, tsconfig, etc.), pay extra attention to side effects.
59
61
 
60
62
  </gather_context>
61
63
 
@@ -133,7 +135,7 @@ Severity levels:
133
135
 
134
136
  <critical_rules>
135
137
 
136
- 1. **READ THE FULL FILE**: Never review a diff without reading the complete source file for context
138
+ 1. **FOLLOW CORE INSTRUCTIONS** Use CodeGraph for code understanding before reading files. See `ostacky.md` Core Instructions section.
137
139
  2. **NO FALSE ALARMS**: Only report issues you can explain concretely. Do not report vague concerns
138
140
  3. **PRIORITIZE**: Lead with the most severe findings. Do not bury critical issues under style nits
139
141
  4. **BE SPECIFIC**: Include file paths, line numbers, and code references for every finding
@@ -10,6 +10,7 @@ description: Use when Ostacky has confirmed subagent-driven execution mode and d
10
10
  2. Presented evidence and recommendation to the user
11
11
  3. Received explicit user confirmation for subagent-driven mode
12
12
  4. Called `controller.consumeExecutionDecision({ mode: "SUBAGENT_DRIVEN" })`
13
+ 5. Checked Engram (`engram_mem_search`) for past subagent execution patterns on similar changes — if a previous approach failed, avoid repeating it
13
14
 
14
15
  Subagents are execution-only. They never create routing decisions, re-analyze execution mode, or duplicate discovery that the coordinator already resolved.
15
16
 
@@ -47,6 +48,18 @@ digraph when_to_use {
47
48
  - Two-stage review after each task: spec compliance first, then code quality
48
49
  - Faster iteration (no human-in-loop between tasks)
49
50
 
51
+ ## Context Gathering for Subagents
52
+
53
+ **Follow Core Instructions** — `ostacky.md` Core Instructions section for CodeGraph usage patterns. Do NOT duplicate those instructions here.
54
+
55
+ When constructing the context package for each subagent:
56
+
57
+ 1. Use `codegraph_explore` to get the verbatim source of relevant symbols, their call paths, and blast radius — in ONE call.
58
+ 2. Only use `Read` for files or details CodeGraph didn't cover.
59
+ 3. Include the CodeGraph output in the subagent's context package so they have structural understanding without needing to re-explore.
60
+
61
+ **Why this matters:** Subagents have limited context. CodeGraph gives them more accurate information in fewer tokens than they'd consume re-reading files themselves.
62
+
50
63
  ## The Process
51
64
 
52
65
  ```dot
@@ -256,6 +269,7 @@ Done!
256
269
  - Let implementer self-review replace actual review (both are needed)
257
270
  - **Start code quality review before spec compliance is ✅** (wrong order)
258
271
  - Move to next task while either review has open issues
272
+ - **Use `Bash` with `rg`/`grep` for code search** — follow Core Instructions in `ostacky.md`
259
273
 
260
274
  **If subagent asks questions:**
261
275
  - Answer clearly and completely
@@ -0,0 +1,195 @@
1
+ ---
2
+ name: thinking
3
+ description: "Thinking partner for exploring ideas, investigating problems, and designing solutions. Two modes: creative-design (structured, produces design doc) and open-explore (unstructured, no mandatory output). Use when the user wants to think through something, brainstorm, explore an idea, or design a solution before or during a change."
4
+ ---
5
+
6
+ # Thinking
7
+
8
+ A thinking partner that adapts to what the user needs: structured design when they're building something, open exploration when they're investigating or clarifying.
9
+
10
+ **Follow Core Instructions** — `ostacky.md` Core Instructions section for CodeGraph and Engram usage patterns.
11
+
12
+ ---
13
+
14
+ ## Mode Detection
15
+
16
+ | Signal | Mode |
17
+ |--------|------|
18
+ | "design", "build", "create", "add feature", "implement" | **creative-design** |
19
+ | "explore", "investigate", "think through", "what if", "how does" | **open-explore** |
20
+ | "brainstorm", "ideate", "propose approach" | **creative-design** |
21
+ | "check", "understand", "review existing" | **open-explore** |
22
+ | Unclear | Ask with **question** tool: "¿Querés diseñar algo nuevo o explorar/entender algo existente?" |
23
+
24
+ ---
25
+
26
+ ## Mode 1: creative-design
27
+
28
+ Turn ideas into fully formed designs through collaborative dialogue.
29
+
30
+ ### HARD-GATE
31
+
32
+ Do NOT invoke any implementation skill, write any code, or scaffold any project until you have presented a design and the user has approved it. This applies to EVERY project regardless of perceived simplicity.
33
+
34
+ ### Process
35
+
36
+ 1. **Check Engram** — `engram_mem_search` with keywords from the user's idea. Surface any prior design decisions or similar proposals.
37
+ 2. **Explore via CodeGraph** — `codegraph_explore` on the affected area. Only `Read` files CodeGraph didn't cover.
38
+ 3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
39
+ 4. **Propose 2-3 approaches** — with trade-offs and your recommendation
40
+ 5. **Present design** — in sections scaled to complexity, get user approval after each section
41
+ 6. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
42
+ 7. **Spec self-review** — check for placeholders, contradictions, ambiguity, scope
43
+ 8. **User reviews spec** — ask user to review before proceeding
44
+ 9. **Save to Engram** — `engram_mem_save` with the design decision and tradeoffs
45
+ 10. **Transition** — based on routing decision (see Transition Rules below)
46
+
47
+ ### Transition Rules
48
+
49
+ The next step depends on how the change was routed by Ostacky:
50
+
51
+ | Routing | Next Skill | When |
52
+ |---------|------------|------|
53
+ | **DIRECT** (Level 0/0+1) | `writing-plans` | Small changes, no OpenSpec |
54
+ | **SPEC** (Level 1+) | `openspec-propose` | Complex changes requiring OpenSpec artifacts |
55
+
56
+ If you're unsure about routing, ask Ostacky or check the controller state.
57
+
58
+ **Terminal state:** Invoke the appropriate next skill. Do NOT invoke implementation skills directly.
59
+
60
+ ### Design Principles
61
+
62
+ - **One question at a time** — Don't overwhelm
63
+ - **Multiple choice preferred** — Easier to answer
64
+ - **YAGNI ruthlessly** — Remove unnecessary features
65
+ - **Explore alternatives** — Always propose 2-3 approaches
66
+ - **Incremental validation** — Present design, get approval before moving on
67
+ - **Design for isolation** — Break into smaller units with clear purposes
68
+
69
+ ### Working in Existing Codebases
70
+
71
+ - Explore current structure before proposing changes. Follow existing patterns.
72
+ - Include targeted improvements where existing code affects the work.
73
+ - Don't propose unrelated refactoring. Stay focused on the goal.
74
+
75
+ ### Spec Self-Review
76
+
77
+ After writing the spec:
78
+ 1. **Placeholder scan:** Any "TBD", "TODO", incomplete sections? Fix them.
79
+ 2. **Internal consistency:** Do sections contradict each other?
80
+ 3. **Scope check:** Focused enough for a single implementation plan?
81
+ 4. **Ambiguity check:** Any requirement interpretable two ways? Pick one.
82
+
83
+ ### User Review Gate
84
+
85
+ > "Spec written and committed to `<path>`. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
86
+
87
+ Wait for response. If changes requested, make them and re-review. Only proceed once approved.
88
+
89
+ ---
90
+
91
+ ## Mode 2: open-explore
92
+
93
+ A stance, not a workflow. Think deeply. Visualize freely. Follow the conversation wherever it goes.
94
+
95
+ ### What You Might Do
96
+
97
+ **Explore the problem space**
98
+ - Ask clarifying questions that emerge from what they said
99
+ - Challenge assumptions
100
+ - Reframe the problem
101
+ - Find analogies
102
+
103
+ **Investigate the codebase**
104
+ - Map existing architecture relevant to the discussion
105
+ - Find integration points
106
+ - Identify patterns already in use
107
+ - Surface hidden complexity
108
+
109
+ **Compare options**
110
+ - Brainstorm multiple approaches
111
+ - Build comparison tables
112
+ - Sketch tradeoffs
113
+ - Recommend a path (if asked)
114
+
115
+ **Visualize**
116
+ ```
117
+ Use ASCII diagrams liberally:
118
+ System diagrams, state machines, data flows,
119
+ architecture sketches, dependency graphs,
120
+ comparison tables
121
+ ```
122
+
123
+ **Surface risks and unknowns**
124
+ - Identify what could go wrong
125
+ - Find gaps in understanding
126
+ - Suggest spikes or investigations
127
+
128
+ ### OpenSpec Awareness
129
+
130
+ Check for active changes at start:
131
+ ```bash
132
+ openspec list --json
133
+ ```
134
+
135
+ If a change exists and the user mentions it:
136
+ 1. Read existing artifacts (`proposal.md`, `design.md`, `tasks.md`)
137
+ 2. Reference them naturally in conversation
138
+ 3. Offer to capture when decisions are made — don't auto-capture
139
+
140
+ | Insight Type | Where to Capture |
141
+ |---|---|
142
+ | New requirement | `specs/<capability>/spec.md` |
143
+ | Design decision | `design.md` |
144
+ | Scope change | `proposal.md` |
145
+ | New work | `tasks.md` |
146
+
147
+ ### What You Don't Have To Do
148
+
149
+ - Follow a script
150
+ - Produce a specific artifact
151
+ - Reach a conclusion
152
+ - Stay on topic if a tangent is valuable
153
+ - Be brief (this is thinking time)
154
+
155
+ ### Ending Discovery
156
+
157
+ No required ending. Discovery might:
158
+ - **Flow into a proposal:** "Ready to start? I can create a change proposal." → invoke `openspec-propose`
159
+ - **Result in artifact updates:** "Updated design.md with these decisions"
160
+ - **Just provide clarity:** User has what they need, moves on
161
+ - **Continue later:** "We can pick this up anytime"
162
+
163
+ When things crystallize, summarize:
164
+ ```
165
+ ## What We Figured Out
166
+ **The problem**: [understanding]
167
+ **The approach**: [if one emerged]
168
+ **Open questions**: [if any]
169
+ **Next steps** (if ready):
170
+ - Create a change proposal (invoke openspec-propose)
171
+ - Keep exploring
172
+ ```
173
+
174
+ But the summary is optional. Sometimes the thinking IS the value.
175
+
176
+ ### Guardrails
177
+
178
+ - **Don't implement** — Never write code. Creating OpenSpec artifacts is fine.
179
+ - **Don't fake understanding** — Dig deeper if unclear
180
+ - **Don't rush** — Discovery is thinking time, not task time
181
+ - **Don't force structure** — Let patterns emerge naturally
182
+ - **Don't auto-capture** — Offer to save insights, don't just do it
183
+ - **Do visualize** — A good diagram is worth many paragraphs
184
+ - **Do explore the codebase** — Ground discussions in reality
185
+ - **Do question assumptions** — Including your own
186
+
187
+ ---
188
+
189
+ ## Visual Companion
190
+
191
+ Browser use is text-only by default.
192
+
193
+ - Only use the browser when the user explicitly asks for browser/visual help.
194
+ - Do not suggest the browser just because it might explain something more clearly.
195
+ - If the user asks for browser/visual help, read `skills/thinking/visual-companion.md` before proceeding.
@@ -211,7 +211,7 @@ Ready to implement auth feature
211
211
  ## Integration
212
212
 
213
213
  **Called by:**
214
- - **brainstorming** (Phase 4) - REQUIRED when design is approved and implementation follows
214
+ - **thinking** (creative-design mode) - REQUIRED when design is approved and implementation follows
215
215
  - **subagent-driven-development** - REQUIRED before executing any tasks
216
216
  - **executing-plans** - REQUIRED before executing any tasks
217
217
  - Any skill needing isolated workspace
@@ -49,8 +49,8 @@ Skills use Claude Code tool names. Non-CC platforms: see `references/copilot-too
49
49
  digraph skill_flow {
50
50
  "User message received" [shape=doublecircle];
51
51
  "About to EnterPlanMode?" [shape=doublecircle];
52
- "Already brainstormed?" [shape=diamond];
53
- "Invoke brainstorming skill" [shape=box];
52
+ "Already thought through?" [shape=diamond];
53
+ "Invoke thinking skill" [shape=box];
54
54
  "Might any skill apply?" [shape=diamond];
55
55
  "Invoke Skill tool" [shape=box];
56
56
  "Announce: 'Using [skill] to [purpose]'" [shape=box];
@@ -59,10 +59,10 @@ digraph skill_flow {
59
59
  "Follow skill exactly" [shape=box];
60
60
  "Respond (including clarifications)" [shape=doublecircle];
61
61
 
62
- "About to EnterPlanMode?" -> "Already brainstormed?";
63
- "Already brainstormed?" -> "Invoke brainstorming skill" [label="no"];
64
- "Already brainstormed?" -> "Might any skill apply?" [label="yes"];
65
- "Invoke brainstorming skill" -> "Might any skill apply?";
62
+ "About to EnterPlanMode?" -> "Already thought through?";
63
+ "Already thought through?" -> "Invoke thinking skill" [label="no"];
64
+ "Already thought through?" -> "Might any skill apply?" [label="yes"];
65
+ "Invoke thinking skill" -> "Might any skill apply?";
66
66
 
67
67
  "User message received" -> "Might any skill apply?";
68
68
  "Might any skill apply?" -> "Invoke Skill tool" [label="yes, even 1%"];
@@ -98,10 +98,10 @@ These thoughts mean STOP—you're rationalizing:
98
98
 
99
99
  When multiple skills could apply, use this order:
100
100
 
101
- 1. **Process skills first** (brainstorming, debugging) - these determine HOW to approach the task
101
+ 1. **Process skills first** (thinking, debugging) - these determine HOW to approach the task
102
102
  2. **Implementation skills second** (frontend-design, mcp-builder) - these guide execution
103
103
 
104
- "Let's build X" → brainstorming first, then implementation skills.
104
+ "Let's build X" → thinking first, then implementation skills.
105
105
  "Fix this bug" → debugging first, then domain-specific skills.
106
106
 
107
107
  ## Skill Types
@@ -18,9 +18,20 @@ Assume they are a skilled developer, but know almost nothing about our toolset o
18
18
  **Save plans to:** `docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md`
19
19
  - (User preferences for plan location override this default)
20
20
 
21
+ ## Pre-Plan: Check Engram for Past Decisions
22
+
23
+ Before writing the plan, **consult Engram** to avoid repeating past mistakes:
24
+
25
+ 1. `engram_mem_search` with keywords from the feature name and affected modules
26
+ 2. Look for:
27
+ - Previous plans for similar features (avoid duplicating approaches)
28
+ - Architecture decisions that affect implementation (design patterns, library choices)
29
+ - Known gotchas or edge cases discovered in similar work
30
+ 3. If relevant findings exist, incorporate them into the plan's context section
31
+
21
32
  ## Scope Check
22
33
 
23
- If the spec covers multiple independent subsystems, it should have been broken into sub-project specs during brainstorming. If it wasn't, suggest breaking this into separate plans — one per subsystem. Each plan should produce working, testable software on its own.
34
+ If the spec covers multiple independent subsystems, it should have been broken into sub-project specs during thinking (creative-design mode). If it wasn't, suggest breaking this into separate plans — one per subsystem. Each plan should produce working, testable software on its own.
24
35
 
25
36
  ## File Structure
26
37