prjct-cli 1.45.5 → 1.45.6
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 +23 -4
- package/dist/bin/prjct-core.mjs +124 -124
- package/dist/cli/jira.mjs +1 -1
- package/dist/cli/linear.mjs +1 -1
- package/dist/templates.json +1 -1
- package/package.json +2 -1
- package/templates/agentic/agent-routing.md +45 -0
- package/templates/agentic/agents/uxui.md +63 -0
- package/templates/agentic/checklist-routing.md +98 -0
- package/templates/agentic/orchestrator.md +68 -0
- package/templates/agentic/task-fragmentation.md +89 -0
- package/templates/agents/AGENTS.md +67 -0
- package/templates/analysis/analyze.md +84 -0
- package/templates/analysis/patterns.md +60 -0
- package/templates/antigravity/SKILL.md +39 -0
- package/templates/architect/discovery.md +67 -0
- package/templates/architect/phases.md +59 -0
- package/templates/baseline/anti-patterns/nextjs.json +18 -0
- package/templates/baseline/anti-patterns/react.json +18 -0
- package/templates/baseline/anti-patterns/typescript.json +18 -0
- package/templates/baseline/patterns/nextjs.json +18 -0
- package/templates/baseline/patterns/react.json +18 -0
- package/templates/baseline/patterns/typescript.json +18 -0
- package/templates/checklists/architecture.md +28 -0
- package/templates/checklists/code-quality.md +28 -0
- package/templates/checklists/data.md +33 -0
- package/templates/checklists/documentation.md +33 -0
- package/templates/checklists/infrastructure.md +33 -0
- package/templates/checklists/performance.md +33 -0
- package/templates/checklists/security.md +33 -0
- package/templates/checklists/testing.md +33 -0
- package/templates/checklists/ux-ui.md +37 -0
- package/templates/codex/SKILL.md +36 -0
- package/templates/commands/analyze.md +11 -0
- package/templates/commands/auth.md +15 -0
- package/templates/commands/bug.md +28 -0
- package/templates/commands/cleanup.md +11 -0
- package/templates/commands/dash.md +16 -0
- package/templates/commands/design.md +11 -0
- package/templates/commands/done.md +33 -0
- package/templates/commands/enrich.md +20 -0
- package/templates/commands/git.md +17 -0
- package/templates/commands/history.md +13 -0
- package/templates/commands/idea.md +13 -0
- package/templates/commands/impact.md +13 -0
- package/templates/commands/init.md +11 -0
- package/templates/commands/jira.md +88 -0
- package/templates/commands/learnings.md +11 -0
- package/templates/commands/linear.md +82 -0
- package/templates/commands/merge.md +25 -0
- package/templates/commands/next.md +12 -0
- package/templates/commands/p.md +62 -0
- package/templates/commands/p.toml +37 -0
- package/templates/commands/pause.md +16 -0
- package/templates/commands/plan.md +13 -0
- package/templates/commands/prd.md +21 -0
- package/templates/commands/resume.md +12 -0
- package/templates/commands/review.md +20 -0
- package/templates/commands/serve.md +11 -0
- package/templates/commands/sessions.md +13 -0
- package/templates/commands/setup.md +11 -0
- package/templates/commands/ship.md +46 -0
- package/templates/commands/skill.md +13 -0
- package/templates/commands/spec.md +20 -0
- package/templates/commands/status.md +11 -0
- package/templates/commands/sync.md +23 -0
- package/templates/commands/task.md +52 -0
- package/templates/commands/test.md +22 -0
- package/templates/commands/update.md +11 -0
- package/templates/commands/verify.md +11 -0
- package/templates/commands/workflow.md +69 -0
- package/templates/config/skill-mappings.json +82 -0
- package/templates/context/dashboard.md +251 -0
- package/templates/context/roadmap.md +221 -0
- package/templates/cursor/commands/bug.md +8 -0
- package/templates/cursor/commands/done.md +4 -0
- package/templates/cursor/commands/pause.md +6 -0
- package/templates/cursor/commands/resume.md +4 -0
- package/templates/cursor/commands/ship.md +8 -0
- package/templates/cursor/commands/sync.md +4 -0
- package/templates/cursor/commands/task.md +8 -0
- package/templates/cursor/p.md +29 -0
- package/templates/cursor/router.mdc +28 -0
- package/templates/design/api.md +95 -0
- package/templates/design/architecture.md +77 -0
- package/templates/design/component.md +89 -0
- package/templates/design/database.md +78 -0
- package/templates/design/flow.md +94 -0
- package/templates/global/ANTIGRAVITY.md +17 -0
- package/templates/global/CLAUDE.md +20 -0
- package/templates/global/CURSOR.mdc +20 -0
- package/templates/global/GEMINI.md +17 -0
- package/templates/global/STORAGE-SPEC.md +328 -0
- package/templates/global/WINDSURF.md +22 -0
- package/templates/global/modules/CLAUDE-commands.md +1 -0
- package/templates/global/modules/CLAUDE-core.md +16 -0
- package/templates/global/modules/CLAUDE-git.md +1 -0
- package/templates/global/modules/CLAUDE-intelligence.md +1 -0
- package/templates/global/modules/CLAUDE-storage.md +1 -0
- package/templates/global/modules/module-config.json +12 -0
- package/templates/mcp-config.json +29 -0
- package/templates/permissions/default.jsonc +60 -0
- package/templates/permissions/permissive.jsonc +49 -0
- package/templates/permissions/strict.jsonc +58 -0
- package/templates/planning-methodology.md +195 -0
- package/templates/skills/code-review.md +47 -0
- package/templates/skills/debug.md +61 -0
- package/templates/skills/refactor.md +47 -0
- package/templates/subagents/agent-base.md +21 -0
- package/templates/subagents/domain/backend.md +109 -0
- package/templates/subagents/domain/database.md +121 -0
- package/templates/subagents/domain/devops.md +152 -0
- package/templates/subagents/domain/frontend.md +103 -0
- package/templates/subagents/domain/testing.md +169 -0
- package/templates/subagents/pm-expert.md +366 -0
- package/templates/subagents/workflow/chief-architect.md +653 -0
- package/templates/subagents/workflow/prjct-planner.md +120 -0
- package/templates/subagents/workflow/prjct-shipper.md +175 -0
- package/templates/subagents/workflow/prjct-workflow.md +82 -0
- package/templates/tools/bash.txt +22 -0
- package/templates/tools/edit.txt +18 -0
- package/templates/tools/glob.txt +19 -0
- package/templates/tools/grep.txt +21 -0
- package/templates/tools/read.txt +14 -0
- package/templates/tools/task.txt +20 -0
- package/templates/tools/webfetch.txt +16 -0
- package/templates/tools/websearch.txt +18 -0
- package/templates/tools/write.txt +17 -0
- package/templates/windsurf/router.md +28 -0
- package/templates/windsurf/workflows/bug.md +8 -0
- package/templates/windsurf/workflows/done.md +4 -0
- package/templates/windsurf/workflows/pause.md +4 -0
- package/templates/windsurf/workflows/resume.md +4 -0
- package/templates/windsurf/workflows/ship.md +8 -0
- package/templates/windsurf/workflows/sync.md +4 -0
- package/templates/windsurf/workflows/task.md +8 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-design
|
|
3
|
+
description: Design user/data flow
|
|
4
|
+
allowed-tools: [Read, Glob, Grep]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Flow Design
|
|
8
|
+
|
|
9
|
+
Design the user or data flow for the given feature.
|
|
10
|
+
|
|
11
|
+
## Input
|
|
12
|
+
- Target: {{target}}
|
|
13
|
+
- Requirements: {{requirements}}
|
|
14
|
+
|
|
15
|
+
## Analysis Steps
|
|
16
|
+
|
|
17
|
+
1. **Identify Actors**
|
|
18
|
+
- Who initiates the flow?
|
|
19
|
+
- What systems are involved?
|
|
20
|
+
- What are the touchpoints?
|
|
21
|
+
|
|
22
|
+
2. **Map Steps**
|
|
23
|
+
- Start to end journey
|
|
24
|
+
- Decision points
|
|
25
|
+
- Error scenarios
|
|
26
|
+
|
|
27
|
+
3. **Define States**
|
|
28
|
+
- Initial state
|
|
29
|
+
- Intermediate states
|
|
30
|
+
- Final state(s)
|
|
31
|
+
|
|
32
|
+
4. **Plan Error Handling**
|
|
33
|
+
- What can go wrong?
|
|
34
|
+
- Recovery paths
|
|
35
|
+
- User feedback
|
|
36
|
+
|
|
37
|
+
## Output Format
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
# Flow: {target}
|
|
41
|
+
|
|
42
|
+
## Overview
|
|
43
|
+
Brief description of this flow.
|
|
44
|
+
|
|
45
|
+
## Actors
|
|
46
|
+
- **User**: Primary actor
|
|
47
|
+
- **System**: Backend services
|
|
48
|
+
- **External**: Third-party APIs
|
|
49
|
+
|
|
50
|
+
## Flow Diagram
|
|
51
|
+
```
|
|
52
|
+
[Start] → [Step 1] → [Decision?]
|
|
53
|
+
↓ Yes
|
|
54
|
+
[Step 2] → [End]
|
|
55
|
+
↓ No
|
|
56
|
+
[Error] → [Recovery]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Steps
|
|
60
|
+
|
|
61
|
+
### 1. User Action
|
|
62
|
+
- User does X
|
|
63
|
+
- System validates Y
|
|
64
|
+
- **Success**: Continue to step 2
|
|
65
|
+
- **Error**: Show message, allow retry
|
|
66
|
+
|
|
67
|
+
### 2. Processing
|
|
68
|
+
- System processes data
|
|
69
|
+
- Calls external API
|
|
70
|
+
- Updates database
|
|
71
|
+
|
|
72
|
+
### 3. Completion
|
|
73
|
+
- Show success message
|
|
74
|
+
- Update UI state
|
|
75
|
+
- Log event
|
|
76
|
+
|
|
77
|
+
## Error Scenarios
|
|
78
|
+
| Error | Cause | Recovery |
|
|
79
|
+
|-------|-------|----------|
|
|
80
|
+
| Invalid input | Bad data | Show validation |
|
|
81
|
+
| API timeout | Network | Retry with backoff |
|
|
82
|
+
| Auth failed | Token expired | Redirect to login |
|
|
83
|
+
|
|
84
|
+
## States
|
|
85
|
+
- `idle`: Initial state
|
|
86
|
+
- `loading`: Processing
|
|
87
|
+
- `success`: Completed
|
|
88
|
+
- `error`: Failed
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Guidelines
|
|
92
|
+
- Cover happy path first
|
|
93
|
+
- Document all error cases
|
|
94
|
+
- Keep flows focused
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- prjct:start - DO NOT REMOVE THIS MARKER -->
|
|
2
|
+
# p/ — Context layer for AI agents
|
|
3
|
+
|
|
4
|
+
Commands: `p. sync` `p. task` `p. done` `p. ship` `p. pause` `p. resume` `p. bug` `p. dash` `p. next`
|
|
5
|
+
|
|
6
|
+
When user types a p command, execute the corresponding prjct CLI command with `--md` flag for context.
|
|
7
|
+
|
|
8
|
+
Rules:
|
|
9
|
+
- Never commit to main/master directly
|
|
10
|
+
- All commits include footer: `Generated with [p/](https://www.prjct.app/)`
|
|
11
|
+
- Path resolution: `.prjct/prjct.config.json` → `~/.prjct-cli/projects/{projectId}`
|
|
12
|
+
- All storage through `prjct` CLI (SQLite internally)
|
|
13
|
+
- For code tasks, always start with `p. task` and follow Context Contract from CLI output
|
|
14
|
+
- Context7 MCP is mandatory for framework/library API decisions
|
|
15
|
+
|
|
16
|
+
**Auto-managed by prjct-cli** | https://prjct.app
|
|
17
|
+
<!-- prjct:end - DO NOT REMOVE THIS MARKER -->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!-- prjct:start - DO NOT REMOVE THIS MARKER -->
|
|
2
|
+
# p/ — Context layer for AI agents
|
|
3
|
+
|
|
4
|
+
Commands: `p. sync` `p. task` `p. done` `p. ship` `p. pause` `p. resume` `p. bug` `p. dash` `p. next`
|
|
5
|
+
|
|
6
|
+
When user types `p. <command>`, READ the template from `~/.claude/commands/p/{command}.md` and execute step by step.
|
|
7
|
+
|
|
8
|
+
Rules:
|
|
9
|
+
- Never commit to main/master directly
|
|
10
|
+
- All commits include footer: `Generated with [p/](https://www.prjct.app/)`
|
|
11
|
+
- Path resolution: `.prjct/prjct.config.json` → `~/.prjct-cli/projects/{projectId}`
|
|
12
|
+
- All storage through `prjct` CLI (SQLite internally)
|
|
13
|
+
- For code tasks, always start with `p. task` and follow Context Contract from CLI output
|
|
14
|
+
- Context7 MCP is mandatory for framework/library API decisions
|
|
15
|
+
- Templates are MANDATORY workflows — follow every step
|
|
16
|
+
- WORKFLOW IS MANDATORY: After completing work, ALWAYS run `p. ship`
|
|
17
|
+
- NEVER end a session without shipping or pausing
|
|
18
|
+
|
|
19
|
+
**Auto-managed by prjct-cli** | https://prjct.app
|
|
20
|
+
<!-- prjct:end - DO NOT REMOVE THIS MARKER -->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "prjct - Context layer for AI coding agents"
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- prjct:start - DO NOT REMOVE THIS MARKER -->
|
|
7
|
+
# p/ — Context layer for AI agents
|
|
8
|
+
|
|
9
|
+
Commands: `/sync` `/task` `/done` `/ship` `/pause` `/resume` `/bug` `/dash` `/next`
|
|
10
|
+
|
|
11
|
+
When user triggers a command, execute the corresponding prjct CLI command with `--md` flag for context.
|
|
12
|
+
|
|
13
|
+
Rules:
|
|
14
|
+
- Never commit to main/master directly
|
|
15
|
+
- All commits include footer: `Generated with [p/](https://www.prjct.app/)`
|
|
16
|
+
- Path resolution: `.prjct/prjct.config.json` → `~/.prjct-cli/projects/{projectId}`
|
|
17
|
+
- All storage through `prjct` CLI (SQLite internally)
|
|
18
|
+
|
|
19
|
+
**Auto-managed by prjct-cli** | https://prjct.app
|
|
20
|
+
<!-- prjct:end - DO NOT REMOVE THIS MARKER -->
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- prjct:start - DO NOT REMOVE THIS MARKER -->
|
|
2
|
+
# p/ — Context layer for AI agents
|
|
3
|
+
|
|
4
|
+
Commands: `p sync` `p task` `p done` `p ship` `p pause` `p resume` `p bug` `p dash` `p next`
|
|
5
|
+
|
|
6
|
+
When user types a p command, execute the corresponding prjct CLI command with `--md` flag for context.
|
|
7
|
+
|
|
8
|
+
Rules:
|
|
9
|
+
- Never commit to main/master directly
|
|
10
|
+
- All commits include footer: `Generated with [p/](https://www.prjct.app/)`
|
|
11
|
+
- Path resolution: `.prjct/prjct.config.json` → `~/.prjct-cli/projects/{projectId}`
|
|
12
|
+
- All storage through `prjct` CLI (SQLite internally)
|
|
13
|
+
- For code tasks, always start with `p task` and follow Context Contract from CLI output
|
|
14
|
+
- Context7 MCP is mandatory for framework/library API decisions
|
|
15
|
+
|
|
16
|
+
**Auto-managed by prjct-cli** | https://prjct.app
|
|
17
|
+
<!-- prjct:end - DO NOT REMOVE THIS MARKER -->
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# Storage Specification
|
|
2
|
+
|
|
3
|
+
**Canonical specification for prjct storage format.**
|
|
4
|
+
|
|
5
|
+
All storage is managed by the `prjct` CLI which uses SQLite (`prjct.db`) internally. **NEVER read or write JSON storage files directly. Use `prjct` CLI commands for all storage operations.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Current Storage: SQLite (prjct.db)
|
|
10
|
+
|
|
11
|
+
All reads and writes go through the `prjct` CLI, which manages a SQLite database (`prjct.db`) with WAL mode for safe concurrent access.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
~/.prjct-cli/projects/{projectId}/
|
|
15
|
+
├── prjct.db # SQLite database (SOURCE OF TRUTH for all storage)
|
|
16
|
+
├── context/
|
|
17
|
+
│ ├── now.md # Current task (generated from prjct.db)
|
|
18
|
+
│ └── next.md # Queue (generated from prjct.db)
|
|
19
|
+
├── config/
|
|
20
|
+
│ └── skills.json # Agent-to-skill mappings
|
|
21
|
+
├── agents/ # Domain specialists (auto-generated)
|
|
22
|
+
└── sync/
|
|
23
|
+
└── pending.json # Events for backend sync
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### How to interact with storage
|
|
27
|
+
|
|
28
|
+
- **Read state**: Use `prjct status`, `prjct dash`, `prjct next` CLI commands
|
|
29
|
+
- **Write state**: Use `prjct` CLI commands (task, done, pause, resume, etc.)
|
|
30
|
+
- **Issue tracker setup**: Use `prjct linear setup` or `prjct jira setup` (MCP/OAuth)
|
|
31
|
+
- **Never** read/write JSON files in `storage/` or `memory/` directories
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## LEGACY JSON Schemas (for reference only)
|
|
36
|
+
|
|
37
|
+
> **WARNING**: These JSON schemas are LEGACY documentation only. The `storage/` and `memory/` directories are no longer used. All data lives in `prjct.db` (SQLite). Do NOT read or write these files.
|
|
38
|
+
|
|
39
|
+
### state.json (LEGACY)
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"task": {
|
|
44
|
+
"id": "uuid-v4",
|
|
45
|
+
"title": "string",
|
|
46
|
+
"type": "feature|bug|improvement|refactor|chore",
|
|
47
|
+
"status": "active|paused|done",
|
|
48
|
+
"branch": "string|null",
|
|
49
|
+
"subtasks": [
|
|
50
|
+
{
|
|
51
|
+
"id": "uuid-v4",
|
|
52
|
+
"title": "string",
|
|
53
|
+
"status": "pending|done"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"currentSubtask": 0,
|
|
57
|
+
"createdAt": "2024-01-15T10:30:00.000Z",
|
|
58
|
+
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Empty state (no active task):**
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"task": null
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### queue.json (LEGACY)
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"tasks": [
|
|
75
|
+
{
|
|
76
|
+
"id": "uuid-v4",
|
|
77
|
+
"title": "string",
|
|
78
|
+
"type": "feature|bug|improvement|refactor|chore",
|
|
79
|
+
"priority": 1,
|
|
80
|
+
"createdAt": "2024-01-15T10:30:00.000Z"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### shipped.json (LEGACY)
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"features": [
|
|
92
|
+
{
|
|
93
|
+
"id": "uuid-v4",
|
|
94
|
+
"name": "string",
|
|
95
|
+
"version": "1.0.0",
|
|
96
|
+
"type": "feature|bug|improvement|refactor|chore",
|
|
97
|
+
"shippedAt": "2024-01-15T10:30:00.000Z"
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### events.jsonl (LEGACY - now stored in SQLite `events` table)
|
|
105
|
+
|
|
106
|
+
Previously append-only JSONL. Now stored in SQLite.
|
|
107
|
+
|
|
108
|
+
```jsonl
|
|
109
|
+
{"type":"task.created","timestamp":"2024-01-15T10:30:00.000Z","data":{"taskId":"uuid","title":"string"}}
|
|
110
|
+
{"type":"task.started","timestamp":"2024-01-15T10:30:00.000Z","data":{"taskId":"uuid"}}
|
|
111
|
+
{"type":"subtask.completed","timestamp":"2024-01-15T10:35:00.000Z","data":{"taskId":"uuid","subtaskIndex":0}}
|
|
112
|
+
{"type":"task.completed","timestamp":"2024-01-15T10:40:00.000Z","data":{"taskId":"uuid"}}
|
|
113
|
+
{"type":"feature.shipped","timestamp":"2024-01-15T10:45:00.000Z","data":{"featureId":"uuid","name":"string","version":"1.0.0"}}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Event Types:**
|
|
117
|
+
- `task.created` - New task created
|
|
118
|
+
- `task.started` - Task activated
|
|
119
|
+
- `task.paused` - Task paused
|
|
120
|
+
- `task.resumed` - Task resumed
|
|
121
|
+
- `task.completed` - Task completed
|
|
122
|
+
- `subtask.completed` - Subtask completed
|
|
123
|
+
- `feature.shipped` - Feature shipped
|
|
124
|
+
|
|
125
|
+
### learnings.jsonl (LEGACY - now stored in SQLite)
|
|
126
|
+
|
|
127
|
+
Previously used for LLM-to-LLM knowledge transfer. Now stored in SQLite.
|
|
128
|
+
|
|
129
|
+
```jsonl
|
|
130
|
+
{"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"]}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Schema:**
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"taskId": "uuid-v4",
|
|
137
|
+
"linearId": "string|null",
|
|
138
|
+
"timestamp": "2024-01-15T10:40:00.000Z",
|
|
139
|
+
"learnings": {
|
|
140
|
+
"patterns": ["string"],
|
|
141
|
+
"approaches": ["string"],
|
|
142
|
+
"decisions": ["string"],
|
|
143
|
+
"gotchas": ["string"]
|
|
144
|
+
},
|
|
145
|
+
"value": {
|
|
146
|
+
"type": "feature|bugfix|performance|dx|refactor|infrastructure",
|
|
147
|
+
"impact": "high|medium|low",
|
|
148
|
+
"description": "string"
|
|
149
|
+
},
|
|
150
|
+
"filesChanged": ["string"],
|
|
151
|
+
"tags": ["string"]
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Why Local Cache**: Enables future semantic retrieval without API latency. Will feed into vector DB for cross-session knowledge transfer.
|
|
156
|
+
|
|
157
|
+
### skills.json
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"mappings": {
|
|
162
|
+
"frontend.md": ["frontend-design"],
|
|
163
|
+
"backend.md": ["javascript-typescript"],
|
|
164
|
+
"testing.md": ["developer-kit"]
|
|
165
|
+
},
|
|
166
|
+
"updatedAt": "2024-01-15T10:30:00.000Z"
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### pending.json (sync queue)
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"events": [
|
|
175
|
+
{
|
|
176
|
+
"id": "uuid-v4",
|
|
177
|
+
"type": "task.created",
|
|
178
|
+
"timestamp": "2024-01-15T10:30:00.000Z",
|
|
179
|
+
"data": {},
|
|
180
|
+
"synced": false
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
"lastSync": "2024-01-15T10:30:00.000Z"
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Formatting Rules (MANDATORY)
|
|
190
|
+
|
|
191
|
+
All agents MUST follow these rules for cross-agent compatibility:
|
|
192
|
+
|
|
193
|
+
| Rule | Value |
|
|
194
|
+
|------|-------|
|
|
195
|
+
| JSON indentation | 2 spaces |
|
|
196
|
+
| Trailing commas | NEVER |
|
|
197
|
+
| Key ordering | Logical (as shown in schemas above) |
|
|
198
|
+
| Timestamps | ISO-8601 with milliseconds (`.000Z`) |
|
|
199
|
+
| UUIDs | v4 format (lowercase) |
|
|
200
|
+
| Line endings | LF (not CRLF) |
|
|
201
|
+
| File encoding | UTF-8 without BOM |
|
|
202
|
+
| Empty objects | `{}` |
|
|
203
|
+
| Empty arrays | `[]` |
|
|
204
|
+
| Null values | `null` (lowercase) |
|
|
205
|
+
|
|
206
|
+
### Timestamp Generation
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# ALWAYS use dynamic timestamps, NEVER hardcode
|
|
210
|
+
bun -e "console.log(new Date().toISOString())" 2>/dev/null || node -e "console.log(new Date().toISOString())"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### UUID Generation
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# ALWAYS generate fresh UUIDs
|
|
217
|
+
bun -e "console.log(crypto.randomUUID())" 2>/dev/null || node -e "console.log(require('crypto').randomUUID())"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Write Rules (CRITICAL)
|
|
223
|
+
|
|
224
|
+
### Direct Writes Only
|
|
225
|
+
|
|
226
|
+
**NEVER use temporary files** - Write directly to final destination:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
WRONG: Create `.tmp/file.json`, then `mv` to final path
|
|
230
|
+
CORRECT: Use prjctDb.setDoc() or StorageManager.write() to write to SQLite
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Atomic Updates
|
|
234
|
+
|
|
235
|
+
All writes go through SQLite which handles atomicity via WAL mode:
|
|
236
|
+
```typescript
|
|
237
|
+
// StorageManager pattern (preferred):
|
|
238
|
+
await stateStorage.update(projectId, (state) => {
|
|
239
|
+
state.field = newValue
|
|
240
|
+
return state
|
|
241
|
+
})
|
|
242
|
+
|
|
243
|
+
// Direct kv_store pattern:
|
|
244
|
+
prjctDb.setDoc(projectId, 'key', data)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### NEVER Do These
|
|
248
|
+
|
|
249
|
+
- Read or write JSON files in `storage/` or `memory/` directories
|
|
250
|
+
- Use `.tmp/` directories
|
|
251
|
+
- Use `mv` or `rename` operations for storage files
|
|
252
|
+
- Create backup files like `*.bak` or `*.old`
|
|
253
|
+
- Bypass `prjct` CLI to write directly to `prjct.db`
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Cross-Agent Compatibility
|
|
258
|
+
|
|
259
|
+
### Why This Matters
|
|
260
|
+
|
|
261
|
+
1. **User freedom**: Switch between Claude and Gemini freely
|
|
262
|
+
2. **Remote sync**: Storage will sync to prjct.app backend
|
|
263
|
+
3. **Single truth**: Both agents produce identical output
|
|
264
|
+
|
|
265
|
+
### Verification Test
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# Start task with Claude
|
|
269
|
+
p. task "add feature X"
|
|
270
|
+
|
|
271
|
+
# Switch to Gemini, continue
|
|
272
|
+
p. done # Should work seamlessly
|
|
273
|
+
|
|
274
|
+
# Switch back to Claude
|
|
275
|
+
p. ship # Should read Gemini's changes correctly
|
|
276
|
+
|
|
277
|
+
# All agents read from the same prjct.db via CLI commands
|
|
278
|
+
prjct status # Works from any agent
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Remote Sync Flow
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
Local Storage: prjct.db (Claude/Gemini)
|
|
285
|
+
↓
|
|
286
|
+
sync/pending.json (events queue)
|
|
287
|
+
↓
|
|
288
|
+
prjct.app API
|
|
289
|
+
↓
|
|
290
|
+
Global Remote Storage
|
|
291
|
+
↓
|
|
292
|
+
Any device, any agent
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## MCP Issue Tracker Strategy
|
|
298
|
+
|
|
299
|
+
Issue tracker integrations are MCP-only.
|
|
300
|
+
|
|
301
|
+
### Rules
|
|
302
|
+
|
|
303
|
+
- `prjct` CLI does not call Linear/Jira SDKs or REST APIs directly.
|
|
304
|
+
- Issue operations (`sync`, `list`, `get`, `start`, `done`, `update`, etc.) are delegated to MCP tools in the AI client.
|
|
305
|
+
- `p. sync` refreshes project context and agent artifacts, not issue tracker payloads.
|
|
306
|
+
- Local storage keeps task linkage metadata (for example `linearId`) and project workflow state in SQLite.
|
|
307
|
+
|
|
308
|
+
### Setup
|
|
309
|
+
|
|
310
|
+
- `prjct linear setup`
|
|
311
|
+
- `prjct jira setup`
|
|
312
|
+
|
|
313
|
+
### Operational Model
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
AI client MCP tools <-> Linear/Jira
|
|
317
|
+
|
|
|
318
|
+
v
|
|
319
|
+
prjct workflow state (prjct.db)
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
The CLI remains the source of truth for local project/task state.
|
|
323
|
+
Issue-system mutations happen through MCP operations in the active AI session.
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
**Version**: 2.0.0
|
|
328
|
+
**Last Updated**: 2026-02-10
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
# p/ — Context layer for AI agents
|
|
8
|
+
|
|
9
|
+
Workflows: `/sync` `/task` `/done` `/ship` `/pause` `/resume` `/bug` `/dash` `/next`
|
|
10
|
+
|
|
11
|
+
When user triggers a workflow, execute the corresponding prjct CLI command with `--md` flag for context.
|
|
12
|
+
|
|
13
|
+
Rules:
|
|
14
|
+
- Never commit to main/master directly
|
|
15
|
+
- All commits include footer: `Generated with [p/](https://www.prjct.app/)`
|
|
16
|
+
- Path resolution: `.prjct/prjct.config.json` → `~/.prjct-cli/projects/{projectId}`
|
|
17
|
+
- All storage through `prjct` CLI (SQLite internally)
|
|
18
|
+
- For code tasks, always start with `/task` and follow Context Contract from CLI output
|
|
19
|
+
- Context7 MCP is mandatory for framework/library API decisions
|
|
20
|
+
|
|
21
|
+
**Auto-managed by prjct-cli** | https://prjct.app
|
|
22
|
+
<!-- prjct:end - DO NOT REMOVE THIS MARKER -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- Module deprecated: content moved to CLI --md output -->
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# p/ — Context layer for AI agents
|
|
2
|
+
|
|
3
|
+
Commands: `p. sync` `p. task` `p. done` `p. ship` `p. pause` `p. resume` `p. bug` `p. dash` `p. next`
|
|
4
|
+
|
|
5
|
+
When user types `p. <command>`, READ the template from `~/.claude/commands/p/{command}.md` and execute step by step.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
- Never commit to main/master directly
|
|
9
|
+
- All commits include footer: `Generated with [p/](https://www.prjct.app/)`
|
|
10
|
+
- Path resolution: `.prjct/prjct.config.json` → `~/.prjct-cli/projects/{projectId}`
|
|
11
|
+
- All storage through `prjct` CLI (SQLite internally)
|
|
12
|
+
- For code tasks, always start with `p. task` and follow Context Contract from CLI output
|
|
13
|
+
- Context7 MCP is mandatory for framework/library API decisions
|
|
14
|
+
- Templates are MANDATORY workflows — follow every step
|
|
15
|
+
|
|
16
|
+
**Auto-managed by prjct-cli** | https://prjct.app
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- Module deprecated: content moved to CLI --md output -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- Module deprecated: content moved to CLI --md output -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<!-- Module deprecated: content moved to CLI --md output -->
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Configuration for modular CLAUDE.md composition",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"profiles": {
|
|
5
|
+
"default": {
|
|
6
|
+
"description": "Ultra-thin — CLI provides context via --md flag",
|
|
7
|
+
"modules": ["CLAUDE-core.md"]
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"default": "default",
|
|
11
|
+
"commandProfiles": {}
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"context7": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@upstash/context7-mcp@latest"],
|
|
6
|
+
"description": "Library documentation lookup"
|
|
7
|
+
},
|
|
8
|
+
"linear": {
|
|
9
|
+
"command": "npx",
|
|
10
|
+
"args": ["-y", "mcp-remote", "https://mcp.linear.app/mcp"],
|
|
11
|
+
"description": "Linear MCP server (OAuth)"
|
|
12
|
+
},
|
|
13
|
+
"jira": {
|
|
14
|
+
"command": "npx",
|
|
15
|
+
"args": ["-y", "mcp-remote", "https://mcp.atlassian.com/v1/mcp"],
|
|
16
|
+
"description": "Atlassian MCP server for Jira (OAuth)"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"usage": {
|
|
20
|
+
"context7": {
|
|
21
|
+
"when": ["Looking up library/framework documentation", "Need current API docs"],
|
|
22
|
+
"tools": ["resolve-library-id", "get-library-docs"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"integrations": {
|
|
26
|
+
"linear": "MCP - Run `prjct linear setup`",
|
|
27
|
+
"jira": "MCP - Run `prjct jira setup`"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Default permissions preset for prjct-cli
|
|
3
|
+
// Safe defaults with protection against destructive operations
|
|
4
|
+
|
|
5
|
+
"bash": {
|
|
6
|
+
// Safe read-only commands - always allowed
|
|
7
|
+
"git status*": "allow",
|
|
8
|
+
"git log*": "allow",
|
|
9
|
+
"git diff*": "allow",
|
|
10
|
+
"git branch*": "allow",
|
|
11
|
+
"ls*": "allow",
|
|
12
|
+
"pwd": "allow",
|
|
13
|
+
"cat*": "allow",
|
|
14
|
+
"head*": "allow",
|
|
15
|
+
"tail*": "allow",
|
|
16
|
+
"grep*": "allow",
|
|
17
|
+
"find*": "allow",
|
|
18
|
+
"which*": "allow",
|
|
19
|
+
"node -e*": "allow",
|
|
20
|
+
"bun -e*": "allow",
|
|
21
|
+
"npm list*": "allow",
|
|
22
|
+
"npx tsc --noEmit*": "allow",
|
|
23
|
+
|
|
24
|
+
// Potentially destructive - ask first
|
|
25
|
+
"rm -rf*": "ask",
|
|
26
|
+
"rm -r*": "ask",
|
|
27
|
+
"git push*": "ask",
|
|
28
|
+
"git reset --hard*": "ask",
|
|
29
|
+
"npm publish*": "ask",
|
|
30
|
+
"chmod*": "ask",
|
|
31
|
+
|
|
32
|
+
// Always denied - too dangerous
|
|
33
|
+
"rm -rf /*": "deny",
|
|
34
|
+
"rm -rf ~/*": "deny",
|
|
35
|
+
"sudo*": "deny"
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
"files": {
|
|
39
|
+
"read": {
|
|
40
|
+
"**/*": "allow"
|
|
41
|
+
},
|
|
42
|
+
"write": {
|
|
43
|
+
"**/*": "allow"
|
|
44
|
+
},
|
|
45
|
+
"delete": {
|
|
46
|
+
"**/*": "ask"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
"web": {
|
|
51
|
+
"enabled": true
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
"doomLoop": {
|
|
55
|
+
"enabled": true,
|
|
56
|
+
"maxRetries": 3
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
"externalDirectories": "ask"
|
|
60
|
+
}
|