prjct-cli 0.18.2 → 0.20.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.
Files changed (246) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/CLAUDE.md +74 -211
  3. package/core/agentic/prompt-builder.ts +3 -7
  4. package/core/command-registry/optional-commands.ts +0 -20
  5. package/core/infrastructure/command-installer/command-installer.ts +8 -1
  6. package/core/infrastructure/command-installer/global-config.ts +31 -1
  7. package/core/infrastructure/command-installer/index.ts +1 -1
  8. package/core/infrastructure/setup.ts +3 -0
  9. package/package.json +3 -17
  10. package/templates/agentic/agents/uxui.md +210 -0
  11. package/templates/commands/bug.md +219 -41
  12. package/templates/commands/done.md +57 -258
  13. package/templates/commands/feature.md +368 -80
  14. package/templates/commands/now.md +72 -277
  15. package/templates/commands/ship.md +167 -246
  16. package/templates/commands/sync.md +62 -3
  17. package/templates/commands/test.md +160 -20
  18. package/templates/global/CLAUDE.md +40 -205
  19. package/templates/global/docs/agents.md +88 -0
  20. package/templates/global/docs/architecture.md +103 -0
  21. package/templates/global/docs/commands.md +98 -0
  22. package/templates/global/docs/validation.md +95 -0
  23. package/bin/dev.js +0 -216
  24. package/bin/serve.js +0 -361
  25. package/packages/web/README.md +0 -36
  26. package/packages/web/app/api/claude/sessions/route.ts +0 -44
  27. package/packages/web/app/api/claude/status/route.ts +0 -34
  28. package/packages/web/app/api/projects/[id]/icon/route.ts +0 -33
  29. package/packages/web/app/api/projects/[id]/momentum/route.ts +0 -257
  30. package/packages/web/app/api/projects/[id]/route.ts +0 -29
  31. package/packages/web/app/api/projects/[id]/stats/route.ts +0 -41
  32. package/packages/web/app/api/projects/[id]/status/route.ts +0 -21
  33. package/packages/web/app/api/projects/route.ts +0 -16
  34. package/packages/web/app/api/sessions/current/route.ts +0 -132
  35. package/packages/web/app/api/sessions/history/route.ts +0 -204
  36. package/packages/web/app/error.tsx +0 -34
  37. package/packages/web/app/favicon.ico +0 -0
  38. package/packages/web/app/globals.css +0 -198
  39. package/packages/web/app/layout.tsx +0 -53
  40. package/packages/web/app/loading.tsx +0 -7
  41. package/packages/web/app/not-found.tsx +0 -25
  42. package/packages/web/app/page.tsx +0 -12
  43. package/packages/web/app/project/[id]/code/layout.tsx +0 -18
  44. package/packages/web/app/project/[id]/code/page.tsx +0 -408
  45. package/packages/web/app/project/[id]/error.tsx +0 -41
  46. package/packages/web/app/project/[id]/loading.tsx +0 -9
  47. package/packages/web/app/project/[id]/not-found.tsx +0 -27
  48. package/packages/web/app/project/[id]/page.tsx +0 -384
  49. package/packages/web/app/project/[id]/reports/page.tsx +0 -59
  50. package/packages/web/app/project/[id]/reports/print/page.tsx +0 -58
  51. package/packages/web/app/sessions/page.tsx +0 -165
  52. package/packages/web/app/settings/page.tsx +0 -151
  53. package/packages/web/components/ActivityTimeline/ActivityTimeline.constants.ts +0 -2
  54. package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +0 -49
  55. package/packages/web/components/ActivityTimeline/ActivityTimeline.types.ts +0 -8
  56. package/packages/web/components/ActivityTimeline/hooks/index.ts +0 -2
  57. package/packages/web/components/ActivityTimeline/hooks/useExpandable.ts +0 -9
  58. package/packages/web/components/ActivityTimeline/hooks/useGroupedEvents.ts +0 -23
  59. package/packages/web/components/ActivityTimeline/index.ts +0 -2
  60. package/packages/web/components/AgentsCard/AgentsCard.tsx +0 -93
  61. package/packages/web/components/AgentsCard/AgentsCard.types.ts +0 -14
  62. package/packages/web/components/AgentsCard/index.ts +0 -2
  63. package/packages/web/components/AppSidebar/AppSidebar.tsx +0 -316
  64. package/packages/web/components/AppSidebar/index.ts +0 -1
  65. package/packages/web/components/BackLink/BackLink.tsx +0 -18
  66. package/packages/web/components/BackLink/BackLink.types.ts +0 -5
  67. package/packages/web/components/BackLink/index.ts +0 -2
  68. package/packages/web/components/BentoCard/BentoCard.constants.ts +0 -16
  69. package/packages/web/components/BentoCard/BentoCard.tsx +0 -48
  70. package/packages/web/components/BentoCard/BentoCard.types.ts +0 -15
  71. package/packages/web/components/BentoCard/index.ts +0 -2
  72. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.constants.ts +0 -9
  73. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.tsx +0 -18
  74. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.types.ts +0 -5
  75. package/packages/web/components/BentoCardSkeleton/index.ts +0 -2
  76. package/packages/web/components/BentoGrid/BentoGrid.tsx +0 -18
  77. package/packages/web/components/BentoGrid/BentoGrid.types.ts +0 -4
  78. package/packages/web/components/BentoGrid/index.ts +0 -2
  79. package/packages/web/components/BlockersCard/BlockersCard.tsx +0 -75
  80. package/packages/web/components/BlockersCard/BlockersCard.types.ts +0 -12
  81. package/packages/web/components/BlockersCard/index.ts +0 -2
  82. package/packages/web/components/CommandBar/CommandBar.tsx +0 -67
  83. package/packages/web/components/CommandBar/index.ts +0 -1
  84. package/packages/web/components/CommandButton/CommandButton.tsx +0 -46
  85. package/packages/web/components/CommandButton/index.ts +0 -1
  86. package/packages/web/components/ConnectionStatus/ConnectionStatus.tsx +0 -29
  87. package/packages/web/components/ConnectionStatus/index.ts +0 -1
  88. package/packages/web/components/DashboardContent/DashboardContent.tsx +0 -284
  89. package/packages/web/components/DashboardContent/index.ts +0 -1
  90. package/packages/web/components/DateGroup/DateGroup.tsx +0 -18
  91. package/packages/web/components/DateGroup/DateGroup.types.ts +0 -6
  92. package/packages/web/components/DateGroup/DateGroup.utils.ts +0 -11
  93. package/packages/web/components/DateGroup/index.ts +0 -2
  94. package/packages/web/components/EmptyState/EmptyState.tsx +0 -76
  95. package/packages/web/components/EmptyState/EmptyState.types.ts +0 -11
  96. package/packages/web/components/EmptyState/index.ts +0 -2
  97. package/packages/web/components/EventRow/EventRow.constants.ts +0 -10
  98. package/packages/web/components/EventRow/EventRow.tsx +0 -49
  99. package/packages/web/components/EventRow/EventRow.types.ts +0 -7
  100. package/packages/web/components/EventRow/EventRow.utils.ts +0 -49
  101. package/packages/web/components/EventRow/index.ts +0 -2
  102. package/packages/web/components/ExpandButton/ExpandButton.tsx +0 -18
  103. package/packages/web/components/ExpandButton/ExpandButton.types.ts +0 -6
  104. package/packages/web/components/ExpandButton/index.ts +0 -2
  105. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.tsx +0 -14
  106. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.types.ts +0 -5
  107. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.utils.ts +0 -13
  108. package/packages/web/components/HealthGradientBackground/index.ts +0 -2
  109. package/packages/web/components/HeroSection/HeroSection.tsx +0 -92
  110. package/packages/web/components/HeroSection/HeroSection.types.ts +0 -14
  111. package/packages/web/components/HeroSection/HeroSection.utils.ts +0 -11
  112. package/packages/web/components/HeroSection/hooks/index.ts +0 -2
  113. package/packages/web/components/HeroSection/hooks/useCountUp.ts +0 -45
  114. package/packages/web/components/HeroSection/hooks/useWeeklyActivity.ts +0 -18
  115. package/packages/web/components/HeroSection/index.ts +0 -2
  116. package/packages/web/components/IdeasCard/IdeasCard.tsx +0 -115
  117. package/packages/web/components/IdeasCard/IdeasCard.types.ts +0 -10
  118. package/packages/web/components/IdeasCard/index.ts +0 -2
  119. package/packages/web/components/InsightMessage/InsightMessage.tsx +0 -9
  120. package/packages/web/components/InsightMessage/InsightMessage.types.ts +0 -3
  121. package/packages/web/components/InsightMessage/index.ts +0 -2
  122. package/packages/web/components/Logo/Logo.tsx +0 -65
  123. package/packages/web/components/Logo/index.ts +0 -1
  124. package/packages/web/components/MarkdownContent/MarkdownContent.tsx +0 -123
  125. package/packages/web/components/MarkdownContent/index.ts +0 -1
  126. package/packages/web/components/MasonryGrid/MasonryGrid.tsx +0 -18
  127. package/packages/web/components/MasonryGrid/index.ts +0 -1
  128. package/packages/web/components/MomentumWidget/MomentumWidget.tsx +0 -119
  129. package/packages/web/components/MomentumWidget/MomentumWidget.types.ts +0 -16
  130. package/packages/web/components/MomentumWidget/index.ts +0 -2
  131. package/packages/web/components/NowCard/NowCard.tsx +0 -118
  132. package/packages/web/components/NowCard/NowCard.types.ts +0 -16
  133. package/packages/web/components/NowCard/index.ts +0 -2
  134. package/packages/web/components/PageHeader/PageHeader.tsx +0 -24
  135. package/packages/web/components/PageHeader/index.ts +0 -1
  136. package/packages/web/components/ProgressRing/ProgressRing.constants.ts +0 -20
  137. package/packages/web/components/ProgressRing/ProgressRing.tsx +0 -51
  138. package/packages/web/components/ProgressRing/ProgressRing.types.ts +0 -11
  139. package/packages/web/components/ProgressRing/index.ts +0 -2
  140. package/packages/web/components/ProjectAvatar/ProjectAvatar.tsx +0 -54
  141. package/packages/web/components/ProjectAvatar/index.ts +0 -1
  142. package/packages/web/components/ProjectColorDot/ProjectColorDot.tsx +0 -37
  143. package/packages/web/components/ProjectColorDot/index.ts +0 -1
  144. package/packages/web/components/ProjectSelectorModal/ProjectSelectorModal.tsx +0 -104
  145. package/packages/web/components/ProjectSelectorModal/index.ts +0 -1
  146. package/packages/web/components/Providers/Providers.tsx +0 -48
  147. package/packages/web/components/Providers/index.ts +0 -1
  148. package/packages/web/components/QueueCard/QueueCard.tsx +0 -125
  149. package/packages/web/components/QueueCard/QueueCard.types.ts +0 -12
  150. package/packages/web/components/QueueCard/QueueCard.utils.ts +0 -12
  151. package/packages/web/components/QueueCard/index.ts +0 -2
  152. package/packages/web/components/RecoverCard/RecoverCard.tsx +0 -72
  153. package/packages/web/components/RecoverCard/RecoverCard.types.ts +0 -16
  154. package/packages/web/components/RecoverCard/index.ts +0 -2
  155. package/packages/web/components/RoadmapCard/RoadmapCard.tsx +0 -145
  156. package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +0 -16
  157. package/packages/web/components/RoadmapCard/index.ts +0 -2
  158. package/packages/web/components/ShipsCard/ShipsCard.tsx +0 -95
  159. package/packages/web/components/ShipsCard/ShipsCard.types.ts +0 -14
  160. package/packages/web/components/ShipsCard/ShipsCard.utils.ts +0 -4
  161. package/packages/web/components/ShipsCard/index.ts +0 -2
  162. package/packages/web/components/SparklineChart/SparklineChart.tsx +0 -40
  163. package/packages/web/components/SparklineChart/SparklineChart.types.ts +0 -6
  164. package/packages/web/components/SparklineChart/index.ts +0 -2
  165. package/packages/web/components/StatsMasonry/StatsMasonry.tsx +0 -95
  166. package/packages/web/components/StatsMasonry/index.ts +0 -1
  167. package/packages/web/components/StreakCard/StreakCard.constants.ts +0 -2
  168. package/packages/web/components/StreakCard/StreakCard.tsx +0 -55
  169. package/packages/web/components/StreakCard/StreakCard.types.ts +0 -4
  170. package/packages/web/components/StreakCard/index.ts +0 -2
  171. package/packages/web/components/TasksCounter/TasksCounter.tsx +0 -14
  172. package/packages/web/components/TasksCounter/TasksCounter.types.ts +0 -3
  173. package/packages/web/components/TasksCounter/index.ts +0 -2
  174. package/packages/web/components/TechStackBadges/TechStackBadges.tsx +0 -28
  175. package/packages/web/components/TechStackBadges/index.ts +0 -1
  176. package/packages/web/components/TerminalDock/DockToggleTab.tsx +0 -29
  177. package/packages/web/components/TerminalDock/TerminalDock.tsx +0 -386
  178. package/packages/web/components/TerminalDock/TerminalDockTab.tsx +0 -130
  179. package/packages/web/components/TerminalDock/TerminalTabBar.tsx +0 -142
  180. package/packages/web/components/TerminalDock/index.ts +0 -2
  181. package/packages/web/components/TerminalTabs/TerminalTab.tsx +0 -95
  182. package/packages/web/components/TerminalTabs/TerminalTabs.tsx +0 -211
  183. package/packages/web/components/TerminalTabs/index.ts +0 -1
  184. package/packages/web/components/VelocityBadge/VelocityBadge.tsx +0 -32
  185. package/packages/web/components/VelocityBadge/VelocityBadge.types.ts +0 -3
  186. package/packages/web/components/VelocityBadge/index.ts +0 -2
  187. package/packages/web/components/VelocityCard/VelocityCard.tsx +0 -73
  188. package/packages/web/components/VelocityCard/VelocityCard.types.ts +0 -7
  189. package/packages/web/components/VelocityCard/index.ts +0 -2
  190. package/packages/web/components/WeeklyReports/PrintableReport.tsx +0 -259
  191. package/packages/web/components/WeeklyReports/ReportPreviewCard.tsx +0 -187
  192. package/packages/web/components/WeeklyReports/WeekCalendar.tsx +0 -288
  193. package/packages/web/components/WeeklyReports/WeeklyReports.tsx +0 -149
  194. package/packages/web/components/WeeklyReports/index.ts +0 -4
  195. package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +0 -25
  196. package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +0 -4
  197. package/packages/web/components/WeeklySparkline/index.ts +0 -2
  198. package/packages/web/components/charts/SessionsChart.tsx +0 -175
  199. package/packages/web/components/ui/alert-dialog.tsx +0 -157
  200. package/packages/web/components/ui/badge.tsx +0 -46
  201. package/packages/web/components/ui/button.tsx +0 -60
  202. package/packages/web/components/ui/card.tsx +0 -92
  203. package/packages/web/components/ui/chart.tsx +0 -385
  204. package/packages/web/components/ui/dialog.tsx +0 -143
  205. package/packages/web/components/ui/drawer.tsx +0 -135
  206. package/packages/web/components/ui/dropdown-menu.tsx +0 -257
  207. package/packages/web/components/ui/input.tsx +0 -21
  208. package/packages/web/components/ui/scroll-area.tsx +0 -58
  209. package/packages/web/components/ui/select.tsx +0 -187
  210. package/packages/web/components/ui/sheet.tsx +0 -139
  211. package/packages/web/components/ui/tabs.tsx +0 -66
  212. package/packages/web/components/ui/tooltip.tsx +0 -61
  213. package/packages/web/components.json +0 -22
  214. package/packages/web/context/GlobalTerminalContext.tsx +0 -538
  215. package/packages/web/context/TerminalContext.tsx +0 -45
  216. package/packages/web/context/TerminalTabsContext.tsx +0 -181
  217. package/packages/web/eslint.config.mjs +0 -18
  218. package/packages/web/hooks/useClaudeTerminal.ts +0 -425
  219. package/packages/web/hooks/useProjectStats.ts +0 -93
  220. package/packages/web/hooks/useProjects.ts +0 -73
  221. package/packages/web/lib/actions/projects.ts +0 -15
  222. package/packages/web/lib/commands.ts +0 -81
  223. package/packages/web/lib/format.ts +0 -23
  224. package/packages/web/lib/generate-week-report.ts +0 -285
  225. package/packages/web/lib/parse-prjct-files.ts +0 -1123
  226. package/packages/web/lib/project-colors.ts +0 -58
  227. package/packages/web/lib/projects.ts +0 -506
  228. package/packages/web/lib/pty.ts +0 -101
  229. package/packages/web/lib/query-config.ts +0 -44
  230. package/packages/web/lib/services/index.ts +0 -9
  231. package/packages/web/lib/services/projects.server.ts +0 -66
  232. package/packages/web/lib/services/stats.server.ts +0 -562
  233. package/packages/web/lib/unified-loader.ts +0 -396
  234. package/packages/web/lib/utils.ts +0 -6
  235. package/packages/web/next-env.d.ts +0 -6
  236. package/packages/web/next.config.ts +0 -7
  237. package/packages/web/package.json +0 -57
  238. package/packages/web/postcss.config.mjs +0 -7
  239. package/packages/web/public/file.svg +0 -1
  240. package/packages/web/public/globe.svg +0 -1
  241. package/packages/web/public/next.svg +0 -1
  242. package/packages/web/public/vercel.svg +0 -1
  243. package/packages/web/public/window.svg +0 -1
  244. package/packages/web/server.ts +0 -312
  245. package/packages/web/tsconfig.json +0 -34
  246. package/templates/commands/serve.md +0 -121
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.20.0] - 2025-12-21
4
+
5
+ ### Feature: UX/UI Design Agent Integration
6
+
7
+ Auto-generated UX/UI specialist agent for all frontend projects (web + mobile).
8
+
9
+ **Priority: UX > UI** - Experience is more important than visuals.
10
+
11
+ #### New Agent: `templates/agentic/agents/uxui.md`
12
+ - **Part 1: UX Principles** - User analysis, clarity, feedback, reduced friction, error handling, accessibility (a11y)
13
+ - **Part 2: UI Guidelines** - Aesthetic directions, typography trends (avoiding "AI slop"), color framework, purposeful animation
14
+ - **Part 3: Quality Checklists** - Mandatory UX/UI gates before shipping
15
+
16
+ #### Frontend Detection in `/p:sync`
17
+ Auto-generates uxui.md when ANY frontend tech is detected:
18
+
19
+ | Platform | Technologies |
20
+ |----------|-------------|
21
+ | Web | React, Vue, Svelte, Angular, Next.js, Nuxt |
22
+ | Mobile | React Native, Expo, Flutter, SwiftUI, Jetpack Compose |
23
+
24
+ #### Enhanced `/p:feature` Phase 4
25
+ For frontend features, now includes:
26
+ 1. **UX Analysis** - Who, problem, happy path, edge cases
27
+ 2. **UX Requirements Checklist** - 6 mandatory accessibility/usability checks
28
+ 3. **Aesthetic Direction Selection** - Minimal, Bold, Soft, Brutalist
29
+ 4. **UI Guidelines Application** - Typography, color, animation, layout
30
+
31
+ #### Anti-patterns Avoided ("AI Slop")
32
+ - Generic fonts: Inter, Roboto, Arial, Space Grotesk
33
+ - Purple/blue gradients on white
34
+ - Centered layouts without personality
35
+ - Unstyled component libraries
36
+
37
+ **Files Added:**
38
+ - `templates/agentic/agents/uxui.md` - Complete UX/UI specialist agent
39
+
40
+ **Files Modified:**
41
+ - `templates/commands/sync.md` - Frontend detection + uxui.md generation
42
+ - `templates/commands/feature.md` - Phase 4.0 UX/UI analysis
43
+ - `templates/commands/ship.md` - Pre-flight checks + confidence scoring
44
+
45
+ ## [0.19.0] - 2025-12-21
46
+
47
+ ### Breaking: Web Package Removed
48
+
49
+ The web dashboard (`packages/web/`) has been extracted to a separate repository for independent development.
50
+
51
+ **Removed:**
52
+ - `packages/web/` - Next.js dashboard app (~200 files)
53
+ - `bin/serve.js`, `bin/dev.js` - Web server scripts
54
+ - `templates/commands/serve.md` - /p:serve command
55
+ - `prjct-serve`, `prjct-dev` bin entries
56
+
57
+ ### Fix: Prompt Builder Now Sends Full Templates
58
+
59
+ Fixed critical bug where `prompt-builder.ts` only extracted `## Flow` sections, causing Claude to miss important instructions.
60
+
61
+ **Before:** Claude only saw the Flow section (~30% of template)
62
+ **After:** Claude sees the full template content
63
+
64
+ **Files Modified:**
65
+ - `core/agentic/prompt-builder.ts` - Removed regex extraction, send full content
66
+
67
+ ### Improved: Templates Simplified
68
+
69
+ Reduced template verbosity for better Claude comprehension:
70
+
71
+ | Template | Before | After |
72
+ |----------|--------|-------|
73
+ | ship.md | 359 lines | ~110 lines |
74
+ | done.md | 318 lines | ~117 lines |
75
+ | now.md | 346 lines | ~141 lines |
76
+
77
+ ### Improved: Timestamp Generation
78
+
79
+ Changed from undefined `GetTimestamp()` to actual bash commands:
80
+
81
+ ```bash
82
+ bun -e "console.log(new Date().toISOString())" 2>/dev/null || node -e "console.log(new Date().toISOString())"
83
+ ```
84
+
3
85
  ## [0.18.2] - 2025-12-15
