Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugins/actionlint/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "actionlint",
"version": "0.5.1",
"version": "0.5.2",
"description": "Lint GitHub Actions workflow files on edit via actionlint, surfacing findings as advisory context.",
"author": {
"name": "Melodic Software",
Expand Down
12 changes: 12 additions & 0 deletions plugins/actionlint/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,18 @@
All notable changes to the `actionlint` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.5.2]

### Fixed

- **Emitted telemetry `hook` id now matches the published schema.** The hook emitted
`"actionlint"` on all three paths (skipped / findings / clean), but the envelope
`hook` value is the hook-script basename and its schema is discovered at
`data/<hook>.schema.json`. It now emits `"actionlint-check"`, matching
`docs/conventions/hook-telemetry/data/actionlint-check.schema.json` and the
README Implementers table. Producer-conformance fix only — the published
envelope/data contract is unchanged.

## [0.5.1]

### Changed
Expand Down
6 changes: 3 additions & 3 deletions plugins/actionlint/hooks/actionlint-check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ build_data_json() {
# status so a consumer sink can observe the coverage gap.
if ! command -v actionlint >/dev/null 2>&1; then
data_json=$(build_data_json '[]')
emit_tel "actionlint" "PostToolUse" "skipped" "$start" "$data_json" "$REPO_ROOT"
emit_tel "actionlint-check" "PostToolUse" "skipped" "$start" "$data_json" "$REPO_ROOT"
if hook::notice_once "actionlint-missing" "$INPUT"; then
hook::emit_skip_notice PostToolUse "actionlint: 'actionlint' not found on PATH — workflow lint skipped for this session. Install: https://github.com/rhysd/actionlint/blob/main/docs/install.md"
fi
Expand Down Expand Up @@ -133,11 +133,11 @@ if [[ -n "$AL_OUTPUT" ]]; then
FINDINGS_JSON=$(printf '%s' "$findings_raw" | jq -R . | jq -s . 2>/dev/null) || FINDINGS_JSON='[]'
fi
data_json=$(build_data_json "$FINDINGS_JSON")
emit_tel "actionlint" "PostToolUse" "ok" "$start" "$data_json" "$REPO_ROOT"
emit_tel "actionlint-check" "PostToolUse" "ok" "$start" "$data_json" "$REPO_ROOT"
exit 0
fi

# Clean workflow.
data_json=$(build_data_json '[]')
emit_tel "actionlint" "PostToolUse" "ok" "$start" "$data_json" "$REPO_ROOT"
emit_tel "actionlint-check" "PostToolUse" "ok" "$start" "$data_json" "$REPO_ROOT"
exit 0
2 changes: 1 addition & 1 deletion plugins/actionlint/hooks/actionlint-check.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ if [[ -s "$TEL" ]]; then
fail "envelope: $field missing ($(cat "$TEL"))"
fi
done
if [[ "$(jq -r '.hook' "$TEL")" == "actionlint" ]]; then ok "envelope: hook is actionlint"; else fail "envelope: hook=$(jq -r '.hook' "$TEL")"; fi
if [[ "$(jq -r '.hook' "$TEL")" == "actionlint-check" ]]; then ok "envelope: hook is actionlint-check"; else fail "envelope: hook=$(jq -r '.hook' "$TEL")"; fi
if [[ "$(jq -r '.status' "$TEL")" == "ok" ]]; then ok "envelope: status ok"; else fail "envelope: status=$(jq -r '.status' "$TEL")"; fi
if [[ "$(jq -r '.schema_version' "$TEL")" == "1.0" ]]; then ok "envelope: schema_version 1.0"; else fail "envelope: schema_version=$(jq -r '.schema_version' "$TEL")"; fi
if [[ "$(jq '.data.findings | length' "$TEL")" -ge 1 ]]; then ok "envelope: findings populated"; else fail "envelope: findings empty ($(jq '.data.findings' "$TEL"))"; fi
Expand Down