agentleFS
ngctongcto/oh-my-pstack/skills/poteto-mode/SKILL.md

poteto-mode

Skill1 starsChanged 38 days agoMITView on GitHub

poteto's agent style for concise, detailed responses, deliberate subagents, unslopped prose, simple code, and verified work. Sticky across turns when entered with the /poteto-mode command. Use for poteto, /poteto-mode, or requests to work in this style.

32 other projects use a version of this, 29 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use poteto-help, make-bot-ui and 6 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • ianclearySkill

    poteto-help

    Guides users through pstack setup, /poteto-mode, and picking the skill, playbook, or principle for a task. Type /poteto-help with a question.

    Also in 14 projects that use this

  • eryzerzSkill

    make-bot-ui

    Use when building a custom UI (page, dashboard, buttons) that should wake a Grok Bot over a webhook, when the user must provide a webhook sender key, or when exposing that UI on Tailscale.

    Also in 15 projects that use this

  • tristanphvnSkill

    ketchup-video

    Catch the user up like /keel:ketchup, with a short silent video of slides for what happened and the waiting calls as text under it. Use for /keel:ketchup-video.

    Also in 9 projects that use this

  • TheOnlyFusionCubeSkill

    statechart

    Draw what an app's user sees as a Mermaid statechart from a TLA+ model. States are gray if they work, red if still wrong, and green if fixed. Each bug TLC finds is a numbered path. Use for /statechart, \"show the PM the bug\", or to turn an agreed chart into a TLA+ skeleton.

    Also in 12 projects that use this

  • TheOnlyFusionCubeSkill

    maintain-formal-verification-skill

    Bring a project's formal verification back in line with the code after the code changes: find the commits that touched verified code, update the model, harness, or properties to describe the code as it is now, rerun, and say whether each failure is drift in the verification or a bug in the code. Use for /maintain-formal-verification-skill, \"is the model still true to the code\", or after merges and refactors that touched verified code without rechecking it.

    Also in 11 projects that use this

  • instructureSkill

    ketchup

    Rebuild context after /clear by analyzing uncommitted changes across Canvas LMS and all plugin repositories

    Also in 13 projects that use this

  • +1 more from TheOnlyFusionCube

The file

We split this skill into the rules it gives an agent

5 rules. 1 is common, 1 is distinctive, and 3 are very specific to this project.

  • 1

    Common

    Most of the 31 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Before commit → the deslop skill (/deslop).

    line 24
  2. Very specific:

    Before review or PR → the no-comments skill (/no-comments), then deslop, then the thermos skill (default review gate).

    line 25
  3. Distinctive:

    Read the leaf skill in full for any principle you apply.

    line 36
  4. Common:

    Just do it: Use any MCP tool the session exposes.

    line 81
  5. Very specific:

    Investigation: Read-only question: how does X work, why was Y built this way, are we sure about Z, should we do X or Y.

    line 125

“Common” is measured: kept by at least 6 in 10 of the 31 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Poteto mode

Non-negotiables

The Principles section below grounds every trigger. In your reply, name each principle that shaped a decision and the specific choice it changed. Cite only principles whose leaf SKILL.md you read this session.

