@synapta/skills 0.1.0 → 0.1.2

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 (353) hide show
  1. package/dist/index.js +11 -4
  2. package/package.json +3 -4
  3. package/skills/ATTRIBUTION.md +80 -0
  4. package/skills/accessibility-audit/SKILL.md +325 -0
  5. package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
  6. package/skills/apns-notifier/SKILL.md +86 -0
  7. package/skills/approval-policy-enforcer/SKILL.md +66 -0
  8. package/skills/apps-sdk-builder/LICENSE.txt +201 -0
  9. package/skills/apps-sdk-builder/SKILL.md +328 -0
  10. package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
  11. package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
  12. package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
  13. package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
  14. package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
  15. package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
  16. package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
  17. package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
  18. package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
  19. package/skills/architecture-selector/SKILL.md +64 -0
  20. package/skills/backlog-planner/SKILL.md +68 -0
  21. package/skills/carplay-entitlement-checker/SKILL.md +82 -0
  22. package/skills/concept-discovery/SKILL.md +517 -0
  23. package/skills/concept-discovery/assets/sample-analysis.json +81 -0
  24. package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
  25. package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
  26. package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
  27. package/skills/concept-discovery/references/framework-patterns.md +228 -0
  28. package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
  29. package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
  30. package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
  31. package/skills/dast-zap/SKILL.md +453 -0
  32. package/skills/dast-zap/assets/.gitkeep +9 -0
  33. package/skills/dast-zap/assets/github_action.yml +207 -0
  34. package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
  35. package/skills/dast-zap/assets/zap_automation.yaml +196 -0
  36. package/skills/dast-zap/assets/zap_context.xml +192 -0
  37. package/skills/dast-zap/references/EXAMPLE.md +40 -0
  38. package/skills/dast-zap/references/api_testing_guide.md +475 -0
  39. package/skills/dast-zap/references/authentication_guide.md +431 -0
  40. package/skills/dast-zap/references/false_positive_handling.md +427 -0
  41. package/skills/dast-zap/references/owasp_mapping.md +255 -0
  42. package/skills/dep-sbom-scan/SKILL.md +466 -0
  43. package/skills/deploy-cloudflare/SKILL.md +930 -0
  44. package/skills/deploy-docker/SKILL.md +55 -0
  45. package/skills/deploy-fly/SKILL.md +228 -0
  46. package/skills/deploy-k8s/SKILL.md +108 -0
  47. package/skills/deploy-k8s/assets/logo.png +0 -0
  48. package/skills/deploy-k8s/docs/README.md +29 -0
  49. package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
  50. package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
  51. package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
  52. package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
  53. package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
  54. package/skills/deploy-k8s/docs/book.json +16 -0
  55. package/skills/deploy-k8s/docs/community/changelog.md +34 -0
  56. package/skills/deploy-k8s/docs/community/contributing.md +67 -0
  57. package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
  58. package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
  59. package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
  60. package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
  61. package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
  62. package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
  63. package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
  64. package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
  65. package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
  66. package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
  67. package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
  68. package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
  69. package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
  70. package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
  71. package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
  72. package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
  73. package/skills/deploy-k8s/docs/guides/observability.md +67 -0
  74. package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
  75. package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
  76. package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
  77. package/skills/deploy-k8s/docs/package-lock.json +2892 -0
  78. package/skills/deploy-k8s/docs/package.json +13 -0
  79. package/skills/deploy-k8s/references/api-drift.md +298 -0
  80. package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
  81. package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
  82. package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
  83. package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
  84. package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
  85. package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
  86. package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
  87. package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
  88. package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
  89. package/skills/deploy-k8s/references/examples-bad.md +282 -0
  90. package/skills/deploy-k8s/references/examples-good.md +440 -0
  91. package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
  92. package/skills/deploy-k8s/references/helm-patterns.md +203 -0
  93. package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
  94. package/skills/deploy-k8s/references/job-patterns.md +120 -0
  95. package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
  96. package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
  97. package/skills/deploy-k8s/references/network-exposure.md +481 -0
  98. package/skills/deploy-k8s/references/observability.md +302 -0
  99. package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
  100. package/skills/deploy-k8s/references/resource-starvation.md +374 -0
  101. package/skills/deploy-k8s/references/security-hardening.md +209 -0
  102. package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
  103. package/skills/deploy-k8s/references/storage-and-state.md +330 -0
  104. package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
  105. package/skills/deploy-railway/SKILL.md +235 -0
  106. package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
  107. package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
  108. package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
  109. package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
  110. package/skills/deploy-railway/references/analyze-db.md +344 -0
  111. package/skills/deploy-railway/references/configure.md +309 -0
  112. package/skills/deploy-railway/references/deploy.md +195 -0
  113. package/skills/deploy-railway/references/operate.md +214 -0
  114. package/skills/deploy-railway/references/request.md +248 -0
  115. package/skills/deploy-railway/references/setup.md +312 -0
  116. package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
  117. package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
  118. package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
  119. package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
  120. package/skills/deploy-railway/scripts/dal.py +671 -0
  121. package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
  122. package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
  123. package/skills/deploy-railway/scripts/railway-api.sh +52 -0
  124. package/skills/deploy-ssh/SKILL.md +91 -0
  125. package/skills/deploy-vercel/SKILL.md +304 -0
  126. package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
  127. package/skills/deploy-vercel/resources/deploy.sh +301 -0
  128. package/skills/docs-runbooks/SKILL.md +399 -0
  129. package/skills/drive-status-renderer/SKILL.md +62 -0
  130. package/skills/iac-scan/SKILL.md +680 -0
  131. package/skills/iac-scan/assets/.gitkeep +9 -0
  132. package/skills/iac-scan/assets/checkov_config.yaml +94 -0
  133. package/skills/iac-scan/assets/github_actions.yml +199 -0
  134. package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
  135. package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
  136. package/skills/iac-scan/references/EXAMPLE.md +40 -0
  137. package/skills/iac-scan/references/compliance_mapping.md +237 -0
  138. package/skills/iac-scan/references/custom_policies.md +460 -0
  139. package/skills/iac-scan/references/suppression_guide.md +431 -0
  140. package/skills/incident-briefing/SKILL.md +66 -0
  141. package/skills/incident-triage/SKILL.md +481 -0
  142. package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
  143. package/skills/mcp-builder/SKILL.md +244 -0
  144. package/skills/mcp-builder/reference/evaluation.md +602 -0
  145. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  146. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  147. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  148. package/skills/mcp-builder/scripts/connections.py +151 -0
  149. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  150. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  151. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  152. package/skills/mobile-pairing/SKILL.md +52 -0
  153. package/skills/ops-sre/SKILL.md +297 -0
  154. package/skills/playwright-qa/LICENSE.txt +201 -0
  155. package/skills/playwright-qa/NOTICE.txt +14 -0
  156. package/skills/playwright-qa/SKILL.md +156 -0
  157. package/skills/playwright-qa/agents/openai.yaml +6 -0
  158. package/skills/playwright-qa/assets/playwright-small.svg +3 -0
  159. package/skills/playwright-qa/assets/playwright.png +0 -0
  160. package/skills/playwright-qa/references/cli.md +116 -0
  161. package/skills/playwright-qa/references/workflows.md +95 -0
  162. package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
  163. package/skills/release-publish/SKILL.md +85 -0
  164. package/skills/repo-bootstrap/SKILL.md +92 -0
  165. package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
  166. package/skills/repo-bootstrap/assets/root-thin.md +141 -0
  167. package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
  168. package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
  169. package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
  170. package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
  171. package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
  172. package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
  173. package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
  174. package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
  175. package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
  176. package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
  177. package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
  178. package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
  179. package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
  180. package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
  181. package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
  182. package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
  183. package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
  184. package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
  185. package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
  186. package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
  187. package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
  188. package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
  189. package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
  190. package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
  191. package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
  192. package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
  193. package/skills/repo-bootstrap/checkpoints.yaml +279 -0
  194. package/skills/repo-bootstrap/evals/evals.json +385 -0
  195. package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
  196. package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
  197. package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
  198. package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
  199. package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
  200. package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
  201. package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
  202. package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
  203. package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
  204. package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
  205. package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
  206. package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
  207. package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
  208. package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
  209. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
  210. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
  211. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
  212. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
  213. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
  214. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
  215. package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
  216. package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
  217. package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
  218. package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
  219. package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
  220. package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
  221. package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
  222. package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
  223. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
  224. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
  225. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
  226. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
  227. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
  228. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
  229. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
  230. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
  231. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
  232. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
  233. package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
  234. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
  235. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
  236. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
  237. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
  238. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
  239. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
  240. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
  241. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
  242. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
  243. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
  244. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
  245. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
  246. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
  247. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
  248. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
  249. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
  250. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
  251. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
  252. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
  253. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
  254. package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
  255. package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
  256. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
  257. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
  258. package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
  259. package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
  260. package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
  261. package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
  262. package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
  263. package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
  264. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
  265. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
  266. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
  267. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
  268. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
  269. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
  270. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
  271. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
  272. package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
  273. package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
  274. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
  275. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
  276. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
  277. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
  278. package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
  279. package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
  280. package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
  281. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
  282. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
  283. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
  284. package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
  285. package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
  286. package/skills/repo-bootstrap/references/output-structure.md +124 -0
  287. package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
  288. package/skills/repo-bootstrap/references/verification-guide.md +137 -0
  289. package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
  290. package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
  291. package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
  292. package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
  293. package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
  294. package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
  295. package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
  296. package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
  297. package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
  298. package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
  299. package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
  300. package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
  301. package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
  302. package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
  303. package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
  304. package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
  305. package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
  306. package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
  307. package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
  308. package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
  309. package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
  310. package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
  311. package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
  312. package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
  313. package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
  314. package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
  315. package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
  316. package/skills/schema-api-contracts/SKILL.md +56 -0
  317. package/skills/secret-hygiene/SKILL.md +511 -0
  318. package/skills/secret-hygiene/assets/.gitkeep +9 -0
  319. package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
  320. package/skills/secret-hygiene/assets/config-custom.toml +178 -0
  321. package/skills/secret-hygiene/assets/config-strict.toml +48 -0
  322. package/skills/secret-hygiene/assets/github-action.yml +181 -0
  323. package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
  324. package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
  325. package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
  326. package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
  327. package/skills/secret-hygiene/references/detection_rules.md +276 -0
  328. package/skills/secret-hygiene/references/false_positives.md +598 -0
  329. package/skills/secret-hygiene/references/remediation_guide.md +530 -0
  330. package/skills/stack-selector/SKILL.md +56 -0
  331. package/skills/telegram-control/SKILL.md +110 -0
  332. package/skills/telegram-control/references/architecture.md +184 -0
  333. package/skills/telegram-control/references/convex.md +173 -0
  334. package/skills/telegram-control/references/error_handling.md +212 -0
  335. package/skills/telegram-control/references/initial_setup.md +165 -0
  336. package/skills/telegram-control/references/telegram_api.md +156 -0
  337. package/skills/telegram-control/scripts/cancel_message.ts +53 -0
  338. package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
  339. package/skills/telegram-control/scripts/logger.ts +121 -0
  340. package/skills/telegram-control/scripts/proxy-util.ts +11 -0
  341. package/skills/telegram-control/scripts/schedule_message.ts +216 -0
  342. package/skills/telegram-control/scripts/send_message.ts +115 -0
  343. package/skills/telegram-control/scripts/setup.ts +185 -0
  344. package/skills/telegram-control/scripts/types.ts +75 -0
  345. package/skills/telegram-control/scripts/view_history.ts +74 -0
  346. package/skills/test-strategy/SKILL.md +352 -0
  347. package/skills/threat-model/SKILL.md +303 -0
  348. package/skills/threat-model/examples/example-output.md +196 -0
  349. package/skills/threat-model/template.md +96 -0
  350. package/skills/ts-lint/SKILL.md +80 -0
  351. package/skills/ui-flow/SKILL.md +668 -0
  352. package/skills/voice-command-router/SKILL.md +51 -0
  353. package/skills/widget-live-activity-sync/SKILL.md +66 -0
