@synapta/skills 0.1.1 → 0.2.0
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.
- package/dist/index.js +11 -4
- package/package.json +3 -4
- package/skills/ATTRIBUTION.md +80 -0
- package/skills/accessibility-audit/SKILL.md +325 -0
- package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
- package/skills/apns-notifier/SKILL.md +86 -0
- package/skills/approval-policy-enforcer/SKILL.md +66 -0
- package/skills/apps-sdk-builder/LICENSE.txt +201 -0
- package/skills/apps-sdk-builder/SKILL.md +328 -0
- package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
- package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
- package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
- package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
- package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
- package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
- package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
- package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
- package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
- package/skills/architecture-selector/SKILL.md +64 -0
- package/skills/backlog-planner/SKILL.md +68 -0
- package/skills/carplay-entitlement-checker/SKILL.md +82 -0
- package/skills/concept-deepener/SKILL.md +86 -0
- package/skills/concept-discovery/SKILL.md +517 -0
- package/skills/concept-discovery/assets/sample-analysis.json +81 -0
- package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
- package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
- package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
- package/skills/concept-discovery/references/framework-patterns.md +228 -0
- package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
- package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
- package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
- package/skills/dast-zap/SKILL.md +453 -0
- package/skills/dast-zap/assets/.gitkeep +9 -0
- package/skills/dast-zap/assets/github_action.yml +207 -0
- package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
- package/skills/dast-zap/assets/zap_automation.yaml +196 -0
- package/skills/dast-zap/assets/zap_context.xml +192 -0
- package/skills/dast-zap/references/EXAMPLE.md +40 -0
- package/skills/dast-zap/references/api_testing_guide.md +475 -0
- package/skills/dast-zap/references/authentication_guide.md +431 -0
- package/skills/dast-zap/references/false_positive_handling.md +427 -0
- package/skills/dast-zap/references/owasp_mapping.md +255 -0
- package/skills/dep-sbom-scan/SKILL.md +466 -0
- package/skills/deploy-cloudflare/SKILL.md +930 -0
- package/skills/deploy-docker/SKILL.md +55 -0
- package/skills/deploy-fly/SKILL.md +228 -0
- package/skills/deploy-k8s/SKILL.md +108 -0
- package/skills/deploy-k8s/assets/logo.png +0 -0
- package/skills/deploy-k8s/docs/README.md +29 -0
- package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
- package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
- package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
- package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
- package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
- package/skills/deploy-k8s/docs/book.json +16 -0
- package/skills/deploy-k8s/docs/community/changelog.md +34 -0
- package/skills/deploy-k8s/docs/community/contributing.md +67 -0
- package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
- package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
- package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
- package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
- package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
- package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
- package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
- package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
- package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
- package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
- package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
- package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
- package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
- package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
- package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
- package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
- package/skills/deploy-k8s/docs/guides/observability.md +67 -0
- package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
- package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
- package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
- package/skills/deploy-k8s/docs/package-lock.json +2892 -0
- package/skills/deploy-k8s/docs/package.json +13 -0
- package/skills/deploy-k8s/references/api-drift.md +298 -0
- package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
- package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
- package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
- package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
- package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
- package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
- package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
- package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
- package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
- package/skills/deploy-k8s/references/examples-bad.md +282 -0
- package/skills/deploy-k8s/references/examples-good.md +440 -0
- package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
- package/skills/deploy-k8s/references/helm-patterns.md +203 -0
- package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
- package/skills/deploy-k8s/references/job-patterns.md +120 -0
- package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
- package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
- package/skills/deploy-k8s/references/network-exposure.md +481 -0
- package/skills/deploy-k8s/references/observability.md +302 -0
- package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
- package/skills/deploy-k8s/references/resource-starvation.md +374 -0
- package/skills/deploy-k8s/references/security-hardening.md +209 -0
- package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
- package/skills/deploy-k8s/references/storage-and-state.md +330 -0
- package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
- package/skills/deploy-railway/SKILL.md +235 -0
- package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
- package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
- package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
- package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
- package/skills/deploy-railway/references/analyze-db.md +344 -0
- package/skills/deploy-railway/references/configure.md +309 -0
- package/skills/deploy-railway/references/deploy.md +195 -0
- package/skills/deploy-railway/references/operate.md +214 -0
- package/skills/deploy-railway/references/request.md +248 -0
- package/skills/deploy-railway/references/setup.md +312 -0
- package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
- package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
- package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
- package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
- package/skills/deploy-railway/scripts/dal.py +671 -0
- package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
- package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
- package/skills/deploy-railway/scripts/railway-api.sh +52 -0
- package/skills/deploy-ssh/SKILL.md +91 -0
- package/skills/deploy-vercel/SKILL.md +304 -0
- package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-vercel/resources/deploy.sh +301 -0
- package/skills/docs-runbooks/SKILL.md +399 -0
- package/skills/drive-status-renderer/SKILL.md +62 -0
- package/skills/iac-scan/SKILL.md +680 -0
- package/skills/iac-scan/assets/.gitkeep +9 -0
- package/skills/iac-scan/assets/checkov_config.yaml +94 -0
- package/skills/iac-scan/assets/github_actions.yml +199 -0
- package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
- package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
- package/skills/iac-scan/references/EXAMPLE.md +40 -0
- package/skills/iac-scan/references/compliance_mapping.md +237 -0
- package/skills/iac-scan/references/custom_policies.md +460 -0
- package/skills/iac-scan/references/suppression_guide.md +431 -0
- package/skills/incident-briefing/SKILL.md +66 -0
- package/skills/incident-triage/SKILL.md +481 -0
- package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
- package/skills/mcp-builder/SKILL.md +244 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/mobile-pairing/SKILL.md +52 -0
- package/skills/ops-sre/SKILL.md +297 -0
- package/skills/playwright-qa/LICENSE.txt +201 -0
- package/skills/playwright-qa/NOTICE.txt +14 -0
- package/skills/playwright-qa/SKILL.md +156 -0
- package/skills/playwright-qa/agents/openai.yaml +6 -0
- package/skills/playwright-qa/assets/playwright-small.svg +3 -0
- package/skills/playwright-qa/assets/playwright.png +0 -0
- package/skills/playwright-qa/references/cli.md +116 -0
- package/skills/playwright-qa/references/workflows.md +95 -0
- package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
- package/skills/release-publish/SKILL.md +85 -0
- package/skills/repo-bootstrap/SKILL.md +92 -0
- package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
- package/skills/repo-bootstrap/assets/root-thin.md +141 -0
- package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
- package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
- package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
- package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
- package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
- package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
- package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
- package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
- package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
- package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
- package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
- package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
- package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
- package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
- package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
- package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
- package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
- package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
- package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
- package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
- package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
- package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
- package/skills/repo-bootstrap/checkpoints.yaml +279 -0
- package/skills/repo-bootstrap/evals/evals.json +385 -0
- package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
- package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
- package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
- package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
- package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
- package/skills/repo-bootstrap/references/output-structure.md +124 -0
- package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
- package/skills/repo-bootstrap/references/verification-guide.md +137 -0
- package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
- package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
- package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
- package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
- package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
- package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
- package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
- package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
- package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
- package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
- package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
- package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
- package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
- package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
- package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
- package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
- package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
- package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
- package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
- package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
- package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
- package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
- package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
- package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
- package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
- package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
- package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
- package/skills/schema-api-contracts/SKILL.md +56 -0
- package/skills/secret-hygiene/SKILL.md +511 -0
- package/skills/secret-hygiene/assets/.gitkeep +9 -0
- package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
- package/skills/secret-hygiene/assets/config-custom.toml +178 -0
- package/skills/secret-hygiene/assets/config-strict.toml +48 -0
- package/skills/secret-hygiene/assets/github-action.yml +181 -0
- package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
- package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
- package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
- package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
- package/skills/secret-hygiene/references/detection_rules.md +276 -0
- package/skills/secret-hygiene/references/false_positives.md +598 -0
- package/skills/secret-hygiene/references/remediation_guide.md +530 -0
- package/skills/stack-selector/SKILL.md +56 -0
- package/skills/telegram-control/SKILL.md +110 -0
- package/skills/telegram-control/references/architecture.md +184 -0
- package/skills/telegram-control/references/convex.md +173 -0
- package/skills/telegram-control/references/error_handling.md +212 -0
- package/skills/telegram-control/references/initial_setup.md +165 -0
- package/skills/telegram-control/references/telegram_api.md +156 -0
- package/skills/telegram-control/scripts/cancel_message.ts +53 -0
- package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
- package/skills/telegram-control/scripts/logger.ts +121 -0
- package/skills/telegram-control/scripts/proxy-util.ts +11 -0
- package/skills/telegram-control/scripts/schedule_message.ts +216 -0
- package/skills/telegram-control/scripts/send_message.ts +115 -0
- package/skills/telegram-control/scripts/setup.ts +185 -0
- package/skills/telegram-control/scripts/types.ts +75 -0
- package/skills/telegram-control/scripts/view_history.ts +74 -0
- package/skills/test-strategy/SKILL.md +352 -0
- package/skills/threat-model/SKILL.md +303 -0
- package/skills/threat-model/examples/example-output.md +196 -0
- package/skills/threat-model/template.md +96 -0
- package/skills/ts-lint/SKILL.md +80 -0
- package/skills/ui-flow/SKILL.md +668 -0
- package/skills/voice-command-router/SKILL.md +51 -0
- package/skills/widget-live-activity-sync/SKILL.md +66 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deploy-docker
|
|
3
|
+
synapta_original_name: multi-stage-dockerfile
|
|
4
|
+
triggers: [synapta deploy docker, Dockerfile, multi-stage build, container, image push]
|
|
5
|
+
network: allowlist
|
|
6
|
+
source:
|
|
7
|
+
origin: https://github.com/github/awesome-copilot
|
|
8
|
+
path: skills/multi-stage-dockerfile
|
|
9
|
+
commit: 4e4b34c48d3f
|
|
10
|
+
license: MIT (GitHub, Inc.)
|
|
11
|
+
adapted: light-touch
|
|
12
|
+
description: 'Create optimized multi-stage Dockerfiles for any language or framework'
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
Your goal is to help me create efficient multi-stage Dockerfiles that follow best practices, resulting in smaller, more secure container images.
|
|
16
|
+
|
|
17
|
+
## Multi-Stage Structure
|
|
18
|
+
|
|
19
|
+
- Use a builder stage for compilation, dependency installation, and other build-time operations
|
|
20
|
+
- Use a separate runtime stage that only includes what's needed to run the application
|
|
21
|
+
- Copy only the necessary artifacts from the builder stage to the runtime stage
|
|
22
|
+
- Use meaningful stage names with the `AS` keyword (e.g., `FROM node:18 AS builder`)
|
|
23
|
+
- Place stages in logical order: dependencies → build → test → runtime
|
|
24
|
+
|
|
25
|
+
## Base Images
|
|
26
|
+
|
|
27
|
+
- Start with official, minimal base images when possible
|
|
28
|
+
- Specify exact version tags to ensure reproducible builds (e.g., `python:3.11-slim` not just `python`)
|
|
29
|
+
- Consider distroless images for runtime stages where appropriate
|
|
30
|
+
- Use Alpine-based images for smaller footprints when compatible with your application
|
|
31
|
+
- Ensure the runtime image has the minimal necessary dependencies
|
|
32
|
+
|
|
33
|
+
## Layer Optimization
|
|
34
|
+
|
|
35
|
+
- Organize commands to maximize layer caching
|
|
36
|
+
- Place commands that change frequently (like code changes) after commands that change less frequently (like dependency installation)
|
|
37
|
+
- Use `.dockerignore` to prevent unnecessary files from being included in the build context
|
|
38
|
+
- Combine related RUN commands with `&&` to reduce layer count
|
|
39
|
+
- Consider using COPY --chown to set permissions in one step
|
|
40
|
+
|
|
41
|
+
## Security Practices
|
|
42
|
+
|
|
43
|
+
- Avoid running containers as root - use `USER` instruction to specify a non-root user
|
|
44
|
+
- Remove build tools and unnecessary packages from the final image
|
|
45
|
+
- Scan the final image for vulnerabilities
|
|
46
|
+
- Set restrictive file permissions
|
|
47
|
+
- Use multi-stage builds to avoid including build secrets in the final image
|
|
48
|
+
|
|
49
|
+
## Performance Considerations
|
|
50
|
+
|
|
51
|
+
- Use build arguments for configuration that might change between environments
|
|
52
|
+
- Leverage build cache efficiently by ordering layers from least to most frequently changing
|
|
53
|
+
- Consider parallelization in build steps when possible
|
|
54
|
+
- Set appropriate environment variables like NODE_ENV=production to optimize runtime behavior
|
|
55
|
+
- Use appropriate healthchecks for the application type with the HEALTHCHECK instruction
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deploy-fly
|
|
3
|
+
synapta_original_name: flyctl
|
|
4
|
+
triggers: [synapta deploy fly, flyctl, Fly.io, fly secrets, fly volumes]
|
|
5
|
+
network: allowlist
|
|
6
|
+
source:
|
|
7
|
+
origin: https://github.com/yurikoval/dotfiles
|
|
8
|
+
path: claude/.claude/skills/flyctl
|
|
9
|
+
commit: 933ff7260f40
|
|
10
|
+
license: see source repo
|
|
11
|
+
adapted: light-touch
|
|
12
|
+
description: Use when deploying to Fly.io, managing Fly apps/machines/volumes/secrets, scaling VMs, viewing logs, or running fly CLI commands
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# flyctl - Fly.io CLI
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
flyctl is the CLI for Fly.io platform. Deploy apps, manage machines, secrets, volumes, databases, and networking.
|
|
20
|
+
|
|
21
|
+
## Quick Reference
|
|
22
|
+
|
|
23
|
+
| Task | Command |
|
|
24
|
+
|------|---------|
|
|
25
|
+
| Create app | `fly launch` |
|
|
26
|
+
| Deploy | `fly deploy` |
|
|
27
|
+
| View status | `fly status` |
|
|
28
|
+
| View logs | `fly logs` |
|
|
29
|
+
| SSH into machine | `fly ssh console` |
|
|
30
|
+
| Set secrets | `fly secrets set NAME=value` |
|
|
31
|
+
| Scale VMs | `fly scale count N` |
|
|
32
|
+
| List machines | `fly machine list` |
|
|
33
|
+
|
|
34
|
+
## Core Commands
|
|
35
|
+
|
|
36
|
+
### fly launch
|
|
37
|
+
Create and configure new app from source or Docker image.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
fly launch # Interactive setup
|
|
41
|
+
fly launch --name myapp --region lax --no-deploy
|
|
42
|
+
fly launch --image nginx:latest --now
|
|
43
|
+
fly launch --db mpg # With managed Postgres
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Key flags: `--name`, `--org`, `--region`, `--image`, `--dockerfile`, `--no-deploy`, `--now`, `--vm-size`, `--vm-memory`, `--db`
|
|
47
|
+
|
|
48
|
+
### fly deploy
|
|
49
|
+
Deploy app from source or image.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
fly deploy # Deploy current directory
|
|
53
|
+
fly deploy --image myimage:tag
|
|
54
|
+
fly deploy --strategy canary # canary|rolling|bluegreen|immediate
|
|
55
|
+
fly deploy --local-only # Build locally (not remote)
|
|
56
|
+
fly deploy -e ENV_VAR=value
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Key flags: `--app`, `--config`, `--image`, `--dockerfile`, `--strategy`, `--local-only`, `--remote-only`, `--vm-size`, `--regions`, `--env`, `--detach`
|
|
60
|
+
|
|
61
|
+
### fly status
|
|
62
|
+
Show app status, instances, regions, deployment details.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
fly status
|
|
66
|
+
fly status --app myapp
|
|
67
|
+
fly status --watch # Continuous refresh
|
|
68
|
+
fly status --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### fly logs
|
|
72
|
+
Stream application logs.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
fly logs
|
|
76
|
+
fly logs --app myapp
|
|
77
|
+
fly logs --region lax
|
|
78
|
+
fly logs --machine MACHINE_ID
|
|
79
|
+
fly logs --no-tail # Buffered only, no stream
|
|
80
|
+
fly logs --json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Secrets
|
|
84
|
+
|
|
85
|
+
Secrets are injected as environment variables at runtime. Names are case-sensitive.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
fly secrets set DATABASE_URL="postgres://..." SECRET_KEY="abc123"
|
|
89
|
+
fly secrets list
|
|
90
|
+
fly secrets unset SECRET_NAME
|
|
91
|
+
fly secrets import < .env # Import from stdin
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Machines
|
|
95
|
+
|
|
96
|
+
Fly Machines are fast-launching VMs.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
fly machine list
|
|
100
|
+
fly machine create --app myapp
|
|
101
|
+
fly machine start MACHINE_ID
|
|
102
|
+
fly machine stop MACHINE_ID
|
|
103
|
+
fly machine destroy MACHINE_ID
|
|
104
|
+
fly machine status MACHINE_ID
|
|
105
|
+
fly machine clone MACHINE_ID
|
|
106
|
+
fly machine exec MACHINE_ID -- command
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Scaling
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
fly scale show # Current resources
|
|
113
|
+
fly scale count 3 # Set VM count
|
|
114
|
+
fly scale count web=3 worker=1 # Per process group
|
|
115
|
+
fly scale vm shared-cpu-2x # Change VM size
|
|
116
|
+
fly scale memory 512 # Set memory (MB)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
VM sizes: `shared-cpu-1x`, `shared-cpu-2x`, `performance-1x`, `performance-2x`, etc.
|
|
120
|
+
|
|
121
|
+
## Volumes
|
|
122
|
+
|
|
123
|
+
Persistent storage for machines.
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
fly volumes create myvolume --region lax --size 10
|
|
127
|
+
fly volumes list
|
|
128
|
+
fly volumes show VOL_ID
|
|
129
|
+
fly volumes extend VOL_ID --size 20
|
|
130
|
+
fly volumes destroy VOL_ID
|
|
131
|
+
fly volumes snapshots list VOL_ID
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## SSH & File Transfer
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
fly ssh console # Interactive shell
|
|
138
|
+
fly ssh console -C "command" # Run command
|
|
139
|
+
fly sftp get /remote/path ./local/path
|
|
140
|
+
fly sftp put ./local/path /remote/path
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Postgres
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
fly postgres create # New cluster
|
|
147
|
+
fly postgres list
|
|
148
|
+
fly postgres connect -a pg-app # psql console
|
|
149
|
+
fly postgres attach pg-app # Attach to app
|
|
150
|
+
fly postgres detach pg-app
|
|
151
|
+
fly postgres import pg-app < dump.sql
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Note: Unmanaged Postgres is user-operated. Use `fly mpg` for managed Postgres.
|
|
155
|
+
|
|
156
|
+
## Apps Management
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
fly apps list
|
|
160
|
+
fly apps create myapp
|
|
161
|
+
fly apps destroy myapp
|
|
162
|
+
fly apps restart myapp
|
|
163
|
+
fly apps open # Open in browser
|
|
164
|
+
fly apps releases # List releases
|
|
165
|
+
fly apps move myapp --org neworg
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Networking
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
fly ips list
|
|
172
|
+
fly ips allocate-v4
|
|
173
|
+
fly ips allocate-v6
|
|
174
|
+
fly ips release IP_ADDRESS
|
|
175
|
+
fly certs list
|
|
176
|
+
fly certs add example.com
|
|
177
|
+
fly certs remove example.com
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Global Flags
|
|
181
|
+
|
|
182
|
+
All commands support:
|
|
183
|
+
- `-a, --app` - App name
|
|
184
|
+
- `-c, --config` - Config file path (default: fly.toml)
|
|
185
|
+
- `-t, --access-token` - API token
|
|
186
|
+
- `--debug` - Debug output
|
|
187
|
+
- `--verbose` - Verbose output
|
|
188
|
+
- `--json` / `-j` - JSON output (where supported)
|
|
189
|
+
|
|
190
|
+
## Common Workflows
|
|
191
|
+
|
|
192
|
+
**Initial deployment:**
|
|
193
|
+
```bash
|
|
194
|
+
fly auth login
|
|
195
|
+
fly launch
|
|
196
|
+
# Edit fly.toml as needed
|
|
197
|
+
fly deploy
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Update with secrets:**
|
|
201
|
+
```bash
|
|
202
|
+
fly secrets set NEW_SECRET=value
|
|
203
|
+
fly deploy
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Scale for traffic:**
|
|
207
|
+
```bash
|
|
208
|
+
fly scale count 3 --region lax,ord
|
|
209
|
+
fly scale vm performance-1x
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Debug failing app:**
|
|
213
|
+
```bash
|
|
214
|
+
fly status
|
|
215
|
+
fly logs --no-tail
|
|
216
|
+
fly ssh console
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Config File (fly.toml)
|
|
220
|
+
|
|
221
|
+
Generated by `fly launch`. Key sections:
|
|
222
|
+
- `app` - App name
|
|
223
|
+
- `primary_region` - Default region
|
|
224
|
+
- `[build]` - Build configuration
|
|
225
|
+
- `[env]` - Environment variables
|
|
226
|
+
- `[http_service]` - HTTP settings
|
|
227
|
+
- `[[services]]` - Service definitions
|
|
228
|
+
- `[[mounts]]` - Volume mounts
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deploy-k8s
|
|
3
|
+
description: "Prevent Kubernetes hallucinations by diagnosing and fixing failure modes: insecure workload defaults, resource starvation, network exposure, privilege sprawl, fragile rollouts, and API drift. Use when generating, reviewing, refactoring, or migrating manifests, Helm charts, Kustomize overlays, cluster policies, and platform-specific Kubernetes work for EKS, GKE, AKS, OpenShift, GitOps controllers, or observability stacks."
|
|
4
|
+
triggers: [synapta deploy k8s, Kubernetes, kubectl, helm, kustomize, EKS, GKE]
|
|
5
|
+
network: allowlist
|
|
6
|
+
source:
|
|
7
|
+
origin: https://github.com/LukasNiessen/kubernetes-skill
|
|
8
|
+
path: /
|
|
9
|
+
commit: b7d32502e316
|
|
10
|
+
license: Lukas Niessen (see LICENSE in source repo)
|
|
11
|
+
adapted: light-touch
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# KubeShark: Failure-Mode Workflow for Kubernetes
|
|
15
|
+
|
|
16
|
+
Run this workflow top to bottom.
|
|
17
|
+
|
|
18
|
+
## 1) Capture execution context
|
|
19
|
+
|
|
20
|
+
Record before writing manifests:
|
|
21
|
+
- cluster version (e.g. 1.30, 1.31) and distribution (EKS, GKE, AKS, k3s, vanilla)
|
|
22
|
+
- target namespace and environment criticality (dev/staging/prod)
|
|
23
|
+
- workload type (Deployment, StatefulSet, Job, CronJob, DaemonSet)
|
|
24
|
+
- deployment method (raw YAML, Helm, Kustomize, operator-managed)
|
|
25
|
+
- policy enforcement (Pod Security Admission level, Kyverno, OPA/Gatekeeper)
|
|
26
|
+
- cloud provider and CNI (affects networking, storage classes, load balancers)
|
|
27
|
+
- platform controllers/add-ons (GitOps, observability, ingress, service mesh, autoscaling)
|
|
28
|
+
|
|
29
|
+
If unknown, state assumptions explicitly.
|
|
30
|
+
|
|
31
|
+
## 2) Diagnose likely failure mode(s)
|
|
32
|
+
|
|
33
|
+
Select one or more based on user intent and risk:
|
|
34
|
+
- insecure workload defaults: missing security contexts, PSS violations, host access
|
|
35
|
+
- resource starvation: missing requests/limits, no PDB, scheduling chaos
|
|
36
|
+
- network exposure: flat networking, missing policies, wrong Service types, DNS issues
|
|
37
|
+
- privilege sprawl: overly permissive RBAC, leaked secrets, excess ServiceAccount rights
|
|
38
|
+
- fragile rollouts: misconfigured probes, mutable tags, unsafe update strategies
|
|
39
|
+
- API drift: wrong apiVersion, deprecated APIs, schema violations, tool-specific errors
|
|
40
|
+
|
|
41
|
+
## 3) Load only the relevant reference file(s)
|
|
42
|
+
|
|
43
|
+
Primary failure-mode references:
|
|
44
|
+
- `references/insecure-workload-defaults.md`
|
|
45
|
+
- `references/resource-starvation.md`
|
|
46
|
+
- `references/network-exposure.md`
|
|
47
|
+
- `references/privilege-sprawl.md`
|
|
48
|
+
- `references/fragile-rollouts.md`
|
|
49
|
+
- `references/api-drift.md`
|
|
50
|
+
|
|
51
|
+
Supplemental references (only when needed):
|
|
52
|
+
- `references/deployment-patterns.md`
|
|
53
|
+
- `references/stateful-patterns.md`
|
|
54
|
+
- `references/job-patterns.md`
|
|
55
|
+
- `references/daemonset-operator-patterns.md`
|
|
56
|
+
- `references/security-hardening.md`
|
|
57
|
+
- `references/observability.md`
|
|
58
|
+
- `references/multi-tenancy.md`
|
|
59
|
+
- `references/storage-and-state.md`
|
|
60
|
+
- `references/helm-patterns.md`
|
|
61
|
+
- `references/kustomize-patterns.md`
|
|
62
|
+
- `references/validation-and-policy.md`
|
|
63
|
+
- `references/examples-good.md`
|
|
64
|
+
- `references/examples-bad.md`
|
|
65
|
+
- `references/do-dont-patterns.md`
|
|
66
|
+
|
|
67
|
+
Conditional Reference Retrieval (CRR) references (load only when the signal is detected):
|
|
68
|
+
- `references/conditional/eks-patterns.md` for EKS, AWS, IRSA, EKS Pod Identity, AWS Load Balancer Controller, EBS/EFS CSI, Karpenter
|
|
69
|
+
- `references/conditional/gke-patterns.md` for GKE, Autopilot, Workload Identity Federation for GKE, Dataplane V2, GCE Ingress, Config Sync
|
|
70
|
+
- `references/conditional/aks-patterns.md` for AKS, Microsoft Entra Workload ID, Azure CNI, AGIC, Azure Disk/File/Blob CSI
|
|
71
|
+
- `references/conditional/openshift-patterns.md` for OpenShift, OKD, ROSA, ARO, Routes, SCCs, OLM, `oc`
|
|
72
|
+
- `references/conditional/gitops-controllers.md` for Argo CD, ApplicationSet, Flux, GitOps reconciliation, sync waves
|
|
73
|
+
- `references/conditional/observability-stacks.md` for Prometheus Operator, ServiceMonitor, PodMonitor, OpenTelemetry, Loki, Grafana
|
|
74
|
+
|
|
75
|
+
Do not load multiple CRR files unless the task spans multiple detected platforms/tools.
|
|
76
|
+
|
|
77
|
+
## 4) Propose fix path with explicit risk controls
|
|
78
|
+
|
|
79
|
+
For each fix, include:
|
|
80
|
+
- why this addresses the failure mode
|
|
81
|
+
- what could still go wrong at deploy time or runtime
|
|
82
|
+
- guardrails (validation commands, policy checks, rollback path)
|
|
83
|
+
|
|
84
|
+
## 5) Generate implementation artifacts
|
|
85
|
+
|
|
86
|
+
When applicable, output:
|
|
87
|
+
- Kubernetes manifests (YAML with security contexts, resource limits, labels)
|
|
88
|
+
- Helm values/templates or Kustomize overlays
|
|
89
|
+
- NetworkPolicies, RBAC resources, PodDisruptionBudgets
|
|
90
|
+
- Policy rules (Kyverno/OPA) and admission controls
|
|
91
|
+
|
|
92
|
+
## 6) Validate before finalize
|
|
93
|
+
|
|
94
|
+
Always provide validation steps tailored to deployment method and risk tier:
|
|
95
|
+
- `kubectl apply --dry-run=server` or `kubectl diff`
|
|
96
|
+
- `kubeconform` for schema validation against target cluster version
|
|
97
|
+
- cross-resource consistency check (label/selector/port alignment)
|
|
98
|
+
- policy scan (PSS profile check, Kyverno/OPA audit)
|
|
99
|
+
Never recommend direct production apply without reviewed diff and approval.
|
|
100
|
+
|
|
101
|
+
## 7) Output contract
|
|
102
|
+
|
|
103
|
+
Return:
|
|
104
|
+
- assumptions and cluster version floor
|
|
105
|
+
- selected failure mode(s)
|
|
106
|
+
- chosen remediation and tradeoffs
|
|
107
|
+
- validation/test plan
|
|
108
|
+
- rollback/recovery notes (rollout undo, revision history, data safety)
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Kubernetes Skill for Claude Code — KubeShark
|
|
2
|
+
|
|
3
|
+
KubeShark is a failure-mode-first Kubernetes skill for Claude Code and Codex. It prevents common LLM hallucinations in Kubernetes manifest generation by diagnosing risks before writing YAML.
|
|
4
|
+
|
|
5
|
+
## Why use it
|
|
6
|
+
|
|
7
|
+
- **Prevents hallucinations** -- 6 named failure modes with targeted reference files
|
|
8
|
+
- **Token-efficient** -- ~650 token activation cost, granular references loaded on demand
|
|
9
|
+
- **Production-ready defaults** -- Pod Security Standards restricted profile, proper resource management, cross-resource validation
|
|
10
|
+
- **20 reference files** -- covering security, networking, RBAC, probes, storage, Helm, Kustomize, and more
|
|
11
|
+
|
|
12
|
+
## Key features
|
|
13
|
+
|
|
14
|
+
- Failure-mode-first diagnostic workflow (diagnose before generate)
|
|
15
|
+
- Output contracts with assumptions, tradeoffs, and rollback notes
|
|
16
|
+
- LLM mistake checklists in every reference file
|
|
17
|
+
- Cross-resource consistency validation (label/selector/port alignment)
|
|
18
|
+
- Helm and Kustomize pattern guidance
|
|
19
|
+
- Policy engine integration (Kyverno, OPA/Gatekeeper)
|
|
20
|
+
|
|
21
|
+
## Quick install
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git clone https://github.com/LukasNiessen/kubernetes-skill.git ~/.claude/skills/kubernetes-skill
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## License
|
|
28
|
+
|
|
29
|
+
MIT -- see [LICENSE](https://github.com/LukasNiessen/kubernetes-skill/blob/main/LICENSE).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Summary
|
|
2
|
+
|
|
3
|
+
- [Introduction](README.md)
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
- [Installation](getting-started/installation.md)
|
|
8
|
+
- [Quick Start](getting-started/quick-start.md)
|
|
9
|
+
|
|
10
|
+
## Core Concepts
|
|
11
|
+
|
|
12
|
+
- [Workflow](core-concepts/workflow.md)
|
|
13
|
+
- [Failure Modes](core-concepts/failure-modes.md)
|
|
14
|
+
- [Philosophy](core-concepts/philosophy.md)
|
|
15
|
+
|
|
16
|
+
## Failure Mode References
|
|
17
|
+
|
|
18
|
+
- [Insecure Workload Defaults](failure-modes/insecure-workload-defaults.md)
|
|
19
|
+
- [Resource Starvation](failure-modes/resource-starvation.md)
|
|
20
|
+
- [Network Exposure](failure-modes/network-exposure.md)
|
|
21
|
+
- [Privilege Sprawl](failure-modes/privilege-sprawl.md)
|
|
22
|
+
- [Fragile Rollouts](failure-modes/fragile-rollouts.md)
|
|
23
|
+
- [API Drift](failure-modes/api-drift.md)
|
|
24
|
+
|
|
25
|
+
## Architecture Guidance
|
|
26
|
+
|
|
27
|
+
- [Workload Patterns](architecture/workload-patterns.md)
|
|
28
|
+
- [Multi-Tenancy](architecture/multi-tenancy.md)
|
|
29
|
+
- [Storage and State](architecture/storage-and-state.md)
|
|
30
|
+
|
|
31
|
+
## Operational Guides
|
|
32
|
+
|
|
33
|
+
- [Helm Patterns](guides/helm-patterns.md)
|
|
34
|
+
- [Kustomize Patterns](guides/kustomize-patterns.md)
|
|
35
|
+
- [Security Hardening](guides/security-hardening.md)
|
|
36
|
+
- [Observability](guides/observability.md)
|
|
37
|
+
- [Validation and Policy](guides/validation-and-policy.md)
|
|
38
|
+
|
|
39
|
+
## Code Examples
|
|
40
|
+
|
|
41
|
+
- [Good Patterns](examples/good-patterns.md)
|
|
42
|
+
- [Bad Patterns](examples/bad-patterns.md)
|
|
43
|
+
- [Do/Don't Checklist](examples/do-dont-checklist.md)
|
|
44
|
+
|
|
45
|
+
## Integrations
|
|
46
|
+
|
|
47
|
+
- [MCP Integration](integrations/mcp-integration.md)
|
|
48
|
+
|
|
49
|
+
## Advanced
|
|
50
|
+
|
|
51
|
+
- [Token Efficiency](advanced/token-efficiency.md)
|
|
52
|
+
|
|
53
|
+
## Community
|
|
54
|
+
|
|
55
|
+
- [Contributing](community/contributing.md)
|
|
56
|
+
- [Changelog](community/changelog.md)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Token Efficiency
|
|
2
|
+
|
|
3
|
+
How KubeShark minimizes context window consumption while maximizing manifest generation quality.
|
|
4
|
+
|
|
5
|
+
## The Problem
|
|
6
|
+
|
|
7
|
+
Context window space is a finite resource. Every token spent on skill content is a token unavailable for the user's actual manifests, conversation history, and tool results. A monolithic skill file that dumps thousands of lines of Kubernetes guidance wastes context on information irrelevant to the current task. This is not just inefficient -- it degrades output quality by forcing the model to process noise alongside signal.
|
|
8
|
+
|
|
9
|
+
## KubeShark's Approach
|
|
10
|
+
|
|
11
|
+
KubeShark is designed around three principles:
|
|
12
|
+
|
|
13
|
+
### Lean Activation
|
|
14
|
+
|
|
15
|
+
The core SKILL.md is approximately 85 lines (~650 tokens). It contains no YAML examples, no inline manifests, no tutorial material. It is purely procedural: a 7-step workflow the model follows. This means the skill activates with minimal context cost regardless of the task.
|
|
16
|
+
|
|
17
|
+
### Granular References
|
|
18
|
+
|
|
19
|
+
Depth lives in 20 separate reference files organized by concern:
|
|
20
|
+
|
|
21
|
+
- **6 failure mode files** -- insecure workload defaults, resource starvation, network exposure, privilege sprawl, fragile rollouts, API drift
|
|
22
|
+
- **4 workload pattern files** -- Deployments, StatefulSets, Jobs/CronJobs, DaemonSets and operators
|
|
23
|
+
- **4 cross-cutting concern files** -- security hardening, observability, multi-tenancy, storage and state
|
|
24
|
+
- **3 tooling files** -- Helm patterns, Kustomize patterns, validation and policy
|
|
25
|
+
- **3 pattern bank files** -- good examples, bad examples, do/don't checklist
|
|
26
|
+
|
|
27
|
+
The model loads only the 1-2 files relevant to the diagnosed failure mode. A query about probe configuration never loads the RBAC guidance. A query about Helm chart structure never loads the NetworkPolicy patterns.
|
|
28
|
+
|
|
29
|
+
### Selective Loading
|
|
30
|
+
|
|
31
|
+
Step 3 of the workflow explicitly instructs the model to load only the relevant references. This is not a suggestion -- it is a structural constraint built into the diagnostic flow.
|
|
32
|
+
|
|
33
|
+
## Content Inclusion Rules
|
|
34
|
+
|
|
35
|
+
Content enters KubeShark only when at least one condition is met:
|
|
36
|
+
|
|
37
|
+
- It materially lowers the probability of insecure, unreliable, or invalid manifest generation
|
|
38
|
+
- It prevents common deploy-time or runtime surprises (probe cascades, selector mismatches, OOMKills)
|
|
39
|
+
- It encodes operational guardrails that general model knowledge cannot reliably infer
|
|
40
|
+
|
|
41
|
+
Content is excluded when:
|
|
42
|
+
|
|
43
|
+
- It is generic Kubernetes knowledge with low failure impact
|
|
44
|
+
- It is cloud-provider-specific deep configuration that belongs in project docs
|
|
45
|
+
- It duplicates an existing rule without adding a new decision signal
|
|
46
|
+
|
|
47
|
+
## What Models Need Help With
|
|
48
|
+
|
|
49
|
+
LLMs have strong general Kubernetes knowledge but consistently fail on specific operational details:
|
|
50
|
+
|
|
51
|
+
- **Security contexts** -- models frequently omit them entirely, producing root-running containers
|
|
52
|
+
- **Cross-resource consistency** -- label/selector/port alignment across Deployment, Service, Ingress, HPA, PDB
|
|
53
|
+
- **API version currency** -- models generate removed APIs from training data (e.g., `extensions/v1beta1`)
|
|
54
|
+
- **Provider-specific constraints** -- storage class capabilities, CNI behavior, load balancer semantics
|
|
55
|
+
- **Probe design** -- liveness probes that check external dependencies, causing cascading failures
|
|
56
|
+
|
|
57
|
+
Models generally do not need help with basic YAML syntax, resource kind selection, or standard field names. KubeShark avoids restating what models already know reliably.
|
|
58
|
+
|
|
59
|
+
## Core Principle
|
|
60
|
+
|
|
61
|
+
High signal density. Every line in every reference file must earn its token cost by reducing the probability of a specific, named failure mode.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Multi-Tenancy
|
|
2
|
+
|
|
3
|
+
Running multiple teams, environments, or customers in a single Kubernetes cluster requires defense-in-depth isolation. Namespaces are the primary boundary, but a namespace without quotas, network policies, RBAC scoping, and Pod Security Admission is an open door. This guide covers the five layers of namespace isolation and when to use separate clusters instead.
|
|
4
|
+
|
|
5
|
+
## Namespace as the Isolation Unit
|
|
6
|
+
|
|
7
|
+
Every Kubernetes isolation mechanism is scoped to namespaces: RBAC, NetworkPolicy, ResourceQuota, LimitRange, and Pod Security Admission. A well-configured tenant namespace enforces all five simultaneously. An unconfigured namespace provides none of them.
|
|
8
|
+
|
|
9
|
+
## Layer 1: ResourceQuota
|
|
10
|
+
|
|
11
|
+
Every tenant namespace must have a ResourceQuota. Without it, a single tenant can consume all cluster CPU, memory, and storage, starving other tenants.
|
|
12
|
+
|
|
13
|
+
ResourceQuota sets aggregate caps on the namespace: total CPU requests, memory limits, pod count, PVC count, and service types. When a ResourceQuota exists, every pod in the namespace must specify resource `requests` and `limits` or admission is rejected. This enforces resource discipline across all workloads.
|
|
14
|
+
|
|
15
|
+
Key settings for shared clusters:
|
|
16
|
+
- `services.nodeports: "0"` prevents tenants from claiming node ports that conflict across namespaces.
|
|
17
|
+
- `services.loadbalancers` limits the number of cloud load balancers a tenant can provision.
|
|
18
|
+
- `persistentvolumeclaims` caps storage consumption.
|
|
19
|
+
|
|
20
|
+
## Layer 2: LimitRange
|
|
21
|
+
|
|
22
|
+
LimitRange complements ResourceQuota by setting per-container defaults and bounds. Without LimitRange, a pod that omits resource specifications is rejected by the quota (since the quota requires explicit resources). LimitRange provides sensible defaults so that "lazy" deployments still get resource boundaries.
|
|
23
|
+
|
|
24
|
+
LimitRange also sets min/max bounds per container, preventing a single container from requesting disproportionate resources (e.g., 32Gi memory in a namespace with a 40Gi quota).
|
|
25
|
+
|
|
26
|
+
## Layer 3: NetworkPolicy
|
|
27
|
+
|
|
28
|
+
By default, pods in different namespaces can communicate freely. Default-deny NetworkPolicy is the minimum viable network isolation for multi-tenancy.
|
|
29
|
+
|
|
30
|
+
A complete namespace network baseline consists of three policies:
|
|
31
|
+
1. **Default deny all** -- blocks all ingress and egress for every pod in the namespace.
|
|
32
|
+
2. **Allow DNS** -- permits egress to kube-system on port 53 so service discovery works.
|
|
33
|
+
3. **Allow intra-namespace** -- permits pods within the same namespace to communicate.
|
|
34
|
+
|
|
35
|
+
Additional policies are added as needed for cross-namespace communication (e.g., allowing the ingress controller namespace to reach application pods).
|
|
36
|
+
|
|
37
|
+
The AND/OR semantics of NetworkPolicy rules are critical for multi-tenancy: a `namespaceSelector` and `podSelector` in the same `from` entry are AND-ed (both must match). Separate `from` entries are OR-ed. Getting this wrong can either block legitimate traffic or open traffic to the entire cluster.
|
|
38
|
+
|
|
39
|
+
## Layer 4: RBAC Scoping
|
|
40
|
+
|
|
41
|
+
Use namespace-scoped `Role` and `RoleBinding` for tenant access. `ClusterRole` and `ClusterRoleBinding` grant access across all namespaces and should be reserved for platform administrators.
|
|
42
|
+
|
|
43
|
+
Tenant RBAC should follow least privilege:
|
|
44
|
+
- Developers: `get`, `list`, `watch`, `create`, `update`, `patch`, `delete` on workload resources (Deployments, Services, ConfigMaps, Jobs). Read-only on Secrets.
|
|
45
|
+
- CI/CD pipelines: `create`, `update`, `patch` on Deployments and ConfigMaps. No access to Secrets (use external secret management).
|
|
46
|
+
- Monitoring: `get`, `list`, `watch` on pods, events, and metrics endpoints.
|
|
47
|
+
|
|
48
|
+
Never use wildcards (`verbs: ["*"]`, `resources: ["*"]`) in tenant roles. See the [Privilege Sprawl](../failure-modes/privilege-sprawl.md) deep dive for details.
|
|
49
|
+
|
|
50
|
+
## Layer 5: Pod Security Admission
|
|
51
|
+
|
|
52
|
+
Every tenant namespace must have PSA labels enforcing at minimum the `baseline` profile, and preferably `restricted`:
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
labels:
|
|
56
|
+
pod-security.kubernetes.io/enforce: restricted
|
|
57
|
+
pod-security.kubernetes.io/audit: restricted
|
|
58
|
+
pod-security.kubernetes.io/warn: restricted
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Set all three modes (enforce, audit, warn). `enforce` blocks non-compliant pods. `audit` logs violations. `warn` shows warnings to users during `kubectl apply`. Using all three provides defense-in-depth and visibility into violations that audit mode catches but enforce mode has not yet been enabled for.
|
|
62
|
+
|
|
63
|
+
## Naming Conventions
|
|
64
|
+
|
|
65
|
+
Consistent namespace naming enables policy automation and cost attribution:
|
|
66
|
+
- **Environment-based:** `prod-payments`, `staging-orders`.
|
|
67
|
+
- **Team-based:** `platform-monitoring`, `alpha-api`.
|
|
68
|
+
- **Tenant-based (SaaS):** `acme-prod`, `acme-staging`.
|
|
69
|
+
|
|
70
|
+
Pick one pattern and enforce it with admission webhooks. Inconsistent naming makes RBAC, cost allocation, and policy application error-prone.
|
|
71
|
+
|
|
72
|
+
## What Namespaces Do Not Isolate
|
|
73
|
+
|
|
74
|
+
Namespaces are a soft boundary. They do not provide:
|
|
75
|
+
- **Node-level isolation.** Pods from different namespaces share the same node kernel. A container escape or noisy neighbor affects all tenants on that node. Use taints/tolerations and dedicated node pools for hard isolation.
|
|
76
|
+
- **Cluster-scoped resources.** ClusterRoles, CRDs, PersistentVolumes, and Nodes are visible cluster-wide.
|
|
77
|
+
- **Network without NetworkPolicy.** Namespaces without NetworkPolicy allow all traffic by default.
|
|
78
|
+
- **Container runtime isolation.** A kernel exploit reaches the host regardless of namespace. Use sandboxed runtimes (gVisor, Kata Containers) for untrusted workloads.
|
|
79
|
+
|
|
80
|
+
## When to Use Separate Clusters
|
|
81
|
+
|
|
82
|
+
| Factor | Namespaces | Separate clusters |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| Blast radius tolerance | Shared risk acceptable | Zero cross-tenant impact required |
|
|
85
|
+
| Compliance | Same regulatory domain | Different requirements (PCI vs non-PCI) |
|
|
86
|
+
| Kubernetes version | Same version for all tenants | Tenants need different versions |
|
|
87
|
+
| Cost | Lower (shared control plane) | Higher but stronger isolation |
|
|
88
|
+
| Noisy neighbor risk | Acceptable with quotas | Unacceptable (latency-sensitive) |
|
|
89
|
+
|
|
90
|
+
Rule of thumb: use namespaces for internal teams in the same trust domain. Use separate clusters when tenants are external customers, have different compliance requirements, or when the blast radius of a cluster-level failure is unacceptable.
|
|
91
|
+
|
|
92
|
+
## Further Reading
|
|
93
|
+
|
|
94
|
+
- [Namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/)
|
|
95
|
+
- [KubeShark Privilege Sprawl](../failure-modes/privilege-sprawl.md)
|
|
96
|
+
- [KubeShark Network Exposure](../failure-modes/network-exposure.md)
|