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.
Files changed (206) hide show
  1. ai_project_blueprints-0.2.0/PKG-INFO +129 -0
  2. ai_project_blueprints-0.2.0/README.md +114 -0
  3. ai_project_blueprints-0.2.0/pyproject.toml +52 -0
  4. ai_project_blueprints-0.2.0/setup.cfg +4 -0
  5. ai_project_blueprints-0.2.0/src/ai_project_blueprints/__init__.py +27 -0
  6. ai_project_blueprints-0.2.0/src/ai_project_blueprints/cli.py +85 -0
  7. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/README.md +19 -0
  8. 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
  9. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/coder.md +39 -0
  10. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/deployment.md +31 -0
  11. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/orchestrator-intake.md +35 -0
  12. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/instructions/reviewer.md +22 -0
  13. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/manifest.json +199 -0
  14. 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
  15. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.0.0/template/base/.gitignore.tmpl +9 -0
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/README.md +24 -0
  40. 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
  41. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/architecture.md +45 -0
  42. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/coder.md +49 -0
  43. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/deployment.md +31 -0
  44. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/orchestrator-intake.md +43 -0
  45. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/instructions/reviewer.md +30 -0
  46. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/manifest.json +228 -0
  47. 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
  48. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/python-api-fastapi/1.1.0/template/base/.gitignore.tmpl +9 -0
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/README.md +20 -0
  74. 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
  75. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/architecture.md +26 -0
  76. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/coder.md +32 -0
  77. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/deployment.md +25 -0
  78. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/orchestrator-intake.md +23 -0
  79. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/instructions/reviewer.md +23 -0
  80. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/manifest.json +313 -0
  81. 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
  82. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/blueprints/react-spa-vite/1.0.0/template/base/.gitignore.tmpl +9 -0
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. 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
  102. 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
  103. 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
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/index.json +24 -0
  122. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/platform-index.json +18 -0
  123. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/platform-workflows.json +86 -0
  124. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/catalog/service-workflows.json +121 -0
  125. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/code-architecture-policy.md +68 -0
  126. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/package-contract.md +71 -0
  127. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/platform-policy.md +69 -0
  128. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/release-policy.md +27 -0
  129. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/stack-policy.md +89 -0
  130. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/docs/ui-stack-policy.md +61 -0
  131. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/examples/python-multiservice-project.json +129 -0
  132. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/README.md +13 -0
  133. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/ai-docs-workflow.md +8 -0
  134. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/async-workflows.md +9 -0
  135. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/data-protection.md +8 -0
  136. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/deployment.md +10 -0
  137. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/identity-security.md +9 -0
  138. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/observability.md +8 -0
  139. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/operational-reviewer.md +8 -0
  140. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/instructions/platform-intake.md +8 -0
  141. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/kubernetes-standard/1.0.0/manifest.json +96 -0
  142. 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
  143. 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
  144. 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
  145. 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
  146. 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
  147. 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
  148. 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
  149. 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
  150. 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
  151. 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
  152. 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
  153. 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
  154. 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
  155. 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
  156. 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
  157. 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
  158. 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
  159. 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
  160. 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
  161. 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
  162. 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
  163. 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
  164. 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
  165. 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
  166. 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
  167. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/README.md +13 -0
  168. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/ai-docs-workflow.md +7 -0
  169. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/async-workflows.md +9 -0
  170. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/data-protection.md +6 -0
  171. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/deployment.md +10 -0
  172. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/identity-security.md +8 -0
  173. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/observability.md +7 -0
  174. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/operational-reviewer.md +7 -0
  175. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/instructions/platform-intake.md +8 -0
  176. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/platforms/local-compose/1.0.0/manifest.json +74 -0
  177. 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
  178. 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
  179. 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
  180. 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
  181. 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
  182. 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
  183. 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
  184. 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
  185. 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
  186. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/blueprint-manifest.schema.json +213 -0
  187. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/catalog-index.schema.json +25 -0
  188. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/platform-index.schema.json +25 -0
  189. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/platform-manifest.schema.json +141 -0
  190. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/platform-workflow-catalog.schema.json +72 -0
  191. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/project-workspace.schema.json +122 -0
  192. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources/schemas/service-workflow-catalog.schema.json +72 -0
  193. ai_project_blueprints-0.2.0/src/ai_project_blueprints/resources.py +144 -0
  194. ai_project_blueprints-0.2.0/src/ai_project_blueprints/validate.py +875 -0
  195. ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/PKG-INFO +129 -0
  196. ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/SOURCES.txt +204 -0
  197. ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/dependency_links.txt +1 -0
  198. ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/entry_points.txt +2 -0
  199. ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/requires.txt +9 -0
  200. ai_project_blueprints-0.2.0/src/ai_project_blueprints.egg-info/top_level.txt +1 -0
  201. ai_project_blueprints-0.2.0/tests/test_catalog.py +306 -0
  202. ai_project_blueprints-0.2.0/tests/test_platforms.py +162 -0
  203. ai_project_blueprints-0.2.0/tests/test_release_configuration.py +11 -0
  204. ai_project_blueprints-0.2.0/tests/test_resources.py +160 -0
  205. ai_project_blueprints-0.2.0/tests/test_templates.py +43 -0
  206. 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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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.