make-me-quotable
Context load
Run rainmaker context --check first. It prints what exists, what is stale, and exits 1 if anything this skill requires is missing.
Then read, in this order:
context/business.md in full. If absent, stop: "No business context. Run rainmaker audit, then the know-my-buyer skill."
context/voice.md if this skill writes prose. If absent, stop and say so.
context/glossary.md if this skill names products, features or competitors.
data/strategy.json if this skill reads or writes strategy.
- Only the
data/ files listed in this skill's Consumes table. Never crawl or call an API the core already covers.
If strategy.json.context_hash does not match the current hash of context/business.md, say exactly:
"Business context was edited after the strategy was written. Re-run know-my-buyer, or run rainmaker context --sync to accept the prose as authoritative."
Then stop.
If context/business.md carries confidence: stub, continue, and stamp every output with: "Built on a stub context. Nothing in it came from a buyer. Run know-my-buyer to replace it."
Consumes
| File |
Why |
If missing |
data/snapshots/<latest>/crawl.json |
current schema coverage per page |
run rainmaker audit |
context/business.md |
real facts for llms.txt descriptions, never invented |
required |
data/competitors.json |
schema types competitors use on cited pages |
run beat-my-competitors for full coverage |
data/citation-graph.json |
which competitor pages are actually cited |
optional, sharpens the gap |
Produces
llms.txt, JSON-LD blocks, both as diffs against what exists.
Procedure
- Generate
llms.txt listing tier 0 and tier 1 URLs, with one-line descriptions taken from context/business.md. Never invent a description; where business.md has nothing to say about a page, list the URL with the shortest true statement available (its title) rather than a fabricated summary.
- Generate JSON-LD per page type, filling only fields with a real source in the crawl or the context. Never fabricate ratings, prices, or review counts; a missing field is omitted, not guessed.
- Output as a diff against what already exists on the page, so the user sees exactly what changes rather than a wholesale replacement they must diff themselves.
- Add extractability fixes surfaced by
get-mentioned-by-ai: standalone claim sentences, a direct answer within the first 100 words of any question-shaped page, and tables for comparison content, since answer engines quote tables disproportionately.
- Flag any schema type present across competitors' cited pages (from
citation-graph.json where available, otherwise competitors.json) and absent from this site's own tier 0 and 1 pages.
Decision rules
- Every generated field traces to a real value. A field with no source is omitted, never fabricated.
- Output is always a diff, never a wholesale file replacement, so a reviewer can see precisely what changed.
llms.txt covers tier 0 and 1 only; do not pad it with every URL on the site.
Output
## llms.txt diff
+ <url>: <one-line description, sourced from business.md>
## Schema diff, <url>
+ "@type": "<Type>"
+ "<field>": "<value>" (source: <file>, real value)
## Competitor schema gap
<type> present on <competitor cited page>, absent on our tier <n> pages
Done when
Every generated field traces to a real value, the output is a diff, and any competitor schema gap names the specific competitor page it came from.
1---2name: make-me-quotable3description: Generate llms.txt and JSON-LD schema from real, sourced facts only, output as a diff against what already exists, and flag schema types competitors use in cited pages that this site is missing. Use this skill whenever the user asks to: - Set up llms.txt - Add or audit structured data / schema markup - Make their site more readable to AI assistants - Improve extractability for answer engines Trigger even for casual requests like "add llms.txt", "make my site AI readable", "add schema markup", "get quoted by AI more".4---56# make-me-quotable78## Context load910Run `rainmaker context --check` first. It prints what exists, what is stale, and exits 1 if anything this skill requires is missing.1112Then read, in this order:13141. `context/business.md` in full. If absent, stop: "No business context. Run `rainmaker audit`, then the `know-my-buyer` skill."152. `context/voice.md` if this skill writes prose. If absent, stop and say so.163. `context/glossary.md` if this skill names products, features or competitors.174. `data/strategy.json` if this skill reads or writes strategy.185. Only the `data/` files listed in this skill's Consumes table. Never crawl or call an API the core already covers.1920If `strategy.json.context_hash` does not match the current hash of `context/business.md`, say exactly:2122"Business context was edited after the strategy was written. Re-run `know-my-buyer`, or run `rainmaker context --sync` to accept the prose as authoritative."2324Then stop.2526If `context/business.md` carries `confidence: stub`, continue, and stamp every output with: "Built on a stub context. Nothing in it came from a buyer. Run `know-my-buyer` to replace it."2728## Consumes2930| File | Why | If missing |31|---|---|---|32| `data/snapshots/<latest>/crawl.json` | current schema coverage per page | run `rainmaker audit` |33| `context/business.md` | real facts for llms.txt descriptions, never invented | required |34| `data/competitors.json` | schema types competitors use on cited pages | run `beat-my-competitors` for full coverage |35| `data/citation-graph.json` | which competitor pages are actually cited | optional, sharpens the gap |3637## Produces3839`llms.txt`, JSON-LD blocks, both as diffs against what exists.4041## Procedure42431. Generate `llms.txt` listing tier 0 and tier 1 URLs, with one-line descriptions taken from `context/business.md`. Never invent a description; where `business.md` has nothing to say about a page, list the URL with the shortest true statement available (its title) rather than a fabricated summary.442. Generate JSON-LD per page type, filling only fields with a real source in the crawl or the context. Never fabricate ratings, prices, or review counts; a missing field is omitted, not guessed.453. Output as a diff against what already exists on the page, so the user sees exactly what changes rather than a wholesale replacement they must diff themselves.464. Add extractability fixes surfaced by `get-mentioned-by-ai`: standalone claim sentences, a direct answer within the first 100 words of any question-shaped page, and tables for comparison content, since answer engines quote tables disproportionately.475. Flag any schema type present across competitors' cited pages (from `citation-graph.json` where available, otherwise `competitors.json`) and absent from this site's own tier 0 and 1 pages.4849## Decision rules5051- Every generated field traces to a real value. A field with no source is omitted, never fabricated.52- Output is always a diff, never a wholesale file replacement, so a reviewer can see precisely what changed.53- `llms.txt` covers tier 0 and 1 only; do not pad it with every URL on the site.5455## Output5657```58## llms.txt diff59+ <url>: <one-line description, sourced from business.md>6061## Schema diff, <url>62+ "@type": "<Type>"63+ "<field>": "<value>" (source: <file>, real value)6465## Competitor schema gap66<type> present on <competitor cited page>, absent on our tier <n> pages67```6869## Done when7071Every generated field traces to a real value, the output is a diff, and any competitor schema gap names the specific competitor page it came from.