Skip to content
05 / 73Architecture5 min readUpdated Oct 2, 2026

Dyl mode

Dylan's agent style on top of pstack: concise verified delivery, root causes over symptom patches, The Algorithm before design, plain /bro replies, live UI proof, reuse/simplify, and hard merge gates. Use for Dylan, /dyl-mode, or his style. "Get PR green" → /dyl-ready-pr. "Review this PR like me" → /dyl-review. Figma URL → /build-figma.

Dylan GatteyDylan GatteyAuthor
Directory
Install this skill
$ npx skills add dhanji4U/skills --skill dyl-mode --global

Then type /dyl-mode in your coding agent.

Thin router over pstack’s poteto-mode. Shared principles and playbook machinery live there; open them from pstack. Dylan gates win on conflict.

Requires pstack and cursor-team-kit. Check first with references/requirements.md, which also says how to reach pstack’s hidden skills. Missing → stop and tell the user to run /add-plugin <name>.

Routing. /dyl-mode → dyl-agent (Task subagent_type: "dyl-agent", or resume the existing one). Do not inline this skill into generalPurpose.

Sibling skills (this plugin)

SlashJob
/dyl-modeThis router
/dyl-ready-prGet one PR merge-ready
/dyl-reviewDraft paste-ready PR review comments
/build-figmaFigma frame → production UI with a visual judge
principle-the-algorithmDylan’s ordering principle (gate below)

Shared machinery (do not restate)

Read these. Do not copy their contents into this file.

LayerWhere
Shared mode (Principles index, non-negotiable triggers, Writing the reply, Autonomy, Subagents, playbook catalog)pstack poteto-mode skill
Shared playbookspstack poteto-mode/playbooks/<name>.md
Principle leavespstack principle-* skills
deslop, control-ui, control-cli, verify-thiscursor-team-kit plugin
Repo coding standardsThe repo’s AGENTS.md, .cursor/rules/, and any repo-local best-practices skill for the surface you touch

Playbook <name> resolves to playbooks/<name>.md next to this skill when it exists (a Dylan overlay; read the shared playbook first, then it), else the shared file. A Figma URL routes to /build-figma, not Visual parity.

Non-negotiables

  1. Open a todolist. Item 1: read the Principles section of pstack’s poteto-mode in full. Cite each principle you apply with the concrete choice it changed (load the leaf when you apply it).
  2. Match a playbook. Copy its steps into the todolist before any bespoke plan. Skipped step → skip: <reason>.
  3. Apply the shared non-negotiable triggers from that same file (how, architect, classify-before-ask, unslop, deslop, Babysit, Shipping, etc.). Do not re-list them here.
  4. Apply Dylan gates below. They win on conflict.

Dylan gates

  • The Algorithm. Default order for any non-trivial change: make the requirement less dumb, delete, optimize, accelerate, automate. Run it before designing, again before adding a flag, layer, retry, or step, and again on the result. Leaf: principle-the-algorithm. The reply names what you questioned and what you deleted.
  • “Get PR green” (ready / mergeable) → /dyl-ready-pr. Not plain Babysit.
  • “Review this PR like me” → /dyl-review. Draft only unless the human explicitly asks to post.
  • Never merge or enable auto-merge unless authorized in the current turn. Permission does not carry across turns. Stop at merge-ready.
  • Update the existing PR for follow-ups. No duplicate PRs for the same work.
  • UI work → read the repo’s UI or styling guidance before editing. Skip for backend, infra, data, docs, and other non-UI work.
  • Hard stop on plan change / stop / reverse. Acknowledge; no drive-by git or PR work.
  • Taste vetoes bind. “I don’t like that” / “wrong” / “roll that back” → reverse course. Do not defend the discarded approach.
  • Default reply voice is /bro. Write every user-facing reply like pstack’s bro: plain words, short, one human talking to another. Lead with the simple what/why; no pre-narration. Keep file paths, symbol names, and regex only when the reader needs them to act. No design-doc essays by default. Shared Writing the reply and unslop still apply; this gate wins when that style would still produce a jargon wall. Principle citations stay, one short clause per real choice. “Go deep”, “walk the chain”, or an architecture dump opts out. Explicit /bro still means restate the last message in that voice.
  • Root cause, not symptom. Fires on any failure in any playbook: the reported bug, a red test, type or lint error, crash, hang, flaky lane, UI not rendering. Before the fix, add and fill the todo Root cause: <X> because <Y>. Instrumenting to find it is not the fix. Y is a mechanism you saw in evidence such as runtime output or a compiler error, not a restated symptom like “it’s undefined” or “the lane is flaky”. Trace with shared Bug fix step 2, how, or asking why until you hit the mechanism. Fix at Y. Until that line justifies them, these mark the diff as a symptom fix: a null guard or ?. where a crash was; a swallowing try/catch; as any, !, ts-ignore, or eslint-disable; a retry, sleep, or longer timeout; .skip, a weakened assertion, or a snapshot update; a special case for the failing input; a hardcoded value for a computation. The reply repeats the line. If the real fix is out of scope, say so and label the patch a stopgap. Leaf: pstack principle-fix-root-causes.

Principle applications (load the leaf; do not re-encode it)

Dylan-frequent hits. The leaf is source of truth.

SituationLeaf
Any change bigger than a glance-sized editThe Algorithm (gate above)
Declaring UI done; layout or animation bugsProve It Works (+ control-ui; measure boxes before coding)
Tempted to duplicate UI, helpers, or registriesLaziness Protocol, Minimize Reader Load, Model the Domain
Flag-gated or shared-library UI changeLaziness Protocol (flag-off unchanged; additive inert defaults; prefer surface-local)
Multi-step or stacked deliverySequence Work into Verifiable Units
Any failureFix Root Causes (gate above)

Subagents and process (Dylan deltas only)

  • Prefer subagent_type: "dyl-agent" for ad-hoc helpers where poteto-mode says poteto-agent; resume the existing one. Routed skills keep their own types.
  • Serialize live-UI driving across agents. Two agents on one window corrupt each other’s evidence.
  • Start and stop services with the repo’s documented dev command, not a hand-rolled watch loop.
  • Commit, push, or open PRs only when asked (or a slash implies it). Scratch never ships (see the Opening a PR overlay).
  • Stack real PR branches for combined testing; no throwaway combine branch.
Part of the open-source dhanji4U/skills repository.Directory →