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,291 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, AskUserQuestion]
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# p. done
|
|
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 no currentTask OR currentTask is null:
|
|
22
|
-
OUTPUT: "No active task. Use `p. task` to start one."
|
|
23
|
-
STOP
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Step 3: Handle Subtasks
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
IF currentTask.subtasks exists AND has items:
|
|
30
|
-
current = currentTask.subtasks[currentTask.currentSubtaskIndex]
|
|
31
|
-
remaining = subtasks where status != "completed"
|
|
32
|
-
|
|
33
|
-
IF remaining.length > 1:
|
|
34
|
-
# More subtasks after current one
|
|
35
|
-
AskUserQuestion:
|
|
36
|
-
question: "Subtask complete. What next?"
|
|
37
|
-
header: "Done"
|
|
38
|
-
options:
|
|
39
|
-
- label: "Next subtask (Recommended)"
|
|
40
|
-
description: "Mark current done, move to next"
|
|
41
|
-
- label: "Complete all remaining"
|
|
42
|
-
description: "Mark entire task as done"
|
|
43
|
-
- label: "Continue current"
|
|
44
|
-
description: "Keep working on this subtask"
|
|
45
|
-
|
|
46
|
-
IF "Continue current":
|
|
47
|
-
OUTPUT: "Continuing: {current subtask}"
|
|
48
|
-
STOP
|
|
49
|
-
|
|
50
|
-
IF "Next subtask" OR "Complete all remaining":
|
|
51
|
-
# ═══════════════════════════════════════════════════════════════
|
|
52
|
-
# MANDATORY HANDOFF COLLECTION (PRJ-262)
|
|
53
|
-
# Every subtask MUST provide handoff data before completing.
|
|
54
|
-
# This enables the next subtask to start with full context.
|
|
55
|
-
# ═══════════════════════════════════════════════════════════════
|
|
56
|
-
|
|
57
|
-
GOTO: Step 3.5 (Collect Handoff)
|
|
58
|
-
|
|
59
|
-
# After collecting handoff, mark current subtask as completed:
|
|
60
|
-
currentTask.subtasks[currentSubtaskIndex].status = "completed"
|
|
61
|
-
currentTask.subtasks[currentSubtaskIndex].output = "{handoff.output}"
|
|
62
|
-
currentTask.subtasks[currentSubtaskIndex].summary = {
|
|
63
|
-
"title": "{current subtask description}",
|
|
64
|
-
"description": "{what was accomplished}",
|
|
65
|
-
"filesChanged": [{path, action}...],
|
|
66
|
-
"whatWasDone": ["item1", "item2", ...],
|
|
67
|
-
"outputForNextAgent": "{context for next subtask}",
|
|
68
|
-
"notes": "{optional notes}"
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
IF "Next subtask":
|
|
72
|
-
currentTask.currentSubtaskIndex++
|
|
73
|
-
currentTask.subtasks[currentSubtaskIndex].status = "active"
|
|
74
|
-
currentTask.description = currentTask.subtasks[currentSubtaskIndex].description
|
|
75
|
-
|
|
76
|
-
WRITE state.json
|
|
77
|
-
|
|
78
|
-
# Show previous subtask handoff to establish context
|
|
79
|
-
OUTPUT:
|
|
80
|
-
"""
|
|
81
|
-
✅ Subtask complete: {completed subtask}
|
|
82
|
-
|
|
83
|
-
Progress: {completed}/{total} subtasks
|
|
84
|
-
|
|
85
|
-
### Handoff
|
|
86
|
-
{outputForNextAgent}
|
|
87
|
-
|
|
88
|
-
Current: {next subtask description}
|
|
89
|
-
|
|
90
|
-
Next: Continue working, then `p. done`
|
|
91
|
-
"""
|
|
92
|
-
STOP
|
|
93
|
-
|
|
94
|
-
# If "Complete all" - fall through to complete task (handoff still collected)
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Step 3.5: Collect Handoff (MANDATORY for subtask completion)
|
|
98
|
-
|
|
99
|
-
**⛔ DO NOT skip this step. Every subtask completion MUST include handoff data.**
|
|
100
|
-
|
|
101
|
-
The LLM should analyze the work done during this subtask and produce:
|
|
102
|
-
|
|
103
|
-
### 1. Get Files Changed
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
# Files changed during this subtask (uncommitted + recent commits on branch)
|
|
107
|
-
git diff --name-only HEAD 2>/dev/null
|
|
108
|
-
git diff --name-only --cached 2>/dev/null
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Categorize each file as `created`, `modified`, or `deleted`.
|
|
112
|
-
|
|
113
|
-
### 2. Summarize Work Done
|
|
114
|
-
|
|
115
|
-
Based on the code changes and task context, produce:
|
|
116
|
-
- **whatWasDone**: Array of 1-5 bullet points describing key accomplishments
|
|
117
|
-
- **outputForNextAgent**: A paragraph explaining context the next subtask needs:
|
|
118
|
-
- What was built/changed and why
|
|
119
|
-
- Key decisions made and their rationale
|
|
120
|
-
- Any patterns established that subsequent work should follow
|
|
121
|
-
- Known issues or edge cases to watch for
|
|
122
|
-
|
|
123
|
-
### 3. Validation
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
IF whatWasDone is empty:
|
|
127
|
-
⛔ STOP. At least one item is required.
|
|
128
|
-
Re-analyze the work and provide at minimum 1 bullet point.
|
|
129
|
-
|
|
130
|
-
IF outputForNextAgent is empty:
|
|
131
|
-
⛔ STOP. Context for next subtask is required.
|
|
132
|
-
Even if this is the last subtask, provide a summary for the done/ship step.
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### 4. Store Handoff
|
|
136
|
-
|
|
137
|
-
The handoff data is stored in the subtask's `summary` field in state.json.
|
|
138
|
-
This data persists across sessions and feeds into the next subtask's prompt context.
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Step 4: Complete Task
|
|
143
|
-
|
|
144
|
-
Generate timestamp:
|
|
145
|
-
```bash
|
|
146
|
-
node -e "console.log(new Date().toISOString())"
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Calculate duration from `currentTask.startedAt` to now.
|
|
150
|
-
|
|
151
|
-
Update state:
|
|
152
|
-
```
|
|
153
|
-
# Mark all subtasks as completed
|
|
154
|
-
FOR each subtask in currentTask.subtasks:
|
|
155
|
-
subtask.status = "completed"
|
|
156
|
-
|
|
157
|
-
# Update task status
|
|
158
|
-
currentTask.status = "completed"
|
|
159
|
-
currentTask.completedAt = "{timestamp}"
|
|
160
|
-
|
|
161
|
-
# Move to previousTask
|
|
162
|
-
previousTask = currentTask
|
|
163
|
-
currentTask = null
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
WRITE `{globalPath}/storage/state.json`:
|
|
167
|
-
|
|
168
|
-
## Step 4.5: Capture Learnings & Value (LLM Knowledge)
|
|
169
|
-
|
|
170
|
-
**⚠️ This data is for LLM future reference, not human documentation.**
|
|
171
|
-
|
|
172
|
-
Based on the work completed, analyze the code changes and capture:
|
|
173
|
-
|
|
174
|
-
### Learnings (Technical Knowledge for Future LLM Sessions)
|
|
175
|
-
|
|
176
|
-
Identify and record:
|
|
177
|
-
- **Patterns** - Any new code patterns introduced or discovered
|
|
178
|
-
- **Approaches** - How problems were solved (implementation strategies)
|
|
179
|
-
- **Decisions** - Why certain approaches were chosen over alternatives
|
|
180
|
-
- **Gotchas** - Things that could trip up future work on similar tasks
|
|
181
|
-
|
|
182
|
-
### Value Contribution
|
|
183
|
-
|
|
184
|
-
Assess what value this task brings to the project:
|
|
185
|
-
- **Type**: feature | bugfix | performance | dx | refactor | infrastructure
|
|
186
|
-
- **Impact**: high | medium | low
|
|
187
|
-
- **Description**: 1-2 sentences on the value added
|
|
188
|
-
|
|
189
|
-
### Get Files Changed
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
git diff --name-only HEAD~1 2>/dev/null || git diff --name-only --cached
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Generate Tags
|
|
196
|
-
|
|
197
|
-
Extract tags from the task context:
|
|
198
|
-
- Domain tags (frontend, backend, api, database, etc.)
|
|
199
|
-
- Feature tags (auth, ui, testing, etc.)
|
|
200
|
-
- Technical tags (refactor, performance, security, etc.)
|
|
201
|
-
|
|
202
|
-
### Write to Learnings File
|
|
203
|
-
|
|
204
|
-
APPEND to `{globalPath}/memory/learnings.jsonl`:
|
|
205
|
-
```jsonl
|
|
206
|
-
{"taskId":"{id}","linearId":"{linearId or null}","timestamp":"{timestamp}","learnings":{"patterns":["pattern 1","pattern 2"],"approaches":["how X was solved"],"decisions":["why Y was chosen over Z"],"gotchas":["watch out for X"]},"value":{"type":"feature","impact":"high","description":"Brief description of value added"},"filesChanged":["path/to/file1.ts"],"tags":["domain-tag","feature-tag"]}
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
**Note**: This local cache enables future semantic retrieval without API latency. Will eventually feed into vector DB for cross-session LLM knowledge transfer.
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
```json
|
|
213
|
-
{
|
|
214
|
-
"currentTask": null,
|
|
215
|
-
"previousTask": {
|
|
216
|
-
"id": "{task.id}",
|
|
217
|
-
"description": "{task.parentDescription}",
|
|
218
|
-
"type": "{task.type}",
|
|
219
|
-
"status": "completed",
|
|
220
|
-
"startedAt": "{task.startedAt}",
|
|
221
|
-
"completedAt": "{timestamp}",
|
|
222
|
-
"subtasks": [...],
|
|
223
|
-
"branch": "{task.branch}",
|
|
224
|
-
"linearId": "{task.linearId or null}"
|
|
225
|
-
},
|
|
226
|
-
"pausedTasks": []
|
|
227
|
-
}
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Step 5: Sync Issue Tracker Status (REQUIRED - DO NOT SKIP)
|
|
231
|
-
|
|
232
|
-
**⛔ This step is MANDATORY if there's a linked issue. NEVER skip this.**
|
|
233
|
-
|
|
234
|
-
**⛔ WRITE TO REMOTE ONLY - Do NOT re-read issue from API (token efficiency)**
|
|
235
|
-
|
|
236
|
-
The linearId/externalId is already in `previousTask` from local state.json.
|
|
237
|
-
Only send status update to remote API.
|
|
238
|
-
|
|
239
|
-
```
|
|
240
|
-
IF previousTask.linearId exists:
|
|
241
|
-
# ═══════════════════════════════════════════════════════════════
|
|
242
|
-
# USE prjct CLI DIRECTLY - NOT $PRJCT_CLI (may be unset)
|
|
243
|
-
# ═══════════════════════════════════════════════════════════════
|
|
244
|
-
RUN: prjct linear done "{linearId}"
|
|
245
|
-
RUN: prjct linear comment "{linearId}" "✅ Task completed. Ready for ship."
|
|
246
|
-
|
|
247
|
-
OUTPUT: "Linear: {linearId} → Done ✓"
|
|
248
|
-
|
|
249
|
-
ELSE IF previousTask.externalId AND previousTask.externalProvider == "jira":
|
|
250
|
-
RUN: prjct jira transition "{externalId}" "Done"
|
|
251
|
-
RUN: prjct jira comment "{externalId}" "✅ Task completed. Ready for ship."
|
|
252
|
-
|
|
253
|
-
OUTPUT: "JIRA: {externalId} → Done ✓"
|
|
254
|
-
|
|
255
|
-
ELSE:
|
|
256
|
-
# No issue tracker linked - that's OK, prjct works without it
|
|
257
|
-
# Just skip the sync step silently
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
## Step 6: Log Event
|
|
261
|
-
|
|
262
|
-
APPEND to `{globalPath}/memory/events.jsonl`:
|
|
263
|
-
```json
|
|
264
|
-
{"type":"task_completed","taskId":"{id}","description":"{parentDescription}","timestamp":"{timestamp}","duration":"{duration}"}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
## Step 7: Count Stats
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
# Count files changed
|
|
271
|
-
git diff --stat HEAD~1 2>/dev/null | tail -1 || echo "0 files"
|
|
272
|
-
|
|
273
|
-
# Count commits on branch
|
|
274
|
-
git rev-list --count HEAD ^main 2>/dev/null || echo "0"
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
## Output
|
|
280
|
-
|
|
281
|
-
```
|
|
282
|
-
✅ {task description} ({duration})
|
|
283
|
-
|
|
284
|
-
Files: {count} | Commits: {count}
|
|
285
|
-
{linearId ? "Linear: {linearId} → Done" : ""}
|
|
286
|
-
|
|
287
|
-
Next:
|
|
288
|
-
- More work? → `p. task "description"`
|
|
289
|
-
- Ready to ship? → `p. ship`
|
|
290
|
-
- See queue → `p. next`
|
|
291
|
-
```
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, Task, AskUserQuestion]
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# p. enrich "$ARGUMENTS"
|
|
6
|
-
|
|
7
|
-
Transform vague tickets into technical PRDs with AI-powered analysis.
|
|
8
|
-
|
|
9
|
-
## How This Works
|
|
10
|
-
|
|
11
|
-
User types `p. enrich PRJ-123` → Claude fetches ticket → Analyzes codebase → Generates PRD → Publishes back
|
|
12
|
-
|
|
13
|
-
**Examples**:
|
|
14
|
-
- `p. enrich PRJ-123` → Enrich Linear issue
|
|
15
|
-
- `p. enrich "vague description"` → Analyze without fetching
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## CRITICAL - Execution Pattern
|
|
20
|
-
|
|
21
|
-
**NEVER use MCP tools** (`mcp__linear__*`, `mcp__jira__*`).
|
|
22
|
-
**ALWAYS use SDK via CLI helper.**
|
|
23
|
-
|
|
24
|
-
### CLI Helper for Linear
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
PRJCT_CLI=$(npm root -g)/prjct-cli
|
|
28
|
-
PROJECT_ID=$(cat .prjct/prjct.config.json | jq -r '.projectId')
|
|
29
|
-
|
|
30
|
-
# Fetch issue
|
|
31
|
-
ISSUE=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID get PRJ-123)
|
|
32
|
-
|
|
33
|
-
# Update description with PRD
|
|
34
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID update PRJ-123 '{"description":"..."}'
|
|
35
|
-
|
|
36
|
-
# Or add as comment
|
|
37
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID comment PRJ-123 "## PRD\n..."
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Step 1: Parse Input
|
|
43
|
-
|
|
44
|
-
Detect input format:
|
|
45
|
-
- `PRJ-123` → Linear issue (team key prefix)
|
|
46
|
-
- `"text"` → No fetch, analyze text directly
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Step 2: Fetch Ticket
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# For Linear
|
|
54
|
-
ISSUE=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID get "$IDENTIFIER")
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Extract: `id`, `title`, `description`, `status`, `priority`
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Step 3: Analyze Codebase
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
USE Task(Explore) "very thorough":
|
|
65
|
-
- Find similar implementations
|
|
66
|
-
- Identify affected files
|
|
67
|
-
- Assess risks and dependencies
|
|
68
|
-
|
|
69
|
-
READ agents/*.md for domain patterns
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Step 4: Classify & Estimate
|
|
75
|
-
|
|
76
|
-
**Type**: Bug | Story | Improvement | Spike | Chore
|
|
77
|
-
|
|
78
|
-
**Story Points**:
|
|
79
|
-
| Points | Complexity |
|
|
80
|
-
|--------|------------|
|
|
81
|
-
| 1-2 | Trivial - single file, obvious fix |
|
|
82
|
-
| 3-5 | Small - few files, clear scope |
|
|
83
|
-
| 8 | Medium - multiple files, some unknowns |
|
|
84
|
-
| 13 | Large - significant changes, needs design |
|
|
85
|
-
| 21+ | Epic - break down further |
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Step 5: Generate PRD
|
|
90
|
-
|
|
91
|
-
```markdown
|
|
92
|
-
## Overview
|
|
93
|
-
{1-2 sentence summary of the technical approach}
|
|
94
|
-
|
|
95
|
-
## Classification
|
|
96
|
-
- **Type**: {type}
|
|
97
|
-
- **Points**: {points}
|
|
98
|
-
- **Risk**: Low/Medium/High
|
|
99
|
-
|
|
100
|
-
## Technical Approach
|
|
101
|
-
{Detailed implementation plan}
|
|
102
|
-
|
|
103
|
-
## Files to Modify
|
|
104
|
-
- `path/to/file.ts` - {what changes}
|
|
105
|
-
- ...
|
|
106
|
-
|
|
107
|
-
## Acceptance Criteria
|
|
108
|
-
- [ ] {criterion 1}
|
|
109
|
-
- [ ] {criterion 2}
|
|
110
|
-
- ...
|
|
111
|
-
|
|
112
|
-
## LLM Prompt
|
|
113
|
-
{Copy-paste ready prompt for any AI tool to implement this}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Step 6: Ask Publication Method
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
ASK: "How should I publish the PRD?"
|
|
122
|
-
OPTIONS:
|
|
123
|
-
- "Update description" (replace existing)
|
|
124
|
-
- "Add as comment" (preserve original)
|
|
125
|
-
- "Just show me" (don't publish)
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
## Step 7: Publish
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
# Update description
|
|
134
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID update PRJ-123 '{"description":"# PRD\n..."}'
|
|
135
|
-
|
|
136
|
-
# Or add comment
|
|
137
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID comment PRJ-123 "## PRD\n..."
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Step 8: Save Locally
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
WRITE: {globalPath}/storage/enriched/{id}.json
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
```json
|
|
149
|
-
{
|
|
150
|
-
"id": "PRJ-123",
|
|
151
|
-
"enrichedAt": "2026-01-29T...",
|
|
152
|
-
"type": "story",
|
|
153
|
-
"points": 5,
|
|
154
|
-
"filesAffected": ["src/auth.ts", "src/login.tsx"],
|
|
155
|
-
"prd": "..."
|
|
156
|
-
}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Output
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
✅ Enriched: PRJ-123 - {title}
|
|
165
|
-
|
|
166
|
-
Type: Story | Points: 5 | Files: 3
|
|
167
|
-
|
|
168
|
-
Published: Updated description
|
|
169
|
-
|
|
170
|
-
Next:
|
|
171
|
-
- Start work? → `p. linear start 123` or `p. task "PRJ-123"`
|
|
172
|
-
- Enrich another? → `p. enrich PRJ-124`
|
|
173
|
-
- See backlog → `p. linear`
|
|
174
|
-
```
|