
Implement Pm
- 1 installs
- 1 repo stars
- Updated June 16, 2026
- mvagnon/plan-based-agentic-workflow
Implement PM is an agent skill that implements only the PM-referenced tasks on a dedicated branch after Serena-backed repo study.
About
Implement PM is a gated agent workflow for developers who already track work in an external PM tool and want the coding agent to focus purely on turning specified tasks into commits on the right branch. Invocation is strict: both the PM system name and exact task IDs must be supplied; the skill then branches, pulls task context, and uses Serena MCP to map the repository before any edits. It deliberately stops at implementation boundaries—no pull requests, no backlinking tasks, no review orchestration, and no automatic “done” status—so it pairs cleanly with separate review and PM hygiene skills in a larger plan-based pipeline. Before editing, it expects governing instruction files and reuse checks aligned with its shared development rules reference, reducing duplicate components and silent rule conflicts.
- Hard gate: requires PM system name and exact task IDs before starting
- Creates and pushes branch `{pm-tool}/{task-ids}` and scopes work to implementation only
- Mandatory Serena MCP for semantic exploration, symbols, and references before edits
- Explicitly excludes PR creation, PM backlinks, PR body updates, review workflows, and marking tasks done
- Development rules reference with ordered priority (user → rules → skills → AGENTS.md → local conventions)
Implement Pm by the numbers
- 1 all-time installs (skills.sh)
- Ranked #2,476 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Jul 7, 2026 (Skillselion catalog sync)
npx skills add https://github.com/mvagnon/plan-based-agentic-workflow --skill implement-pmAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 1 |
| Last updated | June 16, 2026 |
| Repository | mvagnon/plan-based-agentic-workflow ↗ |
What it does
Ship only the PM-assigned implementation work on a dedicated git branch after exploring the repo with Serena MCP—without touching PR workflow or task closure.
Who is it for?
Best when you use plan-based agentic workflows where PM tickets are the source of truth and implementation must stay isolated from release ceremony.
Skip if: Requests missing PM system name or task IDs, one-off fixes without ticket linkage, or flows where you want the agent to open PRs and close tasks in the same session.
When should I use this skill?
Request provides both required inputs: PM system name and exact task IDs.
What you get
A pushed implementation branch scoped to the referenced PM tasks, with codebase changes informed by Serena exploration and governed dev rules—hand off PR/review skills separately when ready.
- Pushed git branch `{pm-tool}/{task-ids}` with PM-scoped implementation commits
By the numbers
- 5-tier rule priority stack before editing
Files
Implement PM
Summary
Implement PM tasks in the current checkout.
Required information can be supplied in any prompt shape.
The first action after loading this skill is always:
skills/implement-pm/scripts/create-pm-branch.sh "$pm_tool" "$task_ids"That script checks out and pushes branch $pm_tool/$task_ids.
Diagram
flowchart TD
A[Read pm_tool and task_ids] --> B[Run create-pm-branch.sh]
B --> C[Retrieve PM tasks]
C --> D[Analyze repository with Serena]
D --> E[Implement focused changes]
E --> F[Run relevant existing checks]
F --> G[Report implementation and next create-pr step]Inputs
Required inputs:
$pm_tool: PM system name, for examplegithub,jira,notion,linear.$task_ids: exact task IDs joined exactly as they should appear in the branch name.
Do not guess missing inputs. Ask for the missing information if either value is missing.
References
Load only what is needed:
references/pm-task-retrieval.mdfor PM task retrieval.references/implementation-git.mdfor branch-script behavior and implementation Git commands.references/development-rules.mdbefore editing and before the final diff review.
Workflow
First Action
Before retrieving PM tasks, analyzing code, or editing files, run:
skills/implement-pm/scripts/create-pm-branch.sh "$pm_tool" "$task_ids"The branch name must be exactly:
$pm_tool/$task_idsRules
- Use Serena before implementing. If Serena is unavailable, stop instead of implementing from text search alone.
- Load and follow
references/development-rules.md; treat missed existing-code reuse, duplicated implementation logic, dead code, unsafe boundary handling, unrelated edits, or skipped relevant checks as implementation bugs to fix before finishing. - Reuse existing components, hooks, services, schemas, validators, DTOs, repositories, utilities, and design-system primitives before creating anything new.
- Keep business logic centralized, handlers/controllers thin, boundary validation explicit, and server-side authorization enforced.
- Preserve unrelated local work. Do not stash, reset, delete, unstage, or commit unrelated changes unless explicitly requested.
- Do not create PRs, PR descriptions, PR task links, review comments, or PM status updates.
- Do not add dependencies, logs, broad refactors, or new tests by default.
- During implementation and final diff review, minimize added lines relative to deleted lines. Prefer deletion, reuse, and extension over parallel code; if a small product or implementation concession would materially reduce added lines, stop and ask for user approval before taking it.
- Use the repository's existing check commands that are relevant to the touched area.
Expected Response Format
Response
## Implement PM
Branch: `$pm_tool/$task_ids`
Implemented:
- <concise change>
- <concise change>
Checks:
- `<command>`: <passed|failed|not run> - <short note>
Remaining:
- <risk/blocker or "none">
Diff discipline:
- <how added lines were minimized relative to deleted lines, or concession approval needed>
Next:
<Run `create-pr`>Development Rules Reference
Use this reference during implement-pm before editing and final diff review, during fix-pr before remediation edits and replies, and during review-pr before judging concrete implementation hygiene, local change safety, checks, and finalization readiness.
This file covers implementation mechanics. Use governing project instruction files (AGENTS.md, CLAUDE.md, GEMINI.md, and equivalents) for architecture, ownership, boundaries, and project conventions.
Before Editing
- Load governing project instruction files.
- Use Serena to inspect the affected code path and nearby ownership before changing files.
- Search for an existing equivalent before adding any component, hook, utility, type, schema, decorator, service, repository, validator, query key, or abstraction.
- If an existing owner is close but incomplete, extend it, compose it, add a variant, or make a focused refactor instead of creating a parallel implementation.
- Before choosing an additive solution, check whether deletion, reuse, extension, or a small user-approved concession would reduce added lines relative to deleted lines. In
fix-pr, only use a concession when the PR feedback explicitly requests it. - Preserve unrelated local work. Do not stash, reset, unstage, delete, overwrite, force-delete, or commit unrelated changes unless the user explicitly asks.
Focused Implementation
- Keep changes scoped to the PM task, PR feedback remediation, or explicit user request.
- Prefer the smallest correct change that fits the existing architecture and local conventions.
- Optimize for the fewest added lines after accounting for deleted lines. Do not treat a large net addition as acceptable when a small approved concession, reuse path, or deletion would preserve the core outcome with much less code. In
fix-pr, report unrequested concessions as blockers instead of applying them. - Follow existing data-fetching, validation, typing, component, backend, security, and error-handling patterns.
- Keep code clear, explicitly named, consistently organized, strictly typed where useful, and free of dead code, unused imports, unused variables, obsolete files, and hidden behavior.
- Do not weaken types to silence errors.
- Do not add dependencies, broad abstractions, broad refactors, logs, or new tests by default.
- If a requested fix would require broad architecture changes, stop and report the mismatch instead of expanding scope silently.
- If a small product or implementation concession could materially reduce added lines, ask for explicit user approval before applying that concession.
Frontend Details
- Consume APIs through the existing data layer. If the project uses TanStack Query, components use custom hooks, hooks use Query, and raw network calls stay in client/API functions.
- Disable actions that cannot safely run twice while pending.
- Use spinners for user-triggered async actions and skeletons for initial async data display.
- Surface errors intentionally, with retry affordances for data-display failures when relevant.
- Keep meaningful components in separate files when the implementation creates or substantially changes component structure.
- Reuse design-system primitives before local styling.
Backend And Security Details
- Keep handlers/controllers thin.
- Validate inputs at boundaries.
- Never trust client-provided data.
- Enforce authorization on the server side.
- Use existing security utilities and middleware.
- Keep database queries intentional and avoid obvious N+1 patterns.
- Use transactions for multi-step writes that must stay consistent.
- Treat file uploads, redirects, dynamic queries, and user-generated content as high-risk areas.
Tests And Logs
- Do not create new tests by default.
- Update existing tests only when directly affected by the implementation or remediation.
- If test creation is explicitly requested, prefer the dedicated journey-test workflow from
write-testsinstead of narrow implementation-detail tests. - Do not add logs by default.
Checks
Discover relevant existing checks:
scripts/discover-checks.sh [repo-root]Do not start dev servers, watch commands, containers, or browser automation by default.
Report commands as not run when no relevant existing command exists or when the only available check requires an excluded long-running tool.
Before Finishing
- Review the diff for scope, duplication, dead code, inconsistent naming, missed reuse, and regressions.
- Review the added/deleted line balance. Explain any large net addition, or revise toward deletion/reuse unless a user-approved concession or explicit requirement justifies the added surface.
- Update README files only when setup, commands, environment variables, architecture, or project conventions changed.
- Follow the owning skill's Git behavior:
implement-pmcommits without pushing,fix-prcommits and pushes after focused remediation, andreview-prdoes not implement fixes.
Implementation Git Reference
Use this reference for technical Git mechanics during implement-pm.
Mandatory Branch Script
Run before any task retrieval or code analysis:
skills/implement-pm/scripts/create-pm-branch.sh <pm-tool> <task-ids>The script:
- resolves the current Git root;
- records the source branch in local Git config as
branch.<pm-tool>/<task-ids>.pbaw-base; - creates or switches to branch
<pm-tool>/<task-ids>; - pushes the branch to
origin; - sets upstream tracking.
Status Commands
Use these commands when checking local state:
git rev-parse --show-toplevel
git status --short --branch
git branch --show-current
git remote -v
git config --get branch.$(git branch --show-current).pbaw-baseDo not stash, reset, unstage, or delete unrelated local changes.
Commit
When the implementation is ready to publish for create-pr, stage only task changes:
git status --short
git diff --stat
git diff
git add <paths>
git status --short
git commit -m "<repo-style commit message>"Do not push. Leave unrelated concurrent user edits unstaged unless the user explicitly included them.
PM Task Retrieval Reference
Use this reference after the branch script has completed.
GitHub Issues
Discover the repository:
git remote get-url origin
gh repo view --json nameWithOwner,url,defaultBranchRefRetrieve each issue:
gh issue view <number-or-url> --repo <owner/repo> --json number,title,body,state,labels,assignees,milestone,comments,url,closedReject ambiguous search results. Ask for exact IDs only when the provided task IDs cannot be resolved.
Jira, Notion, Linear, And Other PM Tools
Use the installed MCP or CLI for the selected pm-tool.
Retrieve:
- title and stable URL;
- body/content;
- comments or discussion that change scope;
- current status;
- dependencies and linked tasks;
- acceptance criteria.
If the selected PM tool cannot provide complete task content and the user did not include the full task body, stop before implementation.
Dependency Check
If a requested task depends on another unresolved task that is not included in <task-ids>, ask whether to include it before implementation.
Do not update PM status or create PR task links from implement-pm.
#!/usr/bin/env bash
set -euo pipefail
usage() {
echo "Usage: $0 <pm-tool> <task-ids>" >&2
}
if [ "$#" -ne 2 ]; then
usage
exit 64
fi
pm_tool="$1"
task_ids="$2"
branch="${pm_tool}/${task_ids}"
if [ -z "$pm_tool" ] || [ -z "$task_ids" ]; then
usage
exit 64
fi
if ! git check-ref-format --branch "$branch" >/dev/null 2>&1; then
echo "Invalid branch name: $branch" >&2
exit 64
fi
repo_root="$(git rev-parse --show-toplevel)"
cd "$repo_root"
if ! git remote get-url origin >/dev/null 2>&1; then
echo "Missing origin remote in $repo_root" >&2
exit 69
fi
source_branch="$(git branch --show-current)"
if [ -z "$source_branch" ]; then
echo "Cannot create PM branch from detached HEAD" >&2
exit 69
fi
if git show-ref --verify --quiet "refs/heads/$branch"; then
if [ "$source_branch" = "$branch" ]; then
existing_base="$(git config --get "branch.${branch}.pbaw-base" || true)"
if [ -n "$existing_base" ]; then
source_branch="$existing_base"
else
origin_default="$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD || true)"
if [ -n "$origin_default" ]; then
source_branch="${origin_default#origin/}"
fi
fi
fi
git switch "$branch"
else
git switch -c "$branch"
fi
git config "branch.${branch}.pbaw-base" "$source_branch"
git config "branch.${branch}.pbaw-pm-tool" "$pm_tool"
git config "branch.${branch}.pbaw-task-ids" "$task_ids"
git push -u origin "$branch"
printf 'Repository: %s\n' "$repo_root"
printf 'Branch: %s\n' "$branch"
printf 'Base: %s\n' "$source_branch"
Related skills
How it compares
Use as a narrow implementation executor instead of a full “ticket-to-merge” super-skill that also runs review and PM updates.
FAQ
Who is implement-pm for?
Developers (and small teams) who route coding work from a PM system and want branch-scoped implementation with semantic repo analysis via Serena MCP.
When should I use implement-pm?
During Build when you have both required inputs; also useful in Ship prep when you need code landed on `{pm-tool}/{task-ids}` before a separate review-pr pass.
Is implement-pm safe to install?
It expects MCP (Serena), git push, and filesystem edits—review the Security Audits panel on this page and confirm branch/remote policies before granting access.