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,259 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Glob, Bash]
|
|
3
|
-
description: 'List, search, and invoke skills'
|
|
4
|
-
timestamp-rule: 'None'
|
|
5
|
-
architecture: 'Skill discovery, installation, and execution'
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# /p:skill - Skill Management
|
|
9
|
-
|
|
10
|
-
List, search, install, and invoke reusable skills.
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/p:skill # List all skills
|
|
16
|
-
/p:skill list # List all skills
|
|
17
|
-
/p:skill search <query> # Search skills
|
|
18
|
-
/p:skill show <id> # Show skill details
|
|
19
|
-
/p:skill invoke <id> # Invoke a skill
|
|
20
|
-
/p:skill add <source> # Install skill from remote source
|
|
21
|
-
/p:skill remove <name> # Remove an installed skill
|
|
22
|
-
/p:skill init <name> # Scaffold a new skill
|
|
23
|
-
/p:skill check # Check for available updates
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Flow
|
|
27
|
-
|
|
28
|
-
### List Skills (`/p:skill` or `/p:skill list`)
|
|
29
|
-
|
|
30
|
-
1. Load skills from all sources:
|
|
31
|
-
- Project: `.prjct/skills/*.md` and `.prjct/skills/*/SKILL.md`
|
|
32
|
-
- Provider: `~/.claude/skills/*/SKILL.md` and `~/.claude/skills/*.md`
|
|
33
|
-
- Global: `~/.prjct-cli/skills/*.md` and `~/.prjct-cli/skills/*/SKILL.md`
|
|
34
|
-
- Built-in: `templates/skills/*.md`
|
|
35
|
-
|
|
36
|
-
2. Check lock file at `~/.prjct-cli/skills/.skill-lock.json` for source info
|
|
37
|
-
|
|
38
|
-
3. Output grouped by source:
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
## Available Skills
|
|
42
|
-
|
|
43
|
-
### Project Skills
|
|
44
|
-
- **custom-deploy** - Deploy to staging server
|
|
45
|
-
|
|
46
|
-
### Global Skills (Provider)
|
|
47
|
-
- **frontend-design** - Create production-grade UIs [github: vercel-labs/skills]
|
|
48
|
-
- **my-template** - Personal code template
|
|
49
|
-
|
|
50
|
-
### Built-in Skills
|
|
51
|
-
- **code-review** - Review code for quality
|
|
52
|
-
- **refactor** - Refactor code structure
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Search Skills (`/p:skill search <query>`)
|
|
56
|
-
|
|
57
|
-
1. Search skill names, descriptions, and tags
|
|
58
|
-
2. Sort by relevance
|
|
59
|
-
3. Output matches
|
|
60
|
-
|
|
61
|
-
### Show Skill (`/p:skill show <id>`)
|
|
62
|
-
|
|
63
|
-
1. Load skill by ID
|
|
64
|
-
2. Display metadata and content
|
|
65
|
-
3. If remotely installed, show source tracking info
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
## Skill: frontend-design
|
|
69
|
-
|
|
70
|
-
**Description:** Create production-grade frontend interfaces
|
|
71
|
-
**Source:** global (github: vercel-labs/skills)
|
|
72
|
-
**Tags:** frontend, design, ui
|
|
73
|
-
**Version:** 1.0.0
|
|
74
|
-
**Installed:** 2026-01-28T12:00:00.000Z
|
|
75
|
-
**SHA:** abc123
|
|
76
|
-
|
|
77
|
-
### Content
|
|
78
|
-
[Full skill prompt content]
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Invoke Skill (`/p:skill invoke <id>`)
|
|
82
|
-
|
|
83
|
-
1. Load skill by ID
|
|
84
|
-
2. Return skill content for execution
|
|
85
|
-
3. The skill content becomes the prompt
|
|
86
|
-
|
|
87
|
-
### Add Skill (`/p:skill add <source>`)
|
|
88
|
-
|
|
89
|
-
Install skills from remote sources.
|
|
90
|
-
|
|
91
|
-
**Supported source formats:**
|
|
92
|
-
- `owner/repo` — Clone GitHub repo, install all discovered skills
|
|
93
|
-
- `owner/repo@skill-name` — Install specific skill from GitHub repo
|
|
94
|
-
- `./local-path` — Install from local directory
|
|
95
|
-
|
|
96
|
-
**Install flow:**
|
|
97
|
-
1. Parse source string
|
|
98
|
-
2. For GitHub: `git clone --depth 1` to temp dir (60s timeout)
|
|
99
|
-
3. Discover SKILL.md files (scans `*/SKILL.md` and `skills/*/SKILL.md`)
|
|
100
|
-
4. Copy to `~/.claude/skills/{name}/SKILL.md` (ecosystem standard format)
|
|
101
|
-
5. Add `_prjct` metadata block to frontmatter (sourceUrl, sha, installedAt)
|
|
102
|
-
6. Update lock file at `~/.prjct-cli/skills/.skill-lock.json`
|
|
103
|
-
7. Clean up temp dir
|
|
104
|
-
|
|
105
|
-
**Example:**
|
|
106
|
-
```
|
|
107
|
-
p. skill add vercel-labs/skills
|
|
108
|
-
p. skill add my-org/custom-skills@api-designer
|
|
109
|
-
p. skill add ./my-local-skill
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**Output:**
|
|
113
|
-
```
|
|
114
|
-
✅ Installed 3 skills from vercel-labs/skills
|
|
115
|
-
|
|
116
|
-
- frontend-design → ~/.claude/skills/frontend-design/SKILL.md
|
|
117
|
-
- find-skills → ~/.claude/skills/find-skills/SKILL.md
|
|
118
|
-
- code-review → ~/.claude/skills/code-review/SKILL.md
|
|
119
|
-
|
|
120
|
-
Lock file updated: ~/.prjct-cli/skills/.skill-lock.json
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Remove Skill (`/p:skill remove <name>`)
|
|
124
|
-
|
|
125
|
-
1. Remove skill directory from `~/.claude/skills/{name}/`
|
|
126
|
-
2. Also remove flat file if it exists (`~/.claude/skills/{name}.md`)
|
|
127
|
-
3. Remove entry from lock file
|
|
128
|
-
4. Confirm removal
|
|
129
|
-
|
|
130
|
-
**Output:**
|
|
131
|
-
```
|
|
132
|
-
✅ Removed skill: frontend-design
|
|
133
|
-
|
|
134
|
-
Deleted: ~/.claude/skills/frontend-design/
|
|
135
|
-
Lock file updated.
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Init Skill (`/p:skill init <name>`)
|
|
139
|
-
|
|
140
|
-
Scaffold a new skill in the project.
|
|
141
|
-
|
|
142
|
-
1. Create `.prjct/skills/{name}/SKILL.md` with template frontmatter
|
|
143
|
-
2. Open for editing
|
|
144
|
-
|
|
145
|
-
**Template:**
|
|
146
|
-
```markdown
|
|
147
|
-
---
|
|
148
|
-
name: {name}
|
|
149
|
-
description: TODO - describe what this skill does
|
|
150
|
-
agent: general
|
|
151
|
-
tags: []
|
|
152
|
-
version: 1.0.0
|
|
153
|
-
author: {detected-author}
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
# {Name} Skill
|
|
157
|
-
|
|
158
|
-
## Purpose
|
|
159
|
-
|
|
160
|
-
Describe what this skill helps with.
|
|
161
|
-
|
|
162
|
-
## Instructions
|
|
163
|
-
|
|
164
|
-
Step-by-step instructions for the AI agent...
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Check Updates (`/p:skill check`)
|
|
168
|
-
|
|
169
|
-
Compare lock file SHAs with remote repositories to detect available updates.
|
|
170
|
-
|
|
171
|
-
1. Read lock file entries
|
|
172
|
-
2. For each GitHub-sourced skill, run `git ls-remote` to get latest SHA
|
|
173
|
-
3. Compare with stored SHA
|
|
174
|
-
4. Report skills with available updates (no auto-update)
|
|
175
|
-
|
|
176
|
-
**Output:**
|
|
177
|
-
```
|
|
178
|
-
## Skill Update Check
|
|
179
|
-
|
|
180
|
-
- **frontend-design** (vercel-labs/skills) — Update available
|
|
181
|
-
Current: abc123 → Latest: def456
|
|
182
|
-
- **code-review** (vercel-labs/skills) — Up to date
|
|
183
|
-
- **my-local-skill** (local) — Skipped (local source)
|
|
184
|
-
|
|
185
|
-
1 update available. Run `p. skill add <source>` to update.
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
## Skill File Format
|
|
189
|
-
|
|
190
|
-
Skills are markdown files with frontmatter. Two formats are supported:
|
|
191
|
-
|
|
192
|
-
### Subdirectory Format (Ecosystem Standard)
|
|
193
|
-
```
|
|
194
|
-
~/.claude/skills/my-skill/SKILL.md
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### Flat Format (Legacy)
|
|
198
|
-
```
|
|
199
|
-
~/.claude/skills/my-skill.md
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Frontmatter Schema
|
|
203
|
-
|
|
204
|
-
```markdown
|
|
205
|
-
---
|
|
206
|
-
name: My Skill
|
|
207
|
-
description: What the skill does
|
|
208
|
-
agent: general
|
|
209
|
-
tags: [tag1, tag2]
|
|
210
|
-
version: 1.0.0
|
|
211
|
-
author: Author Name
|
|
212
|
-
category: development
|
|
213
|
-
_prjct:
|
|
214
|
-
sourceUrl: https://github.com/owner/repo
|
|
215
|
-
sourceType: github
|
|
216
|
-
installedAt: 2026-01-28T12:00:00.000Z
|
|
217
|
-
sha: abc123
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
# Skill Content
|
|
221
|
-
|
|
222
|
-
The actual prompt/instructions...
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## Creating Custom Skills
|
|
226
|
-
|
|
227
|
-
### Project Skill (repo-specific)
|
|
228
|
-
Create `.prjct/skills/my-skill/SKILL.md` or `.prjct/skills/my-skill.md`
|
|
229
|
-
|
|
230
|
-
### Global Skill (all projects)
|
|
231
|
-
Create `~/.claude/skills/my-skill/SKILL.md` or `~/.prjct-cli/skills/my-skill.md`
|
|
232
|
-
|
|
233
|
-
## Lock File
|
|
234
|
-
|
|
235
|
-
Installed skills are tracked in `~/.prjct-cli/skills/.skill-lock.json`:
|
|
236
|
-
|
|
237
|
-
```json
|
|
238
|
-
{
|
|
239
|
-
"version": 1,
|
|
240
|
-
"generatedAt": "2026-01-28T...",
|
|
241
|
-
"skills": {
|
|
242
|
-
"frontend-design": {
|
|
243
|
-
"name": "frontend-design",
|
|
244
|
-
"source": { "type": "github", "url": "vercel-labs/skills", "sha": "abc123" },
|
|
245
|
-
"installedAt": "2026-01-28T...",
|
|
246
|
-
"filePath": "~/.claude/skills/frontend-design/SKILL.md"
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
## Output Format
|
|
253
|
-
|
|
254
|
-
```
|
|
255
|
-
## Skills ({count} total)
|
|
256
|
-
|
|
257
|
-
### {source}
|
|
258
|
-
- **{name}** ({id}): {description} [{sourceInfo}]
|
|
259
|
-
```
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Write, Glob, GetTimestamp, GetDate]
|
|
3
|
-
description: 'Spec-driven development for complex features'
|
|
4
|
-
timestamp-rule: 'GetTimestamp() and GetDate() for ALL timestamps'
|
|
5
|
-
think-triggers: [explore_to_edit, complex_analysis]
|
|
6
|
-
architecture: 'Write-Through (JSON → MD → Events)'
|
|
7
|
-
storage-layer: true
|
|
8
|
-
source-of-truth: 'storage/specs.json'
|
|
9
|
-
claude-context: 'context/specs/'
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# /p:spec - Spec-Driven Development
|
|
13
|
-
|
|
14
|
-
Spec-Driven Development. Creates detailed specifications for complex features before implementation.
|
|
15
|
-
|
|
16
|
-
## Architecture: Write-Through Pattern
|
|
17
|
-
|
|
18
|
-
**Source of Truth**: `storage/specs.json`
|
|
19
|
-
**Claude Context**: `context/specs/{slug}.md` (generated)
|
|
20
|
-
|
|
21
|
-
## Think First
|
|
22
|
-
|
|
23
|
-
Before creating spec, analyze:
|
|
24
|
-
1. Is this feature complex enough for a spec? (auth, payments, migrations = yes)
|
|
25
|
-
2. What are the key architectural decisions to make?
|
|
26
|
-
3. Are there multiple valid approaches? Document tradeoffs.
|
|
27
|
-
4. What questions should I ask the user before proceeding?
|
|
28
|
-
|
|
29
|
-
## Context Variables
|
|
30
|
-
- `{projectId}`: From `.prjct/prjct.config.json`
|
|
31
|
-
- `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
|
|
32
|
-
- `{specsStoragePath}`: `{globalPath}/storage/specs.json`
|
|
33
|
-
- `{specsContextPath}`: `{globalPath}/context/specs/`
|
|
34
|
-
- `{queuePath}`: `{globalPath}/storage/queue.json`
|
|
35
|
-
|
|
36
|
-
## Purpose
|
|
37
|
-
|
|
38
|
-
For features that require:
|
|
39
|
-
- Clear requirements before coding
|
|
40
|
-
- Design decisions documented
|
|
41
|
-
- Tasks broken into 20-30 min chunks
|
|
42
|
-
- User approval before starting
|
|
43
|
-
|
|
44
|
-
## Flow
|
|
45
|
-
|
|
46
|
-
### No params: Show template
|
|
47
|
-
```
|
|
48
|
-
→ Interactive spec template
|
|
49
|
-
→ Ask for feature name
|
|
50
|
-
→ Guide through requirements
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### With feature name: Create spec
|
|
54
|
-
```
|
|
55
|
-
/p:spec "Dark Mode"
|
|
56
|
-
1. Analyze: Context, patterns, dependencies
|
|
57
|
-
2. Propose: Requirements + Design + Tasks
|
|
58
|
-
3. Write: `storage/specs.json` + generate `context/specs/{slug}.md`
|
|
59
|
-
4. Ask: User approval
|
|
60
|
-
5. On approve: Add tasks to `storage/queue.json`, start first
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Spec Structure
|
|
64
|
-
|
|
65
|
-
```markdown
|
|
66
|
-
# Feature Spec: {name}
|
|
67
|
-
|
|
68
|
-
**Created**: {GetDate()}
|
|
69
|
-
**Status**: PENDING_APPROVAL | APPROVED | IN_PROGRESS | COMPLETED
|
|
70
|
-
|
|
71
|
-
## Requirements (User approves)
|
|
72
|
-
- [ ] Requirement 1
|
|
73
|
-
- [ ] Requirement 2
|
|
74
|
-
- [ ] Requirement 3
|
|
75
|
-
|
|
76
|
-
## Design (Claude proposes)
|
|
77
|
-
- **Approach**: {architecture decision}
|
|
78
|
-
- **Key decisions**: {list}
|
|
79
|
-
- **Dependencies**: {existing code/libs}
|
|
80
|
-
|
|
81
|
-
## Tasks (20-30min each)
|
|
82
|
-
1. [ ] Task 1 (20m) - {description}
|
|
83
|
-
2. [ ] Task 2 (25m) - {description}
|
|
84
|
-
3. [ ] Task 3 (30m) - {description}
|
|
85
|
-
|
|
86
|
-
**Total**: {n} tasks, ~{Xh}
|
|
87
|
-
|
|
88
|
-
## Notes
|
|
89
|
-
- {implementation notes}
|
|
90
|
-
- {edge cases to consider}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Storage Format
|
|
94
|
-
|
|
95
|
-
### storage/specs.json
|
|
96
|
-
```json
|
|
97
|
-
{
|
|
98
|
-
"specs": [
|
|
99
|
-
{
|
|
100
|
-
"id": "{specId}",
|
|
101
|
-
"name": "{feature}",
|
|
102
|
-
"slug": "{feature-slug}",
|
|
103
|
-
"status": "PENDING_APPROVAL",
|
|
104
|
-
"requirements": [...],
|
|
105
|
-
"design": {...},
|
|
106
|
-
"tasks": [...],
|
|
107
|
-
"createdAt": "{timestamp}",
|
|
108
|
-
"approvedAt": null
|
|
109
|
-
}
|
|
110
|
-
],
|
|
111
|
-
"lastUpdated": "{timestamp}"
|
|
112
|
-
}
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Validation
|
|
116
|
-
|
|
117
|
-
- Feature name required for creation
|
|
118
|
-
- Spec must have at least 1 requirement
|
|
119
|
-
- Each task should be 20-30 minutes
|
|
120
|
-
- Check for existing spec with same name
|
|
121
|
-
|
|
122
|
-
## Response
|
|
123
|
-
|
|
124
|
-
### On creation:
|
|
125
|
-
```
|
|
126
|
-
📋 Spec: {feature}
|
|
127
|
-
|
|
128
|
-
Requirements ({n}):
|
|
129
|
-
{numbered_list}
|
|
130
|
-
|
|
131
|
-
Design:
|
|
132
|
-
→ {approach}
|
|
133
|
-
→ {key_decision}
|
|
134
|
-
|
|
135
|
-
Tasks ({n}, ~{total_time}):
|
|
136
|
-
{numbered_list}
|
|
137
|
-
|
|
138
|
-
APPROVE? (y/n/edit)
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### On approval:
|
|
142
|
-
```
|
|
143
|
-
✅ Spec approved: {feature}
|
|
144
|
-
→ {n} tasks added to queue
|
|
145
|
-
→ Starting: {task_1}
|
|
146
|
-
|
|
147
|
-
Use /p:done when complete
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Examples
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
/p:spec "User Authentication"
|
|
154
|
-
→ Creates spec with OAuth/JWT decisions
|
|
155
|
-
→ Breaks into: setup, login, logout, session, tests
|
|
156
|
-
→ Estimates ~4h total
|
|
157
|
-
|
|
158
|
-
/p:spec "Dark Mode"
|
|
159
|
-
→ Creates spec with theme approach
|
|
160
|
-
→ Breaks into: toggle, state, styles, persist, test
|
|
161
|
-
→ Estimates ~3h total
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## Decision Logging (absorbed from /p:decision)
|
|
165
|
-
|
|
166
|
-
Specs now capture architectural decisions inline. When making design choices:
|
|
167
|
-
|
|
168
|
-
### Decision Format
|
|
169
|
-
|
|
170
|
-
```
|
|
171
|
-
/p:spec "API Design"
|
|
172
|
-
|
|
173
|
-
[During spec creation, capture decisions:]
|
|
174
|
-
|
|
175
|
-
Decision: Use REST instead of GraphQL
|
|
176
|
-
Reasoning: Simpler for this use case, team familiarity
|
|
177
|
-
Alternatives: GraphQL, gRPC
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Storage
|
|
181
|
-
|
|
182
|
-
Decisions are stored in the spec itself:
|
|
183
|
-
```json
|
|
184
|
-
{
|
|
185
|
-
"id": "{specId}",
|
|
186
|
-
"name": "{feature}",
|
|
187
|
-
"decisions": [
|
|
188
|
-
{
|
|
189
|
-
"id": "{decisionId}",
|
|
190
|
-
"decision": "Use REST instead of GraphQL",
|
|
191
|
-
"reasoning": "Simpler for this use case",
|
|
192
|
-
"alternatives": ["GraphQL", "gRPC"],
|
|
193
|
-
"createdAt": "{timestamp}"
|
|
194
|
-
}
|
|
195
|
-
]
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Response (with decisions)
|
|
200
|
-
```
|
|
201
|
-
📝 Decision logged: Use REST instead of GraphQL
|
|
202
|
-
|
|
203
|
-
ID: {decisionId}
|
|
204
|
-
Reasoning: Simpler for this use case
|
|
205
|
-
Alternatives: GraphQL, gRPC
|
|
206
|
-
|
|
207
|
-
This creates institutional memory to avoid:
|
|
208
|
-
- Repeating the same debates
|
|
209
|
-
- Forgetting why something was done a certain way
|
|
210
|
-
- Making inconsistent choices
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Natural Language Support
|
|
214
|
-
|
|
215
|
-
- "p. spec" → Interactive spec creation
|
|
216
|
-
- "p. spec dark mode" → Create spec for dark mode
|
|
217
|
-
- "p. design spec auth" → Create spec for auth
|
|
218
|
-
- "p. decision use postgres" → Log decision (now part of spec)
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
allowed-tools: [Read, Bash]
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# p. status
|
|
6
|
-
|
|
7
|
-
Visual workflow status showing current position in the prjct lifecycle.
|
|
8
|
-
|
|
9
|
-
## Step 1: Resolve Project Paths
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Get projectId from local config
|
|
13
|
-
cat .prjct/prjct.config.json | grep -o '"projectId"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Set `globalPath = ~/.prjct-cli/projects/{projectId}`
|
|
17
|
-
|
|
18
|
-
## Step 2: Read State and Context
|
|
19
|
-
|
|
20
|
-
READ:
|
|
21
|
-
- `{globalPath}/storage/state.json` → current task, paused, previous
|
|
22
|
-
- `{globalPath}/storage/queue.json` → upcoming tasks
|
|
23
|
-
- `{globalPath}/storage/shipped.json` → recent ships
|
|
24
|
-
- `{globalPath}/project.json` → lastSync timestamp
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
# Get staleness info
|
|
28
|
-
prjct status --json 2>/dev/null || echo '{"isStale": false}'
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Step 3: Determine Workflow Position
|
|
32
|
-
|
|
33
|
-
Based on state.json, determine current position:
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
IF no currentTask AND no previousTask:
|
|
37
|
-
position = "ready" # Ready to start (after sync)
|
|
38
|
-
ELSE IF currentTask.status == "active":
|
|
39
|
-
position = "working" # In task
|
|
40
|
-
ELSE IF currentTask.status == "in_review":
|
|
41
|
-
position = "reviewing" # PR open, waiting for merge
|
|
42
|
-
ELSE IF currentTask.status == "shipped":
|
|
43
|
-
position = "shipped" # Ready for next task
|
|
44
|
-
ELSE:
|
|
45
|
-
position = "idle"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Step 4: Calculate Progress
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
IF currentTask.subtasks exists:
|
|
52
|
-
completed = count where status == "completed"
|
|
53
|
-
total = subtasks.length
|
|
54
|
-
percent = (completed / total) * 100
|
|
55
|
-
progressBar = generateBar(percent, 10) # 10 chars wide
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Progress bar generation:
|
|
59
|
-
```
|
|
60
|
-
filled = floor(percent / 10)
|
|
61
|
-
empty = 10 - filled
|
|
62
|
-
bar = "█" × filled + "░" × empty
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Step 5: Format Subtask Tree
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
FOR EACH subtask in currentTask.subtasks:
|
|
69
|
-
IF index == currentSubtaskIndex:
|
|
70
|
-
prefix = "🔄" # Current
|
|
71
|
-
ELSE IF subtask.status == "completed":
|
|
72
|
-
prefix = "✅" # Done
|
|
73
|
-
ELSE:
|
|
74
|
-
prefix = "⬜" # Pending
|
|
75
|
-
|
|
76
|
-
connector = (index == last) ? "└─" : "├─"
|
|
77
|
-
OUTPUT: " {connector} {prefix} {subtask.description}"
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Output: Workflow Diagram
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
📊 WORKFLOW STATUS
|
|
86
|
-
|
|
87
|
-
┌─────────────────────────────────────────────────────────┐
|
|
88
|
-
│ │
|
|
89
|
-
│ sync ──▶ task ──▶ [work] ──▶ done ──▶ ship │
|
|
90
|
-
│ ○ ○ ● ○ ○ │
|
|
91
|
-
│ ▲ │
|
|
92
|
-
│ YOU ARE HERE │
|
|
93
|
-
│ │
|
|
94
|
-
└─────────────────────────────────────────────────────────┘
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Position indicators:
|
|
98
|
-
- `○` = not active
|
|
99
|
-
- `●` = current position
|
|
100
|
-
- Arrow indicates flow direction
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Output: Full Status
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
📊 WORKFLOW STATUS
|
|
108
|
-
|
|
109
|
-
┌─────────────────────────────────────────────────────────┐
|
|
110
|
-
│ sync ──▶ task ──▶ work ──▶ done ──▶ ship │
|
|
111
|
-
│ {s} {t} {w} {d} {h} │
|
|
112
|
-
└─────────────────────────────────────────────────────────┘
|
|
113
|
-
|
|
114
|
-
🎯 Current: {currentTask.parentDescription}
|
|
115
|
-
Branch: {currentTask.branch}
|
|
116
|
-
Type: {currentTask.type} | Started: {elapsed}
|
|
117
|
-
{IF linearId: "Linear: {linearId}"}
|
|
118
|
-
|
|
119
|
-
Progress: {progressBar} {completed}/{total} subtasks
|
|
120
|
-
{subtask tree}
|
|
121
|
-
|
|
122
|
-
⏸️ Paused: {pausedTasks[0].description or "none"}
|
|
123
|
-
|
|
124
|
-
📋 Queue: {queueCount} tasks
|
|
125
|
-
{IF queueCount > 0:}
|
|
126
|
-
• {queue[0].description}
|
|
127
|
-
• {queue[1].description}
|
|
128
|
-
{... up to 3}
|
|
129
|
-
|
|
130
|
-
🚀 Last ship: {previousTask.description} ({daysSince})
|
|
131
|
-
{IF previousTask.prUrl: "PR: {prUrl}"}
|
|
132
|
-
|
|
133
|
-
📡 Context: {staleness status}
|
|
134
|
-
Last sync: {timeSinceSync}
|
|
135
|
-
{IF isStale: "⚠️ Run `p. sync` to refresh"}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Output: Compact (`p. status compact`)
|
|
141
|
-
|
|
142
|
-
Single-line summary:
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
{position_emoji} {currentTask.description} │ {progressBar} {completed}/{total} │ 📋 {queueCount} │ {staleness_emoji}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Position emojis:
|
|
149
|
-
- 🔄 = working
|
|
150
|
-
- 👀 = reviewing
|
|
151
|
-
- ✅ = shipped
|
|
152
|
-
- 💤 = idle
|
|
153
|
-
|
|
154
|
-
Staleness emojis:
|
|
155
|
-
- ✅ = fresh
|
|
156
|
-
- ⚠️ = stale
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Output: No Active Task
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
📊 WORKFLOW STATUS
|
|
164
|
-
|
|
165
|
-
┌─────────────────────────────────────────────────────────┐
|
|
166
|
-
│ sync ──▶ task ──▶ work ──▶ done ──▶ ship │
|
|
167
|
-
│ ● ○ ○ ○ ○ │
|
|
168
|
-
└─────────────────────────────────────────────────────────┘
|
|
169
|
-
|
|
170
|
-
💤 No active task
|
|
171
|
-
|
|
172
|
-
📋 Queue: {queueCount} tasks
|
|
173
|
-
{IF queueCount > 0:}
|
|
174
|
-
• {queue[0].description}
|
|
175
|
-
|
|
176
|
-
🚀 Last ship: {previousTask.description} ({daysSince})
|
|
177
|
-
|
|
178
|
-
Next: `p. task "description"` or `p. task PRJ-XXX`
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## Elapsed Time Formatting
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
IF minutes < 60: "{minutes}m"
|
|
187
|
-
ELSE IF hours < 24: "{hours}h {minutes}m"
|
|
188
|
-
ELSE: "{days}d {hours}h"
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## Context Staleness
|
|
194
|
-
|
|
195
|
-
From `prjct status --json`:
|
|
196
|
-
```json
|
|
197
|
-
{
|
|
198
|
-
"isStale": true,
|
|
199
|
-
"commitsSinceSync": 15,
|
|
200
|
-
"daysSinceSync": 3,
|
|
201
|
-
"significantChanges": ["package.json", "tsconfig.json"]
|
|
202
|
-
}
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Display:
|
|
206
|
-
- Fresh (< 10 commits, < 3 days): `✅ Fresh (synced {time} ago)`
|
|
207
|
-
- Stale: `⚠️ Stale ({commits} commits, {days}d) - run p. sync`
|