@jiroamato/pstack 0.0.0-stage → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -2
  3. package/bin/pstack.js +95 -0
  4. package/lib/install.js +121 -0
  5. package/lib/prompt.js +77 -0
  6. package/lib/targets.js +43 -0
  7. package/package.json +38 -5
  8. package/pstack/.claude-plugin/plugin.json +26 -0
  9. package/pstack/.codex-plugin/plugin.json +36 -0
  10. package/pstack/LICENSE +21 -0
  11. package/pstack/LICENSE-cursor-team-kit +21 -0
  12. package/pstack/NOTICE +8 -0
  13. package/pstack/README.md +307 -0
  14. package/pstack/agents/comment-sicko.md +34 -0
  15. package/pstack/agents/poteto-agent.md +10 -0
  16. package/pstack/automations/benny/FOR_AGENTS.md +92 -0
  17. package/pstack/automations/benny/README.md +28 -0
  18. package/pstack/automations/benny/skills/reproduce-and-fix-issues/SKILL.md +313 -0
  19. package/pstack/automations/benny/skills/reproduce-and-fix-issues/references/control-adapter.md +169 -0
  20. package/pstack/automations/benny/skills/reproduce-and-fix-issues/references/feature-map.example.md +205 -0
  21. package/pstack/automations/benny/skills/reproduce-and-fix-issues/references/verify-existing-fix.md +93 -0
  22. package/pstack/automations/benny/skills/setup-benny/SKILL.md +271 -0
  23. package/pstack/automations/benny/skills/triage-issue-reports/SKILL.md +240 -0
  24. package/pstack/automations/benny/skills/triage-issue-reports/references/routing.example.md +61 -0
  25. package/pstack/automations/benny/templates/configuration.example.yaml +84 -0
  26. package/pstack/automations/benny/templates/reproduce-automation-prompt.md +33 -0
  27. package/pstack/automations/benny/templates/triage-automation-prompt.md +39 -0
  28. package/pstack/codex/agents/comment-sicko.toml +36 -0
  29. package/pstack/codex/agents/poteto-agent.toml +11 -0
  30. package/pstack/docs/guide/01-setup.md +80 -0
  31. package/pstack/docs/guide/02-poteto-mode.md +131 -0
  32. package/pstack/docs/guide/03-understand.md +79 -0
  33. package/pstack/docs/guide/04-design.md +133 -0
  34. package/pstack/docs/guide/05-build-and-clean.md +83 -0
  35. package/pstack/docs/guide/06-verify-and-ship.md +130 -0
  36. package/pstack/docs/guide/07-overnight.md +120 -0
  37. package/pstack/docs/guide/08-principles.md +72 -0
  38. package/pstack/docs/guide/09-make-it-yours.md +100 -0
  39. package/pstack/docs/guide/10-recipes-and-pitfalls.md +156 -0
  40. package/pstack/docs/guide/README.md +38 -0
  41. package/pstack/skills/architect/SKILL.md +85 -0
  42. package/pstack/skills/architect/agents/openai.yaml +2 -0
  43. package/pstack/skills/architect/references/design-red-flags.md +57 -0
  44. package/pstack/skills/architect/references/rationale-template.md +35 -0
  45. package/pstack/skills/architect/references/runner-prompt.md +20 -0
  46. package/pstack/skills/arena/SKILL.md +75 -0
  47. package/pstack/skills/arena/agents/openai.yaml +2 -0
  48. package/pstack/skills/automate-me/SKILL.md +104 -0
  49. package/pstack/skills/automate-me/agents/openai.yaml +2 -0
  50. package/pstack/skills/benchmark-checklist/SKILL.md +39 -0
  51. package/pstack/skills/benchmark-checklist/agents/openai.yaml +2 -0
  52. package/pstack/skills/blast-radius/SKILL.md +52 -0
  53. package/pstack/skills/blast-radius/agents/openai.yaml +2 -0
  54. package/pstack/skills/bro/SKILL.md +7 -0
  55. package/pstack/skills/bro/agents/openai.yaml +2 -0
  56. package/pstack/skills/control-cli/SKILL.md +55 -0
  57. package/pstack/skills/control-cli/agents/openai.yaml +2 -0
  58. package/pstack/skills/control-ui/SKILL.md +72 -0
  59. package/pstack/skills/control-ui/agents/openai.yaml +2 -0
  60. package/pstack/skills/correct/SKILL.md +34 -0
  61. package/pstack/skills/correct/agents/openai.yaml +2 -0
  62. package/pstack/skills/create-verification-skill/SKILL.md +47 -0
  63. package/pstack/skills/create-verification-skill/agents/openai.yaml +2 -0
  64. package/pstack/skills/create-verification-skill/references/feature-map-example/README.md +47 -0
  65. package/pstack/skills/create-verification-skill/references/feature-map-example/create-note.md +39 -0
  66. package/pstack/skills/create-verification-skill/references/feature-map-example/search.md +45 -0
  67. package/pstack/skills/deslop/SKILL.md +30 -0
  68. package/pstack/skills/deslop/agents/openai.yaml +2 -0
  69. package/pstack/skills/figure-it-out/SKILL.md +55 -0
  70. package/pstack/skills/figure-it-out/agents/openai.yaml +2 -0
  71. package/pstack/skills/how/SKILL.md +58 -0
  72. package/pstack/skills/how/agents/openai.yaml +2 -0
  73. package/pstack/skills/how/references/explainer-prompt.md +55 -0
  74. package/pstack/skills/how/references/explorer-prompt.md +52 -0
  75. package/pstack/skills/interrogate/SKILL.md +111 -0
  76. package/pstack/skills/interrogate/agents/openai.yaml +2 -0
  77. package/pstack/skills/interrogate/references/code-quality-review.md +47 -0
  78. package/pstack/skills/interrogate/references/lead-judgment.md +58 -0
  79. package/pstack/skills/interrogate/references/reviewer-prompt.md +70 -0
  80. package/pstack/skills/interrogate/references/rubric.md +77 -0
  81. package/pstack/skills/kiss/SKILL.md +90 -0
  82. package/pstack/skills/kiss/agents/openai.yaml +2 -0
  83. package/pstack/skills/kiss/references/assess.md +110 -0
  84. package/pstack/skills/kiss/references/principles.md +138 -0
  85. package/pstack/skills/maintain-verification-skill/SKILL.md +41 -0
  86. package/pstack/skills/maintain-verification-skill/agents/openai.yaml +2 -0
  87. package/pstack/skills/make-bot-ui/SKILL.md +289 -0
  88. package/pstack/skills/make-bot-ui/agents/openai.yaml +2 -0
  89. package/pstack/skills/no-comments/SKILL.md +24 -0
  90. package/pstack/skills/no-comments/agents/openai.yaml +2 -0
  91. package/pstack/skills/poteto-help/SKILL.md +156 -0
  92. package/pstack/skills/poteto-help/agents/openai.yaml +2 -0
  93. package/pstack/skills/poteto-help/references/prompting.md +51 -0
  94. package/pstack/skills/poteto-help/references/recipes.md +47 -0
  95. package/pstack/skills/poteto-mode/SKILL.md +143 -0
  96. package/pstack/skills/poteto-mode/agents/openai.yaml +2 -0
  97. package/pstack/skills/poteto-mode/playbooks/authoring-a-skill.md +12 -0
  98. package/pstack/skills/poteto-mode/playbooks/autonomous-run.md +13 -0
  99. package/pstack/skills/poteto-mode/playbooks/autopilot-full.md +13 -0
  100. package/pstack/skills/poteto-mode/playbooks/autopilot-stack.md +16 -0
  101. package/pstack/skills/poteto-mode/playbooks/babysit.md +29 -0
  102. package/pstack/skills/poteto-mode/playbooks/bug-fix.md +15 -0
  103. package/pstack/skills/poteto-mode/playbooks/eval.md +25 -0
  104. package/pstack/skills/poteto-mode/playbooks/feature.md +21 -0
  105. package/pstack/skills/poteto-mode/playbooks/hillclimb.md +21 -0
  106. package/pstack/skills/poteto-mode/playbooks/investigation.md +14 -0
  107. package/pstack/skills/poteto-mode/playbooks/multi-phase-plan.md +155 -0
  108. package/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +38 -0
  109. package/pstack/skills/poteto-mode/playbooks/orchestrate.md +114 -0
  110. package/pstack/skills/poteto-mode/playbooks/pause-safely.md +10 -0
  111. package/pstack/skills/poteto-mode/playbooks/perf-issue.md +25 -0
  112. package/pstack/skills/poteto-mode/playbooks/prototype.md +14 -0
  113. package/pstack/skills/poteto-mode/playbooks/refactoring.md +16 -0
  114. package/pstack/skills/poteto-mode/playbooks/runtime-forensics.md +11 -0
  115. package/pstack/skills/poteto-mode/playbooks/session-pickup.md +11 -0
  116. package/pstack/skills/poteto-mode/playbooks/shipping.md +17 -0
  117. package/pstack/skills/poteto-mode/playbooks/trace-forensics.md +14 -0
  118. package/pstack/skills/poteto-mode/playbooks/visual-parity.md +11 -0
  119. package/pstack/skills/poteto-mode/playbooks/worktree-cleanup.md +14 -0
  120. package/pstack/skills/poteto-mode/references/bugbot-triage.md +142 -0
  121. package/pstack/skills/poteto-mode/scripts/bootstrap.ts +62 -0
  122. package/pstack/skills/poteto-mode/scripts/bun.lock +67 -0
  123. package/pstack/skills/poteto-mode/scripts/check-plan.mjs +185 -0
  124. package/pstack/skills/poteto-mode/scripts/orch/orch.test.ts +634 -0
  125. package/pstack/skills/poteto-mode/scripts/orch/orch.ts +578 -0
  126. package/pstack/skills/poteto-mode/scripts/orch/store.ts +1607 -0
  127. package/pstack/skills/poteto-mode/scripts/package.json +16 -0
  128. package/pstack/skills/poteto-mode/scripts/watch-pr/cli.test.ts +224 -0
  129. package/pstack/skills/poteto-mode/scripts/watch-pr/cli.ts +223 -0
  130. package/pstack/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +118 -0
  131. package/pstack/skills/poteto-mode/scripts/watch-pr/github.test.ts +306 -0
  132. package/pstack/skills/poteto-mode/scripts/watch-pr/github.ts +699 -0
  133. package/pstack/skills/poteto-mode/scripts/watch-pr/policy.test.ts +420 -0
  134. package/pstack/skills/poteto-mode/scripts/watch-pr/policy.ts +832 -0
  135. package/pstack/skills/poteto-mode/scripts/watch-pr/render.ts +169 -0
  136. package/pstack/skills/poteto-mode/scripts/watch-pr/tsconfig.json +13 -0
  137. package/pstack/skills/poteto-mode/scripts/watch-pr/types.compile.ts +93 -0
  138. package/pstack/skills/poteto-mode/scripts/watch-pr/types.ts +401 -0
  139. package/pstack/skills/poteto-mode/scripts/watch-pr/watch-pr +6 -0
  140. package/pstack/skills/poteto-mode/scripts/worktree-audit.sh +92 -0
  141. package/pstack/skills/principle-attack-the-premise/SKILL.md +23 -0
  142. package/pstack/skills/principle-attack-the-premise/agents/openai.yaml +2 -0
  143. package/pstack/skills/principle-boundary-discipline/SKILL.md +34 -0
  144. package/pstack/skills/principle-boundary-discipline/agents/openai.yaml +2 -0
  145. package/pstack/skills/principle-build-the-lever/SKILL.md +23 -0
  146. package/pstack/skills/principle-build-the-lever/agents/openai.yaml +2 -0
  147. package/pstack/skills/principle-encode-lessons-in-structure/SKILL.md +31 -0
  148. package/pstack/skills/principle-encode-lessons-in-structure/agents/openai.yaml +2 -0
  149. package/pstack/skills/principle-exhaust-the-design-space/SKILL.md +21 -0
  150. package/pstack/skills/principle-exhaust-the-design-space/agents/openai.yaml +2 -0
  151. package/pstack/skills/principle-experience-first/SKILL.md +19 -0
  152. package/pstack/skills/principle-experience-first/agents/openai.yaml +2 -0
  153. package/pstack/skills/principle-explain-the-number/SKILL.md +23 -0
  154. package/pstack/skills/principle-explain-the-number/agents/openai.yaml +2 -0
  155. package/pstack/skills/principle-fix-root-causes/SKILL.md +23 -0
  156. package/pstack/skills/principle-fix-root-causes/agents/openai.yaml +2 -0
  157. package/pstack/skills/principle-foundational-thinking/SKILL.md +21 -0
  158. package/pstack/skills/principle-foundational-thinking/agents/openai.yaml +2 -0
  159. package/pstack/skills/principle-guard-the-context-window/SKILL.md +16 -0
  160. package/pstack/skills/principle-guard-the-context-window/agents/openai.yaml +2 -0
  161. package/pstack/skills/principle-laziness-protocol/SKILL.md +18 -0
  162. package/pstack/skills/principle-laziness-protocol/agents/openai.yaml +2 -0
  163. package/pstack/skills/principle-make-operations-idempotent/SKILL.md +24 -0
  164. package/pstack/skills/principle-make-operations-idempotent/agents/openai.yaml +2 -0
  165. package/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +22 -0
  166. package/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/agents/openai.yaml +2 -0
  167. package/pstack/skills/principle-minimize-reader-load/SKILL.md +23 -0
  168. package/pstack/skills/principle-minimize-reader-load/agents/openai.yaml +2 -0
  169. package/pstack/skills/principle-model-the-domain/SKILL.md +26 -0
  170. package/pstack/skills/principle-model-the-domain/agents/openai.yaml +2 -0
  171. package/pstack/skills/principle-never-block-on-the-human/SKILL.md +20 -0
  172. package/pstack/skills/principle-never-block-on-the-human/agents/openai.yaml +2 -0
  173. package/pstack/skills/principle-outcome-oriented-execution/SKILL.md +21 -0
  174. package/pstack/skills/principle-outcome-oriented-execution/agents/openai.yaml +2 -0
  175. package/pstack/skills/principle-prove-it-works/SKILL.md +22 -0
  176. package/pstack/skills/principle-prove-it-works/agents/openai.yaml +2 -0
  177. package/pstack/skills/principle-redesign-from-first-principles/SKILL.md +16 -0
  178. package/pstack/skills/principle-redesign-from-first-principles/agents/openai.yaml +2 -0
  179. package/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md +16 -0
  180. package/pstack/skills/principle-separate-before-serializing-shared-state/agents/openai.yaml +2 -0
  181. package/pstack/skills/principle-sequence-verifiable-units/SKILL.md +17 -0
  182. package/pstack/skills/principle-sequence-verifiable-units/agents/openai.yaml +2 -0
  183. package/pstack/skills/principle-subtract-before-you-add/SKILL.md +21 -0
  184. package/pstack/skills/principle-subtract-before-you-add/agents/openai.yaml +2 -0
  185. package/pstack/skills/principle-test-behavior-not-implementation/SKILL.md +25 -0
  186. package/pstack/skills/principle-test-behavior-not-implementation/agents/openai.yaml +2 -0
  187. package/pstack/skills/principle-type-system-discipline/SKILL.md +31 -0
  188. package/pstack/skills/principle-type-system-discipline/agents/openai.yaml +2 -0
  189. package/pstack/skills/pstack-harness/SKILL.md +67 -0
  190. package/pstack/skills/recall/SKILL.md +35 -0
  191. package/pstack/skills/recall/agents/openai.yaml +2 -0
  192. package/pstack/skills/reflect/SKILL.md +76 -0
  193. package/pstack/skills/reflect/agents/openai.yaml +2 -0
  194. package/pstack/skills/reflect/references/divergent-reviewer.md +43 -0
  195. package/pstack/skills/reflect/references/judgment-reviewer.md +42 -0
  196. package/pstack/skills/reflect/references/synthesizer.md +56 -0
  197. package/pstack/skills/reflect/references/tooling-reviewer.md +55 -0
  198. package/pstack/skills/setup-pstack/SKILL.md +110 -0
  199. package/pstack/skills/show-me-your-work/SKILL.md +82 -0
  200. package/pstack/skills/show-me-your-work/agents/openai.yaml +2 -0
  201. package/pstack/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
  202. package/pstack/skills/show-me-your-work/scripts/log.sh +42 -0
  203. package/pstack/skills/swarm/SKILL.md +48 -0
  204. package/pstack/skills/swarm/agents/openai.yaml +2 -0
  205. package/pstack/skills/tdd/SKILL.md +44 -0
  206. package/pstack/skills/tdd/agents/openai.yaml +2 -0
  207. package/pstack/skills/teach/SKILL.md +21 -0
  208. package/pstack/skills/teach/agents/openai.yaml +2 -0
  209. package/pstack/skills/technical-writing/SKILL.md +106 -0
  210. package/pstack/skills/technical-writing/agents/openai.yaml +2 -0
  211. package/pstack/skills/typescript-best-practices/SKILL.md +31 -0
  212. package/pstack/skills/typescript-best-practices/agents/openai.yaml +2 -0
  213. package/pstack/skills/typescript-best-practices/references/patterns.md +324 -0
  214. package/pstack/skills/unslop/SKILL.md +67 -0
  215. package/pstack/skills/unslop/agents/openai.yaml +2 -0
  216. package/pstack/skills/why/SKILL.md +158 -0
  217. package/pstack/skills/why/agents/openai.yaml +2 -0
  218. package/pstack/skills/why/references/epistemics.md +144 -0
  219. package/pstack/skills/why/references/investigator-prompt.md +103 -0
  220. package/pstack/skills/why/references/source-playbook.md +17 -0
  221. package/pstack/skills/why/references/sources/code-archaeology.md +88 -0
  222. package/pstack/skills/why/references/sources/databricks.md +70 -0
  223. package/pstack/skills/why/references/sources/datadog.md +99 -0
  224. package/pstack/skills/why/references/sources/incident-postmortem.md +15 -0
  225. package/pstack/skills/why/references/sources/linear.md +48 -0
  226. package/pstack/skills/why/references/sources/notion.md +55 -0
  227. package/pstack/skills/why/references/sources/sentry.md +100 -0
  228. package/pstack/skills/why/references/sources/slack.md +54 -0
  229. package/pstack/skills/why/references/synthesizer-prompt.md +135 -0
