agentic-sdlc-wizard 1.24.0 → 1.25.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.
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "sdlc-wizard-marketplace",
3
+ "owner": {
4
+ "name": "Stefan Ayala",
5
+ "email": "stefan@baseinfinity.dev"
6
+ },
7
+ "metadata": {
8
+ "description": "SDLC enforcement plugins for AI-assisted development",
9
+ "version": "1.0.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "sdlc-wizard",
14
+ "source": ".",
15
+ "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
16
+ "version": "1.25.0",
17
+ "author": {
18
+ "name": "Stefan Ayala"
19
+ },
20
+ "category": "productivity",
21
+ "tags": ["sdlc", "tdd", "code-quality", "testing"]
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "sdlc-wizard",
3
+ "version": "1.25.0",
4
+ "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
5
+ "author": {
6
+ "name": "Stefan Ayala",
7
+ "url": "https://github.com/BaseInfinity"
8
+ },
9
+ "repository": "https://github.com/BaseInfinity/agentic-ai-sdlc-wizard",
10
+ "license": "MIT",
11
+ "keywords": ["sdlc", "tdd", "code-quality", "ai-agent", "developer-tools"]
12
+ }
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ All notable changes to the SDLC Wizard.
4
4
 
5
5
  > **Note:** This changelog is for humans to read. Don't manually apply these changes - just run the wizard ("Check for SDLC wizard updates") and it handles everything automatically.
6
6
 
