@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,82 @@
|
|
|
1
|
+
# Directory Coverage for AGENTS.md
|
|
2
|
+
|
|
3
|
+
Comprehensive AGENTS.md coverage means creating files in ALL key directories, not just root.
|
|
4
|
+
|
|
5
|
+
## Why Full Coverage Matters
|
|
6
|
+
|
|
7
|
+
- Each directory has unique patterns and conventions
|
|
8
|
+
- AI agents working in subdirectories benefit from local context
|
|
9
|
+
- Reduces need to navigate up to root AGENTS.md
|
|
10
|
+
|
|
11
|
+
## Standard Directory Structure
|
|
12
|
+
|
|
13
|
+
### PHP/TYPO3 Projects
|
|
14
|
+
|
|
15
|
+
| Directory | AGENTS.md Content |
|
|
16
|
+
|-----------|-------------------|
|
|
17
|
+
| Root | Project overview, precedence list, architecture diagram |
|
|
18
|
+
| `Classes/` | DI patterns, service layer, security rules |
|
|
19
|
+
| `Configuration/` | TCA, Services.yaml, module registration |
|
|
20
|
+
| `Documentation/` | RST standards, directives, rendering |
|
|
21
|
+
| `Resources/` | Templates, XLIFF, assets |
|
|
22
|
+
| `Tests/` | Unit/functional patterns, fixtures |
|
|
23
|
+
| `Tests/E2E/` | E2E-specific patterns (if exists) |
|
|
24
|
+
|
|
25
|
+
### Go Projects
|
|
26
|
+
|
|
27
|
+
| Directory | AGENTS.md Content |
|
|
28
|
+
|-----------|-------------------|
|
|
29
|
+
| Root | Module overview, build commands |
|
|
30
|
+
| `cmd/` | CLI entry points, flags |
|
|
31
|
+
| `internal/` | Private packages, no export |
|
|
32
|
+
| `pkg/` | Public API patterns |
|
|
33
|
+
|
|
34
|
+
### Python Projects
|
|
35
|
+
|
|
36
|
+
| Directory | AGENTS.md Content |
|
|
37
|
+
|-----------|-------------------|
|
|
38
|
+
| Root | Project overview, pyproject.toml config |
|
|
39
|
+
| `src/` | Source code patterns, type hints |
|
|
40
|
+
| `tests/` | pytest conventions, fixtures, markers |
|
|
41
|
+
| `scripts/` | CLI scripts, entry points |
|
|
42
|
+
| `docs/` | Sphinx/MkDocs documentation standards |
|
|
43
|
+
|
|
44
|
+
### TypeScript/Node Projects
|
|
45
|
+
|
|
46
|
+
| Directory | AGENTS.md Content |
|
|
47
|
+
|-----------|-------------------|
|
|
48
|
+
| Root | Package overview, scripts |
|
|
49
|
+
| `src/` | Source patterns, imports |
|
|
50
|
+
| `components/` | UI component patterns |
|
|
51
|
+
| `tests/` or `__tests__/` | Testing patterns |
|
|
52
|
+
|
|
53
|
+
### Skill Repos (Claude Code Plugins)
|
|
54
|
+
|
|
55
|
+
| Directory | AGENTS.md Content |
|
|
56
|
+
|-----------|-------------------|
|
|
57
|
+
| Root | Project overview, plugin.json, licensing |
|
|
58
|
+
| `skills/<name>/` | Skill-specific patterns, SKILL.md rules |
|
|
59
|
+
| `skills/<name>/scripts/` | Shell script conventions |
|
|
60
|
+
| `skills/<name>/references/` | Extended documentation patterns |
|
|
61
|
+
| `.github/workflows/` | CI workflow patterns (validate, auto-merge) |
|
|
62
|
+
|
|
63
|
+
## Precedence Rules
|
|
64
|
+
|
|
65
|
+
Root AGENTS.md should list all child files:
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## Precedence
|
|
69
|
+
|
|
70
|
+
1. This file (root)
|
|
71
|
+
2. Directory-specific files:
|
|
72
|
+
- `Classes/AGENTS.md`
|
|
73
|
+
- `Configuration/AGENTS.md`
|
|
74
|
+
- `Tests/AGENTS.md`
|
|
75
|
+
3. Framework standards
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Anti-pattern
|
|
79
|
+
|
|
80
|
+
**Wrong**: Only creating root AGENTS.md and Tests/AGENTS.md
|
|
81
|
+
|
|
82
|
+
**Right**: Create AGENTS.md in EVERY directory with unique patterns
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<!-- FOR AI AGENTS - Human readability is a side effect, not a goal -->
|
|
2
|
+
<!-- Managed by agent: keep sections and order; edit content, not structure -->
|
|
3
|
+
<!-- Last updated: 2026-02-05 | Last verified: never -->
|
|
4
|
+
|
|
5
|
+
# AGENTS.md
|
|
6
|
+
|
|
7
|
+
**Precedence:** the **closest `AGENTS.md`** to the files you're changing wins. Root holds global defaults only.
|
|
8
|
+
|
|
9
|
+
## Commands (unverified)
|
|
10
|
+
> Source: go.mod — CI-sourced commands are most reliable
|
|
11
|
+
|
|
12
|
+
<!-- AGENTS-GENERATED:START commands -->
|
|
13
|
+
| Task | Command | ~Time |
|
|
14
|
+
|------|---------|-------|
|
|
15
|
+
| Typecheck | go build -v ./... | ~15s |
|
|
16
|
+
| Format | gofmt -w . | ~5s |
|
|
17
|
+
| Test (single) | go test -v -race | ~2s |
|
|
18
|
+
| Test (all) | go test -v -race -short ./... | ~30s |
|
|
19
|
+
| Build | go build -v ./... | ~30s |
|
|
20
|
+
<!-- AGENTS-GENERATED:END commands -->
|
|
21
|
+
|
|
22
|
+
> If commands fail, verify against Makefile/package.json/composer.json or ask user to update.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
1. **Before coding**: Read nearest `AGENTS.md` + check Golden Samples for the area you're touching
|
|
26
|
+
2. **After each change**: Run the smallest relevant check (lint → typecheck → single test)
|
|
27
|
+
3. **Before committing**: Run full test suite if changes affect >2 files or touch shared code
|
|
28
|
+
|
|
29
|
+
## Heuristics (quick decisions)
|
|
30
|
+
<!-- AGENTS-GENERATED:START heuristics -->
|
|
31
|
+
| When | Do |
|
|
32
|
+
|------|-----|
|
|
33
|
+
| Adding package | Internal → `internal/`, Public → `pkg/` |
|
|
34
|
+
| Committing | Use Conventional Commits (feat:, fix:, docs:, etc.) |
|
|
35
|
+
| Merging PRs | Squash and merge |
|
|
36
|
+
| Adding dependency | Ask first - we minimize deps |
|
|
37
|
+
| Unsure about pattern | Check Golden Samples above |
|
|
38
|
+
<!-- AGENTS-GENERATED:END heuristics -->
|
|
39
|
+
|
|
40
|
+
## Repository Settings
|
|
41
|
+
<!-- AGENTS-GENERATED:START repo-settings -->
|
|
42
|
+
- **Default branch:** `main`
|
|
43
|
+
- **Merge strategy:** squash, merge, rebase
|
|
44
|
+
<!-- AGENTS-GENERATED:END repo-settings -->
|
|
45
|
+
|
|
46
|
+
## Boundaries
|
|
47
|
+
|
|
48
|
+
### Always Do
|
|
49
|
+
- Run pre-commit checks before committing
|
|
50
|
+
- Add tests for new code paths
|
|
51
|
+
- Use conventional commit format: `type(scope): subject`
|
|
52
|
+
- Follow Go 1.25 conventions and idioms
|
|
53
|
+
|
|
54
|
+
### Ask First
|
|
55
|
+
- Adding new dependencies
|
|
56
|
+
- Modifying CI/CD configuration
|
|
57
|
+
- Changing public API signatures
|
|
58
|
+
- Running full e2e test suites
|
|
59
|
+
- Repo-wide refactoring or rewrites
|
|
60
|
+
|
|
61
|
+
### Never Do
|
|
62
|
+
- Commit secrets, credentials, or sensitive data
|
|
63
|
+
- Modify vendor/, node_modules/, or generated files
|
|
64
|
+
- Push directly to main/master branch
|
|
65
|
+
- Delete migration files or schema changes
|
|
66
|
+
- Commit go.sum without go.mod changes
|
|
67
|
+
|
|
68
|
+
## When instructions conflict
|
|
69
|
+
The nearest `AGENTS.md` wins. Explicit user prompts override files.
|
|
70
|
+
- For Go-specific patterns, defer to language idioms and standard library conventions
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
<!-- Managed by agent: keep sections & order; edit content, not structure. Last updated: 2025-10-09 -->
|
|
2
|
+
|
|
3
|
+
# Installation Scripts - Agent Guide
|
|
4
|
+
|
|
5
|
+
**Scope:** Shell scripts for tool installation, update, uninstall, reconcile
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
13+ Bash scripts for installing developer tools with multiple actions:
|
|
10
|
+
- **install**: Fresh installation (default action)
|
|
11
|
+
- **update**: Upgrade to latest version
|
|
12
|
+
- **uninstall**: Remove installation
|
|
13
|
+
- **reconcile**: Switch to preferred installation method (e.g., system → user)
|
|
14
|
+
|
|
15
|
+
**Key scripts:**
|
|
16
|
+
- `install_core.sh`: Core tools (fd, fzf, ripgrep, jq, yq, bat, delta, just)
|
|
17
|
+
- `install_python.sh`: Python toolchain via uv
|
|
18
|
+
- `install_node.sh`: Node.js via nvm
|
|
19
|
+
- `install_rust.sh`: Rust via rustup
|
|
20
|
+
- `install_go.sh`, `install_aws.sh`, `install_kubectl.sh`, etc.
|
|
21
|
+
- `guide.sh`: Interactive upgrade guide
|
|
22
|
+
- `test_smoke.sh`: Smoke test for audit output
|
|
23
|
+
|
|
24
|
+
**Shared utilities:** `lib/` directory (colors, logging, common functions)
|
|
25
|
+
|
|
26
|
+
## Setup
|
|
27
|
+
|
|
28
|
+
**Requirements:**
|
|
29
|
+
- Bash 4.0+
|
|
30
|
+
- `curl` or `wget` for downloads
|
|
31
|
+
- Internet access for fresh installs
|
|
32
|
+
- Appropriate permissions (user for `~/.local/bin`, sudo for system)
|
|
33
|
+
|
|
34
|
+
**Environment variables:**
|
|
35
|
+
```bash
|
|
36
|
+
INSTALL_PREFIX=${INSTALL_PREFIX:-~/.local} # Default: user-level
|
|
37
|
+
FORCE_INSTALL=1 # Skip confirmation prompts
|
|
38
|
+
DEBUG=1 # Verbose output
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Permissions:**
|
|
42
|
+
```bash
|
|
43
|
+
make scripts-perms # Ensure all scripts are executable
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Build & Tests
|
|
47
|
+
|
|
48
|
+
**Run individual script:**
|
|
49
|
+
```bash
|
|
50
|
+
# Install action (default)
|
|
51
|
+
./scripts/install_python.sh
|
|
52
|
+
|
|
53
|
+
# Update action
|
|
54
|
+
./scripts/install_python.sh update
|
|
55
|
+
|
|
56
|
+
# Uninstall action
|
|
57
|
+
./scripts/install_python.sh uninstall
|
|
58
|
+
|
|
59
|
+
# Reconcile action (switch installation method)
|
|
60
|
+
./scripts/install_node.sh reconcile
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Via Make:**
|
|
64
|
+
```bash
|
|
65
|
+
make install-python # Install Python toolchain
|
|
66
|
+
make update-python # Update Python toolchain
|
|
67
|
+
make uninstall-python # Uninstall Python toolchain
|
|
68
|
+
make reconcile-node # Switch Node.js to nvm-managed
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Smoke test:**
|
|
72
|
+
```bash
|
|
73
|
+
./scripts/test_smoke.sh # Verify audit output format
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Debug mode:**
|
|
77
|
+
```bash
|
|
78
|
+
DEBUG=1 ./scripts/install_python.sh
|
|
79
|
+
bash -x ./scripts/install_python.sh # Trace execution
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Code Style
|
|
83
|
+
|
|
84
|
+
**Shell standards:**
|
|
85
|
+
- Bash 4.0+ features allowed
|
|
86
|
+
- Shebang: `#!/usr/bin/env bash` or `#!/bin/bash`
|
|
87
|
+
- Set strict mode: `set -euo pipefail`
|
|
88
|
+
- `-e`: Exit on error
|
|
89
|
+
- `-u`: Error on undefined variables
|
|
90
|
+
- `-o pipefail`: Fail on pipe errors
|
|
91
|
+
|
|
92
|
+
**Formatting:**
|
|
93
|
+
- 4-space indentation (matches EditorConfig)
|
|
94
|
+
- Function names: lowercase_with_underscores
|
|
95
|
+
- Constants: UPPER_CASE
|
|
96
|
+
- Local variables: lowercase
|
|
97
|
+
|
|
98
|
+
**Structure:**
|
|
99
|
+
```bash
|
|
100
|
+
#!/usr/bin/env bash
|
|
101
|
+
set -euo pipefail
|
|
102
|
+
|
|
103
|
+
# Source shared utilities
|
|
104
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
105
|
+
source "${SCRIPT_DIR}/lib/colors.sh" || true
|
|
106
|
+
source "${SCRIPT_DIR}/lib/common.sh" || true
|
|
107
|
+
|
|
108
|
+
# Main function per action
|
|
109
|
+
install_tool() {
|
|
110
|
+
echo_info "Installing <tool>..."
|
|
111
|
+
# Implementation
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
update_tool() {
|
|
115
|
+
echo_info "Updating <tool>..."
|
|
116
|
+
# Implementation
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
uninstall_tool() {
|
|
120
|
+
echo_info "Uninstalling <tool>..."
|
|
121
|
+
# Implementation
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
reconcile_tool() {
|
|
125
|
+
echo_info "Reconciling <tool>..."
|
|
126
|
+
# Implementation
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
# Action dispatcher
|
|
130
|
+
ACTION="${1:-install}"
|
|
131
|
+
case "$ACTION" in
|
|
132
|
+
install) install_tool ;;
|
|
133
|
+
update) update_tool ;;
|
|
134
|
+
uninstall) uninstall_tool ;;
|
|
135
|
+
reconcile) reconcile_tool ;;
|
|
136
|
+
*) echo "Usage: $0 {install|update|uninstall|reconcile}"; exit 1 ;;
|
|
137
|
+
esac
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Error handling:**
|
|
141
|
+
```bash
|
|
142
|
+
# Good: Check command exists before using
|
|
143
|
+
if ! command -v curl >/dev/null 2>&1; then
|
|
144
|
+
echo_error "curl not found. Install it first."
|
|
145
|
+
exit 1
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
# Good: Check return codes
|
|
149
|
+
if ! download_file "$URL" "$DEST"; then
|
|
150
|
+
echo_error "Download failed"
|
|
151
|
+
exit 1
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# Good: Cleanup on error
|
|
155
|
+
trap 'rm -rf "$TMPDIR"' EXIT ERR
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Confirmation prompts:**
|
|
159
|
+
```bash
|
|
160
|
+
# Good: Skip prompt if FORCE_INSTALL=1
|
|
161
|
+
if [[ "${FORCE_INSTALL:-0}" != "1" ]]; then
|
|
162
|
+
read -p "Install <tool>? [y/N] " -n 1 -r
|
|
163
|
+
echo
|
|
164
|
+
[[ ! $REPLY =~ ^[Yy]$ ]] && exit 0
|
|
165
|
+
fi
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Security
|
|
169
|
+
|
|
170
|
+
**Download verification:**
|
|
171
|
+
```bash
|
|
172
|
+
# Always use HTTPS
|
|
173
|
+
URL="https://github.com/owner/repo/releases/download/..."
|
|
174
|
+
|
|
175
|
+
# Verify checksums when available
|
|
176
|
+
EXPECTED_SHA256="abc123..."
|
|
177
|
+
ACTUAL_SHA256=$(sha256sum "$FILE" | awk '{print $1}')
|
|
178
|
+
if [[ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]]; then
|
|
179
|
+
echo_error "Checksum mismatch!"
|
|
180
|
+
exit 1
|
|
181
|
+
fi
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Path safety:**
|
|
185
|
+
```bash
|
|
186
|
+
# Good: Quote variables, use absolute paths
|
|
187
|
+
INSTALL_DIR="${HOME}/.local/bin"
|
|
188
|
+
mkdir -p "$INSTALL_DIR"
|
|
189
|
+
mv "$TMPFILE" "$INSTALL_DIR/tool"
|
|
190
|
+
|
|
191
|
+
# Bad: Unquoted, relative paths
|
|
192
|
+
mkdir -p $INSTALL_DIR
|
|
193
|
+
mv tool bin/
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Sudo usage:**
|
|
197
|
+
```bash
|
|
198
|
+
# Good: Prompt for sudo only when needed
|
|
199
|
+
if [[ "$INSTALL_PREFIX" == "/usr/local" ]]; then
|
|
200
|
+
if ! sudo -v; then
|
|
201
|
+
echo_error "Sudo required for system installation"
|
|
202
|
+
exit 1
|
|
203
|
+
fi
|
|
204
|
+
sudo mv "$FILE" "$INSTALL_PREFIX/bin/"
|
|
205
|
+
else
|
|
206
|
+
# User-level, no sudo
|
|
207
|
+
mv "$FILE" "$INSTALL_PREFIX/bin/"
|
|
208
|
+
fi
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**No secrets in scripts:**
|
|
212
|
+
- No API keys, tokens, passwords in scripts
|
|
213
|
+
- Use environment variables: `${GITHUB_TOKEN:-}`
|
|
214
|
+
- Document required env vars in script comments
|
|
215
|
+
|
|
216
|
+
## PR/Commit Checklist
|
|
217
|
+
|
|
218
|
+
**Before commit:**
|
|
219
|
+
- [ ] Run `shellcheck <script>` (if available)
|
|
220
|
+
- [ ] Test install action: `./scripts/install_<tool>.sh`
|
|
221
|
+
- [ ] Test update action: `./scripts/install_<tool>.sh update`
|
|
222
|
+
- [ ] Test uninstall action: `./scripts/install_<tool>.sh uninstall`
|
|
223
|
+
- [ ] Update `scripts/README.md` if new script or behavior change
|
|
224
|
+
- [ ] Verify script permissions: `make scripts-perms`
|
|
225
|
+
|
|
226
|
+
**Script checklist:**
|
|
227
|
+
- [ ] Shebang: `#!/usr/bin/env bash`
|
|
228
|
+
- [ ] Strict mode: `set -euo pipefail`
|
|
229
|
+
- [ ] Source shared lib: `source "${SCRIPT_DIR}/lib/colors.sh"`
|
|
230
|
+
- [ ] Action dispatcher (install/update/uninstall/reconcile)
|
|
231
|
+
- [ ] Error handling (check return codes, trap on exit)
|
|
232
|
+
- [ ] Confirmation prompts (respect FORCE_INSTALL)
|
|
233
|
+
- [ ] PATH updates (add to ~/.bashrc or ~/.zshrc if needed)
|
|
234
|
+
|
|
235
|
+
**Commit messages:**
|
|
236
|
+
- `feat(scripts): add install_terraform.sh`
|
|
237
|
+
- `fix(install-python): handle uv bootstrap failure`
|
|
238
|
+
- `docs(scripts): update README with reconcile action`
|
|
239
|
+
|
|
240
|
+
## Good vs Bad Examples
|
|
241
|
+
|
|
242
|
+
**Good: Robust download with fallback**
|
|
243
|
+
```bash
|
|
244
|
+
download_file() {
|
|
245
|
+
local url="$1"
|
|
246
|
+
local dest="$2"
|
|
247
|
+
|
|
248
|
+
if command -v curl >/dev/null 2>&1; then
|
|
249
|
+
curl -fsSL "$url" -o "$dest"
|
|
250
|
+
elif command -v wget >/dev/null 2>&1; then
|
|
251
|
+
wget -q "$url" -O "$dest"
|
|
252
|
+
else
|
|
253
|
+
echo_error "Neither curl nor wget found"
|
|
254
|
+
return 1
|
|
255
|
+
fi
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Bad: Assumes curl exists**
|
|
260
|
+
```bash
|
|
261
|
+
download_file() {
|
|
262
|
+
curl -fsSL "$1" -o "$2" # Fails if curl not installed
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Good: Version comparison**
|
|
267
|
+
```bash
|
|
268
|
+
version_gt() {
|
|
269
|
+
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
CURRENT_VERSION="1.2.3"
|
|
273
|
+
LATEST_VERSION="1.3.0"
|
|
274
|
+
|
|
275
|
+
if version_gt "$LATEST_VERSION" "$CURRENT_VERSION"; then
|
|
276
|
+
echo "Upgrade available"
|
|
277
|
+
fi
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**Bad: String comparison for versions**
|
|
281
|
+
```bash
|
|
282
|
+
if [[ "$LATEST_VERSION" > "$CURRENT_VERSION" ]]; then
|
|
283
|
+
# Wrong: "1.10.0" < "1.9.0" (string comparison)
|
|
284
|
+
echo "Upgrade available"
|
|
285
|
+
fi
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Good: Cleanup on exit**
|
|
289
|
+
```bash
|
|
290
|
+
TMPDIR=$(mktemp -d)
|
|
291
|
+
trap 'rm -rf "$TMPDIR"' EXIT ERR
|
|
292
|
+
|
|
293
|
+
# Download to temp
|
|
294
|
+
download_file "$URL" "$TMPDIR/file"
|
|
295
|
+
# ... process ...
|
|
296
|
+
# Cleanup happens automatically via trap
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Bad: Manual cleanup (error-prone)**
|
|
300
|
+
```bash
|
|
301
|
+
TMPDIR=$(mktemp -d)
|
|
302
|
+
download_file "$URL" "$TMPDIR/file"
|
|
303
|
+
# ... process ...
|
|
304
|
+
rm -rf "$TMPDIR" # Skipped if earlier command fails
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**Good: Action-specific logic**
|
|
308
|
+
```bash
|
|
309
|
+
install_rust() {
|
|
310
|
+
if command -v rustup >/dev/null 2>&1; then
|
|
311
|
+
echo_warn "rustup already installed"
|
|
312
|
+
return 0
|
|
313
|
+
fi
|
|
314
|
+
|
|
315
|
+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
316
|
+
source "$HOME/.cargo/env"
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
update_rust() {
|
|
320
|
+
if ! command -v rustup >/dev/null 2>&1; then
|
|
321
|
+
echo_error "rustup not installed. Run install first."
|
|
322
|
+
return 1
|
|
323
|
+
fi
|
|
324
|
+
|
|
325
|
+
rustup update
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## When Stuck
|
|
330
|
+
|
|
331
|
+
**Script fails silently:**
|
|
332
|
+
1. Add debug: `bash -x ./scripts/install_<tool>.sh`
|
|
333
|
+
2. Check logs: `./scripts/install_<tool>.sh 2>&1 | tee install.log`
|
|
334
|
+
3. Verify permissions: `ls -la scripts/`
|
|
335
|
+
|
|
336
|
+
**Download fails:**
|
|
337
|
+
1. Check network: `curl -I https://github.com`
|
|
338
|
+
2. Check URL: `echo "$URL"` (verify it's correct)
|
|
339
|
+
3. Try manual download: `curl -fsSL "$URL"`
|
|
340
|
+
|
|
341
|
+
**Installation fails:**
|
|
342
|
+
1. Check prerequisites (e.g., Python for uv, curl for rustup)
|
|
343
|
+
2. Check disk space: `df -h`
|
|
344
|
+
3. Check permissions: `ls -ld "$INSTALL_PREFIX"`
|
|
345
|
+
|
|
346
|
+
**PATH not updated:**
|
|
347
|
+
1. Source shell config: `source ~/.bashrc` or `source ~/.zshrc`
|
|
348
|
+
2. Check PATH: `echo $PATH | tr ':' '\n' | grep local`
|
|
349
|
+
3. Verify binary location: `ls -la ~/.local/bin/<tool>`
|
|
350
|
+
|
|
351
|
+
**Reconcile fails:**
|
|
352
|
+
1. Check current installation: `which <tool>`
|
|
353
|
+
2. Check installation method: `cli_audit.py --only <tool>`
|
|
354
|
+
3. Manually remove old version first: `apt remove <tool>` or `cargo uninstall <tool>`
|
|
355
|
+
|
|
356
|
+
**Documentation:**
|
|
357
|
+
- Script-specific docs: [README.md](README.md) (this directory)
|
|
358
|
+
- Troubleshooting: [../docs/TROUBLESHOOTING.md](../docs/TROUBLESHOOTING.md)
|
|
359
|
+
- Architecture: [../docs/DEPLOYMENT.md](../docs/DEPLOYMENT.md#installation-scripts)
|
|
360
|
+
|
|
361
|
+
## House Rules
|
|
362
|
+
|
|
363
|
+
**Installation preferences** (Phase 2 planning):
|
|
364
|
+
- User-level preferred: `~/.local/bin` (workstations)
|
|
365
|
+
- System-level for servers: `/usr/local/bin`
|
|
366
|
+
- Vendor tools first: rustup, nvm, uv over system packages
|
|
367
|
+
- See [../docs/adr/ADR-002-package-manager-hierarchy.md](../docs/adr/ADR-002-package-manager-hierarchy.md)
|
|
368
|
+
|
|
369
|
+
**Reconciliation strategy:**
|
|
370
|
+
- Parallel approach: Keep both installations, prefer user via PATH
|
|
371
|
+
- No automatic removal (user chooses)
|
|
372
|
+
- See [../docs/adr/ADR-003-parallel-installation-approach.md](../docs/adr/ADR-003-parallel-installation-approach.md)
|
|
373
|
+
|
|
374
|
+
**Version policy:**
|
|
375
|
+
- Always latest by default
|
|
376
|
+
- Warn on major version upgrades
|
|
377
|
+
- See [../docs/adr/ADR-004-always-latest-version-policy.md](../docs/adr/ADR-004-always-latest-version-policy.md)
|
|
378
|
+
|
|
379
|
+
**Script structure:**
|
|
380
|
+
- Multi-action support: install, update, uninstall, reconcile
|
|
381
|
+
- Shared utilities in `lib/`
|
|
382
|
+
- Consistent error handling and logging
|
|
383
|
+
- Make integration via `make install-<tool>`
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
**Quick Start:** Run `make install-core` to install essential tools, then `make audit` to verify.
|
|
388
|
+
|
|
389
|
+
**Troubleshooting:** See [README.md](README.md) for per-script troubleshooting and [../docs/TROUBLESHOOTING.md](../docs/TROUBLESHOOTING.md) for general issues.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Server Configuration
|
|
2
|
+
PORT=3000
|
|
3
|
+
NODE_ENV=development
|
|
4
|
+
|
|
5
|
+
# Database
|
|
6
|
+
DATABASE_URL=postgresql://user:password@localhost:5432/api
|
|
7
|
+
|
|
8
|
+
# Logging
|
|
9
|
+
LOG_LEVEL=info
|
|
10
|
+
|
|
11
|
+
# Security
|
|
12
|
+
JWT_SECRET=change-me-in-production
|
|
13
|
+
CORS_ORIGIN=http://localhost:3000
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<!-- FOR AI AGENTS - Human readability is a side effect, not a goal -->
|
|
2
|
+
<!-- Managed by agent: keep sections and order; edit content, not structure -->
|
|
3
|
+
<!-- Last updated: 2026-02-05 | Last verified: never -->
|
|
4
|
+
|
|
5
|
+
# AGENTS.md
|
|
6
|
+
|
|
7
|
+
**Precedence:** the **closest `AGENTS.md`** to the files you're changing wins. Root holds global defaults only.
|
|
8
|
+
|
|
9
|
+
## Commands (unverified)
|
|
10
|
+
> Source: package.json — CI-sourced commands are most reliable
|
|
11
|
+
|
|
12
|
+
<!-- AGENTS-GENERATED:START commands -->
|
|
13
|
+
| Task | Command | ~Time |
|
|
14
|
+
|------|---------|-------|
|
|
15
|
+
| Typecheck | pnpm typecheck | ~15s |
|
|
16
|
+
| Lint | pnpm lint | ~10s |
|
|
17
|
+
| Format | pnpm format | ~5s |
|
|
18
|
+
| Test (single) | pnpm dlx vitest run | ~2s |
|
|
19
|
+
| Test (all) | pnpm test | ~30s |
|
|
20
|
+
| Build | pnpm build | ~30s |
|
|
21
|
+
<!-- AGENTS-GENERATED:END commands -->
|
|
22
|
+
|
|
23
|
+
> If commands fail, verify against Makefile/package.json/composer.json or ask user to update.
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
1. **Before coding**: Read nearest `AGENTS.md` + check Golden Samples for the area you're touching
|
|
27
|
+
2. **After each change**: Run the smallest relevant check (lint → typecheck → single test)
|
|
28
|
+
3. **Before committing**: Run full test suite if changes affect >2 files or touch shared code
|
|
29
|
+
|
|
30
|
+
## File Map
|
|
31
|
+
<!-- AGENTS-GENERATED:START filemap -->
|
|
32
|
+
```
|
|
33
|
+
src/ → application source code
|
|
34
|
+
```
|
|
35
|
+
<!-- AGENTS-GENERATED:END filemap -->
|
|
36
|
+
|
|
37
|
+
## Golden Samples (follow these patterns)
|
|
38
|
+
<!-- AGENTS-GENERATED:START golden-samples -->
|
|
39
|
+
| For | Reference | Key patterns |
|
|
40
|
+
|-----|-----------|--------------|
|
|
41
|
+
| Entrypoint | `src/index.ts` | standard patterns |
|
|
42
|
+
<!-- AGENTS-GENERATED:END golden-samples -->
|
|
43
|
+
|
|
44
|
+
## Heuristics (quick decisions)
|
|
45
|
+
<!-- AGENTS-GENERATED:START heuristics -->
|
|
46
|
+
| When | Do |
|
|
47
|
+
|------|-----|
|
|
48
|
+
| Adding env var | Add to `.env.example` first |
|
|
49
|
+
| Committing | Use Conventional Commits (feat:, fix:, docs:, etc.) |
|
|
50
|
+
| Merging PRs | Squash and merge |
|
|
51
|
+
| Adding dependency | Ask first - we minimize deps |
|
|
52
|
+
| Unsure about pattern | Check Golden Samples above |
|
|
53
|
+
<!-- AGENTS-GENERATED:END heuristics -->
|
|
54
|
+
|
|
55
|
+
## Repository Settings
|
|
56
|
+
<!-- AGENTS-GENERATED:START repo-settings -->
|
|
57
|
+
- **Default branch:** `main`
|
|
58
|
+
- **Merge strategy:** squash, merge, rebase
|
|
59
|
+
<!-- AGENTS-GENERATED:END repo-settings -->
|
|
60
|
+
|
|
61
|
+
## Boundaries
|
|
62
|
+
|
|
63
|
+
### Always Do
|
|
64
|
+
- Run pre-commit checks before committing
|
|
65
|
+
- Add tests for new code paths
|
|
66
|
+
- Use conventional commit format: `type(scope): subject`
|
|
67
|
+
- Use TypeScript strict mode with proper type annotations
|
|
68
|
+
|
|
69
|
+
### Ask First
|
|
70
|
+
- Adding new dependencies
|
|
71
|
+
- Modifying CI/CD configuration
|
|
72
|
+
- Changing public API signatures
|
|
73
|
+
- Running full e2e test suites
|
|
74
|
+
- Repo-wide refactoring or rewrites
|
|
75
|
+
|
|
76
|
+
### Never Do
|
|
77
|
+
- Commit secrets, credentials, or sensitive data
|
|
78
|
+
- Modify vendor/, node_modules/, or generated files
|
|
79
|
+
- Push directly to main/master branch
|
|
80
|
+
- Delete migration files or schema changes
|
|
81
|
+
- Commit package-lock.json without package.json changes
|
|
82
|
+
- Use any type without justification
|
|
83
|
+
|
|
84
|
+
## Index of scoped AGENTS.md
|
|
85
|
+
<!-- AGENTS-GENERATED:START scope-index -->
|
|
86
|
+
- `./src/AGENTS.md` — Backend services (TypeScript/Node.js)
|
|
87
|
+
<!-- AGENTS-GENERATED:END scope-index -->
|
|
88
|
+
|
|
89
|
+
## When instructions conflict
|
|
90
|
+
The nearest `AGENTS.md` wins. Explicit user prompts override files.
|
|
91
|
+
- For TypeScript/JavaScript patterns, follow project eslint/prettier config
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "express-api-ts",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Express.js REST API with TypeScript",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "tsx watch src/index.ts",
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "node dist/index.js",
|
|
10
|
+
"test": "vitest run",
|
|
11
|
+
"test:watch": "vitest",
|
|
12
|
+
"lint": "eslint src/",
|
|
13
|
+
"format": "prettier --write src/",
|
|
14
|
+
"typecheck": "tsc --noEmit"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"express": "^4.21.0",
|
|
18
|
+
"zod": "^3.23.0",
|
|
19
|
+
"winston": "^3.14.0"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/express": "^4.17.21",
|
|
23
|
+
"@types/node": "^22.0.0",
|
|
24
|
+
"eslint": "^9.12.0",
|
|
25
|
+
"prettier": "^3.3.0",
|
|
26
|
+
"tsx": "^4.19.0",
|
|
27
|
+
"typescript": "^5.6.0",
|
|
28
|
+
"vitest": "^2.1.0"
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=20.0.0"
|
|
32
|
+
}
|
|
33
|
+
}
|