@chris1807/claude-kit 2.3.1 → 2.3.3

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 CHANGED
@@ -27,7 +27,7 @@ Every session Claude learns from your feedback and gets better at helping you sp
27
27
  |-----------|-------|----------------|-------------|
28
28
  | **Global Agents** | 10 | `~/.claude/agents/` (your machine, all projects) | backend, frontend, legacy (Lucee/CFML), mockup, reviewer, test-runner, build-validator, lint-checker, azure-ops, security-auditor |
29
29
  | **Project Agents** | 2 | `.claude/agents/` (in the project) | deployer, db-admin |
30
- | **Hooks** | 9 | `.claude/hooks/` (in the project) | Secret blocker, sensitive data blocker (Bash + MCP + output), protected files, auto-format, test suggestions, UAT reminder, self-improve |
30
+ | **Hooks** | 10 | `.claude/hooks/` (in the project) | Secret blocker, sensitive data blocker (Bash + MCP + output), protected files, auto-format, test suggestions, work item intent, UAT reminder, self-improve |
31
31
  | **Slash Commands** | 24 | `.claude/commands/` (in the project) | `/implement`, `/review`, `/deep-review`, `/resolve-feedback`, `/fix-review`, `/deploy`, `/create-release`, `/deploy-release`, `/add-to-release`, `/cherry-pick`, `/promote`, `/rollback`, `/track`, `/plan-backlog`, `/plan-sprint`, `/quote-backlog`, `/cleanup-branches`, `/close-orphan-tasks`, `/quote`, `/explain`, `/create-work-item`, `/edit-work-item` |
32
32
  | **MCP Servers** | Up to 6 | `.mcp.json` (in the project) | **Azure DevOps** (work items, repos, pipelines, wiki), Playwright, MongoDB/SQL/Postgres, Teams, Stripe, Azure CLI |
33
33
  | **Workflow Template** | 1 | Appended to `CLAUDE.md` | Documents the full development process |
@@ -105,7 +105,7 @@ npx @chris1807/claude-kit init --all
105
105
  This installs:
106
106
  - ✅ Global agents (backend, frontend, legacy, mockup, reviewer, test-runner, build-validator, lint-checker, azure-ops, security-auditor)
107
107
  - ✅ Project agents (deployer, db-admin)
108
- - ✅ All 9 hooks
108
+ - ✅ All 10 hooks
109
109
  - ✅ All 13 slash commands
110
110
  - ✅ MCP servers: Playwright, Teams, Azure CLI (+ your DB choice)
111
111
  - ✅ Settings, CLAUDE.md workflow, .gitignore
@@ -201,6 +201,7 @@ your-project/ ← Project-specific
201
201
  │ │ ├── protected-files.sh # BLOCKS/warns on critical file edits
202
202
  │ │ ├── auto-format.sh # Auto-runs formatters after edits
203
203
  │ │ ├── test-on-change.sh # Suggests related tests after edits
204
+ │ │ ├── work-item-intent.sh # Routes "create a bug/story" prompts to /create-work-item
204
205
  │ │ ├── uat-reminder.sh # Reminds to run UAT after features
205
206
  │ │ └── self-improve.sh # Saves learnings after each session
206
207
  │ │
@@ -691,7 +692,7 @@ Claude reviews for:
691
692
  | `/quote-backlog` | `/quote-backlog [project]` | Sweep backlog for unpointed items ready to estimate — stories in `Design Approved`, bugs in `New` (bugs have no design states) → review completeness, check for duplicates, suggest rewrites, propose points + creator comments (10 at a time, approval-gated). Also audits the drop-out queue — tagged bugs and stories bounced to Design Review — for items whose creator answered but which nobody returned to the sweep |
692
693
  | `/quote` | `/quote AB#1234` | Estimate a work item in story points (senior-calibrated Fibonacci rubric) |
693
694
  | `/explain` | `/explain AB#1234` | Summarize and explain a work item in plain language |
