diff --git a/agents/poteto-agent.md b/agents/poteto-agent.md index 224df36..b9ba8b0 100644 --- a/agents/poteto-agent.md +++ b/agents/poteto-agent.md @@ -6,4 +6,4 @@ max-nesting: 3 # Poteto subagent -You are operating as poteto-mode's full agent style. The chat that receives `/pstack:poteto-mode` owns the playbook, the todo list, and every run_subagent spawn. You are one of its delegates. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Use the absolute path your parent gave you. With no path, before any other work, search `~/.config/devin/` and the project's `.devin/` for a file whose path ends in `skills/poteto-mode/SKILL.md`. If more than one file matches, use the copy whose `.devin-plugin/plugin.json` has the highest `version`. Your skill catalog hides this skill, so a missing catalog entry does not mean pstack is absent. If no such file exists, stop and tell your parent. Navigate to a leaf `principle-*` skill whenever you apply that principle. +You are operating as poteto-mode's full agent style. The chat that receives `/pstack:poteto-mode` owns the playbook, the todo list, and every run_subagent spawn. You are one of its delegates. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Use the absolute path your parent gave you. With no path, before any other work, search `~/.local/share/devin/cli/plugins/` for a file whose path ends in `skills/poteto-mode/SKILL.md`. If more than one file matches, use the copy whose `.devin-plugin/plugin.json` has the highest `version`. Your skill catalog hides this skill, so a missing catalog entry does not mean pstack is absent. If no such file exists, stop and tell your parent. Navigate to a leaf `principle-*` skill whenever you apply that principle. diff --git a/docs/guide/10-recipes-and-pitfalls.md b/docs/guide/10-recipes-and-pitfalls.md index b578314..ffdff28 100644 --- a/docs/guide/10-recipes-and-pitfalls.md +++ b/docs/guide/10-recipes-and-pitfalls.md @@ -174,7 +174,6 @@ To watch the catch-up instead, run [`/pstack:ketchup-video`](../../skills/ketchu - **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 "spawn the role's subagents with `subagent_general` or `subagent_explore`, so they follow 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 ab32a6d..fb1c602 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, 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. +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. A `pstack-M` profile missing from your `run_subagent` profile list can't start this session, since Devin loads profiles when a session starts. Create it per `/pstack:setup-pstack` for the next session, use the `auto` mapping for this spawn, and say so. 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 diff --git a/skills/how/SKILL.md b/skills/how/SKILL.md index cafd6da..cd18259 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, 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. +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. A `pstack-M-ro` profile missing from your `run_subagent` profile list can't start this session, since Devin loads profiles when a session starts. Create it per `/pstack:setup-pstack` for the next session, use the `auto` mapping for this spawn, and say so. 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 db38cf9..0ff0f57 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, 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. +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`. A `pstack-M-ro` profile missing from your `run_subagent` profile list can't start this session, since Devin loads profiles when a session starts. Create it per `/pstack:setup-pstack` for the next session, use the `auto` mapping for that reviewer, and say so. 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 75ce1fa..893eae1 100644 --- a/skills/poteto-help/SKILL.md +++ b/skills/poteto-help/SKILL.md @@ -41,9 +41,7 @@ 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. 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. On Fusion, a step that hands one agent hands-on work goes to the sidekick, and panels and fan-out stay on `run_subagent`. +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 Adaptive 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. ## Start a task with `/pstack:poteto-mode` diff --git a/skills/poteto-mode/SKILL.md b/skills/poteto-mode/SKILL.md index a6abe49..6b243fa 100644 --- a/skills/poteto-mode/SKILL.md +++ b/skills/poteto-mode/SKILL.md @@ -90,7 +90,7 @@ Read the leaf skill in full for any principle you apply. Each entry names when i **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. 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`. +**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. Devin loads subagent profiles when a session starts, so a profile written mid-session can't start until the next session. Spawn only profiles in your `run_subagent` profile list. When the profile a spawn needs isn't listed, fall back to the role's line as written if its profile is listed, else to the `auto` mapping, and say so. 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. diff --git a/skills/reflect/SKILL.md b/skills/reflect/SKILL.md index cfd3939..8e7bb23 100644 --- a/skills/reflect/SKILL.md +++ b/skills/reflect/SKILL.md @@ -24,7 +24,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, 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. +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. A `pstack-M-ro` profile missing from your `run_subagent` profile list can't start this session, since Devin loads profiles when a session starts. Create it per `/pstack:setup-pstack` for the next session, use the `auto` mapping for this spawn, and say so. 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 9d2291b..51545ed 100644 --- a/skills/setup-pstack/SKILL.md +++ b/skills/setup-pstack/SKILL.md @@ -78,7 +78,7 @@ description: pstack delegate pinned to model M, spawned by pstack skills for wri model: M max-nesting: 3 --- -You are a pstack delegate. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Use the absolute path your parent gave you. With no path, search `~/.config/devin/` and the project's `.devin/` for a file whose path ends in `skills/poteto-mode/SKILL.md`. If none exists, stop and tell your parent. Work the brief your parent passed and report evidence, not claims. +You are a pstack delegate. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. Use the absolute path your parent gave you. With no path, search `~/.local/share/devin/cli/plugins/` for a file whose path ends in `skills/poteto-mode/SKILL.md`. If more than one file matches, use the copy whose `.devin-plugin/plugin.json` has the highest `version`. If none exists, stop and tell your parent. Work the brief your parent passed and report evidence, not claims. ``` `~/.config/devin/agents/pstack-M-ro.md`: diff --git a/skills/swarm/SKILL.md b/skills/swarm/SKILL.md index 552d010..7e8072e 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. -3. 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. +3. 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. A `pstack-M` profile missing from your `run_subagent` profile list can't start this session, since Devin loads profiles when a session starts. Create it per `/pstack:setup-pstack` for the next session, use the `auto` mapping for this spawn, and say so. 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. 4. 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 c50c693..1db6e27 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, 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. +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. A `pstack-M-ro` profile missing from your `run_subagent` profile list can't start this session, since Devin loads profiles when a session starts. Create it per `/pstack:setup-pstack` for the next session, use the `auto` mapping for this spawn, and say so. 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.