Content Bias Analyzer

Biascheck

by danielmiessler · MIT license · ★ 19,269 on GitHub · v1.0.3

Biascheck cover

Three-layer bias analysis on any URL, file, or text — auto-fetches the content and any cited study, then audits data-level biases, source conflicts of interest, and journalism-added distortions, separating what the data supports from…

---
name: BiasCheck
version: 1.0.3
description: "Three-layer bias analysis on any URL, file, or text — auto-fetches the content and any cited study, then audits data-level biases, source conflicts of interest, and journalism-added distortions, separating what the data supports from what's editorialized. USE WHEN bias analysis, analyze bias, bias check, check this study, who funded this, is this source biased, fact-check article, methodological flaws, source credibility, what's wrong with this claim. NOT FOR psychological author analysis, research synthesis (use Research), entity due diligence."
disallowed-tools: Edit, Write, NotebookEdit
---

## Customization

**Before executing, check for user customizations at:**
`~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/BiasCheck/`

If this directory exists, load and apply any `PREFERENCES.md` or additional reference files found there. These override default behavior. If the directory does not exist, proceed with skill defaults.

# BiasCheck

## Voice Notification

Overview

Before executing, check for user customizations at: ~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/BiasCheck/

What you get

  • FormatMarkdown with the fixed section structure defined in Workflows/Check.md.
  • LengthScales with source complexity. A single-claim tweet gets ~200 words; a vendor-funded study + viral article gets 800–1500.
  • TonePlain. Specific. No vibes. Every bias claim ties to a concrete tell — a quoted phrase, a sample-frame fact, a missing disclosure.
  • Must IncludeMethodology line (sample, dates, instrument availability), the three layers, the supported-vs-editorialized split, a one-paragraph bottom line, sources list with URLs.
  • Must AvoidHedging ("could potentially be biased"). Diagnose or don't. The reader gets to disagree — but they should know what the analyst actually thinks.
Manual install (npx, ZIP)
Claude Codenpx skills add danielmiessler/LifeOS --skill BiasCheck -g -a claude-code
Claude Code (degit)npx degit danielmiessler/LifeOS/LifeOS/install/skills/BiasCheck#main ~/.claude/skills/biascheck
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md7.9 KB
Read SKILL.md here
danielmiessler/main1 file shown
SKILL.md
Show the full text120 lines

Customization

Before executing, check for user customizations at: ~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/BiasCheck/

If this directory exists, load and apply any PREFERENCES.md or additional reference files found there. These override default behavior. If the directory does not exist, proceed with skill defaults.

BiasCheck

Voice Notification

When executing a workflow, do BOTH:

  1. Send voice notification:

    curl -s -X POST http://localhost:31337/notify \
      -H "Content-Type: application/json" \
      -d '{"message": "Running the Check workflow in the BiasCheck skill to audit the source"}' \
      > /dev/null 2>&1 &
    
  2. Output text notification:

    Running the **Check** workflow in the **BiasCheck** skill to audit the source...
    

What It Does

Runs a three-layer bias audit on any source — a URL, a file path, or raw text. It fetches the content plus any study it cites, then checks (1) biases inside the data, (2) conflicts of interest in the source organization, and (3) distortions the journalism added on top. The output separates what the data actually supports from what got editorialized.

The Problem

Most "this is biased" arguments are vibes — a feeling about a source, with nothing concrete underneath. They're not repeatable and they don't tell you where the distortion lives. The other failure is analyzing an article without ever reaching the study it cites, so you critique the headline and never see that the underlying data was fine (or that it was junk). A fixed taxonomy and a fixed output shape fix both: the analysis is repeatable, the gaps are visible, and every claim ties to a specific tell.

How It Works

The skill operates on three layers:

  1. The data itself — biases inside the underlying study, paper, or dataset (funding, sampling, instrument design, demand characteristics, self-report distance from behavior, causal inflation, missing benchmark, publication availability)
  2. The source organization — who paid for or produced the work, what they sell, what conclusion would be inconvenient
  3. The journalism on top — what the reporter/commentator added: headline-to-source distortion, frame escalation, echo-chain amplification, causal claims layered over correlational data

Output cleanly separates what the data actually supports from what was editorialized on top. Confidence is anchored to specifics — no vibes-based "this seems biased."

Workflow Routing

Workflow Trigger File
Check "bias check", "analyze bias on", "check this study/source/article" Workflows/Check.md

