From gw
Iteratively generate and refine research objectives or specific aims with scoring, adversarial review, and human approval.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gw:aimsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are generating and iteratively refining the core research objectives (or specific aims) for a grant proposal. This is the intellectual heart of the proposal — objectives must be ambitious yet feasible, clearly articulated, and aligned with the agency's review criteria.
You are generating and iteratively refining the core research objectives (or specific aims) for a grant proposal. This is the intellectual heart of the proposal — objectives must be ambitious yet feasible, clearly articulated, and aligned with the agency's review criteria.
--proposal-dir <path>: Proposal directory (required)--max-rounds <N>: Max refinement rounds (default: 5)--adversarial-rounds <N>: Max adversarial review rounds during aims (default: 2)--no-multi-model: Skip multi-model adversarial review (external CLIs) even if providers are installed--multi-draft: Generate multiple candidate drafts via gw-multi-draft and pick the strongest (if config enables it)Parse from the user's message.
Read the following inputs from the proposal directory:
foa_requirements.json — funding opportunity requirements and review criterialandscape/competitive_brief.md — what competitors are doing, gaps, opportunitieslandscape/literature.md — if available from a prior literature phaseconfig.yaml — agency, mechanism, scoring thresholds, aims.multi_draft flagLoad agency review criteria:
uv run gw-agency review-criteria <agency> <mechanism>
Draft 3-5 research objectives. Claude (this agent) does the drafting directly based on:
For each objective, include:
Multi-draft mode (optional): If --multi-draft is passed OR config.yaml has
multi_draft.enabled: true, generate N parallel candidate drafts and then converge.
gw-multi-draft is a flat CLI that invokes a user-supplied command template with
each variant id. For aims, invoke it like this:
uv run gw-multi-draft \
--command "claude --print 'Draft aims variant {variant_id} using the context in <proposal_dir> and save to {output}'" \
--variants v1 v2 v3 \
--output-dir "<proposal_dir>/state/checkpoints/aims/specific_aims/drafts" \
--log-dir "<proposal_dir>/logs" \
--select-best \
--output-file "<proposal_dir>/logs/aims_multi_draft.json"
gw-multi-draft spawns the N invocations in parallel, writes each draft to its
own file, scores them (word count + citation count), and picks the best one.
Claude then reads the best draft and synthesizes it into sections/objectives.md.
Evaluate the objectives against the agency's review criteria:
For EU agencies (Horizon Europe, ERC, MSCA):
For Romanian agencies (UEFISCDI):
Score each criterion on a 1-5 scale. Identify the weakest criterion.
For each round (up to --max-rounds):
Identify weakness: Which criterion scored lowest? Why?
Targeted revision: Revise objectives to strengthen the weakest dimension without degrading others
Re-score: Re-evaluate all criteria after revision
Adversarial review (up to --adversarial-rounds times):
Check which provider CLIs are available (mm-detect returns ≥1 installed provider):
MM_AVAILABLE=0
if command -v mm-detect >/dev/null 2>&1; then
if uv run mm-detect --json 2>/dev/null | python3 -c "
import json, sys d = json.load(sys.stdin) installed = [k for k, v in d.get('providers', {}).items() if v.get('installed')] sys.exit(0 if installed else 1) "; then MM_AVAILABLE=1 fi fi
**When multi-model is available** (and `--no-multi-model` is not set), run
adversarial critique across 3 external models in parallel:
```bash
cat > /tmp/gw_aims_critique_prompt.txt <<EOF
Critique these specific aims adversarially for a $agency $mechanism proposal.
Attack from three angles:
1. Scientific rigor and novelty
2. Feasibility given timeline and budget
3. Alignment with the agency review criteria (pasted below)
Reference the aims text and the criteria exactly. End with a prioritized
list of concrete revisions (5-7 items) ranked by expected score impact.
Output your critique as markdown. Be harsh — real reviewers are.
--- AIMS ---
$(cat "$proposal_dir/sections/objectives.md")
--- AGENCY CRITERIA ---
$(uv run gw-agency review-criteria "$agency" "$mechanism")
EOF
uv run mm-ask \
--models gpt-5.4-high,gemini-3.1-pro,grok-4-20-thinking \
--prompt-file /tmp/gw_aims_critique_prompt.txt \
--output "$proposal_dir/review/aims_critique.json" \
--timeout 300 \
--verbose
Read the 3 critiques from the JSON output. Synthesize by: (a) listing every weakness mentioned by ≥2 reviewers (consensus), (b) listing weaknesses unique to one reviewer (edge catches), (c) ranking proposed revisions by how many reviewers suggested them. Incorporate the prioritized revisions into the next refinement pass.
Fallback (single-Claude path): If no provider CLIs are installed
(mm-detect shows zero), perform the adversarial critique directly —
role-play a skeptical reviewer from the agency panel, list weaknesses,
and revise. Less robust than multi-model consensus but still catches
the most common flaws.
Save the refined objectives to sections/objectives.md.
Also update state with the number of rounds used:
uv run gw-state update <proposal_dir> --phase aims --status complete
sections/objectives.md and allow the PI to edit the file manually. The pipeline can resume after manual edits.gw-multi-draft missing: Warn and fall back to single-draft generation.npx claudepluginhub stmailabs/gw --plugin gwProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.