@synapta/skills 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/index.js +11 -4
  2. package/package.json +3 -4
  3. package/skills/ATTRIBUTION.md +80 -0
  4. package/skills/accessibility-audit/SKILL.md +325 -0
  5. package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
  6. package/skills/apns-notifier/SKILL.md +86 -0
  7. package/skills/approval-policy-enforcer/SKILL.md +66 -0
  8. package/skills/apps-sdk-builder/LICENSE.txt +201 -0
  9. package/skills/apps-sdk-builder/SKILL.md +328 -0
  10. package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
  11. package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
  12. package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
  13. package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
  14. package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
  15. package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
  16. package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
  17. package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
  18. package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
  19. package/skills/architecture-selector/SKILL.md +64 -0
  20. package/skills/backlog-planner/SKILL.md +68 -0
  21. package/skills/carplay-entitlement-checker/SKILL.md +82 -0
  22. package/skills/concept-discovery/SKILL.md +517 -0
  23. package/skills/concept-discovery/assets/sample-analysis.json +81 -0
  24. package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
  25. package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
  26. package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
  27. package/skills/concept-discovery/references/framework-patterns.md +228 -0
  28. package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
  29. package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
  30. package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
  31. package/skills/dast-zap/SKILL.md +453 -0
  32. package/skills/dast-zap/assets/.gitkeep +9 -0
  33. package/skills/dast-zap/assets/github_action.yml +207 -0
  34. package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
  35. package/skills/dast-zap/assets/zap_automation.yaml +196 -0
  36. package/skills/dast-zap/assets/zap_context.xml +192 -0
  37. package/skills/dast-zap/references/EXAMPLE.md +40 -0
  38. package/skills/dast-zap/references/api_testing_guide.md +475 -0
  39. package/skills/dast-zap/references/authentication_guide.md +431 -0
  40. package/skills/dast-zap/references/false_positive_handling.md +427 -0
  41. package/skills/dast-zap/references/owasp_mapping.md +255 -0
  42. package/skills/dep-sbom-scan/SKILL.md +466 -0
  43. package/skills/deploy-cloudflare/SKILL.md +930 -0
  44. package/skills/deploy-docker/SKILL.md +55 -0
  45. package/skills/deploy-fly/SKILL.md +228 -0
  46. package/skills/deploy-k8s/SKILL.md +108 -0
  47. package/skills/deploy-k8s/assets/logo.png +0 -0
  48. package/skills/deploy-k8s/docs/README.md +29 -0
  49. package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
  50. package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
  51. package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
  52. package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
  53. package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
  54. package/skills/deploy-k8s/docs/book.json +16 -0
  55. package/skills/deploy-k8s/docs/community/changelog.md +34 -0
  56. package/skills/deploy-k8s/docs/community/contributing.md +67 -0
  57. package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
  58. package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
  59. package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
  60. package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
  61. package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
  62. package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
  63. package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
  64. package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
  65. package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
  66. package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
  67. package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
  68. package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
  69. package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
  70. package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
  71. package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
  72. package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
  73. package/skills/deploy-k8s/docs/guides/observability.md +67 -0
  74. package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
  75. package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
  76. package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
  77. package/skills/deploy-k8s/docs/package-lock.json +2892 -0
  78. package/skills/deploy-k8s/docs/package.json +13 -0
  79. package/skills/deploy-k8s/references/api-drift.md +298 -0
  80. package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
  81. package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
  82. package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
  83. package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
  84. package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
  85. package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
  86. package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
  87. package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
  88. package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
  89. package/skills/deploy-k8s/references/examples-bad.md +282 -0
  90. package/skills/deploy-k8s/references/examples-good.md +440 -0
  91. package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
  92. package/skills/deploy-k8s/references/helm-patterns.md +203 -0
  93. package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
  94. package/skills/deploy-k8s/references/job-patterns.md +120 -0
  95. package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
  96. package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
  97. package/skills/deploy-k8s/references/network-exposure.md +481 -0
  98. package/skills/deploy-k8s/references/observability.md +302 -0
  99. package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
  100. package/skills/deploy-k8s/references/resource-starvation.md +374 -0
  101. package/skills/deploy-k8s/references/security-hardening.md +209 -0
  102. package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
  103. package/skills/deploy-k8s/references/storage-and-state.md +330 -0
  104. package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
  105. package/skills/deploy-railway/SKILL.md +235 -0
  106. package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
  107. package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
  108. package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
  109. package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
  110. package/skills/deploy-railway/references/analyze-db.md +344 -0
  111. package/skills/deploy-railway/references/configure.md +309 -0
  112. package/skills/deploy-railway/references/deploy.md +195 -0
  113. package/skills/deploy-railway/references/operate.md +214 -0
  114. package/skills/deploy-railway/references/request.md +248 -0
  115. package/skills/deploy-railway/references/setup.md +312 -0
  116. package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
  117. package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
  118. package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
  119. package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
  120. package/skills/deploy-railway/scripts/dal.py +671 -0
  121. package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
  122. package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
  123. package/skills/deploy-railway/scripts/railway-api.sh +52 -0
  124. package/skills/deploy-ssh/SKILL.md +91 -0
  125. package/skills/deploy-vercel/SKILL.md +304 -0
  126. package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
  127. package/skills/deploy-vercel/resources/deploy.sh +301 -0
  128. package/skills/docs-runbooks/SKILL.md +399 -0
  129. package/skills/drive-status-renderer/SKILL.md +62 -0
  130. package/skills/iac-scan/SKILL.md +680 -0
  131. package/skills/iac-scan/assets/.gitkeep +9 -0
  132. package/skills/iac-scan/assets/checkov_config.yaml +94 -0
  133. package/skills/iac-scan/assets/github_actions.yml +199 -0
  134. package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
  135. package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
  136. package/skills/iac-scan/references/EXAMPLE.md +40 -0
  137. package/skills/iac-scan/references/compliance_mapping.md +237 -0
  138. package/skills/iac-scan/references/custom_policies.md +460 -0
  139. package/skills/iac-scan/references/suppression_guide.md +431 -0
  140. package/skills/incident-briefing/SKILL.md +66 -0
  141. package/skills/incident-triage/SKILL.md +481 -0
  142. package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
  143. package/skills/mcp-builder/SKILL.md +244 -0
  144. package/skills/mcp-builder/reference/evaluation.md +602 -0
  145. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  146. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  147. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  148. package/skills/mcp-builder/scripts/connections.py +151 -0
  149. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  150. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  151. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  152. package/skills/mobile-pairing/SKILL.md +52 -0
  153. package/skills/ops-sre/SKILL.md +297 -0
  154. package/skills/playwright-qa/LICENSE.txt +201 -0
  155. package/skills/playwright-qa/NOTICE.txt +14 -0
  156. package/skills/playwright-qa/SKILL.md +156 -0
  157. package/skills/playwright-qa/agents/openai.yaml +6 -0
  158. package/skills/playwright-qa/assets/playwright-small.svg +3 -0
  159. package/skills/playwright-qa/assets/playwright.png +0 -0
  160. package/skills/playwright-qa/references/cli.md +116 -0
  161. package/skills/playwright-qa/references/workflows.md +95 -0
  162. package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
  163. package/skills/release-publish/SKILL.md +85 -0
  164. package/skills/repo-bootstrap/SKILL.md +92 -0
  165. package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
  166. package/skills/repo-bootstrap/assets/root-thin.md +141 -0
  167. package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
  168. package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
  169. package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
  170. package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
  171. package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
  172. package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
  173. package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
  174. package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
  175. package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
  176. package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
  177. package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
  178. package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
  179. package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
  180. package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
  181. package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
  182. package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
  183. package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
  184. package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
  185. package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
  186. package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
  187. package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
  188. package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
  189. package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
  190. package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
  191. package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
  192. package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
  193. package/skills/repo-bootstrap/checkpoints.yaml +279 -0
  194. package/skills/repo-bootstrap/evals/evals.json +385 -0
  195. package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
  196. package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
  197. package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
  198. package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
  199. package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
  200. package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
  201. package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
  202. package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
  203. package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
  204. package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
  205. package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
  206. package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
  207. package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
  208. package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
  209. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
  210. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
  211. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
  212. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
  213. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
  214. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
  215. package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
  216. package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
  217. package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
  218. package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
  219. package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
  220. package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
  221. package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
  222. package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
  223. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
  224. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
  225. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
  226. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
  227. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
  228. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
  229. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
  230. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
  231. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
  232. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
  233. package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
  234. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
  235. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
  236. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
  237. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
  238. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
  239. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
  240. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
  241. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
  242. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
  243. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
  244. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
  245. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
  246. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
  247. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
  248. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
  249. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
  250. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
  251. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
  252. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
  253. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
  254. package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
  255. package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
  256. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
  257. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
  258. package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
  259. package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
  260. package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
  261. package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
  262. package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
  263. package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
  264. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
  265. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
  266. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
  267. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
  268. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
  269. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
  270. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
  271. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
  272. package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
  273. package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
  274. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
  275. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
  276. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
  277. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
  278. package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
  279. package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
  280. package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
  281. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
  282. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
  283. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
  284. package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
  285. package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
  286. package/skills/repo-bootstrap/references/output-structure.md +124 -0
  287. package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
  288. package/skills/repo-bootstrap/references/verification-guide.md +137 -0
  289. package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
  290. package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
  291. package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
  292. package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
  293. package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
  294. package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
  295. package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
  296. package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
  297. package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
  298. package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
  299. package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
  300. package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
  301. package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
  302. package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
  303. package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
  304. package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
  305. package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
  306. package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
  307. package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
  308. package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
  309. package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
  310. package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
  311. package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
  312. package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
  313. package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
  314. package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
  315. package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
  316. package/skills/schema-api-contracts/SKILL.md +56 -0
  317. package/skills/secret-hygiene/SKILL.md +511 -0
  318. package/skills/secret-hygiene/assets/.gitkeep +9 -0
  319. package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
  320. package/skills/secret-hygiene/assets/config-custom.toml +178 -0
  321. package/skills/secret-hygiene/assets/config-strict.toml +48 -0
  322. package/skills/secret-hygiene/assets/github-action.yml +181 -0
  323. package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
  324. package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
  325. package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
  326. package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
  327. package/skills/secret-hygiene/references/detection_rules.md +276 -0
  328. package/skills/secret-hygiene/references/false_positives.md +598 -0
  329. package/skills/secret-hygiene/references/remediation_guide.md +530 -0
  330. package/skills/stack-selector/SKILL.md +56 -0
  331. package/skills/telegram-control/SKILL.md +110 -0
  332. package/skills/telegram-control/references/architecture.md +184 -0
  333. package/skills/telegram-control/references/convex.md +173 -0
  334. package/skills/telegram-control/references/error_handling.md +212 -0
  335. package/skills/telegram-control/references/initial_setup.md +165 -0
  336. package/skills/telegram-control/references/telegram_api.md +156 -0
  337. package/skills/telegram-control/scripts/cancel_message.ts +53 -0
  338. package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
  339. package/skills/telegram-control/scripts/logger.ts +121 -0
  340. package/skills/telegram-control/scripts/proxy-util.ts +11 -0
  341. package/skills/telegram-control/scripts/schedule_message.ts +216 -0
  342. package/skills/telegram-control/scripts/send_message.ts +115 -0
  343. package/skills/telegram-control/scripts/setup.ts +185 -0
  344. package/skills/telegram-control/scripts/types.ts +75 -0
  345. package/skills/telegram-control/scripts/view_history.ts +74 -0
  346. package/skills/test-strategy/SKILL.md +352 -0
  347. package/skills/threat-model/SKILL.md +303 -0
  348. package/skills/threat-model/examples/example-output.md +196 -0
  349. package/skills/threat-model/template.md +96 -0
  350. package/skills/ts-lint/SKILL.md +80 -0
  351. package/skills/ui-flow/SKILL.md +668 -0
  352. package/skills/voice-command-router/SKILL.md +51 -0
  353. package/skills/widget-live-activity-sync/SKILL.md +66 -0