7
+ ## [1.25.0] - 2026-04-04
8
+
9
+ ### Added
10
+ - Claude Code plugin format — single source of truth: `skills/` and `hooks/` at repo root serve plugin + CLI. `.claude-plugin/plugin.json` manifest, `hooks/hooks.json` with `${CLAUDE_PLUGIN_ROOT}`, `.claude-plugin/marketplace.json` for self-hosted marketplace. Absorbs #66 + #87 (#89)
11
+ - 6 distribution channels — npm, plugin, curl install script, Homebrew tap, gh CLI extension, GitHub Releases (#90)
12
+ - `install.sh` curl-pipeable installer — download guard, strict mode, Node.js >= 18 check, `--global` flag, terminal-aware colors. 20 tests (structural + integration)
13
+ - `.github/workflows/release.yml` — tag-push automation with npm publish --provenance (SLSA), GitHub Release via softprops/action-gh-release@v2. 14 tests
14
+ - External repos: `BaseInfinity/homebrew-sdlc-wizard` (Homebrew tap), `BaseInfinity/gh-sdlc-wizard` (gh CLI extension)
15
+ - 25 plugin format tests, 34 distribution tests (20 install + 14 release workflow)
16
+
17
+ ### Fixed
18
+ - CI shepherd: enforce reading CI logs on pass AND fail (not just failures). Pre-release CI audit across merged PRs added to release planning gate
19
+
20
+ ### Changed
21
+ - CLI `init.js` reads skills/hooks from repo root (single source, no duplication)
22
+ - Dogfood `.claude/` uses symlinks to root skills/hooks
23
+ - README: added curl, Homebrew, gh extension, GitHub install methods
24
+ - CI_CD.md: added release.yml documentation + NPM_TOKEN secret
25
+
7
26
  ## [1.24.0] - 2026-04-04
8
27
 
9
28
  ### Added
@@ -2497,7 +2497,7 @@ If deployment fails or post-deploy verification catches issues:
2497
2497
 
2498
2498
  **SDLC.md:**
2499
2499
  ```markdown
2500
- <!-- SDLC Wizard Version: 1.24.0 -->
2500
+ <!-- SDLC Wizard Version: 1.25.0 -->
2501
2501
  <!-- Setup Date: [DATE] -->
2502
2502
  <!-- Completed Steps: step-0.1, step-0.2, step-0.4, step-1, step-2, step-3, step-4, step-5, step-6, step-7, step-8, step-9 -->
2503
2503
  <!-- Git Workflow: [PRs or Solo] -->
@@ -3414,7 +3414,7 @@ Walk through updates? (y/n)
3414
3414
  Store wizard state in `SDLC.md` as metadata comments (invisible to readers, parseable by Claude):
3415
3415
 
3416
3416
  ```markdown
3417
- <!-- SDLC Wizard Version: 1.24.0 -->
3417
+ <!-- SDLC Wizard Version: 1.25.0 -->
3418
3418
  <!-- Setup Date: 2026-01-24 -->
3419
3419
  <!-- Completed Steps: step-0.1, step-0.2, step-1, step-2, step-3, step-4, step-5, step-6, step-7, step-8, step-9 -->
3420
3420
  <!-- Git Workflow: PRs -->
package/README.md CHANGED
@@ -17,11 +17,34 @@ Then start (or restart) Claude Code — type `/exit` then `claude` to reload hoo
17
17
  <details>
18
18
  <summary>Alternative install methods</summary>
19
19
 
20
- **From GitHub (no npm needed):**
20
+ **curl (no npm install needed):**
21
+ ```bash
22
+ curl -fsSL https://raw.githubusercontent.com/BaseInfinity/agentic-ai-sdlc-wizard/main/install.sh | bash
23
+ ```
24
+
25
+ **Homebrew:**
26
+ ```bash
27
+ brew install BaseInfinity/sdlc-wizard/sdlc-wizard
28
+ sdlc-wizard init
29
+ ```
30
+
31
+ **GitHub CLI extension:**
32
+ ```bash
33
+ gh extension install BaseInfinity/gh-sdlc-wizard
34
+ gh sdlc-wizard init
35
+ ```
36
+
37
+ **From GitHub (no npm registry needed):**
21
38
  ```bash
22
39
  npx github:BaseInfinity/agentic-ai-sdlc-wizard init
23
40
  ```
24
41
 
42
+ **Install CLI globally:**
43
+ ```bash
44
+ npm install -g agentic-sdlc-wizard
45
+ sdlc-wizard init
46
+ ```
47
+
25
48
  **Manual:** Download `CLAUDE_CODE_SDLC_WIZARD.md` to your project and tell Claude `Run the SDLC wizard setup`.
26
49
  </details>
27
50
 
@@ -206,7 +229,7 @@ This isn't the only Claude Code SDLC tool. Here's an honest comparison:
206
229
  | Document | What It Covers |
207
230
  |----------|---------------|
208
231
  | [ARCHITECTURE.md](ARCHITECTURE.md) | System design, 5-layer diagram, data flows, file structure |
209
- | [CI_CD.md](CI_CD.md) | All 4 workflows, E2E scoring, tier system, SDP, integrity checks |
232
+ | [CI_CD.md](CI_CD.md) | All 5 workflows, E2E scoring, tier system, SDP, integrity checks |
210
233
  | [SDLC.md](SDLC.md) | Version tracking, enforcement rules, SDLC configuration |
211
234
  | [TESTING.md](TESTING.md) | Testing philosophy, test diamond, TDD approach |
212
235
  | [CHANGELOG.md](CHANGELOG.md) | Version history, what changed and when |
package/cli/init.js CHANGED
@@ -11,18 +11,21 @@ const YELLOW = '\x1b[33m';
11
11
  const MAGENTA = '\x1b[35m';
12
12
  const CYAN = '\x1b[36m';
13
13
 
14
+ const REPO_ROOT = path.join(__dirname, '..');
14
15
  const TEMPLATES_DIR = path.join(__dirname, 'templates');
15
- const WIZARD_DOC = path.join(__dirname, '..', 'CLAUDE_CODE_SDLC_WIZARD.md');
16
+ const WIZARD_DOC = path.join(REPO_ROOT, 'CLAUDE_CODE_SDLC_WIZARD.md');
16
17
 
18
+ // Skills and hooks live at repo root (single source of truth for both plugin and CLI)
19
+ // Only settings.json remains in cli/templates/ (CLI-specific hook config)
17
20
  const FILES = [
18
- { src: 'settings.json', dest: '.claude/settings.json' },
19
- { src: 'hooks/sdlc-prompt-check.sh', dest: '.claude/hooks/sdlc-prompt-check.sh', executable: true },
20
- { src: 'hooks/tdd-pretool-check.sh', dest: '.claude/hooks/tdd-pretool-check.sh', executable: true },
21
- { src: 'hooks/instructions-loaded-check.sh', dest: '.claude/hooks/instructions-loaded-check.sh', executable: true },
22
- { src: 'skills/sdlc/SKILL.md', dest: '.claude/skills/sdlc/SKILL.md' },
23
- { src: 'skills/setup/SKILL.md', dest: '.claude/skills/setup/SKILL.md' },
24
- { src: 'skills/update/SKILL.md', dest: '.claude/skills/update/SKILL.md' },
25
- { src: 'skills/feedback/SKILL.md', dest: '.claude/skills/feedback/SKILL.md' },
21
+ { src: 'settings.json', dest: '.claude/settings.json', base: TEMPLATES_DIR },
22
+ { src: 'hooks/sdlc-prompt-check.sh', dest: '.claude/hooks/sdlc-prompt-check.sh', executable: true, base: REPO_ROOT },
23
+ { src: 'hooks/tdd-pretool-check.sh', dest: '.claude/hooks/tdd-pretool-check.sh', executable: true, base: REPO_ROOT },
24
+ { src: 'hooks/instructions-loaded-check.sh', dest: '.claude/hooks/instructions-loaded-check.sh', executable: true, base: REPO_ROOT },
25
+ { src: 'skills/sdlc/SKILL.md', dest: '.claude/skills/sdlc/SKILL.md', base: REPO_ROOT },
26
+ { src: 'skills/setup/SKILL.md', dest: '.claude/skills/setup/SKILL.md', base: REPO_ROOT },
27
+ { src: 'skills/update/SKILL.md', dest: '.claude/skills/update/SKILL.md', base: REPO_ROOT },
28
+ { src: 'skills/feedback/SKILL.md', dest: '.claude/skills/feedback/SKILL.md', base: REPO_ROOT },
26
29
  ];
27
30
 
28
31
  const WIZARD_HOOK_MARKERS = FILES
@@ -80,7 +83,7 @@ function planOperations(targetDir, { force }) {
80
83
 
81
84
  for (const file of FILES) {
82
85
  const destPath = path.join(targetDir, file.dest);
83
- const srcPath = path.join(TEMPLATES_DIR, file.src);
86
+ const srcPath = path.join(file.base || TEMPLATES_DIR, file.src);
84
87
  const exists = fs.existsSync(destPath);
85
88
 
86
89
  if (exists && file.dest === '.claude/settings.json') {
@@ -245,7 +248,7 @@ function check(targetDir, { json = false } = {}) {
245
248
 
246
249
  for (const file of FILES) {
247
250
  const destPath = path.join(targetDir, file.dest);
248
- const srcPath = path.join(TEMPLATES_DIR, file.src);
251
+ const srcPath = path.join(file.base || TEMPLATES_DIR, file.src);
249
252
  results.push(checkFile(srcPath, destPath, file.dest, file.executable || false));
250
253
  }
251
254
 
@@ -0,0 +1,37 @@
1
+ {
2
+ "description": "SDLC Wizard enforcement hooks",
3
+ "hooks": {
4
+ "UserPromptSubmit": [
5
+ {
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/sdlc-prompt-check.sh"
10
+ }
11
+ ]
12
+ }
13
+ ],
14
+ "PreToolUse": [
15
+ {
16
+ "matcher": "Write|Edit|MultiEdit",
17
+ "hooks": [
18
+ {
19
+ "type": "command",
20
+ "if": "Write(src/**) Edit(src/**) MultiEdit(src/**)",
21
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/tdd-pretool-check.sh"
22
+ }
23
+ ]
24
+ }
25
+ ],
26
+ "InstructionsLoaded": [
27
+ {
28
+ "hooks": [
29
+ {
30
+ "type": "command",
31
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/instructions-loaded-check.sh"
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ }
37
+ }
package/package.json CHANGED
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "agentic-sdlc-wizard",
3
- "version": "1.24.0",
3
+ "version": "1.25.0",
4
4
  "description": "SDLC enforcement for Claude Code — hooks, skills, and wizard setup in one command",
5
5
  "bin": {
6
6
  "sdlc-wizard": "./cli/bin/sdlc-wizard.js"
7
7
  },
8
8
  "files": [
9
9
  "cli/",
10
+ "skills/",
11
+ "hooks/",
12
+ ".claude-plugin/",
10
13
  "CLAUDE_CODE_SDLC_WIZARD.md",
11
14
  "CHANGELOG.md"
12
15
  ],
@@ -45,14 +45,13 @@ Extract the latest version from the first `## [X.X.X]` line.
45
45
  Parse all CHANGELOG entries between the user's installed version and the latest. Present a clear summary:
46
46
 
47
47
  ```
48
- Installed: 1.22.0
49
- Latest: 1.24.0
48
+ Installed: 1.23.0
49
+ Latest: 1.25.0
50
50
 
51
51
  What changed:
52
+ - [1.25.0] Plugin format, 6 distribution channels (curl, Homebrew, gh, GitHub Releases), ...
52
53
  - [1.24.0] Hook if conditionals, autocompact tuning + 1M/200K guidance, tdd_red fix, ...
53
54
  - [1.23.0] Update notification hook, cross-model review standardization, ...
54
- - [1.22.0] Plan auto-approval, debugging workflow, /feedback skill, BRANDING.md detection, ...
55
- - [1.21.0] Confidence-driven setup, prove-it gate, cross-model release review, ...
56
55
  ```
57
56
 
58
57
  **If versions match:** Say "You're up to date! (version X.X.X)" and stop.
File without changes
File without changes