{"_id":"@angelardanaz/ai","_rev":"15-8bca3daf3c932b3636c73be7f2a93a35","name":"@angelardanaz/ai","dist-tags":{"latest":"0.1.19"},"versions":{"0.1.5":{"name":"@angelardanaz/ai","version":"0.1.5","_id":"@angelardanaz/ai@0.1.5","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"1c87301b285bb787214dde72d324ad7369136129","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.5.tgz","fileCount":31,"integrity":"sha512-cEuSXvBht7PlM+457GW+n3j/sYg/vUjbTC8vbmBKD5RZY08SYkjkv7FZD0a9b4AUISOtXiFWJiCWIZDHcOG0cQ==","signatures":[{"sig":"MEUCIQDT63HP+orN0RTchE+VFRJweZAHfzpg6WdHYNKnh1zyAwIgdzoAzakOMIOcRSuhaw7S+1muXJ01ADrsQjgM9J/hrIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231727},"type":"module","gitHead":"6e4d9f7ef6c1ec1124838931642b8db48a719be1","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.5_1774252957832_0.5409355002977607","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@angelardanaz/ai","version":"0.1.7","_id":"@angelardanaz/ai@0.1.7","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"5b36bf8a0ac6406a9de74feeea08e02993a7c0f6","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.7.tgz","fileCount":31,"integrity":"sha512-iEF5/knvurWDGbl7m/hI4PnRbkFUB10al6sIUMMqUe2r30A5Cv2UnbmlJ0fbC8iMJhUU6byhbIAu4ZUciSF1KA==","signatures":[{"sig":"MEUCIDJMxRWCf8OnccSFcem1FDiEQqPOGJ5ttj/2qlXQ9ongAiEA/8FAZAfeccso34LabaCFgyW9pu9WKf+6U/cZHjtPAcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231769},"type":"module","gitHead":"49d349eb8bb39619fb98ff98c4ad47e636d987f3","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.7_1774253548509_0.7469821214429222","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@angelardanaz/ai","version":"0.1.9","_id":"@angelardanaz/ai@0.1.9","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"4d18fb72636714f151091c23389319f55236f2bd","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.9.tgz","fileCount":32,"integrity":"sha512-NBUPi4HOJeKP6KNQY+8grkLdW4Rg5X1DBRcnSJgvgmsBc7vKrAXebvrc2Mr9uTbFaxuitacTB/WM/ylWHUVjTQ==","signatures":[{"sig":"MEQCIARXsfxSgCjRbuSnaRUi41w/4/+y7/ZuqbzbKWn5bJExAiAL6GrKUfW2vVDkRRmmi5SnpN9MIH0SKxooIzpzi+5QNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236824},"type":"module","gitHead":"a3f868ed33219d40e2d934c92dd917a4bc92c47c","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.9_1774261695721_0.07734115540861475","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@angelardanaz/ai","version":"0.1.10","_id":"@angelardanaz/ai@0.1.10","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"6fb26c03c675ac0441b072d9127f9d596f3fcd4a","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.10.tgz","fileCount":32,"integrity":"sha512-yDpffvhLXvjUPciVsjZhs6ZQwb7boii5jtDe4smqJvAf/gJIqJQMiJtBYdQV/2brlBJUjI9vW3uKN0sridwLEA==","signatures":[{"sig":"MEQCIBa5TxH0pLlOE44Ydq0QNm86niJ31Xr+zCqGRlVjDGv7AiB84h3mLA9VbwomG/VKHLfs1KcSd5kCKyirYR3KBrP61Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237427},"type":"module","gitHead":"7a49028363de49d18dea3272fa46a9b7ca5ed5b2","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.10_1774262663802_0.5572296743518192","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@angelardanaz/ai","version":"0.1.13","_id":"@angelardanaz/ai@0.1.13","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"d0a757a1c2e8f604a6ac38ac9cc4c3147862c6a2","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.13.tgz","fileCount":21,"integrity":"sha512-cyWMyayCKz7f0MYA7AV60FsQOxD7kVvUsUknDs59gm4jrkj0LVJfOLMJ52PQtD5r6AO6waffweN2RtNk38z2GQ==","signatures":[{"sig":"MEQCIDbv9nB5H94NQIx4JiJaLvblLjwWhhDGWR8NyH/jbGh5AiBZlMDhvde4ZsDnJseVB61I/Bl33iSz7TVpiSKINbHQxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186037},"type":"module","gitHead":"21cf2940000f201f602542e8efabef4e955091ff","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.13_1774266251294_0.6193777696996059","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@angelardanaz/ai","version":"0.1.14","_id":"@angelardanaz/ai@0.1.14","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"2c9dd3b108a3f92758176e8f795f3c54a8e32b8e","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.14.tgz","fileCount":22,"integrity":"sha512-6Q+l//5X0U5MmRndDNuYVXdYnGDKlpp1TV+0t9vc7gQuytvR0Qn67rFyojxCoA2p54oWLFcCY26xQAuGKE3ybA==","signatures":[{"sig":"MEYCIQC6zreKD+sGEDofavB/kRHoLWFHqyGSxZi+PcLzuGhwRgIhAPCj6ZZqQw7E5t9XjUSJc/dA+hYaEQlDm7KVhemlAjEu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192746},"type":"module","gitHead":"3235872eec418ce01c9825c5c2113b2f624f8c7e","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.14_1774268562570_0.8706174042790784","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@angelardanaz/ai","version":"0.1.15","_id":"@angelardanaz/ai@0.1.15","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"2641867ce4eb25c1333ca512a3c66655d172a7c2","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.15.tgz","fileCount":22,"integrity":"sha512-K36Ecd4TZW5hPWczwAkzWdPnMXe/ZX+SjnPnfQzCeTbeT5Gj4OoCWWV8EgQGgtUW7LErWyLYpXLEGoVcD9CIpw==","signatures":[{"sig":"MEUCIAIzKCOCYNQhzELS0aq8dR5HtDTYS7fKanzx5LRgeYwJAiEAwCNpXzgGAXz0Yywu+64hFwxJ58r+3CZJNOGOENjmZk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193736},"type":"module","gitHead":"c84113646c6efe53885f6507c8667a67ae3f0c70","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.15_1774269343253_0.8090341155213121","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@angelardanaz/ai","version":"0.1.16","_id":"@angelardanaz/ai@0.1.16","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js"},"dist":{"shasum":"0d7b357378f7e9b12a8298d6bc6f83fa44af7957","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.16.tgz","fileCount":22,"integrity":"sha512-4fQvLQ5zHSatbcwNN5Lrkp07nhzgRKvKbWBxt8/lD2PRQZs/wWFmTbM4ET9zZAW141DKVMr9xE8czflLyvLEOg==","signatures":[{"sig":"MEQCIAVFfOJ+MrMDm9JXEzBX01N90H95j/WacSWw+1vTc6pxAiAJ+Hs8hytHJcnYxa62fYxMRBLXH6dBRCnFhw+p0HMubQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193736},"type":"module","gitHead":"35917f2987ef48827debfc12aee2ea508dfaa66a","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@clack/prompts":"1.1.0"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.16_1774270962646_0.8067960126833995","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@angelardanaz/ai","version":"0.1.17","_id":"@angelardanaz/ai@0.1.17","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js","ai-mcp":"dist/mcp-server.js"},"dist":{"shasum":"c8af1e56eddb712cd638b30f11c47cfddd18dd1a","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.17.tgz","fileCount":18,"integrity":"sha512-AkYBNqszkGKvq+y8oTvsFU0Bn7RmIM3/iU4Zrdeo9aaJgZ7cPoFUYD4k0tpxKOdecVNfNiWLcFrvQfS0hPak8A==","signatures":[{"sig":"MEUCIQCpt+PjYnA3r7RYEZJxkKLyrHt3kJSfPs8U4t18mTjJvgIgWsTyQW3vFpfoMgeNzDOAYpbGtcCn7Mb3KWgQ04GSEmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1145103},"type":"module","gitHead":"712b2238a1aa8f75068e2852f1ab5688061ed41b","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts src/mcp-server.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@clack/prompts":"1.1.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.17_1774290874677_0.933481399771976","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@angelardanaz/ai","version":"0.1.18","_id":"@angelardanaz/ai@0.1.18","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"bin":{"ai":"dist/cli.js","ai-mcp":"dist/mcp-server.js"},"dist":{"shasum":"1f7eafcfb17966768a5b4fea65017cc85b8f14a2","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.18.tgz","fileCount":18,"integrity":"sha512-dkWWxyd7k3VF9HynEQ2wwE3847/t+8Wym85wfhN5DtdawWUPaVyeKSa5UVVnF9jj2060oFbCIt0BSoFR5cKqUQ==","signatures":[{"sig":"MEUCIAcNyD791Va3WVS4DFKf9LKhYKWP5JAuYk35+XvA5+GIAiEA0FPmwOSqezr3TTCnyj/Yznwb79o0XbKNxRgqMQ5odrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2189608},"type":"module","gitHead":"b56b8e5c21c5444f609d54801247d7219a1eb1aa","scripts":{"dev":"bun src/cli.ts","build":"bun build src/cli.ts src/mcp-server.ts --outdir dist --target node","release":"bash scripts/release.sh","typecheck":"tsc --noEmit"},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"_npmVersion":"10.8.2","description":"AI framework with slash commands for Claude Code","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@clack/prompts":"1.1.0","@modelcontextprotocol/sdk":"1.27.1"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.7","devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.18_1774291452710_0.035848638895839","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@angelardanaz/ai","version":"0.1.19","description":"AI framework with slash commands for Claude Code","type":"module","packageManager":"bun@1.3.7","bin":{"ai":"dist/cli.js","ai-mcp":"dist/mcp-server.js"},"scripts":{"build":"bun build src/cli.ts src/mcp-server.ts --outdir dist --target node","dev":"bun src/cli.ts","typecheck":"tsc --noEmit","release":"bash scripts/release.sh"},"devDependencies":{"@types/bun":"latest","typescript":"^5.0.0"},"dependencies":{"@clack/prompts":"1.1.0","@modelcontextprotocol/sdk":"1.27.1"},"_id":"@angelardanaz/ai@0.1.19","gitHead":"b56b8e5c21c5444f609d54801247d7219a1eb1aa","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3e/RhxS3RjEArmOOpjkIXZoYcrxdCRccIXETCb+fAexYScmnah0xCUclpNQ7plbTu/VqyZ3qh7qZkW0Ty/hwXA==","shasum":"bda713ee65ddad9ded40d003b21d3bfea6d5e1a2","tarball":"https://registry.npmjs.org/@angelardanaz/ai/-/ai-0.1.19.tgz","fileCount":18,"unpackedSize":2189608,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCu9dKGEAvubAfgLrScc9GdiKS8vVw9eeV5UUmNwa5w0gIhAK6tfJ6VFoL/BcSJIqsuz+OEtAZC5kF+VnZN6dU+CtO6"}]},"_npmUser":{"name":"angelardanaz","email":"angelardanaz2@gmail.com"},"directories":{},"maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai_0.1.19_1774291932156_0.569785211802456"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T08:02:37.757Z","modified":"2026-03-23T18:52:12.464Z","0.1.2":"2026-03-23T07:06:24.039Z","0.1.3":"2026-03-23T07:16:26.047Z","0.1.4":"2026-03-23T07:34:51.110Z","0.1.5":"2026-03-23T08:02:37.975Z","0.1.7":"2026-03-23T08:12:28.688Z","0.1.9":"2026-03-23T10:28:15.852Z","0.1.10":"2026-03-23T10:44:23.966Z","0.1.13":"2026-03-23T11:44:11.452Z","0.1.14":"2026-03-23T12:22:42.712Z","0.1.15":"2026-03-23T12:35:43.426Z","0.1.16":"2026-03-23T13:02:42.815Z","0.1.17":"2026-03-23T18:34:34.963Z","0.1.18":"2026-03-23T18:44:12.926Z","0.1.19":"2026-03-23T18:52:12.366Z"},"description":"AI framework with slash commands for Claude Code","maintainers":[{"name":"angelardanaz","email":"angelardanaz2@gmail.com"}],"readme":"# @angelardanaz/ai\n\nFramework de IA para Claude Code que instala slash commands estructurados en tu proyecto, dándole continuidad y orden al desarrollo asistido por IA a lo largo de múltiples sesiones.\n\n## Instalación\n\n```bash\nnpx @angelardanaz/ai@latest install\n```\n\n## Uso\n\nTras instalar, tendrás cinco slash commands disponibles en tu herramienta de IA:\n\n| Comando | Descripción |\n|---------|-------------|\n| `/framework:init` | Inicializa `.framework/` con el contenido real del proyecto (ejecutar una vez tras instalar) |\n| `/framework:research` | Explora y descubre antes de planear — úsalo cuando hay incógnitas que resolver primero |\n| `/framework:plan` | Explora el código, identifica riesgos y produce un plan antes de escribir nada |\n| `/framework:apply` | Ejecuta el plan aprobado paso a paso |\n| `/framework:unify` | Revisa los cambios, actualiza la documentación y propone el commit |\n\n### Flujo de trabajo\n\n```\n/framework:init (una vez)\n\n        ┌─────────────────────────────────────────────────┐\n        │                                                 │\n  /framework:research  →  /framework:plan  →  apruebas  →  /framework:apply  →  /framework:unify\n  (si hay incógnitas)                                                               │\n        └─────────────────────────────────────────────────────────────────────────┘\n```\n\n> **`/framework:unify` es obligatorio al final de cada ciclo.** Es el paso que sincroniza `.framework/` con los cambios reales del código, archiva el contexto de fase cuando termina, y propone el commit. Sin él, el estado del proyecto se desincroniza y la siguiente sesión pierde continuidad.\n\n## Herramientas soportadas\n\n| Herramienta | Slash commands | Contexto |\n|-------------|---------------|----------|\n| Claude Code | ✅ | `CLAUDE.md` |\n| Cursor | ✅ | `.cursorrules` |\n| GitHub Copilot | — | `.github/copilot-instructions.md` |\n| Codex | — | `AGENTS.md` |\n| Windsurf | — | `.windsurfules` |\n\n## Comandos CLI\n\n```bash\nnpx @angelardanaz/ai@latest install      # Instala slash commands en el proyecto\nnpx @angelardanaz/ai@latest update       # Actualiza los slash commands a la versión más reciente\nnpx @angelardanaz/ai@latest status       # Muestra qué está instalado en el proyecto actual\nnpx @angelardanaz/ai@latest uninstall    # Elimina los slash commands instalados\n```\n\n## Qué hace `install`\n\n1. Detecta tu herramienta de IA y framework frontend automáticamente\n2. Copia los slash commands al directorio correspondiente (ej. `.claude/commands/framework/`)\n3. Descarga la documentación oficial del framework con el nombre del framework (ej. `astro.txt`, `next-js.txt`)\n4. Genera el archivo de contexto del proyecto (`CLAUDE.md`, `.cursorrules`, etc.)\n5. Inicializa `.framework/` con plantillas de documentación estructurada\n6. Registra el MCP server `angelardanaz-ai` en `.claude/settings.json`\n7. Registra un Stop hook que ejecuta `npx @angelardanaz/ai sync` al finalizar cada sesión\n\n### Auto-detección\n\nDurante la instalación se detectan automáticamente:\n\n- **Gestor de paquetes** — bun, pnpm, yarn, npm\n- **Runtime** — versión de Bun desde `packageManager`, o Node.js desde `.nvmrc` / `engines`\n- **Lockfile** — `bun.lock`, `pnpm-lock.yaml`, `yarn.lock`, `package-lock.json`\n- **Lenguaje** — TypeScript o JavaScript\n- **Framework CLI** — commander, yargs, oclif, ink, meow…\n- **Testing** — vitest, jest, playwright, cypress…\n- **Linter** — eslint, biome, oxlint\n\n## `.framework/`\n\nEl directorio `.framework/` contiene la documentación estructurada del proyecto:\n\n```\n.framework/\n├── PROJECT.md          # Requisitos y contexto de negocio\n├── MILESTONES.md       # Historial de versiones entregadas\n├── framework.json      # Configuración base del proyecto (AI tool, versión)\n├── phases/\n│   └── phase-XX-<nombre>.md   # Contexto archivado de cada fase al completarse\n└── codebase/\n    ├── STACK.md        # Stack tecnológico auto-rellenado\n    ├── ARCHITECTURE.md # Decisiones arquitectónicas\n    ├── CONVENTIONS.md  # Convenciones de código\n    └── …\n```\n\nEl estado del workflow (posición en el loop, fase activa, issues) lo gestiona el MCP server y se persiste en `~/.config/angelardanaz-ai/<hash>/` — fuera del repositorio.\n\n## MCP Server\n\nAl instalar, se registra automáticamente el MCP server `angelardanaz-ai` en `.claude/settings.json`. Este servidor expone las siguientes tools para que los slash commands mantengan el estado del workflow entre sesiones:\n\n| Tool | Descripción |\n|------|-------------|\n| `get_state` | Lee la posición actual del loop (IDLE / PLAN / APPLY / UNIFY) |\n| `update_state` | Actualiza la posición y anota actividad reciente |\n| `get_roadmap` | Consulta fases y planes del proyecto |\n| `create_issue` | Registra una mejora diferida descubierta durante la ejecución |\n\nEl estado se guarda en `~/.config/angelardanaz-ai/<hash>/` (fuera del repo), identificado por un hash del path del proyecto.\n\n### Stop hook\n\nSe registra un hook en `.claude/settings.json` que ejecuta `npx @angelardanaz/ai sync` cada vez que Claude Code termina una sesión. Esto actualiza el campo `last_activity` en el estado persistido, permitiendo saber cuándo fue la última vez que se trabajó en el proyecto.\n\n## Requisitos\n\n- Node.js 18+ o Bun\n\n","readmeFilename":"README.md"}