Expert Panel skill
Score, evaluate, and iteratively improve any content or strategy using an auto-assembled panel of domain experts.
by ericosiu·MIT license·★ 3,615 Stars on the repo·GitHub ↗
npx degit ericosiu/ai-marketing-skills/content-ops#main ~/.claude/skills/content-opsChecked ·commit main
Files of Expert Panel
Show the full text247 lines
Preamble (runs on skill start)
# Version check (silent if up to date)
python3 telemetry/version_check.py 2>/dev/null || true
# Telemetry opt-in (first run only, then remembers your choice)
python3 telemetry/telemetry_init.py 2>/dev/null || true
Privacy: This skill logs usage locally to
~/.ai-marketing-skills/analytics/. Remote telemetry is opt-in only. No code, file paths, or repo content is ever collected. Seetelemetry/README.md.
Expert Panel
General-purpose scoring and iterative improvement engine. Auto-assembles the right experts for whatever is being evaluated, scores it, and loops until 90+.
Step 1: Intake — Understand What's Being Scored
Collect or infer from context:
- Content/artifact — The thing(s) to score (paste, file path, or URL)
- Content type — Copy, sequence, landing page, strategy, title, chart, candidate eval, etc.
- Offer context — What's being sold/promoted? To whom? What domain/industry?
- Variants — Are there multiple versions to compare? (A/B/C)
- Source skill — Is this output from another skill? (e.g., cold-outbound-optimizer) If yes, note the source for feedback-to-source routing in Step 6.
If context is obvious from the conversation, don't ask — just proceed.
Step 2: Auto-Assemble the Expert Panel
Build a panel of 7–10 experts tailored to the content type and domain.
Assembly rules
Start with content-type experts. Read
experts/directory for pre-built panels matching the content type. If an exact match exists (e.g.,experts/linkedin.mdfor a LinkedIn post), use it as the base.Add domain/offer experts. Based on the offer context, add 1–3 experts who understand the specific industry or domain. Examples:
- Scoring bakery marketing → add Food & Beverage Marketing Expert
- Scoring SaaS landing page → add SaaS Conversion Expert
- Scoring recruiting outreach → add Agency Recruiter + Talent Market Expert
- Scoring medical device copy → add Healthcare Compliance Expert
Always include these two:
- AI Writing Detector — See
experts/humanizer.md. Weight: 1.5x. Non-negotiable. - Brand Voice Match — Checks alignment with the configured brand voice and
known rejection patterns from
references/patterns.md(if present).
- AI Writing Detector — See
Check learned patterns. If
references/patterns.mdexists, read it. If any patterns apply to this content type, brief the panel on them. Dock points for known-bad patterns.Cap at 10 experts. If you have more than 10, merge overlapping roles.
Panel output format
List each expert with: Name, lens/focus, what they check.
Step 3: Select Scoring Rubric
Choose the appropriate rubric from scoring-rubrics/:
| Content type | Rubric file |
|---|---|
| Blog, social, email, newsletter, scripts | scoring-rubrics/content-quality.md |
| Strategy, recommendations, analysis | scoring-rubrics/strategic-quality.md |
| Landing pages, ads, CTAs | scoring-rubrics/conversion-quality.md |
| Charts, data viz, infographics | scoring-rubrics/visual-quality.md |
| Candidate evaluations | scoring-rubrics/evaluation-quality.md |
| Other | Synthesize a rubric from the two closest matches |
Read the selected rubric file for detailed criteria and point allocation.
Step 4: Score — Recursive Loop Until 90+
Target: 90/100 across all experts. Non-negotiable. Max 3 rounds.
Each round produces:
## Round [N] — Score: [AVG]/100
| Expert | Score | Key Feedback |
|--------|-------|--------------|
| [Name] | [0-100] | [One-line rationale] |
| ... | ... | ... |
**Aggregate:** [weighted average — humanizer at 1.5x]
**Top 3 weaknesses:** [ranked]
**Changes made:** [specific edits addressing each weakness]
Then the revised content/artifact.
Rules
- Scores must be brutally honest. No padding to 90.
- Humanizer score weighted 1.5x in the aggregate.
- If aggregate < 90: identify top 3 weaknesses → revise → next round.
- If aggregate ≥ 90: finalize and proceed to output.
- After 3 rounds, if still < 90: return best version with honest score + note on what's holding it back.
- Show ALL rounds in output — the iteration trail is part of the value.
Variant comparison mode
When scoring multiple variants (A/B/C):
- Score each variant independently through the full panel.
- After scoring, rank variants by aggregate score.
- If top variant is < 90, iterate on the best one (don't iterate all of them).
Step 5: Output Format
Winner + Score (always at top)
## 🏆 Result: [SCORE]/100 — [PASS ✅ | NEEDS WORK ⚠️]
[Final content/artifact here]
**Iterations:** [N] rounds
**Panel:** [Expert names, comma-separated]
If variants: show winner first, then runner-up scores.
## 🏆 Winner: Variant [X] — [SCORE]/100
[Winning content]
### Runner-up scores
- Variant A: 87/100
- Variant B: 82/100
- Variant C: 91/100 ← Winner
Feedback History (below the result)
Show full scoring rounds.
---
<details>
<summary>📊 Scoring History (N rounds)</summary>
[All round tables from Step 4]
</details>
Step 6: Feedback-to-Source (When Scoring Another Skill's Output)
When the scored content came from another skill, generate a Source Improvement Brief:
## 🔁 Feedback for [Source Skill]
### What scored low
- [Pattern]: [Specific example from this content]
### Suggested skill improvements
- [Concrete change to the source skill's process/rubric/prompt]
### Patterns to add to source skill
- [Any recurring weakness that should become a rule]
This brief can be used to update the source skill's SKILL.md or rubrics.
Step 7: Memory — Learn from Approvals and Rejections
After the user approves or rejects panel output:
On approval (score ≥ 90, user accepts)
Note what worked. No action needed unless a new positive pattern emerges.
On rejection (user overrides the panel or rejects 90+ content)
- Ask why (or infer from context).
- Add a new pattern to
references/patterns.mdusing this format:
## [Pattern Name]
- **Type:** rejection | preference | override
- **Content types:** [which types this applies to]
- **Rule:** [What to always/never do]
- **Example:** [The specific instance that triggered this]
- **Date:** [YYYY-MM-DD]
- **Point dock:** [-N points when detected]
- Confirm: "Added pattern: [one-line summary]. Panel will dock [N] points for this going forward."
Pattern enforcement
Every scoring round, check references/patterns.md against the content. Apply point docks
before expert scoring begins. This means known-bad patterns are penalized even if individual
experts miss them.
Reference Files
| File | Purpose | When to read |
|---|---|---|
experts/humanizer.md |
AI writing detection rubric (24 patterns) | Every scoring run |
experts/[domain].md |
Pre-built expert panels for common domains | When domain matches |
scoring-rubrics/content-quality.md |
Content scoring rubric | Content scoring |
scoring-rubrics/strategic-quality.md |
Strategy scoring rubric | Strategy scoring |
scoring-rubrics/conversion-quality.md |
Landing page/ad/CTA rubric | Conversion scoring |
scoring-rubrics/visual-quality.md |
Chart/data viz/infographic rubric | Visual scoring |
scoring-rubrics/evaluation-quality.md |
Candidate/assessment rubric | Eval scoring |
references/patterns.md |
Learned rejection patterns | Every scoring run |
references/expert-assembly.md |
Domain-expert examples for auto-assembly | When building unfamiliar panels |
| 1 | |
| 2 | name expert-panel |
| 3 | description >- |
| 4 | Score, evaluate, and iteratively improve any content or strategy using an |
| 5 | auto-assembled panel of domain experts. Handles copy, sequences, landing pages, |
| 6 | strategy docs, titles, charts, recruiting evaluations, or anything else that |
| 7 | needs a quality gate. Recursively iterates until all scores hit 90+ (max 3 |
| 8 | rounds). Use when asked to: "expert panel this", "score this", "rate these |
| 9 | variants", "quality check this", "panel review", "which version is better", |
| 10 | "expert score", "evaluate this copy/strategy/page", or when another skill |
| 11 | needs a quality gate on its output. Also triggers on: "score this landing page", |
| 12 | "expert panel these email variants", "rate this headline", "panel these charts". |
| 13 | |
| 14 | |
| 15 | |
| 16 | ## Preamble (runs on skill start) |
| 17 | |
| 18 | |
| 19 | # Version check (silent if up to date) |
| 20 | python3 telemetry/version_check.py 2>/dev/null || true |
| 21 | |
| 22 | # Telemetry opt-in (first run only, then remembers your choice) |
| 23 | python3 telemetry/telemetry_init.py 2>/dev/null || true |
| 24 | |
| 25 | |
| 26 | > **Privacy:** This skill logs usage locally to `~/.ai-marketing-skills/analytics/`. Remote telemetry is opt-in only. No code, file paths, or repo content is ever collected. See `telemetry/README.md`. |
| 27 | |
| 28 | |
| 29 | |
| 30 | # Expert Panel |
| 31 | |
| 32 | General-purpose scoring and iterative improvement engine. Auto-assembles the |
| 33 | right experts for whatever is being evaluated, scores it, and loops until 90+. |
| 34 | |
| 35 | |
| 36 | |
| 37 | ## Step 1: Intake — Understand What's Being Scored |
| 38 | |
| 39 | Collect or infer from context: |
| 40 | |
| 41 | **Content/artifact** — The thing(s) to score (paste, file path, or URL) |
| 42 | **Content type** — Copy, sequence, landing page, strategy, title, chart, candidate eval, etc. |
| 43 | **Offer context** — What's being sold/promoted? To whom? What domain/industry? |
| 44 | **Variants** — Are there multiple versions to compare? (A/B/C) |
| 45 | **Source skill** — Is this output from another skill? (e.g., cold-outbound-optimizer) |
| 46 | If yes, note the source for feedback-to-source routing in Step 6. |
| 47 | |
| 48 | If context is obvious from the conversation, don't ask — just proceed. |
| 49 | |
| 50 | |
| 51 | |
| 52 | ## Step 2: Auto-Assemble the Expert Panel |
| 53 | |
| 54 | Build a panel of **7–10 experts** tailored to the content type and domain. |
| 55 | |
| 56 | ### Assembly rules |
| 57 | |
| 58 | **Start with content-type experts.** Read `experts/` directory for pre-built panels matching |
| 59 | the content type. If an exact match exists (e.g., `experts/linkedin.md` for a LinkedIn post), |
| 60 | use it as the base. |
| 61 | |
| 62 | **Add domain/offer experts.** Based on the offer context, add 1–3 experts who understand |
| 63 | the specific industry or domain. Examples: |
| 64 | Scoring bakery marketing → add Food & Beverage Marketing Expert |
| 65 | Scoring SaaS landing page → add SaaS Conversion Expert |
| 66 | Scoring recruiting outreach → add Agency Recruiter + Talent Market Expert |
| 67 | Scoring medical device copy → add Healthcare Compliance Expert |
| 68 | |
| 69 | **Always include these two:** |
| 70 | **AI Writing Detector** — See `experts/humanizer.md`. Weight: 1.5x. Non-negotiable. |
| 71 | **Brand Voice Match** — Checks alignment with the configured brand voice and |
| 72 | known rejection patterns from `references/patterns.md` (if present). |
| 73 | |
| 74 | **Check learned patterns.** If `references/patterns.md` exists, read it. If any patterns |
| 75 | apply to this content type, brief the panel on them. Dock points for known-bad patterns. |
| 76 | |
| 77 | **Cap at 10 experts.** If you have more than 10, merge overlapping roles. |
| 78 | |
| 79 | ### Panel output format |
| 80 | List each expert with: Name, lens/focus, what they check. |
| 81 | |
| 82 | |
| 83 | |
| 84 | ## Step 3: Select Scoring Rubric |
| 85 | |
| 86 | Choose the appropriate rubric from `scoring-rubrics/`: |
| 87 | |
| 88 | | Content type | Rubric file | |
| 89 | |---|---| |
| 90 | | Blog, social, email, newsletter, scripts | `scoring-rubrics/content-quality.md` | |
| 91 | | Strategy, recommendations, analysis | `scoring-rubrics/strategic-quality.md` | |
| 92 | | Landing pages, ads, CTAs | `scoring-rubrics/conversion-quality.md` | |
| 93 | | Charts, data viz, infographics | `scoring-rubrics/visual-quality.md` | |
| 94 | | Candidate evaluations | `scoring-rubrics/evaluation-quality.md` | |
| 95 | | Other | Synthesize a rubric from the two closest matches | |
| 96 | |
| 97 | Read the selected rubric file for detailed criteria and point allocation. |
| 98 | |
| 99 | |
| 100 | |
| 101 | ## Step 4: Score — Recursive Loop Until 90+ |
| 102 | |
| 103 | **Target: 90/100 across all experts. Non-negotiable. Max 3 rounds.** |
| 104 | |
| 105 | ### Each round produces: |
| 106 | |
| 107 | |
| 108 | ## Round [N] — Score: [AVG]/100 |
| 109 | |
| 110 | | Expert | Score | Key Feedback | |
| 111 | |--------|-------|--------------| |
| 112 | | [Name] | [0-100] | [One-line rationale] | |
| 113 | | ... | ... | ... | |
| 114 | |
| 115 | **Aggregate:** [weighted average — humanizer at 1.5x] |
| 116 | **Top 3 weaknesses:** [ranked] |
| 117 | **Changes made:** [specific edits addressing each weakness] |
| 118 | |
| 119 | |
| 120 | Then the revised content/artifact. |
| 121 | |
| 122 | ### Rules |
| 123 | |
| 124 | Scores must be brutally honest. No padding to 90. |
| 125 | Humanizer score weighted 1.5x in the aggregate. |
| 126 | If aggregate < 90: identify top 3 weaknesses → revise → next round. |
| 127 | If aggregate ≥ 90: finalize and proceed to output. |
| 128 | After 3 rounds, if still < 90: return best version with honest score + note on what's |
| 129 | holding it back. |
| 130 | Show ALL rounds in output — the iteration trail is part of the value. |
| 131 | |
| 132 | ### Variant comparison mode |
| 133 | |
| 134 | When scoring multiple variants (A/B/C): |
| 135 | Score each variant independently through the full panel. |
| 136 | After scoring, rank variants by aggregate score. |
| 137 | If top variant is < 90, iterate on the best one (don't iterate all of them). |
| 138 | |
| 139 | |
| 140 | |
| 141 | ## Step 5: Output Format |
| 142 | |
| 143 | ### Winner + Score (always at top) |
| 144 | |
| 145 | |
| 146 | ## 🏆 Result: [SCORE]/100 — [PASS ✅ | NEEDS WORK ⚠️] |
| 147 | |
| 148 | [Final content/artifact here] |
| 149 | |
| 150 | **Iterations:** [N] rounds |
| 151 | **Panel:** [Expert names, comma-separated] |
| 152 | |
| 153 | |
| 154 | If variants: show winner first, then runner-up scores. |
| 155 | |
| 156 | |
| 157 | ## 🏆 Winner: Variant [X] — [SCORE]/100 |
| 158 | |
| 159 | [Winning content] |
| 160 | |
| 161 | ### Runner-up scores |
| 162 | - Variant A: 87/100 |
| 163 | - Variant B: 82/100 |
| 164 | - Variant C: 91/100 ← Winner |
| 165 | |
| 166 | |
| 167 | ### Feedback History (below the result) |
| 168 | |
| 169 | Show full scoring rounds. |
| 170 | |
| 171 | |
| 172 | |
| 173 | <details> |
| 174 | <summary>📊 Scoring History (N rounds)</summary> |
| 175 | |
| 176 | [All round tables from Step 4] |
| 177 | |
| 178 | </details> |
| 179 | |
| 180 | |
| 181 | |
| 182 | |
| 183 | ## Step 6: Feedback-to-Source (When Scoring Another Skill's Output) |
| 184 | |
| 185 | When the scored content came from another skill, generate a **Source Improvement Brief**: |
| 186 | |
| 187 | |
| 188 | ## 🔁 Feedback for [Source Skill] |
| 189 | |
| 190 | ### What scored low |
| 191 | - [Pattern]: [Specific example from this content] |
| 192 | |
| 193 | ### Suggested skill improvements |
| 194 | - [Concrete change to the source skill's process/rubric/prompt] |
| 195 | |
| 196 | ### Patterns to add to source skill |
| 197 | - [Any recurring weakness that should become a rule] |
| 198 | |
| 199 | |
| 200 | This brief can be used to update the source skill's SKILL.md or rubrics. |
| 201 | |
| 202 | |
| 203 | |
| 204 | ## Step 7: Memory — Learn from Approvals and Rejections |
| 205 | |
| 206 | After the user approves or rejects panel output: |
| 207 | |
| 208 | ### On approval (score ≥ 90, user accepts) |
| 209 | Note what worked. No action needed unless a new positive pattern emerges. |
| 210 | |
| 211 | ### On rejection (user overrides the panel or rejects 90+ content) |
| 212 | Ask why (or infer from context). |
| 213 | Add a new pattern to `references/patterns.md` using this format: |
| 214 | |
| 215 | |
| 216 | ## [Pattern Name] |
| 217 | - **Type:** rejection | preference | override |
| 218 | - **Content types:** [which types this applies to] |
| 219 | - **Rule:** [What to always/never do] |
| 220 | - **Example:** [The specific instance that triggered this] |
| 221 | - **Date:** [YYYY-MM-DD] |
| 222 | - **Point dock:** [-N points when detected] |
| 223 | |
| 224 | |
| 225 | Confirm: "Added pattern: [one-line summary]. Panel will dock [N] points for this going forward." |
| 226 | |
| 227 | ### Pattern enforcement |
| 228 | Every scoring round, check `references/patterns.md` against the content. Apply point docks |
| 229 | before expert scoring begins. This means known-bad patterns are penalized even if individual |
| 230 | experts miss them. |
| 231 | |
| 232 | |
| 233 | |
| 234 | ## Reference Files |
| 235 | |
| 236 | | File | Purpose | When to read | |
| 237 | |---|---|---| |
| 238 | | `experts/humanizer.md` | AI writing detection rubric (24 patterns) | Every scoring run | |
| 239 | | `experts/[domain].md` | Pre-built expert panels for common domains | When domain matches | |
| 240 | | `scoring-rubrics/content-quality.md` | Content scoring rubric | Content scoring | |
| 241 | | `scoring-rubrics/strategic-quality.md` | Strategy scoring rubric | Strategy scoring | |
| 242 | | `scoring-rubrics/conversion-quality.md` | Landing page/ad/CTA rubric | Conversion scoring | |
| 243 | | `scoring-rubrics/visual-quality.md` | Chart/data viz/infographic rubric | Visual scoring | |
| 244 | | `scoring-rubrics/evaluation-quality.md` | Candidate/assessment rubric | Eval scoring | |
| 245 | | `references/patterns.md` | Learned rejection patterns | Every scoring run | |
| 246 | | `references/expert-assembly.md` | Domain-expert examples for auto-assembly | When building unfamiliar panels | |
| 247 |
Discussion
Alternatives
Browse more free Claude skills or everything in Product.