Use this skill BEFORE writing or modifying any input validation in this repo — e.g. "validate this CLI flag", "sanitize this filename", "check this username", "add a new sanity helper", any edit that touches pkg/sanity/sanity.go or any caller that runs user-supplied / env-derived / config-derived strings through a `sanity.*` helper. Captures the Sanitize* vs Validate* naming pattern, the per-validator character sets, and the decision matrix for picking the right helper. Read this BEFORE relaxing or tightening any validator — the rules are scoped and the wrong helper is what produced issue
Use this skill BEFORE writing or modifying any Go error construction in this repo — e.g. "add error handling", "return an error from this function", any edit that introduces a new `return err` site, any urge to type `errors.New` or `fmt.Errorf` in production code under `cmd/`, `internal/`, `pkg/`. Production code must use `github.com/joomcode/errorx` and is enforced by `golangci-lint` (forbidigo). Captures the rule, the namespace mapping table, the sentinel pattern using `errors.Join`, and the test-file exemption. Read this BEFORE picking an errorx namespace — the wrong namespace silently degrades the doctor layer's error styling and exit-code mapping.
Use this skill when adding, restructuring, or extracting tasks in this repo's Task (taskfile.dev) configuration — e.g. "add a new build target", "split Taskfile.yaml", "add tasks for X", "where should this task live?", any edit that touches Taskfile.yaml or taskfiles/*.yaml. Captures the repo's conventions for when to inline vs. extract to a sub-Taskfile, the family-naming pattern (build:X / hash:X:* / sign:X:*), the OS/arch fan-out structure, and the `includes` + `flatten: true` discovery model. Read this BEFORE adding a new task family or extracting an inline block.