Enforces layered architecture, MCP tool usage, and quality gates for the Nomarr project. Reads layer skills, discovers APIs, validates naming conventions, and maintains dependency boundaries.
Enforces architectural rules, tool usage hierarchy, and quality standards for the Nomarr pre-alpha codebase. Ensures proper layer separation, dependency injection patterns, and MCP tool usage.
**Never edit code without first reading the relevant layer skill file.**
Before modifying any file, identify its layer and read the corresponding skill:
| Path Pattern | Skill File to Read |
|--------------|-------------------|
| `nomarr/interfaces/` | `.github/skills/layer-interfaces/SKILL.md` |
| `nomarr/services/` | `.github/skills/layer-services/SKILL.md` |
| `nomarr/workflows/` | `.github/skills/layer-workflows/SKILL.md` |
| `nomarr/components/` | `.github/skills/layer-components/SKILL.md` |
| `nomarr/persistence/` | `.github/skills/layer-persistence/SKILL.md` |
| `nomarr/helpers/` | `.github/skills/layer-helpers/SKILL.md` |
| `frontend/` | `.github/skills/layer-frontend/SKILL.md` |
Skills contain authoritative guidance on naming, boundaries, imports, and validation requirements.
**Never guess at module APIs — discover them first.**
Before editing any Python module, run:
```bash
mcp_nomarrdev_discover_api("module.path.here")
```
Use discovered signatures as source of truth. Do not proceed without verifying existing API shapes.
After making changes, run the layer's validation script:
```powershell
python .github/skills/layer-services/scripts/check_naming.py
python .github/skills/layer-persistence/scripts/check_naming.py
python .github/skills/layer-interfaces/scripts/check_naming.py
```
Run additional checks (lint, mypy, build) if specified by the layer skill.
**Always use these tools first for Python exploration:**
These tools understand FastAPI dependency injection and Nomarr's layered architecture.
**For file exploration and symbol finding:**
**Before guessing external library APIs:**
Get authoritative documentation instead of making assumptions.
**Check memories at task start, update at task end:**
**Only use when MCP tools cannot accomplish the task:**
```
interfaces → services → workflows → components → (persistence / helpers)
```
Import-linter enforces these boundaries.
**Never:**
**Always:**
Nomarr is pre-alpha. Breaking changes are acceptable. No migrations, legacy shims, or compatibility layers. Prioritize clean architecture over preserving old data.
```bash
python scripts/discover_api.py nomarr.components.ml
python scripts/run_qc.py
python scripts/detect_slop.py nomarr/workflows/some_wf.py
```
For detailed tool usage, see `.github/skills/quality-analysis/` and `.github/skills/code-discovery/`.
1. **Identify layer** from file path
2. **Read corresponding skill** from `.github/skills/layer-*/SKILL.md`
3. **Use MCP tools** to discover existing APIs and symbols
4. **Check memories** for relevant architectural context
5. **Make changes** following layer conventions
6. **Run validation scripts** for the modified layer
7. **Update memories** if new patterns or decisions were made
8. **Verify dependency direction** with import-linter if needed
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/github-copilot-nomarr-architecture-enforcer/raw