Docs
Install the skill, get a key, run your first experiment. Five minutes.
1 · Create an API key
Create an account (or sign in — usecaseify.com accounts work), then create a key on the dashboard. Export it in the shell where your coding agent runs:
export USECASEIFY_API_KEY=ucfy_gtm_...
Or put it in a gitignored .env . Never commit it.
2 · Install (Claude Code · Codex · Cursor)
From the root of your product's repository:
curl -fsSL https://gtm.usecaseify.com/install.sh | bash
One command covers all three: Claude Code gets skills in .claude/skills/ (slash commands), Codex and Cursor get a marked routing block in AGENTS.md pointing to agent-neutral instructions in .agents/usecaseify-gtm/ — then just say "run the next GTM experiment". The script writes only those paths; read it first if you like.
3 · Run it
- Open your agent in the repo and run
/gtm-next-experiment. It inspects the codebase, asks you three questions, and calls the GTM brain. Speak Japanese to your agent (or ask for it) and the brief and decision will be written in Japanese. - Review
gtm/exp-001/BRIEF.md. Edit the copy if you want — then approve. Starting locks the continue / iterate / kill rules. - Let the agent implement
TASKS.md. Deploy. Wait. - When the reminder fires, run
/gtm-decision. The agent collects the real numbers, you answer two qualitative questions, and the verdict lands in DECISION.md.
Using another agent?
Paste this bootstrap prompt into your agent — it follows the same API flow:
You are working in my product's repository. I want to run one GTM experiment with UseCaseify GTM (https://gtm.usecaseify.com/docs). 1. Read the API reference at https://gtm.usecaseify.com/docs — the base URL is https://gtm.usecaseify.com and my key is in the USECASEIFY_API_KEY environment variable (Authorization: Bearer). 2. Inspect this repository (stack, analytics, signup flow, pricing, existing events). Summarize it as the repo_context object. NEVER include secrets, keys, or customer data. 3. Ask me: my biggest GTM problem right now, product stage, and current users/pricing. If I communicate in Japanese, set "output_language": "ja". 4. POST /api/v1/experiments/generate and poll the job. Write the returned brief_markdown to gtm/exp-<n>/BRIEF.md and tasks_markdown to gtm/exp-<n>/TASKS.md. 5. Walk me through the assumption and experiment. If I approve, POST .../start, save reminder_ics as gtm/exp-<n>/reminder.ics, commit the files, then implement TASKS.md exactly within its stated scope. 6. When I return with results, collect the values listed in TASKS.md "Results to report" from real data only, confirm them with me, POST .../results then .../decision, and write the decision_markdown to gtm/exp-<n>/DECISION.md.
API reference
Base URL https://gtm.usecaseify.com · header Authorization: Bearer ucfy_gtm_... · JSON in, JSON out.
| POST | /api/v1/lock | Register a locally-generated experiment: the server re-validates the guards, timestamps the lock (T0), and publishes the registry page. Free-tier locks are public. |
| POST | /api/v1/report | Close an experiment with its honest outcome (results + verdict + final call), or as `abandoned`. Integrity flags computed server-side. |
| POST | /api/v1/experiments/generate | Hosted generation (we pay the tokens, quota'd): one assumption + one experiment from project info and repo context. Accepts output_language: "en" | "ja". Returns a job to poll. |
| GET | /api/v1/jobs/:id | Poll a job. `succeeded` responses carry the full output (spec + markdown files). |
| POST | /api/v1/experiments/:id/start | Mark as started: locks the decision criteria, returns the calendar reminder (.ics). |
| POST | /api/v1/experiments/:id/results | Submit quantitative + qualitative results when the experiment ends. |
| POST | /api/v1/experiments/:id/decision | Run the Continue / Iterate / Kill analysis on submitted results. Returns a job. |
| POST | /api/v1/decisions/:id/finalize | Record the human's final call (override requires a reason). |
| GET | /api/v1/experiments/:id | Fetch an experiment's state, markdown artifacts, and decisions. |
| GET | /api/v1/me | Verify the key; see quota and active experiments. |
Generation and decision runs are asynchronous: the POST returns 202 with a job_id; poll /api/v1/jobs/:id every 5 seconds until succeeded or failed.
Limits & data handling
- Free beta: 3 experiments per account per month, one experiment running at a time.
- Output language: pass output_language "ja" at generation time and BRIEF.md, DECISION.md, and all generated copy are written in Japanese. TASKS.md keeps its English scaffolding (agent-facing).
- We store what you send: the project description, a semantic repo summary, the generated experiment, and the results you submit. We never see your code — your agent sends a summary, not files.
- Never send secrets. Payloads containing credential-shaped strings (API keys, connection strings, private keys) are rejected outright with 400 secret_detected.
- Request bodies are capped at 256KB.
- Questions or account deletion: [email protected]