@konductro/claude-plugin 2.0.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/.claude-plugin/plugin.json +29 -0
- package/README.md +107 -0
- package/bin/postinstall.js +13 -0
- package/bin/setup.js +148 -0
- package/package.json +28 -0
- package/servers/konductro-api.js +894 -0
- package/skills/decompose/SKILL.md +97 -0
- package/skills/find-prototype/SKILL.md +57 -0
- package/skills/profile-repository/SKILL.md +52 -0
- package/skills/prototype/SKILL.md +92 -0
- package/skills/start-ticket/SKILL.md +56 -0
- package/skills/technical-analysis/SKILL.md +83 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "konductro",
|
|
3
|
+
"description": "Konductro platform integration — perform technical analysis, submit findings, and manage delivery tasks",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"userConfig": {
|
|
6
|
+
"konductro_url": {
|
|
7
|
+
"title": "Konductro URL",
|
|
8
|
+
"description": "Konductro platform URL (e.g., https://platform.konductro.com or http://localhost:3000)",
|
|
9
|
+
"type": "string",
|
|
10
|
+
"sensitive": false
|
|
11
|
+
},
|
|
12
|
+
"cli_token": {
|
|
13
|
+
"title": "CLI Token",
|
|
14
|
+
"description": "Personal CLI token from Konductro Settings → CLI Access",
|
|
15
|
+
"type": "string",
|
|
16
|
+
"sensitive": true
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"konductro": {
|
|
21
|
+
"command": "node",
|
|
22
|
+
"args": ["${CLAUDE_PLUGIN_ROOT}/servers/konductro-api.js"],
|
|
23
|
+
"env": {
|
|
24
|
+
"KONDUCTRO_URL": "${user_config.konductro_url}",
|
|
25
|
+
"KONDUCTRO_CLI_TOKEN": "${user_config.cli_token}"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# @konductro/claude-plugin
|
|
2
|
+
|
|
3
|
+
Claude Code plugin for the Konductro platform. Enables technical analysis, story decomposition, ticket management, prototype delivery, and ticket-to-PR workflows directly from Claude Code.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- **Node.js** 18+
|
|
8
|
+
- **Konductro CLI token** (generated in Konductro → Settings → CLI Access)
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
### 1. Install the plugin globally
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g @konductro/claude-plugin
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 2. Configure for Claude Code
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
konductro-claude-setup --url https://platform.konductro.com --token YOUR_CLI_TOKEN
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Get your CLI token from **Konductro → Settings → CLI Access**.
|
|
25
|
+
|
|
26
|
+
## Skills
|
|
27
|
+
|
|
28
|
+
Skills are guided, multi-step workflows invoked with a slash command:
|
|
29
|
+
|
|
30
|
+
| Skill | Description |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `/technical-analysis` | Perform a full codebase analysis for a Konductro project phase |
|
|
33
|
+
| `/decompose` | Decompose a story into technical tasks by exploring the codebase |
|
|
34
|
+
| `/prototype` | Build a UX prototype: load design system, generate HTML, publish to S3, submit |
|
|
35
|
+
| `/find-prototype` | Find and download the approved UX prototype for the current project |
|
|
36
|
+
| `/profile-repository` | Scan the current repo and submit its profile to Konductro |
|
|
37
|
+
| `/start-ticket` | Pick up an assigned ticket — creates branch, pushes ticket spec, sets status |
|
|
38
|
+
|
|
39
|
+
## Tools
|
|
40
|
+
|
|
41
|
+
Tools are called automatically by Claude based on natural language. You don't invoke them directly — just ask.
|
|
42
|
+
|
|
43
|
+
### Tickets and delivery
|
|
44
|
+
|
|
45
|
+
| Tool | What it does |
|
|
46
|
+
|---|---|
|
|
47
|
+
| `list_my_tickets` | List all tickets assigned to you with status, project, sprint info |
|
|
48
|
+
| `get_ticket_context` | Load full context for a ticket — AC, architectural notes, parent story, repo |
|
|
49
|
+
| `start_work` | Start work on a ticket — creates branch via ADO, pushes spec file, sets in_progress |
|
|
50
|
+
| `create_pr` | Create a pull request for a ticket — auto-assigns reviewer, moves ticket to pr_open |
|
|
51
|
+
|
|
52
|
+
### Technical analysis
|
|
53
|
+
|
|
54
|
+
| Tool | What it does |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `list_tech_analysis_tasks` | List your pending technical analysis assignments |
|
|
57
|
+
| `get_task_context` | Load requirements and project context for a tech analysis task |
|
|
58
|
+
| `submit_tech_analysis` | Submit your analysis document back to Konductro |
|
|
59
|
+
|
|
60
|
+
### Story decomposition
|
|
61
|
+
|
|
62
|
+
| Tool | What it does |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `list_decomposition_tasks` | List your pending story decomposition assignments |
|
|
65
|
+
| `get_decomposition_context` | Load story details, requirements, and repo context for decomposition |
|
|
66
|
+
| `submit_decomposition_task` | Submit a single decomposed task |
|
|
67
|
+
| `complete_decomposition` | Mark decomposition as complete after all tasks submitted |
|
|
68
|
+
|
|
69
|
+
### Prototype delivery
|
|
70
|
+
|
|
71
|
+
| Tool | What it does |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `find_project_prototypes` | Find published prototypes for a project by matching the git remote URL |
|
|
74
|
+
| `list_prototype_tasks` | List your pending prototype build assignments |
|
|
75
|
+
| `get_prototype_context` | Load engagement details, design system, approved docs, and S3 config |
|
|
76
|
+
| `start_prototype_work` | Mark a prototype task as in progress |
|
|
77
|
+
| `request_upload_credentials` | Get temporary S3 credentials to upload prototype files |
|
|
78
|
+
| `submit_prototype` | Submit the published prototype back to Konductro |
|
|
79
|
+
|
|
80
|
+
### Repository profiling
|
|
81
|
+
|
|
82
|
+
| Tool | What it does |
|
|
83
|
+
|---|---|
|
|
84
|
+
| `profile_repository` | Submit a repository profile (tech stack, APIs, dependencies) |
|
|
85
|
+
|
|
86
|
+
### Examples
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
"What tickets are assigned to me?" → list_my_tickets
|
|
90
|
+
"Show me the context for MRB-15" → get_ticket_context
|
|
91
|
+
"I want to start work on MRB-15" → /start-ticket (guided flow)
|
|
92
|
+
"Run a technical analysis" → /technical-analysis (guided flow)
|
|
93
|
+
"Build the prototype for this engagement" → /prototype (guided flow)
|
|
94
|
+
"Open a PR for MRB-15" → create_pr
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Update
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm update -g @konductro/claude-plugin
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
To update your CLI token:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
konductro-claude-setup --url https://platform.konductro.com --token NEW_TOKEN
|
|
107
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
console.log('');
|
|
4
|
+
console.log('╔══════════════════════════════════════════════════════╗');
|
|
5
|
+
console.log('║ Konductro Claude Plugin installed ║');
|
|
6
|
+
console.log('║ ║');
|
|
7
|
+
console.log('║ Run setup to configure: ║');
|
|
8
|
+
console.log('║ konductro-claude-setup --url <URL> --token <TOKEN> ║');
|
|
9
|
+
console.log('║ ║');
|
|
10
|
+
console.log('║ Get your CLI token from: ║');
|
|
11
|
+
console.log('║ Konductro → Settings → CLI Access ║');
|
|
12
|
+
console.log('╚══════════════════════════════════════════════════════╝');
|
|
13
|
+
console.log('');
|
package/bin/setup.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Konductro Claude Plugin Setup
|
|
5
|
+
*
|
|
6
|
+
* Configures Claude Code to use the Konductro MCP server.
|
|
7
|
+
* Usage: konductro-claude-setup --url <konductro-url> --token <cli-token>
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, copyFileSync } from 'fs';
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
import { homedir } from 'os';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
import { dirname } from 'path';
|
|
15
|
+
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
18
|
+
|
|
19
|
+
function parseArgs(args) {
|
|
20
|
+
const parsed = {};
|
|
21
|
+
for (let i = 0; i < args.length; i++) {
|
|
22
|
+
if (args[i] === '--url' && args[i + 1]) {
|
|
23
|
+
parsed.url = args[i + 1].replace(/\/$/, '');
|
|
24
|
+
i++;
|
|
25
|
+
} else if (args[i] === '--token' && args[i + 1]) {
|
|
26
|
+
parsed.token = args[i + 1];
|
|
27
|
+
i++;
|
|
28
|
+
} else if (args[i] === '--help' || args[i] === '-h') {
|
|
29
|
+
parsed.help = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function printHelp() {
|
|
36
|
+
console.log(`
|
|
37
|
+
Konductro Claude Plugin Setup
|
|
38
|
+
|
|
39
|
+
Usage:
|
|
40
|
+
konductro-claude-setup --url <konductro-url> --token <cli-token>
|
|
41
|
+
|
|
42
|
+
Options:
|
|
43
|
+
--url Konductro platform URL (e.g., https://platform.konductro.com)
|
|
44
|
+
--token Your personal CLI token from Konductro Settings → CLI Access
|
|
45
|
+
--help Show this help message
|
|
46
|
+
|
|
47
|
+
Example:
|
|
48
|
+
konductro-claude-setup --url https://platform.konductro.com --token sk-konductro-abc123
|
|
49
|
+
`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function main() {
|
|
53
|
+
const args = parseArgs(process.argv.slice(2));
|
|
54
|
+
|
|
55
|
+
if (args.help) {
|
|
56
|
+
printHelp();
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (!args.url || !args.token) {
|
|
61
|
+
console.error('Error: Both --url and --token are required.\n');
|
|
62
|
+
printHelp();
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Find the MCP server path (installed globally or locally)
|
|
67
|
+
const serverPath = join(__dirname, '..', 'servers', 'konductro-api.js');
|
|
68
|
+
if (!existsSync(serverPath)) {
|
|
69
|
+
console.error('Error: MCP server not found at', serverPath);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Claude Code reads user-scoped MCP config from ~/.claude.json
|
|
74
|
+
const mcpConfigPath = join(homedir(), '.claude.json');
|
|
75
|
+
|
|
76
|
+
// Load existing config or create new
|
|
77
|
+
let config = {};
|
|
78
|
+
if (existsSync(mcpConfigPath)) {
|
|
79
|
+
try {
|
|
80
|
+
config = JSON.parse(readFileSync(mcpConfigPath, 'utf8'));
|
|
81
|
+
} catch {
|
|
82
|
+
console.warn('Warning: Could not parse existing .claude.json, will add MCP config.');
|
|
83
|
+
config = {};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (!config.mcpServers) config.mcpServers = {};
|
|
88
|
+
|
|
89
|
+
// Add/update Konductro server
|
|
90
|
+
config.mcpServers.konductro = {
|
|
91
|
+
command: 'node',
|
|
92
|
+
args: [serverPath],
|
|
93
|
+
env: {
|
|
94
|
+
KONDUCTRO_URL: args.url,
|
|
95
|
+
KONDUCTRO_CLI_TOKEN: args.token,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// Write config
|
|
100
|
+
writeFileSync(mcpConfigPath, JSON.stringify(config, null, 2) + '\n');
|
|
101
|
+
|
|
102
|
+
// Copy skills to ~/.claude/commands/ so they appear as /slash-commands
|
|
103
|
+
const commandsDir = join(homedir(), '.claude', 'commands');
|
|
104
|
+
if (!existsSync(commandsDir)) {
|
|
105
|
+
mkdirSync(commandsDir, { recursive: true });
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const skillsDir = join(__dirname, '..', 'skills');
|
|
109
|
+
if (existsSync(skillsDir)) {
|
|
110
|
+
// Copy each skill's .md file as a command
|
|
111
|
+
const skillFolders = readdirSync(skillsDir);
|
|
112
|
+
for (const folder of skillFolders) {
|
|
113
|
+
const skillPath = join(skillsDir, folder, 'SKILL.md');
|
|
114
|
+
if (existsSync(skillPath)) {
|
|
115
|
+
const destPath = join(commandsDir, `${folder}.md`);
|
|
116
|
+
copyFileSync(skillPath, destPath);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
console.log('');
|
|
122
|
+
console.log('✓ Konductro plugin configured for Claude Code');
|
|
123
|
+
console.log('');
|
|
124
|
+
console.log(' MCP server: ' + serverPath);
|
|
125
|
+
console.log(' Commands: ' + commandsDir);
|
|
126
|
+
console.log(' Konductro: ' + args.url);
|
|
127
|
+
console.log(' Config: ' + mcpConfigPath);
|
|
128
|
+
console.log('');
|
|
129
|
+
console.log('Skills (slash commands):');
|
|
130
|
+
console.log(' /technical-analysis — perform codebase analysis');
|
|
131
|
+
console.log(' /decompose — decompose a story into tasks');
|
|
132
|
+
console.log(' /prototype — build a UX prototype');
|
|
133
|
+
console.log(' /profile-repository — scan and submit repo profile');
|
|
134
|
+
console.log(' /start-ticket — pick up a ticket and start work');
|
|
135
|
+
console.log('');
|
|
136
|
+
console.log('MCP tools (available in conversation):');
|
|
137
|
+
console.log(' list_tech_analysis_tasks — see analysis assignments');
|
|
138
|
+
console.log(' list_decomposition_tasks — see decomposition assignments');
|
|
139
|
+
console.log(' list_prototype_tasks — see prototype assignments');
|
|
140
|
+
console.log(' list_my_tickets — see assigned tickets');
|
|
141
|
+
console.log(' get_ticket_context — load full ticket context');
|
|
142
|
+
console.log(' profile_repository — scan and register repo');
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log('To update your token later, run this command again.');
|
|
145
|
+
console.log('');
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
main();
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@konductro/claude-plugin",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Claude Code plugin for the Konductro platform — technical analysis and delivery tasks",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=18.0.0"
|
|
9
|
+
},
|
|
10
|
+
"bin": {
|
|
11
|
+
"konductro-claude-setup": "./bin/setup.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"bin/",
|
|
15
|
+
"servers/",
|
|
16
|
+
"skills/",
|
|
17
|
+
".claude-plugin/"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"postinstall": "node bin/postinstall.js"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
}
|
|
28
|
+
}
|