prjct-cli 0.28.1 → 0.28.2

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 CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.28.2] - 2026-01-10
4
+
5
+ ### Feature: Agent Mentions and Major Cleanup
6
+
7
+ **Agent Mentions (p.agent.{name}):**
8
+ - New `agentId` field in agent frontmatter for identification
9
+ - Users can invoke agents in prompts: `p.agent.backend help me...`
10
+ - Format: `p.agent.workflow`, `p.agent.planner`, `p.agent.frontend`, etc.
11
+
12
+ **Deprecated Commands Removed:**
13
+ - `/p:now` - Use `/p:task` instead
14
+ - `/p:feature` - Use `/p:task` instead
15
+ - `/p:work` - Use `/p:task` instead
16
+
17
+ **Notion Integration Removed:**
18
+ - Removed entire `core/integrations/notion/` directory
19
+ - Removed Notion skills and MCP config
20
+ - Cleaned up type references
21
+
22
+ **Code Cleanup:**
23
+ - Removed `executeWithoutProject()` deprecated method
24
+ - Cleaned dead code in prompt-builder arrays
25
+ - Removed ARCHITECTURE.md (outdated)
26
+
27
+ **Ship Template Enhancement:**
28
+ - Version bump now REQUIRED before PR creation
29
+ - CHANGELOG.md update now REQUIRED before PR creation
30
+ - Better categorization of changes (Added/Fixed/Changed)
31
+
32
+ ---
33
+
3
34
  ## [0.28.1] - 2026-01-10
4
35
 
5
36
  ### Feature: @ Agent Mentions
package/CLAUDE.md CHANGED
@@ -145,6 +145,40 @@ Next: [suggested action]
145
145
 
146
146
  ---
147
147
 
148
+ ## AGENT MENTIONS (v0.28)
149
+
150
+ Invoke or reference project agents using the `p.agent.{name}` syntax.
151
+
152
+ ### Available Agent IDs
153
+
154
+ | Agent ID | Agent File | Purpose |
155
+ |----------|------------|---------|
156
+ | `p.agent.workflow` | `prjct-workflow.md` | Task lifecycle: /p:now, /p:done, /p:next |
157
+ | `p.agent.planner` | `prjct-planner.md` | Planning: /p:feature, /p:idea, /p:spec |
158
+ | `p.agent.shipper` | `prjct-shipper.md` | Shipping: /p:ship |
159
+ | `p.agent.frontend` | `frontend.md` | Frontend/UI work |
160
+ | `p.agent.backend` | `backend.md` | Backend/API work |
161
+ | `p.agent.database` | `database.md` | Database work |
162
+ | `p.agent.testing` | `testing.md` | Testing work |
163
+ | `p.agent.devops` | `devops.md` | DevOps/CI work |
164
+ | `p.agent.uxui` | `uxui.md` | UX/UI design |
165
+
166
+ ### Usage in Prompts
167
+
168
+ ```
169
+ "p.agent.backend help me create a REST endpoint"
170
+ "p.agent.frontend build a login form"
171
+ "p.agent.testing write tests for the auth module"
172
+ ```
173
+
174
+ ### How It Works
175
+
176
+ 1. Each agent has `agentId: p.agent.{name}` in frontmatter
177
+ 2. When user mentions an agent ID, load that agent's context
178
+ 3. Agent provides domain expertise for the task
179
+
180
+ ---
181
+
148
182
  ## SKILL INTEGRATION (v0.27)
149
183
 
150
184
  Agents are linked to Claude Code skills from claude-plugins.dev.
