quality-loop

SKILL.md

Quality Loop

Iterative drafting system with backpressure from judge personas. Creates high-quality content through systematic source gathering, hook-first drafting, and multi-pass quality gates.

When to Use This Skill

UNIVERSAL QUALITY GATES: This skill triggers for ALL public-facing content.

Trigger Points by Content Type

Content Type Trigger Point Mode
Newsletter After draft, before send Full 5-judge
Deep Dive/Article Before Webflow publish Full 5-judge
Podcast blog Before publish Full 5-judge
LinkedIn post After draft, before schedule Lite 3-judge
X post After draft, before schedule Lite 3-judge
Instagram After draft + visual Lite 3-judge
Facebook After draft, before schedule Lite 3-judge

Full 5-Judge Mode

For long-form content (articles, newsletters, blog posts):

  • Human Detector (BLOCKING)
  • Accuracy Checker (BLOCKING)
  • OpenEd Voice (BLOCKING)
  • Reader Advocate (BLOCKING)
  • SEO Advisor (ADVISORY)

Lite 3-Judge Mode

For social posts (faster, focused on voice and AI tells):

  • AI-Tell Judge (BLOCKING) - Hard blocks only
  • Voice Judge (BLOCKING) - Brand alignment
  • Platform Judge (ADVISORY) - Platform-specific optimization

See "Lite Quality Loop for Social" section below.


The Quality Loop Process

SOURCES → HOOK → DRAFT → JUDGES → ITERATE
    ↑                         ↓
    └─────── (if blocked) ────┘

Phase 1: Source Compilation

Before drafting, gather all relevant sources into a single compiled file.

Source Search Order:

  1. Proprietary content first - Search OpenEd podcast transcripts, newsletters, Slack
  2. Content database - Grep Content/ for related themes (not just exact terms)
  3. External research - Web search for biography, facts, external validation

When no direct coverage exists: Expand the search to related themes. For example, if writing about "Daniel Greenberg":

  • Search for "democratic education"
  • Search for "self-directed"
  • Search for "trust children"
  • Search for related thinkers who discuss him (Peter Gray)

Source File Format:

# Source: [Topic] Compiled

## Biographical Facts
- Key dates, roles, locations
- Verified from multiple sources

## OpenEd Proprietary Content
**From Podcast [Episode]:**
> "Direct quote..."

**From Newsletter:**
> "Direct quote..."

## Key Themes
- Theme 1 with supporting evidence
- Theme 2 with supporting evidence

## SEO Notes
- Primary keyword: [keyword] ([volume]/mo)
- Secondary keywords: [list]

## Sources for Verification
- [URL 1]
- [URL 2]

Phase 2: Hook First

Never draft without user approval of the hook angle. Propose 4-6 hook options with clear differentiation.

Hook Proposal Format:

# Hook Opening Line Why It Works
1 [Name] "[First sentence]" [Reasoning]
2 [Name] "[First sentence]" [Reasoning]
... ... ... ...

Good hooks:

  • Start with a specific moment, fact, or tension
  • Create curiosity without clickbait
  • Connect to something the reader cares about
  • Differentiate from what's already ranking

Bad hooks:

  • Generic "In today's world..." openings
  • Definition-first approaches ("X is defined as...")
  • Vague statements that could apply to anyone

After user selects a hook, proceed to drafting.

For series content: When writing multiple pieces on similar topics (e.g., profiles of thinkers), ensure each piece has a structurally different approach to avoid sameness. Examples:

  • Profile A: Personal drama narrative
  • Profile B: Scientific/research angle
  • Profile C: Evolution story (phases of career)
  • Profile D: Institutional critique
  • Profile E: Evidence/longevity angle

Track the structural approach used for each piece to ensure variety.


Phase 3: Draft

Create the full draft following OpenEd style guidelines.

Draft Structure:

# Draft v[N]: [Title]

**Date:** [YYYY-MM-DD]
**Type:** [New / Enhancement]
**Target:** ~[X] words

---

## META ELEMENTS

**Title Options:**
1. [Option 1] ([char count])
2. [Option 2] ([char count])
...

**Meta Description (155 chars):** [Description]

**URL:** /blog/[slug]

---

## ARTICLE

[Full article content]

---

## NOTES FOR JUDGES

**Word count:** ~[X] words
**Internal links:** [N]
**External links:** [N]
**Target keywords:** [list]
**OpenEd connection:** [what makes this ours]
**Unique angle:** [what differentiates from competitors]

Phase 4: Five Judges

Run every draft through all five judges in order. If ANY blocking judge fails, fix and re-run that judge before proceeding.

Full judge references: See references/ folder for expanded criteria.

Judge 1: Human Detector (BLOCKING)

See: references/human-detector.md

Scans for AI tells. Zero tolerance for:

  • Correlative constructions ("X isn't just Y - it's Z")
  • Dramatic contrast reveals ("Not X. Y.")
  • AI vocabulary (delve, comprehensive, crucial, landscape, journey, tapestry, myriad)
  • Staccato patterns ("No fluff. No filler. Just results.")
  • Triple Threat Syndrome (forced three-adjective stacks)

VERDICT: PASS only if zero AI tells found.


Judge 2: Accuracy Checker (BLOCKING)

See: references/accuracy-checker.md

Verifies all factual claims against compiled sources:

  • Dates, names, quotes must match sources exactly
  • Statistics need citations
  • Timeline events in correct order
  • No unverifiable claims presented as fact

