用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/peel/fiddle --skill develop-holistic命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Use after implementation to analyze drift, update documentation, evolve evaluation, and close a completed epic.
Use when starting or resuming a full development lifecycle for a feature or explicit epic.
Use when you have a spec or requirements for a multi-step task, before touching code.
基于 SOC 职业分类
正在显示 SKILL.md
| name | develop-holistic |
| description | Use after all per-task evaluations complete — assesses cross-domain integration and creates remediation beans |
Invoke as fiddle:develop-holistic --epic <id>.
Assess the full system as an integrated whole: start every domain runtime, dispatch a holistic reviewer per provider, merge their scorecards, then remediate and re-review until converged or the budget is exhausted. This runs after the per-task loop has finished with every bean, because per-task scores are produced in isolation and say nothing about cross-domain coherence.
ARGUMENTS: {ARGS}
Parse from {ARGS}: --epic <id> (required, the epic to review holistically).
Config: see skills/orchestrate/SKILL.md for the schema. This skill reads evaluators.holistic.providers, evaluators.holistic.max_iterations, and evaluators.holistic.thresholds.
providers (default ["claude"] when absent) is a dispatch fan-out here, not the ordered preference list a per-task domain uses: holistic review dispatches to every listed provider. max_iterations is the holistic dispatch budget, falling back to 3 when the key is absent; read the live value from orchestrate.json.
Every task bean has to be completed or needs-attention (escalated) first:
beans list --parent <epic-id> --json
If any task bean is still todo or in-progress, return to the orchestrator — those beans get processed before the whole can be assessed.
Then collect every unique domain from all task beans' eval blocks and start their runtimes:
scripts/start-runtimes.sh --domains <all-domains-resolved.json>
Every domain runtime must be running before holistic review begins: the seams between domains are the only thing this review adds, and they are invisible without exercising the running system.
With the runtimes up, capture the evidence the reviewers will score from, into evidence-holistic.txt with a ### <source> header per section:
The reviewers interpret this pack rather than driving the runtimes themselves, which is what lets a provider running read-only score runtime dimensions at all. A reviewer left to gather its own evidence either cannot (no writable temp dir, no tool access) or gathers something different from its peers, and neither outcome is comparable across providers.
For each provider in evaluators.holistic.providers, dispatch a holistic reviewer.
Provider claude: resolve the holistic model for phase develop; pass it only when returned, then dispatch a subagent on skills/develop/holistic-review.md with evidence-holistic.txt in context.
External provider: dispatch via the provider hook:
hooks/dispatch-provider.sh <provider> \
--role holistic-reviewer \
--topic "Holistic review: cross-domain integration assessment" \
--instructions "$(cat skills/develop/holistic-review.md)" \
--diff-file <diff-file> \
--design-doc-file <design-doc-file> \
--evidence-file evidence-holistic.txt
Every holistic reviewer, claude or external, gets the same context:
evidence-holistic.txtgit diff {epic-base-sha}...HEADbeans list --parent <epic-id> --jsonEach reviewer returns one canonical JSON scorecard envelope with provider, task_id, iteration, timestamp, domains.holistic.dimensions, criteria, and the usual evaluator metadata. The holistic dimensions are integration, coherence, holistic_spec_fidelity, polish, and runtime_health; spec_coverage_matrix classifies every requirement as Full/Weak/Missing, and remediation_beans carries gaps keyed by requirement. Save each scorecard separately:
cat > scorecard-holistic-{provider}.json # ← holistic reviewer output for this provider
Each holistic provider dispatch counts 1 against the holistic budget, so track holistic_dispatch_count across iterations (2 providers = 2 dispatches per iteration). The --current-dispatches passed to check-convergence.sh in 2c is that total, not the iteration count.
Merge the collected scorecards with the script rather than reconciling scores yourself:
jq -s '.' scorecard-holistic-*.json | \
scripts/merge-scorecards.sh > scorecard-holistic.json 2> disagreements-holistic.json
Threshold checks use the merged scorecard. The merge is conservative: each dimension's final score is the minimum across providers, with provider_scores recording the per-provider breakdown. A single configured provider still goes through the script (as a single-element array) so the scorecard format stays uniform.
Coverage matrix merge: union all requirements across providers' spec_coverage_matrix arrays, taking per-requirement coverage as the minimum on the ordering Full > Weak > Missing. Any provider marking a requirement Missing makes the merged result Missing; Weak with no Missing makes it Weak.
{
"spec_coverage_matrix": [
{"requirement": "R1", "coverage": "Missing", "provider_coverage": {"claude": "Full", "codex": "Missing"}},
{"requirement": "R2", "coverage": "Full", "provider_coverage": {"claude": "Full", "codex": "Full"}}
]
}
Remediation bean merge: union all providers' remediation_beans arrays, deduplicating by requirement — where several providers flag the same requirement, keep the most specific description (longest body) and list the flagging providers in source_providers.
Disagreements (spread >= 3 between providers on a dimension) land in disagreements-holistic.json. Include them in reviewer feedback when re-dispatching holistic review.
Run both scripts on the merged scorecard and act on their verdicts:
scripts/check-thresholds.sh --scorecard scorecard-holistic.json --criteria criteria-holistic.json
scripts/check-convergence.sh --current {verdict_file} --history {holistic_history_file} --max-dispatches {max_iterations} --current-dispatches {holistic_dispatch_count}
Holistic thresholds default to those in skills/develop/holistic-dimensions.md:
evaluators.holistic.thresholds in orchestrate.json overrides them when present.
Convergence follows the same protocol as per-task evaluation — two consecutive passes — but against a holistic-specific history file, keeping holistic dispatch history separate from per-task history.
The final allowed holistic dispatch can still produce CONVERGED. If its result is FAIL, PASS_PENDING, or PASS_REGRESSED, return DISPATCHES_EXCEEDED instead of scheduling work beyond the budget.
On FAIL, read the remediation_beans array in the merged scorecard and create a child bean of the epic for each entry, traced back to its source (a spec coverage gap or a failing dimension):
beans create --parent <epic-id> --title "Fix: ..." --body "<description>" --eval "<eval block>"
Then run each through the per-task loop: use fiddle:develop-loop with --bean <remediation-bean-id> --epic <epic-id>.
Once every remediation bean completes, re-run holistic review from 2a and increment the holistic iteration count.
| Result | Action |
|---|---|
| CONVERGED | Holistic review passed (two consecutive passes). Proceed to 2e. |
| FAIL | Create remediation beans → use fiddle:develop-loop for each → re-run holistic review. → 2a |
| PASS_PENDING | Re-run holistic review without remediation; the scorecard may stabilize. → 2b |
| PASS_REGRESSED | Create remediation beans targeting the regressed dimensions → develop-loop → re-run holistic review. → 2a |
| DISPATCHES_EXCEEDED | Budget exhausted. Escalate to human. |
On DISPATCHES_EXCEEDED, stop and hand the epic to the human: mark it needs-attention and report the latest holistic scorecard, the coverage matrix with its remaining gaps, the dimensions still below threshold, and the full remediation history (which beans were created and how they turned out). The budget is the only protection against remediating forever on an epic that is not converging, so spending past it — or lowering thresholds to fit — hides exactly the problem it just surfaced.
Once holistic review finishes, converged or escalated, run scripts/stop-runtimes.sh --state <runtime-state-file> so no processes outlive the review.
Return to the orchestrator with CONVERGED or ESCALATED.