# Contributing (note-to-self) Solo-maintained. This file exists to keep future-me honest. ## The rule **Procedures only. No particulars.** This repo is public-read. Anything that identifies a client or would let a reader act against a client environment goes to the private tier — **no exceptions.** Never commit: - Client / business names, site identifiers - Hostnames, IPs, subnets, SSIDs, MAC addresses - Usernames, account names, email addresses - Passwords, keys, tokens, connection strings, license keys - Screenshots, exports, logs, or config dumps containing any of the above Instead use placeholders: ``, ``, ``, ``, ``, ``. Filled-in versions live in the **private tier** (private repo or Bitwarden secure note). ## Where things go | Content | Home | |---|---| | Generic procedure with placeholders | **This repo** | | Anything needing a credential | Private tier | | Client-specific config / values | Private tier | | Any identifying detail | Private tier | If a step can't be written without a real particular, it doesn't belong here — split the particular out to the private tier and reference it as a placeholder. ## Before every commit 1. Re-read the diff. Would a stranger learn *who* the client is, or *how to reach* their systems? If yes, stop. 2. No real hostnames/IPs/users/passwords — placeholders only. 3. No screenshots or pasted output with real data. 4. Scripts prompt for client-specifics at run time; they don't hard-code them. ## Scripts Scripts live under `scripts/`. Follow [`scripts/_template.ps1`](scripts/_template.ps1): - Prompt for placeholders with `Read-Host` — no editing before running, no `param()` (can't pass args through `irm | iex`). - Safe to run via `irm | iex` from our own server. - Confirm before anything destructive or that reboots. - Check for admin explicitly (`#Requires` is not enforced under `iex`).