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,249 @@
1
+ ---
2
+ name: pfLogin
3
+ description: PlanFlow Login
4
+ ---
5
+
6
+ # PlanFlow Login
7
+
8
+ Authenticate with PlanFlow project management service with login card UI and spinner.
9
+
10
+ **IMPORTANT:** This is ONLY for PlanFlow (planflow.tools) - NOT for Claude or Claude Code authentication.
11
+
12
+ ## Usage
13
+
14
+ ```bash
15
+ /pfLogin # Interactive - prompts for token
16
+ /pfLogin pf_abc123... # Direct token input
17
+ ```
18
+
19
+ ## Step 0: Load Configuration
20
+
21
+ ```javascript
22
+ function getConfig() {
23
+ const localConfigPath = "./.plan-config.json"
24
+ if (fileExists(localConfigPath)) {
25
+ try {
26
+ return JSON.parse(readFile(localConfigPath))
27
+ } catch (error) {}
28
+ }
29
+ const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
30
+ if (fileExists(globalConfigPath)) {
31
+ try {
32
+ return JSON.parse(readFile(globalConfigPath))
33
+ } catch (error) {}
34
+ }
35
+ return { "language": "en" }
36
+ }
37
+
38
+ const config = getConfig()
39
+ const language = config.language || "en"
40
+ const cloudConfig = config.cloud || {}
41
+ const isAuthenticated = !!cloudConfig.apiToken
42
+ const apiUrl = cloudConfig.apiUrl || "https://api.planflow.tools"
43
+
44
+ const t = JSON.parse(readFile(`locales/${language}.json`))
45
+ ```
46
+
47
+ ## Step 1: Check Current Auth Status
48
+
49
+ If already authenticated, display warning card:
50
+
51
+ ```
52
+ ╭──────────────────────────────────────────────────────────────────────────────╮
53
+ │ ⚠️ WARNING │
54
+ ├──────────────────────────────────────────────────────────────────────────────┤
55
+ │ │
56
+ │ Already logged in as {email} │
57
+ │ │
58
+ │ To switch accounts, run /pfLogout first. │
59
+ │ │
60
+ ├──────────────────────────────────────────────────────────────────────────────┤
61
+ │ │
62
+ │ 💡 {t.ui.labels.options} │
63
+ │ • /pfLogout Sign out and switch accounts │
64
+ │ • /pfWhoami View current user info │
65
+ │ │
66
+ ╰──────────────────────────────────────────────────────────────────────────────╯
67
+ ```
68
+
69
+ ## Step 2: Get Token
70
+
71
+ If token provided as argument, use it. Otherwise, display prompt card:
72
+
73
+ ```
74
+ ╭──────────────────────────────────────────────────────────────────────────────╮
75
+ │ 🔐 PlanFlow Login │
76
+ ├──────────────────────────────────────────────────────────────────────────────┤
77
+ │ │
78
+ │ {t.commands.login.enterToken} │
79
+ │ │
80
+ │ ── Get Your Token ────────────────────────────────────────────────────── │
81
+ │ │
82
+ │ 1. Visit: https://planflow.tools/settings/api-tokens │
83
+ │ 2. Click "Generate New Token" │
84
+ │ 3. Copy the token (starts with pf_) │
85
+ │ 4. Paste below or run: /pfLogin pf_your_token │
86
+ │ │
87
+ ╰──────────────────────────────────────────────────────────────────────────────╯
88
+ ```
89
+
90
+ ## Step 3: Validate Token (with Spinner)
91
+
92
+ **Loading Card (during validation):**
93
+
94
+ ```
95
+ ╭──────────────────────────────────────────────────────────────────────────────╮
96
+ │ 🔐 PlanFlow Login │
97
+ ├──────────────────────────────────────────────────────────────────────────────┤
98
+ │ │
99
+ │ ⠹ {t.ui.labels.validating} │
100
+ │ │
101
+ │ Connecting to api.planflow.tools... │
102
+ │ │
103
+ ╰──────────────────────────────────────────────────────────────────────────────╯
104
+ ```
105
+
106
+ **API Call:**
107
+ ```bash
108
+ curl -s -X POST \
109
+ -H "Content-Type: application/json" \
110
+ -d '{"token": "{TOKEN}"}' \
111
+ "https://api.planflow.tools/api-tokens/verify"
112
+ ```
113
+
114
+ **IMPORTANT:** The token must be passed in the **request body** as JSON, NOT in the Authorization header!
115
+
116
+ **Success Response (HTTP 200):**
117
+ ```json
118
+ {
119
+ "success": true,
120
+ "data": {
121
+ "user": {
122
+ "id": "uuid",
123
+ "email": "user@example.com",
124
+ "name": "John Doe"
125
+ },
126
+ "tokenName": "My CLI Token"
127
+ }
128
+ }
129
+ ```
130
+
131
+ ## Step 4: Save Credentials
132
+
133
+ Save to global config (`~/.config/claude/plan-plugin-config.json`):
134
+
135
+ **IMPORTANT:**
136
+ - Create the directory if it doesn't exist: `mkdir -p ~/.config/claude`
137
+ - Use the Write tool to save the config file
138
+
139
+ ```json
140
+ {
141
+ "language": "en",
142
+ "cloud": {
143
+ "apiUrl": "https://api.planflow.tools",
144
+ "apiToken": "pf_xxx...",
145
+ "savedAt": "2026-02-02T12:00:00Z",
146
+ "verified": true,
147
+ "userId": "uuid-from-response",
148
+ "userEmail": "email-from-response",
149
+ "userName": "name-from-response"
150
+ }
151
+ }
152
+ ```
153
+
154
+ ## Step 5: Show Success Card
155
+
156
+ ```
157
+ ╭──────────────────────────────────────────────────────────────────────────────╮
158
+ │ ✅ SUCCESS │
159
+ ├──────────────────────────────────────────────────────────────────────────────┤
160
+ │ │
161
+ │ {t.commands.login.success} │
162
+ │ │
163
+ │ ── Account Info ──────────────────────────────────────────────────────── │
164
+ │ │
165
+ │ 👤 Name: {response.data.user.name} │
166
+ │ 📧 Email: {response.data.user.email} │
167
+ │ 🔑 Token: {response.data.tokenName} │
168
+ │ │
169
+ │ ╭────────────────╮ │
170
+ │ │ ✓ Connected │ │
171
+ │ ╰────────────────╯ │
172
+ │ │
173
+ ├──────────────────────────────────────────────────────────────────────────────┤
174
+ │ │
175
+ │ 💡 {t.commands.login.nowYouCan} │
176
+ │ • /pfCloudList View your projects │
177
+ │ • /pfCloudLink Link to a project │
178
+ │ • /pfSyncPush Push local to cloud │
179
+ │ • /pfSyncPull Pull from cloud │
180
+ │ │
181
+ ╰──────────────────────────────────────────────────────────────────────────────╯
182
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
183
+ ```
184
+
185
+ **Example Output (English):**
186
+
187
+ ```
188
+ ╭──────────────────────────────────────────────────────────────────────────────╮
189
+ │ ✅ SUCCESS │
190
+ ├──────────────────────────────────────────────────────────────────────────────┤
191
+ │ │
192
+ │ Successfully logged in! │
193
+ │ │
194
+ │ ── Account Info ──────────────────────────────────────────────────────── │
195
+ │ │
196
+ │ 👤 Name: John Doe │
197
+ │ 📧 Email: john@example.com │
198
+ │ 🔑 Token: My CLI Token │
199
+ │ │
200
+ │ ╭────────────────╮ │
201
+ │ │ ✓ Connected │ │
202
+ │ ╰────────────────╯ │
203
+ │ │
204
+ ├──────────────────────────────────────────────────────────────────────────────┤
205
+ │ │
206
+ │ 💡 Now you can: │
207
+ │ • /pfCloudList View your projects │
208
+ │ • /pfCloudLink Link to a project │
209
+ │ • /pfSyncPush Push local to cloud │
210
+ │ • /pfSyncPull Pull from cloud │
211
+ │ │
212
+ ╰──────────────────────────────────────────────────────────────────────────────╯
213
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
214
+ ```
215
+
216
+ ## Error Handling
217
+
218
+ **Invalid Token Card:**
219
+
220
+ ```
221
+ ╭──────────────────────────────────────────────────────────────────────────────╮
222
+ │ ❌ ERROR │
223
+ ├──────────────────────────────────────────────────────────────────────────────┤
224
+ │ │
225
+ │ {t.commands.login.invalidToken} │
226
+ │ │
227
+ │ The token you provided is invalid or expired. │
228
+ │ │
229
+ │ 💡 {t.ui.labels.nextSteps} │
230
+ │ 1. Visit: https://planflow.tools/settings/api-tokens │
231
+ │ 2. Generate a new token │
232
+ │ 3. Run: /pfLogin <new_token> │
233
+ │ │
234
+ ╰──────────────────────────────────────────────────────────────────────────────╯
235
+ ```
236
+
237
+ **Network Error Card:**
238
+
239
+ ```
240
+ ╭──────────────────────────────────────────────────────────────────────────────╮
241
+ │ ❌ ERROR │
242
+ ├──────────────────────────────────────────────────────────────────────────────┤
243
+ │ │
244
+ │ Network error. Could not connect to PlanFlow API. │
245
+ │ │
246
+ │ Please check your internet connection and try again. │
247
+ │ │
248
+ ╰──────────────────────────────────────────────────────────────────────────────╯
249
+ ```
@@ -0,0 +1,155 @@
1
+ ---
2
+ name: pfLogout
3
+ description: PlanFlow Logout
4
+ ---
5
+
6
+ # PlanFlow Logout
7
+
8
+ Clear PlanFlow credentials and disconnect from cloud with confirmation card.
9
+
10
+ **IMPORTANT:** This is ONLY for PlanFlow (planflow.tools) - NOT for Claude or Claude Code logout.
11
+
12
+ ## Usage
13
+
14
+ ```bash
15
+ /pfLogout # Clear credentials
16
+ ```
17
+
18
+ ## Step 0: Load Configuration
19
+
20
+ ```javascript
21
+ function getConfig() {
22
+ const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
23
+ if (fileExists(globalConfigPath)) {
24
+ try {
25
+ return JSON.parse(readFile(globalConfigPath))
26
+ } catch (error) {}
27
+ }
28
+ return { "language": "en" }
29
+ }
30
+
31
+ const config = getConfig()
32
+ const language = config.language || "en"
33
+ const cloudConfig = config.cloud || {}
34
+ const isAuthenticated = !!cloudConfig.apiToken
35
+
36
+ const t = JSON.parse(readFile(`locales/${language}.json`))
37
+ ```
38
+
39
+ ## Step 1: Check Auth Status
40
+
41
+ If not authenticated, display info card:
42
+
43
+ ```
44
+ ╭──────────────────────────────────────────────────────────────────────────────╮
45
+ │ ℹ️ INFO │
46
+ ├──────────────────────────────────────────────────────────────────────────────┤
47
+ │ │
48
+ │ {t.commands.logout.notLoggedIn} │
49
+ │ │
50
+ │ 💡 {t.ui.labels.nextSteps} │
51
+ │ • /pfLogin Sign in to PlanFlow │
52
+ │ │
53
+ ╰──────────────────────────────────────────────────────────────────────────────╯
54
+ ```
55
+
56
+ **Example (English):**
57
+ ```
58
+ ╭──────────────────────────────────────────────────────────────────────────────╮
59
+ │ ℹ️ INFO │
60
+ ├──────────────────────────────────────────────────────────────────────────────┤
61
+ │ │
62
+ │ You are not currently logged in. │
63
+ │ │
64
+ │ 💡 Next Steps: │
65
+ │ • /pfLogin Sign in to PlanFlow │
66
+ │ │
67
+ ╰──────────────────────────────────────────────────────────────────────────────╯
68
+ ```
69
+
70
+ ## Step 2: Clear Credentials
71
+
72
+ Remove from global config (`~/.config/claude/plan-plugin-config.json`):
73
+ - `cloud.apiToken`
74
+ - `cloud.userId`
75
+ - `cloud.userEmail`
76
+
77
+ Keep other settings like `language` and `cloud.apiUrl`.
78
+
79
+ ## Step 3: Show Success Card
80
+
81
+ ```
82
+ ╭──────────────────────────────────────────────────────────────────────────────╮
83
+ │ ✅ SUCCESS │
84
+ ├──────────────────────────────────────────────────────────────────────────────┤
85
+ │ │
86
+ │ {t.commands.logout.success} │
87
+ │ │
88
+ │ {t.commands.logout.cleared} │
89
+ │ │
90
+ │ ── What's Changed ────────────────────────────────────────────────────── │
91
+ │ │
92
+ │ • API token removed │
93
+ │ • Cloud sync disabled │
94
+ │ • Local settings preserved │
95
+ │ │
96
+ ├──────────────────────────────────────────────────────────────────────────────┤
97
+ │ │
98
+ │ 💡 {t.ui.labels.nextSteps} │
99
+ │ • /pfLogin Sign in again │
100
+ │ │
101
+ ╰──────────────────────────────────────────────────────────────────────────────╯
102
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
103
+ ```
104
+
105
+ **Example Output (English):**
106
+
107
+ ```
108
+ ╭──────────────────────────────────────────────────────────────────────────────╮
109
+ │ ✅ SUCCESS │
110
+ ├──────────────────────────────────────────────────────────────────────────────┤
111
+ │ │
112
+ │ Successfully logged out from PlanFlow. │
113
+ │ │
114
+ │ Credentials cleared from global config. │
115
+ │ │
116
+ │ ── What's Changed ────────────────────────────────────────────────────── │
117
+ │ │
118
+ │ • API token removed │
119
+ │ • Cloud sync disabled │
120
+ │ • Local settings preserved │
121
+ │ │
122
+ ├──────────────────────────────────────────────────────────────────────────────┤
123
+ │ │
124
+ │ 💡 Next Steps: │
125
+ │ • /pfLogin Sign in again │
126
+ │ │
127
+ ╰──────────────────────────────────────────────────────────────────────────────╯
128
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
129
+ ```
130
+
131
+ **Example Output (Georgian):**
132
+
133
+ ```
134
+ ╭──────────────────────────────────────────────────────────────────────────────╮
135
+ │ ✅ წარმატება │
136
+ ├──────────────────────────────────────────────────────────────────────────────┤
137
+ │ │
138
+ │ წარმატებით გამოხვედით PlanFlow-დან. │
139
+ │ │
140
+ │ კრედენციალები წაიშალა გლობალური კონფიგურაციიდან. │
141
+ │ │
142
+ │ ── რა შეიცვალა ───────────────────────────────────────────────────────── │
143
+ │ │
144
+ │ • API ტოკენი წაშლილია │
145
+ │ • Cloud სინქრონიზაცია გამორთულია │
146
+ │ • ლოკალური პარამეტრები შენარჩუნებულია │
147
+ │ │
148
+ ├──────────────────────────────────────────────────────────────────────────────┤
149
+ │ │
150
+ │ 💡 შემდეგი ნაბიჯები: │
151
+ │ • /pfLogin ხელახლა შესვლა │
152
+ │ │
153
+ ╰──────────────────────────────────────────────────────────────────────────────╯
154
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
155
+ ```
@@ -0,0 +1,198 @@
1
+ ---
2
+ name: pfMyTasks
3
+ description: View tasks assigned to you in the current PlanFlow project
4
+ ---
5
+
6
+ # PlanFlow My Tasks
7
+
8
+ View all tasks assigned to you in the linked cloud project with task list cards.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ /pfMyTasks # Show all your assigned tasks
14
+ /pfMyTasks --status todo # Filter by status (todo, in_progress, done, blocked)
15
+ /pfMyTasks --all # Include completed tasks (hidden by default)
16
+ ```
17
+
18
+ ## Step 0: Load Configuration
19
+
20
+ ```javascript
21
+ // ... standard config loading ...
22
+ ```
23
+
24
+ ## Step 0.5: Show Notification Badge (v1.6.0+)
25
+
26
+ **Purpose:** Display unread notification count to keep users informed of team activity.
27
+
28
+ **When to Execute:** Only if authenticated AND linked to a project.
29
+
30
+ ```bash
31
+ # Only proceed if authenticated and linked
32
+ if [ -n "$TOKEN" ] && [ -n "$PROJECT_ID" ]; then
33
+ RESPONSE=$(curl -s --connect-timeout 3 --max-time 5 \
34
+ -X GET \
35
+ -H "Accept: application/json" \
36
+ -H "Authorization: Bearer $TOKEN" \
37
+ "${API_URL}/projects/${PROJECT_ID}/notifications?limit=1&unread=true" 2>/dev/null)
38
+
39
+ if [ $? -eq 0 ]; then
40
+ UNREAD_COUNT=$(echo "$RESPONSE" | grep -o '"unreadCount":[0-9]*' | grep -o '[0-9]*')
41
+ if [ -n "$UNREAD_COUNT" ] && [ "$UNREAD_COUNT" -gt 0 ]; then
42
+ echo "🔔 $UNREAD_COUNT unread notification(s) — /pfNotifications to view"
43
+ echo ""
44
+ fi
45
+ fi
46
+ fi
47
+ ```
48
+
49
+ See: `skills/notification-badge/SKILL.md` for full implementation details.
50
+
51
+ ## Step 1: Display My Tasks Card
52
+
53
+ ```
54
+ ╭──────────────────────────────────────────────────────────────────────────────╮
55
+ │ 📋 My Assigned Tasks │
56
+ ├──────────────────────────────────────────────────────────────────────────────┤
57
+ │ │
58
+ │ 📁 Project: Planflow Plugin │
59
+ │ │
60
+ │ ── In Progress (1) ──────────────────────────────────────────────────── │
61
+ │ │
62
+ │ ┌────────────────────────────────────────────────────────────────────────┐ │
63
+ │ │ 🔄 T2.1 - Implement login API │ │
64
+ │ │ 🔴 High complexity │ │
65
+ │ └────────────────────────────────────────────────────────────────────────┘ │
66
+ │ │
67
+ │ ── To Do (2) ────────────────────────────────────────────────────────── │
68
+ │ │
69
+ │ ┌────────────────────────────────────────────────────────────────────────┐ │
70
+ │ │ ○ T2.3 - Add validation │ │
71
+ │ │ 🟡 Medium complexity │ │
72
+ │ └────────────────────────────────────────────────────────────────────────┘ │
73
+ │ │
74
+ │ ┌────────────────────────────────────────────────────────────────────────┐ │
75
+ │ │ ○ T3.1 - Create dashboard │ │
76
+ │ │ 🟢 Low complexity │ │
77
+ │ └────────────────────────────────────────────────────────────────────────┘ │
78
+ │ │
79
+ ├──────────────────────────────────────────────────────────────────────────────┤
80
+ │ │
81
+ │ 💡 Quick actions: │
82
+ │ • /planUpdate T2.1 done Mark current task as done │
83
+ │ • /pfMyTasks --all Include completed tasks │
84
+ │ │
85
+ ╰──────────────────────────────────────────────────────────────────────────────╯
86
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
87
+ ```
88
+
89
+ **With Blocked Tasks:**
90
+
91
+ ```
92
+ ╭──────────────────────────────────────────────────────────────────────────────╮
93
+ │ 📋 My Assigned Tasks │
94
+ ├──────────────────────────────────────────────────────────────────────────────┤
95
+ │ │
96
+ │ 📁 Project: Planflow Plugin │
97
+ │ │
98
+ │ ── In Progress (1) ──────────────────────────────────────────────────── │
99
+ │ │
100
+ │ ┌────────────────────────────────────────────────────────────────────────┐ │
101
+ │ │ 🔄 T2.1 - Implement login API │ │
102
+ │ │ 🔴 High complexity │ │
103
+ │ └────────────────────────────────────────────────────────────────────────┘ │
104
+ │ │
105
+ │ ── Blocked (1) ──────────────────────────────────────────────────────── │
106
+ │ │
107
+ │ ┌────────────────────────────────────────────────────────────────────────┐ │
108
+ │ │ 🚫 T2.5 - Setup database │ │
109
+ │ │ 🟡 Medium complexity │ │
110
+ │ └────────────────────────────────────────────────────────────────────────┘ │
111
+ │ │
112
+ │ ── To Do (1) ────────────────────────────────────────────────────────── │
113
+ │ │
114
+ │ ┌────────────────────────────────────────────────────────────────────────┐ │
115
+ │ │ ○ T2.3 - Add validation │ │
116
+ │ │ 🟡 Medium complexity │ │
117
+ │ └────────────────────────────────────────────────────────────────────────┘ │
118
+ │ │
119
+ ├──────────────────────────────────────────────────────────────────────────────┤
120
+ │ │
121
+ │ 💡 Quick actions: │
122
+ │ • /planUpdate T2.1 done Mark current task as done │
123
+ │ • /planUpdate T2.5 unblock Unblock task │
124
+ │ │
125
+ ╰──────────────────────────────────────────────────────────────────────────────╯
126
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
127
+ ```
128
+
129
+ ## Step 2: No Tasks Card
130
+
131
+ ```
132
+ ╭──────────────────────────────────────────────────────────────────────────────╮
133
+ │ 📋 My Assigned Tasks │
134
+ ├──────────────────────────────────────────────────────────────────────────────┤
135
+ │ │
136
+ │ 📁 Project: Planflow Plugin │
137
+ │ │
138
+ │ ╭─────────────────────────────────────────────────────────────────────╮ │
139
+ │ │ │ │
140
+ │ │ 📭 You don't have any assigned tasks. │ │
141
+ │ │ │ │
142
+ │ ╰─────────────────────────────────────────────────────────────────────╯ │
143
+ │ │
144
+ ├──────────────────────────────────────────────────────────────────────────────┤
145
+ │ │
146
+ │ 💡 Get started: │
147
+ │ • /planNext Find tasks to work on │
148
+ │ • /pfAssign T1.1 me Assign yourself a task │
149
+ │ │
150
+ ╰──────────────────────────────────────────────────────────────────────────────╯
151
+ ```
152
+
153
+ ## Error Handling
154
+
155
+ **Not Authenticated Card:**
156
+
157
+ ```
158
+ ╭──────────────────────────────────────────────────────────────────────────────╮
159
+ │ ❌ ERROR │
160
+ ├──────────────────────────────────────────────────────────────────────────────┤
161
+ │ │
162
+ │ {t.commands.sync.notAuthenticated} │
163
+ │ │
164
+ │ 💡 {t.ui.labels.nextSteps} │
165
+ │ • /pfLogin Sign in to PlanFlow │
166
+ │ │
167
+ ╰──────────────────────────────────────────────────────────────────────────────╯
168
+ ```
169
+
170
+ **Not Linked Card:**
171
+
172
+ ```
173
+ ╭──────────────────────────────────────────────────────────────────────────────╮
174
+ │ ❌ ERROR │
175
+ ├──────────────────────────────────────────────────────────────────────────────┤
176
+ │ │
177
+ │ {t.commands.sync.notLinked} │
178
+ │ │
179
+ │ 💡 {t.ui.labels.nextSteps} │
180
+ │ • /pfCloudLink Link to a cloud project │
181
+ │ │
182
+ ╰──────────────────────────────────────────────────────────────────────────────╯
183
+ ```
184
+
185
+ **Invalid Status Filter Card:**
186
+
187
+ ```
188
+ ╭──────────────────────────────────────────────────────────────────────────────╮
189
+ │ ❌ ERROR │
190
+ ├──────────────────────────────────────────────────────────────────────────────┤
191
+ │ │
192
+ │ Invalid status filter. │
193
+ │ │
194
+ │ Valid statuses: todo, in_progress, done, blocked │
195
+ │ │
196
+ ╰──────────────────────────────────────────────────────────────────────────────╯
197
+ ```
198
+