@chris1807/claude-kit 2.1.18 → 2.1.20
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/README.md +3 -5
- package/bin/cli.js +7 -8
- package/package.json +1 -1
- package/templates/agents/project/deployer.md +1 -2
- package/templates/commands/create-work-item.md +11 -0
- package/templates/commands/deploy.md +1 -2
- package/templates/commands/rework.md +17 -1
- package/templates/commands/rollback.md +0 -2
- package/templates/infrastructure/CLAUDE-WORKFLOW.md +3 -5
- package/templates/infrastructure/mcp.json +1 -6
package/README.md
CHANGED
|
@@ -666,16 +666,14 @@ export MSSQL_CONNECTION_STRING="Server=localhost;Database=MyDb;User Id=sa;Passwo
|
|
|
666
666
|
# PostgreSQL (if your project uses PostgreSQL)
|
|
667
667
|
export POSTGRES_CONNECTION_STRING="postgresql://user:password@localhost:5432/mydb"
|
|
668
668
|
|
|
669
|
-
# Microsoft Teams (for team notifications and messages)
|
|
670
|
-
export TEAMS_TENANT_ID="your-azure-ad-tenant-id"
|
|
671
|
-
export TEAMS_CLIENT_ID="your-app-registration-client-id"
|
|
672
|
-
export TEAMS_CLIENT_SECRET="your-client-secret"
|
|
673
|
-
|
|
674
669
|
# Stripe (if your project uses Stripe payments)
|
|
675
670
|
export STRIPE_SECRET_KEY="sk_test_..."
|
|
676
671
|
|
|
677
672
|
# Azure CLI (no env var needed — just log in)
|
|
678
673
|
az login
|
|
674
|
+
|
|
675
|
+
# Microsoft Teams (no env vars needed — uses Microsoft Graph device-code auth;
|
|
676
|
+
# first invocation prints a code + URL to sign in)
|
|
679
677
|
```
|
|
680
678
|
|
|
681
679
|
### Setting Up the Teams MCP Server
|
package/bin/cli.js
CHANGED
|
@@ -375,7 +375,7 @@ async function main() {
|
|
|
375
375
|
} else if (mcpChoices.db === 'mssql' || mcpChoices.db === 'azuresql') {
|
|
376
376
|
mcpConfig.mcpServers.mssql = {
|
|
377
377
|
command: 'npx',
|
|
378
|
-
args: ['-y', '
|
|
378
|
+
args: ['-y', 'mssql-mcp-server'],
|
|
379
379
|
env: { MSSQL_CONNECTION_STRING: '${MSSQL_CONNECTION_STRING}' },
|
|
380
380
|
};
|
|
381
381
|
} else if (mcpChoices.db === 'postgres') {
|
|
@@ -389,12 +389,7 @@ async function main() {
|
|
|
389
389
|
if (mcpChoices.servers.includes('teams')) {
|
|
390
390
|
mcpConfig.mcpServers.teams = {
|
|
391
391
|
command: 'npx',
|
|
392
|
-
args: ['-y', '@
|
|
393
|
-
env: {
|
|
394
|
-
TEAMS_TENANT_ID: '${TEAMS_TENANT_ID}',
|
|
395
|
-
TEAMS_CLIENT_ID: '${TEAMS_CLIENT_ID}',
|
|
396
|
-
TEAMS_CLIENT_SECRET: '${TEAMS_CLIENT_SECRET}',
|
|
397
|
-
},
|
|
392
|
+
args: ['-y', '@floriscornel/teams-mcp@latest'],
|
|
398
393
|
};
|
|
399
394
|
}
|
|
400
395
|
|
|
@@ -639,7 +634,6 @@ async function main() {
|
|
|
639
634
|
if (dbType === 'mongo') exports.push('export MONGODB_CONNECTION_STRING="mongodb+srv://..."');
|
|
640
635
|
if (dbType === 'mssql' || dbType === 'azuresql') exports.push('export MSSQL_CONNECTION_STRING="Server=...;Database=..."');
|
|
641
636
|
if (dbType === 'postgres') exports.push('export POSTGRES_CONNECTION_STRING="postgresql://..."');
|
|
642
|
-
exports.push('export TEAMS_TENANT_ID="..."', 'export TEAMS_CLIENT_ID="..."', 'export TEAMS_CLIENT_SECRET="..."');
|
|
643
637
|
if (selectedServers.includes('azuredevops')) exports.push('export AZURE_DEVOPS_PAT="..." # mint at https://dev.azure.com/_usersSettings/tokens');
|
|
644
638
|
|
|
645
639
|
console.log(chalk.yellow(' Environment variables to set:'));
|
|
@@ -654,6 +648,11 @@ async function main() {
|
|
|
654
648
|
console.log(chalk.yellow(' Also run:'));
|
|
655
649
|
console.log(chalk.gray(' az login'));
|
|
656
650
|
console.log('');
|
|
651
|
+
if (selectedServers.includes('teams')) {
|
|
652
|
+
console.log(chalk.yellow(' Teams MCP uses Microsoft Graph device-code auth.'));
|
|
653
|
+
console.log(chalk.gray(' First use will print a code + URL to sign in. No env vars needed.'));
|
|
654
|
+
console.log('');
|
|
655
|
+
}
|
|
657
656
|
console.log(` Then: ${chalk.blue(`cd ${targetDir} && claude`)}`);
|
|
658
657
|
console.log(` Run: ${chalk.blue('/implement AB#1234')} to start working`);
|
|
659
658
|
console.log(` Run: ${chalk.blue('/review 142')} to review a PR`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chris1807/claude-kit",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.20",
|
|
4
4
|
"description": "Claude Code starter kit for Azure DevOps teams — agents, hooks, MCP servers, slash commands, and end-to-end work item → PR → release → deploy workflow automation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,8 +26,7 @@ You deploy code changes to Azure environments. Follow the standard sequence for
|
|
|
26
26
|
2. Stage only the relevant files (never use `git add -A` — avoid committing secrets or build artifacts)
|
|
27
27
|
3. Never stage `.env`, `appsettings.*.json` with real secrets, or `node_modules`
|
|
28
28
|
4. Write a clear commit message explaining what changed and why
|
|
29
|
-
5.
|
|
30
|
-
6. Use HEREDOC format for the commit message
|
|
29
|
+
5. Use HEREDOC format for the commit message
|
|
31
30
|
|
|
32
31
|
### Step 3: Push
|
|
33
32
|
|
|
@@ -237,6 +237,17 @@ Azure DevOps description and acceptance criteria fields are HTML — they do not
|
|
|
237
237
|
|
|
238
238
|
Wrap each top-level section in `<p>...</p>`. Preserve any user-supplied `<img>` tags from Step 2 as-is.
|
|
239
239
|
|
|
240
|
+
### Emphasis and code spans (required)
|
|
241
|
+
|
|
242
|
+
A description that is one long paragraph of plain prose is not acceptable — even after Markdown is converted, the rendered output must guide the reader's eye. Before rendering, edit the draft so that:
|
|
243
|
+
|
|
244
|
+
- **Key terms, values, and outcomes** in each sentence are wrapped in `**bold**` (renders as `<strong>...</strong>`). Bold the noun phrase that carries the claim, not the whole sentence.
|
|
245
|
+
- **Code identifiers** — method names, class names, field names, file paths, route paths, JSON keys, env vars, commit hashes, IDs, literal values like `true` / `null` / numeric thresholds — are wrapped in `` `code spans` `` (renders as `<code>...</code>`).
|
|
246
|
+
- **Lists** are used instead of comma-separated prose whenever the draft contains 2+ parallel items (steps, files, references, acceptance criteria).
|
|
247
|
+
- **Section headings** (`### Description`, `### Acceptance Criteria`, etc.) are kept — they become `<h3>` and structure the rendered output.
|
|
248
|
+
|
|
249
|
+
Apply this pass to every section (Description, Acceptance Criteria, Steps to Reproduce, Expected/Actual Behavior, Environment/Scope, Open Questions). Apply it equally to Bugs and User Stories.
|
|
250
|
+
|
|
240
251
|
### Call the create API
|
|
241
252
|
|
|
242
253
|
Call `mcp__azure-devops__wit_create_work_item` with:
|
|
@@ -36,8 +36,7 @@ Wait for confirmation.
|
|
|
36
36
|
1. Stage only the relevant files (never use `git add -A`)
|
|
37
37
|
2. Never stage `.env`, `appsettings.*.json` with real secrets, or `node_modules`
|
|
38
38
|
3. Commit with the provided message or auto-generated one
|
|
39
|
-
4.
|
|
40
|
-
5. Use HEREDOC format for the commit message
|
|
39
|
+
4. Use HEREDOC format for the commit message
|
|
41
40
|
|
|
42
41
|
## Step 4: Push
|
|
43
42
|
|
|
@@ -161,7 +161,23 @@ If the user provided hours (suggested or overridden):
|
|
|
161
161
|
- **workItemType**: `Task`
|
|
162
162
|
- **title**: `Rework AB#{id} — round {N}`
|
|
163
163
|
- **fields**: JSON Patch document setting:
|
|
164
|
-
- `System.Description` —
|
|
164
|
+
- `System.Description` — structured **HTML** (Azure DevOps does not render Markdown in this field). Use exactly these three sections, in this order, omitting any that have no content:
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<h3>Summary</h3>
|
|
168
|
+
<p>{1–2 sentences describing the problem the rework addresses. Bold key terms, values, and outcomes with <strong>...</strong>.}</p>
|
|
169
|
+
<h3>Fix</h3>
|
|
170
|
+
<ul>
|
|
171
|
+
<li>{What changes. Wrap code identifiers, method names, fields, file paths, and literal values in <code>...</code>.}</li>
|
|
172
|
+
</ul>
|
|
173
|
+
<h3>Reference</h3>
|
|
174
|
+
<ul>
|
|
175
|
+
<li>Rework round {N} of AB#{id} ({date or tester} feedback).</li>
|
|
176
|
+
<li><a href="{PR url}">PR #{n}</a> — {one-line context, e.g. test-plan scenario, submission id in <code>...</code>}</li>
|
|
177
|
+
</ul>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Render any code identifiers (method names, fields, file paths, hashes, literal values) inside `<code>` spans, and emphasize the key claim/value in each sentence with `<strong>`. Do not submit a wall of plain prose — every rework task must have at least the `Summary` and `Fix` sections in this shape.
|
|
165
181
|
- `Microsoft.VSTS.Scheduling.OriginalEstimate` — the agreed hours
|
|
166
182
|
- `Microsoft.VSTS.Scheduling.RemainingWork` — the agreed hours
|
|
167
183
|
- `System.AreaPath` — same as the parent
|
|
@@ -265,14 +265,12 @@ Each team member needs to set their own environment variables (never commit thes
|
|
|
265
265
|
# MongoDB (required for db-admin agent)
|
|
266
266
|
export MONGODB_CONNECTION_STRING="mongodb+srv://..."
|
|
267
267
|
|
|
268
|
-
# Microsoft Teams (required for team notifications)
|
|
269
|
-
export TEAMS_TENANT_ID="..."
|
|
270
|
-
export TEAMS_CLIENT_ID="..."
|
|
271
|
-
export TEAMS_CLIENT_SECRET="..."
|
|
272
|
-
|
|
273
268
|
# Stripe (required when payment integration is active)
|
|
274
269
|
export STRIPE_SECRET_KEY="sk_test_..."
|
|
275
270
|
|
|
276
271
|
# Azure (use az login instead of env vars)
|
|
277
272
|
az login
|
|
273
|
+
|
|
274
|
+
# Microsoft Teams MCP — no env vars needed. First invocation prints a
|
|
275
|
+
# device code + URL to sign in via Microsoft Graph (OAuth device flow).
|
|
278
276
|
```
|
|
@@ -13,12 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"teams": {
|
|
15
15
|
"command": "npx",
|
|
16
|
-
"args": ["-y", "@
|
|
17
|
-
"env": {
|
|
18
|
-
"TEAMS_TENANT_ID": "${TEAMS_TENANT_ID}",
|
|
19
|
-
"TEAMS_CLIENT_ID": "${TEAMS_CLIENT_ID}",
|
|
20
|
-
"TEAMS_CLIENT_SECRET": "${TEAMS_CLIENT_SECRET}"
|
|
21
|
-
}
|
|
16
|
+
"args": ["-y", "@floriscornel/teams-mcp@latest"]
|
|
22
17
|
},
|
|
23
18
|
"stripe": {
|
|
24
19
|
"command": "npx",
|