Skip to main content

double-agent

This skill should be used when designing, implementing, or improving any AI system that requires quality assurance through separation of generation and evaluation roles. It implements the Generator-Evaluator dual-agent architecture (inspired by Anthropic's engineering blog and GAN design), where a Generator produces outputs and a dedicated Evaluator agent independently validates them through real interaction (e.g., Playwright browser operations), eliminating AI self-evaluation bias. Use when: building AI-generated UIs/code that needs quality checks, designing multi-agent pipelines with feedback loops, or upgrading existing coder+tester workflows to real interaction-based evaluation.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
knownasnaffy/prompthound
آخر نشاط في المصدر
٦ يوليو ٢٠٢٦ في ٠٧:٠٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
5 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
double-agent
description
This skill should be used when designing, implementing, or improving any AI system that requires quality assurance through separation of generation and evaluation roles. It implements the Generator-Evaluator dual-agent architecture (inspired by Anthropic's engineering blog and GAN design), where a Generator produces outputs and a dedicated Evaluator agent independently validates them through real interaction (e.g., Playwright browser operations), eliminating AI self-evaluation bias. Use when: building AI-generated UIs/code that needs quality checks, designing multi-agent pipelines with feedback loops, or upgrading existing coder+tester workflows to real interaction-based evaluation.
# DoubleAgent Skill ## Purpose The DoubleAgent pattern solves a fundamental problem in AI-generated software: **AI self-evaluation bias**. When a single AI agent both generates and evaluates its own output, it systematically overestimates quality — the same cognitive conflict that occurs when a student grades their own exam. The solution is to **forcibly separate the two cognitive roles** into independent agents with different prompts, goals, and evaluation criteria. This skill provides: 1. **Architecture templates** for Generator-Evaluator agent pairs 2. **Evaluator prompt templates** calibrated with few-shot scoring examples 3. **Iteration loop design** for 5-15 round refinement cycles 4. **Playwright integration patterns** for real browser-based evaluation 5. **Scoring rubric design** to prevent score drift and grade inflation --- ## Core Architecture ``` User Goal / Spec ↓ ┌─────────────┐ │ Generator │ ← Produces output (code, UI, content, data) └──────┬──────┘ │ output artifact ↓ ┌────────────────────────────────────┐ │ Evaluator │ │ • Reads spec (NOT generator output)│ │ • Operates artifact via Playwright │ │ (click, fill form, navigate) │ │ • Scores on rubric (0-100) │ │ • Writes structured feedback │ └────────────────┬───────────────────┘ │ score + feedback ↓ ┌────────────────┐ │ Score ≥ target? │ │ YES → Done │ │ NO → Loop │ └────────┬────────┘ │ └──→ Generator (next iteration) ``` **Key principle**: The Evaluator reads the **original spec**, not the Generator's output. It evaluates independently, as if it were a real user encountering the product for the first time. --- ## When to Apply | Scenario | Apply DoubleAgent? | |----------|--------------------| | AI-generated frontend UI with interactions | ✅ Yes | | Multi-step workflow code (forms, flows) | ✅ Yes | | API endpoint implementation + validation | ✅ Yes | | Content generation (reports, copy, docs) | ✅ Yes (text-based evaluator) | | Single-function refactoring | ⚠️ Optional | | Simple config changes | ❌ Not needed | --- ## Implementation Steps ### Step 1: Define the Spec Contract Write a clear spec that both agents will reference independently. The spec must be: - Concrete (measurable outcomes, not vague goals) - Observable (evaluable through interaction or inspection) - Versioned (so both agents work from the same contract) See `references/architecture.md` for spec template. ### Step 2: Configure the Generator Agent Assign the Generator a single role: **produce output that satisfies the spec**. - Do NOT ask the Generator to self-evaluate - Do NOT include evaluation criteria in the Generator's prompt - Provide: spec + iteration history + previous evaluator feedback ### Step 3: Configure the Evaluator Agent Assign the Evaluator a single role: **independently verify the spec is satisfied**. - Load `references/evaluator-prompts.md` for calibrated prompt templates - Use Playwright MCP for UI/web artifacts (real browser interaction) - Use structured JSON output for scores to enable automated loop control - Calibrate with few-shot examples BEFORE running (prevents grade inflation) ### Step 4: Design the Iteration Loop ```python MAX_ROUNDS = 15 PASS_THRESHOLD = 80 # out of 100 for round in range(MAX_ROUNDS): output = generator.run(spec, history) evaluation = evaluator.run(spec, output) # Playwright-based history.append({"round": round, "score": evaluation.score, "feedback": evaluation.feedback}) if evaluation.score >= PASS_THRESHOLD: break if evaluation.score_trend == "plateauing": generator.switch_approach() # Complete strategy reset ``` See `scripts/iteration_loop.py` for a complete implementation template. ### Step 5: Calibrate the Evaluator To prevent score drift, run the Evaluator on 3-5 known examples FIRST: - 1 example at ~30/100 (clearly bad) - 1 example at ~60/100 (mediocre) - 1 example at ~85/100 (good) - 1 example at ~95/100 (excellent) If scores deviate >15 points from expected, adjust the Evaluator's prompt or rubric weights before the real run. --- ## Scoring Rubric Design Effective rubrics for software systems: | Dimension | Weight | What to Measure | |-----------|--------|-----------------| | Functional completeness | 30% | Does each spec requirement work end-to-end? | | Interaction quality | 25% | Click/form/navigation behavior as a real user | | Edge case handling | 20% | Error states, empty data, boundary inputs | | Code/design quality | 15% | Consistency, readability, no obvious anti-patterns | | Originality / craft | 10% | Avoids generic/template outputs when spec requires uniqueness | Adjust weights based on the domain. For content systems, increase "originality". For data pipelines, increase "edge case handling". --- ## Playwright Integration (for UI artifacts) When evaluating web/H5/mini-program outputs, the Evaluator should: 1. **Navigate** to the deployed artifact URL 2. **Execute** each spec requirement as a user action sequence 3. **Observe** actual behavior (DOM state, network requests, visual output) 4. **Record** pass/fail per requirement with screenshots 5. **Report** structured JSON with score breakdown Playwright MCP tool calls to use: - `playwright_navigate` → open URL - `playwright_click` → interact with elements - `playwright_fill` → fill form inputs - `playwright_screenshot` → capture evidence - `playwright_get_visible_text` → verify content --- ## Reference Files - `references/architecture.md` — Detailed architecture patterns, spec templates, and design rationale - `references/evaluator-prompts.md` — Ready-to-use Evaluator prompt templates for different artifact types ## Scripts - `scripts/iteration_loop.py` — Complete iteration loop implementation template - `scripts/calibrate_evaluator.py` — Evaluator calibration utility
عرض على GitHub