agent-ctx 1.0.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/LICENSE +21 -0
- package/README.md +133 -0
- package/dist/bin/agent-ctx.d.ts +7 -0
- package/dist/bin/agent-ctx.d.ts.map +1 -0
- package/dist/bin/agent-ctx.js +8 -0
- package/dist/bin/agent-ctx.js.map +1 -0
- package/dist/bin/agentrc.d.ts +7 -0
- package/dist/bin/agentrc.d.ts.map +1 -0
- package/dist/bin/agentrc.js +8 -0
- package/dist/bin/agentrc.js.map +1 -0
- package/dist/commands/add.d.ts +12 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +17 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/centralize.d.ts +12 -0
- package/dist/commands/centralize.d.ts.map +1 -0
- package/dist/commands/centralize.js +111 -0
- package/dist/commands/centralize.js.map +1 -0
- package/dist/commands/clean.d.ts +13 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +109 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +168 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +189 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +97 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bridges.d.ts +35 -0
- package/dist/lib/bridges.d.ts.map +1 -0
- package/dist/lib/bridges.js +171 -0
- package/dist/lib/bridges.js.map +1 -0
- package/dist/lib/config.d.ts +31 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +75 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/i18n.d.ts +22 -0
- package/dist/lib/i18n.d.ts.map +1 -0
- package/dist/lib/i18n.js +170 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/logger.d.ts +55 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +168 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/templates.d.ts +46 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +88 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/utils.d.ts +39 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +127 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/wizard.d.ts +22 -0
- package/dist/lib/wizard.d.ts.map +1 -0
- package/dist/lib/wizard.js +197 -0
- package/dist/lib/wizard.js.map +1 -0
- package/package.json +63 -0
- package/src/templates/en/base/_agents.md +62 -0
- package/src/templates/en/base/_architecture.md +90 -0
- package/src/templates/en/base/_bootstrap.md +89 -0
- package/src/templates/en/base/_doc.md +65 -0
- package/src/templates/en/base/_mcp.md +81 -0
- package/src/templates/en/base/_project_state.md +48 -0
- package/src/templates/en/base/_rule.md +56 -0
- package/src/templates/en/base/_skill.md +60 -0
- package/src/templates/en/docs/doc-readme.md +43 -0
- package/src/templates/en/docs/mcp-readme.md +21 -0
- package/src/templates/en/memory/active_context.md +38 -0
- package/src/templates/en/memory/progress.md +35 -0
- package/src/templates/en/memory/project_brief.md +34 -0
- package/src/templates/en/memory/tech_context.md +44 -0
- package/src/templates/en/rules/rule-coding-standards.md +22 -0
- package/src/templates/en/skills/skill-agents.md +74 -0
- package/src/templates/en/skills/skill-api.md +117 -0
- package/src/templates/en/skills/skill-architecture.md +87 -0
- package/src/templates/en/skills/skill-generating.md +116 -0
- package/src/templates/en/skills/skill-git.md +109 -0
- package/src/templates/en/skills/skill-project-state.md +99 -0
- package/src/templates/en/skills/skill-react.md +94 -0
- package/src/templates/en/skills/skill-rules.md +100 -0
- package/src/templates/en/skills/skill-testing.md +139 -0
- package/src/templates/es/base/_agents.md +62 -0
- package/src/templates/es/base/_architecture.md +90 -0
- package/src/templates/es/base/_bootstrap.md +89 -0
- package/src/templates/es/base/_doc.md +65 -0
- package/src/templates/es/base/_mcp.md +81 -0
- package/src/templates/es/base/_project_state.md +48 -0
- package/src/templates/es/base/_rule.md +56 -0
- package/src/templates/es/base/_skill.md +60 -0
- package/src/templates/es/docs/doc-readme.md +43 -0
- package/src/templates/es/docs/mcp-readme.md +21 -0
- package/src/templates/es/memory/active_context.md +38 -0
- package/src/templates/es/memory/progress.md +35 -0
- package/src/templates/es/memory/project_brief.md +34 -0
- package/src/templates/es/memory/tech_context.md +44 -0
- package/src/templates/es/rules/rule-coding-standards.md +22 -0
- package/src/templates/es/skills/skill-agents.md +74 -0
- package/src/templates/es/skills/skill-api.md +117 -0
- package/src/templates/es/skills/skill-architecture.md +87 -0
- package/src/templates/es/skills/skill-generating.md +116 -0
- package/src/templates/es/skills/skill-git.md +108 -0
- package/src/templates/es/skills/skill-project-state.md +99 -0
- package/src/templates/es/skills/skill-react.md +94 -0
- package/src/templates/es/skills/skill-rules.md +100 -0
- package/src/templates/es/skills/skill-testing.md +139 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 avicdro
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# agent-ctx 🤖
|
|
2
|
+
|
|
3
|
+
> CLI para inicializar y gestionar contexto de agentes AI en tus proyectos
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/agent-ctx)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
8
|
+
## ¿Qué es agent-ctx?
|
|
9
|
+
|
|
10
|
+
**agent-ctx** es una herramienta CLI que configura una estructura de contexto estandarizada (`.context/`) para que cualquier agente AI (Cursor, Windsurf, Claude, Copilot, Cline, etc.) entienda tu proyecto de forma consistente.
|
|
11
|
+
|
|
12
|
+
### ¿Por qué lo necesitas?
|
|
13
|
+
|
|
14
|
+
- 🪟 **Compatible con Windows, Mac y Linux** - Sin dependencia de bash
|
|
15
|
+
- 📦 **Fácil de distribuir** - `npx agent-ctx init` y listo
|
|
16
|
+
- 🔄 **Centralización** - Una sola fuente de verdad para todos los agentes
|
|
17
|
+
- 🏥 **Auto-reparación** - Detecta y arregla archivos rotos
|
|
18
|
+
- 📚 **Skills reutilizables** - Estructura modular para compartir conocimiento
|
|
19
|
+
|
|
20
|
+
## Instalación
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Uso directo con npx (recomendado)
|
|
24
|
+
npx agent-ctx init
|
|
25
|
+
|
|
26
|
+
# O instalación global
|
|
27
|
+
npm install -g agent-ctx
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Comandos
|
|
31
|
+
|
|
32
|
+
### `agent-ctx init`
|
|
33
|
+
|
|
34
|
+
Inicializa la estructura `.context/` y genera archivos puente para diferentes editores.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx agent-ctx init # Directorio actual
|
|
38
|
+
npx agent-ctx init ./mi-proyecto # Directorio específico
|
|
39
|
+
npx agent-ctx init --yes # Modo no interactivo
|
|
40
|
+
npx agent-ctx init --force # Sobrescribe existentes
|
|
41
|
+
npx agent-ctx init --dry-run # Solo muestra qué haría
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### `agent-ctx update`
|
|
46
|
+
|
|
47
|
+
Regenera los archivos puente con las últimas plantillas sin tocar `.context/`.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx agent-ctx update # Interactivo
|
|
51
|
+
npx agent-ctx update --yes # Actualiza todos
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### `agent-ctx centralize`
|
|
55
|
+
|
|
56
|
+
Busca skills dispersas en carpetas de editores (`.cursor/skills`, `.windsurf/skills`, etc.) y las mueve a `.context/skills/`.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx agent-ctx centralize
|
|
60
|
+
npx agent-ctx centralize --dry-run
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `agent-ctx clean`
|
|
64
|
+
|
|
65
|
+
Elimina carpetas redundantes de editores que duplican skills/rules.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npx agent-ctx clean
|
|
69
|
+
npx agent-ctx clean --yes # Sin confirmación
|
|
70
|
+
npx agent-ctx clean --dry-run
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### `agent-ctx doctor`
|
|
74
|
+
|
|
75
|
+
Verifica la integridad de `.context/` y archivos puente, ofrece reparaciones.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npx agent-ctx doctor # Solo diagnóstico
|
|
79
|
+
npx agent-ctx doctor --fix # Repara automáticamente
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Flags globales
|
|
83
|
+
|
|
84
|
+
| Flag | Descripción |
|
|
85
|
+
|------|-------------|
|
|
86
|
+
| `-q, --quiet` | Suprime output no esencial |
|
|
87
|
+
| `-v, --version` | Muestra versión |
|
|
88
|
+
| `-h, --help` | Muestra ayuda |
|
|
89
|
+
|
|
90
|
+
## Configuración por proyecto
|
|
91
|
+
|
|
92
|
+
Crea un archivo `.agent-ctx.json` en la raíz del proyecto:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"editors": ["cursor", "claude", "copilot"],
|
|
97
|
+
"language": "es",
|
|
98
|
+
"backups": true
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Estructura generada
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
tu-proyecto/
|
|
106
|
+
├── .context/
|
|
107
|
+
│ ├── architecture.md # Stack y estructura del proyecto
|
|
108
|
+
│ ├── project_state.md # Estado actual, TODOs, bugs
|
|
109
|
+
│ ├── rules/
|
|
110
|
+
│ │ └── coding-standards.md
|
|
111
|
+
│ ├── skills/
|
|
112
|
+
│ │ └── _template_skill.md
|
|
113
|
+
│ ├── docs/
|
|
114
|
+
│ │ └── README.md
|
|
115
|
+
│ └── mcp/
|
|
116
|
+
│ └── README.md
|
|
117
|
+
├── AGENTS.md # Índice maestro para agentes
|
|
118
|
+
├── CLAUDE.md # Instrucciones para Claude
|
|
119
|
+
├── .cursorrules # Puente para Cursor
|
|
120
|
+
├── .windsurfrules # Puente para Windsurf
|
|
121
|
+
├── .clinerules # Puente para Cline
|
|
122
|
+
├── .roomodes # Puente para Roo
|
|
123
|
+
└── .github/
|
|
124
|
+
└── copilot-instructions.md # Puente para GitHub Copilot
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Contribuir
|
|
128
|
+
|
|
129
|
+
¿Encontraste un bug o tienes una idea? ¡Abre un issue o PR!
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
MIT © avicdro
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ctx.d.ts","sourceRoot":"","sources":["../../src/bin/agent-ctx.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ctx.js","sourceRoot":"","sources":["../../src/bin/agent-ctx.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentrc.d.ts","sourceRoot":"","sources":["../../src/bin/agentrc.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentrc.js","sourceRoot":"","sources":["../../src/bin/agentrc.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: add
|
|
3
|
+
* Descarga e instala skills desde npm
|
|
4
|
+
*/
|
|
5
|
+
export interface AddOptions {
|
|
6
|
+
directory?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Ejecuta el comando add
|
|
10
|
+
*/
|
|
11
|
+
export declare function addCommand(skillName: string | undefined, options: AddOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=add.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: add
|
|
3
|
+
* Descarga e instala skills desde npm
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from '../lib/logger.js';
|
|
6
|
+
/**
|
|
7
|
+
* Ejecuta el comando add
|
|
8
|
+
*/
|
|
9
|
+
export async function addCommand(skillName, options) {
|
|
10
|
+
logger.warning('🚧 Comando en desarrollo / Command under development');
|
|
11
|
+
logger.log('\nEl comando "add" está siendo refactorizado para soportar repositorios git y URLs directas.');
|
|
12
|
+
logger.log('The "add" command is being refactored to support git repositories and direct URLs.');
|
|
13
|
+
logger.log('\nPor ahora, por favor instala los skills manualmente o usa "init" para skills base.');
|
|
14
|
+
logger.log('For now, please install skills manually or use "init" for base skills.');
|
|
15
|
+
process.exit(0);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAA0D,MAAM,kBAAkB,CAAC;AAOlG;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAA6B,EAAE,OAAmB;IACjF,MAAM,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;IAC3G,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IACjG,MAAM,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;IACnG,MAAM,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IAErF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: centralize
|
|
3
|
+
* Busca skills dispersas y las mueve a .context/skills/
|
|
4
|
+
*/
|
|
5
|
+
export interface CentralizeOptions {
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Ejecuta el comando centralize
|
|
10
|
+
*/
|
|
11
|
+
export declare function centralizeCommand(directory: string, options: CentralizeOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=centralize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centralize.d.ts","sourceRoot":"","sources":["../../src/commands/centralize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GpG"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: centralize
|
|
3
|
+
* Busca skills dispersas y las mueve a .context/skills/
|
|
4
|
+
*/
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { existsSync, readdirSync, rmSync, renameSync, statSync } from 'fs';
|
|
7
|
+
import { logger, startSpinner, succeedSpinner } from '../lib/logger.js';
|
|
8
|
+
import { resolveDirectory, validateNotRoot, ensureDir, EDITOR_FOLDERS } from '../lib/utils.js';
|
|
9
|
+
/**
|
|
10
|
+
* Ejecuta el comando centralize
|
|
11
|
+
*/
|
|
12
|
+
export async function centralizeCommand(directory, options) {
|
|
13
|
+
try {
|
|
14
|
+
const targetDir = resolveDirectory(directory);
|
|
15
|
+
validateNotRoot(targetDir);
|
|
16
|
+
const { dryRun = false } = options;
|
|
17
|
+
// Header
|
|
18
|
+
logger.header('🔄 Iniciando centralización de Skills');
|
|
19
|
+
logger.log(`\n📁 Directorio de trabajo: ${targetDir}`);
|
|
20
|
+
if (dryRun) {
|
|
21
|
+
logger.log('🔍 Modo DRY-RUN (solo simulación)');
|
|
22
|
+
}
|
|
23
|
+
const contextDir = join(targetDir, '.context');
|
|
24
|
+
const skillsDir = join(contextDir, 'skills');
|
|
25
|
+
const rulesDir = join(contextDir, 'rules');
|
|
26
|
+
// Crear directorios si no existen
|
|
27
|
+
if (!dryRun) {
|
|
28
|
+
ensureDir(skillsDir, { dryRun });
|
|
29
|
+
ensureDir(rulesDir, { dryRun });
|
|
30
|
+
}
|
|
31
|
+
// Buscar skills dispersas
|
|
32
|
+
const spinner = startSpinner('Buscando skills dispersas...');
|
|
33
|
+
let foundSkills = 0;
|
|
34
|
+
const processedFolders = [];
|
|
35
|
+
for (const folder of EDITOR_FOLDERS) {
|
|
36
|
+
const folderPath = join(targetDir, folder);
|
|
37
|
+
const sourceSkills = join(folderPath, 'skills');
|
|
38
|
+
if (!existsSync(sourceSkills))
|
|
39
|
+
continue;
|
|
40
|
+
processedFolders.push(folder);
|
|
41
|
+
// Listar skills en la carpeta
|
|
42
|
+
const items = readdirSync(sourceSkills);
|
|
43
|
+
for (const item of items) {
|
|
44
|
+
const itemPath = join(sourceSkills, item);
|
|
45
|
+
const stat = statSync(itemPath);
|
|
46
|
+
if (!stat.isDirectory())
|
|
47
|
+
continue;
|
|
48
|
+
const targetPath = join(skillsDir, item);
|
|
49
|
+
foundSkills++;
|
|
50
|
+
if (existsSync(targetPath)) {
|
|
51
|
+
if (dryRun) {
|
|
52
|
+
logger.dryRun(`Eliminaría copia redundante: ${item}`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
rmSync(itemPath, { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (dryRun) {
|
|
60
|
+
logger.dryRun(`Movería: ${item} → .context/skills/`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
renameSync(itemPath, targetPath);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!dryRun) {
|
|
68
|
+
// Limpiar carpeta skills vacía
|
|
69
|
+
try {
|
|
70
|
+
rmSync(sourceSkills, { recursive: true });
|
|
71
|
+
}
|
|
72
|
+
catch { }
|
|
73
|
+
// Intentar borrar carpeta del editor si quedó vacía
|
|
74
|
+
try {
|
|
75
|
+
const remaining = readdirSync(folderPath);
|
|
76
|
+
if (remaining.length === 0) {
|
|
77
|
+
rmSync(folderPath, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch { }
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (foundSkills === 0) {
|
|
84
|
+
succeedSpinner('No se encontraron skills dispersas');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
succeedSpinner(`Procesadas ${foundSkills} skills de ${processedFolders.length} carpeta(s)`);
|
|
88
|
+
if (!dryRun) {
|
|
89
|
+
logger.newline();
|
|
90
|
+
for (const folder of processedFolders) {
|
|
91
|
+
logger.item(`📦 ${folder}/ → .context/skills/`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Resumen final
|
|
96
|
+
if (dryRun) {
|
|
97
|
+
logger.summary('🔍 SIMULACIÓN COMPLETADA', false);
|
|
98
|
+
logger.log('\nEjecuta sin --dry-run para aplicar los cambios.');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
logger.summary('🎉 ¡Centralización completada!');
|
|
102
|
+
logger.log('\n📁 Tu proyecto ahora usa una arquitectura limpia en .context/');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
107
|
+
logger.error(message);
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=centralize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"centralize.js","sourceRoot":"","sources":["../../src/commands/centralize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: clean
|
|
3
|
+
* Elimina carpetas redundantes de editores
|
|
4
|
+
*/
|
|
5
|
+
export interface CleanOptions {
|
|
6
|
+
yes?: boolean;
|
|
7
|
+
dryRun?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Ejecuta el comando clean
|
|
11
|
+
*/
|
|
12
|
+
export declare function cleanCommand(directory: string, options: CleanOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=clean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmH1F"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: clean
|
|
3
|
+
* Elimina carpetas redundantes de editores
|
|
4
|
+
*/
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { existsSync, readdirSync, rmSync, statSync } from 'fs';
|
|
7
|
+
import inquirer from 'inquirer';
|
|
8
|
+
import { logger, startSpinner, succeedSpinner } from '../lib/logger.js';
|
|
9
|
+
import { resolveDirectory, validateNotRoot, WHITELIST } from '../lib/utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Ejecuta el comando clean
|
|
12
|
+
*/
|
|
13
|
+
export async function cleanCommand(directory, options) {
|
|
14
|
+
try {
|
|
15
|
+
const targetDir = resolveDirectory(directory);
|
|
16
|
+
validateNotRoot(targetDir);
|
|
17
|
+
const { yes, dryRun } = options;
|
|
18
|
+
// Header
|
|
19
|
+
logger.header('🧹 Escaneo de carpetas de agentes redundantes');
|
|
20
|
+
logger.log(`\n📁 Directorio de trabajo: ${targetDir}`);
|
|
21
|
+
if (dryRun) {
|
|
22
|
+
logger.log('🔍 Modo DRY-RUN (solo simulación)');
|
|
23
|
+
}
|
|
24
|
+
if (yes) {
|
|
25
|
+
logger.log('🤖 Modo AUTO-CONFIRM');
|
|
26
|
+
}
|
|
27
|
+
// Buscar carpetas candidatas a borrar
|
|
28
|
+
const spinner = startSpinner('Buscando carpetas redundantes...');
|
|
29
|
+
const items = readdirSync(targetDir);
|
|
30
|
+
const candidates = [];
|
|
31
|
+
for (const item of items) {
|
|
32
|
+
// Solo carpetas ocultas
|
|
33
|
+
if (!item.startsWith('.'))
|
|
34
|
+
continue;
|
|
35
|
+
// Verificar lista blanca
|
|
36
|
+
if (WHITELIST.includes(item))
|
|
37
|
+
continue;
|
|
38
|
+
const itemPath = join(targetDir, item);
|
|
39
|
+
try {
|
|
40
|
+
const stat = statSync(itemPath);
|
|
41
|
+
if (!stat.isDirectory())
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Verificar si tiene skills o rules adentro
|
|
48
|
+
const hasSkills = existsSync(join(itemPath, 'skills'));
|
|
49
|
+
const hasRules = existsSync(join(itemPath, 'rules'));
|
|
50
|
+
if (hasSkills || hasRules) {
|
|
51
|
+
candidates.push({
|
|
52
|
+
path: itemPath,
|
|
53
|
+
name: item,
|
|
54
|
+
contents: [hasSkills && 'skills', hasRules && 'rules'].filter(Boolean).join(', ')
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Verificar si encontramos algo
|
|
59
|
+
if (candidates.length === 0) {
|
|
60
|
+
succeedSpinner('¡Todo limpio! No se encontraron carpetas redundantes');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
succeedSpinner(`Encontradas ${candidates.length} carpeta(s) redundantes`);
|
|
64
|
+
// Listar candidatos
|
|
65
|
+
logger.newline();
|
|
66
|
+
logger.divider();
|
|
67
|
+
for (const candidate of candidates) {
|
|
68
|
+
logger.log(` ❌ ${candidate.name} (contiene: ${candidate.contents})`);
|
|
69
|
+
}
|
|
70
|
+
logger.divider();
|
|
71
|
+
// Modo dry-run
|
|
72
|
+
if (dryRun) {
|
|
73
|
+
logger.dryRun('Se eliminarían las carpetas listadas arriba.');
|
|
74
|
+
logger.log('Ejecuta sin --dry-run para aplicar los cambios.');
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Confirmación
|
|
78
|
+
if (!yes) {
|
|
79
|
+
logger.log('\n⚠️ Estas carpetas NO son \'.context\' y parecen ser generadas por herramientas externas.');
|
|
80
|
+
const { confirm } = await inquirer.prompt([
|
|
81
|
+
{
|
|
82
|
+
type: 'confirm',
|
|
83
|
+
name: 'confirm',
|
|
84
|
+
message: '¿Estás seguro de que deseas ELIMINAR estas carpetas permanentemente?',
|
|
85
|
+
default: false
|
|
86
|
+
}
|
|
87
|
+
]);
|
|
88
|
+
if (!confirm) {
|
|
89
|
+
logger.success('🛑 Operación cancelada. No se ha borrado nada.');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Eliminar
|
|
94
|
+
const deleteSpinner = startSpinner('Eliminando carpetas...');
|
|
95
|
+
for (const candidate of candidates) {
|
|
96
|
+
rmSync(candidate.path, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
succeedSpinner(`Eliminadas ${candidates.length} carpeta(s)`);
|
|
99
|
+
// Resumen final
|
|
100
|
+
logger.summary('✨ Limpieza completada exitosamente');
|
|
101
|
+
logger.log(`\nAhora solo usa '.context/'.`);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
105
|
+
logger.error(message);
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comando: doctor
|
|
3
|
+
* Verifica integridad de .context y archivos puente, ofrece reparaciones
|
|
4
|
+
*/
|
|
5
|
+
export interface DoctorOptions {
|
|
6
|
+
fix?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Ejecuta el comando doctor
|
|
10
|
+
*/
|
|
11
|
+
export declare function doctorCommand(directory: string, options: DoctorOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAUD;;GAEG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6K5F"}
|