Skip to content

Add offline marketplace validator#87

Merged
lcbill merged 1 commit into
masterfrom
bt-marketplace-validation
Apr 30, 2026
Merged

Add offline marketplace validator#87
lcbill merged 1 commit into
masterfrom
bt-marketplace-validation

Conversation

@lcbill
Copy link
Copy Markdown
Contributor

@lcbill lcbill commented Apr 30, 2026

Summary

  • New scripts/validate.py — Tier-1 offline validation for the plugin marketplace, no credentials, ~3s runtime
  • Catches malformed manifests, broken SKILL.md frontmatter, dangling path references, bad bash blocks, and silent skill deletions vs master
  • .gitignore for working-notes files (.action.md, actions.md)

Why

The repo currently has no automated testing. PR #85 (merged 2026-04-30) silently carved ~25 skills out of lc-essentials into a new plugin without a migration note — there was no mechanism to surface that to a reviewer. This validator would have flagged it.

What it checks

  1. marketplace.json + each plugin.json via jsonschema (required fields, semver, source paths exist, names match)
  2. SKILL.md frontmatter required keys + name matches directory
  3. YAML parse for every .yaml under marketplace/plugins/
  4. Path references (${CLAUDE_PLUGIN_ROOT}/..., compliance/<framework>/...) resolve to real files
  5. bash -n on fenced ```bash blocks (placeholders sanitized)
  6. Baseline regression: skills present on master but missing from HEAD without an entry in BREAKING.md → hard error; cross-plugin moves → warning

First-run findings on current master

5 errors + 11 warnings. Errors are pre-existing — to be addressed in follow-up PRs (or via baseline ignore-list when the GitHub Actions workflow lands):

  • lc-essentials/limacharlie-call deleted with no replacement, no BREAKING.md
  • lc-essentials/web-ui-link/SKILL.md — frontmatter YAML invalid
  • lc-essentials/investigation-creation/SKILL.md — frontmatter name ≠ directory
  • lc-fundamentals/adapters/SKILL.md — ```bash fence wraps a WebFetch(...) call
  • lc-essentials/sensor-tasking/SKILL.md — markdown leak into code block

Out of scope (follow-up)

  • .github/workflows/validate.yml to run this on every PR
  • Baseline ignore-list for the 5 known errors
  • Seed BREAKING.md documenting the lc-essentials → lc-advanced-skills carve-out
  • Tier-B sandbox limacharlie sync --dry-run (deferred — needs scoped CI org + secret)

Test plan

  • pip install --break-system-packages pyyaml jsonschema
  • python3 scripts/validate.py from repo root → expect 5 errors / 11 warnings against current master

Refs refractionPOINT/tracking#4229

Single Python script run via 'python3 scripts/validate.py' covering:
- marketplace.json + plugin.json shape via jsonschema
- SKILL.md frontmatter required keys + name/directory match
- YAML parse for every .yaml under marketplace/plugins
- Path references (${CLAUDE_PLUGIN_ROOT}, compliance/<framework>/) resolve
- bash -n on fenced bash blocks with placeholder sanitization
- Baseline regression: skills present on master but missing from HEAD
  without a BREAKING.md entry fail the run

No credentials, no network, ~3s runtime. Tier-A only; sandbox dry-run
and golden-prompt tiers deferred until justified by a concrete failure.

Refs refractionPOINT/tracking#4229
@lcbill lcbill requested a review from maximelb April 30, 2026 19:49
@lcbill lcbill merged commit e70abc1 into master Apr 30, 2026
@lcbill lcbill deleted the bt-marketplace-validation branch April 30, 2026 19:50
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.

1 participant