awesome-slash 2.8.1 → 2.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 +6 -6
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +12 -0
- package/README.md +3 -1
- package/bin/cli.js +3 -2
- package/mcp-server/index.js +169 -1
- package/package.json +1 -1
- package/plugins/deslop-around/.claude-plugin/plugin.json +1 -1
- package/plugins/enhance/.claude-plugin/plugin.json +1 -1
- package/plugins/next-task/.claude-plugin/plugin.json +1 -1
- package/plugins/project-review/.claude-plugin/plugin.json +1 -1
- package/plugins/reality-check/.claude-plugin/plugin.json +1 -1
- package/plugins/ship/.claude-plugin/plugin.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "awesome-slash",
|
|
3
3
|
"description": "Professional-grade slash commands for Claude Code with cross-platform support (OpenCode, Codex CLI)",
|
|
4
|
-
"version": "2.8.
|
|
4
|
+
"version": "2.8.2",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Avi Fenesh",
|
|
7
7
|
"url": "https://github.com/avifenesh"
|
|
@@ -13,35 +13,35 @@
|
|
|
13
13
|
"name": "next-task",
|
|
14
14
|
"source": "./plugins/next-task",
|
|
15
15
|
"description": "Master workflow orchestrator: autonomous workflow with model optimization (opus/sonnet/haiku), two-file state management, workflow enforcement gates, 14 specialist agents",
|
|
16
|
-
"version": "2.8.
|
|
16
|
+
"version": "2.8.2",
|
|
17
17
|
"category": "productivity"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"name": "ship",
|
|
21
21
|
"source": "./plugins/ship",
|
|
22
22
|
"description": "Complete PR workflow: commit to production, skips review when called from next-task, removes task from registry on cleanup, automatic rollback",
|
|
23
|
-
"version": "2.8.
|
|
23
|
+
"version": "2.8.2",
|
|
24
24
|
"category": "deployment"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"name": "deslop-around",
|
|
28
28
|
"source": "./plugins/deslop-around",
|
|
29
29
|
"description": "3-phase AI slop detection: regex patterns (HIGH), multi-pass analyzers (MEDIUM), CLI tools (LOW)",
|
|
30
|
-
"version": "2.8.
|
|
30
|
+
"version": "2.8.2",
|
|
31
31
|
"category": "development"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"name": "project-review",
|
|
35
35
|
"source": "./plugins/project-review",
|
|
36
36
|
"description": "Multi-agent iterative code review until zero issues remain",
|
|
37
|
-
"version": "2.8.
|
|
37
|
+
"version": "2.8.2",
|
|
38
38
|
"category": "development"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"name": "reality-check",
|
|
42
42
|
"source": "./plugins/reality-check",
|
|
43
43
|
"description": "Deep repository analysis to realign project plans with code reality - detects drift, gaps, and creates prioritized reconstruction plans",
|
|
44
|
-
"version": "2.8.
|
|
44
|
+
"version": "2.8.2",
|
|
45
45
|
"category": "productivity"
|
|
46
46
|
}
|
|
47
47
|
],
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.8.2] - 2025-01-23
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **MCP enhance_analyze Tool** - Cross-platform enhance support for OpenCode and Codex
|
|
14
|
+
- Runs plugin, agent, docs, claudemd, and prompt analyzers via MCP
|
|
15
|
+
- Options: `path`, `focus`, `mode` (report/apply), `compact`
|
|
16
|
+
- Deduplication and certainty-sorted output
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- **Documentation** - Added enhance plugin to INSTALLATION.md commands
|
|
20
|
+
- **Release Checklist** - Added "New Plugin Checklist" and "New MCP Tool Checklist" sections
|
|
21
|
+
|
|
10
22
|
## [2.8.1] - 2025-01-23
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ A cross-platform plugin providing powerful, zero-configuration slash commands fo
|
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/awesome-slash)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
|
-
[](https://github.com/avifenesh/awesome-slash/releases)
|
|
10
10
|
[](https://github.com/avifenesh/awesome-slash/stargazers)
|
|
11
11
|
[](https://docs.anthropic.com/en/docs/claude-code)
|
|
12
12
|
[](https://developers.openai.com/codex/cli)
|
|
@@ -409,6 +409,8 @@ All platforms share the same workflow tools via MCP (Model Context Protocol):
|
|
|
409
409
|
| `workflow_abort` | Cancel and cleanup |
|
|
410
410
|
| `task_discover` | Find and prioritize tasks |
|
|
411
411
|
| `review_code` | Run pattern-based code review |
|
|
412
|
+
| `slop_detect` | Detect AI slop patterns |
|
|
413
|
+
| `enhance_analyze` | Analyze plugins, agents, docs for enhancements |
|
|
412
414
|
|
|
413
415
|
See [docs/CROSS_PLATFORM.md](./docs/CROSS_PLATFORM.md) for details.
|
|
414
416
|
|
package/bin/cli.js
CHANGED
|
@@ -237,7 +237,8 @@ function installForOpenCode(installDir) {
|
|
|
237
237
|
console.log('✅ OpenCode installation complete!');
|
|
238
238
|
console.log(` Config: ${configPath}`);
|
|
239
239
|
console.log(` Commands: ${commandsDir}`);
|
|
240
|
-
console.log('
|
|
240
|
+
console.log(' Access via: /next-task, /ship, /deslop-around, /project-review, /reality-check-scan, /enhance');
|
|
241
|
+
console.log(' MCP tools: workflow_status, workflow_start, workflow_resume, task_discover, review_code, slop_detect, enhance_analyze\n');
|
|
241
242
|
return true;
|
|
242
243
|
}
|
|
243
244
|
|
|
@@ -370,7 +371,7 @@ AI_STATE_DIR = ".codex"
|
|
|
370
371
|
console.log(` Config: ${configPath}`);
|
|
371
372
|
console.log(` Skills: ${skillsDir}`);
|
|
372
373
|
console.log(' Access via: $next-task, $ship, $deslop-around, etc.');
|
|
373
|
-
console.log(' MCP tools: workflow_status, workflow_start, workflow_resume, task_discover, review_code, slop_detect\n');
|
|
374
|
+
console.log(' MCP tools: workflow_status, workflow_start, workflow_resume, task_discover, review_code, slop_detect, enhance_analyze\n');
|
|
374
375
|
return true;
|
|
375
376
|
}
|
|
376
377
|
|
package/mcp-server/index.js
CHANGED
|
@@ -26,6 +26,7 @@ const execAsync = promisify(exec);
|
|
|
26
26
|
const workflowState = require('../lib/state/workflow-state.js');
|
|
27
27
|
const { runPipeline, formatHandoffPrompt, CERTAINTY, THOROUGHNESS } = require('../lib/patterns/pipeline.js');
|
|
28
28
|
const crossPlatform = require('../lib/cross-platform/index.js');
|
|
29
|
+
const enhance = require('../lib/enhance/index.js');
|
|
29
30
|
|
|
30
31
|
// Plugin root for relative paths
|
|
31
32
|
const PLUGIN_ROOT = process.env.PLUGIN_ROOT || path.join(__dirname, '..');
|
|
@@ -162,6 +163,34 @@ const TOOLS = [
|
|
|
162
163
|
},
|
|
163
164
|
required: []
|
|
164
165
|
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'enhance_analyze',
|
|
169
|
+
description: 'Analyze plugins, agents, docs, or prompts for enhancement opportunities',
|
|
170
|
+
inputSchema: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
properties: {
|
|
173
|
+
path: {
|
|
174
|
+
type: 'string',
|
|
175
|
+
description: 'Directory to analyze (default: current directory)'
|
|
176
|
+
},
|
|
177
|
+
focus: {
|
|
178
|
+
type: 'string',
|
|
179
|
+
enum: ['all', 'plugin', 'agent', 'docs', 'claudemd', 'prompt'],
|
|
180
|
+
description: 'Which analyzer to run (default: all)'
|
|
181
|
+
},
|
|
182
|
+
mode: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
enum: ['report', 'apply'],
|
|
185
|
+
description: 'Report only or apply HIGH certainty fixes (default: report)'
|
|
186
|
+
},
|
|
187
|
+
compact: {
|
|
188
|
+
type: 'boolean',
|
|
189
|
+
description: 'Use compact output format (default: true)'
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
required: []
|
|
193
|
+
}
|
|
165
194
|
}
|
|
166
195
|
];
|
|
167
196
|
|
|
@@ -639,6 +668,145 @@ const toolHandlers = {
|
|
|
639
668
|
console.error('Error during slop detection:', error);
|
|
640
669
|
return crossPlatform.errorResponse('Slop detection failed. Check server logs.');
|
|
641
670
|
}
|
|
671
|
+
},
|
|
672
|
+
|
|
673
|
+
async enhance_analyze({ path: scanPath, focus, mode, compact }) {
|
|
674
|
+
try {
|
|
675
|
+
const targetPath = scanPath || process.cwd();
|
|
676
|
+
const analyzerFocus = focus || 'all';
|
|
677
|
+
const analyzeMode = mode || 'report';
|
|
678
|
+
|
|
679
|
+
// Validate path exists
|
|
680
|
+
try {
|
|
681
|
+
await fs.access(targetPath);
|
|
682
|
+
} catch (e) {
|
|
683
|
+
return crossPlatform.errorResponse(`Path not found: ${targetPath}`);
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
const allFindings = [];
|
|
687
|
+
const summary = { plugin: 0, agent: 0, docs: 0, claudemd: 0, prompt: 0 };
|
|
688
|
+
|
|
689
|
+
// Run analyzers based on focus
|
|
690
|
+
if (analyzerFocus === 'all' || analyzerFocus === 'plugin') {
|
|
691
|
+
try {
|
|
692
|
+
const result = enhance.analyzeAllPlugins(targetPath);
|
|
693
|
+
if (result && result.findings) {
|
|
694
|
+
allFindings.push(...result.findings.map(f => ({ ...f, analyzer: 'plugin' })));
|
|
695
|
+
summary.plugin = result.findings.length;
|
|
696
|
+
}
|
|
697
|
+
} catch (e) {
|
|
698
|
+
console.error('Plugin analyzer error:', e.message);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
if (analyzerFocus === 'all' || analyzerFocus === 'agent') {
|
|
703
|
+
try {
|
|
704
|
+
const result = enhance.analyzeAllAgents(targetPath);
|
|
705
|
+
if (result && result.findings) {
|
|
706
|
+
allFindings.push(...result.findings.map(f => ({ ...f, analyzer: 'agent' })));
|
|
707
|
+
summary.agent = result.findings.length;
|
|
708
|
+
}
|
|
709
|
+
} catch (e) {
|
|
710
|
+
console.error('Agent analyzer error:', e.message);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
if (analyzerFocus === 'all' || analyzerFocus === 'docs') {
|
|
715
|
+
try {
|
|
716
|
+
const result = enhance.analyzeAllDocs(targetPath);
|
|
717
|
+
if (result && result.findings) {
|
|
718
|
+
allFindings.push(...result.findings.map(f => ({ ...f, analyzer: 'docs' })));
|
|
719
|
+
summary.docs = result.findings.length;
|
|
720
|
+
}
|
|
721
|
+
} catch (e) {
|
|
722
|
+
console.error('Docs analyzer error:', e.message);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
if (analyzerFocus === 'all' || analyzerFocus === 'claudemd') {
|
|
727
|
+
try {
|
|
728
|
+
const result = enhance.analyzeProjectMemory(targetPath);
|
|
729
|
+
if (result && result.findings) {
|
|
730
|
+
allFindings.push(...result.findings.map(f => ({ ...f, analyzer: 'claudemd' })));
|
|
731
|
+
summary.claudemd = result.findings.length;
|
|
732
|
+
}
|
|
733
|
+
} catch (e) {
|
|
734
|
+
console.error('Project memory analyzer error:', e.message);
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
if (analyzerFocus === 'all' || analyzerFocus === 'prompt') {
|
|
739
|
+
try {
|
|
740
|
+
const result = enhance.analyzeAllPrompts(targetPath);
|
|
741
|
+
if (result && result.findings) {
|
|
742
|
+
allFindings.push(...result.findings.map(f => ({ ...f, analyzer: 'prompt' })));
|
|
743
|
+
summary.prompt = result.findings.length;
|
|
744
|
+
}
|
|
745
|
+
} catch (e) {
|
|
746
|
+
console.error('Prompt analyzer error:', e.message);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// Deduplicate if running all analyzers
|
|
751
|
+
let findings = allFindings;
|
|
752
|
+
if (analyzerFocus === 'all' && enhance.deduplicateOrchestratorFindings) {
|
|
753
|
+
findings = enhance.deduplicateOrchestratorFindings(allFindings);
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
// Sort by certainty
|
|
757
|
+
const certaintyOrder = { HIGH: 0, MEDIUM: 1, LOW: 2 };
|
|
758
|
+
findings.sort((a, b) => (certaintyOrder[a.certainty] || 2) - (certaintyOrder[b.certainty] || 2));
|
|
759
|
+
|
|
760
|
+
// Apply fixes if requested
|
|
761
|
+
let fixResults = null;
|
|
762
|
+
if (analyzeMode === 'apply') {
|
|
763
|
+
const highCertaintyFixes = findings.filter(f => f.certainty === 'HIGH' && f.autoFix);
|
|
764
|
+
if (highCertaintyFixes.length > 0) {
|
|
765
|
+
fixResults = { attempted: highCertaintyFixes.length, applied: 0 };
|
|
766
|
+
for (const fix of highCertaintyFixes) {
|
|
767
|
+
try {
|
|
768
|
+
if (fix.analyzer === 'plugin') enhance.applyFixes([fix]);
|
|
769
|
+
else if (fix.analyzer === 'agent') enhance.agentApplyFixes([fix]);
|
|
770
|
+
else if (fix.analyzer === 'docs') enhance.docsApplyFixes([fix]);
|
|
771
|
+
else if (fix.analyzer === 'claudemd') enhance.projectMemoryApplyFixes([fix]);
|
|
772
|
+
else if (fix.analyzer === 'prompt') enhance.promptApplyFixes([fix]);
|
|
773
|
+
fixResults.applied++;
|
|
774
|
+
} catch (e) {
|
|
775
|
+
console.error(`Fix failed for ${fix.file}:`, e.message);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
// Format output
|
|
782
|
+
const useCompact = compact !== false;
|
|
783
|
+
const byCertainty = { HIGH: 0, MEDIUM: 0, LOW: 0 };
|
|
784
|
+
findings.forEach(f => { byCertainty[f.certainty] = (byCertainty[f.certainty] || 0) + 1; });
|
|
785
|
+
|
|
786
|
+
return crossPlatform.successResponse({
|
|
787
|
+
path: targetPath,
|
|
788
|
+
focus: analyzerFocus,
|
|
789
|
+
mode: analyzeMode,
|
|
790
|
+
total: findings.length,
|
|
791
|
+
byCertainty,
|
|
792
|
+
byAnalyzer: summary,
|
|
793
|
+
autoFixable: findings.filter(f => f.autoFix).length,
|
|
794
|
+
fixResults,
|
|
795
|
+
findings: useCompact
|
|
796
|
+
? findings.slice(0, 30).map(f => ({
|
|
797
|
+
file: f.file,
|
|
798
|
+
line: f.line,
|
|
799
|
+
certainty: f.certainty,
|
|
800
|
+
issue: f.issue,
|
|
801
|
+
analyzer: f.analyzer
|
|
802
|
+
}))
|
|
803
|
+
: findings.slice(0, 50)
|
|
804
|
+
});
|
|
805
|
+
|
|
806
|
+
} catch (error) {
|
|
807
|
+
console.error('Error during enhance analysis:', error);
|
|
808
|
+
return crossPlatform.errorResponse('Enhance analysis failed. Check server logs.');
|
|
809
|
+
}
|
|
642
810
|
}
|
|
643
811
|
};
|
|
644
812
|
|
|
@@ -647,7 +815,7 @@ async function main() {
|
|
|
647
815
|
const server = new Server(
|
|
648
816
|
{
|
|
649
817
|
name: 'awesome-slash',
|
|
650
|
-
version: '2.8.
|
|
818
|
+
version: '2.8.2',
|
|
651
819
|
},
|
|
652
820
|
{
|
|
653
821
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reality-check",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.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",
|