awesome-slash 2.4.4 → 2.5.1
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 +123 -1
- package/README.md +186 -159
- package/SECURITY.md +25 -81
- package/adapters/codex/install.sh +58 -16
- package/adapters/opencode/install.sh +92 -23
- package/lib/index.js +47 -4
- package/lib/patterns/review-patterns.js +58 -11
- package/lib/patterns/slop-patterns.js +154 -147
- package/lib/platform/detect-platform.js +99 -350
- package/lib/platform/detection-configs.js +93 -0
- package/lib/platform/state-dir.js +122 -0
- package/lib/platform/verify-tools.js +10 -78
- package/lib/schemas/README.md +195 -0
- package/lib/schemas/validator.js +247 -0
- package/lib/sources/custom-handler.js +199 -0
- package/lib/sources/policy-questions.js +239 -0
- package/lib/sources/source-cache.js +164 -0
- package/lib/state/workflow-state.js +368 -665
- package/lib/types/README.md +292 -0
- package/lib/types/agent-frontmatter.d.ts +134 -0
- package/lib/types/command-frontmatter.d.ts +107 -0
- package/lib/types/hook-frontmatter.d.ts +115 -0
- package/lib/types/index.d.ts +84 -0
- package/lib/types/plugin-manifest.d.ts +102 -0
- package/lib/types/skill-frontmatter.d.ts +89 -0
- package/lib/utils/cache-manager.js +154 -0
- package/lib/utils/context-optimizer.js +5 -36
- package/lib/utils/deprecation.js +37 -0
- package/lib/utils/shell-escape.js +88 -0
- package/mcp-server/index.js +513 -22
- package/package.json +6 -2
- package/plugins/deslop-around/.claude-plugin/plugin.json +1 -1
- package/plugins/deslop-around/lib/index.js +170 -0
- package/plugins/deslop-around/lib/patterns/review-patterns.js +58 -11
- package/plugins/deslop-around/lib/patterns/slop-patterns.js +169 -129
- package/plugins/deslop-around/lib/platform/detect-platform.js +162 -316
- package/plugins/deslop-around/lib/platform/detection-configs.js +93 -0
- package/plugins/deslop-around/lib/platform/state-dir.js +122 -0
- package/plugins/deslop-around/lib/platform/verify-tools.js +10 -78
- package/plugins/deslop-around/lib/schemas/README.md +195 -0
- package/plugins/deslop-around/lib/schemas/validator.js +247 -0
- package/plugins/deslop-around/lib/sources/custom-handler.js +199 -0
- package/plugins/deslop-around/lib/sources/policy-questions.js +239 -0
- package/plugins/deslop-around/lib/sources/source-cache.js +164 -0
- package/plugins/deslop-around/lib/state/workflow-state.js +387 -484
- package/plugins/deslop-around/lib/types/README.md +292 -0
- package/plugins/deslop-around/lib/types/agent-frontmatter.d.ts +134 -0
- package/plugins/deslop-around/lib/types/command-frontmatter.d.ts +107 -0
- package/plugins/deslop-around/lib/types/hook-frontmatter.d.ts +115 -0
- package/plugins/deslop-around/lib/types/index.d.ts +84 -0
- package/plugins/deslop-around/lib/types/plugin-manifest.d.ts +102 -0
- package/plugins/deslop-around/lib/types/skill-frontmatter.d.ts +89 -0
- package/plugins/deslop-around/lib/utils/cache-manager.js +154 -0
- package/plugins/deslop-around/lib/utils/context-optimizer.js +115 -37
- package/plugins/deslop-around/lib/utils/deprecation.js +37 -0
- package/plugins/deslop-around/lib/utils/shell-escape.js +88 -0
- package/plugins/next-task/.claude-plugin/plugin.json +1 -1
- package/plugins/next-task/agents/delivery-validator.md +2 -2
- package/plugins/next-task/agents/implementation-agent.md +3 -4
- package/plugins/next-task/agents/planning-agent.md +77 -19
- package/plugins/next-task/agents/review-orchestrator.md +21 -122
- package/plugins/next-task/agents/task-discoverer.md +164 -23
- package/plugins/next-task/commands/next-task.md +180 -14
- package/plugins/next-task/lib/index.js +170 -0
- package/plugins/next-task/lib/patterns/review-patterns.js +58 -11
- package/plugins/next-task/lib/patterns/slop-patterns.js +169 -129
- package/plugins/next-task/lib/platform/detect-platform.js +162 -316
- package/plugins/next-task/lib/platform/detection-configs.js +93 -0
- package/plugins/next-task/lib/platform/state-dir.js +122 -0
- package/plugins/next-task/lib/platform/verify-tools.js +10 -78
- package/plugins/next-task/lib/schemas/README.md +195 -0
- package/plugins/next-task/lib/schemas/validator.js +247 -0
- package/plugins/next-task/lib/sources/custom-handler.js +199 -0
- package/plugins/next-task/lib/sources/policy-questions.js +239 -0
- package/plugins/next-task/lib/sources/source-cache.js +164 -0
- package/plugins/next-task/lib/state/workflow-state.js +387 -484
- package/plugins/next-task/lib/types/README.md +292 -0
- package/plugins/next-task/lib/types/agent-frontmatter.d.ts +134 -0
- package/plugins/next-task/lib/types/command-frontmatter.d.ts +107 -0
- package/plugins/next-task/lib/types/hook-frontmatter.d.ts +115 -0
- package/plugins/next-task/lib/types/index.d.ts +84 -0
- package/plugins/next-task/lib/types/plugin-manifest.d.ts +102 -0
- package/plugins/next-task/lib/types/skill-frontmatter.d.ts +89 -0
- package/plugins/next-task/lib/utils/cache-manager.js +154 -0
- package/plugins/next-task/lib/utils/context-optimizer.js +115 -37
- package/plugins/next-task/lib/utils/deprecation.js +37 -0
- package/plugins/next-task/lib/utils/shell-escape.js +88 -0
- package/plugins/project-review/.claude-plugin/plugin.json +1 -1
- package/plugins/project-review/lib/index.js +170 -0
- package/plugins/project-review/lib/patterns/review-patterns.js +58 -11
- package/plugins/project-review/lib/patterns/slop-patterns.js +169 -129
- package/plugins/project-review/lib/platform/detect-platform.js +162 -316
- package/plugins/project-review/lib/platform/detection-configs.js +93 -0
- package/plugins/project-review/lib/platform/state-dir.js +122 -0
- package/plugins/project-review/lib/platform/verify-tools.js +10 -78
- package/plugins/project-review/lib/schemas/README.md +195 -0
- package/plugins/project-review/lib/schemas/validator.js +247 -0
- package/plugins/project-review/lib/sources/custom-handler.js +199 -0
- package/plugins/project-review/lib/sources/policy-questions.js +239 -0
- package/plugins/project-review/lib/sources/source-cache.js +164 -0
- package/plugins/project-review/lib/state/workflow-state.js +387 -484
- package/plugins/project-review/lib/types/README.md +292 -0
- package/plugins/project-review/lib/types/agent-frontmatter.d.ts +134 -0
- package/plugins/project-review/lib/types/command-frontmatter.d.ts +107 -0
- package/plugins/project-review/lib/types/hook-frontmatter.d.ts +115 -0
- package/plugins/project-review/lib/types/index.d.ts +84 -0
- package/plugins/project-review/lib/types/plugin-manifest.d.ts +102 -0
- package/plugins/project-review/lib/types/skill-frontmatter.d.ts +89 -0
- package/plugins/project-review/lib/utils/cache-manager.js +154 -0
- package/plugins/project-review/lib/utils/context-optimizer.js +115 -37
- package/plugins/project-review/lib/utils/deprecation.js +37 -0
- package/plugins/project-review/lib/utils/shell-escape.js +88 -0
- package/plugins/reality-check/.claude-plugin/plugin.json +1 -1
- package/plugins/reality-check/agents/code-explorer.md +1 -1
- package/plugins/ship/.claude-plugin/plugin.json +1 -1
- package/plugins/ship/lib/index.js +170 -0
- package/plugins/ship/lib/patterns/review-patterns.js +58 -11
- package/plugins/ship/lib/patterns/slop-patterns.js +169 -129
- package/plugins/ship/lib/platform/detect-platform.js +162 -316
- package/plugins/ship/lib/platform/detection-configs.js +93 -0
- package/plugins/ship/lib/platform/state-dir.js +122 -0
- package/plugins/ship/lib/platform/verify-tools.js +10 -78
- package/plugins/ship/lib/schemas/README.md +195 -0
- package/plugins/ship/lib/schemas/validator.js +247 -0
- package/plugins/ship/lib/sources/custom-handler.js +199 -0
- package/plugins/ship/lib/sources/policy-questions.js +239 -0
- package/plugins/ship/lib/sources/source-cache.js +164 -0
- package/plugins/ship/lib/state/workflow-state.js +387 -484
- package/plugins/ship/lib/types/README.md +292 -0
- package/plugins/ship/lib/types/agent-frontmatter.d.ts +134 -0
- package/plugins/ship/lib/types/command-frontmatter.d.ts +107 -0
- package/plugins/ship/lib/types/hook-frontmatter.d.ts +115 -0
- package/plugins/ship/lib/types/index.d.ts +84 -0
- package/plugins/ship/lib/types/plugin-manifest.d.ts +102 -0
- package/plugins/ship/lib/types/skill-frontmatter.d.ts +89 -0
- package/plugins/ship/lib/utils/cache-manager.js +154 -0
- package/plugins/ship/lib/utils/context-optimizer.js +115 -37
- package/plugins/ship/lib/utils/deprecation.js +37 -0
- package/plugins/ship/lib/utils/shell-escape.js +88 -0
- package/scripts/install/codex.sh +216 -72
- package/scripts/install/opencode.sh +197 -21
- package/lib/state/workflow-state.schema.json +0 -282
- package/plugins/deslop-around/lib/state/workflow-state.schema.json +0 -282
- package/plugins/next-task/agents/policy-selector.md +0 -248
- package/plugins/next-task/lib/state/tasks-registry.schema.json +0 -85
- package/plugins/next-task/lib/state/workflow-state.schema.json +0 -282
- package/plugins/next-task/lib/state/worktree-status.schema.json +0 -219
- package/plugins/project-review/lib/state/workflow-state.schema.json +0 -282
- package/plugins/ship/lib/state/workflow-state.schema.json +0 -282
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deprecation Warning Utility
|
|
3
|
+
* Centralized utility for handling deprecation warnings across the codebase
|
|
4
|
+
*
|
|
5
|
+
* @author Avi Fenesh
|
|
6
|
+
* @license MIT
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// Track which functions have already shown deprecation warnings (once per function)
|
|
10
|
+
const _deprecationWarned = new Set();
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Show deprecation warning for sync functions (once per function name)
|
|
14
|
+
* @param {string} funcName - Name of the deprecated sync function
|
|
15
|
+
* @param {string} asyncAlt - Name of the async alternative
|
|
16
|
+
*/
|
|
17
|
+
function warnDeprecation(funcName, asyncAlt) {
|
|
18
|
+
if (_deprecationWarned.has(funcName)) return;
|
|
19
|
+
_deprecationWarned.add(funcName);
|
|
20
|
+
console.warn(
|
|
21
|
+
`DEPRECATED: ${funcName}() is synchronous and blocks the event loop. ` +
|
|
22
|
+
`Use ${asyncAlt}() instead. Will be removed in v3.0.0.`
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Reset deprecation warnings (for testing only)
|
|
28
|
+
* @private
|
|
29
|
+
*/
|
|
30
|
+
function _resetDeprecationWarnings() {
|
|
31
|
+
_deprecationWarned.clear();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
module.exports = {
|
|
35
|
+
warnDeprecation,
|
|
36
|
+
_resetDeprecationWarnings
|
|
37
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell Escaping Utilities
|
|
3
|
+
* Centralized string escaping functions for safe shell command construction
|
|
4
|
+
*
|
|
5
|
+
* @module lib/utils/shell-escape
|
|
6
|
+
* @author Avi Fenesh
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Escape shell special characters for safe command interpolation
|
|
12
|
+
* Handles all dangerous shell metacharacters including command injection vectors
|
|
13
|
+
* Optimized: uses single regex test instead of multiple .includes() calls
|
|
14
|
+
* @param {string} str - String to escape
|
|
15
|
+
* @returns {string} Escaped string safe for shell use
|
|
16
|
+
* @throws {Error} If string contains null bytes or newlines
|
|
17
|
+
*/
|
|
18
|
+
function escapeShell(str) {
|
|
19
|
+
if (typeof str !== 'string') return '';
|
|
20
|
+
|
|
21
|
+
// Reject null bytes and newlines which could be used for injection
|
|
22
|
+
// Optimized: single regex test instead of 3 separate .includes() scans
|
|
23
|
+
// Use \x00 instead of \0 for better portability across JS engines
|
|
24
|
+
if (/[\x00\n\r]/.test(str)) {
|
|
25
|
+
throw new Error('Input contains invalid characters (null bytes or newlines)');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Escape all shell metacharacters: " $ ` \ ! ; | & > < ( ) { } [ ] * ? ~ # ' space tab
|
|
29
|
+
return str.replace(/["\$`\\!;|&><(){}[\]*?~#'\s]/g, '\\$&');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Escape single quotes for shell (replace ' with '\''
|
|
34
|
+
* Use this for strings that will be wrapped in single quotes
|
|
35
|
+
* @param {string} str - String to escape
|
|
36
|
+
* @returns {string} Escaped string safe for single-quoted shell use
|
|
37
|
+
*/
|
|
38
|
+
function escapeSingleQuotes(str) {
|
|
39
|
+
if (typeof str !== 'string') return '';
|
|
40
|
+
return str.replace(/'/g, "'\\''");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Validate and sanitize file extension
|
|
45
|
+
* Removes all non-alphanumeric characters
|
|
46
|
+
* @param {string} ext - Extension to validate
|
|
47
|
+
* @returns {string} Safe extension (alphanumeric only), defaults to 'ts' if empty
|
|
48
|
+
*/
|
|
49
|
+
function sanitizeExtension(ext) {
|
|
50
|
+
if (typeof ext !== 'string') return 'ts';
|
|
51
|
+
const safe = ext.replace(/[^a-zA-Z0-9]/g, '');
|
|
52
|
+
return safe || 'ts';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Escape a string for use in a double-quoted shell context
|
|
57
|
+
* More permissive than escapeShell but still safe
|
|
58
|
+
* @param {string} str - String to escape
|
|
59
|
+
* @returns {string} Escaped string safe for double-quoted shell use
|
|
60
|
+
*/
|
|
61
|
+
function escapeDoubleQuotes(str) {
|
|
62
|
+
if (typeof str !== 'string') return '';
|
|
63
|
+
|
|
64
|
+
// In double quotes, we need to escape: $ ` " \ and newlines
|
|
65
|
+
return str.replace(/[$`"\\\n]/g, '\\$&');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Quote a string for safe shell use
|
|
70
|
+
* Wraps in single quotes and escapes any embedded single quotes
|
|
71
|
+
* This is often safer than escapeShell for complex strings
|
|
72
|
+
* @param {string} str - String to quote
|
|
73
|
+
* @returns {string} Safely quoted string
|
|
74
|
+
*/
|
|
75
|
+
function quoteShell(str) {
|
|
76
|
+
if (typeof str !== 'string') return "''";
|
|
77
|
+
|
|
78
|
+
// Wrap in single quotes and escape any embedded single quotes
|
|
79
|
+
return "'" + str.replace(/'/g, "'\\''") + "'";
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
module.exports = {
|
|
83
|
+
escapeShell,
|
|
84
|
+
escapeSingleQuotes,
|
|
85
|
+
sanitizeExtension,
|
|
86
|
+
escapeDoubleQuotes,
|
|
87
|
+
quoteShell
|
|
88
|
+
};
|
package/scripts/install/codex.sh
CHANGED
|
@@ -4,8 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
set -e
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
# Detect plugin root - works whether run directly or via bash -c
|
|
8
|
+
if [ -n "${BASH_SOURCE[0]}" ] && [ -f "${BASH_SOURCE[0]}" ]; then
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
|
+
PLUGIN_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
11
|
+
elif [ -f "scripts/install/codex.sh" ]; then
|
|
12
|
+
PLUGIN_ROOT="$(pwd)"
|
|
13
|
+
elif [ -f "package.json" ] && grep -q "awesome-slash" package.json 2>/dev/null; then
|
|
14
|
+
PLUGIN_ROOT="$(pwd)"
|
|
15
|
+
else
|
|
16
|
+
echo "Error: Cannot detect plugin root. Run from the awesome-slash directory."
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
9
19
|
|
|
10
20
|
echo "Installing awesome-slash for Codex CLI..."
|
|
11
21
|
echo "Plugin root: $PLUGIN_ROOT"
|
|
@@ -22,22 +32,56 @@ echo "Installing MCP server dependencies..."
|
|
|
22
32
|
cd "$PLUGIN_ROOT/mcp-server"
|
|
23
33
|
npm install --production
|
|
24
34
|
|
|
25
|
-
#
|
|
35
|
+
# Configure MCP server in config.toml
|
|
26
36
|
echo "Configuring MCP server..."
|
|
27
37
|
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
|
|
39
|
+
CONFIG_FILE="$CODEX_HOME/config.toml"
|
|
40
|
+
|
|
41
|
+
# Ensure config directory exists
|
|
42
|
+
mkdir -p "$CODEX_HOME"
|
|
43
|
+
|
|
44
|
+
# Create config file if it doesn't exist
|
|
45
|
+
if [ ! -f "$CONFIG_FILE" ]; then
|
|
46
|
+
touch "$CONFIG_FILE"
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# Backup existing config
|
|
50
|
+
cp "$CONFIG_FILE" "$CONFIG_FILE.backup"
|
|
30
51
|
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
52
|
+
# Remove existing awesome-slash MCP server section if present
|
|
53
|
+
if grep -q "\[mcp_servers.awesome-slash\]" "$CONFIG_FILE" 2>/dev/null; then
|
|
54
|
+
# Use sed to remove the section (from [mcp_servers.awesome-slash] to next section or EOF)
|
|
55
|
+
sed -i '/\[mcp_servers\.awesome-slash\]/,/^\[/{/^\[mcp_servers\.awesome-slash\]/d;/^\[/!d}' "$CONFIG_FILE"
|
|
56
|
+
# Clean up any trailing empty lines
|
|
57
|
+
sed -i '/^$/N;/^\n$/d' "$CONFIG_FILE"
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# Convert Git Bash path to Windows path for TOML
|
|
61
|
+
# /c/Users/... -> C:/Users/...
|
|
62
|
+
if [[ "$PLUGIN_ROOT" == /[a-z]/* ]]; then
|
|
63
|
+
DRIVE_LETTER=$(echo "$PLUGIN_ROOT" | cut -c2 | tr '[:lower:]' '[:upper:]')
|
|
64
|
+
PLUGIN_ROOT_WIN="${DRIVE_LETTER}:${PLUGIN_ROOT:2}"
|
|
65
|
+
else
|
|
66
|
+
PLUGIN_ROOT_WIN="$PLUGIN_ROOT"
|
|
67
|
+
fi
|
|
68
|
+
MCP_SERVER_PATH="$PLUGIN_ROOT_WIN/mcp-server/index.js"
|
|
69
|
+
|
|
70
|
+
# Append MCP server configuration
|
|
71
|
+
cat >> "$CONFIG_FILE" << EOF
|
|
72
|
+
|
|
73
|
+
[mcp_servers.awesome-slash]
|
|
74
|
+
command = "node"
|
|
75
|
+
args = ["$MCP_SERVER_PATH"]
|
|
76
|
+
env = { PLUGIN_ROOT = "$PLUGIN_ROOT_WIN", AI_STATE_DIR = ".codex" }
|
|
77
|
+
enabled = true
|
|
78
|
+
EOF
|
|
35
79
|
|
|
36
|
-
echo "MCP server configured
|
|
80
|
+
echo "MCP server configured in $CONFIG_FILE"
|
|
37
81
|
|
|
38
82
|
# Create skills directory
|
|
39
|
-
|
|
40
|
-
SKILLS_DIR="$
|
|
83
|
+
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
|
|
84
|
+
SKILLS_DIR="$CODEX_HOME/skills"
|
|
41
85
|
|
|
42
86
|
echo "Installing Codex skills..."
|
|
43
87
|
|
|
@@ -46,35 +90,48 @@ mkdir -p "$SKILLS_DIR/next-task"
|
|
|
46
90
|
cat > "$SKILLS_DIR/next-task/SKILL.md" << 'EOF'
|
|
47
91
|
---
|
|
48
92
|
name: next-task
|
|
49
|
-
description: Master workflow orchestrator for task-to-production automation. Use when users want to find their next task, prioritize work, start a new workflow, or ask "what should I work on". Integrates with GitHub Issues, Linear, and
|
|
93
|
+
description: Master workflow orchestrator for task-to-production automation. Use this skill when users want to find their next task, prioritize work, start a new workflow, resume an interrupted workflow, or ask "what should I work on next". Integrates with GitHub Issues, Linear, and local task files for task discovery.
|
|
50
94
|
---
|
|
51
95
|
|
|
52
96
|
# Next Task Workflow
|
|
53
97
|
|
|
54
98
|
Find and implement the next priority task with full workflow automation.
|
|
55
99
|
|
|
56
|
-
##
|
|
100
|
+
## CRITICAL: Always Ask User First
|
|
101
|
+
|
|
102
|
+
**DO NOT auto-select options.** You MUST ask the user:
|
|
103
|
+
|
|
104
|
+
1. First call `workflow_status` MCP tool to check for existing workflow
|
|
105
|
+
2. If resumable, ASK: "Resume existing workflow or start fresh?"
|
|
106
|
+
3. For new workflows, ASK user to choose:
|
|
107
|
+
- **Task Source**: GitHub Issues, GitLab, Local files, or Custom?
|
|
108
|
+
- **Priority Filter**: Bugs, Security, Features, or All?
|
|
109
|
+
- **Stopping Point**: PR created, Merged, or Deployed?
|
|
110
|
+
|
|
111
|
+
## MCP Tools
|
|
57
112
|
|
|
58
|
-
Use the awesome-slash MCP tools:
|
|
59
113
|
- `workflow_status` - Check current workflow state
|
|
60
|
-
- `workflow_start` - Start
|
|
114
|
+
- `workflow_start` - Start workflow (params: taskSource, priorityFilter, stoppingPoint)
|
|
61
115
|
- `workflow_resume` - Resume from checkpoint
|
|
62
116
|
- `workflow_abort` - Cancel and cleanup
|
|
63
|
-
- `task_discover` - Find
|
|
117
|
+
- `task_discover` - Find tasks (params: source, filter, limit)
|
|
64
118
|
|
|
65
|
-
##
|
|
119
|
+
## Task Sources (ask user)
|
|
66
120
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
5. Use `workflow_resume` if interrupted
|
|
121
|
+
- `gh-issues` - GitHub Issues
|
|
122
|
+
- `glab-issues` - GitLab Issues
|
|
123
|
+
- `tasks-md` - Local TASKS.md/PLAN.md/TODO.md
|
|
124
|
+
- `custom` - Custom file path
|
|
72
125
|
|
|
73
|
-
##
|
|
126
|
+
## Stopping Points (ask user)
|
|
74
127
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
128
|
+
- `pr-created` - Stop after PR
|
|
129
|
+
- `merged` - Stop after merge
|
|
130
|
+
- `deployed` - Stop after deployment
|
|
131
|
+
|
|
132
|
+
## State Directory
|
|
133
|
+
|
|
134
|
+
State stored in `.codex/` (flow.json, tasks.json)
|
|
78
135
|
EOF
|
|
79
136
|
|
|
80
137
|
# Create ship skill
|
|
@@ -82,31 +139,44 @@ mkdir -p "$SKILLS_DIR/ship"
|
|
|
82
139
|
cat > "$SKILLS_DIR/ship/SKILL.md" << 'EOF'
|
|
83
140
|
---
|
|
84
141
|
name: ship
|
|
85
|
-
description: Complete PR workflow from commit to production with validation. Use when users want to ship code, create a
|
|
142
|
+
description: Complete PR workflow from commit to production with validation. Use this skill when users want to ship code, create a pull request, merge changes, deploy to production, or finish their current work. Handles commit creation, PR creation, CI monitoring, code review, merge, and deployment validation.
|
|
86
143
|
---
|
|
87
144
|
|
|
88
145
|
# Ship Workflow
|
|
89
146
|
|
|
90
147
|
Complete PR workflow from commit to production.
|
|
91
148
|
|
|
92
|
-
##
|
|
149
|
+
## MCP Tools Available
|
|
93
150
|
|
|
94
|
-
Use the awesome-slash MCP tools:
|
|
95
151
|
- `workflow_status` - Check current state
|
|
96
|
-
- `review_code` - Run multi-agent review
|
|
97
|
-
|
|
98
|
-
## Workflow
|
|
99
|
-
|
|
100
|
-
1.
|
|
101
|
-
2.
|
|
102
|
-
3.
|
|
103
|
-
4.
|
|
104
|
-
5.
|
|
105
|
-
6.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
152
|
+
- `review_code` - Run multi-agent code review
|
|
153
|
+
|
|
154
|
+
## Workflow Instructions
|
|
155
|
+
|
|
156
|
+
1. Check `workflow_status` for current state
|
|
157
|
+
2. Stage and commit changes with a clear, descriptive message
|
|
158
|
+
3. Create PR using `gh pr create` with context
|
|
159
|
+
4. Run `review_code` MCP tool for multi-agent review
|
|
160
|
+
5. Monitor CI status and fix any failures
|
|
161
|
+
6. Merge when approved
|
|
162
|
+
7. Validate deployment if configured
|
|
163
|
+
|
|
164
|
+
## Supported Platforms
|
|
165
|
+
|
|
166
|
+
**CI Platforms:**
|
|
167
|
+
- GitHub Actions
|
|
168
|
+
- GitLab CI
|
|
169
|
+
- CircleCI
|
|
170
|
+
- Jenkins
|
|
171
|
+
- Travis CI
|
|
172
|
+
|
|
173
|
+
**Deployment Platforms:**
|
|
174
|
+
- Railway
|
|
175
|
+
- Vercel
|
|
176
|
+
- Netlify
|
|
177
|
+
- Fly.io
|
|
178
|
+
- Platform.sh
|
|
179
|
+
- Render
|
|
110
180
|
EOF
|
|
111
181
|
|
|
112
182
|
# Create review skill
|
|
@@ -114,30 +184,43 @@ mkdir -p "$SKILLS_DIR/review"
|
|
|
114
184
|
cat > "$SKILLS_DIR/review/SKILL.md" << 'EOF'
|
|
115
185
|
---
|
|
116
186
|
name: review
|
|
117
|
-
description: Run multi-agent code review on changes. Use when users want to review code, check code quality,
|
|
187
|
+
description: Run multi-agent code review on changes. Use this skill when users want to review code, check code quality, run code analysis, find bugs, check for security issues, or validate changes before committing or creating a pull request.
|
|
118
188
|
---
|
|
119
189
|
|
|
120
190
|
# Code Review
|
|
121
191
|
|
|
122
192
|
Run multi-agent code review on changes.
|
|
123
193
|
|
|
124
|
-
##
|
|
194
|
+
## How To Run
|
|
125
195
|
|
|
126
|
-
|
|
127
|
-
- `review_code` - Run multi-agent review
|
|
196
|
+
**Step 1: Get files to review**
|
|
128
197
|
|
|
129
|
-
|
|
198
|
+
If user provided files, use those. Otherwise get changed files:
|
|
199
|
+
```bash
|
|
200
|
+
git diff --name-only HEAD
|
|
201
|
+
```
|
|
130
202
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
203
|
+
**Step 2: Call review_code MCP tool**
|
|
204
|
+
```
|
|
205
|
+
review_code({ files: ["src/file1.ts", "src/file2.ts"] })
|
|
206
|
+
```
|
|
135
207
|
|
|
136
|
-
##
|
|
208
|
+
## Review Checks
|
|
137
209
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
210
|
+
- Console debugging statements (console.log, print, dbg!)
|
|
211
|
+
- TODO/FIXME comments
|
|
212
|
+
- Commented-out code
|
|
213
|
+
- Debugger statements
|
|
214
|
+
- Empty catch blocks
|
|
215
|
+
- TypeScript `any` types
|
|
216
|
+
- Hardcoded secrets
|
|
217
|
+
|
|
218
|
+
## Default Behavior
|
|
219
|
+
|
|
220
|
+
If no files specified:
|
|
221
|
+
1. Get changed files via `git diff --name-only HEAD`
|
|
222
|
+
2. If no changes, ASK user: "Which files should I review?"
|
|
223
|
+
3. Never review 0 files silently
|
|
141
224
|
EOF
|
|
142
225
|
|
|
143
226
|
# Create deslop skill
|
|
@@ -145,37 +228,98 @@ mkdir -p "$SKILLS_DIR/deslop"
|
|
|
145
228
|
cat > "$SKILLS_DIR/deslop/SKILL.md" << 'EOF'
|
|
146
229
|
---
|
|
147
230
|
name: deslop
|
|
148
|
-
description: Clean AI slop from codebase
|
|
231
|
+
description: Clean AI slop from codebase. Use this skill when users want to clean up code, remove debugging statements, delete console.log calls, remove TODO comments, clean placeholder text, remove empty catch blocks, or prepare code for production by removing development artifacts.
|
|
149
232
|
---
|
|
150
233
|
|
|
151
234
|
# Deslop - AI Slop Cleanup
|
|
152
235
|
|
|
153
|
-
Remove debugging code, old TODOs, and AI-generated slop from codebase.
|
|
236
|
+
Remove debugging code, old TODOs, and AI-generated slop from the codebase.
|
|
237
|
+
|
|
238
|
+
## How To Run
|
|
239
|
+
|
|
240
|
+
**Step 1: Get files to analyze**
|
|
241
|
+
|
|
242
|
+
If user provided a path, use that. Otherwise:
|
|
243
|
+
```bash
|
|
244
|
+
# Get changed files (staged + unstaged)
|
|
245
|
+
git diff --name-only HEAD
|
|
246
|
+
# Or get all source files in a directory
|
|
247
|
+
find src -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" \)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Step 2: Call review_code MCP tool with files**
|
|
251
|
+
```
|
|
252
|
+
review_code({ files: ["src/file1.ts", "src/file2.ts"] })
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Step 3: Fix issues found**
|
|
256
|
+
|
|
257
|
+
Review findings by severity and apply fixes.
|
|
154
258
|
|
|
155
259
|
## Detection Patterns
|
|
156
260
|
|
|
157
|
-
- Console debugging (console.log, print, dbg!)
|
|
261
|
+
- Console debugging (console.log, print(), dbg!())
|
|
158
262
|
- Placeholder text (TODO, FIXME, lorem ipsum)
|
|
159
263
|
- Empty catch blocks
|
|
160
|
-
- Commented-out code
|
|
161
|
-
-
|
|
162
|
-
|
|
264
|
+
- Commented-out code blocks
|
|
265
|
+
- Disabled linters (eslint-disable, @ts-ignore)
|
|
266
|
+
|
|
267
|
+
## Default Behavior
|
|
268
|
+
|
|
269
|
+
If no path specified:
|
|
270
|
+
1. First check `git diff --name-only` for changed files
|
|
271
|
+
2. If no changes, ASK user: "Which directory should I scan?"
|
|
272
|
+
3. Never scan 0 files silently
|
|
273
|
+
EOF
|
|
274
|
+
|
|
275
|
+
# Create workflow-status skill for quick status checks
|
|
276
|
+
mkdir -p "$SKILLS_DIR/workflow-status"
|
|
277
|
+
cat > "$SKILLS_DIR/workflow-status/SKILL.md" << 'EOF'
|
|
278
|
+
---
|
|
279
|
+
name: workflow-status
|
|
280
|
+
description: Check the current workflow status. Use this skill when users ask about current task status, workflow progress, what phase they're in, or want to see the state of their work.
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
# Workflow Status
|
|
284
|
+
|
|
285
|
+
Quick check of the current workflow state.
|
|
163
286
|
|
|
164
|
-
##
|
|
287
|
+
## MCP Tools Available
|
|
165
288
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
289
|
+
- `workflow_status` - Get current workflow state
|
|
290
|
+
|
|
291
|
+
## Instructions
|
|
292
|
+
|
|
293
|
+
Simply call the `workflow_status` MCP tool to retrieve:
|
|
294
|
+
- Current task being worked on
|
|
295
|
+
- Current workflow phase
|
|
296
|
+
- Resume capability
|
|
297
|
+
- PR status if applicable
|
|
298
|
+
- Last update timestamp
|
|
299
|
+
|
|
300
|
+
## Status Information
|
|
301
|
+
|
|
302
|
+
The status includes:
|
|
303
|
+
- **task** - Current task title and ID
|
|
304
|
+
- **phase** - Current workflow phase (exploration, planning, implementation, etc.)
|
|
305
|
+
- **status** - Current status (in_progress, completed, failed)
|
|
306
|
+
- **pr** - Pull request number and URL if created
|
|
307
|
+
- **canResume** - Whether the workflow can be resumed
|
|
169
308
|
EOF
|
|
170
309
|
|
|
171
310
|
echo ""
|
|
172
311
|
echo "✓ Installation complete!"
|
|
173
312
|
echo ""
|
|
313
|
+
echo "Installed:"
|
|
314
|
+
echo " - MCP server: awesome-slash"
|
|
315
|
+
echo " - Skills: next-task, ship, review, deslop, workflow-status"
|
|
316
|
+
echo ""
|
|
174
317
|
echo "Usage:"
|
|
175
|
-
echo " 1. Start Codex: codex
|
|
176
|
-
echo " 2. Skills
|
|
177
|
-
echo " 3.
|
|
318
|
+
echo " 1. Start Codex: codex"
|
|
319
|
+
echo " 2. Skills are automatically selected based on your request"
|
|
320
|
+
echo " 3. Or invoke directly: \$next-task, \$ship, \$review, \$deslop"
|
|
321
|
+
echo " 4. MCP tools: workflow_status, workflow_start, task_discover, review_code"
|
|
178
322
|
echo ""
|
|
179
323
|
echo "To verify installation:"
|
|
180
|
-
echo " codex
|
|
181
|
-
echo " ls ~/.codex/skills/"
|
|
324
|
+
echo " cat ~/.codex/config.toml # Check MCP server config"
|
|
325
|
+
echo " ls ~/.codex/skills/ # Check installed skills"
|