@wbern/claude-instructions 2.4.0 → 2.5.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/README.md CHANGED
@@ -28,7 +28,13 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
28
28
 
29
29
  **TDD workflow commands for Claude Code CLI.**
30
30
 
31
- Test-Driven Development (TDD) gives you structure and confidence—a discipline proven by decades of practitioners from Extreme Programming to modern teams. These commands let Claude do the typing while you do the thinking.
31
+ Claude Code supports [custom slash commands](https://docs.anthropic.com/en/docs/claude-code/slash-commands)—type `/foo` and Claude receives the contents of `foo.md` as instructions (from `.claude/commands/` in your repo or `~/.claude/commands/` in your home directory). This repo provides ready-made commands for Test-Driven Development workflows.
32
+
33
+ While custom commands themselves is really just a glorified method of copy-paste, the way they can be used to bring stability to software development is what's worth trying out.
34
+
35
+ Instead of explaining TDD principles each session, type `/red` to write a failing test, `/green` to make it pass, `/refactor` to clean up. The commands guide Claude through each step methodically—you focus on what to build, Claude handles the how.
36
+
37
+ Also included are commands for commits, PRs, code reviews, and other tasks that come up during day-to-day development.
32
38
 
33
39
  ## Installation
34
40
 
@@ -63,7 +69,7 @@ Then add a postinstall script to your `package.json`:
63
69
  "postinstall": "npx @wbern/claude-instructions --scope=project --overwrite"
64
70
  },
65
71
  "devDependencies": {
66
- "@wbern/claude-instructions": "^1.0.0"
72
+ "@wbern/claude-instructions": "^2.5.0"
67
73
  }
68
74
  }
69
75
  ```
package/bin/cli.js CHANGED
@@ -117,18 +117,18 @@ import { createRequire } from "module";
117
117
 
118
118
  // scripts/cli.ts
119
119
  init_esm_shims();
120
+ import os2 from "os";
120
121
  import {
121
- select,
122
- text,
122
+ confirm,
123
123
  groupMultiselect,
124
- isCancel,
125
124
  intro,
126
- outro,
127
- confirm,
125
+ isCancel,
126
+ log,
128
127
  note,
129
- log
128
+ outro,
129
+ select,
130
+ text
130
131
  } from "@clack/prompts";
131
- import os2 from "os";
132
132
 
133
133
  // node_modules/.pnpm/diff@8.0.2/node_modules/diff/libesm/index.js
134
134
  init_esm_shims();
@@ -391,15 +391,17 @@ import * as v2 from "valibot";
391
391
 
392
392
  // scripts/cli-generator.ts
393
393
  init_esm_shims();
394
- import fs4 from "fs-extra";
394
+ import os from "os";
395
395
  import path4 from "path";
396
396
  import { fileURLToPath as fileURLToPath3 } from "url";
397
- import os from "os";
397
+ import fs4 from "fs-extra";
398
+ import { applyFixes } from "markdownlint";
399
+ import { lint } from "markdownlint/sync";
398
400
 
399
401
  // scripts/fragment-expander.ts
400
402
  init_esm_shims();
401
- import fs2 from "fs-extra";
402
403
  import path2 from "path";
404
+ import fs2 from "fs-extra";
403
405
 
404
406
  // scripts/utils.ts
405
407
  init_esm_shims();
@@ -606,7 +608,7 @@ function parseFrontmatter(content) {
606
608
  currentArray = [];
607
609
  continue;
608
610
  }
609
- if (key === "_order" && !isNaN(Number(value))) {
611
+ if (key === "_order" && !Number.isNaN(Number(value))) {
610
612
  value = parseInt(value, 10);
611
613
  }
612
614
  if (key === "_selectedByDefault") {
@@ -646,8 +648,6 @@ function generateCommandsMetadata() {
646
648
  }
647
649
 
648
650
  // scripts/cli-generator.ts
649
- import { lint } from "markdownlint/sync";
650
- import { applyFixes } from "markdownlint";
651
651
  var __filename3 = fileURLToPath3(import.meta.url);
652
652
  var __dirname3 = path4.dirname(__filename3);
653
653
  var SCOPES = {
@@ -987,7 +987,9 @@ ${allowedToolsYaml}
987
987
  if (template.commands && !template.commands.includes(commandName)) {
988
988
  continue;
989
989
  }
990
- content = content + "\n\n" + template.content;
990
+ content = `${content}
991
+
992
+ ${template.content}`;
991
993
  modified = true;
992
994
  }
993
995
  if (modified) {
@@ -1355,7 +1357,7 @@ async function main(args) {
1355
1357
  }
1356
1358
  if (selectedAllowedTools && selectedAllowedTools.length > 0) {
1357
1359
  parts.push(
1358
- `--allowed-tools=${selectedAllowedTools.join(",")}`
1360
+ `--allowed-tools="${selectedAllowedTools.join(",")}"`
1359
1361
  );
1360
1362
  }
1361
1363
  automationNote = `
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wbern/claude-instructions",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "TDD workflow commands for Claude Code CLI",
5
5
  "type": "module",
