{"id":4421,"external_id":"plugins_6a85a87df50c8191bd7f010bb7b17794","name":"pstack-plugin","display_name":"pstack","developer":"FetchUpstream","category":"Developer Tools","listing_language":"en","listing_language_details":{"method":"cld-0.13.0/listing-v1","reliable":true,"detected_at":"2026-10-01T13:22:04Z","input_sha256":"9f93f6a09efe192a968d3a17fcfc8f281c0ec71c086844d25038710f360b4d52","source_fields":["release.description","release.interface.short_description","release.interface.long_description"]},"version":"0.2.0","skill_count":26,"first_seen_at":"2026-09-30T22:02:35.000Z","last_seen_at":"2026-10-03T18:00:01.200Z","last_changed_at":"2026-09-30T22:02:35.000Z","install_count":null,"search_matches":[],"research_summary":null,"research_reviewed_at":null,"metadata":{"canonical_app_id":null,"connector_id":null,"created_at":"2026-08-19T13:05:42.551766Z","discoverability":"UNLISTED","id":"plugins_6a85a87df50c8191bd7f010bb7b17794","is_template":false,"name":"pstack-plugin","release":{"app_ids":[],"app_manifest":null,"app_templates":[],"description":"An unofficial ChatGPT port of pstack workflows.","display_name":"pstack","id":"pluginrel_2f142449c7f8819196a86dbe0fa1e7d2","interface":{"brand_color":null,"capabilities":[],"category":"Developer Tools","composer_icon_dark_url":null,"composer_icon_url":"https://files.openai.com/content?id=file_0000000074e88246b370140e326b3a8f","default_prompt":"Explain how this subsystem works. Trace the code flow and flag the parts most likely to confuse developers.","default_prompts":["Explain how this subsystem works. Trace the code flow and flag the parts most likely to confuse developers.","Review this PR for blast radius. Find what could break outside the diff and what still needs verification.","Rewrite this to sound human. Keep the meaning and tone, but remove AI tells, filler, and generic phrasing."],"developer_name":"FetchUpstream","logo_url":"https://files.openai.com/content?id=file_00000000835481f49522c515d100f5e5","logo_url_dark":null,"long_description":"An unofficial ChatGPT port of pstack, providing rigorous reusable workflows for engineering, reasoning, review, and writing.","plugin_category_id":"developer tools","privacy_policy_url":null,"screenshot_urls":[],"short_description":"Engineering agent workflows","terms_of_service_url":null,"website_url":"https://github.com/FetchUpstream/pstack-plugin"},"keywords":["pstack","workflow","engineering","writing","unslop"],"onboarding_skill_name":null,"requires_local_executor":false,"skills":[{"description":"Design types, interfaces, module boundaries, data flow, and ownership before implementation. Use for 'architect this', 'design this', API or domain modeling, refactors, new subsystems, or non-trivial changes where choosing the wrong shape would make the implementation harder.","interface":{"brand_color":null,"default_prompt":null,"display_name":"architect","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Design types, interfaces, module boundaries, data flow, and ownership before implementation. Use for 'architect this', 'design this', API or domain modeling, refactors, new subsystems, or non-trivial changes where choosing the wrong shape would make the implementation harder."},"name":"architect","plugin_release_skill_id":"pluginrsk_6a85ba1e3e7c8191a0af935b9b69fc5d"},{"description":"Find what a code change could break outside the diff by tracing callers, contracts, shared data, external integrations, lifecycle behavior, and downstream consumers. Use for 'blast radius of X', 'what could this break', risky PR reviews, regression analysis, and checking whether a small change is actually isolated.","interface":{"brand_color":null,"default_prompt":null,"display_name":"blast-radius","icon_large_url":null,"icon_small_url":null,"iconography":"radar","short_description":"Find what a code change could break outside the diff by tracing callers, contracts, shared data, external integrations, lifecycle behavior, and downstream consumers. Use for 'blast radius of X', 'what could this break', risky PR reviews, regression analysis, and checking whether a small change is actually isolated."},"name":"blast-radius","plugin_release_skill_id":"pluginrsk_6a85ba177ff0819191527b365bbc794b"},{"description":"Restate the last message in plain human language, with no jargon.","interface":{"brand_color":null,"default_prompt":null,"display_name":"bro","icon_large_url":null,"icon_small_url":null,"iconography":"chat","short_description":"Restate the last message in plain human language, with no jargon."},"name":"bro","plugin_release_skill_id":"pluginrsk_6a85ba1b8f0c8191abc682486a30606b"},{"description":"Explain how a codebase, subsystem, feature, API, or technical artifact works by inspecting the available source. Use for 'how does X work', code walkthroughs, runtime flows, architecture questions, ownership questions, and 'where should this live'.","interface":{"brand_color":null,"default_prompt":null,"display_name":"how","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"Explain how a codebase, subsystem, feature, API, or technical artifact works by inspecting the available source. Use for 'how does X work', code walkthroughs, runtime flows, architecture questions, ownership questions, and 'where should this live'."},"name":"how","plugin_release_skill_id":"pluginrsk_6a85ba16f9648191a4472d06b80f1e87"},{"description":"Apply when wiring validation, error handling, or framework adapters. Concentrate guards at system boundaries (CLI, config, network, external APIs); trust internal types and keep business logic in pure functions.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-boundary-discipline","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when wiring validation, error handling, or framework adapters. Concentrate guards at system boundaries (CLI, config, network, external APIs); trust internal types and keep business logic in pure functions."},"name":"principle-boundary-discipline","plugin_release_skill_id":"pluginrsk_6a85ba1800d0819191999956a59155e0"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-build-the-lever","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"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."},"name":"principle-build-the-lever","plugin_release_skill_id":"pluginrsk_6a85ba18bb288191bde04ef8604b7a3e"},{"description":"Apply when you catch yourself writing the same instruction a second time, or notice a recurring correction. Encode the rule as a lint, metadata flag, runtime check, or script instead of more text.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-encode-lessons-in-structure","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"Apply when you catch yourself writing the same instruction a second time, or notice a recurring correction. Encode the rule as a lint, metadata flag, runtime check, or script instead of more text."},"name":"principle-encode-lessons-in-structure","plugin_release_skill_id":"pluginrsk_6a85ba1f7174819196b1fc78fe8300e3"},{"description":"Apply when facing a novel UI interaction or architectural decision with no precedent in the codebase. Build 2-3 competing prototypes and compare side by side before committing.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-exhaust-the-design-space","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when facing a novel UI interaction or architectural decision with no precedent in the codebase. Build 2-3 competing prototypes and compare side by side before committing."},"name":"principle-exhaust-the-design-space","plugin_release_skill_id":"pluginrsk_6a85ba1e7b888191a3d9024226dc7d8d"},{"description":"Apply when product, UX, or feature-scope tradeoffs come up. Choose user delight over implementation convenience; ship fewer polished features over more rough ones.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-experience-first","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when product, UX, or feature-scope tradeoffs come up. Choose user delight over implementation convenience; ship fewer polished features over more rough ones."},"name":"principle-experience-first","plugin_release_skill_id":"pluginrsk_6a85ba1c470c8191bde47055b1f6ab03"},{"description":"Apply when debugging. 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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-fix-root-causes","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"Apply when debugging. 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."},"name":"principle-fix-root-causes","plugin_release_skill_id":"pluginrsk_6a85ba1ec9f88191b82f0f16dd4598de"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-foundational-thinking","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"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."},"name":"principle-foundational-thinking","plugin_release_skill_id":"pluginrsk_6a85ba18d76081918680b363491057fc"},{"description":"Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries. Converge to the same end state regardless of partial prior runs.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-make-operations-idempotent","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries. Converge to the same end state regardless of partial prior runs."},"name":"principle-make-operations-idempotent","plugin_release_skill_id":"pluginrsk_6a85ba1a3e20819184fa18bd3698a819"},{"description":"Apply when introducing a new internal API while old callers still exist. Migrate callers and delete the old API in the same wave instead of preserving compatibility layers.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-migrate-callers-then-delete-legacy-apis","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when introducing a new internal API while old callers still exist. Migrate callers and delete the old API in the same wave instead of preserving compatibility layers."},"name":"principle-migrate-callers-then-delete-legacy-apis","plugin_release_skill_id":"pluginrsk_6a85ba1995608191b9c75d30ad5b5134"},{"description":"Apply when reviewing or shaping code that's hard to trace. Count layers between question and answer, and hidden state in the reader's head; collapse one-caller wrappers and shrink mutable scope.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-minimize-reader-load","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"Apply when reviewing or shaping code that's hard to trace. Count layers between question and answer, and hidden state in the reader's head; collapse one-caller wrappers and shrink mutable scope."},"name":"principle-minimize-reader-load","plugin_release_skill_id":"pluginrsk_6a85ba1affb0819180c7189ceaaa9f26"},{"description":"Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files. Encode the domain in a structure instead of scattered conditionals.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-model-the-domain","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when writing stateful logic, or when code branches a lot or repeats a shape assumption across files. Encode the domain in a structure instead of scattered conditionals."},"name":"principle-model-the-domain","plugin_release_skill_id":"pluginrsk_6a85ba198a008191b43325a14a547640"},{"description":"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.'","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-prove-it-works","icon_large_url":null,"icon_small_url":null,"iconography":"radar","short_description":"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.'"},"name":"principle-prove-it-works","plugin_release_skill_id":"pluginrsk_6a85ba18be4c81919913427706dc4beb"},{"description":"Apply when integrating a new requirement into an existing design. Redesign as if the requirement had been a foundational assumption from day one, instead of bolting it on.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-redesign-from-first-principles","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when integrating a new requirement into an existing design. Redesign as if the requirement had been a foundational assumption from day one, instead of bolting it on."},"name":"principle-redesign-from-first-principles","plugin_release_skill_id":"pluginrsk_6a85ba2340148191b71c55d57a778567"},{"description":"Apply when concurrent actors might write to the same file, branch, key, or state object. Eliminate the sharing first; serialize structurally only when one shared writer is a real invariant.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-separate-before-serializing-shared-state","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when concurrent actors might write to the same file, branch, key, or state object. Eliminate the sharing first; serialize structurally only when one shared writer is a real invariant."},"name":"principle-separate-before-serializing-shared-state","plugin_release_skill_id":"pluginrsk_6a85ba1e7f188191ab201f54fbed5ead"},{"description":"Apply when sequencing an addition, refactor, or rewrite. Remove dead weight, redundant validators, and stub references first, then build on the simpler base.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-subtract-before-you-add","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"Apply when sequencing an addition, refactor, or rewrite. Remove dead weight, redundant validators, and stub references first, then build on the simpler base."},"name":"principle-subtract-before-you-add","plugin_release_skill_id":"pluginrsk_6a85ba16fa88819197e90716433f4ba2"},{"description":"Apply when designing types, reviewing a function signature, or writing code in any statically-typed language. Make illegal states unrepresentable, brand semantic primitives, parse external data at boundaries, refuse to lie to the compiler, exhaust variants, derive from authoritative schemas.","interface":{"brand_color":null,"default_prompt":null,"display_name":"principle-type-system-discipline","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"Apply when designing types, reviewing a function signature, or writing code in any statically-typed language. Make illegal states unrepresentable, brand semantic primitives, parse external data at boundaries, refuse to lie to the compiler, exhaust variants, derive from authoritative schemas."},"name":"principle-type-system-discipline","plugin_release_skill_id":"pluginrsk_6a85ba17aa1881918f716dca1df9d435"},{"description":"Reconstruct recent working context from prior conversations, remembered context, and connected project sources, then give a concise current-state brief. Use for 'recall my work on X', 'catch me up', 'what have I been working on', 'where did I leave off', or before resuming earlier work.","interface":{"brand_color":null,"default_prompt":null,"display_name":"recall","icon_large_url":null,"icon_small_url":null,"iconography":"search","short_description":"Reconstruct recent working context from prior conversations, remembered context, and connected project sources, then give a concise current-state brief. Use for 'recall my work on X', 'catch me up', 'what have I been working on', 'where did I leave off', or before resuming earlier work."},"name":"recall","plugin_release_skill_id":"pluginrsk_6a85ba195cf48191a9f6d3fc151c228b"},{"description":"Explain a codebase, subsystem, feature, change, or technical idea so the user actually understands it. Use for 'teach me this', 'help me understand X', 'explain this change', 'walk me through this', or when the user wants more than a reference answer.","interface":{"brand_color":null,"default_prompt":null,"display_name":"teach","icon_large_url":null,"icon_small_url":null,"iconography":"chat","short_description":"Explain a codebase, subsystem, feature, change, or technical idea so the user actually understands it. Use for 'teach me this', 'help me understand X', 'explain this change', 'walk me through this', or when the user wants more than a reference answer."},"name":"teach","plugin_release_skill_id":"pluginrsk_6a85ba1bded88191bcbfb836268122ff"},{"description":"Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use for /technical-writing or when writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages.","interface":{"brand_color":null,"default_prompt":null,"display_name":"technical-writing","icon_large_url":null,"icon_small_url":null,"iconography":"pen","short_description":"Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use for /technical-writing or when writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages."},"name":"technical-writing","plugin_release_skill_id":"pluginrsk_6a85ba1d2a0c81918324d73d44a3c055"},{"description":"TypeScript best practices. Use when reading or editing any .ts or .tsx file.","interface":{"brand_color":null,"default_prompt":null,"display_name":"typescript-best-practices","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"TypeScript best practices. Use when reading or editing any .ts or .tsx file."},"name":"typescript-best-practices","plugin_release_skill_id":"pluginrsk_6a85ba1d71588191ac465529bb5b1560"},{"description":"Cut AI tells from any writing. Must always apply.","interface":{"brand_color":null,"default_prompt":null,"display_name":"unslop","icon_large_url":null,"icon_small_url":null,"iconography":"pen","short_description":"Cut AI tells from any writing. Must always apply."},"name":"unslop","plugin_release_skill_id":"pluginrsk_6a85ba1cbfe081919a874b82694655a1"},{"description":"Investigate why a codebase, feature, design decision, threshold, workaround, or architectural choice exists by tracing evidence across the sources available to ChatGPT. Use for 'why does X work this way', 'why did we choose Y', design rationale, regressions, postmortems, historical context, and tradeoff questions.","interface":{"brand_color":null,"default_prompt":null,"display_name":"why","icon_large_url":null,"icon_small_url":null,"iconography":"search","short_description":"Investigate why a codebase, feature, design decision, threshold, workaround, or architectural choice exists by tracing evidence across the sources available to ChatGPT. Use for 'why does X work this way', 'why did we choose Y', design rationale, regressions, postmortems, historical context, and tradeoff questions."},"name":"why","plugin_release_skill_id":"pluginrsk_6a85ba1b52448191811089595d079a53"}],"version":"0.2.0"},"scope":"GLOBAL","status":"ENABLED"},"research":null,"package_metadata":{"name":"pstack-plugin","author":{"name":"FetchUpstream"},"license":"MIT","sources":[{"path":".codex-plugin/plugin.json","sha256":"b0fbb962d8c220fdb1eaeea6d48c8655a496572c26f7a40bdf9e51ca73addcd8"}],"version":"0.2.0","keywords":["pstack","workflow","engineering","writing","unslop"],"artifact_id":16957,"observed_at":"2026-10-03T06:32:16Z","support_url":"https://github.com/FetchUpstream/pstack-plugin","field_sources":{"name":0,"author":0,"license":0,"version":0,"keywords":0,"support_url":0},"extraction_version":1,"conflicts_or_errors":[]}}