Internal · One-time setup per tool

Per-tool playbooks

Jump to the tool you use. Each section is a one-time setup that makes the HRF QA gate part of your workflow. Tiers tell you how automated it gets — Auto means zero clicks per page after setup, Semi means one click per page, Manual means copy-paste.

Jump to your tool

Claude Code Auto

Setup time: 30 seconds. After setup: every page Claude Code produces gets validated automatically before being shown to you, and it iterates until it passes.

One-time setup

  1. In your project directory, open or create a file called CLAUDE.md at the root.
  2. Paste the block below at the top of CLAUDE.md.
  3. Save. That's it.
When generating HTML for the Human Rights Foundation (hrf.org) — landing pages, RFPs, program sections, etc. — you must validate the output against the HRF QA gate before showing it to the user. Workflow every time:

1. Produce a candidate HTML.
2. Run: curl -s -X POST https://hrf-qa-1.arcticmind.ai/api/check -H "Content-Type: text/html" --data-binary @candidate.html
3. Parse the JSON response. If verdict is "PASS", return the HTML.
4. If verdict is "FAIL", read the regenerate_prompt field, apply every fix it lists, produce new HTML, go to step 2.
5. Cap at 5 iterations. If still failing, return the latest attempt plus the failure report.

Full rule reference: https://github.com/hurleywhite/hrf-qa-system/blob/main/HRF-AGENT-CONTEXT.md
Voice reference: https://github.com/hurleywhite/hrf-qa-system/blob/main/HRF-VOICE-BRIEF.md

Cursor Auto

Setup time: 30 seconds. After setup: Cursor's agent automatically validates HTML it generates for HRF.

One-time setup

  1. In your project, create .cursor/rules or open Cursor settings → Rules.
  2. Paste the same block as Claude Code (above) into your Cursor rules.
  3. Save.

Codex CLI / OpenAI Codex Auto

Setup time: 30 seconds.

One-time setup

  1. Open your Codex CLI config (usually ~/.codex/config.toml) or the equivalent system prompt field.
  2. Paste the same validation prompt as above.
  3. Save.

ChatGPT Semi-auto

ChatGPT's main chat interface can't reliably make HTTP calls during generation. Two paths: (a) one-click manual via the web UI, or (b) build a custom GPT with API actions.

Easiest: paste & check

  1. Generate HTML in ChatGPT as usual.
  2. Copy the HTML.
  3. Paste it into the HRF QA checker.
  4. If it fails, copy the regenerate prompt back into ChatGPT and ask it to regenerate.
  5. Re-check until PASS.

Power user: custom GPT with the gate as an action

  1. Create a new GPT in ChatGPT → Configure → Actions.
  2. Add an action pointing at https://hrf-qa-1.arcticmind.ai/api/check (POST, accepts { html: string }).
  3. Paste the system prompt from HRF-AGENT-SYSTEM-PROMPT.md into the GPT's instructions.
  4. The GPT now auto-validates every page.

Claude (chat at claude.ai) Semi-auto

Claude's web chat doesn't make HTTP calls during a normal conversation. Use the paste-and-check workflow.

Setup

  1. Add a new Project in Claude.
  2. In the Project Knowledge / Instructions field, paste the HRF agent context. This makes Claude follow the rules up front, fewer iterations.

After it generates

  1. Copy the HTML.
  2. Paste into the checker.
  3. If fail, paste the regenerate prompt back into Claude.

Gemini Semi-auto

Same flow as Claude / ChatGPT chat — Gems can hold instructions but don't make arbitrary HTTP calls.
  1. Create a Gem with the HRF agent context as its instructions.
  2. After generating, paste into the checker.
  3. Paste regenerate prompt back if it fails.

Lovable Manual

Lovable generates entire app skeletons and previews them in a browser. The "HTML" Lovable produces is React/Next.js components — not a body fragment Tony can paste into Elementor as-is.

If you're using Lovable for HRF pages

  1. Reach out to Tony before publishing. Lovable's output isn't directly compatible with Elementor — it needs to be converted to static HTML or hosted separately.
  2. If you want a static-HTML page (the format Tony needs), use ChatGPT, Claude, or the paste-and-check workflow instead. Lovable is best for standalone web apps, not embedded WordPress sections.
  3. If you do export Lovable's HTML and want to validate, paste it into the checker — but expect a lot of failures because Lovable bundles its own framework styles.

Bolt (bolt.new) Manual

Bolt is similar to Lovable — it generates running applications, not embeddable HTML fragments. For HRF Elementor work, see the manual workflow.

Workflow

  1. If you only need an HTML chunk for Elementor, prefer ChatGPT or Claude.
  2. If Bolt is already what you're using, view source on the generated page, copy the body HTML, paste it into the checker.
  3. Iterate via paste-back.

v0 (v0.dev) Manual

v0 generates React components. Same caveats as Lovable / Bolt — not directly Elementor-friendly, but the produced HTML CAN be checked.
  1. Generate a component in v0.
  2. Use "View Source" or export → copy the HTML body.
  3. Paste into the checker.
  4. Iterate via paste-back.

Cassidy AI Auto

Cassidy is built for HTTP integrations. You can wire the gate directly into a Cassidy workflow.

Setup

  1. Create a Cassidy workflow that takes an HTML input.
  2. Add an HTTP step: POST https://hrf-qa-1.arcticmind.ai/api/check with the HTML as the body.
  3. Add a conditional: if response verdict == "FAIL", feed regenerate_prompt back into Cassidy's LLM step, then loop back to the gate check.
  4. Save the workflow. Now any team member can submit HTML to it and get back the passing version.

What if my tool isn't listed?

Use the paste-and-check workflow. It works for any tool that produces HTML:

  1. Get the HTML from your AI tool.
  2. Paste into hrf-qa-1.arcticmind.ai/check.html.
  3. Read the result. If it fails, copy the regenerate prompt and paste back into your AI.
  4. Repeat until PASS.

And fill out the survey so we know to add your tool to this guide.