@@ -0,0 +1,80 @@
1
+ # Observability Stacks
2
+
3
+ **Load this reference when detected:** Prometheus Operator, kube-prometheus-stack, ServiceMonitor, PodMonitor, PrometheusRule, AlertmanagerConfig, OpenTelemetry Collector, OpenTelemetry Operator, Loki, Grafana, Tempo, metrics, logs, traces, dashboards, or telemetry pipelines.
4
+
5
+ ## Why this matters
6
+
7
+ Observability add-ons use CRDs, label selectors, generated scrape config, and deployment modes that differ by stack. LLMs frequently generate resources that apply successfully but are never selected, never scraped, or duplicate data. Do not load this file for basic application logging unless an observability stack is involved.
8
+
9
+ ## Prometheus Operator
10
+
11
+ ServiceMonitor and PodMonitor behavior depends on selectors.
12
+
13
+ - `ServiceMonitor` selects Services, not Deployments.
14
+ - The Service must expose a named port, and the ServiceMonitor endpoint should reference that port name.
15
+ - `PodMonitor` selects Pods directly and should be used only when a Service is unnecessary or unavailable.
16
+ - Prometheus or PrometheusAgent selects monitors through label and namespace selectors; labels must match both sides.
17
+ - `PrometheusRule` must be selected by the relevant Prometheus rule selectors.
18
+ - Do not create ServiceMonitor/PodMonitor resources unless the CRDs are installed.
19
+
20
+ ## OpenTelemetry Collector
21
+
22
+ Choose collector mode by signal source.
23
+
24
+ - `DaemonSet`: node-local logs, host metrics, kubelet metrics, or per-node collection.
25
+ - `Deployment`: centralized OTLP gateway, cluster events, or singleton receivers.
26
+ - `StatefulSet`: stable identity or persistent queue/storage requirements.
27
+ - Avoid duplicate cluster-wide receivers across multiple replicas unless the receiver supports it.
28
+ - Set memory limits and memory limiter processor together.
29
+ - Bind receivers as narrowly as practical and expose OTLP only inside the cluster unless explicitly required.
30
+
31
+ ## Loki and Logs
32
+
33
+ - Choose Loki deployment mode by scale: monolithic for small stacks, scalable or microservices for production/high volume.
34
+ - Configure durable object storage for production Loki; do not rely on ephemeral storage.
35
+ - Keep log labels low-cardinality. Do not label on request IDs, user IDs, pod UIDs, or raw paths.
36
+ - Prefer structured JSON logs to stdout/stderr from applications.
37
+ - Separate log collection agents from application pods unless the sidecar is explicitly required.
38
+
39
+ ## Grafana and Dashboards
40
+
41
+ - Treat dashboards and datasources as configuration owned by the observability platform.
42
+ - Avoid embedding secrets in dashboard ConfigMaps or Helm values.
43
+ - When using sidecar dashboard discovery, ensure labels match the sidecar selector.
44
+ - Keep dashboard ConfigMaps namespace and RBAC aligned with the deployed Grafana chart.
45
+
46
+ ## Alerting
47
+
48
+ - Alerts should be actionable, routed, and include runbook context.
49
+ - Use `for:` durations to reduce flapping.
50
+ - Avoid high-cardinality alert labels.
51
+ - Separate symptom alerts from cause alerts; do not page on every transient pod restart.
52
+ - Validate PromQL against the actual metric names emitted by the stack.
53
+
54
+ ## Validation
55
+
56
+ - `kubectl get crd | grep -Ei "servicemonitors|podmonitors|prometheusrules"` (or `findstr /i` on Windows)
57
+ - `kubectl get servicemonitor,podmonitor,prometheusrule -A`
58
+ - Inspect Prometheus target discovery for selected monitors.
59
+ - Check generated Prometheus config or operator logs when targets are missing.
60
+ - `helm template` observability charts and validate rendered CRDs/resources before applying.
61
+ - For OpenTelemetry, inspect Collector logs for invalid pipeline components and dropped data.
62
+
63
+ ## LLM Mistake Checklist
64
+
65
+ - Creating ServiceMonitor selectors that match Deployment labels but not Service labels.
66
+ - Referencing a numeric port when the ServiceMonitor expects a named Service port.
67
+ - Forgetting that Prometheus selectors must select the monitor.
68
+ - Creating monitoring CRDs when the Prometheus Operator is not installed.
69
+ - Running cluster-wide OpenTelemetry receivers in multiple replicas and duplicating data.
70
+ - Choosing Loki monolithic mode for high-volume production without durable storage.
71
+ - Creating high-cardinality Loki labels or alert labels.
72
+ - Shipping dashboards with plaintext datasource credentials.
73
+
74
+ ## Grounding Sources
75
+
76
+ - Prometheus Operator design: https://prometheus-operator.dev/docs/getting-started/design/
77
+ - Prometheus Operator ServiceMonitor and PodMonitor getting started: https://prometheus-operator.dev/docs/developer/getting-started/
78
+ - Prometheus Operator troubleshooting: https://prometheus-operator.dev/docs/platform/troubleshooting/
79
+ - OpenTelemetry Collector Helm chart: https://opentelemetry.io/docs/platforms/kubernetes/helm/collector/
80
+ - Loki Helm installation: https://grafana.com/docs/loki/latest/setup/install/helm/
@@ -0,0 +1,67 @@
1
+ # OpenShift Patterns
2
+
3
+ **Load this reference when detected:** OpenShift, OKD, ROSA, ARO, Route, SecurityContextConstraints, SCC, restricted-v2, OpenShift Pipelines, OpenShift GitOps, OperatorHub, OLM, ImageStream, or `oc`.
4
+
5
+ ## Why this matters
6
+
7
+ OpenShift is Kubernetes with important platform APIs and security defaults. Generic upstream manifests often fail because of SecurityContextConstraints, arbitrary UID requirements, Routes, and operator-managed platform components. Do not load this file for vanilla clusters unless OpenShift APIs are present.
8
+
9
+ ## Security Context Constraints
10
+
11
+ SCCs are admission controls for pod privileges.
12
+
13
+ - Do not modify default SCCs.
14
+ - Prefer workloads that run under `restricted-v2` or the platform default restricted SCC.
15
+ - Do not hardcode `runAsUser: 1000` or another fixed UID unless the namespace/SCC permits it.
16
+ - Build images to run with an arbitrary UID and writable group-owned paths.
17
+ - If a workload needs `anyuid`, host networking, host mounts, or privileged mode, require a justification and bind the narrowest SCC only to the dedicated ServiceAccount.
18
+ - Use RBAC to grant SCC use to ServiceAccounts, not broad users or groups.
19
+
20
+ ## Routes and Ingress
21
+
22
+ OpenShift Routes are first-class edge routing resources.
23
+
24
+ - Use `Route` when the user asks for OpenShift-native exposure.
25
+ - Choose TLS termination deliberately: edge, passthrough, or re-encrypt.
26
+ - Do not assume Ingress annotations from nginx, AWS, GCE, or AGIC apply to Routes.
27
+ - For portable upstream manifests, use Ingress only when the target OpenShift cluster supports the intended IngressController behavior.
28
+
29
+ ## Images and Runtime Assumptions
30
+
31
+ OpenShift security often exposes image problems.
32
+
33
+ - Avoid images that require root by default.
34
+ - Ensure writable directories can be written by an arbitrary UID, commonly through group permissions.
35
+ - Do not rely on Docker socket mounts or hostPath except for platform-level agents with explicit SCC approval.
36
+ - For internal registry or ImageStream workflows, keep image references and pull policies aligned with the platform's promotion model.
37
+
38
+ ## Operators and OLM
39
+
40
+ When OperatorHub, OLM, or custom operators are in scope:
41
+
42
+ - Prefer Subscription/OperatorGroup/InstallPlan patterns only when the user is actually managing operators.
43
+ - Do not hand-roll CRDs owned by an installed operator unless the operator documentation requires it.
44
+ - Validate custom resources against installed CRDs, not only generic Kubernetes schemas.
45
+
46
+ ## Validation
47
+
48
+ - `oc apply --dry-run=server -f <manifest>`
49
+ - `oc auth can-i use scc/restricted-v2 --as=system:serviceaccount:<namespace>:<serviceaccount>`
50
+ - `oc describe pod <name>` for SCC admission failures
51
+ - `oc get route -n <namespace>` for Route readiness
52
+ - `oc get csv,subscription,operatorgroup -A` when OLM-managed resources are involved
53
+
54
+ ## LLM Mistake Checklist
55
+
56
+ - Hardcoding a UID that violates OpenShift namespace UID ranges.
57
+ - Asking users to edit default SCCs.
58
+ - Granting `anyuid` or `privileged` SCC to broad groups.
59
+ - Generating Ingress-controller annotations for OpenShift Routes.
60
+ - Assuming root-capable images will run under restricted SCCs.
61
+ - Forgetting `oc` validation and SCC checks.
62
+ - Creating operator-owned resources without verifying the CRD exists.
63
+
64
+ ## Grounding Sources
65
+
66
+ - OpenShift SecurityContextConstraints: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/authentication_and_authorization/managing-pod-security-policies
67
+ - OpenShift Routes: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/ingress_and_load_balancing/routes
@@ -0,0 +1,155 @@
1
+ # DaemonSet and Operator Patterns -- Node-Level and Custom Controllers
2
+
3
+ **Load this reference when generating:** DaemonSet, PriorityClass, CRDs, or any workload that must run on every (or a targeted subset of) node(s).
4
+
5
+ ## When to Use a DaemonSet
6
+ Exactly one pod per qualifying node: log collectors (Fluent Bit, Vector), monitoring agents (node-exporter, Datadog), network plugins (CNI, kube-proxy, Cilium), CSI node drivers, security agents (Falco). If you need multiple replicas per node or the workload is not node-scoped, use a Deployment.
7
+
8
+ ## Update Strategies
9
+ | Strategy | Behavior | Use when |
10
+ |---|---|---|
11
+ | `RollingUpdate` | Replaces pods node-by-node; `maxUnavailable` controls pace | Normal updates |
12
+ | `OnDelete` | Pods replaced only when manually deleted | Critical infra (CNI, kube-proxy) needing manual control |
13
+
14
+ For large clusters, set `maxUnavailable` to a percentage (e.g., `"10%"`) to speed rollouts.
15
+
16
+ ## Node Selectors and Tolerations
17
+ **Targeting**: use `nodeSelector` for simple matching, `nodeAffinity` for richer expressions:
18
+ ```yaml
19
+ nodeSelector:
20
+ node.kubernetes.io/os: linux
21
+ kubernetes.io/arch: amd64
22
+ ```
23
+
24
+ **Tolerations**: DaemonSets often must run on tainted nodes (control-plane, GPU pools). Add only the tolerations you need:
25
+ ```yaml
26
+ tolerations:
27
+ - key: node-role.kubernetes.io/control-plane
28
+ operator: Exists
29
+ effect: NoSchedule
30
+ - key: node.kubernetes.io/not-ready
31
+ operator: Exists
32
+ effect: NoExecute
33
+ ```
34
+ Never use `operator: Exists` without a `key` (tolerates everything) unless the DaemonSet truly belongs on every node.
35
+
36
+ ## Resource Management
37
+ DaemonSet pods run on **every node**. 200m CPU x 100 nodes = 20 cores cluster-wide. Be conservative:
38
+ - `requests` = steady-state consumption. `limits` = burst cap.
39
+ - Monitor actual usage and right-size iteratively.
40
+
41
+ ## Priority Classes
42
+ Prevent preemption of system DaemonSets with a custom PriorityClass:
43
+ ```yaml
44
+ apiVersion: scheduling.k8s.io/v1
45
+ kind: PriorityClass
46
+ metadata:
47
+ name: system-node-agent
48
+ value: 1000000
49
+ globalDefault: false
50
+ preemptionPolicy: PreemptLowerPriority
51
+ description: "Node-level DaemonSet agents (logging, monitoring)."
52
+ ```
53
+ Built-in `system-cluster-critical` and `system-node-critical` are reserved for core components. Use a custom class in the 100000-10000000 range.
54
+
55
+ ## Operator Pattern Overview
56
+ An operator is a custom controller that watches CRs and reconciles cluster state. Use when:
57
+ - Complex operational logic (failover, backup, scaling) exceeds built-in controllers.
58
+ - Users need a simple declarative API for a complex system (database, queue).
59
+ - Manual runbooks are error-prone and should be codified.
60
+
61
+ Do NOT build an operator when Helm, Kustomize, or a Job suffices. Operators carry significant maintenance burden.
62
+
63
+ ## CRD Basics
64
+ ```yaml
65
+ apiVersion: apiextensions.k8s.io/v1
66
+ kind: CustomResourceDefinition
67
+ metadata:
68
+ name: postgresclusters.db.example.com
69
+ spec:
70
+ group: db.example.com
71
+ scope: Namespaced
72
+ names: { plural: postgresclusters, singular: postgrescluster, kind: PostgresCluster, shortNames: ["pgc"] }
73
+ versions:
74
+ - name: v1alpha1
75
+ served: true
76
+ storage: true
77
+ schema:
78
+ openAPIV3Schema:
79
+ type: object
80
+ properties:
81
+ spec:
82
+ type: object
83
+ required: ["replicas", "version"]
84
+ properties:
85
+ replicas: { type: integer, minimum: 1, maximum: 10 }
86
+ version: { type: string, enum: ["15", "16"] }
87
+ storage:
88
+ type: object
89
+ properties:
90
+ size: { type: string, pattern: "^[0-9]+Gi$" }
91
+ ```
92
+ Always include `openAPIV3Schema` with validation. CRDs without it accept arbitrary YAML, causing runtime errors.
93
+
94
+ ## Operator Frameworks
95
+ - **kubebuilder**: upstream Go framework. Generates scaffolding, RBAC, CRD manifests, webhooks. Preferred for Go teams.
96
+ - **operator-sdk**: extends kubebuilder; adds Ansible and Helm operator support for non-Go teams.
97
+
98
+ Both produce the same runtime pattern: a manager running reconciliation loops.
99
+
100
+ ## Example: Log Collector DaemonSet
101
+ ```yaml
102
+ apiVersion: apps/v1
103
+ kind: DaemonSet
104
+ metadata:
105
+ name: fluent-bit
106
+ labels: { app.kubernetes.io/name: fluent-bit, app.kubernetes.io/component: log-collector }
107
+ spec:
108
+ selector:
109
+ matchLabels: { app.kubernetes.io/name: fluent-bit, app.kubernetes.io/component: log-collector }
110
+ updateStrategy: { type: RollingUpdate, rollingUpdate: { maxUnavailable: "10%" } }
111
+ template:
112
+ metadata:
113
+ labels: { app.kubernetes.io/name: fluent-bit, app.kubernetes.io/component: log-collector }
114
+ spec:
115
+ priorityClassName: system-node-agent
116
+ serviceAccountName: fluent-bit
117
+ nodeSelector: { node.kubernetes.io/os: linux }
118
+ tolerations:
119
+ - { key: node-role.kubernetes.io/control-plane, operator: Exists, effect: NoSchedule }
120
+ - { key: node.kubernetes.io/not-ready, operator: Exists, effect: NoExecute, tolerationSeconds: 60 }
121
+ securityContext:
122
+ runAsNonRoot: true
123
+ runAsUser: 10000
124
+ runAsGroup: 10000
125
+ seccompProfile: { type: RuntimeDefault }
126
+ containers:
127
+ - name: fluent-bit
128
+ image: fluent/fluent-bit:3.0.4
129
+ ports: [{ containerPort: 2020, name: metrics, protocol: TCP }]
130
+ resources:
131
+ requests: { cpu: 50m, memory: 64Mi }
132
+ limits: { cpu: 200m, memory: 128Mi }
133
+ securityContext:
134
+ allowPrivilegeEscalation: false
135
+ readOnlyRootFilesystem: true
136
+ capabilities: { drop: ["ALL"] }
137
+ volumeMounts:
138
+ - { name: varlog, mountPath: /var/log, readOnly: true }
139
+ - { name: config, mountPath: /fluent-bit/etc, readOnly: true }
140
+ - { name: buffer, mountPath: /fluent-bit/buffer }
141
+ volumes:
142
+ - { name: varlog, hostPath: { path: /var/log, type: Directory } }
143
+ - { name: config, configMap: { name: fluent-bit-config } }
144
+ - { name: buffer, emptyDir: { sizeLimit: 256Mi } }
145
+ ```
146
+
147
+ ## LLM Mistake Checklist
148
+ 1. **DaemonSet with `replicas` field.** DaemonSets have no `replicas`. The scheduler places one pod per qualifying node. Including it is an API error.
149
+ 2. **Missing tolerations for tainted nodes.** Without explicit tolerations, pods stay Pending on control-plane or special-purpose nodes.
150
+ 3. **Overly generous resource requests.** Multiplied across every node, small over-requests waste enormous capacity. Keep requests minimal.
151
+ 4. **Using system-node-critical without justification.** Reserved for core components. Use a custom PriorityClass for application agents.
152
+ 5. **hostPath without `type`.** Always set `hostPath.type` (Directory, Socket, File) to catch mount errors at startup, not runtime.
153
+ 6. **CRD without openAPIV3Schema.** No validation = any YAML accepted = inscrutable controller errors. Always define a strict schema.
154
+ 7. **Blanket toleration (no key).** `operator: Exists` with no `key` tolerates every taint including NoExecute eviction taints. Only tolerate specific, known taints.
155
+ 8. **Forgetting serviceAccountName.** DaemonSets accessing host paths or the API need a dedicated ServiceAccount with minimal RBAC.
@@ -0,0 +1,146 @@
1
+ # Deployment Patterns -- Stateless Workloads
2
+
3
+ **Load this reference when generating:** Deployment, Service, HPA, PDB, Ingress, or any stateless application manifest.
4
+
5
+ ## When to Use a Deployment
6
+ Any workload that is stateless: web apps, REST/gRPC APIs, microservices, frontend proxies, queue-consuming workers. If pods are interchangeable and need no stable identity or persistent local storage, use a Deployment.
7
+
8
+ ## Minimum Production Checklist
9
+ 1. `replicas` >= 2 -- never ship a single replica to production.
10
+ 2. `resources.requests` AND `resources.limits` on every container (cpu + memory).
11
+ 3. Pod-level `securityContext` satisfying PSS **restricted** profile.
12
+ 4. `readinessProbe` (gates traffic) and `livenessProbe` (restarts stuck pods) on separate endpoints.
13
+ 5. `topologySpreadConstraints` or pod anti-affinity across failure domains.
14
+ 6. An accompanying `PodDisruptionBudget`.
15
+
16
+ ## Label Strategy
17
+ ```yaml
18
+ labels:
19
+ app.kubernetes.io/name: order-service # app identity -- use in selectors
20
+ app.kubernetes.io/version: "1.4.2" # NEVER put in selector.matchLabels
21
+ app.kubernetes.io/component: api # role: api | worker | cache
22
+ app.kubernetes.io/part-of: ecommerce # higher-level system
23
+ app.kubernetes.io/managed-by: helm # tooling
24
+ ```
25
+
26
+ ## Service Wiring
27
+ Default: **ClusterIP + Ingress**. ClusterIP for in-cluster traffic; Ingress terminates TLS and routes externally. Avoid LoadBalancer Services unless no Ingress controller exists or the workload needs raw TCP/UDP.
28
+
29
+ ## Config Mounting
30
+ - **Prefer volume mounts** for file-based config -- enables atomic updates on ConfigMap rotation.
31
+ - Use `env`/`envFrom` only for simple key-value pairs.
32
+ - Set `immutable: true` on Secrets that should never change in place.
33
+
34
+ ## Environment-Specific Configuration
35
+ - **Kustomize overlays**: `base/` + `overlays/{dev,staging,prod}/` for per-env patching (replicas, resources, images).
36
+ - **Helm values**: `values-prod.yaml` per environment when conditionals or loops are needed.
37
+
38
+ ## Example: Production Deployment + Service + HPA
39
+ ```yaml
40
+ apiVersion: apps/v1
41
+ kind: Deployment
42
+ metadata:
43
+ name: order-service
44
+ labels: &labels
45
+ app.kubernetes.io/name: order-service
46
+ app.kubernetes.io/component: api
47
+ app.kubernetes.io/part-of: ecommerce
48
+ spec:
49
+ replicas: 3
50
+ revisionHistoryLimit: 5
51
+ selector:
52
+ matchLabels: { app.kubernetes.io/name: order-service, app.kubernetes.io/component: api }
53
+ strategy: { type: RollingUpdate, rollingUpdate: { maxSurge: 1, maxUnavailable: 0 } }
54
+ template:
55
+ metadata:
56
+ labels: { <<: *labels, app.kubernetes.io/version: "1.4.2" }
57
+ spec:
58
+ securityContext:
59
+ runAsNonRoot: true
60
+ runAsUser: 10000
61
+ runAsGroup: 10000
62
+ fsGroup: 10000
63
+ seccompProfile: { type: RuntimeDefault }
64
+ topologySpreadConstraints:
65
+ - maxSkew: 1
66
+ topologyKey: topology.kubernetes.io/zone
67
+ whenUnsatisfiable: DoNotSchedule
68
+ labelSelector:
69
+ matchLabels: { app.kubernetes.io/name: order-service }
70
+ containers:
71
+ - name: order-service
72
+ image: registry.example.com/order-service:1.4.2
73
+ ports: [{ containerPort: 8080, protocol: TCP }]
74
+ resources:
75
+ requests: { cpu: 250m, memory: 256Mi }
76
+ limits: { cpu: "1", memory: 512Mi }
77
+ securityContext:
78
+ allowPrivilegeEscalation: false
79
+ readOnlyRootFilesystem: true
80
+ capabilities: { drop: ["ALL"] }
81
+ readinessProbe:
82
+ httpGet: { path: /healthz/ready, port: 8080 }
83
+ initialDelaySeconds: 5
84
+ periodSeconds: 10
85
+ livenessProbe:
86
+ httpGet: { path: /healthz/live, port: 8080 }
87
+ initialDelaySeconds: 15
88
+ periodSeconds: 20
89
+ volumeMounts:
90
+ - { name: config, mountPath: /etc/order-service, readOnly: true }
91
+ - { name: tmp, mountPath: /tmp }
92
+ volumes:
93
+ - { name: config, configMap: { name: order-service-config } }
94
+ - { name: tmp, emptyDir: {} }
95
+ ---
96
+ apiVersion: v1
97
+ kind: Service
98
+ metadata:
99
+ name: order-service
100
+ spec:
101
+ type: ClusterIP
102
+ selector: { app.kubernetes.io/name: order-service, app.kubernetes.io/component: api }
103
+ ports: [{ port: 80, targetPort: 8080, protocol: TCP }]
104
+ ---
105
+ apiVersion: autoscaling/v2
106
+ kind: HorizontalPodAutoscaler
107
+ metadata:
108
+ name: order-service
109
+ spec:
110
+ scaleTargetRef: { apiVersion: apps/v1, kind: Deployment, name: order-service }
111
+ minReplicas: 3
112
+ maxReplicas: 15
113
+ metrics:
114
+ - type: Resource
115
+ resource: { name: cpu, target: { type: Utilization, averageUtilization: 70 } }
116
+ - type: Pods
117
+ pods:
118
+ metric: { name: http_requests_per_second }
119
+ target: { type: AverageValue, averageValue: "1000" }
120
+ behavior:
121
+ scaleDown:
122
+ stabilizationWindowSeconds: 300
123
+ policies: [{ type: Percent, value: 25, periodSeconds: 60 }]
124
+ scaleUp:
125
+ stabilizationWindowSeconds: 30
126
+ policies: [{ type: Percent, value: 50, periodSeconds: 60 }]
127
+ ---
128
+ apiVersion: policy/v1
129
+ kind: PodDisruptionBudget
130
+ metadata:
131
+ name: order-service
132
+ spec:
133
+ minAvailable: 2
134
+ selector:
135
+ matchLabels: { app.kubernetes.io/name: order-service, app.kubernetes.io/component: api }
136
+ ```
137
+
138
+ ## LLM Mistake Checklist
139
+ 1. **Version label in selector.** Never put `app.kubernetes.io/version` in `selector.matchLabels` -- selectors are immutable; this breaks upgrades.
140
+ 2. **Missing readOnlyRootFilesystem.** PSS restricted requires it. Mount an `emptyDir` at `/tmp` if the app writes temp files.
141
+ 3. **Omitting resource limits.** Both `requests` and `limits` are required. Without them the pod is BestEffort QoS and evicted first.
142
+ 4. **Single replica in production.** Always `replicas >= 2` with a PDB. One replica = zero availability during node drains.
143
+ 5. **HPA without scaleDown stabilization.** Default scale-down is aggressive. Set `stabilizationWindowSeconds: 300` to prevent thrashing.
144
+ 6. **Probes hitting the main API path.** Use dedicated `/healthz/*` endpoints to avoid cascading failures under load.
145
+ 7. **Forgetting /tmp emptyDir.** With `readOnlyRootFilesystem: true`, processes writing to `/tmp` crash without this volume.
146
+ 8. **LoadBalancer Service by default.** Each provisions a cloud LB -- use ClusterIP + Ingress instead.
@@ -0,0 +1,87 @@
1
+ # Do / Don't Quick Reference
2
+
3
+ > Terse checklist of Kubernetes best practices organized by category. Each line is
4
+ > a standalone rule. Default security posture is PSS "restricted" profile.
5
+
6
+ ---
7
+
8
+ ## Security Contexts
9
+
10
+ - DO set `runAsNonRoot: true` and explicit `runAsUser`/`runAsGroup` on every pod.
11
+ - DO set `allowPrivilegeEscalation: false` on every container.
12
+ - DO set `readOnlyRootFilesystem: true` and mount writable paths as emptyDir.
13
+ - DO set `capabilities.drop: ["ALL"]` and only add back specific caps if required.
14
+ - DO set `seccompProfile.type: RuntimeDefault` at the pod level.
15
+ - DON'T set `privileged: true` unless the workload genuinely requires it (CNI plugins, node agents).
16
+ - DON'T omit the security context and rely on cluster defaults.
17
+
18
+ ## RBAC
19
+
20
+ - DO use namespace-scoped Role + RoleBinding for workloads that operate in one namespace.
21
+ - DO grant only the specific verbs, API groups, and resources needed.
22
+ - DO use `resourceNames` to scope access to specific objects when possible.
23
+ - DON'T bind to `cluster-admin` for application workloads.
24
+ - DON'T use ClusterRoleBinding when RoleBinding is sufficient.
25
+ - DON'T grant `*` (wildcard) verbs or resources.
26
+ - DON'T leave `automountServiceAccountToken: true` on pods that do not call the Kubernetes API.
27
+
28
+ ## Resource Management
29
+
30
+ - DO set `requests` for both CPU and memory on every container.
31
+ - DO set `limits.memory` to prevent OOM from killing other workloads.
32
+ - DO set ResourceQuota and LimitRange on every namespace.
33
+ - DO leave CPU limits unset or generous to avoid CPU throttling.
34
+ - DON'T omit resource requests -- the scheduler cannot bin-pack without them.
35
+ - DON'T set requests equal to limits unless you need Guaranteed QoS class intentionally.
36
+
37
+ ## Networking
38
+
39
+ - DO create a default-deny NetworkPolicy in every namespace.
40
+ - DO allow DNS egress (UDP/TCP 53 to kube-dns) in every allow-list policy.
41
+ - DO use `ingressClassName` instead of the deprecated `kubernetes.io/ingress.class` annotation.
42
+ - DO use `networking.k8s.io/v1` for Ingress and NetworkPolicy resources.
43
+ - DON'T expose Services as `type: LoadBalancer` without understanding cost and security implications.
44
+ - DON'T use `type: NodePort` in production without firewall rules.
45
+
46
+ ## Probes and Rollouts
47
+
48
+ - DO set a readiness probe on every container that serves traffic.
49
+ - DO set a liveness probe that checks only the process's own health.
50
+ - DO set `initialDelaySeconds` to account for application startup time.
51
+ - DO set `revisionHistoryLimit` to a small number (3-5) to reduce etcd storage.
52
+ - DO use `maxUnavailable: 0` with `maxSurge: 1` for zero-downtime rolling updates.
53
+ - DON'T point liveness probes at external dependencies.
54
+ - DON'T set liveness and readiness probes to the same endpoint and thresholds without understanding the difference.
55
+ - DON'T set `failureThreshold: 1` on liveness probes -- one slow response kills the pod.
56
+
57
+ ## Image Management
58
+
59
+ - DO use immutable image tags (`v1.2.3`) or digests (`@sha256:...`).
60
+ - DO set `imagePullPolicy: IfNotPresent` with immutable tags.
61
+ - DO reference images from a private registry with `imagePullSecrets`.
62
+ - DON'T use `:latest` -- it is mutable, breaks rollback, and causes inconsistent replicas.
63
+ - DON'T omit the image tag entirely -- it implicitly defaults to `:latest`.
64
+
65
+ ## Storage
66
+
67
+ - DO verify the storage class supports the requested access mode before creating a PVC.
68
+ - DO use `ReadWriteOnce` for block storage (EBS, Persistent Disk).
69
+ - DO use StatefulSet with `volumeClaimTemplates` for per-replica storage.
70
+ - DON'T request `ReadWriteMany` with block storage classes (gp3, pd-ssd).
71
+ - DON'T use `hostPath` volumes in production workloads.
72
+
73
+ ## Configuration
74
+
75
+ - DO store credentials in Secrets, not ConfigMaps.
76
+ - DO use ExternalSecrets or Sealed Secrets so plain-text credentials never enter version control.
77
+ - DO use ConfigMap/Secret hash-based naming (Kustomize generator, Helm sha annotation) to trigger rolling updates on config change.
78
+ - DON'T embed passwords in connection string environment variables inside ConfigMaps.
79
+ - DON'T commit raw Secret manifests to Git.
80
+
81
+ ## Namespaces and Isolation
82
+
83
+ - DO apply PSA labels (`pod-security.kubernetes.io/enforce: restricted`) to every namespace.
84
+ - DO create ResourceQuota in every namespace to prevent noisy-neighbor resource exhaustion.
85
+ - DO use separate namespaces for separate trust boundaries.
86
+ - DON'T deploy application workloads in `default`, `kube-system`, or `kube-public`.
87
+ - DON'T assume namespace isolation provides network isolation -- it does not without NetworkPolicies.