bms-speckit-plugin 6.1.0 → 6.2.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/agents/quality-control.md +37 -4
- package/package.json +1 -1
|
@@ -113,9 +113,40 @@ Grep source files for patterns where a value of one type is used where another t
|
|
|
113
113
|
- Check `.env` files are in `.gitignore`
|
|
114
114
|
- Check no credentials in committed code
|
|
115
115
|
3. Check for injection vulnerabilities:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
|
|
117
|
+
**SQL Injection — enforce parameterized queries:**
|
|
118
|
+
All SQL queries that include dynamic values MUST use parameterized queries (placeholders), never string concatenation or interpolation. Grep for these dangerous patterns and fix every match:
|
|
119
|
+
|
|
120
|
+
- **String concatenation in SQL:**
|
|
121
|
+
- JS/TS: `"SELECT..." + variable`, template literals with variables in SQL strings
|
|
122
|
+
- Python: `"SELECT..." + variable`, `"SELECT...%s" % variable`, f-strings in SQL, `.format()` in SQL
|
|
123
|
+
- Go: `fmt.Sprintf("SELECT...%s", variable)`
|
|
124
|
+
- Java: `"SELECT..." + variable`
|
|
125
|
+
- PHP: `"SELECT...$variable"`, `"SELECT..." . $variable`
|
|
126
|
+
|
|
127
|
+
- **Safe parameterized alternatives (what to replace with):**
|
|
128
|
+
- JS/TS (mysql2/pg): `db.query("SELECT * FROM t WHERE id = ?", [userId])`
|
|
129
|
+
- Python (DB-API): `cursor.execute("SELECT * FROM t WHERE id = %s", (userId,))`
|
|
130
|
+
- Python (SQLAlchemy): `session.execute(text("...WHERE id = :id"), {"id": userId})`
|
|
131
|
+
- Go: `db.Query("SELECT * FROM t WHERE id = $1", userId)`
|
|
132
|
+
- Java (JDBC): `PreparedStatement` with `?` placeholders
|
|
133
|
+
- PHP (PDO): `$stmt = $pdo->prepare("SELECT * FROM t WHERE id = ?");`
|
|
134
|
+
|
|
135
|
+
- **ORM/query builder misuse** — Even with ORMs, raw query methods can be vulnerable:
|
|
136
|
+
- Sequelize: `sequelize.query("SELECT..." + input)` — must use `replacements` or `bind`
|
|
137
|
+
- Prisma: `prisma.$queryRawUnsafe(...)` — flag all usages, prefer `$queryRaw` with tagged template
|
|
138
|
+
- TypeORM: `.query("SELECT..." + input)` — must use parameterized version
|
|
139
|
+
- Django: raw SQL with string concat — must use params tuple
|
|
140
|
+
- SQLAlchemy: raw SQL with string concat — must use `text()` with bind params
|
|
141
|
+
|
|
142
|
+
- **Exceptions (do NOT flag these):**
|
|
143
|
+
- Static SQL with no dynamic values: `"SELECT * FROM users WHERE active = 1"`
|
|
144
|
+
- Parameterized queries using placeholders: `?`, `$1`, `%s`, `:name`
|
|
145
|
+
- Table/column names from internal constants (not user input) — but add a comment explaining why it's safe
|
|
146
|
+
|
|
147
|
+
**XSS:** look for unescaped user input rendered as raw HTML — unsafe inner HTML setters, raw output directives in template engines, disabled auto-escaping
|
|
148
|
+
|
|
149
|
+
**Command injection:** look for shell invocations that pass unsanitized user input as arguments. Prefer array-based APIs over shell string execution.
|
|
119
150
|
4. Check authentication & authorization:
|
|
120
151
|
- API endpoints have proper auth guards
|
|
121
152
|
- Session handling is secure
|
|
@@ -213,7 +244,9 @@ After completing all phases, provide a summary report:
|
|
|
213
244
|
|
|
214
245
|
### Security
|
|
215
246
|
- [ ] No hardcoded secrets
|
|
216
|
-
- [ ]
|
|
247
|
+
- [ ] SQL: all queries use parameterized placeholders (no string concat/interpolation)
|
|
248
|
+
- [ ] XSS: no raw HTML rendering of user input
|
|
249
|
+
- [ ] Command injection: no unsanitized input in shell calls
|
|
217
250
|
- [ ] Dependencies have no known CVEs
|
|
218
251
|
- [ ] Auth properly implemented
|
|
219
252
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bms-speckit-plugin",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.2.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/",
|