LLMSkillHub
mirroredCopied from FlanChanXwO/pixiv-cli under MIT. FlanChanXwO has not claimed this page, and is not affiliated with LLM SkillHub.

flanchanxwo / pixiv-cli-native

Change or validate pixiv-cli Rust ugoira, cgo/FFI, committed static libraries, vendored dependencies, Linux ABI, and native runner evidence. Use when native sources, library hashes, target toolchains, or encoder behavior change; not for routine Go-only or documentation edits.

0
SKILL.md
3.7 KB

Maintain pixiv-cli Native Code

Read AGENTS.md, the affected FFI/encoder owner, and the Rust/staticlib sections of docs/en/maintainers/development.md. Use ci/platforms.json for target/compiler/toolchain metadata; do not maintain a second platform list in a new helper or skill.

Change safely

  1. Identify whether the change affects Rust source, the C ABI, cgo selection, vendoring, staticlib provenance, or release linking. Record the affected behavior and evidence required before altering binary inputs.
  2. Use the repository's Red/Green workflow for behavior changes. Keep unsafe FFI ownership, allocation/free pairing, panic containment, cancellation, and error translation explicit. Avoid unwrap/expect on fallible external input or crossing the FFI boundary with unwinding.
  3. Work in internal/media/ugoira/rust for Cargo commands so its .cargo/config.toml source replacement applies. Use locked/offline dependency resolution. Never hand-edit vendored crates or hide a network fallback; approved dependency changes must regenerate the complete closure and license evidence.
  4. Preserve the single encoder/FFI seam. A slow normal encode is not a timeout failure. Keep decoder-derived resource constraints and explicit errors; do not add another encoder or ffmpeg runtime fallback.

Verify the touched boundary

From the crate directory, run the appropriate focused test, then:

cargo fmt --check
cargo test --locked --offline
cargo clippy --locked --offline --all-targets -- -D warnings

From the repository root, relevant checks include:

go test ./internal/media/ugoira/staticlib -run '^TestCommittedManifestWhenPresent$' -count=1
go test ./internal/media/ugoira/... -count=1
go run ./scripts/cmd/licensebundle --check
sh scripts/test-build-staticlibs.sh
sh scripts/test-build-platform.sh
sh scripts/test-rust-vendor.sh

These commands can compile native code and consume significant resources; confirm the required existing toolchains and scope first. Report missing targets, compilers, or components instead of installing or pretending to validate them.

scripts/build-platform.sh owns the exact-target Rust/Go/archive build. Linux release binaries must pass go run ./scripts/cmd/linuxabi --binary PATH against the actual ELF, not merely execute on a newer host. Read the existing script and workflow before supplying target/version/compiler arguments.

Provenance and publication

Committed libraries and manifest.json bind every shipped target from the registry to one source digest. A single-target rebuild invalidates cross-platform completeness; do not manufacture a new manifest around partial evidence. Do not commit rust/target/. Preserve .gitattributes byte rules for source/vendor/license inputs.

Use the credential-free native-evidence.yml workflow for actual native runner evidence. Consolidate only a complete same-source, same-version run using the existing nativeevidence tool. Never splice successful artifacts from different source digests or label a fixture test as all-target native evidence. Review any backfilled libraries and manifest together, then rerun integrity and real GIF/APNG linking smoke.

A toolchain upgrade requires rebuilding and verifying every affected shipped target, not just editing a version field. Release, signing, tags, and publisher actions remain separately authorized. Report which native executions actually occurred and which remain unverified.