@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 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
- mcpChoices = { servers: ['playwright', 'teams', 'azure'], db, stripe: false };
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
- mcpChoices = { servers, db, stripe: servers.includes('stripe') };
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
- if (dbType === 'mongo') console.log(chalk.gray(' export MONGODB_CONNECTION_STRING="mongodb+srv://..."'));
507
- if (dbType === 'mssql' || dbType === 'azuresql') console.log(chalk.gray(' export MSSQL_CONNECTION_STRING="Server=...;Database=..."'));
508
- if (dbType === 'postgres') console.log(chalk.gray(' export POSTGRES_CONNECTION_STRING="postgresql://..."'));
509
- console.log(chalk.gray(' export TEAMS_TENANT_ID="..." TEAMS_CLIENT_ID="..." TEAMS_CLIENT_SECRET="..."'));
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris1807/claude-kit",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Claude Code starter kit — agents, hooks, MCP servers, slash commands, and workflow automation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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
  }