Files
lauren d7cde2b84e pstack: replace semicolons, em dashes, and connector colons in skill prose with periods or commas (#331)
Punctuation and single-word swaps only. No sentence added or deleted, no
restructuring, no new text.

- 65 markdown files under pstack/skills. 220 changed lines, every changed
  line pairs with one base line.
- 272 rewrites. 239 semicolons (224 became a period plus a capital, 15 became
  a comma). 29 connector colons (28 became a period, 1 became a comma).
  1 em dash before a list became a colon. 3 word swaps (`public surface` and
  `smaller surface area` to `API`, `echo the scaffolding` to `echo the
  structure`).
- Label colons, colons before a list or an example, template strings such as
  `file:line`, and the literal `TL;DR` stay.
- Heading, numbered-step, fenced-block, and line counts are unchanged in
  every file. No frontmatter, code span, or fenced block changes.
- o200k tokens of the pstack/skills markdown tree 87,747 before, 87,766
  after (+19), because a period plus a capital tokenizes one token longer
  than a semicolon in a few places.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-07 17:00:12 -07:00

4.3 KiB

name, description
name description
setup-pstack Configure which models pstack uses per role. Detects your available models and writes an always-applied rule that overrides the skill defaults. Use for /setup-pstack, "configure pstack models", or changing pstack's model choices.

Setup pstack

Write ~/.cursor/rules/pstack-models.mdc, an always-applied rule that sets pstack's model per role.

Steps

1. Detect available models

Enumerate the model slugs you can pass to a Task subagent in this session. That is the dependable source. If Cursor also exposes a models API or CLI that lists the user's entitled models, prefer it for completeness. If you cannot detect any, ask the user to paste the slugs they have access to. Never write a real slug you have not confirmed is available. The aliases inherit-parent and auto are always valid even though they are not detected slugs.

2. Load current state

The default role-to-model mapping is the rule shape shown in step 5 below. If ~/.cursor/rules/pstack-models.mdc already exists, read it and treat its values as the current choices. Otherwise start from those defaults.

3. Map and confirm

Show every role with its current model, marking any real slug not in the detected set as needing a choice. Ask whether to accept as-is or change specific roles, offering the detected models plus inherit-parent and auto (both mean: this role runs on the parent chat model, which is how Auto users stay on Auto) as the options. Prefer AskQuestion over free text. For panel roles (arena runners, architect runners, interrogate reviewers) the value is a list, and one subagent runs per entry, alias entries included, so the list length sets the count. arena cross-judge pool is also a list, but Arena selects one value from it whose model family differs from the parent's when possible. swarm workers is the default model for every worker unless a race or comparison assigns another model per arm.

4. Validate

Every real slug written must be in the detected set. inherit-parent and auto always pass. If a chosen real slug is not available, stop and ask again.

5. Write the rule

Write ~/.cursor/rules/pstack-models.mdc with alwaysApply: true and one line per role, using the same labels poteto-mode uses. Overwrite the whole file so re-runs stay idempotent. Shape:

---
description: pstack per-role model choices (overrides skill defaults)
alwaysApply: true
---
# pstack model configuration. One line per role. Delete a line to fall back to the skill default.
# `inherit-parent` or `auto` as a value: the role runs on the parent chat model (omit Task `model`). Alias entries in a panel list still count toward its fan-out.
feature, refactoring: grok-4.6-fast-xhigh
bug-fix: claude-fable-5-1-thinking-max
perf-issue: claude-fable-5-1-thinking-max
hillclimb: claude-fable-5-1-thinking-max
judgment and prose: claude-fable-5-1-thinking-max
hardest tasks: claude-fable-5-1-thinking-max
how explorer: grok-4.6-fast-xhigh
how explainer: claude-fable-5-1-thinking-max
why investigators: grok-4.6-fast-xhigh
why synthesizer: claude-fable-5-1-thinking-max
reflect tooling: gpt-5.6-sol-max
reflect judgment, divergent, synthesizer: claude-fable-5-1-thinking-max
arena runners: claude-fable-5-1-thinking-max, gpt-5.6-sol-max, grok-4.6-fast-xhigh, claude-opus-5-thinking-xhigh
arena cross-judge pool: claude-fable-5-1-thinking-max, gpt-5.6-sol-max, grok-4.6-fast-xhigh, claude-opus-5-thinking-xhigh
swarm workers: grok-4.6-fast-xhigh
architect runners: claude-fable-5-1-thinking-max, gpt-5.6-sol-max, grok-4.6-fast-xhigh, claude-opus-5-thinking-xhigh
interrogate reviewers: claude-fable-5-1-thinking-max, gpt-5.6-sol-max, grok-4.6-fast-xhigh, claude-opus-5-thinking-xhigh

6. Confirm

Tell the user the rule was written and that it applies to new sessions. Re-running this skill updates it.

7. Offer a verification skill (optional)

Check whether the project has a way to drive the real app for proof (a verify-* skill, or an existing harness). If not, offer once: "want a project-local verification skill, so agents can drive the app the way a user does and prove changes work? I can generate one with /create-verification-skill." On yes, invoke /create-verification-skill (resolves wherever pstack is installed: workspace, user, or plugin). On no, move on without pushing.