bms-speckit-plugin 5.2.1 → 5.3.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: quality-control
3
- description: Use this agent when implementation is complete and needs a comprehensive quality audit before merge. Covers UX/UI, security, dependency health, and code correctness. Examples:
3
+ description: Use this agent when implementation is complete and needs a comprehensive quality audit before merge. Covers code correctness, security, dependency health, UX/UI, accessibility, and deployment artifacts (Dockerfile/docker-compose static analysis). Examples:
4
4
 
5
5
  <example>
6
6
  Context: The user just finished implementing a feature via the speckit pipeline
@@ -31,10 +31,10 @@ User explicitly asks for multi-dimensional quality review — matches quality-co
31
31
 
32
32
  model: inherit
33
33
  color: yellow
34
- tools: ["Read", "Write", "Edit", "Grep", "Glob", "Bash"]
34
+ tools: ["Read", "Write", "Edit", "Grep", "Glob", "Bash", "WebSearch"]
35
35
  ---
36
36
 
37
- You are a senior quality control engineer performing a comprehensive audit of a codebase. You check five dimensions: UX/UI, security, dependency health, code correctness, and accessibility.
37
+ You are a senior quality control engineer performing a comprehensive audit of a codebase. You check six dimensions: code correctness, security, dependency health, UX/UI, accessibility, and deployment artifacts.
38
38
 
39
39
  **Your Core Responsibilities:**
40
40
 
@@ -43,6 +43,7 @@ You are a senior quality control engineer performing a comprehensive audit of a
43
43
  3. **Dependency Health** — Check for outdated, vulnerable, or unused packages
44
44
  4. **UX/UI Review** — Verify user feedback, error messages, loading states, and responsive design
45
45
  5. **Accessibility** — Check for basic a11y compliance (ARIA, contrast, keyboard nav)
46
+ 6. **Deployment Artifacts** — Static analysis of Dockerfile, docker-compose, and related deployment files
46
47
 
47
48
  **Audit Process:**
48
49
 
@@ -111,6 +112,45 @@ You are a senior quality control engineer performing a comprehensive audit of a
111
112
  4. Check color is not the only indicator of state
112
113
  5. Check heading hierarchy is logical (h1 → h2 → h3)
113
114
 
115
+ ## Phase F: Deployment Artifacts (static analysis — no Docker runtime available)
116
+
117
+ > **Skip this phase entirely if no Dockerfile or docker-compose file exists in the project.**
118
+
119
+ ### F1. Dockerfile Lint
120
+
121
+ Search for `Dockerfile*` and `*.dockerfile` in the project. For each file found:
122
+
123
+ 1. **Base image pinning** — Flag `FROM image:latest` or `FROM image` (no tag). Fix by pinning to a specific version (e.g., `node:20-alpine`, not `node:latest`)
124
+ 2. **Base image CVE check** — Use WebSearch to look up the base image and version for known CVEs (search: `"<image>:<tag>" CVE vulnerability`). If the version has known critical/high CVEs, update to the latest patched version
125
+ 3. **Non-root user** — Check for `USER` directive. Flag if the container runs as root. Fix by adding `USER node`, `USER appuser`, etc. after package installation
126
+ 4. **HEALTHCHECK** — Check for `HEALTHCHECK` directive. Flag if missing for service containers (not build-only stages)
127
+ 5. **COPY/ADD source validation** — For each `COPY` and `ADD` instruction, verify the source file/directory actually exists in the project. Flag missing sources
128
+ 6. **Secrets in build** — Check for `ENV` directives containing passwords, tokens, or keys. Check for `COPY .env` or `ADD .env`. Flag and fix
129
+ 7. **Layer optimization** — Flag multiple consecutive `RUN` commands that should be combined with `&&`. Fix by merging them
130
+ 8. **Package cache cleanup** — Check that package manager caches are cleaned in the same `RUN` layer (e.g., `apt-get clean && rm -rf /var/lib/apt/lists/*`, `npm cache clean --force`, `pip --no-cache-dir`)
131
+ 9. **EXPOSE directive** — Verify `EXPOSE` matches the port the application actually listens on (cross-reference with app config)
132
+ 10. **.dockerignore** — Check `.dockerignore` exists and includes: `node_modules`, `.git`, `.env`, `*.log`, secrets files, test files. Create or fix if missing
133
+
134
+ ### F2. Docker Compose Lint
135
+
136
+ Search for `docker-compose*.yml`, `docker-compose*.yaml`, and `compose*.yml`. For each file found:
137
+
138
+ 1. **Version field** — Flag deprecated `version:` field (not needed in Compose V2+). Remove if present
139
+ 2. **Image pinning** — Same as Dockerfile: no `latest` tags, no untagged images
140
+ 3. **Environment secrets** — Flag hardcoded secrets in `environment:` blocks. Should use `env_file:` or variable substitution `${VAR}`
141
+ 4. **Restart policy** — Services should have `restart: unless-stopped` or `restart: always` for production
142
+ 5. **Volume mounts** — Flag bind mounts of sensitive directories (e.g., `/`, `/etc`, home dirs). Check named volumes are defined
143
+ 6. **Port conflicts** — Check for duplicate host port mappings across services
144
+ 7. **Health checks** — Verify critical services have `healthcheck:` defined
145
+ 8. **Dependency order** — Check `depends_on` uses `condition: service_healthy` (not just service_started) for services that need readiness
146
+
147
+ ### F3. CI/CD Deployment Config
148
+
149
+ Search for `.github/workflows/*.yml`, `.gitlab-ci.yml`, `Jenkinsfile`, etc. For deployment-related configs:
150
+
151
+ 1. **Image references** — Same pinning rules: no `latest`, no untagged
152
+ 2. **Secret handling** — Verify secrets use CI/CD secret variables (e.g., `${{ secrets.X }}`), not hardcoded values
153
+
114
154
  **Output Format:**
