Doop
Doop is an open-source multiplayer design canvas and design MCP for Claude Code, Codex, and any AI agent. Design side by side with agents — free in beta.
Checks UI copy for a fictional bank before compliance review.
Translation pending
DesignTypeScript · CSSGitHub @krg6xwqOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Checks UI copy for Tembusu Bank, a fictional bank, before it goes to compliance review. It flags personal data, style-guide breaks, risky phrasing and missing disclosures, and produces a report for a person to review. It never approves anything. When the reviewer asks, it drafts a revision from their decisions, and code checks that draft before they see it.
Never paste real customer data. Use placeholders such as
{name},{nric},{phone}or{email}. Everything in this repo is invented.
Open the live demo at copy-precheck.vercel.app. There's nothing to install.
To start again with different copy, select the Copy pre-check logo at the top of the page.
Good to know:
Copy is checked in three layers, in this order:
All rules live in one file, content/rules.yaml. The checker reads it, and the style guide is generated from it, so the two can never disagree.
Needs Node.js 22 or later.
npm install
npm test # run the test set and all other tests
npm run check -- "Earn 2.5% interest. Act now!" --context promo-banner
To run the AI checks too, copy .env.example to .env.local, add an Anthropic API key (create a project-only key with a spend limit), and add --ai:
npm run check -- "Watch your savings grow without lifting a finger." --context promo-banner --ai
.env.local is ignored by git. Never commit a real key.
| Command | What it does |
|---|---|
npm run check -- "copy" [options] | Checks one piece of copy. Add --help for options. Exits with 1 if there's an open blocker. |
npm test | Runs every sample in the test set, plus the engine and validation tests. |
npm run guide | Rebuilds content/style-guide.md from rules.yaml. Run it after changing a rule. |
npm run typecheck | Checks the TypeScript. |
npm run dev | Starts the web page at http://localhost:3000. Reads the API key from .env.local. |
check options:
--context, -c: where the copy appears (button, error, confirmation, promo-banner, rate-card, help-text, notification, email-snippet). Some rules only apply in certain places; without a context, every rule runs.--override, -o: release one personal-data match you've checked isn't personal data, e.g. --override "PD-002|+65 6123 4567|Published overseas line". Name the exact text: any other match from the same rule stays blocked. Repeat the option for more than one.--ai: also run the AI checks with Claude. Needs ANTHROPIC_API_KEY. Each check costs well under a cent.--verbose, -v: also list every rule and whether it ran.--json: print the full report as JSON.The page opens with a form: paste copy (or pick a sample from the test set), choose where it appears, and check it. The results show the copy with flagged words highlighted, then each finding grouped by severity, with why it matters and what to do. Reviewers mark each finding Fix or Dismiss, and override a personal-data match with a reason (the AI checks then run). Once every finding is decided, "Draft a revision" starts the review and rewrite loop above.
Above the results, Edit copy lets the reviewer change the words themselves; the edit is checked as the next round, dismissals carry over, and the report records it as "edited by hand". Clicking the logo in the header starts a new check with different copy, and asks first (offering the report) when there are rounds to lose. Copy text copies the latest version of the copy; Download report saves the full review, every round included, as Markdown.
The check runs on the server, so the API key never reaches the browser. Copy is capped at 1,500 characters, and AI checks have a best-effort rate limit; the real cost cap is the spend limit on the key.
npm run eval measures the checker against the test set and runs the review and rewrite loop on sample emails, with the real model (about US$0.50 a run). Results, and what they show, are in eval/: on the latest run, the code layers matched all 39 samples, the AI checks matched the test set in 92 of 93 runs, the model ignored both prompt-injection samples, and every finding marked Fix was fixed by the draft.
content/rules.yaml. The field reference is at the top of the file.content/test-set.yaml, including a near-miss that should not be flagged.npm run guide, then npm test.If the rules file has a mistake, such as a misspelled severity, a missing field or a broken pattern, the checker stops with a message saying where, rather than skipping the rule.
content/ Rules, test set and style guide (edit these, not code, to change rules)
src/engine/ The checker: loading, validation and the three layers (AI layer in src/engine/ai/,
review and rewrite loop in src/engine/revise/)
src/models/ Connection to Claude (swap this to use a different model)
src/cli/ The `npm run check` command
src/guide/ Generates the style guide from the rules
src/app/ Web page (Next.js)
scripts/ `npm run guide`
tests/ Automated tests