nexakit 0.1.0 → 0.2.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.
Files changed (113) hide show
  1. package/.claude-plugin/marketplace.json +18 -1
  2. package/README.md +40 -30
  3. package/assets/brand/README.md +0 -2
  4. package/assets/runtime/package-lock.json +2 -2
  5. package/bin/agent-task.js +12 -10
  6. package/bin/agent-toolkit-gemini.js +11 -9
  7. package/bin/agent-toolkit-inbox.js +12 -10
  8. package/bin/agent-toolkit-mcp.js +14 -8
  9. package/bin/agent-toolkit.js +12 -9
  10. package/bin/nexakit.js +12 -9
  11. package/bin/project-memory-mcp.js +12 -9
  12. package/bin/project-memory.js +5 -3
  13. package/{skills/depurar → catalogs/skills/vercel-composition-patterns}/LICENSE.txt +6 -6
  14. package/catalogs/skills/vercel-react-best-practices/LICENSE.txt +27 -0
  15. package/catalogs/skills.json +70 -35
  16. package/docs/skills/evidencias/2026-10-28-recomendador-preparacion.md +1 -1
  17. package/package.json +5 -3
  18. package/plugins/nexakit-modelo/.claude-plugin/plugin.json +1 -0
  19. package/plugins/nexakit-modelo/hooks/hooks.json +1 -0
  20. package/plugins/nexakit-modelo/hooks/register.js +48 -0
  21. package/plugins/nexakit-modelo/hooks/status.js +8 -0
  22. package/plugins/nexakit-modelo/tests/register.test.ts +21 -0
  23. package/plugins/nexakit-panel/.claude-plugin/plugin.json +1 -0
  24. package/plugins/nexakit-panel/README.md +20 -0
  25. package/plugins/nexakit-panel/hooks/hooks.json +1 -0
  26. package/plugins/nexakit-panel/hooks/lienzo.js +382 -0
  27. package/plugins/nexakit-panel/hooks/panel.js +279 -0
  28. package/plugins/nexakit-panel/hooks/register.tsx +248 -0
  29. package/plugins/nexakit-panel/tests/lienzo.test.ts +142 -0
  30. package/plugins/nexakit-panel/tests/panel.test.ts +240 -0
  31. package/plugins/nexakit-panel/tests/register.test.ts +167 -0
  32. package/plugins/nexakit-panel/types/index.d.ts +41 -0
  33. package/plugins/nexakit-sesion/.claude-plugin/plugin.json +1 -0
  34. package/plugins/nexakit-sesion/README.md +12 -0
  35. package/plugins/nexakit-sesion/hooks/aviso.js +38 -0
  36. package/plugins/nexakit-sesion/hooks/hooks.json +1 -0
  37. package/plugins/nexakit-sesion/hooks/register.js +28 -0
  38. package/plugins/nexakit-sesion/tests/register.test.ts +96 -0
  39. package/schemas/skill-catalog.schema.json +9 -2
  40. package/skills/cerrar-memoria/SKILL.md +6 -2
  41. package/skills/cerrar-memoria/references/cierre.md +5 -1
  42. package/skills/elegir-modelo/SKILL.md +68 -0
  43. package/skills/elegir-modelo/modelos.mjs +108 -0
  44. package/skills/gemini/SKILL.md +1 -1
  45. package/skills/project-handoff/SKILL.md +39 -12
  46. package/skills/project-handoff/references/handoff-template.md +24 -17
  47. package/skills/quality-gate/SKILL.md +6 -12
  48. package/skills/revisar/SKILL.md +6 -16
  49. package/skills/{desarrollo-con-pruebas/LICENSE.txt → revisar-skill/LICENSE-find-skills.txt} +5 -5
  50. package/skills/revisar-skill/SKILL.md +94 -0
  51. package/skills/revision-cruzada/SKILL.md +53 -475
  52. package/skills/web-design-guidelines/AGENTS.md +156 -0
  53. package/skills/{spec-driven-development → web-design-guidelines}/LICENSE.txt +1 -6
  54. package/skills/web-design-guidelines/SKILL.md +20 -30
  55. package/src/agent-models.js +53 -13
  56. package/src/brand.js +117 -0
  57. package/src/cli-executable.js +5 -3
  58. package/src/cli.js +16 -9
  59. package/src/connect.js +56 -4
  60. package/src/init.js +9 -1
  61. package/src/install-lock.js +127 -0
  62. package/src/install-registry.js +61 -0
  63. package/src/legacy-repair.js +71 -0
  64. package/src/link-states.js +172 -0
  65. package/src/memory-locator.js +118 -0
  66. package/src/missing-dependencies.js +21 -0
  67. package/src/model-command.js +147 -0
  68. package/src/panel-cli.js +182 -0
  69. package/src/project-root.js +41 -0
  70. package/src/project-signals.js +339 -0
  71. package/src/recommend-report.js +77 -0
  72. package/src/review-instructions.js +211 -0
  73. package/src/review-policy.js +35 -0
  74. package/src/revision-adapters.js +157 -0
  75. package/src/revision-context.js +86 -0
  76. package/src/revision-isolation.js +222 -0
  77. package/src/revision-process.js +103 -0
  78. package/src/revision-provenance.js +89 -0
  79. package/src/revision-snapshot.js +120 -0
  80. package/src/revision.js +242 -0
  81. package/src/setup-apply.js +231 -0
  82. package/src/setup-plan.js +231 -0
  83. package/src/setup-state.js +277 -0
  84. package/src/setup-tui.js +555 -0
  85. package/src/skill-catalog-add.js +91 -0
  86. package/src/skill-catalog-audit.js +26 -27
  87. package/src/skill-files.js +39 -0
  88. package/src/skill-recommendations.js +321 -208
  89. package/src/skill-scan-report.js +14 -0
  90. package/src/skill-scan.js +178 -0
  91. package/src/stable-command.js +53 -0
  92. package/src/stable-install.js +222 -0
  93. package/src/superpowers.js +133 -0
  94. package/src/sync-apply.js +8 -5
  95. package/src/sync-files.js +2 -1
  96. package/src/terminal-text.js +68 -0
  97. package/src/toolkit-cli.js +397 -70
  98. package/src/toolkit-commands-guide.js +53 -39
  99. package/src/toolkit-setup.js +507 -110
  100. package/assets/brand/agent-toolkit-mark-v1.png +0 -0
  101. package/skills/depurar/SKILL.md +0 -69
  102. package/skills/depurar/agents/openai.yaml +0 -7
  103. package/skills/depurar/references/tecnicas-de-diagnostico.md +0 -37
  104. package/skills/desarrollo-con-pruebas/SKILL.md +0 -55
  105. package/skills/desarrollo-con-pruebas/agents/openai.yaml +0 -7
  106. package/skills/desarrollo-con-pruebas/references/buenas-pruebas.md +0 -33
  107. package/skills/estado/SKILL.md +0 -41
  108. package/skills/programar/SKILL.md +0 -19
  109. package/skills/spec-driven-development/SKILL.md +0 -48
  110. package/skills/spec-driven-development/agents/openai.yaml +0 -7
  111. package/skills/spec-driven-development/references/spec-template.md +0 -55
  112. package/skills/spec-driven-development/references/workflow.md +0 -70
  113. package/src/toolkit-tui.js +0 -961
