Skip to content
Merged
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
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
"name": "Ed Heltzel",
"url": "https://github.com/edheltzel"
},
"homepage": "https://github.com/edheltzel/pstack-for-omp",
"repository": "https://github.com/edheltzel/pstack-for-omp",
"homepage": "https://github.com/edheltzel/Do-Pstack",
"repository": "https://github.com/edheltzel/Do-Pstack",
"license": "MIT",
"keywords": ["pstack", "poteto-mode", "skills", "omp"]
}
21 changes: 15 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,20 +68,29 @@ GitButler (`but`) is the VCS. The main checkout is the `gitbutler/workspace` bra

## Native omp

Tell operators plugin-link only:
Tell operators GitHub marketplace:

- Install host via https://omp.sh/install if needed.
- From this package root: `omp plugin link ./`
- `omp plugin marketplace add edheltzel/Do-Pstack` then `omp plugin install pstack@pstack`
- This checkout / live RPC: `omp plugin link ./`
- Later sessions, any cwd: type `/` (`/skill:do-…`, sticky `/poteto-mode`)
- Do not marketplace. Do not copy `pstack.ts` into `~/.omp/agent/extensions/`.
- Do not keep a repo `.omp/skills` symlink. Sibling `skills/` is what plugin-link discovers.
- Do not copy `pstack.ts` into `~/.omp/agent/extensions/`.
- Do not keep a repo `.omp/skills` symlink. Sibling `skills/` is what the plugin discovers.

## Native Pi

Tell operators git install:

- `pi install git:github.com/edheltzel/Do-Pstack`
- This checkout: `pi install ./`
- Do not use `pi -e` as the install path.

## Native Claude Code

Tell operators plugin-first only:

- Manifest: `.claude-plugin/plugin.json`. Catalog: `.claude-plugin/marketplace.json`. Skills stay at plugin-root `skills/`, not inside `.claude-plugin/`.
- Install: `claude plugin marketplace add <checkout-or-edheltzel/pstack-for-omp>` then `claude plugin install pstack@pstack`.
- Install: `claude plugin marketplace add <checkout-or-edheltzel/Do-Pstack>` then `claude plugin install pstack@pstack`.
- This session only: `claude --plugin-dir ./`
- Slash skills: `/pstack:do-*`. Do not rename the `do-` skill set.
- Validate on a host with Claude Code: `claude plugin validate .`
Expand All @@ -101,7 +110,7 @@ npm test
| [extensions/AGENTS.md](extensions/AGENTS.md) | Factory `pstack.ts`; per-session poteto-mode |
| [e2e/AGENTS.md](e2e/AGENTS.md) | Static doctor/lint + Vitest; live RPC local-only via plugin-link |
| [skills/AGENTS.md](skills/AGENTS.md) | Skill tree; SKILL.md frontmatter `name` + `description` |
| [docs/AGENTS.md](docs/AGENTS.md) | original numbered `guide/`; first-run lives on README (omp plugin link + Claude plugin install) |
| [docs/AGENTS.md](docs/AGENTS.md) | original numbered `guide/` as an omp walkthrough; first-run lives on README (omp marketplace, pi git install, Claude plugin install) |
| [automations/AGENTS.md](automations/AGENTS.md) | Dormant Benny pack; not slash skills |
| [scripts/AGENTS.md](scripts/AGENTS.md) | `pstack sync`: vendor official skills from cursor/plugins into `skills/do-*` |

Expand Down
102 changes: 41 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,21 @@
╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
```

# pstack
# Do Pstack

> [!NOTE]
> EdHeltzel's pstack for omp
This is a native plugin for Oh-My-Pi but has support for Pi and Claude Code.

This package is an installable **plugin** for omp/Pi and Claude Code. Skills stay `do-*` on disk. omp exposes them as `/skill:do-…`. Claude Code exposes them as `/pstack:do-*`. Sticky `/poteto-mode` is the omp factory command.

It is not the Cursor plugin and not an official Cursor port.
All skills follow the `do-*` namespace, from my [Do-Skills repo](https://github.com/edheltzel/Do-Skills). You might hate it 😬.

## What pstack is

pstack is a Cursor-verified plugin of Lauren Tan ([@poteto](https://x.com/poteto)) skills.

- Source (a folder in `cursor/plugins`, not a standalone repo): https://github.com/cursor/plugins/tree/main/pstack
- Product README: https://github.com/cursor/plugins/blob/main/pstack/README.md
- User guide: https://github.com/cursor/plugins/blob/main/pstack/docs/guide/README.md

Those pages are the Cursor product. This README does not retell them.
pstack is a Cursor plugin by Lauren Tan ([@poteto](https://x.com/poteto)). See [Curor's repo](https://github.com/cursor/plugins/tree/main/pstack) for more info.

## Docs

- [The pstack guide](./docs/guide/README.md) — original numbered product tutorial (setup through recipes, plus images). On-disk skill links use `skills/do-*`. omp slash skills are `/skill:do-…`. Claude slash skills are `/pstack:do-*`. `/poteto-mode` stays unprefixed on omp.
- [The pstack guide](./docs/guide/README.md) — original numbered product tutorial (setup through recipes, plus images).

**pi** skill use `skills/do-*`. **omp** skills are `/skill:do-…`. **claude** skills are `/pstack:do-*`. `/poteto-mode` stays unprefixed on omp, becuase it is a native plugin.

## Automations

Expand All @@ -38,65 +31,60 @@ Setup starts at [`automations/benny/FOR_AGENTS.md`](./automations/benny/FOR_AGEN

## Load this plugin

Clone https://github.com/edheltzel/pstack-for-omp, then pick the host.

### omp / Pi
GitHub install. No clone required.

Install omp from https://omp.sh if needed (`curl -fsSL https://omp.sh/install | sh`). From the package root, one-time:
### omp