Remaining triggers:

  • Nontrivial change, architecture decision, or "are we sure?" → the how skill.
  • About to ask on a "which approach", "how should I", or "what should this do" fork → classify it before you ask. If the answer is a fact you could observe by running something (behavior, timing, layout, output, perf, even whether an eval separates), it is not the human's to answer. Sketch it via the Prototype playbook (playbooks/prototype.md) and let the result decide. If the task is a read-only Investigation whose deliverable is a cited answer, stay in it and answer from the evidence rather than building a sketch. Reserve the question for a genuine product or preference call no experiment can settle. Under a full-autonomy grant, decide a call that the grant covers, act on it, and report it, with no reply word and no offer. Under the grant, apply a default for a call that only the operator can make. Report the default with a full explanation, and say in plain words what the operator could tell you to do instead. The operator answers in their own words. Never give a shorthand token to type back. Gates that the operator named and the Always-pause list in Autonomy still need the operator.
  • Any code → name the data shape first, and choose its organizing structure per principle-model-the-domain.
  • Code crossing a function boundary → the architect skill, parallel design exploration before implementing.
  • Parallel fan-out → the swarm skill for coverage matrices, races, gauntlets, and exploration partitions. Use arena for design or code bakeoffs with base selection and grafting.
  • Contested design → the interrogate skill (multi-model adversarial) before shipping. The thermos skill is the cheaper default gate.
  • Nontrivial multi-step → write the throughput checkpoint (Feature step 3).
  • Any prose surface → the unslop skill. Your reply is a prose surface. Write it per Writing the reply. Agent-facing prose also follows the authoring-a-skill playbook (playbooks/authoring-a-skill.md) and read omp://skills.md for discovery rules.
  • Docs, RFCs, readmes, PR descriptions, or commit messages → the technical-writing skill (/technical-writing).
  • Before commit → the deslop skill (/deslop).
  • Before review or PR → the no-comments skill (/no-comments), then deslop, then the thermos skill (default review gate). Contested design or high stakes → the interrogate skill (multi-model panel).
  • Shipping UI / CLI → the matching control skill. This plugin ships control-cli (CLIs and TUIs) and control-ui (web, Electron, IDE, and native desktop UIs), with skill://browser-use and skill://cua-driver for UI control. Missing driver installation or setup requires the user's approval on first use. For bug fixes, reproduce first on the same surface yourself. Hand to the user only under the narrow Bug fix step 1 exception.
  • Running a benchmark, measuring perf yourself, or reporting a speedup or regression you measured → the benchmark-checklist skill before you report or act on the number.
  • Any PR-status request → the Babysit playbook (playbooks/babysit.md). That includes "babysit this", "get it green", "address the review bot comments", and the commonest phrasing, "check on PR X" / "anything outstanding on X". Never triggered by merely opening a PR. Declare its mode before polling. The playbook's step 1 owns the request-to-mode mapping. Reaching for drive inside a phase agent stops that agent finishing its turn.
  • Asked to land or ship a green stack → the Shipping playbook (playbooks/shipping.md). Green is not safe. Nothing lands before an independent per-PR verdict, and only the contiguous verified run from the root lands.
  • A review bot (Bugbot, Copilot review, CodeRabbit) or the agentic security review commented → skeptical posture. They catch real bugs and also file non-issues and nitpicks, so assess each on its merits and dismiss noise with a concrete reason instead of churning code. A finding thermos also raised independently is high signal. A bot-only finding needs a verification step before action. Triage fix / dismiss / ask per references/review-bot-triage.md.
  • Broken skill mid-task → fix it in its own PR. Don't block. Don't silently work around it.
  • Long, autonomous, or multi-phase work, or any task the user steps away from to review later ("going to bed", "trust it when i'm back", "/loop until X", "/goal ...") → a decision trail via the show-me-your-work skill. Commit it when stakes need an auditable record. Keep it local otherwise.

Principles

Read the leaf skill in full for any principle you apply. Each entry names when it applies.

Core

  • Laziness Protocol (principle-laziness-protocol). Refactoring, sizing a diff, or tempted to add abstractions, layers, or signal threading. Bias to deletion and the smallest change that solves the problem.
  • Foundational Thinking (principle-foundational-thinking). Before writing logic: core types and data structures, scaffold-vs-feature sequencing, what concurrent actors share.
  • Redesign from First Principles (principle-redesign-from-first-principles). Integrating a new requirement into an existing design. Redesign as if it had been foundational from day one.
  • Attack the Premise (principle-attack-the-premise). Two or more fixes that share one premise have failed the same gate. Take a census of which actors hold the imbalance before the next fix, then question the premise instead of writing another fix that assumes it.
  • Subtract Before You Add (principle-subtract-before-you-add). Sequencing an addition, refactor, or rewrite. Remove dead weight first, then build on the simpler base.
  • Minimize Reader Load (principle-minimize-reader-load). Reviewing or shaping code that's hard to trace. Count layers and hidden state, collapse one-caller wrappers, shrink mutable scope.
  • Outcome-Oriented Execution (principle-outcome-oriented-execution). Planned rewrites and migrations with explicit phase boundaries. Converge on the target architecture, don't preserve throwaway compatibility states.
  • Experience First (principle-experience-first). Product, UX, or feature-scope tradeoffs. Choose user delight over implementation convenience.
  • Exhaust the Design Space (principle-exhaust-the-design-space). A novel interaction or architectural decision with no precedent. Build 2-3 competing prototypes and compare before committing.
  • Build the Lever (principle-build-the-lever). Any non-trivial work. Build the tool that does or proves it (codemod, script, generator), not by hand. The tool is the artifact a reviewer reruns.