@@ -1,11 +1,28 @@
1
1
  {
2
2
  "name": "agent-toolkit",
3
- "owner": { "name": "Juan Jaller" },
3
+ "owner": {
4
+ "name": "Juan Jaller"
5
+ },
4
6
  "plugins": [
5
7
  {
6
8
  "name": "niveles",
7
9
  "source": "./plugins/niveles",
8
10
  "description": "Agentes por nivel (ligero, normal, exigente, alto) con modelo y esfuerzo fijos para delegar sin cambiar /model."
11
+ },
12
+ {
13
+ "name": "nexakit-modelo",
14
+ "source": "./plugins/nexakit-modelo",
15
+ "description": "Muestra modelo y esfuerzo observados frente a la recomendación sin cambiarlos."
16
+ },
17
+ {
18
+ "name": "nexakit-panel",
19
+ "source": "./plugins/nexakit-panel",
20
+ "description": "Panel en vivo de la orquestación: líder, asesor, subagentes, uso y límites."
21
+ },
22
+ {
23
+ "name": "nexakit-sesion",
24
+ "source": "./plugins/nexakit-sesion",
25
+ "description": "Contexto y límites en la línea de estado, con aviso para abrir sesión nueva."
9
26
  }
10
27
  ]
11
28
  }
package/README.md CHANGED
@@ -1,67 +1,77 @@
1
1
  <div align="center">
2
2
 
3
- <img src="assets/brand/nexakit-readme-hero.png" alt="NexaKit: un comando para elegir skills y preparar tu proyecto con Claude Code y Codex" width="100%">
3
+ <img src="assets/brand/nexakit-readme-hero.png" alt="NexaKit: un comando para preparar tus skills, tu memoria y tus agentes con Claude Code, Codex y Antigravity" width="100%">
4
4
 
5
5
  # NexaKit
6
6
 
7
- **Tus skills. Tus agentes. Un mismo flujo.**
7
+ **Tus skills. Tu memoria. Tus IA trabajando juntas.**
8
8
 
9
- [Guía paso a paso](docs/guias/guia-de-comandos.html) · [Documentación](docs/README.md) · [Catálogo](catalogs/skills.json)
9
+ [Guía interactiva en 3 pasos](docs/guias/guia-de-comandos.html) · [Documentación](docs/README.md) · [Catálogo](catalogs/skills.json)
10
10
 
11
11
  </div>
12
12
 
13
- Detecta las tecnologías de tu proyecto, encuentra skills compatibles y revisa cada cambio antes de instalar. Para **Claude Code y Codex**.
13
+ Detecta las tecnologías de tu proyecto (en manifiestos, subcarpetas y `README.md`), sugiere skills compatibles, crea o conecta la memoria del proyecto en Obsidian y deja listas tus IA —**Claude Code, Codex y Antigravity CLI**— con una sola confirmación.
14
14
 
15
15
  ```bash
16
16
  npx nexakit
17
17
  ```
18
18
 
19
- ## Cómo funciona
19
+ ## Inicio en tres pasos
20
20
 
