| name | create-aur-package |
| description | This skill should be used when the user asks to "create an AUR package", "make a new AUR package", "scaffold AUR package", "create PKGBUILD", "package for AUR", or mentions AUR package creation with a specific source type (npm, rust, go, git, binary, appimage). Provides comprehensive guidance for creating Arch User Repository packages with proper structure, checksums, and git setup. |
| argument-hint | <package-name> <source-type> |
Create a new AUR (Arch User Repository) package with proper structure, validation, and git setup.
Package name: $ARGUMENTS[0]
Source type: $ARGUMENTS[1]
Workflow
-
Gather package information:
- Package name (provided by user)
- Source type (npm, rust, go, git, binary, appimage)
- Fetch metadata from upstream (version, description, license, URL)
-
Create package directory structure:
- Directory named after the package
.gitignore for build artifacts
PKGBUILD with appropriate structure for source type
-
Generate checksums (skip for -git packages):
updpkgsums
-
Build and validate:
makepkg -f
namcap PKGBUILD
namcap *.pkg.tar.zst
-
Generate metadata:
makepkg --printsrcinfo > .SRCINFO
-
Initialize git and push to AUR:
git init
git remote add origin ssh://aur@aur.archlinux.org/<package-name>.git
git add .
git commit -m "feat: initial commit for <package-name>"
git push -u origin master
.gitignore
Create with the following content:
pkg
src
<package-name>-*
*.tar.zst
For NPM packages, use the actual package name (without scope for scoped packages).
For AppImage packages, also include squashfs-root, *.AppImage, and the downloaded license file.
Common PKGBUILD Structure
All PKGBUILD files include these fields:
pkgname=<package-name>
pkgver=<version>
pkgrel=1
pkgdesc="<package description>"
arch=(any)
url="<upstream-url>"
license=('<license>')
depends=()
makedepends=()
source=(<source-url>)
sha256sums=('SKIP')
package() {
}
Source-Specific Instructions
Load the appropriate reference file based on source type:
- NPM packages: See
references/npm-packages.md - For Node.js packages from npm registry
- Rust packages: See
references/rust-packages.md - For Cargo-based Rust projects
- Go packages: See
references/go-packages.md - For Go modules
- VCS/Git packages: See
references/vcs-packages.md - For -git packages tracking upstream
- Binary packages: See
references/binary-packages.md - For pre-compiled binaries
- AppImage packages: See
references/appimage-packages.md - For AppImage binaries (typically Electron apps)
Useful Commands
| Command | Purpose |
|---|
updpkgsums | Update sha256sums from source files |
makepkg --printsrcinfo > .SRCINFO | Generate .SRCINFO metadata |
makepkg -f | Build package (force rebuild) |
makepkg -si | Build and install package |
namcap PKGBUILD | Lint PKGBUILD for issues |
namcap *.pkg.tar.zst | Lint built package |
Package Naming Conventions
- Standard:
<package-name> - For release tarballs
- VCS tracking:
<package-name>-git - For git repositories
- Binary:
<package-name>-bin - For pre-compiled binaries
- AppImage:
<package-name>-appimage - For AppImage binaries
Additional Resources
Reference Files
references/npm-packages.md - NPM package specifics (scoped packages, registry URLs, permission fixes)
references/rust-packages.md - Rust/Cargo package specifics (build flags, LTO issues, workspaces)
references/go-packages.md - Go module specifics (build flags, GOPATH handling)
references/vcs-packages.md - VCS/Git package specifics (pkgver() function, provides/conflicts)
references/binary-packages.md - Binary package specifics (release downloads, architecture handling)
references/appimage-packages.md - AppImage package specifics (extraction, desktop integration, /opt/ install)
Examples
examples/pkgbuild-template - Basic PKGBUILD template structure