694
- | `/create-work-item` | `/create-work-item [description]` | Interactively draft and create a Feature, Bug, User Story, or Hot Fix — proposes story points (user must agree), creates pointed items in Dev Ready; on a Feature, also drafts its child stories with `Custom.Order` waves |
695
+ | `/create-work-item` | `/create-work-item [description]` | Interactively draft and create a Feature, Bug, User Story, or Hot Fix — proposes story points (user must agree), creates pointed items in Dev Ready; on a Feature, also drafts its child stories with `Custom.Order` waves. Runs automatically for any plain-language request to create a work item |
695
696
  | `/edit-work-item` | `/edit-work-item AB#1234 [what to change]` | Revise an existing work item field-by-field. On a Feature, cascades into its child stories — updates, adds, retires, and re-sequences `Custom.Order` waves — with a safety gate on anything already past Dev Ready |
696
697
  | `/cleanup-branches` | `/cleanup-branches` | Delete merged feature/work branches |
697
698
  | `/close-orphan-tasks` | `/close-orphan-tasks --dry-run` | Close open Tasks whose parent is Ready to Deploy / Deployed / Closed |
@@ -707,6 +708,7 @@ These run automatically — no action needed:
707
708
  | **Before** any Bash command | `sensitive-data-blocker.sh` | Blocks `mongosh` commands that reference sensitive PII fields (TIN, SSN, bank accounts). **Blocks the command.** |
708
709
  | **Before** any MCP database tool | `sensitive-data-mcp-blocker.sh` | Blocks MongoDB/MSSQL/Postgres MCP tool calls that reference PII fields. **Blocks the call.** |
709
710
  | **After** any Bash/MCP/Read/Grep | `sensitive-data-output-blocker.sh` | Scans output for PII field names in JSON, C#, YAML formats — catches broad queries, seed data, test fixtures, log files, and git diffs. **Blocks the output.** |
711
+ | **When you send a prompt** | `work-item-intent.sh` | Spots plain-language requests to create a work item ("log a bug…", "make a story…") and tells Claude to run `/create-work-item` instead of creating it directly. Never blocks; slash-command prompts are skipped. |
710
712
  | **Before** any file write | `secret-blocker.sh` | Scans for hardcoded credentials (MongoDB URIs, AWS keys, Stripe keys, passwords). **Blocks the write.** |
711
713
  | **Before** any file edit | `protected-files.sh` | Blocks edits to production/staging configs. Warns on critical files (CLAUDE.md, pipelines, Program.cs). |
712
714
  | **After** any file edit | `auto-format.sh` | Runs `dotnet format` on .cs files, `eslint --fix` on .ts/.tsx files |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris1807/claude-kit",
3
- "version": "2.3.1",
3
+ "version": "2.3.3",
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": {
@@ -1,12 +1,14 @@
1
- Create a new Azure DevOps work item interactively. Usage: `/create-work-item`
1
+ Create a new Azure DevOps work item (Bug, User Story, Feature, or Hot Fix) interactively. Use this whenever the user asks to create, log, file, open, or raise a work item, ticket, bug, story, feature, or hot fix, whether or not they typed the command. Usage: `/create-work-item [description]`
2
2
 
3
3
  This command walks the user through creating a Feature, Bug, User Story, or Hot Fix, develops an acceptance-criteria-ready plan, optionally embeds a UI mockup in the description, and creates the item in the chosen Azure DevOps project. For a Feature it can also draft and create the child User Stories that make the Feature implementable.
4
4
 
5
5
  Treat `$ARGUMENTS` as an optional rough description that the user may have typed inline (e.g. `/create-work-item users should be able to export payments`). If provided, skip the initial "describe your requirements" prompt in Step 2 and use it as the starting requirements text — but still confirm with the user before proceeding.
6
6
 
7
+ **This command is the only way Claude creates a Feature, Bug, User Story, or Hot Fix.** A plain-language request ("log a bug that the export button 500s", "make a story for bulk assign") runs this command even when the user didn't type it. Claude invokes it through the Skill tool with the request text as `$ARGUMENTS`, and the `work-item-intent.sh` hook adds a reminder whenever a prompt reads like one. Every step below applies the same way to an invoked run: prior art, duplicate check, draft approval, and proposed points. Never skip ahead to a direct `wit_work_item_write` create.
8
+
7
9
  ## Step 1: Choose Work Item Type
