@synapta/skills 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/index.js +11 -4
  2. package/package.json +3 -4
  3. package/skills/ATTRIBUTION.md +80 -0
  4. package/skills/accessibility-audit/SKILL.md +325 -0
  5. package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
  6. package/skills/apns-notifier/SKILL.md +86 -0
  7. package/skills/approval-policy-enforcer/SKILL.md +66 -0
  8. package/skills/apps-sdk-builder/LICENSE.txt +201 -0
  9. package/skills/apps-sdk-builder/SKILL.md +328 -0
  10. package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
  11. package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
  12. package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
  13. package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
  14. package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
  15. package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
  16. package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
  17. package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
  18. package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
  19. package/skills/architecture-selector/SKILL.md +64 -0
  20. package/skills/backlog-planner/SKILL.md +68 -0
  21. package/skills/carplay-entitlement-checker/SKILL.md +82 -0
  22. package/skills/concept-discovery/SKILL.md +517 -0
  23. package/skills/concept-discovery/assets/sample-analysis.json +81 -0
  24. package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
  25. package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
  26. package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
  27. package/skills/concept-discovery/references/framework-patterns.md +228 -0
  28. package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
  29. package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
  30. package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
  31. package/skills/dast-zap/SKILL.md +453 -0
  32. package/skills/dast-zap/assets/.gitkeep +9 -0
  33. package/skills/dast-zap/assets/github_action.yml +207 -0
  34. package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
  35. package/skills/dast-zap/assets/zap_automation.yaml +196 -0
  36. package/skills/dast-zap/assets/zap_context.xml +192 -0
  37. package/skills/dast-zap/references/EXAMPLE.md +40 -0
  38. package/skills/dast-zap/references/api_testing_guide.md +475 -0
  39. package/skills/dast-zap/references/authentication_guide.md +431 -0
  40. package/skills/dast-zap/references/false_positive_handling.md +427 -0
  41. package/skills/dast-zap/references/owasp_mapping.md +255 -0
  42. package/skills/dep-sbom-scan/SKILL.md +466 -0
  43. package/skills/deploy-cloudflare/SKILL.md +930 -0
  44. package/skills/deploy-docker/SKILL.md +55 -0
  45. package/skills/deploy-fly/SKILL.md +228 -0
  46. package/skills/deploy-k8s/SKILL.md +108 -0
  47. package/skills/deploy-k8s/assets/logo.png +0 -0
  48. package/skills/deploy-k8s/docs/README.md +29 -0
  49. package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
  50. package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
  51. package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
  52. package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
  53. package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
  54. package/skills/deploy-k8s/docs/book.json +16 -0
  55. package/skills/deploy-k8s/docs/community/changelog.md +34 -0
  56. package/skills/deploy-k8s/docs/community/contributing.md +67 -0
  57. package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
  58. package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
  59. package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
  60. package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
  61. package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
  62. package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
  63. package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
  64. package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
  65. package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
  66. package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
  67. package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
  68. package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
  69. package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
  70. package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
  71. package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
  72. package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
  73. package/skills/deploy-k8s/docs/guides/observability.md +67 -0
  74. package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
  75. package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
  76. package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
  77. package/skills/deploy-k8s/docs/package-lock.json +2892 -0
  78. package/skills/deploy-k8s/docs/package.json +13 -0
  79. package/skills/deploy-k8s/references/api-drift.md +298 -0
  80. package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
  81. package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
  82. package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
  83. package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
  84. package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
  85. package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
  86. package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
  87. package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
  88. package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
  89. package/skills/deploy-k8s/references/examples-bad.md +282 -0
  90. package/skills/deploy-k8s/references/examples-good.md +440 -0
  91. package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
  92. package/skills/deploy-k8s/references/helm-patterns.md +203 -0
  93. package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
  94. package/skills/deploy-k8s/references/job-patterns.md +120 -0
  95. package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
  96. package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
  97. package/skills/deploy-k8s/references/network-exposure.md +481 -0
  98. package/skills/deploy-k8s/references/observability.md +302 -0
  99. package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
  100. package/skills/deploy-k8s/references/resource-starvation.md +374 -0
  101. package/skills/deploy-k8s/references/security-hardening.md +209 -0
  102. package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
  103. package/skills/deploy-k8s/references/storage-and-state.md +330 -0
  104. package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
  105. package/skills/deploy-railway/SKILL.md +235 -0
  106. package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
  107. package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
  108. package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
  109. package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
  110. package/skills/deploy-railway/references/analyze-db.md +344 -0
  111. package/skills/deploy-railway/references/configure.md +309 -0
  112. package/skills/deploy-railway/references/deploy.md +195 -0
  113. package/skills/deploy-railway/references/operate.md +214 -0
  114. package/skills/deploy-railway/references/request.md +248 -0
  115. package/skills/deploy-railway/references/setup.md +312 -0
  116. package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
  117. package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
  118. package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
  119. package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
  120. package/skills/deploy-railway/scripts/dal.py +671 -0
  121. package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
  122. package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
  123. package/skills/deploy-railway/scripts/railway-api.sh +52 -0
  124. package/skills/deploy-ssh/SKILL.md +91 -0
  125. package/skills/deploy-vercel/SKILL.md +304 -0
  126. package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
  127. package/skills/deploy-vercel/resources/deploy.sh +301 -0
  128. package/skills/docs-runbooks/SKILL.md +399 -0
  129. package/skills/drive-status-renderer/SKILL.md +62 -0
  130. package/skills/iac-scan/SKILL.md +680 -0
  131. package/skills/iac-scan/assets/.gitkeep +9 -0
  132. package/skills/iac-scan/assets/checkov_config.yaml +94 -0
  133. package/skills/iac-scan/assets/github_actions.yml +199 -0
  134. package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
  135. package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
  136. package/skills/iac-scan/references/EXAMPLE.md +40 -0
  137. package/skills/iac-scan/references/compliance_mapping.md +237 -0
  138. package/skills/iac-scan/references/custom_policies.md +460 -0
  139. package/skills/iac-scan/references/suppression_guide.md +431 -0
  140. package/skills/incident-briefing/SKILL.md +66 -0
  141. package/skills/incident-triage/SKILL.md +481 -0
  142. package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
  143. package/skills/mcp-builder/SKILL.md +244 -0
  144. package/skills/mcp-builder/reference/evaluation.md +602 -0
  145. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  146. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  147. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  148. package/skills/mcp-builder/scripts/connections.py +151 -0
  149. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  150. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  151. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  152. package/skills/mobile-pairing/SKILL.md +52 -0
  153. package/skills/ops-sre/SKILL.md +297 -0
  154. package/skills/playwright-qa/LICENSE.txt +201 -0
  155. package/skills/playwright-qa/NOTICE.txt +14 -0
  156. package/skills/playwright-qa/SKILL.md +156 -0
  157. package/skills/playwright-qa/agents/openai.yaml +6 -0
  158. package/skills/playwright-qa/assets/playwright-small.svg +3 -0
  159. package/skills/playwright-qa/assets/playwright.png +0 -0
  160. package/skills/playwright-qa/references/cli.md +116 -0
  161. package/skills/playwright-qa/references/workflows.md +95 -0
  162. package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
  163. package/skills/release-publish/SKILL.md +85 -0
  164. package/skills/repo-bootstrap/SKILL.md +92 -0
  165. package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
  166. package/skills/repo-bootstrap/assets/root-thin.md +141 -0
  167. package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
  168. package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
  169. package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
  170. package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
  171. package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
  172. package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
  173. package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
  174. package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
  175. package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
  176. package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
  177. package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
  178. package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
  179. package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
  180. package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
  181. package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
  182. package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
  183. package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
  184. package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
  185. package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
  186. package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
  187. package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
  188. package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
  189. package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
  190. package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
  191. package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
  192. package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
  193. package/skills/repo-bootstrap/checkpoints.yaml +279 -0
  194. package/skills/repo-bootstrap/evals/evals.json +385 -0
  195. package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
  196. package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
  197. package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
  198. package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
  199. package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
  200. package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
  201. package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
  202. package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
  203. package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
  204. package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
  205. package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
  206. package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
  207. package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
  208. package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
  209. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
  210. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
  211. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
  212. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
  213. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
  214. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
  215. package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
  216. package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
  217. package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
  218. package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
  219. package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
  220. package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
  221. package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
  222. package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
  223. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
  224. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
  225. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
  226. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
  227. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
  228. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
  229. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
  230. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
  231. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
  232. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
  233. package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
  234. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
  235. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
  236. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
  237. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
  238. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
  239. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
  240. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
  241. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
  242. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
  243. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
  244. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
  245. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
  246. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
  247. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
  248. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
  249. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
  250. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
  251. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
  252. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
  253. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
  254. package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
  255. package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
  256. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
  257. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
  258. package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
  259. package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
  260. package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
  261. package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
  262. package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
  263. package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
  264. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
  265. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
  266. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
  267. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
  268. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
  269. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
  270. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
  271. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
  272. package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
  273. package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
  274. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
  275. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
  276. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
  277. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
  278. package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
  279. package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
  280. package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
  281. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
  282. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
  283. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
  284. package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
  285. package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
  286. package/skills/repo-bootstrap/references/output-structure.md +124 -0
  287. package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
  288. package/skills/repo-bootstrap/references/verification-guide.md +137 -0
  289. package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
  290. package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
  291. package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
  292. package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
  293. package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
  294. package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
  295. package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
  296. package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
  297. package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
  298. package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
  299. package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
  300. package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
  301. package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
  302. package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
  303. package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
  304. package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
  305. package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
  306. package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
  307. package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
  308. package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
  309. package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
  310. package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
  311. package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
  312. package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
  313. package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
  314. package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
  315. package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
  316. package/skills/schema-api-contracts/SKILL.md +56 -0
  317. package/skills/secret-hygiene/SKILL.md +511 -0
  318. package/skills/secret-hygiene/assets/.gitkeep +9 -0
  319. package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
  320. package/skills/secret-hygiene/assets/config-custom.toml +178 -0
  321. package/skills/secret-hygiene/assets/config-strict.toml +48 -0
  322. package/skills/secret-hygiene/assets/github-action.yml +181 -0
  323. package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
  324. package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
  325. package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
  326. package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
  327. package/skills/secret-hygiene/references/detection_rules.md +276 -0
  328. package/skills/secret-hygiene/references/false_positives.md +598 -0
  329. package/skills/secret-hygiene/references/remediation_guide.md +530 -0
  330. package/skills/stack-selector/SKILL.md +56 -0
  331. package/skills/telegram-control/SKILL.md +110 -0
  332. package/skills/telegram-control/references/architecture.md +184 -0
  333. package/skills/telegram-control/references/convex.md +173 -0
  334. package/skills/telegram-control/references/error_handling.md +212 -0
  335. package/skills/telegram-control/references/initial_setup.md +165 -0
  336. package/skills/telegram-control/references/telegram_api.md +156 -0
  337. package/skills/telegram-control/scripts/cancel_message.ts +53 -0
  338. package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
  339. package/skills/telegram-control/scripts/logger.ts +121 -0
  340. package/skills/telegram-control/scripts/proxy-util.ts +11 -0
  341. package/skills/telegram-control/scripts/schedule_message.ts +216 -0
  342. package/skills/telegram-control/scripts/send_message.ts +115 -0
  343. package/skills/telegram-control/scripts/setup.ts +185 -0
  344. package/skills/telegram-control/scripts/types.ts +75 -0
  345. package/skills/telegram-control/scripts/view_history.ts +74 -0
  346. package/skills/test-strategy/SKILL.md +352 -0
  347. package/skills/threat-model/SKILL.md +303 -0
  348. package/skills/threat-model/examples/example-output.md +196 -0
  349. package/skills/threat-model/template.md +96 -0
  350. package/skills/ts-lint/SKILL.md +80 -0
  351. package/skills/ui-flow/SKILL.md +668 -0
  352. package/skills/voice-command-router/SKILL.md +51 -0
  353. package/skills/widget-live-activity-sync/SKILL.md +66 -0
