From cb6c02853c3ba5bd2b0c8b6d4d080b7961687cd7 Mon Sep 17 00:00:00 2001 From: chethan123 <1550979+chethan123@users.noreply.github.com> Date: Sun, 13 Sep 2026 21:18:34 +0000 Subject: [PATCH] feat(pstack): bundle deslop skill poteto-mode runs /deslop before every commit, but the skill shipped only in cursor-team-kit. Copy it into pstack/skills/deslop unchanged so pstack is self-contained, point poteto-mode and the opening-a-pr playbook at the bundled skill, and document how to install it in Claude Code and Codex. Co-Authored-By: Claude Opus 5 --- pstack/README.md | 16 +++++++++++++- pstack/skills/deslop/SKILL.md | 22 +++++++++++++++++++ pstack/skills/poteto-mode/SKILL.md | 2 +- .../poteto-mode/playbooks/opening-a-pr.md | 2 +- 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 pstack/skills/deslop/SKILL.md diff --git a/pstack/README.md b/pstack/README.md index bc11234c3..3b7a74788 100644 --- a/pstack/README.md +++ b/pstack/README.md @@ -130,6 +130,7 @@ the full rules and playbooks live in [`skills/poteto-mode/SKILL.md`](./skills/po | [`/show-me-your-work`](./skills/show-me-your-work/SKILL.md) | you want a reviewable decision trail. logs decisions to a tsv you can commit. | | [`/create-verification-skill`](./skills/create-verification-skill/SKILL.md) | your project has no scripted way to prove app behavior. generates a project-local verify skill with a feature map, for any language or platform. | | [`/maintain-verification-skill`](./skills/maintain-verification-skill/SKILL.md) | your verify skill's feature map has drifted from the app. source wave + one live pass, at most one PR of proven corrections. | +| [`/deslop`](./skills/deslop/SKILL.md) | you're about to commit. removes AI slop from the branch diff: stray comments, defensive checks, `any` casts, deep nesting. | | [`/unslop`](./skills/unslop/SKILL.md) | you're cleaning up writing. removes AI tells. | | [`/bro`](./skills/bro/SKILL.md) | you want the last message restated in plain human language, no jargon. | | [`/technical-writing`](./skills/technical-writing/SKILL.md) | layered doc standard (Diátaxis + Google developer style + STE + Global English) for docs, RFCs, readmes, PR descriptions, commit messages. | @@ -230,12 +231,25 @@ twenty-three short skills, one principle each. `poteto-mode` indexes them inline a few things `poteto-mode` references but doesn't bundle: -- `/deslop` and the `deslop` skill ship in the `cursor-team-kit` plugin. - `control-cli` (for CLIs and TUIs) and `control-ui` (for browser, Electron, web) ship in `cursor-team-kit` too. - `/create-skill` is a cursor built-in. cursor also ships a built-in `/babysit`; inside `poteto-mode`, the [babysit playbook](./skills/poteto-mode/playbooks/babysit.md) supersedes it for pr-status requests. install `cursor-team-kit` alongside pstack if you want the full set. +## use `deslop` in claude code or codex + +[`deslop`](./skills/deslop/SKILL.md) is a plain [agent skill](https://agentskills.io) with no cursor-specific tools, so it runs as-is in other agents. copy it from a clone of this repo: + +```bash +# claude code: invoke with /deslop +mkdir -p ~/.claude/skills && cp -r pstack/skills/deslop ~/.claude/skills/ + +# codex: invoke with $deslop +mkdir -p ~/.agents/skills && cp -r pstack/skills/deslop ~/.agents/skills/ +``` + +for one repo only, copy it to `.claude/skills/` or `.agents/skills/` in that repo instead. + ## why are there no planning skills? cursor already has a great plan mode which works great with pstack. but personally, i don't believe in planning. the best spec is code. if you do want to make a plan, [`/poteto-mode`](./skills/poteto-mode/SKILL.md) covers it, but it's not a default. diff --git a/pstack/skills/deslop/SKILL.md b/pstack/skills/deslop/SKILL.md new file mode 100644 index 000000000..1b3827c7f --- /dev/null +++ b/pstack/skills/deslop/SKILL.md @@ -0,0 +1,22 @@ +--- +name: deslop +description: Remove AI-generated code slop and clean up code style +--- + +# Remove AI code slop + +Check the diff against main and remove AI-generated slop introduced in the branch. + +## Focus Areas + +- Extra comments that are unnecessary or inconsistent with local style +- Defensive checks or try/catch blocks that are abnormal for trusted code paths +- Casts to `any` used only to bypass type issues +- Deeply nested code that should be simplified with early returns +- Other patterns inconsistent with the file and surrounding codebase + +## Guardrails + +- Keep behavior unchanged unless fixing a clear bug. +- Prefer minimal, focused edits over broad rewrites. +- Keep the final summary concise (1-3 sentences). diff --git a/pstack/skills/poteto-mode/SKILL.md b/pstack/skills/poteto-mode/SKILL.md index 7559dea02..2081708f7 100644 --- a/pstack/skills/poteto-mode/SKILL.md +++ b/pstack/skills/poteto-mode/SKILL.md @@ -25,7 +25,7 @@ Remaining triggers: - 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 **create-skill** skill (Cursor's built-in for authoring SKILL.md files). - Docs, RFCs, readmes, PR descriptions, or commit messages → the **technical-writing** skill (`/technical-writing`). -- Before commit → the `deslop` skill from the `cursor-team-kit` plugin (`/deslop`). +- Before commit → the **deslop** skill (`/deslop`). - Before review → the **no-comments** skill (`/no-comments`). - Shipping UI / IDE / CLI → the matching control skill. `cursor-team-kit` publishes `control-cli` (CLIs and TUIs) and `control-ui` (browser / Electron / web UIs). For bug fixes, reproduce first on the same surface yourself. Hand to the user only under the narrow Bug fix step 1 exception. - Any PR-status request → the **Babysit** playbook (`playbooks/babysit.md`), and not Cursor's built-in babysit skill, whose description matches the same words. That includes "babysit this", "get it green", "address the bugbot 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. diff --git a/pstack/skills/poteto-mode/playbooks/opening-a-pr.md b/pstack/skills/poteto-mode/playbooks/opening-a-pr.md index a5c65a095..1d34de497 100644 --- a/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +++ b/pstack/skills/poteto-mode/playbooks/opening-a-pr.md @@ -6,7 +6,7 @@ Invoked at the end of every other playbook. **Commits.** Commit liberally. Rebase into small, ordered commits before opening PRs. Each commit is a future PR: landable, ordered to tell the story. Amend when the fix belongs in a just-made commit. New commit when separable. -**PRs.** Run `/deslop` from `cursor-team-kit` over the diff before commit. Run `/no-comments` before review. Write every PR title, PR description, and commit body with `/technical-writing`, then apply `/unslop`. Apply every technical-writing layer except Diátaxis. Use one word for each action, keep articles, and avoid `-ing` when a plain verb works. +**PRs.** Run `/deslop` over the diff before commit. Run `/no-comments` before review. Write every PR title, PR description, and commit body with `/technical-writing`, then apply `/unslop`. Apply every technical-writing layer except Diátaxis. Use one word for each action, keep articles, and avoid `-ing` when a plain verb works. **Titles.** Use Conventional Commits in the form `type(scope): subject`. Use `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, or `perf` as the type. Use the changed area, such as `pstack` or `poteto-mode`, as the scope. Keep the subject short and imperative. Name a real symbol when one carries the change. For example, `fix(pstack): retarget opening-a-pr babysit trigger`. Do not add a trailing period.