원클릭으로
publish
Publish crates to crates.io with pre-flight checks
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Publish crates to crates.io with pre-flight checks
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Bump the manifold3d pin, add FFI + safe wrappers for new upstream C API functions, bump versions, open a PR
Run a deep code review across the manifold-csg crates
Run a deep code review across the manifold-csg crates
Push a branch and open a PR with pre-flight checks
SOC 직업 분류 기준
| name | publish |
| description | Publish crates to crates.io with pre-flight checks |
| user-invocable | true |
Publish our 4 crates to crates.io with pre-flight validation. The workspace
has two canonical crates (manifold-csg-sys, manifold-csg) and two thin
facade re-exports (manifold3d-sys, manifold3d) under the same version
numbers. Facades always ship in lockstep with their canonical counterparts
via = version pins.
--dry-run: run all checks but don't actually publishRun all checks before publishing. Stop on first failure.
git status
Must be on main with no uncommitted changes. Refuse to publish from a feature branch.
cargo test --features nalgebra
cargo clippy --all-targets --all-features -- -D warnings
Version bumps happen at publish time, not in feature PRs. Read CLAUDE.md for the versioning scheme, then:
curl -sS https://crates.io/api/v1/crates/manifold-csg | python3 -c "import json,sys; print(json.load(sys.stdin)['crate']['max_version'])"
curl -sS https://crates.io/api/v1/crates/manifold-csg-sys | python3 -c "import json,sys; print(json.load(sys.stdin)['crate']['max_version'])"
If the in-repo version is already ahead of the published version, it's pre-bumped — DO NOT bump again. Subsequent feature PRs ride into the pre-bumped version. (Pitfall: assuming the workspace version is the published version. They diverge whenever a PR includes its own bump, which CLAUDE.md says PRs "usually should" do.)manifold-csg-sys: bump the patch component (e.g., 3.4.102 → 3.4.103) whenever the upstream contents differ from the last publish — pinned commit changed, carry-patches added/removed, or FFI declarations changed. If the upstream major.minor changed (new manifold3d release), update major.minor accordingly.manifold-csg (workspace version): bump patch for additive changes, minor for breaking changes (pre-1.0, minor bumps can break).manifold3d-sys version must match the new manifold-csg-sys version exactly (= pin).manifold3d inherits the workspace version, so bumps automatically. Its manifold-csg dependency = pin must be updated to the new workspace version.manifold-csg's manifold-csg-sys dependency version to match. Update manifold3d-sys's manifold-csg-sys = pin and manifold3d's manifold-csg = pin.For each patch in crates/manifold-csg-sys/patches/:
gh api)We don't keep a CHANGELOG file (it gets stale; git log + GitHub Releases cover the same ground). Tag the release after publishing — GitHub auto-generates release notes from PRs since the last tag:
git tag -a v<version> -m "Release <version>"
git push origin v<version>
Run a dry run for each crate in publish order:
cargo publish --dry-run -p manifold-csg-sys
cargo publish --dry-run -p manifold3d-sys
cargo publish --dry-run -p manifold-csg
cargo publish --dry-run -p manifold3d
Facade dry runs will fail if their canonical counterparts aren't already on crates.io at the expected version — this is expected for first publish and version bumps. The real dry-run validation for facades happens after their canonical is published.
For each crate, check:
cargo package --list -p <crate> — verify no secrets, build artifacts, or unnecessary files are includedLICENSE-APACHE and LICENSE-MIT must be presentDOCS_RS=1 cargo doc --no-deps --features nalgebra \
-p manifold-csg-sys -p manifold-csg -p manifold3d-sys -p manifold3d
Must build without errors. docs.rs runs with --network=none, so build.rs must detect DOCS_RS and skip the C clone/build.
Before first publish or any version where the public API changed:
pub items in manifold-csg — are any provisional or likely to change?Vec<f64> vs a newtype)0.x.y), minor bumps (0.1.0 → 0.2.0) can contain breaking changes, but patch bumps (0.1.0 → 0.1.1) must be backwards-compatible. Post-1.0, breaking changes require a major bump.cargo doc --features nalgebra --no-deps
Must build without warnings. Spot-check that crate-level docs render correctly.
Only after all checks pass. Always get explicit user confirmation before running cargo publish.
Dependencies must reach crates.io before their dependents:
manifold-csg-sys (no internal deps)manifold3d-sys (facade of manifold-csg-sys)manifold-csg (depends on manifold-csg-sys)manifold3d (facade of manifold-csg)Between each publish, crates.io may take a moment to index the new version. If the next publish fails with "no matching package", wait and retry.
cargo publish -p manifold-csg-sys
cargo publish -p manifold3d-sys
cargo publish -p manifold-csg
cargo publish -p manifold3d
git tag -a v<version> -m "Release <version>" (using the manifold-csg version number — facades share the workspace version)git push origin v<version>= pin in Cargo.toml enforces this)