From ad94ff2204f8a31d675d937a2ce6c0d39e5d0ace Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 26 Oct 2026 03:05:43 +0000 Subject: [PATCH] keep pinned-seat effort on reasoningEffort and allow reading pstack-models Co-authored-by: Kaitian Xie --- skills/architect/SKILL.md | 2 +- skills/arena/SKILL.md | 2 +- skills/automate-me/SKILL.md | 2 +- skills/figure-it-out/SKILL.md | 2 +- skills/how/SKILL.md | 2 +- skills/interrogate/SKILL.md | 4 ++-- skills/no-comments/SKILL.md | 2 +- skills/poteto-mode/SKILL.md | 4 ++-- skills/poteto-mode/playbooks/autonomous-run.md | 2 +- skills/poteto-mode/playbooks/bug-fix.md | 2 +- skills/poteto-mode/playbooks/eval.md | 2 +- skills/poteto-mode/playbooks/feature.md | 2 +- skills/poteto-mode/playbooks/hillclimb.md | 2 +- skills/poteto-mode/playbooks/multi-phase-plan.md | 2 +- skills/poteto-mode/playbooks/orchestrate.md | 2 +- skills/poteto-mode/playbooks/perf-issue.md | 2 +- skills/poteto-mode/playbooks/refactoring.md | 2 +- skills/poteto-mode/playbooks/runtime-forensics.md | 2 +- skills/poteto-mode/playbooks/session-pickup.md | 2 +- skills/poteto-mode/playbooks/trace-forensics.md | 2 +- skills/poteto-mode/playbooks/worktree-cleanup.md | 2 +- skills/recall/SKILL.md | 2 +- skills/reflect/SKILL.md | 2 +- skills/show-me-your-work/SKILL.md | 2 +- skills/swarm/SKILL.md | 2 +- skills/why/SKILL.md | 2 +- 26 files changed, 28 insertions(+), 28 deletions(-) diff --git a/skills/architect/SKILL.md b/skills/architect/SKILL.md index 9ef8a53..8cc486d 100644 --- a/skills/architect/SKILL.md +++ b/skills/architect/SKILL.md @@ -28,7 +28,7 @@ Skip Phase A only when the work is genuinely greenfield with no surrounding syst Run the **arena** skill with the design-sketch task and the Phase A grounding artifacts. Pass `references/runner-prompt.md` as each runner's prompt. -Take the runners from the `architect runners` line in the pstack-models section of `~/.factory/AGENTS.md`, in place of the `arena runners` line. That section is always in context when present, so do not Read it; fall back to the defaults when it is absent. If the section or that line is missing, use `claude-opus-5-5` (judgment seat) and `grok-4.7` (code seat). Seat selection follows the runner rules in the **arena** skill's Phase A. +Take the runners from the `architect runners` line in the pstack-models section of `~/.factory/AGENTS.md`, in place of the `arena runners` line. If the section or that line is missing, use `claude-opus-5-5` (judgment seat) and `grok-4.7` (code seat). Seat selection follows the runner rules in the **arena** skill's Phase A. Design it twice. Require at least two structurally distinct candidates before synthesis, even when the first looks sufficient. This is the **exhaust-the-design-space** principle skill made concrete. Whole-shape alternatives, not point fixes inside one shape. diff --git a/skills/arena/SKILL.md b/skills/arena/SKILL.md index f5d8f2b..6d22ba5 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 the pstack-models section of `~/.factory/AGENTS.md`. That section is always in context when present, so do not Read it; fall back to the defaults when it is absent. If the section or that line is missing, default to one each on the judgment seat (`claude-opus-5-5`, `subagent_type: "poteto-judgment"`) and the code seat (`grok-4.7`, `subagent_type: "poteto-agent"`). An `auto` or `inherit-parent` entry on the runners line means the parent model, so spawn the built-in `worker` for it. On the cross-judge line, that entry spawns the built-in `explorer`. Droid model families go by ID prefix such as `claude-*` and `grok-*`. 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 complexity for the job, per the Subagents section of the **poteto-mode** skill. +3. Pick the runners. Use the `arena runners` line in the pstack-models section of `~/.factory/AGENTS.md`. If the section or that line is missing, default to one each on the judgment seat (`claude-opus-5-5`, `subagent_type: "poteto-judgment"`) and the code seat (`grok-4.7`, `subagent_type: "poteto-agent"`). An `auto` or `inherit-parent` entry on the runners line means the parent model, so spawn the built-in `worker` for it. On the cross-judge line, that entry spawns the built-in `explorer`. Droid model families go by ID prefix such as `claude-*` and `grok-*`. 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 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/automate-me/SKILL.md b/skills/automate-me/SKILL.md index 6888532..60a7dab 100644 --- a/skills/automate-me/SKILL.md +++ b/skills/automate-me/SKILL.md @@ -28,7 +28,7 @@ Update mode changes the rest of the flow: Locate the active workspace's transcripts before fanning out. Droid sessions live under `~/.factory/sessions//` (one .jsonl per session), where `` is the workspace path with every "/" turned into "-". Use only that path. Never read another project's sessions without being asked. -Survey recent agent conversations within that scope for recurring patterns. Run multiple parallel subagents across slices of history (e.g. last 2-4 weeks, split into 3 slices so each has enough material). Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. Each slice mining subagent reads transcripts from the workspace-scoped path the parent provides, looks for the signals below, and returns a short structured list of patterns it saw with evidence pointers. Default signals worth hunting: +Survey recent agent conversations within that scope for recurring patterns. Run multiple parallel subagents across slices of history (e.g. last 2-4 weeks, split into 3 slices so each has enough material). Pick each subagent per the Subagents section of the **poteto-mode** skill. Each slice mining subagent reads transcripts from the workspace-scoped path the parent provides, looks for the signals below, and returns a short structured list of patterns it saw with evidence pointers. Default signals worth hunting: - Response preferences (length, tone, format, "dumb it down" corrections) - Delegation habits (subagents, models, specialized workflows, parallelism) diff --git a/skills/figure-it-out/SKILL.md b/skills/figure-it-out/SKILL.md index 7bb5a48..aade22c 100644 --- a/skills/figure-it-out/SKILL.md +++ b/skills/figure-it-out/SKILL.md @@ -28,7 +28,7 @@ Decompose into atomic, independently-landable units. Sequence riskiest-unknown-f - Build the verification harness before the work, with the baseline captured from the pre-change state, so the check reads as "old value vs new value". - For one-way-door design decisions, run the **architect** skill (it runs **arena**). Skip it for mechanical work whose shape is already concrete. A second arena over a settled design is over-engineering (the **laziness-protocol** principle skill). -- Decide what fans out. Parallelize only across seams, and give each worker its own worktree or branch (the **separate-before-serializing-shared-state** principle skill). Don't over-fan. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. +- Decide what fans out. Parallelize only across seams, and give each worker its own worktree or branch (the **separate-before-serializing-shared-state** principle skill). Don't over-fan. Pick each subagent per the Subagents section of the **poteto-mode** skill. - Write the designed phase list down. That list is what the human reviews. Then execute the design. Add its steps to the todolist as concrete items between the Phase C and Phase D entries. Run each under the Phase C loop discipline, and weave the Phase D log through them, a row as each step lands, rather than saving the whole trail for the end. diff --git a/skills/how/SKILL.md b/skills/how/SKILL.md index 540145e..9de0d70 100644 --- a/skills/how/SKILL.md +++ b/skills/how/SKILL.md @@ -8,7 +8,7 @@ disable-model-invocation: true 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 Task subagent. Explorers use the `how explorer` line in the pstack-models section of `~/.factory/AGENTS.md` (default `grok-4.7`, so spawn the read-only code seat, `subagent_type: "poteto-agent-readonly"`), and every explainer uses the `how explainer` line (default `claude-opus-5-5`, so spawn the read-only judgment seat, `subagent_type: "poteto-judgment-readonly"`). That section is always in context when present, so do not Read it; fall back to the defaults when it is absent. When a line's value is `auto` or `inherit-parent`, spawn the built-in `explorer` instead. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. +Every spawn is a Task subagent. Explorers use the `how explorer` line in the pstack-models section of `~/.factory/AGENTS.md` (default `grok-4.7`, so spawn the read-only code seat, `subagent_type: "poteto-agent-readonly"`), and every explainer uses the `how explainer` line (default `claude-opus-5-5`, so spawn the read-only judgment seat, `subagent_type: "poteto-judgment-readonly"`). When a line's value is `auto` or `inherit-parent`, spawn the built-in `explorer` instead. Pick each subagent 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 fa61731..b706071 100644 --- a/skills/interrogate/SKILL.md +++ b/skills/interrogate/SKILL.md @@ -24,7 +24,7 @@ Before spawning reviewers, state the intent in one clear paragraph from the user ## Step 3, Spawn Reviewers -Launch all reviewers in a single message with the Task tool, one per entry on the `interrogate reviewers` line in the pstack-models section of `~/.factory/AGENTS.md` (always in context when present; do not Read it), labeled Reviewer A, B, and so on to match the entry count. If the section or that line is missing, use the table defaults. +Launch all reviewers in a single message with the Task tool, one per entry on the `interrogate reviewers` line in the pstack-models section of `~/.factory/AGENTS.md`, labeled Reviewer A, B, and so on to match the entry count. If the section or that line is missing, use the table defaults. | Subagent | Default model | Seat | |----------|---------------|------| @@ -33,7 +33,7 @@ Launch all reviewers in a single message with the Task tool, one per entry on th Each reviewer gets `subagent_type` for its entry's model: `claude-opus-5-5` means the read-only judgment seat, `poteto-judgment-readonly`; `grok-4.7` means the read-only code seat, `poteto-agent-readonly`. An `auto` or `inherit-parent` entry means the built-in `explorer`, which runs on the parent model. -Read `references/reviewer-prompt.md` and fill in the same template for every reviewer with the stated intent, the diff or file contents, the rubric from `references/rubric.md`, and the code-quality lens from `references/code-quality-review.md`. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. +Read `references/reviewer-prompt.md` and fill in the same template for every reviewer with the stated intent, the diff or file contents, the rubric from `references/rubric.md`, and the code-quality lens from `references/code-quality-review.md`. Pick each subagent per the Subagents section of the **poteto-mode** skill. ## Step 4, Synthesize diff --git a/skills/no-comments/SKILL.md b/skills/no-comments/SKILL.md index 0a49ea6..b27264f 100644 --- a/skills/no-comments/SKILL.md +++ b/skills/no-comments/SKILL.md @@ -16,7 +16,7 @@ Use the caller's files or diff. Otherwise use the current diff against the base ## Steps -1. Spawn `Task` with `subagent_type: "comment-sicko"`. Pass the scope. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. Do not restate its rules. +1. Spawn `Task` with `subagent_type: "comment-sicko"`. Pass the scope. Pick each subagent per the Subagents section of the **poteto-mode** skill. Do not restate its rules. 2. Inspect its report and diff. Reject application-code edits, scope escapes, exception-protected deletions, misstated `MUST KILL` reasons, and flags that treat kept intentional code as guilty. Reshape flags on our-code surprises stay actionable. Do not restore those comments. A keep survives only with proof it is about something we cannot change. Audit missed scoped lint and TypeScript suppressions. Correctness or safety suppressions stay actionable `MUST KILL`s. Restore deletions only with exact exceptions and scoped proof. Before accepting thin `IMPORTANT` or `do not remove` kills or keeps, run `/how` or `/why` on their symbol. If a kill is ambiguous, do not restore. If a keep is refuted or still ambiguous, delete it. Revert and rerun one rejected report with the failure named. Reject a second, report it open, and fail `/no-comments`. 3. Fix trivial accepted flags directly by deleting a dead path, dropping a parameter, or using the real API. If any fix needs a shape, run `/architect` once for the accepted set and surrounding code. Stop at the sketch. Architect shapes. Step 4 implements. 4. Implement the smallest root-cause fix in scope. Remove every named workaround. If the root cause is out of scope, land the smallest in-scope fix and report the rest open. The **principle-fix-root-causes** and **principle-redesign-from-first-principles** skills guide intent only. Neither authorizes widening the fence nor fixing instances outside it. Never bolt on symptom guards. diff --git a/skills/poteto-mode/SKILL.md b/skills/poteto-mode/SKILL.md index 6110623..4735ba2 100644 --- a/skills/poteto-mode/SKILL.md +++ b/skills/poteto-mode/SKILL.md @@ -93,9 +93,9 @@ Read the leaf skill in full for any principle you apply. Each entry names when i **Use the seat droids for any subagent you spawn inside a playbook step** (code-writing delegates, ad-hoc helpers, review seats): `subagent_type: "poteto-agent"` for the code seat, `subagent_type: "poteto-judgment"` for the judgment seat. The chat that receives `/poteto-mode` runs the playbook. Never spawn a seat droid to run the playbook itself. Routed workflow skills (`how`, `why`, `interrogate`, `reflect`, `swarm`) set their own `subagent_type` for diverse-model review. Respect what the skill prescribes, don't override it. -**Defaults for every `Task` call.** `run_in_background: true`, file pointers not inlined context, and the model seat the role names. Droid's `Task` call has no per-spawn model field, so pstack carries its model panel as droids: `poteto-agent` is the code seat, pinned to `grok-4.7` at `xhigh`, and `poteto-judgment` is the judgment seat, pinned to `claude-opus-5-5` at `xhigh`. Code delegates seat by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to the judgment seat, 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 the code seat at `complexity: light`. Per-role lines in the `/setup-pstack` section override these defaults and the seat choices in the routed skills (`how`, `why`, `arena`, `swarm`, `architect`, `interrogate`, `reflect`). A role with no line keeps its default, and a role line of `inherit-parent` or `auto` spawns the built-in `worker` droid, which runs on the parent chat model. Each code playbook's configured seat 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 `Task` call.** `run_in_background: true`, file pointers not inlined context, and the model seat the role names. Droid's `Task` call has no per-spawn model field, so pstack carries its model panel as droids: `poteto-agent` is the code seat, pinned to `grok-4.7` at `xhigh`, and `poteto-judgment` is the judgment seat, pinned to `claude-opus-5-5` at `xhigh`. Code delegates seat by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to the judgment seat, 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 the code seat. Effort for a pinned seat is that droid's `reasoningEffort`. Change it with `/setup-pstack`, not per spawn. Per-role lines in the `/setup-pstack` section override these defaults and the seat choices in the routed skills (`how`, `why`, `arena`, `swarm`, `architect`, `interrogate`, `reflect`). A role with no line keeps its default, and a role line of `inherit-parent` or `auto` spawns the built-in `worker` droid, which runs on the parent chat model. Each code playbook's configured seat 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 complexity to the job.** Before each spawn, start from the role's line or default and pick the `complexity` the job needs, `light`, `medium`, or `heavy`. Raise it for the hardest or subtlest work. Lower it for routine work. Verification is the exception and stays on the `swarm workers` seat. `/setup-pstack` pins a seat to a different model or effort by writing a personal droid at `~/.factory/droids/.md`, which Droid resolves ahead of the plugin's droid of the same name, so a diverse panel stays diverse. A role on `auto` or `inherit-parent` stays on the parent model. If the Task tool rejects a `subagent_type`, do not invent a substitute. Use the plugin's seat or `worker` and say so. +**Match the effort to the job.** Before each spawn, start from the role's line or default. Pass `complexity` (`light`, `medium`, or `heavy`) only for an `inherit` droid (`worker`, `explorer`). Raise it for the hardest or subtlest work. Lower it for routine work. Verification is the exception and stays on the `swarm workers` seat. `/setup-pstack` pins a seat to a different model or effort by writing a personal droid at `~/.factory/droids/.md`, which Droid resolves ahead of the plugin's droid of the same name, so a diverse panel stays diverse. A role on `auto` or `inherit-parent` stays on the parent model. If the Task tool rejects a `subagent_type`, do not invent a substitute. Use the plugin's seat or `worker` and say so. You own every subagent's work. Review the diff and write your own summary, don't pass through what it said. A second opinion is the same prompt against a different model. Agreement is high-signal. diff --git a/skills/poteto-mode/playbooks/autonomous-run.md b/skills/poteto-mode/playbooks/autonomous-run.md index 49282ea..8646d4a 100644 --- a/skills/poteto-mode/playbooks/autonomous-run.md +++ b/skills/poteto-mode/playbooks/autonomous-run.md @@ -3,7 +3,7 @@ **You own the exit condition. Define done, then drive to it without stopping.** 1. State the exit condition as a checkable predicate before the first iteration (tests green, repro fixed, all N PRs merged, pixel-diff zero). -2. Pick the wake mechanism using Droid's `/loop` command (a built-in, not a pstack skill). An event to watch (CI, a merge, a ref advancing) gets a watcher subagent that wakes you on the event, with a long time-based heartbeat as fallback. No event gets a fixed-interval heartbeat sized to when the result is worth re-checking. Pick each subagent's complexity for the job, per the Subagents section. +2. Pick the wake mechanism using Droid's `/loop` command (a built-in, not a pstack skill). An event to watch (CI, a merge, a ref advancing) gets a watcher subagent that wakes you on the event, with a long time-based heartbeat as fallback. No event gets a fixed-interval heartbeat sized to when the result is worth re-checking. Pick each subagent per the Subagents section. 3. Each iteration makes the smallest change the evidence justifies, verifies it against the predicate, commits if it advanced, discards changes that didn't help. Belt-and-suspenders that "might help" gets reverted, not left to ride. Sequence the work via the **sequence-verifiable-units** principle skill, verifying each unit before the next instead of batching checks at the end. 4. Mid-run discoveries are yours. Address broken skills, related bugs, flaky verifiers, review noise, tooling failures, orphaned follow-ups, and fixable drift yourself via poteto-mode. Put out-of-band fixes in their own PR. Do not park reversible work for the human or use `AskUser`. Surface only irreversible actions, genuine product or preference calls no experiment can settle, or a real dead end. Keep the predicate as the main drive, and return to it after each side fix. diff --git a/skills/poteto-mode/playbooks/bug-fix.md b/skills/poteto-mode/playbooks/bug-fix.md index 3c20f5c..9e7c93b 100644 --- a/skills/poteto-mode/playbooks/bug-fix.md +++ b/skills/poteto-mode/playbooks/bug-fix.md @@ -1,6 +1,6 @@ ### Bug fix -**You own this task. Plan, review, verify.** Delegate investigation and the fix to subagents, stay in the lead. Pick each subagent's complexity for the job, per the Subagents section. +**You own this task. Plan, review, verify.** Delegate investigation and the fix to subagents, stay in the lead. Pick each subagent per the Subagents section. Be scientific. Every shipped line traces to runtime evidence. Belt-and-suspenders that "might help" is a hypothesis, not a fix. It does not ship. When evidence refutes a hypothesis, revert what it motivated. The smallest change the evidence justifies ships, nothing more. diff --git a/skills/poteto-mode/playbooks/eval.md b/skills/poteto-mode/playbooks/eval.md index d0ac998..3fe53b9 100644 --- a/skills/poteto-mode/playbooks/eval.md +++ b/skills/poteto-mode/playbooks/eval.md @@ -17,7 +17,7 @@ 1. **Frame.** State what variant is under test and what behavior counts as success. Write the rubric (3-6 concrete criteria) for the judge only. Hold it back from candidates. 2. **Set up sanitized environments.** Per-candidate working dir with the variant in place. Plant any context an organic task would have: a project skeleton, the skills the candidate would naturally read. 3. **Author one organic prompt.** What a user would type. No leakage of what's being measured. -4. **Spawn N parallel candidates** on different seats per the **arena** skill's Phase B. Each works in its own sanitized dir. Same prompt to each. Pick each subagent's complexity for the job, per the Subagents section. +4. **Spawn N parallel candidates** on different seats per the **arena** skill's Phase B. Each works in its own sanitized dir. Same prompt to each. Pick each subagent per the Subagents section. 5. **Spawn one blinded judge** on a different seat per the **arena** skill's Phase C. Judge sees outputs by sanitized label and the rubric, never a model name. 6. **Verify the chain from transcripts, not self-report.** Read each candidate's local session transcript under `~/.factory/sessions//`, where is the workspace path with every "/" turned into "-" (one .jsonl per session, the active one the newest). Do not glob across other workspaces' session directories. That crosses workspace boundaries and reads private chats from unrelated projects. Look at which files each candidate actually opened. Grade chain-following from the files it really read plus the shape of the code, never from the candidate's own claims. 7. **Read every candidate output yourself** end to end. Compare to the judge's verdict. Disagreement means a model is biased or the rubric is ambiguous. Synthesize. diff --git a/skills/poteto-mode/playbooks/feature.md b/skills/poteto-mode/playbooks/feature.md index afb5bbe..afd6ad6 100644 --- a/skills/poteto-mode/playbooks/feature.md +++ b/skills/poteto-mode/playbooks/feature.md @@ -9,7 +9,7 @@ - **Independent workstreams.** Disjoint files, services, or layers parallelize. Shared writes serialize. - **Shared mutable state.** Default to splitting the target (the **separate-before-serializing-shared-state** principle skill). Serialize only for real invariants. - **Smallest safe decomposition.** If one worker is best, name why. -4. Delegate code-writing to a subagent using your configured feature seat (default the `poteto-agent` droid) with a specific scope (file paths, named data shape and its organizing structure per **principle-model-the-domain**, a state machine over scattered booleans, a table/registry over branching, a typed model over repeated shape assumptions, chosen before the delegate writes logic, and success criteria). Pick each subagent's complexity for the job, per the Subagents section. When the implementation admits multiple valid shapes (error handling, abstraction layer, test structure), delegate via the **arena** skill instead so the runners surface the alternatives and the cross-judge guards the pick. Mandatory: no skip-with-reason escape, and Laziness Protocol does not override it (the gain is review separation, not lines saved). A subagent forbidden to spawn satisfies this by owning the diff directly with the same review separation. No "standing by" reply that waits on a nested agent. Comments per **Comments**. Surgical edits, re-ground against the source for upstream-derived files. Port shared-primitive improvements to all consumers and verify each. Commit liberally. +4. Delegate code-writing to a subagent using your configured feature seat (default the `poteto-agent` droid) with a specific scope (file paths, named data shape and its organizing structure per **principle-model-the-domain**, a state machine over scattered booleans, a table/registry over branching, a typed model over repeated shape assumptions, chosen before the delegate writes logic, and success criteria). Pick each subagent per the Subagents section. When the implementation admits multiple valid shapes (error handling, abstraction layer, test structure), delegate via the **arena** skill instead so the runners surface the alternatives and the cross-judge guards the pick. Mandatory: no skip-with-reason escape, and Laziness Protocol does not override it (the gain is review separation, not lines saved). A subagent forbidden to spawn satisfies this by owning the diff directly with the same review separation. No "standing by" reply that waits on a nested agent. Comments per **Comments**. Surgical edits, re-ground against the source for upstream-derived files. Port shared-primitive improvements to all consumers and verify each. Commit liberally. 5. Verify on the matching surface. "Inconclusive" or wrong-surface is not a pass. Flag it. 6. Rebase into small, ordered commits. Stack follow-ups. Use the **sequence-verifiable-units** principle skill, building, verifying, and committing each small unit before the next. diff --git a/skills/poteto-mode/playbooks/hillclimb.md b/skills/poteto-mode/playbooks/hillclimb.md index 96ed0a4..8b4271c 100644 --- a/skills/poteto-mode/playbooks/hillclimb.md +++ b/skills/poteto-mode/playbooks/hillclimb.md @@ -9,7 +9,7 @@ Core discipline: one change, one measurement, keep or revert. Never stack untest 3. Open the decision log via the **show-me-your-work** skill. A `decision.tsv`, one row per attempt: id, hypothesis, change, before, after, delta, tests, verdict (kept or reverted), note. Read it before each attempt. Keep it out of the tree (gitignored). 4. Ground each hypothesis in the architecture model from step 1, so it names a specific mechanism ("defer X off the boot path because it blocks first paint"), not "try memoizing something". For a perf metric, order hypotheses by the performance mantras in step 2 of the Perf issue playbook (`playbooks/perf-issue.md`). Borrow only their order, not that step's stop rule. 5. Loop, one hypothesis per iteration: - - Hand the change to a subagent using your configured hillclimb seat (default the `poteto-agent` droid) with a tight scope. Pick each subagent's complexity for the job, per the Subagents section. Supervise and review the diff rather than typing it (the **guard-the-context-window** principle skill). When several independent hypotheses are live, fan them to parallel subagents, each in its own worktree (the **separate-before-serializing-shared-state** principle skill). + - Hand the change to a subagent using your configured hillclimb seat (default the `poteto-agent` droid) with a tight scope. Pick each subagent per the Subagents section. Supervise and review the diff rather than typing it (the **guard-the-context-window** principle skill). When several independent hypotheses are live, fan them to parallel subagents, each in its own worktree (the **separate-before-serializing-shared-state** principle skill). - Measure before and after with the frozen harness, and run the regression gate. - Accept only when the metric moves past noise and the gate stays green. Otherwise revert the change in full. A tweak that "might help" is not kept. - One commit per accepted fix, staging only the files you changed (`git add `, never `-A`). Log the row either way, kept or reverted. diff --git a/skills/poteto-mode/playbooks/multi-phase-plan.md b/skills/poteto-mode/playbooks/multi-phase-plan.md index 8a6867c..b907127 100644 --- a/skills/poteto-mode/playbooks/multi-phase-plan.md +++ b/skills/poteto-mode/playbooks/multi-phase-plan.md @@ -4,7 +4,7 @@ 1. When the change is one or two files with an obvious approach, skip the plan. Say so and stop. 2. Settle open questions by prototype before you write. Run `playbooks/prototype.md` for each. Keep the branch, the SHA, and the screenshots for Appendix A. Ask the operator only about a product or preference call that no run can settle. Give options (the **never-block-on-the-human** principle skill). -3. Explore in subagents with `subagent_type: "poteto-agent"` per the Subagents section (the **guard-the-context-window** principle skill). Pick each subagent's complexity for the job, per the Subagents section. Each returns file pointers, conventions, test commands, and entry points. No inlined dumps. +3. Explore in subagents with `subagent_type: "poteto-agent"` per the Subagents section (the **guard-the-context-window** principle skill). Pick each subagent per the Subagents section. Each returns file pointers, conventions, test commands, and entry points. No inlined dumps. 4. Copy the skeleton below into the plan file and fill every placeholder. Unless the operator names a path, write the file under the agent store's `docs/`. Keep every heading and every sub-block in the order shown. One section per PR. One PR is one change with its own evidence (the **sequence-verifiable-units** principle skill). Name the execution playbook in **How to read this**. Pick between `playbooks/autopilot-full.md` and `playbooks/autopilot-stack.md` per the rule at the end of `playbooks/autopilot-stack.md`. A standing program takes `playbooks/orchestrate.md`. 5. Write under `/technical-writing` in full, then `/unslop`. The body is one Diátaxis mode, how-to. Appendices hold explanation and reference. Each heading states the task or the finding. No long dashes. No mid-sentence colons. 6. Run `node skills/poteto-mode/scripts/check-plan.mjs ` and fix every line it prints (the **encode-lessons-in-structure** principle skill). diff --git a/skills/poteto-mode/playbooks/orchestrate.md b/skills/poteto-mode/playbooks/orchestrate.md index 90491da..a887ba2 100644 --- a/skills/poteto-mode/playbooks/orchestrate.md +++ b/skills/poteto-mode/playbooks/orchestrate.md @@ -12,7 +12,7 @@ Three rules carry the rest. #### Roles and placement -- **Coordinator (this chat).** Local. Frames, authors briefs, drains the inbox, owns the human report, makes judgment calls. It never authors or edits code. Conflicted merges, chain rebases, and code changes are always tasks. Mechanically landing a verified unit (fast-forward or clean cherry-pick of a worker's commit, then push) is bookkeeping the coordinator may do itself on repos where local git is cheap. Queueing finished work behind an idle stacker is how a deadline harvests nothing. The loop is agentic end to end. Agents are spawned, resumed, and drained only through the Task tool. Pick each subagent's complexity for the job, per the Subagents section. State reads and writes go through `scripts/orch/orch.ts` at drain points, one command in and one line out. The CLI never spawns, waits, or wakes anything. It drains every track itself. Cap in-flight children at what one drain can process, roughly ten, as a rolling window. Never as blocking batches, which cost the slowest child of every batch. +- **Coordinator (this chat).** Local. Frames, authors briefs, drains the inbox, owns the human report, makes judgment calls. It never authors or edits code. Conflicted merges, chain rebases, and code changes are always tasks. Mechanically landing a verified unit (fast-forward or clean cherry-pick of a worker's commit, then push) is bookkeeping the coordinator may do itself on repos where local git is cheap. Queueing finished work behind an idle stacker is how a deadline harvests nothing. The loop is agentic end to end. Agents are spawned, resumed, and drained only through the Task tool. Pick each subagent per the Subagents section. State reads and writes go through `scripts/orch/orch.ts` at drain points, one command in and one line out. The CLI never spawns, waits, or wakes anything. It drains every track itself. Cap in-flight children at what one drain can process, roughly ten, as a rolling window. Never as blocking batches, which cost the slowest child of every batch. - **Worker / verifier.** Always spawned with `run_in_background: true` in its own git worktree, unless the task needs this machine: `control-ui` or `control-cli` runtime verification. Reading local session transcripts under `~/.factory/sessions/`. Simulators and local IDE state. Auth that exists only here. Subagents get only their brief, so briefs inline what they need from the store or point at repo paths. Prefer fewer, broader workers. One writer per worktree or branch (principle-separate-before-serializing-shared-state). Run a unit's verifier on a different seat from its worker. Depth stays at coordinator and worker. Author the track decomposition per project (build, landing, and verification are common cuts, not a required shape). Hard-coded swarm trees were tried and parked as too rigid. diff --git a/skills/poteto-mode/playbooks/perf-issue.md b/skills/poteto-mode/playbooks/perf-issue.md index 43301d8..86302c6 100644 --- a/skills/poteto-mode/playbooks/perf-issue.md +++ b/skills/poteto-mode/playbooks/perf-issue.md @@ -14,7 +14,7 @@ 7. Do it cheaper. When an earlier mantra meets the target, stop. -3. Plan the fix from the trace. If it crosses a function boundary, `architect` first. Delegate implementation to a subagent using your configured perf-issue seat (default the `poteto-agent` droid). Pick each subagent's complexity for the job, per the Subagents section. Review the diff. Capture a post-fix trace. +3. Plan the fix from the trace. If it crosses a function boundary, `architect` first. Delegate implementation to a subagent using your configured perf-issue seat (default the `poteto-agent` droid). Pick each subagent per the Subagents section. Review the diff. Capture a post-fix trace. Apply the **sequence-verifiable-units** principle skill, verifying each attempt before trying the next. 4. Parse and compare the artifacts (JSON to sqlite, diff). "Inconclusive" or wrong-surface is not a pass. Flag it. 5. Cite the measurement in the PR. diff --git a/skills/poteto-mode/playbooks/refactoring.md b/skills/poteto-mode/playbooks/refactoring.md index b70409a..9fa2b8d 100644 --- a/skills/poteto-mode/playbooks/refactoring.md +++ b/skills/poteto-mode/playbooks/refactoring.md @@ -8,7 +8,7 @@ If the cleanup reveals a missing feature or a real bug, split it out and ship th 2. Name the structure the code is missing per **principle-model-the-domain**. Boring code stays when the shape is already clear and local. The reshape must delete branches or invalid states, not add indirection. 3. Name the target shape. State what the module layout, types, and call graph should be if built today (**principle-foundational-thinking**, **principle-redesign-from-first-principles**). If the target crosses a function boundary, run the **architect** skill for parallel design exploration of the shape before the move. 4. Subtract before you add. Delete dead code, collapse one-caller wrappers, drop redundant validators, and remove orphan references before introducing the new shape (**principle-subtract-before-you-add**). The smallest change that reaches the target shape ships (**principle-laziness-protocol**). A speculative cleanup that "might help" gets reverted. -5. Move in small behavior-preserving steps, each keeping the pin green. For API reshapes, migrate every caller and delete the old API in the same wave (**principle-migrate-callers-then-delete-legacy-apis**). No compatibility shims, no parallel old-and-new paths. Spot-check every rename against the actual files. Renames silently miss usages in strings, prose, and back-references. Delegate the mechanical edits to a subagent using your configured refactoring seat (default the `poteto-agent` droid) with a specific scope (file paths, the names being moved, the behavior to hold). Pick each subagent's complexity for the job, per the Subagents section. +5. Move in small behavior-preserving steps, each keeping the pin green. For API reshapes, migrate every caller and delete the old API in the same wave (**principle-migrate-callers-then-delete-legacy-apis**). No compatibility shims, no parallel old-and-new paths. Spot-check every rename against the actual files. Renames silently miss usages in strings, prose, and back-references. Delegate the mechanical edits to a subagent using your configured refactoring seat (default the `poteto-agent` droid) with a specific scope (file paths, the names being moved, the behavior to hold). Pick each subagent per the Subagents section. 6. Prove behavior is unchanged on the real artifact, not "it compiles" (**principle-prove-it-works**). For larger reshapes, run an equivalence check: a script that diffs old-vs-new outputs, a recorded baseline replayed against the new code, or a smoke run on the matching surface via the relevant control skill. 7. Confirm the change is worth keeping. The success measure is reduced reader load (**principle-minimize-reader-load**). If the diff does not lower reader load somewhere, revert it. 8. Rebase into small ordered commits. A subtraction commit, then the reshape, then any follow-on cleanup. Shape them with the **sequence-verifiable-units** principle skill, so each behavior-preserving slice stays green before the next. Run **Opening a PR**. diff --git a/skills/poteto-mode/playbooks/runtime-forensics.md b/skills/poteto-mode/playbooks/runtime-forensics.md index 4911fac..6021e29 100644 --- a/skills/poteto-mode/playbooks/runtime-forensics.md +++ b/skills/poteto-mode/playbooks/runtime-forensics.md @@ -3,7 +3,7 @@ **You own the diagnosis. Instrument the live process, don't theorize from source.** The deliverable is a cited diagnosis, not a fix. 1. Capture the live signal on the matching surface via the control skill: a CPU profile for a spinning process, a heap snapshot for a leak, a CDP trace for a visual glitch. A real artifact, not a guess. -2. Reduce the artifact to the smoking gun: the function on the hot path, the retainer chain from the leaked object to a GC root, the loop firing without input. Parse large artifacts in a subagent (the **guard-the-context-window** principle skill), keep the reduced finding in the main thread. Pick each subagent's complexity for the job, per the Subagents section. +2. Reduce the artifact to the smoking gun: the function on the hot path, the retainer chain from the leaked object to a GC root, the loop firing without input. Parse large artifacts in a subagent (the **guard-the-context-window** principle skill), keep the reduced finding in the main thread. Pick each subagent per the Subagents section. 3. Prove the mechanism before believing it. Inject instrumentation via CDP eval on the running process, or hotfix the live code without reloading, to confirm the hypothesis cheaply. 4. Map the finding back to source: file, symbol, the line that allocates or schedules. 5. Throughput checkpoint stays one line: `throughput checkpoint: n/a, read-only forensics`. diff --git a/skills/poteto-mode/playbooks/session-pickup.md b/skills/poteto-mode/playbooks/session-pickup.md index 0572885..10ad85e 100644 --- a/skills/poteto-mode/playbooks/session-pickup.md +++ b/skills/poteto-mode/playbooks/session-pickup.md @@ -2,7 +2,7 @@ **You own the resume point. Read the prior trail, don't redo it.** -1. Locate the prior trail. A local session transcript under `~/.factory/sessions//`, where is the workspace path with every "/" turned into "-" (one .jsonl per session, the active one the newest. Do not glob across other workspaces' session directories, that crosses workspace boundaries and reads private chats from unrelated projects), or a pushed branch. Read the metadata overview and last messages first, then scan back for the decision points. Parse a long transcript in a subagent and keep the reduced timeline in the main thread (the **principle-guard-the-context-window** skill). Pick each subagent's complexity for the job, per the Subagents section. +1. Locate the prior trail. A local session transcript under `~/.factory/sessions//`, where is the workspace path with every "/" turned into "-" (one .jsonl per session, the active one the newest. Do not glob across other workspaces' session directories, that crosses workspace boundaries and reads private chats from unrelated projects), or a pushed branch. Read the metadata overview and last messages first, then scan back for the decision points. Parse a long transcript in a subagent and keep the reduced timeline in the main thread (the **principle-guard-the-context-window** skill). Pick each subagent per the Subagents section. 2. Reconstruct operational state. The branch and worktree, what already landed (`git log`, `git diff` against the base), the open todos, the decisions made. The prior trail is authoritative input. Resist the bias to re-derive it. 3. Diff done vs pending. Compare what shipped against what was planned, name the resume point, do not re-run the prior repro or redo completed work. A "let me verify from scratch" pass means you're treating the trail as untrustworthy when it's authoritative. 4. Route the remaining work to the matching playbook and pick the verdict: continue the execution, ship a finished recommendation, ratify or override a prior conclusion, or postmortem a failed run. The pickup playbook ends here. The routed playbook owns the rest. diff --git a/skills/poteto-mode/playbooks/trace-forensics.md b/skills/poteto-mode/playbooks/trace-forensics.md index 19e5445..c33a918 100644 --- a/skills/poteto-mode/playbooks/trace-forensics.md +++ b/skills/poteto-mode/playbooks/trace-forensics.md @@ -4,7 +4,7 @@ Distinct from **Runtime forensics**, which instruments the live process. Here the capture already exists. The artifact is a fixed dataset, read it, don't re-run it. Keep tooling generic: a DevTools or trace parser for cpuprofile and `.json.gz`, a text editor for a spindump, your heap tooling for a heapsnapshot. -1. Identify the format and load it with the right tool. Parse large artifacts in a subagent (the **principle-guard-the-context-window** skill) and keep the reduced finding in the main thread. Pick each subagent's complexity for the job, per the Subagents section. +1. Identify the format and load it with the right tool. Parse large artifacts in a subagent (the **principle-guard-the-context-window** skill) and keep the reduced finding in the main thread. Pick each subagent per the Subagents section. 2. Transform the raw artifact into a form you can query. Dump the trace or heap snapshot into sqlite, one row per sample, frame, or node. Reach the queryable shape before you read. 3. Narrow to the cause. Query for the frames that hold the most time and walk the call tree to the hot path. For a leak, follow the retainer chain from the leaked object to a GC root. For a spindump, find the thread stuck on-CPU or blocked and its wait reason. 4. Attribute to source. Map the hot frame to file, symbol, and line via the artifact's own symbols. A frame with no source mapping is not yet a diagnosis. Resolve the symbols, or say plainly the artifact does not carry them. diff --git a/skills/poteto-mode/playbooks/worktree-cleanup.md b/skills/poteto-mode/playbooks/worktree-cleanup.md index df91fca..d6175b4 100644 --- a/skills/poteto-mode/playbooks/worktree-cleanup.md +++ b/skills/poteto-mode/playbooks/worktree-cleanup.md @@ -2,7 +2,7 @@ 1. Snapshot and audit. Record `df -h /`, then run `scripts/worktree-audit.sh [-b ] [repo-path]` (principle-build-the-lever). Without `-b` it checks `MERGED` against `origin/HEAD`, so pass `-b origin/` when PRs target another branch. It reads paths from `git worktree list`, never hand-typed, since a hand-typed `myrepo-worktrees/x` misses one that lives at `~/worktrees/myrepo/x` (principle-encode-lessons-in-structure). It classifies each worktree by size, age, merge state, uncommitted work, PR state, and the newest chat that touched it, then suggests a bucket. The transcript scan is slow, so background it. 2. The bucket is advice, not permission. The pinned and active chats are the real artifact (principle-prove-it-works). Get that set from the user or sidebar and cross-check every candidate. The lever has marked `safe` a worktree the user had pinned, so the pinned set wins. -3. Verify usage before deleting. For every `verify-recent-chat` row, or anything you doubt, fan subagents out to read the transcripts and report whether the chat is pinned or ongoing and which worktrees it touches (principle-guard-the-context-window, transcripts are bulk). A pinned chat spawns arena and repro trees into sibling worktrees via background subagents, and those are in use even when their names never hit the sidebar. Pick each subagent's complexity for the job, per the Subagents section. +3. Verify usage before deleting. For every `verify-recent-chat` row, or anything you doubt, fan subagents out to read the transcripts and report whether the chat is pinned or ongoing and which worktrees it touches (principle-guard-the-context-window, transcripts are bulk). A pinned chat spawns arena and repro trees into sibling worktrees via background subagents, and those are in use even when their names never hit the sidebar. Pick each subagent per the Subagents section. 4. Pause on irreversible loss. `wip:N` is N tracked uncommitted edits. Show the diff and get a decision first, since removing a clean worktree is recoverable from its branch but uncommitted work is gone. `scratch:N` is untracked throwaway, safe to drop, but name the files. Per Autonomy, clean and merged and not-in-use proceeds. `wip` and in-use pause. 5. Prune the confirmed set. Per path, `git worktree remove --force `. If the dir survives on ignored build artifacts, `rm -rf` it, then `git worktree prune`. Branch refs survive, so no commits are lost. Confirm with `df -h /` and re-list. 6. Simulators and other reclaimers. Simulators are usually the next-biggest win. `xcrun simctl --set testing delete all` (XCTestDevices clones), `xcrun simctl delete unavailable`, and `xcrun simctl runtime list` then `runtime delete ` for old runtimes. More when needed: Xcode `DerivedData` and `iOS DeviceSupport`, package caches (pnpm, uv, brew, yarn). Clear only caches the user has not said to keep. diff --git a/skills/recall/SKILL.md b/skills/recall/SKILL.md index 9b2d2f6..9235f45 100644 --- a/skills/recall/SKILL.md +++ b/skills/recall/SKILL.md @@ -16,7 +16,7 @@ Transcripts live at `~/.factory/sessions//.jsonl`, where `` is 1. Classify, then route. One specific prior chat to resume is the `session-pickup` playbook, not this. Turning habits into a durable skill is `automate-me`. A human-readable summary of your work is a different task. Recall loads working context across recent chats before you act. If the user already gave you a full state capsule (paths, branch, the change), use it and skip the mining. 2. Lock the scope before searching. Pin the window ("recent" is a real range, default the last 7 days), the topic if named, and the workspace (default the active one. Never read another project's transcripts without being asked). State the scope back. Never quietly turn "all" into "recent N". -3. Fan out across your chat history. Spawn parallel `worker` subagents at `complexity: light`, each taking a slice of the corpus. Tell every subagent to order candidates by real modification time (`ls -t`) and never by UUID name, grep the topic first and then read only the matching chats and only their relevant regions, and skip the current chat plus obvious noise (subagent, eval, and test chats). Each returns the same schema, one block per chat: topic, the user's goal, decisions, open threads, struggles and corrections, and artifacts (PRs, tickets, branches), each citing the chat UUID. For one or two chats, skip the fan-out and search directly. The raw transcripts stay in the subagents. The main thread gets only their findings. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. +3. Fan out across your chat history. Spawn parallel `worker` subagents at `complexity: light`, each taking a slice of the corpus. Tell every subagent to order candidates by real modification time (`ls -t`) and never by UUID name, grep the topic first and then read only the matching chats and only their relevant regions, and skip the current chat plus obvious noise (subagent, eval, and test chats). Each returns the same schema, one block per chat: topic, the user's goal, decisions, open threads, struggles and corrections, and artifacts (PRs, tickets, branches), each citing the chat UUID. For one or two chats, skip the fan-out and search directly. The raw transcripts stay in the subagents. The main thread gets only their findings. Pick each subagent per the Subagents section of the **poteto-mode** skill. 4. Sweep the shared record whenever the topic names a feature, file, subsystem, area, or bug. This is the default, not a judgment call, and "my work on X" does not exempt it. Hand it to the **why** skill's source investigators, but steer their question from "why was this built this way" to "what's the current state, what's been tried and didn't hold, and what are users still reporting". Reuse its per-source playbooks, run the investigators in parallel with the chat-history mining, and inherit its posture: one investigator per source, null results are findings, skip an unavailable MCP and say so. Fold what comes back into the brief. Skip this step only for pure activity recall with no named target ("what did I do this week"), where your own history and live state are the entire answer. 5. Verify against live state. Take the PRs, branches, and tickets that the mining and the sweep surfaced and check them with `git` and `gh`. When the answer hinges on what an agent actually did (the tools it ran, files it read, errors it hit), read the full transcript, not just a trimmed local copy. 6. Write the brief to the contract below. Group by thread. Stay on the named topic. diff --git a/skills/reflect/SKILL.md b/skills/reflect/SKILL.md index d001d1c..3cfdd9d 100644 --- a/skills/reflect/SKILL.md +++ b/skills/reflect/SKILL.md @@ -24,7 +24,7 @@ Droid stores one .jsonl per session at that level, and every line is one chat me One message, three `Task` calls, each on the seat droid for its role. Droid's droids already have the tools they need, and the session's MCP servers provide the reviewers' MCP access to look up the tickets, chat threads, and observability traces the transcript references. -Each reviewer and the synthesizer name a role line in the pstack-models section of `~/.factory/AGENTS.md` and a default. That section is already in context when present; do not Read it. Fall back to the default when the section or the line is missing. Spawn on the role's seat: a judgment line means the `poteto-judgment` droid, a tooling line means the `poteto-agent` droid, and `auto` or `inherit-parent` means the built-in `worker` droid, which runs on the parent chat model. `/setup-pstack` pins a seat to a different model by writing a personal droid at `~/.factory/droids/.md`. Pick each subagent's complexity 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 section of `~/.factory/AGENTS.md` and a default. Fall back to the default when the section or the line is missing. Spawn on the role's seat: a judgment line means the `poteto-judgment` droid, a tooling line means the `poteto-agent` droid, and `auto` or `inherit-parent` means the built-in `worker` droid, which runs on the parent chat model. `/setup-pstack` pins a seat to a different model by writing a personal droid at `~/.factory/droids/.md`. Pick each subagent per the Subagents section of the **poteto-mode** skill. | Lens | Role line | Default seat | Prompt template | |---|---|---|---| diff --git a/skills/show-me-your-work/SKILL.md b/skills/show-me-your-work/SKILL.md index 225cf17..5a26b85 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 the other seat's droid from the one that did the work (the `poteto-judgment` droid when this run used the code seat, the `poteto-agent` droid otherwise). 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 complexity for the job, per the Subagents section of the **poteto-mode** skill. +Before handing back, spawn a subagent on the other seat's droid from the one that did the work (the `poteto-judgment` droid when this run used the code seat, the `poteto-agent` droid otherwise). 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 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 97b0f1e..2474240 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 seat from the `swarm workers` line in the pstack-models section of `~/.factory/AGENTS.md`. That section is always in context when present, so do not Read it; fall back to the defaults when it is absent. If the section or that line is missing, use the code seat, `grok-4.7` on `subagent_type: "poteto-agent"`. A line of `auto` or `inherit-parent` means the built-in `worker`, which runs on the parent model. For a model race, name each arm's model up front. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. +3. Pick the worker seat from the `swarm workers` line in the pstack-models section of `~/.factory/AGENTS.md`. If the section or that line is missing, use the code seat, `grok-4.7` on `subagent_type: "poteto-agent"`. A line of `auto` or `inherit-parent` means the built-in `worker`, which runs on the parent model. For a model race, name each arm's model up front. Pick each subagent 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 f261666..d1d4e18 100644 --- a/skills/why/SKILL.md +++ b/skills/why/SKILL.md @@ -8,7 +8,7 @@ disable-model-invocation: true 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 section of `~/.factory/AGENTS.md` and a default. That section is always in context when present, so do not Read it; fall back to the defaults when it is absent. A line naming `grok-4.7` means the code seat, `subagent_type: "poteto-agent"`. A line naming `claude-opus-5-5` means the judgment seat, `subagent_type: "poteto-judgment"`. A line of `auto` or `inherit-parent` means the built-in `worker`, which runs on the parent model. Pick each subagent's complexity for the job, per the Subagents section of the **poteto-mode** skill. +Each spawn below names a role line in the pstack-models section of `~/.factory/AGENTS.md` and a default. A line naming `grok-4.7` means the code seat, `subagent_type: "poteto-agent"`. A line naming `claude-opus-5-5` means the judgment seat, `subagent_type: "poteto-judgment"`. A line of `auto` or `inherit-parent` means the built-in `worker`, which runs on the parent model. Pick each subagent per the Subagents section of the **poteto-mode** skill. Every spawn keeps full tool access, including MCP. That is what powers the MCP-backed investigators and the synthesizer's citation spot-checks. Investigators still shouldn't write anything; say so in each brief.