Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions pstack/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence.",
"author": {
"name": "Lauren Tan"
},
"homepage": "https://github.com/cursor/plugins/tree/main/pstack",
"repository": "https://github.com/cursor/plugins",
"license": "MIT",
"keywords": [
"pstack",
"poteto-mode",
"workflow",
"principles",
"agent-style",
"subagents",
"unslop"
],
"name": "pstack-plugin",
"version": "0.15.17",
"skills": "./skills/",
"interface": {
"displayName": "pstack",
"shortDescription": "Engineering workflows and principles",
"developerName": "Lauren Tan",
"category": "Developer Tools",
"websiteURL": "https://github.com/cursor/plugins/tree/main/pstack"
}
}
4 changes: 4 additions & 0 deletions pstack/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# pstack

[Codex packaging](./docs/guide/codex-packaging.md) exposes these same skills
with explicit-only invocation metadata. The workflow instructions remain
the Cursor originals.

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.

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.
Expand Down
44 changes: 44 additions & 0 deletions pstack/docs/guide/codex-packaging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Codex packaging

The `.codex-plugin/plugin.json` entry point exposes the existing `skills/`
tree as `pstack-plugin`. Cursor continues to use `.cursor-plugin/plugin.json`
and the `pstack` namespace.

Skills marked `disable-model-invocation: true` also carry Codex's
`policy.allow_implicit_invocation: false` in `agents/openai.yaml`. They remain
available for explicit selection without entering Codex's automatic skill
catalog. `setup-pstack` retains automatic invocation.

A personal Codex marketplace can point to the package without copying or
rewriting its skills:

```json
{
"name": "pstack-plugin",
"source": {
"source": "git-subdir",
"url": "https://github.com/cursor/plugins.git",
"path": "pstack",
"ref": "main"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}
```

This adds discovery and invocation metadata. The original workflows still
refer to Cursor facilities and model availability; the manifest does not
register Cursor agents, hooks or automation examples in Codex.

When adding skills or changing their invocation policy, run from the
repository root:

```sh
python3 pstack/scripts/check-codex-package.py
```

The check fails when a skill's Codex policy differs from its source flag.
It does not exercise the workflows or establish cross-host runtime parity.
26 changes: 26 additions & 0 deletions pstack/scripts/check-codex-package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env python3
"""Check that Codex preserves the invocation policy declared by each skill."""
import json
from pathlib import Path
import re

root = Path(__file__).resolve().parents[1]
manifest = json.loads((root / '.codex-plugin/plugin.json').read_text())
cursor = json.loads((root / '.cursor-plugin/plugin.json').read_text())
assert manifest['name'] == 'pstack-plugin'
assert manifest['version'] == cursor['version'], 'Keep the two manifest versions aligned'
assert manifest['skills'] == './skills/'
manual = 0
skills = sorted((root / 'skills').glob('*/SKILL.md'))
assert skills, 'No skills found'
for path in skills:
header = path.read_text().split('---', 2)[1]
explicit = bool(re.search(r'^disable-model-invocation:\s*true\s*$', header, re.M))
sidecar = path.parent / 'agents/openai.yaml'
text = sidecar.read_text() if sidecar.exists() else ''
match = re.search(r'^ allow_implicit_invocation:\s*(true|false)\s*$', text, re.M)
implicit = not match or match.group(1) == 'true'
assert implicit != explicit, f'Invocation policy differs: {path.parent.name}'
manual += explicit
assert not any(k in manifest for k in ('agents', 'hooks', 'mcpServers', 'apps'))
print(f'{len(skills)} skills: {manual} explicit-only, {len(skills) - manual} automatic')
2 changes: 2 additions & 0 deletions pstack/skills/architect/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/arena/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/automate-me/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/benchmark-checklist/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/blast-radius/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/bro/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/correct/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/create-verification-skill/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/figure-it-out/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/how/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/interrogate/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/ketchup/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/maintain-verification-skill/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/make-bot-ui/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/no-comments/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/poteto-help/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/poteto-mode/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-attack-the-premise/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-build-the-lever/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-experience-first/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-explain-the-number/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-fix-root-causes/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-laziness-protocol/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-model-the-domain/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/principle-prove-it-works/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/recall/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/reflect/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/show-me-your-work/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/swarm/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/tdd/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/teach/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/technical-writing/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/typescript-best-practices/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/unslop/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false
2 changes: 2 additions & 0 deletions pstack/skills/why/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
policy:
allow_implicit_invocation: false