```
git clone https://github.com/edheltzel/pstack-for-omp.git
cd pstack-for-omp
omp plugin link ./
omp plugin marketplace add edheltzel/Do-Pstack
omp plugin install pstack@pstack
```

Later sessions (any cwd): start `omp`, type `/` (`/skill:do-…`, sticky `/poteto-mode`). Sibling `skills/` at the package root is what omp auto-discovers after link. Confirm with `omp plugin list`. Prove the link with `omp plugin doctor`. Update official skills with `pstack sync` (below).
This checkout: `omp plugin link ./`

Do not copy only `pstack.ts` into `~/.omp/agent/extensions/`. Do not marketplace-install this package on omp; local-link is the install path.
### Pi

omp docs: https://omp.sh/docs/plugins and https://omp.sh/docs/extension-authoring.

### Claude Code
```
pi install git:github.com/edheltzel/Do-Pstack
```

This checkout is the plugin root: `.claude-plugin/plugin.json` plus `skills/` and `agents/` beside it (not inside `.claude-plugin/`).
This checkout: `pi install ./`

From the package root, add this repo as a marketplace and install:
### Claude Code

```
claude plugin marketplace add /absolute/path/to/pstack-for-omp
claude plugin marketplace add /absolute/path/to/Do-Pstack
claude plugin install pstack@pstack
```

From GitHub: `claude plugin marketplace add edheltzel/pstack-for-omp` then `claude plugin install pstack@pstack`.

This session only (no install record):

```
claude --plugin-dir ./
claude plugin marketplace add edheltzel/Do-Pstack
claude plugin install pstack@pstack
```

This session only: `claude --plugin-dir ./`

Claude slash skills are namespaced: `/pstack:do-how`, `/pstack:do-poteto-mode`. Validate the layout with `claude plugin validate .`. Sticky `/poteto-mode` is omp-only; on Claude run `/pstack:do-poteto-mode`.

Claude plugin docs: https://code.claude.com/docs/en/plugins.
## Usage

1. On omp: `/poteto-mode` — enable sticky Poteto Mode for this conversation. Optional task arguments are passed through; this also sends `/skill:do-poteto-mode`.
2. Do your thing as usual. Just with pstack's flow and skills

## First steps
- `/poteto-mode` is persistent in omp with you execute `/new` or when you resume a conversation.

