awesome-slash 3.3.3 → 3.4.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/.claude-plugin/marketplace.json +42 -12
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +26 -8
- package/README.md +42 -5
- package/adapters/opencode-plugin/index.ts +2 -0
- package/bin/cli.js +8 -5
- package/lib/enhance/hook-analyzer.js +135 -0
- package/lib/enhance/hook-patterns.js +40 -0
- package/lib/enhance/index.js +14 -0
- package/lib/enhance/reporter.js +1 -1
- package/lib/enhance/skill-analyzer.js +144 -0
- package/lib/enhance/skill-patterns.js +51 -0
- package/lib/index.js +2 -0
- package/lib/perf/analyzer/index.js +22 -0
- package/lib/perf/argument-parser.js +105 -0
- package/lib/perf/baseline-comparator.js +50 -0
- package/lib/perf/baseline-store.js +127 -0
- package/lib/perf/benchmark-runner.js +380 -0
- package/lib/perf/breaking-point-finder.js +52 -0
- package/lib/perf/breaking-point-runner.js +60 -0
- package/lib/perf/checkpoint.js +123 -0
- package/lib/perf/code-paths.js +86 -0
- package/lib/perf/consolidation.js +37 -0
- package/lib/perf/constraint-runner.js +71 -0
- package/lib/perf/experiment-runner.js +32 -0
- package/lib/perf/index.js +41 -0
- package/lib/perf/investigation-state.js +839 -0
- package/lib/perf/optimization-runner.js +79 -0
- package/lib/perf/profilers/go.js +22 -0
- package/lib/perf/profilers/index.js +46 -0
- package/lib/perf/profilers/java.js +23 -0
- package/lib/perf/profilers/node.js +27 -0
- package/lib/perf/profilers/python.js +23 -0
- package/lib/perf/profilers/rust.js +23 -0
- package/lib/perf/profiling-runner.js +56 -0
- package/lib/perf/schemas.js +140 -0
- package/lib/repo-map/index.js +1 -2
- package/lib/repo-map/runner.js +89 -14
- package/lib/repo-map/updater.js +6 -17
- package/mcp-server/index.js +105 -60
- package/package.json +1 -1
- package/plugins/audit-project/.claude-plugin/plugin.json +1 -1
- package/plugins/audit-project/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/audit-project/lib/enhance/hook-patterns.js +40 -0
- package/plugins/audit-project/lib/enhance/index.js +14 -0
- package/plugins/audit-project/lib/enhance/reporter.js +1 -1
- package/plugins/audit-project/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/audit-project/lib/enhance/skill-patterns.js +51 -0
- package/plugins/audit-project/lib/index.js +2 -0
- package/plugins/audit-project/lib/perf/analyzer/index.js +22 -0
- package/plugins/audit-project/lib/perf/argument-parser.js +105 -0
- package/plugins/audit-project/lib/perf/baseline-comparator.js +50 -0
- package/plugins/audit-project/lib/perf/baseline-store.js +127 -0
- package/plugins/audit-project/lib/perf/benchmark-runner.js +380 -0
- package/plugins/audit-project/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/audit-project/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/audit-project/lib/perf/checkpoint.js +123 -0
- package/plugins/audit-project/lib/perf/code-paths.js +86 -0
- package/plugins/audit-project/lib/perf/consolidation.js +37 -0
- package/plugins/audit-project/lib/perf/constraint-runner.js +71 -0
- package/plugins/audit-project/lib/perf/experiment-runner.js +32 -0
- package/plugins/audit-project/lib/perf/index.js +41 -0
- package/plugins/audit-project/lib/perf/investigation-state.js +839 -0
- package/plugins/audit-project/lib/perf/optimization-runner.js +79 -0
- package/plugins/audit-project/lib/perf/profilers/go.js +22 -0
- package/plugins/audit-project/lib/perf/profilers/index.js +46 -0
- package/plugins/audit-project/lib/perf/profilers/java.js +23 -0
- package/plugins/audit-project/lib/perf/profilers/node.js +27 -0
- package/plugins/audit-project/lib/perf/profilers/python.js +23 -0
- package/plugins/audit-project/lib/perf/profilers/rust.js +23 -0
- package/plugins/audit-project/lib/perf/profiling-runner.js +56 -0
- package/plugins/audit-project/lib/perf/schemas.js +140 -0
- package/plugins/audit-project/lib/repo-map/index.js +1 -2
- package/plugins/audit-project/lib/repo-map/runner.js +89 -14
- package/plugins/audit-project/lib/repo-map/updater.js +6 -17
- package/plugins/deslop/.claude-plugin/plugin.json +1 -1
- package/plugins/deslop/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/deslop/lib/enhance/hook-patterns.js +40 -0
- package/plugins/deslop/lib/enhance/index.js +14 -0
- package/plugins/deslop/lib/enhance/reporter.js +1 -1
- package/plugins/deslop/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/deslop/lib/enhance/skill-patterns.js +51 -0
- package/plugins/deslop/lib/index.js +2 -0
- package/plugins/deslop/lib/perf/analyzer/index.js +22 -0
- package/plugins/deslop/lib/perf/argument-parser.js +105 -0
- package/plugins/deslop/lib/perf/baseline-comparator.js +50 -0
- package/plugins/deslop/lib/perf/baseline-store.js +127 -0
- package/plugins/deslop/lib/perf/benchmark-runner.js +380 -0
- package/plugins/deslop/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/deslop/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/deslop/lib/perf/checkpoint.js +123 -0
- package/plugins/deslop/lib/perf/code-paths.js +86 -0
- package/plugins/deslop/lib/perf/consolidation.js +37 -0
- package/plugins/deslop/lib/perf/constraint-runner.js +71 -0
- package/plugins/deslop/lib/perf/experiment-runner.js +32 -0
- package/plugins/deslop/lib/perf/index.js +41 -0
- package/plugins/deslop/lib/perf/investigation-state.js +839 -0
- package/plugins/deslop/lib/perf/optimization-runner.js +79 -0
- package/plugins/deslop/lib/perf/profilers/go.js +22 -0
- package/plugins/deslop/lib/perf/profilers/index.js +46 -0
- package/plugins/deslop/lib/perf/profilers/java.js +23 -0
- package/plugins/deslop/lib/perf/profilers/node.js +27 -0
- package/plugins/deslop/lib/perf/profilers/python.js +23 -0
- package/plugins/deslop/lib/perf/profilers/rust.js +23 -0
- package/plugins/deslop/lib/perf/profiling-runner.js +56 -0
- package/plugins/deslop/lib/perf/schemas.js +140 -0
- package/plugins/deslop/lib/repo-map/index.js +1 -2
- package/plugins/deslop/lib/repo-map/runner.js +89 -14
- package/plugins/deslop/lib/repo-map/updater.js +6 -17
- package/plugins/drift-detect/.claude-plugin/plugin.json +1 -1
- package/plugins/drift-detect/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/drift-detect/lib/enhance/hook-patterns.js +40 -0
- package/plugins/drift-detect/lib/enhance/index.js +14 -0
- package/plugins/drift-detect/lib/enhance/reporter.js +1 -1
- package/plugins/drift-detect/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/drift-detect/lib/enhance/skill-patterns.js +51 -0
- package/plugins/drift-detect/lib/index.js +2 -0
- package/plugins/drift-detect/lib/perf/analyzer/index.js +22 -0
- package/plugins/drift-detect/lib/perf/argument-parser.js +105 -0
- package/plugins/drift-detect/lib/perf/baseline-comparator.js +50 -0
- package/plugins/drift-detect/lib/perf/baseline-store.js +127 -0
- package/plugins/drift-detect/lib/perf/benchmark-runner.js +380 -0
- package/plugins/drift-detect/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/drift-detect/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/drift-detect/lib/perf/checkpoint.js +123 -0
- package/plugins/drift-detect/lib/perf/code-paths.js +86 -0
- package/plugins/drift-detect/lib/perf/consolidation.js +37 -0
- package/plugins/drift-detect/lib/perf/constraint-runner.js +71 -0
- package/plugins/drift-detect/lib/perf/experiment-runner.js +32 -0
- package/plugins/drift-detect/lib/perf/index.js +41 -0
- package/plugins/drift-detect/lib/perf/investigation-state.js +839 -0
- package/plugins/drift-detect/lib/perf/optimization-runner.js +79 -0
- package/plugins/drift-detect/lib/perf/profilers/go.js +22 -0
- package/plugins/drift-detect/lib/perf/profilers/index.js +46 -0
- package/plugins/drift-detect/lib/perf/profilers/java.js +23 -0
- package/plugins/drift-detect/lib/perf/profilers/node.js +27 -0
- package/plugins/drift-detect/lib/perf/profilers/python.js +23 -0
- package/plugins/drift-detect/lib/perf/profilers/rust.js +23 -0
- package/plugins/drift-detect/lib/perf/profiling-runner.js +56 -0
- package/plugins/drift-detect/lib/perf/schemas.js +140 -0
- package/plugins/drift-detect/lib/repo-map/index.js +1 -2
- package/plugins/drift-detect/lib/repo-map/runner.js +89 -14
- package/plugins/drift-detect/lib/repo-map/updater.js +6 -17
- package/plugins/enhance/.claude-plugin/plugin.json +1 -1
- package/plugins/enhance/agents/agent-enhancer.md +2 -0
- package/plugins/enhance/agents/claudemd-enhancer.md +2 -0
- package/plugins/enhance/agents/docs-enhancer.md +2 -0
- package/plugins/enhance/agents/enhancement-orchestrator.md +59 -13
- package/plugins/enhance/agents/enhancement-reporter.md +3 -1
- package/plugins/enhance/agents/hooks-enhancer.md +12 -0
- package/plugins/enhance/agents/plugin-enhancer.md +2 -0
- package/plugins/enhance/agents/prompt-enhancer.md +2 -0
- package/plugins/enhance/agents/skills-enhancer.md +12 -0
- package/plugins/enhance/commands/enhance.md +120 -3
- package/plugins/enhance/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/enhance/lib/enhance/hook-patterns.js +40 -0
- package/plugins/enhance/lib/enhance/index.js +14 -0
- package/plugins/enhance/lib/enhance/reporter.js +1 -1
- package/plugins/enhance/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/enhance/lib/enhance/skill-patterns.js +51 -0
- package/plugins/enhance/lib/index.js +2 -0
- package/plugins/enhance/lib/perf/analyzer/index.js +22 -0
- package/plugins/enhance/lib/perf/argument-parser.js +105 -0
- package/plugins/enhance/lib/perf/baseline-comparator.js +50 -0
- package/plugins/enhance/lib/perf/baseline-store.js +127 -0
- package/plugins/enhance/lib/perf/benchmark-runner.js +380 -0
- package/plugins/enhance/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/enhance/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/enhance/lib/perf/checkpoint.js +123 -0
- package/plugins/enhance/lib/perf/code-paths.js +86 -0
- package/plugins/enhance/lib/perf/consolidation.js +37 -0
- package/plugins/enhance/lib/perf/constraint-runner.js +71 -0
- package/plugins/enhance/lib/perf/experiment-runner.js +32 -0
- package/plugins/enhance/lib/perf/index.js +41 -0
- package/plugins/enhance/lib/perf/investigation-state.js +839 -0
- package/plugins/enhance/lib/perf/optimization-runner.js +79 -0
- package/plugins/enhance/lib/perf/profilers/go.js +22 -0
- package/plugins/enhance/lib/perf/profilers/index.js +46 -0
- package/plugins/enhance/lib/perf/profilers/java.js +23 -0
- package/plugins/enhance/lib/perf/profilers/node.js +27 -0
- package/plugins/enhance/lib/perf/profilers/python.js +23 -0
- package/plugins/enhance/lib/perf/profilers/rust.js +23 -0
- package/plugins/enhance/lib/perf/profiling-runner.js +56 -0
- package/plugins/enhance/lib/perf/schemas.js +140 -0
- package/plugins/enhance/lib/repo-map/index.js +1 -2
- package/plugins/enhance/lib/repo-map/runner.js +89 -14
- package/plugins/enhance/lib/repo-map/updater.js +6 -17
- package/plugins/enhance/skills/agent-prompts/SKILL.md +31 -0
- package/plugins/enhance/skills/claude-memory/SKILL.md +31 -0
- package/plugins/enhance/skills/hooks/SKILL.md +31 -0
- package/plugins/enhance/skills/orchestrator/SKILL.md +32 -0
- package/plugins/enhance/skills/plugins/SKILL.md +31 -0
- package/plugins/enhance/skills/prompts/SKILL.md +30 -0
- package/plugins/enhance/skills/reporter/SKILL.md +22 -0
- package/plugins/enhance/skills/skills/SKILL.md +30 -0
- package/plugins/next-task/.claude-plugin/plugin.json +1 -1
- package/plugins/next-task/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/next-task/lib/enhance/hook-patterns.js +40 -0
- package/plugins/next-task/lib/enhance/index.js +14 -0
- package/plugins/next-task/lib/enhance/reporter.js +1 -1
- package/plugins/next-task/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/next-task/lib/enhance/skill-patterns.js +51 -0
- package/plugins/next-task/lib/index.js +2 -0
- package/plugins/next-task/lib/perf/analyzer/index.js +22 -0
- package/plugins/next-task/lib/perf/argument-parser.js +105 -0
- package/plugins/next-task/lib/perf/baseline-comparator.js +50 -0
- package/plugins/next-task/lib/perf/baseline-store.js +127 -0
- package/plugins/next-task/lib/perf/benchmark-runner.js +380 -0
- package/plugins/next-task/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/next-task/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/next-task/lib/perf/checkpoint.js +123 -0
- package/plugins/next-task/lib/perf/code-paths.js +86 -0
- package/plugins/next-task/lib/perf/consolidation.js +37 -0
- package/plugins/next-task/lib/perf/constraint-runner.js +71 -0
- package/plugins/next-task/lib/perf/experiment-runner.js +32 -0
- package/plugins/next-task/lib/perf/index.js +41 -0
- package/plugins/next-task/lib/perf/investigation-state.js +839 -0
- package/plugins/next-task/lib/perf/optimization-runner.js +79 -0
- package/plugins/next-task/lib/perf/profilers/go.js +22 -0
- package/plugins/next-task/lib/perf/profilers/index.js +46 -0
- package/plugins/next-task/lib/perf/profilers/java.js +23 -0
- package/plugins/next-task/lib/perf/profilers/node.js +27 -0
- package/plugins/next-task/lib/perf/profilers/python.js +23 -0
- package/plugins/next-task/lib/perf/profilers/rust.js +23 -0
- package/plugins/next-task/lib/perf/profiling-runner.js +56 -0
- package/plugins/next-task/lib/perf/schemas.js +140 -0
- package/plugins/next-task/lib/repo-map/index.js +1 -2
- package/plugins/next-task/lib/repo-map/runner.js +89 -14
- package/plugins/next-task/lib/repo-map/updater.js +6 -17
- package/plugins/perf/.claude-plugin/plugin.json +20 -0
- package/plugins/perf/agents/perf-analyzer.md +40 -0
- package/plugins/perf/agents/perf-code-paths.md +12 -0
- package/plugins/perf/agents/perf-investigation-logger.md +44 -0
- package/plugins/perf/agents/perf-orchestrator.md +311 -0
- package/plugins/perf/agents/perf-theory-gatherer.md +12 -0
- package/plugins/perf/agents/perf-theory-tester.md +43 -0
- package/plugins/perf/commands/perf.md +467 -0
- package/plugins/perf/hooks/checkpoint.md +27 -0
- package/plugins/perf/hooks/constraint-tester.md +40 -0
- package/plugins/perf/lib/config/index.js +14 -0
- package/plugins/perf/lib/cross-platform/index.js +462 -0
- package/plugins/perf/lib/drift-detect/collectors.js +861 -0
- package/plugins/perf/lib/enhance/agent-analyzer.js +421 -0
- package/plugins/perf/lib/enhance/agent-patterns.js +569 -0
- package/plugins/perf/lib/enhance/docs-analyzer.js +325 -0
- package/plugins/perf/lib/enhance/docs-patterns.js +671 -0
- package/plugins/perf/lib/enhance/fixer.js +468 -0
- package/plugins/perf/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/perf/lib/enhance/hook-patterns.js +40 -0
- package/plugins/perf/lib/enhance/index.js +92 -0
- package/plugins/perf/lib/enhance/plugin-analyzer.js +402 -0
- package/plugins/perf/lib/enhance/plugin-patterns.js +326 -0
- package/plugins/perf/lib/enhance/projectmemory-analyzer.js +541 -0
- package/plugins/perf/lib/enhance/projectmemory-patterns.js +470 -0
- package/plugins/perf/lib/enhance/prompt-analyzer.js +429 -0
- package/plugins/perf/lib/enhance/prompt-patterns.js +783 -0
- package/plugins/perf/lib/enhance/reporter.js +1310 -0
- package/plugins/perf/lib/enhance/security-patterns.js +284 -0
- package/plugins/perf/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/perf/lib/enhance/skill-patterns.js +51 -0
- package/plugins/perf/lib/enhance/tool-patterns.js +373 -0
- package/plugins/perf/lib/index.js +248 -0
- package/plugins/perf/lib/patterns/cli-enhancers.js +606 -0
- package/plugins/perf/lib/patterns/pipeline.js +785 -0
- package/plugins/perf/lib/patterns/review-patterns.js +558 -0
- package/plugins/perf/lib/patterns/slop-analyzers.js +2281 -0
- package/plugins/perf/lib/patterns/slop-patterns.js +1197 -0
- package/plugins/perf/lib/perf/analyzer/index.js +22 -0
- package/plugins/perf/lib/perf/argument-parser.js +105 -0
- package/plugins/perf/lib/perf/baseline-comparator.js +50 -0
- package/plugins/perf/lib/perf/baseline-store.js +127 -0
- package/plugins/perf/lib/perf/benchmark-runner.js +380 -0
- package/plugins/perf/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/perf/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/perf/lib/perf/checkpoint.js +123 -0
- package/plugins/perf/lib/perf/code-paths.js +86 -0
- package/plugins/perf/lib/perf/consolidation.js +37 -0
- package/plugins/perf/lib/perf/constraint-runner.js +71 -0
- package/plugins/perf/lib/perf/experiment-runner.js +32 -0
- package/plugins/perf/lib/perf/index.js +41 -0
- package/plugins/perf/lib/perf/investigation-state.js +839 -0
- package/plugins/perf/lib/perf/optimization-runner.js +79 -0
- package/plugins/perf/lib/perf/profilers/go.js +22 -0
- package/plugins/perf/lib/perf/profilers/index.js +46 -0
- package/plugins/perf/lib/perf/profilers/java.js +23 -0
- package/plugins/perf/lib/perf/profilers/node.js +27 -0
- package/plugins/perf/lib/perf/profilers/python.js +23 -0
- package/plugins/perf/lib/perf/profilers/rust.js +23 -0
- package/plugins/perf/lib/perf/profiling-runner.js +56 -0
- package/plugins/perf/lib/perf/schemas.js +140 -0
- package/plugins/perf/lib/platform/detect-platform.js +360 -0
- package/plugins/perf/lib/platform/detection-configs.js +93 -0
- package/plugins/perf/lib/platform/state-dir.js +132 -0
- package/plugins/perf/lib/platform/verify-tools.js +167 -0
- package/plugins/perf/lib/repo-map/cache.js +151 -0
- package/plugins/perf/lib/repo-map/index.js +211 -0
- package/plugins/perf/lib/repo-map/installer.js +205 -0
- package/plugins/perf/lib/repo-map/queries/go.js +27 -0
- package/plugins/perf/lib/repo-map/queries/index.js +100 -0
- package/plugins/perf/lib/repo-map/queries/java.js +38 -0
- package/plugins/perf/lib/repo-map/queries/javascript.js +55 -0
- package/plugins/perf/lib/repo-map/queries/python.js +24 -0
- package/plugins/perf/lib/repo-map/queries/rust.js +73 -0
- package/plugins/perf/lib/repo-map/queries/typescript.js +38 -0
- package/plugins/perf/lib/repo-map/runner.js +1079 -0
- package/plugins/perf/lib/repo-map/updater.js +419 -0
- package/plugins/perf/lib/schemas/validator.js +247 -0
- package/plugins/perf/lib/sources/custom-handler.js +199 -0
- package/plugins/perf/lib/sources/policy-questions.js +246 -0
- package/plugins/perf/lib/sources/source-cache.js +164 -0
- package/plugins/perf/lib/state/workflow-state.js +538 -0
- package/plugins/perf/lib/types/agent-frontmatter.d.ts +134 -0
- package/plugins/perf/lib/types/command-frontmatter.d.ts +107 -0
- package/plugins/perf/lib/types/hook-frontmatter.d.ts +115 -0
- package/plugins/perf/lib/types/index.d.ts +84 -0
- package/plugins/perf/lib/types/plugin-manifest.d.ts +102 -0
- package/plugins/perf/lib/types/skill-frontmatter.d.ts +89 -0
- package/plugins/perf/lib/utils/cache-manager.js +154 -0
- package/plugins/perf/lib/utils/context-optimizer.js +300 -0
- package/plugins/perf/lib/utils/deprecation.js +37 -0
- package/plugins/perf/lib/utils/shell-escape.js +88 -0
- package/plugins/perf/skills/analyzer/SKILL.md +37 -0
- package/plugins/perf/skills/baseline/SKILL.md +30 -0
- package/plugins/perf/skills/benchmark/SKILL.md +43 -0
- package/plugins/perf/skills/code-paths/SKILL.md +32 -0
- package/plugins/perf/skills/investigation-logger/SKILL.md +41 -0
- package/plugins/perf/skills/profile/SKILL.md +33 -0
- package/plugins/perf/skills/theory/SKILL.md +35 -0
- package/plugins/perf/skills/theory-tester/SKILL.md +36 -0
- package/plugins/repo-map/.claude-plugin/plugin.json +1 -1
- package/plugins/repo-map/commands/repo-map.md +4 -10
- package/plugins/repo-map/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/repo-map/lib/enhance/hook-patterns.js +40 -0
- package/plugins/repo-map/lib/enhance/index.js +14 -0
- package/plugins/repo-map/lib/enhance/reporter.js +1 -1
- package/plugins/repo-map/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/repo-map/lib/enhance/skill-patterns.js +51 -0
- package/plugins/repo-map/lib/index.js +2 -0
- package/plugins/repo-map/lib/perf/analyzer/index.js +22 -0
- package/plugins/repo-map/lib/perf/argument-parser.js +105 -0
- package/plugins/repo-map/lib/perf/baseline-comparator.js +50 -0
- package/plugins/repo-map/lib/perf/baseline-store.js +127 -0
- package/plugins/repo-map/lib/perf/benchmark-runner.js +380 -0
- package/plugins/repo-map/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/repo-map/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/repo-map/lib/perf/checkpoint.js +123 -0
- package/plugins/repo-map/lib/perf/code-paths.js +86 -0
- package/plugins/repo-map/lib/perf/consolidation.js +37 -0
- package/plugins/repo-map/lib/perf/constraint-runner.js +71 -0
- package/plugins/repo-map/lib/perf/experiment-runner.js +32 -0
- package/plugins/repo-map/lib/perf/index.js +41 -0
- package/plugins/repo-map/lib/perf/investigation-state.js +839 -0
- package/plugins/repo-map/lib/perf/optimization-runner.js +79 -0
- package/plugins/repo-map/lib/perf/profilers/go.js +22 -0
- package/plugins/repo-map/lib/perf/profilers/index.js +46 -0
- package/plugins/repo-map/lib/perf/profilers/java.js +23 -0
- package/plugins/repo-map/lib/perf/profilers/node.js +27 -0
- package/plugins/repo-map/lib/perf/profilers/python.js +23 -0
- package/plugins/repo-map/lib/perf/profilers/rust.js +23 -0
- package/plugins/repo-map/lib/perf/profiling-runner.js +56 -0
- package/plugins/repo-map/lib/perf/schemas.js +140 -0
- package/plugins/repo-map/lib/repo-map/index.js +1 -2
- package/plugins/repo-map/lib/repo-map/runner.js +89 -14
- package/plugins/repo-map/lib/repo-map/updater.js +6 -17
- package/plugins/ship/.claude-plugin/plugin.json +1 -1
- package/plugins/ship/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/ship/lib/enhance/hook-patterns.js +40 -0
- package/plugins/ship/lib/enhance/index.js +14 -0
- package/plugins/ship/lib/enhance/reporter.js +1 -1
- package/plugins/ship/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/ship/lib/enhance/skill-patterns.js +51 -0
- package/plugins/ship/lib/index.js +2 -0
- package/plugins/ship/lib/perf/analyzer/index.js +22 -0
- package/plugins/ship/lib/perf/argument-parser.js +105 -0
- package/plugins/ship/lib/perf/baseline-comparator.js +50 -0
- package/plugins/ship/lib/perf/baseline-store.js +127 -0
- package/plugins/ship/lib/perf/benchmark-runner.js +380 -0
- package/plugins/ship/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/ship/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/ship/lib/perf/checkpoint.js +123 -0
- package/plugins/ship/lib/perf/code-paths.js +86 -0
- package/plugins/ship/lib/perf/consolidation.js +37 -0
- package/plugins/ship/lib/perf/constraint-runner.js +71 -0
- package/plugins/ship/lib/perf/experiment-runner.js +32 -0
- package/plugins/ship/lib/perf/index.js +41 -0
- package/plugins/ship/lib/perf/investigation-state.js +839 -0
- package/plugins/ship/lib/perf/optimization-runner.js +79 -0
- package/plugins/ship/lib/perf/profilers/go.js +22 -0
- package/plugins/ship/lib/perf/profilers/index.js +46 -0
- package/plugins/ship/lib/perf/profilers/java.js +23 -0
- package/plugins/ship/lib/perf/profilers/node.js +27 -0
- package/plugins/ship/lib/perf/profilers/python.js +23 -0
- package/plugins/ship/lib/perf/profilers/rust.js +23 -0
- package/plugins/ship/lib/perf/profiling-runner.js +56 -0
- package/plugins/ship/lib/perf/schemas.js +140 -0
- package/plugins/ship/lib/repo-map/index.js +1 -2
- package/plugins/ship/lib/repo-map/runner.js +89 -14
- package/plugins/ship/lib/repo-map/updater.js +6 -17
- package/plugins/sync-docs/.claude-plugin/plugin.json +1 -1
- package/plugins/sync-docs/lib/enhance/hook-analyzer.js +135 -0
- package/plugins/sync-docs/lib/enhance/hook-patterns.js +40 -0
- package/plugins/sync-docs/lib/enhance/index.js +14 -0
- package/plugins/sync-docs/lib/enhance/reporter.js +1 -1
- package/plugins/sync-docs/lib/enhance/skill-analyzer.js +144 -0
- package/plugins/sync-docs/lib/enhance/skill-patterns.js +51 -0
- package/plugins/sync-docs/lib/index.js +2 -0
- package/plugins/sync-docs/lib/perf/analyzer/index.js +22 -0
- package/plugins/sync-docs/lib/perf/argument-parser.js +105 -0
- package/plugins/sync-docs/lib/perf/baseline-comparator.js +50 -0
- package/plugins/sync-docs/lib/perf/baseline-store.js +127 -0
- package/plugins/sync-docs/lib/perf/benchmark-runner.js +380 -0
- package/plugins/sync-docs/lib/perf/breaking-point-finder.js +52 -0
- package/plugins/sync-docs/lib/perf/breaking-point-runner.js +60 -0
- package/plugins/sync-docs/lib/perf/checkpoint.js +123 -0
- package/plugins/sync-docs/lib/perf/code-paths.js +86 -0
- package/plugins/sync-docs/lib/perf/consolidation.js +37 -0
- package/plugins/sync-docs/lib/perf/constraint-runner.js +71 -0
- package/plugins/sync-docs/lib/perf/experiment-runner.js +32 -0
- package/plugins/sync-docs/lib/perf/index.js +41 -0
- package/plugins/sync-docs/lib/perf/investigation-state.js +839 -0
- package/plugins/sync-docs/lib/perf/optimization-runner.js +79 -0
- package/plugins/sync-docs/lib/perf/profilers/go.js +22 -0
- package/plugins/sync-docs/lib/perf/profilers/index.js +46 -0
- package/plugins/sync-docs/lib/perf/profilers/java.js +23 -0
- package/plugins/sync-docs/lib/perf/profilers/node.js +27 -0
- package/plugins/sync-docs/lib/perf/profilers/python.js +23 -0
- package/plugins/sync-docs/lib/perf/profilers/rust.js +23 -0
- package/plugins/sync-docs/lib/perf/profiling-runner.js +56 -0
- package/plugins/sync-docs/lib/perf/schemas.js +140 -0
- package/plugins/sync-docs/lib/repo-map/index.js +1 -2
- package/plugins/sync-docs/lib/repo-map/runner.js +89 -14
- package/plugins/sync-docs/lib/repo-map/updater.js +6 -17
- package/scripts/perf/repo-map-create.js +46 -0
|
@@ -1,68 +1,88 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "awesome-slash",
|
|
3
|
-
"description": "
|
|
4
|
-
"version": "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.4.0",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Avi Fenesh",
|
|
7
7
|
"url": "https://github.com/avifenesh"
|
|
8
8
|
},
|
|
9
9
|
"repository": "https://github.com/avifenesh/awesome-slash",
|
|
10
|
-
"keywords": [
|
|
10
|
+
"keywords": [
|
|
11
|
+
"ai",
|
|
12
|
+
"llm",
|
|
13
|
+
"agents",
|
|
14
|
+
"agentic",
|
|
15
|
+
"claude-code",
|
|
16
|
+
"opencode",
|
|
17
|
+
"codex",
|
|
18
|
+
"mcp",
|
|
19
|
+
"automation",
|
|
20
|
+
"workflow",
|
|
21
|
+
"code-review",
|
|
22
|
+
"multi-agent"
|
|
23
|
+
],
|
|
11
24
|
"plugins": [
|
|
12
25
|
{
|
|
13
26
|
"name": "next-task",
|
|
14
27
|
"source": "./plugins/next-task",
|
|
15
28
|
"description": "Master workflow orchestrator: autonomous workflow with model optimization (opus/sonnet/haiku), two-file state management, workflow enforcement gates, 14 specialist agents",
|
|
16
|
-
"version": "3.
|
|
29
|
+
"version": "3.4.0",
|
|
17
30
|
"category": "productivity"
|
|
18
31
|
},
|
|
19
32
|
{
|
|
20
33
|
"name": "ship",
|
|
21
34
|
"source": "./plugins/ship",
|
|
22
35
|
"description": "Complete PR workflow: commit to production, skips review when called from next-task, removes task from registry on cleanup, automatic rollback",
|
|
23
|
-
"version": "3.
|
|
36
|
+
"version": "3.4.0",
|
|
24
37
|
"category": "deployment"
|
|
25
38
|
},
|
|
26
39
|
{
|
|
27
40
|
"name": "deslop",
|
|
28
41
|
"source": "./plugins/deslop",
|
|
29
42
|
"description": "3-phase AI slop detection: regex patterns (HIGH), multi-pass analyzers (MEDIUM), CLI tools (LOW)",
|
|
30
|
-
"version": "3.
|
|
43
|
+
"version": "3.4.0",
|
|
31
44
|
"category": "development"
|
|
32
45
|
},
|
|
33
46
|
{
|
|
34
47
|
"name": "audit-project",
|
|
35
48
|
"source": "./plugins/audit-project",
|
|
36
49
|
"description": "Multi-agent iterative code review until zero issues remain",
|
|
37
|
-
"version": "3.
|
|
50
|
+
"version": "3.4.0",
|
|
38
51
|
"category": "development"
|
|
39
52
|
},
|
|
40
53
|
{
|
|
41
54
|
"name": "drift-detect",
|
|
42
55
|
"source": "./plugins/drift-detect",
|
|
43
56
|
"description": "Deep repository analysis to realign project plans with code reality - detects drift, gaps, and creates prioritized reconstruction plans",
|
|
44
|
-
"version": "3.
|
|
57
|
+
"version": "3.4.0",
|
|
45
58
|
"category": "productivity"
|
|
46
59
|
},
|
|
47
60
|
{
|
|
48
61
|
"name": "enhance",
|
|
49
62
|
"source": "./plugins/enhance",
|
|
50
63
|
"description": "Master enhancement orchestrator: parallel analyzer execution for plugins, agents, docs, CLAUDE.md, and prompts with unified reporting",
|
|
51
|
-
"version": "3.
|
|
64
|
+
"version": "3.4.0",
|
|
52
65
|
"category": "development"
|
|
53
66
|
},
|
|
54
67
|
{
|
|
55
68
|
"name": "sync-docs",
|
|
56
69
|
"source": "./plugins/sync-docs",
|
|
57
70
|
"description": "Standalone documentation sync: find outdated refs, update CHANGELOG, flag stale examples based on code changes",
|
|
58
|
-
"version": "3.
|
|
71
|
+
"version": "3.4.0",
|
|
59
72
|
"category": "development"
|
|
60
73
|
},
|
|
61
74
|
{
|
|
62
75
|
"name": "repo-map",
|
|
63
76
|
"source": "./plugins/repo-map",
|
|
64
77
|
"description": "AST-based repository map generation using ast-grep with incremental updates for faster drift analysis",
|
|
65
|
-
"version": "3.
|
|
78
|
+
"version": "3.4.0",
|
|
79
|
+
"category": "development"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "perf",
|
|
83
|
+
"source": "./plugins/perf",
|
|
84
|
+
"description": "Rigorous performance investigation workflow with baselines, profiling, hypotheses, and evidence-backed decisions",
|
|
85
|
+
"version": "3.4.0",
|
|
66
86
|
"category": "development"
|
|
67
87
|
}
|
|
68
88
|
],
|
|
@@ -70,6 +90,16 @@
|
|
|
70
90
|
"name": "awesome-slash",
|
|
71
91
|
"source": "./mcp-server",
|
|
72
92
|
"description": "Cross-platform MCP server with 3-phase slop detection pipeline and enhance analyzers",
|
|
73
|
-
"tools": [
|
|
93
|
+
"tools": [
|
|
94
|
+
"workflow_status",
|
|
95
|
+
"workflow_start",
|
|
96
|
+
"workflow_resume",
|
|
97
|
+
"workflow_abort",
|
|
98
|
+
"task_discover",
|
|
99
|
+
"review_code",
|
|
100
|
+
"slop_detect",
|
|
101
|
+
"enhance_analyze",
|
|
102
|
+
"repo_map"
|
|
103
|
+
]
|
|
74
104
|
}
|
|
75
105
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -7,16 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
## [3.
|
|
10
|
+
## [3.4.0] - 2026-01-29
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Repo-map perf script** - Reusable benchmark runner for repo-map creation
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **/perf benchmarking** - Added oneshot mode plus multi-run aggregation with duration/runs controls
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
- **Repo-map docs analysis** - Dropped documentation scanning and legacy docs fields from repo-map output
|
|
20
|
+
|
|
21
|
+
## [3.4.0-rc.1] - 2026-01-29
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- **/perf Plugin** - Structured performance investigations with baselines, profiling, hypotheses, and evidence-backed decisions
|
|
25
|
+
- **/perf Command** - Phase-based workflow for baselining, breaking points, constraints, profiling, and consolidation
|
|
26
|
+
- **/perf Skills & Agents** - Baseline, benchmark, profiling, theory testing, code paths, and investigation logging
|
|
27
|
+
- **/enhance Hooks Analyzer** - New hook checks for frontmatter completeness and safety cues
|
|
28
|
+
- **/enhance Skills Analyzer** - New SKILL.md checks for frontmatter and trigger phrase clarity
|
|
29
|
+
- **Enhance MCP Tool** - `enhance_analyze` now supports `hooks` and `skills` focus targets
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- **Enhance Orchestrator** - Expanded to run hooks/skills analyzers alongside existing enhancers
|
|
33
|
+
- **Docs** - Expanded /perf usage, requirements, and architecture references
|
|
11
34
|
|
|
12
35
|
### Fixed
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
- Pattern: `(process.env.CLAUDE_PLUGIN_ROOT || process.env.PLUGIN_ROOT || '').replace(/\/g, '/')`
|
|
16
|
-
- Supports both CLAUDE_PLUGIN_ROOT and PLUGIN_ROOT for cross-platform compatibility
|
|
17
|
-
- Added validation for missing environment variables in bash sections
|
|
18
|
-
- Bash pattern: `${CLAUDE_PLUGIN_ROOT:-$PLUGIN_ROOT}` with explicit error handling
|
|
19
|
-
- Fixes: Template strings in require() paths were not being substituted at runtime on Windows
|
|
36
|
+
- **/perf Path Safety** - Validate investigation ids and baseline versions to prevent path traversal
|
|
37
|
+
- **/perf Optimization Runner** - Explicit warm-up before experiment capture
|
|
20
38
|
|
|
21
39
|
## [3.3.2] - 2026-01-29
|
|
22
40
|
|
package/README.md
CHANGED
|
@@ -14,9 +14,10 @@ AI models can write code. That's not the hard part anymore. The hard part is eve
|
|
|
14
14
|
|
|
15
15
|
| Section | What's there |
|
|
16
16
|
|---------|--------------|
|
|
17
|
-
| [Commands](#commands) | All
|
|
17
|
+
| [Commands](#commands) | All 9 commands with jump links |
|
|
18
18
|
| [What This Does](#what-this-project-does) | The problem and how this solves it |
|
|
19
19
|
| [What's Different](#what-makes-this-different) | Why this isn't just another AI tool |
|
|
20
|
+
| [What's New](#whats-new-in-v340) | Latest release highlights |
|
|
20
21
|
| [Design Philosophy](#design-philosophy) | The thinking behind the architecture |
|
|
21
22
|
| [Command Details](#command-details) | Deep dive into each command |
|
|
22
23
|
| [Installation](#installation) | Get started in 2 commands |
|
|
@@ -34,8 +35,17 @@ AI models can write code. That's not the hard part anymore. The hard part is eve
|
|
|
34
35
|
| [`/audit-project`](#audit-project) | Multi-agent code review until issues resolved | [→](#audit-project) |
|
|
35
36
|
| [`/drift-detect`](#drift-detect) | Compares your docs to actual code state | [→](#drift-detect) |
|
|
36
37
|
| [`/repo-map`](#repo-map) | Builds a cached AST repo map for fast analysis | [→](#repo-map) |
|
|
37
|
-
| [`/enhance`](#enhance) | Analyzes prompts, plugins, docs
|
|
38
|
+
| [`/enhance`](#enhance) | Analyzes prompts, plugins, agents, docs, hooks, skills | [→](#enhance) |
|
|
38
39
|
| [`/sync-docs`](#sync-docs) | Syncs documentation with code changes | [→](#sync-docs) |
|
|
40
|
+
| [`/perf`](#perf) | Runs structured performance investigations | [→](#perf) |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## What's New in v3.4.0
|
|
45
|
+
|
|
46
|
+
- **/perf benchmarking upgrades** with oneshot runs, multi-run aggregation, and configurable duration/runs
|
|
47
|
+
- **Repo-map simplification** by removing documentation analysis and legacy docs fields
|
|
48
|
+
- **Repo-map perf script** for consistent map creation benchmarks
|
|
39
49
|
|
|
40
50
|
---
|
|
41
51
|
|
|
@@ -433,7 +443,6 @@ Multi-agent collection wastes tokens on coordination. JavaScript collectors are
|
|
|
433
443
|
|
|
434
444
|
- Cached file→symbols map (exports, functions, classes)
|
|
435
445
|
- Import graph for dependency hints
|
|
436
|
-
- Optional docs analysis (features, checkboxes)
|
|
437
446
|
|
|
438
447
|
Output is cached at `{state-dir}/repo-map.json` and exposed via the MCP `repo_map` tool.
|
|
439
448
|
|
|
@@ -455,9 +464,9 @@ Tools like `/drift-detect` and planners can use the map instead of re-scanning t
|
|
|
455
464
|
|
|
456
465
|
### /enhance
|
|
457
466
|
|
|
458
|
-
**Purpose:** Analyzes your prompts, plugins, agents, and
|
|
467
|
+
**Purpose:** Analyzes your prompts, plugins, agents, docs, hooks, and skills for improvement opportunities.
|
|
459
468
|
|
|
460
|
-
**
|
|
469
|
+
**Seven analyzers run in parallel:**
|
|
461
470
|
|
|
462
471
|
| Analyzer | What it checks |
|
|
463
472
|
|----------|----------------|
|
|
@@ -466,6 +475,8 @@ Tools like `/drift-detect` and planners can use the map instead of re-scanning t
|
|
|
466
475
|
| claudemd-enhancer | CLAUDE.md/AGENTS.md structure, token efficiency |
|
|
467
476
|
| docs-enhancer | Documentation readability, RAG optimization |
|
|
468
477
|
| prompt-enhancer | Prompt engineering patterns, clarity, examples |
|
|
478
|
+
| hooks-enhancer | Hook frontmatter, structure, safety |
|
|
479
|
+
| skills-enhancer | SKILL.md structure, trigger phrases |
|
|
469
480
|
|
|
470
481
|
**Each finding includes:**
|
|
471
482
|
- Certainty level (HIGH/MEDIUM/LOW)
|
|
@@ -484,6 +495,32 @@ Tools like `/drift-detect` and planners can use the map instead of re-scanning t
|
|
|
484
495
|
|
|
485
496
|
---
|
|
486
497
|
|
|
498
|
+
### /perf
|
|
499
|
+
|
|
500
|
+
**Purpose:** Run structured performance investigations with baselines, profiling, and evidence‑backed decisions.
|
|
501
|
+
|
|
502
|
+
**Usage:**
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
/perf # Start new investigation
|
|
506
|
+
/perf --resume # Resume previous investigation
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**Phase flags (advanced):**
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
/perf --phase baseline --command "npm run bench" --version v1.2.0
|
|
513
|
+
/perf --phase breaking-point --command "npm run bench" --param-min 1 --param-max 500
|
|
514
|
+
/perf --phase constraints --command "npm run bench" --cpu 1 --memory 1GB
|
|
515
|
+
/perf --phase hypotheses --hypotheses-file perf-hypotheses.json
|
|
516
|
+
/perf --phase code-paths
|
|
517
|
+
/perf --phase optimization --change "reduce allocations"
|
|
518
|
+
/perf --phase decision --verdict stop --rationale "no measurable improvement"
|
|
519
|
+
/perf --phase consolidation --version v1.2.0
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
487
524
|
### /sync-docs
|
|
488
525
|
|
|
489
526
|
**Purpose:** Sync documentation with actual code changes—find outdated refs, update CHANGELOG, flag stale examples.
|
|
@@ -45,6 +45,8 @@ const AGENT_THINKING_CONFIG: Record<string, { budget: number; description: strin
|
|
|
45
45
|
"docs-enhancer": { budget: 16000, description: "Docs improvement" },
|
|
46
46
|
"claudemd-enhancer": { budget: 16000, description: "Project memory optimization" },
|
|
47
47
|
"prompt-enhancer": { budget: 16000, description: "Prompt quality analysis" },
|
|
48
|
+
"hooks-enhancer": { budget: 16000, description: "Hook best-practices review" },
|
|
49
|
+
"skills-enhancer": { budget: 16000, description: "Skill prompt review" },
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
// Workflow phases where certain actions are blocked
|
package/bin/cli.js
CHANGED
|
@@ -135,7 +135,7 @@ function installForClaude() {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
// PLUGINS_ARRAY - Install or update plugins
|
|
138
|
-
const plugins = ['next-task', 'ship', 'deslop', 'audit-project', 'drift-detect', 'enhance', 'sync-docs', 'repo-map'];
|
|
138
|
+
const plugins = ['next-task', 'ship', 'deslop', 'audit-project', 'drift-detect', 'enhance', 'sync-docs', 'repo-map', 'perf'];
|
|
139
139
|
for (const plugin of plugins) {
|
|
140
140
|
console.log(` Installing ${plugin}...`);
|
|
141
141
|
try {
|
|
@@ -152,7 +152,7 @@ function installForClaude() {
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
console.log('\n✅ Claude Code installation complete!\n');
|
|
155
|
-
console.log('Commands: /next-task, /ship, /deslop, /audit-project, /drift-detect, /enhance');
|
|
155
|
+
console.log('Commands: /next-task, /ship, /deslop, /audit-project, /drift-detect, /enhance, /perf');
|
|
156
156
|
return true;
|
|
157
157
|
} catch (err) {
|
|
158
158
|
console.log('❌ Auto-install failed. Manual installation:');
|
|
@@ -249,7 +249,8 @@ function installForOpenCode(installDir, options = {}) {
|
|
|
249
249
|
['audit-project.md', 'audit-project', 'audit-project.md'],
|
|
250
250
|
['ship.md', 'ship', 'ship.md'],
|
|
251
251
|
['drift-detect.md', 'drift-detect', 'drift-detect.md'],
|
|
252
|
-
['repo-map.md', 'repo-map', 'repo-map.md']
|
|
252
|
+
['repo-map.md', 'repo-map', 'repo-map.md'],
|
|
253
|
+
['perf.md', 'perf', 'perf.md']
|
|
253
254
|
];
|
|
254
255
|
|
|
255
256
|
// Helper function to transform content for OpenCode
|
|
@@ -311,7 +312,7 @@ function installForOpenCode(installDir, options = {}) {
|
|
|
311
312
|
fs.mkdirSync(agentsDir, { recursive: true });
|
|
312
313
|
|
|
313
314
|
console.log(' Installing agents for OpenCode...');
|
|
314
|
-
const pluginDirs = ['next-task', 'enhance', 'audit-project', 'drift-detect', 'ship', 'deslop', 'repo-map'];
|
|
315
|
+
const pluginDirs = ['next-task', 'enhance', 'audit-project', 'drift-detect', 'ship', 'deslop', 'repo-map', 'perf'];
|
|
315
316
|
let agentCount = 0;
|
|
316
317
|
|
|
317
318
|
for (const pluginName of pluginDirs) {
|
|
@@ -388,7 +389,7 @@ function installForOpenCode(installDir, options = {}) {
|
|
|
388
389
|
console.log(` Commands: ${commandsDir}`);
|
|
389
390
|
console.log(` Agents: ${agentsDir}`);
|
|
390
391
|
console.log(` Plugin: ${pluginDir}`);
|
|
391
|
-
console.log(' Access via: /next-task, /ship, /deslop, /audit-project, /drift-detect, /enhance, /sync-docs');
|
|
392
|
+
console.log(' Access via: /next-task, /ship, /deslop, /audit-project, /drift-detect, /enhance, /sync-docs, /perf');
|
|
392
393
|
console.log(' MCP tools: workflow_status, workflow_start, workflow_resume, task_discover, review_code, slop_detect, enhance_analyze, repo_map');
|
|
393
394
|
console.log(' Native features: Auto-thinking selection, workflow enforcement, session compaction\n');
|
|
394
395
|
return true;
|
|
@@ -495,6 +496,8 @@ AI_STATE_DIR = ".codex"
|
|
|
495
496
|
'Use when user asks to "check plan drift", "compare docs to code", "verify roadmap", "scan for reality gaps". Analyzes documentation vs actual code to detect drift and outdated plans.'],
|
|
496
497
|
['repo-map', 'repo-map', 'repo-map.md',
|
|
497
498
|
'Use when user asks to "create repo map", "generate repo map", "update repo map", "repo map status", "map symbols". Builds and updates AST-based repo map using ast-grep.'],
|
|
499
|
+
['perf', 'perf', 'perf.md',
|
|
500
|
+
'Use when user asks to "run perf", "performance investigation", "benchmark regression", "profiling workflow", "baseline performance". Runs structured perf investigations with baselines, profiling, hypotheses, and decisions.'],
|
|
498
501
|
['delivery-approval', 'next-task', 'delivery-approval.md',
|
|
499
502
|
'Use when user asks to "validate delivery", "approve for shipping", "check if ready to ship", "verify task completion". Autonomous validation that tests pass, build succeeds, and requirements are met.'],
|
|
500
503
|
['sync-docs', 'sync-docs', 'sync-docs.md',
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook analyzer for /enhance.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const { hookPatterns } = require('./hook-patterns');
|
|
8
|
+
const { parseMarkdownFrontmatter } = require('./agent-analyzer');
|
|
9
|
+
|
|
10
|
+
function analyzeHook(hookPath) {
|
|
11
|
+
const results = {
|
|
12
|
+
hookName: path.basename(hookPath, '.md'),
|
|
13
|
+
hookPath,
|
|
14
|
+
structureIssues: []
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
if (!fs.existsSync(hookPath)) {
|
|
18
|
+
results.structureIssues.push({
|
|
19
|
+
issue: 'File not found',
|
|
20
|
+
file: hookPath,
|
|
21
|
+
certainty: 'HIGH',
|
|
22
|
+
patternId: 'file_not_found'
|
|
23
|
+
});
|
|
24
|
+
return results;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let content = '';
|
|
28
|
+
try {
|
|
29
|
+
content = fs.readFileSync(hookPath, 'utf8');
|
|
30
|
+
} catch (err) {
|
|
31
|
+
results.structureIssues.push({
|
|
32
|
+
issue: `Failed to read file: ${err.message}`,
|
|
33
|
+
file: hookPath,
|
|
34
|
+
certainty: 'HIGH',
|
|
35
|
+
patternId: 'read_error'
|
|
36
|
+
});
|
|
37
|
+
return results;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const missingFm = hookPatterns.missing_frontmatter.check(content);
|
|
41
|
+
if (missingFm) {
|
|
42
|
+
results.structureIssues.push({
|
|
43
|
+
...missingFm,
|
|
44
|
+
file: hookPath,
|
|
45
|
+
certainty: hookPatterns.missing_frontmatter.certainty,
|
|
46
|
+
patternId: hookPatterns.missing_frontmatter.id
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const { frontmatter } = parseMarkdownFrontmatter(content);
|
|
51
|
+
const missingName = hookPatterns.missing_name.check(frontmatter);
|
|
52
|
+
if (missingName) {
|
|
53
|
+
results.structureIssues.push({
|
|
54
|
+
...missingName,
|
|
55
|
+
file: hookPath,
|
|
56
|
+
certainty: hookPatterns.missing_name.certainty,
|
|
57
|
+
patternId: hookPatterns.missing_name.id
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const missingDescription = hookPatterns.missing_description.check(frontmatter);
|
|
62
|
+
if (missingDescription) {
|
|
63
|
+
results.structureIssues.push({
|
|
64
|
+
...missingDescription,
|
|
65
|
+
file: hookPath,
|
|
66
|
+
certainty: hookPatterns.missing_description.certainty,
|
|
67
|
+
patternId: hookPatterns.missing_description.id
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return results;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function analyzeAllHooks(hooksDir) {
|
|
75
|
+
const results = [];
|
|
76
|
+
if (!fs.existsSync(hooksDir)) return results;
|
|
77
|
+
|
|
78
|
+
const hookFiles = [];
|
|
79
|
+
const skipDirs = new Set(['node_modules', '.git', 'dist', 'build', 'out', 'target']);
|
|
80
|
+
|
|
81
|
+
function walk(dir) {
|
|
82
|
+
let entries;
|
|
83
|
+
try {
|
|
84
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
85
|
+
} catch (err) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
for (const entry of entries) {
|
|
90
|
+
const fullPath = path.join(dir, entry.name);
|
|
91
|
+
if (entry.isDirectory()) {
|
|
92
|
+
if (!skipDirs.has(entry.name)) {
|
|
93
|
+
walk(fullPath);
|
|
94
|
+
}
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (!entry.isFile() || !entry.name.endsWith('.md')) continue;
|
|
99
|
+
const parts = fullPath.split(path.sep);
|
|
100
|
+
if (parts.includes('hooks')) {
|
|
101
|
+
hookFiles.push(fullPath);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
walk(hooksDir);
|
|
107
|
+
|
|
108
|
+
for (const file of hookFiles) {
|
|
109
|
+
results.push(analyzeHook(file));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return results;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function analyze(options = {}) {
|
|
116
|
+
const {
|
|
117
|
+
hook,
|
|
118
|
+
hooksDir = 'plugins/enhance/hooks'
|
|
119
|
+
} = options;
|
|
120
|
+
|
|
121
|
+
if (hook) {
|
|
122
|
+
const hookPath = hook.endsWith('.md')
|
|
123
|
+
? hook
|
|
124
|
+
: path.join(hooksDir, `${hook}.md`);
|
|
125
|
+
return analyzeHook(hookPath);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return analyzeAllHooks(hooksDir);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
module.exports = {
|
|
132
|
+
analyzeHook,
|
|
133
|
+
analyzeAllHooks,
|
|
134
|
+
analyze
|
|
135
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook patterns for /enhance.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const hookPatterns = {
|
|
6
|
+
missing_frontmatter: {
|
|
7
|
+
id: 'missing_frontmatter',
|
|
8
|
+
certainty: 'HIGH',
|
|
9
|
+
check(content) {
|
|
10
|
+
if (!content || !content.trim().startsWith('---')) {
|
|
11
|
+
return { issue: 'Missing YAML frontmatter in hook file' };
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
missing_name: {
|
|
17
|
+
id: 'missing_name',
|
|
18
|
+
certainty: 'HIGH',
|
|
19
|
+
check(frontmatter) {
|
|
20
|
+
if (!frontmatter || !frontmatter.name) {
|
|
21
|
+
return { issue: 'Missing name in hook frontmatter' };
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
missing_description: {
|
|
27
|
+
id: 'missing_description',
|
|
28
|
+
certainty: 'HIGH',
|
|
29
|
+
check(frontmatter) {
|
|
30
|
+
if (!frontmatter || !frontmatter.description) {
|
|
31
|
+
return { issue: 'Missing description in hook frontmatter' };
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
module.exports = {
|
|
39
|
+
hookPatterns
|
|
40
|
+
};
|
package/lib/enhance/index.js
CHANGED
|
@@ -16,6 +16,8 @@ const projectmemoryAnalyzer = require('./projectmemory-analyzer');
|
|
|
16
16
|
const projectmemoryPatterns = require('./projectmemory-patterns');
|
|
17
17
|
const promptAnalyzer = require('./prompt-analyzer');
|
|
18
18
|
const promptPatterns = require('./prompt-patterns');
|
|
19
|
+
const hookAnalyzer = require('./hook-analyzer');
|
|
20
|
+
const skillAnalyzer = require('./skill-analyzer');
|
|
19
21
|
const reporter = require('./reporter');
|
|
20
22
|
const fixer = require('./fixer');
|
|
21
23
|
|
|
@@ -26,6 +28,8 @@ module.exports = {
|
|
|
26
28
|
docsAnalyzer,
|
|
27
29
|
projectmemoryAnalyzer,
|
|
28
30
|
promptAnalyzer,
|
|
31
|
+
hookAnalyzer,
|
|
32
|
+
skillAnalyzer,
|
|
29
33
|
|
|
30
34
|
// Pattern modules
|
|
31
35
|
pluginPatterns,
|
|
@@ -72,6 +76,16 @@ module.exports = {
|
|
|
72
76
|
promptApplyFixes: promptAnalyzer.applyFixes,
|
|
73
77
|
promptGenerateReport: promptAnalyzer.generateReport,
|
|
74
78
|
|
|
79
|
+
// Convenience exports - Hooks
|
|
80
|
+
analyzeHook: hookAnalyzer.analyzeHook,
|
|
81
|
+
analyzeAllHooks: hookAnalyzer.analyzeAllHooks,
|
|
82
|
+
hooksAnalyze: hookAnalyzer.analyze,
|
|
83
|
+
|
|
84
|
+
// Convenience exports - Skills
|
|
85
|
+
analyzeSkill: skillAnalyzer.analyzeSkill,
|
|
86
|
+
analyzeAllSkills: skillAnalyzer.analyzeAllSkills,
|
|
87
|
+
skillsAnalyze: skillAnalyzer.analyze,
|
|
88
|
+
|
|
75
89
|
// Convenience exports - Orchestrator
|
|
76
90
|
generateOrchestratorReport: reporter.generateOrchestratorReport,
|
|
77
91
|
deduplicateOrchestratorFindings: reporter.deduplicateOrchestratorFindings
|
package/lib/enhance/reporter.js
CHANGED
|
@@ -1091,7 +1091,7 @@ function generateOrchestratorReport(aggregatedResults, options = {}) {
|
|
|
1091
1091
|
lines.push('| Enhancer | HIGH | MEDIUM | LOW | Auto-Fixable |');
|
|
1092
1092
|
lines.push('|----------|------|--------|-----|--------------|');
|
|
1093
1093
|
|
|
1094
|
-
const enhancerTypes = ['plugin', 'agent', 'claudemd', 'docs', 'prompt'];
|
|
1094
|
+
const enhancerTypes = ['plugin', 'agent', 'claudemd', 'docs', 'prompt', 'hooks', 'skills'];
|
|
1095
1095
|
let totalHigh = 0, totalMedium = 0, totalLow = 0, totalAutoFix = 0;
|
|
1096
1096
|
|
|
1097
1097
|
for (const enhancer of enhancerTypes) {
|