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,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, AskUserQuestion]
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# p. init
|
|
6
|
-
|
|
7
|
-
Check if already initialized (`.prjct/prjct.config.json` exists)
|
|
8
|
-
|
|
9
|
-
Generate UUID: `crypto.randomUUID()`
|
|
10
|
-
|
|
11
|
-
Create directories in `~/.prjct-cli/projects/{projectId}/`:
|
|
12
|
-
- storage/ (state.json, queue.json, ideas.json, shipped.json)
|
|
13
|
-
- context/
|
|
14
|
-
- sync/
|
|
15
|
-
- agents/
|
|
16
|
-
- memory/
|
|
17
|
-
|
|
18
|
-
Create `.prjct/prjct.config.json`:
|
|
19
|
-
```json
|
|
20
|
-
{"projectId": "{uuid}", "dataPath": "~/.prjct-cli/projects/{uuid}"}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Create `{globalPath}/project.json` with project name from package.json
|
|
24
|
-
|
|
25
|
-
## Cursor IDE Detection
|
|
26
|
-
|
|
27
|
-
If `.cursor/` directory exists in project:
|
|
28
|
-
1. Ask: "Cursor IDE detected. Configure prjct for Cursor?"
|
|
29
|
-
2. If yes:
|
|
30
|
-
- Get npm root: `npm root -g`
|
|
31
|
-
- Copy router: `{npmRoot}/prjct-cli/templates/cursor/router.mdc` → `.cursor/rules/prjct.mdc`
|
|
32
|
-
- Copy commands: `{npmRoot}/prjct-cli/templates/cursor/p.md` → `.cursor/commands/p.md`
|
|
33
|
-
- Add to `.gitignore`:
|
|
34
|
-
```
|
|
35
|
-
# prjct Cursor routers (regenerated per-developer)
|
|
36
|
-
.cursor/rules/prjct.mdc
|
|
37
|
-
.cursor/commands/p.md
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Optional: Ask about JIRA/Linear integration
|
|
41
|
-
|
|
42
|
-
**Output**:
|
|
43
|
-
```
|
|
44
|
-
✅ Initialized prjct
|
|
45
|
-
|
|
46
|
-
Project ID: {uuid}
|
|
47
|
-
Data: ~/.prjct-cli/projects/{uuid}/
|
|
48
|
-
Cursor: {configured/not detected}
|
|
49
|
-
|
|
50
|
-
Next:
|
|
51
|
-
- Analyze project → `p. sync`
|
|
52
|
-
- Start first task → `p. task "description"`
|
|
53
|
-
- See help → `p. help`
|
|
54
|
-
```
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, AskUserQuestion]
|
|
3
|
-
description: 'JIRA issue tracker integration via REST API'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# p. jira - JIRA Integration
|
|
7
|
-
|
|
8
|
-
**ARGUMENTS**: $ARGUMENTS
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
Manage JIRA issues directly from prjct using the REST API for fast performance.
|
|
13
|
-
|
|
14
|
-
## Context Variables
|
|
15
|
-
|
|
16
|
-
- `{projectId}`: From `.prjct/prjct.config.json`
|
|
17
|
-
- `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
|
|
18
|
-
- `{args}`: User-provided arguments (subcommand)
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Subcommands
|
|
23
|
-
|
|
24
|
-
| Command | Description |
|
|
25
|
-
|---------|-------------|
|
|
26
|
-
| `p. jira` | Show status + your assigned issues |
|
|
27
|
-
| `p. jira setup` | Configure JIRA credentials (REQUIRED FIRST) |
|
|
28
|
-
| `p. jira sync` | Fetch your assigned issues |
|
|
29
|
-
| `p. jira start <KEY>` | Start working on issue (e.g., PROJ-123) |
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Authentication
|
|
34
|
-
|
|
35
|
-
JIRA uses API Token authentication for fast REST API access.
|
|
36
|
-
|
|
37
|
-
**Required Environment Variables:**
|
|
38
|
-
```bash
|
|
39
|
-
export JIRA_BASE_URL="https://company.atlassian.net"
|
|
40
|
-
export JIRA_EMAIL="you@company.com"
|
|
41
|
-
export JIRA_API_TOKEN="your-token"
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**Get API Token**: https://id.atlassian.com/manage-profile/security/api-tokens
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Step 1: Validate Project
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
READ: .prjct/prjct.config.json
|
|
52
|
-
EXTRACT: projectId
|
|
53
|
-
SET: globalPath = ~/.prjct-cli/projects/{projectId}
|
|
54
|
-
|
|
55
|
-
IF file not found:
|
|
56
|
-
OUTPUT: "No prjct project. Run `p. init` first."
|
|
57
|
-
STOP
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Step 2: Check Credentials
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
CHECK: Are JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN set?
|
|
66
|
-
|
|
67
|
-
IF not all set:
|
|
68
|
-
ASK: "Enter your JIRA credentials"
|
|
69
|
-
|
|
70
|
-
PROMPT FOR:
|
|
71
|
-
- JIRA_BASE_URL: "Your JIRA instance URL (e.g., https://company.atlassian.net)"
|
|
72
|
-
- JIRA_EMAIL: "Your Atlassian account email"
|
|
73
|
-
- JIRA_API_TOKEN: "API token from https://id.atlassian.com/manage-profile/security/api-tokens"
|
|
74
|
-
|
|
75
|
-
OUTPUT: "Add to your shell profile:"
|
|
76
|
-
OUTPUT: "export JIRA_BASE_URL='https://company.atlassian.net'"
|
|
77
|
-
OUTPUT: "export JIRA_EMAIL='you@company.com'"
|
|
78
|
-
OUTPUT: "export JIRA_API_TOKEN='your-token'"
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Subcommand: setup
|
|
84
|
-
|
|
85
|
-
### Flow
|
|
86
|
-
|
|
87
|
-
1. **Check for credentials**
|
|
88
|
-
```
|
|
89
|
-
IF any of JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN missing:
|
|
90
|
-
ASK: Collect missing credentials
|
|
91
|
-
PROVIDE: Link to https://id.atlassian.com/manage-profile/security/api-tokens
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
2. **Test REST API connection**
|
|
95
|
-
```
|
|
96
|
-
IMPORT: jiraService from core/integrations/jira
|
|
97
|
-
CALL: jiraService.initializeFromCredentials(baseUrl, email, token)
|
|
98
|
-
|
|
99
|
-
# This will verify the connection
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
3. **Get available projects**
|
|
103
|
-
```
|
|
104
|
-
CALL: jiraService.getProjects()
|
|
105
|
-
EXTRACT: List of projects with id, name, key
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
4. **Ask user to select default project**
|
|
109
|
-
```
|
|
110
|
-
ASK: "Select your default project"
|
|
111
|
-
OPTIONS: List of projects
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
5. **Save config to project.json**
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"integrations": {
|
|
118
|
-
"jira": {
|
|
119
|
-
"enabled": true,
|
|
120
|
-
"provider": "jira",
|
|
121
|
-
"authMode": "api-token",
|
|
122
|
-
"baseUrl": "{baseUrl}",
|
|
123
|
-
"projectKey": "{projectKey}",
|
|
124
|
-
"projectName": "{projectName}",
|
|
125
|
-
"setupAt": "{timestamp}"
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### Output
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
JIRA configured
|
|
135
|
-
|
|
136
|
-
Instance: {baseUrl}
|
|
137
|
-
Project: {projectKey} - {projectName}
|
|
138
|
-
Auth: API Token (REST)
|
|
139
|
-
|
|
140
|
-
Next: `p. jira` to see your issues
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## Subcommand: status (default, no args)
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
CALL: jiraService.fetchAssignedIssues({ limit: 10 })
|
|
149
|
-
|
|
150
|
-
OUTPUT:
|
|
151
|
-
JIRA: Connected
|
|
152
|
-
Project: {projectKey}
|
|
153
|
-
|
|
154
|
-
Your issues ({count}):
|
|
155
|
-
{PROJ-123} {title} ({status})
|
|
156
|
-
{PROJ-124} {title} ({status})
|
|
157
|
-
...
|
|
158
|
-
|
|
159
|
-
Next: `p. jira start PROJ-123` to begin work
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Subcommand: sync
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
1. Fetch all assigned issues
|
|
168
|
-
CALL: jiraService.fetchAssignedIssues({ limit: 50 })
|
|
169
|
-
|
|
170
|
-
2. Save to {globalPath}/storage/issues.json
|
|
171
|
-
|
|
172
|
-
3. Show summary
|
|
173
|
-
|
|
174
|
-
OUTPUT:
|
|
175
|
-
Synced {count} issues from JIRA.
|
|
176
|
-
|
|
177
|
-
Next: `p. jira start <KEY>` to begin work
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## Subcommand: start <KEY>
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
1. Fetch issue by key
|
|
186
|
-
CALL: jiraService.fetchIssue("{KEY}")
|
|
187
|
-
EXTRACT: id, title, description, status
|
|
188
|
-
|
|
189
|
-
2. Transition to "In Progress" in JIRA
|
|
190
|
-
CALL: jiraService.markInProgress("{KEY}")
|
|
191
|
-
|
|
192
|
-
3. Create prjct task from issue
|
|
193
|
-
- Use issue title as task description
|
|
194
|
-
- Link externalId to JIRA issue
|
|
195
|
-
|
|
196
|
-
4. Create git branch
|
|
197
|
-
PATTERN: {type}/{KEY}-{slug}
|
|
198
|
-
EXAMPLE: feature/PROJ-123-add-user-auth
|
|
199
|
-
|
|
200
|
-
OUTPUT:
|
|
201
|
-
Started: {KEY} - {title}
|
|
202
|
-
|
|
203
|
-
Branch: feature/PROJ-123-add-user-auth
|
|
204
|
-
JIRA: In Progress
|
|
205
|
-
|
|
206
|
-
Next: Work on the task, then `p. done`
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## SDK Service Reference
|
|
212
|
-
|
|
213
|
-
The `jiraService` from `core/integrations/jira` provides:
|
|
214
|
-
|
|
215
|
-
| Operation | SDK Method |
|
|
216
|
-
|-----------|------------|
|
|
217
|
-
| Initialize | `jiraService.initializeFromCredentials(url, email, token, project?)` |
|
|
218
|
-
| List assigned | `jiraService.fetchAssignedIssues(options?)` |
|
|
219
|
-
| List project issues | `jiraService.fetchProjectIssues(projectKey, options?)` |
|
|
220
|
-
| Get issue | `jiraService.fetchIssue(key)` |
|
|
221
|
-
| Create issue | `jiraService.createIssue(input)` |
|
|
222
|
-
| Update issue | `jiraService.updateIssue(key, input)` |
|
|
223
|
-
| Mark in progress | `jiraService.markInProgress(key)` |
|
|
224
|
-
| Mark done | `jiraService.markDone(key)` |
|
|
225
|
-
| Get projects | `jiraService.getProjects()` |
|
|
226
|
-
|
|
227
|
-
### Caching
|
|
228
|
-
|
|
229
|
-
All read operations are cached for 5 minutes:
|
|
230
|
-
- Issues are cached by ID and key (e.g., "PROJ-123")
|
|
231
|
-
- Assigned issues list is cached per user
|
|
232
|
-
- Projects are cached globally
|
|
233
|
-
|
|
234
|
-
Cache is automatically invalidated on writes (create, update, status changes).
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Credential Storage
|
|
239
|
-
|
|
240
|
-
| What | Where |
|
|
241
|
-
|------|-------|
|
|
242
|
-
| Credentials | Environment variables: `JIRA_BASE_URL`, `JIRA_EMAIL`, `JIRA_API_TOKEN` |
|
|
243
|
-
| Config | `{globalPath}/project.json` → `integrations.jira` |
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
## Error Handling
|
|
248
|
-
|
|
249
|
-
| Error | Action |
|
|
250
|
-
|-------|--------|
|
|
251
|
-
| Missing credentials | "Set JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN or run `p. jira setup`" |
|
|
252
|
-
| Invalid credentials | "Check your credentials at https://id.atlassian.com/manage-profile/security" |
|
|
253
|
-
| Issue not found | "Issue {KEY} not found in JIRA" |
|
|
254
|
-
| Network error | "Check your internet connection" |
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## Output Format
|
|
259
|
-
|
|
260
|
-
```
|
|
261
|
-
{action}: {result}
|
|
262
|
-
|
|
263
|
-
{details}
|
|
264
|
-
|
|
265
|
-
Next: {suggested action}
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## Performance
|
|
271
|
-
|
|
272
|
-
REST API operations are fast and cached:
|
|
273
|
-
|
|
274
|
-
| Operation | REST API |
|
|
275
|
-
|-----------|----------|
|
|
276
|
-
| Fetch issue | ~200ms |
|
|
277
|
-
| List issues | ~300ms |
|
|
278
|
-
| Transition | ~250ms |
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Bash, AskUserQuestion]
|
|
3
|
-
description: 'Linear issue tracker integration via SDK'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# p. linear - Linear Integration
|
|
7
|
-
|
|
8
|
-
**ARGUMENTS**: $ARGUMENTS
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Quick Reference
|
|
13
|
-
|
|
14
|
-
| Command | What it does |
|
|
15
|
-
|---------|--------------|
|
|
16
|
-
| `p. linear` | List my assigned issues |
|
|
17
|
-
| `p. linear setup` | Configure API key (NOT MCP, just API key) |
|
|
18
|
-
| `p. linear 123` | Get issue details |
|
|
19
|
-
| `p. linear start 123` | Start working on issue |
|
|
20
|
-
| `p. linear done 123` | Mark issue as done |
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Execution Method: SDK CLI
|
|
25
|
-
|
|
26
|
-
All commands use this CLI helper (NOT MCP tools):
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
PRJCT_CLI=$(npm root -g)/prjct-cli
|
|
30
|
-
PROJECT_ID=$(cat .prjct/prjct.config.json | jq -r '.projectId')
|
|
31
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID <command> [args...]
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Step 1: Validate Project
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
READ: .prjct/prjct.config.json
|
|
40
|
-
EXTRACT: projectId
|
|
41
|
-
SET: globalPath = ~/.prjct-cli/projects/{projectId}
|
|
42
|
-
|
|
43
|
-
IF file not found:
|
|
44
|
-
OUTPUT: "No prjct project. Run `p. init` first."
|
|
45
|
-
STOP
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Step 2: Parse User Intent
|
|
51
|
-
|
|
52
|
-
Analyze $ARGUMENTS to determine what user wants:
|
|
53
|
-
|
|
54
|
-
| User Input | Intent | CLI Command |
|
|
55
|
-
|------------|--------|-------------|
|
|
56
|
-
| (empty) | List my issues | `list` |
|
|
57
|
-
| `setup` | Configure API key | `setup <apiKey>` |
|
|
58
|
-
| `123` or `PRJ-123` | Get issue details | `get PRJ-123` |
|
|
59
|
-
| `start 123` | Start working | `start PRJ-123` |
|
|
60
|
-
| `done 123` | Mark complete | `done PRJ-123` |
|
|
61
|
-
| `comment 123 text...` | Add comment | `comment PRJ-123 "text"` |
|
|
62
|
-
| `"create something"` | Create issue | `create '{"title":"..."}'` |
|
|
63
|
-
| `teams` | List teams | `teams` |
|
|
64
|
-
| `status` | Check connection | `status` |
|
|
65
|
-
|
|
66
|
-
**Identifier normalization**: If user types `123`, check project config for team key and expand to `PRJ-123`.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Subcommand: setup
|
|
71
|
-
|
|
72
|
-
**Trigger**: `p. linear setup`
|
|
73
|
-
|
|
74
|
-
### Flow
|
|
75
|
-
|
|
76
|
-
1. **Ask for API key**
|
|
77
|
-
```
|
|
78
|
-
ASK: "Enter your Linear API key"
|
|
79
|
-
HINT: "Get it from https://linear.app/settings/api"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
2. **Store and test via CLI**
|
|
83
|
-
```bash
|
|
84
|
-
RESULT=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID setup "$API_KEY")
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
3. **Parse result** - Contains `{ success, teams, defaultTeam }`
|
|
88
|
-
|
|
89
|
-
4. **If multiple teams, ask user to select**
|
|
90
|
-
```
|
|
91
|
-
ASK: "Select your default team"
|
|
92
|
-
OPTIONS: teams from result
|
|
93
|
-
|
|
94
|
-
# Re-run setup with team selection
|
|
95
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID setup "$API_KEY" "$TEAM_ID"
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Output
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
✅ Linear configured
|
|
102
|
-
|
|
103
|
-
Team: {teamName} ({teamKey})
|
|
104
|
-
Credentials: Stored per-project
|
|
105
|
-
|
|
106
|
-
Next: `p. linear` to see your issues
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## Subcommand: list (default)
|
|
112
|
-
|
|
113
|
-
**Trigger**: `p. linear` (no arguments)
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
RESULT=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID list)
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Output
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
Linear: Connected
|
|
123
|
-
|
|
124
|
-
Your issues (5):
|
|
125
|
-
PRJ-123 Add user authentication In Progress
|
|
126
|
-
PRJ-124 Fix login redirect Todo
|
|
127
|
-
PRJ-125 Update dependencies Backlog
|
|
128
|
-
...
|
|
129
|
-
|
|
130
|
-
Next: `p. linear 123` for details, `p. linear start 123` to begin
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Subcommand: get <ID>
|
|
136
|
-
|
|
137
|
-
**Trigger**: `p. linear 123` or `p. linear PRJ-123`
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
RESULT=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID get "PRJ-123")
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Output
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
PRJ-123: Add user authentication
|
|
147
|
-
|
|
148
|
-
Status: In Progress
|
|
149
|
-
Priority: High
|
|
150
|
-
Assignee: @user
|
|
151
|
-
|
|
152
|
-
Description:
|
|
153
|
-
{description text}
|
|
154
|
-
|
|
155
|
-
URL: https://linear.app/team/issue/PRJ-123
|
|
156
|
-
|
|
157
|
-
Next: `p. linear start 123` to begin, `p. task "PRJ-123"` to track in prjct
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## Subcommand: start <ID>
|
|
163
|
-
|
|
164
|
-
**Trigger**: `p. linear start 123`
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
# 1. Get issue info
|
|
168
|
-
ISSUE=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID get "PRJ-123")
|
|
169
|
-
|
|
170
|
-
# 2. Mark in progress
|
|
171
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID start "PRJ-123"
|
|
172
|
-
|
|
173
|
-
# 3. Create git branch
|
|
174
|
-
git checkout -b "feature/PRJ-123-{slug}"
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Output
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
Started: PRJ-123 - {title}
|
|
181
|
-
|
|
182
|
-
Branch: feature/PRJ-123-add-user-auth
|
|
183
|
-
Linear: In Progress
|
|
184
|
-
|
|
185
|
-
Next: Work on the task, then `p. done`
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Subcommand: done <ID>
|
|
191
|
-
|
|
192
|
-
**Trigger**: `p. linear done 123`
|
|
193
|
-
|
|
194
|
-
```bash
|
|
195
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID done "PRJ-123"
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### Output
|
|
199
|
-
|
|
200
|
-
```
|
|
201
|
-
✅ Completed: PRJ-123 - {title}
|
|
202
|
-
|
|
203
|
-
Linear: Done
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## Subcommand: create
|
|
209
|
-
|
|
210
|
-
**Trigger**: `p. linear "add feature X"` or `p. linear create "title"`
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
# Get default team from credentials
|
|
214
|
-
TEAMS=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID teams)
|
|
215
|
-
|
|
216
|
-
# Create issue
|
|
217
|
-
RESULT=$(bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID create '{"title":"...","teamId":"..."}')
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
### Output
|
|
221
|
-
|
|
222
|
-
```
|
|
223
|
-
✅ Created: PRJ-126 - {title}
|
|
224
|
-
|
|
225
|
-
URL: https://linear.app/...
|
|
226
|
-
|
|
227
|
-
Next: `p. linear start 126` to begin
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
## Subcommand: comment <ID> <text>
|
|
233
|
-
|
|
234
|
-
**Trigger**: `p. linear comment 123 "Progress update..."`
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID comment "PRJ-123" "Progress update..."
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### Output
|
|
241
|
-
|
|
242
|
-
```
|
|
243
|
-
✅ Comment added to PRJ-123
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
## Subcommand: update <ID>
|
|
249
|
-
|
|
250
|
-
**Trigger**: `p. linear update 123` (then ask what to update)
|
|
251
|
-
|
|
252
|
-
```bash
|
|
253
|
-
bun $PRJCT_CLI/core/cli/linear.ts --project $PROJECT_ID update "PRJ-123" '{"description":"..."}'
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## Error Handling
|
|
259
|
-
|
|
260
|
-
| Error | Response |
|
|
261
|
-
|-------|----------|
|
|
262
|
-
| Not configured | "Run `p. linear setup` to configure your API key" |
|
|
263
|
-
| Invalid API key | "Invalid API key. Get a new one at https://linear.app/settings/api" |
|
|
264
|
-
| Issue not found | "Issue PRJ-123 not found" |
|
|
265
|
-
| No project | "Run `p. init` first" |
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Credential Storage
|
|
270
|
-
|
|
271
|
-
Credentials are stored **per-project** to support multiple Linear workspaces:
|
|
272
|
-
|
|
273
|
-
**Location**: `~/.prjct-cli/projects/{projectId}/config/credentials.json`
|
|
274
|
-
|
|
275
|
-
**Fallback chain**:
|
|
276
|
-
1. Project credentials (per-project)
|
|
277
|
-
2. Global keychain (macOS)
|
|
278
|
-
3. Environment variable (`LINEAR_API_KEY`)
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Performance
|
|
283
|
-
|
|
284
|
-
| Operation | Time |
|
|
285
|
-
|-----------|------|
|
|
286
|
-
| Fetch issue | ~150ms |
|
|
287
|
-
| List issues | ~300ms |
|
|
288
|
-
| Create issue | ~200ms |
|