@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.
- package/CHANGELOG.md +35 -1
- package/NOTICE +14 -0
- package/README.md +35 -14
- package/charts-echarts/plugin.json +39 -0
- package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
- package/charts-recharts/plugin.json +32 -0
- package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
- package/cloudflare/NOTES.md +16 -0
- package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
- package/cloudflare/lib/api.mjs +96 -0
- package/cloudflare/lib/assets.mjs +65 -0
- package/cloudflare/lib/dns.mjs +32 -0
- package/cloudflare/lib/domain-inventory.mjs +61 -0
- package/cloudflare/lib/domain-status.mjs +48 -0
- package/cloudflare/lib/domains.mjs +95 -0
- package/cloudflare/lib/forms.mjs +254 -0
- package/cloudflare/lib/pages-upload.mjs +51 -0
- package/cloudflare/lib/target.mjs +165 -0
- package/cloudflare/lib/workers-upload.mjs +48 -0
- package/cloudflare/lib/zones.mjs +25 -0
- package/cloudflare/mcp.json +4 -0
- package/cloudflare/plugin.json +96 -0
- package/cloudflare/skills/cloudflare/SKILL.md +57 -0
- package/cloudflare/skills/cloudflare/references/domains.md +31 -0
- package/cloudflare/skills/cloudflare/references/pages.md +18 -0
- package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
- package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
- package/cloudflare/skills/cloudflare/references/workers.md +42 -0
- package/cloudflare/targets/cloudflare-pages.mjs +12 -0
- package/cloudflare/targets/cloudflare-workers.mjs +17 -0
- package/cloudflare/tovu-consent.json +6 -0
- package/cloudflare/tovu-deploy-targets.json +630 -0
- package/cloudflare/tovu-form-destinations.json +12 -0
- package/cloudflare/worker/forms-receiver.mjs +249 -0
- package/composio/mcp.json +10 -0
- package/composio/plugin.json +68 -0
- package/composio/skills/composio/SKILL.md +85 -0
- package/dist/core/identity-namespace.d.ts +12 -0
- package/dist/core/identity-namespace.js +20 -0
- package/dist/folder-zip-node.js +29 -7
- package/dist/lifecycle/bundled-digests.js +4 -3
- package/dist/lifecycle/install.d.ts +7 -0
- package/dist/lifecycle/install.js +45 -3
- package/dist/lifecycle/manifest.d.ts +2 -2
- package/dist/lifecycle/manifest.js +5 -3
- package/dist/lifecycle/node.js +2 -0
- package/dist/lifecycle/persistent-state.js +1 -1
- package/dist/lifecycle/ports.d.ts +8 -0
- package/dist/lifecycle/seed-bundled.js +4 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +3 -2
- package/fly/deploy-configs/fly.mjs +115 -0
- package/fly/deploy-ops/fly.mjs +102 -0
- package/fly/mcp.json +4 -0
- package/fly/plugin.json +81 -0
- package/fly/scripts/render-deploy-workflow.mjs +150 -0
- package/fly/skills/fly/SKILL.md +43 -0
- package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
- package/fly/skills/fly/references/fly.template.toml +81 -0
- package/fly/tovu-credential-schemes.json +11 -0
- package/fly/tovu-deploy-configs.json +21 -0
- package/fly/tovu-deploy-ops.json +14 -0
- package/github/deploy-ops/github-actions.mjs +164 -0
- package/github/deployments/github.mjs +415 -0
- package/github/mcp.json +4 -0
- package/github/plugin.json +105 -0
- package/github/skills/github/SKILL.md +249 -0
- package/github/skills/github/references/actions.md +224 -0
- package/github/skills/github/references/auth-and-tokens.md +140 -0
- package/github/skills/github/references/repo-files.md +135 -0
- package/github/skills/github/references/site-backup.md +159 -0
- package/github/skills/github/references/source-control.md +123 -0
- package/github/source-control/backup-push.mjs +242 -0
- package/github/source-control/commit-site.mjs +459 -0
- package/github/source-control/github.mjs +93 -0
- package/github/source-control/write-files.mjs +468 -0
- package/github/tovu-deploy-ops.json +13 -0
- package/github/tovu-source-control.json +117 -0
- package/github-pages/NOTES.md +19 -0
- package/github-pages/mcp.json +4 -0
- package/github-pages/plugin.json +48 -0
- package/github-pages/skills/github-pages/SKILL.md +44 -0
- package/github-pages/targets/github-pages.mjs +543 -0
- package/github-pages/tovu-deploy-targets.json +327 -0
- package/google-login/exports/google-g.svg +1 -0
- package/google-login/exports/sign-in-button.css +68 -0
- package/google-login/exports/sign-in-button.html +4 -0
- package/google-login/mcp.json +4 -0
- package/google-login/plugin.json +59 -0
- package/google-login/skills/google-login/SKILL.md +96 -0
- package/google-login/tovu-login-providers.json +21 -0
- package/google-workspace/README.md +132 -0
- package/google-workspace/form-destinations/README.md +87 -0
- package/google-workspace/form-destinations/dedupe.mjs +43 -0
- package/google-workspace/form-destinations/delivery-result.mjs +69 -0
- package/google-workspace/form-destinations/mapping.mjs +152 -0
- package/google-workspace/form-destinations/sheets.mjs +202 -0
- package/google-workspace/lib/auth.mjs +81 -0
- package/google-workspace/lib/drive-files.mjs +54 -0
- package/google-workspace/lib/form-destination-settings.mjs +72 -0
- package/google-workspace/lib/http.mjs +168 -0
- package/google-workspace/lib/picker-flow.mjs +171 -0
- package/google-workspace/lib/picker-selection.mjs +107 -0
- package/google-workspace/lib/product-state.mjs +93 -0
- package/google-workspace/lib/request-policy.mjs +163 -0
- package/google-workspace/lib/sheets-a1.mjs +79 -0
- package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
- package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
- package/google-workspace/lib/sheets-client.mjs +286 -0
- package/google-workspace/lib/surface-actions.mjs +107 -0
- package/google-workspace/mcp.json +4 -0
- package/google-workspace/plugin.json +77 -0
- package/google-workspace/products.json +12 -0
- package/google-workspace/skills/google-workspace/SKILL.md +82 -0
- package/google-workspace/skills/google-workspace/references/connection.md +102 -0
- package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
- package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
- package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
- package/google-workspace/tools/account-info.mjs +18 -0
- package/google-workspace/tools/sheets/README.md +54 -0
- package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
- package/google-workspace/tools/sheets/copy.mjs +23 -0
- package/google-workspace/tools/sheets/create.mjs +35 -0
- package/google-workspace/tools/sheets/find-replace.mjs +38 -0
- package/google-workspace/tools/sheets/find.mjs +52 -0
- package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
- package/google-workspace/tools/sheets/get.mjs +22 -0
- package/google-workspace/tools/sheets/values-append.mjs +27 -0
- package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
- package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
- package/google-workspace/tools/sheets/values-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-get.mjs +21 -0
- package/google-workspace/tools/sheets/values-update.mjs +26 -0
- package/google-workspace/tools/sheets-admin/README.md +45 -0
- package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
- package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
- package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
- package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
- package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
- package/google-workspace/tools/sheets-admin/format.mjs +70 -0
- package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
- package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
- package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
- package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
- package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
- package/google-workspace/tovu-admin-surfaces.json +63 -0
- package/google-workspace/tovu-agent-tools.json +1178 -0
- package/google-workspace/tovu-connections.json +35 -0
- package/google-workspace/tovu-form-destinations.json +10 -0
- package/google-workspace/ui/README.md +73 -0
- package/google-workspace/ui/connection-panel.handler.mjs +167 -0
- package/google-workspace/ui/connection-panel.html +17 -0
- package/google-workspace/ui/connection-panel.mjs +189 -0
- package/google-workspace/ui/connection-view.mjs +120 -0
- package/google-workspace/ui/destination-panel.handler.mjs +106 -0
- package/google-workspace/ui/destination-panel.html +17 -0
- package/google-workspace/ui/destination-panel.mjs +150 -0
- package/google-workspace/ui/dom.mjs +140 -0
- package/google-workspace/ui/panel.css +170 -0
- package/google-workspace/ui/picker-flow.mjs +87 -0
- package/google-workspace/ui/picker-view.mjs +44 -0
- package/google-workspace/ui/picker.handler.mjs +56 -0
- package/google-workspace/ui/picker.html +17 -0
- package/google-workspace/ui/picker.mjs +88 -0
- package/google-workspace/ui/surface-client.mjs +227 -0
- package/higgsfield-media/mcp.json +9 -0
- package/higgsfield-media/plugin.json +109 -0
- package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
- package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
- package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
- package/jev/mcp.json +4 -0
- package/jev/plugin.json +44 -0
- package/jev/skills/jev/SKILL.md +308 -0
- package/jev/skills/jev/references/cookbooks.md +197 -0
- package/jev/skills/jev/references/jaggedness.md +135 -0
- package/jev/skills/jev/references/javascript-sdk.md +146 -0
- package/jev/skills/jev/references/patterns.md +123 -0
- package/jev/skills/jev/references/primitives-reference.md +187 -0
- package/langfuse/plugin.json +22 -0
- package/meilisearch/mcp.json +4 -0
- package/meilisearch/plugin.json +54 -0
- package/meilisearch/providers/meilisearch.mjs +651 -0
- package/meilisearch/skills/meilisearch/SKILL.md +43 -0
- package/meilisearch/tovu-search-providers.json +10 -0
- package/netlify/NOTES.md +13 -0
- package/netlify/mcp.json +4 -0
- package/netlify/plugin.json +47 -0
- package/netlify/skills/netlify/SKILL.md +39 -0
- package/netlify/targets/netlify.mjs +384 -0
- package/netlify/tovu-consent.json +6 -0
- package/netlify/tovu-deploy-targets.json +163 -0
- package/opentelemetry/mcp.json +4 -0
- package/opentelemetry/plugin.json +52 -0
- package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
- package/package.json +161 -6
- package/posthog/mcp.json +4 -0
- package/posthog/plugin.json +46 -0
- package/posthog/skills/posthog/SKILL.md +36 -0
- package/railway/deploy-configs/railway.mjs +135 -0
- package/railway/deploy-ops/railway.mjs +167 -0
- package/railway/mcp.json +4 -0
- package/railway/plugin.json +45 -0
- package/railway/skills/railway/SKILL.md +66 -0
- package/railway/tovu-deploy-configs.json +16 -0
- package/railway/tovu-deploy-ops.json +11 -0
- package/render/deploy-configs/render.mjs +141 -0
- package/render/deploy-ops/render.mjs +152 -0
- package/render/mcp.json +4 -0
- package/render/plugin.json +47 -0
- package/render/skills/render/SKILL.md +63 -0
- package/render/tovu-deploy-configs.json +16 -0
- package/render/tovu-deploy-ops.json +11 -0
- package/resend/NOTES.md +52 -0
- package/resend/adapters/resend.mjs +161 -0
- package/resend/lib/domains.mjs +137 -0
- package/resend/lib/errors.mjs +25 -0
- package/resend/lib/feedback.mjs +118 -0
- package/resend/mcp.json +13 -0
- package/resend/plugin.json +192 -0
- package/resend/skills/resend/SKILL.md +107 -0
- package/resend/tovu-mail-adapters.json +22 -0
- package/s3-compatible/NOTES.md +11 -0
- package/s3-compatible/mcp.json +4 -0
- package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
- package/s3-compatible/plugin.json +56 -0
- package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
- package/s3-compatible/targets/s3-compatible.mjs +1054 -0
- package/s3-compatible/tovu-deploy-targets.json +432 -0
- package/s3-compatible/tovu-object-stores.json +29 -0
- package/sentry/mcp.json +4 -0
- package/sentry/plugin.json +49 -0
- package/sentry/skills/sentry/SKILL.md +34 -0
- package/shopify/mcp.json +4 -0
- package/shopify/plugin.json +22 -0
- package/shopify/skills/shopify/SKILL.md +103 -0
- package/shopify/skills/shopify/references/catalog-sync.md +74 -0
- package/shopify/skills/shopify/references/domains.md +26 -0
- package/shopify/skills/shopify/references/live-storefront.md +34 -0
- package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
- package/site-compliance/mcp.json +4 -0
- package/site-compliance/plugin.json +34 -0
- package/site-compliance/skills/site-compliance/SKILL.md +220 -0
- package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
- package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
- package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
- package/site-import/mcp.json +4 -0
- package/site-import/plugin.json +41 -0
- package/site-import/skills/site-import/SKILL.md +232 -0
- package/site-import/skills/site-import/references/content-mapping.md +166 -0
- package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
- package/site-import/skills/site-import/references/theme-extraction.md +34 -0
- package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/slide-design/mcp.json +4 -0
- package/slide-design/plugin.json +26 -0
- package/slide-design/skills/slide-design/SKILL.md +103 -0
- package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
- package/slide-design/skills/slide-design/references/html-deck.md +175 -0
- package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
- package/slide-design/skills/slide-design/references/review.md +93 -0
- package/slide-design/skills/slide-design/references/storyline.md +118 -0
- package/stripe/plugin.json +22 -0
- package/supabase/mcp.json +26 -0
- package/supabase/plugin.json +78 -0
- package/supabase/skills/supabase/SKILL.md +169 -0
- package/supabase/skills/supabase/references/failure-modes.md +101 -0
- package/ui-ux-design/CHANGELOG.md +28 -0
- package/ui-ux-design/LICENSE +201 -0
- package/ui-ux-design/NOTICE +14 -0
- package/ui-ux-design/README.md +62 -0
- package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/ui-ux-design/mcp.json +4 -0
- package/ui-ux-design/plugin.json +26 -0
- package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
- package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
- package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
- package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
- package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
- package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
- package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
- package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
- package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
- package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
- package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
- package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
- package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
- package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
- package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
- package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
- package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
- package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
- package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
- package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
- package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
- package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
- package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
- package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
- package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
- package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
- package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
- package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
- package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
- package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
- package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
- package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
- package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
- package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
- package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
- package/vercel/NOTES.md +23 -0
- package/vercel/mcp.json +4 -0
- package/vercel/object-stores/vercel-blob.mjs +147 -0
- package/vercel/plugin.json +47 -0
- package/vercel/skills/vercel/SKILL.md +48 -0
- package/vercel/targets/vercel.mjs +586 -0
- package/vercel/tovu-consent.json +6 -0
- package/vercel/tovu-deploy-targets.json +219 -0
- package/vercel/tovu-object-stores.json +10 -0
- package/wordpress/NOTES.md +33 -0
- package/wordpress/plugin.json +30 -0
- package/wordpress/skills/wordpress/SKILL.md +43 -0
- package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
- 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.
|
package/vercel/NOTES.md
ADDED
|
@@ -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`.
|
package/vercel/mcp.json
ADDED