ai-project-blueprints 0.2.0__tar.gz
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.
- ai_project_blueprints-0.2.0/PKG-INFO +129 -0
- ai_project_blueprints-0.2.0/README.md +114 -0
- ai_project_blueprints-0.2.0/pyproject.toml +52 -0
- ai_project_blueprints-0.2.0/setup.cfg +4 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/__init__.py +27 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/cli.py +85 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/README.md +19 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/ai-docs-workflow.md +22 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/coder.md +39 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/deployment.md +31 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/orchestrator-intake.md +35 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/reviewer.md +22 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/manifest.json +199 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/.env.example.tmpl +3 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/.gitignore.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/README.md.tmpl +16 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/alembic.ini.tmpl +37 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/migrations/env.py.tmpl +54 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/migrations/script.py.mako.tmpl +24 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/pyproject.toml.tmpl +46 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/src/app/__init__.py.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/src/app/api/__init__.py.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/src/app/api/health.py.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/src/app/config.py.tmpl +26 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/src/app/db.py.tmpl +17 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/src/app/main.py.tmpl +14 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/tests/conftest.py.tmpl +3 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/tests/test_health.py.tmpl +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/docker/Dockerfile.tmpl +20 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/kubernetes-helm/deploy/chart/Chart.yaml.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/kubernetes-helm/deploy/chart/templates/deployment.yaml.tmpl +50 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/kubernetes-helm/deploy/chart/templates/service.yaml.tmpl +11 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/kubernetes-helm/deploy/chart/values.yaml.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/oidc-keycloak/src/app/auth.py.tmpl +43 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/postgresql-local-compose/compose.yaml.tmpl +25 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/sqlite/tests/integration/test_migrations.py.tmpl +19 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/testcontainers/tests/integration/conftest.py.tmpl +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/overlays/testcontainers/tests/integration/test_migrations.py.tmpl +11 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/README.md +24 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/ai-docs-workflow.md +22 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/architecture.md +45 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/coder.md +49 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/deployment.md +31 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/orchestrator-intake.md +43 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/reviewer.md +30 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/manifest.json +228 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/.env.example.tmpl +3 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/.gitignore.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/README.md.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/alembic.ini.tmpl +37 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/migrations/env.py.tmpl +54 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/migrations/script.py.mako.tmpl +24 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/pyproject.toml.tmpl +46 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/__init__.py.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/config.py.tmpl +26 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/db.py.tmpl +17 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/features/__init__.py.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/features/health/__init__.py.tmpl +5 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/features/health/endpoint.py.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/src/app/main.py.tmpl +14 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/tests/conftest.py.tmpl +3 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/tests/features/health/test_endpoint.py.tmpl +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/docker/Dockerfile.tmpl +20 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/kubernetes-helm/deploy/chart/Chart.yaml.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/kubernetes-helm/deploy/chart/templates/deployment.yaml.tmpl +50 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/kubernetes-helm/deploy/chart/templates/service.yaml.tmpl +11 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/kubernetes-helm/deploy/chart/values.yaml.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/oidc-keycloak/src/app/auth.py.tmpl +43 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/postgresql-local-compose/compose.yaml.tmpl +25 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/sqlite/tests/integration/test_migrations.py.tmpl +19 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/testcontainers/tests/integration/conftest.py.tmpl +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/overlays/testcontainers/tests/integration/test_migrations.py.tmpl +11 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/README.md +20 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/ai-docs-workflow.md +14 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/architecture.md +26 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/coder.md +32 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/deployment.md +25 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/orchestrator-intake.md +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/reviewer.md +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/manifest.json +313 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/.env.example.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/.gitignore.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/.prettierrc.json.tmpl +5 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/README.md.tmpl +28 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/eslint.config.js.tmpl +35 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/index.html.tmpl +12 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/package.json.tmpl +45 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/app/entrypoint/main.tsx.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/app/routes/router.tsx.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/pages/home/index.ts.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/pages/home/ui/HomePage.test.tsx.tmpl +13 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/pages/home/ui/HomePage.tsx.tmpl +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/test/setup.ts.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/src/vite-env.d.ts.tmpl +12 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/tsconfig.app.json.tmpl +25 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/tsconfig.json.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/tsconfig.node.json.tmpl +22 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/browser-fetch/src/app/providers/AppProviders.tsx.tmpl +5 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/browser-fetch/src/shared/api/client.ts.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/build-time-config/src/shared/config/runtime.ts.tmpl +29 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/docker/.dockerignore.tmpl +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/docker/Dockerfile.tmpl +26 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/docker/docker-entrypoint.d/.keep.tmpl +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/docker/nginx.conf.tmpl +35 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/msw/src/test/msw/handlers.ts.tmpl +5 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/msw/src/test/msw/server.ts.tmpl +4 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/oidc-keycloak/src/shared/auth/OidcProvider.tsx.tmpl +23 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/oidc-keycloak/src/shared/auth/ProtectedRoute.tsx.tmpl +14 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/openapi-client/src/shared/api/client.ts.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/openapi-client/src/shared/api/schema.d.ts.tmpl +4 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/plain-css/src/app/styles/index.css.tmpl +15 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/plain-css/vite.config.ts.tmpl +12 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/playwright/playwright.config.ts.tmpl +19 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/playwright/tests/e2e/home.spec.ts.tmpl +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/runtime-config/docker-entrypoint.d/40-runtime-config.sh.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/runtime-config/public/config.json.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/runtime-config/src/shared/config/runtime.ts.tmpl +49 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/tailwind/src/app/styles/index.css.tmpl +5 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/tailwind/vite.config.ts.tmpl +13 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/overlays/tanstack-query/src/app/providers/AppProviders.tsx.tmpl +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/index.json +24 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/platform-index.json +18 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/platform-workflows.json +86 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/service-workflows.json +121 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/code-architecture-policy.md +68 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/package-contract.md +71 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/platform-policy.md +69 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/release-policy.md +27 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/stack-policy.md +89 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/ui-stack-policy.md +61 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/examples/python-multiservice-project.json +129 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/README.md +13 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/ai-docs-workflow.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/async-workflows.md +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/data-protection.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/deployment.md +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/identity-security.md +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/observability.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/operational-reviewer.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/platform-intake.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/manifest.json +96 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/base/deploy/platform/chart/Chart.yaml.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/base/deploy/platform/chart/templates/namespace.yaml.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/base/deploy/platform/chart/templates/network-policy.yaml.tmpl +11 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/base/deploy/platform/chart/values.yaml.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/base/docs/operations/requirements.md.tmpl +13 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/argocd/application.yaml.tmpl +20 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/argocd/appproject.yaml.tmpl +17 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/backup/database-native.md.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/backup/managed-database.md.tmpl +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/backup/velero.md.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/events/decision.md.tmpl +5 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/events/kafka.md.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/events/nats.md.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/events/rabbitmq.md.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/events/temporal.md.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/gateway/chart/templates/gateway.yaml.tmpl +20 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/identity/external-oidc.md.tmpl +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/identity/keycloak.md.tmpl +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/observability/managed-otlp.md.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/observability/otel-collector-values.yaml.tmpl +36 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/observability/self-hosted.md.tmpl +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/scheduler/cronjob.yaml.tmpl +28 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/scheduler/external.md.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/secrets/external-provider.md.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/template/overlays/secrets/sops.md.tmpl +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/README.md +13 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/ai-docs-workflow.md +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/async-workflows.md +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/data-protection.md +6 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/deployment.md +10 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/identity-security.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/observability.md +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/operational-reviewer.md +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/platform-intake.md +8 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/manifest.json +74 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/base/deploy/local/.env.example.tmpl +3 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/base/deploy/local/README.md.tmpl +15 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/base/deploy/local/compose.yaml.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/overlays/backup/README.md.tmpl +12 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/overlays/keycloak/compose.keycloak.yaml.tmpl +14 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/overlays/observability/compose.observability.yaml.tmpl +18 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/overlays/observability/otel-collector.yaml.tmpl +29 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/overlays/observability/prometheus.yaml.tmpl +7 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/template/overlays/postgresql/compose.postgresql.yaml.tmpl +18 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/blueprint-manifest.schema.json +213 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/catalog-index.schema.json +25 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/platform-index.schema.json +25 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/platform-manifest.schema.json +141 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/platform-workflow-catalog.schema.json +72 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/project-workspace.schema.json +122 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/service-workflow-catalog.schema.json +72 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources.py +144 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints/validate.py +875 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/PKG-INFO +129 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/SOURCES.txt +204 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/dependency_links.txt +1 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/entry_points.txt +2 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/requires.txt +9 -0
- ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/top_level.txt +1 -0
- ai_project_blueprints-0.2.0/tests/test_catalog.py +306 -0
- ai_project_blueprints-0.2.0/tests/test_platforms.py +162 -0
- ai_project_blueprints-0.2.0/tests/test_release_configuration.py +11 -0
- ai_project_blueprints-0.2.0/tests/test_resources.py +160 -0
- ai_project_blueprints-0.2.0/tests/test_templates.py +43 -0
- ai_project_blueprints-0.2.0/tests/test_ui_templates.py +60 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ai-project-blueprints
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Validated, versioned project blueprint catalog for coding agents
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: jsonschema<5,>=4.25
|
|
8
|
+
Provides-Extra: dev
|
|
9
|
+
Requires-Dist: build<2,>=1.3; extra == "dev"
|
|
10
|
+
Requires-Dist: pyright<2,>=1.1.405; extra == "dev"
|
|
11
|
+
Requires-Dist: pytest<10,>=8.4; extra == "dev"
|
|
12
|
+
Requires-Dist: pytest-xdist<4,>=3.8; extra == "dev"
|
|
13
|
+
Requires-Dist: ruff<1,>=0.13; extra == "dev"
|
|
14
|
+
Requires-Dist: twine<7,>=6.2; extra == "dev"
|
|
15
|
+
|
|
16
|
+
# AI Project Blueprints
|
|
17
|
+
|
|
18
|
+
Versioned, inspectable starter packs for agents that create new projects. A pack
|
|
19
|
+
combines a machine-readable manifest, agent instructions, dependency policies,
|
|
20
|
+
and template assets. It is deliberately separate from the orchestrator: the
|
|
21
|
+
orchestrator resolves and previews a pack, while this repository owns its content.
|
|
22
|
+
|
|
23
|
+
The current backend pack is `python-api-fastapi@1.1.0`; immutable `1.0.0`
|
|
24
|
+
remains available. Its base profile uses FastAPI,
|
|
25
|
+
Pydantic Settings, SQLAlchemy 2, Alembic, Ruff, Pyright, pytest and pytest-xdist.
|
|
26
|
+
Exactly one database profile is selected: PostgreSQL by default or SQLite for
|
|
27
|
+
bounded embedded/single-instance use. Testcontainers/PostgreSQL,
|
|
28
|
+
Keycloak-compatible OIDC, Docker, and Kubernetes/Helm are explicit overlays.
|
|
29
|
+
Version `1.1.0` adds feature-first vertical slices and lets agents choose the
|
|
30
|
+
least elaborate internal structure for each use case.
|
|
31
|
+
|
|
32
|
+
The UI pack `react-spa-vite@1.0.0` provides a browser-only React and strict
|
|
33
|
+
TypeScript SPA with Vite, React Router, typed ESLint, Prettier, Vitest, and React
|
|
34
|
+
Testing Library. Its feature-first structure keeps page-local journeys small and
|
|
35
|
+
promotes reusable interactions or shared domain representations only when their
|
|
36
|
+
boundaries are proven. Tailwind, OpenAPI client generation, TanStack Query,
|
|
37
|
+
React Hook Form with Zod, OIDC/Keycloak, MSW, Playwright, runtime configuration,
|
|
38
|
+
and non-root nginx delivery are explicit capabilities. The
|
|
39
|
+
`react-admin-api-spa` service profile selects that recommended administrative UI
|
|
40
|
+
combination without changing the minimal blueprint defaults.
|
|
41
|
+
|
|
42
|
+
Project-level operations are modeled separately through immutable platform
|
|
43
|
+
packs. `local-compose@1.0.0` provides a development dependency boundary;
|
|
44
|
+
`kubernetes-standard@1.0.0` provides provider-neutral Helm, Argo CD, Gateway
|
|
45
|
+
API, OIDC, OpenTelemetry with an explicit telemetry backend, secret-management,
|
|
46
|
+
backup, scheduler and event decisions. Stateful additions such as Keycloak,
|
|
47
|
+
Velero, a self-hosted observability stack or a message broker stay explicit
|
|
48
|
+
capabilities rather than silent service defaults.
|
|
49
|
+
|
|
50
|
+
## Installation and API
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install ai-project-blueprints==0.2.0
|
|
54
|
+
ai-project-blueprints list
|
|
55
|
+
ai-project-blueprints platform-list
|
|
56
|
+
ai-project-blueprints validate
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Python consumers use `ai_project_blueprints` to discover and read resources.
|
|
60
|
+
Access is backed by `importlib.resources`, so an installed wheel does not depend
|
|
61
|
+
on a repository checkout:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from ai_project_blueprints import load_manifest, load_platform_manifest, read_text
|
|
65
|
+
|
|
66
|
+
manifest = load_manifest("python-api-fastapi", "1.1.0")
|
|
67
|
+
coder_instructions = read_text("blueprints/python-api-fastapi/1.1.0/instructions/coder.md")
|
|
68
|
+
platform = load_platform_manifest("kubernetes-standard", "1.0.0")
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The API and CLI are inspect-only. They do not materialize or overwrite project
|
|
72
|
+
files.
|
|
73
|
+
|
|
74
|
+
## Layout
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
src/ai_project_blueprints/resources/ packaged catalogs, schemas, docs, examples, and packs
|
|
78
|
+
src/ai_project_blueprints/ public API, CLI, and trusted validation tooling
|
|
79
|
+
tests/ catalog invariant tests
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Validate
|
|
83
|
+
|
|
84
|
+
Python 3.11+ is required for the catalog tooling.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
python -m venv .venv
|
|
88
|
+
.venv/bin/pip install -e '.[dev]'
|
|
89
|
+
.venv/bin/ai-project-blueprints validate
|
|
90
|
+
.venv/bin/ruff check .
|
|
91
|
+
.venv/bin/pyright
|
|
92
|
+
.venv/bin/pytest -n auto
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The current release is a catalog contract and authored template pack. It does not
|
|
96
|
+
yet include a materializer; consumers must preview an exact manifest version and
|
|
97
|
+
preserve caller-owned files when they implement materialization.
|
|
98
|
+
|
|
99
|
+
## Multi-service orchestration
|
|
100
|
+
|
|
101
|
+
[`catalog/service-workflows.json`](src/ai_project_blueprints/resources/catalog/service-workflows.json) separates
|
|
102
|
+
three provider-neutral concepts: a `service_profile` chooses blueprint defaults,
|
|
103
|
+
an `agent_bundle` supplies ordered role instructions, and a `workflow_bundle`
|
|
104
|
+
describes one bounded service workflow. The consumer-owned
|
|
105
|
+
[`examples/python-multiservice-project.json`](src/ai_project_blueprints/resources/examples/python-multiservice-project.json)
|
|
106
|
+
shows backend services using different PostgreSQL/SQLite profiles and a React
|
|
107
|
+
administrative UI using its own profile, instruction bundle, workflow bundle,
|
|
108
|
+
and runtime-profile aliases under one workspace orchestrator.
|
|
109
|
+
|
|
110
|
+
[`catalog/platform-workflows.json`](src/ai_project_blueprints/resources/catalog/platform-workflows.json)
|
|
111
|
+
adds environment-level platform profiles, agent bundles and bounded platform
|
|
112
|
+
workflows. Workspace schema version 2 binds `local` to Compose and
|
|
113
|
+
`staging`/`production` to Kubernetes while retaining per-role runtime aliases.
|
|
114
|
+
Service workflows consume the resulting operational contracts but do not own
|
|
115
|
+
shared cluster resources.
|
|
116
|
+
|
|
117
|
+
Concrete runtime aliases, models, providers, credentials and service-local
|
|
118
|
+
instructions remain consumer-owned. The catalog only validates their safe
|
|
119
|
+
logical bindings. Cross-service work is serialized and composed by the single
|
|
120
|
+
host; a service workflow cannot start a nested orchestrator or independently
|
|
121
|
+
claim the same checkout.
|
|
122
|
+
|
|
123
|
+
See [the Python API stack policy](src/ai_project_blueprints/resources/docs/stack-policy.md)
|
|
124
|
+
and [the React SPA stack policy](src/ai_project_blueprints/resources/docs/ui-stack-policy.md)
|
|
125
|
+
and [the feature-first architecture policy](src/ai_project_blueprints/resources/docs/code-architecture-policy.md)
|
|
126
|
+
and [the platform profile policy](src/ai_project_blueprints/resources/docs/platform-policy.md)
|
|
127
|
+
for selection rationale. The [package contract](src/ai_project_blueprints/resources/docs/package-contract.md)
|
|
128
|
+
and [release policy](src/ai_project_blueprints/resources/docs/release-policy.md)
|
|
129
|
+
define resource compatibility and GitLab.com/PyPI publication gates.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# AI Project Blueprints
|
|
2
|
+
|
|
3
|
+
Versioned, inspectable starter packs for agents that create new projects. A pack
|
|
4
|
+
combines a machine-readable manifest, agent instructions, dependency policies,
|
|
5
|
+
and template assets. It is deliberately separate from the orchestrator: the
|
|
6
|
+
orchestrator resolves and previews a pack, while this repository owns its content.
|
|
7
|
+
|
|
8
|
+
The current backend pack is `python-api-fastapi@1.1.0`; immutable `1.0.0`
|
|
9
|
+
remains available. Its base profile uses FastAPI,
|
|
10
|
+
Pydantic Settings, SQLAlchemy 2, Alembic, Ruff, Pyright, pytest and pytest-xdist.
|
|
11
|
+
Exactly one database profile is selected: PostgreSQL by default or SQLite for
|
|
12
|
+
bounded embedded/single-instance use. Testcontainers/PostgreSQL,
|
|
13
|
+
Keycloak-compatible OIDC, Docker, and Kubernetes/Helm are explicit overlays.
|
|
14
|
+
Version `1.1.0` adds feature-first vertical slices and lets agents choose the
|
|
15
|
+
least elaborate internal structure for each use case.
|
|
16
|
+
|
|
17
|
+
The UI pack `react-spa-vite@1.0.0` provides a browser-only React and strict
|
|
18
|
+
TypeScript SPA with Vite, React Router, typed ESLint, Prettier, Vitest, and React
|
|
19
|
+
Testing Library. Its feature-first structure keeps page-local journeys small and
|
|
20
|
+
promotes reusable interactions or shared domain representations only when their
|
|
21
|
+
boundaries are proven. Tailwind, OpenAPI client generation, TanStack Query,
|
|
22
|
+
React Hook Form with Zod, OIDC/Keycloak, MSW, Playwright, runtime configuration,
|
|
23
|
+
and non-root nginx delivery are explicit capabilities. The
|
|
24
|
+
`react-admin-api-spa` service profile selects that recommended administrative UI
|
|
25
|
+
combination without changing the minimal blueprint defaults.
|
|
26
|
+
|
|
27
|
+
Project-level operations are modeled separately through immutable platform
|
|
28
|
+
packs. `local-compose@1.0.0` provides a development dependency boundary;
|
|
29
|
+
`kubernetes-standard@1.0.0` provides provider-neutral Helm, Argo CD, Gateway
|
|
30
|
+
API, OIDC, OpenTelemetry with an explicit telemetry backend, secret-management,
|
|
31
|
+
backup, scheduler and event decisions. Stateful additions such as Keycloak,
|
|
32
|
+
Velero, a self-hosted observability stack or a message broker stay explicit
|
|
33
|
+
capabilities rather than silent service defaults.
|
|
34
|
+
|
|
35
|
+
## Installation and API
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install ai-project-blueprints==0.2.0
|
|
39
|
+
ai-project-blueprints list
|
|
40
|
+
ai-project-blueprints platform-list
|
|
41
|
+
ai-project-blueprints validate
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Python consumers use `ai_project_blueprints` to discover and read resources.
|
|
45
|
+
Access is backed by `importlib.resources`, so an installed wheel does not depend
|
|
46
|
+
on a repository checkout:
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
from ai_project_blueprints import load_manifest, load_platform_manifest, read_text
|
|
50
|
+
|
|
51
|
+
manifest = load_manifest("python-api-fastapi", "1.1.0")
|
|
52
|
+
coder_instructions = read_text("blueprints/python-api-fastapi/1.1.0/instructions/coder.md")
|
|
53
|
+
platform = load_platform_manifest("kubernetes-standard", "1.0.0")
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The API and CLI are inspect-only. They do not materialize or overwrite project
|
|
57
|
+
files.
|
|
58
|
+
|
|
59
|
+
## Layout
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
src/ai_project_blueprints/resources/ packaged catalogs, schemas, docs, examples, and packs
|
|
63
|
+
src/ai_project_blueprints/ public API, CLI, and trusted validation tooling
|
|
64
|
+
tests/ catalog invariant tests
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Validate
|
|
68
|
+
|
|
69
|
+
Python 3.11+ is required for the catalog tooling.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
python -m venv .venv
|
|
73
|
+
.venv/bin/pip install -e '.[dev]'
|
|
74
|
+
.venv/bin/ai-project-blueprints validate
|
|
75
|
+
.venv/bin/ruff check .
|
|
76
|
+
.venv/bin/pyright
|
|
77
|
+
.venv/bin/pytest -n auto
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The current release is a catalog contract and authored template pack. It does not
|
|
81
|
+
yet include a materializer; consumers must preview an exact manifest version and
|
|
82
|
+
preserve caller-owned files when they implement materialization.
|
|
83
|
+
|
|
84
|
+
## Multi-service orchestration
|
|
85
|
+
|
|
86
|
+
[`catalog/service-workflows.json`](src/ai_project_blueprints/resources/catalog/service-workflows.json) separates
|
|
87
|
+
three provider-neutral concepts: a `service_profile` chooses blueprint defaults,
|
|
88
|
+
an `agent_bundle` supplies ordered role instructions, and a `workflow_bundle`
|
|
89
|
+
describes one bounded service workflow. The consumer-owned
|
|
90
|
+
[`examples/python-multiservice-project.json`](src/ai_project_blueprints/resources/examples/python-multiservice-project.json)
|
|
91
|
+
shows backend services using different PostgreSQL/SQLite profiles and a React
|
|
92
|
+
administrative UI using its own profile, instruction bundle, workflow bundle,
|
|
93
|
+
and runtime-profile aliases under one workspace orchestrator.
|
|
94
|
+
|
|
95
|
+
[`catalog/platform-workflows.json`](src/ai_project_blueprints/resources/catalog/platform-workflows.json)
|
|
96
|
+
adds environment-level platform profiles, agent bundles and bounded platform
|
|
97
|
+
workflows. Workspace schema version 2 binds `local` to Compose and
|
|
98
|
+
`staging`/`production` to Kubernetes while retaining per-role runtime aliases.
|
|
99
|
+
Service workflows consume the resulting operational contracts but do not own
|
|
100
|
+
shared cluster resources.
|
|
101
|
+
|
|
102
|
+
Concrete runtime aliases, models, providers, credentials and service-local
|
|
103
|
+
instructions remain consumer-owned. The catalog only validates their safe
|
|
104
|
+
logical bindings. Cross-service work is serialized and composed by the single
|
|
105
|
+
host; a service workflow cannot start a nested orchestrator or independently
|
|
106
|
+
claim the same checkout.
|
|
107
|
+
|
|
108
|
+
See [the Python API stack policy](src/ai_project_blueprints/resources/docs/stack-policy.md)
|
|
109
|
+
and [the React SPA stack policy](src/ai_project_blueprints/resources/docs/ui-stack-policy.md)
|
|
110
|
+
and [the feature-first architecture policy](src/ai_project_blueprints/resources/docs/code-architecture-policy.md)
|
|
111
|
+
and [the platform profile policy](src/ai_project_blueprints/resources/docs/platform-policy.md)
|
|
112
|
+
for selection rationale. The [package contract](src/ai_project_blueprints/resources/docs/package-contract.md)
|
|
113
|
+
and [release policy](src/ai_project_blueprints/resources/docs/release-policy.md)
|
|
114
|
+
define resource compatibility and GitLab.com/PyPI publication gates.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=80,<81"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ai-project-blueprints"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
description = "Validated, versioned project blueprint catalog for coding agents"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
dependencies = [
|
|
12
|
+
"jsonschema>=4.25,<5",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[project.optional-dependencies]
|
|
16
|
+
dev = [
|
|
17
|
+
"build>=1.3,<2",
|
|
18
|
+
"pyright>=1.1.405,<2",
|
|
19
|
+
"pytest>=8.4,<10",
|
|
20
|
+
"pytest-xdist>=3.8,<4",
|
|
21
|
+
"ruff>=0.13,<1",
|
|
22
|
+
"twine>=6.2,<7",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.scripts]
|
|
26
|
+
ai-project-blueprints = "ai_project_blueprints.cli:main"
|
|
27
|
+
|
|
28
|
+
[tool.setuptools.packages.find]
|
|
29
|
+
where = ["src"]
|
|
30
|
+
|
|
31
|
+
[tool.setuptools.package-data]
|
|
32
|
+
ai_project_blueprints = ["resources/**/*", "resources/**/.*"]
|
|
33
|
+
|
|
34
|
+
[tool.ruff]
|
|
35
|
+
target-version = "py311"
|
|
36
|
+
line-length = 100
|
|
37
|
+
|
|
38
|
+
[tool.ruff.lint]
|
|
39
|
+
select = ["E", "F", "I", "UP", "B", "SIM"]
|
|
40
|
+
|
|
41
|
+
[tool.ruff.lint.per-file-ignores]
|
|
42
|
+
"tests/test_resources.py" = ["E501"] # Fixed path/hash pairs remain auditable one per line.
|
|
43
|
+
|
|
44
|
+
[tool.pyright]
|
|
45
|
+
include = ["src", "tests"]
|
|
46
|
+
pythonVersion = "3.11"
|
|
47
|
+
typeCheckingMode = "strict"
|
|
48
|
+
reportMissingModuleSource = false
|
|
49
|
+
|
|
50
|
+
[tool.pytest.ini_options]
|
|
51
|
+
testpaths = ["tests"]
|
|
52
|
+
addopts = "-ra"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Versioned project blueprints for coding agents."""
|
|
2
|
+
|
|
3
|
+
from .resources import (
|
|
4
|
+
JsonValue,
|
|
5
|
+
list_blueprints,
|
|
6
|
+
list_platforms,
|
|
7
|
+
load_catalog,
|
|
8
|
+
load_manifest,
|
|
9
|
+
load_platform_manifest,
|
|
10
|
+
read_bytes,
|
|
11
|
+
read_json,
|
|
12
|
+
read_text,
|
|
13
|
+
resource_inventory,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"JsonValue",
|
|
18
|
+
"list_blueprints",
|
|
19
|
+
"list_platforms",
|
|
20
|
+
"load_catalog",
|
|
21
|
+
"load_manifest",
|
|
22
|
+
"load_platform_manifest",
|
|
23
|
+
"read_bytes",
|
|
24
|
+
"read_json",
|
|
25
|
+
"read_text",
|
|
26
|
+
"resource_inventory",
|
|
27
|
+
]
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""JSON-oriented command line interface for packaged blueprints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
import json
|
|
7
|
+
import sys
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import TextIO
|
|
10
|
+
|
|
11
|
+
from .resources import (
|
|
12
|
+
list_blueprints,
|
|
13
|
+
list_platforms,
|
|
14
|
+
load_manifest,
|
|
15
|
+
load_platform_manifest,
|
|
16
|
+
read_text,
|
|
17
|
+
)
|
|
18
|
+
from .validate import validate_repository
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _parser() -> argparse.ArgumentParser:
|
|
22
|
+
parser = argparse.ArgumentParser(prog="ai-project-blueprints")
|
|
23
|
+
subcommands = parser.add_subparsers(dest="command", required=True)
|
|
24
|
+
|
|
25
|
+
validate = subcommands.add_parser("validate", help="validate packaged or checkout resources")
|
|
26
|
+
validate.add_argument(
|
|
27
|
+
"--root", type=Path, help="explicit resource root containing catalog/, schemas/, etc."
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
subcommands.add_parser("list", help="list available blueprint versions")
|
|
31
|
+
subcommands.add_parser("platform-list", help="list available platform versions")
|
|
32
|
+
|
|
33
|
+
manifest = subcommands.add_parser("manifest", help="read one exact blueprint manifest")
|
|
34
|
+
manifest.add_argument("blueprint_id")
|
|
35
|
+
manifest.add_argument("version")
|
|
36
|
+
|
|
37
|
+
platform_manifest = subcommands.add_parser(
|
|
38
|
+
"platform-manifest", help="read one exact platform manifest"
|
|
39
|
+
)
|
|
40
|
+
platform_manifest.add_argument("platform_id")
|
|
41
|
+
platform_manifest.add_argument("version")
|
|
42
|
+
|
|
43
|
+
read = subcommands.add_parser("read", help="read one safe relative text resource")
|
|
44
|
+
read.add_argument("path")
|
|
45
|
+
read.add_argument("--encoding", default="utf-8")
|
|
46
|
+
return parser
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _emit(payload: object, *, stream: TextIO | None = None) -> None:
|
|
50
|
+
output = sys.stdout if stream is None else stream
|
|
51
|
+
json.dump(payload, output, ensure_ascii=False, sort_keys=True)
|
|
52
|
+
output.write("\n")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def main(argv: list[str] | None = None) -> int:
|
|
56
|
+
"""Run a CLI command and return its process exit code."""
|
|
57
|
+
args = _parser().parse_args(argv)
|
|
58
|
+
try:
|
|
59
|
+
if args.command == "validate":
|
|
60
|
+
errors = validate_repository(args.root)
|
|
61
|
+
_emit({"errors": errors, "valid": not errors})
|
|
62
|
+
return 0 if not errors else 1
|
|
63
|
+
if args.command == "list":
|
|
64
|
+
_emit({"blueprints": list_blueprints()})
|
|
65
|
+
return 0
|
|
66
|
+
if args.command == "platform-list":
|
|
67
|
+
_emit({"platforms": list_platforms()})
|
|
68
|
+
return 0
|
|
69
|
+
if args.command == "manifest":
|
|
70
|
+
_emit(load_manifest(args.blueprint_id, args.version))
|
|
71
|
+
return 0
|
|
72
|
+
if args.command == "platform-manifest":
|
|
73
|
+
_emit(load_platform_manifest(args.platform_id, args.version))
|
|
74
|
+
return 0
|
|
75
|
+
if args.command == "read":
|
|
76
|
+
_emit({"path": args.path, "text": read_text(args.path, encoding=args.encoding)})
|
|
77
|
+
return 0
|
|
78
|
+
except (FileNotFoundError, IsADirectoryError, UnicodeError, ValueError) as error:
|
|
79
|
+
_emit({"error": str(error), "type": type(error).__name__}, stream=sys.stderr)
|
|
80
|
+
return 2
|
|
81
|
+
raise AssertionError(f"unhandled command {args.command!r}")
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
if __name__ == "__main__":
|
|
85
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# python-api-fastapi 1.0.0
|
|
2
|
+
|
|
3
|
+
Preview release of a new Python HTTP API baseline. The base is intentionally small;
|
|
4
|
+
every operationally expensive concern is an explicit capability.
|
|
5
|
+
|
|
6
|
+
| Capability | Default | Purpose |
|
|
7
|
+
|---|---:|---|
|
|
8
|
+
| `base` | yes | FastAPI, typed settings, SQLAlchemy/Alembic, quality gates |
|
|
9
|
+
| `database-postgresql` | yes | Recommended production database profile |
|
|
10
|
+
| `database-sqlite` | no | Embedded database for bounded single-instance use |
|
|
11
|
+
| `testcontainers-postgresql` | no | Real PostgreSQL migration and persistence tests |
|
|
12
|
+
| `oidc-keycloak` | no | Standards-based OIDC bearer-token validation |
|
|
13
|
+
| `docker` | no | Reproducible non-root application image |
|
|
14
|
+
| `postgresql-local-compose` | no | Local API and PostgreSQL; requires Docker + PostgreSQL |
|
|
15
|
+
| `kubernetes-helm` | no | Kubernetes chart; requires Docker, rejects SQLite |
|
|
16
|
+
| `ai-docs-workflow` | no | Documentation-driven planning and agent handoff overlay |
|
|
17
|
+
|
|
18
|
+
Read `instructions/orchestrator-intake.md` before resolving the pack and pass the
|
|
19
|
+
resolved capability list to Coder and Reviewer.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# AI Docs workflow overlay
|
|
2
|
+
|
|
3
|
+
Use this overlay only when the consumer repository has adopted the AI Docs Toolkit.
|
|
4
|
+
The toolkit remains the source of truth for document schemas and lifecycle rules;
|
|
5
|
+
do not copy its schemas or workflow implementation into the generated service.
|
|
6
|
+
|
|
7
|
+
Before implementation:
|
|
8
|
+
|
|
9
|
+
1. Convert the confirmed project brief into durable product scope, architecture
|
|
10
|
+
decisions, external/API contracts, business rules, acceptance criteria, and
|
|
11
|
+
executable test cases at their canonical consumer-owned locations.
|
|
12
|
+
2. Create a bounded planning record that references those durable owners. Keep
|
|
13
|
+
user/product decisions with the host orchestrator rather than delegating them
|
|
14
|
+
implicitly to Coder.
|
|
15
|
+
3. Give Coder only the relevant instruction sources and resolved blueprint
|
|
16
|
+
manifest. Give Reviewer the same acceptance and contract owners independently.
|
|
17
|
+
4. Record validation evidence, promote durable conclusions out of temporary
|
|
18
|
+
planning records, and retire completed lifecycle records according to the
|
|
19
|
+
consumer's toolkit policy.
|
|
20
|
+
|
|
21
|
+
If the toolkit is unavailable or invalid, stop before inventing look-alike AI Docs
|
|
22
|
+
artifacts. The service can still use the base pack without this overlay.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Coder instructions
|
|
2
|
+
|
|
3
|
+
Implement the smallest service that satisfies the confirmed brief. The supplied
|
|
4
|
+
template is a structural baseline, not permission to invent domain behavior.
|
|
5
|
+
|
|
6
|
+
## Architecture boundaries
|
|
7
|
+
|
|
8
|
+
- Keep transport, application/domain behavior, and persistence seams explicit.
|
|
9
|
+
- Create one SQLAlchemy `AsyncSession` per request or unit of work; never share a
|
|
10
|
+
session across concurrent tasks.
|
|
11
|
+
- Implement only the selected database profile. For SQLite, enable Alembic batch
|
|
12
|
+
mode, document single-instance/write-concurrency limits, and avoid silently
|
|
13
|
+
relying on PostgreSQL-compatible behavior. For PostgreSQL, test material SQL
|
|
14
|
+
and migrations against PostgreSQL rather than SQLite substitutes.
|
|
15
|
+
- Treat Alembic revisions as reviewed source. Generate a revision, inspect it,
|
|
16
|
+
exercise upgrade from an empty database, and define downgrade policy.
|
|
17
|
+
- Use Pydantic models at HTTP/configuration boundaries. Do not return ORM objects
|
|
18
|
+
as an accidental public contract.
|
|
19
|
+
- Put liveness at `/health/live` and dependency-aware readiness at
|
|
20
|
+
`/health/ready`; do not make liveness depend on the database.
|
|
21
|
+
- Use structured logs and correlation identifiers. Never log access tokens,
|
|
22
|
+
authorization headers, database URLs, or secrets.
|
|
23
|
+
|
|
24
|
+
## Verification loop
|
|
25
|
+
|
|
26
|
+
Run focused tests while changing code, then the stable closure set:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
ruff format --check .
|
|
30
|
+
ruff check .
|
|
31
|
+
pyright
|
|
32
|
+
pytest -n auto -m 'not integration'
|
|
33
|
+
pytest -n auto -m integration # when the chosen profile supplies integration tests
|
|
34
|
+
alembic upgrade head # against an empty selected database
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If an OpenAPI contract is caller-owned, export and compare it in CI. Add tests for
|
|
38
|
+
authorization denial, invalid configuration, migration upgrade, readiness failure,
|
|
39
|
+
and transaction rollback when those behaviors are in scope.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Deployment instructions
|
|
2
|
+
|
|
3
|
+
Build one immutable image from the project lock file. Run migrations as a separate,
|
|
4
|
+
serialized release action; do not run them concurrently in every web replica.
|
|
5
|
+
|
|
6
|
+
## Docker
|
|
7
|
+
|
|
8
|
+
- Build from an official slim Python image and install locked dependencies.
|
|
9
|
+
- Run as a non-root user with exec-form `CMD` so termination signals reach the
|
|
10
|
+
server process.
|
|
11
|
+
- Keep configuration in environment variables and secrets in the target
|
|
12
|
+
platform's secret store. The image must not contain `.env` or credentials.
|
|
13
|
+
- Add an image vulnerability scan and software-bill-of-materials step in CI.
|
|
14
|
+
|
|
15
|
+
## Kubernetes/Helm
|
|
16
|
+
|
|
17
|
+
- Pin the deployed image by immutable tag or digest.
|
|
18
|
+
- Use separate startup, readiness, and liveness probes. Only readiness may depend
|
|
19
|
+
on PostgreSQL.
|
|
20
|
+
- Define CPU/memory requests and limits, a rolling update policy, pod security
|
|
21
|
+
context, termination grace period, and disruption expectations.
|
|
22
|
+
- Reference externally managed Secrets; do not put secret values in Helm values.
|
|
23
|
+
- Provide rollback instructions that account for database migration compatibility.
|
|
24
|
+
|
|
25
|
+
The Helm overlay in this release is PostgreSQL-only. SQLite deployment requires a
|
|
26
|
+
separate single-replica persistence design, backup/restore policy, and durable
|
|
27
|
+
volume contract; do not adapt the current two-replica chart implicitly.
|
|
28
|
+
|
|
29
|
+
Observability is a project decision. If selected, prefer OpenTelemetry signals and
|
|
30
|
+
make service name/environment resource attributes explicit; do not add a backend
|
|
31
|
+
vendor by default.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Orchestrator intake: Python API
|
|
2
|
+
|
|
3
|
+
Use this pack only for a new independently deployable Python HTTP API. Preserve
|
|
4
|
+
these caller-owned decisions in the resolved brief:
|
|
5
|
+
|
|
6
|
+
1. Service name, package/distribution name, ownership, and bounded responsibility.
|
|
7
|
+
2. API consumers and compatibility policy.
|
|
8
|
+
3. Data ownership and whether this service owns its database/schema.
|
|
9
|
+
4. Authentication mode: none/internal gateway, OIDC resource server, or deferred.
|
|
10
|
+
5. Deployment target: local only, Docker, or Kubernetes/Helm.
|
|
11
|
+
6. Database profile and whether real-database integration tests are necessary.
|
|
12
|
+
|
|
13
|
+
## Defaults and selection rules
|
|
14
|
+
|
|
15
|
+
- Select `base` always.
|
|
16
|
+
- Select exactly one database profile. Use `database-postgresql` by default. Use
|
|
17
|
+
`database-sqlite` only for a prototype, local tool, or bounded single-instance
|
|
18
|
+
service with no PostgreSQL-specific requirements and modest write concurrency.
|
|
19
|
+
- Select `testcontainers-postgresql` when SQL queries, constraints, transaction
|
|
20
|
+
behavior, migrations, or PostgreSQL-specific types are material to correctness.
|
|
21
|
+
- Select `oidc-keycloak` when the API directly accepts bearer tokens. Keycloak is
|
|
22
|
+
one compatible issuer, not an application SDK dependency.
|
|
23
|
+
- Select `docker` for a container artifact.
|
|
24
|
+
- Select `postgresql-local-compose` only with `docker` and
|
|
25
|
+
`database-postgresql` when a local containerized database is useful.
|
|
26
|
+
- Select `kubernetes-helm` only when Kubernetes deployment is confirmed; it
|
|
27
|
+
requires `docker` and is incompatible with the SQLite profile in this release.
|
|
28
|
+
- Select `ai-docs-workflow` only when the consumer repository has adopted a
|
|
29
|
+
compatible AI Docs Toolkit workflow; never bootstrap look-alike documents.
|
|
30
|
+
- Do not infer brokers, caches, background workers, multi-tenancy, or an API
|
|
31
|
+
gateway. Record these as architecture decisions before adding dependencies.
|
|
32
|
+
|
|
33
|
+
Before writing files, produce a preview containing the exact blueprint version,
|
|
34
|
+
selected capabilities, dependency groups, rendered target paths, conflicts, and
|
|
35
|
+
unresolved variables. Never overwrite an existing path without caller approval.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Reviewer instructions
|
|
2
|
+
|
|
3
|
+
Review the generated service against its resolved manifest and project brief.
|
|
4
|
+
Report concrete findings before optional improvements.
|
|
5
|
+
|
|
6
|
+
- Confirm no target file was overwritten outside the approved preview.
|
|
7
|
+
- Confirm dependency additions map to selected capabilities and constraints.
|
|
8
|
+
- Verify the service owns its migrations and startup does not silently mutate the
|
|
9
|
+
schema.
|
|
10
|
+
- Verify async database sessions are request-scoped and transactions have an
|
|
11
|
+
explicit commit/rollback owner.
|
|
12
|
+
- Verify HTTP schemas do not leak persistence models or secret configuration.
|
|
13
|
+
- With OIDC enabled, verify issuer, audience, signature, expiry, and required
|
|
14
|
+
claims/permissions; reject fail-open behavior.
|
|
15
|
+
- With Kubernetes enabled, verify startup/readiness/liveness semantics, graceful
|
|
16
|
+
termination, resource requests/limits, non-root execution, and external secret
|
|
17
|
+
references.
|
|
18
|
+
- Verify exactly one database profile is selected. Reject SQLite for horizontal
|
|
19
|
+
scaling, multiple writers, or PostgreSQL-specific behavior without a recorded
|
|
20
|
+
architecture decision.
|
|
21
|
+
- Verify unit tests remain fast and integration tests have an explicit marker;
|
|
22
|
+
document Docker as a prerequisite only for Testcontainers-backed tests.
|