8
10
 
9
- Ask the user:
11
+ If `$ARGUMENTS` already names the type unambiguously (`bug`, `user story` / `story`, `feature`, `hot fix` / `hotfix`), use it and skip the question. Name the type in the Step 2 confirmation so the user can correct it. Otherwise, ask the user:
10
12
 
11
13
  ```
12
14
  What type of work item do you want to create?
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+ # Work Item Intent Hook (UserPromptSubmit)
3
+ # Routes plain-language requests to create a work item through /create-work-item,
4
+ # so "log a bug for the export 500" gets the same prior-art check, title prefix,
5
+ # AC field, proposed points, and draft approval as typing the command.
6
+ #
7
+ # Never blocks. On a match it prints a note that Claude Code adds to the
8
+ # prompt's context; the note is conditional, so a false positive ("add a
9
+ # feature flag") costs a few tokens and is ignored.
10
+
11
+ # Read the hook input from stdin
12
+ INPUT=$(cat)
13
+
14
+ MATCH=$(echo "$INPUT" | python3 -c "
15
+ import sys, json, re
16
+ try:
17
+ prompt = json.load(sys.stdin).get('prompt', '').strip()
18
+ except Exception:
19
+ sys.exit(0)
20
+
21
+ # Slash commands run their own flow — /create-work-item is already running,
22
+ # and work items other commands create (Tasks, child stories) follow theirs.
23
+ if prompt.startswith('/'):
24
+ sys.exit(0)
25
+
26
+ verb = r'\b(create|make|add|file|log|open|raise|write\s+up|submit|draft|put\s+in|enter)\b'
27
+ noun = (r'\b(work\s*items?|tickets?|bugs?|user\s+stor(y|ies)|stor(y|ies)|'
28
+ r'features?(?!\s+(flags?|toggles?|branch(es)?))|hot\s*fix(es)?|backlog\s+items?|pbis?)\b')
29
+
30
+ if re.search(verb + r'.{0,40}?' + noun, prompt, re.IGNORECASE | re.DOTALL):
31
+ print('match')
32
+ " 2>/dev/null)
33
+
34
+ if [ "$MATCH" = "match" ]; then
35
+ echo "Work item request check: if the user is asking to create an Azure DevOps work item (Bug, User Story, Feature, or Hot Fix), run /create-work-item now with the Skill tool, passing their request as the arguments. Do not create it with a direct wit_work_item_write call. If /create-work-item is already running in this conversation, or this prompt is not a request to create a work item, ignore this note."
36
+ fi
37
+
38
+ exit 0
@@ -68,6 +68,7 @@ These run automatically — no action needed:
68
68
  | **Before any Bash command** | Sensitive data blocker prevents database queries that reference TIN, SSN, or other PII fields |
69
69
  | **Before any MCP database tool** | Sensitive data MCP blocker prevents MCP database queries that reference PII fields |
70
70
  | **After any Bash/MCP/Read/Grep command** | Sensitive data output blocker scans results for PII field names and blocks exposure |
71
+ | **When you send a prompt** | Work item intent check — a plain-language request to create a work item is routed to `/create-work-item` |
71
72
  | **Before any file write** | Secret blocker scans for hardcoded credentials and blocks them |
72
73
  | **Before any file edit** | Protected files guard warns/blocks edits to production configs |
73
74
  | **After any file edit** | Auto-formatter runs (dotnet format for .cs, eslint --fix for .ts) |
@@ -109,6 +110,14 @@ Claude maintains persistent memory across sessions in `~/.claude/projects/.../me
109
110
 
110
111
  **One worktree per ticket.** `/implement` and `/rework` never check out in the folder the session started in. Each ticket gets a sibling git worktree, `../{repo}-AB{id}` (e.g. `../CSIPay-AB5373`), where every build, test, and commit happens. It is removed once the branch is pushed, or kept with a note if anything is uncommitted or unpushed. That lets several sessions work different tickets in the same repo at once. Say **"work in place"** (or "no worktree") to opt a run out. Sessions sharing a repo still share **local ports and the Dev database** — two dev servers on one port, or two integration runs against Dev, will still collide.
