awesome-slash 3.8.0 → 3.8.2
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/.claude-plugin/marketplace.json +10 -10
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +18 -0
- package/README.md +1 -2
- package/adapters/opencode/install.sh +63 -4
- package/adapters/opencode-plugin/index.ts +1 -1
- package/bin/cli.js +3 -1
- package/lib/patterns/slop-patterns.js +18 -0
- package/meta/skills/maintain-cross-platform/SKILL.md +1 -3
- package/package.json +1 -1
- package/plugins/audit-project/.claude-plugin/plugin.json +1 -1
- package/plugins/audit-project/lib/patterns/slop-patterns.js +18 -0
- package/plugins/deslop/.claude-plugin/plugin.json +1 -1
- package/plugins/deslop/lib/patterns/slop-patterns.js +18 -0
- package/plugins/deslop/references/slop-categories.md +15 -0
- package/plugins/drift-detect/.claude-plugin/plugin.json +1 -1
- package/plugins/drift-detect/lib/patterns/slop-patterns.js +18 -0
- package/plugins/enhance/.claude-plugin/plugin.json +1 -1
- package/plugins/enhance/lib/patterns/slop-patterns.js +18 -0
- package/plugins/next-task/.claude-plugin/plugin.json +1 -1
- package/plugins/next-task/agents/implementation-agent.md +2 -2
- package/plugins/next-task/agents/simple-fixer.md +1 -1
- package/plugins/next-task/agents/test-coverage-checker.md +1 -1
- package/plugins/next-task/commands/next-task.md +125 -66
- package/plugins/next-task/hooks/hooks.json +1 -1
- package/plugins/next-task/lib/patterns/slop-patterns.js +18 -0
- package/plugins/next-task/skills/orchestrate-review/SKILL.md +1 -1
- package/plugins/perf/.claude-plugin/plugin.json +1 -1
- package/plugins/perf/lib/patterns/slop-patterns.js +18 -0
- package/plugins/repo-map/.claude-plugin/plugin.json +1 -1
- package/plugins/repo-map/lib/patterns/slop-patterns.js +18 -0
- package/plugins/ship/.claude-plugin/plugin.json +1 -1
- package/plugins/ship/commands/ship.md +1 -1
- package/plugins/ship/lib/patterns/slop-patterns.js +18 -0
- package/plugins/sync-docs/.claude-plugin/plugin.json +1 -1
- package/plugins/sync-docs/lib/patterns/slop-patterns.js +18 -0
- package/scripts/dev-install.js +116 -34
- package/scripts/validate-opencode-install.js +16 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "awesome-slash",
|
|
3
3
|
"description": "9 specialized plugins for AI workflow automation - task orchestration, PR workflow, slop detection, code review, drift detection, enhancement analysis, documentation sync, repo mapping, and perf investigations",
|
|
4
|
-
"version": "3.8.
|
|
4
|
+
"version": "3.8.2",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Avi Fenesh",
|
|
7
7
|
"url": "https://github.com/avifenesh"
|
|
@@ -26,63 +26,63 @@
|
|
|
26
26
|
"name": "next-task",
|
|
27
27
|
"source": "./plugins/next-task",
|
|
28
28
|
"description": "Master workflow orchestrator: autonomous workflow with model optimization (opus/sonnet/haiku), two-file state management, workflow enforcement gates, 14 specialist agents",
|
|
29
|
-
"version": "3.8.
|
|
29
|
+
"version": "3.8.2",
|
|
30
30
|
"category": "productivity"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"name": "ship",
|
|
34
34
|
"source": "./plugins/ship",
|
|
35
35
|
"description": "Complete PR workflow: commit to production, skips review when called from next-task, removes task from registry on cleanup, automatic rollback",
|
|
36
|
-
"version": "3.8.
|
|
36
|
+
"version": "3.8.2",
|
|
37
37
|
"category": "deployment"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"name": "deslop",
|
|
41
41
|
"source": "./plugins/deslop",
|
|
42
42
|
"description": "3-phase AI slop detection: regex patterns (HIGH), multi-pass analyzers (MEDIUM), CLI tools (LOW)",
|
|
43
|
-
"version": "3.8.
|
|
43
|
+
"version": "3.8.2",
|
|
44
44
|
"category": "development"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"name": "audit-project",
|
|
48
48
|
"source": "./plugins/audit-project",
|
|
49
49
|
"description": "Multi-agent iterative code review until zero issues remain",
|
|
50
|
-
"version": "3.8.
|
|
50
|
+
"version": "3.8.2",
|
|
51
51
|
"category": "development"
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
"name": "drift-detect",
|
|
55
55
|
"source": "./plugins/drift-detect",
|
|
56
56
|
"description": "Deep repository analysis to realign project plans with code reality - detects drift, gaps, and creates prioritized reconstruction plans",
|
|
57
|
-
"version": "3.8.
|
|
57
|
+
"version": "3.8.2",
|
|
58
58
|
"category": "productivity"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"name": "enhance",
|
|
62
62
|
"source": "./plugins/enhance",
|
|
63
63
|
"description": "Master enhancement orchestrator: parallel analyzer execution for plugins, agents, docs, CLAUDE.md, and prompts with unified reporting",
|
|
64
|
-
"version": "3.8.
|
|
64
|
+
"version": "3.8.2",
|
|
65
65
|
"category": "development"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"name": "sync-docs",
|
|
69
69
|
"source": "./plugins/sync-docs",
|
|
70
70
|
"description": "Standalone documentation sync: find outdated refs, update CHANGELOG, flag stale examples based on code changes",
|
|
71
|
-
"version": "3.8.
|
|
71
|
+
"version": "3.8.2",
|
|
72
72
|
"category": "development"
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
"name": "repo-map",
|
|
76
76
|
"source": "./plugins/repo-map",
|
|
77
77
|
"description": "AST-based repository map generation using ast-grep with incremental updates for faster drift analysis",
|
|
78
|
-
"version": "3.8.
|
|
78
|
+
"version": "3.8.2",
|
|
79
79
|
"category": "development"
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
"name": "perf",
|
|
83
83
|
"source": "./plugins/perf",
|
|
84
84
|
"description": "Rigorous performance investigation workflow with baselines, profiling, hypotheses, and evidence-backed decisions",
|
|
85
|
-
"version": "3.8.
|
|
85
|
+
"version": "3.8.2",
|
|
86
86
|
"category": "development"
|
|
87
87
|
}
|
|
88
88
|
]
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.8.2] - 2026-02-04
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Policy Questions Enforcement** - /next-task Phase 1 now explicitly requires all 3 policy questions (Source, Priority, Stop Point) with table and forbidden actions
|
|
14
|
+
- **Codex CLI Installer** - Fixed undefined `configPath` variable (should be `configDir`)
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- **XML Tag Consistency** - All 12 workflow phases now wrapped in consistent `<phase-N>` tags
|
|
18
|
+
- **Constructive Language** - Replaced "you are wrong" with guidance pointing to consequences table
|
|
19
|
+
- **Redundancy Reduction** - Consolidated duplicate forbidden actions lists
|
|
20
|
+
|
|
21
|
+
## [3.8.1] - 2026-02-04
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- **Stop Point Options** - Restored missing "Deployed" and "Production" options in OpenCode embedded policy
|
|
25
|
+
- **Phase 9 Review Loop** - Rewrote instructions to explicitly require spawning 4 parallel reviewer agents (code-quality, security, performance, test-coverage) instead of single generic reviewer
|
|
26
|
+
- **Agent Naming Consistency** - Standardized all references from legacy `deslop-work` to `deslop:deslop-agent` across 12 files (docs, configs, agent prompts)
|
|
27
|
+
|
|
10
28
|
## [3.8.0] - 2026-02-02
|
|
11
29
|
|
|
12
30
|
### Added
|
package/README.md
CHANGED
|
@@ -603,7 +603,7 @@ Every command works standalone. [`/deslop`](#deslop) cleans code without needing
|
|
|
603
603
|
|
|
604
604
|
## Installation
|
|
605
605
|
|
|
606
|
-
### Claude Code (Recommended)
|
|
606
|
+
### Claude Code (Recommended way)
|
|
607
607
|
|
|
608
608
|
```bash
|
|
609
609
|
/plugin marketplace add avifenesh/awesome-slash
|
|
@@ -700,7 +700,6 @@ This project is built on research, not guesswork.
|
|
|
700
700
|
|-------|------|
|
|
701
701
|
| Slop Patterns | [docs/reference/SLOP-PATTERNS.md](./docs/reference/SLOP-PATTERNS.md) |
|
|
702
702
|
| Agent Reference | [docs/reference/AGENTS.md](./docs/reference/AGENTS.md) |
|
|
703
|
-
| MCP Tools | [docs/reference/MCP-TOOLS.md](./docs/reference/MCP-TOOLS.md) |
|
|
704
703
|
|
|
705
704
|
---
|
|
706
705
|
|
|
@@ -12,10 +12,22 @@ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
|
12
12
|
|
|
13
13
|
# Use $HOME which works correctly on all platforms including Git Bash on Windows
|
|
14
14
|
# (Git Bash sets HOME to Unix-style path like /c/Users/username)
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
# OpenCode global config follows XDG Base Directory Specification:
|
|
16
|
+
# - Default: ~/.config/opencode/
|
|
17
|
+
# - Override: $XDG_CONFIG_HOME/opencode/ (if XDG_CONFIG_HOME is set and not empty/whitespace)
|
|
18
|
+
# Note: Must match logic in scripts/dev-install.js getOpenCodeConfigDir()
|
|
19
|
+
if [[ -n "${XDG_CONFIG_HOME}" && "${XDG_CONFIG_HOME}" =~ [^[:space:]] ]]; then
|
|
20
|
+
OPENCODE_CONFIG_DIR="${XDG_CONFIG_HOME}/opencode"
|
|
21
|
+
else
|
|
22
|
+
OPENCODE_CONFIG_DIR="${HOME}/.config/opencode"
|
|
23
|
+
fi
|
|
24
|
+
# OpenCode expects commands directly in commands/, not a subdirectory
|
|
25
|
+
OPENCODE_COMMANDS_DIR="${OPENCODE_CONFIG_DIR}/commands"
|
|
17
26
|
LIB_DIR="${OPENCODE_COMMANDS_DIR}/lib"
|
|
18
27
|
|
|
28
|
+
# Legacy path for cleanup (incorrect, pre-XDG location)
|
|
29
|
+
LEGACY_OPENCODE_DIR="${HOME}/.opencode"
|
|
30
|
+
|
|
19
31
|
# Detect OS for platform-specific notes
|
|
20
32
|
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" || "$OSTYPE" == "cygwin" ]]; then
|
|
21
33
|
IS_WINDOWS=true
|
|
@@ -235,17 +247,64 @@ else
|
|
|
235
247
|
fi
|
|
236
248
|
echo
|
|
237
249
|
|
|
250
|
+
# Clean up legacy paths (~/.opencode/ - incorrect, pre-XDG location)
|
|
251
|
+
echo "[CLEANUP] Checking for legacy installations..."
|
|
252
|
+
LEGACY_COMMANDS_DIR="${LEGACY_OPENCODE_DIR}/commands/awesome-slash"
|
|
253
|
+
LEGACY_PLUGINS_DIR="${LEGACY_OPENCODE_DIR}/plugins/awesome-slash"
|
|
254
|
+
LEGACY_AGENTS_DIR="${LEGACY_OPENCODE_DIR}/agents"
|
|
255
|
+
|
|
256
|
+
cleaned_legacy=false
|
|
257
|
+
if [ -d "$LEGACY_COMMANDS_DIR" ]; then
|
|
258
|
+
rm -rf "$LEGACY_COMMANDS_DIR"
|
|
259
|
+
echo " [DEL] Removed legacy ~/.opencode/commands/awesome-slash"
|
|
260
|
+
cleaned_legacy=true
|
|
261
|
+
fi
|
|
262
|
+
if [ -d "$LEGACY_PLUGINS_DIR" ]; then
|
|
263
|
+
rm -rf "$LEGACY_PLUGINS_DIR"
|
|
264
|
+
echo " [DEL] Removed legacy ~/.opencode/plugins/awesome-slash"
|
|
265
|
+
cleaned_legacy=true
|
|
266
|
+
fi
|
|
267
|
+
if [ -d "$LEGACY_AGENTS_DIR" ]; then
|
|
268
|
+
# Only remove known agent files, not the whole directory
|
|
269
|
+
# Must match list in scripts/dev-install.js knownAgents array
|
|
270
|
+
# Generated from: ls plugins/*/agents/*.md | xargs basename | sort -u
|
|
271
|
+
known_agents=(
|
|
272
|
+
'agent-enhancer.md' 'ci-fixer.md' 'ci-monitor.md' 'claudemd-enhancer.md'
|
|
273
|
+
'delivery-validator.md' 'deslop-agent.md' 'docs-enhancer.md' 'enhancement-orchestrator.md'
|
|
274
|
+
'enhancement-reporter.md' 'exploration-agent.md' 'hooks-enhancer.md' 'implementation-agent.md'
|
|
275
|
+
'map-validator.md' 'perf-analyzer.md' 'perf-code-paths.md' 'perf-investigation-logger.md'
|
|
276
|
+
'perf-orchestrator.md' 'perf-theory-gatherer.md' 'perf-theory-tester.md' 'plan-synthesizer.md'
|
|
277
|
+
'planning-agent.md' 'plugin-enhancer.md' 'prompt-enhancer.md' 'simple-fixer.md'
|
|
278
|
+
'skills-enhancer.md' 'sync-docs-agent.md' 'task-discoverer.md' 'test-coverage-checker.md'
|
|
279
|
+
'worktree-manager.md'
|
|
280
|
+
)
|
|
281
|
+
for agent in "${known_agents[@]}"; do
|
|
282
|
+
if [ -f "$LEGACY_AGENTS_DIR/$agent" ]; then
|
|
283
|
+
rm "$LEGACY_AGENTS_DIR/$agent"
|
|
284
|
+
cleaned_legacy=true
|
|
285
|
+
fi
|
|
286
|
+
done
|
|
287
|
+
if [ "$cleaned_legacy" = true ]; then
|
|
288
|
+
echo " [DEL] Removed legacy agent files from ~/.opencode/agents"
|
|
289
|
+
fi
|
|
290
|
+
fi
|
|
291
|
+
if [ "$cleaned_legacy" = false ]; then
|
|
292
|
+
echo " [OK] No legacy installations found"
|
|
293
|
+
fi
|
|
294
|
+
echo
|
|
295
|
+
|
|
238
296
|
# Success message
|
|
239
297
|
echo "[OK] Installation complete!"
|
|
240
298
|
echo
|
|
241
299
|
echo "[LIST] Installed Commands:"
|
|
242
|
-
for
|
|
300
|
+
for mapping in "${COMMAND_MAPPINGS[@]}"; do
|
|
301
|
+
IFS=':' read -r cmd _ _ <<< "$mapping"
|
|
243
302
|
echo " • /$cmd"
|
|
244
303
|
done
|
|
245
304
|
echo
|
|
246
305
|
echo "[NEXT] Next Steps:"
|
|
247
306
|
echo " 1. Start OpenCode TUI: opencode"
|
|
248
|
-
echo " 2. Use commands:
|
|
307
|
+
echo " 2. Use commands: /next-task, /ship, etc."
|
|
249
308
|
echo " 3. See help: cat $OPENCODE_COMMANDS_DIR/README.md"
|
|
250
309
|
echo
|
|
251
310
|
echo "[TIP] OpenCode Pro Tips:"
|
|
@@ -28,7 +28,7 @@ const AGENT_THINKING_CONFIG: Record<string, { budget: number; description: strin
|
|
|
28
28
|
|
|
29
29
|
// Analysis tier - moderate thinking (12k)
|
|
30
30
|
"exploration-agent": { budget: 12000, description: "Codebase exploration" },
|
|
31
|
-
"deslop-
|
|
31
|
+
"deslop-agent": { budget: 12000, description: "Slop detection" },
|
|
32
32
|
"test-coverage-checker": { budget: 12000, description: "Coverage analysis" },
|
|
33
33
|
"ci-fixer": { budget: 12000, description: "CI problem solving" },
|
|
34
34
|
|
package/bin/cli.js
CHANGED
|
@@ -513,6 +513,8 @@ Ask the user these questions using AskUserQuestion:
|
|
|
513
513
|
- Merged - Until PR is merged to main
|
|
514
514
|
- PR Created - Stop after creating PR
|
|
515
515
|
- Implemented - Stop after local implementation
|
|
516
|
+
- Deployed - Deploy to staging
|
|
517
|
+
- Production - Full production deployment
|
|
516
518
|
|
|
517
519
|
After user answers, proceed to Phase 2 with the selected policy.
|
|
518
520
|
|
|
@@ -795,7 +797,7 @@ function installForCodex(installDir) {
|
|
|
795
797
|
}
|
|
796
798
|
|
|
797
799
|
console.log('\n[OK] Codex CLI installation complete!');
|
|
798
|
-
console.log(` Config: ${
|
|
800
|
+
console.log(` Config: ${configDir}`);
|
|
799
801
|
console.log(` Skills: ${skillsDir}`);
|
|
800
802
|
console.log(' Access via: $next-task, $ship, $deslop, etc.\n');
|
|
801
803
|
return true;
|
|
@@ -275,6 +275,24 @@ const slopPatterns = {
|
|
|
275
275
|
description: 'Rust panic!("TODO: ...") placeholder'
|
|
276
276
|
},
|
|
277
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Rust: Bare .unwrap() calls without error context
|
|
280
|
+
* Can cause panics in production - prefer:
|
|
281
|
+
* - .unwrap_or(default) / .unwrap_or_else(|| ...)
|
|
282
|
+
* - .unwrap_or_default()
|
|
283
|
+
* - .expect("descriptive message")
|
|
284
|
+
* - ? operator for propagation
|
|
285
|
+
* - .ok() / .map() / .and_then() for transformation
|
|
286
|
+
*/
|
|
287
|
+
rust_bare_unwrap: {
|
|
288
|
+
pattern: /\.unwrap\(\s*\)(?!\s*\.)/,
|
|
289
|
+
exclude: ['*_test.rs', '*_tests.rs', '**/tests/**', '**/examples/**', '**/benches/**'],
|
|
290
|
+
severity: 'medium',
|
|
291
|
+
autoFix: 'flag',
|
|
292
|
+
language: 'rust',
|
|
293
|
+
description: 'Bare .unwrap() can panic - use .expect(), .unwrap_or(), or ? operator'
|
|
294
|
+
},
|
|
295
|
+
|
|
278
296
|
/**
|
|
279
297
|
* Python: raise NotImplementedError
|
|
280
298
|
*/
|
|
@@ -274,8 +274,7 @@ Same as RC but:
|
|
|
274
274
|
1. **mcp-server/index.js** - Add to TOOLS array and toolHandlers
|
|
275
275
|
2. **.claude-plugin/marketplace.json** - Add to `mcpServer.tools` array
|
|
276
276
|
3. **bin/cli.js** - Update MCP tools console output (OpenCode + Codex)
|
|
277
|
-
4. **
|
|
278
|
-
5. **README.md** - Add to MCP tools table if user-facing
|
|
277
|
+
4. **README.md** - Add to MCP tools table if user-facing
|
|
279
278
|
|
|
280
279
|
### If Library Module Changed
|
|
281
280
|
|
|
@@ -693,7 +692,6 @@ const toolHandlers = {
|
|
|
693
692
|
```
|
|
694
693
|
|
|
695
694
|
**3. Update docs:**
|
|
696
|
-
- `docs/reference/MCP-TOOLS.md` - Full tool documentation
|
|
697
695
|
- `README.md` - Add to features if user-facing
|
|
698
696
|
|
|
699
697
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "awesome-slash",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.2",
|
|
4
4
|
"description": "9 specialized plugins for AI workflow automation (drift detection + AST repo maps) - works with Claude Code, OpenCode, and Codex CLI",
|
|
5
5
|
"main": "lib/platform/detect-platform.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -275,6 +275,24 @@ const slopPatterns = {
|
|
|
275
275
|
description: 'Rust panic!("TODO: ...") placeholder'
|
|
276
276
|
},
|
|
277
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Rust: Bare .unwrap() calls without error context
|
|
280
|
+
* Can cause panics in production - prefer:
|
|
281
|
+
* - .unwrap_or(default) / .unwrap_or_else(|| ...)
|
|
282
|
+
* - .unwrap_or_default()
|
|
283
|
+
* - .expect("descriptive message")
|
|
284
|
+
* - ? operator for propagation
|
|
285
|
+
* - .ok() / .map() / .and_then() for transformation
|
|
286
|
+
*/
|
|
287
|
+
rust_bare_unwrap: {
|
|
288
|
+
pattern: /\.unwrap\(\s*\)(?!\s*\.)/,
|
|
289
|
+
exclude: ['*_test.rs', '*_tests.rs', '**/tests/**', '**/examples/**', '**/benches/**'],
|
|
290
|
+
severity: 'medium',
|
|
291
|
+
autoFix: 'flag',
|
|
292
|
+
language: 'rust',
|
|
293
|
+
description: 'Bare .unwrap() can panic - use .expect(), .unwrap_or(), or ? operator'
|
|
294
|
+
},
|
|
295
|
+
|
|
278
296
|
/**
|
|
279
297
|
* Python: raise NotImplementedError
|
|
280
298
|
*/
|
|
@@ -275,6 +275,24 @@ const slopPatterns = {
|
|
|
275
275
|
description: 'Rust panic!("TODO: ...") placeholder'
|
|
276
276
|
},
|
|
277
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Rust: Bare .unwrap() calls without error context
|
|
280
|
+
* Can cause panics in production - prefer:
|
|
281
|
+
* - .unwrap_or(default) / .unwrap_or_else(|| ...)
|
|
282
|
+
* - .unwrap_or_default()
|
|
283
|
+
* - .expect("descriptive message")
|
|
284
|
+
* - ? operator for propagation
|
|
285
|
+
* - .ok() / .map() / .and_then() for transformation
|
|
286
|
+
*/
|
|
287
|
+
rust_bare_unwrap: {
|
|
288
|
+
pattern: /\.unwrap\(\s*\)(?!\s*\.)/,
|
|
289
|
+
exclude: ['*_test.rs', '*_tests.rs', '**/tests/**', '**/examples/**', '**/benches/**'],
|
|
290
|
+
severity: 'medium',
|
|
291
|
+
autoFix: 'flag',
|
|
292
|
+
language: 'rust',
|
|
293
|
+
description: 'Bare .unwrap() can panic - use .expect(), .unwrap_or(), or ? operator'
|
|
294
|
+
},
|
|
295
|
+
|
|
278
296
|
/**
|
|
279
297
|
* Python: raise NotImplementedError
|
|
280
298
|
*/
|
|
@@ -14,6 +14,21 @@ Detailed reference for all slop patterns detected by the pipeline.
|
|
|
14
14
|
|
|
15
15
|
**Excludes**: Test files, CLI entry points, config files
|
|
16
16
|
|
|
17
|
+
### Unsafe Error Handling (Rust)
|
|
18
|
+
|
|
19
|
+
| Pattern | Severity | Better Alternatives |
|
|
20
|
+
|---------|----------|---------------------|
|
|
21
|
+
| `.unwrap()` | medium | `.expect("msg")`, `.unwrap_or(default)`, `?` operator |
|
|
22
|
+
|
|
23
|
+
Bare `.unwrap()` calls can cause panics in production. Prefer:
|
|
24
|
+
- `.expect("descriptive message")` - panic with context
|
|
25
|
+
- `.unwrap_or(default)` / `.unwrap_or_default()` - provide fallback
|
|
26
|
+
- `.unwrap_or_else(\|\| ...)` - lazy fallback computation
|
|
27
|
+
- `?` operator - propagate errors to caller
|
|
28
|
+
- `.ok()` / `.map()` / `.and_then()` - transform Result/Option
|
|
29
|
+
|
|
30
|
+
**Excludes**: Test files, examples, benchmarks
|
|
31
|
+
|
|
17
32
|
### Placeholder Code
|
|
18
33
|
|
|
19
34
|
| Pattern | Language | Severity |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drift-detect",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.2",
|
|
4
4
|
"description": "Deep repository analysis to realign project plans with actual code reality - discovers drift, gaps, and produces prioritized reconstruction plans",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Avi Fenesh",
|
|
@@ -275,6 +275,24 @@ const slopPatterns = {
|
|
|
275
275
|
description: 'Rust panic!("TODO: ...") placeholder'
|
|
276
276
|
},
|
|
277
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Rust: Bare .unwrap() calls without error context
|
|
280
|
+
* Can cause panics in production - prefer:
|
|
281
|
+
* - .unwrap_or(default) / .unwrap_or_else(|| ...)
|
|
282
|
+
* - .unwrap_or_default()
|
|
283
|
+
* - .expect("descriptive message")
|
|
284
|
+
* - ? operator for propagation
|
|
285
|
+
* - .ok() / .map() / .and_then() for transformation
|
|
286
|
+
*/
|
|
287
|
+
rust_bare_unwrap: {
|
|
288
|
+
pattern: /\.unwrap\(\s*\)(?!\s*\.)/,
|
|
289
|
+
exclude: ['*_test.rs', '*_tests.rs', '**/tests/**', '**/examples/**', '**/benches/**'],
|
|
290
|
+
severity: 'medium',
|
|
291
|
+
autoFix: 'flag',
|
|
292
|
+
language: 'rust',
|
|
293
|
+
description: 'Bare .unwrap() can panic - use .expect(), .unwrap_or(), or ? operator'
|
|
294
|
+
},
|
|
295
|
+
|
|
278
296
|
/**
|
|
279
297
|
* Python: raise NotImplementedError
|
|
280
298
|
*/
|
|
@@ -275,6 +275,24 @@ const slopPatterns = {
|
|
|
275
275
|
description: 'Rust panic!("TODO: ...") placeholder'
|
|
276
276
|
},
|
|
277
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Rust: Bare .unwrap() calls without error context
|
|
280
|
+
* Can cause panics in production - prefer:
|
|
281
|
+
* - .unwrap_or(default) / .unwrap_or_else(|| ...)
|
|
282
|
+
* - .unwrap_or_default()
|
|
283
|
+
* - .expect("descriptive message")
|
|
284
|
+
* - ? operator for propagation
|
|
285
|
+
* - .ok() / .map() / .and_then() for transformation
|
|
286
|
+
*/
|
|
287
|
+
rust_bare_unwrap: {
|
|
288
|
+
pattern: /\.unwrap\(\s*\)(?!\s*\.)/,
|
|
289
|
+
exclude: ['*_test.rs', '*_tests.rs', '**/tests/**', '**/examples/**', '**/benches/**'],
|
|
290
|
+
severity: 'medium',
|
|
291
|
+
autoFix: 'flag',
|
|
292
|
+
language: 'rust',
|
|
293
|
+
description: 'Bare .unwrap() can panic - use .expect(), .unwrap_or(), or ? operator'
|
|
294
|
+
},
|
|
295
|
+
|
|
278
296
|
/**
|
|
279
297
|
* Python: raise NotImplementedError
|
|
280
298
|
*/
|
|
@@ -377,7 +377,7 @@ implementation-agent (YOU ARE HERE)
|
|
|
377
377
|
↓
|
|
378
378
|
SubagentStop hook triggers automatically
|
|
379
379
|
↓
|
|
380
|
-
Pre-review gates: deslop-
|
|
380
|
+
Pre-review gates: deslop:deslop-agent + test-coverage-checker
|
|
381
381
|
↓
|
|
382
382
|
Phase 9 review loop (must approve)
|
|
383
383
|
↓
|
|
@@ -424,7 +424,7 @@ ${gitLog}
|
|
|
424
424
|
|
|
425
425
|
---
|
|
426
426
|
[STOP] STOPPING HERE - SubagentStop hook will trigger pre-review gates
|
|
427
|
-
→ deslop-
|
|
427
|
+
→ deslop:deslop-agent + test-coverage-checker (parallel)
|
|
428
428
|
→ Phase 9 review loop
|
|
429
429
|
→ delivery-validator
|
|
430
430
|
→ sync-docs:sync-docs-agent
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: simple-fixer
|
|
3
|
-
description: Execute simple, pre-defined code fixes. Use this agent when deslop-
|
|
3
|
+
description: Execute simple, pre-defined code fixes. Use this agent when deslop:deslop-agent or sync-docs:sync-docs-agent has a list of straightforward edits to apply.
|
|
4
4
|
tools: Read, Edit, Bash(git:*)
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
@@ -423,7 +423,7 @@ ${summary.recommendation}
|
|
|
423
423
|
## Integration Points
|
|
424
424
|
|
|
425
425
|
This agent is called:
|
|
426
|
-
1. **Before first review round** - In parallel with deslop-
|
|
426
|
+
1. **Before first review round** - In parallel with deslop:deslop-agent
|
|
427
427
|
2. Results passed to Phase 9 review loop for context
|
|
428
428
|
|
|
429
429
|
## Success Criteria
|