@jini-ai/agent-plugins 0.6.16 → 0.6.19

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 (335) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/NOTICE +14 -0
  3. package/README.md +35 -14
  4. package/charts-echarts/plugin.json +39 -0
  5. package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
  6. package/charts-recharts/plugin.json +32 -0
  7. package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
  8. package/cloudflare/NOTES.md +16 -0
  9. package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
  10. package/cloudflare/lib/api.mjs +96 -0
  11. package/cloudflare/lib/assets.mjs +65 -0
  12. package/cloudflare/lib/dns.mjs +32 -0
  13. package/cloudflare/lib/domain-inventory.mjs +61 -0
  14. package/cloudflare/lib/domain-status.mjs +48 -0
  15. package/cloudflare/lib/domains.mjs +95 -0
  16. package/cloudflare/lib/forms.mjs +254 -0
  17. package/cloudflare/lib/pages-upload.mjs +51 -0
  18. package/cloudflare/lib/target.mjs +165 -0
  19. package/cloudflare/lib/workers-upload.mjs +48 -0
  20. package/cloudflare/lib/zones.mjs +25 -0
  21. package/cloudflare/mcp.json +4 -0
  22. package/cloudflare/plugin.json +96 -0
  23. package/cloudflare/skills/cloudflare/SKILL.md +57 -0
  24. package/cloudflare/skills/cloudflare/references/domains.md +31 -0
  25. package/cloudflare/skills/cloudflare/references/pages.md +18 -0
  26. package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
  27. package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
  28. package/cloudflare/skills/cloudflare/references/workers.md +42 -0
  29. package/cloudflare/targets/cloudflare-pages.mjs +12 -0
  30. package/cloudflare/targets/cloudflare-workers.mjs +17 -0
  31. package/cloudflare/tovu-consent.json +6 -0
  32. package/cloudflare/tovu-deploy-targets.json +630 -0
  33. package/cloudflare/tovu-form-destinations.json +12 -0
  34. package/cloudflare/worker/forms-receiver.mjs +249 -0
  35. package/composio/mcp.json +10 -0
  36. package/composio/plugin.json +68 -0
  37. package/composio/skills/composio/SKILL.md +85 -0
  38. package/dist/core/identity-namespace.d.ts +12 -0
  39. package/dist/core/identity-namespace.js +20 -0
  40. package/dist/folder-zip-node.js +29 -7
  41. package/dist/lifecycle/bundled-digests.js +4 -3
  42. package/dist/lifecycle/install.d.ts +7 -0
  43. package/dist/lifecycle/install.js +45 -3
  44. package/dist/lifecycle/manifest.d.ts +2 -2
  45. package/dist/lifecycle/manifest.js +5 -3
  46. package/dist/lifecycle/node.js +2 -0
  47. package/dist/lifecycle/persistent-state.js +1 -1
  48. package/dist/lifecycle/ports.d.ts +8 -0
  49. package/dist/lifecycle/seed-bundled.js +4 -1
  50. package/dist/manifest.d.ts +1 -1
  51. package/dist/manifest.js +3 -2
  52. package/fly/deploy-configs/fly.mjs +115 -0
  53. package/fly/deploy-ops/fly.mjs +102 -0
  54. package/fly/mcp.json +4 -0
  55. package/fly/plugin.json +81 -0
  56. package/fly/scripts/render-deploy-workflow.mjs +150 -0
  57. package/fly/skills/fly/SKILL.md +43 -0
  58. package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
  59. package/fly/skills/fly/references/fly.template.toml +81 -0
  60. package/fly/tovu-credential-schemes.json +11 -0
  61. package/fly/tovu-deploy-configs.json +21 -0
  62. package/fly/tovu-deploy-ops.json +14 -0
  63. package/github/deploy-ops/github-actions.mjs +164 -0
  64. package/github/deployments/github.mjs +415 -0
  65. package/github/mcp.json +4 -0
  66. package/github/plugin.json +105 -0
  67. package/github/skills/github/SKILL.md +249 -0
  68. package/github/skills/github/references/actions.md +224 -0
  69. package/github/skills/github/references/auth-and-tokens.md +140 -0
  70. package/github/skills/github/references/repo-files.md +135 -0
  71. package/github/skills/github/references/site-backup.md +159 -0
  72. package/github/skills/github/references/source-control.md +123 -0
  73. package/github/source-control/backup-push.mjs +242 -0
  74. package/github/source-control/commit-site.mjs +459 -0
  75. package/github/source-control/github.mjs +93 -0
  76. package/github/source-control/write-files.mjs +468 -0
  77. package/github/tovu-deploy-ops.json +13 -0
  78. package/github/tovu-source-control.json +117 -0
  79. package/github-pages/NOTES.md +19 -0
  80. package/github-pages/mcp.json +4 -0
  81. package/github-pages/plugin.json +48 -0
  82. package/github-pages/skills/github-pages/SKILL.md +44 -0
  83. package/github-pages/targets/github-pages.mjs +543 -0
  84. package/github-pages/tovu-deploy-targets.json +327 -0
  85. package/google-login/exports/google-g.svg +1 -0
  86. package/google-login/exports/sign-in-button.css +68 -0
  87. package/google-login/exports/sign-in-button.html +4 -0
  88. package/google-login/mcp.json +4 -0
  89. package/google-login/plugin.json +59 -0
  90. package/google-login/skills/google-login/SKILL.md +96 -0
  91. package/google-login/tovu-login-providers.json +21 -0
  92. package/google-workspace/README.md +132 -0
  93. package/google-workspace/form-destinations/README.md +87 -0
  94. package/google-workspace/form-destinations/dedupe.mjs +43 -0
  95. package/google-workspace/form-destinations/delivery-result.mjs +69 -0
  96. package/google-workspace/form-destinations/mapping.mjs +152 -0
  97. package/google-workspace/form-destinations/sheets.mjs +202 -0
  98. package/google-workspace/lib/auth.mjs +81 -0
  99. package/google-workspace/lib/drive-files.mjs +54 -0
  100. package/google-workspace/lib/form-destination-settings.mjs +72 -0
  101. package/google-workspace/lib/http.mjs +168 -0
  102. package/google-workspace/lib/picker-flow.mjs +171 -0
  103. package/google-workspace/lib/picker-selection.mjs +107 -0
  104. package/google-workspace/lib/product-state.mjs +93 -0
  105. package/google-workspace/lib/request-policy.mjs +163 -0
  106. package/google-workspace/lib/sheets-a1.mjs +79 -0
  107. package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
  108. package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
  109. package/google-workspace/lib/sheets-client.mjs +286 -0
  110. package/google-workspace/lib/surface-actions.mjs +107 -0
  111. package/google-workspace/mcp.json +4 -0
  112. package/google-workspace/plugin.json +77 -0
  113. package/google-workspace/products.json +12 -0
  114. package/google-workspace/skills/google-workspace/SKILL.md +82 -0
  115. package/google-workspace/skills/google-workspace/references/connection.md +102 -0
  116. package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
  117. package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
  118. package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
  119. package/google-workspace/tools/account-info.mjs +18 -0
  120. package/google-workspace/tools/sheets/README.md +54 -0
  121. package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
  122. package/google-workspace/tools/sheets/copy.mjs +23 -0
  123. package/google-workspace/tools/sheets/create.mjs +35 -0
  124. package/google-workspace/tools/sheets/find-replace.mjs +38 -0
  125. package/google-workspace/tools/sheets/find.mjs +52 -0
  126. package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
  127. package/google-workspace/tools/sheets/get.mjs +22 -0
  128. package/google-workspace/tools/sheets/values-append.mjs +27 -0
  129. package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
  130. package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
  131. package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
  132. package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
  133. package/google-workspace/tools/sheets/values-clear.mjs +20 -0
  134. package/google-workspace/tools/sheets/values-get.mjs +21 -0
  135. package/google-workspace/tools/sheets/values-update.mjs +26 -0
  136. package/google-workspace/tools/sheets-admin/README.md +45 -0
  137. package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
  138. package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
  139. package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
  140. package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
  141. package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
  142. package/google-workspace/tools/sheets-admin/format.mjs +70 -0
  143. package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
  144. package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
  145. package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
  146. package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
  147. package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
  148. package/google-workspace/tovu-admin-surfaces.json +63 -0
  149. package/google-workspace/tovu-agent-tools.json +1178 -0
  150. package/google-workspace/tovu-connections.json +35 -0
  151. package/google-workspace/tovu-form-destinations.json +10 -0
  152. package/google-workspace/ui/README.md +73 -0
  153. package/google-workspace/ui/connection-panel.handler.mjs +167 -0
  154. package/google-workspace/ui/connection-panel.html +17 -0
  155. package/google-workspace/ui/connection-panel.mjs +189 -0
  156. package/google-workspace/ui/connection-view.mjs +120 -0
  157. package/google-workspace/ui/destination-panel.handler.mjs +106 -0
  158. package/google-workspace/ui/destination-panel.html +17 -0
  159. package/google-workspace/ui/destination-panel.mjs +150 -0
  160. package/google-workspace/ui/dom.mjs +140 -0
  161. package/google-workspace/ui/panel.css +170 -0
  162. package/google-workspace/ui/picker-flow.mjs +87 -0
  163. package/google-workspace/ui/picker-view.mjs +44 -0
  164. package/google-workspace/ui/picker.handler.mjs +56 -0
  165. package/google-workspace/ui/picker.html +17 -0
  166. package/google-workspace/ui/picker.mjs +88 -0
  167. package/google-workspace/ui/surface-client.mjs +227 -0
  168. package/higgsfield-media/mcp.json +9 -0
  169. package/higgsfield-media/plugin.json +109 -0
  170. package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
  171. package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
  172. package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
  173. package/jev/mcp.json +4 -0
  174. package/jev/plugin.json +44 -0
  175. package/jev/skills/jev/SKILL.md +308 -0
  176. package/jev/skills/jev/references/cookbooks.md +197 -0
  177. package/jev/skills/jev/references/jaggedness.md +135 -0
  178. package/jev/skills/jev/references/javascript-sdk.md +146 -0
  179. package/jev/skills/jev/references/patterns.md +123 -0
  180. package/jev/skills/jev/references/primitives-reference.md +187 -0
  181. package/langfuse/plugin.json +22 -0
  182. package/meilisearch/mcp.json +4 -0
  183. package/meilisearch/plugin.json +54 -0
  184. package/meilisearch/providers/meilisearch.mjs +651 -0
  185. package/meilisearch/skills/meilisearch/SKILL.md +43 -0
  186. package/meilisearch/tovu-search-providers.json +10 -0
  187. package/netlify/NOTES.md +13 -0
  188. package/netlify/mcp.json +4 -0
  189. package/netlify/plugin.json +47 -0
  190. package/netlify/skills/netlify/SKILL.md +39 -0
  191. package/netlify/targets/netlify.mjs +384 -0
  192. package/netlify/tovu-consent.json +6 -0
  193. package/netlify/tovu-deploy-targets.json +163 -0
  194. package/opentelemetry/mcp.json +4 -0
  195. package/opentelemetry/plugin.json +52 -0
  196. package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
  197. package/package.json +161 -6
  198. package/posthog/mcp.json +4 -0
  199. package/posthog/plugin.json +46 -0
  200. package/posthog/skills/posthog/SKILL.md +36 -0
  201. package/railway/deploy-configs/railway.mjs +135 -0
  202. package/railway/deploy-ops/railway.mjs +167 -0
  203. package/railway/mcp.json +4 -0
  204. package/railway/plugin.json +45 -0
  205. package/railway/skills/railway/SKILL.md +66 -0
  206. package/railway/tovu-deploy-configs.json +16 -0
  207. package/railway/tovu-deploy-ops.json +11 -0
  208. package/render/deploy-configs/render.mjs +141 -0
  209. package/render/deploy-ops/render.mjs +152 -0
  210. package/render/mcp.json +4 -0
  211. package/render/plugin.json +47 -0
  212. package/render/skills/render/SKILL.md +63 -0
  213. package/render/tovu-deploy-configs.json +16 -0
  214. package/render/tovu-deploy-ops.json +11 -0
  215. package/resend/NOTES.md +52 -0
  216. package/resend/adapters/resend.mjs +161 -0
  217. package/resend/lib/domains.mjs +137 -0
  218. package/resend/lib/errors.mjs +25 -0
  219. package/resend/lib/feedback.mjs +118 -0
  220. package/resend/mcp.json +13 -0
  221. package/resend/plugin.json +192 -0
  222. package/resend/skills/resend/SKILL.md +107 -0
  223. package/resend/tovu-mail-adapters.json +22 -0
  224. package/s3-compatible/NOTES.md +11 -0
  225. package/s3-compatible/mcp.json +4 -0
  226. package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
  227. package/s3-compatible/plugin.json +56 -0
  228. package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
  229. package/s3-compatible/targets/s3-compatible.mjs +1054 -0
  230. package/s3-compatible/tovu-deploy-targets.json +432 -0
  231. package/s3-compatible/tovu-object-stores.json +29 -0
  232. package/sentry/mcp.json +4 -0
  233. package/sentry/plugin.json +49 -0
  234. package/sentry/skills/sentry/SKILL.md +34 -0
  235. package/shopify/mcp.json +4 -0
  236. package/shopify/plugin.json +22 -0
  237. package/shopify/skills/shopify/SKILL.md +103 -0
  238. package/shopify/skills/shopify/references/catalog-sync.md +74 -0
  239. package/shopify/skills/shopify/references/domains.md +26 -0
  240. package/shopify/skills/shopify/references/live-storefront.md +34 -0
  241. package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
  242. package/site-compliance/mcp.json +4 -0
  243. package/site-compliance/plugin.json +34 -0
  244. package/site-compliance/skills/site-compliance/SKILL.md +220 -0
  245. package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
  246. package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
  247. package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
  248. package/site-import/mcp.json +4 -0
  249. package/site-import/plugin.json +41 -0
  250. package/site-import/skills/site-import/SKILL.md +232 -0
  251. package/site-import/skills/site-import/references/content-mapping.md +166 -0
  252. package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
  253. package/site-import/skills/site-import/references/theme-extraction.md +34 -0
  254. package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  255. package/slide-design/mcp.json +4 -0
  256. package/slide-design/plugin.json +26 -0
  257. package/slide-design/skills/slide-design/SKILL.md +103 -0
  258. package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
  259. package/slide-design/skills/slide-design/references/html-deck.md +175 -0
  260. package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
  261. package/slide-design/skills/slide-design/references/review.md +93 -0
  262. package/slide-design/skills/slide-design/references/storyline.md +118 -0
  263. package/stripe/plugin.json +22 -0
  264. package/supabase/mcp.json +26 -0
  265. package/supabase/plugin.json +78 -0
  266. package/supabase/skills/supabase/SKILL.md +169 -0
  267. package/supabase/skills/supabase/references/failure-modes.md +101 -0
  268. package/ui-ux-design/CHANGELOG.md +28 -0
  269. package/ui-ux-design/LICENSE +201 -0
  270. package/ui-ux-design/NOTICE +14 -0
  271. package/ui-ux-design/README.md +62 -0
  272. package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
  273. package/ui-ux-design/mcp.json +4 -0
  274. package/ui-ux-design/plugin.json +26 -0
  275. package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
  276. package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
  277. package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
  278. package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
  279. package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
  280. package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
  281. package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
  282. package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
  283. package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
  284. package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
  285. package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
  286. package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
  287. package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
  288. package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
  289. package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
  290. package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
  291. package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
  292. package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
  293. package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
  294. package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  295. package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
  296. package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  297. package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
  298. package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
  299. package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
  300. package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
  301. package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  302. package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
  303. package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
  304. package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
  305. package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
  306. package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
  307. package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
  308. package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
  309. package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
  310. package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
  311. package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
  312. package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
  313. package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
  314. package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
  315. package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
  316. package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
  317. package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
  318. package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
  319. package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
  320. package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
  321. package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
  322. package/vercel/NOTES.md +23 -0
  323. package/vercel/mcp.json +4 -0
  324. package/vercel/object-stores/vercel-blob.mjs +147 -0
  325. package/vercel/plugin.json +47 -0
  326. package/vercel/skills/vercel/SKILL.md +48 -0
  327. package/vercel/targets/vercel.mjs +586 -0
  328. package/vercel/tovu-consent.json +6 -0
  329. package/vercel/tovu-deploy-targets.json +219 -0
  330. package/vercel/tovu-object-stores.json +10 -0
  331. package/wordpress/NOTES.md +33 -0
  332. package/wordpress/plugin.json +30 -0
  333. package/wordpress/skills/wordpress/SKILL.md +43 -0
  334. package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
  335. package/wordpress/skills/wordpress/references/subdomain.md +66 -0
