Files
Alan Wizemann c9b8da9ec5 feat(ci): validate template submissions on PR + tailored checklist
Adds the CI gate that runs on every PR touching templates/, the catalog
validator, or its tests. The Action:
- runs tools/test_build_catalog.py (catches drift between validator +
  its own test suite on the same PR that introduces the drift)
- runs tools/build-catalog.py --check (validates every shipped .scarftemplate
  against the same invariants ProjectTemplateService.verifyClaims enforces
  at install time)
- posts a PR comment with the last 3 KB of the validator log on failure,
  so contributors see the specific mismatch without hunting through the
  Actions UI

.github/PULL_REQUEST_TEMPLATE/template-submission.md is the author-facing
checklist that mirrors templates/CONTRIBUTING.md. Opt-in via the
?template=template-submission.md compare URL (documented in the
contribution guide). CONTRIBUTING.md now links both the PR template and
the workflow file so authors know what to expect.

Phase 4 closes the community loop — from this commit on, a stranger can
fork the repo, follow templates/CONTRIBUTING.md, push a PR, and get
deterministic green/red feedback before a maintainer ever looks at it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 00:35:46 +02:00

1.9 KiB

What's in this PR

  • New template: templates/<your-handle>/<your-template-name>/
  • Update to existing template: templates/<author>/<name>/ (which one and why)

One-line pitch

What does this template do for its installers? Two sentences max.

Checklist

  • I wrote this template, or have the author's explicit permission to submit it.
  • AGENTS.md is present and tells any cross-agent what the project does and how to run it.
  • README.md includes install, customize, and uninstall instructions.
  • The bundle's template.json contents claim matches what's actually in the zip.
  • Cron jobs (if any) ship paused and use self-contained prompts.
  • No secrets in any file (API keys, tokens, hostnames, IPs, credentials).
  • No writes to config.yaml, auth.json, or credential paths — v1 installer will refuse.
  • python3 tools/build-catalog.py --check passes locally.
  • I installed + uninstalled this template on my machine and verified the AGENTS.md contract works end-to-end.
  • I did not edit templates/catalog.json — the maintainer regenerates it post-merge.

Testing notes

What did you run, what did you see? Paste the log output of the cron job firing once, or the chat transcript of asking the agent to do the main thing. Reviewers don't have your machine — show, don't tell.

Screenshots (optional)

Drop screenshots of the installed dashboard, or the catalog detail page rendered locally (./scripts/catalog.sh preview && open /tmp/scarf-catalog-preview/templates/<slug>/index.html).