@firstpick/pi-extension-release-aur
Pi commands and skill for deterministic AUR setup, review, and release workflows.
Package details
Install @firstpick/pi-extension-release-aur from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@firstpick/pi-extension-release-aur- Package
@firstpick/pi-extension-release-aur- Version
0.1.3- Published
- Jun 2, 2026
- Downloads
- 375/mo · 375/wk
- Author
- firstpick
- License
- MIT
- Types
- extension, skill
- Size
- 133.7 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./index.ts"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@firstpick/pi-extension-release-aur
Pi package for safely creating, checking, reviewing, committing, and pushing AUR packages.
Commands
Primary triggers:
/release-aur
/release-aur-setup
Subcommands:
/release-aur [plan] [target|all] [--chroot] [--repro] [--no-update-release] [--no-agent-review]
/release-aur publish [target|all] [--chroot] [--repro] [--no-update-release]
/release-aur create <pkgbase> [--push] [--chroot] [--repro] [--no-update-release] [--no-agent-review]
/release-aur logs
/release-aur abort
/release-aur toggle
/release-aur-setup
/release-aur-setup dir [path-to-aur-repos]
/release-aur-setup source [global <source>|package <pkgbase> <source>|clear <pkgbase>|status]
/release-aur-setup ssh
/release-aur-setup status
/release-aur-setup abort
/release-aur-setup help
Default /release-aur action is plan.
By default, release commands check the configured upstream release source before preflight. auto preserves the original behavior by detecting a GitHub repository from PKGBUILD; setup can define a global source and per-package overrides. Supported source specs are auto, github:owner/repo, GitHub URLs, git:<clone-url>, or any git clone URL. If a newer release/tag exists, the workflow updates pkgver, resets pkgrel=1, runs updpkgsums, and regenerates .SRCINFO. Pass --no-update-release to skip this update step.
/release-aur-setup opens a native Pi setup menu. It can save the directory where you keep AUR package repos:
/release-aur-setup dirprompts for the AUR repos directory;/release-aur-setup dir ~/aur-packagessaves it directly;- the path is stored in
~/.pi/agent/release-aur/config.json; - bare
/release-aurthen uses that directory to list repos and prompt for the release target.
The setup menu also includes upstream release source configuration:
/release-aur-setup sourceopens a native Pi menu;/release-aur-setup source global autokeeps GitHub autodetection fromPKGBUILDglobally;/release-aur-setup source global git:https://example.org/upstream/project.gituses a custom git tag source globally;/release-aur-setup source package <pkgbase> <source>stores a per-package override via the same config file;/release-aur-setup source clear <pkgbase>removes the override so the package falls back to the global source.
The setup menu also includes AUR SSH publishing access:
- checks required local tools:
ssh,ssh-keygen,git; /release-aur-setup statusshows the AUR repos directory, release source configuration, local SSH files/config, and also runs the AUR SSH connection test;- the setup flow checks
~/.ssh/configfirst; ifHost aur.archlinux.orgalready exists, it immediately tests the current SSH connection before creating keys or editing config; - creates
~/.sshwith private permissions if needed; - can create a dedicated
~/.ssh/aurEd25519 key, or use an existing key path; - prefers the ArchWiki-recommended dedicated AUR key model so the key can be revoked independently;
- configures
Host aur.archlinux.orgwithUser aur,IdentityFile ~/.ssh/aur, andIdentitiesOnly yes; - displays and can copy the public key so the user can add it in AUR
My Account→SSH Public Key; - tests the SSH connection with
ssh -T aur.archlinux.orgafter the user confirms the public key is added; setup/status tests use OpenSSHaccept-new, so they may addaur.archlinux.orgto~/.ssh/known_hosts.
For fully automated key creation, the setup can create an empty-passphrase key only after a warning and explicit confirmation. Use the manual command option if you want ssh-keygen to prompt for a passphrase.
Web UI output
/release-aur streams workflow output through Pi extension widgets using Web UI-compatible text payloads. In Pi Web UI, the companion renderer shows a scrollable AUR release card with phase, compact/expanded line counts, elapsed time, and Toggle output/Abort actions.
Safety model
/release-aur plan:
- checks configured upstream release sources before preflight and, when newer, updates
PKGBUILD/.SRCINFOin the package repo; - resets
pkgrel=1whenpkgveris bumped; - updates checksum arrays with
updpkgsumsafter a version bump; - runs build checks in a temporary copy of the package directory;
- verifies
makepkg --printsrcinfoand compares it to committed.SRCINFO; - runs
makepkg --verifysource; - runs a full
makepkg --clean --cleanbuild --force --noconfirmbuild without--syncdeps; - inspects built package metadata/file count with
pacman -Qip/pacman -Qlpwhen available; - runs
namcaponPKGBUILDand built package artifacts when available; - treats
namcapE:findings as blockers by default; - optionally runs
pkgctl buildwith--chroot; - optionally runs
makerepropkgwith--repro; - saves a log under
~/.pi/agent/release-aur-logs/; - queues an agent GO/NO-GO review prompt before any push.
/release-aur publish:
- re-runs latest-release update checks and preflight checks first;
- requires interactive user confirmation;
- regenerates
.SRCINFOusingmakepkg --printsrcinfo > .SRCINFO; - stages
PKGBUILD,.SRCINFO, tracked changes, and safe helper-file patterns only; - refuses obvious artifacts such as
src/,pkg/,*.pkg.tar.*, and*.src.tar.*; - runs
git diff --cached --check; - commits with
Initial importorUpdate <pkgbase> to <pkgver>-<pkgrel>; - pushes explicitly to AUR
masterwithgit push <aur-remote> HEAD:master.
/release-aur create <pkgbase> is an idempotent/convergent setup flow:
- missing or empty
<pkgbase>/: clonessh://aur@aur.archlinux.org/<pkgbase>.git; - existing Git repo: ensure an AUR remote exists and generate
.SRCINFOifPKGBUILDexists; - existing non-Git directory with
PKGBUILD: move it to<pkgbase>.pkgbuild-staging.<timestamp>, clone the AUR repo into<pkgbase>/, copy safe package files back, and generate.SRCINFO; - conflicting package files in a non-empty AUR clone are refused for manual merge instead of overwritten.
If no PKGBUILD exists after setup, Pi prompts natively:
Yes, let Agent create it.— queues an agent task to write the PKGBUILD.Yes, add it from: /Path/to/file— copies an existing PKGBUILD into the AUR repo and continues.No, but create a template PKGBUILD.— opens a native Pi selector for bundled templates undertemplates/pkgbuild/:- Python — PEP 517 wheel from GitHub release tag
- Rust — cargo release build from GitHub release tag
- Go — go build from GitHub release tag
It then asks for GitHub URL,
pkgver,pkgdesc, license, and binary name where needed; attempts checksum refresh withupdpkgsums; and continues checks.
No, I will add it later.— stops safely after repo setup.
By default it then runs plan checks and queues an agent GO/NO-GO review. With --push, it continues to publish after the plan passes and the user confirms.
It also writes a conservative .gitignore that ignores everything except common AUR package files.
Expected workspace structure
Works from either:
aur-packages/
package-a/
.git/
PKGBUILD
.SRCINFO
package-b/
.git/
PKGBUILD
.SRCINFO
or directly inside one AUR package clone:
package-a/
.git/
PKGBUILD
.SRCINFO
When multiple package directories are found, /release-aur prompts for a target or all. If /release-aur-setup dir has configured an AUR repos directory, target discovery uses that directory from any current working directory; otherwise it uses the current directory.
Recommended local tools
Minimum:
gitmakepkg/pacman
Recommended:
namcapshellcheckdevtools(pkgctl build,makerepropkg)
Install on Arch-based systems as needed:
sudo pacman -S --needed base-devel git namcap shellcheck devtools pacman-contrib
Arch guidance encoded
This workflow follows these ArchWiki rules/guidance:
- AUR write access requires an SSH key pair; the public key must be added to the AUR account profile and the private key configured for
aur.archlinux.org. - A dedicated AUR SSH key is preferred over reusing an existing key so it can be revoked independently.
- AUR uploads should be reviewed carefully before submission.
- New AUR package repositories are initialized by cloning
ssh://aur@aur.archlinux.org/<pkgbase>.git. .SRCINFOmust be regenerated whenPKGBUILDmetadata changes.- When upstream
pkgveris bumped,pkgrelresets to1and checksum arrays must match the new sources. - At least
PKGBUILDand.SRCINFOmust be committed and pushed. - AUR accepts pushes to
master. - Package testing should include
makepkg, package content inspection, dependency review, andnamcapsanity checks. - Reproducibility can be checked with
makerepropkg/reprowhen feasible.
Install
From this workspace:
pi install ./pi-extension-release-aur
After publishing to npm:
pi install npm:@firstpick/pi-extension-release-aur