@@ -0,0 +1,132 @@
1
+ # App Archetypes
2
+
3
+ Load this reference before choosing a starting point for a new ChatGPT app. The goal is to keep the skill inside a small number of supported app shapes instead of inventing a custom structure for every prompt.
4
+
5
+ ## Rule
6
+
7
+ Choose one primary archetype per request and state it.
8
+
9
+ Do not combine several archetypes unless the user explicitly asks for a hybrid app and the extra complexity is necessary.
10
+
11
+ ## Archetypes
12
+
13
+ ### `tool-only`
14
+
15
+ Use when:
16
+
17
+ - The user does not need an in-ChatGPT UI
18
+ - The task is mainly search, fetch, retrieval, or background actions
19
+
20
+ Default shape:
21
+
22
+ - MCP server only
23
+
24
+ Best starting point:
25
+
26
+ - Official docs and MCP server examples
27
+
28
+ Validation emphasis:
29
+
30
+ - `/mcp` route works
31
+ - tool schemas and annotations are correct
32
+ - no unnecessary UI resource is registered
33
+ - if the app is connector-like or sync-oriented, `search` and `fetch` should be the default read-only tools
34
+
35
+ ### `vanilla-widget`
36
+
37
+ Use when:
38
+
39
+ - The user wants a small demo, workshop starter, or simple inline widget
40
+ - A single HTML widget is enough
41
+ - The user wants the fastest path to a working repo
42
+
43
+ Default shape:
44
+
45
+ - Root-level server plus `public/` widget assets
46
+
47
+ Best starting point:
48
+
49
+ - Apps SDK quickstart first
50
+ - Local fallback scaffold if the quickstart is not a good fit
51
+
52
+ Validation emphasis:
53
+
54
+ - bridge initialization
55
+ - `ui/notifications/tool-result`
56
+ - `tools/call` only when the widget is interactive
57
+
58
+ ### `react-widget`
59
+
60
+ Use when:
61
+
62
+ - The user wants a polished UI
63
+ - The UI is clearly component-based
64
+ - The user mentions React, TypeScript frontend tooling, or richer design requirements
65
+
66
+ Default shape:
67
+
68
+ - Split `server/` + `web/` layout when the example already uses it
69
+
70
+ Best starting point:
71
+
72
+ - Official OpenAI examples
73
+
74
+ Validation emphasis:
75
+
76
+ - build output is wired into the server correctly
77
+ - bundle references resolve
78
+ - widget renders from `structuredContent`
79
+
80
+ ### `interactive-decoupled`
81
+
82
+ Use when:
83
+
84
+ - The app has repeated user interaction
85
+ - The widget should stay mounted while tools are called repeatedly
86
+ - The app is a board, map, editor, game, dashboard, or other stateful experience
87
+
88
+ Default shape:
89
+
90
+ - Split `server/` + `web/`
91
+ - data tools plus render tools
92
+
93
+ Best starting point:
94
+
95
+ - Official OpenAI examples plus `references/interactive-state-sync-patterns.md`
96
+
97
+ Validation emphasis:
98
+
99
+ - tool retries are safe
100
+ - widget does not remount unnecessarily
101
+ - state sync is intentional
102
+ - UI tool calls work independently of model reruns
103
+
104
+ ### `submission-ready`
105
+
106
+ Use when:
107
+
108
+ - The user asks for public launch, review readiness, or directory submission
109
+
110
+ Default shape:
111
+
112
+ - Smallest viable repo that still includes deployment and review requirements
113
+
114
+ Best starting point:
115
+
116
+ - Closest official example that matches the requested stack
117
+
118
+ Validation emphasis:
119
+
120
+ - `_meta.ui.domain`
121
+ - accurate CSP
122
+ - auth and review-safe flows
123
+ - submission prerequisites and artifacts
124
+
125
+ ## Selection Heuristic
126
+
127
+ - If the prompt does not mention a UI, choose `tool-only`.
128
+ - If the prompt is about a knowledge source, sync app, connector-like integration, or deep research, strongly prefer `tool-only` plus the standard `search` and `fetch` tools unless the user clearly needs a widget.
129
+ - If the prompt asks for a simple demo or starter, choose `vanilla-widget`.
130
+ - If the prompt asks for a polished UI or React, choose `react-widget`.
131
+ - If the prompt implies long-lived client state or repeated interaction, choose `interactive-decoupled`.
132
+ - Only choose `submission-ready` when the user explicitly asks for launch or review-readiness work.
@@ -0,0 +1,135 @@
1
+ # Apps SDK Docs Workflow
2
+
3
+ Use this reference to keep code generation aligned with current OpenAI Apps SDK docs.
4
+
5
+ ## Always Fetch These Pages (Baseline)
6
+
7
+ - `https://developers.openai.com/apps-sdk/build/mcp-server/`
8
+ - `https://developers.openai.com/apps-sdk/build/chatgpt-ui/`
9
+ - `https://developers.openai.com/apps-sdk/build/examples/`
10
+ - `https://developers.openai.com/apps-sdk/plan/tools/`
11
+ - `https://developers.openai.com/apps-sdk/reference/`
12
+
13
+ ## Fetch Conditionally (Greenfield / First Pass)
14
+
15
+ - `https://developers.openai.com/apps-sdk/quickstart/` for first implementation scaffolds and happy-path wiring
16
+ - `https://developers.openai.com/apps-sdk/deploy/` when the task includes local ChatGPT testing via tunnel, hosting, or production deployment planning
17
+ - `https://developers.openai.com/apps-sdk/deploy/submission/` when the task includes public launch, app review, or publishing steps
18
+ - `https://developers.openai.com/apps-sdk/app-submission-guidelines/` when the task includes submission readiness, policy/reliability checks, or review-risk reduction
19
+
20
+ ## Suggested `openai-docs` / MCP Queries
21
+
22
+ Use focused searches before fetching:
23
+
24
+ - `ChatGPT Apps SDK build MCP server register resource template resourceUri outputTemplate`
25
+ - `ChatGPT Apps SDK build ChatGPT UI MCP Apps bridge ui/notifications/tool-result`
26
+ - `ChatGPT Apps SDK examples React widget upload modal Pizzaz`
27
+ - `Apps SDK define tools annotations readOnlyHint destructiveHint openWorldHint`
28
+ - `Apps SDK reference tool descriptor _meta ui.resourceUri openai/outputTemplate`
29
+ - `ChatGPT Apps SDK quickstart build web component tools/call`
30
+ - `ChatGPT app company knowledge compatibility search fetch tools`
31
+ - `platform MCP search tool fetch tool schema`
32
+ - `ChatGPT Apps SDK deploy app local development tunnel ngrok refresh connector`
33
+ - `ChatGPT Apps SDK submit app review prerequisites app submission guidelines`
34
+
35
+ ## Docs-Derived Checklist (Current Guidance)
36
+
37
+ ### Archetype / Shape
38
+
39
+ - Classify the request into one primary app archetype before choosing examples or scaffolds
40
+ - Keep the repo shape consistent with that archetype instead of inventing a new structure for each prompt
41
+
42
+ ### Server
43
+
44
+ - Register the widget resource/template with the MCP Apps UI MIME type (`text/html;profile=mcp-app`) or `RESOURCE_MIME_TYPE` when using `@modelcontextprotocol/ext-apps/server`
45
+ - Version template URIs when widget HTML or JS or CSS changes in a breaking way (treat URI as cache key)
46
+ - Set `_meta.ui.resourceUri` on render tools; optionally mirror `_meta["openai/outputTemplate"]` for ChatGPT compatibility
47
+ - Design tool handlers to be idempotent because the model may retry calls
48
+ - Keep `structuredContent` concise and move widget-only payloads to `_meta`
49
+
50
+ ### Tool Design
51
+
52
+ - Plan one user intent per tool
53
+ - Use action-oriented names and precise descriptions
54
+ - Set tool impact hints accurately (`readOnlyHint`, `destructiveHint`, `openWorldHint`)
55
+ - Split data and render tools so that the model can fetch the data and look at it before choosing to render the widget UI or not
56
+ - Make the widget input a list of unique identifiers (e.g. `propertyIds` for a render property map widget that takes IDs returned from the fetch properties nearby tool) if you want to make sure the widget only renders 1p data; make the widget input semantically relevant if you want to allow the model to render the widget with generated data (e.g. `questionAndAnswerPairs` for a flashcards widget)
57
+ - For connector-like, data-only, sync-oriented, or company-knowledge-style apps, prefer the standard `search` and `fetch` tools by default
58
+
59
+ ### UI
60
+
61
+ - Prefer the MCP Apps bridge (`ui/*` notifications + `tools/call`) for new apps
62
+ - Prefer `ui/message` for follow-up messaging in baseline examples; treat `window.openai.sendFollowUpMessage` as optional ChatGPT-specific compatibility
63
+ - Treat `window.openai` as compatibility plus optional ChatGPT extensions
64
+ - Render from `structuredContent` and treat host-delivered data as untrusted input
65
+ - Use `ui/update-model-context` only for UI state the model should reason about
66
+
67
+ ### Starting Point Selection
68
+
69
+ - Check `apps-sdk/build/examples` and the official examples repo before generating a greenfield scaffold from scratch
70
+ - Prefer the smallest upstream example that matches the requested stack and interaction pattern
71
+ - Use the local fallback scaffold only when upstream examples are a poor fit or undesirable for the request
72
+
73
+ ### Resource Metadata / Security
74
+
75
+ - Set `_meta.ui.csp.connectDomains` and `_meta.ui.csp.resourceDomains` exactly
76
+ - Avoid `frameDomains` unless iframe embedding is central to the experience
77
+ - Set `_meta.ui.domain` for submission-ready apps
78
+ - Always set `openai/widgetDescription` to inform the model what the widget is to be used for
79
+
80
+ ### Developer Mode / Local Testing
81
+
82
+ - Run the MCP server locally on `http://localhost:<port>/mcp`
83
+ - Expose it with a public HTTPS tunnel for ChatGPT access during development
84
+ - Use the public URL + `/mcp` when adding the app in ChatGPT settings
85
+ - Include ChatGPT Developer Mode setup and app creation steps in implementation handoff
86
+ - Remind users to refresh the app after MCP tool/metadata changes
87
+ - Note terminology differences when relevant: some docs/screenshots may still say "connector" while product UI uses "app"
88
+
89
+ ### Validation
90
+
91
+ - Validate against a minimum working repo contract, not just file creation
92
+ - Run the cheapest useful syntax or compile check first
93
+ - If feasible, confirm the local `/mcp` route responds before calling the result “working”
94
+ - If you cannot run a deeper check, say so explicitly
95
+ - If the app is connector-like or sync-oriented, verify the `search` and `fetch` tool shapes against the standard
96
+
97
+ ### Production Hosting / Deploy
98
+
99
+ - Prefer a stable public HTTPS endpoint with reliable TLS and low-latency streaming `/mcp`
100
+ - Document platform-specific secrets handling and environment variables
101
+ - Include logging/metrics expectations for debugging production tool calls
102
+ - Re-test the hosted endpoint in ChatGPT Developer Mode before submission
103
+
104
+ ### Submission / Review
105
+
106
+ - Read `deploy/submission` and `app-submission-guidelines` together (process + policy requirements)
107
+ - Check org verification and Owner-role prerequisites before generating submission steps
108
+ - Ensure the endpoint is public production infrastructure (not localhost/tunnel/testing URLs)
109
+ - Ensure CSP is defined and accurate for submission
110
+ - Prepare submission artifacts (metadata, screenshots, privacy policy/support contacts, test prompts/responses)
111
+ - If auth is required, prepare review-safe demo credentials and validate them outside internal networks
112
+
113
+ ## Generation Pattern
114
+
115
+ 1. Classify the app archetype.
116
+ 2. Fetch docs with `$openai-docs`.
117
+ 3. Check official examples before inventing a scaffold from scratch.
118
+ 4. Summarize relevant constraints and metadata keys.
119
+ 5. Propose tool plan and architecture.
120
+ 6. Adapt the closest example or use the local fallback scaffold.
121
+ 7. Generate or patch the server scaffold.
122
+ 8. Generate or patch the widget scaffold.
123
+ 9. Validate the repo against the minimum working contract.
124
+ 10. Add local run + tunnel + ChatGPT Developer Mode app setup instructions.
125
+ 11. Add hosting/deployment guidance when the task implies go-live.
126
+ 12. Add submission/readiness steps when the user intends public distribution.
127
+ 13. Call out compatibility aliases vs MCP Apps standard fields.
128
+
129
+ ## Starter Scaffold Script
130
+
131
+ - Use `./scripts/scaffold_node_ext_apps.mjs <output-dir> --app-name <name>` only when the user wants a greenfield Node + `@modelcontextprotocol/ext-apps` starter and no upstream example is the better fit.
132
+ - If the file is not executable in the current environment, fall back to `node scripts/scaffold_node_ext_apps.mjs <output-dir> --app-name <name>`.
133
+ - The script generates `package.json`, `tsconfig.json`, `public/widget.html`, and `src/server.ts`.
134
+ - It intentionally uses the MCP Apps bridge by default, keeps follow-up messaging on `ui/message`, and limits `window.openai` to optional host signals/extensions.
135
+ - After generation, compare the output against the docs you fetched and adjust package versions, metadata, transport details, or URI/versioning if the docs changed.
@@ -0,0 +1,113 @@
1
+ # Interactive State Sync Patterns
2
+
3
+ Use this reference when building ChatGPT apps with long-lived widget state, repeated interactions, or component-initiated tool calls (for example: games, boards, maps, dashboards, editors, or realtime-ish UIs).
4
+
5
+ Do not load this file for simple read-only render apps unless state sync behavior is part of the task.
6
+
7
+ ## When This Reference Helps
8
+
9
+ Read this file when the app needs one or more of these patterns:
10
+
11
+ - Repeated actions that may return similar data (retry, refresh, reset, reroll)
12
+ - UI controls that trigger tool calls after the initial render
13
+ - Local widget behavior that should also work outside ChatGPT during development
14
+ - Multiple tool calls updating one mounted widget over time
15
+ - Clear separation between model-visible state and widget-only state
16
+
17
+ ## Reusable Patterns
18
+
19
+ ### 1. Snapshot + Event Token
20
+
21
+ Return a stable state snapshot in `structuredContent` and add a monotonic event token for repeated actions that may not change other fields.
22
+
23
+ Examples:
24
+
25
+ - `stateVersion`
26
+ - `refreshCount`
27
+ - `resetCount`
28
+ - `lastMutationId`
29
+
30
+ Use this when the widget must detect "same shape, new event" updates reliably.
31
+
32
+ ### 2. Intent-Focused Tool Surface
33
+
34
+ Prefer small, explicit tools that map to user-visible actions or data operations.
35
+
36
+ - Keep names action-oriented
37
+ - Use enums and bounded schemas where possible
38
+ - Avoid kitchen-sink tools that mix unrelated reads and writes
39
+
40
+ This improves model tool selection and reduces malformed calls.
41
+
42
+ ### 3. Idempotent Handlers (or Explicitly Non-Idempotent)
43
+
44
+ Design handlers to tolerate retries. If a tool is not idempotent, make the side effect explicit and confirm intent in the flow.
45
+
46
+ - Reads and pure transforms should usually be idempotent
47
+ - Writes should include clear impact hints and current-turn confirmation where needed
48
+ - Repeated calls with the same input should not corrupt widget state
49
+
50
+ ### 4. `structuredContent` / `_meta` Partitioning
51
+
52
+ Partition payloads intentionally:
53
+
54
+ - `structuredContent`: concise model-visible state the widget also uses
55
+ - `content`: short narration/status text
56
+ - `_meta`: large maps, caches, or sensitive widget-only hydration data
57
+
58
+ Keep `structuredContent` small enough for follow-up reasoning and chaining.
59
+
60
+ ### 5. MCP Apps Bridge First, `window.openai` Second
61
+
62
+ For new scaffolds:
63
+
64
+ - Prefer MCP Apps bridge notifications and `tools/call` (portable across hosts)
65
+ - Use `window.openai` as a compatibility layer plus optional ChatGPT extensions
66
+
67
+ This keeps the app portable while still enabling ChatGPT-specific capabilities when helpful.
68
+
69
+ ### 6. Component-Initiated Tool Calls Without Remounting
70
+
71
+ For interactive widgets, allow the UI to call data/action tools directly and update the existing widget state instead of forcing a full re-render/remount every time.
72
+
73
+ This is especially useful for:
74
+
75
+ - Refresh
76
+ - Retry
77
+ - Rerun
78
+ - Toggle/filter actions
79
+ - Incremental interactions inside one widget session
80
+
81
+ ### 7. Standalone / No-Host Fallback Mode
82
+
83
+ When feasible, make the widget usable without ChatGPT during development:
84
+
85
+ - If host APIs are unavailable, apply local state directly
86
+ - Preserve basic interactions in a normal browser
87
+
88
+ This speeds up front-end iteration and reduces dependence on connector setup for every UI tweak.
89
+
90
+ ### 8. Decouple Data Tools from Render Tools (When Complexity Grows)
91
+
92
+ Use separate data and render tools when the app has multi-step reasoning or frequent updates.
93
+
94
+ - Data tools fetch/compute/mutate and return reusable `structuredContent`
95
+ - Render tools attach the widget template and focus on presentation
96
+
97
+ This reduces unnecessary remounts and gives the model a chance to refine data before rendering.
98
+
99
+ ## Common Anti-Patterns
100
+
101
+ - Putting large widget-only blobs into `structuredContent`
102
+ - Attaching a widget template to every tool when only one render tool needs it
103
+ - Using hidden client-side state as the source of truth for critical actions
104
+ - Depending only on `window.openai` APIs for baseline app behavior
105
+ - Using ambiguous tool names that do not match user intent
106
+
107
+ ## Example App Types That Benefit From These Patterns
108
+
109
+ - Multiplayer or turn-based games
110
+ - Collaborative boards / task views
111
+ - Maps with filters and repeated searches
112
+ - Dashboards with refresh and drill-down actions
113
+ - Editors or builders with iterative tool calls
@@ -0,0 +1,93 @@
1
+ # Repo Contract And Validation
2
+
3
+ Load this reference when scaffolding or reviewing a generated ChatGPT app repo.
4
+
5
+ The goal is not “files were created.” The goal is “the repo is plausibly runnable and follows a stable working-app contract.”
6
+
7
+ ## Minimum Working Repo Contract
8
+
9
+ Every generated repo should satisfy the relevant parts of this contract.
10
+
11
+ ### 1. Shape
12
+
13
+ - The repo shape matches the chosen archetype.
14
+ - The repo structure is simple enough that a user can identify where the server and widget live.
15
+
16
+ ### 2. Server
17
+
18
+ - There is a clear MCP server entry point.
19
+ - The server exposes `/mcp`.
20
+ - The server registers tools intentionally.
21
+ - If a UI exists, the server registers a resource/template with the MCP Apps UI MIME type.
22
+
23
+ ### 3. Tools
24
+
25
+ - Each tool maps to one user intent.
26
+ - Descriptions help the model choose the tool.
27
+ - Required annotations are present and accurate.
28
+ - UI-linked tools use `_meta.ui.resourceUri`.
29
+ - `_meta["openai/outputTemplate"]` is treated as optional compatibility, not the primary contract.
30
+ - When the app is connector-like, data-only, sync-oriented, or intended for company knowledge or deep research, it implements standard `search` and `fetch` tools instead of custom substitutes.
31
+
32
+ ### 4. Widget
33
+
34
+ - The widget initializes the MCP Apps bridge when needed.
35
+ - The widget can receive `ui/notifications/tool-result`.
36
+ - The widget renders from `structuredContent`.
37
+ - Interactive widgets use `tools/call`.
38
+ - Baseline follow-up messaging uses `ui/message`.
39
+ - `window.openai` is optional and additive.
40
+
41
+ ### 5. Local Developer Experience
42
+
43
+ - There is a clear way to start the app locally.
44
+ - There is at least one low-cost check command when the stack supports it.
45
+ - The response explains how to connect the app in ChatGPT Developer Mode when relevant.
46
+
47
+ ## Validation Ladder
48
+
49
+ Run the highest level you can without overfitting to a single stack.
50
+
51
+ ### Level 0: Static contract review
52
+
53
+ Check for:
54
+
55
+ - chosen archetype is sensible
56
+ - repo shape matches archetype
57
+ - `/mcp` route is present
58
+ - tool/resource/widget responsibilities are coherent
59
+ - if the app is connector-like or sync-oriented, `search` and `fetch` are present with the expected standard shape
60
+
61
+ ### Level 1: Syntax or compile checks
62
+
63
+ Use the stack-appropriate cheapest check available, for example:
64
+
65
+ - Python syntax check
66
+ - TypeScript compile check
67
+ - framework-specific lint or build sanity check if already installed
68
+
69
+ ### Level 2: Local runtime sanity
70
+
71
+ If feasible:
72
+
73
+ - start the server
74
+ - confirm the health route or `/mcp` endpoint responds
75
+
76
+ ### Level 3: Host loop validation
77
+
78
+ If feasible:
79
+
80
+ - inspect with MCP Inspector
81
+ - test through ChatGPT Developer Mode
82
+ - confirm widget updates after tool results
83
+
84
+ ## Reporting Rule
85
+
86
+ Always say which validation level was reached and what was not run.
87
+
88
+ That makes the skill more reliable because it separates:
89
+
90
+ - “repo shape looks right”
91
+ - “syntax is valid”
92
+ - “server starts”
93
+ - “host integration was actually exercised”
@@ -0,0 +1,67 @@
1
+ # Search And Fetch Standard
2
+
3
+ Load this reference when the app is connector-like, data-only, sync-oriented, or meant to work well with company knowledge or deep research.
4
+
5
+ ## Default Rule
6
+
7
+ If the app is primarily a read-only knowledge source, do not invent custom equivalents to `search` and `fetch`.
8
+
9
+ Default to implementing the standard `search` and `fetch` tools exactly, then add other tools only if the use case clearly needs them.
10
+
11
+ ## When This Applies
12
+
13
+ Use the standard by default when the request is about:
14
+
15
+ - a data-only app
16
+ - a sync app
17
+ - a company knowledge source
18
+ - deep research compatibility
19
+ - a connector-like integration over documents, tickets, wiki pages, CRM records, or similar read-only data
20
+
21
+ ## Tool Requirements
22
+
23
+ ### `search`
24
+
25
+ - Read-only tool
26
+ - Takes a single query string
27
+ - Returns exactly one MCP content item with `type: "text"`
28
+ - That text is a JSON-encoded object with:
29
+ - `results`
30
+ - each result has `id`, `title`, and `url`
31
+
32
+ ### `fetch`
33
+
34
+ - Read-only tool
35
+ - Takes a single document/item id string
36
+ - Returns exactly one MCP content item with `type: "text"`
37
+ - That text is a JSON-encoded object with:
38
+ - `id`
39
+ - `title`
40
+ - `text`
41
+ - `url`
42
+ - optional `metadata`
43
+
44
+ ## Implementation Rules
45
+
46
+ - Match the schema exactly when the app is intended for company knowledge or deep research compatibility.
47
+ - Use canonical `url` values for citations.
48
+ - Mark these tools as read-only.
49
+ - Prefer these names exactly: `search` and `fetch`.
50
+ - If you add other read-only tools, they should complement the standard rather than replace it.
51
+
52
+ ## Validation Checks
53
+
54
+ When `search` and `fetch` are relevant, verify:
55
+
56
+ - both tools exist
57
+ - they are read-only
58
+ - their input shapes match the standard
59
+ - their returned payloads are wrapped as one `content` item with JSON-encoded `text`
60
+ - result URLs are canonical enough for citation use
61
+
62
+ ## Source
63
+
64
+ This standard is described in:
65
+
66
+ - `https://developers.openai.com/apps-sdk/build/mcp-server/#company-knowledge-compatibility`
67
+ - `https://platform.openai.com/docs/mcp`
@@ -0,0 +1,79 @@
1
+ # Upstream Example Workflow
2
+
3
+ Load this reference when starting a greenfield ChatGPT app or when deciding whether to adapt an upstream example or use the local fallback scaffold.
4
+
5
+ ## Default Order
6
+
7
+ Prefer these starting points in order:
8
+
9
+ 1. Official OpenAI Apps SDK examples
10
+ 2. Version-matched `@modelcontextprotocol/ext-apps` examples
11
+ 3. Local `scripts/scaffold_node_ext_apps.mjs` fallback
12
+
13
+ This keeps the skill aligned with current docs and maintained example code while still preserving a low-dependency fallback when examples are not a good fit.
14
+
15
+ ## Choose The Right Source
16
+
17
+ ### 1. Official OpenAI examples
18
+
19
+ Prefer these when:
20
+
21
+ - The app is clearly ChatGPT-facing
22
+ - The user wants a polished UI or React component
23
+ - The task involves file upload, modal flows, display-mode changes, or other ChatGPT extensions
24
+ - The docs/examples page already shows a similar interaction pattern
25
+
26
+ Typical sources:
27
+
28
+ - `https://developers.openai.com/apps-sdk/build/examples/`
29
+ - `https://github.com/openai/openai-apps-sdk-examples`
30
+ - `https://developers.openai.com/apps-sdk/quickstart/` for the smallest vanilla baseline
31
+
32
+ ### 2. `@modelcontextprotocol/ext-apps` examples
33
+
34
+ Prefer these when:
35
+
36
+ - The user needs a lower-level MCP Apps baseline
37
+ - Portability across MCP Apps-compatible hosts matters more than ChatGPT-specific polish
38
+ - You want version-matched examples close to the installed `@modelcontextprotocol/ext-apps` package shape
39
+
40
+ This follows the same basic idea as the upstream `create-mcp-app` skill: use maintained examples as the starting point, then adapt them.
41
+
42
+ Typical examples from upstream flows:
43
+
44
+ - `examples/demo-vanilla-html`
45
+ - `examples/demo-react-simple`
46
+ - `examples/demo-connectors-api`
47
+
48
+ ### 3. Local fallback scaffold
49
+
50
+ Use `scripts/scaffold_node_ext_apps.mjs` when:
51
+
52
+ - No close upstream example exists
53
+ - The user wants a tiny Node + vanilla HTML starter
54
+ - Network/example retrieval is undesirable
55
+ - You need a throwaway starter to patch quickly during a live coding task
56
+
57
+ Do not prefer the local scaffold just because it is available. It is the fallback, not the default.
58
+
59
+ ## Adaptation Rules
60
+
61
+ - Copy the smallest matching example, not the entire showcase app.
62
+ - Remove unrelated demo tools, assets, and routes immediately.
63
+ - Keep the upstream file structure when it is already clean and docs-aligned.
64
+ - Reconcile the copied example with the current docs before finishing:
65
+ - tool names and descriptions
66
+ - annotations (`readOnlyHint`, `destructiveHint`, `openWorldHint`, `idempotentHint` when true)
67
+ - `_meta.ui.resourceUri` and optional `_meta["openai/outputTemplate"]`
68
+ - resource `_meta.ui.csp`, `_meta.ui.domain`, and `openai/widgetDescription`
69
+ - URI versioning for template changes
70
+ - local run/test instructions
71
+ - State which example you chose and why.
72
+ - If you rely on upstream code, note the source repo and branch/tag/commit when practical; avoid silently depending on a floating example shape for long-lived work.
73
+
74
+ ## Minimal Selection Heuristic
75
+
76
+ - If the user asks for **React + polished UI**, start with official OpenAI examples.
77
+ - If the user asks for **vanilla HTML + tiny demo**, start with the quickstart example; use the local fallback scaffold only if the quickstart is still too opinionated or unavailable.
78
+ - If the user asks for **portable MCP Apps wiring**, start with `@modelcontextprotocol/ext-apps` examples.
79
+ - If the user already has an app, adapt their code directly instead of importing a new example.