project-manager
Use this skill when the user says "project manager", "pm", "where are we", "what's in progress", "what should I work on next", "project status", "open issues", "what's next", "track this work", "review this issue", "improve this issue", "what are our conventions", "create a project", "plan this project", "project health", or asks about Linear issues, GitHub issues, GitHub PRs, or any issue tracking for the current project. Also use proactively when the user describes work that doesn't appear to be tracked, when starting new work on main/master, when branch naming suggests untracked work, or when the user has a spec they're about to file as a Linear initiative or GitHub project. Routes to focused pm-* skills (status, issues, templates, review, improve, conventions, branches, report, spec, handoff, setup, projects) based on the task. For autonomous multi-step work, delegate to the `pm-agent` sub-agent.
What this skill does
# Project Manager
## Scope Grammar (v0.21.0+)
Every PM skill that reads issues accepts `--scope <expression>`. The default is workspace-wide (the active project's workspace). Forms:
| Form | Resolves to |
|---|---|
| `repo:org/foo` | The teams + project_id for the matching profile in `projects` (back-compat) |
| `team:ENG` | All issues with `team_key == ENG` |
| `team:ENG+subteams` | `ENG ∪ children(ENG) ∪ children(children(ENG))` — transitive |
| `project:CHK` | All issues with `project_slug == CHK` |
| `project:CHK+deps` | CHK + transitive `depends_on` + transitive `depended_on_by` |
| `project:CHK+deps:upstream` | CHK + transitive `depends_on` only |
| `project:CHK+deps:downstream` | CHK + transitive `depended_on_by` only |
| `workspace:<slug>` | Whole workspace |
| `workspace:X,team:Y+subteams` | Intersection |
| `all` | All issues across all known workspaces |
Comma joins narrow (intersection). The scope graph (workspaces, teams, project relations) is populated by `/pm-setup --portfolio`. The resolver lives in `hooks/lib/scope-resolver.js`; the verbs that consume it are `scope-briefing`, `timeframe-report`, and (Phase 5b) `roadmap`.
Central routing skill for project management workflows. Delegates to focused skills based on the task.
## Skill Routing
| Task | Skill to use |
|------|-------------|
| Session briefing, what's in progress, what's next | `pm-status` |
| Register a project, paste Linear API key, configure conventions | `pm-setup` |
| Create, update, or close an issue | `pm-issues` |
| Resolve / list / register a tag-keyed issue template | `pm-templates` |
| Review an existing issue against its template + conventions | `pm-review` |
| Enrich an issue with repo context, related issues, research, Q&A | `pm-improve` |
| Triage a raw/untriaged issue (classify + review + enrich + label) | `pm-triage` |
| Place a workable issue (status, project/milestone, parent, assignee, workstream) | `pm-organize` |
| Dispatch triage + organize over an issue or backlog (returns one report) | `pm-intake` agent |
| Sync / show / edit the team roster (members + skills) | `pm-team` |
| Estimate a member's skills from their issue history (writes team.md) | `pm-proficiency` |
| Load, show, edit, or validate project conventions | `pm-conventions` |
| Create a branch or write a PR description | `pm-branches` |
| Changing direction mid-feature, pivoting | `pm-pivot` |
| Generate a daily or weekly status report (PDF/HTML) | `pm-report` |
| "what's stuck" / "what's blocked" / "what's dragging" | `pm-report --profile stuck` |
| "what shipped" / "what got done today/this week" | `pm-report --profile movement` |
| "velocity" / "are we on track" / "throughput" | `pm-report --profile throughput` |
| "what's next to pick up" / "ready" | `pm-report --profile next-up` |
| "standup" / "status report" | `pm-report --profile exec` |
| "review prs" / "open prs" / "what prs need attention" | `pm-report --profile prs` |
| "ready to merge" | `pm-report --profile prs` |
| "waiting on me to review" | `pm-report --profile prs` |
| "waiting on me" (ambiguous) | ask: "PRs waiting on you, or issues?" |
| Turn a spec into an interactive HTML playground (refine before filing as Linear initiative or GitHub project) | `pm-spec` |
| Hand off work to a teammate or to the next lifecycle stage (recipient-facing brief, routed through Linear/GitHub/markdown/chat) | `pm-handoff` |
| Save / render / rerun reusable CLI command sequences (e.g., the daily Linear pull) | `pm-scripts` |
| **Autonomous, multi-step PM work** (file + review + enrich in one go) | `pm-agent` sub-agent |
| Report a bug / unexpected result / idea about the PM plugin itself to the maintainers | `pm-feedback` |
## Project config layout (v0.20.0+)
**All PM config lives in `<repo>/.claude/pm/` — one place.** Runtime state (cache, reports) stays in user-home because it's not config.
```
<repo>/.claude/pm/
├── project.json # checked in — slug, displayName, issue_tracker, linear_*, spec_source, feedback_channel, handoff_channels
├── project.local.json # gitignored — gh_user (+ any per-machine override)
├── conventions.md # checked in — house style
└── templates/ # checked in — tag registry + body templates
├── _manifest.json
└── <tag>.md
~/.claude/project-manager/ # NOT config — runtime state only
├── cache/<slug>/ # issue cache, context, snapshots
└── reports/<slug>/ # generated reports
```
The session-start hook reads `project.json` + `project.local.json` (merged, local-wins) and injects the active project context. Downstream skills (pm-issues, pm-branches, pm-handoff, pm-review, pm-improve) consult the in-repo config without any extra setup.
If `project.json` is missing → the project isn't registered; route to `/pm-setup`.
If `project.local.json` is missing → fine, the merge just uses shared values. The hook nudges the operator if multi-account `gh auth` is detected.
## Conventions awareness
If `<repo>/.claude/pm/conventions.md` exists, **load it before delegating to any state-changing skill** (pm-issues, pm-branches, pm-handoff, pm-review --apply, pm-improve --apply). The conventions override the plugin's baked-in defaults; pass the file's content to the downstream skill as ambient context so it can apply the rules.
If the file doesn't exist, the plugin runs with built-in defaults. That's a valid configuration.
To inspect: `/pm-conventions show`. To initialize: `/pm-conventions init` (or accept the prompt during `/pm-setup`).
## Project Context
The `pm-session-start` hook has already injected the active project context into this session. Refer to the **Active Project** section at the top of the system context for:
- Repo name and GitHub user
- Linear team key
- Current branch
## Linear Execution Mode (GraphQL via LINEAR_API_KEY)
As of v0.32, Linear I/O goes through the plugin's authored GraphQL wrappers — the `schpet/linear-cli` dependency is retired. Never call `linear issue create/update`, `linear api`, or raw GraphQL mutations directly.
- **Reads / sync:** `node "$CLAUDE_PLUGIN_ROOT/hooks/bin/pm-cache.js" <verb> --provider linear …` (full-sync, delta-sync, briefing, scope-briefing, etc.). Transport is direct fetch against `api.linear.app/graphql`.
- **Writes:** always route through `node "$CLAUDE_PLUGIN_ROOT/hooks/bin/pm-issue.js"` (create / update / relate) and the `pm-projects` create script. These wrappers resolve label / project / assignee names to UUIDs, enforce the create-gate, and avoid Linear's replace-semantics label-drop. Bypassing them reintroduces the bug class v0.32 fixed.
- **Auth:** `LINEAR_API_KEY` — from the environment, or `.claude/pm/project.local.json` (`linear_api_key`). Run `/pm-setup` to configure. No CLI install, no `linear auth login`, no `.linear.toml`.
## Proactive Issue Suggestion
When the user describes work they're about to do, check whether it maps to an open Linear issue. If not, proactively suggest:
> "I don't see a Linear issue for this. Want me to create one?"
Then use the `pm-issues` skill to draft it with the appropriate template.
## Proactive Work Tracking
At session start, evaluate the current branch and suggest appropriate actions:
### On main/master
The user is about to work without a feature branch. Before any code changes:
1. Ask what they're working on
2. Search Linear for a matching issue, or suggest creating one via `pm-issues`
3. Once an issue exists, suggest creating a branch via `pm-branches` (e.g., `feat/ENG-42-description`)
> "You're on main. Let's identify or create a Linear issue first, then set up a branch."
### On a feature branch without a Linear ID
The branch name doesn't contain a Linear issue ID (e.g., `feat/add-auth` instead of `feat/ENG-42-add-auth`):
- Ask if this work relates to an existing Linear issue
- If yes, note the association for session tracking
- If no, suggest creating one via `pm-issues`
> "This branch doesn't have a Linear ID. Is it related to an existing Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts — single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score ≥ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.