@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.
Files changed (354) hide show
  1. package/dist/index.js +11 -4
  2. package/package.json +3 -4
  3. package/skills/ATTRIBUTION.md +80 -0
  4. package/skills/accessibility-audit/SKILL.md +325 -0
  5. package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
  6. package/skills/apns-notifier/SKILL.md +86 -0
  7. package/skills/approval-policy-enforcer/SKILL.md +66 -0
  8. package/skills/apps-sdk-builder/LICENSE.txt +201 -0
  9. package/skills/apps-sdk-builder/SKILL.md +328 -0
  10. package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
  11. package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
  12. package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
  13. package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
  14. package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
  15. package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
  16. package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
  17. package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
  18. package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
  19. package/skills/architecture-selector/SKILL.md +64 -0
  20. package/skills/backlog-planner/SKILL.md +68 -0
  21. package/skills/carplay-entitlement-checker/SKILL.md +82 -0
  22. package/skills/concept-deepener/SKILL.md +86 -0
  23. package/skills/concept-discovery/SKILL.md +517 -0
  24. package/skills/concept-discovery/assets/sample-analysis.json +81 -0
  25. package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
  26. package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
  27. package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
  28. package/skills/concept-discovery/references/framework-patterns.md +228 -0
  29. package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
  30. package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
  31. package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
  32. package/skills/dast-zap/SKILL.md +453 -0
  33. package/skills/dast-zap/assets/.gitkeep +9 -0
  34. package/skills/dast-zap/assets/github_action.yml +207 -0
  35. package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
  36. package/skills/dast-zap/assets/zap_automation.yaml +196 -0
  37. package/skills/dast-zap/assets/zap_context.xml +192 -0
  38. package/skills/dast-zap/references/EXAMPLE.md +40 -0
  39. package/skills/dast-zap/references/api_testing_guide.md +475 -0
  40. package/skills/dast-zap/references/authentication_guide.md +431 -0
  41. package/skills/dast-zap/references/false_positive_handling.md +427 -0
  42. package/skills/dast-zap/references/owasp_mapping.md +255 -0
  43. package/skills/dep-sbom-scan/SKILL.md +466 -0
  44. package/skills/deploy-cloudflare/SKILL.md +930 -0
  45. package/skills/deploy-docker/SKILL.md +55 -0
  46. package/skills/deploy-fly/SKILL.md +228 -0
  47. package/skills/deploy-k8s/SKILL.md +108 -0
  48. package/skills/deploy-k8s/assets/logo.png +0 -0
  49. package/skills/deploy-k8s/docs/README.md +29 -0
  50. package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
  51. package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
  52. package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
  53. package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
  54. package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
  55. package/skills/deploy-k8s/docs/book.json +16 -0
  56. package/skills/deploy-k8s/docs/community/changelog.md +34 -0
  57. package/skills/deploy-k8s/docs/community/contributing.md +67 -0
  58. package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
  59. package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
  60. package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
  61. package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
  62. package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
  63. package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
  64. package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
  65. package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
  66. package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
  67. package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
  68. package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
  69. package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
  70. package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
  71. package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
  72. package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
  73. package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
  74. package/skills/deploy-k8s/docs/guides/observability.md +67 -0
  75. package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
  76. package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
  77. package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
  78. package/skills/deploy-k8s/docs/package-lock.json +2892 -0
  79. package/skills/deploy-k8s/docs/package.json +13 -0
  80. package/skills/deploy-k8s/references/api-drift.md +298 -0
  81. package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
  82. package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
  83. package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
  84. package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
  85. package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
  86. package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
  87. package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
  88. package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
  89. package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
  90. package/skills/deploy-k8s/references/examples-bad.md +282 -0
  91. package/skills/deploy-k8s/references/examples-good.md +440 -0
  92. package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
  93. package/skills/deploy-k8s/references/helm-patterns.md +203 -0
  94. package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
  95. package/skills/deploy-k8s/references/job-patterns.md +120 -0
  96. package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
  97. package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
  98. package/skills/deploy-k8s/references/network-exposure.md +481 -0
  99. package/skills/deploy-k8s/references/observability.md +302 -0
  100. package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
  101. package/skills/deploy-k8s/references/resource-starvation.md +374 -0
  102. package/skills/deploy-k8s/references/security-hardening.md +209 -0
  103. package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
  104. package/skills/deploy-k8s/references/storage-and-state.md +330 -0
  105. package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
  106. package/skills/deploy-railway/SKILL.md +235 -0
  107. package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
  108. package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
  109. package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
  110. package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
  111. package/skills/deploy-railway/references/analyze-db.md +344 -0
  112. package/skills/deploy-railway/references/configure.md +309 -0
  113. package/skills/deploy-railway/references/deploy.md +195 -0
  114. package/skills/deploy-railway/references/operate.md +214 -0
  115. package/skills/deploy-railway/references/request.md +248 -0
  116. package/skills/deploy-railway/references/setup.md +312 -0
  117. package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
  118. package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
  119. package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
  120. package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
  121. package/skills/deploy-railway/scripts/dal.py +671 -0
  122. package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
  123. package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
  124. package/skills/deploy-railway/scripts/railway-api.sh +52 -0
  125. package/skills/deploy-ssh/SKILL.md +91 -0
  126. package/skills/deploy-vercel/SKILL.md +304 -0
  127. package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
  128. package/skills/deploy-vercel/resources/deploy.sh +301 -0
  129. package/skills/docs-runbooks/SKILL.md +399 -0
  130. package/skills/drive-status-renderer/SKILL.md +62 -0
  131. package/skills/iac-scan/SKILL.md +680 -0
  132. package/skills/iac-scan/assets/.gitkeep +9 -0
  133. package/skills/iac-scan/assets/checkov_config.yaml +94 -0
  134. package/skills/iac-scan/assets/github_actions.yml +199 -0
  135. package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
  136. package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
  137. package/skills/iac-scan/references/EXAMPLE.md +40 -0
  138. package/skills/iac-scan/references/compliance_mapping.md +237 -0
  139. package/skills/iac-scan/references/custom_policies.md +460 -0
  140. package/skills/iac-scan/references/suppression_guide.md +431 -0
  141. package/skills/incident-briefing/SKILL.md +66 -0
  142. package/skills/incident-triage/SKILL.md +481 -0
  143. package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
  144. package/skills/mcp-builder/SKILL.md +244 -0
  145. package/skills/mcp-builder/reference/evaluation.md +602 -0
  146. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  147. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  148. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  149. package/skills/mcp-builder/scripts/connections.py +151 -0
  150. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  151. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  152. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  153. package/skills/mobile-pairing/SKILL.md +52 -0
  154. package/skills/ops-sre/SKILL.md +297 -0
  155. package/skills/playwright-qa/LICENSE.txt +201 -0
  156. package/skills/playwright-qa/NOTICE.txt +14 -0
  157. package/skills/playwright-qa/SKILL.md +156 -0
  158. package/skills/playwright-qa/agents/openai.yaml +6 -0
  159. package/skills/playwright-qa/assets/playwright-small.svg +3 -0
  160. package/skills/playwright-qa/assets/playwright.png +0 -0
  161. package/skills/playwright-qa/references/cli.md +116 -0
  162. package/skills/playwright-qa/references/workflows.md +95 -0
  163. package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
  164. package/skills/release-publish/SKILL.md +85 -0
  165. package/skills/repo-bootstrap/SKILL.md +92 -0
  166. package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
  167. package/skills/repo-bootstrap/assets/root-thin.md +141 -0
  168. package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
  169. package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
  170. package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
  171. package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
  172. package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
  173. package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
  174. package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
  175. package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
  176. package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
  177. package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
  178. package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
  179. package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
  180. package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
  181. package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
  182. package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
  183. package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
  184. package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
  185. package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
  186. package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
  187. package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
  188. package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
  189. package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
  190. package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
  191. package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
  192. package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
  193. package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
  194. package/skills/repo-bootstrap/checkpoints.yaml +279 -0
  195. package/skills/repo-bootstrap/evals/evals.json +385 -0
  196. package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
  197. package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
  198. package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
  199. package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
  200. package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
  201. package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
  202. package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
  203. package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
  204. package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
  205. package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
  206. package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
  207. package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
  208. package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
  209. package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
  210. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
  211. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
  212. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
  213. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
  214. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
  215. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
  216. package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
  217. package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
  218. package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
  219. package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
  220. package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
  221. package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
  222. package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
  223. package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
  224. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
  225. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
  226. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
  227. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
  228. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
  229. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
  230. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
  231. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
  232. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
  233. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
  234. package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
  235. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
  236. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
  237. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
  238. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
  239. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
  240. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
  241. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
  242. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
  243. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
  244. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
  245. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
  246. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
  247. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
  248. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
  249. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
  250. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
  251. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
  252. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
  253. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
  254. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
  255. package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
  256. package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
  257. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
  258. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
  259. package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
  260. package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
  261. package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
  262. package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
  263. package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
  264. package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
  265. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
  266. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
  267. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
  268. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
  269. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
  270. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
  271. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
  272. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
  273. package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
  274. package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
  275. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
  276. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
  277. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
  278. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
  279. package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
  280. package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
  281. package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
  282. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
  283. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
  284. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
  285. package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
  286. package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
  287. package/skills/repo-bootstrap/references/output-structure.md +124 -0
  288. package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
  289. package/skills/repo-bootstrap/references/verification-guide.md +137 -0
  290. package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
  291. package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
  292. package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
  293. package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
  294. package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
  295. package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
  296. package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
  297. package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
  298. package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
  299. package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
  300. package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
  301. package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
  302. package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
  303. package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
  304. package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
  305. package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
  306. package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
  307. package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
  308. package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
  309. package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
  310. package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
  311. package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
  312. package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
  313. package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
  314. package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
  315. package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
  316. package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
  317. package/skills/schema-api-contracts/SKILL.md +56 -0
  318. package/skills/secret-hygiene/SKILL.md +511 -0
  319. package/skills/secret-hygiene/assets/.gitkeep +9 -0
  320. package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
  321. package/skills/secret-hygiene/assets/config-custom.toml +178 -0
  322. package/skills/secret-hygiene/assets/config-strict.toml +48 -0
  323. package/skills/secret-hygiene/assets/github-action.yml +181 -0
  324. package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
  325. package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
  326. package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
  327. package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
  328. package/skills/secret-hygiene/references/detection_rules.md +276 -0
  329. package/skills/secret-hygiene/references/false_positives.md +598 -0
  330. package/skills/secret-hygiene/references/remediation_guide.md +530 -0
  331. package/skills/stack-selector/SKILL.md +56 -0
  332. package/skills/telegram-control/SKILL.md +110 -0
  333. package/skills/telegram-control/references/architecture.md +184 -0
  334. package/skills/telegram-control/references/convex.md +173 -0
  335. package/skills/telegram-control/references/error_handling.md +212 -0
  336. package/skills/telegram-control/references/initial_setup.md +165 -0
  337. package/skills/telegram-control/references/telegram_api.md +156 -0
  338. package/skills/telegram-control/scripts/cancel_message.ts +53 -0
  339. package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
  340. package/skills/telegram-control/scripts/logger.ts +121 -0
  341. package/skills/telegram-control/scripts/proxy-util.ts +11 -0
  342. package/skills/telegram-control/scripts/schedule_message.ts +216 -0
  343. package/skills/telegram-control/scripts/send_message.ts +115 -0
  344. package/skills/telegram-control/scripts/setup.ts +185 -0
  345. package/skills/telegram-control/scripts/types.ts +75 -0
  346. package/skills/telegram-control/scripts/view_history.ts +74 -0
  347. package/skills/test-strategy/SKILL.md +352 -0
  348. package/skills/threat-model/SKILL.md +303 -0
  349. package/skills/threat-model/examples/example-output.md +196 -0
  350. package/skills/threat-model/template.md +96 -0
  351. package/skills/ts-lint/SKILL.md +80 -0
  352. package/skills/ui-flow/SKILL.md +668 -0
  353. package/skills/voice-command-router/SKILL.md +51 -0
  354. package/skills/widget-live-activity-sync/SKILL.md +66 -0
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env bash
2
+ # Generate file map (dir → purpose) for AGENTS.md
3
+ set -euo pipefail
4
+
5
+ PROJECT_DIR="${1:-.}"
6
+ cd "$PROJECT_DIR"
7
+
8
+ # Check if git is available
9
+ if ! git rev-parse --git-dir > /dev/null 2>&1; then
10
+ echo "# Not a git repository - cannot generate file map" >&2
11
+ echo ""
12
+ exit 0
13
+ fi
14
+
15
+ # Map of known directory names to their purposes
16
+ declare -A DIR_PURPOSES=(
17
+ # Source directories
18
+ ["src"]="application source code"
19
+ ["lib"]="library code"
20
+ ["app"]="application code (routes, pages)"
21
+ ["pkg"]="public packages"
22
+ ["internal"]="internal packages (not exported)"
23
+
24
+ # Language-specific
25
+ ["cmd"]="CLI entrypoints"
26
+ ["Classes"]="PHP classes (PSR-4)"
27
+ ["Configuration"]="framework configuration"
28
+
29
+ # Frontend
30
+ ["components"]="UI components"
31
+ ["pages"]="page components/routes"
32
+ ["views"]="view templates"
33
+ ["layouts"]="layout components"
34
+ ["hooks"]="React/Vue hooks"
35
+ ["stores"]="state management"
36
+ ["styles"]="CSS/styling"
37
+ ["assets"]="static assets (images, fonts)"
38
+ ["public"]="public static files"
39
+
40
+ # Backend
41
+ ["api"]="API routes/handlers"
42
+ ["routes"]="route definitions"
43
+ ["controllers"]="request handlers"
44
+ ["services"]="business logic"
45
+ ["models"]="data models"
46
+ ["entities"]="database entities"
47
+ ["repositories"]="data access layer"
48
+ ["middleware"]="request middleware"
49
+
50
+ # Infrastructure
51
+ ["scripts"]="automation scripts"
52
+ ["bin"]="compiled binaries"
53
+ ["build"]="build output"
54
+ ["dist"]="distribution files"
55
+ ["vendor"]="third-party dependencies (do not edit)"
56
+ ["node_modules"]="npm dependencies (do not edit)"
57
+
58
+ # Testing
59
+ ["tests"]="test suites"
60
+ ["test"]="test suites"
61
+ ["Tests"]="test suites"
62
+ ["__tests__"]="Jest test suites"
63
+ ["testutil"]="test utilities"
64
+ ["fixtures"]="test fixtures"
65
+ ["mocks"]="test mocks"
66
+
67
+ # Documentation
68
+ ["docs"]="documentation"
69
+ ["Documentation"]="documentation (RST/MD)"
70
+ ["doc"]="documentation"
71
+
72
+ # Configuration
73
+ ["config"]="configuration files"
74
+ ["configs"]="configuration files"
75
+ [".github"]="GitHub Actions, templates"
76
+ [".gitlab"]="GitLab CI configuration"
77
+
78
+ # Data
79
+ ["migrations"]="database migrations"
80
+ ["seeds"]="database seeds"
81
+ ["data"]="data files"
82
+ ["Resources"]="templates and assets"
83
+
84
+ # Examples
85
+ ["examples"]="usage examples"
86
+ ["example"]="usage examples"
87
+ ["samples"]="sample code"
88
+ )
89
+
90
+ # Get top-level directories with file counts
91
+ get_directories() {
92
+ git ls-files | cut -d/ -f1 | sort | uniq -c | sort -rn | while read -r count dir; do
93
+ # Skip files (no directory)
94
+ [[ "$dir" == *.* ]] && continue
95
+ # Skip hidden except .github/.gitlab
96
+ [[ "$dir" == .* ]] && [[ "$dir" != ".github" ]] && [[ "$dir" != ".gitlab" ]] && continue
97
+ echo "$count $dir"
98
+ done
99
+ }
100
+
101
+ # Infer purpose from directory contents if not in known list
102
+ infer_purpose() {
103
+ local dir="$1"
104
+
105
+ # Check for specific file patterns
106
+ if ls "$dir"/*.go 2>/dev/null | head -1 > /dev/null; then
107
+ echo "Go packages"
108
+ elif ls "$dir"/*.py 2>/dev/null | head -1 > /dev/null; then
109
+ echo "Python modules"
110
+ elif ls "$dir"/*.php 2>/dev/null | head -1 > /dev/null; then
111
+ echo "PHP classes"
112
+ elif ls "$dir"/*.ts 2>/dev/null | head -1 > /dev/null; then
113
+ echo "TypeScript modules"
114
+ elif ls "$dir"/*.tsx 2>/dev/null | head -1 > /dev/null; then
115
+ echo "React components"
116
+ elif ls "$dir"/*.vue 2>/dev/null | head -1 > /dev/null; then
117
+ echo "Vue components"
118
+ elif ls "$dir"/*.sh 2>/dev/null | head -1 > /dev/null; then
119
+ echo "shell scripts"
120
+ elif ls "$dir"/*.md 2>/dev/null | head -1 > /dev/null; then
121
+ echo "documentation"
122
+ elif ls "$dir"/*.json 2>/dev/null | head -1 > /dev/null; then
123
+ echo "configuration/data"
124
+ else
125
+ echo "project files"
126
+ fi
127
+ }
128
+
129
+ # Generate the file map
130
+ generate_map() {
131
+ local max_dirs=15 # Limit to top 15 directories
132
+
133
+ while read -r count dir; do
134
+ [ -z "$dir" ] && continue
135
+ [ "$max_dirs" -le 0 ] && break
136
+
137
+ local purpose=""
138
+ if [ -n "${DIR_PURPOSES[$dir]:-}" ]; then
139
+ purpose="${DIR_PURPOSES[$dir]}"
140
+ else
141
+ purpose=$(infer_purpose "$dir")
142
+ fi
143
+
144
+ # Format: dir/ → purpose
145
+ # Pad directory name for alignment
146
+ printf "%-16s → %s\n" "${dir}/" "$purpose"
147
+
148
+ ((max_dirs--))
149
+ done < <(get_directories)
150
+ }
151
+
152
+ # Output the file map
153
+ generate_map
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env bash
2
+ # Find nearest config root for a given stack type
3
+
4
+ # Find nearest directory containing package.json (for Node scopes)
5
+ # Usage: find_node_config_root "/path/to/scope"
6
+ # Returns: directory path or empty string
7
+ find_node_config_root() {
8
+ local start_dir="$1"
9
+ local search_dir="$start_dir"
10
+
11
+ while [[ "$search_dir" != "." && "$search_dir" != "/" ]]; do
12
+ if [[ -f "$search_dir/package.json" ]]; then
13
+ echo "$search_dir"
14
+ return 0
15
+ fi
16
+ search_dir=$(dirname "$search_dir")
17
+ done
18
+
19
+ # Check project root as fallback
20
+ if [[ -f "package.json" ]]; then
21
+ echo "."
22
+ return 0
23
+ fi
24
+
25
+ return 1
26
+ }
27
+
28
+ # Find nearest directory containing composer.json (for PHP scopes)
29
+ find_php_config_root() {
30
+ local start_dir="$1"
31
+ local search_dir="$start_dir"
32
+
33
+ while [[ "$search_dir" != "." && "$search_dir" != "/" ]]; do
34
+ if [[ -f "$search_dir/composer.json" ]]; then
35
+ echo "$search_dir"
36
+ return 0
37
+ fi
38
+ search_dir=$(dirname "$search_dir")
39
+ done
40
+
41
+ if [[ -f "composer.json" ]]; then
42
+ echo "."
43
+ return 0
44
+ fi
45
+
46
+ return 1
47
+ }
48
+
49
+ # Find nearest directory containing go.mod (for Go scopes)
50
+ find_go_config_root() {
51
+ local start_dir="$1"
52
+ local search_dir="$start_dir"
53
+
54
+ while [[ "$search_dir" != "." && "$search_dir" != "/" ]]; do
55
+ if [[ -f "$search_dir/go.mod" ]]; then
56
+ echo "$search_dir"
57
+ return 0
58
+ fi
59
+ search_dir=$(dirname "$search_dir")
60
+ done
61
+
62
+ if [[ -f "go.mod" ]]; then
63
+ echo "."
64
+ return 0
65
+ fi
66
+
67
+ return 1
68
+ }
69
+
70
+ # Find nearest directory containing pyproject.toml or setup.py (for Python scopes)
71
+ find_python_config_root() {
72
+ local start_dir="$1"
73
+ local search_dir="$start_dir"
74
+
75
+ while [[ "$search_dir" != "." && "$search_dir" != "/" ]]; do
76
+ if [[ -f "$search_dir/pyproject.toml" || -f "$search_dir/setup.py" ]]; then
77
+ echo "$search_dir"
78
+ return 0
79
+ fi
80
+ search_dir=$(dirname "$search_dir")
81
+ done
82
+
83
+ if [[ -f "pyproject.toml" || -f "setup.py" ]]; then
84
+ echo "."
85
+ return 0
86
+ fi
87
+
88
+ return 1
89
+ }
90
+
91
+ # Find Node workspace root (monorepo root)
92
+ # Detects: pnpm-workspace.yaml, package.json with "workspaces", lerna.json, nx.json
93
+ # Usage: find_node_workspace_root "/path/to/scope"
94
+ # Returns: workspace root directory or empty string
95
+ find_node_workspace_root() {
96
+ local start_dir="$1"
97
+ local search_dir="$start_dir"
98
+
99
+ while [[ "$search_dir" != "." && "$search_dir" != "/" ]]; do
100
+ # pnpm workspace
101
+ if [[ -f "$search_dir/pnpm-workspace.yaml" ]]; then
102
+ echo "$search_dir"
103
+ return 0
104
+ fi
105
+
106
+ # npm/yarn workspaces (package.json with "workspaces" field)
107
+ if [[ -f "$search_dir/package.json" ]]; then
108
+ if jq -e '.workspaces' "$search_dir/package.json" >/dev/null 2>&1; then
109
+ echo "$search_dir"
110
+ return 0
111
+ fi
112
+ fi
113
+
114
+ # Lerna monorepo
115
+ if [[ -f "$search_dir/lerna.json" ]]; then
116
+ echo "$search_dir"
117
+ return 0
118
+ fi
119
+
120
+ # Nx monorepo
121
+ if [[ -f "$search_dir/nx.json" ]]; then
122
+ echo "$search_dir"
123
+ return 0
124
+ fi
125
+
126
+ search_dir=$(dirname "$search_dir")
127
+ done
128
+
129
+ # Check project root as fallback
130
+ if [[ -f "pnpm-workspace.yaml" ]]; then
131
+ echo "."
132
+ return 0
133
+ fi
134
+ if [[ -f "package.json" ]] && jq -e '.workspaces' "package.json" >/dev/null 2>&1; then
135
+ echo "."
136
+ return 0
137
+ fi
138
+ if [[ -f "lerna.json" || -f "nx.json" ]]; then
139
+ echo "."
140
+ return 0
141
+ fi
142
+
143
+ return 1
144
+ }
145
+
146
+ # Extract Node version from nearest config
147
+ # Priority: package.json engines.node > .nvmrc > .node-version > .tool-versions
148
+ get_node_version() {
149
+ local config_root="$1"
150
+ local version=""
151
+
152
+ # Try package.json engines.node
153
+ if [[ -f "$config_root/package.json" ]]; then
154
+ version=$(jq -r '.engines.node // empty' "$config_root/package.json" 2>/dev/null)
155
+ [[ -n "$version" ]] && echo "$version" && return 0
156
+ fi
157
+
158
+ # Try .nvmrc
159
+ if [[ -f "$config_root/.nvmrc" ]]; then
160
+ version=$(tr -d '[:space:]' < "$config_root/.nvmrc")
161
+ [[ -n "$version" ]] && echo "$version" && return 0
162
+ fi
163
+
164
+ # Try .node-version
165
+ if [[ -f "$config_root/.node-version" ]]; then
166
+ version=$(tr -d '[:space:]' < "$config_root/.node-version")
167
+ [[ -n "$version" ]] && echo "$version" && return 0
168
+ fi
169
+
170
+ # Try .tool-versions (asdf)
171
+ if [[ -f "$config_root/.tool-versions" ]]; then
172
+ version=$(grep '^nodejs ' "$config_root/.tool-versions" 2>/dev/null | awk '{print $2}')
173
+ [[ -n "$version" ]] && echo "$version" && return 0
174
+ fi
175
+
176
+ return 1
177
+ }
178
+
179
+ # Extract JS framework from package.json dependencies
180
+ get_js_framework() {
181
+ local config_root="$1"
182
+
183
+ [[ ! -f "$config_root/package.json" ]] && return 1
184
+
185
+ local deps
186
+ deps=$(jq -r '(.dependencies // {}) + (.devDependencies // {}) | keys[]' \
187
+ "$config_root/package.json" 2>/dev/null)
188
+
189
+ # Check in priority order (more specific first)
190
+ echo "$deps" | grep -qw 'next' && echo "next.js" && return 0
191
+ echo "$deps" | grep -qw 'nuxt' && echo "nuxt" && return 0
192
+ echo "$deps" | grep -qw 'svelte' && echo "svelte" && return 0
193
+ echo "$deps" | grep -qw 'vue' && echo "vue" && return 0
194
+ echo "$deps" | grep -qw 'react' && echo "react" && return 0
195
+ echo "$deps" | grep -qw 'express' && echo "express" && return 0
196
+
197
+ return 1
198
+ }
199
+
200
+ # Check if TypeScript strict mode is enabled
201
+ get_ts_strict_mode() {
202
+ local config_root="$1"
203
+
204
+ [[ ! -f "$config_root/tsconfig.json" ]] && return 1
205
+
206
+ local strict
207
+ strict=$(jq -r '.compilerOptions.strict // false' "$config_root/tsconfig.json" 2>/dev/null)
208
+
209
+ [[ "$strict" == "true" ]] && echo "true" && return 0
210
+ return 1
211
+ }
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env bash
2
+ # Summary output formatting helpers
3
+
4
+ # Colors (only if terminal supports it)
5
+ if [[ -t 1 ]]; then
6
+ GREEN='\033[0;32m'
7
+ YELLOW='\033[0;33m'
8
+ BLUE='\033[0;34m'
9
+ CYAN='\033[0;36m'
10
+ GRAY='\033[0;90m'
11
+ BOLD='\033[1m'
12
+ NC='\033[0m' # No Color
13
+ else
14
+ GREEN=''
15
+ YELLOW=''
16
+ BLUE=''
17
+ CYAN=''
18
+ GRAY=''
19
+ BOLD=''
20
+ NC=''
21
+ fi
22
+
23
+ # Summary data storage
24
+ declare -A SUMMARY_SOURCES
25
+ declare -a SUMMARY_RULES
26
+ declare -a SUMMARY_WARNINGS
27
+
28
+ # Initialize summary
29
+ init_summary() {
30
+ SUMMARY_SOURCES=()
31
+ SUMMARY_RULES=()
32
+ SUMMARY_WARNINGS=()
33
+ }
34
+
35
+ # Record a detected value with its source
36
+ # Usage: record_detection "category" "value" "source_file" "source_detail"
37
+ record_detection() {
38
+ local category="$1"
39
+ local value="$2"
40
+ local source_file="$3"
41
+ local source_detail="${4:-}"
42
+
43
+ if [[ -n "$source_detail" ]]; then
44
+ SUMMARY_SOURCES["$category"]="$value (from $source_file: $source_detail)"
45
+ else
46
+ SUMMARY_SOURCES["$category"]="$value (from $source_file)"
47
+ fi
48
+ }
49
+
50
+ # Record an extracted rule
51
+ # Usage: record_rule "rule_type" "rule_value" "source"
52
+ record_rule() {
53
+ local rule_type="$1"
54
+ local rule_value="$2"
55
+ local source="$3"
56
+
57
+ SUMMARY_RULES+=("$rule_type: $rule_value [$source]")
58
+ }
59
+
60
+ # Record a warning
61
+ # Usage: record_warning "message"
62
+ record_warning() {
63
+ local message="$1"
64
+ SUMMARY_WARNINGS+=("$message")
65
+ }
66
+
67
+ # Print the extraction summary
68
+ print_summary() {
69
+ local project_info="$1"
70
+ local scopes_info="$2"
71
+ local commands_info="$3"
72
+ local docs_info="${4:-{}}"
73
+ local platform_info="${5:-{}}"
74
+ local ide_info="${6:-{}}"
75
+ local agent_info="${7:-{}}"
76
+
77
+ echo ""
78
+ echo -e "${BOLD}═══════════════════════════════════════════════════════════════${NC}"
79
+ echo -e "${BOLD} EXTRACTION SUMMARY ${NC}"
80
+ echo -e "${BOLD}═══════════════════════════════════════════════════════════════${NC}"
81
+ echo ""
82
+
83
+ # Project Detection
84
+ echo -e "${CYAN}▸ Project Detection${NC}"
85
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
86
+
87
+ local lang=$(echo "$project_info" | jq -r '.language')
88
+ local version=$(echo "$project_info" | jq -r '.version')
89
+ local ptype=$(echo "$project_info" | jq -r '.type')
90
+ local framework=$(echo "$project_info" | jq -r '.framework')
91
+ local build_tool=$(echo "$project_info" | jq -r '.build_tool')
92
+ local test_fw=$(echo "$project_info" | jq -r '.test_framework')
93
+ local ci=$(echo "$project_info" | jq -r '.ci')
94
+ local docker=$(echo "$project_info" | jq -r '.has_docker')
95
+
96
+ # Determine source file
97
+ local lang_source=""
98
+ case "$lang" in
99
+ go) lang_source="go.mod" ;;
100
+ php) lang_source="composer.json" ;;
101
+ typescript) lang_source="package.json" ;;
102
+ python) lang_source="pyproject.toml" ;;
103
+ esac
104
+
105
+ printf " %-16s ${GREEN}%s${NC} ${GRAY}(from %s)${NC}\n" "Language:" "$lang" "$lang_source"
106
+ [[ "$version" != "unknown" ]] && printf " %-16s ${GREEN}%s${NC}\n" "Version:" "$version"
107
+ [[ "$ptype" != "unknown" ]] && printf " %-16s %s\n" "Project type:" "$ptype"
108
+ [[ "$framework" != "none" ]] && printf " %-16s %s\n" "Framework:" "$framework"
109
+ printf " %-16s %s\n" "Build tool:" "$build_tool"
110
+ [[ "$test_fw" != "unknown" ]] && printf " %-16s %s\n" "Test framework:" "$test_fw"
111
+ [[ "$ci" != "none" ]] && printf " %-16s %s\n" "CI/CD:" "$ci"
112
+ [[ "$docker" == "true" ]] && printf " %-16s %s\n" "Docker:" "yes"
113
+
114
+ # Quality Tools
115
+ local tools=$(echo "$project_info" | jq -r '.quality_tools | join(", ")')
116
+ if [[ -n "$tools" && "$tools" != "" ]]; then
117
+ echo ""
118
+ echo -e "${CYAN}▸ Quality Tools Detected${NC}"
119
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
120
+ printf " %s\n" "$tools"
121
+ fi
122
+
123
+ # IDE Configs (from ide_info)
124
+ local detected_ides=$(echo "$ide_info" | jq -r '.detected_ides | join(", ")' 2>/dev/null || echo "")
125
+ if [[ -n "$detected_ides" && "$detected_ides" != "" ]]; then
126
+ echo ""
127
+ echo -e "${CYAN}▸ IDE Configurations${NC}"
128
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
129
+ printf " %s\n" "$detected_ides"
130
+
131
+ # Show editorconfig details if present
132
+ local indent=$(echo "$ide_info" | jq -r '.editorconfig.indent_style // ""' 2>/dev/null || echo "")
133
+ if [[ -n "$indent" ]]; then
134
+ local indent_size=$(echo "$ide_info" | jq -r '.editorconfig.indent_size // ""' 2>/dev/null || echo "")
135
+ printf " ${GRAY}→ indent: %s (%s)${NC}\n" "$indent" "$indent_size"
136
+ fi
137
+ fi
138
+
139
+ # AI Agent Configs (from agent_info)
140
+ local detected_agents=$(echo "$agent_info" | jq -r '.detected_agents | join(", ")' 2>/dev/null || echo "")
141
+ if [[ -n "$detected_agents" && "$detected_agents" != "" ]]; then
142
+ echo ""
143
+ echo -e "${CYAN}▸ AI Agent Configurations${NC}"
144
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
145
+ printf " %s\n" "$detected_agents"
146
+ fi
147
+
148
+ # Documentation Files (from docs_info)
149
+ local has_contributing=$(echo "$docs_info" | jq -r '.contributing.file // ""' 2>/dev/null || echo "")
150
+ local has_security=$(echo "$docs_info" | jq -r '.security.file // ""' 2>/dev/null || echo "")
151
+ local has_changelog=$(echo "$docs_info" | jq -r '.changelog.file // ""' 2>/dev/null || echo "")
152
+ local has_coc=$(echo "$docs_info" | jq -r '.code_of_conduct.exists // false' 2>/dev/null || echo "false")
153
+
154
+ if [[ -n "$has_contributing" || -n "$has_security" || -n "$has_changelog" || "$has_coc" == "true" ]]; then
155
+ echo ""
156
+ echo -e "${CYAN}▸ Documentation Files${NC}"
157
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
158
+ [[ -n "$has_contributing" ]] && printf " ✓ %s\n" "$has_contributing"
159
+ [[ -n "$has_security" ]] && printf " ✓ %s\n" "$has_security"
160
+ [[ -n "$has_changelog" ]] && printf " ✓ %s\n" "$has_changelog"
161
+ [[ "$has_coc" == "true" ]] && printf " ✓ CODE_OF_CONDUCT.md\n"
162
+ fi
163
+
164
+ # Platform Files (from platform_info)
165
+ local platform=$(echo "$platform_info" | jq -r '.platform // "none"' 2>/dev/null || echo "none")
166
+ if [[ "$platform" != "none" ]]; then
167
+ local pr_template=$(echo "$platform_info" | jq -r '.pull_request.template_file // ""' 2>/dev/null || echo "")
168
+ local codeowners=$(echo "$platform_info" | jq -r '.codeowners.file // ""' 2>/dev/null || echo "")
169
+ local dependabot=$(echo "$platform_info" | jq -r '.dependency_updates.dependabot.file // ""' 2>/dev/null || echo "")
170
+
171
+ if [[ -n "$pr_template" || -n "$codeowners" || -n "$dependabot" ]]; then
172
+ echo ""
173
+ echo -e "${CYAN}▸ Platform Files (${platform})${NC}"
174
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
175
+ [[ -n "$pr_template" ]] && printf " ✓ PR template: %s\n" "$pr_template"
176
+ [[ -n "$codeowners" ]] && printf " ✓ CODEOWNERS: %s\n" "$codeowners"
177
+ [[ -n "$dependabot" ]] && printf " ✓ Dependabot: %s\n" "$dependabot"
178
+ fi
179
+ fi
180
+
181
+ # Commands Extracted
182
+ echo ""
183
+ echo -e "${CYAN}▸ Commands Extracted${NC}"
184
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
185
+
186
+ local typecheck=$(echo "$commands_info" | jq -r '.typecheck')
187
+ local lint=$(echo "$commands_info" | jq -r '.lint')
188
+ local format=$(echo "$commands_info" | jq -r '.format')
189
+ local test_cmd=$(echo "$commands_info" | jq -r '.test')
190
+ local build=$(echo "$commands_info" | jq -r '.build')
191
+ local dev=$(echo "$commands_info" | jq -r '.dev')
192
+
193
+ [[ -n "$typecheck" && "$typecheck" != "" ]] && printf " %-12s ${YELLOW}%s${NC}\n" "typecheck:" "$typecheck"
194
+ [[ -n "$lint" && "$lint" != "" ]] && printf " %-12s ${YELLOW}%s${NC}\n" "lint:" "$lint"
195
+ [[ -n "$format" && "$format" != "" ]] && printf " %-12s ${YELLOW}%s${NC}\n" "format:" "$format"
196
+ [[ -n "$test_cmd" && "$test_cmd" != "" ]] && printf " %-12s ${YELLOW}%s${NC}\n" "test:" "$test_cmd"
197
+ [[ -n "$build" && "$build" != "" ]] && printf " %-12s ${YELLOW}%s${NC}\n" "build:" "$build"
198
+ [[ -n "$dev" && "$dev" != "" ]] && printf " %-12s ${YELLOW}%s${NC}\n" "dev:" "$dev"
199
+
200
+ # Scopes Detected
201
+ local scope_count=$(echo "$scopes_info" | jq '.scopes | length')
202
+ if [[ "$scope_count" -gt 0 ]]; then
203
+ echo ""
204
+ echo -e "${CYAN}▸ Scopes Detected ($scope_count)${NC}"
205
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
206
+
207
+ echo "$scopes_info" | jq -r '.scopes[] | " \(.path)/ (\(.files) files) → \(.type)"'
208
+ fi
209
+
210
+ # Files to Generate
211
+ echo ""
212
+ echo -e "${CYAN}▸ Files to Generate${NC}"
213
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
214
+ echo " AGENTS.md (root)"
215
+ if [[ "$scope_count" -gt 0 ]]; then
216
+ echo "$scopes_info" | jq -r '.scopes[] | " \(.path)/AGENTS.md"'
217
+ fi
218
+
219
+ # Warnings
220
+ if [[ ${#SUMMARY_WARNINGS[@]} -gt 0 ]]; then
221
+ echo ""
222
+ echo -e "${YELLOW}▸ Warnings${NC}"
223
+ echo -e " ${GRAY}────────────────────────────────────────${NC}"
224
+ for warning in "${SUMMARY_WARNINGS[@]}"; do
225
+ echo -e " ${YELLOW}⚠${NC} $warning"
226
+ done
227
+ fi
228
+
229
+ echo ""
230
+ echo -e "${BOLD}═══════════════════════════════════════════════════════════════${NC}"
231
+ echo ""
232
+ }
233
+
234
+ # Print a compact summary (for non-verbose mode)
235
+ print_compact_summary() {
236
+ local project_info="$1"
237
+ local scopes_info="$2"
238
+
239
+ local lang=$(echo "$project_info" | jq -r '.language')
240
+ local ptype=$(echo "$project_info" | jq -r '.type')
241
+ local scope_count=$(echo "$scopes_info" | jq '.scopes | length')
242
+
243
+ echo "Detected: $lang ($ptype), $((scope_count + 1)) AGENTS.md file(s) to generate"
244
+ }