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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 PlanFlow
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,93 @@
1
+ # PlanFlow Plugin for Claude Code
2
+
3
+ Slash commands for AI-native project management directly in Claude Code.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g planflow-plugin
9
+ ```
10
+
11
+ The installation automatically sets up all slash commands in `~/.claude/commands/`.
12
+
13
+ ## Manual Setup
14
+
15
+ If automatic setup didn't work, run:
16
+
17
+ ```bash
18
+ planflow-plugin install
19
+ ```
20
+
21
+ ## Available Commands
22
+
23
+ ### Planning Commands
24
+ - `/planNew` - Create a new project plan
25
+ - `/planUpdate` - Update task status
26
+ - `/planNext` - Get next task recommendation
27
+ - `/planSpec` - Analyze specification documents
28
+
29
+ ### Cloud Sync Commands
30
+ - `/pfLogin` - Login to PlanFlow cloud
31
+ - `/pfLogout` - Logout from PlanFlow
32
+ - `/pfWhoami` - Check your account info
33
+ - `/pfSyncPush` - Push plan to cloud
34
+ - `/pfSyncPull` - Pull plan from cloud
35
+ - `/pfSyncStatus` - Check sync status
36
+ - `/pfCloudLink` - Link local directory to cloud project
37
+ - `/pfCloudUnlink` - Disconnect from cloud project
38
+ - `/pfCloudList` - List cloud projects
39
+ - `/pfCloudNew` - Create new cloud project
40
+
41
+ ### Team Commands
42
+ - `/team` - View and manage team members
43
+ - `/pfTeamList` - List team members
44
+ - `/pfTeamInvite` - Invite a team member
45
+ - `/pfTeamRemove` - Remove a team member
46
+ - `/pfTeamRole` - Change member role
47
+ - `/pfMyTasks` - View tasks assigned to you
48
+ - `/pfAssign` - Assign a task
49
+ - `/pfUnassign` - Remove assignment
50
+ - `/pfWorkload` - View team workload
51
+
52
+ ### Collaboration Commands
53
+ - `/pfComment` - Add comment to a task
54
+ - `/pfComments` - View task comments
55
+ - `/pfReact` - Add emoji reaction
56
+ - `/pfActivity` - View recent activity
57
+ - `/pfNotifications` - View notifications
58
+ - `/pfNotificationsClear` - Clear notifications
59
+ - `/pfNotificationSettings` - Manage notification preferences
60
+
61
+ ### Export Commands
62
+ - `/planExportJson` - Export as JSON
63
+ - `/planExportCsv` - Export as CSV
64
+ - `/planExportSummary` - Export as summary
65
+ - `/planExportGithub` - Export to GitHub Issues
66
+
67
+ ### Settings Commands
68
+ - `/planSettingsShow` - Show current settings
69
+ - `/planSettingsReset` - Reset to defaults
70
+ - `/planSettingsLanguage` - Change language
71
+ - `/planSettingsAutoSync` - Configure auto-sync
72
+
73
+ ## CLI Commands
74
+
75
+ ```bash
76
+ planflow-plugin install # Install/reinstall commands
77
+ planflow-plugin uninstall # Remove all commands
78
+ planflow-plugin list # List installed commands
79
+ planflow-plugin help # Show help
80
+ ```
81
+
82
+ ## Requirements
83
+
84
+ - Node.js 18+
85
+ - Claude Code CLI
86
+
87
+ ## Documentation
88
+
89
+ Visit [planflow.tools/docs](https://planflow.tools/docs) for full documentation.
90
+
91
+ ## License
92
+
93
+ MIT
package/bin/cli.js ADDED
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * PlanFlow Plugin CLI
5
+ *
6
+ * Usage:
7
+ * planflow-plugin install - Install/reinstall commands
8
+ * planflow-plugin uninstall - Remove all commands
9
+ * planflow-plugin list - List installed commands
10
+ * planflow-plugin help - Show help
11
+ */
12
+
13
+ import { existsSync, mkdirSync, readdirSync, symlinkSync, unlinkSync, lstatSync, readlinkSync } from 'node:fs'
14
+ import { join, dirname } from 'node:path'
15
+ import { homedir } from 'node:os'
16
+ import { fileURLToPath } from 'node:url'
17
+
18
+ const __filename = fileURLToPath(import.meta.url)
19
+ const __dirname = dirname(__filename)
20
+
21
+ const COMMANDS_SOURCE = join(__dirname, '..', 'commands')
22
+ const CLAUDE_COMMANDS_DIR = join(homedir(), '.claude', 'commands')
23
+
24
+ const VERSION = '0.1.0'
25
+
26
+ function install() {
27
+ console.log('\nšŸ”§ Installing PlanFlow commands...\n')
28
+
29
+ if (!existsSync(CLAUDE_COMMANDS_DIR)) {
30
+ mkdirSync(CLAUDE_COMMANDS_DIR, { recursive: true })
31
+ console.log(`šŸ“ Created ${CLAUDE_COMMANDS_DIR}`)
32
+ }
33
+
34
+ if (!existsSync(COMMANDS_SOURCE)) {
35
+ console.error('āŒ Commands directory not found.')
36
+ process.exit(1)
37
+ }
38
+
39
+ const commands = readdirSync(COMMANDS_SOURCE, { withFileTypes: true })
40
+ .filter(dirent => dirent.isDirectory())
41
+ .map(dirent => dirent.name)
42
+
43
+ let count = 0
44
+ for (const cmd of commands) {
45
+ const source = join(COMMANDS_SOURCE, cmd)
46
+ const target = join(CLAUDE_COMMANDS_DIR, cmd)
47
+
48
+ try {
49
+ if (existsSync(target)) {
50
+ const stats = lstatSync(target)
51
+ if (stats.isSymbolicLink()) {
52
+ unlinkSync(target)
53
+ }
54
+ }
55
+ symlinkSync(source, target)
56
+ count++
57
+ } catch (error) {
58
+ console.error(`āŒ Failed: ${cmd} - ${error.message}`)
59
+ }
60
+ }
61
+
62
+ console.log(`āœ… Installed ${count} commands to ${CLAUDE_COMMANDS_DIR}`)
63
+ console.log('\nšŸ’” Restart Claude Code to use the commands.')
64
+ }
65
+
66
+ function uninstall() {
67
+ console.log('\nšŸ—‘ļø Uninstalling PlanFlow commands...\n')
68
+
69
+ if (!existsSync(CLAUDE_COMMANDS_DIR)) {
70
+ console.log('Nothing to uninstall.')
71
+ return
72
+ }
73
+
74
+ const items = readdirSync(CLAUDE_COMMANDS_DIR, { withFileTypes: true })
75
+ let count = 0
76
+
77
+ for (const item of items) {
78
+ const name = item.name
79
+ // Only remove planflow-related commands
80
+ if (name.startsWith('plan') || name.startsWith('pf')) {
81
+ const target = join(CLAUDE_COMMANDS_DIR, name)
82
+ try {
83
+ if (lstatSync(target).isSymbolicLink()) {
84
+ unlinkSync(target)
85
+ count++
86
+ }
87
+ } catch (error) {
88
+ console.error(`āŒ Failed to remove ${name}: ${error.message}`)
89
+ }
90
+ }
91
+ }
92
+
93
+ console.log(`āœ… Removed ${count} commands.`)
94
+ }
95
+
96
+ function list() {
97
+ console.log('\nšŸ“‹ PlanFlow Commands:\n')
98
+
99
+ if (!existsSync(CLAUDE_COMMANDS_DIR)) {
100
+ console.log('No commands installed.')
101
+ return
102
+ }
103
+
104
+ const items = readdirSync(CLAUDE_COMMANDS_DIR, { withFileTypes: true })
105
+ const planflowCmds = items
106
+ .filter(item => item.name.startsWith('plan') || item.name.startsWith('pf'))
107
+
108
+ if (planflowCmds.length === 0) {
109
+ console.log('No PlanFlow commands installed.')
110
+ return
111
+ }
112
+
113
+ for (const item of planflowCmds) {
114
+ const target = join(CLAUDE_COMMANDS_DIR, item.name)
115
+ const isSymlink = lstatSync(target).isSymbolicLink()
116
+ const status = isSymlink ? 'āœ“' : '?'
117
+ console.log(` ${status} /${item.name}`)
118
+ }
119
+
120
+ console.log(`\nTotal: ${planflowCmds.length} commands`)
121
+ }
122
+
123
+ function help() {
124
+ console.log(`
125
+ PlanFlow Plugin v${VERSION}
126
+
127
+ Usage:
128
+ planflow-plugin <command>
129
+
130
+ Commands:
131
+ install Install or reinstall all commands
132
+ uninstall Remove all PlanFlow commands
133
+ list List installed commands
134
+ help Show this help message
135
+
136
+ Examples:
137
+ planflow-plugin install
138
+ planflow-plugin list
139
+
140
+ Documentation: https://planflow.tools/docs/plugin-commands
141
+ `)
142
+ }
143
+
144
+ // Main
145
+ const args = process.argv.slice(2)
146
+ const command = args[0]
147
+
148
+ switch (command) {
149
+ case 'install':
150
+ install()
151
+ break
152
+ case 'uninstall':
153
+ uninstall()
154
+ break
155
+ case 'list':
156
+ list()
157
+ break
158
+ case 'help':
159
+ case '--help':
160
+ case '-h':
161
+ help()
162
+ break
163
+ default:
164
+ if (command) {
165
+ console.error(`Unknown command: ${command}`)
166
+ }
167
+ help()
168
+ break
169
+ }
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * PlanFlow Plugin - Post-install script
5
+ *
6
+ * Creates symlinks in ~/.claude/commands/ for all plugin commands.
7
+ */
8
+
9
+ import { existsSync, mkdirSync, readdirSync, symlinkSync, unlinkSync, lstatSync } from 'node:fs'
10
+ import { join, dirname } from 'node:path'
11
+ import { homedir } from 'node:os'
12
+ import { fileURLToPath } from 'node:url'
13
+
14
+ const __filename = fileURLToPath(import.meta.url)
15
+ const __dirname = dirname(__filename)
16
+
17
+ const COMMANDS_SOURCE = join(__dirname, '..', 'commands')
18
+ const CLAUDE_COMMANDS_DIR = join(homedir(), '.claude', 'commands')
19
+
20
+ function setup() {
21
+ console.log('\nšŸ”§ PlanFlow Plugin - Setting up commands...\n')
22
+
23
+ // Create ~/.claude/commands if it doesn't exist
24
+ if (!existsSync(CLAUDE_COMMANDS_DIR)) {
25
+ mkdirSync(CLAUDE_COMMANDS_DIR, { recursive: true })
26
+ console.log(`šŸ“ Created ${CLAUDE_COMMANDS_DIR}`)
27
+ }
28
+
29
+ // Check if commands source exists
30
+ if (!existsSync(COMMANDS_SOURCE)) {
31
+ console.log('āš ļø Commands directory not found. Skipping symlink creation.')
32
+ console.log(' You may need to run: planflow-plugin install')
33
+ return
34
+ }
35
+
36
+ // Get all command directories
37
+ const commands = readdirSync(COMMANDS_SOURCE, { withFileTypes: true })
38
+ .filter(dirent => dirent.isDirectory())
39
+ .map(dirent => dirent.name)
40
+
41
+ let created = 0
42
+ let skipped = 0
43
+ let updated = 0
44
+
45
+ for (const cmd of commands) {
46
+ const source = join(COMMANDS_SOURCE, cmd)
47
+ const target = join(CLAUDE_COMMANDS_DIR, cmd)
48
+
49
+ try {
50
+ // Check if target already exists
51
+ if (existsSync(target)) {
52
+ const stats = lstatSync(target)
53
+ if (stats.isSymbolicLink()) {
54
+ // Remove old symlink and create new one
55
+ unlinkSync(target)
56
+ symlinkSync(source, target)
57
+ updated++
58
+ } else {
59
+ // Not a symlink, skip to avoid overwriting user files
60
+ skipped++
61
+ }
62
+ } else {
63
+ // Create new symlink
64
+ symlinkSync(source, target)
65
+ created++
66
+ }
67
+ } catch (error) {
68
+ console.error(`āŒ Failed to create symlink for ${cmd}: ${error.message}`)
69
+ }
70
+ }
71
+
72
+ console.log(`āœ… Setup complete!`)
73
+ console.log(` • ${created} commands installed`)
74
+ if (updated > 0) console.log(` • ${updated} commands updated`)
75
+ if (skipped > 0) console.log(` • ${skipped} commands skipped (already exist)`)
76
+ console.log(`\nšŸ“ Commands installed to: ${CLAUDE_COMMANDS_DIR}`)
77
+ console.log('\nšŸš€ Available commands:')
78
+ console.log(' /planNew - Create a new project plan')
79
+ console.log(' /planUpdate - Update task status')
80
+ console.log(' /planNext - Get next task recommendation')
81
+ console.log(' /pfLogin - Login to PlanFlow cloud')
82
+ console.log(' /pfSyncPush - Push plan to cloud')
83
+ console.log('\nšŸ’” Restart Claude Code to use the new commands.')
84
+ console.log('')
85
+ }
86
+
87
+ setup()