ostacky 0.6.3 → 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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ostacky-controller",
3
- "version": "0.6.3",
3
+ "version": "0.7.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -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 `mem_save`, `mem_search`, `mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
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** — `mem_search` with keywords from the user's idea. Surface any prior design decisions or similar proposals.
39
- 2. **Explore via CodeGraph** — `codegraph_explore` on the affected area. Only `Read` files CodeGraph didn't cover.
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** — `mem_save` with the design decision and tradeoffs
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 Skill | When |
54
- |---------|------------|------|
55
- | **DIRECT** (Level 0/0+1) | `writing-plans` | Small changes, no OpenSpec |
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:** Invoke the appropriate next skill. Do NOT invoke implementation skills directly.
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 `mem_save`, `mem_search`, `mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
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 | `codegraph_explore` o lectura directa | ✅ |
23
- | Blast radius por símbolo | `codegraph_impact` | Para alta precisión |
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 `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.
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
- `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.
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
- codegraph_explore con query: "<área del cambio>"
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": ["codegraph_explore"],
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é `codegraph_explore` (o verifiqué datos existentes)?
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 `mem_save`, `mem_search`, `mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
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. mem_search for related analysis (if Engram available)
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 mem_search to find related analysis]
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 `mem_save`, `mem_search`, `mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
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, `mem_search` with keywords from the change name and affected modules. Look for:
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** (`codegraph_explore`) to understand the code structure before reading files directly. Then read every file path listed under `contextFiles` from the apply instructions output.
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 `mem_save`, `mem_search`, `mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
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** — `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.
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 `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.
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 `mem_save`, `mem_search`, `mem_context` are MCP tools. Do NOT use `skill("engram")` — it doesn't exist.
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 `controller.consumeExecutionDecision({ mode: "SUBAGENT_DRIVEN" })`
15
- 5. Checked Engram (`mem_search`) for past subagent execution patterns on similar changes — if a previous approach failed, avoid repeating it
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
- "executing-plans" [shape=box];
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?" -> "executing-plans" [label="no - parallel session"];
43
+ "Stay in this session?" -> "Inline execution" [label="no - parallel session"];
44
44
  }
45
45
  ```
46
46
 
47
- **vs. Executing Plans (parallel session):**
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 `codegraph_explore` to get the verbatim source of relevant symbols, their call paths, and blast radius — in ONE call.
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
- - **writing-plans** - Creates the plan this skill executes
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.6.3",
523
+ version: "0.7.0",
524
524
  repo: "JaimeHoracio/Ostacky",
525
- tag: "v0.6.3",
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.6.3",
532
- sha256: "9cd6f45339b897fe002775a3a54f570e47dedd1784fa474d6cd5113594d1bd85"
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.6.3",
541
- sha256: "6002a342c3570a33c6f5d4bccf767d0c343b06c4a612cfaa8f744ffedd0de34d"
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.6.3",
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. 20 tools: start_request discovery route execution sync done + validate_edit + complete_task + ping + proceed_to_route + abandon integrado",
556
- version: "0.6.3",
557
- sha256: "144fb38a88f81a7657131bf416e59bf668c9eca5fd92a607ea94e32a41e1a36d"
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.6.3",
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 writing-plans o openspec-propose) y open-exploration (exploración libre)",
572
- version: "0.6.3",
573
- sha256: "602116fb37e5bc879d1a28815a5928c7bcd9563713907ea278669c1cd81fcde1"
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.6.3",
580
- sha256: "2e21e69011a0d3cfc2abc4a42b93a616fa9dc7e416955d1f757f6d8e5b35f00b"
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.3",
587
- sha256: "9b14903231df96f54da08158c117801b18bba8f5a2e5a0c069854d059e99f294"
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.6.3",
586
+ version: "0.7.0",
594
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.6.3",
601
- sha256: "6128a6cac60eadc11541ba2d37c3e395c6da3a0167767fbb9b7203b1a2a33ebc"
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.6.3",
600
+ version: "0.7.0",
608
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.6.3",
615
- sha256: "78914222c29306e479d24b09449e1b5a54b5a0482bd5e3e24faace792946a40a"
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.6.3",
614
+ version: "0.7.0",
622
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.6.3",
629
- sha256: "a184a9e99c06860e1742a100336b1662b329c5d6b319301449ed0fa01545e1ac"
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.6.3",
636
- sha256: "b12d80deb4f54f1ceb4792897dbd29fda9b15a71ddd98c30fb6501b085d8eee6"
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.6.3",
635
+ version: "0.7.0",
643
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.6.3",
642
+ version: "0.7.0",
650
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.6.3",
649
+ version: "0.7.0",
657
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.6.3",
656
+ version: "0.7.0",
664
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.6.3",
663
+ version: "0.7.0",
671
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.6.3",
678
- sha256: "91c52da5c72a866c5df388fc4d4a3dc317bc55be0040081cc7ae04d3c167a026"
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.6.3",
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.6.3" }
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