Create a PR to publish a new version of the rendercv-typst package to the Typst Universe (typst/packages repository). Validates package integrity, forks/clones the repo, copies files, and opens a PR.
Create a pull request to typst/packages to publish the current version of src/rendercv/renderer/rendercv_typst/.
The clone location for the typst/packages fork is $HOME/.cache/rendercv/typst-packages.
Read src/rendercv/renderer/rendercv_typst/typst.toml to get the version and all metadata fields.
Run ALL checks below. Collect ALL failures and report them together. Do NOT proceed to Step 3 if any check fails.
Verify these exist in src/rendercv/renderer/rendercv_typst/:
lib.typtypst.tomlREADME.mdLICENSEthumbnail.pngtemplate/main.typParse typst.toml and verify it has:
name, version, entrypoint, authors, license, description[template] with path, entrypoint, thumbnailCheck that the version string in typst.toml appears correctly in:
README.md import statements (@preview/rendercv:X.Y.Z)template/main.typ import statement (@preview/rendercv:X.Y.Z)src/rendercv/renderer/rendercv_typst/examples/*.typ (if they have import statements)If ANY file references an old version, stop and report which files need updating.
Read src/rendercv/renderer/rendercv_typst/CHANGELOG.md and verify there is an entry for the version being published.
This is critical. Extract all theme names shown in the README by finding image references that match the pattern examples/<theme-name>.png in the image URLs. Then verify that EVERY theme has a corresponding <theme-name>.typ file in src/rendercv/renderer/rendercv_typst/examples/.
For example, if the README shows images for classic, engineeringresumes, sb2nov, moderncv, engineeringclassic, and harvard, then ALL of these must exist as .typ files in src/rendercv/renderer/rendercv_typst/examples/.
If any example file is missing, STOP and tell the user exactly which files are missing.
Check that the README.md does not reference nonexistent files within the package (e.g., broken relative links).
Verify template/main.typ uses the absolute package import (@preview/rendercv:{version}) and NOT a relative import like ../lib.typ. The Typst packages repository requires absolute imports.
Check for existing open PRs for rendercv in typst/packages:
gh pr list --repo typst/packages --author @me --search "rendercv" --state all
If an existing PR is open, ask the user what to do:
If the clone directory $HOME/.cache/rendercv/typst-packages already exists:
mkdir -p $HOME/.cache/rendercv
# Fork if not already forked (idempotent)
gh repo fork typst/packages --clone=false
# Clone with sparse checkout
gh repo clone $(gh api user --jq .login)/packages $HOME/.cache/rendercv/typst-packages -- --filter=blob:none --sparse
cd $HOME/.cache/rendercv/typst-packages
git sparse-checkout set packages/preview/rendercv
git remote add upstream https://github.com/typst/packages.git 2>/dev/null || true
git fetch upstream main
cd $HOME/.cache/rendercv/typst-packages
git fetch upstream main
git checkout main
git reset --hard upstream/main
typst.toml (e.g., 0.3.0).git checkout -b rendercv-{version}packages/preview/rendercv/{version}/Files to copy:
lib.typtypst.tomlREADME.mdLICENSEthumbnail.pngtemplate/ (entire directory)examples/ (entire directory, but exclude any .pdf files)Do NOT copy:
CHANGELOG.md.git/ or .gitignore.pdf filesLook at existing directories in packages/preview/rendercv/ to find the most recent previous version. This is needed for the PR description. If no previous version exists (first submission), note that this is a new package.
Read src/rendercv/renderer/rendercv_typst/CHANGELOG.md and extract the changes for the current version.
PR title: rendercv:{version}
PR body for updates:
I am submitting
- [ ] a new package
- [x] an update for a package
Description: {Brief description of the package}. {Summary of what changed in this version}.
### Changes from {previous_version}
{Bullet list of changes extracted from CHANGELOG.md}
PR body for new packages (if no previous version exists, include the full checklist):
I am submitting
- [x] a new package
- [ ] an update for a package
Description: {Description from typst.toml}
I have read and followed the submission guidelines and, in particular, I
- [x] selected a name that isn't the most obvious or canonical name for what the package does
- [x] added a `typst.toml` file with all required keys
- [x] added a `README.md` with documentation for my package
- [x] have chosen a license and added a `LICENSE` file or linked one in my `README.md`
- [x] tested my package locally on my system and it worked
- [x] `exclude`d PDFs or README images, if any, but not the LICENSE
- [x] ensured that my package is licensed such that users can use and distribute the contents of its template directory without restriction, after modifying them through normal use.
cd $HOME/.cache/rendercv/typst-packages
git add packages/preview/rendercv/{version}/
git commit -m "rendercv:{version}"
git push -u origin rendercv-{version}
Create the PR:
gh pr create \
--repo typst/packages \
--base main \
--title "rendercv:{version}" \
--body "..." # Use the body from Step 7
Tell the user:
$HOME/.cache/rendercv/typst-packages)rendercv-{version})