Install
openclaw skills install council-pilotFully autonomous expert forum builder and project maturity engine. User delivers an idea, auto-distills domain experts from web sources, builds knowledge base with breadth/depth/thickness/effectiveness, scores maturity (0-100), builds project code, debugs, re-scores in adversarial loop until 100/100, then submits to GitHub. Composes research-loop, GAN-style agents, council deliberation, and verification-loop patterns. TRIGGER when: user provides an idea/concept/domain and wants expert-driven project built end-to-end; or says "distill experts", "expert forum", "build with experts", "maturity loop", or "full auto build".
openclaw skills install council-pilotBuild a fully automated expert-driven project from a single idea. The pipeline discovers experts, distills their public knowledge, forms a council, scores maturity, builds code, debugs, and iterates until the council awards 100/100. Then submits to GitHub.
Distill methods, evidence preferences, reasoning habits, critique patterns, and blind spots from PUBLIC sources only. Do NOT impersonate living persons, invent private beliefs, fabricate quotes, or treat expert profiles as primary evidence. Expert memory is an analysis lens, not truth.
# Full autonomous pipeline
python3 scripts/expert_distiller.py init --root ./forum --domain "AI Reliability" --topic "LLM hallucination detection"
Then invoke this skill with the domain idea. The skill handles everything from discovery to GitHub submission.
Phases 1-4 run once (setup). Phases 5-9 iterate until convergence. Phase 10 runs once at completion.
INIT → DISCOVER → DISTILL → COUNCIL → SCORE
│
score < 100│
▼
GAP_FILL ← RESCORE ← DEBUG ← BUILD
│
│ needs new experts
▼
discover single → distill single → update council
│
│ score = 100 + all pass
▼
SUBMIT (terminal)
Goal: Parse user idea into domain spec, initialize forum root.
Steps:
python3 scripts/expert_distiller.py init --root <forum_root> --domain "<domain>" --topic "<topic>"
python3 scripts/expert_distiller.py build --root <forum_root> --domain "<domain>" --target-repo "<repo>"
coverage_axes — list 3-8 sub-domains the forum should coverOutput: Initialized forum root with domains/<domain_id>.json, directory layout, pipeline_state.json
Transition: → DISCOVER
Goal: Web-search for expert candidates (3-8 people).
Steps:
agents/expert-researcher.md)references/source-gates.md)python3 scripts/expert_distiller.py candidate --root <root> --domain <domain> --name "<Name>" --reason "<why>"
python3 scripts/expert_distiller.py source --root <root> --expert-id <id> --tier A --title "<Title>" --url "<URL>" --note "<Note>"
python3 scripts/expert_distiller.py source --root <root> --expert-id <id> --tier B --title "<Title>" --url "<URL>" --note "<Note>"
Gate: At least 3 candidates with at least 1 Tier A + 1 Tier B source each
Output: candidates/<id>.json + source_dossiers/<id>.json for each candidate
Transition: → DISTILL
Goal: Audit candidates, promote, fill profiles with LLM-driven distillation.
Steps:
python3 scripts/expert_distiller.py audit --root <root> --expert-id <id>
promotion_allowed: true), create profile:
python3 scripts/expert_distiller.py profile --root <root> --domain <domain> --expert-id <id> --name "<Name>"
experts/<id>/profile.jsonexperts/<id>/distillate.mdreferences/profile-contract.mdpython3 scripts/expert_distiller.py index --root <root>
Gate: At least 2 experts with fully filled profiles
Output: experts/<id>/profile.json + experts/<id>/distillate.md for each promoted expert
Transition: → COUNCIL
Goal: Form expert council with auto-assigned roles.
Steps:
python3 scripts/expert_distiller.py council create --root <root> --domain <domain> --name "<Domain> Main Council"
# Optional: --experts id1,id2,id3 to specify which experts (default: all)
council add-member --role <role>Output: councils/<council_id>.json with members, roles, weights, routing rules
Transition: → SCORE (first pass)
Goal: Initial scoring — all axes start at 0 (no artifact exists).
Steps:
python3 scripts/expert_distiller.py score --root <root> --domain <domain>
Output: scoring_reports/<domain>_<timestamp>.json with total=0
Transition: → BUILD (always needs work on first pass)
Goal: Generate project code guided by expert lenses, targeting weakest axes.
Steps:
reasoning_kernel.core_questions — what they'd askreasoning_kernel.preferred_abstractions — what concepts they useadvantage_knowledge_base.anti_patterns — what to avoiddomain_relevance.best_used_for — where they add valuepython3 scripts/expert_distiller.py build --root <root> --domain <domain> --target-repo <repo_path>
Agent: Use project-builder agent for code generation
Output: Project source code at target repo path
Transition: → DEBUG
Goal: Verification loop — build, types, lint, tests, security, diff.
Steps:
For each stage failure:
references/build-integration.md)Agent: Use project-builder agent for build failure fixes
Transition:
Goal: Full 4-axis scoring with council debate protocol.
Steps:
python3 scripts/expert_distiller.py score --root <root> --domain <domain> --artifact <repo_path>
references/council-protocol.md):
python3 scripts/expert_distiller.py report --root <root> --domain <domain> --format markdown
Agent: Use maturity-scorer agent for adversarial scoring
Output: Updated scoring_reports/<domain>_<timestamp>.json
Transition:
Goal: Analyze gaps, add experts if needed, determine build focus.
Steps:
python3 scripts/expert_distiller.py coverage --root <root> --domain <domain>
python3 scripts/expert_distiller.py council add-member --root <root> --council-id <id> --expert-id <new_id> --fast-track
Agent: Use gap-analyst agent for coverage analysis
Output: gap_analyses/<domain>_<timestamp>.json with recommendations
Transition: → BUILD (next iteration)
Goal: Submit converged artifact to GitHub.
Steps:
python3 scripts/expert_distiller.py report --root <root> --domain <domain> --format markdown --output MATURITY_REPORT.md
council-pilot/<domain_id>feat(council-pilot): <domain> maturity 100/100
Breadth: 25/25 | Depth: 25/25 | Thickness: 25/25 | Effectiveness: 25/25
Expert council: <council_name> (<expert_count> experts)
Iterations: <iteration_count>
git push -u origin council-pilot/<domain_id>
gh pr create --title "Expert-Distilled: <domain>" --body-file MATURITY_REPORT.md
status: submittedOutput: GitHub PR URL
Transition: Terminal (pipeline complete)
The pipeline terminates ONLY when ALL conditions are met:
A score of 100 means the expert council cannot find meaningful improvements. This is intentionally hard to achieve.
| Parameter | Default | Description |
|---|---|---|
--max-iterations | 10 | Maximum BUILD→DEBUG→RESCORE cycles |
--target-repo | current dir | Where to build the project |
--quick | false | Reduce to 2 experts, max 3 iterations |
Pipeline state is stored in <root>/pipeline_state.json:
Each iteration reads state at start, writes at end. Context can be safely compacted between iterations.
The pipeline can add new experts mid-loop:
Maximum 2 new experts per iteration. Total council size must not exceed 10.
| Failure | Recovery |
|---|---|
| Max iterations reached | Pause, generate report, print current state |
| Build failure after 3 retries | Log failure, continue to GAP_FILL |
| Score regression (>10 points) | Pause, revert to previous artifact |
| Context window pressure | Write state to disk, compact, resume |
Use whichever web research surface is available in the active agent runtime:
discover --from-file with a curated JSON source list and mark the run as source-file assisted.All CLI commands work standalone without the autonomous pipeline:
# Initialize
python3 scripts/expert_distiller.py init --root ./forum --domain "My Domain" --topic "Description"
# Add candidate and sources
python3 scripts/expert_distiller.py candidate --root ./forum --domain "my-domain" --name "Expert Name" --reason "Why"
python3 scripts/expert_distiller.py source --root ./forum --expert-id expert-name --tier A --title "Source" --url "https://..." --note "Note"
# Audit, profile, validate
python3 scripts/expert_distiller.py audit --root ./forum --expert-id expert-name
python3 scripts/expert_distiller.py profile --root ./forum --domain "my-domain" --expert-id expert-name --name "Expert Name"
python3 scripts/expert_distiller.py validate --root ./forum --strict
# Council management
python3 scripts/expert_distiller.py council create --root ./forum --domain "my-domain"
python3 scripts/expert_distiller.py council list --root ./forum
python3 scripts/expert_distiller.py council show --root ./forum --council-id my-domain-main
# Scoring and analysis
python3 scripts/expert_distiller.py score --root ./forum --domain "my-domain" --artifact ./project
python3 scripts/expert_distiller.py coverage --root ./forum --domain "my-domain"
python3 scripts/expert_distiller.py report --root ./forum --domain "my-domain" --format markdown
# Discovery and maintenance
python3 scripts/expert_distiller.py discover --root ./forum --domain "my-domain" --from-file candidates.json
python3 scripts/expert_distiller.py refresh --root ./forum --stale-only