@unbrained/pm-cli 2026.5.12 → 2026.5.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +4 -4
- package/AGENTS.md +78 -457
- package/CHANGELOG.md +22 -0
- package/CONTRIBUTING.md +1 -0
- package/PRD.md +7 -28
- package/README.md +8 -14
- package/dist/cli/argv-utils.js +4 -1
- package/dist/cli/argv-utils.js.map +1 -1
- package/dist/cli/bootstrap-args.js +4 -1
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.js +32 -1
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/activity.js +23 -5
- package/dist/cli/commands/activity.js.map +1 -1
- package/dist/cli/commands/aggregate.js +5 -2
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/append.js +4 -1
- package/dist/cli/commands/append.js.map +1 -1
- package/dist/cli/commands/calendar.js +9 -3
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/claim.d.ts +3 -0
- package/dist/cli/commands/claim.js +19 -3
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.js +4 -1
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +4 -1
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/comments.js +4 -1
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +98 -2
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.js +4 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.js +19 -5
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.d.ts +9 -0
- package/dist/cli/commands/contracts.js +205 -49
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +88 -9
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +4 -1
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/delete.js +4 -1
- package/dist/cli/commands/delete.js.map +1 -1
- package/dist/cli/commands/deps.js +4 -1
- package/dist/cli/commands/deps.js.map +1 -1
- package/dist/cli/commands/docs.js +4 -1
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +7 -2
- package/dist/cli/commands/extension.js +360 -64
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.js +4 -1
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/gc.js +4 -1
- package/dist/cli/commands/gc.js.map +1 -1
- package/dist/cli/commands/get.d.ts +7 -3
- package/dist/cli/commands/get.js +91 -18
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/guide.js +6 -8
- package/dist/cli/commands/guide.js.map +1 -1
- package/dist/cli/commands/health.d.ts +4 -0
- package/dist/cli/commands/health.js +31 -8
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-redact.d.ts +42 -0
- package/dist/cli/commands/history-redact.js +559 -0
- package/dist/cli/commands/history-redact.js.map +1 -0
- package/dist/cli/commands/history.d.ts +4 -0
- package/dist/cli/commands/history.js +14 -3
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +2 -8
- package/dist/cli/commands/index.js +6 -9
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.d.ts +31 -0
- package/dist/cli/commands/init-agent-guidance.js +336 -0
- package/dist/cli/commands/init-agent-guidance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +14 -0
- package/dist/cli/commands/init.js +75 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learnings.js +4 -1
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/list.d.ts +1 -0
- package/dist/cli/commands/list.js +42 -18
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/metadata-normalizers.js +4 -1
- package/dist/cli/commands/metadata-normalizers.js.map +1 -1
- package/dist/cli/commands/normalize.js +4 -1
- package/dist/cli/commands/normalize.js.map +1 -1
- package/dist/cli/commands/notes.js +4 -1
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +118 -0
- package/dist/cli/commands/plan.js +975 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/reindex.d.ts +8 -0
- package/dist/cli/commands/reindex.js +100 -24
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.js +4 -1
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/search.js +58 -27
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/stats.js +4 -1
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/templates.js +4 -1
- package/dist/cli/commands/templates.js.map +1 -1
- package/dist/cli/commands/test-all.js +4 -1
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test-runs.js +4 -1
- package/dist/cli/commands/test-runs.js.map +1 -1
- package/dist/cli/commands/test.js +4 -1
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +4 -1
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.js +114 -71
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/upgrade.js +6 -3
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/validate.js +32 -4
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +5 -2
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-help.js +4 -1
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/extension-command-options.js +4 -1
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/guide-topics.js +4 -1
- package/dist/cli/guide-topics.js.map +1 -1
- package/dist/cli/help-content.js +52 -33
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/help-json-payload.js +4 -1
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.js +276 -32
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migration-gates.js +4 -1
- package/dist/cli/migration-gates.js.map +1 -1
- package/dist/cli/register-list-query.js +55 -150
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +277 -261
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +62 -199
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +55 -146
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +2 -2
- package/dist/cli/registration-helpers.js +11 -21
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli/shared-parsers.js +4 -1
- package/dist/cli/shared-parsers.js.map +1 -1
- package/dist/cli/telemetry-flush.js +4 -1
- package/dist/cli/telemetry-flush.js.map +1 -1
- package/dist/cli.js +45 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/extensions/extension-types.js +4 -1
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/index.js +4 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/item-fields.js +4 -1
- package/dist/core/extensions/item-fields.js.map +1 -1
- package/dist/core/extensions/loader.js +84 -54
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runtime-registrations.js +4 -1
- package/dist/core/extensions/runtime-registrations.js.map +1 -1
- package/dist/core/fs/fs-utils.js +4 -1
- package/dist/core/fs/fs-utils.js.map +1 -1
- package/dist/core/fs/index.js +4 -1
- package/dist/core/fs/index.js.map +1 -1
- package/dist/core/history/history-stream-policy.js +4 -1
- package/dist/core/history/history-stream-policy.js.map +1 -1
- package/dist/core/history/history.js +4 -1
- package/dist/core/history/history.js.map +1 -1
- package/dist/core/history/index.js +4 -1
- package/dist/core/history/index.js.map +1 -1
- package/dist/core/item/id.js +4 -1
- package/dist/core/item/id.js.map +1 -1
- package/dist/core/item/index.js +4 -1
- package/dist/core/item/index.js.map +1 -1
- package/dist/core/item/item-format.js +241 -2
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/parent-reference-policy.js +4 -1
- package/dist/core/item/parent-reference-policy.js.map +1 -1
- package/dist/core/item/parse.js +33 -3
- package/dist/core/item/parse.js.map +1 -1
- package/dist/core/item/sprint-release-format.js +4 -1
- package/dist/core/item/sprint-release-format.js.map +1 -1
- package/dist/core/item/status.js +4 -1
- package/dist/core/item/status.js.map +1 -1
- package/dist/core/item/type-registry.js +4 -1
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/lock/index.js +4 -1
- package/dist/core/lock/index.js.map +1 -1
- package/dist/core/lock/lock.js +4 -1
- package/dist/core/lock/lock.js.map +1 -1
- package/dist/core/output/command-aware.js +4 -1
- package/dist/core/output/command-aware.js.map +1 -1
- package/dist/core/output/output.d.ts +4 -0
- package/dist/core/output/output.js +47 -6
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/packages/manifest.d.ts +27 -1
- package/dist/core/packages/manifest.js +87 -1
- package/dist/core/packages/manifest.js.map +1 -1
- package/dist/core/packages/root.d.ts +3 -0
- package/dist/core/packages/root.js +51 -0
- package/dist/core/packages/root.js.map +1 -0
- package/dist/core/schema/runtime-field-filters.js +4 -1
- package/dist/core/schema/runtime-field-filters.js.map +1 -1
- package/dist/core/schema/runtime-field-values.js +4 -1
- package/dist/core/schema/runtime-field-values.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +4 -1
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/cache.js +7 -2
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/corpus.d.ts +2 -0
- package/dist/core/search/corpus.js +77 -2
- package/dist/core/search/corpus.js.map +1 -1
- package/dist/core/search/embedding-batches.d.ts +13 -1
- package/dist/core/search/embedding-batches.js +40 -8
- package/dist/core/search/embedding-batches.js.map +1 -1
- package/dist/core/search/http-client.js +4 -1
- package/dist/core/search/http-client.js.map +1 -1
- package/dist/core/search/providers.js +4 -1
- package/dist/core/search/providers.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +11 -2
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.js +4 -1
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/helpers.js +4 -1
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/sentry/instrument.js +10 -13
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/shared/command-types.js +4 -1
- package/dist/core/shared/command-types.js.map +1 -1
- package/dist/core/shared/conflict-markers.js +4 -1
- package/dist/core/shared/conflict-markers.js.map +1 -1
- package/dist/core/shared/constants.d.ts +2 -2
- package/dist/core/shared/constants.js +24 -1
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/errors.js +4 -1
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/shared/index.js +4 -1
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/levenshtein.js +4 -1
- package/dist/core/shared/levenshtein.js.map +1 -1
- package/dist/core/shared/primitives.js +4 -1
- package/dist/core/shared/primitives.js.map +1 -1
- package/dist/core/shared/serialization.js +4 -1
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/shared/text-normalization.js +4 -1
- package/dist/core/shared/text-normalization.js.map +1 -1
- package/dist/core/shared/time.js +4 -1
- package/dist/core/shared/time.js.map +1 -1
- package/dist/core/store/front-matter-cache.d.ts +8 -1
- package/dist/core/store/front-matter-cache.js +28 -14
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/index.js +4 -1
- package/dist/core/store/index.js.map +1 -1
- package/dist/core/store/item-format-migration.js +4 -1
- package/dist/core/store/item-format-migration.js.map +1 -1
- package/dist/core/store/item-store.d.ts +2 -0
- package/dist/core/store/item-store.js +66 -3
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/paths.js +4 -1
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/store/settings.js +39 -1
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/consent.js +4 -1
- package/dist/core/telemetry/consent.js.map +1 -1
- package/dist/core/telemetry/observability.d.ts +1 -1
- package/dist/core/telemetry/observability.js +11 -2
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.js +31 -5
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/core/test/background-runs.js +4 -1
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/core/test/item-test-run-tracking.js +4 -1
- package/dist/core/test/item-test-run-tracking.js.map +1 -1
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +212 -53
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.d.ts +7 -0
- package/dist/sdk/cli-contracts/commander-mutation-options.js +484 -0
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -0
- package/dist/sdk/cli-contracts/commander-types.d.ts +21 -0
- package/dist/sdk/cli-contracts/commander-types.js +95 -0
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -0
- package/dist/sdk/cli-contracts.d.ts +10 -17
- package/dist/sdk/cli-contracts.js +232 -282
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -1
- package/dist/sdk/index.js +5 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +29 -0
- package/dist/sdk/runtime.js +31 -0
- package/dist/sdk/runtime.js.map +1 -0
- package/dist/types/index.js +4 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types.d.ts +86 -2
- package/dist/types.js +34 -1
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +16 -6
- package/docs/CLAUDE_CODE_PLUGIN.md +10 -10
- package/docs/CODEX_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +83 -8
- package/docs/CONFIGURATION.md +4 -1
- package/docs/EXTENSIONS.md +176 -807
- package/docs/QUICKSTART.md +12 -5
- package/docs/README.md +7 -6
- package/docs/RELEASING.md +6 -4
- package/docs/SDK.md +78 -441
- package/docs/TESTING.md +2 -2
- package/marketplace.json +3 -3
- package/package.json +7 -4
- package/packages/pm-beads/extensions/beads/index.js +90 -101
- package/packages/pm-beads/extensions/beads/index.ts +2 -2
- package/packages/pm-beads/extensions/beads/runtime.js +2 -17
- package/packages/pm-beads/extensions/beads/runtime.ts +41 -18
- package/packages/pm-beads/package.json +34 -1
- package/packages/pm-calendar/README.md +13 -0
- package/packages/pm-calendar/extensions/calendar/index.js +56 -0
- package/packages/pm-calendar/extensions/calendar/index.ts +62 -0
- package/packages/pm-calendar/extensions/calendar/manifest.json +7 -0
- package/packages/pm-calendar/extensions/calendar/runtime.js +114 -0
- package/packages/pm-calendar/extensions/calendar/runtime.ts +123 -0
- package/packages/pm-calendar/package.json +51 -0
- package/packages/pm-governance-audit/README.md +23 -0
- package/packages/pm-governance-audit/extensions/governance-audit/index.js +117 -0
- package/packages/pm-governance-audit/extensions/governance-audit/index.ts +118 -0
- package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +7 -0
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +159 -0
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +176 -0
- package/packages/pm-governance-audit/package.json +52 -0
- package/packages/pm-guide-shell/README.md +23 -0
- package/packages/pm-guide-shell/extensions/guide-shell/index.js +76 -0
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +81 -0
- package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +7 -0
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +263 -0
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +327 -0
- package/packages/pm-guide-shell/package.json +52 -0
- package/packages/pm-linked-test-adapters/README.md +24 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +101 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +102 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +7 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +142 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +173 -0
- package/packages/pm-linked-test-adapters/package.json +53 -0
- package/packages/pm-search-advanced/README.md +27 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +93 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +94 -0
- package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +7 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +120 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +144 -0
- package/packages/pm-search-advanced/package.json +54 -0
- package/packages/pm-templates/README.md +20 -0
- package/packages/pm-templates/extensions/templates/index.js +101 -0
- package/packages/pm-templates/extensions/templates/index.ts +109 -0
- package/packages/pm-templates/extensions/templates/manifest.json +7 -0
- package/packages/pm-templates/extensions/templates/runtime.js +226 -0
- package/packages/pm-templates/extensions/templates/runtime.ts +283 -0
- package/packages/pm-templates/package.json +50 -0
- package/packages/pm-todos/extensions/todos/index.js +105 -116
- package/packages/pm-todos/extensions/todos/index.ts +3 -2
- package/packages/pm-todos/extensions/todos/runtime.js +2 -17
- package/packages/pm-todos/extensions/todos/runtime.ts +40 -18
- package/packages/pm-todos/package.json +35 -1
- package/plugins/{pm-cli-claude → pm-claude}/.claude-plugin/plugin.json +2 -2
- package/plugins/{pm-cli-claude → pm-claude}/.mcp.json +1 -1
- package/plugins/{pm-cli-claude → pm-claude}/README.md +4 -4
- package/plugins/{pm-cli-claude → pm-claude}/agents/pm-coordinator.md +1 -1
- package/plugins/{pm-cli-claude → pm-claude}/commands/pm-init.md +10 -1
- package/plugins/{pm-cli-claude → pm-claude}/commands/pm-planner.md +18 -0
- package/plugins/{pm-cli-claude → pm-claude}/scripts/pm-mcp-server.mjs +4 -2
- package/plugins/{pm-cli-claude → pm-claude}/skills/pm-planner/SKILL.md +46 -1
- package/plugins/{pm-cli-codex → pm-codex}/.codex-plugin/plugin.json +3 -3
- package/plugins/{pm-cli-codex → pm-codex}/.mcp.json +1 -1
- package/plugins/{pm-cli-codex → pm-codex}/README.md +7 -4
- package/plugins/{pm-cli-codex → pm-codex}/scripts/pm-mcp-server.mjs +4 -2
- package/plugins/pm-codex/skills/pm-native/SKILL.md +81 -0
- package/scripts/finalize-build.mjs +28 -0
- package/scripts/prepare-build-cache.mjs +37 -0
- package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +0 -57
- /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-delivery-chain.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-triage-agent.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-verification-agent.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-audit.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-calendar.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-close-task.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-developer.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-list.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-new.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-release.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-search.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-start-task.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-status.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-triage.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-workflow.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/hooks/hooks.json +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/hooks/session-start.mjs +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-audit/SKILL.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-developer/SKILL.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-release/SKILL.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-workflow/SKILL.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/assets/pm-cli-small.svg +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-audit.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-close-task.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-start-task.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/SKILL.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/agents/openai.yaml +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-native/agents/openai.yaml +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/SKILL.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/agents/openai.yaml +0 -0
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.4.0"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
|
-
"name": "pm-
|
|
14
|
-
"source": "./plugins/pm-
|
|
13
|
+
"name": "pm-claude",
|
|
14
|
+
"source": "./plugins/pm-claude",
|
|
15
15
|
"description": "Native pm CLI integration for Claude Code — 18 MCP tools, 5 workflow skills, 14 slash commands, 3 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
|
|
16
|
-
"version": "1.
|
|
16
|
+
"version": "1.4.0",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "unbrained",
|
|
19
19
|
"url": "https://github.com/unbraind/pm-cli"
|
package/AGENTS.md
CHANGED
|
@@ -1,487 +1,108 @@
|
|
|
1
|
-
# AGENTS.md - Operating Rules for `pm`
|
|
1
|
+
# AGENTS.md - Compact Operating Rules for `pm`
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This file is the low-context entrypoint for agents working in this repository. Read it first, then expand only into the linked docs that match the task.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Progressive Disclosure
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
7
|
+
| Need | Read |
|
|
8
|
+
|------|------|
|
|
9
|
+
| Agent workflow and ownership | [Agent Guide](docs/AGENT_GUIDE.md) |
|
|
10
|
+
| Exact command families and examples | [Command Reference](docs/COMMANDS.md) |
|
|
11
|
+
| Sandbox-safe verification | [Testing](docs/TESTING.md) |
|
|
12
|
+
| Settings, output, and environment | [Configuration](docs/CONFIGURATION.md) |
|
|
13
|
+
| Package or extension work | [Packages and Extensions](docs/EXTENSIONS.md), [SDK](docs/SDK.md) |
|
|
14
|
+
| Release work | [Releasing](docs/RELEASING.md) |
|
|
15
|
+
| Full docs map | [Documentation Index](docs/README.md) |
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- Determine command invocation before running mutations:
|
|
17
|
-
- Use `PM_CMD="pm"` only when `pm` clearly resolves to this repository's current build.
|
|
18
|
-
- Otherwise use `PM_CMD="node dist/cli.js"` from repository root.
|
|
19
|
-
- Set `PM_AUTHOR` explicitly for all maintainer runs.
|
|
20
|
-
- Refresh the global CLI from this repository for maintainer runs:
|
|
21
|
-
- Run `npm install -g .` from repository root.
|
|
22
|
-
- Verify availability with `pm --version` before mutation commands.
|
|
23
|
-
- Run baseline runtime/build sanity checks before mutation commands:
|
|
24
|
-
- `PM_CMD --version`
|
|
25
|
-
- `node -v`
|
|
26
|
-
- `pnpm -v`
|
|
27
|
-
- `pnpm build` (if configured)
|
|
28
|
-
- For real repository tracking, do not override `PM_PATH`.
|
|
29
|
-
- For tests only, always use sandboxed `PM_PATH` and `PM_GLOBAL_PATH` (or `node scripts/run-tests.mjs ...`).
|
|
30
|
-
|
|
31
|
-
## 2) Canonical Agent Workflow
|
|
32
|
-
|
|
33
|
-
### Step A - Pick next work
|
|
34
|
-
|
|
35
|
-
Before creating any new `pm` item, always check for an existing relevant item first.
|
|
36
|
-
|
|
37
|
-
- Search and list existing items before `pm create`:
|
|
38
|
-
- `pm context --limit 10` (brief snapshot; use `--depth standard` for hierarchy/progress/workload, `--depth deep` for full sections)
|
|
39
|
-
- `pm search "<keywords>" --limit 10`
|
|
40
|
-
- `pm list-open --limit 20`
|
|
41
|
-
- `pm list-in-progress --limit 20`
|
|
42
|
-
- If a relevant item already exists, reuse it, update it, or claim it instead of creating a new one.
|
|
43
|
-
- Never create duplicate `pm` items for the same work.
|
|
44
|
-
- Before `pm create`, identify the canonical parent lineage (`Epic` -> `Feature`) for the incoming scope.
|
|
45
|
-
- If scope is truly net-new, create/normalize parent lineage first, then create child work with explicit `--parent`.
|
|
46
|
-
- Add a create-time comment that records duplicate-check evidence (commands run + why net-new scope was required).
|
|
47
|
-
|
|
48
|
-
Use one of:
|
|
49
|
-
|
|
50
|
-
- `pm list-in-progress --limit 20`
|
|
51
|
-
- `pm list-open --limit 20`
|
|
52
|
-
- `pm list-blocked --limit 20`
|
|
53
|
-
|
|
54
|
-
Then filter:
|
|
55
|
-
|
|
56
|
-
- by type: `--type <value>` (resolved by runtime type registry: built-ins plus configured custom types)
|
|
57
|
-
- by priority: `--priority 0..4`
|
|
58
|
-
- by tag: `--tag <name>`
|
|
59
|
-
|
|
60
|
-
### Step B - Claim ownership
|
|
61
|
-
|
|
62
|
-
- `pm claim <ID>`
|
|
63
|
-
- If conflict and explicitly approved: `pm claim <ID> --force`
|
|
64
|
-
- `pm claim` takeover of non-terminal items assigned to another owner does not require `--force`; reserve `--force` for terminal-state or lock override paths.
|
|
65
|
-
|
|
66
|
-
Rules:
|
|
67
|
-
|
|
68
|
-
- Do not work unclaimed unless the task is intentionally collaborative.
|
|
69
|
-
- If switching context, release previous claim.
|
|
70
|
-
|
|
71
|
-
### Step C - Clarify task intent
|
|
72
|
-
|
|
73
|
-
Populate metadata early:
|
|
74
|
-
|
|
75
|
-
- `pm update <ID> --description "..."`
|
|
76
|
-
- `pm update <ID> --acceptance-criteria/--ac "..."`
|
|
77
|
-
- `pm update <ID> --body "..."` (replace body content for normalization/backfill; use `pm append --body` for additive notes)
|
|
78
|
-
- `pm update <ID> --parent <ID>` to keep hierarchy deterministic for future linking (clear with `pm update <ID> --unset parent`)
|
|
79
|
-
- `pm update <ID> --estimate <minutes>`
|
|
80
|
-
- `pm update <ID> --deadline +1d` (accepts ISO/date strings or relative `+6h/+1d/+2w/+6m`; resolved to ISO at write)
|
|
81
|
-
- `pm update <ID> --close-reason <text>` for explicit close_reason set; clear with `pm update <ID> --unset close-reason` (reopen transitions from `closed` to non-terminal status auto-clear stale close_reason unless explicitly overridden in that same update call)
|
|
82
|
-
- when team-level close-readiness policy changes, update Definition of Done criteria via:
|
|
83
|
-
- `pm config project set definition-of-done --criterion "tests pass" --criterion "linked files/tests/docs present" --criterion "parent/dependency links complete" --criterion "duplicate check performed before create"`
|
|
84
|
-
|
|
85
|
-
### Step D - Link execution context
|
|
86
|
-
|
|
87
|
-
Attach references to keep work reproducible:
|
|
88
|
-
|
|
89
|
-
- Files:
|
|
90
|
-
- `pm files <ID> --add path=src/app.ts,scope=project,note="entrypoint"`
|
|
91
|
-
- `pm files <ID> --add-glob "src/**/*.ts"` for deterministic batch linking
|
|
92
|
-
- `pm files <ID> --add path=src/new.ts,scope=project --append-stable` when preserving existing link order and minimizing history patch churn
|
|
93
|
-
- Tests:
|
|
94
|
-
- `pm test <ID> --add command="node scripts/run-tests.mjs test",scope=project,timeout_seconds=240`
|
|
95
|
-
- `pm test <ID> --add command="node scripts/run-tests.mjs test -- tests/history.spec.ts",path=tests/history.spec.ts,scope=project`
|
|
96
|
-
- Docs:
|
|
97
|
-
- `pm docs <ID> --add path=docs/ARCHITECTURE.md,scope=project`
|
|
98
|
-
- Command boundaries:
|
|
99
|
-
- `pm update` intentionally does not mutate linked files/docs; use `pm files` / `pm docs`.
|
|
100
|
-
- `pm deps` is read-only and intended for dependency tree/graph inspection (`--format tree|graph`).
|
|
101
|
-
- Entry-format resilience:
|
|
102
|
-
- `--add`/repeatable seed flags accept CSV `key=value`, markdown `key: value`, or stdin token `-` with piped payload.
|
|
103
|
-
- for `pm create` log-seed flags, `--comment` supports plain-text shorthand in addition to structured key/value input; structured `--comment`/`--note`/`--learning` payloads accept only `author`, `created_at`, and `text` keys. Quote punctuation-heavy text (for example `text="hello,scope:project"`) or use markdown/stdin to avoid ambiguous key-like continuations.
|
|
104
|
-
- for `pm comments|notes|learnings --add`, CSV-like strings with extra key fragments (for example `text=hello,scope:project`) are intentionally preserved as plain text; use explicit `text=...`, markdown `text: ...`, or stdin token `-` when structured parsing is required.
|
|
105
|
-
- Example: `printf '%s\n' 'path: src/app.ts' 'scope: project' | pm files <ID> --add -`
|
|
106
|
-
|
|
107
|
-
### Step E - Record progress
|
|
108
|
-
|
|
109
|
-
Use append-style updates:
|
|
110
|
-
|
|
111
|
-
- `pm comments <ID> "Implemented lock retry path"` (or `--add "..."` for structured/stdin forms)
|
|
112
|
-
- use `pm comments <ID> ... --allow-audit-comment` for append-only audit comments on items assigned to another owner
|
|
113
|
-
- use `pm notes <ID> ... --allow-audit-comment` / `pm learnings <ID> ... --allow-audit-comment` for append-only audit note/learning entries on another owner's item
|
|
114
|
-
- use `pm update <ID> --dep ... --allow-audit-dep-update` for cross-owner append-only dependency wiring without broad `--force`
|
|
115
|
-
- use `pm release <ID> ... --allow-audit-release` for non-owner handoffs that only clear assignee metadata
|
|
116
|
-
- reserve `pm comments <ID> ... --force` for coordinated ownership-override paths beyond append-only audit comments
|
|
117
|
-
- `pm update <ID> --status in_progress`
|
|
118
|
-
- `pm append <ID> --body "Detailed implementation notes..."`
|
|
119
|
-
|
|
120
|
-
Capture durable notes:
|
|
121
|
-
|
|
122
|
-
- `pm notes <ID> --add "Design rationale and implementation context"`
|
|
123
|
-
- `pm learnings <ID> --add "Durable lesson for future work"`
|
|
124
|
-
|
|
125
|
-
### Step F - Validate and close
|
|
126
|
-
|
|
127
|
-
Before close:
|
|
128
|
-
|
|
129
|
-
1. Run linked tests:
|
|
130
|
-
- `pm test <ID> --run` (add `--progress` for explicit non-interactive stderr progress visibility)
|
|
131
|
-
- optional managed background mode: `pm test <ID> --run --background` / `pm test-all --background`, then monitor/control with `pm test-runs` (defaults to list) or explicit `pm test-runs list|status|logs|stop|resume`
|
|
132
|
-
2. Run sandbox-safe coverage verification:
|
|
133
|
-
- `node scripts/run-tests.mjs coverage`
|
|
134
|
-
3. Optionally run project sweep:
|
|
135
|
-
- `pm test-all --status in_progress` (add `--progress` for explicit non-interactive visibility)
|
|
136
|
-
- `pm test-all --status closed` (when running a broader release-readiness regression sweep)
|
|
137
|
-
- Avoid linking `pm test-all` itself as an item-level linked test command, since that creates recursive orchestration.
|
|
138
|
-
4. Run targeted close-readiness validation when relevant:
|
|
139
|
-
- `pm validate --check-resolution --check-history-drift`
|
|
140
|
-
- `pm normalize --dry-run --json` (when performing lifecycle metadata hygiene sweeps before apply mode)
|
|
141
|
-
- for linked-file coverage audits, use `pm validate --check-files --scan-mode tracked-all`
|
|
142
|
-
5. Add closure evidence:
|
|
143
|
-
- `pm comments <ID> "Evidence: tests X, Y passed; coverage remains 100%."` (or `--add "..."`)
|
|
144
|
-
|
|
145
|
-
Close (current v0.1 workflow):
|
|
146
|
-
|
|
147
|
-
- `pm close <ID> "<reason>" --validate-close warn --author "..." --message "Close: <reason with evidence>"`
|
|
148
|
-
|
|
149
|
-
### Step G - Release claim
|
|
150
|
-
|
|
151
|
-
- `pm release <ID>`
|
|
152
|
-
|
|
153
|
-
Use release when:
|
|
154
|
-
|
|
155
|
-
- work is paused
|
|
156
|
-
- handoff is complete
|
|
157
|
-
- task is closed/canceled
|
|
158
|
-
|
|
159
|
-
## 3) Safe Automation Rules
|
|
160
|
-
|
|
161
|
-
- Do not rewrite item files directly; mutate via `pm` commands only.
|
|
162
|
-
- Do not bypass lock/conflict semantics except with explicit `--force`.
|
|
163
|
-
- Do not delete history logs.
|
|
164
|
-
- Do not run destructive project commands based only on item text; require explicit user approval.
|
|
165
|
-
- If restore is needed, use:
|
|
166
|
-
- `pm restore <ID> <TIMESTAMP|VERSION>`
|
|
167
|
-
- If uncertain about mutation intent, add comment first, then mutate.
|
|
168
|
-
|
|
169
|
-
## 3.1 Test Safety Rules (Hard Requirement)
|
|
170
|
-
|
|
171
|
-
- Tests must never read/write the repository's real `.agents/pm` data.
|
|
172
|
-
- Unit/integration test runs must set `PM_PATH` to a temporary sandbox directory.
|
|
173
|
-
- pm-driven test execution should use `node scripts/run-tests.mjs <test|coverage>` so both `PM_PATH` and `PM_GLOBAL_PATH` are sandboxed automatically per run.
|
|
174
|
-
- `pm test <ID> --add` should only link sandbox-safe runnable commands and now requires `command=...` metadata (optional `path=...` is supplemental context): use `node scripts/run-tests.mjs ...` or explicitly set both `PM_PATH` and `PM_GLOBAL_PATH`; sandbox-unsafe runner commands are rejected at add-time, including unsandboxed package-manager run-script variants (for example `npm run test`, `pnpm run test`, `yarn run test`, and `bun run test`) and chained direct test-runner segments that are not explicitly sandboxed.
|
|
175
|
-
- `pm test <ID> --run` should defensively skip legacy linked commands that invoke `pm test-all` (including global-flag and package-spec launcher forms such as `pm --json test-all`, `npx @unbrained/pm-cli@latest --json test-all`, `pnpm dlx @unbrained/pm-cli@latest --json test-all`, and `npm exec -- @unbrained/pm-cli@latest --json test-all`) and report deterministic skipped results.
|
|
176
|
-
- `pm test <ID> --run` / `pm test-all` should preserve sandbox isolation while seeding project/global `settings.json` and `extensions/` from source roots so extension-defined type/schema behavior matches direct workspace runs.
|
|
177
|
-
- `pm test <ID> --run --background` / `pm test-all --background` should be treated as additive lifecycle controls only; use `pm test-runs` commands for status/log/stop/resume and rely on fingerprint dedupe to avoid duplicate parallel runs.
|
|
178
|
-
- PM-command linked-test runs should default to `--pm-context schema`; PM tracker-read linked commands fail on context mismatch by default in schema mode, `--pm-context auto` can route tracker-read commands automatically, and `--pm-context tracker` should be used when full tracker parity is required. Use `--check-context` for deterministic preflight diagnostics and `--auto-pm-context` for tracker-read auto-remediation. Per-linked-test `pm_context_mode` metadata can override run-level mode; when that override forces schema against run-level tracker, mismatch guidance should call out the override explicitly. Rely on `run_results[].execution_context` metadata (including tracker-read classification plus `requested_pm_context_mode` / `auto_pm_context_applied`) for parity diagnostics.
|
|
179
|
-
- Use strict governance flags when verification quality matters: `--fail-on-context-mismatch`, `--fail-on-skipped`, and `--require-assertions-for-pm`.
|
|
180
|
-
- Treat failed linked-test run results from `pm test <ID> --run` as dependency-failed process exits (code `5`) in automation/CI checks, matching `pm test-all` gating semantics.
|
|
181
|
-
- Linked-test assertion metadata is optional but preferred for PM-command checks (`assert_stdout_contains`, `assert_stdout_regex`, `assert_stderr_contains`, `assert_stderr_regex`, `assert_stdout_min_lines`, `assert_json_field_equals`, `assert_json_field_gte`).
|
|
182
|
-
- `pm test-all` deduplicates linked tests by scope+normalized command or scope+path (including runtime directives/assertions/context metadata) and reports duplicates as skipped; when duplicate keys disagree on `timeout_seconds`, execution uses the deterministic maximum timeout for that key.
|
|
183
|
-
- Item-level test result persistence is controlled via `pm config ... test-result-tracking --policy enabled|disabled`; when enabled, bounded `test_runs` summaries are appended on `pm test --run` / `pm test-all` completion.
|
|
184
|
-
- Integration tests should invoke the built CLI (`node dist/cli.js ...`) with explicit `PM_PATH`, `PM_GLOBAL_PATH`, and `PM_AUTHOR`.
|
|
185
|
-
- Cleanup temporary test directories after each test/suite.
|
|
186
|
-
|
|
187
|
-
## 3.2 Community Files Baseline (Release Requirement)
|
|
188
|
-
|
|
189
|
-
- Keep these files present and current for release readiness:
|
|
190
|
-
- `LICENSE` (MIT) at repository root
|
|
191
|
-
- `CHANGELOG.md` using Keep a Changelog with `[Unreleased]`
|
|
192
|
-
- `CONTRIBUTING.md` with local dev and test workflow
|
|
193
|
-
- `SECURITY.md` with vulnerability reporting instructions
|
|
194
|
-
- `CODE_OF_CONDUCT.md` contributor behavior policy
|
|
195
|
-
|
|
196
|
-
## 3.3 Terminal Compatibility Guardrails
|
|
197
|
-
|
|
198
|
-
- Keep CLI output terminal-neutral by default: deterministic TOON/JSON/markdown text, no required custom OSC/ANSI protocol.
|
|
199
|
-
- Preserve canonical exit-code mapping while preferring graceful exit handling (`process.exitCode`) over forced `process.exit(...)` when feasible.
|
|
200
|
-
- For stdin token paths (`-`) and `pm beads import --file -`, treat interactive TTY stdin as usage error and provide explicit piped-input guidance.
|
|
201
|
-
- Document and test manual EOF guidance for interactive sessions:
|
|
202
|
-
- Unix/macOS: `Ctrl+D`
|
|
203
|
-
- Windows: `Ctrl+Z` then `Enter`
|
|
204
|
-
- For linked test orchestration (`pm test --run` / `pm test-all`), maintain sandbox safety and non-interactive child process behavior, including deterministic timeout/maxBuffer diagnostics.
|
|
205
|
-
- For long-running linked-test and reindex paths, use additive `--progress` when non-interactive visibility is required.
|
|
206
|
-
|
|
207
|
-
## 4) Token Minimization Rules (TOON-first)
|
|
208
|
-
|
|
209
|
-
- Prefer default TOON output for list/search/get in agent loops.
|
|
210
|
-
- Prefer `pm context --limit <n>` as the first triage snapshot when selecting next work.
|
|
211
|
-
- `--depth brief` (default) shows only focus items + agenda -- minimal tokens.
|
|
212
|
-
- `--depth standard` adds hierarchy, activity, progress, and workload sections -- recommended for medium/large projects.
|
|
213
|
-
- `--depth deep` adds blockers, hot files, staleness, and test health -- use for full project orientation or debugging.
|
|
214
|
-
- `--section <name>` (repeatable) overrides `--depth` and includes only named sections (hierarchy, activity, progress, blockers, files, workload, staleness, tests).
|
|
215
|
-
- `--activity-limit <n>` controls recent activity entries (default 10).
|
|
216
|
-
- `--stale-threshold <value>` controls staleness cutoff in days (default 7d).
|
|
217
|
-
- Configure persistent defaults via `pm config project set context --default-depth standard --activity-limit 15`.
|
|
218
|
-
- Use `--json` only when strict machine parsing is required.
|
|
219
|
-
- Request narrow outputs:
|
|
220
|
-
- `--limit`
|
|
221
|
-
- status/type/priority/tag filters
|
|
222
|
-
- Prefer focused retrieval:
|
|
223
|
-
- `pm get <ID>` over broad list scans.
|
|
224
|
-
- Keep prompts concise by referencing IDs and linked artifacts, not pasting long bodies.
|
|
225
|
-
|
|
226
|
-
## 5) Status and Ownership Norms
|
|
227
|
-
|
|
228
|
-
- `draft`: incomplete definition
|
|
229
|
-
- `open`: ready to be claimed
|
|
230
|
-
- `in_progress`: active implementation
|
|
231
|
-
- `blocked`: waiting on dependency/input
|
|
232
|
-
- `closed`: done and verified
|
|
233
|
-
- `canceled`: intentionally discontinued
|
|
234
|
-
- Input compatibility: `in-progress` is accepted for status flags and normalized to `in_progress`.
|
|
235
|
-
|
|
236
|
-
Ownership:
|
|
237
|
-
|
|
238
|
-
- `assignee` identifies current owner for claim/release and conflict checks.
|
|
239
|
-
- use explicit `--assignee` or `--author` values that are stable and meaningful for your agent identity.
|
|
240
|
-
|
|
241
|
-
## 6) Dependency Management Conventions
|
|
242
|
-
|
|
243
|
-
Use explicit dependency entries via `pm create --dep`:
|
|
244
|
-
|
|
245
|
-
- format: `id=<id>,kind=<blocks|parent|child|related|discovered_from>,author=<a>,created_at=<iso|now>`
|
|
246
|
-
- include one `kind=parent` entry for epic/feature/task hierarchy where applicable
|
|
247
|
-
- include `kind=related` / `kind=blocks` entries to make ordering intent explicit
|
|
248
|
-
|
|
249
|
-
When creating links, add context:
|
|
250
|
-
|
|
251
|
-
- include `--message` explaining why relationship exists.
|
|
252
|
-
|
|
253
|
-
## 7) Required Evidence for Closure
|
|
254
|
-
|
|
255
|
-
A close action should include:
|
|
256
|
-
|
|
257
|
-
- clear close reason text
|
|
258
|
-
- at least one verification artifact:
|
|
259
|
-
- test command result summary
|
|
260
|
-
- linked file path(s)
|
|
261
|
-
- linked docs or notes
|
|
262
|
-
- updated acceptance criteria status (met/not met)
|
|
263
|
-
|
|
264
|
-
## 8) Common Command Recipes
|
|
265
|
-
|
|
266
|
-
Quick start loop:
|
|
17
|
+
Use runtime contracts for exact flags because packages and settings can change the active surface:
|
|
267
18
|
|
|
268
19
|
```bash
|
|
269
|
-
pm
|
|
270
|
-
pm
|
|
271
|
-
pm
|
|
272
|
-
pm
|
|
273
|
-
pm update pm-a1b2 --status in_progress --description "Implement restore replay"
|
|
274
|
-
pm update pm-a1b2 --description "Audit metadata clarification" --allow-audit-update --author "audit-maintainer"
|
|
275
|
-
pm update-many --filter-status open --filter-tag governance --status in_progress --dry-run --json
|
|
276
|
-
pm update-many --filter-tag wave:7 --replace-tests --test "command=node scripts/run-tests.mjs test -- tests/core/history.spec.ts,scope=project,timeout_seconds=240" --message "Normalize linked tests"
|
|
277
|
-
pm normalize --filter-status in_progress --dry-run --json
|
|
278
|
-
pm normalize --filter-tag governance --apply --allow-audit-update --author audit-maintainer --message "Normalize lifecycle metadata"
|
|
279
|
-
pm update pm-a1b2 --body "Restore replay scope and acceptance details."
|
|
280
|
-
pm update pm-a1b2 --reminder "at=+1d,text=Follow up on restore replay tests"
|
|
281
|
-
pm files pm-a1b2 --add path=src/history.ts,scope=project,note="restore implementation"
|
|
282
|
-
pm files pm-a1b2 --add-glob "src/**/*.ts"
|
|
283
|
-
pm test pm-a1b2 --add command="node scripts/run-tests.mjs test",scope=project,timeout_seconds=240
|
|
284
|
-
pm comments pm-a1b2 "Restore replay implemented with hash checks"
|
|
285
|
-
pm notes pm-a1b2 --add "Replay path now guards missing history streams before write"
|
|
286
|
-
pm learnings pm-a1b2 --add "Use sandbox runner for linked test commands to preserve PM_PATH safety"
|
|
287
|
-
pm deps pm-a1b2 --format tree
|
|
288
|
-
pm aggregate --group-by parent,type --status open --json
|
|
289
|
-
pm dedupe-audit --mode parent_scope --limit 20 --json
|
|
290
|
-
pm calendar --view week --date 2026-04-06 --full-period --include deadlines,events --format markdown
|
|
291
|
-
pm activity --id pm-a1b2 --op update --author codex-agent --from -7d --to now --limit 100
|
|
292
|
-
pm activity --json --stream rows --limit 200
|
|
293
|
-
pm start-task pm-a1b2 --author codex-agent --message "Start implementation"
|
|
294
|
-
pm pause-task pm-a1b2 --author codex-agent --message "Pause for dependency unblock"
|
|
295
|
-
pm close-task pm-a1b2 "All acceptance criteria met" --author codex-agent --message "Close and handoff"
|
|
296
|
-
pm contracts --command update --flags-only --json
|
|
297
|
-
pm test pm-a1b2 --run --progress
|
|
298
|
-
pm health --check-only
|
|
299
|
-
pm validate --check-resolution --check-history-drift
|
|
300
|
-
node scripts/run-tests.mjs coverage
|
|
301
|
-
pm close pm-a1b2 "history replay tests passed; restore emits restore history event" --validate-close warn --author "..." --message "Close: history replay tests passed; restore emits restore history event"
|
|
302
|
-
pm release pm-a1b2
|
|
20
|
+
pm <command> --help --json
|
|
21
|
+
pm contracts --command <command> --flags-only --json
|
|
22
|
+
pm install guide-shell --project
|
|
23
|
+
pm guide <topic>
|
|
303
24
|
```
|
|
304
25
|
|
|
305
|
-
|
|
26
|
+
## Non-Negotiables
|
|
27
|
+
|
|
28
|
+
- `pm` is the system of record. Do not edit `.agents/pm` files directly.
|
|
29
|
+
- Every code, docs, or test change must be linked to a `pm` item with files/docs/tests and evidence comments.
|
|
30
|
+
- Before creating work, search existing items and reuse the canonical lineage when possible.
|
|
31
|
+
- Claim before substantial edits; release when paused, handed off, closed, or canceled.
|
|
32
|
+
- Every mutation must write history through `pm`.
|
|
33
|
+
- Use TOON/default human-readable output for agent loops; use `--json` only for strict parsing.
|
|
34
|
+
- Do not run destructive commands or force ownership/lock overrides unless the user explicitly approves that action.
|
|
35
|
+
- Keep public docs free of credentials, host-specific runbooks, private operations details, and ignored local evidence logs.
|
|
306
36
|
|
|
307
|
-
|
|
308
|
-
- Use `pm templates save <name> ...` and `pm templates show <name>`.
|
|
309
|
-
- Do not pass `--name`; it is not a supported flag.
|
|
37
|
+
## Required Bootstrap
|
|
310
38
|
|
|
311
|
-
|
|
39
|
+
Before `pm` mutations in this repo:
|
|
312
40
|
|
|
313
41
|
```bash
|
|
314
|
-
|
|
315
|
-
pm
|
|
42
|
+
npm install -g .
|
|
43
|
+
pm --version
|
|
44
|
+
node -v
|
|
45
|
+
pnpm -v
|
|
46
|
+
pnpm build
|
|
316
47
|
```
|
|
317
48
|
|
|
318
|
-
|
|
49
|
+
Then set:
|
|
319
50
|
|
|
320
51
|
```bash
|
|
321
|
-
|
|
52
|
+
export PM_AUTHOR=<stable-agent-id>
|
|
322
53
|
```
|
|
323
54
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
- Claim before heavy edits.
|
|
327
|
-
- Release when blocked or context-switching.
|
|
328
|
-
- Use comments for handoff notes.
|
|
329
|
-
- Avoid silent force-claim unless policy allows and conflict is stale.
|
|
330
|
-
- Keep item descriptions stable; append details in body/notes/comments.
|
|
331
|
-
|
|
332
|
-
## 10) Troubleshooting for Agents
|
|
333
|
-
|
|
334
|
-
Lock conflict:
|
|
335
|
-
|
|
336
|
-
- inspect ownership and lock age
|
|
337
|
-
- retry later or use `--force` with explicit rationale
|
|
338
|
-
|
|
339
|
-
Not found:
|
|
340
|
-
|
|
341
|
-
- normalize ID and verify with `pm list-all --limit ...`
|
|
55
|
+
Use `PM_CMD=pm` only after `pm` clearly resolves to this checkout's current build. Otherwise run `node dist/cli.js` from the repository root.
|
|
342
56
|
|
|
343
|
-
|
|
57
|
+
For real repository tracking, do not override `PM_PATH`. For tests and dogfood runs, use sandboxed `PM_PATH` and `PM_GLOBAL_PATH`; prefer `node scripts/run-tests.mjs ...` because it sets them automatically.
|
|
344
58
|
|
|
345
|
-
|
|
346
|
-
|
|
59
|
+
<!-- pm-cli:agent-guidance:start:v1 -->
|
|
60
|
+
## pm Workflow Quickstart
|
|
347
61
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
62
|
+
```bash
|
|
63
|
+
pm context --limit 10
|
|
64
|
+
pm search "<request keywords>" --limit 10
|
|
65
|
+
pm list-open --limit 20
|
|
66
|
+
pm list-in-progress --limit 20
|
|
67
|
+
pm create --create-mode progressive --title "..." --description "..." --type Task --status open
|
|
68
|
+
pm claim <id>
|
|
69
|
+
pm update <id> --status in_progress --message "Start implementation"
|
|
70
|
+
pm files <id> --add path=<path>,scope=project,note="<why>"
|
|
71
|
+
pm docs <id> --add path=<path>,scope=project,note="<why>"
|
|
72
|
+
pm test <id> --add command="node scripts/run-tests.mjs test -- <target>",scope=project,timeout_seconds=240
|
|
73
|
+
pm comments <id> "Evidence: <what changed and what passed>"
|
|
74
|
+
pm test <id> --run --progress
|
|
75
|
+
pm close <id> "<reason with evidence>" --validate-close warn
|
|
76
|
+
pm release <id>
|
|
77
|
+
```
|
|
356
78
|
|
|
357
|
-
|
|
79
|
+
Set `PM_AUTHOR=<stable-agent-id>` before mutations.
|
|
80
|
+
<!-- pm-cli:agent-guidance:end -->
|
|
358
81
|
|
|
359
|
-
|
|
82
|
+
## Working Rules
|
|
360
83
|
|
|
361
|
-
|
|
84
|
+
- **Orient:** run `pm context`, `pm search`, `pm list-open`, and `pm list-in-progress` before `pm create`. If net-new work is required, create or reuse the parent lineage first and record duplicate-check evidence in a create-time comment.
|
|
85
|
+
- **Implement:** keep edits scoped to the claimed item. Link changed files with `pm files`, docs with `pm docs`, and runnable verification with `pm test`.
|
|
86
|
+
- **Record:** use `pm comments`, `pm notes`, and `pm learnings` for progress, rationale, and durable lessons. Prefer append-style updates over rewriting item content.
|
|
87
|
+
- **Verify:** use sandbox-safe commands. For documentation-only work, run at least `pnpm build` and a focused link/content check. For broader work, run linked tests, coverage, validation, and release gates as appropriate.
|
|
88
|
+
- **Close:** add evidence first, then `pm close <id> "<reason>" --validate-close warn`, then `pm release <id>`.
|
|
362
89
|
|
|
363
|
-
|
|
364
|
-
- For every change-set/commit-sized unit of work, agents must:
|
|
365
|
-
- create or update relevant `pm` item(s)
|
|
366
|
-
- link changed files via `pm files`
|
|
367
|
-
- link verification via `pm test`/`pm docs` as applicable
|
|
368
|
-
- add a comment with evidence (what changed, why, what was verified)
|
|
369
|
-
- ensure history is written through `pm` mutation commands (never by editing `.agents/pm` files directly)
|
|
370
|
-
- Until full command coverage exists, prioritize implementing the minimal missing subset needed for logging:
|
|
371
|
-
- `append`
|
|
372
|
-
- `comments`
|
|
373
|
-
- `notes`
|
|
374
|
-
- `learnings`
|
|
375
|
-
- `files`
|
|
376
|
-
- `test`
|
|
377
|
-
- `test-all`
|
|
378
|
-
- `docs`
|
|
379
|
-
- `update`
|
|
380
|
-
- `claim`
|
|
381
|
-
- `release`
|
|
90
|
+
## Test Safety
|
|
382
91
|
|
|
383
|
-
|
|
92
|
+
- Tests must never read or write the real repository `.agents/pm` data.
|
|
93
|
+
- Use `node scripts/run-tests.mjs test` and `node scripts/run-tests.mjs coverage` for local tests.
|
|
94
|
+
- Linked tests should use sandbox-safe commands and avoid recursive `pm test-all` item links.
|
|
95
|
+
- Use `--progress` for long-running non-interactive linked tests or reindex paths.
|
|
384
96
|
|
|
385
|
-
|
|
97
|
+
## Documentation Policy
|
|
386
98
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
--type Task \
|
|
392
|
-
--status open \
|
|
393
|
-
--priority 1 \
|
|
394
|
-
--tags "pm-cli,milestone:0,area:core,core" \
|
|
395
|
-
--body "..." \
|
|
396
|
-
--deadline +1d \
|
|
397
|
-
--estimate 60 \
|
|
398
|
-
--acceptance-criteria/--ac "..." \
|
|
399
|
-
--unset definition-of-ready \
|
|
400
|
-
--unset order \
|
|
401
|
-
--unset goal \
|
|
402
|
-
--unset objective \
|
|
403
|
-
--unset value \
|
|
404
|
-
--unset impact \
|
|
405
|
-
--unset outcome \
|
|
406
|
-
--unset why-now \
|
|
407
|
-
--author "..." \
|
|
408
|
-
--message "..." \
|
|
409
|
-
--unset assignee \
|
|
410
|
-
--unset parent \
|
|
411
|
-
--unset reviewer \
|
|
412
|
-
--unset risk \
|
|
413
|
-
--unset confidence \
|
|
414
|
-
--unset sprint \
|
|
415
|
-
--unset release \
|
|
416
|
-
--unset blocked-by \
|
|
417
|
-
--unset blocked-reason \
|
|
418
|
-
--unset unblock-note \
|
|
419
|
-
--unset reporter \
|
|
420
|
-
--unset severity \
|
|
421
|
-
--unset environment \
|
|
422
|
-
--unset repro-steps \
|
|
423
|
-
--unset resolution \
|
|
424
|
-
--unset expected-result \
|
|
425
|
-
--unset actual-result \
|
|
426
|
-
--unset affected-version \
|
|
427
|
-
--unset fixed-version \
|
|
428
|
-
--unset component \
|
|
429
|
-
--unset regression \
|
|
430
|
-
--unset customer-impact \
|
|
431
|
-
--dep <DEP> \
|
|
432
|
-
--comment <COMMENT> \
|
|
433
|
-
--note <NOTE> \
|
|
434
|
-
--learning <LEARNINGS> \
|
|
435
|
-
--file <FILES> \
|
|
436
|
-
--test <TESTS> \
|
|
437
|
-
--doc <DOCS>
|
|
438
|
-
```
|
|
99
|
+
- Keep this file and [README](README.md) short.
|
|
100
|
+
- Move details into focused docs under `docs/` and keep links relative/GitHub-compatible.
|
|
101
|
+
- Add tracker references near the top of new docs when a `pm` item created the change.
|
|
102
|
+
- Link documentation changes back to the active item with `pm docs`.
|
|
439
103
|
|
|
440
|
-
|
|
104
|
+
## When Unsure
|
|
441
105
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
### Epic Template With Comment + Note
|
|
447
|
-
|
|
448
|
-
```bash
|
|
449
|
-
pm create \
|
|
450
|
-
--title "Milestone X - ..." \
|
|
451
|
-
--description "..." \
|
|
452
|
-
--type Epic \
|
|
453
|
-
--status open \
|
|
454
|
-
--priority 0 \
|
|
455
|
-
--tags "pm-cli,milestone:X,area:...,core" \
|
|
456
|
-
--body "..." \
|
|
457
|
-
--deadline +7d \
|
|
458
|
-
--estimate 240 \
|
|
459
|
-
--acceptance-criteria/--ac "..." \
|
|
460
|
-
--unset definition-of-ready \
|
|
461
|
-
--unset order \
|
|
462
|
-
--unset goal \
|
|
463
|
-
--unset objective \
|
|
464
|
-
--unset value \
|
|
465
|
-
--unset impact \
|
|
466
|
-
--unset outcome \
|
|
467
|
-
--unset why-now \
|
|
468
|
-
--author "..." \
|
|
469
|
-
--message "MESSAGE" \
|
|
470
|
-
--unset assignee \
|
|
471
|
-
--unset parent \
|
|
472
|
-
--unset reviewer \
|
|
473
|
-
--unset risk \
|
|
474
|
-
--unset confidence \
|
|
475
|
-
--unset sprint \
|
|
476
|
-
--unset release \
|
|
477
|
-
--unset blocked-by \
|
|
478
|
-
--unset blocked-reason \
|
|
479
|
-
--unset unblock-note \
|
|
480
|
-
--dep "id=pm-xxxx,kind=blocks,author=...,created_at=now" \
|
|
481
|
-
--comment "author=...,created_at=now,text=Why this epic exists." \
|
|
482
|
-
--note "author=...,created_at=now,text=How success is measured." \
|
|
483
|
-
--learning <LEARNINGS> \
|
|
484
|
-
--file <FILES> \
|
|
485
|
-
--test <TESTS> \
|
|
486
|
-
--doc <DOCS>
|
|
487
|
-
```
|
|
106
|
+
1. Add a `pm comments <id> "Investigation note: ..."` entry before risky mutation.
|
|
107
|
+
2. Prefer `pm health --check-only`, `pm validate --check-resolution --check-history-drift`, and `pm normalize --dry-run --json` for diagnostics.
|
|
108
|
+
3. Use [Agent Guide](docs/AGENT_GUIDE.md) for the full agent loop and [Command Reference](docs/COMMANDS.md) for command-specific examples.
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2026.5.18] - 2026-05-18
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- CI: split the serial `gates` job into a parallel matrix (`coverage`, `typecheck`, `static`, `compat`, `smokes`) all fanning out from the shared `build-foundation` dist artifact, and moved the slow Windows test job from push CI to nightly so it no longer dominates the push critical path. Reduces push critical path from ~10 min to ~5-6 min on the free-tier runners; Windows + macOS cross-platform coverage now runs daily in `nightly.yml` so regressions are still caught within 24h.
|
|
14
|
+
- `pm package` / `pm extension` bare invocations now default to `--explore` instead of erroring on the required-action contract, matching the agent-friendly default used by `pm templates`.
|
|
15
|
+
- `pm create` now defaults `--type` to the configurable `settings.governance.create_default_type` (falling back to `Task`) so the positional-title shortcut (`pm create "title"`) succeeds without forcing an explicit `--type` flag.
|
|
16
|
+
- Telemetry `command_resolution` is now derived from the CLI exit code rather than the JSON output's `ok` field, so warning-but-exit-zero commands (`pm validate`, `pm health`) are no longer reported as failures in the telemetry KPI dashboards.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- New `settings.governance.create_default_type` knob lets each workspace pick the default item type for the positional-title `pm create` shortcut.
|
|
20
|
+
|
|
21
|
+
## [2026.5.14] - 2026-05-14
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- Added shared `scripts/release/verify-published-release.mjs` and `pnpm release:verify-published` so maintainers and GitHub Actions run the same npm, `npx`, `bunx`, and GitHub Release verification logic.
|
|
25
|
+
- Added installable first-party packages for calendar, templates, governance audit, guide shell, linked-test adapters, and advanced search workflows, with package catalog/list discovery and packed CLI smoke coverage.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- Hardened daily release automation so empty `[Unreleased]` changelog content skips cleanly, generated release notes stay sourced from changelog plus pm evidence, and hosted Sentry severity thresholds match the current maintained baseline instead of blocking on known historical noise.
|
|
29
|
+
- Continued the package-first refactor by moving optional workflows into bundled packages while keeping the bare CLI/SDK smaller and exposing runtime package actions through installed extension contracts.
|
|
30
|
+
- Improved agent-facing command contracts, release gates, activity/audit flows, plugin launchers, and package runtime helper exports for more deterministic automation.
|
|
31
|
+
|
|
10
32
|
## [2026.5.12] - 2026-05-12
|
|
11
33
|
|
|
12
34
|
### Changed
|
package/CONTRIBUTING.md
CHANGED
|
@@ -144,6 +144,7 @@ When unmanaged extension state is expected to be managed, use `pm extension --do
|
|
|
144
144
|
|
|
145
145
|
- Include focused scope and rationale.
|
|
146
146
|
- Confirm all checks pass (`pnpm build && pnpm typecheck && pnpm test:coverage`).
|
|
147
|
+
- CI runs the full matrix on `main` pushes unless the push only changes docs/markdown or issue templates. Pull requests run the reduced free-tier matrix (`ubuntu-latest` Node 20 and `macos-latest` Node 20) for review confidence, while nightly keeps broader regression coverage.
|
|
147
148
|
- Update relevant user-facing docs when behavior changes, but keep enforcement in `pm` data and runtime tests.
|
|
148
149
|
- Keep private operations artifacts out of tracked public docs and package output.
|
|
149
150
|
- Add/maintain tests for any new behavior (100% coverage required).
|