@chris1807/claude-kit 2.0.0 → 2.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/bin/cli.js +51 -8
- package/package.json +1 -1
- package/templates/infrastructure/mcp.json +7 -0
package/bin/cli.js
CHANGED
|
@@ -20,6 +20,7 @@ const showHelp = args.includes('--help') || args.includes('-h');
|
|
|
20
20
|
const globalOnly = args.includes('--global-only');
|
|
21
21
|
const installAll = args.includes('--all');
|
|
22
22
|
const dbFlag = args.find(a => a.startsWith('--db='))?.split('=')[1] || null;
|
|
23
|
+
const adoOrgFlag = args.find(a => a.startsWith('--ado-org='))?.split('=')[1] || null;
|
|
23
24
|
const targetArg = args.find(a => !a.startsWith('--') && a !== 'init');
|
|
24
25
|
|
|
25
26
|
if (showHelp) {
|
|
@@ -37,6 +38,7 @@ Options:
|
|
|
37
38
|
--all --db=mssql Install all with SQL Server
|
|
38
39
|
--all --db=azuresql Install all with Azure SQL
|
|
39
40
|
--all --db=postgres Install all with PostgreSQL
|
|
41
|
+
--ado-org=<name> Include Azure DevOps MCP for the named organization
|
|
40
42
|
--global-only Only install global agents to ~/.claude/agents/
|
|
41
43
|
--help, -h Show this help
|
|
42
44
|
`);
|
|
@@ -159,7 +161,7 @@ async function main() {
|
|
|
159
161
|
{ name: 'Project Agents (deployer, db-admin, devops-tracker)', value: 'agents', checked: true },
|
|
160
162
|
{ name: 'Hooks (secret blocker, auto-format, test suggestions)', value: 'hooks', checked: true },
|
|
161
163
|
{ name: 'Slash Commands (11 commands — implement, review, deploy, releases, cherry-pick, promote, rollback, status, cleanup)', value: 'commands', checked: true },
|
|
162
|
-
{ name: 'MCP Servers (Playwright, DB, Teams, Stripe, Azure)', value: 'mcp', checked: true },
|
|
164
|
+
{ name: 'MCP Servers (Playwright, DB, Teams, Stripe, Azure, Azure DevOps)', value: 'mcp', checked: true },
|
|
163
165
|
{ name: 'Settings (hook registration)', value: 'settings', checked: true },
|
|
164
166
|
{ name: 'CLAUDE.md Workflow Section', value: 'workflow', checked: true },
|
|
165
167
|
{ name: '.gitignore Updates', value: 'gitignore', checked: true },
|
|
@@ -222,6 +224,7 @@ async function main() {
|
|
|
222
224
|
|
|
223
225
|
// ── MCP Servers (interactive selection) ───────────────────────────────
|
|
224
226
|
let dbType = 'none';
|
|
227
|
+
let selectedServers = [];
|
|
225
228
|
if (components.includes('mcp')) {
|
|
226
229
|
console.log(chalk.yellow.bold('\n🔌 MCP Servers → .mcp.json\n'));
|
|
227
230
|
|
|
@@ -244,7 +247,9 @@ async function main() {
|
|
|
244
247
|
}]);
|
|
245
248
|
db = dbAnswer;
|
|
246
249
|
}
|
|
247
|
-
|
|
250
|
+
const allServers = ['playwright', 'teams', 'azure'];
|
|
251
|
+
if (adoOrgFlag) allServers.push('azuredevops');
|
|
252
|
+
mcpChoices = { servers: allServers, db, stripe: false, adoOrg: adoOrgFlag };
|
|
248
253
|
} else {
|
|
249
254
|
// Database selection
|
|
250
255
|
const { db } = await inquirer.prompt([{
|
|
@@ -271,10 +276,22 @@ async function main() {
|
|
|
271
276
|
{ name: 'Microsoft Teams (notifications, messages)', value: 'teams', checked: true },
|
|
272
277
|
{ name: 'Stripe (payment management)', value: 'stripe', checked: false },
|
|
273
278
|
{ name: 'Azure CLI (App Service, Key Vault, DNS)', value: 'azure', checked: true },
|
|
279
|
+
{ name: 'Azure DevOps (work items, repos, pipelines, wiki)', value: 'azuredevops', checked: false },
|
|
274
280
|
],
|
|
275
281
|
}]);
|
|
276
282
|
|
|
277
|
-
|
|
283
|
+
let adoOrg = null;
|
|
284
|
+
if (servers.includes('azuredevops')) {
|
|
285
|
+
const { org } = await inquirer.prompt([{
|
|
286
|
+
type: 'input',
|
|
287
|
+
name: 'org',
|
|
288
|
+
message: 'Azure DevOps organization name (e.g. contoso for dev.azure.com/contoso):',
|
|
289
|
+
validate: (v) => v.trim().length > 0 || 'Organization name is required',
|
|
290
|
+
}]);
|
|
291
|
+
adoOrg = org.trim();
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
mcpChoices = { servers, db, stripe: servers.includes('stripe'), adoOrg };
|
|
278
295
|
}
|
|
279
296
|
|
|
280
297
|
// Build MCP config
|
|
@@ -334,7 +351,16 @@ async function main() {
|
|
|
334
351
|
};
|
|
335
352
|
}
|
|
336
353
|
|
|
354
|
+
if (mcpChoices.servers.includes('azuredevops') && mcpChoices.adoOrg) {
|
|
355
|
+
mcpConfig.mcpServers['azure-devops'] = {
|
|
356
|
+
command: 'npx',
|
|
357
|
+
args: ['-y', '@azure-devops/mcp', mcpChoices.adoOrg],
|
|
358
|
+
env: { AZURE_DEVOPS_PAT: '${AZURE_DEVOPS_PAT}' },
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
|
|
337
362
|
dbType = mcpChoices.db;
|
|
363
|
+
selectedServers = mcpChoices.servers;
|
|
338
364
|
|
|
339
365
|
const mcpPath = join(targetDir, '.mcp.json');
|
|
340
366
|
if (await fs.pathExists(mcpPath)) {
|
|
@@ -501,12 +527,29 @@ async function main() {
|
|
|
501
527
|
console.log(` Database: ${chalk.bold(dbType)}`);
|
|
502
528
|
console.log('');
|
|
503
529
|
|
|
504
|
-
// Show required env vars
|
|
530
|
+
// Show required env vars + a copy-paste command to persist them in the user's shell rc
|
|
531
|
+
const shell = process.env.SHELL || '';
|
|
532
|
+
const rcFile = shell.includes('zsh') ? '~/.zshrc'
|
|
533
|
+
: shell.includes('bash') ? '~/.bashrc'
|
|
534
|
+
: shell.includes('fish') ? '~/.config/fish/config.fish'
|
|
535
|
+
: '~/.zshrc';
|
|
536
|
+
const exports = [];
|
|
537
|
+
if (dbType === 'mongo') exports.push('export MONGODB_CONNECTION_STRING="mongodb+srv://..."');
|
|
538
|
+
if (dbType === 'mssql' || dbType === 'azuresql') exports.push('export MSSQL_CONNECTION_STRING="Server=...;Database=..."');
|
|
539
|
+
if (dbType === 'postgres') exports.push('export POSTGRES_CONNECTION_STRING="postgresql://..."');
|
|
540
|
+
exports.push('export TEAMS_TENANT_ID="..."', 'export TEAMS_CLIENT_ID="..."', 'export TEAMS_CLIENT_SECRET="..."');
|
|
541
|
+
if (selectedServers.includes('azuredevops')) exports.push('export AZURE_DEVOPS_PAT="..." # mint at https://dev.azure.com/_usersSettings/tokens');
|
|
542
|
+
|
|
505
543
|
console.log(chalk.yellow(' Environment variables to set:'));
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
console.log(chalk.gray(
|
|
544
|
+
for (const line of exports) console.log(chalk.gray(` ${line}`));
|
|
545
|
+
console.log('');
|
|
546
|
+
console.log(chalk.yellow(` To persist (replace the "..." placeholders first, then paste into your terminal):`));
|
|
547
|
+
console.log(chalk.gray(` cat <<'EOF' >> ${rcFile}`));
|
|
548
|
+
for (const line of exports) console.log(chalk.gray(` ${line}`));
|
|
549
|
+
console.log(chalk.gray(` EOF`));
|
|
550
|
+
console.log(chalk.gray(` source ${rcFile}`));
|
|
551
|
+
console.log('');
|
|
552
|
+
console.log(chalk.yellow(' Also run:'));
|
|
510
553
|
console.log(chalk.gray(' az login'));
|
|
511
554
|
console.log('');
|
|
512
555
|
console.log(` Then: ${chalk.blue(`cd ${targetDir} && claude`)}`);
|
package/package.json
CHANGED
|
@@ -30,6 +30,13 @@
|
|
|
30
30
|
"azure": {
|
|
31
31
|
"command": "npx",
|
|
32
32
|
"args": ["-y", "@azure/mcp@latest", "server", "start"]
|
|
33
|
+
},
|
|
34
|
+
"azure-devops": {
|
|
35
|
+
"command": "npx",
|
|
36
|
+
"args": ["-y", "@azure-devops/mcp", "your-org"],
|
|
37
|
+
"env": {
|
|
38
|
+
"AZURE_DEVOPS_PAT": "${AZURE_DEVOPS_PAT}"
|
|
39
|
+
}
|
|
33
40
|
}
|
|
34
41
|
}
|
|
35
42
|
}
|