111
112
 
113
+ ### Creating Work Items — Always Through `/create-work-item`
114
+
115
+ Every Feature, User Story, Bug, or Hot Fix Claude creates goes through `/create-work-item`, whether or not the user typed the command. "Log a bug that the export 500s", "make a story for bulk assign", "open a ticket for this" all mean: invoke `create-work-item` with the Skill tool, passing the request text as the arguments. Never create one with a direct `wit_work_item_write` call. That skips the prior-art and duplicate checks, the title prefix, the AC field, the proposed points, and the user's approval of the draft. The `work-item-intent.sh` hook adds a reminder to any prompt that reads like a creation request.
116
+
117
+ This includes items Claude decides to raise itself, such as a defect found mid-task or out-of-scope work. Propose it, and if the user agrees, run `/create-work-item` with what you found.
118
+
119
+ Work items a command creates as one of its own steps keep that command's flow: child Tasks from `/implement`, `/rework`, `/plan-backlog`, and `/plan-sprint`, and child stories from `/create-work-item` and `/edit-work-item`. A new Bug or Story requested in the middle of one of those commands still goes through `/create-work-item`.
120
+
112
121
  ### Story Points & Dev Ready Policy
113
122
 
114
123
  These rules apply to **every** command or flow that creates or estimates work items:
@@ -365,7 +374,7 @@ All deployment and release operations are available as slash commands:
365
374
  | `/plan-sprint` | `/plan-sprint [project]` | Sweep the current sprint for stories/bugs with no child tasks → propose one child task with hours per item |
366
375
  | `/quote-backlog` | `/quote-backlog [project]` | Sweep backlog for unpointed items ready to estimate — stories in `Design Approved`, **bugs in `New`** (bugs have no design states) → review completeness, check for duplicates, suggest rewrites, propose points + creator comments (10 at a time, approval-gated). Pointed items move to Dev Ready; stories that can't be quoted move back to **Design Review**, bugs that can't be quoted get a **`needs-info`** tag, so the next sweep skips them. Every run also audits the drop-out queue (tagged bugs **and** stories bounced to Design Review) and reports any whose creator answered but which nobody returned to the sweep — neither mechanism expires, so those are otherwise invisible forever |
367
376
  | `/quote` | `/quote AB#1234` | Estimate story points for one work item; on approval, sets the points and moves the item to Dev Ready. If it can't be estimated, offers to send a story back to **Design Review** or tag a bug **`needs-info`** |
368
- | `/create-work-item` | `/create-work-item [description]` | Interactively draft and create a Feature, Bug, User Story, or Hot Fix — proposes story points (user must agree) and creates pointed items in Dev Ready; on a Feature, also drafts its child stories with `Custom.Order` waves |
377
+ | `/create-work-item` | `/create-work-item [description]` | Interactively draft and create a Feature, Bug, User Story, or Hot Fix — proposes story points (user must agree) and creates pointed items in Dev Ready; on a Feature, also drafts its child stories with `Custom.Order` waves. Runs automatically for any plain-language request to create a work item |
369
378
  | `/edit-work-item` | `/edit-work-item AB#1234 [what to change]` | Revise an existing work item field-by-field. On a Feature, cascades the change into its child stories — updates, adds, retires, and re-sequences `Custom.Order` waves — with a safety gate on anything already past Dev Ready |
370
379
  | `/cleanup-branches` | `/cleanup-branches` | Delete merged branches |
371
380
  | `/close-orphan-tasks` | `/close-orphan-tasks [scope] [--dry-run]` | Close open Tasks whose parent is Ready to Deploy / Deployed / Closed |
@@ -108,6 +108,16 @@
108
108
  }
109
109
  ]
110
110
  }
111
+ ],
112
+ "UserPromptSubmit": [
113
+ {
114
+ "hooks": [
115
+ {
116
+ "type": "command",
117
+ "command": "bash .claude/hooks/work-item-intent.sh"
118
+ }
119
+ ]
120
+ }
111
121
  ]
112
122
  }
113
123
  }