Standards And Conventions for DeLoNET Linux Workstations
Important: Strict adherence to PROGRESSIVE DISCOVERY strategy. Once you have the info you require to complete your task, stop reading IMMEDIATELY and proceed to the next step.
Skill Directory
TODO:
This will be a directory of references in the form of a decision tree.
How the User's Home is Organized
The top-level directory structure of the user's home directory is split into several notable sections:
docker/
code/
- ``
Scripting, Shell Config, and Secrets
This top-level domain is managed by my ZSH Custom repository delorenj/zshyzsh. This is how I keep parity between my various machines.
- To share configuration of an app, I simply move
~/.config/app to $ZSH_CUSTOM (aka zshyzsh, $ZC) and symlink it back to ~/.config/app.
- Aliases are combined into
$ZC/aliases.zsh and loaded automatically.
- Secrets are stored in
$ZC/secrets.zsh and loaded automatically.
- Shell completions are stored in
$ZC/completions/app.zsh and loaded automatically.
- Scripts are stored in
$ZC/scripts/some_script.zsh and are linked to ~/.local/bin/some_script.
- Shortcut commands too complex for aliases are implemented as zsh functions or sometimes python and grouped by topic in
$ZC/
- i.e.
$ZC/docker-commands.zsh, $ZC/github.zsh
TODO:
I am progressively migrating my secrets from the questionable unencrypted flat file to my 1pass CLI vault, DeLoSecrets
Docker Containers and Compose Stacks
Use references/docker_patterns.md for the baseline Cloudflare Tunnel + Traefik topology.
For higher-touch DeLoNET service operations, also use:
references/docker-service-provisioning.md for scaffolding new services, choosing Traefik-routed vs direct-port patterns, parent-compose wiring, firewall exposure, and RustDesk-specific provisioning gotchas.
references/selfhosted-agent-infrastructure.md for Honcho, Traefik migration, JWT admin tokens, and hosted-agent connectivity patterns.
Obsidian Vault and Knowledge Base Artifact Organization
Code Repository Organization
All repos live in $CODE (~/code). New repos are not hand-rolled — they are created and
wired by pjangler out of the CommonProject + hermes-agent-template copier templates.
For anything about CREATING a 33god/DeLoNET project — bootstrapping CommonProject,
provisioning a Hermes PM or Ticket Sentinel (scrum-master), the .project.json single
source of truth + one-board-per-repo model, the mise contract, BMAD install, and
hindsight/bloodbank agent hooks — use the 33god-projects skill. Don't reinvent it here.
For developing pjangler itself (Commands/Recipes), see pjangler-dev in ~/code/pjangler/skills/.
Canonical machine-global agent hooks live under ~/.agents/hooks/: Hindsight under
~/.agents/hooks/hindsight/ and Bloodbank under ~/.agents/hooks/bloodbank/.
Per-agent configs may differ, but they should invoke those shared entrypoints.
Tooling and Package Management
Mise is my tooling and package versioning utility of choice.
- EVERYTHING that CAN be managed with Mise should be managed with Mise.
- This is not yet the case.
- If you find one, migrate it to Mise and remove the old tooling.
- Every 33god repo carries the same mise contract (mise.toml +
.mise/scripts/, AGENTS.md→
CLAUDE.md/GEMINI.md linking, op inject .env.op on enter). That contract is documented in
the 33god-projects skill (mise-conventions); follow it for any new or edited repo.
[!IMPORTANT] Critical Pattern:
Every repo in $CODE (ideally) has a matching folder in $VAULT/Projects/ for non-tracked brainstorming and iteration documents.
There is a helper.zsh script function syncDocs that ensures this relationship is maintained.
[!IMPORTANT] Critical Convention
exported paths are ALWAYS in caps.
aliases and functions are ALWAYS lowercase.
- For every exported path, there should be an alias to navigate to it quickly.
alias zv='cd $ZV' to go to the vault.
Critical Pattern: I write code in the terminal, but I like to view my docs in Obsidian. To accomplish this, I came up with a hack; every repo in $CODE has a corresponding folder of the same name in $VAULT/Projects/.
Note: This is still an unsolved problem. While this hack technicall works, it's not without its drawbacks.
- There's no single source of truth since the docs are duplicated.
- I tried symlinking but it causes too many issues with rendering in Obsidian and conflicts.
Muxers, Terminal Emulators, Editors and IDE's
- Lazyvim for all my editing needs.
- Alacritty as my primary terminal emulator.
- Zellij as my terminal multiplexer.
- Zed is my primary IDE but I rarely use it.
Tips, Non-negotiables, Pet Peeves, and General Advice
- NEVER put documents randomly in the root of a repo - use the vault for that
- After each large task, prune and refactor docs to keep them minimal and useful.
[!IMPORTANT] Document Pruning Rule:
Rule of thumb: If you created 10 docs in a session, delete 9 of them and keep only the best one.
Network Architecture
- Cloudflare Tunnel for external access (no public IP needed)
- Traefik as reverse proxy for service routing and SSL
- Proxy network (
proxy) for inter-service communication
- Direct container routing for simple services, Traefik routing for complex multi-domain apps
See references/docker_patterns.md for Cloudflare Tunnel + Traefik setup.
Communication Style:
- Direct, concise, technical authority
- No em dashes
- Medium-depth explanations (~200 words)
- Speak as peer and best friend that's hanging out having some beer and coding together!
- Don't be serious all the time - absurd humor is welcome!
1---2name: delonet-conventions3description: This skill defines system conventions such as file naming and paths, shell configuration, container hosting and other custom systems. Use this skill when working on a task that requires interacting with or configuring the filesystem, containers, or services in the DeLoNET home environment.4---56# Standards And Conventions for DeLoNET Linux Workstations78> Important: Strict adherence to PROGRESSIVE DISCOVERY strategy. Once you have the info you require to complete your task, stop reading IMMEDIATELY and proceed to the next step.910## Skill Directory1112> TODO:13> This will be a directory of references in the form of a decision tree.1415## How the User's Home is Organized1617The top-level directory structure of the user's home directory is split into several notable sections:18191. `docker/`202. `code/`213. ``2223## Scripting, Shell Config, and Secrets2425This top-level domain is managed by my `ZSH Custom` repository `delorenj/zshyzsh`. This is how I keep parity between my various machines.2627- To share configuration of an app, I simply move `~/.config/app` to `$ZSH_CUSTOM` (aka `zshyzsh`, `$ZC`) and symlink it back to `~/.config/app`.28- Aliases are combined into `$ZC/aliases.zsh` and loaded automatically.29- Secrets are stored in `$ZC/secrets.zsh` and loaded automatically.30- Shell completions are stored in `$ZC/completions/app.zsh` and loaded automatically.31- Scripts are stored in `$ZC/scripts/some_script.zsh` and are linked to `~/.local/bin/some_script`.32- Shortcut commands too complex for aliases are implemented as zsh functions or sometimes python and grouped by topic in `$ZC/`33 - i.e. `$ZC/docker-commands.zsh`, `$ZC/github.zsh`3435> TODO:36> I am progressively migrating my secrets from the questionable unencrypted flat file to my 1pass CLI vault, [DeLoSecrets](ogoabqae7c6xgdbl5wccfwcnke)3738## Docker Containers and Compose Stacks3940Use `references/docker_patterns.md` for the baseline Cloudflare Tunnel + Traefik topology.4142For higher-touch DeLoNET service operations, also use:43- `references/docker-service-provisioning.md` for scaffolding new services, choosing Traefik-routed vs direct-port patterns, parent-compose wiring, firewall exposure, and RustDesk-specific provisioning gotchas.44- `references/selfhosted-agent-infrastructure.md` for Honcho, Traefik migration, JWT admin tokens, and hosted-agent connectivity patterns.4546## Obsidian Vault and Knowledge Base Artifact Organization4748## Code Repository Organization4950All repos live in `$CODE` (`~/code`). New repos are not hand-rolled — they are created and51wired by **pjangler** out of the CommonProject + hermes-agent-template copier templates.5253> For anything about CREATING a 33god/DeLoNET project — bootstrapping CommonProject,54> provisioning a Hermes PM or Ticket Sentinel (scrum-master), the `.project.json` single55> source of truth + one-board-per-repo model, the mise contract, BMAD install, and56> hindsight/bloodbank agent hooks — use the **`33god-projects`** skill. Don't reinvent it here.57> For developing pjangler itself (Commands/Recipes), see `pjangler-dev` in `~/code/pjangler/skills/`.58> Canonical machine-global agent hooks live under `~/.agents/hooks/`: Hindsight under59> `~/.agents/hooks/hindsight/` and Bloodbank under `~/.agents/hooks/bloodbank/`.60> Per-agent configs may differ, but they should invoke those shared entrypoints.6162## Tooling and Package Management6364Mise is my tooling and package versioning utility of choice.6566- EVERYTHING that CAN be managed with Mise should be managed with Mise.67 - This is not yet the case.68 - If you find one, migrate it to Mise and remove the old tooling.69- Every 33god repo carries the same mise contract (mise.toml + `.mise/scripts/`, AGENTS.md→70 CLAUDE.md/GEMINI.md linking, `op inject .env.op` on enter). That contract is documented in71 the **`33god-projects`** skill (mise-conventions); follow it for any new or edited repo.7273> [!IMPORTANT] **Critical Pattern:**74> Every repo in `$CODE` (ideally) has a matching folder in `$VAULT/Projects/` for non-tracked brainstorming and iteration documents.75> There is a `helper.zsh` script function `syncDocs` that ensures this relationship is maintained.7677> [!IMPORTANT] **Critical Convention**78> `exported` paths are ALWAYS in caps.79> `aliases` and `functions` are ALWAYS lowercase.8081- For every exported path, there should be an alias to navigate to it quickly.82 - `alias zv='cd $ZV'` to go to the vault.8384**Critical Pattern:** I write code in the terminal, but I like to view my docs in Obsidian. To accomplish this, I came up with a hack; every repo in `$CODE` has a corresponding folder of the same name in `$VAULT/Projects/`.8586> Note: This is still an unsolved problem. While this hack technicall works, it's not without its drawbacks.8788- There's no single source of truth since the docs are duplicated.89- I tried symlinking but it causes too many issues with rendering in Obsidian and conflicts.9091## Muxers, Terminal Emulators, Editors and IDE's9293- [Lazyvim](https://www.lazyvim.org/) for all my editing needs.94- [Alacritty](https://github.com/alacritty/alacritty) as my primary terminal emulator.95- [Zellij](https://zellij.dev) as my terminal multiplexer.96- [Zed](https://zed.dev) is my primary IDE but I rarely use it.9798## Tips, Non-negotiables, Pet Peeves, and General Advice99100- NEVER put documents randomly in the root of a repo - use the vault for that101- After each large task, prune and refactor docs to keep them minimal and useful.102103> [!IMPORTANT] **Document Pruning Rule:**104> Rule of thumb: If you created 10 docs in a session, delete 9 of them and keep only the best one.105106## Network Architecture107108- **Cloudflare Tunnel** for external access (no public IP needed)109- **[Traefik](~/docker/core/traefik)** as reverse proxy for service routing and SSL110- **Proxy network** (`proxy`) for inter-service communication111- **Direct container routing** for simple services, **Traefik routing** for complex multi-domain apps112113See `references/docker_patterns.md` for Cloudflare Tunnel + Traefik setup.114115**Communication Style:**116117- Direct, concise, technical authority118- No em dashes119- Medium-depth explanations (~200 words)120- Speak as peer and best friend that's hanging out having some beer and coding together!121- Don't be serious all the time - absurd humor is welcome!