Pin feedback on any webpage. Hand the JSON to your agent.
Drop a single script tag, and any reviewer can drop pinned comments on real DOM
elements and export the lot as a clean JSON file. This page is the demo. The button
is real.
One script tagZero configWorks on any site
The widget is desktop-only (≥768px). Open this page on a wider screen to use the
floating button.
02 — installation
Give this to your agent.
Paste this prompt into Claude Code, Cursor, or whichever agent runs your repo.
The agent installs the widget, then asks whether you want cloud sync or RLS hardening
and fetches those sub-prompts from GitHub itself. You only ever paste one thing.
Add the CCM Feedback widget to my site. Run this end-to-end — don't make me paste another prompt.
STEP 1 — INSTALL (always)
Find the global layout file (pages/_app.tsx, app/layout.tsx, app.vue, src/app.html, layouts/baseof.html, application.html.erb, base.html — whichever wraps every route). Add this right before </body>:
<script src="https://ccm-feedback-582.netlify.app/w.js" defer></script>
Auto-namespaces by hostname (prod and staging stay isolated). Optional attrs: data-accent="#hex", data-theme="auto", data-debug="true".
Verify by running the dev server and confirming a floating button appears bottom-right on desktop (≥768px).
STEP 2 — ASK ME (after install verifies green)
"The widget is installed in localStorage mode. Want me to also set up:
(a) Cloud sync via Supabase (multi-reviewer, multi-device)?
(b) If yes to (a) — production RLS hardening?"
If I say no to (a), stop and report what you changed.
STEP 3 — FETCH AND EXECUTE SUB-PROMPTS YOURSELF
Don't ask me to paste them. WebFetch each, read cold, execute end-to-end:
(a) https://raw.githubusercontent.com/ccmdesign/ccm-feedback-tool/main/prompts/self-host-supabase.md
(b) https://raw.githubusercontent.com/ccmdesign/ccm-feedback-tool/main/prompts/harden-rls.md
STEP 4 — REPORT
Tell me which files you edited, whether (a) and (b) ran, and any failures.
Notes: widget is desktop-only. If a Supabase key is needed later, ONLY the anon/publishable key is acceptable — never the service-role key.