@pareto4/pp-core 1.5.0
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/plugin.json +23 -0
- package/GEMINI.md +53 -0
- package/LICENSE +22 -0
- package/README.md +100 -0
- package/agents/pp-advisor-researcher.md +108 -0
- package/agents/pp-ai-researcher.md +114 -0
- package/agents/pp-assumptions-analyzer.md +105 -0
- package/agents/pp-code-fixer.md +669 -0
- package/agents/pp-code-reviewer.md +387 -0
- package/agents/pp-codebase-mapper.md +853 -0
- package/agents/pp-debug-session-manager.md +315 -0
- package/agents/pp-debugger.md +1453 -0
- package/agents/pp-doc-classifier.md +168 -0
- package/agents/pp-doc-synthesizer.md +204 -0
- package/agents/pp-doc-verifier.md +217 -0
- package/agents/pp-doc-writer.md +616 -0
- package/agents/pp-domain-researcher.md +147 -0
- package/agents/pp-eval-auditor.md +191 -0
- package/agents/pp-eval-planner.md +154 -0
- package/agents/pp-executor.md +808 -0
- package/agents/pp-framework-selector.md +160 -0
- package/agents/pp-integration-checker.md +470 -0
- package/agents/pp-intel-updater.md +339 -0
- package/agents/pp-mempalace-curator.md +47 -0
- package/agents/pp-nyquist-auditor.md +204 -0
- package/agents/pp-pattern-mapper.md +335 -0
- package/agents/pp-phase-researcher.md +867 -0
- package/agents/pp-plan-checker.md +988 -0
- package/agents/pp-planner.md +1052 -0
- package/agents/pp-project-researcher.md +612 -0
- package/agents/pp-research-synthesizer.md +260 -0
- package/agents/pp-roadmapper.md +741 -0
- package/agents/pp-security-auditor.md +156 -0
- package/agents/pp-ui-auditor.md +495 -0
- package/agents/pp-ui-checker.md +309 -0
- package/agents/pp-ui-researcher.md +375 -0
- package/agents/pp-user-profiler.md +171 -0
- package/agents/pp-verifier.md +967 -0
- package/assets/gsd-logo-2000-transparent.png +0 -0
- package/assets/gsd-logo-2000-transparent.svg +17 -0
- package/assets/gsd-logo-2000.png +0 -0
- package/assets/gsd-logo-2000.svg +21 -0
- package/assets/terminal.svg +68 -0
- package/bin/install.js +12370 -0
- package/bin/lib/ui-safety-gate.cjs +107 -0
- package/commands/pp-add-tests.md +42 -0
- package/commands/pp-ai-integration-phase.md +37 -0
- package/commands/pp-audit-fix.md +34 -0
- package/commands/pp-audit-milestone.md +37 -0
- package/commands/pp-audit-uat.md +24 -0
- package/commands/pp-autonomous.md +51 -0
- package/commands/pp-capture.md +62 -0
- package/commands/pp-cleanup.md +24 -0
- package/commands/pp-code-review.md +59 -0
- package/commands/pp-complete-milestone.md +143 -0
- package/commands/pp-config.md +56 -0
- package/commands/pp-debug.md +52 -0
- package/commands/pp-discovery.md +34 -0
- package/commands/pp-discuss-phase.md +77 -0
- package/commands/pp-docs-update.md +49 -0
- package/commands/pp-eval-review.md +33 -0
- package/commands/pp-execute-phase.md +65 -0
- package/commands/pp-explore.md +27 -0
- package/commands/pp-extract-learnings.md +23 -0
- package/commands/pp-fast.md +31 -0
- package/commands/pp-forensics.md +57 -0
- package/commands/pp-graphify.md +204 -0
- package/commands/pp-health.md +31 -0
- package/commands/pp-help.md +28 -0
- package/commands/pp-import.md +45 -0
- package/commands/pp-inbox.md +39 -0
- package/commands/pp-ingest-docs.md +42 -0
- package/commands/pp-manager.md +45 -0
- package/commands/pp-map-codebase.md +83 -0
- package/commands/pp-mempalace-capture.md +71 -0
- package/commands/pp-mempalace-recall.md +102 -0
- package/commands/pp-milestone-summary.md +51 -0
- package/commands/pp-mvp-phase.md +45 -0
- package/commands/pp-new-milestone.md +45 -0
- package/commands/pp-new-project.md +47 -0
- package/commands/pp-ns-context.md +25 -0
- package/commands/pp-ns-ideate.md +24 -0
- package/commands/pp-ns-manage.md +36 -0
- package/commands/pp-ns-project.md +27 -0
- package/commands/pp-ns-review.md +29 -0
- package/commands/pp-ns-workflow.md +35 -0
- package/commands/pp-pause-work.md +43 -0
- package/commands/pp-phase.md +56 -0
- package/commands/pp-plan-phase.md +63 -0
- package/commands/pp-plan-review-convergence.md +60 -0
- package/commands/pp-pr-branch.md +26 -0
- package/commands/pp-profile-user.md +46 -0
- package/commands/pp-progress.md +49 -0
- package/commands/pp-quick.md +174 -0
- package/commands/pp-resume-work.md +30 -0
- package/commands/pp-review-backlog.md +63 -0
- package/commands/pp-review.md +42 -0
- package/commands/pp-secure-phase.md +36 -0
- package/commands/pp-settings.md +29 -0
- package/commands/pp-ship.md +24 -0
- package/commands/pp-sketch.md +60 -0
- package/commands/pp-spec-phase.md +63 -0
- package/commands/pp-spike.md +57 -0
- package/commands/pp-stats.md +20 -0
- package/commands/pp-surface.md +162 -0
- package/commands/pp-thread.md +24 -0
- package/commands/pp-ui-phase.md +35 -0
- package/commands/pp-ui-review.md +33 -0
- package/commands/pp-ultraplan-phase.md +34 -0
- package/commands/pp-undo.md +35 -0
- package/commands/pp-update.md +49 -0
- package/commands/pp-validate-phase.md +36 -0
- package/commands/pp-verify-work.md +39 -0
- package/commands/pp-workspace.md +52 -0
- package/commands/pp-workstreams.md +70 -0
- package/gemini-extension.json +6 -0
- package/hooks/dist/lib/git-cmd.js +150 -0
- package/hooks/dist/lib/pp-graphify-rebuild.sh +65 -0
- package/hooks/dist/managed-hooks-registry.cjs +39 -0
- package/hooks/dist/pp-check-update-worker.js +108 -0
- package/hooks/dist/pp-check-update.js +66 -0
- package/hooks/dist/pp-config-reload.js +133 -0
- package/hooks/dist/pp-context-monitor.js +196 -0
- package/hooks/dist/pp-cursor-post-tool.js +75 -0
- package/hooks/dist/pp-cursor-session-start.js +52 -0
- package/hooks/dist/pp-ensure-canonical-path.js +305 -0
- package/hooks/dist/pp-graphify-update.sh +158 -0
- package/hooks/dist/pp-phase-boundary.sh +47 -0
- package/hooks/dist/pp-prompt-guard.js +97 -0
- package/hooks/dist/pp-read-guard.js +101 -0
- package/hooks/dist/pp-read-injection-scanner.js +203 -0
- package/hooks/dist/pp-session-state.sh +59 -0
- package/hooks/dist/pp-statusline.js +566 -0
- package/hooks/dist/pp-update-banner.js +138 -0
- package/hooks/dist/pp-validate-commit.sh +57 -0
- package/hooks/dist/pp-workflow-guard.js +167 -0
- package/hooks/dist/pp-worktree-path-guard.js +185 -0
- package/hooks/hooks.json +70 -0
- package/hooks/lib/git-cmd.js +150 -0
- package/hooks/lib/pp-graphify-rebuild.sh +65 -0
- package/hooks/managed-hooks-registry.cjs +39 -0
- package/hooks/pp-check-update-worker.js +108 -0
- package/hooks/pp-check-update.js +66 -0
- package/hooks/pp-config-reload.js +133 -0
- package/hooks/pp-context-monitor.js +196 -0
- package/hooks/pp-cursor-post-tool.js +75 -0
- package/hooks/pp-cursor-session-start.js +52 -0
- package/hooks/pp-ensure-canonical-path.js +305 -0
- package/hooks/pp-graphify-update.sh +158 -0
- package/hooks/pp-phase-boundary.sh +47 -0
- package/hooks/pp-prompt-guard.js +97 -0
- package/hooks/pp-read-guard.js +101 -0
- package/hooks/pp-read-injection-scanner.js +203 -0
- package/hooks/pp-session-state.sh +59 -0
- package/hooks/pp-statusline.js +566 -0
- package/hooks/pp-update-banner.js +138 -0
- package/hooks/pp-validate-commit.sh +57 -0
- package/hooks/pp-workflow-guard.js +167 -0
- package/hooks/pp-worktree-path-guard.js +185 -0
- package/package.json +125 -0
- package/pp-core/bin/check-latest-version.cjs +161 -0
- package/pp-core/bin/lib/active-workstream-store.cjs +297 -0
- package/pp-core/bin/lib/adr-parser.cjs +399 -0
- package/pp-core/bin/lib/agent-command-router.cjs +68 -0
- package/pp-core/bin/lib/agent-install-check.cjs +143 -0
- package/pp-core/bin/lib/artifacts.cjs +51 -0
- package/pp-core/bin/lib/audit-command-router.cjs +61 -0
- package/pp-core/bin/lib/audit.cjs +743 -0
- package/pp-core/bin/lib/capability-activation.cjs +113 -0
- package/pp-core/bin/lib/capability-registry.cjs +3727 -0
- package/pp-core/bin/lib/capability-state.cjs +497 -0
- package/pp-core/bin/lib/capability-writer.cjs +355 -0
- package/pp-core/bin/lib/check-command-router.cjs +800 -0
- package/pp-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
- package/pp-core/bin/lib/cli-exit.cjs +61 -0
- package/pp-core/bin/lib/clock.cjs +95 -0
- package/pp-core/bin/lib/clusters.cjs +131 -0
- package/pp-core/bin/lib/code-review-flags.cjs +59 -0
- package/pp-core/bin/lib/command-aliases.cjs +809 -0
- package/pp-core/bin/lib/command-arg-projection.cjs +55 -0
- package/pp-core/bin/lib/command-roster.cjs +19 -0
- package/pp-core/bin/lib/command-routing-hub.cjs +300 -0
- package/pp-core/bin/lib/commands.cjs +1244 -0
- package/pp-core/bin/lib/config-loader.cjs +714 -0
- package/pp-core/bin/lib/config-schema.cjs +58 -0
- package/pp-core/bin/lib/config-types.cjs +20 -0
- package/pp-core/bin/lib/config.cjs +796 -0
- package/pp-core/bin/lib/configuration.cjs +209 -0
- package/pp-core/bin/lib/context-utilization.cjs +48 -0
- package/pp-core/bin/lib/core-utils.cjs +198 -0
- package/pp-core/bin/lib/decisions.cjs +136 -0
- package/pp-core/bin/lib/docs.cjs +264 -0
- package/pp-core/bin/lib/drift.cjs +364 -0
- package/pp-core/bin/lib/edge-probe.cjs +196 -0
- package/pp-core/bin/lib/fallow-runner.cjs +153 -0
- package/pp-core/bin/lib/federated-config.cjs +182 -0
- package/pp-core/bin/lib/frontmatter.cjs +494 -0
- package/pp-core/bin/lib/gap-checker.cjs +260 -0
- package/pp-core/bin/lib/git-base-branch.cjs +220 -0
- package/pp-core/bin/lib/graphify-command-router.cjs +72 -0
- package/pp-core/bin/lib/graphify.cjs +472 -0
- package/pp-core/bin/lib/gsd2-import.cjs +456 -0
- package/pp-core/bin/lib/init-command-router.cjs +62 -0
- package/pp-core/bin/lib/init.cjs +1912 -0
- package/pp-core/bin/lib/install-profiles.cjs +814 -0
- package/pp-core/bin/lib/installer-migration-authoring.cjs +122 -0
- package/pp-core/bin/lib/installer-migration-report.cjs +351 -0
- package/pp-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +225 -0
- package/pp-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
- package/pp-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
- package/pp-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
- package/pp-core/bin/lib/installer-migrations/004-prune-stale-pristine-snapshots.cjs +123 -0
- package/pp-core/bin/lib/installer-migrations/005-rename-gsd-core-to-pp-core.cjs +109 -0
- package/pp-core/bin/lib/installer-migrations/006-rename-gsd-command-namespace.cjs +135 -0
- package/pp-core/bin/lib/installer-migrations.cjs +823 -0
- package/pp-core/bin/lib/intel-command-router.cjs +119 -0
- package/pp-core/bin/lib/intel.cjs +584 -0
- package/pp-core/bin/lib/io.cjs +220 -0
- package/pp-core/bin/lib/learnings.cjs +270 -0
- package/pp-core/bin/lib/legacy-cleanup.cjs +253 -0
- package/pp-core/bin/lib/loop-host-contract.cjs +105 -0
- package/pp-core/bin/lib/loop-resolver.cjs +479 -0
- package/pp-core/bin/lib/milestone.cjs +381 -0
- package/pp-core/bin/lib/model-catalog.cjs +154 -0
- package/pp-core/bin/lib/model-profiles.cjs +24 -0
- package/pp-core/bin/lib/model-resolver.cjs +467 -0
- package/pp-core/bin/lib/observability/event.cjs +51 -0
- package/pp-core/bin/lib/observability/logger.cjs +146 -0
- package/pp-core/bin/lib/observability/redaction.cjs +48 -0
- package/pp-core/bin/lib/package-identity.cjs +35 -0
- package/pp-core/bin/lib/package-legitimacy.cjs +368 -0
- package/pp-core/bin/lib/phase-command-router.cjs +209 -0
- package/pp-core/bin/lib/phase-id.cjs +213 -0
- package/pp-core/bin/lib/phase-lifecycle.cjs +74 -0
- package/pp-core/bin/lib/phase-locator.cjs +145 -0
- package/pp-core/bin/lib/phase.cjs +1446 -0
- package/pp-core/bin/lib/phases-command-router.cjs +43 -0
- package/pp-core/bin/lib/plan-drift-guard.cjs +117 -0
- package/pp-core/bin/lib/plan-scan.cjs +91 -0
- package/pp-core/bin/lib/planning-workspace.cjs +245 -0
- package/pp-core/bin/lib/probe-core.cjs +402 -0
- package/pp-core/bin/lib/profile-output.cjs +1164 -0
- package/pp-core/bin/lib/profile-pipeline-command-router.cjs +138 -0
- package/pp-core/bin/lib/profile-pipeline.cjs +519 -0
- package/pp-core/bin/lib/prohibition-enforcement.cjs +660 -0
- package/pp-core/bin/lib/project-root.cjs +119 -0
- package/pp-core/bin/lib/prompt-budget.cjs +305 -0
- package/pp-core/bin/lib/research-provider.cjs +137 -0
- package/pp-core/bin/lib/research-store.cjs +167 -0
- package/pp-core/bin/lib/review-reviewer-selection.cjs +121 -0
- package/pp-core/bin/lib/roadmap-command-router.cjs +166 -0
- package/pp-core/bin/lib/roadmap-parser.cjs +456 -0
- package/pp-core/bin/lib/roadmap-upgrade.cjs +476 -0
- package/pp-core/bin/lib/roadmap.cjs +738 -0
- package/pp-core/bin/lib/runtime-artifact-conversion.cjs +1966 -0
- package/pp-core/bin/lib/runtime-artifact-layout.cjs +342 -0
- package/pp-core/bin/lib/runtime-config-adapter-registry.cjs +103 -0
- package/pp-core/bin/lib/runtime-homes.cjs +272 -0
- package/pp-core/bin/lib/runtime-hooks-surface.cjs +1460 -0
- package/pp-core/bin/lib/runtime-name-policy.cjs +97 -0
- package/pp-core/bin/lib/runtime-slash.cjs +137 -0
- package/pp-core/bin/lib/schema-detect.cjs +159 -0
- package/pp-core/bin/lib/secrets.cjs +34 -0
- package/pp-core/bin/lib/security.cjs +480 -0
- package/pp-core/bin/lib/semver-compare.cjs +42 -0
- package/pp-core/bin/lib/shell-command-projection.cjs +550 -0
- package/pp-core/bin/lib/state-command-router.cjs +172 -0
- package/pp-core/bin/lib/state-document.cjs +312 -0
- package/pp-core/bin/lib/state.cjs +2587 -0
- package/pp-core/bin/lib/surface.cjs +505 -0
- package/pp-core/bin/lib/task-command-router.cjs +85 -0
- package/pp-core/bin/lib/teams-status.cjs +74 -0
- package/pp-core/bin/lib/template.cjs +246 -0
- package/pp-core/bin/lib/uat-predicate.cjs +329 -0
- package/pp-core/bin/lib/uat.cjs +359 -0
- package/pp-core/bin/lib/ui-safety-gate.cjs +98 -0
- package/pp-core/bin/lib/update-context.cjs +221 -0
- package/pp-core/bin/lib/validate-command-router.cjs +91 -0
- package/pp-core/bin/lib/validate.cjs +122 -0
- package/pp-core/bin/lib/verification-command-router.cjs +31 -0
- package/pp-core/bin/lib/verification.cjs +196 -0
- package/pp-core/bin/lib/verify-command-router.cjs +44 -0
- package/pp-core/bin/lib/verify.cjs +1932 -0
- package/pp-core/bin/lib/workstream-inventory-builder.cjs +81 -0
- package/pp-core/bin/lib/workstream-inventory.cjs +147 -0
- package/pp-core/bin/lib/workstream-name-policy.cjs +91 -0
- package/pp-core/bin/lib/workstream.cjs +386 -0
- package/pp-core/bin/lib/worktree-base-ref.cjs +350 -0
- package/pp-core/bin/lib/worktree-safety.cjs +985 -0
- package/pp-core/bin/pp-tools.cjs +2239 -0
- package/pp-core/bin/pp_run +20 -0
- package/pp-core/bin/shared/config-defaults.manifest.json +97 -0
- package/pp-core/bin/shared/config-schema.manifest.json +176 -0
- package/pp-core/bin/shared/model-catalog.json +160 -0
- package/pp-core/bin/shared/runtime-aliases.manifest.json +79 -0
- package/pp-core/bin/verify-reapply-patches.cjs +400 -0
- package/pp-core/contexts/dev.md +21 -0
- package/pp-core/contexts/research.md +22 -0
- package/pp-core/contexts/review.md +23 -0
- package/pp-core/references/agent-contracts.md +79 -0
- package/pp-core/references/ai-evals.md +156 -0
- package/pp-core/references/ai-frameworks.md +186 -0
- package/pp-core/references/artifact-types.md +131 -0
- package/pp-core/references/autonomous-smart-discuss.md +277 -0
- package/pp-core/references/checkpoints.md +814 -0
- package/pp-core/references/common-bug-patterns.md +114 -0
- package/pp-core/references/context-budget.md +85 -0
- package/pp-core/references/continuation-format.md +253 -0
- package/pp-core/references/debugger-philosophy.md +76 -0
- package/pp-core/references/decimal-phase-calculation.md +64 -0
- package/pp-core/references/doc-conflict-engine.md +91 -0
- package/pp-core/references/domain-probes.md +125 -0
- package/pp-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json +7 -0
- package/pp-core/references/edge-probe-fixtures/01-round-half-even/requirements.json +1 -0
- package/pp-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json +8 -0
- package/pp-core/references/edge-probe-fixtures/02-merge-intervals/requirements.json +1 -0
- package/pp-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json +7 -0
- package/pp-core/references/edge-probe-fixtures/03-truncate-graphemes/requirements.json +1 -0
- package/pp-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json +7 -0
- package/pp-core/references/edge-probe-fixtures/04-money-rounding/requirements.json +1 -0
- package/pp-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json +8 -0
- package/pp-core/references/edge-probe-fixtures/05-list-dedupe/requirements.json +1 -0
- package/pp-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json +8 -0
- package/pp-core/references/edge-probe-fixtures/06-resolved-mixed/requirements.json +1 -0
- package/pp-core/references/edge-probe-fixtures/06-resolved-mixed/resolutions.json +4 -0
- package/pp-core/references/edge-probe.md +272 -0
- package/pp-core/references/execute-mvp-tdd.md +81 -0
- package/pp-core/references/executor-examples.md +110 -0
- package/pp-core/references/few-shot-examples/plan-checker.md +73 -0
- package/pp-core/references/few-shot-examples/verifier.md +109 -0
- package/pp-core/references/gate-prompts.md +100 -0
- package/pp-core/references/gates.md +70 -0
- package/pp-core/references/git-integration.md +298 -0
- package/pp-core/references/git-planning-commit.md +40 -0
- package/pp-core/references/ios-scaffold.md +123 -0
- package/pp-core/references/loop-hook-dispatch.md +61 -0
- package/pp-core/references/mandatory-initial-read.md +2 -0
- package/pp-core/references/model-profile-resolution.md +38 -0
- package/pp-core/references/model-profiles.md +245 -0
- package/pp-core/references/mvp-concepts.md +49 -0
- package/pp-core/references/phase-argument-parsing.md +61 -0
- package/pp-core/references/planner-antipatterns.md +176 -0
- package/pp-core/references/planner-chunked.md +49 -0
- package/pp-core/references/planner-gap-closure.md +62 -0
- package/pp-core/references/planner-graphify-auto-update.md +67 -0
- package/pp-core/references/planner-guidance.md +186 -0
- package/pp-core/references/planner-human-verify-mode.md +57 -0
- package/pp-core/references/planner-interface-context.md +62 -0
- package/pp-core/references/planner-load-graph-context.md +36 -0
- package/pp-core/references/planner-mvp-mode.md +53 -0
- package/pp-core/references/planner-reviews.md +42 -0
- package/pp-core/references/planner-revision.md +87 -0
- package/pp-core/references/planner-source-audit.md +73 -0
- package/pp-core/references/planning-config.md +477 -0
- package/pp-core/references/prohibition-probe-fixtures/01-streak-reminder/expected.json +14 -0
- package/pp-core/references/prohibition-probe-fixtures/02-clean-utility/expected.json +4 -0
- package/pp-core/references/prohibition-probe-fixtures/03-multi-prohibition/expected.json +32 -0
- package/pp-core/references/prohibition-probe.md +326 -0
- package/pp-core/references/project-skills-discovery.md +19 -0
- package/pp-core/references/questioning.md +162 -0
- package/pp-core/references/research-documentation-lookup.md +29 -0
- package/pp-core/references/research-philosophy.md +29 -0
- package/pp-core/references/research-verification-protocol.md +27 -0
- package/pp-core/references/revision-loop.md +97 -0
- package/pp-core/references/scout-codebase.md +51 -0
- package/pp-core/references/skeleton-template.md +48 -0
- package/pp-core/references/sketch-interactivity.md +41 -0
- package/pp-core/references/sketch-theme-system.md +94 -0
- package/pp-core/references/sketch-tooling.md +45 -0
- package/pp-core/references/sketch-variant-patterns.md +81 -0
- package/pp-core/references/spidr-splitting.md +69 -0
- package/pp-core/references/tdd.md +330 -0
- package/pp-core/references/thinking-models-debug.md +44 -0
- package/pp-core/references/thinking-models-execution.md +50 -0
- package/pp-core/references/thinking-models-planning.md +62 -0
- package/pp-core/references/thinking-models-research.md +50 -0
- package/pp-core/references/thinking-models-verification.md +55 -0
- package/pp-core/references/thinking-partner.md +96 -0
- package/pp-core/references/ui-brand.md +162 -0
- package/pp-core/references/universal-anti-patterns.md +63 -0
- package/pp-core/references/user-profiling.md +681 -0
- package/pp-core/references/user-story-template.md +58 -0
- package/pp-core/references/verification-overrides.md +227 -0
- package/pp-core/references/verification-patterns.md +612 -0
- package/pp-core/references/verify-mvp-mode.md +85 -0
- package/pp-core/references/workstream-flag.md +111 -0
- package/pp-core/references/worktree-branch-check.md +44 -0
- package/pp-core/references/worktree-path-safety.md +67 -0
- package/pp-core/templates/AI-SPEC.md +246 -0
- package/pp-core/templates/DEBUG.md +169 -0
- package/pp-core/templates/README.md +77 -0
- package/pp-core/templates/SECURITY.md +61 -0
- package/pp-core/templates/UAT.md +265 -0
- package/pp-core/templates/UI-SPEC.md +100 -0
- package/pp-core/templates/VALIDATION.md +76 -0
- package/pp-core/templates/claude-md.md +145 -0
- package/pp-core/templates/codebase/architecture.md +255 -0
- package/pp-core/templates/codebase/concerns.md +310 -0
- package/pp-core/templates/codebase/conventions.md +307 -0
- package/pp-core/templates/codebase/integrations.md +280 -0
- package/pp-core/templates/codebase/stack.md +186 -0
- package/pp-core/templates/codebase/structure.md +285 -0
- package/pp-core/templates/codebase/testing.md +480 -0
- package/pp-core/templates/config.json +62 -0
- package/pp-core/templates/context.md +352 -0
- package/pp-core/templates/continue-here.md +78 -0
- package/pp-core/templates/copilot-instructions.md +7 -0
- package/pp-core/templates/debug-subagent-prompt.md +91 -0
- package/pp-core/templates/dev-preferences.md +21 -0
- package/pp-core/templates/discovery.md +146 -0
- package/pp-core/templates/discussion-log.md +63 -0
- package/pp-core/templates/milestone-archive.md +123 -0
- package/pp-core/templates/milestone.md +115 -0
- package/pp-core/templates/phase-prompt.md +610 -0
- package/pp-core/templates/planner-subagent-prompt.md +117 -0
- package/pp-core/templates/project.md +203 -0
- package/pp-core/templates/requirements.md +231 -0
- package/pp-core/templates/research-project/ARCHITECTURE.md +204 -0
- package/pp-core/templates/research-project/FEATURES.md +147 -0
- package/pp-core/templates/research-project/PITFALLS.md +200 -0
- package/pp-core/templates/research-project/STACK.md +120 -0
- package/pp-core/templates/research-project/SUMMARY.md +170 -0
- package/pp-core/templates/research.md +592 -0
- package/pp-core/templates/retrospective.md +54 -0
- package/pp-core/templates/roadmap.md +202 -0
- package/pp-core/templates/spec.md +333 -0
- package/pp-core/templates/state.md +195 -0
- package/pp-core/templates/summary-complex.md +60 -0
- package/pp-core/templates/summary-minimal.md +42 -0
- package/pp-core/templates/summary-standard.md +49 -0
- package/pp-core/templates/summary.md +249 -0
- package/pp-core/templates/user-profile.md +146 -0
- package/pp-core/templates/user-setup.md +311 -0
- package/pp-core/templates/verification-report.md +335 -0
- package/pp-core/workflows/_runtime-launcher.snippet.sh +1 -0
- package/pp-core/workflows/add-backlog.md +91 -0
- package/pp-core/workflows/add-phase.md +113 -0
- package/pp-core/workflows/add-tests.md +355 -0
- package/pp-core/workflows/add-todo.md +161 -0
- package/pp-core/workflows/ai-integration-phase.md +295 -0
- package/pp-core/workflows/analyze-dependencies.md +96 -0
- package/pp-core/workflows/audit-fix.md +178 -0
- package/pp-core/workflows/audit-milestone.md +362 -0
- package/pp-core/workflows/audit-uat.md +110 -0
- package/pp-core/workflows/autonomous.md +886 -0
- package/pp-core/workflows/check-todos.md +180 -0
- package/pp-core/workflows/cleanup.md +195 -0
- package/pp-core/workflows/code-review-fix.md +506 -0
- package/pp-core/workflows/code-review.md +696 -0
- package/pp-core/workflows/complete-milestone.md +857 -0
- package/pp-core/workflows/debug.md +237 -0
- package/pp-core/workflows/diagnose-issues.md +245 -0
- package/pp-core/workflows/discovery-phase.md +291 -0
- package/pp-core/workflows/discovery-sprint.md +1546 -0
- package/pp-core/workflows/discuss-phase/modes/advisor.md +176 -0
- package/pp-core/workflows/discuss-phase/modes/all.md +28 -0
- package/pp-core/workflows/discuss-phase/modes/analyze.md +44 -0
- package/pp-core/workflows/discuss-phase/modes/auto.md +57 -0
- package/pp-core/workflows/discuss-phase/modes/batch.md +52 -0
- package/pp-core/workflows/discuss-phase/modes/chain.md +98 -0
- package/pp-core/workflows/discuss-phase/modes/default.md +141 -0
- package/pp-core/workflows/discuss-phase/modes/power.md +44 -0
- package/pp-core/workflows/discuss-phase/modes/text.md +55 -0
- package/pp-core/workflows/discuss-phase/templates/checkpoint.json +18 -0
- package/pp-core/workflows/discuss-phase/templates/context.md +136 -0
- package/pp-core/workflows/discuss-phase/templates/discussion-log.md +50 -0
- package/pp-core/workflows/discuss-phase-assumptions.md +675 -0
- package/pp-core/workflows/discuss-phase-power.md +291 -0
- package/pp-core/workflows/discuss-phase.md +520 -0
- package/pp-core/workflows/do.md +111 -0
- package/pp-core/workflows/docs-update.md +1168 -0
- package/pp-core/workflows/edit-phase.md +295 -0
- package/pp-core/workflows/eval-review.md +159 -0
- package/pp-core/workflows/execute-phase/steps/codebase-drift-gate.md +95 -0
- package/pp-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
- package/pp-core/workflows/execute-phase/steps/post-merge-gate.md +117 -0
- package/pp-core/workflows/execute-phase/steps/worktree-recovery-policy.md +9 -0
- package/pp-core/workflows/execute-phase.md +1707 -0
- package/pp-core/workflows/execute-plan.md +541 -0
- package/pp-core/workflows/explore.md +146 -0
- package/pp-core/workflows/extract-learnings.md +243 -0
- package/pp-core/workflows/fast.md +124 -0
- package/pp-core/workflows/forensics.md +279 -0
- package/pp-core/workflows/graduation.md +196 -0
- package/pp-core/workflows/health.md +224 -0
- package/pp-core/workflows/help/modes/brief.md +22 -0
- package/pp-core/workflows/help/modes/default.md +50 -0
- package/pp-core/workflows/help/modes/full.md +791 -0
- package/pp-core/workflows/help/modes/topic.md +74 -0
- package/pp-core/workflows/help.md +24 -0
- package/pp-core/workflows/import.md +256 -0
- package/pp-core/workflows/inbox.md +387 -0
- package/pp-core/workflows/ingest-docs.md +340 -0
- package/pp-core/workflows/insert-phase.md +152 -0
- package/pp-core/workflows/list-phase-assumptions.md +178 -0
- package/pp-core/workflows/list-workspaces.md +57 -0
- package/pp-core/workflows/manager.md +435 -0
- package/pp-core/workflows/map-codebase.md +444 -0
- package/pp-core/workflows/milestone-summary.md +224 -0
- package/pp-core/workflows/mvp-phase.md +222 -0
- package/pp-core/workflows/new-milestone.md +643 -0
- package/pp-core/workflows/new-project.md +1563 -0
- package/pp-core/workflows/new-workspace.md +240 -0
- package/pp-core/workflows/next.md +347 -0
- package/pp-core/workflows/node-repair.md +92 -0
- package/pp-core/workflows/note.md +158 -0
- package/pp-core/workflows/pause-work.md +250 -0
- package/pp-core/workflows/plan-milestone-gaps.md +281 -0
- package/pp-core/workflows/plan-phase.md +1755 -0
- package/pp-core/workflows/plan-review-convergence.md +369 -0
- package/pp-core/workflows/plant-seed.md +230 -0
- package/pp-core/workflows/pr-branch.md +159 -0
- package/pp-core/workflows/profile-user.md +455 -0
- package/pp-core/workflows/progress.md +756 -0
- package/pp-core/workflows/quick.md +1045 -0
- package/pp-core/workflows/reapply-patches.md +443 -0
- package/pp-core/workflows/remove-phase.md +156 -0
- package/pp-core/workflows/remove-workspace.md +108 -0
- package/pp-core/workflows/resume-project.md +348 -0
- package/pp-core/workflows/review.md +765 -0
- package/pp-core/workflows/scan.md +107 -0
- package/pp-core/workflows/secure-phase.md +184 -0
- package/pp-core/workflows/session-report.md +146 -0
- package/pp-core/workflows/settings-advanced.md +816 -0
- package/pp-core/workflows/settings-integrations.md +312 -0
- package/pp-core/workflows/settings.md +592 -0
- package/pp-core/workflows/ship.md +465 -0
- package/pp-core/workflows/sketch-wrap-up.md +286 -0
- package/pp-core/workflows/sketch.md +361 -0
- package/pp-core/workflows/spec-phase.md +495 -0
- package/pp-core/workflows/spike-wrap-up.md +307 -0
- package/pp-core/workflows/spike.md +453 -0
- package/pp-core/workflows/stats.md +80 -0
- package/pp-core/workflows/sync-skills.md +182 -0
- package/pp-core/workflows/thread.md +222 -0
- package/pp-core/workflows/transition.md +694 -0
- package/pp-core/workflows/ui-phase.md +328 -0
- package/pp-core/workflows/ui-review.md +193 -0
- package/pp-core/workflows/ultraplan-phase.md +199 -0
- package/pp-core/workflows/undo.md +314 -0
- package/pp-core/workflows/update.md +501 -0
- package/pp-core/workflows/validate-phase.md +183 -0
- package/pp-core/workflows/verify-phase.md +569 -0
- package/pp-core/workflows/verify-work.md +804 -0
- package/scripts/affected-tests-lib.cjs +554 -0
- package/scripts/audit-workflow-script-paths.cjs +73 -0
- package/scripts/base64-scan.sh +351 -0
- package/scripts/build-hooks.js +254 -0
- package/scripts/changeset/README.md +129 -0
- package/scripts/changeset/cli.cjs +597 -0
- package/scripts/changeset/github-release-notes.cjs +199 -0
- package/scripts/changeset/lint.cjs +147 -0
- package/scripts/changeset/new.cjs +151 -0
- package/scripts/changeset/parse.cjs +114 -0
- package/scripts/changeset/render.cjs +34 -0
- package/scripts/changeset/serialize.cjs +130 -0
- package/scripts/check-alias-drift.cjs +114 -0
- package/scripts/check-env.cjs +312 -0
- package/scripts/check-npm-integrity.cjs +215 -0
- package/scripts/ci-guard-runner.cjs +22 -0
- package/scripts/ci-prepare-test-scope.cjs +93 -0
- package/scripts/ci-rebase-check.cjs +86 -0
- package/scripts/ci-test-scope.cjs +441 -0
- package/scripts/command-contract-helpers.cjs +64 -0
- package/scripts/diff-touches-shipped-paths.cjs +149 -0
- package/scripts/fix-slash-commands.cjs +161 -0
- package/scripts/gen-capability-registry.cjs +2646 -0
- package/scripts/gen-commands-reference.cjs +139 -0
- package/scripts/gen-inventory-manifest.cjs +114 -0
- package/scripts/gen-loop-host-contract.cjs +526 -0
- package/scripts/gen-research-agents.cjs +276 -0
- package/scripts/generate-package-identity.cjs +134 -0
- package/scripts/issue-dedupe.cjs +278 -0
- package/scripts/issue-version-gate.cjs +140 -0
- package/scripts/lib/allowlist-ratchet.cjs +236 -0
- package/scripts/lib/cli-exit.cjs +56 -0
- package/scripts/lint-allow-test-rule-refs.allowlist.json +328 -0
- package/scripts/lint-allow-test-rule-refs.cjs +162 -0
- package/scripts/lint-command-contract.cjs +118 -0
- package/scripts/lint-descriptions.cjs +87 -0
- package/scripts/lint-docs-required.cjs +222 -0
- package/scripts/lint-legacy-dir-name.cjs +166 -0
- package/scripts/lint-package-identity-drift.cjs +141 -0
- package/scripts/lint-pr-check-project-dir.cjs +99 -0
- package/scripts/lint-regression-test-names.allowlist.json +269 -0
- package/scripts/lint-regression-test-names.cjs +117 -0
- package/scripts/lint-shell-command-projection-drift.cjs +62 -0
- package/scripts/lint-skill-deps.cjs +185 -0
- package/scripts/lint-test-file-count.allowlist.json +181 -0
- package/scripts/lint-test-file-count.cjs +246 -0
- package/scripts/lint-windows-test-portability.cjs +178 -0
- package/scripts/mutation-matrix.cjs +323 -0
- package/scripts/pr-target-policy.cjs +63 -0
- package/scripts/pr-template-policy.cjs +268 -0
- package/scripts/prompt-injection-scan.sh +207 -0
- package/scripts/registry-smoke.cjs +337 -0
- package/scripts/release-notes/discord-release-summary.cjs +373 -0
- package/scripts/release-notes/format-github-release-notes.cjs +261 -0
- package/scripts/release-tarball-smoke.cjs +763 -0
- package/scripts/research-profiles.cjs +149 -0
- package/scripts/run-affected-tests.cjs +7 -0
- package/scripts/run-tests.cjs +589 -0
- package/scripts/secret-scan-lint.sh +231 -0
- package/scripts/secret-scan.sh +358 -0
- package/scripts/setup-branch-protection.sh +234 -0
- package/scripts/strip-prose-atrefs.cjs +106 -0
- package/scripts/sync-manifest-versions.cjs +119 -0
- package/scripts/sync-next-version.cjs +133 -0
- package/scripts/sync-rulesets.sh +34 -0
- package/scripts/sync-runtime-launcher.cjs +425 -0
- package/scripts/test-failure-reasons.cjs +34 -0
- package/scripts/update-size-baseline.cjs +68 -0
- package/scripts/verify-npm-publish.cjs +240 -0
- package/scripts/verify-opengsd-sweep.cjs +288 -0
- package/scripts/verify-phase-02-rename.sh +258 -0
- package/scripts/verify-phase-03-rename.sh +376 -0
- package/scripts/workflow-policy.cjs +483 -0
- package/scripts/workflow-size.cjs +90 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Autonomous repair operator for failed task verification. Invoked by execute-plan when a task fails its done-criteria. Proposes and attempts structured fixes before escalating to the user.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<inputs>
|
|
6
|
+
- FAILED_TASK: Task number, name, and done-criteria from the plan
|
|
7
|
+
- ERROR: What verification produced — actual result vs expected
|
|
8
|
+
- PLAN_CONTEXT: Adjacent tasks and phase goal (for constraint awareness)
|
|
9
|
+
- REPAIR_BUDGET: Max repair attempts remaining (default: 2)
|
|
10
|
+
</inputs>
|
|
11
|
+
|
|
12
|
+
<repair_directive>
|
|
13
|
+
Analyze the failure and choose exactly one repair strategy:
|
|
14
|
+
|
|
15
|
+
**RETRY** — The approach was right but execution failed. Try again with a concrete adjustment.
|
|
16
|
+
- Use when: command error, missing dependency, wrong path, env issue, transient failure
|
|
17
|
+
- Output: `RETRY: [specific adjustment to make before retrying]`
|
|
18
|
+
|
|
19
|
+
**DECOMPOSE** — The task is too coarse. Break it into smaller verifiable sub-steps.
|
|
20
|
+
- Use when: done-criteria covers multiple concerns, implementation gaps are structural
|
|
21
|
+
- Output: `DECOMPOSE: [sub-task 1] | [sub-task 2] | ...` (max 3 sub-tasks)
|
|
22
|
+
- Sub-tasks must each have a single verifiable outcome
|
|
23
|
+
|
|
24
|
+
**PRUNE** — The task is infeasible given current constraints. Skip with justification.
|
|
25
|
+
- Use when: prerequisite missing and not fixable here, out of scope, contradicts an earlier decision
|
|
26
|
+
- Output: `PRUNE: [one-sentence justification]`
|
|
27
|
+
|
|
28
|
+
**ESCALATE** — Repair budget exhausted, or this is an architectural decision (Rule 4).
|
|
29
|
+
- Use when: RETRY failed more than once with different approaches, or fix requires structural change
|
|
30
|
+
- Output: `ESCALATE: [what was tried] | [what decision is needed]`
|
|
31
|
+
</repair_directive>
|
|
32
|
+
|
|
33
|
+
<process>
|
|
34
|
+
|
|
35
|
+
<step name="diagnose">
|
|
36
|
+
Read the error and done-criteria carefully. Ask:
|
|
37
|
+
1. Is this a transient/environmental issue? → RETRY
|
|
38
|
+
2. Is the task verifiably too broad? → DECOMPOSE
|
|
39
|
+
3. Is a prerequisite genuinely missing and unfixable in scope? → PRUNE
|
|
40
|
+
4. Has RETRY already been attempted with this task? Check REPAIR_BUDGET. If 0 → ESCALATE
|
|
41
|
+
</step>
|
|
42
|
+
|
|
43
|
+
<step name="execute_retry">
|
|
44
|
+
If RETRY:
|
|
45
|
+
1. Apply the specific adjustment stated in the directive
|
|
46
|
+
2. Re-run the task implementation
|
|
47
|
+
3. Re-run verification
|
|
48
|
+
4. If passes → continue normally, log `[Node Repair - RETRY] Task [X]: [adjustment made]`
|
|
49
|
+
5. If fails again → decrement REPAIR_BUDGET, re-invoke node-repair with updated context
|
|
50
|
+
</step>
|
|
51
|
+
|
|
52
|
+
<step name="execute_decompose">
|
|
53
|
+
If DECOMPOSE:
|
|
54
|
+
1. Replace the failed task inline with the sub-tasks (do not modify PLAN.md on disk)
|
|
55
|
+
2. Execute sub-tasks sequentially, each with its own verification
|
|
56
|
+
3. If all sub-tasks pass → treat original task as succeeded, log `[Node Repair - DECOMPOSE] Task [X] → [N] sub-tasks`
|
|
57
|
+
4. If a sub-task fails → re-invoke node-repair for that sub-task (REPAIR_BUDGET applies per sub-task)
|
|
58
|
+
</step>
|
|
59
|
+
|
|
60
|
+
<step name="execute_prune">
|
|
61
|
+
If PRUNE:
|
|
62
|
+
1. Mark task as skipped with justification
|
|
63
|
+
2. Log to SUMMARY "Issues Encountered": `[Node Repair - PRUNE] Task [X]: [justification]`
|
|
64
|
+
3. Continue to next task
|
|
65
|
+
</step>
|
|
66
|
+
|
|
67
|
+
<step name="execute_escalate">
|
|
68
|
+
If ESCALATE:
|
|
69
|
+
1. Surface to user via verification_failure_gate with full repair history
|
|
70
|
+
2. Present: what was tried (each RETRY/DECOMPOSE attempt), what the blocker is, options available
|
|
71
|
+
3. Wait for user direction before continuing
|
|
72
|
+
</step>
|
|
73
|
+
|
|
74
|
+
</process>
|
|
75
|
+
|
|
76
|
+
<logging>
|
|
77
|
+
All repair actions must appear in SUMMARY.md under "## Deviations from Plan":
|
|
78
|
+
|
|
79
|
+
| Type | Format |
|
|
80
|
+
|------|--------|
|
|
81
|
+
| RETRY success | `[Node Repair - RETRY] Task X: [adjustment] — resolved` |
|
|
82
|
+
| RETRY fail → ESCALATE | `[Node Repair - RETRY] Task X: [N] attempts exhausted — escalated to user` |
|
|
83
|
+
| DECOMPOSE | `[Node Repair - DECOMPOSE] Task X split into [N] sub-tasks — all passed` |
|
|
84
|
+
| PRUNE | `[Node Repair - PRUNE] Task X skipped: [justification]` |
|
|
85
|
+
</logging>
|
|
86
|
+
|
|
87
|
+
<constraints>
|
|
88
|
+
- REPAIR_BUDGET defaults to 2 per task. Configurable via config.json `workflow.node_repair_budget`.
|
|
89
|
+
- Never modify PLAN.md on disk — decomposed sub-tasks are in-memory only.
|
|
90
|
+
- DECOMPOSE sub-tasks must be more specific than the original, not synonymous rewrites.
|
|
91
|
+
- If config.json `workflow.node_repair` is `false`, skip directly to verification_failure_gate (user retains original behavior).
|
|
92
|
+
</constraints>
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Zero-friction idea capture. One Write call, one confirmation line. No questions, no prompts.
|
|
3
|
+
|
|
4
|
+
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
|
|
5
|
+
Runs inline — no Task, no AskUserQuestion, no Bash.
|
|
6
|
+
</purpose>
|
|
7
|
+
|
|
8
|
+
<required_reading>
|
|
9
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
10
|
+
</required_reading>
|
|
11
|
+
|
|
12
|
+
<process>
|
|
13
|
+
|
|
14
|
+
<step name="storage_format">
|
|
15
|
+
**Note storage format.**
|
|
16
|
+
|
|
17
|
+
Notes are stored as individual markdown files:
|
|
18
|
+
|
|
19
|
+
- **Project scope**: `.planning/notes/{YYYY-MM-DD}-{slug}.md` — used when `.planning/` exists in cwd
|
|
20
|
+
- **Global scope**: `~/.claude/notes/{YYYY-MM-DD}-{slug}.md` — fallback when no `.planning/`, or when `--global` flag is present
|
|
21
|
+
|
|
22
|
+
Each note file:
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
---
|
|
26
|
+
date: "YYYY-MM-DD HH:mm"
|
|
27
|
+
promoted: false
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
{note text verbatim}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**`--global` flag**: Strip `--global` from anywhere in `$ARGUMENTS` before parsing. When present, force global scope regardless of whether `.planning/` exists.
|
|
34
|
+
|
|
35
|
+
**Important**: Do NOT create `.planning/` if it doesn't exist. Fall back to global scope silently.
|
|
36
|
+
</step>
|
|
37
|
+
|
|
38
|
+
<step name="parse_subcommand">
|
|
39
|
+
**Parse subcommand from $ARGUMENTS (after stripping --global).**
|
|
40
|
+
|
|
41
|
+
| Condition | Subcommand |
|
|
42
|
+
|-----------|------------|
|
|
43
|
+
| Arguments are exactly `list` (case-insensitive) | **list** |
|
|
44
|
+
| Arguments are exactly `promote <N>` where N is a number | **promote** |
|
|
45
|
+
| Arguments are empty (no text at all) | **list** |
|
|
46
|
+
| Anything else | **append** (the text IS the note) |
|
|
47
|
+
|
|
48
|
+
**Critical**: `list` is only a subcommand when it's the ENTIRE argument. `/pp-note list of groceries` saves a note with text "list of groceries". Same for `promote` — only a subcommand when followed by exactly one number.
|
|
49
|
+
</step>
|
|
50
|
+
|
|
51
|
+
<step name="append">
|
|
52
|
+
**Subcommand: append — create a timestamped note file.**
|
|
53
|
+
|
|
54
|
+
1. Determine scope (project or global) per storage format above
|
|
55
|
+
2. Ensure the notes directory exists (`.planning/notes/` or `~/.claude/notes/`)
|
|
56
|
+
3. Generate slug: first ~4 meaningful words of the note text, lowercase, hyphen-separated (strip articles/prepositions from the start)
|
|
57
|
+
4. Generate filename: `{YYYY-MM-DD}-{slug}.md`
|
|
58
|
+
- If a file with that name already exists, append `-2`, `-3`, etc.
|
|
59
|
+
5. Write the file with frontmatter and note text (see storage format)
|
|
60
|
+
6. Confirm with exactly one line: `Noted ({scope}): {note text}`
|
|
61
|
+
- Where `{scope}` is "project" or "global"
|
|
62
|
+
|
|
63
|
+
**Constraints:**
|
|
64
|
+
- **Never modify the note text** — capture verbatim, including typos
|
|
65
|
+
- **Never ask questions** — just write and confirm
|
|
66
|
+
- **Timestamp format**: Use local time, `YYYY-MM-DD HH:mm` (24-hour, no seconds)
|
|
67
|
+
</step>
|
|
68
|
+
|
|
69
|
+
<step name="list">
|
|
70
|
+
**Subcommand: list — show notes from both scopes.**
|
|
71
|
+
|
|
72
|
+
1. Glob `.planning/notes/*.md` (if directory exists) — project notes
|
|
73
|
+
2. Glob `~/.claude/notes/*.md` (if directory exists) — global notes
|
|
74
|
+
3. For each file, read frontmatter to get `date` and `promoted` status
|
|
75
|
+
4. Exclude files where `promoted: true` from active counts (but still show them, dimmed)
|
|
76
|
+
5. Sort by date, number all active entries sequentially starting at 1
|
|
77
|
+
6. If total active entries > 20, show only the last 10 with a note about how many were omitted
|
|
78
|
+
|
|
79
|
+
**Display format:**
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Notes:
|
|
83
|
+
|
|
84
|
+
Project (.planning/notes/):
|
|
85
|
+
1. [2026-02-08 14:32] refactor the hook system to support async validators
|
|
86
|
+
2. [promoted] [2026-02-08 14:40] add rate limiting to the API endpoints
|
|
87
|
+
3. [2026-02-08 15:10] consider adding a --dry-run flag to build
|
|
88
|
+
|
|
89
|
+
Global (~/.claude/notes/):
|
|
90
|
+
4. [2026-02-08 10:00] cross-project idea about shared config
|
|
91
|
+
|
|
92
|
+
{count} active note(s). Use `/pp-note promote <N>` to convert to a todo.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
If a scope has no directory or no entries, show: `(no notes)`
|
|
96
|
+
</step>
|
|
97
|
+
|
|
98
|
+
<step name="promote">
|
|
99
|
+
**Subcommand: promote — convert a note into a todo.**
|
|
100
|
+
|
|
101
|
+
1. Run the **list** logic to build the numbered index (both scopes)
|
|
102
|
+
2. Find entry N from the numbered list
|
|
103
|
+
3. If N is invalid or refers to an already-promoted note, tell the user and stop
|
|
104
|
+
4. **Requires `.planning/` directory** — if it doesn't exist, warn: "Todos require a GSD project. Run `/pp:new-project` to initialize one."
|
|
105
|
+
5. Ensure `.planning/todos/pending/` directory exists
|
|
106
|
+
6. Generate todo ID: `{NNN}-{slug}` where NNN is the next sequential number (scan both `.planning/todos/pending/` and `.planning/todos/completed/` for the highest existing number, increment by 1, zero-pad to 3 digits) and slug is the first ~4 meaningful words of the note text
|
|
107
|
+
7. Extract the note text from the source file (body after frontmatter)
|
|
108
|
+
8. Create `.planning/todos/pending/{id}.md`:
|
|
109
|
+
|
|
110
|
+
```yaml
|
|
111
|
+
---
|
|
112
|
+
title: "{note text}"
|
|
113
|
+
status: pending
|
|
114
|
+
priority: P2
|
|
115
|
+
source: "promoted from /pp-note"
|
|
116
|
+
created: {YYYY-MM-DD}
|
|
117
|
+
theme: general
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Goal
|
|
121
|
+
|
|
122
|
+
{note text}
|
|
123
|
+
|
|
124
|
+
## Context
|
|
125
|
+
|
|
126
|
+
Promoted from quick note captured on {original date}.
|
|
127
|
+
|
|
128
|
+
## Acceptance Criteria
|
|
129
|
+
|
|
130
|
+
- [ ] {primary criterion derived from note text}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
9. Mark the source note file as promoted: update its frontmatter to `promoted: true`
|
|
134
|
+
10. Confirm: `Promoted note {N} to todo {id}: {note text}`
|
|
135
|
+
</step>
|
|
136
|
+
|
|
137
|
+
</process>
|
|
138
|
+
|
|
139
|
+
<edge_cases>
|
|
140
|
+
1. **"list" as note text**: `/pp-note list of things` saves note "list of things" (subcommand only when `list` is the entire arg)
|
|
141
|
+
2. **No `.planning/`**: Falls back to global `~/.claude/notes/` — works in any directory
|
|
142
|
+
3. **Promote without project**: Warns that todos require `.planning/`, suggests `/pp:new-project`
|
|
143
|
+
4. **Large files**: `list` shows last 10 when >20 active entries
|
|
144
|
+
5. **Duplicate slugs**: Append `-2`, `-3` etc. to filename if slug already used on same date
|
|
145
|
+
6. **`--global` position**: Stripped from anywhere — `--global my idea` and `my idea --global` both save "my idea" globally
|
|
146
|
+
7. **Promote already-promoted**: Tell user "Note {N} is already promoted" and stop
|
|
147
|
+
8. **Empty note text after stripping flags**: Treat as `list` subcommand
|
|
148
|
+
</edge_cases>
|
|
149
|
+
|
|
150
|
+
<success_criteria>
|
|
151
|
+
- [ ] Append: Note file written with correct frontmatter and verbatim text
|
|
152
|
+
- [ ] Append: No questions asked — instant capture
|
|
153
|
+
- [ ] List: Both scopes shown with sequential numbering
|
|
154
|
+
- [ ] List: Promoted notes shown but dimmed
|
|
155
|
+
- [ ] Promote: Todo created with correct format
|
|
156
|
+
- [ ] Promote: Source note marked as promoted
|
|
157
|
+
- [ ] Global fallback: Works when no `.planning/` exists
|
|
158
|
+
</success_criteria>
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Create structured `.planning/HANDOFF.json` and `.continue-here.md` handoff files to preserve complete work state across sessions. The JSON provides machine-readable state for `/pp:resume-work`; the markdown provides human-readable context.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="detect">
|
|
12
|
+
## Context Detection
|
|
13
|
+
|
|
14
|
+
Determine what kind of work is being paused and set the handoff destination accordingly:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Check for active phase
|
|
18
|
+
phase=$(( ls -lt .planning/phases/*/PLAN.md 2>/dev/null || true ) | head -1 | grep -oP 'phases/\K[^/]+' || true)
|
|
19
|
+
|
|
20
|
+
# Check for active spike
|
|
21
|
+
spike=$(( ls -lt .planning/spikes/*/SPIKE.md .planning/spikes/*/DESIGN.md .planning/spikes/*/README.md 2>/dev/null || true ) | head -1 | grep -oP 'spikes/\K[^/]+' || true)
|
|
22
|
+
|
|
23
|
+
# Check for active sketch
|
|
24
|
+
sketch=$(( ls -lt .planning/sketches/*/README.md .planning/sketches/*/index.html 2>/dev/null || true ) | head -1 | grep -oP 'sketches/\K[^/]+' || true)
|
|
25
|
+
|
|
26
|
+
# Check for active deliberation
|
|
27
|
+
deliberation=$(ls .planning/deliberations/*.md 2>/dev/null | head -1 || true)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- **Phase work**: active phase directory → handoff to `.planning/phases/XX-name/.continue-here.md`
|
|
31
|
+
- **Spike work**: active spike directory or spike-related files (no active phase) → handoff to `.planning/spikes/SPIKE-NNN/.continue-here.md` (create directory if needed)
|
|
32
|
+
- **Sketch work**: active sketch directory (no active phase/spike) → handoff to `.planning/sketches/.continue-here.md`
|
|
33
|
+
- **Deliberation work**: active deliberation file (no phase/spike/sketch) → handoff to `.planning/deliberations/.continue-here.md`
|
|
34
|
+
- **Research work**: research notes exist but no phase/spike/sketch/deliberation → handoff to `.planning/.continue-here.md`
|
|
35
|
+
- **Default**: no detectable context → handoff to `.planning/.continue-here.md`, note the ambiguity in `<current_state>`
|
|
36
|
+
|
|
37
|
+
If phase is detected, proceed with phase handoff path. Otherwise use the first matching non-phase path above.
|
|
38
|
+
</step>
|
|
39
|
+
|
|
40
|
+
<step name="gather">
|
|
41
|
+
**Collect complete state for handoff:**
|
|
42
|
+
|
|
43
|
+
1. **Current position**: Which phase, which plan, which task
|
|
44
|
+
2. **Work completed**: What got done this session
|
|
45
|
+
3. **Work remaining**: What's left in current plan/phase
|
|
46
|
+
4. **Decisions made**: Key decisions and rationale
|
|
47
|
+
5. **Blockers/issues**: Anything stuck
|
|
48
|
+
6. **Human actions pending**: Things that need manual intervention (MCP setup, API keys, approvals, manual testing)
|
|
49
|
+
7. **Background processes**: Any running servers/watchers that were part of the workflow
|
|
50
|
+
8. **Files modified**: What's changed but not committed
|
|
51
|
+
9. **Outstanding async external jobs**: any `.planning/async-jobs/*.json` manifests for non-terminal jobs — record job id, backend, status, expected artifacts, verification + resume commands, and any watcher/daemon state. Do NOT cancel the external job; it keeps running across the pause.
|
|
52
|
+
10. **Blocking constraints**: Anti-patterns or methodological failures encountered during this session that a resuming agent MUST be aware of before proceeding. Only include items discovered through actual failure — not warnings or predictions. Assign each constraint a `severity`:
|
|
53
|
+
- `blocking` — The resuming agent MUST demonstrate understanding before proceeding. The discuss-phase and execute-phase workflows will enforce a mandatory understanding check.
|
|
54
|
+
- `advisory` — Important context but does not gate resumption.
|
|
55
|
+
|
|
56
|
+
Ask user for clarifications if needed via conversational questions.
|
|
57
|
+
|
|
58
|
+
**Also inspect SUMMARY.md files for false completions:**
|
|
59
|
+
```bash
|
|
60
|
+
# Check for placeholder content in existing summaries
|
|
61
|
+
grep -l "To be filled\|placeholder\|TBD" .planning/phases/*/*.md 2>/dev/null || true
|
|
62
|
+
```
|
|
63
|
+
Report any summaries with placeholder content as incomplete items.
|
|
64
|
+
</step>
|
|
65
|
+
|
|
66
|
+
<step name="write_structured">
|
|
67
|
+
**Write structured handoff to `.planning/HANDOFF.json`:**
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
_PP_SHIM_NAME="pp-tools.cjs"; _PP_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; PP_TOOLS="${_PP_RUNTIME_ROOT}/pp-core/bin/${_PP_SHIM_NAME}"; if [ -f "$PP_TOOLS" ]; then pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${_PP_RUNTIME_ROOT}/.claude/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${_PP_RUNTIME_ROOT}/.claude/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${_PP_RUNTIME_ROOT}/.codex/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${_PP_RUNTIME_ROOT}/.codex/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif command -v pp-tools >/dev/null 2>&1; then PP_TOOLS="$(command -v pp-tools)"; pp_run() { "$PP_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="$HOME/.claude/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${HERMES_HOME:-$HOME/.hermes}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${CODEX_HOME:-$HOME/.codex}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/pp-core/bin/${_PP_SHIM_NAME}" ]; then PP_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/pp-core/bin/${_PP_SHIM_NAME}"; pp_run() { node "$PP_TOOLS" "$@"; }; else echo "ERROR: pp-tools.cjs not found at $PP_TOOLS and pp-tools is not on PATH. Run: npx -y @pareto4/pp-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${PP_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${PP_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
|
|
71
|
+
timestamp=$(pp_run query current-timestamp full --raw)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"version": "1.0",
|
|
77
|
+
"timestamp": "{timestamp}",
|
|
78
|
+
"phase": "{phase_number}",
|
|
79
|
+
"phase_name": "{phase_name}",
|
|
80
|
+
"phase_dir": "{phase_dir}",
|
|
81
|
+
"plan": {current_plan_number},
|
|
82
|
+
"task": {current_task_number},
|
|
83
|
+
"total_tasks": {total_task_count},
|
|
84
|
+
"status": "paused",
|
|
85
|
+
"completed_tasks": [
|
|
86
|
+
{"id": 1, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
|
|
87
|
+
{"id": 2, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
|
|
88
|
+
{"id": 3, "name": "{task_name}", "status": "in_progress", "progress": "{what_done}"}
|
|
89
|
+
],
|
|
90
|
+
"remaining_tasks": [
|
|
91
|
+
{"id": 4, "name": "{task_name}", "status": "not_started"},
|
|
92
|
+
{"id": 5, "name": "{task_name}", "status": "not_started"}
|
|
93
|
+
],
|
|
94
|
+
"blockers": [
|
|
95
|
+
{"description": "{blocker}", "type": "technical|human_action|external", "workaround": "{if any}"}
|
|
96
|
+
],
|
|
97
|
+
"async_jobs": [
|
|
98
|
+
{"manifest": ".planning/async-jobs/{job}.json", "job_id": "{id}", "backend": "{backend}", "status": "running", "submit_command": "{cmd}", "submitted_at": "{iso8601}", "expected_artifacts": ["..."], "verification_command": "{cmd}", "resume_command": "{cmd}"}
|
|
99
|
+
],
|
|
100
|
+
"human_actions_pending": [
|
|
101
|
+
{"action": "{what needs to be done}", "context": "{why}", "blocking": true}
|
|
102
|
+
],
|
|
103
|
+
"decisions": [
|
|
104
|
+
{"decision": "{what}", "rationale": "{why}", "phase": "{phase_number}"}
|
|
105
|
+
],
|
|
106
|
+
"uncommitted_files": [],
|
|
107
|
+
"next_action": "{specific first action when resuming}",
|
|
108
|
+
"context_notes": "{mental state, approach, what you were thinking}"
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Any recorded `async_jobs` entries are the primary resume context on the next session — check them first before treating a PLAN-without-SUMMARY as incomplete work.
|
|
113
|
+
</step>
|
|
114
|
+
|
|
115
|
+
<step name="write">
|
|
116
|
+
**Write handoff to the path determined in the detect step** (e.g. `.planning/phases/XX-name/.continue-here.md`, `.planning/spikes/SPIKE-NNN/.continue-here.md`, or `.planning/.continue-here.md`):
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
---
|
|
120
|
+
context: [phase|spike|sketch|deliberation|research|default]
|
|
121
|
+
phase: XX-name
|
|
122
|
+
task: 3
|
|
123
|
+
total_tasks: 7
|
|
124
|
+
status: in_progress
|
|
125
|
+
last_updated: [timestamp from current-timestamp]
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
# BLOCKING CONSTRAINTS — Read Before Anything Else
|
|
129
|
+
|
|
130
|
+
> These are not suggestions. Each constraint below was discovered through failure.
|
|
131
|
+
> Acknowledge each one explicitly before proceeding.
|
|
132
|
+
|
|
133
|
+
- [ ] CONSTRAINT: [name] — [what it is] — [structural mitigation required]
|
|
134
|
+
|
|
135
|
+
**Do not proceed until all boxes are checked.**
|
|
136
|
+
|
|
137
|
+
_If no constraints have been identified yet, remove this section._
|
|
138
|
+
|
|
139
|
+
## Critical Anti-Patterns
|
|
140
|
+
|
|
141
|
+
| Pattern | Description | Severity | Prevention Mechanism |
|
|
142
|
+
|---------|-------------|----------|---------------------|
|
|
143
|
+
| [pattern name] | [what it is and how it manifested] | blocking | [structural step that prevents recurrence — not acknowledgment] |
|
|
144
|
+
| [pattern name] | [what it is and how it manifested] | advisory | [guidance for avoiding it] |
|
|
145
|
+
|
|
146
|
+
**Severity values:** `blocking` — resuming agent must pass understanding check before proceeding. `advisory` — important context, does not gate resumption.
|
|
147
|
+
|
|
148
|
+
_Remove rows that do not apply. The discuss-phase and execute-phase workflows parse this table and enforce a mandatory understanding check for any `blocking` rows._
|
|
149
|
+
|
|
150
|
+
<current_state>
|
|
151
|
+
[Where exactly are we? Immediate context]
|
|
152
|
+
</current_state>
|
|
153
|
+
|
|
154
|
+
<completed_work>
|
|
155
|
+
|
|
156
|
+
Completed Tasks:
|
|
157
|
+
- Task 1: [name] - Done
|
|
158
|
+
- Task 2: [name] - Done
|
|
159
|
+
- Task 3: [name] - In progress, [what's done]
|
|
160
|
+
</completed_work>
|
|
161
|
+
|
|
162
|
+
<remaining_work>
|
|
163
|
+
|
|
164
|
+
- Task 3: [what's left]
|
|
165
|
+
- Task 4: Not started
|
|
166
|
+
- Task 5: Not started
|
|
167
|
+
</remaining_work>
|
|
168
|
+
|
|
169
|
+
<decisions_made>
|
|
170
|
+
|
|
171
|
+
- Decided to use [X] because [reason]
|
|
172
|
+
- Chose [approach] over [alternative] because [reason]
|
|
173
|
+
</decisions_made>
|
|
174
|
+
|
|
175
|
+
<blockers>
|
|
176
|
+
- [Blocker 1]: [status/workaround]
|
|
177
|
+
</blockers>
|
|
178
|
+
|
|
179
|
+
## Required Reading (in order)
|
|
180
|
+
<!-- List documents the resuming agent must read before acting -->
|
|
181
|
+
1. [document] — [why it matters]
|
|
182
|
+
1. `.planning/METHODOLOGY.md` (if it exists) — project analytical lenses; apply before any assumption analysis
|
|
183
|
+
|
|
184
|
+
## Critical Anti-Patterns (do NOT repeat these)
|
|
185
|
+
<!-- Mistakes discovered this session that must be structurally avoided -->
|
|
186
|
+
- [ANTI-PATTERN]: [what it is] → [structural mitigation]
|
|
187
|
+
|
|
188
|
+
## Infrastructure State
|
|
189
|
+
<!-- Running services, external state, environment specifics -->
|
|
190
|
+
- [service/env]: [current state]
|
|
191
|
+
|
|
192
|
+
## Pre-Execution Critique Required
|
|
193
|
+
<!-- Fill in ONLY if pausing between design and execution (e.g. spike design done, not yet run) -->
|
|
194
|
+
- Design artifact: [path]
|
|
195
|
+
- Critique focus: [key questions the critic should probe]
|
|
196
|
+
- Gate: Do NOT begin execution until critique is complete and design is revised
|
|
197
|
+
|
|
198
|
+
<context>
|
|
199
|
+
[Mental state, what were you thinking, the plan]
|
|
200
|
+
</context>
|
|
201
|
+
|
|
202
|
+
<next_action>
|
|
203
|
+
Start with: [specific first action when resuming]
|
|
204
|
+
</next_action>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Be specific enough for a fresh Claude to understand immediately.
|
|
208
|
+
|
|
209
|
+
Use `current-timestamp` for last_updated field. You can use init todos (which provides timestamps) or call directly:
|
|
210
|
+
```bash
|
|
211
|
+
timestamp=$(pp_run query current-timestamp full --raw)
|
|
212
|
+
```
|
|
213
|
+
</step>
|
|
214
|
+
|
|
215
|
+
<step name="commit">
|
|
216
|
+
```bash
|
|
217
|
+
pp_run query commit "wip: [context-name] paused at [X]/[Y]" --files [handoff-path] .planning/HANDOFF.json
|
|
218
|
+
```
|
|
219
|
+
</step>
|
|
220
|
+
|
|
221
|
+
<step name="confirm">
|
|
222
|
+
```
|
|
223
|
+
✓ Handoff created:
|
|
224
|
+
- .planning/HANDOFF.json (structured, machine-readable)
|
|
225
|
+
- [handoff-path] (human-readable)
|
|
226
|
+
|
|
227
|
+
Current state:
|
|
228
|
+
|
|
229
|
+
- Context: [phase|spike|deliberation|research]
|
|
230
|
+
- Location: [XX-name or SPIKE-NNN]
|
|
231
|
+
- Task: [X] of [Y]
|
|
232
|
+
- Status: [in_progress/blocked]
|
|
233
|
+
- Blockers: [count] ({human_actions_pending count} need human action)
|
|
234
|
+
- Committed as WIP
|
|
235
|
+
|
|
236
|
+
To resume: /pp:resume-work
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
</step>
|
|
240
|
+
|
|
241
|
+
</process>
|
|
242
|
+
|
|
243
|
+
<success_criteria>
|
|
244
|
+
- [ ] Context detected (phase/spike/deliberation/research/default)
|
|
245
|
+
- [ ] .continue-here.md created at correct path for detected context
|
|
246
|
+
- [ ] Required Reading, Anti-Patterns, and Infrastructure State sections filled
|
|
247
|
+
- [ ] Pre-Execution Critique section filled if pausing between design and execution
|
|
248
|
+
- [ ] Committed as WIP
|
|
249
|
+
- [ ] User knows location and how to resume
|
|
250
|
+
</success_criteria>
|