Rename azos-core features/ to suites/; fold claude-memory/claude-skills into base

Bumps the azos-core submodule and updates docs/imports to match: AGENTS.md
now documents the suite-grouping convention (no bare top-level modules),
and claude-memory/claude-skills no longer need their own entries in
home-manager/home.nix since they're folded into the base suite.
This commit is contained in:
2026-10-13 08:42:49 +03:00
parent b3380c6ce4
commit 53976751cd
3 changed files with 24 additions and 15 deletions
+23 -12
View File
@@ -83,7 +83,7 @@ azos/
├── shells/ # Dev shells
└── azos-core/ # Shared feature library (git submodule)
├── flake.nix
├── features/ # Shared/reusable features (auto-discovered)
├── suites/ # Suites, each grouping related sub-features (auto-discovered)
├── overlays/ # Core overlays
└── _lib/ # Module schema helpers
```
@@ -93,7 +93,10 @@ Features are auto-discovered by `import-tree` — no central imports file. Each
then explicitly imported in `home-manager/home.nix` via `suiteModules.homeManager.<name>`.
**Where to put a new feature:**
- Shared / reusable across machines → `azos-core/features/<name>/default.nix`
- Shared / reusable across machines → inside an existing or new suite directory,
`azos-core/suites/<suite>/<name>/default.nix` (registering
`config.flake.modules.homeManager.<suite>`) — never a bare file directly under
`azos-core/suites/`; every azos-core feature belongs to a suite.
- Machine-specific → `azos/features/<name>/default.nix`
## Code Style Guidelines
@@ -125,7 +128,7 @@ All features follow this flake-parts registration pattern:
### Naming Conventions
- Option paths: `azos.<module-name>.<option>`
- Module names: kebab-case (`git-config`, `claude-memory`)
- Module names: kebab-case (`git-config`, `station`)
- Feature directories: kebab-case, one `default.nix` per feature
- Variables: kebab-case
@@ -193,15 +196,18 @@ specialisation = {
## Adding New Modules
1. Create `features/<name>/default.nix` (machine-specific) or `azos-core/features/<name>/default.nix` (shared)
1. Create `features/<name>/default.nix` (machine-specific) or, for shared features,
`azos-core/suites/<suite>/<name>/default.nix` inside an existing or new suite
(registering `config.flake.modules.homeManager.<suite>`, not a standalone module name)
2. Use the module template above
3. Add `suiteModules.homeManager.<name>` to the imports list in `home-manager/home.nix`
3. Machine-specific: add `suiteModules.homeManager.<name>` to the imports list in
`home-manager/home.nix`. Shared: no change needed if the suite is already imported.
4. Run `nix fmt`
> **Submodule gotcha**: New files in `azos-core/` must be `git add`-ed inside the submodule
> before `nix build` will see them — Nix flakes only evaluate git-tracked files.
> ```bash
> cd azos-core && git add features/<name>/
> cd azos-core && git add suites/<suite>/<name>/
> ```
## Claude Integration
@@ -210,10 +216,15 @@ Claude Code is integrated with this environment via several azos-core features:
| Feature | Option | What it does |
|---------|--------|--------------|
| `azos-core/features/claude-memory` | `azos.claude-memory.enable` | Registers org-roam-mcp as a global MCP server in `~/.claude.json` |
| `azos-core/features/claude-skills` | `azos.claude-skills.enable` | Deploys skills to `~/.claude/commands/` and content to `~/.claude/CLAUDE.md` |
| `azos-core/suites/base/claude-memory` | `azos.claude-memory.enable` | Registers org-roam-mcp as a global MCP server in `~/.claude.json` |
| `azos-core/suites/base/claude-skills` | `azos.claude-skills.enable` | Deploys skills to `~/.claude/commands/` and content to `~/.claude/CLAUDE.md` |
| `azos/features/claude` | `azos.claude.enable` | Installs claude-code, auto-enables the above two |
Both claude-memory and claude-skills register `config.flake.modules.homeManager.base`
(they live inside the `base` suite, since that's where agent-shell is introduced) — not
standalone module names, so no separate `suiteModules.homeManager.*` import is needed for
them in `home-manager/home.nix`.
### Adding Claude skills or standing instructions
From any module — no need to touch azos-core:
```nix
@@ -223,7 +234,7 @@ azos.claude.globalMdSections.my-rule = ''
Always do X when Y.
'';
```
See `azos-core/features/claude-skills/README.md` for full documentation.
See `azos-core/suites/base/claude-skills/README.md` for full documentation.
## Key Files
@@ -236,10 +247,10 @@ See `azos-core/features/claude-skills/README.md` for full documentation.
| `nixos/configuration-vm.nix` | Test VM config |
| `overlays/` | Package overlays |
| `azos-core/` | Shared feature library (git submodule) |
| `azos-core/features/` | Shared features (auto-discovered by import-tree) |
| `azos-core/suites/` | Suites, each grouping related shared sub-features (auto-discovered by import-tree) |
| `features/` | Machine-specific features (auto-discovered by import-tree) |
| `azos-core/features/editor/emacs/config.org` | Literate Emacs config |
| `azos-core/features/claude-skills/README.md` | Claude skills extensibility docs |
| `azos-core/suites/editor/emacs/config.org` | Literate Emacs config |
| `azos-core/suites/base/claude-skills/README.md` | Claude skills extensibility docs |
## Common Tasks
-2
View File
@@ -16,8 +16,6 @@
suiteModules.homeManager.lauretta
suiteModules.homeManager.audio
suiteModules.homeManager.claude
suiteModules.homeManager.claude-memory
suiteModules.homeManager.claude-skills
suiteModules.homeManager.encryption
suiteModules.homeManager.git-config
suiteModules.homeManager.hfsprogs