Agent Skills
› zeabur-oss/zeabur
› zeabur-oss-dependencies
zeabur-oss-dependencies
GitHubZeabur OSS依赖管理策略,涵盖Rust和Bun包的许可证、安全后端、发布年龄及不安全代码审查规范。
触发场景
Cargo.toml, Cargo.lock或deny.toml变更
package.json, bun.lock或bunfig.toml变更
安装
npx skills add zeabur-oss/zeabur --skill zeabur-oss-dependencies -g -y
SKILL.md
Frontmatter
{
"name": "zeabur-oss-dependencies",
"description": "The supply-chain policy every zeabur-oss repository shares for Rust crates and Bun packages — OSI licences, aws-lc-rs as the only crypto backend, a seven-day publish age, unsafe and native-code review, no install scripts, committed lock files, Git-pinned design system, fallow through bunx. Use whenever Cargo.toml, Cargo.lock, deny.toml, a package.json, a bun.lock, bunfig.toml or flake.nix changes in any zeabur-oss repository."
}
Zeabur OSS dependencies
The repository's dependencies skill names its shipped binaries, its frontend directory and its
exceptions. Run every command inside nix develop.
Rust
- Prefer what is already in the graph.
cargo tree -i <crate> -e normalshows whether a crate is already compiled in (hyper, rustls, url …). Ask first whether a hundred lines of our own would do; a small, reviewed in-tree implementation can beat a new dependency withunsafecode. Weigh it explicitly. - Add at the workspace level: version and features in the root
[workspace.dependencies],name.workspace = truein the crate. Disable default features you do not need. - Policy (
deny.toml, checked bycargo deny --locked check): licences are OSI-approved (SPDX list, OSI); crates come from crates.io only; no*versions. TLS uses rustls with aws-lc-rs as the only cryptographic backend:ring, OpenSSL,native-tls, the FIPS build of aws-lc andwebpki-roots(its CDLA licence is not OSI-approved; images ship a CA bundle instead) are banned. Check that a new crate brings no second crypto backend. - Advisories. RustSec advisories and yanked versions fail the check.
An advisory that does not apply gets an
ignoreentry indeny.tomlwith the reason. - Publish age. Cargo does not pick a release younger than seven days unless it is already in
the lock file (
registry.global-min-publish-agein.cargo/config.toml). For an urgent security fix, override it for one command:CARGO_REGISTRY_GLOBAL_MIN_PUBLISH_AGE="0 days" cargo update -p <crate>. - Unsafe and native code. Run the unsafe report (
./scripts/unsafe-report.sh, orzeabur-oss-unsafe-report <package>…from thezeabur-oss/.githubflake). Every shipped crate that containsunsafeor builds native code needs an entry insupply-chain/unsafe-allowlist.toml:kind, a concretereason(where the unsafe is, whether it runs only at build time), andapproved = "pending"until a maintainer reviews it and sets the date. Only normal and build dependencies of the shipped binaries count; dev-dependencies and test crates do not. A feature enabled only in dev-dependencies does not ship; moving it to a normal dependency needs the review.
Bun packages
- Add with
bun add <pkg>(orbun add -d) from the package's directory.bunfig.tomlpins exact versions and refuses releases younger than seven days (minimumReleaseAge). - Licences are OSI-approved, as for crates. The repository's skill lists any exception.
- Never add
trustedDependencies: no package may run install scripts.bun pm untrustedlists the blocked ones. - Commit
package.jsonandbun.locktogether; CI installs withbun ci, which fails if they disagree. @zeabur-oss/design-systemcomes from npm at an exact version, published from the design system's version tags; Renovate moves it, andbunfig.tomlexempts it from the minimum release age. To try an unpublished design-system commit, point it at a local tarball (the design system'sdesign-system-changeskill) andbun install; never commitpackage.jsonorbun.lockwith a path outside the repository.- fallow is not in nixpkgs. It runs as
bunx fallow@<version>from thefallowscript inpackage.json. Its platform packages ship a prebuilt Rust binary (npm provenance; the wrapper checks its signature before it runs) and run no install scripts. Bump it to a release at least seven days old, in the script and in.fallowrc.json's$schema, in every repository that runs it at once. Move it to the flake when nixpkgs has it.
Nix and Renovate
flake.lockpins nixpkgs and every tool of the dev shell. Renovate (renovate.json, extendinggithub>zeabur-oss/.github) updates it with lock file maintenance every Monday, and opens pull requests for packages and action digests after the same seven days (minimumReleaseAge). Fix what a new tool version breaks on that pull request before merging.
版本历史
- e6ff195 当前 2026-11-02 08:50


