Setup fstack

SkillAI & models

Configure 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.

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.

HarnessOverride fileHow it loads
Cursor~/.cursor/rules/fstack-models.mdcalwaysApply: true rule
Claude Code~/.claude/fstack-models.md@~/.claude/fstack-models.md in CLAUDE.md
Codex~/.codex/fstack-models.mdpaste 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 max
  • large - xhigh reasoning
  • medium - high reasoning
  • small - 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