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.
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/bin/cli.js +169 -0
- package/bin/postinstall.js +87 -0
- package/commands/pfActivity/SKILL.md +725 -0
- package/commands/pfAssign/SKILL.md +623 -0
- package/commands/pfCloudLink/SKILL.md +192 -0
- package/commands/pfCloudList/SKILL.md +222 -0
- package/commands/pfCloudNew/SKILL.md +187 -0
- package/commands/pfCloudUnlink/SKILL.md +152 -0
- package/commands/pfComment/SKILL.md +227 -0
- package/commands/pfComments/SKILL.md +159 -0
- package/commands/pfConnectionStatus/SKILL.md +433 -0
- package/commands/pfDiscord/SKILL.md +740 -0
- package/commands/pfGithubBranch/SKILL.md +672 -0
- package/commands/pfGithubIssue/SKILL.md +963 -0
- package/commands/pfGithubLink/SKILL.md +859 -0
- package/commands/pfGithubPr/SKILL.md +1335 -0
- package/commands/pfGithubUnlink/SKILL.md +401 -0
- package/commands/pfLive/SKILL.md +185 -0
- package/commands/pfLogin/SKILL.md +249 -0
- package/commands/pfLogout/SKILL.md +155 -0
- package/commands/pfMyTasks/SKILL.md +198 -0
- package/commands/pfNotificationSettings/SKILL.md +619 -0
- package/commands/pfNotifications/SKILL.md +420 -0
- package/commands/pfNotificationsClear/SKILL.md +421 -0
- package/commands/pfReact/SKILL.md +232 -0
- package/commands/pfSlack/SKILL.md +659 -0
- package/commands/pfSyncPull/SKILL.md +210 -0
- package/commands/pfSyncPush/SKILL.md +299 -0
- package/commands/pfSyncStatus/SKILL.md +212 -0
- package/commands/pfTeamInvite/SKILL.md +161 -0
- package/commands/pfTeamList/SKILL.md +253 -0
- package/commands/pfTeamRemove/SKILL.md +115 -0
- package/commands/pfTeamRole/SKILL.md +160 -0
- package/commands/pfTestWebhooks/SKILL.md +722 -0
- package/commands/pfUnassign/SKILL.md +134 -0
- package/commands/pfWhoami/SKILL.md +258 -0
- package/commands/pfWorkload/SKILL.md +219 -0
- package/commands/planExportCsv/SKILL.md +106 -0
- package/commands/planExportGithub/SKILL.md +222 -0
- package/commands/planExportJson/SKILL.md +159 -0
- package/commands/planExportSummary/SKILL.md +158 -0
- package/commands/planNew/SKILL.md +641 -0
- package/commands/planNext/SKILL.md +1200 -0
- package/commands/planSettingsAutoSync/SKILL.md +199 -0
- package/commands/planSettingsLanguage/SKILL.md +201 -0
- package/commands/planSettingsReset/SKILL.md +237 -0
- package/commands/planSettingsShow/SKILL.md +482 -0
- package/commands/planSpec/SKILL.md +929 -0
- package/commands/planUpdate/SKILL.md +2518 -0
- package/commands/team/SKILL.md +740 -0
- package/locales/en.json +1499 -0
- package/locales/ka.json +1499 -0
- package/package.json +48 -0
- package/templates/PROJECT_PLAN.template.md +157 -0
- package/templates/backend-api.template.md +562 -0
- package/templates/frontend-spa.template.md +610 -0
- package/templates/fullstack.template.md +397 -0
- package/templates/ka/backend-api.template.md +562 -0
- package/templates/ka/frontend-spa.template.md +610 -0
- package/templates/ka/fullstack.template.md +397 -0
- package/templates/sections/architecture.md +21 -0
- package/templates/sections/overview.md +15 -0
- package/templates/sections/tasks.md +22 -0
- 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()
|