planflow-plugin 0.1.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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/bin/cli.js +169 -0
  4. package/bin/postinstall.js +87 -0
  5. package/commands/pfActivity/SKILL.md +725 -0
  6. package/commands/pfAssign/SKILL.md +623 -0
  7. package/commands/pfCloudLink/SKILL.md +192 -0
  8. package/commands/pfCloudList/SKILL.md +222 -0
  9. package/commands/pfCloudNew/SKILL.md +187 -0
  10. package/commands/pfCloudUnlink/SKILL.md +152 -0
  11. package/commands/pfComment/SKILL.md +227 -0
  12. package/commands/pfComments/SKILL.md +159 -0
  13. package/commands/pfConnectionStatus/SKILL.md +433 -0
  14. package/commands/pfDiscord/SKILL.md +740 -0
  15. package/commands/pfGithubBranch/SKILL.md +672 -0
  16. package/commands/pfGithubIssue/SKILL.md +963 -0
  17. package/commands/pfGithubLink/SKILL.md +859 -0
  18. package/commands/pfGithubPr/SKILL.md +1335 -0
  19. package/commands/pfGithubUnlink/SKILL.md +401 -0
  20. package/commands/pfLive/SKILL.md +185 -0
  21. package/commands/pfLogin/SKILL.md +249 -0
  22. package/commands/pfLogout/SKILL.md +155 -0
  23. package/commands/pfMyTasks/SKILL.md +198 -0
  24. package/commands/pfNotificationSettings/SKILL.md +619 -0
  25. package/commands/pfNotifications/SKILL.md +420 -0
  26. package/commands/pfNotificationsClear/SKILL.md +421 -0
  27. package/commands/pfReact/SKILL.md +232 -0
  28. package/commands/pfSlack/SKILL.md +659 -0
  29. package/commands/pfSyncPull/SKILL.md +210 -0
  30. package/commands/pfSyncPush/SKILL.md +299 -0
  31. package/commands/pfSyncStatus/SKILL.md +212 -0
  32. package/commands/pfTeamInvite/SKILL.md +161 -0
  33. package/commands/pfTeamList/SKILL.md +253 -0
  34. package/commands/pfTeamRemove/SKILL.md +115 -0
  35. package/commands/pfTeamRole/SKILL.md +160 -0
  36. package/commands/pfTestWebhooks/SKILL.md +722 -0
  37. package/commands/pfUnassign/SKILL.md +134 -0
  38. package/commands/pfWhoami/SKILL.md +258 -0
  39. package/commands/pfWorkload/SKILL.md +219 -0
  40. package/commands/planExportCsv/SKILL.md +106 -0
  41. package/commands/planExportGithub/SKILL.md +222 -0
  42. package/commands/planExportJson/SKILL.md +159 -0
  43. package/commands/planExportSummary/SKILL.md +158 -0
  44. package/commands/planNew/SKILL.md +641 -0
  45. package/commands/planNext/SKILL.md +1200 -0
  46. package/commands/planSettingsAutoSync/SKILL.md +199 -0
  47. package/commands/planSettingsLanguage/SKILL.md +201 -0
  48. package/commands/planSettingsReset/SKILL.md +237 -0
  49. package/commands/planSettingsShow/SKILL.md +482 -0
  50. package/commands/planSpec/SKILL.md +929 -0
  51. package/commands/planUpdate/SKILL.md +2518 -0
  52. package/commands/team/SKILL.md +740 -0
  53. package/locales/en.json +1499 -0
  54. package/locales/ka.json +1499 -0
  55. package/package.json +48 -0
  56. package/templates/PROJECT_PLAN.template.md +157 -0
  57. package/templates/backend-api.template.md +562 -0
  58. package/templates/frontend-spa.template.md +610 -0
  59. package/templates/fullstack.template.md +397 -0
  60. package/templates/ka/backend-api.template.md +562 -0
  61. package/templates/ka/frontend-spa.template.md +610 -0
  62. package/templates/ka/fullstack.template.md +397 -0
  63. package/templates/sections/architecture.md +21 -0
  64. package/templates/sections/overview.md +15 -0
  65. package/templates/sections/tasks.md +22 -0
  66. package/templates/sections/tech-stack.md +19 -0
