OpenBSD ports workflow grounded in OpenBSD docs and man pages. Use when working in /usr/ports or a local ports tree, building packages, or submitting new ports.
SaferSkills independently audited openbsd-porting (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create, test, and prepare OpenBSD ports in a local ports tree, including Rust ports that need vendoring and patching. Use this skill for new ports, updates, or preparing review submissions to [email protected]. Prefer authoritative sources: OpenBSD Porting Guide and OpenBSD man pages. Always follow the Porting Checklist in the OpenBSD Porting Guide: https://www.openbsd.org/faq/ports/guide.html
Confirm ports tree and build directories. Prefer a local ports tree and set: PORTSDIR_PATH, WRKOBJDIR, DISTDIR, PACKAGE_REPOSITORY, PLIST_REPOSITORY, BULK_COOKIES_DIR.
Create Makefile, distinfo, pkg/DESCR, pkg/PLIST, and crates.inc (for Rust). Avoid $OpenBSD$ tags in pkg/PLIST. Run make update-plist early when packaging large CLI suites to surface public bin/ name collisions before finalizing wrappers or CONFLICTS. When only a few command names collide, prefer renamed OpenBSD wrapper names over package-wide CONFLICTS.
Do not use branch-based git deps. Pin rev in Cargo.toml and, for ports, use DIST_TUPLE and a patch to replace git deps with local paths.
Run make makesum after the source commit is pushed upstream so distfiles exist.
Run make test and fix upstream issues instead of disabling tests when possible. For a full rebuild verification, run make clean=all and make package as separate invocations; the ports framework rejects mixing clean=all with package.
Use /usr/ports/infrastructure/bin/portcheck -p /path/to/ports to catch structure issues (missing crates.inc include, PLIST tags, etc.).
Bundle the port directory as a tarball for [email protected] review. See references for email expectations.
crates.inc must be included in Makefile with a non-indentedline: .include "crates.inc".
PKGNAME must not be a stem-only name. Include a version component.User: "Create a new port for foo 1.2.3."
Assistant: Follow the workflow steps, run make makesum, build/test, and run portcheck, then prepare the tarball for [email protected] review.
User: "Update the port to 2.0 and fix build issues."
Assistant: Update Makefile, regenerate distinfo, run tests, and validate with portcheck.
before make makesum.
disabling tests unless unavoidable.
rev andDIST_TUPLE plus patches.
SUBST_PROGRAM: avoid shell variables named${PREFIX} for runtime path discovery, because SUBST_VARS rewrites ${PREFIX} to the fake install prefix during packaging. Use a differently named runtime variable instead.
ports(7) overviewbsd.port.mk(5) variables/targetsportcheck(8) for structure checkspkg_create(1) and pkg_add(1) packaging/install~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.