@ancleto/spec 0.6.2 → 0.6.4

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.
Files changed (31) hide show
  1. package/README.md +184 -91
  2. package/agents/spec-writer.md +2 -2
  3. package/commands/{opsx-apply.md → cleto-apply.md} +4 -4
  4. package/commands/{opsx-archive.md → cleto-archive.md} +3 -3
  5. package/commands/{opsx-bulk-archive.md → cleto-bulk-archive.md} +1 -1
  6. package/commands/{opsx-continue.md → cleto-continue.md} +3 -3
  7. package/commands/{opsx-explore.md → cleto-explore.md} +1 -1
  8. package/commands/{opsx-ff.md → cleto-ff.md} +2 -2
  9. package/commands/{opsx-new.md → cleto-new.md} +4 -4
  10. package/commands/{opsx-onboard.md → cleto-onboard.md} +22 -22
  11. package/commands/{opsx-propose.md → cleto-propose.md} +3 -3
  12. package/commands/{opsx-recall.md → cleto-recall.md} +6 -6
  13. package/commands/{opsx-sync.md → cleto-sync.md} +1 -1
  14. package/commands/{opsx-verify.md → cleto-verify.md} +1 -1
  15. package/package.json +1 -1
  16. package/skills/{openspec-apply → ancleto-apply}/SKILL.md +2 -2
  17. package/skills/{openspec-archive → ancleto-archive}/SKILL.md +1 -1
  18. package/skills/{openspec-bulk-archive → ancleto-bulk-archive}/SKILL.md +1 -1
  19. package/skills/{openspec-continue → ancleto-continue}/SKILL.md +4 -4
  20. package/skills/{openspec-explore → ancleto-explore}/SKILL.md +1 -1
  21. package/skills/{openspec-ff → ancleto-ff}/SKILL.md +2 -2
  22. package/skills/{openspec-new → ancleto-new}/SKILL.md +2 -2
  23. package/skills/{openspec-onboard → ancleto-onboard}/SKILL.md +11 -11
  24. package/skills/{openspec-propose → ancleto-propose}/SKILL.md +4 -4
  25. package/skills/{openspec-recall → ancleto-recall}/SKILL.md +3 -3
  26. package/skills/{openspec-sync-specs → ancleto-sync-specs}/SKILL.md +1 -1
  27. package/skills/ancleto-upgrade/SKILL.md +2 -2
  28. package/skills/{openspec-verify → ancleto-verify}/SKILL.md +1 -1
  29. package/skills/{openspec-workflow → ancleto-workflow}/SKILL.md +17 -17
  30. package/skills/triage-clarifier/SKILL.md +1 -1
  31. package/src/cli/index.js +22 -12