Quick Reference

  • Input: one argument — URL, file path, raw text, or any combination.
  • Always tries to find the primary source. If the input is journalism citing a study, the skill fetches the study itself, not just the article. If the primary source can't be located, that's a finding.
  • Three-layer output — never collapse layers; the distortion usually lives in the layer the source is least transparent about.
  • Hard separation between supported and editorialized — this is the deliverable shape.
  • Bias taxonomy reference: BiasTaxonomy.md (load on demand for the full category catalog with definitions and tells).

Examples

Example 1: Article citing a vendor study

User: "bias check https://futurism.com/some-article-citing-a-mercer-survey"
→ Invokes Check workflow
→ Fetches the article, identifies the cited Mercer study, fetches Mercer's source
→ Runs three-layer audit: vendor conflict-of-interest, sample/question-design biases, journalism's headline-vs-source swap
→ Returns structured bias report + supported-vs-editorialized split

Example 2: Raw paste of a study abstract

User: "bias check this abstract: [pastes 4 paragraphs from a paper]"
→ Invokes Check workflow
→ Skips Layer 3 (no journalism on top — input IS the primary source)
→ Audits Layers 1 + 2 only: funding disclosure, sample, methodology, conflict-of-interest
→ Notes if abstract is insufficient to assess methodology (publication availability bias)

Example 3: File path

User: "bias check ~/Downloads/some-report.pdf"
→ Invokes Check workflow
→ Reads file
→ Identifies if report cites further upstream sources; fetches what it can
→ Three-layer audit with specifics

Output Requirements

  • Format: Markdown with the fixed section structure defined in Workflows/Check.md.
  • Length: Scales with source complexity. A single-claim tweet gets ~200 words; a vendor-funded study + viral article gets 800–1500.
  • Tone: Plain. Specific. No vibes. Every bias claim ties to a concrete tell — a quoted phrase, a sample-frame fact, a missing disclosure.
  • Must Include: Methodology line (sample, dates, instrument availability), the three layers, the supported-vs-editorialized split, a one-paragraph bottom line, sources list with URLs.
  • Must Avoid: Hedging ("could potentially be biased"). Diagnose or don't. The reader gets to disagree — but they should know what the analyst actually thinks.

Gotchas

  • Always try to find the primary source. The single biggest failure mode is analyzing an article without ever reaching the underlying study. If the input cites a study/report/paper/dataset, the skill MUST attempt to fetch it. Inability to locate the primary source is itself a finding (publication availability bias) and goes in the output.
  • An impossibly high consensus number is a tell about the question. When a survey claims 95%+ agreement on a substantive question, that almost always means the question was a low-bar yes/no. Note it explicitly even when the instrument is hidden.
  • Vendor research is research; treat it that way. Don't dismiss a Mercer/McKinsey/PwC/Gartner report because they sell consulting. Their funding bias is a multiplier on the analysis, not an automatic disqualifier. Specific finding > generic "vendor bias."
  • Don't conflate Layer 1 and Layer 3. A bad headline doesn't make the underlying data bad. A flawed study doesn't make the journalism dishonest. Keep them separate even when both have problems.
  • Headlines travel; bodies don't. Most readers see only the headline. A headline-to-source mismatch is the most consequential journalism bias and should always be flagged when present.
  • "Charitable reading" is required. Before concluding the source is misleading, articulate what the data DOES support. This anchors the critique in specifics.
  • Don't go beyond the source you fetched. No drive-by claims about Mercer's other reports if you only read one. No "they always do X" — stick to what's in the artifact.
  • Pure opinion piece with no data? This skill is the wrong tool — redirect to a psychological author-analysis skill for a psychological author read. BiasCheck needs claims with empirical scaffolding.
  • Author background is out of scope. This skill audits the source artifact, not the author's biography. If you need "who is this writer and what's their track record," use Research or a dedicated OSINT/entity-investigation skill.

Execution Log

echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"BiasCheck","workflow":"Check","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl
1---
2name: BiasCheck
3version: 1.0.3
4description: "Three-layer bias analysis on any URL, file, or text — auto-fetches the content and any cited study, then audits data-level biases, source conflicts of interest, and journalism-added distortions, separating what the data supports from what's editorialized. USE WHEN bias analysis, analyze bias, bias check, check this study, who funded this, is this source biased, fact-check article, methodological flaws, source credibility, what's wrong with this claim. NOT FOR psychological author analysis, research synthesis (use Research), entity due diligence."
5disallowed-tools: Edit, Write, NotebookEdit
6---
7 
8## Customization
9 
10**Before executing, check for user customizations at:**
11`~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/BiasCheck/`
12 
13If this directory exists, load and apply any `PREFERENCES.md` or additional reference files found there. These override default behavior. If the directory does not exist, proceed with skill defaults.
14 
15# BiasCheck
16 
17## Voice Notification
18 
19**When executing a workflow, do BOTH:**
20 
211. **Send voice notification**:
22 ```bash
23 curl -s -X POST http://localhost:31337/notify \
24 -H "Content-Type: application/json" \
25 -d '{"message": "Running the Check workflow in the BiasCheck skill to audit the source"}' \
26 > /dev/null 2>&1 &
27 ```
28 
292. **Output text notification**:
30 ```
31 Running the **Check** workflow in the **BiasCheck** skill to audit the source...
32 ```
33 
34## What It Does
35 
36Runs a three-layer bias audit on any source — a URL, a file path, or raw text. It fetches the content plus any study it cites, then checks (1) biases inside the data, (2) conflicts of interest in the source organization, and (3) distortions the journalism added on top. The output separates what the data actually supports from what got editorialized.
37 
38## The Problem
39 
40Most "this is biased" arguments are vibes — a feeling about a source, with nothing concrete underneath. They're not repeatable and they don't tell you where the distortion lives. The other failure is analyzing an article without ever reaching the study it cites, so you critique the headline and never see that the underlying data was fine (or that it was junk). A fixed taxonomy and a fixed output shape fix both: the analysis is repeatable, the gaps are visible, and every claim ties to a specific tell.
41 
42## How It Works
43 
44The skill operates on three layers:
45 
461. **The data itself** — biases inside the underlying study, paper, or dataset (funding, sampling, instrument design, demand characteristics, self-report distance from behavior, causal inflation, missing benchmark, publication availability)
472. **The source organization** — who paid for or produced the work, what they sell, what conclusion would be inconvenient
483. **The journalism on top** — what the reporter/commentator added: headline-to-source distortion, frame escalation, echo-chain amplification, causal claims layered over correlational data
49 
50Output cleanly separates **what the data actually supports** from **what was editorialized on top**. Confidence is anchored to specifics — no vibes-based "this seems biased."
51 
52## Workflow Routing
53 
54| Workflow | Trigger | File |
55|----------|---------|------|
56| **Check** | "bias check", "analyze bias on", "check this study/source/article" | `Workflows/Check.md` |
57 
58## Quick Reference
59 
60- **Input:** one argument — URL, file path, raw text, or any combination.
61- **Always tries to find the primary source.** If the input is journalism citing a study, the skill fetches the study itself, not just the article. If the primary source can't be located, that's a finding.
62- **Three-layer output** — never collapse layers; the distortion usually lives in the layer the source is least transparent about.
63- **Hard separation between supported and editorialized** — this is the deliverable shape.
64- **Bias taxonomy reference:** `BiasTaxonomy.md` (load on demand for the full category catalog with definitions and tells).
65 
66## Examples
67 
68**Example 1: Article citing a vendor study**
69```
70User: "bias check https://futurism.com/some-article-citing-a-mercer-survey"
71→ Invokes Check workflow
72→ Fetches the article, identifies the cited Mercer study, fetches Mercer's source
73→ Runs three-layer audit: vendor conflict-of-interest, sample/question-design biases, journalism's headline-vs-source swap
74→ Returns structured bias report + supported-vs-editorialized split
75```
76 
77**Example 2: Raw paste of a study abstract**
78```
79User: "bias check this abstract: [pastes 4 paragraphs from a paper]"
80→ Invokes Check workflow
81→ Skips Layer 3 (no journalism on top — input IS the primary source)
82→ Audits Layers 1 + 2 only: funding disclosure, sample, methodology, conflict-of-interest
83→ Notes if abstract is insufficient to assess methodology (publication availability bias)
84```
85 
86**Example 3: File path**
87```
88User: "bias check ~/Downloads/some-report.pdf"
89→ Invokes Check workflow
90→ Reads file
91→ Identifies if report cites further upstream sources; fetches what it can
92→ Three-layer audit with specifics
93```
94 
95## Output Requirements
96 
97- **Format:** Markdown with the fixed section structure defined in `Workflows/Check.md`.
98- **Length:** Scales with source complexity. A single-claim tweet gets ~200 words; a vendor-funded study + viral article gets 800–1500.
99- **Tone:** Plain. Specific. No vibes. Every bias claim ties to a concrete tell — a quoted phrase, a sample-frame fact, a missing disclosure.
100- **Must Include:** Methodology line (sample, dates, instrument availability), the three layers, the supported-vs-editorialized split, a one-paragraph bottom line, sources list with URLs.
101- **Must Avoid:** Hedging ("could potentially be biased"). Diagnose or don't. The reader gets to disagree — but they should know what the analyst actually thinks.
102 
103## Gotchas
104 
105- **Always try to find the primary source.** The single biggest failure mode is analyzing an article without ever reaching the underlying study. If the input cites a study/report/paper/dataset, the skill MUST attempt to fetch it. Inability to locate the primary source is itself a finding (publication availability bias) and goes in the output.
106- **An impossibly high consensus number is a tell about the question.** When a survey claims 95%+ agreement on a substantive question, that almost always means the question was a low-bar yes/no. Note it explicitly even when the instrument is hidden.
107- **Vendor research is research; treat it that way.** Don't dismiss a Mercer/McKinsey/PwC/Gartner report because they sell consulting. Their funding bias is a multiplier on the analysis, not an automatic disqualifier. Specific finding > generic "vendor bias."
108- **Don't conflate Layer 1 and Layer 3.** A bad headline doesn't make the underlying data bad. A flawed study doesn't make the journalism dishonest. Keep them separate even when both have problems.
109- **Headlines travel; bodies don't.** Most readers see only the headline. A headline-to-source mismatch is the most consequential journalism bias and should always be flagged when present.
110- **"Charitable reading" is required.** Before concluding the source is misleading, articulate what the data DOES support. This anchors the critique in specifics.
111- **Don't go beyond the source you fetched.** No drive-by claims about Mercer's other reports if you only read one. No "they always do X" — stick to what's in the artifact.
112- **Pure opinion piece with no data?** This skill is the wrong tool — redirect to a psychological author-analysis skill for a psychological author read. BiasCheck needs claims with empirical scaffolding.
113- **Author background is out of scope.** This skill audits the source artifact, not the author's biography. If you need "who is this writer and what's their track record," use Research or a dedicated OSINT/entity-investigation skill.
114 
115## Execution Log
116 
117```bash
118echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"BiasCheck","workflow":"Check","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl
119```
120 
View all files on GitHub →

