Skip to content
factory
Esc
↑↓navigate↵open⌘Jpreview
On this page

Upstream skills

The method inside each skill comes from vendored upstream skills, pinned by content hash and never edited by hand.

Why vendor

The factory skills are thin, owned wrappers. The method they apply comes from skills by Matt Pocock, the Cursor pstack team, Addy Osmani, and CodeRabbit, plus Drew’s own poly-crap and lawbook skills. Those files are copied verbatim under upstream/ so a skill can load them with a stable path, and pinned so a change upstream is a reviewed PR here rather than a silent drift.

Each wrapper’s Load section lists the upstream files it reads. Its Translate section says what changes: an upstream command that does not exist here, a label that becomes the factory label, a scratch directory that becomes <spec_dir>/<slug>/. Its Factory rules section adds the constraints that make the skills compose.

The manifest

upstream/upstream.json lists every vendored entry with its repository, ref, resolved commit, paths, license, and a content hash. Vendored files are never edited by hand. A lawbook rule requires every loop skill to load at least one file under upstream/.

Commands

uv run --script scripts/sync-upstream.py check
uv run --script scripts/sync-upstream.py diff mattpocock-skills/tdd
uv run --script scripts/sync-upstream.py update mattpocock-skills/tdd --ref v1.4.0
uv run --script scripts/sync-upstream.py verify
  • check reports entries behind their ref and newer tags.
  • diff shows the upstream change since the pinned commit.
  • update replaces the copy, re-pins, and regenerates THIRD_PARTY_NOTICES.md. It refuses to run over a hand-edited copy.
  • verify confirms the copies match the manifest. It runs in CI.

The weekly PR

A scheduled workflow runs check every Monday. When upstream moved, it runs update for the entries behind and opens a PR with the diff in the body and a reminder to re-read the Translate section of each affected wrapper before merging.

Licenses

Vendored files keep their own licenses. THIRD_PARTY_NOTICES.md lists every entry and is regenerated by update.

Last updated on

Was this page helpful?