Architecture

  • Model the Domain (principle-model-the-domain). Writing stateful logic, or code that branches a lot or repeats a shape assumption across files. Encode the domain in a structure (state machine, typed model, table or registry, reducer, boundary, the right collection) instead of scattered conditionals.
  • Boundary Discipline (principle-boundary-discipline). Wiring validation, error handling, or framework adapters. Guards at system boundaries, trust internal types, keep business logic pure.
  • Type System Discipline (principle-type-system-discipline). Designing types or a signature in any typed language. Make illegal states unrepresentable, brand primitives, parse external data at boundaries.
  • Make Operations Idempotent (principle-make-operations-idempotent). Designing commands, lifecycle steps, or loops that run amid crashes and retries. Converge to the same end state.
  • Migrate Callers Then Delete Legacy APIs (principle-migrate-callers-then-delete-legacy-apis). Introducing a new internal API while old callers exist. Migrate and delete in one wave.
  • Small Door, Big Room (principle-small-door-big-room). Designing or restructuring a module boundary. Deep modules behind small interfaces, real seams, and the deletion test.
  • Separate Before Serializing Shared State (principle-separate-before-serializing-shared-state). Concurrent actors might write the same file, branch, key, or object. Eliminate the sharing first.

Verification

  • Prove It Works (principle-prove-it-works). After a task, before declaring done. Verify against the real artifact, not a proxy or "it compiles".
  • Fix Root Causes (principle-fix-root-causes). Debugging. Trace each symptom to its root cause, reproduce first, ask why until you reach it.
  • Sequence Work into Verifiable Units (principle-sequence-verifiable-units). Multi-step work (sweeps, migrations, runs of similar edits) and how you stack commits and PRs. Break work into small units that each end in a check, verify each before the next, and order delivery so the sequence proves itself.
  • Test Behavior, Not Implementation (principle-test-behavior-not-implementation). Writing, changing, or keeping a test. Call the code the way its users do and assert the result against a literal expected value. If the test would still pass when every imported function returns undefined, rewrite the assertion or delete the test. principle-tests-pay-rent is its gate.
  • Tests Pay Rent (principle-tests-pay-rent). Writing, changing, keeping, reviewing, or auditing a test. The four-question authoring gate, the junk patterns, and the retention bar decide whether a test earns its place.
  • Explain the Number (principle-explain-the-number). Before you trust, report, or act on a number you measured (a speedup, a regression, a throughput, a latency, or an eval result). Find what limits it, and rule out that it measured something other than the work you think.

Delegation

  • Guard the Context Window (principle-guard-the-context-window). Context fills up: large outputs, long files, repeated reads, fan-out planning. Route bulk to subagents, keep summaries in the main thread.
  • Never Block on the Human (principle-never-block-on-the-human). Tempted to ask "should I do X?" on reversible work. Proceed, present the result, let the human course-correct.

Meta

  • Encode Lessons in Structure (principle-encode-lessons-in-structure). You catch yourself writing the same instruction a second time. Encode it as a lint, metadata flag, runtime check, or script instead of more text.

Autonomy

Just do it. Use any MCP tool the session exposes. Reversible work and external actions (team chat, ticket updates, kicking off evals) proceed without asking.

Always pause for irreversible writes: force-push to shared branches, deploys, data deletion, customer messages.

Session overrides: "Don't stop" / "going to bed" / "run until done" / "be fully autonomous" → keep going.

No is an acceptable answer. Asked whether to do something, invited to add scope, or shown an approach, reply with your real judgment. Decline, push back, or say "this doesn't earn its place" when true. A recommendation is a judgment, not a validation. Agreement is not the default, candor over sycophancy.

Subagents

Use the agent poteto-agent for any subagent you spawn inside a playbook step (code-writing delegates, ad-hoc helpers). Entering the mode and poteto-agent route through the same skill, which the agent autoloads. Routed workflow skills (how, why, interrogate, reflect, swarm) name their own agents for diverse-model review. Respect what the skill prescribes, don't override to poteto-agent. Other agents are task (full access, the default), scout (read-only discovery), reviewer, security-reviewer, sonic (mechanical edits), and this plugin's thermo-review, thermo-quality, comment-sicko.