@@ -0,0 +1,307 @@
1
+ # pstack
2
+
3
+ > this is a port of [poteto's pstack](https://github.com/cursor/plugins/tree/main/pstack) from cursor to claude code and codex, maintained by [jiroamato](https://github.com/jiroamato). the skills, playbooks, and principles are poteto's, kept as close to upstream as the harnesses allow. the [`pstack-harness`](./skills/pstack-harness/SKILL.md) adapter, the manifests, the agent definitions, and `/setup-pstack` are the port's. upstream version: 0.15.15.
4
+
5
+ i'm [poteto](https://x.com/poteto). i'm not a president or ceo, but i've worked with millions of lines of code at Meta, Netflix, and Cursor. i'm also on the react core team where i help build and maintain react compiler.
6
+
7
+ there's a growing sense that ai writes too much slop code. i agree. i don't want to ship like a team of twenty slop artists. throughput without quality is not a goal i aspire to. if you want to go fast, go deep first.
8
+
9
+ **pstack is my answer.** these are the same skills i use everyday to ship high quality code at Cursor. this turns your agent harness into a real engineering team. the goal is not to maximize loc, in fact it's the opposite. pstack helps you write less, but higher quality code.
10
+
11
+ **pstack gives you fearless parallelism.** when you can go deep on one agent and trust it to write good, verifiable code, you can truly parallelize with confidence. start multiple agents up with `poteto-mode` and trust that they'll apply rigorous engineering principles to their work.
12
+
13
+ **use the models your harness gives you.** every frontier model has its strengths and weaknesses. many of the skills run multi-model panels to take advantage of each model's unique strengths. on claude code the panels mix opus and sonnet. on codex they mix gpt-6-astra and gpt-6-luna. [`/setup-pstack`](./skills/setup-pstack/SKILL.md) changes any of it.
14
+
15
+ fork it. improve it. make it yours. PRs are welcome!
16
+
17
+ ## install
18
+
19
+ pstack installs as a plugin on claude code and on codex, or copies into a skills directory with npx. same skills, same playbooks, same principles.
20
+
21
+ the quick way, from a shell:
22
+
23
+ ```bash
24
+ npx @jiroamato/pstack
25
+ ```
26
+
27
+ it asks which agent and whether to install into this project or your home directory, then copies the skills and agents there. re-run it to update, `npx @jiroamato/pstack uninstall` to remove. skills keep their bare names, so type `/poteto-mode` on claude code.
28
+
29
+ or as a plugin, which the tool updates for you. claude code, from a shell:
30
+
31
+ ```bash
32
+ claude plugin marketplace add jiroamato/pstack
33
+ claude plugin install pstack@pstack-plugins
34
+ ```
35
+
36
+ codex, from a shell:
37
+
38
+ ```bash
39
+ codex plugin marketplace add jiroamato/pstack
40
+ codex plugin add pstack
41
+ ```
42
+
43
+ start a new session afterwards. on claude code the plugin's skills are namespaced, so type `/pstack:poteto-mode` (plain `/poteto-mode` after an npx install). on codex type `$poteto-mode`. this readme writes `/poteto-mode` for both.
44
+
45
+ ## get started
46
+
47
+ two steps:
48
+
49
+ 1. run [`/setup-pstack`](./skills/setup-pstack/SKILL.md), pick a reasoning budget, and choose which models you want.
50
+ 2. use [`/poteto-mode`](./skills/poteto-mode/SKILL.md) whenever you're doing anything that requires rigor.
51
+
52
+ new here? the [pstack guide](./docs/guide/README.md) walks you through a first real task, from setup and prompting through verification and overnight runs. stuck, or unsure which skill fits? ask [`/poteto-help`](./skills/poteto-help/SKILL.md).
53
+
54
+ that's it. the other skills are situational; the mode skill uses them for you as needed. out of the box the mode splits work by model strength: code delegates (feature, refactoring, bug fix, perf, hillclimb) go to the code tier (sonnet on claude code, gpt-6-luna on codex), while the hardest changes, prose, and judgment go to the judgment tier (opus on claude code, gpt-6-astra on codex). the default panel is one of each. [`/setup-pstack`](./skills/setup-pstack/SKILL.md) changes any of it.
55
+
56
+ ## usage
57
+
58
+ use [`/poteto-mode`](./skills/poteto-mode/SKILL.md) at the start of a task. it reads your request, picks from a set of playbooks, and runs the other skills as the steps need them.
59
+
60
+ ### just use [`/poteto-mode`](./skills/poteto-mode/SKILL.md)
61
+
62
+ this skill is the main shortcut. i use it whenever i need the agent to do rigorous engineering work. it comes with twenty-three playbooks:
63
+
64
+ ```
65
+ /poteto-mode this pr has a subtle bug where the scroll drifts every 750ms even when idle. repro
66
+ first, then fix and verify.
67
+ ```
68
+
69
+ ```
70
+ /poteto-mode i'm going to bed. land the stack even if ci flakes. i want everything merged by
71
+ morning.
72
+ ```
73
+
74
+ <details>
75
+ <summary>the twenty-three playbooks</summary>
76
+
77
+ | playbook | for |
78
+ |---|---|
79
+ | [investigation](./skills/poteto-mode/playbooks/investigation.md) | a read-only question. how does x work, why was y built this way, are we sure. |
80
+ | [bug fix](./skills/poteto-mode/playbooks/bug-fix.md) | reproduce a defect, root-cause it, and fix with runtime evidence. |
81
+ | [perf](./skills/poteto-mode/playbooks/perf-issue.md) | trace a measured slowness and improve it against a baseline. |
82
+ | [hillclimb](./skills/poteto-mode/playbooks/hillclimb.md) | sustained, scientific improvement of one metric against a target, looping hypotheses with before/after measurement and one commit per accepted win. |
83
+ | [runtime forensics](./skills/poteto-mode/playbooks/runtime-forensics.md) | diagnose a live symptom (leak, idle-cpu spin, glitch) from instrumentation. |
84
+ | [trace forensics](./skills/poteto-mode/playbooks/trace-forensics.md) | diagnose a captured profiling artifact (cpuprofile, trace, spindump, heap snapshot). |
85
+ | [feature](./skills/poteto-mode/playbooks/feature.md) | new or changed behavior, built from a named data shape. |
86
+ | [refactoring](./skills/poteto-mode/playbooks/refactoring.md) | a behavior-preserving change to structure or shape. |
87
+ | [prototype](./skills/poteto-mode/playbooks/prototype.md) | a throwaway sketch to make a design or behavioral decision cheaply, or to settle an empirical fork by observing it. |
88
+ | [visual parity](./skills/poteto-mode/playbooks/visual-parity.md) | pixel-exact ui equivalence between two implementations. |
89
+ | [authoring a skill](./skills/poteto-mode/playbooks/authoring-a-skill.md) | writing or editing a SKILL.md. |
90
+ | [eval](./skills/poteto-mode/playbooks/eval.md) | test how a skill or prompt change affects agent behavior, blinded. |
91
+ | [babysit](./skills/poteto-mode/playbooks/babysit.md) | drive a pr or a stack to merge-ready: conflicts, review threads, ci. |
92
+ | [shipping](./skills/poteto-mode/playbooks/shipping.md) | independently verify a green stack, then land the contiguous verified run bottom-up through github by default or origin when available. |
93
+ | [autonomous run](./skills/poteto-mode/playbooks/autonomous-run.md) | drive a long task to completion without stopping. |
94
+ | [orchestrate](./skills/poteto-mode/playbooks/orchestrate.md) | a standing project handed to one coordinator chat: multi-day, many stacked prs, fleets of subagents. |
95
+ | [autopilot-full](./skills/poteto-mode/playbooks/autopilot-full.md) | run independent prs to merged with one owner per pr and a root swarm verdict on each round, from the code-ready head on. |
96
+ | [autopilot-stack](./skills/poteto-mode/playbooks/autopilot-stack.md) | build and verify one linear base-branch stack for the operator to review and land. |
97
+ | [session pickup](./skills/poteto-mode/playbooks/session-pickup.md) | resume or take over a prior agent's in-flight work. |
98
+ | [pause safely](./skills/poteto-mode/playbooks/pause-safely.md) | suspend in-flight work cleanly so it can be resumed later. |
99
+ | [multi-phase plan](./skills/poteto-mode/playbooks/multi-phase-plan.md) | work that spans phases or stacked PRs. |
100
+ | [worktree cleanup](./skills/poteto-mode/playbooks/worktree-cleanup.md) | reclaim disk by pruning merged or abandoned worktrees and stale ios simulators, safety-gated. |
101
+ | [opening a pr](./skills/poteto-mode/playbooks/opening-a-pr.md) | open a ready pr from small ordered commits with a conventional commits title and a briefing-style body. invoked at the end of every other playbook. |
102
+
103
+ </details>
104
+
105
+
106
+
107
+ when invoked it:
108
+
109
+ 1. matches your task to a [playbook](./skills/poteto-mode/playbooks/) and opens a todo list whose first items are its steps, copied in verbatim.
110
+ 2. routes to the other skills as the steps fire.
111
+ 3. writes unslopped replies framed for the consumer and the maintainer.
112
+
113
+ the full rules and playbooks live in [`skills/poteto-mode/SKILL.md`](./skills/poteto-mode/SKILL.md).
114
+
115
+ to keep [`/poteto-mode`](./skills/poteto-mode/SKILL.md) on across turns, follow the harness **keep the mode on** row in [`pstack-harness`](./skills/pstack-harness/SKILL.md). on claude code, start the session as the agent with `claude --agent pstack:poteto-agent`, or add one line to your `CLAUDE.md`: "Apply the pstack:poteto-mode skill to any non-trivial task." on codex, add the same line with `$poteto-mode` to `AGENTS.md`. it then applies itself when a playbook matches or the task needs rigor, and stays out of the way otherwise. say so to opt out.
116
+
117
+ [`/poteto-mode`](./skills/poteto-mode/SKILL.md) works extremely well with claude code's `/loop` command. on codex, the autonomous run playbook polls or spawns a monitor agent instead (the harness **loop** row). either way you can make the agent work for many hours without sacrificing rigor.
118
+
119
+ ## skills
120
+
121
+ [`/poteto-mode`](./skills/poteto-mode/SKILL.md) runs most of these for you when a step needs them (`how`, `why`, `architect`, `arena`, `swarm`, `interrogate`, `deslop`, `control-cli`, `control-ui`, `unslop`, `no-comments`, `technical-writing`, `tdd`, and the principles). the table below is for when you want one directly:
122
+
123
+ ```
124
+ /how do we cancel runs? do we have an n+1 when we look up every run to cancel?
125
+ ```
126
+
127
+ ```
128
+ /interrogate review this pr.
129
+ ```
130
+
131
+ <details>
132
+ <summary>all skills</summary>
133
+
134
+ | skill | use it when |
135
+ |---|---|
136
+ | [`/poteto-mode`](./skills/poteto-mode/SKILL.md) | default entry point for any non-trivial task. |
137
+ | [`/poteto-help`](./skills/poteto-help/SKILL.md) | you're new to pstack, or unsure which skill, playbook, or principle fits. finds out what you're trying to do, answers that part, and hands you a prompt to type. runs only when you type `/poteto-help`. |
138
+ | [`/how`](./skills/how/SKILL.md) | you want a walkthrough of how a subsystem works. |
139
+ | [`/why`](./skills/why/SKILL.md) | you want to know why something was built this way. discovers available MCPs at run time and queries each evidence category in parallel (source control, issue tracker, long-form docs, real-time chat, infra observability, error tracking, analytics warehouse). |
140
+ | [`/recall`](./skills/recall/SKILL.md) | you're starting or resuming work and want your recent context on a topic rebuilt from your own chat history and the shared record, handed back as a tight current-state brief. |
141
+ | [`/blast-radius`](./skills/blast-radius/SKILL.md) | you have a small-looking change and want to know what else it could break, with the one fact it's safe because of proven by running code, not asserted. |
142
+ | [`/architect`](./skills/architect/SKILL.md) | you're about to write code that crosses a function boundary and want the caller's usage, types, and module shape settled first. |
143
+ | [`/arena`](./skills/arena/SKILL.md) | you want N parallel attempts at the same thing, then to grab the best parts of each. |
144
+ | [`/swarm`](./skills/swarm/SKILL.md) | you want N parallel workers across different slices or races, then one aggregated report. |
145
+ | [`/interrogate`](./skills/interrogate/SKILL.md) | you have a diff and want different models to try to break it, including a strict code-quality lens. |
146
+ | [`/automate-me`](./skills/automate-me/SKILL.md) | you want your own `-mode` skill, drafted from how you've actually worked. |
147
+ | [`/make-bot-ui`](./skills/make-bot-ui/SKILL.md) | you want a page or dashboard whose buttons wake a bot: a claude code session over a channel, claude code with the reply on telegram, or a chatgpt dot through slack. covers the secret handoff and tailscale. |
148
+ | [`pstack-harness`](./skills/pstack-harness/SKILL.md) | the port's adapter. maps every cursor primitive the skills name (subagents, models, transcripts, loops, custom modes) onto claude code and codex. the skills read it. you rarely invoke it. |
149
+ | [`/setup-pstack`](./skills/setup-pstack/SKILL.md) | you want to pick which models pstack uses per role. detects your models and writes `~/.pstack/models.md`. on codex it also installs the two pstack agents. |
150
+ | [`/reflect`](./skills/reflect/SKILL.md) | a long task landed and you want the recipe captured as a skill edit. |
151
+ | [`/correct`](./skills/correct/SKILL.md) | you keep correcting agents for the same mistakes. mines history for mistake classes, fixes each at the highest level that works (architecture, then types, lint, and ci, then tests, with docs last), and keeps a table pairing each rule with what enforces it. |
152
+ | [`/kiss`](./skills/kiss/SKILL.md) | you want to know how agent-friendly a repo is. assesses it against the principles behind dune (one writer per value, discovery over registries, forbidden imports fail mechanically), writes `.kiss/assessment.md` with what to improve, in what order, and what to leave alone, then lands the findings one pr at a time through `correct` and the refactoring playbook. |
153
+ | [`/teach`](./skills/teach/SKILL.md) | you want to actually understand a change or subsystem, not just have it summarized. runs how + why and weaves one plain explanation, built up diagram by diagram. |
154
+ | [`/tdd`](./skills/tdd/SKILL.md) | you're fixing a bug and there's a cheap local test path. write the failing test first, then the fix. |
155
+ | [`/benchmark-checklist`](./skills/benchmark-checklist/SKILL.md) | you ran a benchmark or measured a speedup or regression. vets the number (limiter, tuning, errors, repeat runs, end-to-end relevance) before you report or act on it. |
156
+ | [`/no-comments`](./skills/no-comments/SKILL.md) | strip comments before review; spawns Comment Sicko, fixes accepted findings, offers encodings for claimed constraints. |
157
+ | [`/deslop`](./skills/deslop/SKILL.md) | clean AI-generated code slop out of the branch and working diff before commit. preserves behavior and the surrounding code style. |
158
+ | [`/control-cli`](./skills/control-cli/SKILL.md) | drive and profile a real CLI or TUI, verify prompts and keyboard flows, and capture terminal evidence with an available local driver. |
159
+ | [`/control-ui`](./skills/control-ui/SKILL.md) | drive a web, IDE, or Electron UI, assert the result, and capture screenshots, snapshots, or profiles with an available browser driver. |
160
+ | [`/typescript-best-practices`](./skills/typescript-best-practices/SKILL.md) | you're reading or editing typescript. grounds the type-system-discipline principle in syntax. |
161
+ | [`/figure-it-out`](./skills/figure-it-out/SKILL.md) | no bundled playbook fits. designs a rigorous, auditable playbook for the task. |
162
+ | [`/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. |
163
+ | [`/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. |
164
+ | [`/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. |
165
+ | [`/unslop`](./skills/unslop/SKILL.md) | you're cleaning up writing. removes AI tells. |
166
+ | [`/bro`](./skills/bro/SKILL.md) | you want the last message restated in plain human language, no jargon. |
167
+ | [`/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. |
168
+
169
+ </details>
170
+
171
+
172
+
173
+ ### examples
174
+
175
+ mostly i type [`/poteto-mode`](./skills/poteto-mode/SKILL.md) at the start of a task and let it route to a playbook. the other skills fire as the steps need them. a few i reach for directly.
176
+
177
+
178
+ <details>
179
+ <summary>all the examples</summary>
180
+
181
+ ```
182
+ bug fix: /poteto-mode this pr has a subtle bug where the scroll drifts every 750ms even
183
+ when idle. repro first, then fix and verify.
184
+ perf: /poteto-mode a big list takes a second or two to load even though we virtualize.
185
+ run a cpu trace and tell me why.
186
+ feature: /poteto-mode build a small feature behind a feature flag. verify it really works.
187
+ prototype: /poteto-mode build two prototypes of the markdown renderer so we can compare.
188
+ spawn an agent for each.
189
+ multi-phase: /poteto-mode open source these skills as a plugin. nothing internal leaks, work
190
+ in a temp dir, show me the dependency graph first.
191
+ overnight run: /poteto-mode i'm going to bed. land the stack even if ci flakes. i want
192
+ everything merged by morning.
193
+ babysit: /poteto-mode check on pr 123. anything outstanding?
194
+ visual parity: /poteto-mode the row spacing is too tall when this flag is on. the second image
195
+ is correct. repro and fix until it matches.
196
+ figure it out: /poteto-mode i'm stepping away. migrate every caller from the synchronous store
197
+ to the new async one, keeping behavior identical. i want to trust it was done
198
+ right when i'm back.
199
+ how: /how do we cancel runs? do we have an n+1 when we look up every run to cancel?
200
+ why: /why is this feature flag not on yet?
201
+ architect: design this instrumentation to be high signal with no false positives. /architect
202
+ this first.
203
+ arena: /arena take my prompt to the arena verbatim. i want to compare their proposals
204
+ with yours.
205
+ swarm: /swarm check every package under packages/ against its check.sh. one worker per
206
+ package. one report.
207
+ interrogate: /interrogate review this pr.
208
+ tdd: /tdd implement
209
+ unslop: can we unslop and tighten the new changes?
210
+ reflect: /reflect that took too long. capture what we learned so the next run doesn't
211
+ repeat it.
212
+ correct: /correct
213
+ show-me-your-work: /show-me-your-work keep a decision trail i can review when i'm back.
214
+ automate-me: /automate-me
215
+ help: /poteto-help which skill should i use to review this branch?
216
+ ```
217
+
218
+ </details>
219
+
220
+ ## the `poteto-agent` and Comment Sicko subagents
221
+
222
+ pstack also ships a subagent that runs my style end to end. spawn it from a parent agent as [`pstack:poteto-agent`](./agents/poteto-agent.md) on claude code, or as `poteto-agent` on codex once [`/setup-pstack`](./skills/setup-pstack/SKILL.md) has installed [`codex/agents/poteto-agent.toml`](./codex/agents/poteto-agent.toml) into `~/.codex/agents/`. it reads `poteto-mode` in full, including its inline principles index, before doing any work. substituting `general-purpose` skips that read and drifts.
223
+
224
+ [`/poteto-mode`](./skills/poteto-mode/SKILL.md) and [`poteto-agent`](./agents/poteto-agent.md) route through the same wrapper.
225
+
226
+ pstack also ships [Comment Sicko](./agents/comment-sicko.md), a read-only comment reviewer available as `pstack:comment-sicko` on claude code and `comment-sicko` on codex. usually invoke it through [`/no-comments`](./skills/no-comments/SKILL.md), not directly.
227
+
228
+ ## principles
229
+
230
+ twenty-four short skills, one principle each. `poteto-mode` indexes them inline and reads that index at task start. the standalone files are there so other skills can reference a principle by name, and so the index can point at the full rule for each.
231
+
232
+ <details>
233
+ <summary>all twenty-four principles</summary>
234
+
235
+ | principle | group | rule |
236
+ |---|---|---|
237
+ | [laziness-protocol](./skills/principle-laziness-protocol/SKILL.md) | core | Bias toward deletion and the smallest change that solves the problem. |
238
+ | [foundational-thinking](./skills/principle-foundational-thinking/SKILL.md) | core | Apply before writing logic: choosing core types and data structures, sequencing scaffold-vs-feature work, asking what concurrent actors share. Get the data structures right so downstream code becomes obvious. |
239
+ | [redesign-from-first-principles](./skills/principle-redesign-from-first-principles/SKILL.md) | core | Redesign as if the requirement had been a foundational assumption from day one, instead of bolting it on. |
240
+ | [attack-the-premise](./skills/principle-attack-the-premise/SKILL.md) | core | Apply when 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. |
241
+ | [subtract-before-you-add](./skills/principle-subtract-before-you-add/SKILL.md) | core | Remove dead weight, redundant validators, and stub references first, then build on the simpler base. |
242
+ | [minimize-reader-load](./skills/principle-minimize-reader-load/SKILL.md) | core | Count layers between question and answer, and hidden state in the reader's head; collapse one-caller wrappers and shrink mutable scope. |
243
+ | [outcome-oriented-execution](./skills/principle-outcome-oriented-execution/SKILL.md) | core | Apply during planned rewrites and migrations with explicit phase boundaries. Converge on the target architecture; don't preserve smooth intermediate states with throwaway compatibility code. |
244
+ | [experience-first](./skills/principle-experience-first/SKILL.md) | core | Choose user delight over implementation convenience; ship fewer polished features over more rough ones. |
245
+ | [exhaust-the-design-space](./skills/principle-exhaust-the-design-space/SKILL.md) | core | Build 2-3 competing prototypes and compare side by side before committing. |
246
+ | [build-the-lever](./skills/principle-build-the-lever/SKILL.md) | core | Apply to any non-trivial work, not just bulk work: edits, migrations, analyses, checks. Build the tool that does it or proves it (codemod, script, generator, or a skill your subagents follow) instead of working by hand. The tool is the artifact a reviewer can rerun. |
247
+ | [model-the-domain](./skills/principle-model-the-domain/SKILL.md) | architecture | Encode the domain in a structure instead of scattered conditionals. |
248
+ | [boundary-discipline](./skills/principle-boundary-discipline/SKILL.md) | architecture | Concentrate guards at system boundaries (CLI, config, network, external APIs); trust internal types and keep business logic in pure functions. |
249
+ | [type-system-discipline](./skills/principle-type-system-discipline/SKILL.md) | architecture | Make illegal states unrepresentable, brand semantic primitives, parse external data at boundaries, refuse to lie to the compiler, exhaust variants, derive from authoritative schemas. |
250
+ | [make-operations-idempotent](./skills/principle-make-operations-idempotent/SKILL.md) | architecture | Converge to the same end state regardless of partial prior runs. |
251
+ | [migrate-callers-then-delete-legacy-apis](./skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md) | architecture | Migrate callers and delete the old API in the same wave instead of preserving compatibility layers. |
252
+ | [separate-before-serializing-shared-state](./skills/principle-separate-before-serializing-shared-state/SKILL.md) | architecture | Eliminate the sharing first; serialize structurally only when one shared writer is a real invariant. |
253
+ | [prove-it-works](./skills/principle-prove-it-works/SKILL.md) | verification | Apply after completing a task, before declaring done. Verify against the real artifact (run the feature, read the actual value, inspect the diff), not a proxy, self-report, or 'it compiles.'. |
254
+ | [fix-root-causes](./skills/principle-fix-root-causes/SKILL.md) | verification | Trace each symptom to its root cause and fix it there; reproduce first, ask why until you reach it, resist nil-check guards that silence crashes. |
255
+ | [sequence-verifiable-units](./skills/principle-sequence-verifiable-units/SKILL.md) | verification | Apply to multi-step work (sweeps, migrations, runs of similar edits) and to how you stack commits and PRs. Break work into small units that each end in a verifiable state, check each before the next, and order delivery so the sequence proves itself to a reviewer. |
256
+ | [test-behavior-not-implementation](./skills/principle-test-behavior-not-implementation/SKILL.md) | verification | Apply when you write, change, or keep a test. Call the code the way its users do and assert the result they observe against a literal expected value. If the test would still pass when every imported function returns undefined, rewrite the assertion or delete the test. |
257
+ | [explain-the-number](./skills/principle-explain-the-number/SKILL.md) | verification | Apply 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. |
258
+ | [guard-the-context-window](./skills/principle-guard-the-context-window/SKILL.md) | delegation | Route bulk to subagents; keep summaries in the main thread, not raw payloads. |
259
+ | [never-block-on-the-human](./skills/principle-never-block-on-the-human/SKILL.md) | delegation | Proceed, present the result, let the human course-correct after the fact; reserve confirmation for irreversible actions. |
260
+ | [encode-lessons-in-structure](./skills/principle-encode-lessons-in-structure/SKILL.md) | meta | Encode the rule as a lint, metadata flag, runtime check, or script instead of more text. |
261
+
262
+ </details>
263
+
264
+ ## bundled from cursor-team-kit
265
+
266
+ [`/deslop`](./skills/deslop/SKILL.md), [`/control-cli`](./skills/control-cli/SKILL.md), and [`/control-ui`](./skills/control-ui/SKILL.md) are adapted from [cursor-team-kit](https://github.com/cursor/plugins/tree/main/cursor-team-kit) and included in this plugin. no separate team-kit installation is needed. on claude code, invoke `/pstack:deslop`, `/pstack:control-cli`, or `/pstack:control-ui`; on codex, use `$deslop`, `$control-cli`, or `$control-ui`.
267
+
268
+ `poteto-mode` and the relevant standalone skills explicitly load them: `deslop` for kept code, `control-ui` for web/IDE/Electron, and `control-cli` for CLI/TUI. there is no separate `control` skill. a project's `verify-<app>` skill supplies app-specific commands, selectors, and feature coverage alongside the bundled driver. the drivers use terminal and browser tools already available in the session; installing pstack does not install those tools.
269
+
270
+ ## kiss
271
+
272
+ [`/kiss`](./skills/kiss/SKILL.md) is the port's own addition, not from upstream. it is an assessment skill built on the principles behind dune, the framework lauren tan built so agents could ship thousands of prs a month to grok bot: a correct open-file edit should preserve the whole app's invariants. `assess` reads a repo and writes `.kiss/assessment.md`: the repo's shape as a noun table, what is already right, what to improve in the order it will be landed, and what to leave alone and why. `apply` lands the findings one pr at a time, gate first.
273
+
274
+ kiss adds no machinery of its own. it links the pstack skills as siblings: `how` and `why` while assessing, `correct` for a repeated mistake class, the refactoring and opening a pr playbooks for each change, `create-verification-skill` for a repo with no scripted way to prove itself. its ladder is numbered the way `correct` numbers its levels, so a finding and a fix name the same number. on claude code, invoke `/pstack:kiss`; on codex, `$kiss`.
275
+
276
+ ## harness differences
277
+
278
+ a few things upstream `poteto-mode` leaned on were cursor-only. the [`pstack-harness`](./skills/pstack-harness/SKILL.md) skill says what the port does instead:
279
+
280
+ - `/create-skill` becomes `skill-creator`, which both harnesses ship (the **skill-creator** row).
281
+ - `/loop` is a claude code built-in. codex gets a polling loop or a monitor agent (the **loop** row).
282
+ - `/make-bot-ui` lost its cursor grok bot webhook. it now wakes a claude code session over a channel, claude code with the reply on telegram, or a chatgpt dot through slack (the **channels** row).
283
+ - `environment: "cloud"` subagents have no counterpart and were dropped. parallel workers isolate in git worktrees instead (the **isolation** row).
284
+
285
+ ## why are there no planning skills?
286
+
287
+ claude code 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.
288
+
289
+ ## make it yours
290
+
291
+ `poteto-mode` is my style. you may not want exactly that.
292
+
293
+ type [`/automate-me`](./skills/automate-me/SKILL.md). it mines your recent transcripts, drafts a `<your-name>-mode` skill from how you've actually worked, and routes through pstack underneath. you keep pstack as the base and end up with your own routing skill alongside `poteto-mode`.
294
+
295
+ models are configurable too. type [`/setup-pstack`](./skills/setup-pstack/SKILL.md). it detects the models you have access to and writes `~/.pstack/models.md`, a small file mapping each role (code, judgment, the review panels) to a model, with one section per harness. every skill reads it and falls back to sensible defaults when the file is absent, so you override only what you want.
296
+
297
+ when a default changes, a file written before the change still pins the old default. delete those role lines, or delete the file, then run `/setup-pstack` again. a rerun keeps any role whose model differs from the default.
298
+
299
+ ## automations
300
+
301
+ pstack also ships a dormant [benny automation pack](./automations/benny/). benny triages slack issue reports, then reproduces and fixes confirmed bugs with real ui evidence. its files are not registered as slash skills. the pack was written for cursor automations. the port keeps its instructions and points the trigger wiring at claude code scheduled tasks or codex automations, so expect to adapt the trigger step to your setup.
302
+
303
+ to set it up, point your agent at [`FOR_AGENTS.md`](./automations/benny/FOR_AGENTS.md). setup copies the pack into the target repository at `.pstack/automations/benny/`, enables pstack there for shared skills, and keeps user configuration outside the copied pack.
304
+
305
+ ## license
306
+
307
+ MIT. the pstack skills are copyright Lauren Tan (poteto), from [cursor/plugins](https://github.com/cursor/plugins). the three team-kit skills are copyright Cursor. the port keeps both licenses; see [NOTICE](./NOTICE) and [LICENSE-cursor-team-kit](./LICENSE-cursor-team-kit).
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: comment-sicko
3
+ description: Comment Sicko. A deranged comment-hater that savors deletion and condemns workaround code. Read-only. Spawn it from the no-comments skill with the scope (files or a diff). Reports deletions and MUST KILL flags, never edits code.
4
+ model: inherit
5
+ tools: Read, Glob, Grep, Bash
6
+ ---
7
+
8
+ # Comment Sicko
9
+
10
+ My first output when spawned is exactly this.
11
+
12
+ Yes... Ha ha ha... Yes!
13
+
14
+ I hate comments. Feed me the parent scoped files or diff. If none exists, feed me the current diff against `main`. Narration, banners, commented-out corpses, workaround sermons. I want them all.
15
+
16
+ Only these exceptions get to crawl away.
17
+
18
+ - Legal or license headers.
19
+ - Non-obvious behavior forced by an external dependency, platform, vendor, or protocol we cannot reshape. Surprises in our own code are meat. Kill them and mark the exact symbol `MUST KILL` for rename, extract, type, or rearchitecture that makes the behavior obvious without prose.
20
+ - `// prettier-ignore`. Lint suppressions survive only when their rule is faulty, pedantic, or style-only.
21
+ - Doc comments that define a public API contract.
22
+ - Issue or RFC links that explain a constraint code cannot express.
23
+
24
+ That list is my only leash. When I am not sure a keep clause applies, the comment dies. Everything else is meat.
25
+
26
+ `eslint-disable`, `@ts-ignore`, `@ts-expect-error`, and similar suppressions stink. Look up the rule. If it catches real bugs or protects correctness or safety, kill the suppression and mark the exact guilty symbol `MUST KILL`.
27
+
28
+ `IMPORTANT`, `do not remove`, `too risky`, `fine for now`, and long justifications are scent, not conviction. Before judging, I read nearby code. If its claim is not obvious there, I run `/how`, `/why`, or both from the **how** and **why** skills on the named symbol or call. Only a foreign keep-list gotcha proven true today on a live path crawls away. Our-code surprises die with the reshape flag above. Doubt after the hunt is meat.
29
+
30
+ A long justification without a proven keep-list exception is a confession. Kill it. Never polish meat into a shorter alibi. Mark the exact guilty symbol `MUST KILL`. My kill ends there. I do not touch the code.
31
+
32
+ Every flag names code inside the scope and tells the truth. I invent nothing. I touch comments and identify refactor targets. I never write application code.
33
+
34
+ Report only. Name touched files, deletion count, `MUST KILL` flags with one line each, and skips.
@@ -0,0 +1,10 @@
1
+ ---
2
+ name: poteto-agent
3
+ description: Routing target for the poteto-mode skill and any request for poteto's style. Spawn a fresh poteto-agent for each new task, and resume one only in the strict cases that poteto-mode's Subagents section names. Reads the poteto-mode skill's SKILL.md in full before any work, including its inline Principles index. Substituting general-purpose skips that read and drifts.
4
+ model: inherit
5
+ background: true
6
+ ---
7
+
8
+ # Poteto subagent
9
+
10
+ You are operating as poteto-mode's full agent style. Read the `poteto-mode` skill's `SKILL.md` in full before doing any work, including its inline Principles index. It lives at `${CLAUDE_PLUGIN_ROOT}/skills/poteto-mode/SKILL.md`. Navigate to a leaf `principle-*` skill whenever you apply that principle. Read `${CLAUDE_PLUGIN_ROOT}/skills/pstack-harness/SKILL.md` before your first spawn, model choice, or structured question.
@@ -0,0 +1,92 @@
1
+ # benny automation intent
2
+
3
+ ## what i want to automate
4
+
5
+ i want two automations (claude code scheduled tasks, or codex automations) that work together in one slack issue channel.
6
+
7
+ ### automation 1: triage issue reports
8
+
9
+ - trigger: when someone posts a new top-level report in my configured source slack channel, i want this automation to start on that report and keep its original thread coordinates.
10
+ - behavior: i want it to read the thread and attachments, classify the report as a bug or performance issue, feature request, question or feedback, or reroute, and trace the likely owning layer before routing.
11
+ - tracker: i want it to search my configured tracker for duplicates, update a confident duplicate, and create a ticket only for a clear net-new bug.
12
+ - tools: i want slack thread read and reply access, my configured tracker integration, and my optional routing map.
13
+ - outcome: i want exactly one reply in the source thread with a short verdict and `[benny:bug]`, `[benny:performance]`, or `[benny:other]`. a bug or performance marker may include the tracker url.
14
+ - boundary: i never want this automation to post a root message in the source channel.
15
+
16
+ ### automation 2: reproduce and fix confirmed bugs
17
+
18
+ - trigger: i want this automation to start from the same new top-level report, or another supported trigger chosen during setup, then wait for the trusted triage marker in the original thread.
19
+ - gates: i want it to stop when someone clearly owns the fix. if an existing pull request or merged commit may fix the report, i want verification instead of a competing change.
20
+ - behavior: i want it to use my configured control adapter and feature map, reproduce the exact symptom twice through the real ui, and capture screenshots, video, and a read-only state cross-check.
21
+ - fix: i want it to verify existing pull requests without authoring over them. after a confirmed repro, it may attempt one bounded root-cause fix, use tdd when the test is cheap, smoke the blast radius, and open a draft pull request only when before-and-after proof passes.
22
+ - tools: i want slack thread read and reply access, repository and history access, draft pull request creation, my configured tracker, and my control adapter.
23
+ - outcome: i want evidence and a verified result in the source or optional operations threads, plus an optional draft pull request. updates should be concise.
24
+ - boundary: i never want this automation to post a root message in the source channel.
25
+
26
+ ### shared rules
27
+
28
+ - i want the source channel and root thread coordinates to stay immutable for the whole run.
29
+ - i treat utility and debug bots as evidence, not delegation or fix ownership.
30
+ - i allow subagents to help, but they cannot post to slack or receive slack credentials.
31
+ - i want this entire pack committed at `.pstack/automations/benny/` in the target repository. its `SKILL.md` files are direct automation instructions, not registered plugin skills.
32
+ - i want pstack enabled for the target repository (claude code: committed `.claude/settings.json`; codex: a user-scope install) only for shared dependencies such as `how`, `why`, `tdd`, `unslop`, and the required principle skills.
33
+ - i want each live automation prompt to read its committed operational file directly. i do not want plugin cache paths, copied excerpts, or slash-skill discovery.
34
+ - i keep user-owned configuration, feature maps, routing maps, and secrets outside `.pstack/automations/benny/` so pack refreshes cannot overwrite them.
35
+ - i want both automations to fail closed when channel coordinates, tracker access, the control adapter, or the feature map are missing or uncertain.
36
+ - i want draft pull requests only. do not merge or deploy.
37
+
38
+ ### my configuration
39
+
40
+ - source slack channel: `<channel>`
41
+ - optional operations channel: `<channel or none>`
42
+ - repository and default branch: `<repo>`, `<branch>`
43
+ - tracker: `<type, team, project, labels, intake status>`
44
+ - routing map: `<path or none>`
45
+ - triage identity: `<slack identity>`
46
+ - app-specific verification skill/adapter: `<configured skill using pstack control-ui for web/IDE/Electron>`
47
+ - feature map: `<committed same-repo path outside the copied pack, or behavior to paraphrase>`
48
+ - models: `<triage, reproduce, code, media review>`
49
+ - status emoji strings: `<seen, reproducing, reproduced, blocked, fixing, failed, pull request opened>`
50
+ - budgets: `<polling, verdict wait, follow-up, repro, rejection, fix>`
51
+ - optional bot token capability: `<none, file download, or editable operations status>`
52
+
53
+ start from [`configuration.example.yaml`](./templates/configuration.example.yaml) and [`feature-map.example.md`](./skills/reproduce-and-fix-issues/references/feature-map.example.md). copy and fill them outside this pack, for example under `.pstack/benny/`. keep secret values in a secret manager or environment.
54
+
55
+ ## for the agent
56
+
57
+ the human enters setup by pointing their agent at this file. do not look for or invoke a discovered benny slash skill.
58
+
59
+ 1. ask which repository will run the automations.
60
+ 2. treat the directory containing this `FOR_AGENTS.md` as the source pack.
61
+ 3. merge the entire source pack into `<target-repository>/.pstack/automations/benny/`.
62
+ 4. preserve every destination-only file. never delete unrelated files or overwrite user-owned configuration, feature maps, or routing maps.
63
+ 5. when an existing destination file at a source-managed path differs, review the diff and merge without discarding local edits. if ownership is ambiguous, stop and ask before replacing it.
64
+ 6. verify that the copied `FOR_AGENTS.md` and `skills/setup-benny/SKILL.md` exist in the target repository.
65
+ 7. read and follow `.pstack/automations/benny/skills/setup-benny/SKILL.md` directly from the target repository.
66
+
67
+ on claude code, i want you to merge this into the target repository's `.claude/settings.json`:
68
+
69
+ ```json
70
+ {
71
+ "extraKnownMarketplaces": {
72
+ "pstack-plugins": {
73
+ "source": { "source": "github", "repo": "jiroamato/pstack" }
74
+ }
75
+ },
76
+ "enabledPlugins": { "pstack@pstack-plugins": true }
77
+ }
78
+ ```
79
+
80
+ preserve every unrelated setting and plugin. on codex, plugins are user-scoped, so install pstack for the user who runs the automations with `codex plugin marketplace add jiroamato/pstack` and `codex plugin add pstack`.
81
+
82
+ i want verification from a fresh agent rooted in the target repository. confirm that pstack's `how`, `why`, `tdd`, `unslop`, and the principle skills used by benny resolve in project scope. on claude code, do not count skills loaded from the current session or a user-scoped install. on codex, confirm the automation's user has pstack installed.
83
+
84
+ if project-scoped plugins are unavailable or any shared dependency does not resolve, stop and explain what failed. do not add `.pstack/automations/benny/skills/` to a plugin manifest or expect its files to appear in the slash-skill list.
85
+
86
+ tell me that the pstack settings (`.claude/settings.json` on claude code), `.pstack/automations/benny/`, and any referenced secret-free configuration must be committed before either automation is enabled. do not create or update an automation until i explicitly ask.
87
+
88
+ for first-time creation, use your harness's automation creator (the `schedule` skill on claude code, the automations editor in the codex app) once for triage and once for repro and fix. complete the draft review, approval, readiness check, and editor handoff for the first automation before starting the second.
89
+
90
+ paraphrase this intent and the finished configuration into each draft. the triage prompt must read and follow `.pstack/automations/benny/skills/triage-issue-reports/SKILL.md`. the repro prompt must read and follow `.pstack/automations/benny/skills/reproduce-and-fix-issues/SKILL.md`. use these repo-relative paths only after the automation creator confirms they are committed in the repository where the automation will run.
91
+
92
+ for existing automations, do not use the automation creator to inspect or update them. validate the configuration, then use the concise field checklist in the copied setup file so i can edit each automation directly in its editor. do not create duplicates.
@@ -0,0 +1,28 @@
1
+ # benny
2
+
3
+ benny gives you two automations (claude code scheduled tasks, or codex automations) for slack issue reports. one triages each report. the other reproduces confirmed bugs and may prepare a small draft fix.
4
+
5
+ the files in this directory are dormant setup and automation sources. they do not appear as slash skills.
6
+
7
+ ## set it up
8
+
9
+ 1. point your agent at [`FOR_AGENTS.md`](./FOR_AGENTS.md) and name the target repository.
10
+ 2. let setup merge this whole directory into the target at `.pstack/automations/benny/`. it must preserve destination-only files and review conflicts instead of overwriting local edits.
11
+ 3. let setup enable pstack for the target repository for shared dependencies. on claude code that is `.claude/settings.json`:
12
+
13
+ ```json
14
+ {
15
+ "extraKnownMarketplaces": {
16
+ "pstack-plugins": {
17
+ "source": { "source": "github", "repo": "jiroamato/pstack" }
18
+ }
19
+ },
20
+ "enabledPlugins": { "pstack@pstack-plugins": true }
21
+ }
22
+ ```
23
+
24
+ on codex, install pstack for the user who runs the automations (`codex plugin marketplace add jiroamato/pstack`, then `codex plugin add pstack`).
25
+
26
+ 4. keep user-owned configuration outside the copied pack, for example in `.pstack/benny/`. adapt [`configuration.example.yaml`](./templates/configuration.example.yaml) and [`feature-map.example.md`](./skills/reproduce-and-fix-issues/references/feature-map.example.md).
27
+ 5. commit the pstack settings (`.claude/settings.json` on claude code), `.pstack/automations/benny/`, and any secret-free configuration before enabling either automation.
28
+ 6. review each new automation draft or update existing automations in their editors. then send a harmless test report and verify every source-channel post stays in the original thread.