21
- 1. **Revisa las skills para tu proyecto.** Cada sugerencia explica por qué encaja y para qué puede servir.
22
- 2. **Añade las opcionales.** Marca lo que necesitas; las recomendaciones con escenarios validados se seleccionan inicialmente cuando requieren instalación.
23
- 3. **Confirma la instalación.** Revisa agentes, modo, reglas de Git y archivos previstos antes de aplicar los cambios.
24
-
25
- `↑` / `↓` para moverte, `Espacio` para marcar, `Enter` para continuar. En la revisión, `e` edita la configuración y `Esc` cancela sin modificar el proyecto.
26
-
27
- ## Skills con contexto
28
-
29
- El catálogo incluido contiene **10 skills** con revisión de origen y hashes SHA-256. NexaKit muestra el motivo de cada sugerencia, su utilidad prevista y los solapamientos con otras skills.
30
-
31
- Una skill **compatible** coincide con tu tecnología o perfil. Una **recomendada** también necesita un escenario funcional pasado para cada agente destino. Los hashes comprueban integridad; las entradas actuales aún no tienen escenarios funcionales validados.
32
-
33
- Las skills se obtienen del catálogo local incluido en el paquete. Consulta las [fuentes y licencias](docs/skills/fuentes-de-skills.md) o aprende a [ampliar el catálogo](docs/skills/ampliar-catalogo.md).
21
+ 1. **Requisitos.** Instala **Node.js 24 o superior**, Git y al menos uno de los tres clientes de IA (**Claude Code**, **Codex** o **Antigravity CLI**).
22
+ 2. **Ejecuta `npx nexakit` en tu proyecto.** Responde tres preguntas breves (skills para el proyecto, memoria en Obsidian e IA donde dejarlo listo) y confirma una sola vez. Con `npx nexakit --si` aplica directamente las opciones sugeridas.
23
+ 3. **Reinicia tu agente y trabaja con normalidad.** No necesitas ningún comando especial para empezar a programar:
24
+ - **Revisión automática:** al terminar una tarea con cambios de código, la IA pide automáticamente una revisión en solo lectura a otra IA. La primera vez pregunta `«¿A dónde mando la revisión?»` marcando la recomendada; si dices `«sin revisión»`, la omite, y con `/revisar` (o `$revisar`) pides una revisión adicional cuando quieras.
25
+ - **Seguimiento automático y cierre:** si una tarea larga queda a medias, escribe o actualiza la nota de seguimiento en la bóveda con `project-handoff`, y al fusionar el cambio se cierra con `/cerrar-memoria` (o `$cerrar-memoria`).
34
26
 
35
27
  ## Comandos
36
28
 
37
29
  ```bash
38
- npx nexakit # Abrir el asistente
39
- npx nexakit recommend --project . # Consultar sugerencias sin modificar archivos
40
- npx nexakit doctor --agent all # Comprobar el entorno
41
- npx nexakit detach --project . # Revisar qué se retiraría del proyecto
42
- npx nexakit detach --project . --apply # Aplicar el desacoplado
30
+ npx nexakit # Preparar el proyecto (3 preguntas y una confirmación)
31
+ npx nexakit --si # Aplicar directamente las sugerencias
32
+ npx nexakit comprobar # Comprobar que todo esté bien conectado
33
+ npx nexakit quitar # Ver qué quitaría del proyecto y de tus IA
34
+ npx nexakit quitar --si # Quitar lo que nexakit instaló
35
+ npx nexakit reparar --desde <ruta> # Reparar enlaces que apuntan a una copia antigua
36
+ npx nexakit memoria <subcomando> # Operaciones avanzadas de memoria (status, doctor, sync…)
37
+ npx nexakit setup --omitir <skill> --apply # Declarar quitada una skill global que ya no enlazas
38
+ npx nexakit setup --reponer <skill> --apply # Devolver una skill global que quitaste
39
+ ~/.nexakit/nexakit revision --disponibles --principal <ia> # Ver IA revisoras certificadas
40
+ ~/.nexakit/nexakit modelo # Ver catálogo real de modelos y esfuerzos
41
+ ~/.nexakit/nexakit panel # Ver la orquesta de Claude Code a pantalla completa
43
42
  ```
44
43
 
45
- También puedes instalarlo con `npm install -g nexakit` y ejecutar `nexakit`. El alias `agent-toolkit` sigue disponible.
44
+ Si quitas a mano el enlace de una skill global que nexakit instaló, `npx nexakit` no la vuelve a crear en esa IA. `frontend-design`, `web-design-guidelines` y `mcp-builder` ya no forman parte de la base global: se instalan por proyecto cuando se detecta su stack.
45
+
46
+ También puedes instalarlo globalmente con `npm install -g nexakit` y ejecutar `nexakit`. El alias `agent-toolkit` y los subcomandos anteriores (`recommend`, `doctor`, `setup`, `detach`) siguen disponibles por compatibilidad.
46
47
 
47
48
  ## Tecnologías detectadas
48
49
 
50
+ NexaKit inspecciona la raíz y las subcarpetas inmediatas del proyecto (`package.json`, `pyproject.toml`, `requirements.txt`, `src-tauri/` y `README.md`):
51
+
49
52
  - **Frontend:** React, Next.js, Tailwind CSS, Astro, Vue y Svelte.
