Shared Claude Code configuration for porting upstream apps to FreeBSD daemonless OCI images.
| Path | Purpose |
|---|---|
.claude/skills/port-package/ |
Full porting workflow: research, scaffold, build, CIT, harden, PR |
.claude/skills/bump-upstream/ |
Bump a pinned upstream version and re-validate |
.claude/agents/ |
Subagents for upstream research and stubborn-error deep-dives |
.claude/hooks/ |
Guardrails: block Containerfile edits, warn on README rewrites, enforce CIT before PR |
.claude/reference/ |
Cookbook (error-signature-keyed fixes) and CIT log capture guide |
templates/ |
BUILD-NOTES, PR body, PROCESS-LOG, and per-image CLAUDE.md templates |
scripts/ |
cit-with-logs.sh (automated log capture), lint-compose.sh (metadata cross-check) |
install.sh |
Copy toolkit files into an image repo |
# From the image repo root:
/path/to/porting-toolkit/install.sh
# Or with an env var:
TOOLKIT=/path/to/porting-toolkit $TOOLKIT/install.shThis copies .claude/, templates/, and scripts/ into the image repo. The cookbook is copied (not symlinked) so it's available offline. After a port, PR any new cookbook entries back to this repo.
/path/to/porting-toolkit/install.sh --refreshOverwrites .claude/ with the latest toolkit versions. Preserves any local files not managed by the toolkit (e.g. image-specific hooks).
cd /path/to/image-repo
claude
# then: /port-package <upstream-repo-url>cd /path/to/image-repo
claude
# then: /bump-upstreamThe cookbook (.claude/reference/freebsd-porting-cookbook.md) becomes more valuable over time as a reference that grows with every port:
- During a port, the skill appends new error-signature entries to the local copy
- After the port ships, PR those entries back to this toolkit repo
- Next
install.sh --refreshdistributes them to all image repos
This is what makes the Nth port fast.