@@ -283,7 +283,7 @@ class PromptBuilder {
283
283
 
284
284
  // Agent assignment (CONDITIONAL - only for code-modifying commands)
285
285
  const commandName = template.frontmatter?.name?.replace('p:', '') || ''
286
- const agentCommands = ['now', 'build', 'feature', 'design', 'fix', 'bug', 'test', 'work', 'cleanup', 'spec']
286
+ const agentCommands = ['task', 'design', 'fix', 'bug', 'test', 'cleanup', 'spec']
287
287
  const needsAgent = agentCommands.includes(commandName)
288
288
 
289
289
  if (agent && needsAgent) {
@@ -332,7 +332,7 @@ class PromptBuilder {
332
332
  }
333
333
 
334
334
  // OPTIMIZED: Only include patterns for code-modifying commands
335
- const codeCommands = ['now', 'build', 'feature', 'design', 'cleanup', 'fix', 'bug', 'test', 'init', 'spec', 'work']
335
+ const codeCommands = ['task', 'design', 'cleanup', 'fix', 'bug', 'test', 'init', 'spec']
336
336
  const needsPatterns = codeCommands.includes(commandName)
337
337
 
338
338
  // Include code patterns analysis for code-modifying commands
@@ -62,17 +62,6 @@ export const COMMANDS: CommandMeta[] = [
62
62
  requiresProject: true,
63
63
  features: ['Agentic type classification', '7-phase workflow', 'Git branch management', 'Task breakdown'],
64
64
  },
65
- {
66
- name: 'feature',
67
- group: 'core',
68
- description: 'DEPRECATED - Use /p:task instead',
69
- usage: { claude: '/p:task "<description>"', terminal: 'prjct task "<description>"' },
70
- params: '<description>',
71
- implemented: true,
72
- hasTemplate: true,
73
- requiresProject: true,
74
- deprecated: true,
75
- },
76
65
  {
77
66
  name: 'spec',
78
67
  group: 'core',
@@ -83,28 +72,6 @@ export const COMMANDS: CommandMeta[] = [
83
72
  hasTemplate: true,
84
73
  requiresProject: true,
85
74
  },
86
- {
87
- name: 'now',
88
- group: 'core',
89
- description: 'DEPRECATED - Use /p:task instead',
90
- usage: { claude: '/p:task "<description>"', terminal: 'prjct task "<description>"' },
91
- params: '[task]',
92
- implemented: true,
93
- hasTemplate: true,
94
- requiresProject: true,
95
- deprecated: true,
96
- },
97
- {
98
- name: 'work',
99
- group: 'core',
100
- description: 'DEPRECATED - Use /p:task instead',
101
- usage: { claude: '/p:task "<description>"', terminal: 'prjct task "<description>"' },
102
- params: '[task]',
103
- implemented: true,
104
- hasTemplate: true,
105
- requiresProject: true,
106
- deprecated: true,
107
- },
108
75
  {
109
76
  name: 'pause',
110
77
  group: 'core',
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * MD-First Architecture - All state in Markdown files.
5
5
  *
6
- * COMMANDS (22 total):
7
- * - Workflow (5): work, done, next, pause, resume
8
- * - Planning (5): init, feature, bug, idea, spec
6
+ * COMMANDS (20 total):
7
+ * - Workflow (4): done, next, pause, resume
8
+ * - Planning (4): init, bug, idea, spec
9
9
  * - Shipping (1): ship
10
10
  * - Analytics (2): dash, help
11
- * - Maintenance (5): cleanup, design, recover, undo, redo, history
11
+ * - Maintenance (6): cleanup, design, recover, undo, redo, history
12
12
  * - Analysis (2): analyze, sync
13
13
  * - Setup (3): start, setup, migrateAll
14
14
  */
@@ -69,10 +69,6 @@ class PrjctCommands {
69
69
 
70
70
  // ========== Workflow Commands ==========
71
71
 
72
- async work(task: string | null = null, projectPath: string = process.cwd()): Promise<CommandResult> {
73
- return this.workflow.now(task, projectPath)
74
- }
75
-
76
72
  async done(projectPath: string = process.cwd()): Promise<CommandResult> {
77
73
  return this.workflow.done(projectPath)
78
74
  }
@@ -95,10 +91,6 @@ class PrjctCommands {
95
91
  return this.planning.init(idea, projectPath)
96
92
  }
97
93
 
98
- async feature(description: string, projectPath: string = process.cwd()): Promise<CommandResult> {
99
- return this.planning.feature(description, projectPath)
100
- }
101
-
102
94
  async bug(description: string, projectPath: string = process.cwd()): Promise<CommandResult> {
103
95
  return this.planning.bug(description, projectPath)
104
96
  }
@@ -388,43 +388,6 @@ export class CommandRegistry {
388
388
  }
389
389
  }
390
390
 
391
- /**
392
- * Execute without requiring project (for init, setup commands)
393
- * @deprecated Use execute() - it auto-detects based on command metadata
394
- */
395
- async executeWithoutProject<TParams = void>(
396
- name: string,
397
- params: TParams,
398
- projectPath: string = process.cwd()
399
- ): Promise<CommandResult> {
400
- const handler = this.handlers.get(name)
401
- if (handler) {
402
- const context: ExecutionContext = {
403
- projectId: '',
404
- projectPath,
405
- globalPath: '',
406
- timestamp: getTimestamp(),
407
- }
408
- return handler.execute(params, context)
409
- }
410
-
411
- const handlerFn = this.handlerFns.get(name)
412
- if (handlerFn) {
413
- const context: ExecutionContext = {
414
- projectId: '',
415
- projectPath,
416
- globalPath: '',
417
- timestamp: getTimestamp(),
418
- }
419
- return handlerFn(params, context)
420
- }
421
-
422
- return {
423
- success: false,
424
- error: `Command not found: ${name}`,
425
- }
426
- }
427
-
428
391
  /**
429
392
  * Clear all registrations (useful for testing)
430
393
  */
package/core/index.ts CHANGED
@@ -97,14 +97,12 @@ async function main(): Promise<void> {
97
97
  const param = parsedArgs.join(' ') || null
98
98
  const standardCommands: Record<string, (p: string | null) => Promise<CommandResult>> = {
99
99
  // Core workflow
100
- work: (p) => commands.work(p),
101
100
  done: () => commands.done(),
102
101
  next: () => commands.next(),
103
102
  pause: (p) => commands.pause(p || ''),
104
103
  resume: (p) => commands.resume(p),
105
104
  // Planning
106
105
  init: (p) => commands.init(p),
107
- feature: (p) => commands.feature(p || ''),
108
106
  bug: (p) => commands.bug(p || ''),
109
107
  idea: (p) => commands.idea(p || ''),
110
108
  spec: (p) => commands.spec(p),
@@ -25,7 +25,7 @@ export interface GlobalConfig {
25
25
  version: string
26
26
  created?: string
27
27
  lastSync: string
28
- // Optional external integrations (Notion, etc.)
28
+ // Optional external integrations
29
29
  integrations?: IntegrationsConfig
30
30
  }
31
31
 
@@ -225,10 +225,8 @@ export type {
225
225
  // Integration Types
226
226
  // =============================================================================
227
227
  export type {
228
- NotionIntegrationConfig,
229
228
  IntegrationsConfig,
230
229
  } from './integrations'
231
- export { DEFAULT_NOTION_CONFIG } from './integrations'
232
230
 
233
231
  // =============================================================================
234
232
  // Template Types
@@ -1,57 +1,12 @@
1
1
  /**
2
2
  * Integration Types
3
- * Types for external service integrations (Notion, etc.)
3
+ * Types for external service integrations
4
4
  */
5
5
 
6
- /**
7
- * Notion Integration Config
8
- * Stored in GlobalConfig.integrations.notion
9
- */
10
- export interface NotionIntegrationConfig {
11
- enabled: boolean
12
- workspaceId?: string
13
- workspaceName?: string
14
-
15
- // Database IDs (created on first setup)
16
- databases: {
17
- shipped?: string // "prjct: Shipped Features"
18
- roadmap?: string // "prjct: Roadmap"
19
- ideas?: string // "prjct: Ideas"
20
- tasks?: string // "prjct: Active Tasks"
21
- }
22
-
23
- // Dashboard page (links all databases)
24
- dashboardPageId?: string
25
-
26
- // Sync preferences
27
- syncOn: {
28
- ship: boolean // Auto-sync on /p:ship
29
- done: boolean // Sync task completion
30
- idea: boolean // Sync new ideas
31
- }
32
-
33
- // Setup metadata
34
- setupAt?: string
35
- lastSyncAt?: string
36
- }
37
-
38
6
  /**
39
7
  * Integrations Config
40
8
  * Container for all external integrations
41
9
  */
42
10
  export interface IntegrationsConfig {
43
- notion?: NotionIntegrationConfig
44
- }
45
-
46
- /**
47
- * Default Notion config (disabled)
48
- */
49
- export const DEFAULT_NOTION_CONFIG: NotionIntegrationConfig = {
50
- enabled: false,
51
- databases: {},
52
- syncOn: {
53
- ship: true,
54
- done: false,
55
- idea: true,
56
- },
11
+ // Future integrations can be added here
57
12
  }
@@ -43,10 +43,6 @@ export interface ShippedFeature {
43
43
  quantitativeImpact?: string
44
44
  tasksCompleted?: number
45
45
  featureId?: string
46
- /** Notion page ID for bidirectional sync */
47
- notionPageId?: string
48
- /** Last sync timestamp for conflict resolution */
49
- lastSyncedAt?: string
50
46
  }
51
47
 
52
48
  export interface ShipChange {
@@ -117,10 +113,6 @@ export interface Idea {
117
113
  risks?: string[]
118
114
  risksCount?: number
119
115
  createdAt?: string
120
- /** Notion page ID for bidirectional sync */
121
- notionPageId?: string
122
- /** Last sync timestamp for conflict resolution */
123
- lastSyncedAt?: string
124
116
  }
125
117
 
126
118
  export interface ImpactEffort {
@@ -11,10 +11,6 @@ export interface Task {
11
11
  completedAt?: string
12
12
  duration?: string
13
13
  metadata?: TaskMetadata
14
- /** Notion page ID for bidirectional sync */
15
- notionPageId?: string
16
- /** Last sync timestamp for conflict resolution */
17
- lastSyncedAt?: string
18
14
  }
19
15
 
20
16
  export interface TaskMetadata {
@@ -4786,13 +4786,6 @@ var init_memory = __esm({
4786
4786
  }
4787
4787
  });
4788
4788
 
4789
- // core/types/integrations.ts
4790
- var init_integrations = __esm({
4791
- "core/types/integrations.ts"() {
4792
- "use strict";
4793
- }
4794
- });
4795
-
4796
4789
  // core/types/bus.ts
4797
4790
  var init_bus = __esm({
4798
4791
  "core/types/bus.ts"() {
@@ -4806,7 +4799,6 @@ var init_types = __esm({
4806
4799
  "use strict";
4807
4800
  init_fs();
4808
4801
  init_memory();
4809
- init_integrations();
4810
4802
  init_bus();
4811
4803
  }
4812
4804
  });
@@ -5007,7 +4999,7 @@ var init_prompt_builder = __esm({
5007
4999
  const parts = [];
5008
5000
  this._currentContext = context;
5009
5001
  const commandName = template.frontmatter?.name?.replace("p:", "") || "";
5010
- const agentCommands = ["now", "build", "feature", "design", "fix", "bug", "test", "work", "cleanup", "spec"];
5002
+ const agentCommands = ["task", "design", "fix", "bug", "test", "cleanup", "spec"];
5011
5003
  const needsAgent = agentCommands.includes(commandName);
5012
5004
  if (agent && needsAgent) {
5013
5005
  parts.push(`# AGENT: ${agent.name}
@@ -5054,7 +5046,7 @@ Read files before modifying.
5054
5046
 
5055
5047
  `);
5056
5048
  }
5057
- const codeCommands = ["now", "build", "feature", "design", "cleanup", "fix", "bug", "test", "init", "spec", "work"];
5049
+ const codeCommands = ["task", "design", "cleanup", "fix", "bug", "test", "init", "spec"];
5058
5050
  const needsPatterns = codeCommands.includes(commandName);
5059
5051
  const codePatternsContent = state?.codePatterns || "";
5060
5052
  if (needsPatterns && codePatternsContent && codePatternsContent.trim()) {
@@ -10730,36 +10722,6 @@ var init_registry = __esm({
10730
10722
  error: `Command not found: ${name}`
10731
10723
  };
10732
10724
  }
10733
- /**
10734
- * Execute without requiring project (for init, setup commands)
10735
- * @deprecated Use execute() - it auto-detects based on command metadata
10736
- */
10737
- async executeWithoutProject(name, params, projectPath = process.cwd()) {
10738
- const handler = this.handlers.get(name);
10739
- if (handler) {
10740
- const context = {
10741
- projectId: "",
10742
- projectPath,
10743
- globalPath: "",
10744
- timestamp: getTimestamp()
10745
- };
10746
- return handler.execute(params, context);
10747
- }
10748
- const handlerFn = this.handlerFns.get(name);
10749
- if (handlerFn) {
10750
- const context = {
10751
- projectId: "",
10752
- projectPath,
10753
- globalPath: "",
10754
- timestamp: getTimestamp()
10755
- };
10756
- return handlerFn(params, context);
10757
- }
10758
- return {
10759
- success: false,
10760
- error: `Command not found: ${name}`
10761
- };
10762
- }
10763
10725
  /**
10764
10726
  * Clear all registrations (useful for testing)
10765
10727
  */
@@ -11779,9 +11741,6 @@ var init_commands = __esm({
11779
11741
  this.prjctDir = ".prjct";
11780
11742
  }
11781
11743
  // ========== Workflow Commands ==========
11782
- async work(task = null, projectPath = process.cwd()) {
11783
- return this.workflow.now(task, projectPath);
11784
- }
11785
11744
  async done(projectPath = process.cwd()) {
11786
11745
  return this.workflow.done(projectPath);
11787
11746
  }
@@ -11798,9 +11757,6 @@ var init_commands = __esm({
11798
11757
  async init(idea = null, projectPath = process.cwd()) {
11799
11758
  return this.planning.init(idea, projectPath);
11800
11759
  }
11801
- async feature(description, projectPath = process.cwd()) {
11802
- return this.planning.feature(description, projectPath);
11803
- }
11804
11760
  async bug(description, projectPath = process.cwd()) {
11805
11761
  return this.planning.bug(description, projectPath);
11806
11762
  }
@@ -11941,17 +11897,6 @@ var init_command_data = __esm({
11941
11897
  requiresProject: true,
11942
11898
  features: ["Agentic type classification", "7-phase workflow", "Git branch management", "Task breakdown"]
11943
11899
  },
11944
- {
11945
- name: "feature",
11946
- group: "core",
11947
- description: "DEPRECATED - Use /p:task instead",
11948
- usage: { claude: '/p:task "<description>"', terminal: 'prjct task "<description>"' },
11949
- params: "<description>",
11950
- implemented: true,
11951
- hasTemplate: true,
11952
- requiresProject: true,
11953
- deprecated: true
11954
- },
11955
11900
  {
11956
11901
  name: "spec",
11957
11902
  group: "core",
@@ -11962,28 +11907,6 @@ var init_command_data = __esm({
11962
11907
  hasTemplate: true,
11963
11908
  requiresProject: true
11964
11909
  },
11965
- {
11966
- name: "now",
11967
- group: "core",
11968
- description: "DEPRECATED - Use /p:task instead",
11969
- usage: { claude: '/p:task "<description>"', terminal: 'prjct task "<description>"' },
11970
- params: "[task]",
11971
- implemented: true,
11972
- hasTemplate: true,
11973
- requiresProject: true,
11974
- deprecated: true
11975
- },
11976
- {
11977
- name: "work",
11978
- group: "core",
11979
- description: "DEPRECATED - Use /p:task instead",
11980
- usage: { claude: '/p:task "<description>"', terminal: 'prjct task "<description>"' },
11981
- params: "[task]",
11982
- implemented: true,
11983
- hasTemplate: true,
11984
- requiresProject: true,
11985
- deprecated: true
11986
- },
11987
11910
  {
11988
11911
  name: "pause",
11989
11912
  group: "core",
@@ -12307,7 +12230,7 @@ var require_package = __commonJS({
12307
12230
  "package.json"(exports, module) {
12308
12231
  module.exports = {
12309
12232
  name: "prjct-cli",
12310
- version: "0.27.0",
12233
+ version: "0.28.1",
12311
12234
  description: "Built for Claude - Ship fast, track progress, stay focused. Developer momentum tool for indie hackers.",
12312
12235
  main: "core/index.ts",
12313
12236
  bin: {
@@ -12467,14 +12390,12 @@ Use 'prjct --help' to see available commands.`);
12467
12390
  const param = parsedArgs.join(" ") || null;
12468
12391
  const standardCommands = {
12469
12392
  // Core workflow
12470
- work: /* @__PURE__ */ __name((p) => commands.work(p), "work"),
12471
12393
  done: /* @__PURE__ */ __name(() => commands.done(), "done"),
12472
12394
  next: /* @__PURE__ */ __name(() => commands.next(), "next"),
12473
12395
  pause: /* @__PURE__ */ __name((p) => commands.pause(p || ""), "pause"),
12474
12396
  resume: /* @__PURE__ */ __name((p) => commands.resume(p), "resume"),
12475
12397
  // Planning
12476
12398
  init: /* @__PURE__ */ __name((p) => commands.init(p), "init"),
12477
- feature: /* @__PURE__ */ __name((p) => commands.feature(p || ""), "feature"),
12478
12399
  bug: /* @__PURE__ */ __name((p) => commands.bug(p || ""), "bug"),
12479
12400
  idea: /* @__PURE__ */ __name((p) => commands.idea(p || ""), "idea"),
12480
12401
  spec: /* @__PURE__ */ __name((p) => commands.spec(p), "spec"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prjct-cli",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
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": {
@@ -18,16 +18,29 @@ Write sub-agents to: `{globalPath}/agents/` (global storage, NOT local project)
18
18
  ```markdown
19
19
  ---
20
20
  name: agent-name
21
+ agentId: p.agent.{name}
21
22
  description: When to use this agent. Include "Use PROACTIVELY" for auto-invocation.
22
23
  tools: Read, Write, Glob, Grep, Bash
23
24
  model: sonnet
24
25
  skills: [skill-name]
26
+ projectId: {projectId}
27
+ projectPath: {projectPath}
25
28
  ---
26
29
 
27
30
  Agent system prompt here...
28
31
  ```
29
32
 
30
- **The `skills` field links the agent to Claude Code skills from claude-plugins.dev.**
33
+ **Required fields:**
34
+ - `agentId`: Unique identifier for mentions. Format: `p.agent.{name}` (e.g., `p.agent.backend`, `p.agent.frontend`)
35
+ - `skills`: Links the agent to Claude Code skills from claude-plugins.dev
36
+ - `projectId`: Links agent to specific project
37
+ - `projectPath`: Path to project root
38
+
39
+ **Agent ID Convention:**
40
+ - All prjct agents use prefix `p.agent.`
41
+ - The `{name}` is derived from the agent filename without `.md`
42
+ - Examples: `p.agent.backend`, `p.agent.frontend`, `p.agent.workflow`, `p.agent.planner`
43
+ - Users can mention agents in prompts using this ID
31
44
 
32
45
  ## Generation Rules
33
46
 
@@ -136,45 +136,6 @@ WRITE: `.prjct/prjct.config.json`
136
136
  }
137
137
  ```
138
138
 
139
- ## Step: Optional Integrations
140
-
141
- After core setup, offer optional integrations.
142
-
143
- ### Notion Integration (Optional)
144
-
145
- Ask: "Would you like to connect with Notion for dashboards and progress tracking?"
146
-
147
- If yes:
148
- 1. Guide user to create Notion integration at https://www.notion.so/my-integrations
149
- 2. Ask for API token (starts with `ntn_`)
150
- 3. Ask for parent page ID (where to create databases)
151
- 4. Create 4 databases:
152
- - prjct: Shipped Features
153
- - prjct: Roadmap
154
- - prjct: Ideas
155
- - prjct: Active Tasks
156
- 5. Store config in `project.json`:
157
-
158
- ```json
159
- {
160
- "integrations": {
161
- "notion": {
162
- "enabled": true,
163
- "workspaceName": "{workspace}",
164
- "databases": {
165
- "shipped": "{dbId}",
166
- "roadmap": "{dbId}",
167
- "ideas": "{dbId}",
168
- "tasks": "{dbId}"
169
- },
170
- "syncOn": { "ship": true, "idea": true }
171
- }
172
- }
173
- }
174
- ```
175
-
176
- If no: Skip and continue (integration can be added later with `/p:notion setup`).
177
-
178
139
  ## Response
179
140
 
180
141
  ```
@@ -189,13 +150,9 @@ Structure:
189
150
  ├── sync/ # Backend events
190
151
  └── agents/ # Specialists
191
152
 
192
- Integrations:
193
- • Notion: {enabled|disabled}
194
-
195
153
  Next:
196
154
  • /p:sync - Analyze project and generate agents
197
- • /p:feature "{first_feature}" - Start first feature
198
- • /p:notion setup - Connect Notion (if skipped)
155
+ • /p:task "{first_task}" - Start first task
199
156
  • /p:help - See all commands
200
157
  ```
201
158