1. Install the host (omp from https://omp.sh, or Claude Code).
2. Load this plugin (see Load this plugin).
3. On omp: `/poteto-mode` — enable sticky Poteto Mode for this conversation. Optional task arguments are passed through; this also sends `/skill:do-poteto-mode`. On Claude: `/pstack:do-poteto-mode`.
4. Work as usual. On omp, resume an on conversation and it stays on. `/new` starts off.
5. `/poteto-mode off` (aliases: `disable`, `stop`) — disable this omp conversation.
3. `/poteto-mode off` (aliases: `disable`, `stop`)

If Poteto Mode was never turned on in this omp conversation, it is off. Mode is per conversation, not process-wide.
`/poteto-mode` is off by default

The TUI status reads `pstack: poteto mode` when on. Other omp surfaces may not show it.
please note: omp's TUI shows `pstack: poteto mode` when enabled.

## Commands

| Command | What it does |
|---|---|
| `/poteto-mode` | omp factory: enable sticky Poteto Mode for this conversation. Also sends `/skill:do-poteto-mode`. |
| `/poteto-mode off` | Disable this omp conversation. Aliases: `disable`, `stop`. |
| Command | What it does |
| ------------------ | ------------------------------------------------------------------------------------------------- |
| `/poteto-mode` | omp factory: enable sticky Poteto Mode for this conversation. Also sends `/skill:do-poteto-mode`. |
| `/poteto-mode off` | Disable this omp conversation. Aliases: `disable`, `stop`. |

That is the live omp extension command. It stays unprefixed. There is no worktree command. No `hooks/` tree. No `src/` tree. No Cursor marketplace APIs. Do not ship `commands/poteto-mode.md`.

Expand All @@ -108,29 +96,21 @@ That is the live omp extension command. It stays unprefixed. There is no worktre
- When on, a prompt needle prepends “Pstack Poteto Mode is on…”
- The TUI status reads `pstack: poteto mode` when on.
- Off aliases: `off`, `disable`, `stop`.
- No Cursor marketplace APIs. No `models.json` writer. No `hooks/` or `src/` tree.

## Update official skills

Official skills come from the Cursor pstack folder in [cursor/plugins](https://github.com/cursor/plugins/tree/main/pstack), not from `backnotprop/pstack` and not from skills.sh. From this package root:
Official skills come from the Cursor pstack folder in [cursor/plugins](https://github.com/cursor/plugins/tree/main/pstack):

```
npm run sync
```

Same command: `node scripts/pstack.mjs sync`. Dry-run: `npm run sync -- --dry-run`.

That pulls `pstack/skills/<name>` from `cursor/plugins` into the existing `skills/do-*` tree (YAML `name` gets the `do-` prefix). It does not create a second skill tree or install into agent skill directories. Diverged local omp forks stay unless you pass `--force`. This fork keeps `playbooks/shipping.md` deleted.

## Skills

Files under `skills/` are markdown prompts. They are not live omp functions or CLIs.

- omp, after `omp plugin link ./`: `/skill:do-<name>`
- Claude Code, after plugin install: `/pstack:do-<name>`
Same command: `node scripts/pstack.mjs sync`.
Dry-run: `npm run sync -- --dry-run`.

Examples: `/skill:do-create-verification-skill` (Claude: `/pstack:do-create-verification-skill`), `/skill:do-swarm`, `/skill:do-principle-build-the-lever`. Feature Map is a section in `do-create-verification-skill`, not a runner. Do not treat Feature Map, swarm, or Build the Lever as functions or CLIs.
That pulls `pstack/skills/<name>` from `cursor/plugins` into the existing `skills/do-*` tree (YAML `name` gets the `do-` prefix). It does not create a second skill tree or install into agent skill directories.

## License

MIT. omp is also MIT ([license](https://github.com/can1357/oh-my-pi/blob/main/LICENSE)).
I just follow omp's license but i think I need to do that?
omp is also MIT ([license](https://github.com/can1357/oh-my-pi/blob/main/LICENSE)).
10 changes: 5 additions & 5 deletions docs/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@

## Purpose

Human docs for this plugin. First-run is the README (`omp plugin link ./` and Claude `claude plugin install pstack@pstack`). The numbered guide is the original pstack product tutorial. This file must not teach a second omp mount story (`omp -e`) or a fake installer.
Human docs for this plugin. First-run is the README (omp marketplace `pstack@pstack`, `pi install git:github.com/edheltzel/Do-Pstack`, Claude `claude plugin install pstack@pstack`). The numbered guide is an omp walkthrough of the original pstack product tutorial. This file must not teach a second omp mount story (`omp -e`) or a fake installer.

## Ownership

- `guide/` — original numbered tutorial (01–10 plus images), ported from `cursor/plugins` `pstack/docs/guide/`.
- `guide/` — numbered walkthrough (01–10 plus images). Images still come from `cursor/plugins` `pstack/docs/guide/`.

## Local Contracts

- README owns first-run for both hosts: `omp plugin link ./` and Claude plugin install (`marketplace add` + `pstack@pstack`, or `claude --plugin-dir ./`). Do not add `docs/getting-started.md` or teach `omp -e` as an install path.
- README owns first-run: omp `marketplace add edheltzel/Do-Pstack` + `install pstack@pstack`, Pi `pi install git:github.com/edheltzel/Do-Pstack`, Claude plugin install (`marketplace add` + `pstack@pstack`, or `claude --plugin-dir ./`). Checkout path is `omp plugin link ./` / `pi install ./`. Do not add `docs/getting-started.md` or teach `omp -e` / `pi -e` as an install path.
- README may link the numbered guide.
- Guide on-disk skill links use `skills/do-*` so they resolve in this tree. Slash names in guide prose may still say `/how`; the live omp surface is `/skill:do-how`, Claude is `/pstack:do-how`. `/poteto-mode` stays unprefixed on omp.
- Setup guide (`01-setup.md`) matches `do-setup-pstack`: `/model` Roles and `/agents` only. Do not teach `pstack-models.mdc`.
- Operator install matches the root rail Native omp and Native Claude Code contracts.
- Operator install matches the root rail Native omp, Native Pi, and Native Claude Code contracts.

## Work Guidance

Port guide pages and images from upstream. Remap `../../skills/<name>/` to `../../skills/do-<name>/`. Agents tell operators plugin-link (omp) or plugin install (Claude).
Keep the omp walkthrough. Do not paste upstream Cursor install prose back over it. Remap `../../skills/<name>/` to `../../skills/do-<name>/`. Agents tell operators GitHub install (omp marketplace, `pi install git:…`, Claude plugin install).

## Verification

Expand Down
Loading
Loading