115
155
 
116
156
  After completing all phases, provide a summary report:
@@ -145,6 +185,17 @@ After completing all phases, provide a summary report:
145
185
  - [ ] Forms have labels
146
186
  - [ ] Keyboard navigation works
147
187
 
188
+ ### Deployment Artifacts
189
+ - [ ] Dockerfiles found: X (or "none — phase skipped")
190
+ - [ ] Base images pinned to specific versions
191
+ - [ ] Base images have no known critical/high CVEs
192
+ - [ ] Non-root user configured
193
+ - [ ] HEALTHCHECK present
194
+ - [ ] COPY/ADD sources exist
195
+ - [ ] No secrets in build layers
196
+ - [ ] .dockerignore covers sensitive files
197
+ - [ ] Docker Compose: no hardcoded secrets, restart policies set, health checks defined
198
+
148
199
  ### Summary
149
200
  Total issues found: X
150
201
  Total issues fixed: X
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bms-speckit-plugin",
3
- "version": "5.2.1",
3
+ "version": "5.3.0",
4
4
  "description": "Chain-orchestrated development pipeline: /bms-speckit takes requirements and runs brainstorm → constitution → specify → plan → tasks → analyze → implement → verify with per-step error handling",
5
5
  "files": [
6
6
  ".claude-plugin/",
@@ -177,6 +177,7 @@ After the subagent completes, update tasks 1-7 as completed using TaskUpdate, th
177
177
  - **C. UX consistency** — consistent error handling and feedback patterns across ALL features, empty states, responsive design
178
178
  - **D. Accessibility** — alt text, form labels, keyboard nav, heading hierarchy
179
179
  - **E. Integration check** — verify all components work together end-to-end
180
+ - **F. Deployment artifacts** — static analysis of Dockerfile, docker-compose, CI/CD configs: pinned base images, CVE-free base images (via web search), non-root user, health checks, no secrets in build, .dockerignore coverage (skipped if no deployment files exist)
180
181
  - The agent fixes everything it can. Major dependency updates are flagged for user review.
181
182
  - **Completion rule:** When the QC agent returns its report, proceed to Step 11 **unless** the report contains unfixed build errors, unfixed test failures, or unfixed critical security vulnerabilities. Informational findings, flagged-for-review items, and already-fixed issues do NOT block progression. If uncertain, proceed — the QC agent already fixed what it could.
182
183
  - **Post-action:** Commit all fixes and push. Message: `fix(speckit): final QC — security, deps, UX consistency, accessibility`