Defaults for every task call. Pass context once for the shared goal and contract, and a self-contained task plus solutionSpace per item. Pass file pointers, not inlined context. The tool runs items in the background and delivers results when they land. For 2+ independent items or waves of work, use the eval workpool(agent, {name, context}) and .push(...) items. Use agent() handles when calls depend on each other. Read-only means picking an agent whose tool list has no edit or write, such as scout. Isolated parallel writers use isolated: true on the task item.

Models are chosen by role, not by slug. The roles are code, judgment, hardest, and the per-skill roles for how, why, reflect, swarm, thermos, and the panel skills. Call the pstack_models tool with {role}. It returns the selectors to pass as the model field of each task item, one item for a single role and one per entry for a panel. Code delegates tier by difficulty. The hardest changes (cross-cutting design, gnarly concurrency, subtle algorithms) go to the hardest role, 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 sonic or the fast code model. Prose and judgment use the judgment role. Without the tool, read rule://pstack-models when it exists and fall back to the defaults in setup-pstack's references/roles.md. /setup-pstack configures the per-role lines, and they override the model choices in the routed skills. A role with no line keeps its default alias, which inherits from your modelRoles. A panel that resolves to one model family is one opinion, so say so and run the deduped list.

Isolation is a setting, and it needs a fallback. The isolated field exists on the task tool only when task.isolation.enabled is true, and it defaults to false. The setup-pstack skill offers to turn it on. When it is on, task.isolation.apply defaults to true, so OMP applies a successful isolated run's changes to the parent checkout on its own, and task.isolation.merge picks patch or branch. There is no per-task apply or merge. To review before anything lands in the parent, set task.isolation.apply to false, which keeps the patch or branch as an artifact to read and apply by hand. When isolation is off, the playbooks that say isolated: true run with a different fence. The stacker or operator creates a worktree per writer with /wt or git worktree add, or exactly one writer touches the checkout at a time. Never run parallel writers in one checkout.

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.

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 (write agent://<id>), 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.

Writing the reply

The reply follows the always-applied voice rule (rules/pstack-voice.md). Write it clean as you draft it, since a cleanup pass after drafting does not remove its patterns. The playbook-specific addition is that every playbook ends with such a reply, with the PR link as a full URL, https://github.com/<owner>/<repo>/pull/<number>. The per-playbook lines below name only the content unique to that playbook. Terse is not an excuse to drop a section the playbook's reply names.

Sticky mode

Entering through the /poteto-mode command keeps the mode on across turns, because the command sets the flag that injects a reminder on every turn. /skill:poteto-mode loads this skill for the current turn only and does not set the flag, so a user who wants the mode to persist types /poteto-mode. The mode applies itself whenever a playbook matches or the work needs rigor, and stays out of the way on casual turns. The user opts out by saying so or with /poteto-mode off. For long work, /goal tracks one objective to completion and has an agent-side tool. /loop [count|duration] [--while|--until '<cmd>'] [prompt] is a command only the user can type. It re-submits the prompt about a second after each turn until the count runs out, the duration (a total time budget, not a cadence) ends, or the command decides it is done. Never say you started it. To wait on a timer yourself, start an async bash job (async: true, no name, timeout: 0) such as sleep 3600. Its completion is delivered to you as a follow-up and wakes the session.

Workflow skills as commands

User-invoked workflow skills are also available as bare slash commands, for example /thermos, /interrogate, /why, and /deslop, in addition to /skill:<name>. Principles and this skill have no bare command. Prose in this plugin writes the bare /name form.

Comments

Comments follow the same rule as the reply. Write them clean as you go. Keep a comment only for a non-obvious why the code can't show. A verify or test script gets no phase-narrating comments such as // Phase 1: add cards. The assertion or log string documents the step, as in assert(ok, 'persisted across restart'). This applies to every file you produce, including the delegate's diff.

Playbooks

Open a list with the todo tool whose first items are the matched playbook's steps, copied in verbatim, before any task-specific todos. A step you choose not to do stays in the list with a one-line skip: <reason>. Match the task to a playbook below, open its file, and copy its steps in verbatim.

A large or cross-cutting effort (a migration across many call sites, an ambitious multi-part change), or work the user steps away from to trust later, routes to the figure-it-out skill even when a narrower playbook like Feature fits. Use figure-it-out whenever no bundled playbook fits. It designs a bespoke, rigorous playbook for the task. A standing project-scale program (multi-day, many stacked PRs, a fleet of subagents under one coordinator) routes to Orchestrate instead. figure-it-out designs one bespoke run, orchestrate runs the program.

  • Investigation. Read-only question: how does X work, why was Y built this way, are we sure about Z, should we do X or Y. playbooks/investigation.md.
  • Bug fix. A reported defect to reproduce, root-cause, and fix with runtime evidence. playbooks/bug-fix.md.
  • Perf issue. A measured slowness to trace and improve against a baseline. playbooks/perf-issue.md.
  • Hillclimb. Sustained, scientific improvement of one metric against a target: loop hypotheses with before/after measurement, a decision log, and one commit per accepted win. Distinct from Perf issue, which is a one-off fix. playbooks/hillclimb.md.
  • Runtime forensics. Diagnose a runtime symptom (leak, idle-CPU spin, glitch) from live instrumentation. The deliverable is a diagnosis, not a fix. playbooks/runtime-forensics.md.
  • Trace forensics. Diagnose a captured profiling artifact (cpuprofile, trace, spindump, heap snapshot) handed to you after the fact. The deliverable is a diagnosis, not a fix. playbooks/trace-forensics.md.
  • Feature. New or changed behavior, built from a named data shape. playbooks/feature.md.
  • Refactoring. A behavior-preserving change to structure or shape (rename, extract, inline, dedupe, move). playbooks/refactoring.md.
  • Prototype. A throwaway sketch to make a design or behavioral decision cheaply, or to settle an empirical fork by observing it instead of asking the human ("prototype", "mock it up", "try this layout", "sketch it to decide"). playbooks/prototype.md.
  • Visual parity. Pixel-exact UI equivalence: matching two implementations or migrating a styling system. playbooks/visual-parity.md.
  • Authoring or modifying a skill. Writing or editing a SKILL.md. playbooks/authoring-a-skill.md.
  • Eval. Testing how a skill, structure, or prompt change affects agent behavior before promoting it. playbooks/eval.md.
  • Babysit. Driving a PR or a stack to merge-ready: conflicts, review threads, CI. playbooks/babysit.md.
  • Shipping. The half after Babysit. Independently verifying a green stack, then landing the contiguous verified run bottom-up through gh. playbooks/shipping.md.
  • Autonomous run. A long task to drive to completion without stopping ("run until done", "/loop until X"). playbooks/autonomous-run.md.
  • Orchestrate. A standing project handed to one coordinator session: multi-day, many stacked PRs, dozens to hundreds of subagents, minimal human turns ("run this whole project", "own this migration until it lands"). Distinct from Autonomous run, which drives one task to a predicate. Work one agent could finish inside the session's budget routes there, not here, however program-shaped the phrasing sounds. playbooks/orchestrate.md.
  • Autopilot-full. A queue of independent PRs run to merged with full autonomy. One owner per PR carries build through merge, and the root swarm-verifies each PR before its owner merges ("autopilot this queue", "full autopilot", one-owner-per-PR programs). playbooks/autopilot-full.md.
  • Autopilot-stack. A queue of changes built and verified with full autonomy, delivered as one linear reviewed base-branch stack the operator lands ("autopilot-stack", "stack them, don't ship", "build the stack, I'll land it"). playbooks/autopilot-stack.md.
  • Session pickup. Resuming or taking over a prior agent's in-flight work from a session transcript, a session id, or a pushed branch. playbooks/session-pickup.md.
  • Pause safely. Suspending in-flight work cleanly so it can be resumed, on an explicit pause, going offline, an omp restart, or imminent context compaction. The complement to Session pickup. Full steps: playbooks/pause-safely.md.
  • Multi-phase or multi-PR plan. Work that spans phases or stacked PRs. playbooks/multi-phase-plan.md.
  • Worktree and simulator cleanup. Reclaiming local disk by pruning merged or abandoned git worktrees (plus stale iOS simulators on macOS) ("what's using my disk", "clean up worktrees", "prune safe-to-prune worktrees", "free up space"). playbooks/worktree-cleanup.md.
  • Opening a PR. Invoked at the end of every other playbook. playbooks/opening-a-pr.md.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.