# Source Control ## Hosts and orgs - All projects on **Gitea** (`gitea.oreillyit.nz`) as primary remote — prefer this hostname over `gitea.homelab.internal` (same instance, the public name enables external access) - Migrate existing remotes from `gitea.homelab.internal` to `gitea.oreillyit.nz` when convenient - **`skynet`** org: AI-focused projects. Owned by `ai_enablement`. - **`homelab`** org: infrastructure projects (cluster-bootstrap, etc.). Owned by `cluster-administrator`. - **`oreillyit`** org: non-AI internal O'Reilly IT tools. Owned by `ai_enablement`. - Optionally push-mirror to GitHub for public visibility. ## SSH aliases Pattern: `gitea.oreillyit.nz-`. - `gitea.oreillyit.nz-homelab` → authenticates as `cluster-administrator` (key: `~/.ssh/gitea-cluster-admin`) - `gitea.oreillyit.nz-ai-enablement` → authenticates as `ai_enablement` (key: `~/.ssh/gitea.ai-enablement`) Git remote URL format: `git@gitea.oreillyit.nz-:/.git` - Example: `git@gitea.oreillyit.nz-ai-enablement:skynet/custom-claude-skills.git` ## Working rules - **Always pull before planning work** — run `git pull --ff-only` when entering a project. Work may have been pushed from another machine or by container agents. If the pull fails (diverged history, uncommitted changes), warn the user before proceeding. - Meaningful commit messages; prefer small, focused commits over large batches. - Enable pre-commit hooks where appropriate (secret detection, linting, formatting). - Never commit secrets in plaintext — use SOPS + age or equivalent encryption.