VERDICT: PASS only if all facts verified.


Judge 3: OpenEd Voice (BLOCKING)

See: references/opened-voice.md

Core stance: Pro-child, not anti-school.

  • Describes, doesn't prescribe
  • Practical takeaways present
  • 3+ internal links
  • Uses proprietary OpenEd content

VERDICT: PASS only if aligned with stance.


Judge 4: Reader Advocate (BLOCKING)

See: references/reader-advocate.md

Assesses engagement:

  • Hook creates curiosity (not definitions)
  • Logical section flow
  • Scannable structure
  • Appropriate length
  • Strong ending

VERDICT: PASS only if engaging throughout.


Judge 5: SEO Advisor (ADVISORY)

See: references/seo-advisor.md

Evaluates search optimization. Does not block.

  • Keyword in title, first 100 words, H2s
  • Meta elements optimized
  • 5+ internal links, 2-3 external
  • Featured snippet opportunities

VERDICT: Advisory feedback only.


Phase 5: Iterate

If any blocking judge fails:

  1. Make the specific fixes identified
  2. Re-run ONLY the failed judge
  3. If pass, continue to next judge
  4. If fail again, make additional fixes and repeat

After all judges pass:

  • Update status in tracking document
  • Move to next piece or finalize for publication

Folder Structure

The folder structure depends on the project type. Organize sources and drafts logically.

Example for profile series:

project/
├── sources/
│   ├── person-a/compiled-sources.md
│   └── person-b/compiled-sources.md
├── drafts/
│   ├── person-a/v1.md
│   └── person-b/v1.md
└── TRACKING.md

Example for guide project:

project/
├── sources/compiled-sources.md
├── drafts/
│   ├── v1.md
│   ├── v2.md
│   └── final.md
└── TRACKING.md

Tracking Progress

Maintain a tracking document showing status of each piece.

Tracking Table Format:

Item Sources Hook Draft HD AC OV RA SEO Status
[Name] DONE [Hook name] v1 PASS PASS PASS PASS PASS COMPLETE
[Name] DONE pending - - - - - - NEEDS HOOK

Legend:

  • HD = Human Detector
  • AC = Accuracy Checker
  • OV = OpenEd Voice
  • RA = Reader Advocate
  • SEO = SEO Advisor

Lite Quality Loop for Social

Faster quality checks for social posts. Run after draft, before scheduling.

Judge 1: AI-Tell Judge (BLOCKING)

Hard blocks - auto-reject if ANY found:

  • Correlative constructions ("X isn't just Y - it's Z")
  • Banned words: delve, comprehensive, crucial, leverage, landscape
  • Setup phrases: "The best part?", "What if I told you", "Here's the thing"
  • Staccato patterns: "No fluff. No filler. Just results."
  • Em dashes without spaces (use " - " not "—")

VERDICT: PASS only if zero hard blocks found.

Judge 2: Voice Judge (BLOCKING)

Checks:

  • Sounds like OpenEd/brand account (not personal blog)
  • Aligns with Open Education values (parent empowerment, learner agency)
  • Appropriate tone for platform
  • No preachy or prescriptive language

VERDICT: PASS only if brand-aligned.

Judge 3: Platform Judge (ADVISORY)

Platform-specific checks:

Platform Checklist
LinkedIn 200-500 words, links in comments, 3-5 hashtags, hook in first 2 lines
X 70-100 chars optimal, 1-2 hashtags, retweet-worthy
Instagram Visual-first, caption supports, 5-10 hashtags, first 150 chars hook
Facebook No external links, no hashtags, ends with question/engagement prompt

VERDICT: Advisory feedback - does not block.

Lite Loop Process

DRAFT → AI-Tell Judge → Voice Judge → Platform Judge → SCHEDULE
             ↓ (fail)        ↓ (fail)
           FIX & RETRY     FIX & RETRY

Quick Reference: AI Patterns to Avoid

Correlative Constructions (Most Common Tell)

  • "X isn't just Y - it's Z"
  • "X didn't Y. It Z."
  • "The goal isn't X - it's Y"
  • "It's not about X, it's about Y"

Forbidden Words

delve, comprehensive, crucial, vital, leverage, landscape, navigate, foster, facilitate, realm, paradigm, embark, journey, tapestry, myriad, multifaceted, seamless, cutting-edge

Forbidden Phrases

  • "The best part? ..." / "The secret? ..."
  • "What if I told you..." / "Here's the thing..."
  • "In today's fast-paced..." / "In the ever-evolving..."
  • "In conclusion" / "In summary"
  • "Let that sink in" / "Now more than ever"

Dramatic Contrast Reveals (Priority #2)

  • "Not on lessons. On fear."
  • "Not the curriculum. The structure."
  • "He didn't teach. He observed."
  • Any "Not X. Y." fragment pattern

Forbidden Patterns

  • Staccato: "No fluff. No filler. Just results."
  • Triple adjectives: "Bold, beautiful, brilliant"
  • Negation structure: "No X. No Y. Just Z."

Formatting Rules

  • Use hyphens with spaces - like this - not em dashes
  • No emojis in body content
  • No bold for emphasis in articles
Weekly Installs
17
GitHub Stars
4
First Seen
Jan 27, 2026
Installed on
opencode17
gemini-cli17
github-copilot17
cline17
codex17
cursor17