@stefanoginella/auto-bmad 0.1.15 → 0.1.18

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.
Files changed (3) hide show
  1. package/README.md +5 -46
  2. package/cli.js +6 -6
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Automated (and very opinionated) BMAD pipeline orchestration for Claude Code.
6
6
 
7
- Four sequential pipeline commands that drive the BMAD software development lifecycle — from planning through story delivery — plus a safe-bash auto-approval hook for frictionless autonomous execution.
7
+ Four sequential pipeline commands that drive the BMAD software development lifecycle — from planning through story delivery.
8
8
 
9
9
  > 👀 The pipelines are quite long and token hungry (the story pipeline alone can run for more than 60 minutes). Some steps might seem redundant, but I am satisfied with the code quality and consistency I get out of this. I recommend having a Claude Code Max x5 or x20 subscription to not hit limits mid-run.
10
10
 
@@ -87,14 +87,12 @@ The pipelines are based on the [BMAD Method](https://github.com/bmad-code-org/BM
87
87
  From the [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) marketplace.
88
88
 
89
89
  - **context7** — Live documentation lookups for library APIs. Used during architecture creation (plan) and story development (story). Without it, agents rely on training data instead of current docs.
90
- - **semgrep** — Security scanning in the story pipeline. Without it, the security scan step is skipped.
91
90
  - **security-guidance** — Security best practice recommendations during story development.
92
91
  - Any relevant `lsp` plugin(s) for your codebase — used during story development for linting and test feedback. They can improve the code quality and feedback loop, but are not strictly required since the pipelines also include manual lint and test steps.
93
92
 
94
93
  ### Required and optional CLI tools
95
94
 
96
- - `jq` (required) - JSON processing in bash steps. Needed by the pipelines and the safe bash auto-approval hook.
97
- - `semgrep` (optional) - security scanning. Needed if you have the semgrep plugin and want to run the security scan step in the story pipeline.
95
+ - `jq` (required) - JSON processing in bash steps. Needed by the pipelines.
98
96
  - Any relevant CLI tool (optional) needed by your LSP plugin(s).
99
97
 
100
98
  ### Project Requirements
@@ -106,51 +104,12 @@ The pipelines expect BMAD configuration files in the project:
106
104
 
107
105
  These files are normally created by the BMAD CLI when initializing BMAD in a project. The pipelines rely on the standard structure and paths defined by these configs, so custom configurations may require pipeline adjustments.
108
106
 
109
- ## 🔒 Hooks
110
-
111
- ### Safe Bash Auto-Approval (PreToolUse)
112
-
113
- Auto-approves bash commands matching a known-safe and non-destructive prefix list to reduce false-positive sandbox prompts during autonomous pipeline execution. This is a lightweight heuristic, not a full sandbox bypass.
114
-
115
- **Default safe list:**
116
-
117
- | Group | Match | Commands |
118
- |-------|-------|----------|
119
- | **Git** | Exact | `git diff` · `git fetch` · `git log` · `git status` |
120
- | | Prefix | `git -C` · `git add` · `git commit` · `git diff` · `git diff-tree` · `git fetch` · `git log` · `git rev-parse` · `git show` · `git status` · `git tag` |
121
- | **Docker & Compose** | Exact | `docker compose build` · `docker compose config` · `docker compose down` · `docker compose images` · `docker compose logs` · `docker compose ls` · `docker compose ps` · `docker compose pull` · `docker compose top` · `docker compose up` · `docker compose version` · `docker images` · `docker ps` · `docker version` |
122
- | | Prefix | `docker compose build` · `docker compose config` · `docker compose exec` · `docker compose logs` · `docker compose ps` · `docker compose pull` · `docker compose top` · `docker compose up` · `docker inspect` · `docker logs` · `docker ps` |
123
- | **File reading** | Prefix | `cat` · `file` · `head` · `stat` · `tail` · `wc` |
124
- | **File system** | Prefix | `chmod` · `cp` · `mkdir` · `mv` · `touch` |
125
- | **Search & filtering** | Prefix | `find` · `grep` · `sort` · `uniq` |
126
- | **Text processing** | Prefix | `awk` · `cut` · `diff` · `echo` · `jq` · `sed` · `tr` |
127
- | **Path utilities** | Prefix | `basename` · `dirname` · `realpath` |
128
- | **Directory listing** | Exact | `ls` · `pwd` · `tree` |
129
- | | Prefix | `ls` · `tree` |
130
- | **System & environment** | Exact | `date` · `uname` |
131
- | | Prefix | `date` · `du` · `timeout` · `uname` · `which` |
132
- | **Security scanning** | Prefix | `semgrep` |
133
-
134
- **Customizing the safe list:** Create `.claude/auto-bmad-safe-prefixes.txt` in your project to add entries without modifying the plugin:
135
-
136
- ```
137
- # Lines starting with "= " are exact matches (bare commands)
138
- # All other lines are prefix matches (must end with a trailing space)
139
- # Empty lines and comments (#) are ignored
140
-
141
- = docker compose restart
142
- npm install
143
- npx vitest
144
- ```
145
-
146
107
  ## 🔐 Permissions
147
108
 
148
- The pipelines run various bash commands (depending on the project), skills and MCP that Claude Code will prompt you to approve if they are not already approved.
149
-
150
- Many bash commands are already pre-approved by the safe bash auto-approval hook, but some might still require manual approval, especially if you have custom steps or a unique project setup that involves commands not in the default safe list. For the first few runs in a new project, expect several approval prompts as the allow list builds up. After that, things stabilize and the pipelines run fully autonomously.
109
+ The pipelines run various bash commands (depending on the project), skills and MCP that Claude Code will prompt you to approve if they are not already approved. For the first few runs in a new project, expect several approval prompts as the allow list builds up. After that, things stabilize and the pipelines run more autonomously.
151
110
 
152
- > ⚠️ Alternatively, you can run Claude Code in "dangerously skip permissions" mode (`--dangerously-skip-permissions`), but do so at your own risk — this disables **all** permission checks, not just the ones above. Only use it in an isolated environment like a VM or container.
111
+ > ⚠️ Alternatively, you can run Claude Code in "dangerously skip permissions" mode (`--dangerously-skip-permissions`), but do so at your own risk — this disables **all** permission checks. Only use it in an isolated environment like a VM or container.
153
112
 
154
113
  ## 📄 License
155
114
 
156
- [MIT](../../LICENSE)
115
+ MIT
package/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const { execSync, execFileSync } = require("child_process");
2
+ const { execFileSync } = require("child_process");
3
3
  const { createInterface } = require("readline");
4
4
 
5
5
  const PLUGIN_NAME = "auto-bmad";
@@ -14,8 +14,8 @@ const YELLOW = noColor ? "" : "\x1b[33m";
14
14
  const BOLD = noColor ? "" : "\x1b[1m";
15
15
  const RESET = noColor ? "" : "\x1b[0m";
16
16
 
17
- function run(cmd, opts = {}) {
18
- return execSync(cmd, { stdio: "inherit", ...opts });
17
+ function run(args, opts = {}) {
18
+ return execFileSync(args[0], args.slice(1), { stdio: "inherit", ...opts });
19
19
  }
20
20
 
21
21
  function claudeExists() {
@@ -48,7 +48,7 @@ async function main() {
48
48
  if (process.argv.includes("--uninstall")) {
49
49
  console.log(`Uninstalling ${PLUGIN_NAME}...`);
50
50
  try {
51
- run(`claude plugin uninstall "${PLUGIN_NAME}@${MARKETPLACE}"`);
51
+ run(["claude", "plugin", "uninstall", `${PLUGIN_NAME}@${MARKETPLACE}`]);
52
52
  console.log(`${GREEN}${PLUGIN_NAME} uninstalled.${RESET}`);
53
53
  } catch {
54
54
  console.log(`${PLUGIN_NAME} is not installed.`);
@@ -74,12 +74,12 @@ async function main() {
74
74
 
75
75
  // Add marketplace (idempotent)
76
76
  console.log(`Adding marketplace ${MARKETPLACE_REPO}...`);
77
- try { run(`claude plugin marketplace add "${MARKETPLACE_REPO}"`, { stdio: "pipe" }); } catch {}
77
+ try { run(["claude", "plugin", "marketplace", "add", MARKETPLACE_REPO], { stdio: "pipe" }); } catch {}
78
78
 
79
79
  // Install plugin
80
80
  console.log("Installing plugin...");
81
81
  try {
82
- run(`claude plugin install "${PLUGIN_NAME}@${MARKETPLACE}" --scope ${scope}`);
82
+ run(["claude", "plugin", "install", `${PLUGIN_NAME}@${MARKETPLACE}`, "--scope", scope]);
83
83
  console.log();
84
84
  console.log(`${GREEN}${BOLD}${PLUGIN_NAME} installed successfully.${RESET}`);
85
85
  console.log();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stefanoginella/auto-bmad",
3
- "version": "0.1.15",
3
+ "version": "0.1.18",
4
4
  "description": "Installs the auto-bmad Claude Code plugin — automated BMAD pipeline orchestration",
5
5
  "bin": {
6
6
  "auto-bmad": "cli.js"