50
- - **APIs:** Express, Fastify y Hono.
53
+ - **Backend y APIs:** Express, Fastify, Hono, Django, FastAPI, Flask y API REST / OpenAPI.
54
+ - **Escritorio:** Tauri.
51
55
  - **Datos:** Supabase, PostgreSQL, Prisma y Drizzle.
52
56
  - **MCP:** SDK de Model Context Protocol y FastMCP.
53
- - **Pruebas:** Playwright. Node.js, TypeScript y Vitest también se reconocen como señales del proyecto, aunque no tienen una skill específica asignada por sí solos.
57
+ - **Pruebas:** Playwright (además de reconocer señales como Node.js, TypeScript y Vitest).
58
+
59
+ ## Skills con contexto
60
+
61
+ El catálogo incluido contiene **10 skills** con revisión de origen y hashes SHA-256. NexaKit muestra el motivo concreto de cada sugerencia (por ejemplo, qué archivo o `README.md` la activó). Consulta las [fuentes y licencias](docs/skills/fuentes-de-skills.md) o aprende a [ampliar el catálogo](docs/skills/ampliar-catalogo.md).
54
62
 
55
63
  ## Más herramientas
56
64
 
57
- - **Coordinación entre agentes.** Implementación y revisión cruzada con Claude Code y Codex. [Guía de comandos](docs/guias/guia-de-comandos.md).
58
- - **Memoria por proyecto.** Contexto separado del código y conectado en solo lectura mediante MCP. [Crear una memoria](docs/memoria/project-memory-init.md).
59
- - **Guía interactiva.** Inicio, Obsidian, conexión con agentes y comandos copiables. Abre [la guía HTML](docs/guias/guia-de-comandos.html) en tu navegador.
65
+ - **Revisión entre IA en solo lectura.** Aislamiento certificado y procedencia verificada entre Claude Code, Codex y Antigravity. [Flujo de revisión](docs/agentes/coordinacion/revision-entre-ia.md).
66
+ - **Memoria por proyecto.** Contexto separado del código y conectado en solo lectura mediante MCP, con seguimiento de tareas largas y cierre con `/cerrar-memoria`. [Crear una memoria](docs/memoria/project-memory-init.md).
67
+ - **Aviso de sesión.** El mod `nexakit-sesion` muestra contexto y límites en la línea de estado de Claude Code y avisa cuándo conviene abrir una sesión nueva.
68
+ - **Panel de la orquesta.** El mod `nexakit-panel` muestra en Claude Code el modelo líder, el asesor, los subagentes y el uso real; `nexakit panel` lo dibuja a pantalla completa en otra división de la terminal.
69
+ - **Guía interactiva.** Los tres pasos de inicio, buscador de comandos copiables y resolución de problemas. Abre [la guía HTML](docs/guias/guia-de-comandos.html) en tu navegador.
60
70
  - **Catálogo ampliable.** Incorpora skills y comprueba sus archivos con `npm run catalog:validate`. [Añadir una skill](docs/skills/ampliar-catalogo.md).
61
71
 
62
72
  ## Requisitos
63
73
 
64
- **Node.js 24 o superior** y una terminal interactiva para el asistente.
74
+ **Node.js 24 o superior** y una terminal interactiva para el asistente (o `--si` en modo no interactivo).
65
75
 
66
76
  Para contribuir: [desarrollo local, pruebas y empaquetado](docs/guias/desarrollo.md).
67
77
 
@@ -29,8 +29,6 @@ cabecera propia de NexaKit con tipografía de terminal y una vista real del asis
29
29
  asistente por pasos, con foco lila y progreso visible. Se integra en la cabecera del README.
30
30
  - [`agent-toolkit-mark.svg`](agent-toolkit-mark.svg): variante vectorial
31
31
  simplificada creada durante la exploración de la propuesta 02.
32
- - [`agent-toolkit-mark-v1.png`](agent-toolkit-mark-v1.png): propuesta anterior en
33
- verde menta y azul petróleo.
34
32
 
35
33
  ## Alcance