package/README.md CHANGED
@@ -1,120 +1,213 @@
1
- # ancleto
2
-
3
- Orquestador SDD liviano con subagentes optimizados para costo/tokens. Toolkit personal
4
- de desarrollo asistido por IA para opencode: ciclo spec-driven completo (OpenSpec),
5
- agents y skills, más un CLI de inicialización y descubrimiento técnico del repositorio.
6
-
7
- Binarios: `ancleto` (alias: `aspec`).
8
-
9
- ## Qué incluye
10
-
11
- - **Agents (10)**: orchestrator, coder, tester, spec-writer, reviewer, documenter,
12
- technical-discovery, technical-seed-writer, memory-keeper, context-resolver.
13
- - **Commands (12)**: `opsx-*` — ciclo de vida de changes OpenSpec (new, propose, ff,
14
- apply, verify, sync, archive, bulk-archive, continue, explore, onboard, recall).
15
- - **Skills (7)**: `ancleto-commit`, `ancleto-pr`, `ancleto-technical-discovery`, `ancleto-upgrade`,
16
- `triage-clarifier`, `openspec-recall`, `openspec-sync-specs`.
17
- - **Templates**: `AGENTS.md`, `PRODUCT.md` para proyectos nuevos.
18
- - **CLI `ancleto`**: instalación (`ancleto install`), init de proyectos (`ancleto init`) y
19
- descubrimiento técnico (`ancleto discovery`, pack con Repomix).
20
- - **Motor de memoria (v0.2.0)**: base local `.ancleto/memory.db` sobre `node:sqlite`
21
- (zero-deps, Node >= 24). Tres tools para el LLM — `searchMemory` (BM25, FTS5),
22
- `recordRule` y `recordDecision` — con supersesión atómica por `memory_key`; reglas
23
- inyectadas proactivamente en `<ProjectMemoryRules>` y decisiones recuperadas
24
- reactivamente.
25
- - **Documentación**: `docs/` — `ancleto-cli-framework.md` (guía del framework),
26
- `guia-configuracion.md` (puesta a punto del entorno) y `skill-ancleto-upgrade.md`.
27
-
28
- ## Instalación
1
+ <div align="center">
2
+
3
+ # ☕ ANCLETO (aspec)
4
+ **Orquestador SDD (Spec-Driven Development) y Toolkit Personal Asistido por IA**
5
+
6
+ [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D%2024.0.0-43853D?style=flat-square&logo=node.js&logoColor=white)](#requisitos)
7
+ [![Version](https://img.shields.io/badge/version-v0.6.2-blue?style=flat-square)](#uso-rápido)
8
+ [![Zero Dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen?style=flat-square)](#requisitos)
9
+
10
+ *Descubrimiento técnico, memoria persistente y control estricto de tokens para tu IDE.*
11
+
12
+ </div>
13
+
14
+ ---
15
+
16
+ ## 📖 Tabla de Contenidos
17
+
18
+ - [¿Qué es Ancleto?](#-qué-es-ancleto)
19
+ - [¿Por qué fue creado?](#-por-qué-fue-creado)
20
+ - [Características Principales](#-características-principales)
21
+ - [Requisitos](#-requisitos)
22
+ - [Instalación](#-instalación)
23
+ - [Configuración y Tiers de Costo](#-configuración-y-tiers-de-costo)
24
+ - [Uso Rápido](#-uso-rápido)
25
+ - [Referencia de Comandos CLI](#-referencia-de-comandos-cli)
26
+ - [Motor de Memoria Persistente](#-motor-de-memoria-persistente)
27
+ - [Comandos del Ciclo SDD en tu IDE](#-comandos-del-ciclo-sdd-en-tu-ide)
28
+ - [Azure DevOps (Opcional)](#-azure-devops-opcional)
29
+
30
+ ---
31
+
32
+ ## 🚀 ¿Qué es Ancleto?
33
+
34
+ **Ancleto** (cuyo alias de CLI es `aspec`) es un orquestador ligero diseñado para potenciar el desarrollo de software asistido por Inteligencia Artificial bajo el paradigma **SDD (Spec-Driven Development)**.
35
+
36
+ Funciona como un conjunto de herramientas y agentes que viven en tu entorno de desarrollo local (como OpenCode, Cursor, VS Code, Roo, etc.), permitiéndote automatizar la escritura de especificaciones, el descubrimiento topológico del código y la retención de memoria de las decisiones técnicas.
37
+
38
+ Todo esto está envuelto en una CLI moderna, interactiva y construida bajo una filosofía estricta de **cero dependencias (Zero-Deps)**.
39
+
40
+ ## 💡 ¿Por qué fue creado?
41
+
42
+ Al trabajar en repositorios complejos con asistentes de IA, surgen tres problemas críticos:
43
+
44
+ 1. **La "Memoria de Pez" de los LLMs:** Los agentes olvidan las convenciones del proyecto o las decisiones arquitectónicas pasadas en cuanto se limpia la ventana de contexto.
45
+ 2. **El Costo Oculto (Token Budgeting):** Empaquetar todo un monorepo para darle contexto a la IA consume presupuestos de tokens masivos y encarece el uso de las APIs.
46
+ 3. **Falta de Estandarización:** Cada agente de IA actúa por su cuenta, sin seguir un ciclo de vida definido de especificación -> revisión -> implementación -> verificación.
47
+
48
+ **Ancleto** nace para resolver esto. Centraliza las reglas de negocio en un motor de memoria local (`node:sqlite`), empaqueta inteligentemente el contexto según el nivel de tu suscripción (Tiers) y orquesta 10 subagentes nativos para que el código que escriba la IA cumpla estrictamente con tus estándares, minimizando la fricción y los costos.
49
+
50
+ ---
51
+
52
+ ## ✨ Características Principales
53
+
54
+ - 🤖 **Catálogo Multi-Agente (10 Agents):** Orquestador, Coder, Tester, Spec-Writer, Reviewer, Documenter, Technical-Discovery, Technical-Seed-Writer, Memory-Keeper y Context-Resolver.
55
+ - 🧠 **Motor de Memoria Persistente (FTS5):** Base local SQLite (`.ancleto/memory.db`) que provee al LLM herramientas para registrar y recuperar reglas arquitectónicas y decisiones pasadas proactivamente.
56
+ - 🗺️ **Discovery Engine:** Un escáner topológico rápido que genera mapas del repositorio (`.discovery-map.json`) y empaqueta el contexto vía Repomix con presupuestos de tokens dinámicos.
57
+ - 💸 **Gestión de Tiers de Costo:** Control absoluto sobre qué modelos y cuánto contexto se envía (`normal`, `minimo`, `gratis`), protegiendo tus cuotas de API.
58
+ - ⚡ **Agentic OpenSpec Engine:** Totalmente independiente, sin binarios externos. Las 11 skills del ciclo de vida (`new`, `propose`, `apply`, `verify`, `archive`, `bulk-archive`, `continue`, `explore`, `ff`, `onboard`, `workflow`) se instalan e inyectan nativamente en tu IDE favorito, más skills auxiliares (`ancleto-commit`, `ancleto-pr`, `triage-clarifier`, entre otras).
59
+ - 🎨 **Wizard Interactivo:** Inicialización por TTY con banner animado y menús navegables con flechas, sin requerir librerías pesadas (Zero-Deps).
60
+
61
+ ---
62
+
63
+ ## 🛠 Requisitos
64
+
65
+ Dado que Ancleto mantiene una política de cero dependencias externas, aprovecha las capacidades nativas más recientes de Node:
66
+
67
+ - **Node.js >= 24.0.0** (requerido estrictamente para el módulo nativo `node:sqlite`).
68
+ - **Repomix** (utilizado dinámicamente vía `npx` si no está instalado globalmente, para el empaquetado de contexto).
69
+
70
+ ---
71
+
72
+ ## 📦 Instalación
73
+
74
+ Puedes instalar la herramienta a nivel global o por proyecto.
29
75
 
30
76
  ```bash
31
- ancleto install # global: disponible en todos tus proyectos
32
- ancleto install --project /ruta/repo # por proyecto: .opencode/ + templates en la raiz
33
- ancleto install --no-mcp # igual, sin tocar la config MCP de opencode
34
- ancleto update # re-instala la ultima version
77
+ # Instalación global (disponible en todos tus proyectos)
78
+ npm install -g @ancleto/spec
79
+
80
+ # O alternativamente a través de la CLI de ancleto:
81
+ ancleto install
82
+
83
+ # Instalación circunscrita a un proyecto específico (inyecta templates y .opencode/)
84
+ ancleto install --project /ruta/repo
85
+
86
+ # Instalación sin modificar la configuración MCP de tu IDE
87
+ ancleto install --no-mcp
88
+
89
+ # Actualizar a la última versión manteniendo tus personalizaciones
90
+ ancleto update
35
91
  ```
36
92
 
37
- El instalador configura por defecto los MCP locales **engram** (memoria persistente) y
38
- **caveman** (compresion de contexto) en `~/.config/opencode/opencode.json`, fusionandose
39
- con la config existente (no pisa nada). Si un binario no se encuentra en el sistema, ese
40
- MCP se omite con un warning.
93
+ *(El instalador configura por defecto los MCP locales **engram** y **caveman**. Si un binario no se encuentra en tu sistema, se omitirá con un warning sin romper el flujo).*
41
94
 
42
- ## Tiers de costo
95
+ ---
43
96
 
44
- En la primera configuración (`ancleto install`) se pregunta el nivel de gasto de los
45
- agents; también se elige con `--tier`:
97
+ ## ⚙️ Configuración y Tiers de Costo
98
+
99
+ Al ejecutar la CLI por primera vez, un **Wizard interactivo (ASCII animado)** te guiará para configurar el Agente (IDE) y tu nivel de gasto. También puedes pasarlos por flags:
46
100
 
47
101
  ```bash
48
- ancleto install --tier normal # modelos opencode-go balanceados (default)
49
- ancleto install --tier minimo # todo al modelo pagado mas economico viable
50
- ancleto install --tier gratis # solo modelos gratuitos (ej. opencode/big-pickle)
102
+ ancleto init --agent opencode --tier normal
51
103
  ```
52
104
 
53
- El nivel elegido queda guardado (`.ancleto-tier`) y `ancleto update` lo re-aplica sin
54
- volver a preguntar. Al llegar al tope mensual de la suscripcion, opencode cae
55
- automaticamente a los modelos gratuitos.
105
+ **Tiers Disponibles:**
106
+
107
+ * `normal`: Modelos balanceados sin restricciones agresivas de contexto (default).
108
+ * `minimo`: Enfoque en el modelo pago más económico viable, con alta compresión de contexto y exclusión de tests/docs en el discovery.
109
+ * `gratis`: Bloqueado a modelos gratuitos (ej. `opencode/big-pickle`), empaquetado ultra-agresivo y un límite estricto (budget) de tokens enviado al LLM.
110
+
111
+ La configuración se preserva en `.ancletorc` (raíz del proyecto) y `.ancleto-tier` (junto a la configuración instalada).
112
+
113
+ ---
56
114
 
57
- ## Requisitos
115
+ ## 💻 Uso Rápido
58
116
 
59
- - Node.js >= 24.0.0 (el motor de memoria v0.2.0 usa `node:sqlite`)
60
- - `openspec` CLI (`npm i -g @openspec/cli`) para el ciclo de changes
61
- - Repomix (usado por `ancleto discovery`, se resuelve via `npx` si no esta instalado)
117
+ El ciclo diario con Ancleto consiste en preparar el terreno técnico para tu Agente y luego usar los comandos del ciclo SDD dentro de tu IDE.
62
118
 
63
- ## Uso rápido
119
+ ### 1. Inicialización en un Repositorio
64
120
 
65
121
  ```bash
66
- ancleto init # prepara .ancletorc en el repo actual
67
- ancleto init --with-azure # lo mismo, con Azure habilitado
68
- ancleto discovery --check # estado del technical seed (READY/STALE/PARTIAL/MISSING)
69
- ancleto discovery # empaca el repo con Repomix y guarda estado
70
- # en opencode: /opsx-new, /opsx-propose, /opsx-ff para iniciar un change
122
+ cd tu-proyecto
123
+ ancleto init # Crea .ancletorc, plantillas AGENTS.md y PRODUCT.md
71
124
  ```
72
125
 
73
- ## Azure DevOps (opcional)
74
-
75
- Azure viene **desactivado por defecto**. Para activarlo en un proyecto:
126
+ ### 2. Descubrimiento Técnico de Contexto
76
127
 
77
128
  ```bash
78
- ancleto init --with-azure # escribe .ancletorc con azure.enabled: true
129
+ ancleto discovery --check # Verifica si el 'technical seed' requiere actualización (READY/STALE)
130
+ ancleto discovery # Genera .discovery-map.json y empaqueta el repo
79
131
  ```
80
132
 
81
- Luego completar la seccion `Azure DevOps` de `PRODUCT.md` (Organization URL, Team Project)
82
- e instalar el CLI: `az extension add --name azure-devops`. Con `azure.enabled: false` (o sin
83
- `.ancletorc`), los flujos tratan cada request como sin Work Item y `ancleto-pr` usa GitHub.
133
+ ### 3. Integración Diaria
134
+
135
+ Utiliza los comandos barra (`/`) expuestos en el chat de tu IDE (ej. Cursor, OpenCode):
136
+
137
+ * `/cleto-new` y `/cleto-propose`: Para planificar un nuevo feature.
138
+ * `/cleto-verify` y `/cleto-apply`: Para validar reglas, chequear tests y aplicar el código.
139
+ * `/cleto-archive`: Para consolidar el historial y registrar aprendizajes en la memoria de Ancleto.
140
+
141
+ ---
84
142
 
85
- ## Flujo de release
143
+ ## 📟 Referencia de Comandos CLI
86
144
 
87
- Publicación automática vía GitHub Actions (`publish.yml`):
145
+ Todos los comandos de mantenimiento que puedes necesitar en el día a día:
88
146
 
89
147
  ```bash
90
- # 1. Bump local (regla: todo commit de feature lleva su version bump)
91
- npm version patch --no-git-tag-version # o: minor, segun el cambio
92
- git add package.json package-lock.json
93
- git commit -m "chore: bump version to X.Y.Z"
94
- git push origin development
95
-
96
- # 2. Merge development -> main
97
- git checkout main
98
- git pull origin main
99
- git merge development
100
-
101
- # 3. Tag anotado y push
102
- git tag -a vX.Y.Z -m "vX.Y.Z - <resumen>"
103
- git push origin main
104
- git push origin vX.Y.Z
105
-
106
- # 4. GitHub Release
107
- # En GitHub: Releases -> Draft a new release -> elegir el tag vX.Y.Z -> Publish release
148
+ ancleto init [--agent <nombre>] [--tier <nivel>] [--with-azure]
149
+ # Configura el proyecto (interactivo en TTY)
150
+
151
+ ancleto install [--project <dir>] [--tier <nivel>] [--agent <nombre>] [--no-mcp]
152
+ # Instala agents, skills y templates
153
+
154
+ ancleto update # Re-instala la última versión sobre lo existente
155
+
156
+ ancleto upgrade # Re-aplica templates y skills respetando tus personalizaciones
157
+
158
+ ancleto check # Verifica la integridad de la instalación (0 faltantes, 0 huérfanos)
159
+
160
+ ancleto doctor # Diagnostica el entorno (Node, node:sqlite, opencode.json)
161
+
162
+ ancleto memory context [--scope <project|feature|task>] [--out <archivo>]
163
+ # Muestra el bloque de memoria activa del proyecto
164
+
165
+ ancleto memory doctor [--rebuild]
166
+ # Diagnostica la base de memoria (y reconstruye el índice con --rebuild)
167
+
168
+ ancleto discovery [--compress] [--include <glob>] [--ignore <glob>] [--token-budget <n>]
169
+ # Empaqueta el repo con Repomix según tu tier
108
170
  ```
109
171
 
110
- Al publicar la Release, el workflow `publish.yml` se dispara (`on.release.types: [published]`):
111
- corre `node --test` en `ubuntu-latest` (Node 24, checkout@v5/setup-node@v5) y publica a npm con
112
- `NODE_AUTH_TOKEN` (secret `NPM_TOKEN` del repo).
172
+ ---
173
+
174
+ ## 🧠 Motor de Memoria Persistente
175
+
176
+ Ancleto **no** usa bases de datos vectoriales pesadas. Implementa una solución elegante en **SQLite nativo** con búsqueda full-text (FTS5) y BM25.
177
+
178
+ El LLM tiene a su disposición 3 herramientas (tools):
179
+
180
+ * `searchMemory`: Recupera contexto de decisiones previas.
181
+ * `recordRule`: Guarda una regla arquitectónica estricta de manera jerárquica (Proyecto > Feature > Tarea).
182
+ * `recordDecision`: Inmortaliza el "por qué" de un cambio en el código.
183
+
184
+ El orquestador inyecta proactivamente los bloques `<ProjectMemoryRules>` y `<ProjectTopology>` (contexto desde el día cero, incluso sin reglas previas) en el System Prompt de tu Agente para que **nunca repita los mismos errores**.
185
+
186
+ ---
187
+
188
+ ## 🔄 Comandos del Ciclo SDD en tu IDE
113
189
 
114
- ## Estado
190
+ Una vez instalado, tu IDE expone el ciclo de vida completo como comandos barra (`/`):
191
+
192
+ | Comando | Para qué sirve |
193
+ |---|---|
194
+ | `/cleto-new` | Iniciar la especificación de un feature |
195
+ | `/cleto-propose` | Proponer el diseño técnico |
196
+ | `/cleto-ff` | Avanzar rápido con contexto recuperado |
197
+ | `/cleto-apply` | Aplicar el código del change |
198
+ | `/cleto-verify` | Verificar reglas, tests y memoria antes de cerrar |
199
+ | `/cleto-sync` | Sincronizar specs con el estado del repo |
200
+ | `/cleto-archive` | Archivar el change y registrar aprendizajes |
201
+ | `/cleto-continue`, `/cleto-explore`, `/cleto-onboard` | Retomar, explorar y orientarse en el proyecto |
202
+
203
+ ---
204
+
205
+ ## 🔗 Azure DevOps (Opcional)
206
+
207
+ Por defecto, los comandos asumen el uso de **GitHub** (`ancleto-pr`). Si tu equipo utiliza Azure DevOps:
208
+
209
+ ```bash
210
+ ancleto init --with-azure
211
+ ```
115
212
 
116
- - [x] Paquete y CLI de instalación
117
- - [x] Agents/skills/commands adaptados (sin referencias corporativas)
118
- - [x] Motor de descubrimiento (`ancleto discovery`, Repomix + `--check` por hash)
119
- - [x] Skills base: `triage-clarifier`, `openspec-recall`, `openspec-sync-specs`
120
- - [x] Motor de memoria core (v0.2.0): `.ancleto/memory.db`, 3 tools, supersesión atómica
213
+ Esto escribe `azure.enabled: true` en tu `.ancletorc`. Solo deberás completar la sección de Azure en el archivo `PRODUCT.md` e instalar su extensión (`az extension add --name azure-devops`).
@@ -28,7 +28,7 @@ Generate an OpenSpec change in:
28
28
 
29
29
  - `openspec/changes/{change-name}/`
30
30
 
31
- using the `openspec-workflow` skill and the conventions of:
31
+ using the `ancleto-workflow` skill and the conventions of:
32
32
 
33
33
  - `AGENTS.md`
34
34
 
@@ -36,7 +36,7 @@ using the `openspec-workflow` skill and the conventions of:
36
36
 
37
37
  1. Use the repository context received in the delegation, including its cited source paths and seed state; exploratory sweeping is prohibited. You MAY open a specific path that the received context cites when a detail needs confirmation.
38
38
  2. Read relevant source-of-truth specs in `openspec/specs/` when they exist
39
- 3. Load and follow the `openspec-workflow` skill
39
+ 3. Load and follow the `ancleto-workflow` skill
40
40
  4. Create a clear `change-name`
41
41
  5. Generate the minimum correct set of artifacts for the requested change:
42
42
  - `proposal.md`
@@ -4,7 +4,7 @@ description: Implement tasks from an OpenSpec change (Experimental)
4
4
 
5
5
  Implement tasks from an OpenSpec change.
6
6
 
7
- **Input**: Optionally specify a change name (e.g., `/opsx-apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
7
+ **Input**: Optionally specify a change name (e.g., `/cleto-apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
8
8
 
9
9
  **Steps**
10
10
 
@@ -16,7 +16,7 @@ Implement tasks from an OpenSpec change.
16
16
  - Auto-select if only one active change exists
17
17
  - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select
18
18
 
19
- Always announce: "Using change: <name>" and how to override (e.g., `/opsx-apply <other>`).
19
+ Always announce: "Using change: <name>" and how to override (e.g., `/cleto-apply <other>`).
20
20
 
21
21
  2. **Check status to understand the schema**
22
22
 
@@ -44,7 +44,7 @@ Implement tasks from an OpenSpec change.
44
44
 
45
45
  **Handle states:**
46
46
 
47
- - If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx-continue`
47
+ - If `state: "blocked"` (missing artifacts): show message, suggest using `/cleto-continue`
48
48
  - If `state: "all_done"`: congratulate, suggest archive
49
49
  - Otherwise: proceed to implementation
50
50
 
@@ -119,7 +119,7 @@ Working on task 4/7: <task description>
119
119
  - [x] Task 2
120
120
  ...
121
121
 
122
- All tasks complete! You can archive this change with `/opsx-archive`.
122
+ All tasks complete! You can archive this change with `/cleto-archive`.
123
123
  ```
124
124
 
125
125
  **Output On Pause (Issue Encountered)**
@@ -4,7 +4,7 @@ description: Archive a completed change in the experimental workflow
4
4
 
5
5
  Archive a completed change in the experimental workflow.
6
6
 
7
- **Input**: Optionally specify a change name after `/opsx-archive` (e.g., `/opsx-archive add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
7
+ **Input**: Optionally specify a change name after `/cleto-archive` (e.g., `/cleto-archive add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
8
8
 
9
9
  **Steps**
10
10
 
@@ -61,7 +61,7 @@ Archive a completed change in the experimental workflow.
61
61
  - If changes needed: "Sync now (recommended)", "Archive without syncing"
62
62
  - If already synced: "Archive now", "Sync anyway", "Cancel"
63
63
 
64
- If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). Proceed to archive regardless of choice.
64
+ If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke ancleto-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). Proceed to archive regardless of choice.
65
65
 
66
66
  5. **Perform the archive**
67
67
 
@@ -167,5 +167,5 @@ Target archive directory already exists.
167
167
  - Don't block archive on warnings - just inform and confirm
168
168
  - Preserve .openspec.yaml when moving to archive (it moves with the directory)
169
169
  - Show clear summary of what happened
170
- - If sync is requested, use the Skill tool to invoke `openspec-sync-specs` (agent-driven)
170
+ - If sync is requested, use the Skill tool to invoke `ancleto-sync-specs` (agent-driven)
171
171
  - If delta specs exist, always run the sync assessment and show the combined summary before prompting
@@ -124,7 +124,7 @@ This skill allows you to batch-archive changes, handling spec conflicts intellig
124
124
 
125
125
  a. **Sync specs** if delta specs exist:
126
126
 
127
- - Use the openspec-sync-specs approach (agent-driven intelligent merge)
127
+ - Use the ancleto-sync-specs approach (agent-driven intelligent merge)
128
128
  - For conflicts, apply in resolved order
129
129
  - Track if sync was done
130
130
 
@@ -4,7 +4,7 @@ description: Continue working on a change - create the next artifact (Experiment
4
4
 
5
5
  Continue working on a change by creating the next artifact.
6
6
 
7
- **Input**: Optionally specify a change name after `/opsx-continue` (e.g., `/opsx-continue add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
7
+ **Input**: Optionally specify a change name after `/cleto-continue` (e.g., `/cleto-continue add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
8
8
 
9
9
  **Steps**
10
10
 
@@ -53,7 +53,7 @@ Continue working on a change by creating the next artifact.
53
53
 
54
54
  - Congratulate the user
55
55
  - Show final status including the schema used
56
- - Suggest: "All artifacts created! You can now implement this change with `/opsx-apply` or archive it with `/opsx-archive`."
56
+ - Suggest: "All artifacts created! You can now implement this change with `/cleto-apply` or archive it with `/cleto-archive`."
57
57
  - STOP
58
58
 
59
59
  ***
@@ -102,7 +102,7 @@ After each invocation, show:
102
102
  - Schema workflow being used
103
103
  - Current progress (N/M complete)
104
104
  - What artifacts are now unlocked
105
- - Prompt: "Run `/opsx-continue` to create the next artifact"
105
+ - Prompt: "Run `/cleto-continue` to create the next artifact"
106
106
 
107
107
  **Artifact Creation Guidelines**
108
108
 
@@ -8,7 +8,7 @@ Enter explore mode. Think deeply. Visualize freely. Follow the conversation wher
8
8
 
9
9
  **This is a stance, not a workflow.** There are no fixed steps, no required sequence, no mandatory outputs. You're a thinking partner helping the user explore.
10
10
 
11
- **Input**: The argument after `/opsx-explore` is whatever the user wants to think about. Could be:
11
+ **Input**: The argument after `/cleto-explore` is whatever the user wants to think about. Could be:
12
12
 
13
13
  - A vague idea: "real-time collaboration"
14
14
  - A specific problem: "the auth system is getting unwieldy"
@@ -4,7 +4,7 @@ description: Create a change and generate all artifacts needed for implementatio
4
4
 
5
5
  Fast-forward through artifact creation - generate everything needed to start implementation.
6
6
 
7
- **Input**: The argument after `/opsx-ff` is the change name (kebab-case), OR a description of what the user wants to build.
7
+ **Input**: The argument after `/cleto-ff` is the change name (kebab-case), OR a description of what the user wants to build.
8
8
 
9
9
  **Steps**
10
10
 
@@ -108,7 +108,7 @@ After completing all artifacts, summarize:
108
108
  - Change name and location
109
109
  - List of artifacts created with brief descriptions
110
110
  - What's ready: "All artifacts created! Ready for implementation."
111
- - Prompt: "Run `/opsx-apply` to start implementing."
111
+ - Prompt: "Run `/cleto-apply` to start implementing."
112
112
 
113
113
  **Artifact Creation Guidelines**
114
114
 
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: Start a new change using the experimental artifact workflow (OPSX)
2
+ description: Start a new change using the experimental artifact workflow
3
3
  ---
4
4
 
5
5
  Start a new change using the experimental artifact-driven approach.
6
6
 
7
- **Input**: The argument after `/opsx-new` is the change name (kebab-case), OR a description of what the user wants to build.
7
+ **Input**: The argument after `/cleto-new` is the change name (kebab-case), OR a description of what the user wants to build.
8
8
 
9
9
  **Steps**
10
10
 
@@ -106,12 +106,12 @@ After completing the steps, summarize:
106
106
  - Schema/workflow being used and its artifact sequence
107
107
  - Current status (0/N artifacts complete)
108
108
  - The template for the first artifact
109
- - Prompt: "Ready to create the first artifact? Run `/opsx-continue` or just describe what this change is about and I'll draft it."
109
+ - Prompt: "Ready to create the first artifact? Run `/cleto-continue` or just describe what this change is about and I'll draft it."
110
110
 
111
111
  **Guardrails**
112
112
 
113
113
  - Do NOT create any artifacts yet - just show the instructions
114
114
  - Do NOT advance beyond showing the first artifact template
115
115
  - If the name is invalid (not kebab-case), ask for a valid name
116
- - If a change with that name already exists, suggest using `/opsx-continue` instead
116
+ - If a change with that name already exists, suggest using `/cleto-continue` instead
117
117
  - Pass --schema if using a non-default workflow
@@ -19,7 +19,7 @@ openspec --version 2>&1 || echo "CLI_NOT_INSTALLED"
19
19
 
20
20
  **If CLI not installed:**
21
21
 
22
- > OpenSpec CLI is not installed. Install it first, then come back to `/opsx-onboard`.
22
+ > OpenSpec CLI is not installed. Install it first, then come back to `/cleto-onboard`.
23
23
 
24
24
  Stop here if not installed.
25
25
 
@@ -149,7 +149,7 @@ Spend 1-2 minutes investigating the relevant code:
149
149
  │ [Optional: ASCII diagram if helpful] │
150
150
  └─────────────────────────────────────────┘
151
151
 
152
- Explore mode (`/opsx-explore`) is for this kind of thinking—investigating before implementing. You can use it anytime you need to think through a problem.
152
+ Explore mode (`/cleto-explore`) is for this kind of thinking—investigating before implementing. You can use it anytime you need to think through a problem.
153
153
 
154
154
  Now let's create a change to hold our work.
155
155
  ```
@@ -483,25 +483,25 @@ This same rhythm works for any size change—a small fix or a major feature.
483
483
 
484
484
  | Command | What it does |
485
485
  |---------|--------------|
486
- | `/opsx-propose` | Create a change and generate all artifacts |
487
- | `/opsx-explore` | Think through problems before/during work |
488
- | `/opsx-apply` | Implement tasks from a change |
489
- | `/opsx-archive` | Archive a completed change |
486
+ | `/cleto-propose` | Create a change and generate all artifacts |
487
+ | `/cleto-explore` | Think through problems before/during work |
488
+ | `/cleto-apply` | Implement tasks from a change |
489
+ | `/cleto-archive` | Archive a completed change |
490
490
 
491
491
  **Additional commands:**
492
492
 
493
493
  | Command | What it does |
494
494
  |---------|--------------|
495
- | `/opsx-new` | Start a new change, step through artifacts one at a time |
496
- | `/opsx-continue` | Continue working on an existing change |
497
- | `/opsx-ff` | Fast-forward: create all artifacts at once |
498
- | `/opsx-verify` | Verify implementation matches artifacts |
495
+ | `/cleto-new` | Start a new change, step through artifacts one at a time |
496
+ | `/cleto-continue` | Continue working on an existing change |
497
+ | `/cleto-ff` | Fast-forward: create all artifacts at once |
498
+ | `/cleto-verify` | Verify implementation matches artifacts |
499
499
 
500
500
  ---
501
501
 
502
502
  ## What's Next?
503
503
 
504
- Try `/opsx-propose` on something you actually want to build. You've got the rhythm now!
504
+ Try `/cleto-propose` on something you actually want to build. You've got the rhythm now!
505
505
  ```
506
506
 
507
507
  ---
@@ -516,8 +516,8 @@ If the user says they need to stop, want to pause, or seem disengaged:
516
516
  No problem! Your change is saved at `openspec/changes/<name>/`.
517
517
 
518
518
  To pick up where we left off later:
519
- - `/opsx-continue <name>` - Resume artifact creation
520
- - `/opsx-apply <name>` - Jump to implementation (if tasks exist)
519
+ - `/cleto-continue <name>` - Resume artifact creation
520
+ - `/cleto-apply <name>` - Jump to implementation (if tasks exist)
521
521
 
522
522
  The work won't be lost. Come back whenever you're ready.
523
523
  ```
@@ -535,21 +535,21 @@ If the user says they just want to see the commands or skip the tutorial:
535
535
 
536
536
  | Command | What it does |
537
537
  |---------|--------------|
538
- | `/opsx-propose <name>` | Create a change and generate all artifacts |
539
- | `/opsx-explore` | Think through problems (no code changes) |
540
- | `/opsx-apply <name>` | Implement tasks |
541
- | `/opsx-archive <name>` | Archive when done |
538
+ | `/cleto-propose <name>` | Create a change and generate all artifacts |
539
+ | `/cleto-explore` | Think through problems (no code changes) |
540
+ | `/cleto-apply <name>` | Implement tasks |
541
+ | `/cleto-archive <name>` | Archive when done |
542
542
 
543
543
  **Additional commands:**
544
544
 
545
545
  | Command | What it does |
546
546
  |---------|--------------|
547
- | `/opsx-new <name>` | Start a new change, step by step |
548
- | `/opsx-continue <name>` | Continue an existing change |
549
- | `/opsx-ff <name>` | Fast-forward: all artifacts at once |
550
- | `/opsx-verify <name>` | Verify implementation |
547
+ | `/cleto-new <name>` | Start a new change, step by step |
548
+ | `/cleto-continue <name>` | Continue an existing change |
549
+ | `/cleto-ff <name>` | Fast-forward: all artifacts at once |
550
+ | `/cleto-verify <name>` | Verify implementation |
551
551
 
552
- Try `/opsx-propose` to start your first change.
552
+ Try `/cleto-propose` to start your first change.
553
553
  ```
554
554
 
555
555
  Exit gracefully.
@@ -10,11 +10,11 @@ I'll create a change with artifacts:
10
10
  - design.md (how)
11
11
  - tasks.md (implementation steps)
12
12
 
13
- When ready to implement, run /opsx-apply
13
+ When ready to implement, run /cleto-apply
14
14
 
15
15
  ---
16
16
 
17
- **Input**: The argument after `/opsx-propose` is the change name (kebab-case), OR a description of what the user wants to build.
17
+ **Input**: The argument after `/cleto-propose` is the change name (kebab-case), OR a description of what the user wants to build.
18
18
 
19
19
  **Steps**
20
20
 
@@ -118,7 +118,7 @@ After completing all artifacts, summarize:
118
118
  - Change name and location
119
119
  - List of artifacts created with brief descriptions
120
120
  - What's ready: "All artifacts created! Ready for implementation."
121
- - Prompt: "Run `/opsx-apply` to start implementing."
121
+ - Prompt: "Run `/cleto-apply` to start implementing."
122
122
 
123
123
  **Artifact Creation Guidelines**
124
124
 
@@ -4,13 +4,13 @@ description: Recuperar memoria episódica del proyecto (.ancleto/memory.db) sobr
4
4
 
5
5
  Recuperar de la memoria compartida del repositorio lo que se aprendió en changes anteriores sobre un tema.
6
6
 
7
- Este comando es la invocación **a mano** de la memoria. La invocación automática vive dentro de `/opsx-new`, `/opsx-propose` y `/opsx-ff`, que ejecutan el mismo paso al iniciar un change. El contrato completo está en la skill `openspec-recall`.
7
+ Este comando es la invocación **a mano** de la memoria. La invocación automática vive dentro de `/cleto-new`, `/cleto-propose` y `/cleto-ff`, que ejecutan el mismo paso al iniciar un change. El contrato completo está en la skill `ancleto-recall`.
8
8
 
9
- **Input**: el argumento después de `/opsx-recall` es el tema a consultar. Por ejemplo:
9
+ **Input**: el argumento después de `/cleto-recall` es el tema a consultar. Por ejemplo:
10
10
 
11
- - `/opsx-recall autenticación JWT en LiteLLM`
12
- - `/opsx-recall por qué elegimos pgvector`
13
- - `/opsx-recall` (sin argumento — ver paso 1)
11
+ - `/cleto-recall autenticación JWT en LiteLLM`
12
+ - `/cleto-recall por qué elegimos pgvector`
13
+ - `/cleto-recall` (sin argumento — ver paso 1)
14
14
 
15
15
  **Steps**
16
16
 
@@ -53,5 +53,5 @@ Este comando es la invocación **a mano** de la memoria. La invocación automát
53
53
 
54
54
  **Referencia**
55
55
 
56
- - Contrato completo: skill `openspec-recall`
56
+ - Contrato completo: skill `ancleto-recall`
57
57
  - Contrato de lectura y modelo de scope: `AGENTS.md` (Memoria Persistente)
@@ -6,7 +6,7 @@ Sync delta specs from a change to main specs.
6
6
 
7
7
  This is an **agent-driven** operation - you will read delta specs and directly edit main specs to apply the changes. This allows intelligent merging (e.g., adding a scenario without copying the entire requirement).
8
8
 
9
- **Input**: Optionally specify a change name after `/opsx-sync` (e.g., `/opsx-sync add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
9
+ **Input**: Optionally specify a change name after `/cleto-sync` (e.g., `/cleto-sync add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
10
10
 
11
11
  **Steps**
12
12
 
@@ -4,7 +4,7 @@ description: Verify implementation matches change artifacts before archiving
4
4
 
5
5
  Verify that an implementation matches the change artifacts (specs, tasks, design).
6
6
 
7
- **Input**: Optionally specify a change name after `/opsx-verify` (e.g., `/opsx-verify add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
7
+ **Input**: Optionally specify a change name after `/cleto-verify` (e.g., `/cleto-verify add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
8
8
 
9
9
  **Steps**
10
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ancleto/spec",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "description": "Orquestador SDD liviano con subagentes optimizados para costo/tokens",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-apply
2
+ name: ancleto-apply
3
3
  description: Implement tasks from a change step by step, tracking progress in tasks.md. Use when artifacts are ready and implementation should start. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -78,7 +78,7 @@ For each pending task (`- [ ]`):
78
78
  **Change:** <change-name>
79
79
  **Progress:** N/N tasks complete ✓
80
80
 
81
- All tasks complete! You can archive this change with `openspec-archive`.
81
+ All tasks complete! You can archive this change with `ancleto-archive`.
82
82
  ```
83
83
 
84
84
  **On pause:**
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-archive
2
+ name: ancleto-archive
3
3
  description: Archive a completed change, syncing delta specs first when needed. Use when implementation and verification are done. Captures lessons into persistent memory. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-bulk-archive
2
+ name: ancleto-bulk-archive
3
3
  description: Archive multiple completed changes in one batch, resolving spec conflicts by checking the codebase. Use when several changes are done and should be archived together. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-continue
2
+ name: ancleto-continue
3
3
  description: Continue working on an existing change by creating its next missing artifact. Use to resume artifact creation one step at a time. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -29,7 +29,7 @@ Read `openspec/changes/<name>/` and check for artifact files in this fixed depen
29
29
 
30
30
  The first item in this order that is absent (or, for `specs/`, contains no `spec.md`) is the next artifact to create.
31
31
 
32
- - **If all four are present**: congratulate the user, show the status, and suggest "All artifacts created! You can now implement this change with `openspec-apply` or archive it with `openspec-archive`." STOP.
32
+ - **If all four are present**: congratulate the user, show the status, and suggest "All artifacts created! You can now implement this change with `ancleto-apply` or archive it with `ancleto-archive`." STOP.
33
33
  - **If the change directory does not exist**: report it and stop.
34
34
 
35
35
  ### 2. Load context files
@@ -38,7 +38,7 @@ Read every artifact that IS present — they constrain what you write next. If a
38
38
 
39
39
  ### 3. Create exactly ONE artifact
40
40
 
41
- Draft the missing artifact using the same templates as `openspec-propose`:
41
+ Draft the missing artifact using the same templates as `ancleto-propose`:
42
42
 
43
43
  - **proposal.md** (first artifact): problem statement, proposed change, scope, risks. If Work Item context is available, use its title/description as the problem statement, acceptance criteria as the requirements basis, and include a `## Related Work Item` section: `**#{id}** — {title} ({type}) · Project: {project}`.
44
44
  - **specs/\<capability\>/spec.md**: one spec file per capability the change touches, with `## ADDED Requirements` / `#### Scenario:` blocks in WHEN/THEN form.
@@ -54,7 +54,7 @@ Report:
54
54
  - Which artifact was created.
55
55
  - Current progress (N/4 complete).
56
56
  - What is unlocked next.
57
- - Prompt: "Run `openspec-continue` to create the next artifact."
57
+ - Prompt: "Run `ancleto-continue` to create the next artifact."
58
58
 
59
59
  Create ONE artifact per invocation, then STOP.
60
60
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-explore
2
+ name: ancleto-explore
3
3
  description: Enter explore mode — think through ideas, investigate problems, and clarify requirements without implementing. Consults prior team memory first. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-ff
2
+ name: ancleto-ff
3
3
  description: Fast-forward artifact creation — create a change and generate everything needed for implementation in one go. Use when the path is clear and no step-by-step guidance is wanted. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -57,7 +57,7 @@ Summarize:
57
57
  - Change name and location
58
58
  - List of artifacts created with brief descriptions
59
59
  - What's ready: "All artifacts created! Ready for implementation."
60
- - Prompt: "Run `openspec-apply` to start implementing."
60
+ - Prompt: "Run `ancleto-apply` to start implementing."
61
61
 
62
62
  ## Artifact Creation Guidelines
63
63
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-new
2
+ name: ancleto-new
3
3
  description: Start a new spec-driven change without external binaries. Use when the user wants to begin structured work on a feature, fix, or modification. Creates the change directory, recalls prior memory, and shows the first artifact template.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -84,7 +84,7 @@ After completing the steps, summarize:
84
84
  - Change name and location
85
85
  - Artifact sequence and current status (0/4 artifacts complete)
86
86
  - The template for the first artifact
87
- - Prompt: "Ready to create the first artifact? Run `openspec-propose` or just describe what this change is about and I'll draft it."
87
+ - Prompt: "Ready to create the first artifact? Run `ancleto-propose` or just describe what this change is about and I'll draft it."
88
88
 
89
89
  ## Guardrails
90
90
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-onboard
2
+ name: ancleto-onboard
3
3
  description: Guided onboarding — walk through a complete spec-driven cycle (idea to archive) on a real small task, with narration. Use for a first-time user of the workflow. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -119,16 +119,16 @@ Congratulate, recap the cycle (Explore → New → Proposal → Specs → Design
119
119
 
120
120
  | Command | What it does |
121
121
  |---------|--------------|
122
- | `openspec-propose` | Create a change and generate all artifacts |
123
- | `openspec-explore` | Think through problems before/during work |
124
- | `openspec-apply` | Implement tasks from a change |
125
- | `openspec-archive` | Archive a completed change |
126
- | `openspec-new` | Start a new change, step by step |
127
- | `openspec-continue` | Continue an existing change |
128
- | `openspec-ff` | Fast-forward: all artifacts at once |
129
- | `openspec-verify` | Verify implementation |
130
-
131
- **Graceful exits:** if the user wants to stop mid-way, point at the saved change directory and the resume skills (`openspec-continue`, `openspec-apply`). If they only want the reference, show the table and exit.
122
+ | `ancleto-propose` | Create a change and generate all artifacts |
123
+ | `ancleto-explore` | Think through problems before/during work |
124
+ | `ancleto-apply` | Implement tasks from a change |
125
+ | `ancleto-archive` | Archive a completed change |
126
+ | `ancleto-new` | Start a new change, step by step |
127
+ | `ancleto-continue` | Continue an existing change |
128
+ | `ancleto-ff` | Fast-forward: all artifacts at once |
129
+ | `ancleto-verify` | Verify implementation |
130
+
131
+ **Graceful exits:** if the user wants to stop mid-way, point at the saved change directory and the resume skills (`ancleto-continue`, `ancleto-apply`). If they only want the reference, show the table and exit.
132
132
 
133
133
  ## Guardrails
134
134
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: openspec-propose
3
- description: Draft all artifacts for a change in one step (proposal, design, tasks, delta specs). Use after openspec-new, or directly with a change name or description. No external binaries required.
2
+ name: ancleto-propose
3
+ description: Draft all artifacts for a change in one step (proposal, design, tasks, delta specs). Use after ancleto-new, or directly with a change name or description. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
6
6
  metadata:
@@ -18,7 +18,7 @@ Create a change and generate all its artifacts in one step, writing files direct
18
18
 
19
19
  ### 1. Resolve context and derive the change name
20
20
 
21
- Same as `openspec-new` step 1: use in-session Work Item context if available (record id/title/project for traceability, skip entirely when Azure DevOps is not configured), otherwise ask what the user wants to build and derive a kebab-case name.
21
+ Same as `ancleto-new` step 1: use in-session Work Item context if available (record id/title/project for traceability, skip entirely when Azure DevOps is not configured), otherwise ask what the user wants to build and derive a kebab-case name.
22
22
 
23
23
  **IMPORTANT**: Do NOT proceed without a change name. If a change with that name already exists, ask whether to continue it or create a new one.
24
24
 
@@ -122,7 +122,7 @@ After completing all artifacts, summarize:
122
122
  - Change name and location
123
123
  - List of artifacts created with brief descriptions
124
124
  - What's ready: "All artifacts created! Ready for implementation."
125
- - Prompt: "Run `openspec-apply` to start implementing."
125
+ - Prompt: "Run `ancleto-apply` to start implementing."
126
126
 
127
127
  ## Artifact Creation Guidelines
128
128
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-recall
2
+ name: ancleto-recall
3
3
  description: Recupera memoria episódica del proyecto (.ancleto/memory.db) para precargar contexto de changes anteriores. Se invoca al iniciar un change, antes de generar artifacts. Opcional y no bloqueante.
4
4
  license: MIT
5
5
  compatibility: Requires the memory engine configured in the repo. Optional — degrades silently when unavailable.
@@ -10,14 +10,14 @@ metadata:
10
10
 
11
11
  Retrieve shared episodic memory for this repository and inject it as starting context for a change.
12
12
 
13
- This skill is the **single source of truth** for the recall contract. The change-creation flows (`opsx-new`, `opsx-propose`, `opsx-ff`) carry this step inline; those inline blocks must stay in sync with this file.
13
+ This skill is the **single source of truth** for the recall contract. The change-creation flows (`cleto-new`, `cleto-propose`, `cleto-ff`) carry this step inline; those inline blocks must stay in sync with this file.
14
14
 
15
15
  **Two invocation paths, one contract:**
16
16
 
17
17
  | Path | Trigger | On failure or empty result |
18
18
  | --- | --- | --- |
19
19
  | **Automatic** | Inside the change-creation flows, before generating artifacts | Silent — omit the section, never block |
20
- | **Manual** | The `/opsx-recall` command, invoked by the user | **Report it** — the user asked explicitly |
20
+ | **Manual** | The `/cleto-recall` command, invoked by the user | **Report it** — the user asked explicitly |
21
21
 
22
22
  Steps 1 to 3 are identical for both. Only the failure behaviour differs, and it differs for a reason: silence is correct when nobody asked, and wrong when somebody did.
23
23
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-sync-specs
2
+ name: ancleto-sync-specs
3
3
  description: Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.
4
4
  license: MIT
5
5
  compatibility: Requires openspec CLI.
@@ -431,7 +431,7 @@ build: sí/no | lint: sí/no | test: sí/no | test:ci: sí/no | typecheck: sí/n
431
431
  - tasks.md ✅ ({N} tareas en 6 fases)
432
432
  - design.md ✅
433
433
 
434
- Para implementar: /opsx-apply {CHANGE_NAME}
434
+ Para implementar: /cleto-apply {CHANGE_NAME}
435
435
  ```
436
436
 
437
437
  ---
@@ -439,7 +439,7 @@ Para implementar: /opsx-apply {CHANGE_NAME}
439
439
  ## Guardrails
440
440
 
441
441
  Este skill solo genera artefactos OpenSpec — no modifica ningún archivo del repo.
442
- Todo cambio real lo ejecuta el desarrollador con `/opsx-apply`, que tiene su propio
442
+ Todo cambio real lo ejecuta el desarrollador con `/cleto-apply`, que tiene su propio
443
443
  ciclo de revisión. Modificar el repo desde este skill saltearía ese control.
444
444
 
445
445
  - No tocar archivos fuera de `openspec/changes/{CHANGE_NAME}/`
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-verify
2
+ name: ancleto-verify
3
3
  description: Verify an implementation against its change artifacts (completeness, correctness, coherence). Use before archiving a change. Captures architectural findings into persistent memory. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: openspec-workflow
2
+ name: ancleto-workflow
3
3
  description: Router for the spec-driven lifecycle — know which stage you're in and which skill runs next. Use when unsure where a request fits, or to explain the full cycle. No external binaries required.
4
4
  license: MIT
5
5
  compatibility: No external binaries required. Works with any agent runtime.
@@ -28,28 +28,28 @@ explore → new/propose/ff → continue* → apply → verify → archive
28
28
 
29
29
  | User wants to… | Run |
30
30
  |---|---|
31
- | Think through an idea or problem, no commitment yet | `openspec-explore` |
32
- | Start structured work on something new | `openspec-new` (step by step) or `openspec-propose` (all artifacts at once) |
33
- | Skip straight to a full draft when the path is clear | `openspec-ff` |
34
- | Resume a change with missing artifacts | `openspec-continue` (repeat until complete) |
35
- | Implement tasks from ready artifacts | `openspec-apply` |
36
- | Check implementation against artifacts before closing | `openspec-verify` |
37
- | Close one finished change (syncing its specs) | `openspec-archive` |
38
- | Close several finished changes at once | `openspec-bulk-archive` |
39
- | Learn the whole cycle hands-on | `openspec-onboard` |
31
+ | Think through an idea or problem, no commitment yet | `ancleto-explore` |
32
+ | Start structured work on something new | `ancleto-new` (step by step) or `ancleto-propose` (all artifacts at once) |
33
+ | Skip straight to a full draft when the path is clear | `ancleto-ff` |
34
+ | Resume a change with missing artifacts | `ancleto-continue` (repeat until complete) |
35
+ | Implement tasks from ready artifacts | `ancleto-apply` |
36
+ | Check implementation against artifacts before closing | `ancleto-verify` |
37
+ | Close one finished change (syncing its specs) | `ancleto-archive` |
38
+ | Close several finished changes at once | `ancleto-bulk-archive` |
39
+ | Learn the whole cycle hands-on | `ancleto-onboard` |
40
40
  | Recall what the team learned about a topic | `searchMemory` directly (or the recall contract) |
41
41
 
42
42
  **By change state** (read `openspec/changes/<name>/`):
43
43
 
44
44
  | State | Run |
45
45
  |---|---|
46
- | Directory missing → nothing to continue | `openspec-new` (or propose/ff) |
47
- | `proposal.md` missing | `openspec-continue` |
48
- | `specs/` or `design.md` missing | `openspec-continue` |
49
- | `tasks.md` missing | `openspec-continue` |
50
- | All artifacts present, tasks unchecked | `openspec-apply` |
51
- | All tasks checked | `openspec-verify`, then `openspec-archive` |
52
- | Several changes complete | `openspec-bulk-archive` |
46
+ | Directory missing → nothing to continue | `ancleto-new` (or propose/ff) |
47
+ | `proposal.md` missing | `ancleto-continue` |
48
+ | `specs/` or `design.md` missing | `ancleto-continue` |
49
+ | `tasks.md` missing | `ancleto-continue` |
50
+ | All artifacts present, tasks unchecked | `ancleto-apply` |
51
+ | All tasks checked | `ancleto-verify`, then `ancleto-archive` |
52
+ | Several changes complete | `ancleto-bulk-archive` |
53
53
 
54
54
  ## Handoff Contract
55
55
 
@@ -96,6 +96,6 @@ If option 4 happened and the answer still does not remove the main ambiguity, cl
96
96
  ## What not to do
97
97
 
98
98
  - do not create specs, design, tasks, or proposals
99
- - do not trigger opsx or any workflow handoff
99
+ - do not trigger cleto or any workflow handoff
100
100
  - do not ask more than one clarification question
101
101
  - do not replace the orchestrator's final responsibility for classification
package/src/cli/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import { existsSync } from 'node:fs'
2
3
  import { cp, mkdir, access, writeFile, readFile, readdir } from 'node:fs/promises'
3
4
  import { spawnSync } from 'node:child_process'
4
5
  import { createHash } from 'node:crypto'
@@ -86,17 +87,21 @@ function globalConfigDir() {
86
87
  : join(homedir(), '.config', 'opencode')
87
88
  }
88
89
 
90
+ function binName(base) {
91
+ return process.platform === 'win32' ? `${base}.exe` : base
92
+ }
93
+
89
94
  function resolveBin(name, fallbacks = []) {
90
95
  const probe = process.platform === 'win32' ? 'where' : 'which'
91
96
  const r = spawnSync(probe, [name], { encoding: 'utf8' })
92
97
  if (r.status === 0 && r.stdout) {
93
- const first = r.stdout.split(/\r?\n/)
94
- .map((s) => s.trim())
95
- .find((s) => s && !/^informacion:/i.test(s))
96
- if (first) return first
98
+ for (const line of r.stdout.split(/\r?\n/)) {
99
+ const candidate = line.trim()
100
+ if (candidate && !/^informacion:/i.test(candidate)) return candidate
101
+ }
97
102
  }
98
103
  for (const fb of fallbacks) {
99
- if (fb) return fb
104
+ if (fb && existsSync(fb)) return fb
100
105
  }
101
106
  return null
102
107
  }
@@ -104,16 +109,21 @@ function resolveBin(name, fallbacks = []) {
104
109
  function buildDefaultMcp() {
105
110
  const mcp = {}
106
111
 
107
- const engramBin = resolveBin('engram', [join(homedir(), 'go', 'bin', 'engram.exe')])
112
+ const engramFallbacks = [
113
+ join(homedir(), 'go', 'bin', binName('engram')),
114
+ join(homedir(), '.local', 'bin', binName('engram'))
115
+ ]
116
+ const engramBin = resolveBin('engram', engramFallbacks)
108
117
  if (engramBin) {
109
118
  mcp.engram = { type: 'local', enabled: true, command: [engramBin, 'mcp', '--tools=agent'] }
110
119
  } else {
111
120
  console.warn('ancleto: no se encontro engram (memoria) en PATH; se omitio su MCP')
112
121
  }
113
122
 
114
- const cavemanBin = resolveBin('caveman-mcp', [
115
- join(homedir(), '.caveman', 'bin', 'caveman-mcp.exe')
116
- ])
123
+ const cavemanFallbacks = [
124
+ join(homedir(), '.caveman', 'bin', binName('caveman-mcp'))
125
+ ]
126
+ const cavemanBin = resolveBin('caveman-mcp', cavemanFallbacks)
117
127
  if (cavemanBin) {
118
128
  mcp.caveman = { type: 'local', enabled: true, command: [cavemanBin] }
119
129
  } else {
@@ -280,13 +290,13 @@ const AGENT_SKILLS_DIR = {
280
290
  roo: '.roo/skills'
281
291
  }
282
292
 
283
- const OPENSPEC_SKILLS = ['openspec-new', 'openspec-propose', 'openspec-apply', 'openspec-verify', 'openspec-archive', 'openspec-bulk-archive', 'openspec-continue', 'openspec-explore', 'openspec-ff', 'openspec-onboard', 'openspec-workflow']
293
+ const ANCLETO_SKILLS = ['ancleto-new', 'ancleto-propose', 'ancleto-apply', 'ancleto-verify', 'ancleto-archive', 'ancleto-bulk-archive', 'ancleto-continue', 'ancleto-explore', 'ancleto-ff', 'ancleto-onboard', 'ancleto-workflow']
284
294
 
285
295
  async function installAgentSkills(projectDir, agent) {
286
296
  const dir = AGENT_SKILLS_DIR[agent] || AGENT_SKILLS_DIR.opencode
287
297
  const dest = join(projectDir, dir)
288
298
  await mkdir(dest, { recursive: true })
289
- for (const name of OPENSPEC_SKILLS) {
299
+ for (const name of ANCLETO_SKILLS) {
290
300
  const src = join(ROOT, 'skills', name)
291
301
  if (!(await exists(src))) {
292
302
  console.warn(`ancleto: skill no encontrada en el paquete: ${name}`)
@@ -450,7 +460,7 @@ async function upgradeCmd(args) {
450
460
  })
451
461
  console.log(`ancleto: upgrade completo (v${manifest.version}, agente: ${agent})`)
452
462
  console.log(' ✔ templates re-aplicados (bloques LOCKED actualizados, EXTENSIBLE intacto)')
453
- console.log(` ✔ skills actualizadas en ${agentSkillsDir} (${OPENSPEC_SKILLS.length} skills)`)
463
+ console.log(` ✔ skills actualizadas en ${agentSkillsDir} (${ANCLETO_SKILLS.length} skills)`)
454
464
  console.log(' ✔ manifiesto .ancletorc actualizado')
455
465
  }
456
466