From yoe
Reviews a unit for correctness, completeness, and quality: checks dependencies, configure flags, patches, license, and provides usage against other distributions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/yoe:audit-unitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Review an existing unit for common issues: missing dependencies, incorrect
Review an existing unit for common issues: missing dependencies, incorrect license, unnecessary build dependencies, suboptimal configure flags, missing sub-package splits, and deviation from project conventions.
Find and read the unit's .star file:
Glob: modules/**/units/**/<name>.star
Check how Alpine, Yocto, and Buildroot package the same software. Compare:
Verify the unit's dependency lists:
configure.ac or CMakeLists.txt requires a
library via pkg-config or find_package, it should be in deps.runtime_deps..star unit file, flag it. If a dep
is satisfied only because it happens to be in the container's base image
(Alpine artifacts), that is a bug — it needs its own unit. Never rely on
apk add in the Dockerfile for library dependencies.yoe graph.provides set, or a unit reachable only via MACHINE_CONFIG). It forks
the generic unit's apk per machine. Generic units' deps should be other
generic libraries/tools only.provides usageprovides is a []string of virtual package names. If the unit sets it, check
that it's appropriate:
provides is reserved for leaf artifacts that get swapped per machine or
project: kernel, base-files, init, bootloader. Flag as a warning if a
build-time library, a generic tool, or a daemon with a busybox alternative
declares provides — every transitive consumer's apk forks per swap.provides.docs/naming-and-resolution.md §"When NOT to use provides" for details.replaces usagereplaces is a []string of package names whose files this unit may overwrite
at install time. Verify:
replaces if it actually ships a file path that another
package also claims. Flag as a warning if replaces is set but no
shadowed paths can be identified — likely a copy-paste from another unit.busybox, ncurses,
etc.). Typos silently degrade to "no shadow declared" and apk will fail the
install.replaces = ["B"], not the other way around.To check linked libraries after a successful build:
# Inside the container, check what the built binaries link against. The build
# tree is segmented by distro: build/<distro>/<unit>/ (e.g. build/alpine/...,
# build/debian/...), and <unit> carries its arch suffix.
find build/<distro>/<unit>/destdir -type f -executable | head -5
yoe's rule is one unit, one artifact; resolve variation at runtime. A unit should produce a single binary that every project and machine shares.
configure_args, per-project flags) where a runtime mechanism
would do — an init script that detects what's installed, a conditional config
file, a replaces: annotation. Forking multiplies the cache surface and
breaks binary reuse.prefer_modules) while built from source for others, confirm that is
intentional (usually to get a shared-library soversion Alpine ships) rather
than an accident.Review configure flags and build steps:
$PREFIX, $DESTDIR,
$NPROC, not hardcoded values.make -j$NPROC is used (the classes handle this,
but custom build steps might not).Verify unit metadata:
LICENSE/COPYING file.tag matches
the version.Present findings organized by severity:
Errors (must fix):
Warnings (should fix):
Suggestions (nice to have):
For each finding, explain what the issue is, why it matters, and how to fix it.
npx claudepluginhub yoebuild/yoe --plugin yoeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.