Work-block 2/6 of the ultracode×ARIS integration. Least-privilege sweep of
the `Agent` tool capability across all mainline skills.
Finding (verified by exhaustive grep + codex GPT-5.5 xhigh cross-model audit):
all 48 mainline skills that listed `Agent` in `allowed-tools` were carrying a
pure boilerplate grant — NONE actually invoke the Agent tool (Tier-2 Claude
subagent spawning) anywhere in their body. The only "agent"/"spawn" phrasings
in those bodies are (a) "reviewer sub-agent" = the external codex/GPT reviewer,
and (b) proof-checker's "spawn a micro-claim / fresh thread" = proof-obligation
ledger + codex review threads. Neither needs the Agent grant.
Changes:
- Strip the bare `Agent` token from all 48 mainline `allowed-tools:` lines
(surgical: token-list parse + rejoin, no malformed/double commas; codex
confirmed each line equals old-minus-Agent with no other token dropped).
- Document the policy in shared-references/fan-out-pattern.md ("Allowed-tools
hygiene"): `Agent` is granted ONLY to skills that genuinely fan out at
Tier-2; Tier-1 (Workflow) is harness-level and needs no grant; Tier-3
(sequential, e.g. kill-argument's codex threads) spawns nothing. A skill
that adds real fan-out re-grants `Agent` in the SAME change that adds the
fan-out prose, and that prose must cite fan-out-pattern.md.
- Enforce it in tools/check_skills_inventory.py: any mainline skill granting
`Agent` whose body does not cite `fan-out-pattern.md` fails the drift check.
Prevents vestigial grants from creeping back and makes every real grant
traceable to the convention.
Codex review (fresh thread + follow-up) caught and I fixed before landing:
- frontmatter_split() originally split on "\n---" and mis-handled bodies with
`---` horizontal rules (latent now — would have bitten WB3 when proof-checker
re-grants); rewritten to anchor on the leading YAML block.
- citation match tightened from bare `fan-out-pattern` to `fan-out-pattern.md`.
- stale fan-out-pattern.md idea-creator example (said it "already declares
Agent") corrected to reflect the post-strip state + WB3 re-grant.
WB3 re-grants Agent to idea-creator / research-lit / proof-checker when it
wires their fan-out. Drift checker passes; git diff --check clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.1 KiB
name, description, allowed-tools
| name | description | allowed-tools |
|---|---|---|
| research-refine-pipeline | Run an end-to-end workflow that chains `research-refine` and `experiment-plan`. Use when the user wants a one-shot pipeline from vague research direction to focused final proposal plus detailed experiment roadmap, or asks to "串起来", build a pipeline, do it end-to-end, or generate both the method and experiment plan together. | Bash(*), Read, Write, Edit, Grep, Glob, WebSearch, WebFetch, mcp__codex__codex, mcp__codex__codex-reply |
Research Refine Pipeline: End-to-End Method and Experiment Planning
Refine and concretize: $ARGUMENTS
Overview
Use this skill when the user does not want to stop at a refined method. The goal is to produce a coherent package that includes:
- a problem-anchored, elegant final proposal
- the review history explaining why the method is focused
- a detailed experiment roadmap tied to the paper's claims
- a compact pipeline summary that says what to run next
This skill composes two existing workflows:
research-refinefor method refinementexperiment-planfor claim-driven validation planning
For stage-specific detail, read these sibling skills only when needed:
../research-refine/SKILL.md../experiment-plan/SKILL.md
Core Rule
Do not plan a large experiment suite on top of an unstable method. First stabilize the thesis. Then turn the stable thesis into experiments.
Default Outputs
refine-logs/FINAL_PROPOSAL.mdrefine-logs/REVIEW_SUMMARY.mdrefine-logs/REFINEMENT_REPORT.mdrefine-logs/EXPERIMENT_PLAN.mdrefine-logs/EXPERIMENT_TRACKER.mdrefine-logs/PIPELINE_SUMMARY.md
Workflow
Phase 0: Triage the Starting Point
- Extract the problem, rough approach, constraints, resources, and target venue.
- Check whether
refine-logs/FINAL_PROPOSAL.mdalready exists and still matches the current request. - If the proposal is missing, stale, or materially different from the current request, run the full
research-refinestage. - If the proposal is already strong and aligned, reuse it and jump to experiment planning.
- If in doubt, prefer re-running
research-refinerather than planning experiments for the wrong method.
Phase 1: Method Refinement Stage
Run the research-refine workflow and keep its V3 philosophy intact:
- preserve the Problem Anchor
- prefer the smallest adequate mechanism
- keep one dominant contribution
- modernize only when it improves the paper
Exit this stage only when these are explicit:
- the final method thesis
- the dominant contribution
- the complexity intentionally rejected
- the key claims and must-run ablations
- the remaining risks, if any
If the verdict is still REVISE, continue into experiment planning only if the remaining weaknesses are clearly documented.
Phase 2: Planning Gate
Before the experiment stage, write a short gate check:
- What is the final method thesis?
- What is the dominant contribution?
- What complexity was intentionally rejected?
- Which reviewer concerns still matter for validation?
- Is a frontier primitive central, optional, or absent?
If these answers are not crisp, tighten the final proposal first.
Phase 3: Experiment Planning Stage
Run the experiment-plan workflow grounded in:
refine-logs/FINAL_PROPOSAL.mdrefine-logs/REVIEW_SUMMARY.mdrefine-logs/REFINEMENT_REPORT.md
Ensure the experiment plan covers:
- the main anchor result
- novelty isolation
- a simplicity or deletion check
- a frontier necessity check if applicable
- run order, budget, and decision gates
Phase 4: Integration Summary
Write refine-logs/PIPELINE_SUMMARY.md:
# Pipeline Summary
**Problem**: [problem]
**Final Method Thesis**: [one sentence]
**Final Verdict**: [READY / REVISE / RETHINK]
**Date**: [today]
## Final Deliverables
- Proposal: `refine-logs/FINAL_PROPOSAL.md`
- Review summary: `refine-logs/REVIEW_SUMMARY.md`
- Experiment plan: `refine-logs/EXPERIMENT_PLAN.md`
- Experiment tracker: `refine-logs/EXPERIMENT_TRACKER.md`
## Contribution Snapshot
- Dominant contribution:
- Optional supporting contribution:
- Explicitly rejected complexity:
## Must-Prove Claims
- [Claim 1]
- [Claim 2]
## First Runs to Launch
1. [Run]
2. [Run]
3. [Run]
## Main Risks
- [Risk]:
- [Mitigation]:
## Next Action
- Proceed to `/run-experiment`
Phase 5: Present a Brief Summary to the User
Pipeline complete.
Method output:
- refine-logs/FINAL_PROPOSAL.md
Experiment output:
- refine-logs/EXPERIMENT_PLAN.md
- refine-logs/EXPERIMENT_TRACKER.md
Pipeline summary:
- refine-logs/PIPELINE_SUMMARY.md
Best next step:
- /run-experiment
Output Protocols
Follow these shared protocols for all output files:
- Output Versioning Protocol — write timestamped file first, then copy to fixed name
- Output Manifest Protocol — log every output to MANIFEST.md
- Output Language Protocol — respect the project's language setting
Key Rules
-
Large file handling: If the Write tool fails due to file size, immediately retry using Bash (
cat << 'EOF' > file) to write in chunks. Do NOT ask the user for permission — just do it silently. -
Do not let the experiment plan override the Problem Anchor.
-
Do not widen the paper story after method refinement unless a missing validation block is truly necessary.
-
Reuse the same claims across
FINAL_PROPOSAL.md,EXPERIMENT_PLAN.md, andPIPELINE_SUMMARY.md. -
Keep the main paper story compact.
-
If the method is intentionally simple, defend that simplicity in the experiment plan rather than adding new components.
-
If the method uses a modern LLM / VLM / Diffusion / RL primitive, make its necessity test explicit.
-
If the method does not need a frontier primitive, say that clearly and avoid forcing one.
-
Prefer the staged skills when the user only needs one stage; use this skill for the integrated flow.
Composing with Other Skills
/research-refine-pipeline -> one-shot method + experiment planning
/research-refine -> method refinement only
/experiment-plan -> experiment planning only
/run-experiment -> execution