Problem
Open Pstack needs a clear home for project-authored features such as the new triage-ticket skill. The plugin currently loads one shared native tree from plugins/pstack/skills/, and the repository already places independently authored and non-pstack imports such as babysit, deslop, and fix-ci directly beside upstream skills. A nested skills/extras/ category would encode provenance in the runtime path and would not match the existing direct-child discovery and local-linking model.
The current local triage-ticket implementation also cannot be copied into the public plugin unchanged. It calls /linear-workflow and /pp-linear, which Open Pstack does not ship, and it assumes linear-pp-cli plus specific Linear state and label conventions.
Direction
Treat Open Pstack-authored skills as first-class plugin skills. Put each one directly at plugins/pstack/skills/<name>/. Track whether a skill came from Cursor pstack, another attributed source, or Open Pstack itself in NOTICE.md, CHANGES.md, UPSTREAM.md, and the technical reference, not through an extras directory.
Use a separate sibling plugin only when a feature genuinely needs an independent install, dependency set, or namespace. Do not create a nested skills/extras/ tree.
Keep the current local triage-ticket skill in the personal skill layer until its private Linear dependencies are removed or made public and installable. Once that release boundary is satisfied, it belongs in the flat pstack skill tree, not in a sibling plugin.
Acceptance criteria
- After the fresh-install dependency boundary is satisfied, add
triage-ticket as plugins/pstack/skills/triage-ticket/, with its runtime references and script kept inside that skill directory.
- Keep one shared skill implementation for Claude Code and Codex. Resolve harness primitives at the existing mapping boundaries rather than adding harness-specific copies.
- Remove dependencies on private or user-local skill paths. The released skill must either contain the required Linear workflow policy itself or depend only on public, documented components that a fresh Open Pstack user can install.
- Preserve explicit invocation only and the one-way
TRIAGE READY or TRIAGE STOP handoff contract.
- Document the skill as Open Pstack-authored in the provenance and change records, add it to the skill reference, and update hard-coded skill counts.
- Move the skill's Python tests and fixtures into the repository test layer, run them in CI, and validate every referenced runtime file and cross-skill route.
- Install the exact candidate in Claude Code and Codex and exercise the user-visible triage entry point before merge. Static validation alone is insufficient.
- Do not add
skills/extras/, a second copy of the skill, or a compatibility wrapper.
Source refs
plugins/pstack/.codex-plugin/plugin.json points discovery at ./skills/.
UPSTREAM.md requires one shared plugins/pstack/skills/ tree.
docs/reference.md describes the native skill tree as the only workflow source and records existing non-upstream additions under "What's added."
- The local proposal reviewed on 2026-08-25 is
~/.codex/skills/triage-ticket/; its SKILL.md names the unresolved /linear-workflow and /pp-linear dependencies.
- Surfaced by the 2026-08-25 Open Pstack feature-placement discussion.
Problem
Open Pstack needs a clear home for project-authored features such as the new
triage-ticketskill. The plugin currently loads one shared native tree fromplugins/pstack/skills/, and the repository already places independently authored and non-pstack imports such asbabysit,deslop, andfix-cidirectly beside upstream skills. A nestedskills/extras/category would encode provenance in the runtime path and would not match the existing direct-child discovery and local-linking model.The current local
triage-ticketimplementation also cannot be copied into the public plugin unchanged. It calls/linear-workflowand/pp-linear, which Open Pstack does not ship, and it assumeslinear-pp-cliplus specific Linear state and label conventions.Direction
Treat Open Pstack-authored skills as first-class plugin skills. Put each one directly at
plugins/pstack/skills/<name>/. Track whether a skill came from Cursor pstack, another attributed source, or Open Pstack itself inNOTICE.md,CHANGES.md,UPSTREAM.md, and the technical reference, not through anextrasdirectory.Use a separate sibling plugin only when a feature genuinely needs an independent install, dependency set, or namespace. Do not create a nested
skills/extras/tree.Keep the current local
triage-ticketskill in the personal skill layer until its private Linear dependencies are removed or made public and installable. Once that release boundary is satisfied, it belongs in the flat pstack skill tree, not in a sibling plugin.Acceptance criteria
triage-ticketasplugins/pstack/skills/triage-ticket/, with its runtime references and script kept inside that skill directory.TRIAGE READYorTRIAGE STOPhandoff contract.skills/extras/, a second copy of the skill, or a compatibility wrapper.Source refs
plugins/pstack/.codex-plugin/plugin.jsonpoints discovery at./skills/.UPSTREAM.mdrequires one sharedplugins/pstack/skills/tree.docs/reference.mddescribes the native skill tree as the only workflow source and records existing non-upstream additions under "What's added."~/.codex/skills/triage-ticket/; itsSKILL.mdnames the unresolved/linear-workflowand/pp-lineardependencies.