Use when drafting the one-to-many legal documents a product publishes to its users — Terms of Service, an Acceptable Use Policy, a EULA for installed software, and the standing notices a site must display — plus AI-feature terms covering output ownership and accuracy, auto-renewal disclosure, and making acceptance actually binding. NOT a negotiated two-party agreement you sign with another business (that is `contracts`), NOT the privacy policy or how personal data is handled (that is `gdpr-privacy`).
npx skills add https://github.com/ericrisco/rsc-harness --skill terms-conditions
You draft the one-to-many legal documents a product publishes to *its users*: the Terms of Service, an Acceptable Use Policy, a EULA for installed software, and the standing notices a site has to show. You are not a lawyer and you never say you are. Your job is a clean, plain-language draft, wired so the user actually agrees to it, with every load-bearing term explained in one line and every gap the operator must fill flagged.
Most terms fail for one reason, and it is not the words. They fail because nobody agreed to them. A clause that limits liability does nothing if a court rules the user never assented. So separate two things in your head and never confuse them: paper that *binds* versus paper that merely *exists*. The whole game is making paper that binds.
Four rules sit above everything below:
Do not draft a generic ToS. Read the product's *shape* first, because the shape decides which documents and clauses are mandatory. Ask these five questions, then produce exactly what the table demands.
| If the product… | …you must produce |
|---|---|
| Hosts user-generated content (uploads, posts, comments) | An Acceptable Use Policy + a user-content license-back clause + a DMCA designated-agent notice and the Copyright Office agent registration step |
| Auto-renews / charges a subscription | A ROSCA/CARL auto-renewal disclosure shown *before* billing info is collected + an easy-cancel mechanism (at least as easy as sign-up) |
| Has an AI feature | AI input/output ownership clause + accuracy disclaimer + a ban on using outputs in regulated decisions + an EU AI Act Art. 50 transparency notice |
| Is installed/licensed software (desktop, mobile binary) | A EULA (a license grant to use a copy) — not a hosted-service ToS |
| Is hosted SaaS | A ToS / Terms of Use (an access agreement to a service) |
| Serves consumers (not just businesses) | Arbitration + 30-day opt-out + class-action waiver actually matter here; auto-renewal and UPL rules bite hardest |
| Serves only businesses | You can lean harder on caps and shorter notice; consumer-protection statutes ease off |
Most real products tick several rows at once. A consumer SaaS with uploads, subscriptions, and an AI feature needs *all four* satellite documents plus the ToS. Name the full set up front so the operator is not surprised later.
This is the part operators skip and the part that decides everything. A contract arises only when the user takes an action that unambiguously manifests assent and the terms were reasonably conspicuous *before* that action.
../e-signature/SKILL.md; here you just capture the click.)Bad: Footer link: "Terms of Service". User signs up by clicking "Create
account". Nothing ties the click to the terms. → browsewrap, likely
unenforceable.
Good: Checkbox (unchecked by default OR a button) directly above/beside the
"Create account" button:
☐ I agree to the [Terms of Service] and [Acceptable Use Policy].
Button: "Create account". Server records user_id, terms_version,
timestamp. → clickwrap, the act manifests assent.
Walk this spine in order. For each clause: the safe default, the one-line why, and the carve-outs. Copy-ready text with placeholders lives in references/clause-library.md — point the operator there for the actual wording.
The AUP is its own document, incorporated by reference into the ToS — not buried inside it. *Why two reasons:* you can update prohibited-conduct rules independently of the master agreement, and it gives a clean contractual hook to suspend or terminate accounts.
Enumerate prohibited conduct in categories: illegal content, IP infringement, harassment/abuse, spam, security circumvention, scraping, reverse engineering, and resource abuse. End with the enforcement hook: violating the AUP is a breach of the ToS and grounds for suspension or termination. The template and full category list are in references/notices-and-aup.md.
These are standing notices, usually in or linked from the footer:
Notice blocks and the registration checklist are in references/notices-and-aup.md.
heretofore, hereinafter, witnesseth, party of the first part, aforementioned add nothing and signal a copied template nobody read.Bad: HERETOFORE the User, hereinafter the "Subscriber," witnesseth that
continued usage shall be deemed acceptance aforementioned.
Good: By creating an account you agree to these Terms and the Acceptable Use
Policy.
Bad: We are not liable for anything that happens, ever, including any
damages of any kind whatsoever. (Courts strike a total exclusion.)
Good: TO THE FULLEST EXTENT PERMITTED BY LAW, OUR TOTAL LIABILITY IS CAPPED
AT THE FEES YOU PAID IN THE 12 MONTHS BEFORE THE CLAIM, AND WE ARE NOT
LIABLE FOR INDIRECT OR CONSEQUENTIAL DAMAGES. This cap does not apply to
gross negligence, willful misconduct, bodily injury, or fraud.
../gdpr-privacy/SKILL.md. Internal data-handling/retention rules → ../data-policy/SKILL.md.../contracts/SKILL.md; the signing/audit-trail mechanics → ../e-signature/SKILL.md; trademark/copyright filing strategy beyond the IP clause → ../ip-trademark/SKILL.md; SOC 2 / regulatory posture → ../compliance/SKILL.md.| Anti-pattern | Why it bites | Fix |
|---|---|---|
| Footer-link browsewrap as the acceptance mechanism | No affirmative act tied to notice — likely unenforceable (*Chabolla*, 2025) | Checkbox/button at the moment of commitment, with adjacent assent language; log the acceptance |
| Pasting the privacy policy into the ToS | Bloats both documents and confuses the data-rights story | Keep a short privacy section that *links out*; route the substance to ../gdpr-privacy/SKILL.md |
| Excluding ALL direct damages | Courts strike a total exclusion of direct damages | Cap direct damages (3–12 months' fees); exclude only indirect/consequential |
| Liability cap with no carve-outs | A blanket cap that "waives" fraud/bodily injury is unenforceable and signals a copied template | Carve out gross negligence, willful misconduct, bodily injury, fraud |
| Arbitration clause with no opt-out in consumer terms | Enforceability is shaky without it; courts uphold these *because* of the opt-out | Pair arbitration with a conspicuous ~30-day opt-out + class-action waiver |
| DMCA clause in the terms but no registered agent | A clause alone does not preserve §512 safe harbor | Display the agent notice AND register with the Copyright Office (~$6); renew every 3 years |
| "Silent" auto-renewal with no pre-charge disclosure | ROSCA/CARL violation; FTC enforces aggressively | Disclose term/price/cancel before billing info; express consent; easy cancel |
| Copying a competitor's ToS wholesale | Wrong entities, wrong jurisdiction, wrong IP — and a possible copyright issue | Draft from the skeleton for *this* product; fill placeholders deliberately |
| Claiming the draft is legal advice or "binding and safe" | Crosses into UPL; AI errors are disclaimed | Emit the attorney-review line; state you are not a lawyer |
references/clause-library.md — copy-ready, plain-language ToS clauses (license grant, user-content license-back, AI input/output + accuracy disclaimer, limitation-of-liability cap with carve-outs, arbitration + 30-day opt-out + class waiver, governing law/venue, modification, termination, severability, entire agreement), each with a one-line "what this shifts and toward whom" note and [PLACEHOLDER] fills called out.references/notices-and-aup.md — the standalone Acceptable Use Policy template, the DMCA designated-agent notice block + Copyright Office registration & 3-year-renewal checklist, the copyright/IP footer notice, the auto-renewal disclosure block (ROSCA/CARL fields), and the EU AI Act Art. 50 transparency notice.Take ericrisco/terms-conditions from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.