ostacky 0.6.2 → 0.7.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/README.md +9 -10
- package/assets/agents/ostacky.md +244 -62
- package/assets/commands/install-stack.md +62 -5
- package/assets/mcp/ostacky-controller/index.js +1341 -989
- package/assets/mcp/ostacky-controller/package.json +1 -1
- package/assets/skills/brainstorming/SKILL.md +8 -8
- package/assets/skills/execution-mode-evaluation/SKILL.md +8 -8
- package/assets/skills/graceful-degradation/SKILL.md +3 -3
- package/assets/skills/openspec-apply-change/SKILL.md +3 -3
- package/assets/skills/openspec-propose/SKILL.md +2 -2
- package/assets/skills/review/SKILL.md +2 -2
- package/assets/skills/subagent-driven-development/SKILL.md +8 -8
- package/dist/cli.js +77 -53
- package/manifest.json +44 -51
- package/package.json +1 -1
- package/assets/skills/writing-plans/SKILL.md +0 -149
|
@@ -9,7 +9,7 @@ A thinking partner that adapts to what the user needs: structured design when th
|
|
|
9
9
|
|
|
10
10
|
**Follow Core Instructions** — `ostacky.md` Core Instructions section for CodeGraph and Engram usage patterns.
|
|
11
11
|
|
|
12
|
-
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `
|
|
12
|
+
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `engram_mem_save`, `engram_mem_search`, `engram_mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -35,29 +35,29 @@ Do NOT invoke any implementation skill, write any code, or scaffold any project
|
|
|
35
35
|
|
|
36
36
|
### Process
|
|
37
37
|
|
|
38
|
-
1. **Check Engram** — `
|
|
39
|
-
2. **Explore via CodeGraph** — `
|
|
38
|
+
1. **Check Engram** — `engram_mem_search` with keywords from the user's idea. Surface any prior design decisions or similar proposals.
|
|
39
|
+
2. **Explore via CodeGraph** — `codegraph_codegraph_explore` on the affected area. Only `Read` files CodeGraph didn't cover.
|
|
40
40
|
3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
|
|
41
41
|
4. **Propose 2-3 approaches** — with trade-offs and your recommendation
|
|
42
42
|
5. **Present design** — in sections scaled to complexity, get user approval after each section
|
|
43
43
|
6. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
|
|
44
44
|
7. **Spec self-review** — check for placeholders, contradictions, ambiguity, scope
|
|
45
45
|
8. **User reviews spec** — ask user to review before proceeding
|
|
46
|
-
9. **Save to Engram** — `
|
|
46
|
+
9. **Save to Engram** — `engram_mem_save` with the design decision and tradeoffs
|
|
47
47
|
10. **Transition** — based on routing decision (see Transition Rules below)
|
|
48
48
|
|
|
49
49
|
### Transition Rules
|
|
50
50
|
|
|
51
51
|
The next step depends on how the change was routed by Ostacky:
|
|
52
52
|
|
|
53
|
-
| Routing | Next
|
|
54
|
-
|
|
55
|
-
| **DIRECT** (Level 0/0+1) |
|
|
53
|
+
| Routing | Next Step | When |
|
|
54
|
+
|---------|-----------|------|
|
|
55
|
+
| **DIRECT** (Level 0/0+1) | **Implementación directa** (con gate de confirmación del usuario) | Small changes, no OpenSpec |
|
|
56
56
|
| **SPEC** (Level 1+) | `openspec-propose` | Complex changes requiring OpenSpec artifacts |
|
|
57
57
|
|
|
58
58
|
If you're unsure about routing, ask Ostacky or check the controller state.
|
|
59
59
|
|
|
60
|
-
**Terminal state:**
|
|
60
|
+
**Terminal state:** For DIRECT, present the design and get user approval before proceeding to implementation. For SPEC, invoke `openspec-propose`. Do NOT invoke implementation skills directly.
|
|
61
61
|
|
|
62
62
|
### Design Principles
|
|
63
63
|
|
|
@@ -8,7 +8,7 @@ metadata:
|
|
|
8
8
|
version: "2.0"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `
|
|
11
|
+
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `engram_mem_save`, `engram_mem_search`, `engram_mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
|
|
12
12
|
|
|
13
13
|
# Skill: execution-mode-evaluation
|
|
14
14
|
|
|
@@ -19,19 +19,19 @@ Determinar el modo de ejecución óptimo entre **inline** y **subagent-driven**
|
|
|
19
19
|
| Dato | Fuente | Obligatorio |
|
|
20
20
|
|------|--------|-------------|
|
|
21
21
|
| Tasks del change | `tasks.md` del cambio activo | ✅ |
|
|
22
|
-
| Archivos que modifica cada task | `
|
|
23
|
-
| Blast radius por símbolo | `
|
|
22
|
+
| Archivos que modifica cada task | `codegraph_codegraph_explore` o lectura directa | ✅ |
|
|
23
|
+
| Blast radius por símbolo | `codegraph_codegraph_impact` | Para alta precisión |
|
|
24
24
|
| Contratos entre tasks | `design.md` | Para evaluar dependencias |
|
|
25
25
|
|
|
26
26
|
## Procedimiento
|
|
27
27
|
|
|
28
28
|
### Paso 0: Verificar datos existentes en contexto
|
|
29
29
|
|
|
30
|
-
Si ya tenés output de `
|
|
30
|
+
Si ya tenés output de `codegraph_codegraph_explore` para el área del cambio **Y** ese output distingue archivos por task → **saltá al Paso 0.5**. Si no, ejecutá el Paso 1.
|
|
31
31
|
|
|
32
32
|
### Paso 0.1: Consultar Engram por decisiones previas
|
|
33
33
|
|
|
34
|
-
`
|
|
34
|
+
`engram_mem_search` con keywords del cambio (nombre del módulo, área afectada). Si existe una decisión de modo de ejecución anterior para un cambio similar, considerarla como referencia — no como vinculante. Las condiciones pueden haber cambiado.
|
|
35
35
|
|
|
36
36
|
### Paso 0.5: Early exit para cambios pequeños
|
|
37
37
|
|
|
@@ -51,7 +51,7 @@ Si el change tiene **≤2 tasks** Y **no comparten archivos entre sí** → devo
|
|
|
51
51
|
### Paso 1: Obtener datos de CodeGraph
|
|
52
52
|
|
|
53
53
|
```
|
|
54
|
-
|
|
54
|
+
codegraph_codegraph_explore con query: "<área del cambio>"
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
Si el output es muy general → `codegraph_impact` sobre símbolos centrales para blast radius preciso.
|
|
@@ -110,7 +110,7 @@ Para cada fase de `tasks.md`, evaluar intra-fase:
|
|
|
110
110
|
{
|
|
111
111
|
"recommendation": "INLINE" | "SUBAGENT_DRIVEN",
|
|
112
112
|
"reasons": ["razón principal", "razón secundaria"],
|
|
113
|
-
"codegraphUsed": ["
|
|
113
|
+
"codegraphUsed": ["codegraph_codegraph_explore"],
|
|
114
114
|
"taskCount": <N>,
|
|
115
115
|
"sharedFiles": { "src/archivo.ts": ["task1", "task2"] },
|
|
116
116
|
"fileClusters": [["task1", "task2"], ["task3"]],
|
|
@@ -178,7 +178,7 @@ Para cada fase de `tasks.md`, evaluar intra-fase:
|
|
|
178
178
|
|
|
179
179
|
## Checklist
|
|
180
180
|
|
|
181
|
-
- [ ] Ejecuté `
|
|
181
|
+
- [ ] Ejecuté `codegraph_codegraph_explore` (o verifiqué datos existentes)?
|
|
182
182
|
- [ ] Construí mapa de dependencias con `fileClusters`?
|
|
183
183
|
- [ ] Identifiqué clusters (componentes conectados)?
|
|
184
184
|
- [ ] Verifiqué deps ENTRE clusters (no solo intra)?
|
|
@@ -9,7 +9,7 @@ When critical tools are unavailable, this skill provides a systematic approach t
|
|
|
9
9
|
|
|
10
10
|
**Follow Core Instructions** — `ostacky.md` Core Instructions section for CodeGraph and Engram usage patterns.
|
|
11
11
|
|
|
12
|
-
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `
|
|
12
|
+
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `engram_mem_save`, `engram_mem_search`, `engram_mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -45,7 +45,7 @@ Switch to basic mode with manual workflows.
|
|
|
45
45
|
|
|
46
46
|
**Workflow:**
|
|
47
47
|
```
|
|
48
|
-
1.
|
|
48
|
+
1. engram_mem_search for related analysis (if Engram available)
|
|
49
49
|
2. Use Glob to find relevant files: **/*.ts, src/**/*.ts
|
|
50
50
|
3. Read files manually to understand structure
|
|
51
51
|
4. Proceed with caution — no blast radius analysis
|
|
@@ -209,7 +209,7 @@ Voy a usar Engram para buscar análisis previos y luego leer archivos manualment
|
|
|
209
209
|
|
|
210
210
|
User: Sí
|
|
211
211
|
|
|
212
|
-
Agent: [Uses
|
|
212
|
+
Agent: [Uses engram_mem_search to find related analysis]
|
|
213
213
|
[Uses Glob to find relevant files]
|
|
214
214
|
[Reads files manually]
|
|
215
215
|
[Proceeds with task]
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
generatedBy: "1.3.1"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `
|
|
12
|
+
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `engram_mem_save`, `engram_mem_search`, `engram_mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
|
|
13
13
|
|
|
14
14
|
Implement tasks from an OpenSpec change.
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ Implement tasks from an OpenSpec change.
|
|
|
19
19
|
|
|
20
20
|
1. **Check Engram for past implementation patterns**
|
|
21
21
|
|
|
22
|
-
Before implementing, `
|
|
22
|
+
Before implementing, `engram_mem_search` with keywords from the change name and affected modules. Look for:
|
|
23
23
|
- Similar changes implemented before (approaches that worked or failed)
|
|
24
24
|
- Known gotchas or edge cases in related areas
|
|
25
25
|
- Model selection patterns for similar task complexity
|
|
@@ -62,7 +62,7 @@ Implement tasks from an OpenSpec change.
|
|
|
62
62
|
|
|
63
63
|
5. **Read context files**
|
|
64
64
|
|
|
65
|
-
Use **CodeGraph** (`
|
|
65
|
+
Use **CodeGraph** (`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.
|
|
66
66
|
The files depend on the schema being used:
|
|
67
67
|
- **spec-driven**: proposal, specs, design, tasks
|
|
68
68
|
- Other schemas: follow the contextFiles from CLI output
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
generatedBy: "1.3.1"
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `
|
|
12
|
+
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `engram_mem_save`, `engram_mem_search`, `engram_mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
|
|
13
13
|
|
|
14
14
|
Propose a new change - create the change and generate all artifacts in one step.
|
|
15
15
|
|
|
@@ -26,7 +26,7 @@ When ready to implement, run /opsx-apply
|
|
|
26
26
|
|
|
27
27
|
**Steps**
|
|
28
28
|
|
|
29
|
-
1. **Check Engram for similar changes** — `
|
|
29
|
+
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.
|
|
30
30
|
|
|
31
31
|
2. **If no clear input provided, ask what they want to build**
|
|
32
32
|
|
|
@@ -52,8 +52,8 @@ 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. **Follow Core Instructions** — `ostacky.md` Core Instructions section for CodeGraph usage patterns. Use `
|
|
56
|
-
2. **Use CodeGraph for code understanding** — `
|
|
55
|
+
1. **Follow Core Instructions** — `ostacky.md` Core Instructions section for CodeGraph usage patterns. Use `codegraph_codegraph_explore` to understand the code structure before reading files directly.
|
|
56
|
+
2. **Use CodeGraph for code understanding** — `codegraph_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
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
58
|
4. **Identify the tech stack** — Note languages, frameworks, and libraries in use. This affects what patterns are risky.
|
|
59
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.
|
|
@@ -5,14 +5,14 @@ description: Use when Ostacky has confirmed subagent-driven execution mode and d
|
|
|
5
5
|
|
|
6
6
|
# Subagent-Driven Development
|
|
7
7
|
|
|
8
|
-
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `
|
|
8
|
+
**IMPORTANT:** Engram is an **MCP server**, not a skill. Tools `engram_mem_save`, `engram_mem_search`, `engram_mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
|
|
9
9
|
|
|
10
10
|
**Prerequisite:** This skill runs AFTER the coordinator (Ostacky) has:
|
|
11
11
|
1. Performed execution analysis (via `execution-mode-evaluation` skill)
|
|
12
12
|
2. Presented evidence and recommendation to the user
|
|
13
13
|
3. Received explicit user confirmation for subagent-driven mode
|
|
14
|
-
4. Called `
|
|
15
|
-
5. Checked Engram (`
|
|
14
|
+
4. Called `ostacky-controller_consume_execution_decision({ mode: "SUBAGENT_DRIVEN" })`
|
|
15
|
+
5. Checked Engram (`engram_mem_search`) for past subagent execution patterns on similar changes — if a previous approach failed, avoid repeating it
|
|
16
16
|
|
|
17
17
|
Subagents are execution-only. They never create routing decisions, re-analyze execution mode, or duplicate discovery that the coordinator already resolved.
|
|
18
18
|
|
|
@@ -32,7 +32,7 @@ digraph when_to_use {
|
|
|
32
32
|
"Tasks mostly independent?" [shape=diamond];
|
|
33
33
|
"Stay in this session?" [shape=diamond];
|
|
34
34
|
"subagent-driven-development" [shape=box];
|
|
35
|
-
"
|
|
35
|
+
"Inline execution" [shape=box];
|
|
36
36
|
"Manual execution or brainstorm first" [shape=box];
|
|
37
37
|
|
|
38
38
|
"Have implementation plan?" -> "Tasks mostly independent?" [label="yes"];
|
|
@@ -40,11 +40,11 @@ digraph when_to_use {
|
|
|
40
40
|
"Tasks mostly independent?" -> "Stay in this session?" [label="yes"];
|
|
41
41
|
"Tasks mostly independent?" -> "Manual execution or brainstorm first" [label="no - tightly coupled"];
|
|
42
42
|
"Stay in this session?" -> "subagent-driven-development" [label="yes"];
|
|
43
|
-
"Stay in this session?" -> "
|
|
43
|
+
"Stay in this session?" -> "Inline execution" [label="no - parallel session"];
|
|
44
44
|
}
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
**vs.
|
|
47
|
+
**vs. Inline execution (parallel session):**
|
|
48
48
|
- Same session (no context switch)
|
|
49
49
|
- Fresh subagent per task (no context pollution)
|
|
50
50
|
- Two-stage review after each task: spec compliance first, then code quality
|
|
@@ -56,7 +56,7 @@ digraph when_to_use {
|
|
|
56
56
|
|
|
57
57
|
When constructing the context package for each subagent:
|
|
58
58
|
|
|
59
|
-
1. Use `
|
|
59
|
+
1. Use `codegraph_codegraph_explore` to get the verbatim source of relevant symbols, their call paths, and blast radius — in ONE call.
|
|
60
60
|
2. Only use `Read` for files or details CodeGraph didn't cover.
|
|
61
61
|
3. Include the CodeGraph output in the subagent's context package so they have structural understanding without needing to re-explore.
|
|
62
62
|
|
|
@@ -292,7 +292,7 @@ Done!
|
|
|
292
292
|
|
|
293
293
|
**Related workflow skills:**
|
|
294
294
|
- **using-git-worktrees** - Ensures isolated workspace (creates one or verifies existing)
|
|
295
|
-
- **
|
|
295
|
+
- **brainstorming** - Produces design that feeds into implementation (DIRECT) or OpenSpec (SPEC)
|
|
296
296
|
- **review** - Code review template for reviewer subagents
|
|
297
297
|
|
|
298
298
|
**Subagents should use:**
|
package/dist/cli.js
CHANGED
|
@@ -520,31 +520,31 @@ var init_fs = __esm(() => {
|
|
|
520
520
|
var manifest_default;
|
|
521
521
|
var init_manifest = __esm(() => {
|
|
522
522
|
manifest_default = {
|
|
523
|
-
version: "0.
|
|
523
|
+
version: "0.7.0",
|
|
524
524
|
repo: "JaimeHoracio/Ostacky",
|
|
525
|
-
tag: "v0.
|
|
525
|
+
tag: "v0.7.0",
|
|
526
526
|
agents: [
|
|
527
527
|
{
|
|
528
528
|
name: "ostacky",
|
|
529
529
|
file: "assets/agents/ostacky.md",
|
|
530
|
-
description: "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers",
|
|
531
|
-
version: "0.
|
|
532
|
-
sha256: "
|
|
530
|
+
description: "Orquestador con recuperación automática (nunca se congela), ruteo por nivel de impacto, controller MCP con SDK oficial, edición segura con fallback inline, y delegación en OpenSpec + Superpowers. v0.7.0: prune de skills obsoletas, lastHandoff, getAvailableTransitions, consecutiveFailures real, mem_session_summary automático al cierre.",
|
|
531
|
+
version: "0.7.0",
|
|
532
|
+
sha256: "f833e69b6eaa3dfe24de9addf6455b3da55f829b51cba3c7c90c65c69cda34c2"
|
|
533
533
|
}
|
|
534
534
|
],
|
|
535
535
|
commands: [
|
|
536
536
|
{
|
|
537
537
|
name: "install-stack",
|
|
538
538
|
file: "assets/commands/install-stack.md",
|
|
539
|
-
description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, Context7, controller MCP con SDK oficial)",
|
|
540
|
-
version: "0.
|
|
541
|
-
sha256: "
|
|
539
|
+
description: "Instala el stack tecnológico del proyecto (CodeGraph, skills, OpenSpec, Engram, Context7, controller MCP con SDK oficial). v0.7.0: Paso 1.5 controller expandido con verificación post-instalación y troubleshooting.",
|
|
540
|
+
version: "0.7.0",
|
|
541
|
+
sha256: "c957627dfafabfdb9da2717546b996d1d8856f08a6e4c48caf72c562363b566b"
|
|
542
542
|
},
|
|
543
543
|
{
|
|
544
544
|
name: "opsx-sync",
|
|
545
545
|
file: "assets/commands/opsx-sync.md",
|
|
546
546
|
description: "Sincroniza delta specs del change activo sin inicializar CodeGraph si ya existe índice",
|
|
547
|
-
version: "0.
|
|
547
|
+
version: "0.7.0",
|
|
548
548
|
sha256: "fe0158478f2ca63b315037a85fc1632b77868532e319af6c7384285441767d64"
|
|
549
549
|
}
|
|
550
550
|
],
|
|
@@ -552,15 +552,15 @@ var init_manifest = __esm(() => {
|
|
|
552
552
|
{
|
|
553
553
|
name: "ostacky-controller",
|
|
554
554
|
file: "assets/mcp/ostacky-controller/",
|
|
555
|
-
description: "Máquina de estados persistida con @modelcontextprotocol/server SDK.
|
|
556
|
-
version: "0.
|
|
557
|
-
sha256: "
|
|
555
|
+
description: "Máquina de estados persistida con @modelcontextprotocol/server SDK. v0.7.0: 22 tools (incluye set_handoff, get_handoff, clear_handoff, get_available_transitions funcional). Bugfixes: consecutiveFailures real, lastHandoff state, defaultChoice persistido. Robustez: degraded mode automático tras 3 fallos, persistence condicional para Nivel 0, prune de skills obsoletas.",
|
|
556
|
+
version: "0.7.0",
|
|
557
|
+
sha256: "0ec6fa0fc2900c78b884258168309653dea4b77ded3596bb56866f689ec2404c"
|
|
558
558
|
},
|
|
559
559
|
{
|
|
560
560
|
name: "openspec",
|
|
561
561
|
file: "assets/mcp/openspec/",
|
|
562
562
|
description: "MCP server local para OpenSpec - proposal, apply, archive, sync de cambios",
|
|
563
|
-
version: "0.
|
|
563
|
+
version: "0.7.0",
|
|
564
564
|
sha256: "fa4be28bfc1e75db8f1a037e2580f04a60066c80e8e5934e90e1041020d04609"
|
|
565
565
|
}
|
|
566
566
|
],
|
|
@@ -568,114 +568,107 @@ var init_manifest = __esm(() => {
|
|
|
568
568
|
{
|
|
569
569
|
name: "brainstorming",
|
|
570
570
|
file: "assets/skills/brainstorming/SKILL.md",
|
|
571
|
-
description: "Skill unificado de pensamiento con dos modos: creative-design (producción de diseño → transición a
|
|
572
|
-
version: "0.
|
|
573
|
-
sha256: "
|
|
571
|
+
description: "Skill unificado de pensamiento con dos modos: creative-design (producción de diseño → transición a implementación directa o openspec-propose) y open-exploration (exploración libre)",
|
|
572
|
+
version: "0.7.0",
|
|
573
|
+
sha256: "333810ca63450e8ab795e8c5a58e645101e788d79210ca8ac36e10d11be39585"
|
|
574
574
|
},
|
|
575
575
|
{
|
|
576
576
|
name: "execution-mode-evaluation",
|
|
577
577
|
file: "assets/skills/execution-mode-evaluation/SKILL.md",
|
|
578
578
|
description: "Skill de análisis de modo de ejecución — output reconciliado con controller snapshot contract (recommendation field)",
|
|
579
|
-
version: "0.
|
|
580
|
-
sha256: "
|
|
581
|
-
},
|
|
582
|
-
{
|
|
583
|
-
name: "writing-plans",
|
|
584
|
-
file: "assets/skills/writing-plans/SKILL.md",
|
|
585
|
-
description: "Skill de planificación de implementación (Superpowers) — execution handoff removido, Ostacky decide modo de ejecución",
|
|
586
|
-
version: "0.6.2",
|
|
587
|
-
sha256: "92a3f40dc215cee7b587c2df52ac3a88a129dec0c176059014a5e070ea344c23"
|
|
579
|
+
version: "0.7.0",
|
|
580
|
+
sha256: "edf6fca0af52cce83f8fd08e7db9b3d79cc130b53fca505e90d3fbaf4909338b"
|
|
588
581
|
},
|
|
589
582
|
{
|
|
590
583
|
name: "tdd",
|
|
591
584
|
file: "assets/skills/tdd/SKILL.md",
|
|
592
585
|
description: "Skill de test-driven development (Superpowers)",
|
|
593
|
-
version: "0.
|
|
594
|
-
sha256: "
|
|
586
|
+
version: "0.7.0",
|
|
587
|
+
sha256: "aa412298980b7826165c211145c1b8e9135f68f36247bb3cb96d0a0eae274486"
|
|
595
588
|
},
|
|
596
589
|
{
|
|
597
590
|
name: "subagent-driven-development",
|
|
598
591
|
file: "assets/skills/subagent-driven-development/SKILL.md",
|
|
599
592
|
description: "Skill de ejecución con subagentes (Superpowers) — ejecuta solo después de confirmación del coordinador Ostacky",
|
|
600
|
-
version: "0.
|
|
601
|
-
sha256: "
|
|
593
|
+
version: "0.7.0",
|
|
594
|
+
sha256: "1a42d714a9a13faf05f0bf7b580e8d837c2e77a5633839542ccce603023419e8"
|
|
602
595
|
},
|
|
603
596
|
{
|
|
604
597
|
name: "dispatching-parallel-agents",
|
|
605
598
|
file: "assets/skills/dispatching-parallel-agents/SKILL.md",
|
|
606
599
|
description: "Skill de dispatch paralelo de agentes (Superpowers)",
|
|
607
|
-
version: "0.
|
|
608
|
-
sha256: "
|
|
600
|
+
version: "0.7.0",
|
|
601
|
+
sha256: "3c8a66d51ae2e719e877d02c3dac32bd804722c3bb9227c258ecae78252a20ab"
|
|
609
602
|
},
|
|
610
603
|
{
|
|
611
604
|
name: "review",
|
|
612
605
|
file: "assets/skills/review/SKILL.md",
|
|
613
606
|
description: "Skill de revisión de código (Superpowers)",
|
|
614
|
-
version: "0.
|
|
615
|
-
sha256: "
|
|
607
|
+
version: "0.7.0",
|
|
608
|
+
sha256: "b19650ed4d1d4d9857a4dd5b7e08e91328a1a1fc9c45bcc2fb600fa9d0213279"
|
|
616
609
|
},
|
|
617
610
|
{
|
|
618
611
|
name: "receiving-code-review",
|
|
619
612
|
file: "assets/skills/receiving-code-review/SKILL.md",
|
|
620
613
|
description: "Skill de recibir y procesar feedback de code review",
|
|
621
|
-
version: "0.
|
|
622
|
-
sha256: "
|
|
614
|
+
version: "0.7.0",
|
|
615
|
+
sha256: "d761e884e71d8d3476ac734d287cae403a4024506a7d12e7361a448217c0a831"
|
|
623
616
|
},
|
|
624
617
|
{
|
|
625
618
|
name: "openspec-propose",
|
|
626
619
|
file: "assets/skills/openspec-propose/SKILL.md",
|
|
627
620
|
description: "Skill de generación de proposal (OpenSpec)",
|
|
628
|
-
version: "0.
|
|
629
|
-
sha256: "
|
|
621
|
+
version: "0.7.0",
|
|
622
|
+
sha256: "bb59100b9fd3c9f9a1ec6509fa975ec55bf7fc737df4fe73bb3e9bbc217b83f7"
|
|
630
623
|
},
|
|
631
624
|
{
|
|
632
625
|
name: "openspec-apply-change",
|
|
633
626
|
file: "assets/skills/openspec-apply-change/SKILL.md",
|
|
634
627
|
description: "Skill de aplicación de change (OpenSpec)",
|
|
635
|
-
version: "0.
|
|
636
|
-
sha256: "
|
|
628
|
+
version: "0.7.0",
|
|
629
|
+
sha256: "dfc823bf89fc7505e91ab6dee9c1f004be38a410bd3d88fb67b211b1b6cbb1d0"
|
|
637
630
|
},
|
|
638
631
|
{
|
|
639
632
|
name: "openspec-archive-change",
|
|
640
633
|
file: "assets/skills/openspec-archive-change/SKILL.md",
|
|
641
634
|
description: "Skill de archivo de change (OpenSpec)",
|
|
642
|
-
version: "0.
|
|
643
|
-
sha256: "
|
|
635
|
+
version: "0.7.0",
|
|
636
|
+
sha256: "16e4b561de7747283663fed602e506abf502452c49a8d4b86d7a5539c40f0195"
|
|
644
637
|
},
|
|
645
638
|
{
|
|
646
639
|
name: "openspec-explore",
|
|
647
640
|
file: "assets/skills/openspec-explore/SKILL.md",
|
|
648
641
|
description: "Modo explore para OpenSpec — thinking partner para explorar ideas, investigar problemas y clarificar requisitos antes/durante un cambio",
|
|
649
|
-
version: "0.
|
|
650
|
-
sha256: "
|
|
642
|
+
version: "0.7.0",
|
|
643
|
+
sha256: "37ae4aaf17ea71a395bab6dc4d9d61b9a49d7910f6692535ae8553244c46880b"
|
|
651
644
|
},
|
|
652
645
|
{
|
|
653
646
|
name: "using-git-worktrees",
|
|
654
647
|
file: "assets/skills/using-git-worktrees/SKILL.md",
|
|
655
648
|
description: "Skill de uso de git worktrees para aislamiento de trabajo",
|
|
656
|
-
version: "0.
|
|
657
|
-
sha256: "
|
|
649
|
+
version: "0.7.0",
|
|
650
|
+
sha256: "11afa9123828fc5caa22137aff907cd99c751e99027fbd4c020751110a949281"
|
|
658
651
|
},
|
|
659
652
|
{
|
|
660
653
|
name: "using-superpowers",
|
|
661
654
|
file: "assets/skills/using-superpowers/SKILL.md",
|
|
662
655
|
description: "Skill de orquestación de Superpowers skills",
|
|
663
|
-
version: "0.
|
|
664
|
-
sha256: "
|
|
656
|
+
version: "0.7.0",
|
|
657
|
+
sha256: "7e54536f96d2a379185a10bfc1e970850caa2561b6d8aca7080f0defea0381a4"
|
|
665
658
|
},
|
|
666
659
|
{
|
|
667
660
|
name: "writing-skills",
|
|
668
661
|
file: "assets/skills/writing-skills/SKILL.md",
|
|
669
662
|
description: "Skill de creación y edición de skills",
|
|
670
|
-
version: "0.
|
|
671
|
-
sha256: "
|
|
663
|
+
version: "0.7.0",
|
|
664
|
+
sha256: "3d76b906cee518a2b809febb70db95697a35b9f368986bb504b4120c3bfb437a"
|
|
672
665
|
},
|
|
673
666
|
{
|
|
674
667
|
name: "graceful-degradation",
|
|
675
668
|
file: "assets/skills/graceful-degradation/SKILL.md",
|
|
676
669
|
description: "Skill de degradación graceful cuando múltiples tools están indisponibles",
|
|
677
|
-
version: "0.
|
|
678
|
-
sha256: "
|
|
670
|
+
version: "0.7.0",
|
|
671
|
+
sha256: "e5090e475729f21871bb25bce738000f3616955ed3edb3ba926dd740d3298948"
|
|
679
672
|
}
|
|
680
673
|
]
|
|
681
674
|
};
|
|
@@ -1437,7 +1430,7 @@ var init_stack = __esm(() => {
|
|
|
1437
1430
|
// package.json
|
|
1438
1431
|
var package_default = {
|
|
1439
1432
|
name: "ostacky",
|
|
1440
|
-
version: "0.
|
|
1433
|
+
version: "0.7.0",
|
|
1441
1434
|
description: "Instalador interactivo de agentes y comandos para OpenCode",
|
|
1442
1435
|
type: "module",
|
|
1443
1436
|
bin: {
|
|
@@ -2591,7 +2584,7 @@ async function probeMcpServer(nodeExecutable, serverPath, cwd, statePath) {
|
|
|
2591
2584
|
params: {
|
|
2592
2585
|
protocolVersion: "2025-03-26",
|
|
2593
2586
|
capabilities: {},
|
|
2594
|
-
clientInfo: { name: "ostacky-installer", version: "0.
|
|
2587
|
+
clientInfo: { name: "ostacky-installer", version: "0.7.0" }
|
|
2595
2588
|
}
|
|
2596
2589
|
});
|
|
2597
2590
|
});
|
|
@@ -2691,6 +2684,29 @@ async function installSkill(item, manifest, paths) {
|
|
|
2691
2684
|
copyDirRecursive(src, dest);
|
|
2692
2685
|
upsertLockfile(paths, "skills", item, manifest, treeHash);
|
|
2693
2686
|
}
|
|
2687
|
+
function pruneStaleSkills(paths, manifest) {
|
|
2688
|
+
const expected = new Set(manifest.skills.map((s) => s.name));
|
|
2689
|
+
const removed = [];
|
|
2690
|
+
if (!existsSync5(paths.skills))
|
|
2691
|
+
return removed;
|
|
2692
|
+
for (const entry of readdirSync2(paths.skills)) {
|
|
2693
|
+
const dir = join6(paths.skills, entry);
|
|
2694
|
+
try {
|
|
2695
|
+
if (!statSync2(dir).isDirectory())
|
|
2696
|
+
continue;
|
|
2697
|
+
} catch {
|
|
2698
|
+
continue;
|
|
2699
|
+
}
|
|
2700
|
+
if (!expected.has(entry)) {
|
|
2701
|
+
try {
|
|
2702
|
+
rmSync3(dir, { recursive: true, force: true });
|
|
2703
|
+
removeFromLockfile(paths.root, "skills", entry);
|
|
2704
|
+
removed.push(entry);
|
|
2705
|
+
} catch {}
|
|
2706
|
+
}
|
|
2707
|
+
}
|
|
2708
|
+
return removed;
|
|
2709
|
+
}
|
|
2694
2710
|
async function installMcpServer(item, manifest, paths) {
|
|
2695
2711
|
const src = getBundledMcpPath(item.name);
|
|
2696
2712
|
if (!existsSync5(src)) {
|
|
@@ -3069,6 +3085,10 @@ async function doInstallAll(manifest, paths) {
|
|
|
3069
3085
|
errors++;
|
|
3070
3086
|
}
|
|
3071
3087
|
}
|
|
3088
|
+
const pruned = pruneStaleSkills(paths, manifest);
|
|
3089
|
+
if (pruned.length > 0) {
|
|
3090
|
+
v2.info(`Skills obsoletas removidas: ${pruned.join(", ")}`);
|
|
3091
|
+
}
|
|
3072
3092
|
for (const mcp of manifest.mcpServers ?? []) {
|
|
3073
3093
|
spin.start(`Instalando MCP server: ${mcp.name} (${mcp.version})`);
|
|
3074
3094
|
try {
|
|
@@ -3282,6 +3302,10 @@ async function doUpdate(manifest, paths) {
|
|
|
3282
3302
|
}
|
|
3283
3303
|
}
|
|
3284
3304
|
v2.success(`${updated} recurso(s) actualizado(s).`);
|
|
3305
|
+
const pruned = pruneStaleSkills(paths, manifest);
|
|
3306
|
+
if (pruned.length > 0) {
|
|
3307
|
+
v2.info(`Skills obsoletas removidas del filesystem: ${pruned.join(", ")}`);
|
|
3308
|
+
}
|
|
3285
3309
|
}
|
|
3286
3310
|
|
|
3287
3311
|
// src/prompts/uninstall.ts
|