U5 of the Claude Desktop .mcpb bundle plan. Splits the existing single-
artifact release into three jobs.
- build-skill keeps the prior bash skills/last30days/scripts/build-skill.sh
flow, now uploaded via actions/upload-artifact instead of attaching
directly so the final release step can pull from one place.
- build-mcpb runs a matrix across darwin/arm64, darwin/amd64, and
linux/amd64. Each entry installs printing-press@v4.8.0 (pinned to
the version this PR was verified against; bump deliberately),
runs mcp/scripts/sync-engine.sh, cross-compiles the Go binary with
CGO_ENABLED=0 and the tag stamped into main.Version, and packages
via `printing-press bundle`. Output filenames follow PP's
DefaultBundleOutputPath convention.
- release downloads every artifact (.skill + 3 .mcpb files) and
attaches them to the GitHub release with generated notes.
- Windows packaging is deferred: the manifest's entry_point cannot
vary per platform within a single bundle, and Windows binaries need
.exe naming for the OS to honor execve. A follow-up plan can ship a
Windows-only bundle variant when there is demand.
Verified locally: `printing-press bundle --skip-build --binary` against
a host build produces a valid .mcpb (manifest.json + bin/<entry>).
YAML parse-clean on both workflows.
Every job sync.sh did has a better replacement:
- Per-harness skill dirs (~/.claude/skills, ~/.codex/skills, ~/.agents/skills):
`npx skills add . -g -y` writes to every detected harness's home dir and
uses symlinks by default. Edits propagate live — no re-deploy step.
- Hermes (~/.hermes/skills/research/last30days):
`hermes skills install mvanhorn/last30days-skill --force` pulls from
GitHub and handles the deploy itself. The script wrapping was redundant.
- OpenClaw variant: `clawhub install last30days-official` is what users
already run per the README; the maintainer doesn't need a separate
variant-deploy step in the public repo's scripts.
- Claude marketplace cache (~/.claude/plugins/cache/...): this was a
"test against the official install path" hack we shouldn't have been
recommending. With PR #400's resolver collapse, STEP 0 no longer
enforces the cache as the only valid SKILL.md location. Just install
the skill normally via `npx skills` or the marketplace.
Cleanup:
- DELETE skills/last30days/scripts/sync.sh
- tests/test_version_consistency.py — drop test_sync_cache_path_uses_skill_version
- CLAUDE.md — replace the sync.sh command + rule with `npx skills add . -g -y`
- HERMES_SETUP.md — Installation now uses `hermes skills install --force`;
developer-alternative section shows the symlink pattern for live editing
- render.py — _skill_version docstring no longer attributes the
".claude-plugin absent" case to sync.sh; explains it via per-harness
install paths in general
- .github/PULL_REQUEST_TEMPLATE.md — drop the "Ran bash scripts/sync.sh"
checklist item
CHANGELOG and historical docs (release notes, plan files) keep their
existing sync.sh mentions as accurate history.
Adds structured templates to help contributors submit higher-quality
PRs and issues. PR template includes testing checklist (pytest, sync.sh).
Issue templates use YAML forms for bug reports and feature requests.
Fixes#251