diff --git a/docs/guide/01-setup.md b/docs/guide/01-setup.md index 8bd216c..555ea00 100644 --- a/docs/guide/01-setup.md +++ b/docs/guide/01-setup.md @@ -28,6 +28,8 @@ You only override what you care about. A role with no line in the rule keeps the You might be wondering what happens on Adaptive. Set a role to `inherit-parent` or `auto` and pstack spawns that role's subagents with `subagent_general` or `subagent_explore`, so they follow your parent chat model. Both values mean the same thing, and neither is a model slug. For a panel role the value is a list, and one subagent runs per entry, so the list length sets the panel size. Setup also configures `swarm workers`, the default model for every `/pstack:swarm` worker unless a race names a model for each arm. +On Fusion, pstack shares the work with the sidekick. A step that hands one agent hands-on work, like writing the code or running a check, goes to the sidekick. It runs on the sidekick model you picked in `/fusion`, not on that step's role line. Panels, fan-out, and second opinions still run as pstack subagents on the models in your rule. A role set to `auto` or `inherit-parent` can run on the lead model, at the lead's price. Chats without Fusion work as described above. + ## Accept the verification offers, or don't At the end of setup, `/pstack:setup-pstack` looks for a way to prove app behavior in your project, either a `verify-*` skill or an existing harness. If it finds neither, it offers once to generate one with [`/pstack:create-verification-skill`](../../skills/create-verification-skill/SKILL.md). @@ -45,7 +47,7 @@ After setup, start a new chat. The model rule applies to new sessions. pstack spends extra tokens on subagents and review panels. That's the price of the rigor. To spend fewer: - Rerun `/pstack:setup-pstack` and pick a smaller reasoning budget or cheaper models. A strong model in the main chat with cheaper, faster models in the code roles is a good split. -- Set a role to `auto` or `inherit-parent` so it runs on the chat's own model. +- Set a role to `auto` or `inherit-parent` so it runs on the chat's own model. On Fusion that can be the lead, so pin the sidekick's slug instead. - Shorten a panel list. Each entry runs one subagent. - Save `/pstack:poteto-mode` for work that needs rigor. A small, obvious edit doesn't. diff --git a/docs/guide/10-recipes-and-pitfalls.md b/docs/guide/10-recipes-and-pitfalls.md index 3b0a3b1..d18dfdc 100644 --- a/docs/guide/10-recipes-and-pitfalls.md +++ b/docs/guide/10-recipes-and-pitfalls.md @@ -172,6 +172,7 @@ That's the whole prompt. [`/pstack:bro`](../../skills/bro/SKILL.md) restates the - **Using `/pstack:arena` for coverage.** `/pstack:arena` repeats one design or code brief, then picks a base and grafts the best parts. `/pstack:swarm` partitions slices or declared race arms and aggregates one report. - **Accepting every review comment.** Bots and humans both file real catches and noise in one list. `/pstack:interrogate` sorts findings into act-on and dismissed buckets with reasons, and you can override either way. - **Treating `auto` as a model slug.** `auto` and `inherit-parent` mean "omit the model field so the subagent inherits the parent chat model." [Setup](./01-setup.md) covers the roles. +- **Putting a Fusion model in a role.** A `fusion-*` slug names a lead and sidekick pair for the main chat, so pstack rejects it and falls back to the role's default. Pick the lead's or the sidekick's own slug, like `claude-opus-5-5-max` or `swe-2-high`. - **Reporting success off a green build.** A build proves it compiles. Ask for the real command, flow, stored value, or profile, and expect the evidence in the reply. - **Writing a `SKILL.md` freehand.** Route it through the [Authoring or modifying a skill playbook](../../skills/poteto-mode/playbooks/authoring-a-skill.md) so validation and review happen. diff --git a/skills/arena/SKILL.md b/skills/arena/SKILL.md index 499de16..ab32a6d 100644 --- a/skills/arena/SKILL.md +++ b/skills/arena/SKILL.md @@ -14,7 +14,7 @@ Every candidate gets the same prompt, so the prompt is the contract. 1. State the artifact each candidate is producing. 2. Derive the rubric, 3-6 concrete gradeable criteria for what success looks like on *this* task. It is the picker's tool in Phase D. Candidates only see the task. -3. Pick the runners. Use the `arena runners` line in `~/.devin/rules/pstack-models.md`. If the rule or that line is missing, default to one each on `claude-opus-5-5-xhigh` and `swe-2-high`. Map each entry to the spawn's `profile`: a real slug `M` becomes `pstack-M`, and `auto` or `inherit-parent` means the parent model, so use `subagent_general` for it. Create a missing `pstack-M` profile per `/pstack:setup-pstack`. An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. If a pinned slug is rejected at spawn, run that seat on its family's default and say so. Families go by prefix: `claude-*`, `gpt-*`, `swe-*`, `gemini-*`, plus the short aliases (`opus`, `sonnet`, `swe`, `codex`, `gpt`, `gemini`). With no family match, use `claude-opus-5-5-xhigh`. If it rejects a default, use the closest valid slug of the same family `devin models list` reports. Spawn more runners when the arena covers multiple design directions. Use the same model N times when the work is generation-bound rather than judgment-sensitive. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. +3. Pick the runners. Use the `arena runners` line in `~/.devin/rules/pstack-models.md`. If the rule or that line is missing, default to one each on `claude-opus-5-5-xhigh` and `swe-2-high`. Map each entry to the spawn's `profile`: a real slug `M` becomes `pstack-M`, and `auto` or `inherit-parent` means the parent model, so use `subagent_general` for it. Create a missing `pstack-M` profile per `/pstack:setup-pstack`. An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. If a pinned slug is rejected at spawn, run that seat on its family's default and say so. Families go by prefix: `claude-*`, `gpt-*`, `swe-*`, `gemini-*`, plus the short aliases (`opus`, `sonnet`, `swe`, `codex`, `gpt`, `gemini`). With no family match, use `claude-opus-5-5-xhigh`. If it rejects a default, use the closest valid slug of the same family `devin models list` reports. Spawn more runners when the arena covers multiple design directions. Use the same model N times when the work is generation-bound rather than judgment-sensitive. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. 4. Give each candidate its own output location (a git worktree where possible, otherwise `/tmp/arena-/candidate-/`), per the **separate-before-serializing-shared-state** principle skill. ## Phase B: Fan out @@ -25,7 +25,7 @@ If a candidate produces no output, proceed with N-1 and note the dropout. ## Phase C: Cross-judge -After all Phase B candidates complete, choose one model from the `arena cross-judge pool` line in `~/.devin/rules/pstack-models.md`. If the rule or that line is missing, choose from `claude-opus-5-5-xhigh` and `swe-2-high`. Prefer a different model family from the parent's. Spawn one read-only judge subagent on it (`pstack-M-ro`, or `subagent_explore` for `auto`/`inherit-parent`). An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with your reading in Phase D. Don't spawn it while candidates are still writing. +After all Phase B candidates complete, choose one model from the `arena cross-judge pool` line in `~/.devin/rules/pstack-models.md`. If the rule or that line is missing, choose from `claude-opus-5-5-xhigh` and `swe-2-high`. Prefer a different model family from the parent's. On Fusion, prefer one outside both the lead's and the sidekick's families, else outside the lead's. Spawn one read-only judge subagent on it (`pstack-M-ro`, or `subagent_explore` for `auto`/`inherit-parent`). An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with your reading in Phase D. Don't spawn it while candidates are still writing. ## Phase D: Pick a base diff --git a/skills/how/SKILL.md b/skills/how/SKILL.md index efe616a..cafd6da 100644 --- a/skills/how/SKILL.md +++ b/skills/how/SKILL.md @@ -8,7 +8,7 @@ triggers: [user] Explore the codebase to answer "how does X work?" questions. Produce architectural explanations at the level of a senior engineer onboarding onto a subsystem, enough to build a working mental model, not so much that it reads like annotated source code. -Every spawn is a read-only `run_subagent` subagent. Explorers use the `how explorer` line in the `pstack-models.md` rule (default `swe-2-high`), and every explainer uses the `how explainer` line (default `claude-opus-5-5-xhigh`). Map each role's value to the spawn's `profile`: a real slug `M` becomes `pstack-M-ro`; `auto`, `inherit-parent`, or a missing rule or line uses `subagent_explore`, or `subagent_general` with a read-only brief when the explorer needs `exec` or MCP. Create a missing `pstack-M-ro` profile per `/pstack:setup-pstack` rather than swapping models. An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. +Every spawn is a read-only `run_subagent` subagent. Explorers use the `how explorer` line in the `pstack-models.md` rule (default `swe-2-high`), and every explainer uses the `how explainer` line (default `claude-opus-5-5-xhigh`). Map each role's value to the spawn's `profile`: a real slug `M` becomes `pstack-M-ro`; `auto`, `inherit-parent`, or a missing rule or line uses `subagent_explore`, or `subagent_general` with a read-only brief when the explorer needs `exec` or MCP. Create a missing `pstack-M-ro` profile per `/pstack:setup-pstack` rather than swapping models. An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. ## 1. Assess complexity diff --git a/skills/interrogate/SKILL.md b/skills/interrogate/SKILL.md index 5c6d9ef..db38cf9 100644 --- a/skills/interrogate/SKILL.md +++ b/skills/interrogate/SKILL.md @@ -31,7 +31,7 @@ Launch all reviewers in a single message with run_subagent, one per entry on the | Reviewer A | `claude-opus-5-5-xhigh` | | Reviewer B | `swe-2-high` | -Each reviewer is read-only and gets `profile` from its configured entry, or its table default when there is no configured line. A real slug `M` becomes `pstack-M-ro` (create it per `/pstack:setup-pstack` if missing). An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. An `auto` or `inherit-parent` entry uses `subagent_explore`, so that reviewer runs on the parent-assigned default; use `subagent_general` with a read-only brief when the review needs `exec` or MCP. +Each reviewer is read-only and gets `profile` from its configured entry, or its table default when there is no configured line. A real slug `M` becomes `pstack-M-ro` (create it per `/pstack:setup-pstack` if missing). An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. An `auto` or `inherit-parent` entry uses `subagent_explore`, so that reviewer runs on the parent-assigned default; use `subagent_general` with a read-only brief when the review needs `exec` or MCP. If a pinned slug is rejected at spawn, run that reviewer on its family's table default and say so. Families go by prefix: `claude-*`, `gpt-*`, `swe-*`, `gemini-*`, plus the short aliases (`opus`, `sonnet`, `swe`, `codex`, `gpt`, `gemini`). With no family match, use Reviewer A's default. If it rejects a table default, spawn with the closest equivalent `devin models list` reports (prefer the same family and reasoning tier), and open a separate PR to update the default table. Do not block the review on the slug issue. Never treat an alias entry as a rejected slug or apply either fallback to it. diff --git a/skills/poteto-help/SKILL.md b/skills/poteto-help/SKILL.md index 81662c9..b11f13e 100644 --- a/skills/poteto-help/SKILL.md +++ b/skills/poteto-help/SKILL.md @@ -41,9 +41,9 @@ When the model rule is missing and it matters, ask whether the user wants to pic Installing changes nothing until the user invokes a skill. Only `/pstack:setup-pstack` loads from the user's words. The [README](../../README.md) and [guide page 1](../../docs/guide/01-setup.md) have the details. Offer to word their first prompt with them, per [`references/prompting.md`](references/prompting.md). -If cost is the worry, say where the tokens go and how to spend fewer. pstack spends extra tokens on subagents and review panels. Rerun `/pstack:setup-pstack` and pick a smaller budget or cheaper models. A role set to `auto` or `inherit-parent` runs on the chat's model, which saves tokens when the chat runs on Auto or a cheaper model. A shorter panel list runs fewer subagents, one for each entry. Save `/pstack:poteto-mode` for work that needs rigor. +If cost is the worry, say where the tokens go and how to spend fewer. pstack spends extra tokens on subagents and review panels. Rerun `/pstack:setup-pstack` and pick a smaller budget or cheaper models. A role set to `auto` or `inherit-parent` runs on the chat's model, which saves tokens when the chat runs on Auto or a cheaper model. On Fusion it can run on the lead model, so pinning the sidekick's slug costs less. A shorter panel list runs fewer subagents, one for each entry. Save `/pstack:poteto-mode` for work that needs rigor. -This is the Devin port of pstack. Its skills use the Agent Skills format, its subagents run on Devin's `run_subagent`, and per-role models work through the `pstack-` profiles `/pstack:setup-pstack` writes. +This is the Devin port of pstack. Its skills use the Agent Skills format, its subagents run on Devin's `run_subagent`, and per-role models work through the `pstack-` profiles `/pstack:setup-pstack` writes. On Fusion, a step that hands one agent hands-on work goes to the sidekick, and panels and fan-out stay on `run_subagent`. ## Start a task with `/pstack:poteto-mode` diff --git a/skills/poteto-mode/SKILL.md b/skills/poteto-mode/SKILL.md index 821eecb..a6abe49 100644 --- a/skills/poteto-mode/SKILL.md +++ b/skills/poteto-mode/SKILL.md @@ -88,9 +88,9 @@ Read the leaf skill in full for any principle you apply. Each entry names when i ## Subagents -**Use `profile: "pstack:poteto-agent"` for any subagent you spawn inside a playbook step** (code-writing delegates, ad-hoc helpers). The chat that receives `/pstack:poteto-mode` runs the playbook. Never spawn a `poteto-agent` to run the playbook itself. Plugin subagent profiles don't load in cloud Devin sessions, so there spawn delegates on `subagent_general` and open the brief with the same read-the-`poteto-mode`-SKILL.md-first instruction the profile carries. Routed workflow skills (`how`, `why`, `interrogate`, `reflect`, `swarm`) set their own `profile` for diverse-model review. Respect what the skill prescribes, don't override to `poteto-agent`. +**Use `profile: "pstack:poteto-agent"` for any subagent you spawn inside a playbook step** (code-writing delegates, ad-hoc helpers). The chat that receives `/pstack:poteto-mode` runs the playbook. Never spawn a `poteto-agent` to run the playbook itself. Plugin subagent profiles don't load in cloud Devin sessions, so there spawn delegates on `subagent_general` and open the brief with the same read-the-`poteto-mode`-SKILL.md-first instruction the profile carries. Routed workflow skills (`how`, `why`, `interrogate`, `reflect`, `swarm`) set their own `profile` for diverse-model review. Respect what the skill prescribes, don't override to `poteto-agent`. On Fusion, single hands-on delegates go to the sidekick instead, per **On Fusion** below. -**Defaults for every `run_subagent` call.** `is_background: true`, file pointers not inlined context, explicit model per role (configurable via `/pstack:setup-pstack`. Defaults `swe-2-high` for code, `claude-opus-5-5-xhigh` for prose and judgment). Devin takes a subagent's model from its profile, not a spawn flag, so a role's model becomes the `profile` argument: a real slug `M` maps to `pstack-M` for write work and `pstack-M-ro` for read-only, the model-pinning profiles `/pstack:setup-pstack` writes to `~/.config/devin/agents/`. A role line of `inherit-parent` or `auto` runs that role on the parent chat model: use `subagent_general` for write work and `subagent_explore` for read-only. If the `pstack-M` profile a role needs is missing, create it by copying the `pstack-M.md` block in `/pstack:setup-pstack` step 6 exactly rather than hand-rolling the frontmatter or silently swapping models. Confirm each role value is a slug `devin models list` reports before mapping: a value it doesn't — a hand-edit, a stale rule, a dotted family form like `grok-4.7-…`, a suffix the family lacks — counts as a rejected slug. Use the role's default and say so, and never write a `pstack-M` profile for it. `subagent_explore` is read-only without MCP or shell, so a read-only spawn that needs MCP lookups or commands uses `subagent_general` or `pstack-M` with a read-only brief. Code delegates tier by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to your strongest judgment model (`claude-opus-5-5-xhigh`), whether the task needs judgment on vague intent or is a precisely specified sequence of steps to execute to the letter. Trivial mechanical edits go to your fast code model. Per-role lines in the `/pstack:setup-pstack` rule override these defaults and the model choices in the routed skills (`how`, `why`, `arena`, `swarm`, `architect`, `interrogate`, `reflect`). A role with no line keeps its default. Each code playbook's configured model comes from its line (`feature, refactoring`, `bug-fix`, `perf-issue`, or `hillclimb`), and the hardest changes read `hardest tasks`. Prose and judgment read `judgment and prose`. +**Defaults for every `run_subagent` call.** `is_background: true`, file pointers not inlined context, explicit model per role (configurable via `/pstack:setup-pstack`. Defaults `swe-2-high` for code, `claude-opus-5-5-xhigh` for prose and judgment). Devin takes a subagent's model from its profile, not a spawn flag, so a role's model becomes the `profile` argument: a real slug `M` maps to `pstack-M` for write work and `pstack-M-ro` for read-only, the model-pinning profiles `/pstack:setup-pstack` writes to `~/.config/devin/agents/`. A role line of `inherit-parent` or `auto` runs that role on the parent chat model: use `subagent_general` for write work and `subagent_explore` for read-only. If the `pstack-M` profile a role needs is missing, create it by copying the `pstack-M.md` block in `/pstack:setup-pstack` step 6 exactly rather than hand-rolling the frontmatter or silently swapping models. Confirm each role value is a slug `devin models list` reports before mapping: a value it doesn't — a hand-edit, a stale rule, a dotted family form like `grok-4.7-…`, a suffix the family lacks — counts as a rejected slug. So does any `fusion-*` slug, which names a lead and sidekick pair for the main chat, not one subagent model. Use the role's default and say so, and never write a `pstack-M` profile for it. `subagent_explore` is read-only without MCP or shell, so a read-only spawn that needs MCP lookups or commands uses `subagent_general` or `pstack-M` with a read-only brief. Code delegates tier by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to your strongest judgment model (`claude-opus-5-5-xhigh`), whether the task needs judgment on vague intent or is a precisely specified sequence of steps to execute to the letter. Trivial mechanical edits go to your fast code model. Per-role lines in the `/pstack:setup-pstack` rule override these defaults and the model choices in the routed skills (`how`, `why`, `arena`, `swarm`, `architect`, `interrogate`, `reflect`). A role with no line keeps its default. Each code playbook's configured model comes from its line (`feature, refactoring`, `bug-fix`, `perf-issue`, or `hillclimb`), and the hardest changes read `hardest tasks`. Prose and judgment read `judgment and prose`. **Match the model to the job.** Before each spawn, start from the role's line or default and pick the reasoning level and speed the job needs; Devin model slugs encode both (`claude-opus-5-5-xhigh` vs `-max`, `-fast` or `-lightning` or `-priority` for the fast lane). The `/pstack:setup-pstack` budget sets each role's starting level, xhigh by default. Raise it one step, up to max, for the hardest or subtlest work. Lower it one step for judgment and two or more steps for routine work. Use a fast variant only when the job is urgent, meaning CI or trunk is red or a person is blocked on the result right now. Otherwise use standard speed, the same family and level without the fast suffix. Verification is the exception and stays on the `swarm workers` model and speed (`swe-2-high` by default). Change only the effort level and whether the slug is fast, and keep the family the role names, so a diverse panel stays diverse. If the family has no slug at that level and speed, use its nearest slug, and pin that slug in the role's `pstack-` profile. A role on `auto` or `inherit-parent` stays on the parent model via `subagent_general` or `subagent_explore`. If a pinned slug is rejected at spawn, do not try another adjusted slug. Use the role's line or default and say so. @@ -98,6 +98,10 @@ You own every subagent's work. Review the diff and write your own summary, don't **Fresh subagents by default.** Give new work to a fresh subagent with consolidated scope, meaning the original brief, every later directive, and the prior agent's report and branch. This holds for a fix round, a follow-up, a retry, and the next queue item. Resume, message, or queue a follow-up on an existing subagent only when the new work strictly needs state that lives in that agent and is costly to move: its local checkout, its uncommitted changes, or a process it still runs, such as a dev server, a simulator, or a babysit watcher. A stop or hold order to a running agent is not reuse. A role such as a PR owner outlives its agent. Once that agent returns, a fresh agent takes the role's next round. Interrupt-chained resumes silently drop directives, so fire a fresh subagent with consolidated scope rather than trusting a "done" summary. +**On Fusion.** A Fusion chat gives its lead model a `sidekick` tool, and Devin tells the lead to spawn no other subagent unless the user asks. When `sidekick` is in your tools, a step that delegates hands-on work to one agent goes to the sidekick: the code-writing delegate a playbook names, a fix round, a hillclimb attempt, a single investigation, a verification run. That work runs on the sidekick's model instead of the step's role line, `hardest tasks` included. Take a change back yourself when the sidekick can't land it. Open each brief the way the `poteto-agent` profile opens, with this file's absolute path to read in full first. The sidekick keeps its context between handoffs, so it takes fix rounds and follow-ups in place of a fresh subagent. Restate every directive still in force in each brief anyway. + +On Fusion, work that needs several agents at once, or a model independent of the work, stays on `run_subagent` with the profile its role maps to: panels, fan-out, arena runners and judges, swarm workers, reviewers, synthesizers, and second opinions. Invoking a pstack skill is the user's ask for these subagents. If a playbook has its single owner fan out, spawn that fan-out yourself. Never hand the same work to both the sidekick and a subagent. An `auto` or `inherit-parent` seat on `subagent_general` runs on the lead model at the lead's price, without a sidekick. Where a skill wants a model family different from the parent's or from the agent that did the work, count the lead's and the sidekick's families as taken. Pick a family outside both when the pool allows, else outside the lead's. Sessions without a `sidekick` tool skip these two paragraphs. + ## Writing the reply Write the reply clean as you draft it. A cleanup pass after drafting does not remove these patterns. diff --git a/skills/reflect/SKILL.md b/skills/reflect/SKILL.md index 4e238b6..b42c515 100644 --- a/skills/reflect/SKILL.md +++ b/skills/reflect/SKILL.md @@ -26,7 +26,7 @@ Prefer the CLI transcript whose `id` matches this session. Otherwise order candi One message, three `run_subagent` calls. Reviewers need MCP access to look up the tickets, chat threads, and observability traces the transcript references, so do not use `subagent_explore` — it has no MCP tools. -Each reviewer and the synthesizer name a role line in the `pstack-models.md` rule and a default. Map the value to the spawn's `profile`: a real slug `M` becomes `pstack-M-ro`; `auto`, `inherit-parent`, or a missing rule or line uses `subagent_general` with a read-only brief. Create a missing `pstack-M-ro` profile per `/pstack:setup-pstack` rather than swapping models. An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. +Each reviewer and the synthesizer name a role line in the `pstack-models.md` rule and a default. Map the value to the spawn's `profile`: a real slug `M` becomes `pstack-M-ro`; `auto`, `inherit-parent`, or a missing rule or line uses `subagent_general` with a read-only brief. Create a missing `pstack-M-ro` profile per `/pstack:setup-pstack` rather than swapping models. An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. | Lens | Role line | Default `model` | Prompt template | |---|---|---|---| diff --git a/skills/setup-pstack/SKILL.md b/skills/setup-pstack/SKILL.md index b926edc..9d2291b 100644 --- a/skills/setup-pstack/SKILL.md +++ b/skills/setup-pstack/SKILL.md @@ -11,7 +11,7 @@ Write `~/.devin/rules/pstack-models.md`, an always-on rule that sets pstack's mo ### 1. Detect available models -Run `devin models list` and read the slugs it prints. That is the dependable source. Devin subagents take their model from the `model:` field of a custom subagent profile, so every real slug you write must come from this list. If you cannot detect any, ask the user to paste the slugs they have access to. Never write a real slug you have not confirmed is available. The aliases `inherit-parent` and `auto` are always valid even though they are not detected slugs. +Run `devin models list` and read the slugs it prints. That is the dependable source. Devin subagents take their model from the `model:` field of a custom subagent profile, so every real slug you write must come from this list. If you cannot detect any, ask the user to paste the slugs they have access to. Never write a real slug you have not confirmed is available. The aliases `inherit-parent` and `auto` are always valid even though they are not detected slugs. Drop every `fusion-*` slug from the detected set. Each names a lead and sidekick pair for the main chat, not one subagent model, and step 3's effort rule would change the sidekick's effort. A user who wants a pair's models in a role picks their own slugs, such as `claude-opus-5-5-max` and `swe-2-high` for `fusion-claude-opus-5-5-max-sidekick-swe-2-high`. ### 2. Load current state @@ -28,7 +28,7 @@ The default role-to-model mapping is the rule shape shown in step 5 below. `~/.d **(b) Apply it.** Build the working table from the skill defaults, and on a re-run keep any role you changed by family, list, or alias (`inherit-parent`, `auto`). `unlimited`, `large`, `medium`, and `small` set the effort token of every real slug, panel entries included, to `max`, `xhigh`, `high`, or `medium`. The effort token is the last token, or the one before a trailing speed suffix (`fast`, `lightning`, or `priority` depending on family), 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. So `unlimited` turns `claude-opus-5-5-xhigh` into `claude-opus-5-5-max`. SWE-2 slugs top out at `max` too, so under `unlimited` `swe-2-high` becomes `swe-2-max`. `large` keeps both defaults. `small` turns them into `claude-opus-5-5-medium` and `swe-2-medium`. -**(c) Show the roles and confirm.** Show every role with its model, marking any real slug not in the detected set as needing a choice. Also list each line step 2 dropped. Ask whether to accept as-is or change specific roles, offering the detected models plus `inherit-parent` and `auto` (both mean: this role runs on the parent chat model, which is how Adaptive users stay on Adaptive) as the options. Prefer ask_user_question over free text. For panel roles (arena runners, architect runners, interrogate reviewers) the value is a list, and one subagent runs per entry, alias entries included, so the list length sets the count. `arena cross-judge pool` is also a list, but Arena selects one value from it whose model family differs from the parent's when possible. `swarm workers` is the default model for every worker unless a race or comparison assigns another model per arm. +**(c) Show the roles and confirm.** Show every role with its model, marking any real slug not in the detected set as needing a choice. Also list each line step 2 dropped. Ask whether to accept as-is or change specific roles, offering the detected models plus `inherit-parent` and `auto` (both mean: this role runs on the parent chat model, which is how Adaptive users stay on Adaptive) as the options. Prefer ask_user_question over free text. On Fusion (your tools include `sidekick`, or the user says they use it), tell the user two things. An alias seat can run on the lead model, at the lead's price. Single hands-on delegates run on the sidekick, so the code-role lines (`feature, refactoring`, `bug-fix`, `perf-issue`, `hillclimb`, `hardest tasks`) pick models only for fan-out and for chats without Fusion. For panel roles (arena runners, architect runners, interrogate reviewers) the value is a list, and one subagent runs per entry, alias entries included, so the list length sets the count. `arena cross-judge pool` is also a list, but Arena selects one value from it whose model family differs from the parent's when possible. `swarm workers` is the default model for every worker unless a race or comparison assigns another model per arm. ### 4. Validate diff --git a/skills/show-me-your-work/SKILL.md b/skills/show-me-your-work/SKILL.md index bc9e6fa..e8a18e6 100644 --- a/skills/show-me-your-work/SKILL.md +++ b/skills/show-me-your-work/SKILL.md @@ -64,7 +64,7 @@ Correct the log, not the story. The audit never edits or removes a row, even an ## Cross-model review of the trail -Before handing back, spawn a subagent on a different model family from the one that did the work. Self-review is not a substitute. The subagent reads the audit trail and the run's transcript, then flags what the user should pay attention to. Not a redo of the work, a scan for what's suboptimal or risky. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. +Before handing back, spawn a subagent on a different model family from the one that did the work. On Fusion, the lead and the sidekick both did the work, so pick a family outside both when you can, else outside the lead's. Self-review is not a substitute. The subagent reads the audit trail and the run's transcript, then flags what the user should pay attention to. Not a redo of the work, a scan for what's suboptimal or risky. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. - Decisions logged with weak or absent evidence. - Verification steps skipped or claimed without proof in the transcript. diff --git a/skills/swarm/SKILL.md b/skills/swarm/SKILL.md index 8db0a18..b3315e2 100644 --- a/skills/swarm/SKILL.md +++ b/skills/swarm/SKILL.md @@ -19,7 +19,7 @@ Open a todolist with one entry per phase before launching anything. 1. State the done predicate and the artifact or report the swarm must return. 2. Choose the shape. Partition into slices, race N workers on identical briefs, or mix both. For a race or mixed shape, declare `first pass`, `rank all`, or `best-of` before spawning. -4. Pick the worker model from the `swarm workers` line in `~/.devin/rules/pstack-models.md`. If the rule or that line is missing, use `swe-2-high`. Map the value to the workers' `profile`: a real slug `M` becomes `pstack-M`; `auto` or `inherit-parent` uses `subagent_general`, so the workers run on the parent model. Create a missing `pstack-M` profile per `/pstack:setup-pstack`. An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. If a pinned slug is rejected at spawn, use the default and say so. If it rejects the default, use the closest valid slug of the same family `devin models list` reports. For a model race, name each arm's model up front. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. +4. Pick the worker model from the `swarm workers` line in `~/.devin/rules/pstack-models.md`. If the rule or that line is missing, use `swe-2-high`. Map the value to the workers' `profile`: a real slug `M` becomes `pstack-M`; `auto` or `inherit-parent` uses `subagent_general`, so the workers run on the parent model. Create a missing `pstack-M` profile per `/pstack:setup-pstack`. An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. If a pinned slug is rejected at spawn, use the default and say so. If it rejects the default, use the closest valid slug of the same family `devin models list` reports. For a model race, name each arm's model up front. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. 5. Give each worker its own writable output when it writes. When workers verify or measure commits, each brief names the exact SHAs. A measurement brief also names the method (sample count, what one sample is, order). The worker records both in its result. ## Phase B: Fan out diff --git a/skills/why/SKILL.md b/skills/why/SKILL.md index efbf2c4..c50c693 100644 --- a/skills/why/SKILL.md +++ b/skills/why/SKILL.md @@ -8,7 +8,7 @@ triggers: [user] Investigate the motivation and intent behind code. The companion `how` skill answers what the code does and how it works. `why` answers what forces led to its shape. -Each spawn below names a role line in the `pstack-models.md` rule and a default. Map the value to the spawn's `profile`: a real slug `M` becomes `pstack-M-ro`; `auto`, `inherit-parent`, or a missing rule or line uses `subagent_general` with a read-only brief. Create a missing `pstack-M-ro` profile per `/pstack:setup-pstack` rather than swapping models. An entry `devin models list` doesn't report counts as a rejected slug; never create a profile for it. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. +Each spawn below names a role line in the `pstack-models.md` rule and a default. Map the value to the spawn's `profile`: a real slug `M` becomes `pstack-M-ro`; `auto`, `inherit-parent`, or a missing rule or line uses `subagent_general` with a read-only brief. Create a missing `pstack-M-ro` profile per `/pstack:setup-pstack` rather than swapping models. An entry `devin models list` doesn't report, or any `fusion-*` entry, counts as a rejected slug; never create a profile for it. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the **poteto-mode** skill. **Do not use `subagent_explore` here.** It strips MCP and shell access, which disables the MCP-backed investigators and the synthesizer's citation spot-checks. Investigators still shouldn't write anything.