mirror of
https://github.com/ivuorinen/actions.git
synced 2026-03-07 23:56:29 +00:00
fix(claude): add tool availability guards and fix skill docs
Add jq availability checks to hook scripts (block-rules-yml.sh, post-edit-write.sh) and wrap actionlint call in command -v guard, consistent with project rules #2 and #10. Fix validate skill to reflect actual make all pipeline order and note that make test runs separately.
This commit is contained in:
@@ -2,6 +2,11 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# Read JSON input from stdin to get the file path
|
# Read JSON input from stdin to get the file path
|
||||||
|
if ! command -v jq >/dev/null 2>&1; then
|
||||||
|
echo "Error: jq is required but not found" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
INPUT=$(cat)
|
INPUT=$(cat)
|
||||||
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.filePath // empty')
|
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.filePath // empty')
|
||||||
|
|
||||||
@@ -10,7 +15,7 @@ if [ -z "$FILE_PATH" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
case "$FILE_PATH" in
|
case "$FILE_PATH" in
|
||||||
*/rules.yml)
|
*/rules.yml)
|
||||||
echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"rules.yml files are auto-generated. Run make update-validators instead."}}'
|
echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"rules.yml files are auto-generated. Run make update-validators instead."}}'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -2,6 +2,11 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# Read JSON input from stdin to get the file path
|
# Read JSON input from stdin to get the file path
|
||||||
|
if ! command -v jq >/dev/null 2>&1; then
|
||||||
|
echo "Error: jq is required but not found" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
INPUT=$(cat)
|
INPUT=$(cat)
|
||||||
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.filePath // empty')
|
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.filePath // empty')
|
||||||
|
|
||||||
@@ -10,30 +15,32 @@ if [ -z "$FILE_PATH" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
case "$FILE_PATH" in
|
case "$FILE_PATH" in
|
||||||
*/rules.yml)
|
*/rules.yml)
|
||||||
# rules.yml should not be reached here (blocked by PreToolUse),
|
# rules.yml should not be reached here (blocked by PreToolUse),
|
||||||
# but skip formatting just in case
|
# but skip formatting just in case
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*.py)
|
*.py)
|
||||||
ruff format --quiet "$FILE_PATH" 2>/dev/null || true
|
ruff format --quiet "$FILE_PATH" 2>/dev/null || true
|
||||||
ruff check --fix --quiet "$FILE_PATH" 2>/dev/null || true
|
ruff check --fix --quiet "$FILE_PATH" 2>/dev/null || true
|
||||||
;;
|
;;
|
||||||
*.sh)
|
*.sh)
|
||||||
shfmt -w "$FILE_PATH" 2>/dev/null || true
|
shfmt -w "$FILE_PATH" 2>/dev/null || true
|
||||||
shellcheck "$FILE_PATH" 2>&1 || true
|
shellcheck "$FILE_PATH" 2>&1 || true
|
||||||
;;
|
;;
|
||||||
*.yml|*.yaml|*.json)
|
*.yml | *.yaml | *.json)
|
||||||
npx prettier --write "$FILE_PATH" 2>/dev/null || true
|
npx prettier --write "$FILE_PATH" 2>/dev/null || true
|
||||||
;;
|
;;
|
||||||
*.md)
|
*.md)
|
||||||
npx prettier --write "$FILE_PATH" 2>/dev/null || true
|
npx prettier --write "$FILE_PATH" 2>/dev/null || true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Run actionlint on action.yml files
|
# Run actionlint on action.yml files
|
||||||
case "$FILE_PATH" in
|
case "$FILE_PATH" in
|
||||||
*/action.yml)
|
*/action.yml)
|
||||||
|
if command -v actionlint >/dev/null 2>&1; then
|
||||||
actionlint "$FILE_PATH" 2>&1 || true
|
actionlint "$FILE_PATH" 2>&1 || true
|
||||||
;;
|
fi
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ Run the complete validation pipeline:
|
|||||||
make all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
This runs in order: `docs` -> `format` -> `lint` -> `test`
|
This runs in order: `install-tools` -> `update-validators` -> `docs` -> `update-catalog` -> `format` -> `lint` -> `precommit`
|
||||||
|
|
||||||
|
**Note:** `make test` must be run separately.
|
||||||
|
|
||||||
## If validation fails
|
## If validation fails
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user