| Age | Commit message (Collapse) | Author |
|
Execute plans/f3s-skill-split-plan.md. Carve the oversized f3s skill into six
f3s-prefixed siblings so each loads on its own triggers, and slim f3s to a hub
(38 reference files -> 10; 119 -> 73 lines):
- f3s-storage ZFS/zrepl/CARP/NFS-stunnel, nfs-mount-monitor, backups
- f3s-k3s cluster install, off-LAN access, ingress, etcd, r-node Rex
- f3s-observability Prometheus/Alloy/Loki/Tempo, FreeBSD node_exporter
- f3s-workloads Immich, Garage, Player, yChat, goprecords/uptimed
- f3s-raspberry-pi pi0/pi1 NetBSD static site, pi2/pi3 Pi-hole/LAN DNS
- f3s-dtail dserver deployment/ops (SSH 2222)
f3s hub keeps the master Host-IP table, physical hosts, bhyve, WireGuard mesh,
and off-LAN access as the canonical inward-pointing context, plus a Related
skills block. Applies skill-maintenance best practices: fixes the three inlined
SKILL.md duplications (Pi/webserver, DTail) by moving prose to one canonical home
and keeping each new SKILL.md a slim index that points to its references rather
than re-inlining them. All cross-skill links rewritten to ../../<skill>/references/
form (incl. inbound links from pkgrepo and rocky-vm-setup, and two pre-existing
broken links); verified all 112 relative links resolve.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
User confirmed every carve-out keeps the f3s- prefix (f3s-storage, f3s-k3s,
f3s-workloads, f3s-raspberry-pi, f3s-observability, f3s-dtail) so they group
together beside the f3s skill. Removes the open unprefixed/homelab- alternative;
clarifies it is a prefix, not a trailing suffix.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Mark the runbook COMPLETED and add an execution record: final versions/tags,
data verification, and the findings the pre-written plan could not confirm
(ArgoCD in ns cicd; argocd-apps/services/*.yaml applied via kubectl apply not
GitOps-synced; clean shared_preload_libraries swap; v2.7.5 auto-reindex;
deviceId/deviceAssetId removal).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Immich 3.x removed the deviceAssetId/deviceId columns (migration
DropDeviceIdAndDeviceAssetId). The /api/assets endpoint still tolerates
but ignores them; removed for correctness/future-proofing. Duplicate
detection continues via the x-immich-checksum header and the
bulk-upload-check pre-pass (verified end-to-end against the live v3.0.3
server: 201 created, 200 duplicate).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Written upgrade runbook for moving the f3s Immich install from v2.7.5 to
3.x. Documents current state, mandatory ZFS-snapshot + pg_dumpall
backups, the pgvecto.rs -> VectorChord migration required before 3.x,
step-by-step two-stage procedure, verification, and rollback. No live
changes were made.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Plan to sub-divide the oversized f3s skill (38 references, ~4846 lines)
into six focused sibling skills (f3s-storage, f3s-k3s, f3s-observability,
f3s-raspberry-pi, f3s-workloads, f3s-dtail), leaving f3s as a slim hub
index. Documents exact file moves, DRY canonical homes, cross-link fixes,
execution order, and risks.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Bind Prefix+X to capture the current session name, switch the client to
the next available session (switch-client -n), then kill the old session.
Switching before killing keeps the client attached instead of detaching
it. Placed next to the other session-management bindings and commented
with the ordering rationale.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
The source .MOV is removed only when the stabilized output decodes
cleanly in the verify pass, so a failed encode never loses the original.
|
|
trf_dir was declared local in main(), so the EXIT trap referencing it
fired after main returned — under set -u that became an unbound variable
error and the script exited non-zero even though stabilization succeeded.
Hoist trf_dir to script scope and guard the trap.
|
|
Reusable wrapper around the workflow from the fujifilm-video-stabilization
skill: parallel pass-1 motion detection, serial pass-2 stabilize+sharpen+encode
on Intel VAAPI (software libx265 fallback), skip-existing outputs, and a
decode/size verification pass at the end.
Usage:
stabilize-video [DIR] # all *.MOV in DIR
stabilize-video ~/Videos
stabilize-video clip1.MOV clip2.MOV # explicit files
Outputs stabilised-<base>.mp4 next to each source.
|
|
|
|
- FreeBSD: host key now persistent in /var/db/dserver (cleanvar purged
the old /var/run location every boot); document the migrate-first
upgrade order for pre-2026-07-10 packages and that the rc.d precmd
now repopulates the key cache on every start (manual re-run only
needed when authorized_keys changed without a restart)
- OpenBSD: rc.d uses rc_bg=YES + plain rc_cmd since 2026-07-10 (the
old 'rc_cmd $1 &' hid rc_pre failures from rcctl); note that the
FREEBSD_HOST=f0.wg0 override applies to all dtail-* targets
- NetBSD: drop the outdated "unlike FreeBSD" volatile-key comparison
- Verification table: f0-f2 and fishfinger reverified 2026-07-10 with
host key identity preserved; f3 unreachable (still on old package),
blowfish still on the older package
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
fec2f9d is the dtail server-side fix (absolute CacheDir resolution
independent of CWD), not a FreeBSD template bug — the FreeBSD template
never used relative paths. Also make the pre-2026-07-10 upgrade
procedure an explicit ordered list: migrate the host key first, then
reinstall, then rcctl restart — neither pkg_add nor Rex restarts a
running daemon, and after a reboot the old host key is already gone.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Document the 2026-07-10 OpenBSD dtail package changes: absolute
CacheDir/HostKeyFile, host key migration to /var/db/dserver, rc_pre
key-cache refresh, same-version reinstall procedure, and the f0.wg0
Makefile override needed from the WireGuard VPN.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
pi0/pi1 (NetBSD 10.1 aarch64) now run dserver from the custom pkgrepo:
- pkgrepo: NetBSD repo layout (netbsd/10.1/packages/aarch64, unsigned,
pkg_summary.gz), client setup via pkg_add URL, make dtail-netbsd
pipeline (cross-compile on Linux, pkg_create natively on pi0),
manual packaging reference, install/update steps + gotchas,
verification state 2026-07-09
- f3s: pi0/pi1 host-role rows, rc.d service list + npf port 2222,
removed stale 'pi0/pi1 do not run DTail' claims
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-019f299f-7596-73b6-ba71-0f71fcd3c131
Co-authored-by: Amp <amp@ampcode.com>
|
|
Updates the pi0/pi1 WireGuard docs to reflect that wireguardmeshgenerator
generates and installs their tun0.conf + rc.d/wireguard script directly
now, closing the previously-documented gap where both nodes' configs were
manually-maintained exceptions outside the generator.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
Trims dates, "reinstalled"/"converted"/"validated twice" framing, and
forward-looking "next conversion" language from the f3s/pkgrepo skill docs.
Keeps only current-state reference material: pi0 and pi1 run NetBSD, and
how their services (WireGuard, bozohttpd, uptimed, npf, content sync,
goprecords) are installed and configured. bootstrap-netbsd-pi.md is
reframed from a migration runbook into a plain service-reference doc.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
pi0 and pi1 were both reinstalled from Rocky Linux to NetBSD 10.1 this
session. Adds the reusable conversion runbook (bootstrap-netbsd-pi.md) and
updates every f3s/pkgrepo reference that assumed pi0/pi1 were still Rocky
(WireGuard setup, DTail client lists, pkgrepo URLs/build host, goprecords
automation, wol-f3s doas behavior), plus documents the bugs found along the
way: no native wg(4) on this platform, uptimed's dual-file read bug,
bozohttpd's -V fallback redirect leaking the system hostname.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
hexai dropped the tmux-edit popup editor feature; drop the tmux
keybinding, update-tool lists, and the orphaned tmux-edit-send script
that duplicated it but was no longer bound to anything.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- New skill: skill-maintenance (SKILL.md + 4 references: best-practices,
dry-across-skills, sub-division, audit-checklist) encoding the Agent Skills
spec rules, cross-skill DRY, and the f3s/rocky-vm-setup sub-division pattern.
- agent-task-management/references/verification-honesty.md: canonical home
for the general verification-honesty discipline (linked from go-best-practices).
- blog-writing-style/references/gemtext-conventions.md: shared foo.zone
gemtext conventions (linked from compose-blog-post, update-blog-post,
blog-writing-style).
- blog-writing-style/references/patterns-and-examples.md: foo.zone LLM-pattern
catalog + rewrite examples extracted from blog-writing-style SKILL.md.
- f3s/references/{console-jetkvm-shutdown,shelly-plug}.md: referenced by
f3s/SKILL.md (previously untracked).
|
|
|
|
|
|
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-019f0cc8-1a8f-71ab-8a1c-914d7cdb055a
Co-authored-by: Amp <amp@ampcode.com>
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-019f0cc8-1a8f-71ab-8a1c-914d7cdb055a
Co-authored-by: Amp <amp@ampcode.com>
|
|
Backs up ~ to encrypted ZFS dataset on f2 (zdata/enc/earth-backup) via
rsync over SSH. Excludes caches, trash, build artifacts, git checkouts,
syncthing, and media libraries. Adds systemd user service+timer (daily)
and enables it via Rex home_systemd_user task.
Amp-Thread-ID: https://ampcode.com/threads/T-019f0cc8-1a8f-71ab-8a1c-914d7cdb055a
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
|
|
|
|
|
|
|
|
Corrected mutual pubkey and PSK mismatch between f3 and both OpenBSD
gateways. f3 is now reachable directly via WireGuard from fishfinger or
blowfish without the double-hop workaround.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- Current version bump: 15.0-RELEASE → 15.1-RELEASE
- Added breaking changes section for 15.1: ZFS sysctl rename
(vfs.zfs.min_auto_ashift → vfs.zfs.vdev.min_auto_ashift),
libzfs7/libzpool7 SONAME bump, if_bridge/if_epair MAC change,
CARP failover + NFS sink dataset readonly fix
- Updated minor upgrade example: two-pass flow with correct PAGER=cat
workarounds, doas env-var handling via doas sh -c, sysctl rename step
- Noted carpcontrol.sh fixes: readonly flip on MASTER + rollback on BACKUP
(commits 6c13b6a + c9f06a2 in conf repo)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
The export path passed a file_label argument that was always identical to the
tag (TASK_EXPORT_TAG/TASK_EXPORT_TAG, rocky/rocky), and the import path
duplicated the find | while read | import/rm block once per source. Collapse
both into a single 'list of labels' model:
- _taskwarrior::export_tag drops the redundant file_label; the tag name is the
file label.
- New _taskwarrior::import_label imports+removes all files for one label,
replacing the two copy-pasted blocks.
- export loops over [$TASK_EXPORT_TAG rocky]; import loops over
[$TASK_IMPORT_TAG (hostname)]. The rocky routing (export by tag name, import
by hostname match) is now explicit and symmetric.
Behaviour is unchanged; verified with a stubbed-task/hostname harness covering
the rocky host, a non-rocky host, and label isolation.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
The prior worker extracted the style sections into four references/ files
(naming-and-formatting, files-and-headers, module-organization,
code-body-conventions) but was interrupted before slimming SKILL.md, leaving
the content duplicated. Resume: slim SKILL.md to intro, When-to-Use, a
reference index, and the Quick Checklist summary (187 -> 44 lines). Content
moved verbatim; nothing dropped.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Reorganize the 217-line SKILL.md into a slim 50-line entry point
(purpose, principles, core workflow, reference index, quick reference)
plus four focused references, matching the f3s / llm-benchmark-comparison
pattern. Pure reorganization; all content preserved.
References:
- beets-layout-and-dedup.md (layout, sorting, duplicates plugin)
- navidrome-rescan.md (full scan on host and in Kubernetes)
- cmus-reindex.md (lib.pl/cache, offline and live re-index)
- tiddl-downloads.md (auth, batch loops, quality/output config)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Reorganize the skill to follow the f3s / blog-writing-style pattern: a slim
SKILL.md (purpose, trigger, inputs, core workflow, reference index) plus three
focused reference files. Pure reorganization — all content preserved verbatim.
- references/search-and-sourcing.md: search endpoints, per-model queries,
source trust order, source endpoint URLs (workflow steps 2-3)
- references/benchmarks-catalog.md: per-model fields-to-capture table and the
2026 benchmark glossary
- references/output-and-analysis.md: comparison table structure, analysis
sections, anti-patterns, output format, output shape (workflow steps 4-7)
SKILL.md drops from 225 to 86 lines.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Break up the three most monolithic flat skills into a slim SKILL.md plus a
references/ directory of focused sub-files, matching the f3s and
agent-task-management structure. Pure reorganization: all content and meaning
preserved, only moved behind a reference index with resolving links.
- blog-writing-style (619->216): extract the Wikipedia-based 'Signs of AI
writing' deep catalog into references/signs-of-ai-writing.md.
- check-shopping-status (319->135): extract references/imap-scan-script.md
(steps 1-3 Python) and references/amazon-cdp.md (CDP login helper).
- photo-processing (232->155): extract references/auto-enhance.md (standalone
ImageMagick auto-enhance script).
Adds notes/skills-review-2026-06-19.md with the full inventory and the
follow-up task IDs (dq0, eq0, fq0) for the remaining oversized skills.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|