Skip to content

[ci] Tighten shellcheck severity + add plugin schema validation#107

Merged
lugassawan merged 5 commits into
mainfrom
ci/shellcheck-severity-plugin-schema-validation
May 3, 2026
Merged

[ci] Tighten shellcheck severity + add plugin schema validation#107
lugassawan merged 5 commits into
mainfrom
ci/shellcheck-severity-plugin-schema-validation

Conversation

@lugassawan
Copy link
Copy Markdown
Owner

@lugassawan lugassawan commented May 3, 2026

Summary

  • [feat] Run shellcheck on scripts/release.sh in CI #74: Lower shellcheck severity from errorwarning; catches SC2086 (unquoted vars) and SC2155 (declare-and-assign masking) in all *.sh scripts and githooks. Rename step for clarity.
  • [feat] Plugin-schema validation step in release.yml #77: Vendor plugin.schema.json and marketplace.schema.json from SchemaStore under .claude-plugin/schemas/ (provenance in $comment). Add a Python/jsonschema==4.23.0 validation step to release.yml — runs after jq empty, before tag-version check, so a broken manifest fails fast. Add $schema IDE-hint field to both manifests.

Test Plan

  • shellcheck --severity=warning scripts/*.sh .githooks/commit-msg .githooks/pre-commit .githooks/pre-push → exit 0 locally
  • Positive validation run (Draft7Validator against real manifests) → both pass
  • Negative validation run (del(.name) from plugin.json) → exit 1 + 'name' is a required property
  • $schema fields present in both manifests and do not cause schema violations
  • Claude Code local plugin load (claude /plugins) — confirm no loader warnings after $schema added
  • CI shellcheck job green on this PR
  • CI validate-plugin-files job green on this PR

Closes #74, Closes #77

lugassawan added 5 commits May 3, 2026 11:14
Catches SC2086 (unquoted variable) and SC2155 (declare-and-assign)
in release-critical scripts; renames step to signal intent.
Pins claude-code-plugin-manifest and claude-code-marketplace schemas
locally under .claude-plugin/schemas/ so CI can validate against
them without network calls; $comment records provenance + fetch date.
Installs jsonschema==4.23.0 and validates plugin.json + marketplace.json
against vendored schemas; fails fast before tag-version check so broken
manifests never reach the GitHub Release step.
Points to canonical SchemaStore URLs for IDE autocomplete/validation;
the CI gate enforces the vendored copy so no live network call at runtime.
Vendored schemas declare draft-07; using Draft202012Validator silently
skips 'definitions' sub-schemas. Draft7Validator applies the correct
evaluation semantics.
@lugassawan lugassawan merged commit fa9fb4c into main May 3, 2026
9 checks passed
@lugassawan lugassawan deleted the ci/shellcheck-severity-plugin-schema-validation branch May 3, 2026 04:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] Plugin-schema validation step in release.yml [feat] Run shellcheck on scripts/release.sh in CI

1 participant