Details

Version
1.0.3
License
MIT
Stars on the repo
★ 19,269
Checked
Source
danielmiessler/LifeOS ↗
Creator
danielmiessler · 63 listings
View creator

Similar skills

See all →
SkillArticle Illustration GeneratorJimLiu/baoyu-skills · by JimLiuAnalyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use when user asks to "illustrate article", "add images", "generate images for article", or "为文章配图".★ 26.6k GitHub starsSkillArticle Cover DesignerJimLiu/baoyu-skills · by JimLiuGenerates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to "generate cover image", "create article cover", or "make cover".★ 26.6k GitHub starsSkillArticle Content Extractormichalparkola/tapestry-skills · by michalparkolaExtract clean article content from URLs (blog posts, articles, tutorials) and save as readable text. Use when user wants to download, extract, or save an article/blog post from a URL without ads, navigation, or clutter.★ 553 GitHub starsSkillArticle CTA Designersamber/cc-skills · by samberDesigns end-of-article CTAs — copy, layout, placement, A/B test plan, accessibility — for blog posts, newsletters, and essays. Use whenever the user asks to write, review, or improve a CTA at the bottom of an article; mentions "end-of-post CTA", "call-to-action", "signup box", "newsletter CTA", "subscribe block", or "what should I put at the bottom"; or asks how to turn readers into subscribers, leads, customers, or paying supporters. Covers personal blogs, paid newsletters (Substack, beehiiv, Ghost), and brand content-marketing blogs. Do NOT use for opening hooks, ledes, or post titles — use samber/cc-skills@copywriting-hooks instead. Not for landing-page, ad, or email copy.★ 222 GitHub starsSkillBrand Story Video Promptscharlesdove977/UGC-Factory · by charlesdove977Generate brand storytelling and narrative video prompts for Seedance 2.0 on Higgsfield. Use whenever the user wants to create a brand story video, company origin story, mission video, about us video, brand film, corporate narrative, founder story, brand anthem, company culture video, or emotional brand content. Triggers on: brand story, brand video, company story, origin story, about us, mission video, brand film, brand anthem, corporate video, company culture, founder story, brand narrative, or any request for brand/company storytelling video. Use even for "tell our company story" or "make a video about our mission.★ 83 GitHub starsSkillArticle Writer From Notesmattpocock/skills · by mattpocockHand over your messy notes, transcripts and half-thoughts on a topic, and get back a finished article that flows from one point to the next.★ 267k GitHub stars