36
34
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "nexakit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "nexakit",
9
- "version": "0.1.0",
9
+ "version": "0.2.0",
10
10
  "dependencies": {
11
11
  "@modelcontextprotocol/sdk": "1.30.0",
12
12
  "@modelcontextprotocol/server": "^2.4.0",
package/bin/agent-task.js CHANGED
@@ -1,12 +1,14 @@
1
1
  #!/usr/bin/env node
2
+ import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
2
3
 
3
- import { runTaskCli } from "../src/task-cli.js";
4
-
5
- const write = (stream, text) => new Promise((resolve, reject) => stream.write(text, error => error ? reject(error) : resolve()));
6
- // Catch stream errors such as EPIPE without a raw stack or a retry.
7
- process.stdout.on("error", () => {});
8
- process.stderr.on("error", () => {});
9
- process.exitCode = await runTaskCli(process.argv.slice(2), {
10
- out: text => write(process.stdout, text),
11
- err: text => write(process.stderr, text)
12
- });
4
+ const cli = await loadWithDependencyCheck(() => import("../src/task-cli.js"));
5
+ if (cli) {
6
+ const write = (stream, text) => new Promise((resolve, reject) => stream.write(text, error => error ? reject(error) : resolve()));
7
+ // Catch stream errors such as EPIPE without a raw stack or a retry.
8
+ process.stdout.on("error", () => {});
9
+ process.stderr.on("error", () => {});
10
+ process.exitCode = await cli.runTaskCli(process.argv.slice(2), {
11
+ out: text => write(process.stdout, text),
12
+ err: text => write(process.stderr, text)
13
+ });
14
+ }
@@ -1,11 +1,13 @@
1
1
  #!/usr/bin/env node
2
+ import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
2
3
 
3
- import { runGeminiCli } from "../src/gemini-cli.js";
4
-
5
- const write = (stream, text) => new Promise((resolve, reject) => stream.write(text, error => error ? reject(error) : resolve()));
6
- process.stdout.on("error", () => {});
7
- process.stderr.on("error", () => {});
8
- process.exitCode = await runGeminiCli(process.argv.slice(2), {
9
- out: text => write(process.stdout, text),
10
- err: text => write(process.stderr, text)
11
- });
4
+ const cli = await loadWithDependencyCheck(() => import("../src/gemini-cli.js"));
5
+ if (cli) {
6
+ const write = (stream, text) => new Promise((resolve, reject) => stream.write(text, error => error ? reject(error) : resolve()));
7
+ process.stdout.on("error", () => {});
8
+ process.stderr.on("error", () => {});
9
+ process.exitCode = await cli.runGeminiCli(process.argv.slice(2), {
10
+ out: text => write(process.stdout, text),
11
+ err: text => write(process.stderr, text)
12
+ });
13
+ }
@@ -1,12 +1,14 @@
1
1
  #!/usr/bin/env node
2
+ import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
2
3
 
3
- import { runPeerInboxCli } from "../src/peer-inbox-cli.js";
4
-
5
- const write = (stream, text) => new Promise((resolve, reject) => stream.write(text, error => error ? reject(error) : resolve()));
6
- // Catch stream errors such as EPIPE without a raw stack or a retry.
7
- process.stdout.on("error", () => {});
8
- process.stderr.on("error", () => {});
9
- process.exitCode = await runPeerInboxCli(process.argv.slice(2), {
10
- out: text => write(process.stdout, text),
11
- err: text => write(process.stderr, text)
12
- });
4
+ const cli = await loadWithDependencyCheck(() => import("../src/peer-inbox-cli.js"));
5
+ if (cli) {
6
+ const write = (stream, text) => new Promise((resolve, reject) => stream.write(text, error => error ? reject(error) : resolve()));
7
+ // Catch stream errors such as EPIPE without a raw stack or a retry.
8
+ process.stdout.on("error", () => {});
9
+ process.stderr.on("error", () => {});
10
+ process.exitCode = await cli.runPeerInboxCli(process.argv.slice(2), {
11
+ out: text => write(process.stdout, text),
12
+ err: text => write(process.stderr, text)
13
+ });
14
+ }
@@ -1,11 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
2
3
 
3
- import { serveStdio } from "@modelcontextprotocol/server/stdio";
4
-
5
- import { createTaskWorkflowMcp } from "../src/task-workflow-mcp.js";
6
-
7
- serveStdio(() => createTaskWorkflowMcp(), {
8
- onerror() {
9
- process.stderr.write("agent-toolkit-mcp: error de conexión MCP\n");
10
- }
4
+ const modules = await loadWithDependencyCheck(async () => {
5
+ const [{ serveStdio }, { createTaskWorkflowMcp }] = await Promise.all([
6
+ import("@modelcontextprotocol/server/stdio"),
7
+ import("../src/task-workflow-mcp.js")
8
+ ]);
9
+ return { serveStdio, createTaskWorkflowMcp };
11
10
  });
11
+ if (modules) {
12
+ modules.serveStdio(() => modules.createTaskWorkflowMcp(), {
13
+ onerror() {
14
+ process.stderr.write("agent-toolkit-mcp: error de conexión MCP\n");
15
+ }
16
+ });
17
+ }
@@ -1,10 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { runToolkitCli } from '../src/toolkit-cli.js';
3
- process.stdout.on('error', () => {});
4
- process.stderr.on('error', () => {});
5
- process.exitCode = await runToolkitCli(process.argv.slice(2), {
6
- out: t => process.stdout.write(t),
7
- err: t => process.stderr.write(t),
8
- input: process.stdin,
9
- output: process.stdout
10
- });
2
+ import { loadWithDependencyCheck } from '../src/missing-dependencies.js';
3
+ const cli = await loadWithDependencyCheck(() => import('../src/toolkit-cli.js'));
4
+ if (cli) {
5
+ process.stdout.on('error', () => {});
6
+ process.stderr.on('error', () => {});
7
+ process.exitCode = await cli.runToolkitCli(process.argv.slice(2), {
8
+ out: t => process.stdout.write(t),
9
+ err: t => process.stderr.write(t),
10
+ input: process.stdin,
11
+ output: process.stdout
12
+ });
13
+ }
package/bin/nexakit.js CHANGED
@@ -1,10 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { runToolkitCli } from '../src/toolkit-cli.js';
3
- process.stdout.on('error', () => {});
4
- process.stderr.on('error', () => {});
5
- process.exitCode = await runToolkitCli(process.argv.slice(2), {
6
- out: t => process.stdout.write(t),
7
- err: t => process.stderr.write(t),
8
- input: process.stdin,
9
- output: process.stdout
10
- });
2
+ import { loadWithDependencyCheck } from '../src/missing-dependencies.js';
3
+ const cli = await loadWithDependencyCheck(() => import('../src/toolkit-cli.js'));
4
+ if (cli) {
5
+ process.stdout.on('error', () => {});
6
+ process.stderr.on('error', () => {});
7
+ process.exitCode = await cli.runToolkitCli(process.argv.slice(2), {
8
+ out: t => process.stdout.write(t),
9
+ err: t => process.stderr.write(t),
10
+ input: process.stdin,
11
+ output: process.stdout
12
+ });
13
+ }
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import path from "node:path";
3
+ import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
3
4
 
4
5
  const args = process.argv.slice(2);
5
6
  if (args.length === 1 && ["--help", "-h"].includes(args[0])) {
@@ -7,13 +8,15 @@ if (args.length === 1 && ["--help", "-h"].includes(args[0])) {
7
8
  } else if (args.length !== 2 || args[0] !== "--manifest" || !path.isAbsolute(args[1])) {
8
9
  process.stderr.write("project-memory-mcp: RG_INPUT_INVALID\n"); process.exitCode = 2;
9
10
  } else {
10
- const controller = new AbortController(), stop = () => controller.abort();
11
- process.once("SIGTERM", stop); process.once("SIGINT", stop);
12
- try {
13
- const { runMemoryMcp } = await import("../src/memory-mcp-server.js");
14
- await runMemoryMcp(args[1], { signal: controller.signal });
15
- } catch (error) {
16
- const code = /^RG_[A-Z_]+$/.test(error?.code ?? "") ? error.code : "RG_START_FAILED";
17
- process.stderr.write(`project-memory-mcp: ${code}\n`); process.exitCode = 2;
18
- } finally { process.off("SIGTERM", stop); process.off("SIGINT", stop); }
11
+ const mcp = await loadWithDependencyCheck(() => import("../src/memory-mcp-server.js"));
12
+ if (mcp) {
13
+ const controller = new AbortController(), stop = () => controller.abort();
14
+ process.once("SIGTERM", stop); process.once("SIGINT", stop);
15
+ try {
16
+ await mcp.runMemoryMcp(args[1], { signal: controller.signal });
17
+ } catch (error) {
18
+ const code = /^RG_[A-Z_]+$/.test(error?.code ?? "") ? error.code : "RG_START_FAILED";
19
+ process.stderr.write(`project-memory-mcp: ${code}\n`); process.exitCode = 2;
20
+ } finally { process.off("SIGTERM", stop); process.off("SIGINT", stop); }
21
+ }
19
22
  }
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
2
3
 
3
- import { runCli } from "../src/cli.js";
4
-
5
- process.exitCode = await runCli(process.argv.slice(2));
4
+ const cli = await loadWithDependencyCheck(() => import("../src/cli.js"));
5
+ if (cli) {
6
+ process.exitCode = await cli.runCli(process.argv.slice(2));
7
+ }
@@ -1,12 +1,12 @@
1
- Adaptación en español para Agent Toolkit a partir de prácticas de
2
- Superpowers 7.0.1 (https://github.com/obra/superpowers, skill
3
- `systematic-debugging` y sus técnicas de apoyo `root-cause-tracing`,
4
- `defense-in-depth` y `condition-based-waiting`). Se conserva íntegro el aviso
5
- de copyright y licencia MIT del origen:
1
+ Esta skill procede de https://github.com/vercel-labs/agent-skills (commit
2
+ 1a2c79d4e6c4a2283dc2c614b6538cbe1ed5ca62), cuyo SKILL.md declara "license: MIT" y
3
+ "author: vercel". El repositorio de origen no incluye un archivo de licencia; nexakit
4
+ reproduce aquí el texto de la licencia MIT declarada para cumplir su condición de
5
+ incluir el aviso con las copias.
6
6
 
7
7
  MIT License
8
8
 
9
- Copyright (c) 2025 Jesse Vincent
9
+ Copyright (c) Vercel
10
10
 
11
11
  Permission is hereby granted, free of charge, to any person obtaining a copy
12
12
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,27 @@
1
+ Esta skill procede de https://github.com/vercel-labs/agent-skills (commit
2
+ 1a2c79d4e6c4a2283dc2c614b6538cbe1ed5ca62), cuyo SKILL.md declara "license: MIT" y
3
+ "author: vercel". El repositorio de origen no incluye un archivo de licencia; nexakit
4
+ reproduce aquí el texto de la licencia MIT declarada para cumplir su condición de
5
+ incluir el aviso con las copias.
6
+
7
+ MIT License
8
+
9
+ Copyright (c) Vercel
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "updatedAt": "2026-10-31",
3
+ "updatedAt": "2026-11-05",
4
4
  "skills": [
5
5
  {
6
6
  "name": "frontend-design",
@@ -56,16 +56,24 @@
56
56
  {
57
57
  "name": "web-design-guidelines",
58
58
  "bundled": true,
59
- "summary": "Auditoría de accesibilidad, UX y cumplimiento de Web Interface Guidelines sobre código de interfaz.",
60
- "repository": "https://github.com/vercel-labs/agent-skills",
61
- "sourcePath": "skills/web-design-guidelines",
59
+ "summary": "Revisa código de interfaz contra las Web Interface Guidelines de Vercel Labs: accesibilidad, foco, formularios, animación, tipografía y rendimiento.",
60
+ "repository": "https://github.com/vercel-labs/web-interface-guidelines",
61
+ "sourcePath": "AGENTS.md",
62
62
  "installedPath": "skills/web-design-guidelines",
63
- "revision": "ba46938889d4e58635362fb8f618e1178ac3ec46",
63
+ "revision": "434b7f91364665f2f733b310ec54809bf8f37937",
64
64
  "license": "MIT",
65
65
  "files": [
66
+ {
67
+ "path": "AGENTS.md",
68
+ "sha256": "35411b4a2dcfa651fd33706a92cc860947364b521643107fbf3116abe3826d44"
69
+ },
70
+ {
71
+ "path": "LICENSE.txt",
72
+ "sha256": "6cd1609c9c12233507cdd2ce0d32e9a721e3c27494951be06b90090deeeb7af2"
73
+ },
66
74
  {
67
75
  "path": "SKILL.md",
68
- "sha256": "f4647ca866a3accf763777f83e7682954f0187cd6bea7eea0399796652414e8f"
76
+ "sha256": "139ea99fb40ce66992b58a93d68d741eea4fb56b78a743701bd80fe209a3c451"
69
77
  }
70
78
  ],
71
79
  "matching": {
@@ -88,13 +96,13 @@
88
96
  "frontend-design"
89
97
  ],
90
98
  "review": {
91
- "status": "reviewed-with-observations",
92
- "reviewedAt": "2026-10-28",
93
- "notes": "Sus instrucciones piden consultar por internet las reglas vigentes de Vercel antes de revisar; ese recurso externo puede cambiar.",
99
+ "status": "reviewed",
100
+ "reviewedAt": "2026-11-05",
101
+ "notes": "Reglas de Vercel Labs (MIT, LICENSE.txt incluido) fijadas en AGENTS.md; instrucciones propias de nexakit. Ya no descarga reglas en cada revisión.",
94
102
  "capabilities": {
95
103
  "filesystem": "read-only",
96
104
  "processes": "none",
97
- "network": "optional",
105
+ "network": "none",
98
106
  "paidApi": "none"
99
107
  }
100
108
  },
@@ -260,17 +268,17 @@
260
268
  "sha256": "fc93e7421177bbf869cce892bc60a6c83a4517d974bc3bf65c4e2c1e58a6ccf6"
261
269
  },
262
270
  {
263
- "path": "README.md",
264
- "sha256": "9eafb2123d3b8b2aef41fba0db2648a3f4f49996f8c7c8bb2c86263befd8b48a"
265
- },
266
- {
267
- "path": "SKILL.md",
268
- "sha256": "71ed7794962fa6e803ee83030517b5b93a9f70fbfeb431ec4535c5480a8d8355"
271
+ "path": "LICENSE.txt",
272
+ "sha256": "2701bedfb108e232b3d0c90976dd0ab3b0a9e2b97bdb9afb417435d510d02bf1"
269
273
  },
270
274
  {
271
275
  "path": "metadata.json",
272
276
  "sha256": "c4e18bac3290fbe1b471a605867d4df68b03144ea26b8befdbe8f9d8fd124354"
273
277
  },
278
+ {
279
+ "path": "README.md",
280
+ "sha256": "9eafb2123d3b8b2aef41fba0db2648a3f4f49996f8c7c8bb2c86263befd8b48a"
281
+ },
274
282
  {
275
283
  "path": "rules/_sections.md",
276
284
  "sha256": "01c59969e4e867f0708c8f8ef9c6d87fab9a07d0586244f429ff84013db8a115"
@@ -558,6 +566,10 @@
558
566
  {
559
567
  "path": "rules/server-serialization.md",
560
568
  "sha256": "f4c7d68b29c82381baad059c4a7f09e868e71ec9c3115a26ad3ae7d24c0dfe1f"
569
+ },
570
+ {
571
+ "path": "SKILL.md",
572
+ "sha256": "71ed7794962fa6e803ee83030517b5b93a9f70fbfeb431ec4535c5480a8d8355"
561
573
  }
562
574
  ],
563
575
  "matching": {
@@ -578,7 +590,7 @@
578
590
  "review": {
579
591
  "status": "reviewed",
580
592
  "reviewedAt": "2026-10-31",
581
- "notes": "Reglas estáticas Markdown y metadata.json sin scripts ejecutables ni llamadas externas.",
593
+ "notes": "Reglas estáticas Markdown y metadata.json sin scripts ejecutables ni llamadas externas. LICENSE.txt añadido con el texto MIT que declara su SKILL.md.",
582
594
  "capabilities": {
583
595
  "filesystem": "none",
584
596
  "processes": "none",
@@ -603,17 +615,17 @@
603
615
  "sha256": "89e3ddd58fcf99a53a50e25dfd21b8cde1be5f10b7df6bacd3dfa6796932f516"
604
616
  },
605
617
  {
606
- "path": "README.md",
607
- "sha256": "85915a43a6f0b4efe525e3cf6398dd866166da2025837c4460468a24a940da94"
608
- },
609
- {
610
- "path": "SKILL.md",
611
- "sha256": "e38e0eaa609316b10423a9a138ed95e35099accd3f735585295c8a8f165c28a3"
618
+ "path": "LICENSE.txt",
619
+ "sha256": "2701bedfb108e232b3d0c90976dd0ab3b0a9e2b97bdb9afb417435d510d02bf1"
612
620
  },
613
621
  {
614
622
  "path": "metadata.json",
615
623
  "sha256": "49262ed5cb4186f31ee980cf8d990be0170c51efed4908d0464a1cff9905bd05"
616
624
  },
625
+ {
626
+ "path": "README.md",
627
+ "sha256": "85915a43a6f0b4efe525e3cf6398dd866166da2025837c4460468a24a940da94"
628
+ },
617
629
  {
618
630
  "path": "rules/_sections.md",
619
631
  "sha256": "a174213b87e6911e2b766995a2cbaf8d1534057076e82fb79fe3f0ecb38047df"
@@ -653,6 +665,10 @@
653
665
  {
654
666
  "path": "rules/state-lift-state.md",
655
667
  "sha256": "74c54038a6c554c748fe31cec673b80861b5d920b7553cf78cdf10d18b4b759b"
668
+ },
669
+ {
670
+ "path": "SKILL.md",
671
+ "sha256": "e38e0eaa609316b10423a9a138ed95e35099accd3f735585295c8a8f165c28a3"
656
672
  }
657
673
  ],
658
674
  "matching": {
@@ -673,7 +689,7 @@
673
689
  "review": {
674
690
  "status": "reviewed",
675
691
  "reviewedAt": "2026-10-31",
676
- "notes": "Guías Markdown y metadata.json sin scripts ni procesos.",
692
+ "notes": "Guías Markdown y metadata.json sin scripts ni procesos. LICENSE.txt añadido con el texto MIT que declara su SKILL.md.",
677
693
  "capabilities": {
678
694
  "filesystem": "none",
679
695
  "processes": "none",
@@ -967,7 +983,11 @@
967
983
  "anySignals": [
968
984
  "express",
969
985
  "fastify",
970
- "hono"
986
+ "hono",
987
+ "django",
988
+ "fastapi",
989
+ "flask",
990
+ "rest-api"
971
991
  ],
972
992
  "profiles": [
973
993
  "backend"
@@ -1053,27 +1073,42 @@
1053
1073
  "scenarios": []
1054
1074
  }
1055
1075
  ],
1056
- "externalReferences": [],
1076
+ "externalReferences": [
1077
+ {
1078
+ "name": "ui-ux-pro-max",
1079
+ "summary": "Guía de diseño UI/UX con datos locales: estilos, paletas, tipografías, reglas de UX y patrones por stack.",
1080
+ "sourceUrl": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill",
1081
+ "anySignals": [
1082
+ "react",
1083
+ "nextjs",
1084
+ "tailwindcss",
1085
+ "astro",
1086
+ "vue",
1087
+ "svelte"
1088
+ ],
1089
+ "profiles": [
1090
+ "frontend"
1091
+ ],
1092
+ "statusNote": "Se instala como plugin de Claude (necesita Python 3). Revisada el 2026-11-02 en 713eef51: sin bloqueos del escáner; no funciona como skill copiada ni en Codex."
1093
+ }
1094
+ ],
1057
1095
  "addons": [
1058
1096
  {
1059
1097
  "id": "superpowers",
1060
1098
  "name": "obra/superpowers",
1061
1099
  "versionReviewed": "7.0.1",
1062
1100
  "license": "MIT",
1063
- "optional": true,
1064
- "autoInstall": false,
1101
+ "optional": false,
1102
+ "autoInstall": true,
1065
1103
  "repository": "https://github.com/obra/superpowers",
1066
- "summary": "Plugin externo opcional. Sus prácticas principales ya están adaptadas en spec-driven-development, depurar, desarrollo-con-pruebas y quality-gate.",
1104
+ "summary": "Obligatorio: lleva el proceso de trabajo (diseño, planes, depuración, TDD y verificación). npx nexakit lo instala o activa en cada IA; quality-gate añade la puerta propia de nexakit.",
1067
1105
  "adaptedSkills": [
1068
- "spec-driven-development",
1069
- "depurar",
1070
- "desarrollo-con-pruebas",
1071
1106
  "quality-gate"
1072
1107
  ],
1073
1108
  "installHints": {
1074
- "claude": "/plugin marketplace add obra/superpowers-marketplace && /plugin install superpowers@superpowers-marketplace",
1075
- "codex": "Instalar desde el catálogo de plugins de Codex (obra/superpowers)",
1076
- "antigravity": "Añadir desde Agent Marketplace: antigravity-plugins-partners/plugin/superpowers"
1109
+ "claude": "claude plugin install superpowers@claude-plugins-official",
1110
+ "codex": "codex plugin add superpowers@openai-curated-remote",
1111
+ "antigravity": "agy plugin install superpowers@antigravity-plugins-partners"
1077
1112
  }
1078
1113
  }
1079
1114
  ]