3.2 KiB
3.2 KiB
azos
Architecture
Two-tier NixOS/home-manager feature system: azos-core/ (shared submodule) + features/ (machine-specific). Features auto-discovered via import-tree, collected into config.flake.modules.
See azos/architecture for module registration, option namespace, file deployment, and Claude Code wiring.
Conventions
- azos-core features belong to the submodule; machine-specific features live in the outer repo
- Extensible options follow the pattern established by
azos.claude.globalSkillsandazos.claude.globalMdSections: attrsets any module can contribute to, deployed by the owning feature - Emacs config is literate org:
azos-core/features/editor/emacs/config.org - Emacs base config:
azos-core/features/base/emacs/config.org - agent-shell defaults to Claude Code on lauretta via
(setq agent-shell-preferred-agent-config 'claude-code)infeatures/lauretta/emacs/config.org; this symbol skips agent selection entirely (no prompt) - Rebuild command:
azos-lauretta-update - Format:
nix fmt - Packages in overlay:
pkgs.<name>viaconfig.flake.overlayPkgs.<name> - Unstable packages:
pkgs.unstable.<package>
Writing Claude Skills
Skill descriptions are routing keys — they determine whether a skill activates. Guidelines (ref: https://stevekinney.com/writing/agent-skills):
- Open with
TRIGGER on:and numbered conditions so activation is unambiguous - One specific job per skill; overlapping descriptions cause routing competition
- Scope exclusions: state what the skill does NOT replace to prevent false positives
- Domain-specific language; no generic phrases like "helps with X"
Gotchas
azos-coreis a git submodule —git addmust be run inside it separately from the outer repo- Nix flakes only evaluate git-tracked files; new files must be staged (
git add) beforenix buildwill see them import-treeauto-discovers features but only sees tracked files — same constraint- The machine name is
lauretta; machine config is at_machines/lauretta.nix postPatchin Nix derivations: alejandra reformats indentation of multiline strings, which can change effective shell script content
Key Files
| File | Purpose |
|---|---|
azos-core/features/claude-memory/default.nix |
org-roam MCP server integration |
azos-core/features/claude-skills/default.nix |
global skills + CLAUDE.md deployment |
azos-core/features/claude-skills/skills/todo.md |
per-project TODO management skill |
azos-core/features/claude-skills/skills/project-brain.md |
org-roam second brain skill |
azos/features/claude/default.nix |
installs claude-code, enables claude-memory + claude-skills |
features/lauretta/emacs/config.org |
lauretta-specific Emacs overrides (agent-shell, LLM, beacon, caldav) |
~/.claude/settings.json |
Claude Code global permissions; always-allowed org-roam MCP tools listed here |
Subnodes
- azos/architecture — module registration, option namespace, file deployment, Claude Code wiring
- azos/org-roam — setup, MCP server, SQLite internals, fork details