4
86
 
5
87
  ### Fix: Agents Write to Global Storage
package/CLAUDE.md CHANGED
@@ -6,255 +6,118 @@ This file provides guidance to Claude Code when working with prjct-cli.
6
6
 
7
7
  **prjct-cli** is a developer momentum tool. Track progress through slash commands without meetings or traditional PM overhead.
8
8
 
9
- ## CRITICAL: Timestamp Management
9
+ ## CRITICAL RULES
10
10
 
11
- **LLM DOES NOT KNOW CURRENT DATE/TIME** - Never generate timestamps manually.
12
-
13
- ### Tools (MUST USE)
14
- - `GetTimestamp()` ISO format: "2025-10-07T14:30:00.000Z"
15
- - `GetDate()` → YYYY-MM-DD format: "2025-10-07"
16
-
17
- ### Rules
18
- 1. **NEVER** generate timestamps manually - All hardcoded dates are WRONG
19
- 2. **ALWAYS** call GetTimestamp() for session files (*.jsonl)
20
- 3. **ALWAYS** call GetDate() for index files (shipped.md, roadmap.md, ideas.md)
21
-
22
- ## Core Workflow
11
+ ### 1. Path Resolution
12
+ **ALL writes go to global storage**: `~/.prjct-cli/projects/{projectId}/`
13
+ - NEVER write to `.prjct/` (config only)
14
+ - NEVER write to `./` (current directory)
23
15
 
