prjct-cli 1.22.0 → 1.23.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 +147 -0
- package/bin/prjct +30 -13
- package/dist/bin/prjct.mjs +917 -35845
- package/dist/bin/prjct.mjs.map +7 -0
- package/dist/cli/linear.mjs +16 -0
- package/dist/cli/linear.mjs.map +7 -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,391 +0,0 @@
|
|
|
1
|
-
# Storage Specification
|
|
2
|
-
|
|
3
|
-
**Canonical specification for prjct storage format.**
|
|
4
|
-
|
|
5
|
-
This document defines the exact format for all storage files. Both Claude and Gemini agents MUST produce **identical output** for the same operations to ensure cross-agent compatibility and future remote sync.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Directory Structure
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
~/.prjct-cli/projects/{projectId}/
|
|
13
|
-
├── storage/
|
|
14
|
-
│ ├── state.json # Current task (SOURCE OF TRUTH)
|
|
15
|
-
│ ├── queue.json # Task queue
|
|
16
|
-
│ └── shipped.json # Shipped features
|
|
17
|
-
├── context/
|
|
18
|
-
│ ├── now.md # Current task (generated from state.json)
|
|
19
|
-
│ └── next.md # Queue (generated from queue.json)
|
|
20
|
-
├── config/
|
|
21
|
-
│ └── skills.json # Agent-to-skill mappings
|
|
22
|
-
├── memory/
|
|
23
|
-
│ ├── events.jsonl # Audit trail (append-only)
|
|
24
|
-
│ └── learnings.jsonl # LLM knowledge base (append-only)
|
|
25
|
-
├── agents/ # Domain specialists (auto-generated)
|
|
26
|
-
└── sync/
|
|
27
|
-
└── pending.json # Events for backend sync
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## JSON Schemas
|
|
33
|
-
|
|
34
|
-
### state.json
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"task": {
|
|
39
|
-
"id": "uuid-v4",
|
|
40
|
-
"title": "string",
|
|
41
|
-
"type": "feature|bug|improvement|refactor|chore",
|
|
42
|
-
"status": "active|paused|done",
|
|
43
|
-
"branch": "string|null",
|
|
44
|
-
"subtasks": [
|
|
45
|
-
{
|
|
46
|
-
"id": "uuid-v4",
|
|
47
|
-
"title": "string",
|
|
48
|
-
"status": "pending|done"
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
"currentSubtask": 0,
|
|
52
|
-
"createdAt": "2024-01-15T10:30:00.000Z",
|
|
53
|
-
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Empty state (no active task):**
|
|
59
|
-
```json
|
|
60
|
-
{
|
|
61
|
-
"task": null
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### queue.json
|
|
66
|
-
|
|
67
|
-
```json
|
|
68
|
-
{
|
|
69
|
-
"tasks": [
|
|
70
|
-
{
|
|
71
|
-
"id": "uuid-v4",
|
|
72
|
-
"title": "string",
|
|
73
|
-
"type": "feature|bug|improvement|refactor|chore",
|
|
74
|
-
"priority": 1,
|
|
75
|
-
"createdAt": "2024-01-15T10:30:00.000Z"
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### shipped.json
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"features": [
|
|
87
|
-
{
|
|
88
|
-
"id": "uuid-v4",
|
|
89
|
-
"name": "string",
|
|
90
|
-
"version": "1.0.0",
|
|
91
|
-
"type": "feature|bug|improvement|refactor|chore",
|
|
92
|
-
"shippedAt": "2024-01-15T10:30:00.000Z"
|
|
93
|
-
}
|
|
94
|
-
],
|
|
95
|
-
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### events.jsonl (append-only)
|
|
100
|
-
|
|
101
|
-
One JSON object per line. NEVER modify existing lines.
|
|
102
|
-
|
|
103
|
-
```jsonl
|
|
104
|
-
{"type":"task.created","timestamp":"2024-01-15T10:30:00.000Z","data":{"taskId":"uuid","title":"string"}}
|
|
105
|
-
{"type":"task.started","timestamp":"2024-01-15T10:30:00.000Z","data":{"taskId":"uuid"}}
|
|
106
|
-
{"type":"subtask.completed","timestamp":"2024-01-15T10:35:00.000Z","data":{"taskId":"uuid","subtaskIndex":0}}
|
|
107
|
-
{"type":"task.completed","timestamp":"2024-01-15T10:40:00.000Z","data":{"taskId":"uuid"}}
|
|
108
|
-
{"type":"feature.shipped","timestamp":"2024-01-15T10:45:00.000Z","data":{"featureId":"uuid","name":"string","version":"1.0.0"}}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Event Types:**
|
|
112
|
-
- `task.created` - New task created
|
|
113
|
-
- `task.started` - Task activated
|
|
114
|
-
- `task.paused` - Task paused
|
|
115
|
-
- `task.resumed` - Task resumed
|
|
116
|
-
- `task.completed` - Task completed
|
|
117
|
-
- `subtask.completed` - Subtask completed
|
|
118
|
-
- `feature.shipped` - Feature shipped
|
|
119
|
-
|
|
120
|
-
### learnings.jsonl (append-only, LLM Knowledge)
|
|
121
|
-
|
|
122
|
-
**Purpose**: LLM-to-LLM knowledge transfer. Captures patterns, approaches, and decisions for future semantic retrieval. NOT human documentation.
|
|
123
|
-
|
|
124
|
-
One JSON object per line. NEVER modify existing lines.
|
|
125
|
-
|
|
126
|
-
```jsonl
|
|
127
|
-
{"taskId":"uuid","linearId":"PRJ-123","timestamp":"2024-01-15T10:40:00.000Z","learnings":{"patterns":["Use NestedContextResolver for hierarchical discovery"],"approaches":["Mirror existing method structure when extending"],"decisions":["Extended class rather than wrapper for consistency"],"gotchas":["Must handle null parent case"]},"value":{"type":"feature","impact":"high","description":"Hierarchical AGENTS.md support for monorepos"},"filesChanged":["core/resolver.ts","core/types.ts"],"tags":["agents","hierarchy","monorepo"]}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Schema:**
|
|
131
|
-
```json
|
|
132
|
-
{
|
|
133
|
-
"taskId": "uuid-v4",
|
|
134
|
-
"linearId": "string|null",
|
|
135
|
-
"timestamp": "2024-01-15T10:40:00.000Z",
|
|
136
|
-
"learnings": {
|
|
137
|
-
"patterns": ["string"],
|
|
138
|
-
"approaches": ["string"],
|
|
139
|
-
"decisions": ["string"],
|
|
140
|
-
"gotchas": ["string"]
|
|
141
|
-
},
|
|
142
|
-
"value": {
|
|
143
|
-
"type": "feature|bugfix|performance|dx|refactor|infrastructure",
|
|
144
|
-
"impact": "high|medium|low",
|
|
145
|
-
"description": "string"
|
|
146
|
-
},
|
|
147
|
-
"filesChanged": ["string"],
|
|
148
|
-
"tags": ["string"]
|
|
149
|
-
}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
**Why Local Cache**: Enables future semantic retrieval without API latency. Will feed into vector DB for cross-session knowledge transfer.
|
|
153
|
-
|
|
154
|
-
### skills.json
|
|
155
|
-
|
|
156
|
-
```json
|
|
157
|
-
{
|
|
158
|
-
"mappings": {
|
|
159
|
-
"frontend.md": ["frontend-design"],
|
|
160
|
-
"backend.md": ["javascript-typescript"],
|
|
161
|
-
"testing.md": ["developer-kit"]
|
|
162
|
-
},
|
|
163
|
-
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### pending.json (sync queue)
|
|
168
|
-
|
|
169
|
-
```json
|
|
170
|
-
{
|
|
171
|
-
"events": [
|
|
172
|
-
{
|
|
173
|
-
"id": "uuid-v4",
|
|
174
|
-
"type": "task.created",
|
|
175
|
-
"timestamp": "2024-01-15T10:30:00.000Z",
|
|
176
|
-
"data": {},
|
|
177
|
-
"synced": false
|
|
178
|
-
}
|
|
179
|
-
],
|
|
180
|
-
"lastSync": "2024-01-15T10:30:00.000Z"
|
|
181
|
-
}
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## Formatting Rules (MANDATORY)
|
|
187
|
-
|
|
188
|
-
All agents MUST follow these rules for cross-agent compatibility:
|
|
189
|
-
|
|
190
|
-
| Rule | Value |
|
|
191
|
-
|------|-------|
|
|
192
|
-
| JSON indentation | 2 spaces |
|
|
193
|
-
| Trailing commas | NEVER |
|
|
194
|
-
| Key ordering | Logical (as shown in schemas above) |
|
|
195
|
-
| Timestamps | ISO-8601 with milliseconds (`.000Z`) |
|
|
196
|
-
| UUIDs | v4 format (lowercase) |
|
|
197
|
-
| Line endings | LF (not CRLF) |
|
|
198
|
-
| File encoding | UTF-8 without BOM |
|
|
199
|
-
| Empty objects | `{}` |
|
|
200
|
-
| Empty arrays | `[]` |
|
|
201
|
-
| Null values | `null` (lowercase) |
|
|
202
|
-
|
|
203
|
-
### Timestamp Generation
|
|
204
|
-
|
|
205
|
-
```bash
|
|
206
|
-
# ALWAYS use dynamic timestamps, NEVER hardcode
|
|
207
|
-
bun -e "console.log(new Date().toISOString())" 2>/dev/null || node -e "console.log(new Date().toISOString())"
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### UUID Generation
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
# ALWAYS generate fresh UUIDs
|
|
214
|
-
bun -e "console.log(crypto.randomUUID())" 2>/dev/null || node -e "console.log(require('crypto').randomUUID())"
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
## Write Rules (CRITICAL)
|
|
220
|
-
|
|
221
|
-
### Direct Writes Only
|
|
222
|
-
|
|
223
|
-
**NEVER use temporary files** - Write directly to final destination:
|
|
224
|
-
|
|
225
|
-
```
|
|
226
|
-
WRONG: Create `.tmp/file.json`, then `mv` to final path
|
|
227
|
-
CORRECT: Write directly to `{globalPath}/storage/state.json`
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Atomic Updates
|
|
231
|
-
|
|
232
|
-
```javascript
|
|
233
|
-
// Read → Modify → Write (no temp files)
|
|
234
|
-
const data = JSON.parse(fs.readFileSync(path, 'utf-8'))
|
|
235
|
-
data.newField = value
|
|
236
|
-
fs.writeFileSync(path, JSON.stringify(data, null, 2))
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
### NEVER Do These
|
|
240
|
-
|
|
241
|
-
- Use `.tmp/` directories
|
|
242
|
-
- Use `mv` or `rename` operations for storage files
|
|
243
|
-
- Create backup files like `*.bak` or `*.old`
|
|
244
|
-
- Modify existing lines in `events.jsonl`
|
|
245
|
-
- Use different JSON formatting between agents
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Cross-Agent Compatibility
|
|
250
|
-
|
|
251
|
-
### Why This Matters
|
|
252
|
-
|
|
253
|
-
1. **User freedom**: Switch between Claude and Gemini freely
|
|
254
|
-
2. **Remote sync**: Storage will sync to prjct.app backend
|
|
255
|
-
3. **Single truth**: Both agents produce identical output
|
|
256
|
-
|
|
257
|
-
### Verification Test
|
|
258
|
-
|
|
259
|
-
```bash
|
|
260
|
-
# Start task with Claude
|
|
261
|
-
p. task "add feature X"
|
|
262
|
-
|
|
263
|
-
# Switch to Gemini, continue
|
|
264
|
-
p. done # Should work seamlessly
|
|
265
|
-
|
|
266
|
-
# Switch back to Claude
|
|
267
|
-
p. ship # Should read Gemini's changes correctly
|
|
268
|
-
|
|
269
|
-
# Verify JSON format
|
|
270
|
-
cat ~/.prjct-cli/projects/{id}/storage/state.json | python -m json.tool
|
|
271
|
-
# Must be valid, formatted JSON
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### Remote Sync Flow
|
|
275
|
-
|
|
276
|
-
```
|
|
277
|
-
Local Storage (Claude/Gemini)
|
|
278
|
-
↓
|
|
279
|
-
sync/pending.json (events queue)
|
|
280
|
-
↓
|
|
281
|
-
prjct.app API
|
|
282
|
-
↓
|
|
283
|
-
Global Remote Storage
|
|
284
|
-
↓
|
|
285
|
-
Any device, any agent
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## Local Caching Strategy (CRITICAL)
|
|
291
|
-
|
|
292
|
-
### ⛔ MUST: Read Local, Write Remote
|
|
293
|
-
|
|
294
|
-
**This is NON-NEGOTIABLE for token efficiency and latency.**
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
┌─────────────────────────────────────────────────────────┐
|
|
298
|
-
│ READ: ALWAYS from local cache (issues.json) │
|
|
299
|
-
│ WRITE: Status updates go to remote API │
|
|
300
|
-
│ NEVER: Re-fetch issue details after initial sync │
|
|
301
|
-
└─────────────────────────────────────────────────────────┘
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
### Why This Matters
|
|
305
|
-
|
|
306
|
-
| Problem | Without Local Cache | With Local Cache |
|
|
307
|
-
|---------|---------------------|------------------|
|
|
308
|
-
| **Token usage** | Re-read full issue (title, description, AC) every time | Read once, cache forever |
|
|
309
|
-
| **API latency** | 200-500ms per API call | 0ms (local file read) |
|
|
310
|
-
| **API costs** | Multiple calls per task | 1 sync call, then local |
|
|
311
|
-
| **Context bloat** | Full issue in every LLM context | Minimal, only what's needed |
|
|
312
|
-
|
|
313
|
-
### The Pattern
|
|
314
|
-
|
|
315
|
-
```
|
|
316
|
-
p. sync → Fetch ALL issues once → Write to issues.json
|
|
317
|
-
p. task PRJ-123 → READ from issues.json (NOT API)
|
|
318
|
-
→ WRITE status "In Progress" to API
|
|
319
|
-
p. done → READ state.json (local)
|
|
320
|
-
→ WRITE status "Done" to API
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
### Cache Files
|
|
324
|
-
|
|
325
|
-
| Cache File | Source | Purpose |
|
|
326
|
-
|------------|--------|---------|
|
|
327
|
-
| `storage/issues.json` | Linear/JIRA API | Issue titles, descriptions, AC (READ ONLY after sync) |
|
|
328
|
-
| `storage/state.json` | Local operations | Current task state |
|
|
329
|
-
| `memory/learnings.jsonl` | Task completions | LLM knowledge for future sessions |
|
|
330
|
-
| `memory/events.jsonl` | All operations | Audit trail + future sync |
|
|
331
|
-
|
|
332
|
-
### ⛔ NEVER Do These
|
|
333
|
-
|
|
334
|
-
- **NEVER** call API to get issue details during `p. task` - use local cache
|
|
335
|
-
- **NEVER** re-fetch issue description/AC after initial sync
|
|
336
|
-
- **NEVER** load full issue context into LLM when you already have it cached
|
|
337
|
-
- **NEVER** make API calls for READ operations (except explicit `p. sync`)
|
|
338
|
-
|
|
339
|
-
### ALLOWED API Calls
|
|
340
|
-
|
|
341
|
-
Only these remote writes are allowed:
|
|
342
|
-
- `linear.ts start {id}` - Update status to "In Progress"
|
|
343
|
-
- `linear.ts done {id}` - Update status to "Done"
|
|
344
|
-
- `linear.ts comment {id} "..."` - Add completion comment
|
|
345
|
-
- `jira.ts transition {id} "..."` - Update JIRA status
|
|
346
|
-
|
|
347
|
-
### Sync Strategy
|
|
348
|
-
|
|
349
|
-
```
|
|
350
|
-
p. sync (explicit)
|
|
351
|
-
│
|
|
352
|
-
▼
|
|
353
|
-
Remote API ──────> Local Cache (issues.json)
|
|
354
|
-
│
|
|
355
|
-
▼
|
|
356
|
-
All reads from here (0 latency, 0 extra tokens)
|
|
357
|
-
│
|
|
358
|
-
▼
|
|
359
|
-
Status writes ──────> Remote API (fire & forget)
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### Token Efficiency Example
|
|
363
|
-
|
|
364
|
-
```
|
|
365
|
-
WITHOUT cache (BAD):
|
|
366
|
-
p. task PRJ-123
|
|
367
|
-
→ API call: fetch issue (500ms, 2000 tokens for description+AC)
|
|
368
|
-
→ Work...
|
|
369
|
-
→ API call: fetch issue again for status update (500ms, 2000 tokens)
|
|
370
|
-
Total: 1000ms latency, 4000 wasted tokens
|
|
371
|
-
|
|
372
|
-
WITH cache (GOOD):
|
|
373
|
-
p. sync (once per session)
|
|
374
|
-
→ All issues cached locally
|
|
375
|
-
p. task PRJ-123
|
|
376
|
-
→ Read issues.json (0ms, already in context from sync)
|
|
377
|
-
→ Work...
|
|
378
|
-
→ Write status to API (fire & forget)
|
|
379
|
-
Total: 0ms read latency, 0 extra tokens
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
### Cache Invalidation
|
|
383
|
-
|
|
384
|
-
- `p. sync` forces full refresh from remote
|
|
385
|
-
- TTL-based staleness detection (warns user, doesn't auto-fetch)
|
|
386
|
-
- Manual refresh via `prjct linear sync` or `prjct jira sync`
|
|
387
|
-
|
|
388
|
-
---
|
|
389
|
-
|
|
390
|
-
**Version**: 1.1.0
|
|
391
|
-
**Last Updated**: 2026-02-05
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
trigger: always_on
|
|
3
|
-
description: "prjct - Context layer for AI coding agents"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- prjct:start - DO NOT REMOVE THIS MARKER -->
|
|
7
|
-
# prjct-cli
|
|
8
|
-
|
|
9
|
-
**Context layer for AI agents** - Project context for your AI coding assistant.
|
|
10
|
-
|
|
11
|
-
## HOW TO USE PRJCT (Read This First)
|
|
12
|
-
|
|
13
|
-
In Windsurf, use the `/workflow` syntax. Type `/` followed by the workflow name:
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
/sync → Analyze project, generate agents
|
|
17
|
-
/task X → Start task with description X
|
|
18
|
-
/done → Complete current subtask
|
|
19
|
-
/ship → Ship feature with PR + version bump
|
|
20
|
-
/bug X → Report bug with description X
|
|
21
|
-
/pause → Pause current task
|
|
22
|
-
/resume → Resume paused task
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Each workflow loads templates from the prjct-cli npm package.
|
|
26
|
-
|
|
27
|
-
**Key Insight**: Templates are GUIDANCE, not scripts. Use your intelligence to adapt them to the situation.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## CRITICAL RULES
|
|
32
|
-
|
|
33
|
-
### 0. PLAN BEFORE ACTION (NON-NEGOTIABLE)
|
|
34
|
-
|
|
35
|
-
**For ANY prjct task, you MUST create a plan and get user approval BEFORE executing.**
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
EVERY prjct workflow (/task, /sync, /ship, etc.):
|
|
39
|
-
1. STOP - Do not execute anything yet
|
|
40
|
-
2. ANALYZE - Read relevant files, understand scope
|
|
41
|
-
3. PLAN - Write a clear plan with:
|
|
42
|
-
- What will be done
|
|
43
|
-
- Files that will be modified
|
|
44
|
-
- Potential risks
|
|
45
|
-
4. ASK - Present plan to user and wait for explicit approval
|
|
46
|
-
5. EXECUTE - Only after user says "yes", "approved", "go ahead", etc.
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**NEVER:**
|
|
50
|
-
- Execute code changes without showing a plan first
|
|
51
|
-
- Assume approval - wait for explicit confirmation
|
|
52
|
-
- Skip the plan step for "simple" tasks
|
|
53
|
-
|
|
54
|
-
**ALWAYS:**
|
|
55
|
-
- Show the plan in a clear, readable format
|
|
56
|
-
- Wait for user response before proceeding
|
|
57
|
-
- If user asks questions, answer them before executing
|
|
58
|
-
|
|
59
|
-
This rule applies to ALL prjct operations. No exceptions.
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
### 1. Path Resolution (MOST IMPORTANT)
|
|
64
|
-
**ALL writes go to global storage**: `~/.prjct-cli/projects/{projectId}/`
|
|
65
|
-
|
|
66
|
-
- **NEVER** write to `.prjct/` (config only, read-only)
|
|
67
|
-
- **NEVER** write to `./` (current directory)
|
|
68
|
-
- **ALWAYS** resolve projectId first from `.prjct/prjct.config.json`
|
|
69
|
-
|
|
70
|
-
### 2. Before Any Workflow
|
|
71
|
-
```
|
|
72
|
-
1. Read .prjct/prjct.config.json → get projectId
|
|
73
|
-
2. Set globalPath = ~/.prjct-cli/projects/{projectId}
|
|
74
|
-
3. Execute workflow using globalPath for all writes
|
|
75
|
-
4. Log to {globalPath}/memory/events.jsonl
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 3. Loading Templates
|
|
79
|
-
```bash
|
|
80
|
-
# Get npm global root
|
|
81
|
-
npm root -g
|
|
82
|
-
# → e.g., /opt/homebrew/lib/node_modules
|
|
83
|
-
|
|
84
|
-
# Read template
|
|
85
|
-
{npmRoot}/prjct-cli/templates/commands/{workflow}.md
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### 4. Timestamps & UUIDs
|
|
89
|
-
```bash
|
|
90
|
-
# Timestamp (NEVER hardcode)
|
|
91
|
-
node -e "console.log(new Date().toISOString())"
|
|
92
|
-
|
|
93
|
-
# UUID
|
|
94
|
-
node -e "console.log(require('crypto').randomUUID())"
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 5. Git Commit Footer (CRITICAL - ALWAYS INCLUDE)
|
|
98
|
-
|
|
99
|
-
**Every commit made with prjct MUST include this footer:**
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
Generated with [p/](https://www.prjct.app/)
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**This is NON-NEGOTIABLE. The prjct signature must appear in ALL commits.**
|
|
106
|
-
|
|
107
|
-
### 6. Storage Rules (CROSS-AGENT COMPATIBILITY)
|
|
108
|
-
|
|
109
|
-
**NEVER use temporary files** - Write directly to final destination:
|
|
110
|
-
- WRONG: Create `.tmp/file.json`, then `mv` to final path
|
|
111
|
-
- CORRECT: Write directly to `{globalPath}/storage/state.json`
|
|
112
|
-
|
|
113
|
-
**JSON formatting** - Always use consistent format:
|
|
114
|
-
- 2-space indentation
|
|
115
|
-
- No trailing commas
|
|
116
|
-
- Keys in logical order
|
|
117
|
-
|
|
118
|
-
**Timestamps**: Always ISO-8601 with milliseconds (`.000Z`)
|
|
119
|
-
**UUIDs**: Always v4 format (lowercase)
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## CORE WORKFLOW
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
/sync → /task "description" → [work] → /done → /ship
|
|
127
|
-
│ │ │ │
|
|
128
|
-
│ └─ Creates branch, breaks down │ │
|
|
129
|
-
│ task, starts tracking │ │
|
|
130
|
-
│ │ │
|
|
131
|
-
└─ Analyzes project, generates agents │ │
|
|
132
|
-
│ │
|
|
133
|
-
Completes subtask ───┘ │
|
|
134
|
-
│
|
|
135
|
-
Ships feature, PR ────┘
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Quick Reference
|
|
139
|
-
|
|
140
|
-
| Workflow | What It Does |
|
|
141
|
-
|----------|--------------|
|
|
142
|
-
| `/sync` | Analyze project, generate domain agents |
|
|
143
|
-
| `/task <desc>` | Start task with auto-classification |
|
|
144
|
-
| `/done` | Complete current subtask |
|
|
145
|
-
| `/ship [name]` | Ship feature with PR + version bump |
|
|
146
|
-
| `/pause` | Pause current task |
|
|
147
|
-
| `/resume` | Resume paused task |
|
|
148
|
-
| `/bug <desc>` | Report bug with auto-priority |
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## ARCHITECTURE: Write-Through Pattern
|
|
153
|
-
|
|
154
|
-
```
|
|
155
|
-
User Action → Storage (JSON) → Context (MD) → Sync Events
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
| Layer | Path | Purpose |
|
|
159
|
-
|-------|------|---------|
|
|
160
|
-
| **Storage** | `storage/*.json` | Source of truth |
|
|
161
|
-
| **Context** | `context/*.md` | AI-readable summaries |
|
|
162
|
-
| **Memory** | `memory/events.jsonl` | Audit trail (append-only) |
|
|
163
|
-
| **Agents** | `agents/*.md` | Domain specialists |
|
|
164
|
-
| **Sync** | `sync/pending.json` | Backend sync queue |
|
|
165
|
-
|
|
166
|
-
### File Structure
|
|
167
|
-
```
|
|
168
|
-
~/.prjct-cli/projects/{projectId}/
|
|
169
|
-
├── storage/
|
|
170
|
-
│ ├── state.json # Current task (SOURCE OF TRUTH)
|
|
171
|
-
│ ├── queue.json # Task queue
|
|
172
|
-
│ └── shipped.json # Shipped features
|
|
173
|
-
├── context/
|
|
174
|
-
│ ├── now.md # Current task (generated)
|
|
175
|
-
│ └── next.md # Queue (generated)
|
|
176
|
-
├── config/
|
|
177
|
-
│ └── skills.json # Agent-to-skill mappings
|
|
178
|
-
├── memory/
|
|
179
|
-
│ └── events.jsonl # Audit trail
|
|
180
|
-
├── agents/ # Domain specialists (auto-generated)
|
|
181
|
-
└── sync/
|
|
182
|
-
└── pending.json # Events for backend
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## INTELLIGENT BEHAVIOR
|
|
188
|
-
|
|
189
|
-
### When Starting Tasks (`/task`)
|
|
190
|
-
1. **Analyze** - Understand what user wants to achieve
|
|
191
|
-
2. **Classify** - Determine type: feature, bug, improvement, refactor, chore
|
|
192
|
-
3. **Explore** - Find similar code, patterns, affected files
|
|
193
|
-
4. **Ask** - Clarify ambiguities
|
|
194
|
-
5. **Design** - Propose 2-3 approaches, get approval
|
|
195
|
-
6. **Break down** - Create actionable subtasks
|
|
196
|
-
7. **Track** - Update storage/state.json
|
|
197
|
-
|
|
198
|
-
### When Completing Tasks (`/done`)
|
|
199
|
-
1. Check if there are more subtasks
|
|
200
|
-
2. If yes, advance to next subtask
|
|
201
|
-
3. If no, task is complete
|
|
202
|
-
4. Update storage, generate context
|
|
203
|
-
|
|
204
|
-
### When Shipping (`/ship`)
|
|
205
|
-
1. Run tests (if configured)
|
|
206
|
-
2. Create PR (if on feature branch)
|
|
207
|
-
3. Bump version
|
|
208
|
-
4. Update CHANGELOG
|
|
209
|
-
5. Create git tag
|
|
210
|
-
|
|
211
|
-
### Key Intelligence Rules
|
|
212
|
-
- **Read before write** - Always read existing files before modifying
|
|
213
|
-
- **Explore before coding** - Understand codebase structure
|
|
214
|
-
- **Ask when uncertain** - Clarify requirements
|
|
215
|
-
- **Adapt templates** - Templates are guidance, not rigid scripts
|
|
216
|
-
- **Log everything** - Append to memory/events.jsonl
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## OUTPUT FORMAT
|
|
221
|
-
|
|
222
|
-
Concise responses (< 4 lines):
|
|
223
|
-
```
|
|
224
|
-
✅ [What was done]
|
|
225
|
-
|
|
226
|
-
[Key metrics]
|
|
227
|
-
Next: [suggested action]
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
## LOADING DOMAIN AGENTS
|
|
233
|
-
|
|
234
|
-
When working on tasks, load relevant agents from `{globalPath}/agents/`:
|
|
235
|
-
- `frontend.md` - Frontend patterns, components
|
|
236
|
-
- `backend.md` - Backend patterns, APIs
|
|
237
|
-
- `database.md` - Database patterns, queries
|
|
238
|
-
- `uxui.md` - UX/UI guidelines
|
|
239
|
-
- `testing.md` - Testing patterns
|
|
240
|
-
- `devops.md` - CI/CD, containers
|
|
241
|
-
|
|
242
|
-
These agents contain project-specific patterns. **USE THEM**.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## WINDSURF-SPECIFIC NOTES
|
|
247
|
-
|
|
248
|
-
### Router Regeneration
|
|
249
|
-
If workflow files in `.windsurf/workflows/` are deleted:
|
|
250
|
-
- Run `/sync` to regenerate them
|
|
251
|
-
- Or run `prjct init` in the project
|
|
252
|
-
|
|
253
|
-
### Model Agnostic
|
|
254
|
-
prjct works with any model Windsurf supports:
|
|
255
|
-
- GPT-4, GPT-4o
|
|
256
|
-
- Claude Opus, Claude Sonnet
|
|
257
|
-
- Gemini Pro
|
|
258
|
-
- And more
|
|
259
|
-
|
|
260
|
-
The instructions are model-agnostic.
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
**Auto-managed by prjct-cli** | https://prjct.app
|
|
265
|
-
|
|
266
|
-
<!-- prjct:end - DO NOT REMOVE THIS MARKER -->
|