{"_id":"@avarajar/constellation","_rev":"7-759008fac7a05933f83db9013daa9280","name":"@avarajar/constellation","dist-tags":{"latest":"0.6.1"},"versions":{"0.1.0":{"name":"@avarajar/constellation","version":"0.1.0","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","_id":"@avarajar/constellation@0.1.0","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"bin":{"constellation":"dist/index.js"},"dist":{"shasum":"bd09d3c1054070d6a2414ac8345695d4c8052ca3","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.1.0.tgz","fileCount":17,"integrity":"sha512-g4iee4sdY0hEEYWDc98T3sN5QWuvGcrbMAx98tdNC8AqvPeGjzBuc0Q2y/4OuDOFRZdpPF2s673OAzg7S+l0fA==","signatures":[{"sig":"MEQCIFcUFm7CugpRD24eQqFMd9xDbEBnntV8okwDW/h7/caaAiApmAZdt/tiAX9tMQHFEE26nGFHkfDWuIXlJt46I/T4pA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400224},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"058ae9d4e060179ebee63bef90c9d279871d97ae","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/ --ext .ts","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean","format":"prettier --write 'src/**/*.ts'","prepare":"husky","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"_npmVersion":"10.9.4","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"22.21.1","dependencies":{"ora":"^8.2.0","glob":"^11.0.1","chalk":"^5.4.1","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@inquirer/prompts":"^7.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.3","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","lint-staged":"^15.4.3","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/constellation_0.1.0_1775871211460_0.6456099664849964","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@avarajar/constellation","version":"0.2.1","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","_id":"@avarajar/constellation@0.2.1","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"bin":{"constellation":"dist/index.js"},"dist":{"shasum":"346b793fbc4833dc2bde54c3acfbb294d52f9a71","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.2.1.tgz","fileCount":20,"integrity":"sha512-P5UywW1v2RCGqfuuHUbvK+P67/zvQSuP9KxZAIjmQ6U1Rak2GwMIigrUcIVk345p5uzJP58pf3fgy8g1Mt9lZw==","signatures":[{"sig":"MEUCICjCWQc3ARxFSMD9WyF80l5N/yk/06VMzw+gOzxFWz3SAiEAqykfz7DqpCOALNckCBn41hiyp3quBOQ68ZjmC/bNsaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":493445},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6cc3f6a98ffc54371577e8a22fe1d389ad5314ae","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/ --ext .ts","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean && cp -R src/web/public dist/public","format":"prettier --write 'src/**/*.ts'","prepare":"husky","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"_npmVersion":"10.9.4","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"22.21.1","dependencies":{"ora":"^8.2.0","glob":"^11.0.1","chalk":"^5.4.1","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@inquirer/prompts":"^7.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.3","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","lint-staged":"^15.4.3","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/constellation_0.2.1_1776092568433_0.8815770754667998","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@avarajar/constellation","version":"0.2.2","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","_id":"@avarajar/constellation@0.2.2","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"bin":{"constellation":"dist/index.js"},"dist":{"shasum":"ee279ba6ece8fdb1c43201eb8aa6448508047b47","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.2.2.tgz","fileCount":27,"integrity":"sha512-s7Kdi5zRn73DjJcdbVMRUvWCk+kiCXMsPjlXLkLiOjQg8qVEiKpziuJPW//jXmVX+IUCwra+A05fpRJ5VBEAoA==","signatures":[{"sig":"MEUCIQC0KzFixUtwxUWFZye6MsgCtbLTlK7bEBajVhA764MAYAIgQfwZo/UGjJKxYcam3PL+eyK0WNHNzGhlnpN3AmKENU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536193},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"00d7b30e1a9746695bb188457b264ccbdacc5c42","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/ --ext .ts","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean && cp -R src/web/public dist/public && cp -R src/registry/technologies dist/technologies && cp src/validators/rules.yml dist/rules.yml","format":"prettier --write 'src/**/*.ts'","prepare":"husky","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"_npmVersion":"10.9.4","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"22.21.1","dependencies":{"ora":"^8.2.0","glob":"^11.0.1","chalk":"^5.4.1","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@inquirer/prompts":"^7.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.3","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","lint-staged":"^15.4.3","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/constellation_0.2.2_1776092945771_0.14808633505765534","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@avarajar/constellation","version":"0.2.3","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","_id":"@avarajar/constellation@0.2.3","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"bin":{"constellation":"dist/index.js"},"dist":{"shasum":"76f0f57b7c0b46fe9f84fec2c0d5cf558d583157","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.2.3.tgz","fileCount":27,"integrity":"sha512-8stRuaElu6LebWFqqrfXNOU/VrQtPWNeGrup5FugeAj1b9qVFIyb719v5zgAO7XcXkAlCl1AJQ5v2fPrmvOP/w==","signatures":[{"sig":"MEYCIQCvaWTL7foQJQf+RM6TPolhaVcy3cS0dlPxgdIOnp1CJQIhAMKSt0zc+S4ihuZsLQKME9UJkzckpgqp97PkyGJrshq5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536235},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"485174ba07268588f9b99c4ea5bab9b999862b89","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/ --ext .ts","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean && mkdir -p dist/public dist/technologies && cp src/web/public/* dist/public/ && cp src/registry/technologies/* dist/technologies/ && cp src/validators/rules.yml dist/rules.yml","format":"prettier --write 'src/**/*.ts'","prepare":"husky","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"_npmVersion":"10.9.4","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"22.21.1","dependencies":{"ora":"^8.2.0","glob":"^11.0.1","chalk":"^5.4.1","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@inquirer/prompts":"^7.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.3","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","lint-staged":"^15.4.3","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/constellation_0.2.3_1776093299297_0.36218528752654544","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@avarajar/constellation","version":"0.5.0","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","_id":"@avarajar/constellation@0.5.0","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"bin":{"constellation":"dist/index.js"},"dist":{"shasum":"9b9b6bfbbe8b74d1a35902e2e389b43124d0e8e8","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.5.0.tgz","fileCount":27,"integrity":"sha512-/LN2eXTeTFgC6YhNQJ0RaBRqxYh+3p48YKMfsVuGhDLdPHxMglvmTzhlAx9voW64INfQYnoGJ/ig6RbEMRSXLg==","signatures":[{"sig":"MEYCIQDDOFP1QdaKAjnZQsfV9wMKGi/9k/GZ7MqBduhS9Q5ocwIhAPLk0Ggl+O2YDF1l5nh99967j5KPHnUWnUrPrJSv02c+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536465},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5c0180cc80191d5f94e82c8ad19a61afdf6f9791","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/ --ext .ts","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean && mkdir -p dist/public dist/technologies && cp src/web/public/* dist/public/ && cp src/registry/technologies/* dist/technologies/ && cp src/validators/rules.yml dist/rules.yml","format":"prettier --write 'src/**/*.ts'","prepare":"husky","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"_npmVersion":"10.9.4","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"22.21.1","dependencies":{"ora":"^8.2.0","glob":"^11.0.1","chalk":"^5.4.1","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@inquirer/prompts":"^7.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.3","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","lint-staged":"^15.4.3","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/constellation_0.5.0_1776100614124_0.15839305831225614","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@avarajar/constellation","version":"0.6.0","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","_id":"@avarajar/constellation@0.6.0","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"bin":{"constellation":"dist/index.js"},"dist":{"shasum":"6a036acf14c67c8fac53dcb35b9c6637867ea68d","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.6.0.tgz","fileCount":27,"integrity":"sha512-XayfeCOZrIQj4VZQII9oku6kVGS9z1U08W7HeSa8vZeFvqtD8GNS0sq2KB20oLLeymVoMtibffjfIxPjtRC48w==","signatures":[{"sig":"MEYCIQDLHQ2zxRw9hVLlF/agxU+iGyKbcQkgY8sDeLxaiKD4fQIhAL1SOZ2TTCVgB2g3MLWdhtyGX0zBRRBY8BYlfkk/5Jp+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563504},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6a490b621ba1c15553efb07d081de62855e73fb6","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/ --ext .ts","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean && mkdir -p dist/public dist/technologies && cp src/web/public/* dist/public/ && cp src/registry/technologies/* dist/technologies/ && cp src/validators/rules.yml dist/rules.yml","format":"prettier --write 'src/**/*.ts'","prepare":"husky","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"_npmVersion":"10.9.4","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"22.21.1","dependencies":{"ora":"^8.2.0","glob":"^11.0.1","chalk":"^5.4.1","js-yaml":"^4.1.0","commander":"^13.1.0","handlebars":"^4.7.8","@inquirer/prompts":"^7.3.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","tsup":"^8.4.0","husky":"^9.1.7","eslint":"^9.21.0","vitest":"^3.0.7","prettier":"^3.5.3","@eslint/js":"^9.21.0","typescript":"^5.7.3","@types/node":"^22.13.5","lint-staged":"^15.4.3","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.25.0"},"_npmOperationalInternal":{"tmp":"tmp/constellation_0.6.0_1776109344518_0.35609631336772574","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@avarajar/constellation","version":"0.6.1","description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","type":"module","main":"dist/index.js","bin":{"constellation":"dist/index.js"},"scripts":{"dev":"tsx src/index.ts","build":"tsup src/index.ts --format esm --dts --clean && mkdir -p dist/public dist/technologies && cp src/web/public/* dist/public/ && cp src/registry/technologies/* dist/technologies/ && cp src/validators/rules.yml dist/rules.yml","test":"vitest run","test:watch":"vitest","lint":"eslint src/ --ext .ts","format":"prettier --write 'src/**/*.ts'","typecheck":"tsc --noEmit","prepare":"husky"},"keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"license":"MIT","engines":{"node":">=20.0.0"},"dependencies":{"@inquirer/prompts":"^7.3.2","chalk":"^5.4.1","commander":"^13.1.0","handlebars":"^4.7.8","js-yaml":"^4.1.0","ora":"^8.2.0","glob":"^11.0.1"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^22.13.5","eslint":"^9.21.0","@eslint/js":"^9.21.0","typescript-eslint":"^8.25.0","prettier":"^3.5.3","tsup":"^8.4.0","tsx":"^4.19.3","typescript":"^5.7.3","vitest":"^3.0.7","husky":"^9.1.7","lint-staged":"^15.4.3"},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_id":"@avarajar/constellation@0.6.1","gitHead":"0ea5c3577c10d7734291ee60ef2e581151bcd738","types":"./dist/index.d.ts","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-QBouzYzF0swPPF8h7aN8HCFBKJSdLs9LKThHO8XQ4wMocnwbduPb3N8NSnWW/ygasZW6KaoAn2yIC6Vctc2GkQ==","shasum":"916146209b25b5dda825262078e206a5c3e67492","tarball":"https://registry.npmjs.org/@avarajar/constellation/-/constellation-0.6.1.tgz","fileCount":27,"unpackedSize":566129,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE/FJJAGIpzXdJT5MH1QFvPvxbld7fS7Hzt9YO1LwrY7AiEAsPShqzwiltg4+oHHNJSYQS+wMwG5FpowPe1j430zQHw="}]},"_npmUser":{"name":"avarajar","email":"avarajame@gmail.com"},"directories":{},"maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/constellation_0.6.1_1776111904840_0.11235606710524104"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-11T01:33:31.399Z","modified":"2026-04-13T20:25:05.119Z","0.1.0":"2026-04-11T01:33:31.602Z","0.2.1":"2026-04-13T15:02:48.571Z","0.2.2":"2026-04-13T15:09:05.936Z","0.2.3":"2026-04-13T15:14:59.500Z","0.5.0":"2026-04-13T17:16:54.353Z","0.6.0":"2026-04-13T19:42:24.685Z","0.6.1":"2026-04-13T20:25:04.985Z"},"license":"MIT","keywords":["generator","scaffold","project","cli","stack","claude-code","constellation"],"description":"Project generator that lets you pick a tech stack and generates a fully functional project from scratch","maintainers":[{"name":"avarajar","email":"avarajame@gmail.com"}],"readme":"# Constellation\n\nInteractive project generator with a visual web UI and Claude Code integration. Select your tech stack from 88+ technologies across 6 categories, and generate a fully functional project — powered by AI.\n\n## How It Works\n\n1. Run `/constellation` in Claude Code (or `npx constellation` from the terminal)\n2. A web UI opens in your browser at `http://localhost:3210`\n3. Pick your technologies, configure your project, select GitHub options\n4. Click **\"Send to Claude Code\"**\n5. Claude Code reads your blueprint and generates the entire project with AI — backend, frontend, database, infrastructure, tests, monitoring — all wired together\n\nNo templates. No stubs. Real, working code generated by AI based on your exact stack choices.\n\n## Install as Claude Code Plugin\n\n```bash\n# 1. Add the marketplace\n/plugin marketplace add avarajar/constellation\n\n# 2. Install the plugin\n/plugin install constellation@constellation\n```\n\nThat's it. Now run `/constellation:generate` in any Claude Code session.\n\n### Alternative: Install from Local Clone\n\n```bash\ngit clone git@github.com:avarajar/constellation.git\ncd constellation\nnpm install\n/plugin marketplace add ./\n/plugin install constellation@constellation\n```\n\n### Development\n\n```bash\ngit clone git@github.com:avarajar/constellation.git\ncd constellation\nnpm install\n\n# Run the web UI\nnpm run dev -- web\n\n# Run with --wait mode (blocks until blueprint is saved)\nnpm run dev -- web --wait\n```\n\n## Features\n\n- **Visual web UI** — dark-themed wizard with tech card selection, search, and live validation\n- **88+ technologies** across Frontend, Backend, Database, Infrastructure, Testing, and Monitoring\n- **Claude Code plugin** — `/constellation` opens the UI, waits for your choices, and generates everything automatically\n- **Online tech search** — search npm, PyPI, and crates.io for technologies not in the registry\n- **GitHub integration** — create new repos, search existing ones, select orgs — all from the UI\n- **Compatibility validation** — catches conflicts (React + Angular) and missing requirements (Nuxt without Vue)\n- **Blueprint system** — your selections are saved as a YAML blueprint that drives AI generation\n- **Extensible YAML registry** — add technologies by editing YAML files, no recompile needed\n- **Monorepo support** — optional Turborepo or Nx configuration\n\n## Supported Technologies\n\n| Category | Technologies |\n|----------|-------------|\n| **Frontend** | React, Vue, Svelte, Angular, Next.js, Nuxt, Astro, SolidJS, Qwik |\n| **CSS** | Tailwind, Styled Components, CSS Modules, Sass, Emotion, Vanilla Extract |\n| **State** | Zustand, Redux, Pinia, Jotai, MobX, Recoil, XState, Nanostores |\n| **Backend** | Express, Fastify, Hono, NestJS, Elysia, Django, Flask, FastAPI, Gin, Echo, Chi, Actix, Axum, Rocket, Spring Boot, Quarkus, ASP.NET Core |\n| **Database** | PostgreSQL, MySQL, MongoDB, SQLite, Redis, DynamoDB, Firestore |\n| **ORM** | Prisma, TypeORM, Drizzle, Sequelize, Mongoose, SQLAlchemy, Entity Framework |\n| **Infrastructure** | Docker, Podman, Docker Compose, Kubernetes, AWS, GCP, Vercel, Netlify, Railway, Render |\n| **CI/CD** | GitHub Actions, GitLab CI, CircleCI, Jenkins, Azure Pipelines |\n| **Testing** | Vitest, Jest, Pytest, Playwright, Cypress, Selenium, Postman, REST Client |\n| **Monitoring** | Prometheus, Grafana, Sentry, Datadog, New Relic, ELK Stack, Loki, CloudWatch |\n\n## Architecture\n\n```\nconstellation/\n├── .claude-plugin/             # Marketplace catalog\n│   └── marketplace.json\n├── plugin/                     # Claude Code plugin (what gets installed)\n│   ├── .claude-plugin/\n│   │   └── plugin.json         # Plugin manifest\n│   ├── skills/generate/        # Main /constellation:generate skill\n│   └── bin/                    # CLI wrapper added to PATH\n├── src/\n│   ├── core/              # Types, engine, pipeline, blueprint system\n│   ├── cli/               # Commander setup, prompts, web --wait mode\n│   ├── registry/          # YAML-based technology registry + online search\n│   ├── validators/        # Compatibility rules engine (30+ rules)\n│   ├── generators/        # Per-category file generators\n│   ├── templates/         # Handlebars template engine\n│   └── web/               # HTTP server + vanilla HTML/CSS/JS web UI\n└── tests/                 # Vitest test suite\n```\n\n**Pipeline**: Selection (Web UI) → Blueprint (YAML) → Validation → AI Generation (Claude Code sub-agents) → Output\n\n## CLI Commands\n\n| Command | Description |\n|---------|-------------|\n| `constellation` | Open web UI, wait for blueprint, output path (default) |\n| `constellation web` | Start web UI server (stays running) |\n| `constellation web --wait` | Start web UI, block until blueprint saved, exit |\n| `constellation new` | Interactive CLI project generator (terminal prompts) |\n| `constellation list` | List all registered technologies |\n| `constellation validate <file>` | Validate a project configuration |\n\n### Claude Code Plugin\n\n| Command | Description |\n|---------|-------------|\n| `/constellation:generate` | Full flow: open web UI, select stack, generate project |\n| `/plugin marketplace add avarajar/constellation` | Add the marketplace |\n| `/plugin install constellation@constellation` | Install the plugin |\n\n## Adding Technologies\n\nTechnologies are defined in YAML files under `src/registry/technologies/`:\n\n```yaml\ntechnologies:\n  - id: my-framework\n    name: My Framework\n    category: backend\n    description: A fast web framework\n    language: typescript\n    version: \"1.0.0\"\n    tags: [web, api]\n    homepage: https://example.com\n```\n\nCompatibility rules live in `src/validators/rules.yml`:\n\n```yaml\nrules:\n  - id: \"my-rule\"\n    type: \"conflict\"       # conflict | requires | warns\n    techs: [\"tech-a\", \"tech-b\"]\n    message: \"Tech A and Tech B cannot be used together\"\n```\n\n## Development\n\n```bash\nnpm install          # Install dependencies\nnpm run dev          # Run CLI in development mode\nnpm run dev -- web   # Start web UI at localhost:3210\nnpm test             # Run tests with Vitest\nnpm run build        # Build with tsup\nnpm run lint         # Lint with ESLint\nnpm run typecheck    # Type check with tsc\n```\n\n## Tech Stack\n\nBuilt with TypeScript, Node.js, Commander.js, @inquirer/prompts, Handlebars, js-yaml, chalk, ora, Vitest, tsup, ESLint, Prettier.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}