16
+ ### 2. Timestamps
17
+ ```bash
18
+ # Prefer bun, fallback to node
19
+ bun -e "console.log(new Date().toISOString())" 2>/dev/null || node -e "console.log(new Date().toISOString())"
24
20
  ```
25
- p. analyze → Analyze stack, generate agents
26
- p. feature → Add feature with tasks
27
- p. done → Mark complete, next task
28
- p. ship → Lint/test/commit/push
29
- ```
30
-
31
- ## Architecture: MD-First
21
+ - Result: `"2025-12-20T10:30:00.000Z"`
22
+ - NEVER hardcode dates or times
32
23
 
33
- **MD files are the source of truth.** No JSON data files - all state is stored directly in Markdown.
24
+ ### 3. UUIDs
25
+ ```bash
26
+ bun -e "console.log(crypto.randomUUID())" 2>/dev/null || node -e "console.log(require('crypto').randomUUID())"
27
+ ```
34
28
 
35
- ### Global Storage
29
+ ### 4. Git Commit Footer
36
30
  ```
37
- ~/.prjct-cli/projects/{id}/
38
- ├── core/ # now.md (current task), next.md (queue)
39
- ├── progress/ # shipped.md, sessions/
40
- ├── planning/ # ideas.md, roadmap.md
41
- ├── analysis/ # repo-summary.md
42
- ├── memory/ # context.jsonl (append-only logs)
43
- ├── agents/ # Generated specialists
44
- └── project.json # Metadata only (name, repoPath, techStack)
31
+ 🤖 Generated with [p/](https://www.prjct.app/)
32
+ Designed for [Claude](https://www.anthropic.com/claude)
45
33
  ```
46
34
 
47
- ### Key Files (Source of Truth)
48
- | File | Purpose |
49
- |------|---------|
50
- | `core/now.md` | Current task state |
51
- | `core/next.md` | Task queue |
52
- | `planning/ideas.md` | Ideas backlog |
53
- | `planning/roadmap.md` | Feature roadmap |
54
- | `progress/shipped.md` | Shipped features |
35
+ ## Architecture: Write-Through
55
36
 
56
- ### Local Config
57
37
  ```
58
- .prjct/prjct.config.json # Links to global data via projectId
59
- ```
60
-
61
- ### Session Format (JSONL)
62
- ```jsonl
63
- {"ts":"{GetTimestamp()}","type":"task_complete","task":"auth","duration":"2h15m"}
38
+ User Action Storage (JSON) Context (MD) → Sync Events
64
39
  ```
65
40
 
66
- ## Natural Language: p. Trigger
67
-
68
- When message starts with `p.`:
69
- 1. Check `.prjct/prjct.config.json` exists
70
- 2. Detect intent from message
71
- 3. **USE SlashCommand tool** to execute the command
72
-
73
- ⚠️ **CRITICAL** - Always use SlashCommand, never work directly:
74
- - ✅ `SlashCommand("/p:feature add dark mode")`
75
- - ❌ Directly creating files without the command
76
-
77
- If no project: "No prjct project. Run /p:init first."
78
-
79
- ### Intent Map
80
-
81
- | User Intent | Command | What It Does |
82
- |-------------|---------|--------------|
83
- | Start/focus on task | `/p:now` | Sets current task |
84
- | Finished work | `/p:done` | Marks complete |
85
- | Ready to ship | `/p:ship` | Ship feature |
86
- | Has an idea | `/p:idea` | Saves to backlog |
87
- | See progress | `/p:recap` | Shows overview |
88
- | What's next | `/p:next` | Priority queue |
89
- | Need help | `/p:help` | Interactive guide |
90
-
91
- **Any language works** - English, Spanish, etc.
92
-
93
- ## Command Execution
94
-
95
- All `/p:*` commands:
96
- 1. Read `.prjct/prjct.config.json` → get projectId
97
- 2. Operate on `~/.prjct-cli/projects/{id}/`
98
- 3. Update files atomically
99
- 4. Return formatted response
100
-
101
- ### Confirmation Policy
102
-
103
- **ALL commands MUST ask for confirmation before execution:**
104
- 1. User triggers command
105
- 2. Present plan of what will be done
106
- 3. User approves
107
- 4. Execute
108
-
109
- ### Command Distinctions
110
-
111
- **`/p:idea`** - Quick idea capture (simple write)
112
- **`/p:workflow`** - Multi-agent workflow management (state machine)
113
-
114
- ## Available Commands
115
-
116
- ### Work
117
- - `/p:now [task]` - Set current task
118
- - `/p:next` - Priority queue
119
- - `/p:done` - Complete task
120
- - `/p:ship <feature>` - Ship and celebrate
121
- - `/p:bug <desc>` - Report bug
122
-
123
- ### Planning
124
- - `/p:idea <text>` - Capture idea
125
- - `/p:feature <desc>` - Add feature
126
- - `/p:workflow` - Workflow status
127
-
128
- ### Progress
129
- - `/p:recap` - Project overview
130
- - `/p:progress [period]` - Metrics
131
- - `/p:status` - KPI dashboard
41
+ | Layer | Path | Purpose |
42
+ |-------|------|---------|
43
+ | Storage | `storage/*.json` | Source of truth |
44
+ | Context | `context/*.md` | Claude-readable (generated) |
45
+ | Sync | `sync/pending.json` | Backend events |
46
+ | Memory | `memory/events.jsonl` | Audit trail |
132
47
 
133
- ### Help
134
- - `/p:init` - Initialize project
135
- - `/p:help` - Interactive guide
136
- - `/p:ask <question>` - Intent translator
137
- - `/p:suggest` - Smart recommendations
138
- - `/p:analyze` - Analyze repository
139
- - `/p:sync` - Sync state
140
-
141
- ### Quality
142
- - `/p:cleanup` - Clean up
143
- - `/p:design` - System design
144
-
145
- ## Agentic Architecture
146
-
147
- prjct-cli is template-driven. Claude reads templates and executes using tools.
148
-
149
- ### Flow
48
+ ### File Structure
150
49
  ```
151
- Template (MD) → Claude reads → Claude decides → Claude uses tools → Result
50
+ ~/.prjct-cli/projects/{projectId}/
51
+ ├── storage/
52
+ │ ├── state.json # Current task (source of truth)
53
+ │ ├── shipped.json # Shipped features
54
+ │ └── queue.json # Task queue
55
+ ├── context/
56
+ │ ├── now.md # Generated from state.json
57
+ │ └── shipped.md # Generated from shipped.json
58
+ ├── sync/pending.json # Backend events
59
+ ├── memory/events.jsonl # Audit trail
60
+ └── agents/ # Domain specialists
152
61
  ```
153
62
 
154
- ### Structure
155
- ```
156
- core/agentic/
157
- ├── template-loader.js # Loads command templates
158
- ├── context-builder.js # Builds project context
159
- ├── prompt-builder.js # Generates prompts
160
- ├── command-executor.js # Executes commands
161
- └── tool-registry.js # Maps tools
63
+ ## Core Workflow
162
64
 
163
- templates/commands/ # Command instructions
164
- templates/workflows/ # Workflow guides
165
- templates/analysis/ # Analysis instructions
166
65
  ```
167
-
168
- ### Templates as Source of Truth
169
-
170
- Templates define what Claude should do:
171
-
172
- ```markdown
173
- # /p:done
174
-
175
- ## Validation
176
- - Requires: `core/now.md` has content
177
-
178
- ## Flow
179
- 1. Read `core/now.md` → calculate duration
180
- 2. Clear now.md
181
- 3. Update metrics
182
-
183
- ## Response
184
- ✅ {task} ({duration})
66
+ /p:sync → /p:now "task" → [work] → /p:done → /p:ship
185
67
  ```
186
68
 
187
- Claude reads this and:
188
- 1. Checks validation
189
- 2. Executes flow using tools
190
- 3. Generates response
191
- 4. Suggests next actions
69
+ ## Commands
192
70
 
193
- ## Git Commit Format
71
+ | Command | Purpose |
72
+ |---------|---------|
73
+ | `/p:sync` | Analyze repo, generate agents |
74
+ | `/p:now [task]` | Start/show current task |
75
+ | `/p:done` | Complete current task |
76
+ | `/p:ship [feature]` | Ship with quality checks |
77
+ | `/p:feature` | Add to roadmap |
78
+ | `/p:idea` | Quick idea capture |
79
+ | `/p:recap` | Project overview |
194
80
 
195
- **ALL commits by prjct MUST use this footer:**
81
+ ## Natural Language Trigger
196
82
 
83
+ Messages starting with `p.` trigger commands:
197
84
  ```
198
- 🤖 Generated with [p/](https://www.prjct.app/)
199
- Designed for [Claude](https://www.anthropic.com/claude)
85
+ p. start auth → /p:now "auth"
86
+ p. done → /p:done
87
+ p. ship login → /p:ship "login"
200
88
  ```
201
89
 
202
- **Never use:**
203
- - "Generated with Claude Code"
204
- - "Co-Authored-By: Claude"
205
-
206
- ## Agent Generation
90
+ ## Template-Driven Execution
207
91
 
208
- Dynamic agents based on project analysis.
209
-
210
- See `templates/agents/AGENTS.md` for reference.
92
+ Templates define command behavior:
93
+ ```
94
+ templates/commands/{command}.md
95
+ ```
211
96
 
212
- Use: `generator.generateDynamicAgent(name, config)`
97
+ Claude reads template → executes flow → generates response.
213
98
 
214
99
  ## Key Rules
215
100
 
216
101
  1. **Read files before editing** - Never assume structure
217
- 2. **Use system timestamps** - Never hardcode dates
102
+ 2. **Use node commands for timestamps** - Never hardcode dates
218
103
  3. **Follow template instructions** - Templates are source of truth
219
- 4. **Confirm before executing** - Always show plan first
220
- 5. **Log actions** - Append to memory/context.jsonl
221
- 6. **Suggest next actions** - Maintain user momentum
222
-
223
- ## Output Philosophy
104
+ 4. **Log to memory** - Append to `memory/events.jsonl`
105
+ 5. **Suggest next actions** - Maintain user momentum
224
106
 
225
- **Task completion responses MUST be concise (< 4 lines):**
107
+ ## Output Format
226
108
 
227
- Format:
109
+ Concise responses (< 4 lines):
228
110
  ```
229
111
  ✅ [What was done]
230
112
 
231
- Files: [count] | Modified: [key file]
232
- Next: [action]
113
+ [Key metrics]
114
+ Next: [suggested action]
233
115
  ```
234
116
 
235
- **NEVER include in task summaries:**
236
- - Tables listing files
237
- - "Created Files" / "Modified Files" sections
238
- - "How It Works" explanations
239
- - Code snippets or implementation details
240
- - Detailed breakdowns of what was done
117
+ ## Documentation
241
118
 
242
- **Example (GOOD):**
243
- ```
244
- Agentic checklists integrated
245
-
246
- Files: 11 created | Modified: prompt-builder.js
247
- Next: /p:ship or test with /p:now
248
- ```
249
-
250
- **Example (BAD):**
251
- ```
252
- Created Files:
253
- | File | Purpose |
254
- |------|---------|
255
- | x.md | Does X |
256
- ...
257
-
258
- How It Works:
259
- Claude reads → decides → applies...
260
- ```
119
+ For detailed information:
120
+ - Architecture: `~/.prjct-cli/docs/architecture.md`
121
+ - Commands: `~/.prjct-cli/docs/commands.md`
122
+ - Validation: `~/.prjct-cli/docs/validation.md`
123
+ - Agents: `~/.prjct-cli/docs/agents.md`
@@ -330,13 +330,9 @@ class PromptBuilder {
330
330
 
331
331
  parts.push('\n---\n')
332
332
 
333
- // Template (only the flow section, skip verbose explanations)
334
- const flowMatch = template.content.match(/## Flow([\s\S]*?)(?=##|$)/)
335
- if (flowMatch) {
336
- parts.push(flowMatch[0])
337
- } else {
338
- parts.push(template.content)
339
- }
333
+ // Template content (include full template, frontmatter already stripped by loader)
334
+ // This ensures Claude sees ALL instructions including critical rules at the top
335
+ parts.push(template.content)
340
336
 
341
337
  // Current state (only if exists and relevant)
342
338
  const relevantState = this.filterRelevantState(state)
@@ -160,24 +160,4 @@ export const OPTIONAL_COMMANDS: Command[] = [
160
160
  ],
161
161
  },
162
162
 
163
- {
164
- name: 'serve',
165
- category: 'optional',
166
- description: 'Start prjct web server',
167
- usage: {
168
- claude: '/p:serve',
169
- terminal: 'prjct serve',
170
- },
171
- params: '[port]',
172
- implemented: true,
173
- hasTemplate: true,
174
- requiresInit: true,
175
- blockingRules: null,
176
- isOptional: true,
177
- features: [
178
- 'Local dashboard server',
179
- 'API endpoints',
180
- 'Real-time updates',
181
- ],
182
- },
183
163
  ]
@@ -7,7 +7,7 @@ import fs from 'fs/promises'
7
7
  import path from 'path'
8
8
  import os from 'os'
9
9
  import type { InstallResult, UninstallResult, CheckResult, SyncResult, GlobalConfigResult } from './types'
10
- import { installGlobalConfig } from './global-config'
10
+ import { installGlobalConfig, installDocs } from './global-config'
11
11
 
12
12
  export class CommandInstaller {
13
13
  homeDir: string
@@ -317,4 +317,11 @@ export class CommandInstaller {
317
317
  async installGlobalConfig(): Promise<GlobalConfigResult> {
318
318
  return installGlobalConfig(this.claudeConfigPath, () => this.detectClaude())
319
319
  }
320
+
321
+ /**
322
+ * Install documentation files to ~/.prjct-cli/docs/
323
+ */
324
+ async installDocs(): Promise<{ success: boolean; error?: string }> {
325
+ return installDocs()
326
+ }
320
327
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Global Config Operations
3
- * Install/update global CLAUDE.md configuration
3
+ * Install/update global CLAUDE.md configuration and docs
4
4
  */
5
5
 
6
6
  import fs from 'fs/promises'
@@ -8,6 +8,36 @@ import path from 'path'
8
8
  import os from 'os'
9
9
  import type { GlobalConfigResult } from './types'
10
10
 
11
+ /**
12
+ * Install documentation files to ~/.prjct-cli/docs/
13
+ */
14
+ export async function installDocs(): Promise<{ success: boolean; error?: string }> {
15
+ try {
16
+ const docsDir = path.join(os.homedir(), '.prjct-cli', 'docs')
17
+ const templateDocsDir = path.join(__dirname, '../../../templates/global/docs')
18
+
19
+ // Ensure docs directory exists
20
+ await fs.mkdir(docsDir, { recursive: true })
21
+
22
+ // Read all doc files from template
23
+ const docFiles = await fs.readdir(templateDocsDir)
24
+
25
+ // Copy each doc file
26
+ for (const file of docFiles) {
27
+ if (file.endsWith('.md')) {
28
+ const srcPath = path.join(templateDocsDir, file)
29
+ const destPath = path.join(docsDir, file)
30
+ const content = await fs.readFile(srcPath, 'utf-8')
31
+ await fs.writeFile(destPath, content, 'utf-8')
32
+ }
33
+ }
34
+
35
+ return { success: true }
36
+ } catch (error) {
37
+ return { success: false, error: (error as Error).message }
38
+ }
39
+ }
40
+
11
41
  /**
12
42
  * Install or update global CLAUDE.md configuration
13
43
  */
@@ -16,7 +16,7 @@ export type {
16
16
  GlobalConfigResult,
17
17
  } from './types'
18
18
 
19
- export { installGlobalConfig } from './global-config'
19
+ export { installGlobalConfig, installDocs } from './global-config'
20
20
  export { CommandInstaller } from './command-installer'
21
21
 
22
22
  import { CommandInstaller } from './command-installer'
@@ -103,6 +103,9 @@ export async function run(): Promise<SetupResults> {
103
103
  if (configResult.success) {
104
104
  results.configAction = configResult.action
105
105
  }
106
+
107
+ // Step 4b: Install documentation files
108
+ await installer.installDocs()
106
109
  }
107
110
 
108
111
  // Step 5: Save version in editors-config
package/package.json CHANGED
@@ -1,12 +1,10 @@
1
1
  {
2
2
  "name": "prjct-cli",
3
- "version": "0.18.2",
3
+ "version": "0.20.0",
4
4
  "description": "Built for Claude - Ship fast, track progress, stay focused. Developer momentum tool for indie hackers.",
5
5
  "main": "core/index.ts",
6
6
  "bin": {
7
- "prjct": "bin/prjct",
8
- "prjct-dev": "bin/dev.js",
9
- "prjct-serve": "bin/serve.js"
7
+ "prjct": "bin/prjct"
10
8
  },
11
9
  "workspaces": [
12
10
  "packages/*"
@@ -16,11 +14,8 @@
16
14
  "registry": "https://registry.npmjs.org"
17
15
  },
18
16
  "scripts": {
19
- "dev": "bun run --filter '*' dev",
20
- "build": "bun run --filter '@prjct/shared' build && bun run --filter 'web' build",
17
+ "build": "bun run --filter '@prjct/shared' build",
21
18
  "build:shared": "bun run --filter '@prjct/shared' build",
22
- "build:web": "bun run --filter 'web' build",
23
- "serve": "bun run --filter 'web' dev",
24
19
  "postinstall": "bun scripts/postinstall.js",
25
20
  "update-commands": "bun -e \"const installer = require('./core/infrastructure/command-installer'); installer.syncCommands().then(r => console.log('Commands updated:', r)).catch(e => console.error('Error:', e.message))\"",
26
21
  "install-global": "./scripts/install.sh",
@@ -84,15 +79,6 @@
84
79
  "bin/",
85
80
  "core/",
86
81
  "packages/shared/",
87
- "packages/web/app/",
88
- "packages/web/components/",
89
- "packages/web/context/",
90
- "packages/web/hooks/",
91
- "packages/web/lib/",
92
- "packages/web/public/",
93
- "packages/web/*.ts",
94
- "packages/web/*.json",
95
- "packages/web/*.mjs",
96
82
  "templates/",
97
83
  "scripts/postinstall.js",
98
84
  "scripts/install.sh",