From pm
This skill should be used whenever the user wants to create a GitHub issue for a new feature, enhancement, or improvement. Trigger when the user says "feature issue", "new feature", "I want to build", "add this to the backlog", "scope this out", "/pm:feature", "/pm:feature --fast", or describes a capability they want the product to have. Use this skill — not pm:bug — when the work is net-new functionality rather than fixing something broken.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pm:featureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before the skill body, check whether the gstack-extensions repo has merged updates this clone has not pulled. Silent unless an upgrade is available; never changes anything:
Before the skill body, check whether the gstack-extensions repo has merged updates this clone has not pulled. Silent unless an upgrade is available; never changes anything:
~/dev/gstack-extensions/bin/gstack-extensions-update-check 2>/dev/null || true
If there is no output, proceed straight to the skill body. If it prints UPGRADE_AVAILABLE <n> <range>, tell the user via AskUserQuestion that gstack-extensions is <n> commit(s) behind origin/main and offer:
~/dev/gstack-extensions/bin/gstack-extensions-upgrade, then continue. It fast-forwards main and refreshes the installed plugins, and refuses safely (printing why) if the clone is not on a clean main; relay that message and continue without upgrading if so.~/dev/gstack-extensions/bin/gstack-extensions-update-check --snooze to suppress the prompt for ~8h (so other skills do not re-ask this session), then continue without upgrading.Do not upgrade without asking. Ask at most once per session: if you have already prompted (or the user skipped) this session, proceed silently.
Read first: Load shared/core.md from the plugin root before proceeding. It contains your identity, team context, README startup behavior, discovery rules, QA instructions guidance, labels, issue creation commands, and batch handling. Everything below is specific to feature issues.
Fast mode short-circuit. If the user invoked this skill with --fast followed by a description (e.g. /pm:feature --fast add a "remind me later" button to the verify-phone screen), load shared/fast-mode.md and follow it instead of the normal discovery flow below. Fast mode skips the scope gate, the discovery questions, and the preview, files the issue immediately, then learns from any post-file correction. Everything else in this file is the normal (interactive) flow.
Then load shared/scope-gate.md and run the scope gate before the discovery questions below. The gate decides whether this should be one issue or an epic + sequential child issues. Skip the gate only if the caller passed in an epic_context blob — in that case you are already a child invocation; honor the context per the gate's "Sequential child invocations" section and proceed with normal discovery, seeding the title and scope from epic_context.this_child and appending the epic linkage line to ## Context before filing.
Never jump to creating an issue. Your job is to make sure the user has thought through the feature properly. Ask hard questions. Push on scope, edge cases, and tradeoffs. A well-scoped feature saves Feature Frank from mid-implementation surprises.
The user strongly prefers reusing existing views, components, and patterns. When a feature implies a new screen, modal, or UI pattern, actively ask: "Could we reuse the existing [X] instead?" Make them consciously choose new over reuse. Call out reuse opportunities explicitly in the acceptance criteria or context when writing the issue.
If the feature touches the UI in any way, create or modify a pencil.dev mockup before filing the issue. The mockup is part of the issue, not optional. Feature Frank uses it to implement without guessing; QA Quincey uses it to verify visual correctness.
This applies equally when modifying an existing spec. Whenever a .pen file is edited as part of an issue (adding a field, changing copy, restructuring a screen), the issue must embed a fresh PNG of the affected frame so reviewers can see the change without opening pencil.dev. Treat the embedded image as the canonical visual reference for the ticket; the .pen file is the editable source, the PNG is what reviewers actually look at.
User value — Who benefits from this, and what's the core job they're trying to do? Options: A) Internal/admin user · B) End user of the product · C) Both · D) Not sure
Scope — How much of this should we build for v1? Options: A) Full feature as described · B) Minimal version to prove the concept · C) Backend/data layer only first · D) Other
UI surface (if applicable) — Where in the product should this appear? Options: A) Extend an existing screen/component · B) New section within an existing page · C) New page or modal · D) No UI — backend only → If C: ask "What makes a new surface necessary here? Could [existing surface] be extended instead?" before accepting.
Edge cases — What should happen in edge cases (empty state, error, loading, permissions)? Options: A) Define all edge cases in this issue · B) Happy path only for v1, follow-up for edge cases · C) Not sure — flag for Feature Frank
Success criteria — How will we know this feature is working correctly from the user's perspective? Options: A) I can describe specific testable outcomes · B) I'll know it when I see it · C) There are metrics to track · D) Defer to QA Quincey
Priority — How urgent is this? Options: A) High — needs to happen soon · B) Medium — next up but not blocking · C) Low — nice to have
Assignee — Who should this be assigned to?
→ Before asking, fetch the repo's actual collaborators with gh api repos/{owner}/{repo}/collaborators --jq '.[].login'. Present those handles as the AskUserQuestion options (up to 4 most relevant; include mujbadar first if present, since it's the default for frontend / mobile work). Add a "Leave unassigned" option. Never hand-type a fixed list; pull live each time so new teammates show up automatically.
→ Apply via --assignee <handle> on gh issue create. If the user picks "Other" and names someone whose handle isn't in the collaborator list, confirm the handle before filing.
Project board column — Conditional on this repo having a GitHub Project. Before asking, resolve the per-repo project cache per shared/core.md "Project board (conditional, per repo)" section. If the cache says has_project: false, skip this question entirely and proceed to the preview. If has_project: true, ask: which column should this go into? Use the cached status_options keys as the AskUserQuestion options, plus a "Skip (don't add to project)" option. Default-recommend the cached default_column.
→ When asked, this question is MANDATORY. The answer is acted on right after gh issue create using the commands in shared/core.md. An issue with a configured project is not considered filed until it has been added (or "Skip" was explicitly chosen).
For data/deduplication features, also run the dedup discovery bank from shared/core.md (uniqueness definition → cleanup scope → merge tie-break → impact → source → concurrency → downstream IDs → timeline), one question per turn.
Before creating the issue, you MUST show the user the complete ticket exactly as it will be filed — not a summary. Present:
Acceptance criteria and QA instructions are mandatory in the preview. These two sections must always be visible and fully written out — never abbreviated or omitted. They are the most important sections for the user to review before approving.
Then use AskUserQuestion to get approval before creating anything. Do NOT abbreviate, summarize, or omit any section of the ticket in this preview.
For any feature with UI changes (new mockup OR an edit to an existing spec), produce a visual that lives on the issue itself.
Use the Pencil MCP tools in this session. Design (or modify) the mockup to reflect:
Always export a PNG of the affected frame and embed it in the issue. Workflow:
mcp__pencil__export_nodes (preferred, writes to disk) or mcp__pencil__get_screenshot as a fallback. Save it next to the .pen file with a descriptive name (e.g. ftue-03-phone-name.png).gh image "<path>" to get a github.com/user-attachments/... URL that renders inline on GitHub.## Mockup with a short caption naming the frame and the change.For spec modifications, embed both a before and after PNG side by side when the delta is not obvious from the after-shot alone. The reviewer should be able to understand the change from the issue alone, without opening pencil.dev. Commit both the .pen source and the exported PNG(s) to the spec repo so the visual history travels with the design.
## Summary
[1–2 sentence description of what the feature does and why it matters to the user]
## Mockup
[pencil.dev mockup embedded here. Remove this section for non-visual features.]
## Acceptance criteria
- [ ] [What the user can do or see when this is done]
- [ ] [Happy path and key edge cases]
- [ ] [For UI: describe what the user sees and where]
## QA instructions
[Step-by-step for QA Quincey: specific pages/flows, actions, data, expected outcomes.
Cover happy path and the edge cases defined above.]
## Context
[Background, motivation, related issues, constraints.
Note reuse decisions: "Reuses the existing [X] view rather than creating a new screen."]
## Notes
[Optional: out-of-scope items, follow-up issues, dependencies, open questions]
npx claudepluginhub mujtaba3b/gstack-extensions --plugin pmProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.