More from danielmiessler

SkillScope Oscillation Analyzerdanielmiessler/LifeOS · by danielmiessler3-pass scope oscillation that holds a question constant while shifting zoom — narrow/tactical, wide/strategic, then synthesis — to surface design tensions, scope recommendations, and coherence assessments invisible at any single zoom level. USE WHEN aperture oscillation, oscillate scope, zoom in and out, tactical vs strategic, scope framing, design tension, system coherence check, local vs global design, wrong scope, scope negotiation. NOT FOR lens rotation across angles (use IterativeDepth).★ 19.3k GitHub starsSkillAphorism Library Managerdanielmiessler/LifeOS · by danielmiesslerCurated aphorism collection with CRUD — content-based matching, themed search, thinker research, DB maintenance. Quotes organized by author/theme/context/usage to prevent repetition. Four workflows: FindAphorism, AddAphorism, ResearchThinker, SearchAphorisms. Themes: Stoicism, Wisdom, Truth-seeking, Excellence, Resilience, Curiosity. USE WHEN aphorism, quote, find a quote, research thinker, add aphorism, quote for newsletter, what did X say about, quote bank. NOT FOR creative writing or social posts.★ 19.3k GitHub starsSkillSocial Platform Scraperdanielmiessler/LifeOS · by danielmiesslerScrapes social platforms, business data, and e-commerce via Apify actors — Instagram, LinkedIn, TikTok, YouTube, Facebook, Google Maps, Amazon, and web crawls — filtering in code. USE WHEN scrape Instagram, scrape LinkedIn, scrape TikTok, scrape YouTube, scrape Facebook, Google Maps leads, Amazon reviews, business intelligence, multi-platform social listening, competitive analysis, lead generation, social monitoring, Apify actors, web crawl, extract contacts. NOT FOR X/Twitter account operations like posting, threads, or bookmarks (those need a dedicated X API client), 4-tier progressive scraping with proxy escalation (use BrightData), or real-Chrome bot bypass and computer use (use Interceptor).★ 19.3k GitHub starsSkillVisual Content Generatordanielmiessler/LifeOS · by danielmiesslerStatic visual content across 20+ formats — diagrams, mermaid, infographics, D3 dashboards, comics, icons, wallpaper — via Nano Banana Pro (default), Nano Banana, and Flux. USE WHEN art, illustration, diagram, flowchart, infographic, header image, blog social thumbnail, visualize, generate image, mermaid, architecture diagram, comic, icon, blog art, framework diagram, D3 chart, remove background, wallpaper. NOT FOR locked house-style YouTube/channel/video thumbnails, video or animation (use Remotion), or web UI design and integrated frontend layout (use Webdesign).★ 19.3k GitHub starsSkillArXiv Paper Finderdanielmiessler/LifeOS · by danielmiesslerSearch and retrieve arXiv academic papers by topic, category, or paper ID — with AlphaXiv-enriched AI-generated overviews. Uses arXiv Atom API across cs.AI/cs.LG/cs.CL/cs.CR/cs.MA/cs.SE/cs.IR. Three workflows: Latest, Search, Paper. USE WHEN arxiv, papers, latest papers, research papers, recent ML papers, paper lookup, summarize paper, latest LLM papers, AI safety papers, cs.AI latest. NOT FOR general research (Research), URL parsing, or annual reports.★ 19.3k GitHub starsSkillFiller Removal Audio Editordanielmiessler/LifeOS · by danielmiesslerAI audio editing pipeline: Whisper word-level transcription → Claude segment classification (KEEP/CUT_FILLER/CUT_FALSE_START/CUT_STUTTER/CUT_DEAD_AIR) → ffmpeg with 40ms qsin crossfades and room-tone fill → optional Cleanvoice cloud polish; plus GateScan/GateRepair for noise-gate ticking artifacts. Modes: --preview, --aggressive, --polish. Workflow: Clean. USE WHEN clean audio, edit audio, remove filler words, clean podcast, remove ums, cut dead air, polish audio, trim recording, cut stutters, ticking audio, clicking audio, audio clicks, gate artifacts, popping audio. NOT FOR video composition (use Remotion).★ 19.3k GitHub stars