@@ -0,0 +1,234 @@
1
+ # UI Loop
2
+
3
+ This is the canonical self-review and iteration reference for page and screen
4
+ design. `ui-ux-design` owns it. Other skills and agents point here instead of
5
+ copying its questions or maintaining separate design checklists.
6
+
7
+ ## Choose The Mode
8
+
9
+ | Mode | Use it when | Evidence boundary |
10
+ |---|---|---|
11
+ | **Design Intent** | Creating a new surface, writing a design spec, or working without verified browser automation | Answer the eight Core questions from the brief, product constraints, and available artifacts. State assumptions; do not claim rendered verification. |
12
+ | **Rendered Iteration** | An existing or implemented surface can be opened with verified `browser_automation` | Answer every Core question and rendered check from browser evidence at the relevant viewports and states. |
13
+
14
+ For every page or screen creation, redesign, audit, or visual-polish task, run
15
+ Design Intent mode before finalizing the direction. Add Rendered Iteration mode
16
+ when the browser capability is verified. If an existing surface cannot be rendered,
17
+ finish the Design Intent pass and provide specific manual checks for the unresolved
18
+ rendered items.
19
+
20
+ This is an internal design gate, not a questionnaire to push onto the user. Ask the
21
+ user only for missing product or brand information that would materially change the
22
+ direction. A weak or uncertain answer means revise, state an assumption, or record a
23
+ tradeoff; do not silently count it as a pass.
24
+
25
+ When Programmer runs Rendered Iteration, treat Premium quality and trust plus
26
+ Restraint and motion as conformance checks against the approved design/spec, not as
27
+ permission to invent new visual direction. If an honest answer requires a taste
28
+ decision Programmer does not own, stop and request Web Design routing.
29
+
30
+ ## Canonical Review Checklist
31
+
32
+ In Design Intent mode, answer the bold **Core** question in each category. In
33
+ Rendered Iteration mode, answer the Core question and every nested check with
34
+ `PASS`, `N/A`, or a concrete observation and next correction. Do not apply a fixed
35
+ numeric cap to colors, type styles, or animation; require every added element to
36
+ earn its place in this product and context.
37
+
38
+ ### 1. Purpose and first view
39
+
40
+ **Core:** Can the target user tell within a few seconds what this page or screen is,
41
+ who it is for, why it matters, and what to do next?
42
+
43
+ Rendered checks:
44
+
45
+ - On a marketing page, the hero teaches the offer clearly while creating the
46
+ intended first impression; it does not become vague in the name of looking premium.
47
+ - The headline, supporting copy, visual, and primary action reinforce the same idea.
48
+ - On an app or tool screen, the first view makes the current context, status, key
49
+ task, and next decision clear instead of imitating a marketing hero.
50
+
51
+ ### 2. Narrative and copy
52
+
53
+ **Core:** Does every section or region have one clear job, form a coherent story,
54
+ and use no more copy than the user needs to understand or decide?
55
+
56
+ Rendered checks:
57
+
58
+ - The headings alone tell a coherent story when the page is skimmed.
59
+ - Sections explain, prove, differentiate, answer an objection, or convert in an
60
+ order that matches the user's decision path.
61
+ - Repeated, generic, internal, jargon-heavy, or non-decision-changing copy is removed.
62
+ - Paragraphs, lists, labels, and line lengths are easy to scan, with enough whitespace
63
+ to separate ideas without making the page feel disconnected.
64
+
65
+ ### 3. Hierarchy, navigation, and action
66
+
67
+ **Core:** Is there an obvious focal point, reading order, and primary action without
68
+ competing calls to action, confusing navigation, or decorative noise?
69
+
70
+ Rendered checks:
71
+
72
+ - One primary action is visually dominant and secondary actions are subordinate.
73
+ - The next step appears where the user is likely to decide, including a clear ending
74
+ to the page or task.
75
+ - Navigation labels, links, controls, and interaction cues are understandable without
76
+ guessing, and the critical path has no obvious dead end.
77
+ - Scale, contrast, proximity, and alignment move the eye through the interface in the
78
+ intended order.
79
+
80
+ ### 4. Visual cohesion
81
+
82
+ **Core:** Do typography, spacing, color, imagery, icons, depth, and component
83
+ treatments feel like one intentional system rather than a collection of effects?
84
+
85
+ Rendered checks:
86
+
87
+ - Typography, spacing, alignment, content widths, and section rhythm are consistent.
88
+ - Palette, type choices, imagery, icon style, radii, borders, shadows, and surfaces
89
+ feel as though they belong to the same product.
90
+ - Unnecessary colors, type treatments, cards, effects, and competing focal points
91
+ have been removed.
92
+
93
+ ### 5. Premium quality and trust
94
+
95
+ **Core:** Does the design feel specific, credible, and polished for this audience
96
+ rather than generic, template-like, or expensive-looking but unclear?
97
+
98
+ Rendered checks:
99
+
100
+ - The page has a product- and audience-relevant point of view or focal idea.
101
+ - Images and visual assets are sharp, purposefully cropped, context-relevant, and do
102
+ useful work such as explaining, proving, guiding, or differentiating.
103
+ - Important claims use truthful, specific proof rather than filler, invented
104
+ testimonials, generic logos, unsupported numbers, or placeholder content.
105
+ - The final section, completion state, or task ending feels deliberate and leaves a
106
+ clear next action.
107
+
108
+ ### 6. Restraint and motion
109
+
110
+ **Core:** Is every additional color, type style, effect, and animation earning its
111
+ place through meaning, feedback, orientation, or brand character?
112
+
113
+ Rendered checks:
114
+
115
+ - Each animation improves feedback, orientation, sequence, or brand expression.
116
+ - Simultaneous, repeated, scroll-driven, and decorative motions remain subordinate
117
+ to the content and action.
118
+ - The experience remains understandable and polished with reduced motion, and motion
119
+ stays smooth at the tested mobile viewport.
120
+
121
+ ### 7. Responsive behavior and states
122
+
123
+ **Core:** Does the experience preserve its story, hierarchy, and usability across
124
+ relevant viewports and interaction states?
125
+
126
+ Design Intent prompts — answer these while designing a web page, before an
127
+ implementation or browser session exists:
128
+
129
+ - What must the first mobile viewport communicate, and which primary action must
130
+ remain discoverable there?
131
+ - How do the hero, section order, grids, columns, cards, and supporting proof stack or
132
+ reflow without changing the story?
133
+ - How do type scale, line length, spacing, density, imagery, and crop behavior change
134
+ at narrow widths?
135
+ - Which desktop affordances need a touch-safe alternative, and which navigation,
136
+ form, overlay, table, media, or sticky/fixed patterns are likely mobile risks?
137
+ - What may simplify or move later on mobile without hiding essential meaning,
138
+ evidence, controls, or recovery paths?
139
+
140
+ For an implemented website or web app, load `chrome-mobile-test-matrix.md` after
141
+ browser preflight verifies `browser_automation = enabled` when the task can affect
142
+ responsive behavior. Its named viewports and interaction paths are the required
143
+ operational mobile pass; otherwise record `CHROME_NOT_VERIFIED` and manual checks.
144
+ The general checks below do not replace the matrix when it can run.
145
+
146
+ Rendered checks:
147
+
148
+ - Mobile preserves the story order with no overflow, clipping, tiny targets, awkward
149
+ wrapping, or interaction that depends on hover.
150
+ - Wider screens keep intentional content widths and whitespace instead of becoming
151
+ stretched, sparse, or disconnected.
152
+ - At phone sizes, scroll by touch through every pin, `stacking-cards`, and
153
+ `horizontal-scroll` section: scroll does not stall or trap, pins are not overlong, a
154
+ horizontal track does not hijack vertical swipes, and pinned content fits the visible
155
+ viewport including fixed bars. Only if a section really fights scrolling, fix it or
156
+ give that section a phone treatment, and record why.
157
+ - Where applicable, default, hover, focus, active, disabled, loading, empty, error,
158
+ and success states are coherent and visually distinguishable.
159
+
160
+ ### 8. Accessibility, performance, and final craft
161
+
162
+ **Core:** Is the design readable, accessible, fast-feeling, and complete without
163
+ sacrificing the original user intent or existing behavior?
164
+
165
+ Rendered checks:
166
+
167
+ - The critical path works by keyboard with visible focus, and color is not the only
168
+ carrier of meaning.
169
+ - Contrast, readability, zoom behavior, semantics, and touch-target size are
170
+ acceptable in the rendered experience.
171
+ - The page feels fast, stable, and responsive, without obvious layout shift,
172
+ blocking media, janky effects, or visual weight that exceeds its value.
173
+ - No final craft defects remain: misalignment, inconsistent edges, accidental gaps,
174
+ widows, truncation, placeholders, broken assets, or unfinished copy.
175
+ - Visual changes preserve the original task, application behavior, guards, and
176
+ product constraints rather than merely making the surface look more polished.
177
+
178
+ ## Rendered Change → Observe Loop
179
+
180
+ Use this only after `browser-live-analysis` verifies `browser_automation = enabled`.
181
+
182
+ 1. Start the target app and identify the visual target from the spec, reference, or
183
+ user description.
184
+ 2. For a broad redesign, capture a baseline against the Canonical Review Checklist.
185
+ For a narrow fix, identify the categories the change can affect.
186
+ 3. Make one focused presentation-layer change.
187
+ 4. Navigate or interact to render it, then capture a screenshot or inspect the DOM,
188
+ computed styles, accessibility tree, console, and network evidence relevant to
189
+ the claim.
190
+ 5. Compare the observation with the target. Diagnose from the rendered evidence,
191
+ correct the failed item, and repeat.
192
+ 6. Before visual convergence, run every applicable rendered check at the primary
193
+ desktop and mobile viewports and any task-specific breakpoint or state.
194
+ 7. Record remaining items as `N/A`, an explicit user-approved tradeoff, or an
195
+ out-of-scope seam; never turn an unobserved claim into a pass.
196
+
197
+ Do not run the complete checklist after every small edit. Use the current failed
198
+ item as the hot-loop target, then run the full pass at convergence.
199
+
200
+ If Programmer's ambient fast-feedback watcher
201
+ (`harness-engineering/quality/programmer-fast-feedback.md`) is running, do not let its
202
+ output interrupt the hot Change → Observe loop. Consume its stable-failure signal
203
+ during Reconciliation And Handoff.
204
+
205
+ ## Convergence And Pass Budget
206
+
207
+ - One complete Design Intent or rendered checklist pass is required at convergence.
208
+ - Run a second complete pass only when the first pass caused a material revision,
209
+ reconciliation changed visible behavior, or the user requested another example
210
+ or critique round.
211
+ - Do not run more than two complete review passes without explicit user approval.
212
+ Focused Change → Observe corrections inside a pass do not count as additional
213
+ complete passes. Track this separately from the Web Design persona's optional
214
+ concept-critique pass budget.
215
+ - Classify unresolved items as a blocker (clarity, usability, accessibility, or
216
+ behavior), a quality issue, or optional polish. After two passes, stop cosmetic
217
+ cycling: diagnose the underlying constraint and ask for direction when a blocker
218
+ cannot be resolved within scope.
219
+ - Converge when blockers are resolved and every remaining item is an explicit
220
+ user-approved tradeoff, an out-of-scope seam, or optional polish that does not
221
+ justify another pass.
222
+
223
+ ## Reconciliation And Handoff
224
+
225
+ After the rendered result is visually correct:
226
+
227
+ 1. Run the relevant type checker, linter, tests, and accessibility checks.
228
+ 2. Re-open the final browser state after reconciliation fixes.
229
+ 3. Report the route and viewports observed, the meaningful visual evidence, the
230
+ reconciliation results, and any unresolved tradeoffs or manual checks.
231
+
232
+ When only Design Intent mode was possible, label the result as design-reviewed but
233
+ not rendered-verified. Do not claim that a page “looks correct” from static code or
234
+ a design spec alone.
@@ -0,0 +1,54 @@
1
+ # Visual Storytelling
2
+
3
+ Use this reference for marketing pages, explainers, campaign surfaces, infographics, and interfaces where narrative sequence materially affects comprehension.
4
+
5
+ This file owns narrative framing and visual-proof selection. `ui-loop.md` owns the
6
+ generic clarity, hierarchy, motion, and final rendered review.
7
+
8
+ ## Core Rule
9
+
10
+ A narrative surface needs an intentional sequence, not just stacked sections.
11
+
12
+ ## Narrative Frame
13
+
14
+ Define:
15
+
16
+ 1. setup: what the user understands first
17
+ 2. tension/problem: what is difficult, costly, or unclear
18
+ 3. resolution: how the product or feature resolves it
19
+ 4. proof: why the claim is credible
20
+ 5. action: what the user should do next
21
+
22
+ ## Suitable Use Cases
23
+
24
+ - landing pages
25
+ - product launches
26
+ - case-study pages
27
+ - data storytelling
28
+ - onboarding sequences
29
+ - scroll-based explainers
30
+
31
+ ## Information Design Rules
32
+
33
+ - keep visual proof close to the claim it supports
34
+ - select charts for comparison clarity, not decoration
35
+ - use progressive disclosure where density is high
36
+
37
+ ## Visual Proof Options
38
+
39
+ - screenshots
40
+ - before/after comparisons
41
+ - metrics callouts
42
+ - testimonials
43
+ - diagrams
44
+ - annotated flows
45
+
46
+ ## Data Visualization Rules
47
+
48
+ - choose the simplest chart that answers the question
49
+ - label directly when possible
50
+ - do not rely on color alone
51
+ - use narrative annotations sparingly and intentionally
52
+
53
+ Select proof that directly supports the narrative claim; the UI Loop determines
54
+ whether it is clear, credible, restrained, and well composed in the final surface.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: vercel-web-design-guidelines
3
+ description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
4
+ metadata:
5
+ author: vercel
6
+ version: "1.0.0"
7
+ argument-hint: <file-or-pattern>
8
+ ---
9
+
10
+ # Web Interface Guidelines
11
+
12
+ Review files for compliance with Web Interface Guidelines.
13
+
14
+ ## How It Works
15
+
16
+ 1. Fetch the latest guidelines from the source URL below
17
+ 2. Read the specified files (or prompt user for files/pattern)
18
+ 3. Check against all rules in the fetched guidelines
19
+ 4. Output findings in the terse `file:line` format
20
+
21
+ ## Guidelines Source
22
+
23
+ Fetch fresh guidelines before each review:
24
+
25
+ ```
26
+ https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
27
+ ```
28
+
29
+ Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
30
+
31
+ ## Usage
32
+
33
+ When a user provides a file or pattern argument:
34
+ 1. Fetch guidelines from the source URL above
35
+ 2. Read the specified files
36
+ 3. Apply all rules from the fetched guidelines
37
+ 4. Output findings using the format specified in the guidelines
38
+
39
+ If no files specified, ask the user which files to review.
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: web-compliance
3
+ description: Screen website features for privacy, consent, accessibility and policy risks using observed evidence; identify uncertainty for specialist review, without certifying legal compliance.
4
+ ---
5
+
6
+ # Web Compliance
7
+
8
+ ## Purpose
9
+ Provide a practical compliance checklist for website-facing features so review agents can consistently catch legal and policy risks before release.
10
+
11
+ ## Scope
12
+ This skill is a risk-screening layer for product and engineering workflows, not legal advice. It helps teams surface issues early and escalate to legal/privacy/security reviewers when needed.
13
+
14
+ ## Jurisdiction Baseline
15
+ Apply checks based on the strictest applicable region for the release scope.
16
+
17
+ - EU/EEA: GDPR + ePrivacy (opt-in consent for non-essential cookies/tracking)
18
+ - UK: UK GDPR + PECR (similar consent posture to EU)
19
+ - California: CCPA/CPRA (notice + opt-out model for "sale/share" contexts)
20
+ - Canada: PIPEDA/CASL (privacy + strong marketing consent requirements)
21
+ - US (SMS): TCPA constraints for promotional SMS consent and disclosures
22
+
23
+ If target regions are unknown, mark as `high` uncertainty and escalate for legal confirmation before launch.
24
+
25
+ ## Use When
26
+ - Feature introduces forms, tracking, cookies, analytics, personalization, ads, or user-generated content
27
+ - Feature changes terms, pricing, claims, consent text, email/SMS capture, account creation, or account deletion flows
28
+ - Feature impacts regional availability or age-restricted experiences
29
+
30
+ ## Core Checklist
31
+
32
+ ### Privacy and Data Handling
33
+ - Personal data collection points are explicit and minimal for the feature goal
34
+ - Sensitive/special-category data is identified and handled with elevated controls where required (for example: health data, racial/ethnic origin, religious beliefs, political opinions, genetic data, biometric data, sexual orientation, trade union membership, precise geolocation where regulated)
35
+ - Privacy notice and just-in-time disclosures are present where data is collected
36
+ - Consent and preference choices are explicit where required (no hidden defaults)
37
+ - Data retention/deletion expectations are reflected in UX copy and flow behavior
38
+ - Data subject request (DSR) mechanisms exist and are usable for access/export/deletion/portability where required
39
+ - DSR identity verification and response-path UX are defined (do not rely on policy copy alone)
40
+ - DSR flow communicates expected response timing/status updates where required (for example: GDPR typically 1 month with permitted extension; CCPA typically 45 days with permitted extension)
41
+ - Frontend collection fields and backend validation contract align (no unexpected extra data accepted)
42
+ - Cross-border data transfer implications are identified for relevant vendors/services and escalated when transfer mechanism evidence is unclear
43
+ - Sensitive fields use safe defaults for storage/autofill behavior appropriate to risk
44
+
45
+ ### Tracking and Consent
46
+ - Non-essential tracking is gated behind consent where required
47
+ - Consent state is honored across page loads and third-party tags
48
+ - "Reject" and "Manage preferences" paths are as visible as "Accept"
49
+ - Consent withdrawal/revocation is as easy and discoverable as consent grant where required
50
+ - Consent actions are auditable (timestamp, policy/version context, and scope) where required
51
+ - No non-essential cookies/tags/pixels fire before valid consent in opt-in regions
52
+ - Consent categories are explicit (for example: necessary, functional, analytics, marketing)
53
+ - Consent UI has no pre-checked boxes and no coercive "cookie wall" patterns where prohibited
54
+ - Region-based consent behavior is enforced server/edge-side, not only via frontend display toggles
55
+ - Push notification permissions are requested with clear purpose/context and respect prior denial/dismissal patterns
56
+
57
+ ### Claims and Marketing Content
58
+ - Product/marketing claims are specific and supportable (avoid unverifiable absolutes)
59
+ - Pricing, trial, and renewal details are clear in the same flow where commitment happens
60
+ - Required disclosures are placed near relevant calls to action
61
+ - Subscription cancellation path is at least as discoverable and easy as sign-up
62
+ - Cancellation is available through the same primary medium as sign-up where required (for example, online sign-up implies online cancellation path)
63
+ - Negative option billing/auto-renew enrollment uses explicit affirmative consent separate from bundled legal text where required
64
+ - Free-trial to paid conversion terms are explicit before commitment
65
+ - Material ToS/pricing/renewal-term changes trigger proactive user notice and re-consent/acknowledgment checks where required
66
+
67
+ ### Email/SMS Capture and Messaging
68
+ - Email capture flow includes clear sender identity and functional unsubscribe path
69
+ - SMS capture includes explicit consent language, program identity, and opt-out instructions where required
70
+ - Messaging consent scope matches actual campaign behavior (no silent purpose expansion)
71
+
72
+ ### Third-Party Scripts and Vendors
73
+ - New third-party scripts/SDKs/pixels/iframes are inventoried in the change review
74
+ - Data-sharing impact is assessed as a potential new vendor/subprocessor risk
75
+ - Vendor data flows are reflected in disclosures/policies where required
76
+ - Non-essential third-party scripts are technically blocked until consent state permits execution
77
+
78
+ ### User Rights and Account Controls
79
+ - Account creation, sign-in, and recovery flows avoid dark patterns (confirm-shaming, roach motel, hidden costs, forced continuity)
80
+ - Account deletion/deactivation flow is discoverable and not materially harder than sign-up
81
+ - Contact and complaint/reporting channels are visible for regulated or trust-sensitive features
82
+ - If automated decisioning materially affects users (for example eligibility, ranking, moderation outcomes), disclosure and human-review escalation path are present where required
83
+ - For personalization/targeting profiles, objection and opt-out controls are discoverable and honored where required
84
+
85
+ ### Age-Restricted Experiences
86
+ - Age gate behavior is neutral and non-deceptive
87
+ - Child-directed and "actual knowledge of minor user" risk cases are flagged for legal review before release
88
+ - Data handling and consent flows for minors are not inferred; require explicit policy/legal alignment
89
+
90
+ ### Accessibility and Fairness
91
+ - Compliance-related controls are usable with keyboard and assistive technologies
92
+ - Critical disclosures are not conveyed by color alone
93
+ - Consent and policy controls are understandable at normal reading level
94
+ - For EU-market digital products, include European Accessibility Act (EAA) applicability check in addition to WCAG baseline validation
95
+
96
+ ### UGC and Platform Governance
97
+ - If user-generated content is in scope, reporting, enforcement notice, and appeal pathways are defined where required
98
+ - Recommender/ranking controls avoid manipulative defaults and are communicated in clear user-facing terms
99
+
100
+ ## Output Contract
101
+ When this skill is applied, output should include:
102
+ - Findings list with `risk_level` (`high`, `medium`, `low`)
103
+ - Exact file/flow references
104
+ - User-facing and regulatory impact
105
+ - Recommended remediation or escalation target (legal/privacy/security/product)
106
+ - Jurisdiction assumptions used for each finding
107
+ - Verification evidence type (`code`, `config`, `network`, `ui-copy`, `flow-path`)
108
+ - Explicit uncertainty notes when legal interpretation is required
109
+ - For `high` and `medium` findings, add audit-style gap framing:
110
+ - `control_area`
111
+ - `current_state`
112
+ - `target_state`
113
+ - `remediation_steps`
114
+ - `estimated_effort`
115
+ - `evidence_needed`
116
+
117
+ ## Audit-Style Evidence Layer
118
+ - Use audit-style gap framing when the feature touches consent logging, DSR flows, retention/deletion behavior, vendor/script controls, cancellation parity, or age-gating.
119
+ - If multiple findings share the same root cause, group them into one remediation cluster and list shared evidence needed.
120
+ - If evidence cannot be verified from code or config, mark it as `missing evidence` rather than assuming compliance.
121
+ - When useful, load `<AI_DEV_SHOP_ROOT>/skills/web-compliance/references/audit-evidence.md` for gap templates and evidence-matrix structure.
122
+
123
+ ## Escalation Routing Heuristics
124
+ - Route to `legal` for jurisdiction interpretation, cross-border transfer mechanism questions, ToS/pricing term changes, marketing claims substantiation, and minor/age-gating edge cases.
125
+ - Route to `privacy` for consent model mismatches, DSR/portability flow gaps, profiling objection controls, retention/deletion mismatches, and disclosure scope misalignment.
126
+ - Route to `security` for backend/edge enforcement failures (for example pre-consent tag firing), identity-verification weaknesses in DSR flows, and third-party data exfiltration risk.
127
+ - Route to `product` for UX dark patterns, cancellation discoverability parity, disclosure placement/copy clarity, and funnel-level remediation sequencing.
128
+ - If a finding spans multiple domains, assign primary owner by root cause and list secondary owners explicitly.
129
+
130
+ ## Guardrails
131
+ - Do not present this skill as legal advice
132
+ - Do not block release on low-confidence assumptions; escalate with explicit uncertainty
133
+ - Prefer concrete evidence (copy text, UI path, config behavior) over generic warnings
134
+ - Do not claim certification or framework readiness from website-surface checks alone
@@ -0,0 +1,59 @@
1
+ # Audit Evidence
2
+
3
+ Use this reference when `web-compliance` findings need stronger remediation framing or evidence collection structure.
4
+
5
+ ## When to Use
6
+
7
+ - medium or high risk findings
8
+ - consent and tracking controls
9
+ - DSR/export/delete/account-control flows
10
+ - subscription or cancellation parity
11
+ - vendor/script introductions
12
+ - age-gating and regulated onboarding flows
13
+
14
+ ## Gap Record Template
15
+
16
+ For each medium/high finding, capture:
17
+
18
+ - `control_area`: short label for the compliance concern
19
+ - `current_state`: what the product does today
20
+ - `target_state`: what must be true for launch
21
+ - `remediation_steps`: concrete next actions
22
+ - `estimated_effort`: small, medium, large or time estimate
23
+ - `evidence_needed`: what must be shown to verify the fix
24
+
25
+ Example:
26
+
27
+ ```yaml
28
+ control_area: consent-logging
29
+ current_state: Analytics consent banner is shown, but no evidence of consent timestamp or policy-version capture exists.
30
+ target_state: Consent grant, rejection, and withdrawal are recorded with timestamp, policy version, and scope.
31
+ remediation_steps:
32
+ - Add server-side consent event persistence
33
+ - Include policy/version identifier in stored consent records
34
+ - Add withdrawal path and verify revocation updates persisted state
35
+ estimated_effort: medium
36
+ evidence_needed:
37
+ - code path for persistence
38
+ - database schema or event payload
39
+ - UI flow showing withdrawal path
40
+ - test or network proof that records are written
41
+ ```
42
+
43
+ ## Evidence Matrix
44
+
45
+ When multiple findings exist, summarize expected evidence with:
46
+
47
+ | Control Area | Evidence Type | Source | Collection Method | Verification Step |
48
+ |---|---|---|---|---|
49
+ | Consent logging | `code`, `network`, `config` | backend endpoint + client flow | inspect code and capture browser network | verify grant/reject/withdraw all persist |
50
+ | Pre-consent blocking | `network`, `config` | tag manager or edge config | browser/network trace before consent | confirm no non-essential tags fire |
51
+ | Cancellation parity | `ui-copy`, `flow-path` | account settings flow | walkthrough + screenshots | compare sign-up vs cancel discoverability |
52
+
53
+ ## Evidence Rules
54
+
55
+ - Prefer direct evidence over policy promises.
56
+ - Mark missing proof as `missing evidence`.
57
+ - Group related findings when one remediation fixes several symptoms.
58
+ - Do not infer backend controls from frontend copy alone.
59
+ - Do not mark a control complete unless the operating behavior can be shown.
@@ -0,0 +1,23 @@
1
+ # Vercel — implementation notes
2
+
3
+ Host-specific notes moved out of the first host's core comments (2026-10-22, vendor-to-plugins). Core describes these
4
+ behaviours generically; the vendor detail lives here.
5
+
6
+ - **Account label.** The verified account label is the Vercel `username`.
7
+ - **Project name.** The publish label seeds the Vercel project name (sanitized by `safeVercelProjectName`).
8
+ - **Security headers.** Rendered into a root `vercel.json` from the publish's `responseHeaders`
9
+ (`targets/vercel.mjs`).
10
+ - **Base path.** Served at the root, so no base path is set.
11
+ - **Deploy poll.** A publish blocks on Vercel's deployment poll (up to about a minute).
12
+ - **Errors.** No code path puts `credential.token` into a `DeployError` message (verified when core's
13
+ adapter boundary was written); core's message-only boundary holds regardless.
14
+ - **Share links (Vercel Blob).** `object-stores/vercel-blob.mjs` is the plugin's artifact store for site
15
+ export share links, registered through `tovu-object-stores.json` as provider `vercel` so the share path
16
+ resolves the saved Vercel connection. It needs the optional `blobToken` credential field (a Blob
17
+ store's read-write token); without it the share falls back to download-only. Wire format mirrors
18
+ `@vercel/blob` 2.8.2 `put()`/`del()` (API version 13, `x-vercel-blob-access: public` on put) and has
19
+ not been exercised against live Vercel yet. The store's binding is its Blob origin, so revoke only
20
+ deletes through the store the share was put in.
21
+ No random suffix: the `_share/<16-letter token>/` key is the unguessable part and `delete` only gets the key.
22
+ Verify is an anonymous HEAD of `<store>.public.blob.vercel-storage.com/<key>?download=1` checking
23
+ exact size and `application/zip`.
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
3
+ "mcpServers": {}
4
+ }