anti-slop-engineering 1.4.0 → 1.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/.skills.json +1 -1
- package/README.md +57 -5
- package/SKILL.md +1 -1
- package/bin/cli.js +20 -2
- package/dist/bin/anti-slop-rust +0 -0
- package/dist/bin/toil-guard +0 -0
- package/install.sh +4 -1
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/scripts/forensic_hunter.py +717 -0
- package/services/anti-slop-rust/Cargo.lock +1 -1
- package/services/anti-slop-rust/Cargo.toml +1 -1
- package/services/toil-guard-go/pkg/model/types.go +1 -1
- package/services/toil-guard-go/pkg/server/server.go +1 -1
- package/skills/install-anti-slop/SKILL.md +107 -0
- package/skills/install-anti-slop/assets/anti-slop/effect/index.ts +13 -0
- package/skills/install-anti-slop/assets/anti-slop/effect/rules/no-service-constructor-imports.ts +52 -0
- package/skills/install-anti-slop/assets/anti-slop/index.ts +41 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-chained-type-assertions.ts +77 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-conditional-empty-object-spread.ts +52 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-known-value-widening.ts +247 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-module-mocking.ts +91 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-object-parameters.ts +127 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-reflect-apply.ts +28 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-reflect-get.ts +28 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-runtime-typeof.ts +67 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-shape-in-symbol-names.ts +39 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-unknown-parameters.ts +85 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-unknown-returns.ts +116 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-unknown-type-aliases.ts +71 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-unsafe-dictionary-type.ts +139 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/no-widen-then-assert.ts +378 -0
- package/skills/install-anti-slop/assets/anti-slop/rules/require-safety-comment-for-type-assertion.ts +62 -0
- package/skills/install-anti-slop/assets/anti-slop/shared/dictionary-types.ts +512 -0
- package/skills/install-anti-slop/assets/anti-slop/shared/lexical-type-parameters.ts +61 -0
- package/skills/install-anti-slop/assets/anti-slop/shared/reflect-method.ts +35 -0
- package/skills/install-anti-slop/scripts/install.mjs +21 -0
- package/skills/paranoid-principal-architect/SKILL.md +4 -0
- package/skills/paranoid-principal-architect/playbooks/README.md +82 -0
- package/skills/paranoid-principal-architect/playbooks/architect-playbook.md +92 -0
- package/skills/paranoid-principal-architect/playbooks/devops-hunter-playbook.md +212 -0
- package/skills/paranoid-principal-architect/playbooks/references/stack-booby-traps.md +157 -0
- package/skills/paranoid-principal-architect/Playbook/paranoid_principal_architect_playbook.md +0 -92
package/.skills.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://skills.sh/schema.json",
|
|
3
3
|
"name": "anti-slop-engineering",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0",
|
|
5
5
|
"description": "An Engineering Discipline Playbook & Guard System for AI Coding Agents. Enforces Google SRE, Clean-Room Senior Dev Ladders, and Rust/Go Microservices.",
|
|
6
6
|
"repository": "https://github.com/imMamdouhaboammar/anti-slop-engineering",
|
|
7
7
|
"author": "Mamdouh Aboammar",
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
[](https://skills.sh)
|
|
13
13
|
[](https://claude.ai)
|
|
14
14
|
|
|
15
|
-
[Install](#install) · [What it catches](#what-it-catches) · [Engines](#engines) · [Decision Guard](#decision-guard) · [Root-Fix Gate](#root-fix-gate) · [Future-Scale Gate](#future-scale-gate) · [Paranoid Architect](#the-paranoid-principal-architect) · [Install Anti-Slop](#install-anti-slop-oxlint) · [Agent skill](#agent-skill) · [Anti-pattern catalog](#anti-pattern-catalog-217-patterns)
|
|
15
|
+
[Install](#install) · [What it catches](#what-it-catches) · [Engines](#engines) · [Decision Guard](#decision-guard) · [Root-Fix Gate](#root-fix-gate) · [Future-Scale Gate](#future-scale-gate) · [Paranoid Architect](#the-paranoid-principal-architect) · [Forensic Bug Hunter](#forensic-bug-hunter-scanner) · [Install Anti-Slop](#install-anti-slop-oxlint) · [Agent skill](#agent-skill) · [Anti-pattern catalog](#anti-pattern-catalog-217-patterns)
|
|
16
16
|
|
|
17
17
|
</div>
|
|
18
18
|
|
|
@@ -285,16 +285,68 @@ bunx anti-slop-engineering paranoid audit skills/paranoid-principal-architect/ex
|
|
|
285
285
|
|
|
286
286
|
---
|
|
287
287
|
|
|
288
|
+
## Forensic Bug Hunter Scanner
|
|
289
|
+
|
|
290
|
+
Zero-trust static analysis scanner across 9 application stacks detecting booby traps, concurrency leaks, race conditions, memory leaks, and EDoS vulnerabilities:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
# Scan git diff against base:
|
|
294
|
+
bunx anti-slop-engineering hunter --base HEAD
|
|
295
|
+
# Scan specific file or directory:
|
|
296
|
+
bunx anti-slop-engineering hunter --path src/
|
|
297
|
+
# Output machine-readable JSON:
|
|
298
|
+
bunx anti-slop-engineering hunter --json
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Modular playbooks and architectural checklists are located in [`skills/paranoid-principal-architect/playbooks/`](skills/paranoid-principal-architect/playbooks/).
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
288
305
|
## Install Anti-Slop (Oxlint)
|
|
289
306
|
|
|
290
|
-
|
|
307
|
+
Opinionated anti-slop Oxlint lint rules for TypeScript and JavaScript codebases. Catches runtime type assertion risks, unconstrained object parameters, type widening, and module mocking leaks at lint-time:
|
|
291
308
|
|
|
292
309
|
```bash
|
|
293
|
-
#
|
|
294
|
-
|
|
310
|
+
# 1. Install Oxlint plugin directly into your target repository (creates tools/oxlint/anti-slop/):
|
|
311
|
+
bunx anti-slop-engineering install-oxlint
|
|
312
|
+
# Or via npx:
|
|
313
|
+
npx anti-slop-engineering install-oxlint
|
|
295
314
|
```
|
|
296
315
|
|
|
297
|
-
Follow the procedure in [install-anti-slop](skills/install-anti-slop/SKILL.md) to register the bundled plugins (`anti-slop` and optional `anti-slop-effect`) directly into `oxlint.config.ts` or `.oxlintrc.json
|
|
316
|
+
Follow the procedure in [install-anti-slop](skills/install-anti-slop/SKILL.md) to register the bundled plugins (`anti-slop` and optional `anti-slop-effect`) directly into `oxlint.config.ts` or `.oxlintrc.json`:
|
|
317
|
+
|
|
318
|
+
```ts
|
|
319
|
+
// oxlint.config.ts or .oxlintrc.json
|
|
320
|
+
export default {
|
|
321
|
+
ignorePatterns: [
|
|
322
|
+
".agent/**",
|
|
323
|
+
".agents/**",
|
|
324
|
+
".claude/**",
|
|
325
|
+
".gemini/**",
|
|
326
|
+
"tools/oxlint/anti-slop/**"
|
|
327
|
+
],
|
|
328
|
+
jsPlugins: [
|
|
329
|
+
{ name: "anti-slop", specifier: "./tools/oxlint/anti-slop/index.ts" }
|
|
330
|
+
],
|
|
331
|
+
rules: {
|
|
332
|
+
"anti-slop/no-chained-type-assertions": "error",
|
|
333
|
+
"anti-slop/no-conditional-empty-object-spread": "error",
|
|
334
|
+
"anti-slop/no-known-value-widening": "error",
|
|
335
|
+
"anti-slop/no-module-mocking": "error",
|
|
336
|
+
"anti-slop/no-object-parameters": "error",
|
|
337
|
+
"anti-slop/no-reflect-apply": "error",
|
|
338
|
+
"anti-slop/no-reflect-get": "error",
|
|
339
|
+
"anti-slop/no-runtime-typeof": "error",
|
|
340
|
+
"anti-slop/no-shape-in-symbol-names": "error",
|
|
341
|
+
"anti-slop/no-unknown-parameters": "error",
|
|
342
|
+
"anti-slop/no-unknown-returns": "error",
|
|
343
|
+
"anti-slop/no-unknown-type-aliases": "error",
|
|
344
|
+
"anti-slop/no-unsafe-dictionary-type": "error",
|
|
345
|
+
"anti-slop/no-widen-then-assert": "error",
|
|
346
|
+
"anti-slop/require-safety-comment-for-type-assertion": "error"
|
|
347
|
+
}
|
|
348
|
+
};
|
|
349
|
+
```
|
|
298
350
|
|
|
299
351
|
---
|
|
300
352
|
|
package/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Prevent, detect, and repair AI coding slop and dirty engineering in
|
|
|
4
4
|
author: Mamdouh Aboammar <mamdouhfces1997@gmail.com>
|
|
5
5
|
license: MIT
|
|
6
6
|
metadata:
|
|
7
|
-
version: "1.
|
|
7
|
+
version: "1.5.0"
|
|
8
8
|
focus: "engineering-discipline"
|
|
9
9
|
repository: "https://github.com/imMamdouhaboammar/anti-slop-engineering"
|
|
10
10
|
---
|
package/bin/cli.js
CHANGED
|
@@ -17,7 +17,9 @@ const decisionGuardScript = resolve(rootDir, "scripts", "decision_guard.py");
|
|
|
17
17
|
const rootFixGuardScript = resolve(rootDir, "scripts", "root_fix_guard.py");
|
|
18
18
|
const futureScaleGuardScript = resolve(rootDir, "scripts", "future_scale_guard.py");
|
|
19
19
|
const paranoidGuardScript = resolve(rootDir, "scripts", "paranoid_guard.py");
|
|
20
|
+
const forensicHunterScript = resolve(rootDir, "scripts", "forensic_hunter.py");
|
|
20
21
|
const bumpVersionScript = resolve(rootDir, "scripts", "bump_version.py");
|
|
22
|
+
const installOxlintScript = resolve(rootDir, "skills", "install-anti-slop", "scripts", "install.mjs");
|
|
21
23
|
const nativeSuffix = process.platform === "win32" ? ".exe" : "";
|
|
22
24
|
const rustExecutable = "anti-slop-rust" + nativeSuffix;
|
|
23
25
|
const goExecutable = "toil-guard" + nativeSuffix;
|
|
@@ -30,13 +32,19 @@ const goBinPath = !disableNative && existsSync(resolve(rootDir, "dist", "bin", g
|
|
|
30
32
|
: (!disableNative ? resolve(rootDir, "services", "toil-guard-go", "bin", goExecutable) : "");
|
|
31
33
|
|
|
32
34
|
const invokedAs = basename(process.argv[1] ?? "").replace(/\.(?:js|cmd|exe)$/i, "");
|
|
33
|
-
const executableAliases = {
|
|
35
|
+
const executableAliases = {
|
|
36
|
+
"sre-guard": "sre",
|
|
37
|
+
"rust-guard": "rust",
|
|
38
|
+
"toil-guard": "toil",
|
|
39
|
+
"forensic-hunter": "hunter",
|
|
40
|
+
"forensic": "hunter",
|
|
41
|
+
};
|
|
34
42
|
const args = process.argv.slice(2);
|
|
35
43
|
if (executableAliases[invokedAs]) args.unshift(executableAliases[invokedAs]);
|
|
36
44
|
|
|
37
45
|
function printBanner() {
|
|
38
46
|
console.log(`
|
|
39
|
-
🛡️ Anti-Slop Engineering CLI (v1.
|
|
47
|
+
🛡️ Anti-Slop Engineering CLI (v1.5.0)
|
|
40
48
|
Clean-Room AI Coding Guard & High-Performance Polyglot Architecture
|
|
41
49
|
Engines: Standard Library Python Guard | Rust Microservice | Go Toil Guard
|
|
42
50
|
Author: Mamdouh Aboammar <mamdouhfces1997@gmail.com>
|
|
@@ -57,6 +65,8 @@ Commands:
|
|
|
57
65
|
root-fix audit <file> Check root-cause ownership, change plan and optional Git diff
|
|
58
66
|
future-scale audit <file> Check future operating envelope, reversibility and evolution proof
|
|
59
67
|
paranoid audit <file> Check a Paranoid Architect record for zero-trust and 10M scale compliance
|
|
68
|
+
hunter, forensic Run Zero-Trust Forensic Bug Hunter static scanner across 9 stacks
|
|
69
|
+
install-oxlint Install bundled Oxlint anti-slop plugin into target repo
|
|
60
70
|
bump [part] Bump version across all 10 manifests (patch, minor, major, or explicit)
|
|
61
71
|
test Run unit test suite
|
|
62
72
|
contribute Print guidelines on reporting noted slop or opening PRs
|
|
@@ -219,6 +229,14 @@ if (cmd === "build") {
|
|
|
219
229
|
runPythonScript(futureScaleGuardScript, args.slice(1), "future_scale_guard");
|
|
220
230
|
} else if (cmd === "paranoid") {
|
|
221
231
|
runPythonScript(paranoidGuardScript, args.slice(1), "paranoid_guard");
|
|
232
|
+
} else if (cmd === "hunter" || cmd === "forensic" || cmd === "forensic-hunter") {
|
|
233
|
+
runPythonScript(forensicHunterScript, args.slice(1), "forensic_hunter");
|
|
234
|
+
} else if (cmd === "install-oxlint" || cmd === "install-anti-slop") {
|
|
235
|
+
if (!existsSync(installOxlintScript)) {
|
|
236
|
+
console.error(`Error: install script not found at ${installOxlintScript}`);
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
spawnProcess("node", [installOxlintScript, ...args.slice(1)], "install_oxlint");
|
|
222
240
|
} else if (cmd === "bump") {
|
|
223
241
|
runPythonScript(bumpVersionScript, args.slice(1), "bump_version");
|
|
224
242
|
} else if (args.includes("--help") || args.includes("-h")) {
|
package/dist/bin/anti-slop-rust
CHANGED
|
Binary file
|
package/dist/bin/toil-guard
CHANGED
|
Binary file
|
package/install.sh
CHANGED
|
@@ -48,11 +48,14 @@ install_to() {
|
|
|
48
48
|
chmod +x "$dest/scripts/decision_guard.py" 2>/dev/null || true
|
|
49
49
|
chmod +x "$dest/scripts/root_fix_guard.py" 2>/dev/null || true
|
|
50
50
|
chmod +x "$dest/scripts/future_scale_guard.py" 2>/dev/null || true
|
|
51
|
+
chmod +x "$dest/scripts/paranoid_guard.py" 2>/dev/null || true
|
|
52
|
+
chmod +x "$dest/scripts/forensic_hunter.py" 2>/dev/null || true
|
|
53
|
+
chmod +x "$dest/skills/install-anti-slop/scripts/install.mjs" 2>/dev/null || true
|
|
51
54
|
chmod +x "$dest/install.sh" 2>/dev/null || true
|
|
52
55
|
echo " ✅ Installed anti-slop-engineering for ${label} -> ${dest}"
|
|
53
56
|
|
|
54
57
|
# Install each bundled module as a discoverable top-level skill.
|
|
55
|
-
for module in decision-guard root-fix-gate future-scale-gate; do
|
|
58
|
+
for module in decision-guard root-fix-gate future-scale-gate paranoid-principal-architect install-anti-slop; do
|
|
56
59
|
if [ -d "$SOURCE_DIR/skills/$module" ]; then
|
|
57
60
|
local module_dest="$(dirname "$dest")/$module"
|
|
58
61
|
rm -rf "$module_dest"
|
package/marketplace.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-plugin-manifest.json",
|
|
3
3
|
"name": "anti-slop-engineering",
|
|
4
4
|
"displayName": "Anti-Slop Engineering",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.5.0",
|
|
6
6
|
"description": "An Engineering Discipline Playbook, Agent Skill & Triage Guard for AI Coding Agents. Enforces behavioral contracts, focused diffs, test integrity, Google SRE principles, and native Rust/Go clean-room microservices.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Mamdouh Aboammar",
|