{
  "id": "source-check",
  "slug": "source-check",
  "name": "Source Check",
  "tagline": "Every link opened, every number matched, before it goes out.",
  "description": "A final pass that opens each link, matches each number and quote to its source, fixes dates, and cuts unsupported claims.",
  "category": "For bots",
  "platforms": [
    "Grok Bot",
    "Muse",
    "Dots"
  ],
  "schedule": "Always on",
  "outputType": "checklist",
  "previewImage": "previews/source-check.png",
  "installSteps": {
    "grokBot": {
      "label": "Grok Bot",
      "status": "verified",
      "steps": [
        "Copy skills/source-check/SKILL.md (the whole file, including the --- header).",
        "Open a one-to-one chat with your Grok Bot and paste the prompt below, with the file where it says.",
        "Try it once now: \"Run Source Check.\""
      ],
      "prompt": "Save the following as a skill called \"Source Check\". No routine needed: apply it automatically right before you send, post or save anything that contains links, numbers, quotes, dates or factual claims. Before the first run, ask me the setup questions in the skill and remember my answers.\n\n<paste SKILL.md here>",
      "note": "Skills and routines are saved by asking the Bot; no settings to dig through.",
      "promptFull": "Save the following as a skill called \"Source Check\". No routine needed: apply it automatically right before you send, post or save anything that contains links, numbers, quotes, dates or factual claims. Before the first run, ask me the setup questions in the skill and remember my answers.\n\n---\nname: source-check\ndescription: Use right before a bot sends, posts, or saves anything that contains links, numbers, quotes, dates, or factual claims. Opens every link, checks every number and quote against its source, marks anything that can't be verified, and fixes or flags it before the message goes out.\nmetadata:\n  id: source-check\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Source Check\n\n## What it does\n\nA last pass before anything leaves the bot. Every link is opened, every number and quote is matched to its source, and every date is checked. Broken links get replaced, unsupported claims get cut or labelled, and the message goes out clean. It's the habit that keeps a bot trustworthy.\n\n## When to use\n\n- Before sending a report, digest, brief, email draft, or post that contains links or facts.\n- Built into other skills as their final step (Research Brief, Morning Newspaper, Role Scout).\n\n## Requires\n\nWeb access to open links.\n\n## Schedule\n\nAlways on. It runs before every outgoing message with links or facts.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `strictness` | standard | `standard` (check links, numbers, quotes) or `strict` (also every date and name). |\n| `on_fail` | fix, then flag | Replace or cut, and tell the person what changed if it matters. |\n\n## Steps\n\n1. **List** every link, number, quote, date, and named claim in the draft.\n2. **Open each link.** A 404 or \"not found\" page means replace or remove it. A blocked page (403, login wall) can stay, labelled.\n3. **Match** each number and quote to the exact text on its source page.\n4. **Check dates:** \"today\", \"yesterday\", and day-of-week names against the real calendar.\n5. **Unsupported claims:** cut them, or label them \"unverified\".\n6. **Fix** the draft and keep a one-line note of anything material that changed.\n\n## Output format\n\n```markdown\n**Source check:** 14 links (1 replaced) \u00b7 9 numbers (all match) \u00b7 2 quotes (1 shortened to match) \u00b7 1 claim cut\n```\n\n## Edge cases\n\n- **A paywalled source:** check what's visible and label the link \"(paywall)\".\n- **Two sources disagree:** keep both figures with their sources.\n- **A personalized page** (a dashboard, an inbox): skip the check and note it.\n\n## Boundaries\n\n- Never \"fix\" a fact from memory. Use a source, or cut the fact.\n- Never change the meaning of a quote."
    },
    "muse": {
      "label": "Muse",
      "status": "partially-verified",
      "steps": [
        "Copy skills/source-check/SKILL.md.",
        "Open Muse and paste the prompt below with the file where it says.",
        "Try it: \"Run Source Check.\" Muse has no skill install for outside skills, so it follows the pasted instructions.",
        "Muse Code (developer CLI): unzip downloads/source-check.zip, run `muse skills validate ./source-check` then `muse skills install ./source-check --scope user`. Optional: add the BotPlaza connector (https://botplaza.lol/api/mcp) under mcpServers in ~/.config/muse/settings.json."
      ],
      "sourceUrl": "https://www.meta.com/help/superintelligence/1484325780075655/",
      "note": "Recurring tasks and Muse Code skill install are documented by Meta. Installing outside skills in the Muse app is not.",
      "prompt": "Here are instructions for a task called \"Source Check\". Follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>\n\nIf you can save this as a skill, please do.",
      "promptFull": "Here are instructions for a task called \"Source Check\". Follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n---\nname: source-check\ndescription: Use right before a bot sends, posts, or saves anything that contains links, numbers, quotes, dates, or factual claims. Opens every link, checks every number and quote against its source, marks anything that can't be verified, and fixes or flags it before the message goes out.\nmetadata:\n  id: source-check\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Source Check\n\n## What it does\n\nA last pass before anything leaves the bot. Every link is opened, every number and quote is matched to its source, and every date is checked. Broken links get replaced, unsupported claims get cut or labelled, and the message goes out clean. It's the habit that keeps a bot trustworthy.\n\n## When to use\n\n- Before sending a report, digest, brief, email draft, or post that contains links or facts.\n- Built into other skills as their final step (Research Brief, Morning Newspaper, Role Scout).\n\n## Requires\n\nWeb access to open links.\n\n## Schedule\n\nAlways on. It runs before every outgoing message with links or facts.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `strictness` | standard | `standard` (check links, numbers, quotes) or `strict` (also every date and name). |\n| `on_fail` | fix, then flag | Replace or cut, and tell the person what changed if it matters. |\n\n## Steps\n\n1. **List** every link, number, quote, date, and named claim in the draft.\n2. **Open each link.** A 404 or \"not found\" page means replace or remove it. A blocked page (403, login wall) can stay, labelled.\n3. **Match** each number and quote to the exact text on its source page.\n4. **Check dates:** \"today\", \"yesterday\", and day-of-week names against the real calendar.\n5. **Unsupported claims:** cut them, or label them \"unverified\".\n6. **Fix** the draft and keep a one-line note of anything material that changed.\n\n## Output format\n\n```markdown\n**Source check:** 14 links (1 replaced) \u00b7 9 numbers (all match) \u00b7 2 quotes (1 shortened to match) \u00b7 1 claim cut\n```\n\n## Edge cases\n\n- **A paywalled source:** check what's visible and label the link \"(paywall)\".\n- **Two sources disagree:** keep both figures with their sources.\n- **A personalized page** (a dashboard, an inbox): skip the check and note it.\n\n## Boundaries\n\n- Never \"fix\" a fact from memory. Use a source, or cut the fact.\n- Never change the meaning of a quote.\n\nIf you can save this as a skill, please do."
    },
    "dots": {
      "label": "Dots",
      "status": "partially-verified",
      "steps": [
        "Copy skills/source-check/SKILL.md.",
        "Paste the prompt below into your dot's conversation in ChatGPT, with the file where it says.",
        "Optional: in ChatGPT, Plugins > + > Add custom MCP server with https://botplaza.lol/api/mcp (no authentication). Dots can use installed plugins, but OpenAI hasn't said whether that includes custom ones.",
        "Business, Enterprise, Healthcare and Edu workspaces can also upload downloads/source-check.zip under Plugins > Skills > Create > Upload from your computer."
      ],
      "sourceUrl": "https://learn.chatgpt.com/docs/dots",
      "note": "Dots are available on ChatGPT Pro, Business Premium and Enterprise, and are still rolling out. Pasting instructions in and scheduled check-ins are documented.",
      "prompt": "Here are instructions for a task called \"Source Check\". Take this on as an ongoing responsibility and follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>",
      "promptFull": "Here are instructions for a task called \"Source Check\". Take this on as an ongoing responsibility and follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n---\nname: source-check\ndescription: Use right before a bot sends, posts, or saves anything that contains links, numbers, quotes, dates, or factual claims. Opens every link, checks every number and quote against its source, marks anything that can't be verified, and fixes or flags it before the message goes out.\nmetadata:\n  id: source-check\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Source Check\n\n## What it does\n\nA last pass before anything leaves the bot. Every link is opened, every number and quote is matched to its source, and every date is checked. Broken links get replaced, unsupported claims get cut or labelled, and the message goes out clean. It's the habit that keeps a bot trustworthy.\n\n## When to use\n\n- Before sending a report, digest, brief, email draft, or post that contains links or facts.\n- Built into other skills as their final step (Research Brief, Morning Newspaper, Role Scout).\n\n## Requires\n\nWeb access to open links.\n\n## Schedule\n\nAlways on. It runs before every outgoing message with links or facts.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `strictness` | standard | `standard` (check links, numbers, quotes) or `strict` (also every date and name). |\n| `on_fail` | fix, then flag | Replace or cut, and tell the person what changed if it matters. |\n\n## Steps\n\n1. **List** every link, number, quote, date, and named claim in the draft.\n2. **Open each link.** A 404 or \"not found\" page means replace or remove it. A blocked page (403, login wall) can stay, labelled.\n3. **Match** each number and quote to the exact text on its source page.\n4. **Check dates:** \"today\", \"yesterday\", and day-of-week names against the real calendar.\n5. **Unsupported claims:** cut them, or label them \"unverified\".\n6. **Fix** the draft and keep a one-line note of anything material that changed.\n\n## Output format\n\n```markdown\n**Source check:** 14 links (1 replaced) \u00b7 9 numbers (all match) \u00b7 2 quotes (1 shortened to match) \u00b7 1 claim cut\n```\n\n## Edge cases\n\n- **A paywalled source:** check what's visible and label the link \"(paywall)\".\n- **Two sources disagree:** keep both figures with their sources.\n- **A personalized page** (a dashboard, an inbox): skip the check and note it.\n\n## Boundaries\n\n- Never \"fix\" a fact from memory. Use a source, or cut the fact.\n- Never change the meaning of a quote."
    },
    "chatgpt": {
      "label": "ChatGPT",
      "status": "unverified",
      "verified": false,
      "steps": [
        "Download https://botplaza.lol/downloads/source-check.zip (don't unzip).",
        "ChatGPT sidebar \u2192 Plugins \u2192 Skills tab \u2192 Create \u2192 Upload from your computer.",
        "Wait for the scan; if it says Needs Review, read it and approve.",
        "Use it with @source-check or just ask."
      ],
      "sourceUrl": "https://help.openai.com/en/articles/20001066-skills-in-chatgpt",
      "note": "Business, Enterprise, Edu and Healthcare plans only. Other plans fall back to pasting the prompt.",
      "prompt": "Here are instructions for a task called \"Source Check\". Follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>",
      "promptFull": "Here are instructions for a task called \"Source Check\". Follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n---\nname: source-check\ndescription: Use right before a bot sends, posts, or saves anything that contains links, numbers, quotes, dates, or factual claims. Opens every link, checks every number and quote against its source, marks anything that can't be verified, and fixes or flags it before the message goes out.\nmetadata:\n  id: source-check\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Source Check\n\n## What it does\n\nA last pass before anything leaves the bot. Every link is opened, every number and quote is matched to its source, and every date is checked. Broken links get replaced, unsupported claims get cut or labelled, and the message goes out clean. It's the habit that keeps a bot trustworthy.\n\n## When to use\n\n- Before sending a report, digest, brief, email draft, or post that contains links or facts.\n- Built into other skills as their final step (Research Brief, Morning Newspaper, Role Scout).\n\n## Requires\n\nWeb access to open links.\n\n## Schedule\n\nAlways on. It runs before every outgoing message with links or facts.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `strictness` | standard | `standard` (check links, numbers, quotes) or `strict` (also every date and name). |\n| `on_fail` | fix, then flag | Replace or cut, and tell the person what changed if it matters. |\n\n## Steps\n\n1. **List** every link, number, quote, date, and named claim in the draft.\n2. **Open each link.** A 404 or \"not found\" page means replace or remove it. A blocked page (403, login wall) can stay, labelled.\n3. **Match** each number and quote to the exact text on its source page.\n4. **Check dates:** \"today\", \"yesterday\", and day-of-week names against the real calendar.\n5. **Unsupported claims:** cut them, or label them \"unverified\".\n6. **Fix** the draft and keep a one-line note of anything material that changed.\n\n## Output format\n\n```markdown\n**Source check:** 14 links (1 replaced) \u00b7 9 numbers (all match) \u00b7 2 quotes (1 shortened to match) \u00b7 1 claim cut\n```\n\n## Edge cases\n\n- **A paywalled source:** check what's visible and label the link \"(paywall)\".\n- **Two sources disagree:** keep both figures with their sources.\n- **A personalized page** (a dashboard, an inbox): skip the check and note it.\n\n## Boundaries\n\n- Never \"fix\" a fact from memory. Use a source, or cut the fact.\n- Never change the meaning of a quote."
    },
    "gemini": {
      "label": "Gemini",
      "status": "unverified",
      "verified": false,
      "steps": [
        "gemini.google.com \u2192 Customize \u2192 Skills \u2192 Create \u2192 Upload \u2192 pick the SKILL.md at https://botplaza.lol/skills/source-check.md (or https://botplaza.lol/downloads/source-check.zip).",
        "Review, then Create.",
        "Use it with /source-check."
      ],
      "sourceUrl": "https://support.google.com/gemini/answer/17094296",
      "note": "Personal accounts 18+. Workspace users must recreate the skill in Workspace Studio.",
      "prompt": "Here are instructions for a task called \"Source Check\". Follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n<paste SKILL.md here>",
      "promptFull": "Here are instructions for a task called \"Source Check\". Follow them whenever I say \"Run Source Check\". Ask me the setup questions first and remember my answers.\n\n---\nname: source-check\ndescription: Use right before a bot sends, posts, or saves anything that contains links, numbers, quotes, dates, or factual claims. Opens every link, checks every number and quote against its source, marks anything that can't be verified, and fixes or flags it before the message goes out.\nmetadata:\n  id: source-check\n  version: \"1.0.0\"\n  author: BotPlaza\n---\n\n# Source Check\n\n## What it does\n\nA last pass before anything leaves the bot. Every link is opened, every number and quote is matched to its source, and every date is checked. Broken links get replaced, unsupported claims get cut or labelled, and the message goes out clean. It's the habit that keeps a bot trustworthy.\n\n## When to use\n\n- Before sending a report, digest, brief, email draft, or post that contains links or facts.\n- Built into other skills as their final step (Research Brief, Morning Newspaper, Role Scout).\n\n## Requires\n\nWeb access to open links.\n\n## Schedule\n\nAlways on. It runs before every outgoing message with links or facts.\n\n## Inputs\n\n| Setting | Default | Notes |\n|---|---|---|\n| `strictness` | standard | `standard` (check links, numbers, quotes) or `strict` (also every date and name). |\n| `on_fail` | fix, then flag | Replace or cut, and tell the person what changed if it matters. |\n\n## Steps\n\n1. **List** every link, number, quote, date, and named claim in the draft.\n2. **Open each link.** A 404 or \"not found\" page means replace or remove it. A blocked page (403, login wall) can stay, labelled.\n3. **Match** each number and quote to the exact text on its source page.\n4. **Check dates:** \"today\", \"yesterday\", and day-of-week names against the real calendar.\n5. **Unsupported claims:** cut them, or label them \"unverified\".\n6. **Fix** the draft and keep a one-line note of anything material that changed.\n\n## Output format\n\n```markdown\n**Source check:** 14 links (1 replaced) \u00b7 9 numbers (all match) \u00b7 2 quotes (1 shortened to match) \u00b7 1 claim cut\n```\n\n## Edge cases\n\n- **A paywalled source:** check what's visible and label the link \"(paywall)\".\n- **Two sources disagree:** keep both figures with their sources.\n- **A personalized page** (a dashboard, an inbox): skip the check and note it.\n\n## Boundaries\n\n- Never \"fix\" a fact from memory. Use a source, or cut the fact.\n- Never change the meaning of a quote."
    },
    "cli": {
      "label": "Skills CLI",
      "status": "verified",
      "steps": [
        "All agents: `npx skills add https://botplaza.lol --skill source-check` (add `-a claude-code`, `-a codex`, or `-a cursor` to choose one).",
        "Claude Code marketplace: `/plugin marketplace add https://botplaza.lol/.claude-plugin/marketplace.json` then `/plugin install source-check@botplaza`.",
        "Fallback, Claude Code: `curl -fsSL https://botplaza.lol/downloads/source-check.zip -o s.zip && unzip s.zip -d ~/.claude/skills/`.",
        "Fallback, Codex and other .agents readers: `curl -fsSL https://botplaza.lol/downloads/source-check.zip -o s.zip && unzip s.zip -d ~/.agents/skills/`.",
        "Fallback, Cursor project: `curl -fsSL https://botplaza.lol/downloads/source-check.zip -o s.zip && unzip s.zip -d .cursor/skills/`."
      ],
      "sourceUrl": "https://www.skills.sh/docs",
      "note": "The skills CLI reads /.well-known/agent-skills/index.json and installs each SKILL.md. The zip fallback uses the existing downloads/<slug>.zip folder layout.",
      "prompt": "npx skills add https://botplaza.lol --skill source-check",
      "promptFull": "npx skills add https://botplaza.lol --skill source-check"
    }
  },
  "author": "BotPlaza",
  "tags": [
    "fact-check",
    "links",
    "accuracy",
    "citations"
  ],
  "featured": false,
  "longDescription": "Source Check is the habit that keeps a bot trustworthy. Before a message with links or facts goes out, it opens every link, replaces dead ones, matches numbers and quotes word for word, checks relative dates, and cuts or labels anything it can't support.",
  "customization": [
    {
      "key": "strictness",
      "label": "Strictness",
      "type": "select",
      "question": "How strict should checks be?",
      "default": "Standard",
      "options": [
        "Standard",
        "Strict"
      ]
    }
  ],
  "whatYouGet": [
    "Dead links replaced",
    "Numbers and quotes matched",
    "Unsupported claims cut",
    "A one-line check summary"
  ],
  "dataSources": [
    {
      "name": "Web access",
      "required": true
    }
  ],
  "setupTime": "None",
  "sampleOutput": "samples/source-check.md",
  "skillFile": "skills/source-check/SKILL.md",
  "version": "1.0.0",
  "license": "",
  "previewAlt": "A draft message with each link and number ticked or crossed, and a one-line check summary.",
  "writesOrSends": "Read-only.",
  "audience": "bots",
  "setup": [
    {
      "key": "strictness",
      "question": "How strict should checks be?",
      "type": "select",
      "default": "Standard",
      "options": [
        "Standard",
        "Strict"
      ]
    }
  ],
  "safety": {
    "dataAccess": [
      "Public web pages linked in the bot's own outgoing messages"
    ],
    "writesOrSends": "Read-only.",
    "estCost": "Low per message, but it runs before every message with links or facts, so it adds up on busy bots.",
    "costLevel": "medium",
    "warnings": [
      "Anything it can't verify is marked, not silently kept."
    ]
  },
  "checked": {
    "instructionOnly": true,
    "scripts": false,
    "runtimeFetch": false,
    "sha256": "d3475e608542f01f441d1eab533b6dbb606fccf51c6cbf153833aa28b4ee81ee",
    "checkedOn": "2026-10-31"
  },
  "urls": {
    "page": "https://botplaza.lol/skills/source-check/",
    "markdown": "https://botplaza.lol/skills/source-check.md",
    "skillMd": "https://botplaza.lol/skills/source-check/SKILL.md",
    "json": "https://botplaza.lol/skills/source-check.json",
    "zip": "https://botplaza.lol/downloads/source-check.zip",
    "mcp": "https://botplaza.lol/api/mcp"
  }
}