About pma
PMA is an agent workflow guide for managing software delivery in repositories that need explicit approvals, task tracking, and verification. Its investigation, proposal, and implementation phases scale their tracking requirements to task complexity.
Key features
- 01Investigation, proposal, and implementation phases
- 02Task tiers based on complexity
- 03Approval gates for non-trivial work
- 04File-based task and plan tracking
- 05Test-first approach for behavior changes
- 06Verification and change recording
Use cases
- 01Plan and execute cross-module changes
- 02Review scope and risks before implementation
- 03Track task status and plan files
- 04Set up tests and verification for bug fixes
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ zzci/ skills --skill pmaAfter installing, type/pmain Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
agents/openai.yamldocs/monorepo-example.mdplan-format.mdproject-injection.mdtask-format.mdreferences/delivery.mddev-environment.mddocs-and-tracking.mdworkflow.mdscripts/task-state.shscripts/tests/task-state.test.shDetails
From the project READMEPMA - Project Management Assistant
Run delivery work with clear gates, minimal diffs, and explicit file-based tracking.
Keep this entry file small. Load only the references needed for the current turn.
Always-On Rules
- Follow the three-phase workflow: investigate -> proposal -> implement. Ceremony scales with task complexity (see Task Tiers below); only the trivial tier may skip the proposal gate, and a borderline task is never trivial.
- Do not implement before explicit approval such as
proceed, except on the trivial tier. - Read before write: inspect call chains, config, tests, and recent changelog context first.
- Keep repository docs, code comments, commits, PR text, and other remote-visible metadata in English by default.
- Do not use plan mode. Track plans only in
docs/plan/. - Update task and plan files immediately; do not defer state sync. Name new detail files
<timestamp>-<feature-slug>.mdusing UTC minute precision per the canonical formats; do not allocate sequence numbers. Task and plan detail files may be revised or deleted; preserve change history indocs/changelog.md. Never delete index entries or rewrite their content; only change their markers, using[d]when a detail file is deleted. - Apply the Coding Principles below to every code change.
- Prefer the latest technology stack: when choosing a framework, library, toolchain, or language edition, default to the current recommended option and its latest stable version verified at the registry (crates.io / npmjs.com / pkg.go.dev / PyPI), not a version that came from a tutorial, prior PR, model recall, or a skill document. Stack skills deliberately name no versions. Use an older version or a legacy technology only when the user asks for it or a concrete compatibility problem requires it, and record the reason. See
references/workflow.mdDependency Freshness for the full rule and the stack skill's baseline for the verification command. - Every repository carries a baseline set of project-level configuration files (
.gitignore,.gitattributes,.editorconfig,LICENSE,README.md,.env.example, plus stack-pinned toolchain files). Seereferences/delivery.mdRepository Hygiene. - Use the project's migration tool and follow its migration model. Schema-diff tools generate operations from declared schema; template-based tools create a versioned stub that the developer must fill in. Never edit a migration already applied to a shared environment. See
references/delivery.mdDatabase Migrations. - For new behavior and bug fixes, follow RED -> GREEN -> IMPROVE: write a failing test first, implement the smallest passing change, then refactor without changing behavior. Documentation-only and non-executable configuration changes are exempt. Target 80% or higher coverage unless the project defines a stricter threshold.
Coding Principles
Behavioral guardrails for every edit. Bias toward caution over speed; for trivial tasks, use judgment.
- Think Before Coding: state assumptions explicitly, surface tradeoffs and simpler alternatives; when unclear, stop and ask instead of guessing.
- Simplicity First: minimum code that solves the problem — no speculative features, abstractions, or configurability.
- Surgical Changes: touch only what the request requires, match existing style, and clean up only what your own change made unused.
- Goal-Driven Execution: convert vague tasks into verifiable success criteria, then loop until verified.
- Lean Comments: keep comments as short as possible and describe only what the code does — no decision history, plan or task references, or notes on where a change came from; that context belongs in the task, plan, changelog, or commit message.
Core Workflow
Three phases with hard gates. Step-by-step detail lives in references/workflow.md; load it for any non-trivial task.
- Phase 1: Investigation — entry: a chosen task. Claim the task when investigation starts via
scripts/task-state.sh claim(index[ ]->[-]and detail owner/status change under one lock); investigate impact, related code, tests, config, and recent changelog; create a plan file for non-trivial work. Exit: findings recorded. - Phase 2: Proposal — output current state, proposal, risks, scope, and alternatives, then stop. Exit gate: explicit approval such as
proceed. - Phase 3: Test -> Implement -> Verify -> Record — entry: approval. Set the plan status/marker to in-progress (the task is already claimed since Phase 1), establish a failing test for behavior changes, implement the approved scope, run focused and relevant-suite verification, mark task and plan completed, update changelog when needed.
Task Tiers
Decide the tier before Phase 1 and say which one applies. Full criteria and escalation rules: references/workflow.md Task Tiers.
| Tier | Qualifies when | Task entry | Plan file | Proposal gate |
|---|---|---|---|---|
| Trivial | one source file or non-executable files only, intent unambiguous, no risk area touched, verifiable at once | no | no | no — state the change in one line, do it, report |
| Standard | anything else with fewer than 3 files within one module | yes | no | yes — inline proposal, wait for proceed |
| Full | >=3 files, cross-module, or the user asks for a plan | yes | yes | yes — plan file plus proposal, wait for proceed |
Risk areas that disqualify the trivial tier: auth/authz, secrets and env, DB schema or migrations, dependencies, CI/build config, public API contracts, concurrency, persistence semantics. If a trivial change grows past its criteria mid-way, stop and re-enter at the standard tier before touching anything else. The user, or a project instruction file (AGENTS.md/CLAUDE.md) when the repo has one, can disable the fast path; the user can also grant approval up front, which satisfies the gate but not the tracking.
Reference Packs
Load only what the current task needs:
references/workflow.mdUse for the detailed three-phase flow, claim-before-work, sync rules, and session checklist.references/docs-and-tracking.mdUse for task and plan file structure, canonical docs layout, changelog format, and project initialization.references/delivery.mdUse for shell and tmux rules, git and PR workflow, CI expectations, and security/tooling constraints.references/dev-environment.mdUse for nsl-based dev URL routing — install, mental model, run patterns,--stripsemantics,NSL_PORTplaceholder, fallback. Cross-cutting; loaded alongside any stack skill that needs to wire up dev-time URLs.
Canonical Format References
Use these format files instead of redefining schemas inline:
- docs/task-format.md
- docs/plan-format.md
- docs/monorepo-example.md — concrete Bun workspaces + nsl walkthrough; consult when laying out (or auditing) a multi-app repo.
- docs/project-injection.md — optional
AGENTS.mdtemplate (withCLAUDE.mdas a symlink when both files are kept) for recording project-specific facts. A repo needs neither file: skill rules load from/pma. Load this when the user asks for an injection file or when an existing one looks thin compared to the current rule set.
Quick Routing
Choose references by intent:
- New feature, bug fix, or refactor: load
references/workflow.mdandreferences/docs-and-tracking.md. - Unsure whether a change is trivial: it is not; use the standard tier. Criteria live in
references/workflow.mdTask Tiers. - Task claiming, ownership, or status sync: load
references/workflow.md. - Task or plan file creation: load
references/docs-and-tracking.md. - PR preparation, CI, shell usage, or security review: load
references/delivery.md. - Repository initialization or hygiene audit (
.gitignore,.gitattributes,.editorconfig,LICENSE,README.md,.env.example, toolchain pinning): loadreferences/delivery.mdRepository Hygiene. - Any database schema change or migration: load
references/delivery.mdDatabase Migrations. - Bootstrapping a new project, or auditing an existing project's injection file (and, when the repo keeps both, verifying
CLAUDE.mdis a symlink toAGENTS.md): loaddocs/project-injection.md. Never add either file to a project that does not have one unless the user asks. - Introducing or upgrading a dependency: load
references/workflow.mdDependency Freshness, then the stack skill's baseline for the registry-check command. - Dev URL routing setup, debugging nsl behavior, or wiring a new app into the local URL map: load
references/dev-environment.md. - Designing or restructuring a multi-app repo: read
docs/monorepo-example.mdtogether with the relevant stack skill's Monorepo section.
If the repository also uses a stack skill such as /pma-web, /pma-bun, /pma-go, or /pma-rust, load /pma first for workflow control, then load only the relevant stack references for implementation details.