Agent Skillsmonotykamary/pi-fabric › fabric-council

fabric-council

GitHub

模拟多角色专家委员会,对架构决策、计划或代码进行独立审查与对抗性交叉验证,并综合各方观点生成最终建议。

skillsets/python/fabric-council/SKILL.md monotykamary/pi-fabric

Trigger Scenarios

需要多方视角评估技术架构 执行复杂的代码或方案审查 寻求对抗性测试以发现潜在缺陷

Install

npx skills add monotykamary/pi-fabric --skill fabric-council -g -y
More Options

Non-standard path

npx skills add https://github.com/monotykamary/pi-fabric/tree/main/skillsets/python/fabric-council -g -y

Use without installing

npx skills use monotykamary/pi-fabric@fabric-council

指定 Agent (Claude Code)

npx skills add monotykamary/pi-fabric --skill fabric-council -a claude-code -g -y

安装 repo 全部 skill

npx skills add monotykamary/pi-fabric --all -g -y

预览 repo 内 skill

npx skills add monotykamary/pi-fabric --list

SKILL.md

Frontmatter
{
    "name": "fabric-council",
    "description": "Runs a bounded multi-perspective Pi Fabric council with independent reviewers and best-effort synthesis. Use for architecture choices, plans, reviews, and adversarial cross-checking.",
    "disable-model-invocation": true
}

Fabric Council — Python

Use one Python fabric_exec. Pass payloads.task and a JSON array in payloads.roles. Choose 3–5 distinct non-empty roles with useful disagreements, not redundant reviewers. Label the outer display and every child.

import asyncio
import json

async def ask(task, name, options=None):
    request = {"task": task, "name": name, "tools": ["read", "grep", "find", "ls"]}
    if options:
        request.update(options)
    result = await agents.run(request)
    if result["status"] != "completed":
        raise RuntimeError(result.get("error") or result["status"])
    return result["value"] if result.get("value") is not None else result["text"]

roles = []
for role in json.loads(π.roles):
    role = role.strip()
    if role and role not in roles:
        roles.append(role)
if len(roles) < 3 or len(roles) > 5:
    raise ValueError("Council requires 3–5 distinct non-empty roles.")

async def review(role):
    try:
        report = await ask("Act as the " + role + " council member. Independently analyze:\n" + π.task, role)
        return {"role": role, "status": "completed", "report": report}
    except Exception as error:
        return {"role": role, "status": "failed", "error": str(error)}

outcomes = await asyncio.gather(*[review(role) for role in roles])
completed = [item for item in outcomes if item["status"] == "completed"]
failures = [item for item in outcomes if item["status"] == "failed"]
coverage = {"requested": len(roles), "completed": len(completed)}
if not completed:
    return {"status": "failed", "coverage": coverage, "failures": failures, "result": None}
if len(completed) == 1:
    return {"status": "partial", "coverage": coverage, "failures": failures, "result": completed[0]["report"], "synthesisSkipped": "Only one role completed; another agent adds no diversity."}
try:
    result = await ask("Synthesize only the completed reports into one decision. Reject unsupported claims, preserve material disagreements, and attribute concerns to roles. Never infer views of failed roles.\nTask:\n" + π.task + "\nReports:\n" + json.dumps(completed), "council synthesis")
    return {"status": "partial" if failures else "success", "coverage": coverage, "failures": failures, "result": result}
except Exception as error:
    return {"status": "partial", "coverage": coverage, "failures": failures, "result": None, "synthesisError": str(error), "fallback": completed}

Reserve at least the role count plus one agent call. Concurrency remains host-limited; usage settles afterward, not as a hard token reservation. Successful synthesis returns only the compact decision; raw reports return only on synthesis failure. A partial result is useful evidence with named gaps, not permission for an automatic whole-council rerun. Retry only the failed role or synthesis when needed. Do not use a council for a lookup.

Version History

  • 88c505b Current 2026-09-08 19:27

Same Skill Collection

skills/fabric-advisor/SKILL.md
skills/fabric-ambient/SKILL.md
skills/fabric-council/SKILL.md
skills/fabric-exec/SKILL.md
skills/fabric-fusion/SKILL.md
skills/fabric-guide/SKILL.md
skills/fabric-rlm/SKILL.md
skills/fabric-schema/SKILL.md
skills/fabric-spec/SKILL.md
skills/fabric-supervisor/SKILL.md
skills/fabric-swarm/SKILL.md
skills/fabric-workflow/SKILL.md
skillsets/python/fabric-advisor/SKILL.md
skillsets/python/fabric-ambient/SKILL.md
skillsets/python/fabric-exec/SKILL.md
skillsets/python/fabric-fusion/SKILL.md
skillsets/python/fabric-guide/SKILL.md
skillsets/python/fabric-rlm/SKILL.md
skillsets/python/fabric-schema/SKILL.md
skillsets/python/fabric-spec/SKILL.md
skillsets/python/fabric-supervisor/SKILL.md
skillsets/python/fabric-swarm/SKILL.md
skillsets/python/fabric-workflow/SKILL.md
skillsets/typescript/fabric-advisor/SKILL.md
skillsets/typescript/fabric-ambient/SKILL.md
skillsets/typescript/fabric-council/SKILL.md
skillsets/typescript/fabric-exec/SKILL.md
skillsets/typescript/fabric-fusion/SKILL.md
skillsets/typescript/fabric-guide/SKILL.md
skillsets/typescript/fabric-rlm/SKILL.md
skillsets/typescript/fabric-schema/SKILL.md
skillsets/typescript/fabric-spec/SKILL.md
skillsets/typescript/fabric-supervisor/SKILL.md
skillsets/typescript/fabric-swarm/SKILL.md
skillsets/typescript/fabric-workflow/SKILL.md

Metadata

Files
0
Version
88c505b
Hash
7f8a9283
Indexed
2026-09-08 19:27

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-08 19:51
浙ICP备14020137号-1 $Map of visitor$