package/dist/index.js CHANGED
@@ -62,9 +62,16 @@ function parseSkillMd(source) {
62
62
  // src/load-bundled.ts
63
63
  import { readdir, readFile, stat } from "fs/promises";
64
64
  import { existsSync } from "fs";
65
- import { join, resolve } from "path";
65
+ import { dirname, join, resolve } from "path";
66
+ import { fileURLToPath } from "url";
67
+ function resolveDefaultSkillsRoot() {
68
+ const here = dirname(fileURLToPath(import.meta.url));
69
+ const inPackage = resolve(here, "..", "skills");
70
+ if (existsSync(inPackage)) return inPackage;
71
+ return resolve(process.cwd(), "skills");
72
+ }
66
73
  async function loadBundledSkills(opts = {}) {
67
- const root = opts.skillsRoot ? resolve(opts.skillsRoot) : resolve(process.cwd(), "skills");
74
+ const root = opts.skillsRoot ? resolve(opts.skillsRoot) : resolveDefaultSkillsRoot();
68
75
  if (!existsSync(root)) return [];
69
76
  const entries = await readdir(root, { withFileTypes: true });
70
77
  const skills = [];
@@ -94,10 +101,10 @@ async function loadBundledSkills(opts = {}) {
94
101
  // src/scanner.ts
95
102
  import { readdir as readdir2, stat as stat2 } from "fs/promises";
96
103
  import { existsSync as existsSync2 } from "fs";
97
- import { dirname, join as join2, extname } from "path";
104
+ import { dirname as dirname2, join as join2, extname } from "path";
98
105
  var EXECUTABLE_EXTS = /* @__PURE__ */ new Set([".js", ".mjs", ".cjs", ".ts", ".mts", ".cts", ".sh", ".bash", ".py", ".rb"]);
99
106
  async function scanSkill(loaded, _opts = {}) {
100
- const dir = dirname(loaded.path);
107
+ const dir = dirname2(loaded.path);
101
108
  const execs = await findExecutables(dir);
102
109
  return {
103
110
  skill: loaded.manifest.name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synapta/skills",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Agent Skills loader + bundled default skill pack",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -12,8 +12,7 @@
12
12
  },
13
13
  "files": [
14
14
  "dist",
15
- "skills/**/SKILL.md",
16
- "skills/**/assets/**",
15
+ "skills",
17
16
  "README.md",
18
17
  "LICENSE"
19
18
  ],
@@ -27,7 +26,7 @@
27
26
  "dependencies": {
28
27
  "yaml": "^2.5.0",
29
28
  "zod": "^3.23.0",
30
- "@synapta/schemas": "0.1.0"
29
+ "@synapta/schemas": "0.1.1"
31
30
  },
32
31
  "devDependencies": {
33
32
  "tsup": "^8.3.0",
@@ -0,0 +1,80 @@
1
+ # Synapta Skill Pack — Attribution
2
+
3
+ Synapta's default skill pack is composed of community-published Agent Skills, adapted "light-touch" (rename, retrigger, add Synapta source frontmatter; body kept verbatim) plus skills we authored from scratch where no upstream existed.
4
+
5
+ All adopted skills retain their original license. License files and the source `commit:` SHA are recorded in each SKILL.md's `source:` frontmatter block. The clones used during adaptation live in `.research/` (gitignored).
6
+
7
+ If you author a derivative work from Synapta's skill pack, include the upstream attribution chain.
8
+
9
+ ## Adopted skills (24)
10
+
11
+ | Synapta skill | Upstream repo | Path | License | Commit |
12
+ |---|---|---|---|---|
13
+ | `mcp-builder` | [anthropics/skills](https://github.com/anthropics/skills) | `skills/mcp-builder` | see `LICENSE.txt` in source | `f458cee31a75` |
14
+ | `apps-sdk-builder` | [openai/skills](https://github.com/openai/skills) | `skills/.curated/chatgpt-apps` | see `LICENSE.txt` in source | `c25113bf4c64` |
15
+ | `playwright-qa` | [openai/skills](https://github.com/openai/skills) | `skills/.curated/playwright` | see `LICENSE.txt` + `NOTICE.txt` in source | `c25113bf4c64` |
16
+ | `deploy-vercel` | [vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills) | `skills/deploy-to-vercel` | see source repo | `b9c8ee0643d8` |
17
+ | `deploy-railway` | [railwayapp/railway-skills](https://github.com/railwayapp/railway-skills) | `plugins/railway/skills/use-railway` | MIT (Railway Corporation) | `380a2abbb0f9` |
18
+ | `deploy-cloudflare` | [cloudflare/skills](https://github.com/cloudflare/skills) | `skills/wrangler` | Apache-2.0 | `60147cbb7736` |
19
+ | `deploy-k8s` | [LukasNiessen/kubernetes-skill](https://github.com/LukasNiessen/kubernetes-skill) | `/` | see source repo `LICENSE` | `b7d32502e316` |
20
+ | `deploy-docker` | [github/awesome-copilot](https://github.com/github/awesome-copilot) | `skills/multi-stage-dockerfile` | MIT (GitHub, Inc.) | `4e4b34c48d3f` |
21
+ | `deploy-fly` | [yurikoval/dotfiles](https://github.com/yurikoval/dotfiles) | `claude/.claude/skills/flyctl` | see source repo | `933ff7260f40` |
22
+ | `dep-sbom-scan` | [AgentSecOps/SecOpsAgentKit](https://github.com/AgentSecOps/SecOpsAgentKit) | `skills/devsecops/sca-trivy` | see source repo | `6e25a4bc5743` |
23
+ | `iac-scan` | [AgentSecOps/SecOpsAgentKit](https://github.com/AgentSecOps/SecOpsAgentKit) | `skills/devsecops/iac-checkov` | see source repo | `6e25a4bc5743` |
24
+ | `secret-hygiene` | [AgentSecOps/SecOpsAgentKit](https://github.com/AgentSecOps/SecOpsAgentKit) | `skills/devsecops/secrets-gitleaks` | see source repo | `6e25a4bc5743` |
25
+ | `dast-zap` | [AgentSecOps/SecOpsAgentKit](https://github.com/AgentSecOps/SecOpsAgentKit) | `skills/appsec/dast-zap` | see source repo | `6e25a4bc5743` |
26
+ | `threat-model` | [sethdford/claude-skills](https://github.com/sethdford/claude-skills) | `security/threat-modeling/skills/stride-analysis` | MIT (Seth Ford) | `00bd9265f5a3` |
27
+ | `incident-triage` | [wshobson/agents](https://github.com/wshobson/agents) | `plugins/incident-response/skills/incident-runbook-templates` | MIT (Seth Hobson) | `112197c6bfd0` |
28
+ | `docs-runbooks` | [wshobson/agents](https://github.com/wshobson/agents) | `plugins/incident-response/skills/postmortem-writing` | MIT (Seth Hobson) | `112197c6bfd0` |
29
+ | `ops-sre` | [VoltAgent/awesome-claude-code-subagents](https://github.com/VoltAgent/awesome-claude-code-subagents) | `categories/03-infrastructure/sre-engineer.md` | MIT (VoltAgent) | `6f804f0cfab2` |
30
+ | `repo-bootstrap` | [netresearch/agent-rules-skill](https://github.com/netresearch/agent-rules-skill) | `skills/agent-rules` | MIT AND CC-BY-SA-4.0 (Netresearch DTT GmbH) | `9d1c57d1a131` |
31
+ | `backlog-planner` | [github/awesome-copilot](https://github.com/github/awesome-copilot) | `plugins/project-planning/skills/breakdown-epic-pm` | MIT (GitHub, Inc.) | `4e4b34c48d3f` |
32
+ | `ui-flow` | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) | `.claude/skills/ui-ux-pro-max` | MIT (Next Level Builder) | `b7e3af80f6e3` |
33
+ | `accessibility-audit` | [CrazyDubya/claude-skills](https://github.com/CrazyDubya/claude-skills) | `accessibility-auditor` | see source repo | `2798bb084fdf` |
34
+ | `telegram-control` | [AlexSKuznetsov/claude-skill-telegram](https://github.com/AlexSKuznetsov/claude-skill-telegram) | `/` | see source repo | `06a7b02172c4` |
35
+ | `concept-discovery` | [alirezarezvani/claude-skills](https://github.com/alirezarezvani/claude-skills) | `product-team/code-to-prd/skills/code-to-prd` | MIT (Alireza Rezvani) | `0796e1d70a9d` |
36
+ | `test-strategy` | [nousresearch/hermes-agent](https://github.com/nousresearch/hermes-agent) | `skills/software-development/test-driven-development` | MIT | hermes-agent main |
37
+
38
+ ## Authored by Synapta (write-fresh)
39
+
40
+ These skills had no quality community upstream at adoption time. Synapta authors them with citations to the underlying public docs / patterns rather than community SKILL.md files.
41
+
42
+ | Synapta skill | Reason | Citation patterns |
43
+ |---|---|---|
44
+ | `architecture-selector` | No upstream selector found (existing skills were framework cheerleaders, not multi-axis selectors) | Twelve-Factor, AWS Well-Architected, Monolith First (Martin Fowler) |
45
+ | `stack-selector` | Same — no multi-axis stack picker | — |
46
+ | `schema-api-contracts` | Existing repos are codegen tools, not contract-first skills | Zod, Prisma, OpenAPI, tRPC docs |
47
+ | `ts-lint` | No SKILL.md found | typescript-eslint, Prettier, tsc strict docs |
48
+ | `release-publish` | skills.rest entry was 403; no good GH source | npm OIDC / Trusted Publishing docs, Changesets docs |
49
+ | `deploy-ssh` | Surprising community gap | DeployHQ rsync patterns, Lambros Petrou zero-downtime patterns |
50
+ | `drive-status-renderer` | Synapta-specific (iOS/CarPlay glanceable cards backed by gateway state) | WidgetKit, ActivityKit |
51
+ | `voice-command-router` | Synapta-specific (Siri/App Intents → gateway approval) | App Intents framework |
52
+ | `approval-policy-enforcer` | Synapta-specific (policies like "never deploy from car") | — |
53
+ | `incident-briefing` | Synapta-specific (voice-only hands-free summary) | TTS providers, SSML |
54
+ | `mobile-pairing` | Synapta-specific (QR/device-code pairing to local gateway) | openclaw pairing model (clean-room) |
55
+ | `apns-notifier` | Synapta-specific (gateway APNs delivery) | Apple Push Notification service docs |
56
+ | `widget-live-activity-sync` | Synapta-specific (Widget + Live Activity ↔ gateway) | ActivityKit, push tokens |
57
+ | `carplay-entitlement-checker` | Synapta-specific (verify entitlement, Track A fallback) | Apple CarPlay programming guide |
58
+
59
+ ## Sister skills available for future expansion
60
+
61
+ These upstream sources contain additional skills adjacent to what Synapta adopted. Consider pulling them into v0.1+ as sub-packs.
62
+
63
+ - **threat-modeling pack** ([sethdford/claude-skills](https://github.com/sethdford/claude-skills)/security/threat-modeling/skills/): data-flow-diagram-security, risk-scoring, asset-inventory, attack-tree-modeling, threat-identification, abuse-case-design, threat-library, trust-boundary-analysis
64
+ - **incident-response pack** ([wshobson/agents](https://github.com/wshobson/agents)/plugins/incident-response/skills/): on-call-handoff-patterns, plus all of `sethdford/claude-skills/security/incident-response/skills/`
65
+ - **project-planning pack** ([github/awesome-copilot](https://github.com/github/awesome-copilot)/plugins/project-planning/skills/): breakdown-feature-prd, breakdown-feature-implementation, breakdown-epic-arch, create-implementation-plan, update-implementation-plan, create-technical-spike
66
+ - **secops devsecops pack** ([AgentSecOps/SecOpsAgentKit](https://github.com/AgentSecOps/SecOpsAgentKit)): container-grype, container-hadolint, sast-bandit, sast-semgrep, api-mitmproxy, api-spectral, sca-blackduck, sast-horusec, sbom-syft, reviewdog, policy-opa, vuln-defectdojo
67
+ - **cloudflare pack** ([cloudflare/skills](https://github.com/cloudflare/skills)): durable-objects, agents-sdk, cloudflare-email-service, workers-best-practices, sandbox-sdk, web-perf
68
+ - **vercel pack** ([vercel-labs/agent-skills](https://github.com/vercel-labs/agent-skills)): web-design-guidelines, vercel-cli-with-tokens, composition-patterns, react-best-practices, react-view-transitions, react-native-skills
69
+ - **hermes software-development** ([nousresearch/hermes-agent](https://github.com/nousresearch/hermes-agent)/skills/software-development/): plan, writing-plans, requesting-code-review, subagent-driven-development, systematic-debugging, spike, hermes-agent-skill-authoring
70
+ - **hermes mcp** (`skills/mcp/native-mcp/` + `optional-skills/mcp/fastmcp/`)
71
+ - **levnikolaevich code auditors** ([levnikolaevich/claude-code-skills](https://github.com/levnikolaevich/claude-code-skills)/plugins/codebase-audit-suite/): 30+ auditor skills (pattern-fitness, layer-ownership, transaction-correctness, test-business-logic, runtime-performance, dependency-topology, etc.)
72
+
73
+ ## License compliance notes
74
+
75
+ - All upstream licenses observed at adoption time are MIT, Apache-2.0, or repository-defined permissive licenses compatible with Synapta's Apache-2.0.
76
+ - `repo-bootstrap` upstream is dual-licensed (MIT AND CC-BY-SA-4.0); the CC-BY-SA-4.0 portion applies to documentation/examples and requires share-alike attribution when redistributed.
77
+ - `accessibility-audit` and `concept-discovery` sources lacked top-level LICENSE files at time of clone; treat as "all rights reserved" until upstream license is confirmed. Open an issue if you intend to redistribute these.
78
+ - `deploy-fly` source repo (`yurikoval/dotfiles`) lacked a top-level LICENSE file; treat with caution.
79
+
80
+ If you spot a license-compliance issue, please file an issue or email the contact in `SECURITY.md`.
@@ -0,0 +1,325 @@
1
+ ---
2
+ name: accessibility-audit
3
+ synapta_original_name: accessibility-auditor
4
+ triggers: [synapta a11y, WCAG, VoiceOver, ARIA, keyboard nav, accessibility]
5
+ network: off
6
+ source:
7
+ origin: https://github.com/CrazyDubya/claude-skills
8
+ path: accessibility-auditor
9
+ commit: 2798bb084fdf
10
+ license: see source repo
11
+ adapted: light-touch
12
+ description: Reviews UI components for WCAG compliance, ARIA attributes, keyboard navigation, and screen reader support. Use when building frontend components or user requests accessibility improvements.
13
+ allowed-tools: Read, Grep, Glob
14
+ ---
15
+
16
+ # Accessibility Auditor
17
+
18
+ Audits web applications for accessibility compliance (WCAG 2.1 Level AA) and suggests improvements.
19
+
20
+ ## When to Use
21
+ - Building or reviewing UI components
22
+ - User requests accessibility improvements
23
+ - Preparing for accessibility audit
24
+ - User mentions "accessibility", "a11y", "WCAG", "screen reader", or "keyboard navigation"
25
+
26
+ ## Instructions
27
+
28
+ ### 1. Semantic HTML Check
29
+
30
+ **Use proper HTML elements:**
31
+ ```html
32
+ <!-- Bad -->
33
+ <div onclick="submit()">Submit</div>
34
+
35
+ <!-- Good -->
36
+ <button onclick="submit()">Submit</button>
37
+ ```
38
+
39
+ **Semantic structure:**
40
+ - `<header>`, `<nav>`, `<main>`, `<footer>`
41
+ - `<article>`, `<section>`, `<aside>`
42
+ - `<h1>` through `<h6>` in proper hierarchy
43
+ - `<button>` for actions, `<a>` for navigation
44
+
45
+ ### 2. ARIA Attributes
46
+
47
+ **When to use ARIA:**
48
+ - Custom widgets (tabs, accordions, modals)
49
+ - Dynamic content updates
50
+ - Complex interactions
51
+ - When semantic HTML isn't sufficient
52
+
53
+ **Common ARIA attributes:**
54
+ ```html
55
+ <!-- Landmark roles -->
56
+ <nav role="navigation" aria-label="Main">
57
+
58
+ <!-- Widget roles -->
59
+ <div role="button" tabindex="0" aria-pressed="false">
60
+
61
+ <!-- Live regions -->
62
+ <div role="alert" aria-live="assertive">Error occurred</div>
63
+
64
+ <!-- Labels and descriptions -->
65
+ <button aria-label="Close dialog">×</button>
66
+ <input aria-describedby="password-help" />
67
+ ```
68
+
69
+ **First rule of ARIA:** Don't use ARIA if semantic HTML works
70
+
71
+ ### 3. Keyboard Navigation
72
+
73
+ **All interactive elements must be keyboard accessible:**
74
+ ```javascript
75
+ // Add keyboard support to custom elements
76
+ <div
77
+ role="button"
78
+ tabindex="0"
79
+ onClick={handleClick}
80
+ onKeyDown={(e) => {
81
+ if (e.key === 'Enter' || e.key === ' ') {
82
+ handleClick();
83
+ }
84
+ }}
85
+ >
86
+ Click me
87
+ </div>
88
+ ```
89
+
90
+ **Tab order:**
91
+ - Use `tabindex="0"` for custom interactive elements
92
+ - Avoid `tabindex > 0` (creates confusing tab order)
93
+ - Use `tabindex="-1"` for programmatic focus only
94
+
95
+ **Focus management:**
96
+ - Visible focus indicators
97
+ - Trap focus in modals
98
+ - Return focus when closing dialogs
99
+ - Skip links for main content
100
+
101
+ ### 4. Alt Text and Images
102
+
103
+ **Informative images:**
104
+ ```html
105
+ <img src="chart.png" alt="Sales increased 25% in Q3" />
106
+ ```
107
+
108
+ **Decorative images:**
109
+ ```html
110
+ <img src="decoration.png" alt="" />
111
+ <!-- or -->
112
+ <img src="decoration.png" role="presentation" />
113
+ ```
114
+
115
+ **Complex images:**
116
+ ```html
117
+ <figure>
118
+ <img src="complex-chart.png" alt="Quarterly sales chart" />
119
+ <figcaption>
120
+ Detailed description of the chart data...
121
+ </figcaption>
122
+ </figure>
123
+ ```
124
+
125
+ ### 5. Color and Contrast
126
+
127
+ **Contrast ratios (WCAG AA):**
128
+ - Normal text: 4.5:1 minimum
129
+ - Large text (18pt+): 3:1 minimum
130
+ - UI components: 3:1 minimum
131
+
132
+ **Don't rely on color alone:**
133
+ ```html
134
+ <!-- Bad: Color only -->
135
+ <span style="color: red;">Error</span>
136
+
137
+ <!-- Good: Icon + color -->
138
+ <span style="color: red;">
139
+ <svg aria-hidden="true"><!-- error icon --></svg>
140
+ <span class="sr-only">Error: </span>
141
+ Invalid input
142
+ </span>
143
+ ```
144
+
145
+ ### 6. Forms and Labels
146
+
147
+ **Every input needs a label:**
148
+ ```html
149
+ <!-- Explicit label -->
150
+ <label for="email">Email</label>
151
+ <input id="email" type="email" />
152
+
153
+ <!-- Implicit label -->
154
+ <label>
155
+ Email
156
+ <input type="email" />
157
+ </label>
158
+
159
+ <!-- aria-label for icon buttons -->
160
+ <button aria-label="Search">
161
+ <svg><!-- search icon --></svg>
162
+ </button>
163
+ ```
164
+
165
+ **Error messages:**
166
+ ```html
167
+ <input
168
+ id="password"
169
+ aria-invalid="true"
170
+ aria-describedby="password-error"
171
+ />
172
+ <div id="password-error" role="alert">
173
+ Password must be at least 8 characters
174
+ </div>
175
+ ```
176
+
177
+ ### 7. Headings and Document Structure
178
+
179
+ **Proper heading hierarchy:**
180
+ ```html
181
+ <h1>Page Title</h1>
182
+ <h2>Section 1</h2>
183
+ <h3>Subsection 1.1</h3>
184
+ <h3>Subsection 1.2</h3>
185
+ <h2>Section 2</h2>
186
+ ```
187
+
188
+ **Don't skip levels:** h1 → h2 → h3 (not h1 → h3)
189
+
190
+ ### 8. Dynamic Content
191
+
192
+ **Announce updates to screen readers:**
193
+ ```html
194
+ <!-- Polite: wait for user to pause -->
195
+ <div role="status" aria-live="polite">
196
+ 5 new messages
197
+ </div>
198
+
199
+ <!-- Assertive: interrupt immediately -->
200
+ <div role="alert" aria-live="assertive">
201
+ Your session will expire in 1 minute
202
+ </div>
203
+ ```
204
+
205
+ **Loading states:**
206
+ ```html
207
+ <button aria-busy="true" aria-label="Loading...">
208
+ <span aria-hidden="true">Loading</span>
209
+ </button>
210
+ ```
211
+
212
+ ### 9. Screen Reader Testing
213
+
214
+ **Screen reader only text:**
215
+ ```css
216
+ .sr-only {
217
+ position: absolute;
218
+ width: 1px;
219
+ height: 1px;
220
+ padding: 0;
221
+ margin: -1px;
222
+ overflow: hidden;
223
+ clip: rect(0, 0, 0, 0);
224
+ white-space: nowrap;
225
+ border-width: 0;
226
+ }
227
+ ```
228
+
229
+ **Hide decorative elements:**
230
+ ```html
231
+ <svg aria-hidden="true"><!-- icon --></svg>
232
+ ```
233
+
234
+ ### 10. Common Issues to Check
235
+
236
+ **Missing:**
237
+ - [ ] Alt text on images
238
+ - [ ] Labels on form inputs
239
+ - [ ] Proper heading hierarchy
240
+ - [ ] Keyboard focus indicators
241
+ - [ ] ARIA labels on icon buttons
242
+
243
+ **Improper:**
244
+ - [ ] Low contrast text
245
+ - [ ] Non-semantic markup (divs as buttons)
246
+ - [ ] Missing focus management in modals
247
+ - [ ] Keyboard traps
248
+ - [ ] Auto-playing media
249
+
250
+ **Testing:**
251
+ - [ ] Keyboard only navigation
252
+ - [ ] Screen reader (NVDA, JAWS, VoiceOver)
253
+ - [ ] Color blindness simulation
254
+ - [ ] Zoom to 200%
255
+ - [ ] Automated tools (axe, Lighthouse)
256
+
257
+ ### 11. Automated Testing
258
+
259
+ **Tools:**
260
+ ```bash
261
+ # Lighthouse
262
+ npx lighthouse https://example.com --only-categories=accessibility
263
+
264
+ # axe-core
265
+ npm install --save-dev @axe-core/cli
266
+ npx axe https://example.com
267
+
268
+ # pa11y
269
+ npm install --save-dev pa11y
270
+ npx pa11y https://example.com
271
+ ```
272
+
273
+ **In tests:**
274
+ ```javascript
275
+ import { axe } from 'jest-axe';
276
+
277
+ test('should have no accessibility violations', async () => {
278
+ const { container } = render(<MyComponent />);
279
+ const results = await axe(container);
280
+ expect(results).toHaveNoViolations();
281
+ });
282
+ ```
283
+
284
+ ### 12. WCAG 2.1 Level AA Checklist
285
+
286
+ **Perceivable:**
287
+ - [ ] Text alternatives for non-text content
288
+ - [ ] Captions for audio/video
289
+ - [ ] Content adaptable (semantic markup)
290
+ - [ ] Sufficient color contrast
291
+
292
+ **Operable:**
293
+ - [ ] Keyboard accessible
294
+ - [ ] No keyboard traps
295
+ - [ ] Adequate time limits (adjustable)
296
+ - [ ] No seizure-inducing flashing
297
+ - [ ] Skip navigation links
298
+ - [ ] Descriptive page titles
299
+ - [ ] Focus order makes sense
300
+ - [ ] Link purpose clear from context
301
+
302
+ **Understandable:**
303
+ - [ ] Language of page specified (`<html lang="en">`)
304
+ - [ ] Predictable navigation
305
+ - [ ] Input assistance (labels, instructions, error messages)
306
+
307
+ **Robust:**
308
+ - [ ] Valid HTML
309
+ - [ ] Name, role, value for custom widgets
310
+ - [ ] Compatible with assistive technologies
311
+
312
+ ## Best Practices
313
+
314
+ - Build accessibility in from start
315
+ - Test with real assistive technologies
316
+ - Use semantic HTML first, ARIA second
317
+ - Maintain logical document structure
318
+ - Provide multiple ways to access content
319
+ - Test keyboard navigation thoroughly
320
+ - Don't disable zoom
321
+ - Use landmarks and headings
322
+
323
+ ## Supporting Files
324
+ - `reference/wcag-checklist.md`: Full WCAG 2.1 AA checklist
325
+ - `reference/aria-patterns.md`: Common ARIA widget patterns
@@ -0,0 +1,103 @@
1
+ # WCAG 2.1 Level AA Compliance Checklist
2
+
3
+ ## Principle 1: Perceivable
4
+
5
+ ### 1.1 Text Alternatives
6
+ - [ ] 1.1.1 Non-text Content (A): All images have alt text
7
+
8
+ ### 1.2 Time-based Media
9
+ - [ ] 1.2.1 Audio-only and Video-only (A): Alternatives provided
10
+ - [ ] 1.2.2 Captions (A): Captions for videos
11
+ - [ ] 1.2.3 Audio Description or Media Alternative (A)
12
+ - [ ] 1.2.4 Captions (Live) (AA): Live captions
13
+ - [ ] 1.2.5 Audio Description (AA): Pre-recorded video
14
+
15
+ ### 1.3 Adaptable
16
+ - [ ] 1.3.1 Info and Relationships (A): Semantic markup
17
+ - [ ] 1.3.2 Meaningful Sequence (A): Logical reading order
18
+ - [ ] 1.3.3 Sensory Characteristics (A): Not color/shape only
19
+ - [ ] 1.3.4 Orientation (AA): No orientation lock
20
+ - [ ] 1.3.5 Identify Input Purpose (AA): Autocomplete attributes
21
+
22
+ ### 1.4 Distinguishable
23
+ - [ ] 1.4.1 Use of Color (A): Not sole indicator
24
+ - [ ] 1.4.2 Audio Control (A): Pause/stop audio
25
+ - [ ] 1.4.3 Contrast (Minimum) (AA): 4.5:1 ratio
26
+ - [ ] 1.4.4 Resize text (AA): 200% zoom without loss
27
+ - [ ] 1.4.5 Images of Text (AA): Use real text
28
+ - [ ] 1.4.10 Reflow (AA): No horizontal scrolling at 320px
29
+ - [ ] 1.4.11 Non-text Contrast (AA): UI components 3:1
30
+ - [ ] 1.4.12 Text Spacing (AA): Adjustable spacing
31
+ - [ ] 1.4.13 Content on Hover or Focus (AA): Dismissible
32
+
33
+ ## Principle 2: Operable
34
+
35
+ ### 2.1 Keyboard Accessible
36
+ - [ ] 2.1.1 Keyboard (A): All functionality keyboard accessible
37
+ - [ ] 2.1.2 No Keyboard Trap (A): Can navigate away
38
+ - [ ] 2.1.4 Character Key Shortcuts (A): Remappable
39
+
40
+ ### 2.2 Enough Time
41
+ - [ ] 2.2.1 Timing Adjustable (A): Extend/turn off time limits
42
+ - [ ] 2.2.2 Pause, Stop, Hide (A): Control moving content
43
+
44
+ ### 2.3 Seizures
45
+ - [ ] 2.3.1 Three Flashes or Below Threshold (A)
46
+
47
+ ### 2.4 Navigable
48
+ - [ ] 2.4.1 Bypass Blocks (A): Skip navigation
49
+ - [ ] 2.4.2 Page Titled (A): Descriptive page titles
50
+ - [ ] 2.4.3 Focus Order (A): Logical tab order
51
+ - [ ] 2.4.4 Link Purpose (A): Link text is descriptive
52
+ - [ ] 2.4.5 Multiple Ways (AA): Multiple nav methods
53
+ - [ ] 2.4.6 Headings and Labels (AA): Descriptive
54
+ - [ ] 2.4.7 Focus Visible (AA): Visible focus indicator
55
+
56
+ ### 2.5 Input Modalities
57
+ - [ ] 2.5.1 Pointer Gestures (A): No complex gestures only
58
+ - [ ] 2.5.2 Pointer Cancellation (A): Can abort/undo
59
+ - [ ] 2.5.3 Label in Name (A): Accessible name includes visible text
60
+ - [ ] 2.5.4 Motion Actuation (A): Disable motion triggers
61
+
62
+ ## Principle 3: Understandable
63
+
64
+ ### 3.1 Readable
65
+ - [ ] 3.1.1 Language of Page (A): `<html lang="en">`
66
+ - [ ] 3.1.2 Language of Parts (AA): lang attribute for changes
67
+
68
+ ### 3.2 Predictable
69
+ - [ ] 3.2.1 On Focus (A): No context change on focus
70
+ - [ ] 3.2.2 On Input (A): No unexpected changes
71
+ - [ ] 3.2.3 Consistent Navigation (AA): Same order
72
+ - [ ] 3.2.4 Consistent Identification (AA): Same function = same label
73
+
74
+ ### 3.3 Input Assistance
75
+ - [ ] 3.3.1 Error Identification (A): Errors identified
76
+ - [ ] 3.3.2 Labels or Instructions (A): Labels provided
77
+ - [ ] 3.3.3 Error Suggestion (AA): Correction suggested
78
+ - [ ] 3.3.4 Error Prevention (AA): Confirm/undo for legal/financial
79
+
80
+ ## Principle 4: Robust
81
+
82
+ ### 4.1 Compatible
83
+ - [ ] 4.1.1 Parsing (A): Valid HTML
84
+ - [ ] 4.1.2 Name, Role, Value (A): For custom widgets
85
+ - [ ] 4.1.3 Status Messages (AA): Announced to screen readers
86
+
87
+ ## Testing Tools
88
+
89
+ - **Automated**: Lighthouse, axe, WAVE
90
+ - **Manual**: Keyboard navigation, screen reader
91
+ - **Color**: Contrast checker
92
+ - **Screen Readers**: NVDA (Windows), JAWS (Windows), VoiceOver (Mac/iOS)
93
+
94
+ ## Common Failures
95
+
96
+ - Missing alt text
97
+ - Insufficient contrast
98
+ - No keyboard access
99
+ - Empty links/buttons
100
+ - Form inputs without labels
101
+ - Heading hierarchy skipped
102
+ - No focus indicators
103
+ - Using color alone
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: apns-notifier
3
+ description: Send APNs push to paired iOS devices for approval requests and Live Activity updates. Uses JWT-signed Apple connection from the gateway. Silent + alert pushes are separate flows.
4
+ triggers: [synapta push, APNs, push notification, Live Activity update]
5
+ network: allowlist
6
+ tools: []
7
+ source:
8
+ origin: authored-by-synapta
9
+ reason: "Synapta-specific APNs integration for gateway → paired devices."
10
+ citation_patterns:
11
+ - "APNs documentation (Apple Developer)"
12
+ - "JWT-based provider authentication (ES256 with Apple .p8 key)"
13
+ - "sideshow/apns2 (Go) as reference implementation pattern"
14
+ ---
15
+
16
+ # APNs Notifier
17
+
18
+ Deliver push notifications from the gateway to paired iOS devices. Two flows:
19
+
20
+ 1. **Alert push** — approval requests, incident summaries, deploy-ready prompts. Shows in Notification Center.
21
+ 2. **Silent push** — Live Activity content updates + widget timeline reload triggers. No user-visible UI.
22
+
23
+ ## Provider auth
24
+
25
+ JWT-based, ES256, signed with the Apple Push Notification key (`.p8`). Configured once via `synapta gateway apns setup`:
26
+
27
+ ```yaml
28
+ apns:
29
+ team_id: "<10-char team id>"
30
+ key_id: "<10-char key id>"
31
+ key_path: "/path/to/AuthKey_<key_id>.p8" # OS-keychain-referenced, never in repo
32
+ environment: production # or sandbox for TestFlight
33
+ bundle_id: "com.synapta.drive"
34
+ ```
35
+
36
+ ## Payload shapes
37
+
38
+ ### Alert (approval)
39
+
40
+ ```json
41
+ {
42
+ "aps": {
43
+ "alert": { "title": "Approve deploy to Vercel?", "body": "preview → production, ref abc123" },
44
+ "sound": "default",
45
+ "interruption-level": "time-sensitive",
46
+ "category": "APPROVAL_REQUEST"
47
+ },
48
+ "synapta": {
49
+ "kind": "approval_request",
50
+ "request_id": "ar_...",
51
+ "expires_at": "2026-05-15T17:30:00Z"
52
+ }
53
+ }
54
+ ```
55
+
56
+ ### Live Activity update
57
+
58
+ ```json
59
+ {
60
+ "aps": {
61
+ "timestamp": 1234567890,
62
+ "event": "update",
63
+ "content-state": { "phase": "deploying", "pct": 60 },
64
+ "stale-date": 1234567920
65
+ }
66
+ }
67
+ ```
68
+
69
+ ### Silent (widget reload)
70
+
71
+ ```json
72
+ { "aps": { "content-available": 1 }, "synapta": { "kind": "widget_reload", "surface": "session_status" } }
73
+ ```
74
+
75
+ ## Reliability
76
+
77
+ - **Retry**: APNs may return `Unregistered` (device token rotated) or `BadDeviceToken`. On either, mark the device's APNs token stale; iOS will re-register on next launch.
78
+ - **Rate**: respect Apple's per-device rate guidance; coalesce Live Activity updates to ≤ 1 / sec.
79
+ - **TTL**: alert pushes carry `apns-expiration: <epoch + 5min>` for time-sensitive approvals so stale prompts don't show after the approval window closes.
80
+
81
+ ## Anti-patterns
82
+
83
+ - Storing the `.p8` key in the repo
84
+ - Sending alert pushes for non-time-sensitive events (battery drain + iOS deprioritizes the app)
85
+ - Skipping `interruption-level: time-sensitive` for approvals (system may delay delivery)
86
+ - Silent pushes used as a covert message channel (Apple rejects apps that do this)