home / skills / cdeistopened / opened-vault / quality-loop

quality-loop skill

/.claude/skills/quality-loop

This skill guides iterative drafting with five quality gates, delivering high-quality content through source gathering, hook-first drafting, and structured

npx playbooks add skill cdeistopened/opened-vault --skill quality-loop

Review the files below or copy the command above to add this skill to your agents.

Files (7)
SKILL.md
10.7 KB
---
name: quality-loop
description: Iterative drafting system with 5-judge quality gates. This skill should be used for any writing project requiring multiple drafts and systematic quality control - profiles, deep dives, guides, articles. Includes source compilation, hook-first drafting, and backpressure from judge personas.
---

# 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:**

```markdown
# 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:**

```markdown
# 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

Overview

This skill is an iterative drafting system that enforces five-judge quality gates to produce polished, publish-ready writing. It centralizes source compilation, insists on hook-first drafting, and applies blocking and advisory checks to prevent AI tells, factual errors, and voice drift. Use it for any public-facing content that needs repeatable quality control.

How this skill works

Before drafting, it compiles proprietary and external sources into a single verification file. You propose and approve a hook, then produce a draft that runs through sequential judges: Human Detector, Accuracy Checker, OpenEd Voice, Reader Advocate, and an advisory SEO review. Any blocking failure triggers targeted fixes and re-running of the failed judge until the draft passes all blocking gates.

When to use it

  • Before publishing long-form work: articles, deep dives, and newsletters (Full 5-judge).
  • Before scheduling or sending social content: LinkedIn, X, Instagram, Facebook (Lite 3-judge).
  • For profile series or multi-piece projects where structural variety and factual accuracy matter.
  • Any public-facing content that must reflect brand voice and avoid AI stylistic tells.
  • When you need a repeatable checklist for fact-checking and internal linking.

Best practices

  • Compile all relevant proprietary content first, then external verification links in a single source file.
  • Always present 4–6 differentiated hook options and get user sign-off before drafting.
  • Run judges in strict order; fix only failed blocking checks and re-run that judge.
  • Track status in a simple tracking document with judge pass/fail columns and draft versions.
  • Avoid forbidden words, correlative constructions, dramatic-contrast reveals, staccato sentences, and em dashes without spaces.

Example use cases

  • Writing a newsletter that must be fact-checked and aligned with OpenEd voice before send.
  • Producing a long-form profile series while ensuring each piece uses a distinct structural approach.
  • Drafting a web article with strict source verification and SEO advisory feedback before publish.
  • Creating social posts with a lightweight loop that blocks AI tells and enforces brand voice.
  • Converting podcast transcripts into published blog posts with sourced quotes and internal links.

FAQ

What triggers the full 5-judge loop versus the lite loop?

Long-form and publish-ready pieces use the Full 5-judge loop; social posts and fast-turn content use the Lite 3-judge loop tailored to platform needs.

What happens if a blocking judge fails?

Fix the specific issue, re-run only the failed judge, and continue once it passes; repeat until all blocking judges pass.

Does the SEO judge block publication?

No. The SEO Advisor is advisory only and suggests optimizations without blocking progress.