{"_id":"@apifactory/openapi-builder","_rev":"6-32b015376212597aa738e26cfb9a3f56","name":"@apifactory/openapi-builder","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@apifactory/openapi-builder","version":"1.0.0","keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"author":"","license":"MIT","_id":"@apifactory/openapi-builder@1.0.0","maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"bin":{"openapi-builder":"bin/main.js"},"dist":{"shasum":"6cea053614c60a30fef56bd6ea98c7e95cff2652","tarball":"https://registry.npmjs.org/@apifactory/openapi-builder/-/openapi-builder-1.0.0.tgz","fileCount":25,"integrity":"sha512-7N+fc5Zfuc67jQzt8mZSKYYqfxTdJX48AWVm0Y9zum5LAh45JlirXO9KMwEatZYmKOvSPwf+LEHlTOg1KiOAcA==","signatures":[{"sig":"MEUCICKnJu5gPF1wFQPZULBz/JrwYNFIsML/xsYRiwU8akU8AiEA2XEaRqcOuht/+2NsX3i1+nK8fbfKTOe8LehBeet4fds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132790},"type":"commonjs","gitHead":"25aa710c1f1696ab3a5ba19834314047c03db5f5","scripts":{"docs":"node bin/main.js docs","bundle":"node bin/main.js bundle","swagger2":"node bin/main.js swagger2","modularize":"node bin/main.js modularize"},"_npmUser":{"name":"miguelcespedes","email":"support@apifactory.org"},"_npmVersion":"11.6.1","description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"chalk":"^4.1.2","js-yaml":"4.1.0","prompts":"^2.4.2","inquirer":"8.2.6","commander":"12.1.0","widdershins":"4.0.1","@redocly/cli":"1.19.0","api-spec-converter":"2.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/openapi-builder_1.0.0_1764679165205_0.7886933604043473","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@apifactory/openapi-builder","version":"1.0.1","keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"author":"","license":"MIT","_id":"@apifactory/openapi-builder@1.0.1","maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"bin":{"openapi-builder":"bin/main.js"},"dist":{"shasum":"382824fc5c7a01d3faed6ad241626a2fd2b057ae","tarball":"https://registry.npmjs.org/@apifactory/openapi-builder/-/openapi-builder-1.0.1.tgz","fileCount":49,"integrity":"sha512-+5r1AFJGjj5bul3P7LLDRqtlAmN+1ro3oydN0YKaea49JIycUABMMCItu5LHnDjJi+7kZHlLd8Q7qGhut+eJnw==","signatures":[{"sig":"MEYCIQDdHO8H7XassO+e8k5cYnrHpvmNvoyJCNQBOIF2hrL04wIhAP/f4D7LXpzsm/xkZLSU82J1UzK4ltqgDhVMf15UJiHN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231235},"jest":{"testMatch":["**/tests/**/*.test.js"],"testEnvironment":"node","coverageDirectory":"coverage","coverageThreshold":{"global":{"lines":50,"branches":50,"functions":50,"statements":50}},"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"collectCoverageFrom":["bin/**/*.js","!bin/main.js","!bin/**/*.test.js","!bin/test-entities.js"],"testPathIgnorePatterns":["/node_modules/","/dist/","/coverage/","/api/","/src/","/docs/"],"modulePathIgnorePatterns":["<rootDir>/tests/output/"]},"type":"commonjs","gitHead":"30f18f0ee9c7e96f55f55e2e9737cafbac7222cf","scripts":{"docs":"node bin/main.js docs","test":"jest","bundle":"node bin/main.js bundle","test:ci":"jest --ci --coverage --maxWorkers=2","swagger2":"node bin/main.js swagger2","test:unit":"jest tests/unit","modularize":"node bin/main.js modularize","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest tests/integration"},"_npmUser":{"name":"miguelcespedes","email":"support@apifactory.org"},"_npmVersion":"10.9.3","description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^4.1.2","prompts":"^2.4.2","inquirer":"8.2.6","commander":"12.1.0","widdershins":"4.0.1","@redocly/cli":"1.19.0","api-spec-converter":"2.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","knip":"^5.77.1","madge":"^8.0.0","js-yaml":"^4.1.1","@types/jest":"^30.0.0","dependency-cruiser":"^17.3.5"},"_npmOperationalInternal":{"tmp":"tmp/openapi-builder_1.0.1_1767627820728_0.7103079284925078","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@apifactory/openapi-builder","version":"1.0.2","keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"author":"","license":"MIT","_id":"@apifactory/openapi-builder@1.0.2","maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"bin":{"openapi-builder":"bin/main.js"},"dist":{"shasum":"69896895430fbfbfafd4cb887e2ce0f99ee58097","tarball":"https://registry.npmjs.org/@apifactory/openapi-builder/-/openapi-builder-1.0.2.tgz","fileCount":49,"integrity":"sha512-DrFVFB69ql6rPblSrps7fFMJTPD3wlA8igKmrscQZdCFxqWszVoRb7jnSfzRlrrEmPgSpSTzVttyF/0chhlzkA==","signatures":[{"sig":"MEUCIQDPn+thWkumJ6flr7QHb8wBw8aLwn9ama6vgOfQyTeNcgIgHErY3bkgH6BBcFLzCF4n66kG+YOUG41sBkY8Iya//RY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236944},"jest":{"testMatch":["**/tests/**/*.test.js"],"testEnvironment":"node","coverageDirectory":"coverage","coverageThreshold":{"global":{"lines":50,"branches":50,"functions":50,"statements":50}},"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"collectCoverageFrom":["bin/**/*.js","!bin/main.js","!bin/**/*.test.js","!bin/test-entities.js"],"testPathIgnorePatterns":["/node_modules/","/dist/","/coverage/","/api/","/src/","/docs/"],"modulePathIgnorePatterns":["<rootDir>/tests/output/"]},"type":"commonjs","engines":{"node":">=18"},"gitHead":"3dc1ac19e267ea7f520e5a577d6188129645e337","scripts":{"docs":"node bin/main.js docs","test":"jest","bundle":"node bin/main.js bundle","test:ci":"jest --ci --coverage --maxWorkers=2","swagger2":"node bin/main.js swagger2","test:unit":"jest tests/unit","modularize":"node bin/main.js modularize","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest tests/integration"},"_npmUser":{"name":"miguelcespedes","email":"support@apifactory.org"},"_npmVersion":"10.9.3","description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^4.1.2","js-yaml":"^4.1.1","prompts":"^2.4.2","inquirer":"8.2.6","commander":"12.1.0","widdershins":"4.0.1","@redocly/cli":"1.19.0","api-spec-converter":"2.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","knip":"^5.77.1","madge":"^8.0.0","@types/jest":"^30.0.0","dependency-cruiser":"^17.3.5"},"_npmOperationalInternal":{"tmp":"tmp/openapi-builder_1.0.2_1767635101711_0.691132889196153","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@apifactory/openapi-builder","version":"1.0.3","keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"author":"","license":"MIT","_id":"@apifactory/openapi-builder@1.0.3","maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"bin":{"openapi-builder":"bin/main.js"},"dist":{"shasum":"6ef07b5ce49de3ecb0aefa4869848a32bdf01f81","tarball":"https://registry.npmjs.org/@apifactory/openapi-builder/-/openapi-builder-1.0.3.tgz","fileCount":49,"integrity":"sha512-60SYa5ANHAFa6hplFPH7ZarEqwS63VmtQmXcejPZGwmn+h/Y1EtkEOK5iC1JiuSCnGbBJ22i24kBAZedsZhCcg==","signatures":[{"sig":"MEYCIQD5c/qbCZKgfFrChckIDAUnTJQflnGydbLJeDuqAj1iBwIhAKjKWRCc1tPxVzdnQP/eqmPl6PO6ov3DWltTXmAJZhHv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242985},"jest":{"testMatch":["**/tests/**/*.test.js"],"testEnvironment":"node","coverageDirectory":"coverage","coverageThreshold":{"global":{"lines":50,"branches":50,"functions":50,"statements":50}},"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"collectCoverageFrom":["bin/**/*.js","!bin/main.js","!bin/**/*.test.js","!bin/test-entities.js"],"testPathIgnorePatterns":["/node_modules/","/dist/","/coverage/","/api/","/src/","/docs/"],"modulePathIgnorePatterns":["<rootDir>/tests/output/"]},"type":"commonjs","engines":{"node":">=18"},"gitHead":"3dc1ac19e267ea7f520e5a577d6188129645e337","scripts":{"docs":"node bin/main.js docs","test":"jest","bundle":"node bin/main.js bundle","test:ci":"jest --ci --coverage --maxWorkers=2","swagger2":"node bin/main.js swagger2","test:unit":"jest tests/unit","modularize":"node bin/main.js modularize","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest tests/integration"},"_npmUser":{"name":"miguelcespedes","email":"support@apifactory.org"},"_npmVersion":"10.9.3","description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^4.1.2","js-yaml":"^4.1.1","prompts":"^2.4.2","inquirer":"8.2.6","commander":"12.1.0","widdershins":"4.0.1","@redocly/cli":"1.19.0","api-spec-converter":"2.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","knip":"^5.77.1","madge":"^8.0.0","@types/jest":"^30.0.0","dependency-cruiser":"^17.3.5"},"_npmOperationalInternal":{"tmp":"tmp/openapi-builder_1.0.3_1767650900546_0.8148840924160119","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@apifactory/openapi-builder","version":"1.0.4","keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"author":"","license":"MIT","_id":"@apifactory/openapi-builder@1.0.4","maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"bin":{"openapi-builder":"bin/main.js"},"dist":{"shasum":"2410447db3a535c023b95565945901730bed0a28","tarball":"https://registry.npmjs.org/@apifactory/openapi-builder/-/openapi-builder-1.0.4.tgz","fileCount":50,"integrity":"sha512-V/Yig7/B1f4PobjlrnCSS1BxrwKCeObaR38hXHRoNHjlEA/EyIne1NU3PIJBhCcoHqiqh/v3wRLH/30+CA9wNg==","signatures":[{"sig":"MEQCIE5kaFjAGBTEdcaaDX7R7SHvaExw+ZcezA84unJenFCkAiBgWlZKqjn5VNHY/7JaBJU/aahRGjOKReXYEU1kX3VJtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253661},"jest":{"testMatch":["**/tests/**/*.test.js"],"testEnvironment":"node","coverageDirectory":"coverage","coverageThreshold":{"global":{"lines":50,"branches":50,"functions":50,"statements":50}},"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"collectCoverageFrom":["bin/**/*.js","!bin/main.js","!bin/**/*.test.js","!bin/test-entities.js"],"testPathIgnorePatterns":["/node_modules/","/dist/","/coverage/","/api/","/src/","/docs/"],"modulePathIgnorePatterns":["<rootDir>/tests/output/"]},"type":"commonjs","engines":{"node":">=18"},"gitHead":"10d4dec6c97283fa2c22d911a76ba7ec83fd1fea","scripts":{"docs":"node bin/main.js docs","test":"jest","bundle":"node bin/main.js bundle","test:ci":"jest --ci --coverage --maxWorkers=2","swagger2":"node bin/main.js swagger2","test:unit":"jest tests/unit","modularize":"node bin/main.js modularize","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest tests/integration"},"_npmUser":{"name":"miguelcespedes","email":"support@apifactory.org"},"_npmVersion":"10.9.3","description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chalk":"^4.1.2","js-yaml":"^4.1.1","prompts":"^2.4.2","inquirer":"8.2.6","commander":"12.1.0","widdershins":"4.0.1","@redocly/cli":"1.19.0","api-spec-converter":"2.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","knip":"^5.77.1","madge":"^8.0.0","@types/jest":"^30.0.0","dependency-cruiser":"^17.3.5"},"_npmOperationalInternal":{"tmp":"tmp/openapi-builder_1.0.4_1767817330553_0.2879339633834268","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@apifactory/openapi-builder","version":"1.0.5","description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","type":"commonjs","publishConfig":{"access":"public"},"bin":{"openapi-builder":"bin/main.js"},"engines":{"node":">=18"},"scripts":{"modularize":"node bin/main.js modularize","bundle":"node bin/main.js bundle","docs":"node bin/main.js docs","swagger2":"node bin/main.js swagger2","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest tests/integration","test:unit":"jest tests/unit","test:ci":"jest --ci --coverage --maxWorkers=2"},"keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"author":"","license":"MIT","dependencies":{"@redocly/cli":"1.19.0","api-spec-converter":"2.12.0","chalk":"^4.1.2","commander":"12.1.0","inquirer":"8.2.6","js-yaml":"^4.1.1","prompts":"^2.4.2","widdershins":"4.0.1"},"devDependencies":{"@types/jest":"^30.0.0","dependency-cruiser":"^17.3.5","jest":"^30.2.0","knip":"^5.77.1","madge":"^8.0.0"},"jest":{"testEnvironment":"node","coverageDirectory":"coverage","collectCoverageFrom":["bin/**/*.js","!bin/main.js","!bin/**/*.test.js","!bin/test-entities.js"],"testMatch":["**/tests/**/*.test.js"],"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"coverageThreshold":{"global":{"branches":50,"functions":50,"lines":50,"statements":50}},"testPathIgnorePatterns":["/node_modules/","/dist/","/coverage/","/api/","/src/","/docs/"],"modulePathIgnorePatterns":["<rootDir>/tests/output/"]},"_id":"@apifactory/openapi-builder@1.0.5","gitHead":"7746238559032798f90929e1257237125c11134e","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-9Mrwos0VWPM5nOG+TK9LWv1B1BdIZ7EbYUZGDkCq7twL6O5dMdvVKbXqjWxHmk4meS4mCkwF45kefi89ceZnOw==","shasum":"a76683181822ef2cdb8bd446959a754717305505","tarball":"https://registry.npmjs.org/@apifactory/openapi-builder/-/openapi-builder-1.0.5.tgz","fileCount":50,"unpackedSize":253038,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCHwOAR2lIB9GidTUFjZ+7RS0amLzKgkJCnsKOMIiaKJkCIGuheAKUKVT2NxC+8amGWGvZYPz9G8JNUcERHYh5ub2M"}]},"_npmUser":{"name":"miguelcespedes","email":"support@apifactory.org"},"directories":{},"maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openapi-builder_1.0.5_1767979760391_0.6915305890528376"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T12:39:25.106Z","modified":"2026-01-09T17:29:20.752Z","1.0.0":"2025-12-02T12:39:25.403Z","1.0.1":"2026-01-05T15:43:40.887Z","1.0.2":"2026-01-05T17:45:01.901Z","1.0.3":"2026-01-05T22:08:20.700Z","1.0.4":"2026-01-07T20:22:10.733Z","1.0.5":"2026-01-09T17:29:20.535Z"},"license":"MIT","keywords":["oas3","openapi","swagger","modularize","cli","redocly","widdershins","documentation","api","bundle"],"description":"CLI para trabajar con contratos OpenAPI 3: modularizar, generar bundle, documentación Markdown y convertir a Swagger 2.0.","maintainers":[{"name":"miguelcespedes","email":"support@apifactory.org"}],"readme":"# OpenAPI Builder\r\n\r\nCLI para trabajar con contratos OpenAPI 3: modularizar especificaciones monolíticas, generar bundle consolidado, documentación Markdown y convertir a Swagger 2.0.\r\n\r\n## 🎯 Propósito\r\n\r\nHerramienta orientada a \"API contract operations\" que permite convertir una especificación OpenAPI 3.x monolítica en una estructura modular mantenible, consolidarla en un bundle validado, generar documentación y exportar a Swagger 2.0 para compatibilidad legacy.\r\n\r\n## ✨ Características\r\n\r\n- **Modularización**: Divide especificaciones OpenAPI monolíticas en estructura modular organizada\r\n- **Bundling**: Consolida módulos en un bundle OpenAPI 3 validado\r\n- **Documentación**: Genera documentación Markdown automática desde el bundle\r\n- **Compatibilidad**: Convierte OpenAPI 3.x a Swagger 2.0\r\n- **Clean Architecture**: Implementa arquitectura hexagonal (capas, puertos/adaptadores)\r\n- **Validación**: Valida especificaciones antes y después de las transformaciones\r\n\r\n## 📋 Requisitos\r\n\r\n- Node.js >= 16\r\n- npm >= 8\r\n\r\n## 📦 Instalación\r\n\r\n```bash\r\nnpm install -g @apifactory/openapi-builder\r\n```\r\n\r\nO como dependencia del proyecto:\r\n\r\n```bash\r\nnpm install --save-dev @apifactory/openapi-builder\r\n```\r\n\r\n## 🚀 Uso\r\n\r\n### Comando: modularize\r\n\r\nDivide un OpenAPI monolítico en estructura modular con corrección de referencias y deduplicación.\r\n\r\n```bash\r\nopenapi-builder modularize --build ./api/petstore-oas3.0.0.yaml\r\n```\r\n\r\n**Salida**: `./src/` con estructura modular (main.yaml + components/ + paths/)\r\n\r\n### Comando: bundle\r\n\r\nConsolida estructura modular en bundle OpenAPI 3.\r\n\r\n```bash\r\nopenapi-builder bundle -i ./src/main.yaml -o ./dist/bundle.yaml\r\n```\r\n\r\n**Opciones**:\r\n- `-i, --input`: Entrypoint modular (default: `./src/main.yaml`)\r\n- `-o, --output`: Ruta del bundle (default: `./dist/bundle.yaml`)\r\n\r\n### Comando: docs\r\n\r\nGenera documentación Markdown desde el bundle.\r\n\r\n```bash\r\nopenapi-builder docs -i ./dist/bundle.yaml -o ./docs/api.md\r\n```\r\n\r\n**Opciones**:\r\n- `-i, --input`: Bundle OpenAPI (default: `./dist/bundle.yaml`)\r\n- `-o, --output`: Ruta Markdown (default: `./docs/api.md`)\r\n\r\n### Comando: swagger2\r\n\r\nConvierte OpenAPI 3.x a Swagger 2.0.\r\n\r\n```bash\r\nopenapi-builder swagger2 -i ./dist/bundle.yaml -o ./dist/swagger2.yaml\r\n```\r\n\r\n**Opciones**:\r\n- `-i, --input`: Bundle OpenAPI 3 (default: `./dist/bundle.yaml`)\r\n- `-o, --output`: Ruta Swagger 2 (default: `./dist/swagger2.yaml`)\r\n\r\n## 📁 Estructura de Salida\r\n\r\n```\r\nproyecto/\r\n├── src/                    # Estructura modular (modularize)\r\n│   ├── main.yaml\r\n│   ├── components/\r\n│   └── paths/\r\n├── dist/                   # Outputs consolidados\r\n│   ├── bundle.yaml        # Bundle OpenAPI 3 (bundle)\r\n│   └── swagger2.yaml      # Swagger 2.0 (swagger2)\r\n└── docs/                   # Documentación\r\n    └── api.md             # Docs Markdown (docs)\r\n```\r\n\r\n## ⚙️ Configuración\r\n\r\nLos comandos pueden personalizarse mediante archivos YAML en `./config/`:\r\n\r\n- `config/modularize.yaml`: Configuración de modularización\r\n- `config/bundle.yaml`: Opciones de bundling\r\n- `config/swagger2.yaml`: Configuración de conversión\r\n- `config/logging.yaml`: Configuración de logging\r\n\r\n## 🏗️ Arquitectura\r\n\r\nEl proyecto sigue **Clean Architecture** con capas claramente definidas:\r\n\r\n```\r\nbin/\r\n├── interface/          # CLI, menús, presenters\r\n├── application/        # Use cases, ports\r\n├── domain/            # Entities, services, value objects\r\n└── infrastructure/    # Adapters (Redocly, Widdershins, etc.)\r\n```\r\n\r\nVer [ARCHITECTURE.md](./ARCHITECTURE.md) para más detalles.\r\n\r\n## 📖 Documentación\r\n\r\n- [Arquitectura](./ARCHITECTURE.md) - Diseño y componentes del sistema\r\n- [Configuración](./CONFIGURATION.md) - Opciones y personalización\r\n- [Contribución](./CONTRIBUTING.md) - Guía para colaboradores\r\n- [Contexto para IA](./AI_CONTEXT.md) - Información para herramientas de IA\r\n\r\n## 🤝 Contribuir\r\n\r\nLas contribuciones son bienvenidas. Por favor:\r\n\r\n1. Lee la [guía de contribución](./CONTRIBUTING.md)\r\n2. Respeta las reglas de arquitectura (domain no importa infrastructure)\r\n3. Mantén compatibilidad con los flags del CLI\r\n\r\n## 📄 Licencia\r\n\r\nMIT\r\n\r\n## 🔗 Enlaces Útiles\r\n\r\n- [OpenAPI Specification 3.0](https://spec.openapis.org/oas/v3.0.0)\r\n- [Redocly CLI](https://redocly.com/docs/cli/)\r\n- [Widdershins](https://github.com/Mermade/widdershins)","readmeFilename":"README.md"}