prjct-cli 1.22.0 → 1.24.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/CHANGELOG.md +230 -0
- package/bin/prjct +30 -13
- package/dist/bin/prjct-core.mjs +1748 -0
- package/dist/bin/prjct.mjs +17 -36672
- package/dist/cli/linear.mjs +14 -0
- package/dist/daemon/entry.mjs +1429 -0
- package/dist/templates.json +1 -0
- package/package.json +4 -5
- package/bin/prjct.ts +0 -342
- package/core/__tests__/agentic/analysis-injection.test.ts +0 -377
- package/core/__tests__/agentic/cache-eviction.test.ts +0 -294
- package/core/__tests__/agentic/command-context.test.ts +0 -281
- package/core/__tests__/agentic/command-executor.test.ts +0 -659
- package/core/__tests__/agentic/domain-classifier.test.ts +0 -330
- package/core/__tests__/agentic/injection-validator.test.ts +0 -255
- package/core/__tests__/agentic/memory-system.test.ts +0 -281
- package/core/__tests__/agentic/plan-mode.test.ts +0 -386
- package/core/__tests__/agentic/prompt-assembly.test.ts +0 -298
- package/core/__tests__/agentic/prompt-builder.test.ts +0 -243
- package/core/__tests__/agentic/response-validator.test.ts +0 -263
- package/core/__tests__/agentic/semantic-matching.test.ts +0 -131
- package/core/__tests__/agentic/smart-context.test.ts +0 -372
- package/core/__tests__/agentic/tech-normalizer.test.ts +0 -136
- package/core/__tests__/agentic/token-budget.test.ts +0 -294
- package/core/__tests__/ai-tools/formatters.test.ts +0 -476
- package/core/__tests__/domain/bm25.test.ts +0 -225
- package/core/__tests__/domain/change-propagator.test.ts +0 -100
- package/core/__tests__/domain/fibonacci.test.ts +0 -113
- package/core/__tests__/domain/file-hasher.test.ts +0 -146
- package/core/__tests__/domain/file-ranker.test.ts +0 -169
- package/core/__tests__/domain/git-cochange.test.ts +0 -121
- package/core/__tests__/domain/import-graph.test.ts +0 -156
- package/core/__tests__/domain/velocity.test.ts +0 -623
- package/core/__tests__/infrastructure/performance-tracker.test.ts +0 -328
- package/core/__tests__/schemas/model.test.ts +0 -272
- package/core/__tests__/services/dependency-validator.test.ts +0 -175
- package/core/__tests__/services/hierarchical-agent-resolver.test.ts +0 -359
- package/core/__tests__/services/nested-context-resolver.test.ts +0 -443
- package/core/__tests__/services/project-index.test.ts +0 -355
- package/core/__tests__/services/staleness-checker.test.ts +0 -204
- package/core/__tests__/storage/analysis-storage.test.ts +0 -641
- package/core/__tests__/storage/archive-storage.test.ts +0 -455
- package/core/__tests__/storage/safe-reader.test.ts +0 -262
- package/core/__tests__/storage/sqlite-migration.test.ts +0 -1016
- package/core/__tests__/storage/state-storage-feedback.test.ts +0 -463
- package/core/__tests__/storage/state-storage-history.test.ts +0 -469
- package/core/__tests__/storage/storage-manager.test.ts +0 -383
- package/core/__tests__/storage/subtask-handoff.test.ts +0 -237
- package/core/__tests__/types/fs.test.ts +0 -125
- package/core/__tests__/utils/date-helper.test.ts +0 -449
- package/core/__tests__/utils/output.test.ts +0 -278
- package/core/__tests__/utils/preserve-sections.test.ts +0 -216
- package/core/__tests__/utils/project-commands.test.ts +0 -71
- package/core/__tests__/utils/retry.test.ts +0 -381
- package/core/__tests__/workflow/state-machine.test.ts +0 -216
- package/core/agentic/agent-router.ts +0 -150
- package/core/agentic/anti-hallucination.ts +0 -141
- package/core/agentic/chain-of-thought.ts +0 -234
- package/core/agentic/command-classifier.ts +0 -141
- package/core/agentic/command-context.ts +0 -168
- package/core/agentic/command-executor.ts +0 -471
- package/core/agentic/context-builder.ts +0 -285
- package/core/agentic/domain-classifier.ts +0 -525
- package/core/agentic/environment-block.ts +0 -102
- package/core/agentic/ground-truth.ts +0 -706
- package/core/agentic/index.ts +0 -193
- package/core/agentic/injection-validator.ts +0 -208
- package/core/agentic/loop-detector.ts +0 -451
- package/core/agentic/memory-system.ts +0 -1547
- package/core/agentic/orchestrator-executor.ts +0 -579
- package/core/agentic/plan-mode.ts +0 -525
- package/core/agentic/prompt-builder.ts +0 -1069
- package/core/agentic/response-validator.ts +0 -98
- package/core/agentic/services.ts +0 -167
- package/core/agentic/skill-loader.ts +0 -106
- package/core/agentic/smart-context.ts +0 -393
- package/core/agentic/tech-normalizer.ts +0 -167
- package/core/agentic/template-executor.ts +0 -272
- package/core/agentic/template-loader.ts +0 -109
- package/core/agentic/token-budget.ts +0 -226
- package/core/agentic/tool-registry.ts +0 -146
- package/core/agents/index.ts +0 -28
- package/core/agents/performance.ts +0 -429
- package/core/ai-tools/formatters.ts +0 -341
- package/core/ai-tools/generator.ts +0 -144
- package/core/ai-tools/index.ts +0 -15
- package/core/ai-tools/registry.ts +0 -201
- package/core/bus/bus.ts +0 -314
- package/core/bus/index.ts +0 -8
- package/core/cli/linear.ts +0 -500
- package/core/cli/lint-meta-commentary.ts +0 -177
- package/core/cli/start.ts +0 -386
- package/core/commands/analysis.ts +0 -1274
- package/core/commands/analytics.ts +0 -342
- package/core/commands/base.ts +0 -118
- package/core/commands/cleanup.ts +0 -157
- package/core/commands/command-data.ts +0 -463
- package/core/commands/commands.ts +0 -306
- package/core/commands/context.ts +0 -238
- package/core/commands/design.ts +0 -77
- package/core/commands/index.ts +0 -19
- package/core/commands/maintenance.ts +0 -77
- package/core/commands/performance.ts +0 -114
- package/core/commands/planning.ts +0 -662
- package/core/commands/register.ts +0 -127
- package/core/commands/registry.ts +0 -444
- package/core/commands/setup.ts +0 -280
- package/core/commands/shipping.ts +0 -267
- package/core/commands/snapshots.ts +0 -297
- package/core/commands/uninstall.ts +0 -542
- package/core/commands/velocity.ts +0 -149
- package/core/commands/workflow.ts +0 -505
- package/core/config/command-context.config.json +0 -66
- package/core/constants/index.ts +0 -379
- package/core/context/generator.ts +0 -368
- package/core/context-tools/files-tool.ts +0 -577
- package/core/context-tools/imports-tool.ts +0 -400
- package/core/context-tools/index.ts +0 -434
- package/core/context-tools/recent-tool.ts +0 -301
- package/core/context-tools/signatures-tool.ts +0 -495
- package/core/context-tools/summary-tool.ts +0 -301
- package/core/context-tools/token-counter.ts +0 -273
- package/core/context-tools/types.ts +0 -253
- package/core/domain/agent-generator.ts +0 -186
- package/core/domain/agent-loader.ts +0 -419
- package/core/domain/analyzer.ts +0 -387
- package/core/domain/architecture-generator.ts +0 -108
- package/core/domain/bm25.ts +0 -525
- package/core/domain/change-propagator.ts +0 -162
- package/core/domain/context-estimator.ts +0 -175
- package/core/domain/fibonacci.ts +0 -128
- package/core/domain/file-hasher.ts +0 -296
- package/core/domain/file-ranker.ts +0 -151
- package/core/domain/git-cochange.ts +0 -250
- package/core/domain/import-graph.ts +0 -315
- package/core/domain/snapshot-manager.ts +0 -415
- package/core/domain/task-stack.ts +0 -578
- package/core/domain/velocity.ts +0 -470
- package/core/errors.ts +0 -335
- package/core/events/events.ts +0 -85
- package/core/events/index.ts +0 -8
- package/core/index.ts +0 -481
- package/core/infrastructure/agent-detector.ts +0 -135
- package/core/infrastructure/ai-provider.ts +0 -578
- package/core/infrastructure/author-detector.ts +0 -133
- package/core/infrastructure/capability-installer.ts +0 -76
- package/core/infrastructure/claude-agent.ts +0 -297
- package/core/infrastructure/command-installer.ts +0 -752
- package/core/infrastructure/config-manager.ts +0 -364
- package/core/infrastructure/editors-config.ts +0 -172
- package/core/infrastructure/path-manager.ts +0 -571
- package/core/infrastructure/performance-tracker.ts +0 -326
- package/core/infrastructure/permission-manager.ts +0 -289
- package/core/infrastructure/setup.ts +0 -1061
- package/core/infrastructure/update-checker.ts +0 -246
- package/core/integrations/issue-tracker/enricher.ts +0 -271
- package/core/integrations/issue-tracker/index.ts +0 -8
- package/core/integrations/issue-tracker/manager.ts +0 -286
- package/core/integrations/issue-tracker/types.ts +0 -310
- package/core/integrations/jira/cache.ts +0 -57
- package/core/integrations/jira/client.ts +0 -688
- package/core/integrations/jira/index.ts +0 -23
- package/core/integrations/jira/service.ts +0 -244
- package/core/integrations/linear/cache.ts +0 -68
- package/core/integrations/linear/client.ts +0 -436
- package/core/integrations/linear/index.ts +0 -20
- package/core/integrations/linear/service.ts +0 -260
- package/core/integrations/linear/sync.ts +0 -314
- package/core/outcomes/analyzer.ts +0 -286
- package/core/outcomes/index.ts +0 -34
- package/core/outcomes/recorder.ts +0 -195
- package/core/plugin/builtin/webhook.ts +0 -148
- package/core/plugin/hooks.ts +0 -315
- package/core/plugin/index.ts +0 -50
- package/core/plugin/loader.ts +0 -354
- package/core/plugin/registry.ts +0 -326
- package/core/schemas/agents.ts +0 -27
- package/core/schemas/analysis.ts +0 -530
- package/core/schemas/classification.ts +0 -91
- package/core/schemas/command-context.ts +0 -29
- package/core/schemas/enriched-task.ts +0 -291
- package/core/schemas/ideas.ts +0 -114
- package/core/schemas/index.ts +0 -53
- package/core/schemas/issues.ts +0 -159
- package/core/schemas/llm-output.ts +0 -170
- package/core/schemas/metrics.ts +0 -143
- package/core/schemas/model.ts +0 -153
- package/core/schemas/outcomes.ts +0 -487
- package/core/schemas/performance.ts +0 -128
- package/core/schemas/permissions.ts +0 -180
- package/core/schemas/prd.ts +0 -450
- package/core/schemas/project.ts +0 -57
- package/core/schemas/roadmap.ts +0 -322
- package/core/schemas/schemas.ts +0 -38
- package/core/schemas/shipped.ts +0 -109
- package/core/schemas/state.ts +0 -284
- package/core/schemas/velocity.ts +0 -103
- package/core/server/index.ts +0 -21
- package/core/server/routes-extended.ts +0 -566
- package/core/server/routes.ts +0 -176
- package/core/server/server.ts +0 -149
- package/core/server/sse.ts +0 -192
- package/core/services/agent-generator.ts +0 -385
- package/core/services/agent-service.ts +0 -168
- package/core/services/breakdown-service.ts +0 -124
- package/core/services/context-generator.ts +0 -445
- package/core/services/context-selector.ts +0 -429
- package/core/services/dependency-validator.ts +0 -318
- package/core/services/diff-generator.ts +0 -313
- package/core/services/doctor-service.ts +0 -423
- package/core/services/file-categorizer.ts +0 -448
- package/core/services/file-scorer.ts +0 -270
- package/core/services/git-analyzer.ts +0 -293
- package/core/services/hierarchical-agent-resolver.ts +0 -236
- package/core/services/hooks-service.ts +0 -685
- package/core/services/index.ts +0 -46
- package/core/services/local-state-generator.ts +0 -158
- package/core/services/memory-service.ts +0 -181
- package/core/services/nested-context-resolver.ts +0 -842
- package/core/services/project-index.ts +0 -911
- package/core/services/project-service.ts +0 -155
- package/core/services/session-tracker.ts +0 -287
- package/core/services/skill-installer.ts +0 -447
- package/core/services/skill-lock.ts +0 -132
- package/core/services/skill-service.ts +0 -306
- package/core/services/stack-detector.ts +0 -229
- package/core/services/staleness-checker.ts +0 -327
- package/core/services/sync-service.ts +0 -1515
- package/core/services/sync-verifier.ts +0 -253
- package/core/services/watch-service.ts +0 -312
- package/core/session/compaction.ts +0 -248
- package/core/session/index.ts +0 -35
- package/core/session/log-migration.ts +0 -88
- package/core/session/metrics.ts +0 -323
- package/core/session/session-log-manager.ts +0 -307
- package/core/session/task-session-manager.ts +0 -404
- package/core/session/utils.ts +0 -51
- package/core/storage/analysis-storage.ts +0 -373
- package/core/storage/archive-storage.ts +0 -205
- package/core/storage/database.ts +0 -575
- package/core/storage/ideas-storage.ts +0 -298
- package/core/storage/index-storage.ts +0 -523
- package/core/storage/index.ts +0 -79
- package/core/storage/metrics-storage.ts +0 -321
- package/core/storage/migrate-json.ts +0 -720
- package/core/storage/queue-storage.ts +0 -336
- package/core/storage/safe-reader.ts +0 -105
- package/core/storage/shipped-storage.ts +0 -253
- package/core/storage/state-storage.ts +0 -1035
- package/core/storage/storage-manager.ts +0 -205
- package/core/storage/storage.ts +0 -177
- package/core/storage/velocity-storage.ts +0 -149
- package/core/sync/auth-config.ts +0 -138
- package/core/sync/index.ts +0 -31
- package/core/sync/oauth-handler.ts +0 -143
- package/core/sync/sync-client.ts +0 -251
- package/core/sync/sync-manager.ts +0 -327
- package/core/tsconfig.json +0 -22
- package/core/types/agentic.ts +0 -760
- package/core/types/agents.ts +0 -150
- package/core/types/bus.ts +0 -193
- package/core/types/citations.ts +0 -22
- package/core/types/commands.ts +0 -399
- package/core/types/config.ts +0 -92
- package/core/types/core.ts +0 -96
- package/core/types/diff.ts +0 -41
- package/core/types/domain.ts +0 -71
- package/core/types/errors.ts +0 -111
- package/core/types/events.ts +0 -42
- package/core/types/fs.ts +0 -72
- package/core/types/index.ts +0 -510
- package/core/types/infrastructure.ts +0 -210
- package/core/types/integrations.ts +0 -31
- package/core/types/jira.ts +0 -51
- package/core/types/logger.ts +0 -17
- package/core/types/memory.ts +0 -313
- package/core/types/outcomes.ts +0 -190
- package/core/types/output.ts +0 -47
- package/core/types/plugin.ts +0 -25
- package/core/types/project-sync.ts +0 -129
- package/core/types/provider.ts +0 -163
- package/core/types/server.ts +0 -71
- package/core/types/services.ts +0 -84
- package/core/types/session.ts +0 -135
- package/core/types/stack.ts +0 -19
- package/core/types/storage.ts +0 -318
- package/core/types/sync-verifier.ts +0 -33
- package/core/types/sync.ts +0 -121
- package/core/types/task.ts +0 -72
- package/core/types/template.ts +0 -24
- package/core/types/utils.ts +0 -92
- package/core/types/workflow.ts +0 -23
- package/core/utils/agent-stream.ts +0 -140
- package/core/utils/animations.ts +0 -251
- package/core/utils/branding.ts +0 -88
- package/core/utils/cache.ts +0 -187
- package/core/utils/citations.ts +0 -39
- package/core/utils/collection-filters.ts +0 -209
- package/core/utils/date-helper.ts +0 -176
- package/core/utils/error-messages.ts +0 -38
- package/core/utils/file-helper.ts +0 -277
- package/core/utils/fs-helpers.ts +0 -14
- package/core/utils/help.ts +0 -314
- package/core/utils/jsonl-helper.ts +0 -290
- package/core/utils/keychain.ts +0 -127
- package/core/utils/logger.ts +0 -77
- package/core/utils/markdown-builder.ts +0 -280
- package/core/utils/next-steps.ts +0 -95
- package/core/utils/output.ts +0 -403
- package/core/utils/preserve-sections.ts +0 -218
- package/core/utils/project-commands.ts +0 -126
- package/core/utils/project-credentials.ts +0 -143
- package/core/utils/provider-cache.ts +0 -49
- package/core/utils/retry.ts +0 -318
- package/core/utils/runtime.ts +0 -108
- package/core/utils/session-helper.ts +0 -278
- package/core/utils/subtask-table.ts +0 -227
- package/core/utils/version.ts +0 -128
- package/core/wizard/index.ts +0 -13
- package/core/wizard/onboarding.ts +0 -633
- package/core/workflow/index.ts +0 -7
- package/core/workflow/state-machine.ts +0 -198
- package/core/workflow/workflow-preferences.ts +0 -294
- package/dist/core/infrastructure/command-installer.js +0 -1141
- package/dist/core/infrastructure/editors-config.js +0 -177
- package/dist/core/infrastructure/setup.js +0 -2244
- package/dist/core/utils/version.js +0 -141
- package/templates/agentic/agent-routing.md +0 -45
- package/templates/agentic/agents/uxui.md +0 -63
- package/templates/agentic/checklist-routing.md +0 -98
- package/templates/agentic/orchestrator.md +0 -68
- package/templates/agentic/task-fragmentation.md +0 -89
- package/templates/agents/AGENTS.md +0 -68
- package/templates/analysis/analyze.md +0 -84
- package/templates/analysis/patterns.md +0 -60
- package/templates/antigravity/SKILL.md +0 -39
- package/templates/architect/discovery.md +0 -67
- package/templates/architect/phases.md +0 -59
- package/templates/checklists/architecture.md +0 -28
- package/templates/checklists/code-quality.md +0 -28
- package/templates/checklists/data.md +0 -33
- package/templates/checklists/documentation.md +0 -33
- package/templates/checklists/infrastructure.md +0 -33
- package/templates/checklists/performance.md +0 -33
- package/templates/checklists/security.md +0 -33
- package/templates/checklists/testing.md +0 -33
- package/templates/checklists/ux-ui.md +0 -37
- package/templates/commands/analyze.md +0 -56
- package/templates/commands/auth.md +0 -234
- package/templates/commands/bug.md +0 -163
- package/templates/commands/cleanup.md +0 -19
- package/templates/commands/dash.md +0 -99
- package/templates/commands/design.md +0 -15
- package/templates/commands/done.md +0 -291
- package/templates/commands/enrich.md +0 -174
- package/templates/commands/git.md +0 -295
- package/templates/commands/history.md +0 -389
- package/templates/commands/idea.md +0 -88
- package/templates/commands/impact.md +0 -864
- package/templates/commands/init.md +0 -54
- package/templates/commands/jira.md +0 -278
- package/templates/commands/linear.md +0 -288
- package/templates/commands/merge.md +0 -206
- package/templates/commands/next.md +0 -80
- package/templates/commands/p.md +0 -67
- package/templates/commands/p.toml +0 -37
- package/templates/commands/pause.md +0 -136
- package/templates/commands/plan.md +0 -696
- package/templates/commands/prd.md +0 -356
- package/templates/commands/resume.md +0 -171
- package/templates/commands/review.md +0 -276
- package/templates/commands/serve.md +0 -118
- package/templates/commands/setup.md +0 -91
- package/templates/commands/ship.md +0 -475
- package/templates/commands/skill.md +0 -259
- package/templates/commands/spec.md +0 -218
- package/templates/commands/status.md +0 -207
- package/templates/commands/sync.md +0 -104
- package/templates/commands/task.md +0 -312
- package/templates/commands/test.md +0 -93
- package/templates/commands/update.md +0 -63
- package/templates/commands/verify.md +0 -204
- package/templates/commands/workflow.md +0 -150
- package/templates/config/skill-mappings.json +0 -82
- package/templates/context/dashboard.md +0 -256
- package/templates/context/roadmap.md +0 -221
- package/templates/cursor/commands/bug.md +0 -8
- package/templates/cursor/commands/done.md +0 -4
- package/templates/cursor/commands/pause.md +0 -6
- package/templates/cursor/commands/resume.md +0 -4
- package/templates/cursor/commands/ship.md +0 -8
- package/templates/cursor/commands/sync.md +0 -4
- package/templates/cursor/commands/task.md +0 -8
- package/templates/cursor/p.md +0 -29
- package/templates/cursor/router.mdc +0 -28
- package/templates/design/api.md +0 -95
- package/templates/design/architecture.md +0 -77
- package/templates/design/component.md +0 -89
- package/templates/design/database.md +0 -78
- package/templates/design/flow.md +0 -94
- package/templates/global/ANTIGRAVITY.md +0 -254
- package/templates/global/CLAUDE.md +0 -497
- package/templates/global/CURSOR.mdc +0 -266
- package/templates/global/GEMINI.md +0 -293
- package/templates/global/STORAGE-SPEC.md +0 -391
- package/templates/global/WINDSURF.md +0 -266
- package/templates/global/modules/CLAUDE-commands.md +0 -70
- package/templates/global/modules/CLAUDE-core.md +0 -105
- package/templates/global/modules/CLAUDE-git.md +0 -50
- package/templates/global/modules/CLAUDE-intelligence.md +0 -92
- package/templates/global/modules/CLAUDE-storage.md +0 -50
- package/templates/global/modules/module-config.json +0 -36
- package/templates/mcp-config.json +0 -19
- package/templates/permissions/default.jsonc +0 -60
- package/templates/permissions/permissive.jsonc +0 -49
- package/templates/permissions/strict.jsonc +0 -58
- package/templates/planning-methodology.md +0 -195
- package/templates/skills/code-review.md +0 -47
- package/templates/skills/debug.md +0 -61
- package/templates/skills/refactor.md +0 -47
- package/templates/subagents/agent-base.md +0 -20
- package/templates/subagents/domain/backend.md +0 -109
- package/templates/subagents/domain/database.md +0 -121
- package/templates/subagents/domain/devops.md +0 -152
- package/templates/subagents/domain/frontend.md +0 -103
- package/templates/subagents/domain/testing.md +0 -169
- package/templates/subagents/pm-expert.md +0 -366
- package/templates/subagents/workflow/chief-architect.md +0 -657
- package/templates/subagents/workflow/prjct-planner.md +0 -159
- package/templates/subagents/workflow/prjct-shipper.md +0 -188
- package/templates/subagents/workflow/prjct-workflow.md +0 -98
- package/templates/tools/bash.txt +0 -22
- package/templates/tools/edit.txt +0 -18
- package/templates/tools/glob.txt +0 -19
- package/templates/tools/grep.txt +0 -21
- package/templates/tools/read.txt +0 -14
- package/templates/tools/task.txt +0 -20
- package/templates/tools/webfetch.txt +0 -16
- package/templates/tools/websearch.txt +0 -18
- package/templates/tools/write.txt +0 -17
- package/templates/windsurf/router.md +0 -28
- package/templates/windsurf/workflows/bug.md +0 -8
- package/templates/windsurf/workflows/done.md +0 -4
- package/templates/windsurf/workflows/pause.md +0 -4
- package/templates/windsurf/workflows/resume.md +0 -4
- package/templates/windsurf/workflows/ship.md +0 -8
- package/templates/windsurf/workflows/sync.md +0 -4
- package/templates/windsurf/workflows/task.md +0 -8
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, Glob, Grep, AskUserQuestion, Task]
|
|
3
|
-
description: 'Create a PRD using the Chief Architect agent'
|
|
4
|
-
timestamp-rule: 'GetTimestamp() for all timestamps'
|
|
5
|
-
architecture: 'Write-Through (JSON → MD → Events)'
|
|
6
|
-
storage-layer: true
|
|
7
|
-
source-of-truth: 'storage/prds.json'
|
|
8
|
-
claude-context: 'context/prd.md'
|
|
9
|
-
subagent: 'chief-architect'
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /p:prd - Create Product Requirement Document
|
|
13
|
-
|
|
14
|
-
**Purpose**: Create a formal PRD for a feature using the Chief Architect agent.
|
|
15
|
-
|
|
16
|
-
**This command INVOKES the Chief Architect subagent** which follows an 8-phase methodology to create comprehensive PRDs.
|
|
17
|
-
|
|
18
|
-
## Context Variables
|
|
19
|
-
|
|
20
|
-
- `{projectId}`: From `.prjct/prjct.config.json`
|
|
21
|
-
- `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
|
|
22
|
-
- `{title}`: PRD title from arguments
|
|
23
|
-
- `{timestamp}`: Current timestamp (GetTimestamp())
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Step 1: Read Config
|
|
28
|
-
|
|
29
|
-
READ: `.prjct/prjct.config.json`
|
|
30
|
-
EXTRACT: `projectId`
|
|
31
|
-
|
|
32
|
-
IF file not found:
|
|
33
|
-
OUTPUT: "No prjct project. Run /p:init first."
|
|
34
|
-
STOP
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Step 2: Check for Existing PRD
|
|
39
|
-
|
|
40
|
-
READ: `{globalPath}/storage/prds.json`
|
|
41
|
-
|
|
42
|
-
IF file exists:
|
|
43
|
-
SEARCH for PRD with similar title (fuzzy match)
|
|
44
|
-
|
|
45
|
-
IF found:
|
|
46
|
-
OUTPUT: "A PRD for '{similar title}' already exists (status: {status})"
|
|
47
|
-
ASK: "Do you want to:"
|
|
48
|
-
[A] Create a new PRD anyway
|
|
49
|
-
[B] View existing PRD
|
|
50
|
-
[C] Update existing PRD
|
|
51
|
-
|
|
52
|
-
IF [B]: Show existing PRD and STOP
|
|
53
|
-
IF [C]: Load existing PRD for editing
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Step 3: Initialize PRD Storage (if needed)
|
|
58
|
-
|
|
59
|
-
IF `{globalPath}/storage/prds.json` does NOT exist:
|
|
60
|
-
CREATE empty prds.json:
|
|
61
|
-
```json
|
|
62
|
-
{
|
|
63
|
-
"prds": [],
|
|
64
|
-
"lastUpdated": "{timestamp}"
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Step 4: Load Chief Architect Agent
|
|
71
|
-
|
|
72
|
-
READ: `templates/subagents/workflow/chief-architect.md`
|
|
73
|
-
|
|
74
|
-
**CRITICAL**: The Chief Architect agent handles the PRD creation process.
|
|
75
|
-
Follow its methodology based on the feature size.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Step 5: Execute Chief Architect Methodology
|
|
80
|
-
|
|
81
|
-
The Chief Architect will:
|
|
82
|
-
|
|
83
|
-
1. **Classify** - Determine if PRD is needed
|
|
84
|
-
2. **Size** - Ask user to estimate feature size (XS/S/M/L/XL)
|
|
85
|
-
3. **Execute Phases** - Based on size:
|
|
86
|
-
- XS: Phases 1, 8 only
|
|
87
|
-
- S: Phases 1, 2, 8
|
|
88
|
-
- M: Phases 1-4, 8
|
|
89
|
-
- L: Phases 1-6, 8
|
|
90
|
-
- XL: All 8 phases
|
|
91
|
-
4. **Estimate** - Calculate effort
|
|
92
|
-
5. **Define Success** - Quantifiable metrics
|
|
93
|
-
6. **Save** - Write to prds.json
|
|
94
|
-
|
|
95
|
-
### Phase Quick Reference
|
|
96
|
-
|
|
97
|
-
| Phase | Name | Output |
|
|
98
|
-
|-------|------|--------|
|
|
99
|
-
| 1 | Discovery & Problem Definition | problem statement, target user, pain points |
|
|
100
|
-
| 2 | User Flows & Journeys | entry points, happy path, error states |
|
|
101
|
-
| 3 | Domain Modeling | entities, relationships, business rules |
|
|
102
|
-
| 4 | API Contract Design | endpoints, auth, schemas |
|
|
103
|
-
| 5 | System Architecture | components, dependencies |
|
|
104
|
-
| 6 | Data Architecture | schema changes, migrations |
|
|
105
|
-
| 7 | Tech Stack Decision | dependencies, security, performance |
|
|
106
|
-
| 8 | Implementation Roadmap | MVP scope, phases, risks |
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Step 6: Save PRD
|
|
111
|
-
|
|
112
|
-
After Chief Architect completes:
|
|
113
|
-
|
|
114
|
-
### 6.1 Generate IDs
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# Generate PRD ID
|
|
118
|
-
bun -e "console.log('prd_' + crypto.randomUUID().slice(0,8))" 2>/dev/null || node -e "console.log('prd_' + require('crypto').randomUUID().slice(0,8))"
|
|
119
|
-
|
|
120
|
-
# Generate timestamp
|
|
121
|
-
bun -e "console.log(new Date().toISOString())" 2>/dev/null || node -e "console.log(new Date().toISOString())"
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### 6.2 Write to Storage
|
|
125
|
-
|
|
126
|
-
READ: `{globalPath}/storage/prds.json`
|
|
127
|
-
ADD new PRD to `prds` array
|
|
128
|
-
UPDATE `lastUpdated`
|
|
129
|
-
WRITE: `{globalPath}/storage/prds.json`
|
|
130
|
-
|
|
131
|
-
### 6.3 Generate Context
|
|
132
|
-
|
|
133
|
-
WRITE: `{globalPath}/context/prd.md`
|
|
134
|
-
|
|
135
|
-
```markdown
|
|
136
|
-
# PRD: {title}
|
|
137
|
-
|
|
138
|
-
**ID:** {prd_id}
|
|
139
|
-
**Status:** Draft
|
|
140
|
-
**Size:** {size}
|
|
141
|
-
**Created:** {timestamp}
|
|
142
|
-
**Estimated:** {estimatedHours}h
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Problem Statement
|
|
147
|
-
|
|
148
|
-
{problem.statement}
|
|
149
|
-
|
|
150
|
-
**Target User:** {problem.targetUser}
|
|
151
|
-
**Impact:** {problem.impact}
|
|
152
|
-
**Frequency:** {problem.frequency}
|
|
153
|
-
|
|
154
|
-
### Pain Points
|
|
155
|
-
{FOR EACH problem.painPoints}
|
|
156
|
-
- {painPoint}
|
|
157
|
-
{END FOR}
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Success Criteria
|
|
162
|
-
|
|
163
|
-
### Metrics
|
|
164
|
-
|
|
165
|
-
| Metric | Baseline | Target | Unit |
|
|
166
|
-
|--------|----------|--------|------|
|
|
167
|
-
{FOR EACH successCriteria.metrics}
|
|
168
|
-
| {metric.name} | {metric.baseline || 'N/A'} | {metric.target} | {metric.unit} |
|
|
169
|
-
{END FOR}
|
|
170
|
-
|
|
171
|
-
### Acceptance Criteria
|
|
172
|
-
|
|
173
|
-
{FOR EACH successCriteria.acceptanceCriteria}
|
|
174
|
-
- [ ] {ac}
|
|
175
|
-
{END FOR}
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Estimation
|
|
180
|
-
|
|
181
|
-
| Area | Hours |
|
|
182
|
-
|------|-------|
|
|
183
|
-
{FOR EACH estimation.breakdown}
|
|
184
|
-
| {area} | {hours} |
|
|
185
|
-
{END FOR}
|
|
186
|
-
| **Total** | **{estimation.estimatedHours}** |
|
|
187
|
-
|
|
188
|
-
**Confidence:** {estimation.confidence}
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## MVP Scope
|
|
193
|
-
|
|
194
|
-
### P0 - Must Have
|
|
195
|
-
{FOR EACH roadmap.mvp.p0}
|
|
196
|
-
- {item}
|
|
197
|
-
{END FOR}
|
|
198
|
-
|
|
199
|
-
### P1 - Should Have
|
|
200
|
-
{FOR EACH roadmap.mvp.p1}
|
|
201
|
-
- {item}
|
|
202
|
-
{END FOR}
|
|
203
|
-
|
|
204
|
-
### P2 - Nice to Have
|
|
205
|
-
{FOR EACH roadmap.mvp.p2}
|
|
206
|
-
- {item}
|
|
207
|
-
{END FOR}
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## Risks
|
|
212
|
-
|
|
213
|
-
{FOR EACH roadmap.risks}
|
|
214
|
-
### {risk.type}: {risk.description}
|
|
215
|
-
- **Probability:** {risk.probability}
|
|
216
|
-
- **Impact:** {risk.impact}
|
|
217
|
-
- **Mitigation:** {risk.mitigation}
|
|
218
|
-
{END FOR}
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Next Steps
|
|
223
|
-
|
|
224
|
-
1. Review this PRD
|
|
225
|
-
2. Run `p. plan` to add to roadmap
|
|
226
|
-
3. Run `p. task "{title}"` to start implementation
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### 6.4 Log to Memory
|
|
230
|
-
|
|
231
|
-
APPEND to: `{globalPath}/memory/events.jsonl`
|
|
232
|
-
|
|
233
|
-
```json
|
|
234
|
-
{"ts":"{timestamp}","action":"prd_created","prdId":"{prd_id}","title":"{title}","size":"{size}","estimatedHours":{hours},"phases":{phasesExecuted}}
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## Step 7: Link to Roadmap (Optional)
|
|
240
|
-
|
|
241
|
-
ASK: "Do you want to add this PRD to the roadmap now?"
|
|
242
|
-
[A] Yes - run /p:plan
|
|
243
|
-
[B] No - keep as draft
|
|
244
|
-
|
|
245
|
-
IF [A]:
|
|
246
|
-
READ: `{globalPath}/storage/roadmap.json`
|
|
247
|
-
|
|
248
|
-
ADD feature entry:
|
|
249
|
-
```json
|
|
250
|
-
{
|
|
251
|
-
"id": "feat_{uuid8}",
|
|
252
|
-
"name": "{title}",
|
|
253
|
-
"status": "planned",
|
|
254
|
-
"prdId": "{prd_id}",
|
|
255
|
-
"legacy": false,
|
|
256
|
-
"impact": "{problem.impact}",
|
|
257
|
-
"progress": 0,
|
|
258
|
-
"tasks": [],
|
|
259
|
-
"createdAt": "{timestamp}"
|
|
260
|
-
}
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
UPDATE PRD with featureId link
|
|
264
|
-
WRITE both files
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## Output Format
|
|
269
|
-
|
|
270
|
-
```
|
|
271
|
-
## PRD Created: {title}
|
|
272
|
-
|
|
273
|
-
**ID:** {prd_id}
|
|
274
|
-
**Status:** Draft
|
|
275
|
-
**Size:** {size} ({estimatedHours}h estimated)
|
|
276
|
-
|
|
277
|
-
### Problem
|
|
278
|
-
{problem.statement}
|
|
279
|
-
|
|
280
|
-
### Success Metrics
|
|
281
|
-
{FOR EACH metric}
|
|
282
|
-
- {metric.name}: {metric.baseline || '?'} → {metric.target} {metric.unit}
|
|
283
|
-
{END FOR}
|
|
284
|
-
|
|
285
|
-
### MVP Scope
|
|
286
|
-
- P0: {p0.length} must-have items
|
|
287
|
-
- P1: {p1.length} should-have items
|
|
288
|
-
|
|
289
|
-
### Risks
|
|
290
|
-
- {risks.length} identified ({high_risks.length} high priority)
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
📄 Full PRD: `{globalPath}/context/prd.md`
|
|
295
|
-
|
|
296
|
-
**Next Steps:**
|
|
297
|
-
1. Review the PRD
|
|
298
|
-
2. Run `p. plan` to add to roadmap
|
|
299
|
-
3. Run `p. task "{title}"` to start work
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
---
|
|
303
|
-
|
|
304
|
-
## Error Handling
|
|
305
|
-
|
|
306
|
-
| Error | Response |
|
|
307
|
-
|-------|----------|
|
|
308
|
-
| No project | "Run /p:init first" |
|
|
309
|
-
| PRD exists | Offer to view/update |
|
|
310
|
-
| User cancels | "PRD creation cancelled" |
|
|
311
|
-
| Missing input | Re-ask question |
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## Integration Notes
|
|
316
|
-
|
|
317
|
-
### For Linear/Jira/Monday
|
|
318
|
-
|
|
319
|
-
The PRD structure maps directly to PM tools:
|
|
320
|
-
|
|
321
|
-
| PRD Field | Linear | Jira | Monday |
|
|
322
|
-
|-----------|--------|------|--------|
|
|
323
|
-
| title | Project name | Epic summary | Board name |
|
|
324
|
-
| problem.statement | Description | Description | Description |
|
|
325
|
-
| estimation.tShirtSize | Estimate | Story Points | Time |
|
|
326
|
-
| successCriteria | Goals | Acceptance Criteria | Goals |
|
|
327
|
-
| featureId | Project ID | Epic Key | Board ID |
|
|
328
|
-
|
|
329
|
-
### Enforcement
|
|
330
|
-
|
|
331
|
-
The enforcement level is read from `prjct.config.json`:
|
|
332
|
-
|
|
333
|
-
```json
|
|
334
|
-
{
|
|
335
|
-
"orchestration": {
|
|
336
|
-
"prdRequired": "standard" // strict | standard | relaxed | off
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
- **strict**: Block task creation without PRD
|
|
342
|
-
- **standard**: Warn but allow (default)
|
|
343
|
-
- **relaxed**: Suggest PRD, no warning
|
|
344
|
-
- **off**: No PRD checks
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## Related Commands
|
|
349
|
-
|
|
350
|
-
| Command | Relationship |
|
|
351
|
-
|---------|--------------|
|
|
352
|
-
| `/p:task` | Checks for PRD, links to it |
|
|
353
|
-
| `/p:plan` | Uses PRDs to populate roadmap |
|
|
354
|
-
| `/p:feature` | Can trigger PRD creation |
|
|
355
|
-
| `/p:ship` | Links shipped feature to PRD |
|
|
356
|
-
| `/p:impact` | Compares outcomes to PRD metrics |
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, Glob, AskUserQuestion]
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# p. resume
|
|
6
|
-
|
|
7
|
-
## Step 1: Resolve Project Paths
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# Get projectId from local config
|
|
11
|
-
cat .prjct/prjct.config.json | grep -o '"projectId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Set `globalPath = ~/.prjct-cli/projects/{projectId}`
|
|
15
|
-
|
|
16
|
-
## Step 2: Read Current State
|
|
17
|
-
|
|
18
|
-
READ `{globalPath}/storage/state.json`
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
IF currentTask exists AND currentTask.status == "active":
|
|
22
|
-
OUTPUT:
|
|
23
|
-
"""
|
|
24
|
-
Already active: {currentTask.description}
|
|
25
|
-
|
|
26
|
-
To pause: `p. pause`
|
|
27
|
-
To complete: `p. done`
|
|
28
|
-
"""
|
|
29
|
-
STOP
|
|
30
|
-
|
|
31
|
-
IF (no pausedTasks OR pausedTasks is empty):
|
|
32
|
-
OUTPUT: "Nothing to resume. Use `p. task` to start a new task."
|
|
33
|
-
STOP
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Step 3: Select Task to Resume
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
IF pausedTasks.length == 1:
|
|
40
|
-
taskToResume = pausedTasks[0]
|
|
41
|
-
ELSE:
|
|
42
|
-
# Multiple paused tasks - let user choose
|
|
43
|
-
Show list:
|
|
44
|
-
"""
|
|
45
|
-
Multiple paused tasks:
|
|
46
|
-
|
|
47
|
-
1. {pausedTasks[0].description} (paused {time ago})
|
|
48
|
-
Reason: {pauseReason}
|
|
49
|
-
2. {pausedTasks[1].description} (paused {time ago})
|
|
50
|
-
Reason: {pauseReason}
|
|
51
|
-
...
|
|
52
|
-
"""
|
|
53
|
-
|
|
54
|
-
AskUserQuestion:
|
|
55
|
-
question: "Which task do you want to resume?"
|
|
56
|
-
header: "Resume"
|
|
57
|
-
options:
|
|
58
|
-
- label: "{pausedTasks[0].description}"
|
|
59
|
-
description: "Paused {time ago} - {pauseReason}"
|
|
60
|
-
- label: "{pausedTasks[1].description}"
|
|
61
|
-
description: "Paused {time ago} - {pauseReason}"
|
|
62
|
-
... (up to 4 options)
|
|
63
|
-
|
|
64
|
-
taskToResume = selected task
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Step 4: Calculate Away Duration
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
# Get current timestamp
|
|
71
|
-
node -e "console.log(new Date().toISOString())"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Calculate time since `taskToResume.pausedAt`.
|
|
75
|
-
|
|
76
|
-
## Step 5: Switch to Task Branch (if needed)
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
git branch --show-current
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
IF taskToResume.branch exists AND currentBranch != taskToResume.branch:
|
|
84
|
-
# Check for uncommitted changes first
|
|
85
|
-
git status --porcelain
|
|
86
|
-
|
|
87
|
-
IF uncommitted changes:
|
|
88
|
-
AskUserQuestion:
|
|
89
|
-
question: "You have uncommitted changes. What should we do?"
|
|
90
|
-
header: "Git"
|
|
91
|
-
options:
|
|
92
|
-
- label: "Stash changes"
|
|
93
|
-
description: "Save changes and switch branches"
|
|
94
|
-
- label: "Commit changes"
|
|
95
|
-
description: "Commit before switching"
|
|
96
|
-
- label: "Cancel resume"
|
|
97
|
-
description: "Stay on current branch"
|
|
98
|
-
|
|
99
|
-
Handle response appropriately
|
|
100
|
-
|
|
101
|
-
git checkout {taskToResume.branch}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Step 6: Update State
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
resumedTask = taskToResume
|
|
108
|
-
resumedTask.status = "active"
|
|
109
|
-
resumedTask.resumedAt = "{timestamp}"
|
|
110
|
-
resumedTask.pausedDuration = "{away duration}"
|
|
111
|
-
|
|
112
|
-
# Remove from pausedTasks
|
|
113
|
-
state.pausedTasks = state.pausedTasks.filter(t => t.id != resumedTask.id)
|
|
114
|
-
state.currentTask = resumedTask
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
WRITE `{globalPath}/storage/state.json`:
|
|
118
|
-
```json
|
|
119
|
-
{
|
|
120
|
-
"currentTask": {
|
|
121
|
-
"id": "{task.id}",
|
|
122
|
-
"description": "{task.description}",
|
|
123
|
-
"type": "{task.type}",
|
|
124
|
-
"status": "active",
|
|
125
|
-
"startedAt": "{task.startedAt}",
|
|
126
|
-
"resumedAt": "{timestamp}",
|
|
127
|
-
"pausedDuration": "{away duration}",
|
|
128
|
-
"subtasks": [...],
|
|
129
|
-
"currentSubtaskIndex": {task.currentSubtaskIndex},
|
|
130
|
-
"parentDescription": "{task.parentDescription}",
|
|
131
|
-
"branch": "{task.branch}",
|
|
132
|
-
"linearId": "{task.linearId or null}"
|
|
133
|
-
},
|
|
134
|
-
"pausedTasks": [...remaining paused tasks],
|
|
135
|
-
"previousTask": {...}
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## Step 7: Load Context
|
|
140
|
-
|
|
141
|
-
Load agents for context:
|
|
142
|
-
```
|
|
143
|
-
GLOB: {globalPath}/agents/*.md
|
|
144
|
-
|
|
145
|
-
FOR each agent file:
|
|
146
|
-
READ agent content for domain patterns
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## Step 8: Log Event
|
|
150
|
-
|
|
151
|
-
APPEND to `{globalPath}/memory/events.jsonl`:
|
|
152
|
-
```json
|
|
153
|
-
{"type":"task_resumed","taskId":"{id}","description":"{description}","timestamp":"{timestamp}","pausedDuration":"{away duration}"}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Output
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
▶️ Resumed: {task.parentDescription}
|
|
162
|
-
|
|
163
|
-
Was paused: {pausedDuration}
|
|
164
|
-
{IF task.subtasks: "Current subtask: {current subtask}"}
|
|
165
|
-
Branch: {task.branch}
|
|
166
|
-
|
|
167
|
-
Next:
|
|
168
|
-
- Continue work → make changes
|
|
169
|
-
- Finish subtask → `p. done`
|
|
170
|
-
- Pause again → `p. pause`
|
|
171
|
-
```
|