Migrate to shipyard v2 - #26
Merged
Merged
Conversation
shipyard v2 fixes deploy-docs.yml and release.yml, both of which were pinned to the wrong line (v1), and makes CI the sole writer of generated artifacts instead of a human running a local script. - deploy-docs.yml and release.yml repinned to @v2. - preview.yml (an advisory dry-run that reported drift but never blocked it) replaced with project.yml, which commits regenerated plugin.json/hooks.json/suite.describe straight onto the branch on every push. - release.yml now triggers on workflow_dispatch with a bump input; shipyard derives the version from plugin.yml and publishes the release from CHANGELOG.md's `## Unreleased` section instead of a hand-typed GitHub Release body. - scripts/shipyard deleted; local reads go through `uvx` instead (justfile's `peek-projection` and `docs` targets). - .gitignore's per-filename list for generated docs/ pages already missed three files v2 renders (_home.md, hooks.md, status.md), so it's now a blanket docs/* ignore with the hand-authored pages allowlisted. AGENTS.md updated to match, including a stale scripts/gen-plugin-json.py reference and a release-gate claim ("runs the test suite") that wasn't accurate even under v1.
CI failed on push: shipyard's generate runs build-docs internally, which now fails the whole projection if a docs/ link resolves to no published page. docs/README.md and docs/_sidebar.md link to /rules and /prompts, which are ClaudeWatch's own pages (built by build/gen-rules-doc.py) — shipyard doesn't know about them, so its link check saw them as dead links. Reproduced against a clean checkout (my working tree had stale docs/rules.md and docs/prompts.md from earlier manual testing, which masked this locally). Running gen-rules-doc.py before generate puts both pages on disk before the check runs; confirmed against the same clean checkout. docs/ isn't committed either way, so this only changes what's on disk during the job, not what lands. Applied the same fix to justfile's peek-projection, which has the identical bug.
Both ran shipyard build-docs before gen-rules-doc.py — the reverse of
what project.yml needed fixing in the previous commit, and just as
broken: build-docs link-checks the whole docs/ tree before
gen-rules-doc.py ever runs, so docs/README.md's and docs/_sidebar.md's
links to /rules and /prompts fail as dead links. Confirmed against a
clean docs/ tree (git-ignored, so untracked leftovers from earlier
manual runs had masked this locally, the same way they masked the
project.yml bug).
Swapped the order in both places, and rewrote gen-rules-doc.py's own
docstring, which had documented the old (now wrong) order explicitly
("run it after shipyard build-docs") — it's the one file every caller
of this script would read first, so it's the place to state the
invariant once rather than trust four call sites to independently get
it right.
Also factored the repeated uvx invocation in the justfile into a
`shipyard` variable, per review.
Declares gen-rules-doc.py as plugin.yml's docs: pre_render:, so shipyard runs it before build-docs touches docs/ at all instead of every caller getting the step order right independently. Drops the manual gen-rules-doc.py steps from project.yml and the justfile — shipyard runs it now. deploy-docs.yml no longer needs a custom job at all: with the watches-derived pages accounted for, shipyard's reusable deploy-docs.yml does exactly what the custom one did, so it's a one-line caller like release.yml. Also renamed the docs-preview justfile recipe (serves the rendered site locally) to preview-docs, matching review feedback — updated SPEC.md's DEV-04 and STATUS.md's evidence column to match.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
shipyard v2 fixes deploy-docs.yml and release.yml, both of which were pinned to the wrong line (v1), and makes CI the sole writer of generated artifacts instead of a human running a local script.
## Unreleasedsection instead of a hand-typed GitHub Release body.uvxinstead (justfile'speek-projectionanddocstargets).AGENTS.md updated to match, including a stale scripts/gen-plugin-json.py reference and a release-gate claim ("runs the test suite") that wasn't accurate even under v1.