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.
- package/.claude-plugin/marketplace.json +18 -1
- package/README.md +40 -30
- package/assets/brand/README.md +0 -2
- package/assets/runtime/package-lock.json +2 -2
- package/bin/agent-task.js +12 -10
- package/bin/agent-toolkit-gemini.js +11 -9
- package/bin/agent-toolkit-inbox.js +12 -10
- package/bin/agent-toolkit-mcp.js +14 -8
- package/bin/agent-toolkit.js +12 -9
- package/bin/nexakit.js +12 -9
- package/bin/project-memory-mcp.js +12 -9
- package/bin/project-memory.js +5 -3
- package/{skills/depurar → catalogs/skills/vercel-composition-patterns}/LICENSE.txt +6 -6
- package/catalogs/skills/vercel-react-best-practices/LICENSE.txt +27 -0
- package/catalogs/skills.json +70 -35
- package/docs/skills/evidencias/2026-10-28-recomendador-preparacion.md +1 -1
- package/package.json +5 -3
- package/plugins/nexakit-modelo/.claude-plugin/plugin.json +1 -0
- package/plugins/nexakit-modelo/hooks/hooks.json +1 -0
- package/plugins/nexakit-modelo/hooks/register.js +48 -0
- package/plugins/nexakit-modelo/hooks/status.js +8 -0
- package/plugins/nexakit-modelo/tests/register.test.ts +21 -0
- package/plugins/nexakit-panel/.claude-plugin/plugin.json +1 -0
- package/plugins/nexakit-panel/README.md +20 -0
- package/plugins/nexakit-panel/hooks/hooks.json +1 -0
- package/plugins/nexakit-panel/hooks/lienzo.js +382 -0
- package/plugins/nexakit-panel/hooks/panel.js +279 -0
- package/plugins/nexakit-panel/hooks/register.tsx +248 -0
- package/plugins/nexakit-panel/tests/lienzo.test.ts +142 -0
- package/plugins/nexakit-panel/tests/panel.test.ts +240 -0
- package/plugins/nexakit-panel/tests/register.test.ts +167 -0
- package/plugins/nexakit-panel/types/index.d.ts +41 -0
- package/plugins/nexakit-sesion/.claude-plugin/plugin.json +1 -0
- package/plugins/nexakit-sesion/README.md +12 -0
- package/plugins/nexakit-sesion/hooks/aviso.js +38 -0
- package/plugins/nexakit-sesion/hooks/hooks.json +1 -0
- package/plugins/nexakit-sesion/hooks/register.js +28 -0
- package/plugins/nexakit-sesion/tests/register.test.ts +96 -0
- package/schemas/skill-catalog.schema.json +9 -2
- package/skills/cerrar-memoria/SKILL.md +6 -2
- package/skills/cerrar-memoria/references/cierre.md +5 -1
- package/skills/elegir-modelo/SKILL.md +68 -0
- package/skills/elegir-modelo/modelos.mjs +108 -0
- package/skills/gemini/SKILL.md +1 -1
- package/skills/project-handoff/SKILL.md +39 -12
- package/skills/project-handoff/references/handoff-template.md +24 -17
- package/skills/quality-gate/SKILL.md +6 -12
- package/skills/revisar/SKILL.md +6 -16
- package/skills/{desarrollo-con-pruebas/LICENSE.txt → revisar-skill/LICENSE-find-skills.txt} +5 -5
- package/skills/revisar-skill/SKILL.md +94 -0
- package/skills/revision-cruzada/SKILL.md +53 -475
- package/skills/web-design-guidelines/AGENTS.md +156 -0
- package/skills/{spec-driven-development → web-design-guidelines}/LICENSE.txt +1 -6
- package/skills/web-design-guidelines/SKILL.md +20 -30
- package/src/agent-models.js +53 -13
- package/src/brand.js +117 -0
- package/src/cli-executable.js +5 -3
- package/src/cli.js +16 -9
- package/src/connect.js +56 -4
- package/src/init.js +9 -1
- package/src/install-lock.js +127 -0
- package/src/install-registry.js +61 -0
- package/src/legacy-repair.js +71 -0
- package/src/link-states.js +172 -0
- package/src/memory-locator.js +118 -0
- package/src/missing-dependencies.js +21 -0
- package/src/model-command.js +147 -0
- package/src/panel-cli.js +182 -0
- package/src/project-root.js +41 -0
- package/src/project-signals.js +339 -0
- package/src/recommend-report.js +77 -0
- package/src/review-instructions.js +211 -0
- package/src/review-policy.js +35 -0
- package/src/revision-adapters.js +157 -0
- package/src/revision-context.js +86 -0
- package/src/revision-isolation.js +222 -0
- package/src/revision-process.js +103 -0
- package/src/revision-provenance.js +89 -0
- package/src/revision-snapshot.js +120 -0
- package/src/revision.js +242 -0
- package/src/setup-apply.js +231 -0
- package/src/setup-plan.js +231 -0
- package/src/setup-state.js +277 -0
- package/src/setup-tui.js +555 -0
- package/src/skill-catalog-add.js +91 -0
- package/src/skill-catalog-audit.js +26 -27
- package/src/skill-files.js +39 -0
- package/src/skill-recommendations.js +321 -208
- package/src/skill-scan-report.js +14 -0
- package/src/skill-scan.js +178 -0
- package/src/stable-command.js +53 -0
- package/src/stable-install.js +222 -0
- package/src/superpowers.js +133 -0
- package/src/sync-apply.js +8 -5
- package/src/sync-files.js +2 -1
- package/src/terminal-text.js +68 -0
- package/src/toolkit-cli.js +397 -70
- package/src/toolkit-commands-guide.js +53 -39
- package/src/toolkit-setup.js +507 -110
- package/assets/brand/agent-toolkit-mark-v1.png +0 -0
- package/skills/depurar/SKILL.md +0 -69
- package/skills/depurar/agents/openai.yaml +0 -7
- package/skills/depurar/references/tecnicas-de-diagnostico.md +0 -37
- package/skills/desarrollo-con-pruebas/SKILL.md +0 -55
- package/skills/desarrollo-con-pruebas/agents/openai.yaml +0 -7
- package/skills/desarrollo-con-pruebas/references/buenas-pruebas.md +0 -33
- package/skills/estado/SKILL.md +0 -41
- package/skills/programar/SKILL.md +0 -19
- package/skills/spec-driven-development/SKILL.md +0 -48
- package/skills/spec-driven-development/agents/openai.yaml +0 -7
- package/skills/spec-driven-development/references/spec-template.md +0 -55
- package/skills/spec-driven-development/references/workflow.md +0 -70
- package/src/toolkit-tui.js +0 -961
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-toolkit",
|
|
3
|
-
"owner": {
|
|
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
|
|
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.
|
|
7
|
+
**Tus skills. Tu memoria. Tus IA trabajando juntas.**
|
|
8
8
|
|
|
9
|
-
[Guía
|
|
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,
|
|
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
|
-
##
|
|
19
|
+
## Inicio en tres pasos
|
|
20
20
|
|
|
21
|
-
1. **
|
|
22
|
-
2. **
|
|
23
|
-
3. **
|
|
24
|
-
|
|
25
|
-
|
|
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
|
|
39
|
-
npx nexakit
|
|
40
|
-
npx nexakit
|
|
41
|
-
npx nexakit
|
|
42
|
-
npx nexakit
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
- **
|
|
58
|
-
- **Memoria por proyecto.** Contexto separado del código y conectado en solo lectura mediante MCP
|
|
59
|
-
- **
|
|
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
|
|
package/assets/brand/README.md
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
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
|
+
}
|
package/bin/agent-toolkit-mcp.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
+
}
|
package/bin/agent-toolkit.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
process.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
process.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
}
|
package/bin/project-memory.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { loadWithDependencyCheck } from "../src/missing-dependencies.js";
|
|
2
3
|
|
|
3
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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)
|
|
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.
|
package/catalogs/skills.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"updatedAt": "2026-
|
|
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": "
|
|
60
|
-
"repository": "https://github.com/vercel-labs/
|
|
61
|
-
"sourcePath": "
|
|
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": "
|
|
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": "
|
|
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
|
|
92
|
-
"reviewedAt": "2026-
|
|
93
|
-
"notes": "
|
|
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": "
|
|
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": "
|
|
264
|
-
"sha256": "
|
|
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": "
|
|
607
|
-
"sha256": "
|
|
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":
|
|
1064
|
-
"autoInstall":
|
|
1101
|
+
"optional": false,
|
|
1102
|
+
"autoInstall": true,
|
|
1065
1103
|
"repository": "https://github.com/obra/superpowers",
|
|
1066
|
-
"summary": "
|
|
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": "
|
|
1075
|
-
"codex": "
|
|
1076
|
-
"antigravity": "
|
|
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
|
]
|