6
6
  "bin": "./bin/cli.js",
@@ -44,30 +44,27 @@
44
44
  "prepare": "husky"
45
45
  },
46
46
  "devDependencies": {
47
- "@eslint/js": "^9.39.1",
47
+ "@biomejs/biome": "^2.3.10",
48
48
  "@semantic-release/git": "^10.0.1",
49
49
  "@types/fs-extra": "^11.0.4",
50
- "@types/node": "^24.10.1",
51
- "@vitest/coverage-v8": "^4.0.15",
50
+ "@types/node": "^25.0.3",
51
+ "@vitest/coverage-v8": "^4.0.16",
52
52
  "diff": "^8.0.2",
53
- "eslint": "^9.39.1",
54
53
  "husky": "^9.1.7",
55
54
  "jscpd": "^4.0.5",
56
- "knip": "^5.70.2",
55
+ "knip": "^5.77.0",
57
56
  "lint-staged": "^16.2.7",
58
- "markdownlint-cli": "^0.46.0",
57
+ "markdownlint-cli": "^0.47.0",
59
58
  "picocolors": "^1.1.1",
60
- "prettier": "^3.7.2",
61
59
  "semantic-release": "^25.0.2",
62
60
  "tsup": "^8.5.1",
63
- "tsx": "^4.20.6",
61
+ "tsx": "^4.21.0",
64
62
  "typescript": "^5.9.3",
65
- "typescript-eslint": "^8.48.0",
66
- "vitest": "^4.0.15"
63
+ "vitest": "^4.0.16"
67
64
  },
68
65
  "dependencies": {
69
66
  "@clack/prompts": "^0.11.0",
70
- "fs-extra": "^11.3.2",
67
+ "fs-extra": "^11.3.3",
71
68
  "markdownlint": "^0.40.0",
72
69
  "valibot": "^1.2.0"
73
70
  },
package/src/README.md CHANGED
@@ -29,7 +29,13 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
29
29
 
30
30
  **TDD workflow commands for Claude Code CLI.**
31
31
 
32
- Test-Driven Development (TDD) gives you structure and confidence—a discipline proven by decades of practitioners from Extreme Programming to modern teams. These commands let Claude do the typing while you do the thinking.
32
+ Claude Code supports [custom slash commands](https://docs.anthropic.com/en/docs/claude-code/slash-commands)—type `/foo` and Claude receives the contents of `foo.md` as instructions (from `.claude/commands/` in your repo or `~/.claude/commands/` in your home directory). This repo provides ready-made commands for Test-Driven Development workflows.
33
+
34
+ While custom commands themselves is really just a glorified method of copy-paste, the way they can be used to bring stability to software development is what's worth trying out.
35
+
36
+ Instead of explaining TDD principles each session, type `/red` to write a failing test, `/green` to make it pass, `/refactor` to clean up. The commands guide Claude through each step methodically—you focus on what to build, Claude handles the how.
37
+
38
+ Also included are commands for commits, PRs, code reviews, and other tasks that come up during day-to-day development.
33
39
 
34
40
  ## Installation
35
41
 
@@ -64,7 +70,7 @@ Then add a postinstall script to your `package.json`:
64
70
  "postinstall": "npx @wbern/claude-instructions --scope=project --overwrite"
65
71
  },
66
72
  "devDependencies": {
67
- "@wbern/claude-instructions": "^1.0.0"
73
+ "@wbern/claude-instructions": "^<!-- docs VERSION --><!-- /docs -->"
68
74
  }
69
75
  }
70
76
  ```