@@ -0,0 +1,192 @@
1
+ ---
2
+ name: pfCloudLink
3
+ description: Link local directory to a PlanFlow cloud project
4
+ ---
5
+
6
+ # PlanFlow Cloud Link
7
+
8
+ Link local directory to a PlanFlow cloud project with selection interface.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ /pfCloudLink # Interactive project selection
14
+ /pfCloudLink <project-id> # Link to specific project
15
+ ```
16
+
17
+ ## Step 0: Load Configuration
18
+
19
+ ```javascript
20
+ function getConfig() {
21
+ const localConfigPath = "./.plan-config.json"
22
+ let localConfig = {}
23
+ if (fileExists(localConfigPath)) {
24
+ try { localConfig = JSON.parse(readFile(localConfigPath)) } catch {}
25
+ }
26
+
27
+ const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
28
+ let globalConfig = {}
29
+ if (fileExists(globalConfigPath)) {
30
+ try { globalConfig = JSON.parse(readFile(globalConfigPath)) } catch {}
31
+ }
32
+
33
+ return { ...globalConfig, ...localConfig, _localConfig: localConfig, _globalConfig: globalConfig }
34
+ }
35
+
36
+ const config = getConfig()
37
+ const language = config.language || "en"
38
+ const cloudConfig = config.cloud || {}
39
+ const isAuthenticated = !!cloudConfig.apiToken
40
+ const currentProjectId = cloudConfig.projectId
41
+ const apiUrl = cloudConfig.apiUrl || "https://api.planflow.tools"
42
+
43
+ const t = JSON.parse(readFile(`locales/${language}.json`))
44
+ ```
45
+
46
+ ## Step 1: Parse Arguments
47
+
48
+ ```javascript
49
+ const projectIdArg = commandArgs.trim() // project ID if provided
50
+ ```
51
+
52
+ ## Step 2: Validate Authentication
53
+
54
+ If not authenticated, display error card:
55
+
56
+ ```
57
+ ╭──────────────────────────────────────────────────────────────────────────────╮
58
+ │ ❌ ERROR │
59
+ ├──────────────────────────────────────────────────────────────────────────────┤
60
+ │ │
61
+ │ {t.commands.sync.notAuthenticated} │
62
+ │ │
63
+ │ You must be logged in to link projects. │
64
+ │ │
65
+ │ 💡 {t.ui.labels.nextSteps} │
66
+ │ • /pfLogin Sign in to PlanFlow │
67
+ │ │
68
+ ╰──────────────────────────────────────────────────────────────────────────────╯
69
+ ```
70
+
71
+ ## Step 3: Check Current Link
72
+
73
+ **If already linked, display warning card:**
74
+
75
+ ```
76
+ ╭──────────────────────────────────────────────────────────────────────────────╮
77
+ │ ⚠️ WARNING │
78
+ ├──────────────────────────────────────────────────────────────────────────────┤
79
+ │ │
80
+ │ Already linked to: {projectName} │
81
+ │ │
82
+ │ Project ID: {currentProjectId} │
83
+ │ │
84
+ │ To switch projects, unlink first. │
85
+ │ │
86
+ │ 💡 {t.ui.labels.nextSteps} │
87
+ │ • /pfCloudUnlink Unlink current project │
88
+ │ │
89
+ ╰──────────────────────────────────────────────────────────────────────────────╯
90
+ ```
91
+
92
+ ## Step 4: Select Project
93
+
94
+ **If no ID provided, show selection card:**
95
+
96
+ ```
97
+ ╭──────────────────────────────────────────────────────────────────────────────╮
98
+ │ 🔗 Link to Cloud Project │
99
+ ├──────────────────────────────────────────────────────────────────────────────┤
100
+ │ │
101
+ │ ── Available Projects ────────────────────────────────────────────────── │
102
+ │ │
103
+ │ [1] E-commerce App │
104
+ │ ID: abc123 | 24/45 tasks | 53% │
105
+ │ │
106
+ │ [2] Mobile API │
107
+ │ ID: def456 | 12/18 tasks | 67% │
108
+ │ │
109
+ │ [3] Dashboard │
110
+ │ ID: ghi789 | 8/12 tasks | 75% │
111
+ │ │
112
+ ╰──────────────────────────────────────────────────────────────────────────────╯
113
+ ```
114
+
115
+ Use AskUserQuestion to select:
116
+ ```javascript
117
+ AskUserQuestion({
118
+ questions: [{
119
+ question: t.commands.cloud.selectProject,
120
+ header: "Project",
121
+ multiSelect: false,
122
+ options: projects.map(p => ({
123
+ label: p.name,
124
+ description: `ID: ${p.id} | ${p.tasksDone}/${p.tasksTotal} tasks`
125
+ }))
126
+ }]
127
+ })
128
+ ```
129
+
130
+ **If ID provided:**
131
+ Verify project exists via API call.
132
+
133
+ ## Step 5: Save Link
134
+
135
+ **Save to local config (`.plan-config.json`):**
136
+ ```json
137
+ {
138
+ "cloud": {
139
+ "projectId": "selected-uuid"
140
+ }
141
+ }
142
+ ```
143
+
144
+ ## Step 6: Show Success Card
145
+
146
+ ```
147
+ ╭──────────────────────────────────────────────────────────────────────────────╮
148
+ │ ✅ SUCCESS │
149
+ ├──────────────────────────────────────────────────────────────────────────────┤
150
+ │ │
151
+ │ {t.commands.cloud.linked} │
152
+ │ │
153
+ │ ── Project Details ───────────────────────────────────────────────────── │
154
+ │ │
155
+ │ 📁 Project: E-commerce App │
156
+ │ 🆔 ID: abc123 │
157
+ │ 📊 Tasks: 24/45 (53%) │
158
+ │ │
159
+ │ ╭────────────────╮ │
160
+ │ │ ✓ Linked │ │
161
+ │ ╰────────────────╯ │
162
+ │ │
163
+ ├──────────────────────────────────────────────────────────────────────────────┤
164
+ │ │
165
+ │ 💡 {t.ui.labels.nextSteps} │
166
+ │ • /pfSyncPull Download cloud plan to local │
167
+ │ • /pfSyncPush Upload local plan to cloud │
168
+ │ • /pfSyncStatus Check sync status │
169
+ │ │
170
+ ╰──────────────────────────────────────────────────────────────────────────────╯
171
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
172
+ ```
173
+
174
+ ## Error Handling
175
+
176
+ **Project not found card:**
177
+
178
+ ```
179
+ ╭──────────────────────────────────────────────────────────────────────────────╮
180
+ │ ❌ ERROR │
181
+ ├──────────────────────────────────────────────────────────────────────────────┤
182
+ │ │
183
+ │ Project not found: {id} │
184
+ │ │
185
+ │ The project ID doesn't exist or you don't have access. │
186
+ │ │
187
+ │ 💡 {t.ui.labels.nextSteps} │
188
+ │ • /pfCloudList View available projects │
189
+ │ • /pfCloudNew Create a new project │
190
+ │ │
191
+ ╰──────────────────────────────────────────────────────────────────────────────╯
192
+ ```
@@ -0,0 +1,222 @@
1
+ ---
2
+ name: pfCloudList
3
+ description: List all cloud projects in your PlanFlow account
4
+ ---
5
+
6
+ # PlanFlow Cloud List
7
+
8
+ List all cloud projects in your PlanFlow account with project cards grid.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ /pfCloudList
14
+ ```
15
+
16
+ ## Step 0: Load Configuration
17
+
18
+ ```javascript
19
+ function getConfig() {
20
+ const localConfigPath = "./.plan-config.json"
21
+ let localConfig = {}
22
+ if (fileExists(localConfigPath)) {
23
+ try { localConfig = JSON.parse(readFile(localConfigPath)) } catch {}
24
+ }
25
+
26
+ const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
27
+ let globalConfig = {}
28
+ if (fileExists(globalConfigPath)) {
29
+ try { globalConfig = JSON.parse(readFile(globalConfigPath)) } catch {}
30
+ }
31
+
32
+ return { ...globalConfig, ...localConfig, _localConfig: localConfig, _globalConfig: globalConfig }
33
+ }
34
+
35
+ const config = getConfig()
36
+ const language = config.language || "en"
37
+ const cloudConfig = config.cloud || {}
38
+ const isAuthenticated = !!cloudConfig.apiToken
39
+ const currentProjectId = cloudConfig.projectId
40
+ const apiUrl = cloudConfig.apiUrl || "https://api.planflow.tools"
41
+
42
+ const t = JSON.parse(readFile(`locales/${language}.json`))
43
+ ```
44
+
45
+ ## Step 1: Validate Authentication
46
+
47
+ If not authenticated, display error card:
48
+
49
+ ```
50
+ ╭──────────────────────────────────────────────────────────────────────────────╮
51
+ │ ❌ ERROR │
52
+ ├──────────────────────────────────────────────────────────────────────────────┤
53
+ │ │
54
+ │ {t.commands.sync.notAuthenticated} │
55
+ │ │
56
+ │ You must be logged in to view cloud projects. │
57
+ │ │
58
+ │ 💡 {t.ui.labels.nextSteps} │
59
+ │ • /pfLogin Sign in to PlanFlow │
60
+ │ │
61
+ ╰──────────────────────────────────────────────────────────────────────────────╯
62
+ ```
63
+
64
+ ## Step 2: Fetch Projects (with Loading)
65
+
66
+ **Loading Card:**
67
+
68
+ ```
69
+ ╭──────────────────────────────────────────────────────────────────────────────╮
70
+ │ ☁️ Cloud Projects │
71
+ ├──────────────────────────────────────────────────────────────────────────────┤
72
+ │ │
73
+ │ ⠹ {t.ui.labels.fetching} │
74
+ │ │
75
+ ╰──────────────────────────────────────────────────────────────────────────────╯
76
+ ```
77
+
78
+ **API Call:**
79
+ ```bash
80
+ curl -s \
81
+ -H "Authorization: Bearer {TOKEN}" \
82
+ "https://api.planflow.tools/projects"
83
+ ```
84
+
85
+ ## Step 3: Display Projects Card
86
+
87
+ ```
88
+ ╭──────────────────────────────────────────────────────────────────────────────╮
89
+ │ ☁️ {t.commands.cloud.listProjects} │
90
+ ├──────────────────────────────────────────────────────────────────────────────┤
91
+ │ │
92
+ │ ── Your Projects ({count}) ───────────────────────────────────────────── │
93
+ │ │
94
+ │ ┌─────────┬─────────────────────────┬─────────┬─────────────────────────┐ │
95
+ │ │ ID │ Name │ Tasks │ Progress │ │
96
+ │ ├─────────┼─────────────────────────┼─────────┼─────────────────────────┤ │
97
+ │ │ abc123 │ E-commerce App │ 24/45 │ ██████████░░░░░░░░ 53% │ │
98
+ │ │ def456 │ Mobile API │ 12/18 │ █████████████░░░░░ 67% │ │
99
+ │ │ ghi789 │ Dashboard │ 8/12 │ ███████████████░░░ 75% │ │
100
+ │ └─────────┴─────────────────────────┴─────────┴─────────────────────────┘ │
101
+ │ │
102
+ │ ── Current Link ──────────────────────────────────────────────────────── │
103
+ │ │
104
+ │ ╭─────────────────────────────────╮ │
105
+ │ │ ✓ abc123 (E-commerce App) │ │
106
+ │ ╰─────────────────────────────────╯ │
107
+ │ │
108
+ ├──────────────────────────────────────────────────────────────────────────────┤
109
+ │ │
110
+ │ 💡 {t.ui.labels.commands} │
111
+ │ • /pfCloudLink <id> Link to a project │
112
+ │ • /pfCloudUnlink Disconnect current │
113
+ │ • /pfCloudNew Create new project │
114
+ │ │
115
+ ╰──────────────────────────────────────────────────────────────────────────────╯
116
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
117
+ ```
118
+
119
+ **Example Output (English):**
120
+
121
+ ```
122
+ ╭──────────────────────────────────────────────────────────────────────────────╮
123
+ │ ☁️ Cloud Projects │
124
+ ├──────────────────────────────────────────────────────────────────────────────┤
125
+ │ │
126
+ │ ── Your Projects (3) ─────────────────────────────────────────────────── │
127
+ │ │
128
+ │ ┌─────────┬─────────────────────────┬─────────┬─────────────────────────┐ │
129
+ │ │ ID │ Name │ Tasks │ Progress │ │
130
+ │ ├─────────┼─────────────────────────┼─────────┼─────────────────────────┤ │
131
+ │ │ abc123 │ E-commerce App │ 24/45 │ ██████████░░░░░░░░ 53% │ │
132
+ │ │ def456 │ Mobile API │ 12/18 │ █████████████░░░░░ 67% │ │
133
+ │ │ ghi789 │ Dashboard │ 8/12 │ ███████████████░░░ 75% │ │
134
+ │ └─────────┴─────────────────────────┴─────────┴─────────────────────────┘ │
135
+ │ │
136
+ │ ── Current Link ──────────────────────────────────────────────────────── │
137
+ │ │
138
+ │ ╭─────────────────────────────────╮ │
139
+ │ │ ✓ abc123 (E-commerce App) │ │
140
+ │ ╰─────────────────────────────────╯ │
141
+ │ │
142
+ ├──────────────────────────────────────────────────────────────────────────────┤
143
+ │ │
144
+ │ 💡 Commands: │
145
+ │ • /pfCloudLink <id> Link to a project │
146
+ │ • /pfCloudUnlink Disconnect current │
147
+ │ • /pfCloudNew Create new project │
148
+ │ │
149
+ ╰──────────────────────────────────────────────────────────────────────────────╯
150
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
151
+ ```
152
+
153
+ **No Projects Card:**
154
+
155
+ ```
156
+ ╭──────────────────────────────────────────────────────────────────────────────╮
157
+ │ ☁️ Cloud Projects │
158
+ ├──────────────────────────────────────────────────────────────────────────────┤
159
+ │ │
160
+ │ ── Your Projects (0) ─────────────────────────────────────────────────── │
161
+ │ │
162
+ │ No cloud projects yet. │
163
+ │ │
164
+ │ Create your first project to start syncing your plans! │
165
+ │ │
166
+ ├──────────────────────────────────────────────────────────────────────────────┤
167
+ │ │
168
+ │ 💡 Next Steps: │
169
+ │ • /pfCloudNew Create a new project │
170
+ │ │
171
+ ╰──────────────────────────────────────────────────────────────────────────────╯
172
+ ```
173
+
174
+ **Example Output (Georgian):**
175
+
176
+ ```
177
+ ╭──────────────────────────────────────────────────────────────────────────────╮
178
+ │ ☁️ Cloud პროექტები │
179
+ ├──────────────────────────────────────────────────────────────────────────────┤
180
+ │ │
181
+ │ ── თქვენი პროექტები (3) ──────────────────────────────────────────────── │
182
+ │ │
183
+ │ ┌─────────┬─────────────────────────┬─────────┬─────────────────────────┐ │
184
+ │ │ ID │ სახელი │ ამოცანები│ პროგრესი │ │
185
+ │ ├─────────┼─────────────────────────┼─────────┼─────────────────────────┤ │
186
+ │ │ abc123 │ E-commerce App │ 24/45 │ ██████████░░░░░░░░ 53% │ │
187
+ │ │ def456 │ Mobile API │ 12/18 │ █████████████░░░░░ 67% │ │
188
+ │ │ ghi789 │ Dashboard │ 8/12 │ ███████████████░░░ 75% │ │
189
+ │ └─────────┴─────────────────────────┴─────────┴─────────────────────────┘ │
190
+ │ │
191
+ │ ── მიმდინარე კავშირი ─────────────────────────────────────────────────── │
192
+ │ │
193
+ │ ╭─────────────────────────────────╮ │
194
+ │ │ ✓ abc123 (E-commerce App) │ │
195
+ │ ╰─────────────────────────────────╯ │
196
+ │ │
197
+ ├──────────────────────────────────────────────────────────────────────────────┤
198
+ │ │
199
+ │ 💡 ბრძანებები: │
200
+ │ • /pfCloudLink <id> პროექტთან დაკავშირება │
201
+ │ • /pfCloudUnlink გათიშვა │
202
+ │ • /pfCloudNew ახალი პროექტის შექმნა │
203
+ │ │
204
+ ╰──────────────────────────────────────────────────────────────────────────────╯
205
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
206
+ ```
207
+
208
+ ## Error Handling
209
+
210
+ **Network Error Card:**
211
+
212
+ ```
213
+ ╭──────────────────────────────────────────────────────────────────────────────╮
214
+ │ ❌ ERROR │
215
+ ├──────────────────────────────────────────────────────────────────────────────┤
216
+ │ │
217
+ │ Network error. Could not connect to PlanFlow API. │
218
+ │ │
219
+ │ Please check your internet connection and try again. │
220
+ │ │
221
+ ╰──────────────────────────────────────────────────────────────────────────────╯
222
+ ```
@@ -0,0 +1,187 @@
1
+ ---
2
+ name: pfCloudNew
3
+ description: Create a new cloud project in PlanFlow
4
+ ---
5
+
6
+ # PlanFlow Cloud New
7
+
8
+ Create a new cloud project in PlanFlow with creation wizard.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ /pfCloudNew # Create from local plan (uses plan name)
14
+ /pfCloudNew "Project Name" # Create with custom name
15
+ ```
16
+
17
+ ## Step 0: Load Configuration
18
+
19
+ ```javascript
20
+ function getConfig() {
21
+ const localConfigPath = "./.plan-config.json"
22
+ let localConfig = {}
23
+ if (fileExists(localConfigPath)) {
24
+ try { localConfig = JSON.parse(readFile(localConfigPath)) } catch {}
25
+ }
26
+
27
+ const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
28
+ let globalConfig = {}
29
+ if (fileExists(globalConfigPath)) {
30
+ try { globalConfig = JSON.parse(readFile(globalConfigPath)) } catch {}
31
+ }
32
+
33
+ return { ...globalConfig, ...localConfig, _localConfig: localConfig, _globalConfig: globalConfig }
34
+ }
35
+
36
+ const config = getConfig()
37
+ const language = config.language || "en"
38
+ const cloudConfig = config.cloud || {}
39
+ const isAuthenticated = !!cloudConfig.apiToken
40
+ const apiUrl = cloudConfig.apiUrl || "https://api.planflow.tools"
41
+
42
+ const t = JSON.parse(readFile(`locales/${language}.json`))
43
+ ```
44
+
45
+ ## Step 1: Parse Arguments
46
+
47
+ ```javascript
48
+ const projectName = commandArgs.trim().replace(/^["']|["']$/g, '') || null
49
+ ```
50
+
51
+ ## Step 2: Validate Authentication
52
+
53
+ If not authenticated, display error card:
54
+
55
+ ```
56
+ ╭──────────────────────────────────────────────────────────────────────────────╮
57
+ │ ❌ ERROR │
58
+ ├──────────────────────────────────────────────────────────────────────────────┤
59
+ │ │
60
+ │ {t.commands.sync.notAuthenticated} │
61
+ │ │
62
+ │ You must be logged in to create projects. │
63
+ │ │
64
+ │ 💡 {t.ui.labels.nextSteps} │
65
+ │ • /pfLogin Sign in to PlanFlow │
66
+ │ │
67
+ ╰──────────────────────────────────────────────────────────────────────────────╯
68
+ ```
69
+
70
+ ## Step 3: Check for PROJECT_PLAN.md
71
+
72
+ **If no PROJECT_PLAN.md:**
73
+
74
+ ```
75
+ ╭──────────────────────────────────────────────────────────────────────────────╮
76
+ │ ❌ ERROR │
77
+ ├──────────────────────────────────────────────────────────────────────────────┤
78
+ │ │
79
+ │ {t.commands.cloud.noPlan} │
80
+ │ │
81
+ │ No PROJECT_PLAN.md found in current directory. │
82
+ │ │
83
+ │ Create a project plan first before syncing to cloud. │
84
+ │ │
85
+ │ 💡 {t.ui.labels.nextSteps} │
86
+ │ • /planNew Create a new project plan │
87
+ │ │
88
+ ╰──────────────────────────────────────────────────────────────────────────────╯
89
+ ```
90
+
91
+ ## Step 4: Show Creation Card
92
+
93
+ ```
94
+ ╭──────────────────────────────────────────────────────────────────────────────╮
95
+ │ ☁️ Create Cloud Project │
96
+ ├──────────────────────────────────────────────────────────────────────────────┤
97
+ │ │
98
+ │ ⠹ Creating project on cloud... │
99
+ │ │
100
+ │ Project name: {projectName} │
101
+ │ │
102
+ ╰──────────────────────────────────────────────────────────────────────────────╯
103
+ ```
104
+
105
+ **API Call:**
106
+ ```bash
107
+ curl -s -X POST \
108
+ -H "Content-Type: application/json" \
109
+ -H "Authorization: Bearer {TOKEN}" \
110
+ -d '{"name": "Project Name"}' \
111
+ "https://api.planflow.tools/projects"
112
+ ```
113
+
114
+ ## Step 5: Link and Push
115
+
116
+ 1. Link to new project (save projectId to config)
117
+ 2. Push current plan
118
+
119
+ **Progress Card:**
120
+
121
+ ```
122
+ ╭──────────────────────────────────────────────────────────────────────────────╮
123
+ │ ☁️ Create Cloud Project │
124
+ ├──────────────────────────────────────────────────────────────────────────────┤
125
+ │ │
126
+ │ ✓ Step 1: Project created │
127
+ │ ✓ Step 2: Project linked │
128
+ │ ⠹ Step 3: Uploading plan... │
129
+ │ │
130
+ │ Progress: ██████████████████████░░░░░░░░ 66% │
131
+ │ │
132
+ ╰──────────────────────────────────────────────────────────────────────────────╯
133
+ ```
134
+
135
+ ## Step 6: Show Success Card
136
+
137
+ ```
138
+ ╭──────────────────────────────────────────────────────────────────────────────╮
139
+ │ ✅ SUCCESS │
140
+ ├──────────────────────────────────────────────────────────────────────────────┤
141
+ │ │
142
+ │ {t.commands.cloud.created} │
143
+ │ │
144
+ │ ── Project Details ───────────────────────────────────────────────────── │
145
+ │ │
146
+ │ 📁 Project: My New Project │
147
+ │ 🆔 ID: xyz789 │
148
+ │ 📊 Tasks: 15 │
149
+ │ │
150
+ │ ── Sync Status ───────────────────────────────────────────────────────── │
151
+ │ │
152
+ │ ╭─────────────────╮ │
153
+ │ │ ✓ Synced │ │
154
+ │ ╰─────────────────╯ │
155
+ │ │
156
+ │ 🔗 View at: https://app.planflow.tools/projects/xyz789 │
157
+ │ │
158
+ ├──────────────────────────────────────────────────────────────────────────────┤
159
+ │ │
160
+ │ 💡 {t.ui.labels.nextSteps} │
161
+ │ • /pfTeamInvite Invite team members │
162
+ │ • /planNext Get task recommendation │
163
+ │ • /planSettingsAutoSync Enable auto-sync │
164
+ │ │
165
+ ╰──────────────────────────────────────────────────────────────────────────────╯
166
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
167
+ ```
168
+
169
+ ## Error Handling
170
+
171
+ **API Error Card:**
172
+
173
+ ```
174
+ ╭──────────────────────────────────────────────────────────────────────────────╮
175
+ │ ❌ ERROR │
176
+ ├──────────────────────────────────────────────────────────────────────────────┤
177
+ │ │
178
+ │ Failed to create project. │
179
+ │ │
180
+ │ The server returned an error. Please try again. │
181
+ │ │
182
+ │ 💡 {t.ui.labels.nextSteps} │
183
+ │ • Check your internet connection │
184
+ │ • Try again later │
185
+ │ │
186
+ ╰──────────────────────────────────────────────────────────────────────────────╯
187
+ ```