Setup fstack
SkillAI & modelsConfigure which models fstack uses per role and at what reasoning budget. Detects available models and writes a per-harness override sheet. Use for /setup-fstack, "configure fstack models", "fstack budget", or changing model choices.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Setup fstack skill
What this skill tells your AI
The instructions your AI receives, as published by scino/fstack in skills/setup-fstack/SKILL.md and read by ahel’s review.
Write a per-harness override sheet so /engineer-mode delegations use the models you actually have. Repo-root models.json is the default map. The override sheet wins when present.
| Harness | Override file | How it loads |
|---|---|---|
| Cursor | ~/.cursor/rules/fstack-models.mdc | alwaysApply: true rule |
| Claude Code | ~/.claude/fstack-models.md | @~/.claude/fstack-models.md in CLAUDE.md |
| Codex | ~/.codex/fstack-models.md | paste into ~/.codex/AGENTS.md |
On Codex, slugs are Codex models (for example gpt-5.5), not claude-*. Detect them from ~/.codex/config.toml plus what the user confirms. See codex-tools.md.
Steps
1. Detect available models
Enumerate the model slugs you can pass to a subagent in this session. That is the dependable source. Never write a real slug you have not confirmed is available. inherit-parent and auto are always valid. Both mean the role runs on the parent session's model (omit model on the subagent call).
2. Load current state
If the override file for this harness already exists, read it and treat its # budget line and its role values as current. Otherwise start from models.json for this harness, falling back to universal.
3. Budget, map, and confirm
(a) Ask for a budget. Prefer a structured question over free text. Offer these four options with these exact labels, and name the current budget when the sheet records one.
unlimited - keep maxlarge - xhigh reasoningmedium - high reasoningsmall - medium reasoning
(b) Apply it. Build the working table from the loaded state. On a re-run keep any role you changed by family, list, or alias (inherit-parent, auto). unlimited leaves every effort as in that table. large, medium, and small set the effort token of every real slug, panel entries included, to xhigh, high, or medium. The effort token is the last token, or the one before a trailing fast, on the ladder max > xhigh > high > medium > low. If the result is not a detected slug, use the same family's detected slug with the highest effort at or below the target, else mark the role as needing a choice. inherit-parent and auto do not change. Do not invent vendor slugs. Rewrite effort tokens on whatever models.json or the existing override already has.
(c) Show the roles and confirm. Show every role with its model. Mark any real slug not in the detected set as needing a choice. Ask whether to accept as-is or change specific roles. Prefer a structured question over free text.
Panel roles (how critics, arena runners, architect runners, interrogate reviewers) are lists. One subagent runs per entry. arena cross-judge pool is also a list. Arena picks one value whose model family differs from the parent when possible. swarm workers is the default worker model unless a race assigns another model per arm.
4. Validate
Every real slug written must be in the detected set. inherit-parent and auto always pass. An override pointing at a model the user cannot use breaks every delegation that reads it.
5. Write the override
Overwrite the whole file so re-runs stay idempotent. Include a # budget line with the chosen label and its target effort.
Cursor (~/.cursor/rules/fstack-models.mdc):
---
description: fstack per-role model choices (overrides models.json)
alwaysApply: true
---
# fstack model configuration. One line per role. Delete a line to fall back to models.json.
# inherit-parent or auto: the role runs on the parent chat model (omit Task `model`).
# budget: unlimited (max)
feature, refactoring: composer-2.5
bug-fix: gpt-5.6-sol-high
perf-issue: gpt-5.6-sol-high
hillclimb: gpt-5.6-sol-high
judgment and prose: claude-opus-5-thinking-high
hardest tasks: gpt-5.6-sol-high
how explorer: composer-2.5-fast
how explainer: composer-2.5
how critics: composer-2.5, gpt-5.6-sol-high, cursor-grok-4.6-high
why investigators: composer-2.5-fast
why synthesizer: composer-2.5
reflect tooling: composer-2.5-fast
reflect judgment, divergent, synthesizer: gpt-5.6-sol-high
arena runners: composer-2.5, gpt-5.6-sol-high, cursor-grok-4.6-high
arena cross-judge pool: composer-2.5, gpt-5.6-sol-high, cursor-grok-4.6-high
swarm workers: composer-2.5-fast
architect runners: composer-2.5, gpt-5.6-sol-high, cursor-grok-4.6-high
interrogate reviewers: composer-2.5, gpt-5.6-sol-high, cursor-grok-4.6-high
Claude Code / Codex use the same role rows and the same # budget line. Change only the slugs and the file path.
6. Wire it in
Cursor: the .mdc rule applies to new sessions automatically.
Claude Code: if ~/.claude/CLAUDE.md does not already include ~/.claude/fstack-models.md, append @~/.claude/fstack-models.md.
Codex: append the sheet's contents to ~/.codex/AGENTS.md.
7. Confirm
Tell the user where the override was written and that re-running this skill updates it.
Signals
- GitHub stars
- 21
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
setup-fstack- Source
- github.com/scino/fstack