sammasak/sammasak-skills
Personal agent skills for software development and homelab workflows.
Use when dispatching work to background or parallel subagents, defining custom subagents, or choosing between local agent dispatch and running Claude on another machine (herdr).
Use when writing or editing a Workflow script (agent()/pipeline()/parallel()), dispatching a subagent with the Agent tool, or writing a .claude/agents/*.md definition.
Use when running build, push, or deploy commands that need credentials (registry auth, API keys, tokens) in this homelab.
Use when designing or reviewing module boundaries, public APIs, traits/interfaces, or test seams — before adding a wrapper, helper, abstraction layer, or new public type. Not for Rust-specific lints, crates, or toolchain choices — rust-engineering owns those.
Use when verifying a user flow in a running web app through the browser, beyond an HTTP status check.
Use when the user mentions a person, company, situation, or prior decision you don't recognise, when you need context from ~/knowledge, or when explicitly asked to write a runbook, ADR, or other durable reference to the vault (not ~/.claude MEMORY.md).
Use when changing or debugging anything in the homelab k3s cluster: manifests, Flux Kustomizations, HelmReleases, ingress, scaling, or node problems. Not for SOPS encryption (secrets-management) or confirming a finished deploy is live (verify-service).
Use when about to add a comment, doc block, error variant, config option, helper, or test beyond what the change strictly needs — in any code writing or review. Not for Rust-specific lints, crates, or toolchain choices — rust-engineering owns those.
Use when editing ~/nixos-config, adding a NixOS or Home Manager module, updating a flake input, or rebuilding/deploying a homelab host.
Use when sending a notification to ntfy from a homelab service, loop, script, or agent.
Use when reviewing an implementation after a task is complete, including after an implementer finishes a task in subagent-driven-development.
Use when a small, mechanical, machine-checkable task (lint or clippy fixes, adding tests, small refactors, repetitive edits) could be delegated to the free-tier Pi worker instead of spending your own context. Not for design, security-sensitive code, or work without a check command.
Use when writing Rust code in a homelab repo, adding crates, changing Cargo workspace lints or profiles, running Rust gates, applying the type pillar (illegal states unrepresentable, newtypes, typed errors), or building a container image from a Rust binary.
Use when driving the sdlc:* stage machine in a repo whose devenv defines platform.sdlc (rust preset stages: sketch -> model -> test -> review -> perf -> security; sdlc:done is the aggregate task).
Use when creating, encrypting, editing, or rotating a SOPS secret in homelab-gitops or nixos-config, changing age recipients, or wiring secret delivery (Flux decryption, sops-nix). Not for loading already-provisioned credentials at build or deploy time — route that to credentials. Not for application code that reads env vars or tokens at runtime.
Use when a homelab service was just deployed or changed, before reporting it done or live, including named apps behind Authentik. Not for diagnosing WHY a deploy or cluster is broken — route that to kubernetes-gitops.