Skip to main content
/pm:feedback lets you file a bug report or feature request for PM itself without leaving your Claude Code session. Instead of copy-pasting context between windows, you describe the issue once and your agent posts it straight to the cfdude/pm GitHub repo. It searches for near-duplicate issues first — if a match exists, it comments on the existing issue rather than creating a duplicate.

Usage

For a bug report, include what you expected, what actually happened, the command or subcommand involved, and any error output. For a feature request, describe the concrete use case and, if you know it, which lane, command, or skill section it would touch.

Deduplication

Before filing anything new, PM searches open issues on cfdude/pm for near-duplicates:
If a clearly matching issue is found, your agent comments on the existing issue with your new details rather than creating a duplicate:
Your agent reports the existing issue’s URL back to you and stops — no new issue is created.

How it works

When no duplicate exists, your agent creates a new issue:
This is a pure agent-driven workflow. The PM engine (conductor.mjs) is never involved and never calls GitHub. All gh calls are made by your Claude Code agent via Bash — the same instruction-layer law that governs tracker sync, feedback filing, and every other external action in PM. /pm:feedback only targets cfdude/pm. It is not a general-purpose issue filer and should not be pointed at other repos.

If you do not have gh — three channels, in order

New in 0.33.0. The workflow above assumes the gh CLI and an authenticated GitHub account. That dependency was never declared, so a user without either got a command that simply failed. It is now stated, and two channels exist that need neither:
1

gh, when it is available and authenticated

Preferred, because it is the only channel that can also search for near-duplicates and comment on a match. Both command -v gh and gh auth status must pass.
2

A prefilled issue URL

A .../issues/new link with the title and body already filled in. Needs no CLI and no prior authentication — you sign in only if you are not already, and only to press submit.
3

Email

bugs@pm-plugin.dev, for the case where neither of the above is usable.
On every path the report is written to .conductor/feedback/ first, so it survives regardless of which channel is available — and regardless of whether you send it at all.
/pm:sync is handled differently on purpose. Listing open issues is a read with no credential-free substitute — a prefilled URL cannot enumerate anything. So the inward sync procedure gets a preflight that stops and says so rather than reporting a sync nobody performed. Filing degrades to another channel; reading cannot, and pretending otherwise would be worse than the missing dependency.

Proactive adoption

The CLAUDE.md rules block includes an unconditional “Feedback” section instructing your agent to use /pm:feedback proactively — not just when you ask for it. If it hits a bug, a missing CLI verb, an unexpected limitation, or repeated friction working with PM, it should file it (or ask you “want me to file this as feedback?”) rather than silently working around it. This exists because the command shipped once and went unused: a real, recurring friction point (hand-editing .conductor/state.json to flip a story’s done flag, since no CLI verb existed for it) recurred across several separate sessions before anyone reported it.
Include as much context as you can in the summary — what you expected, what happened, and your current PM version. You can find the version in the SessionStart briefing or in state.json under pmVersion.