vinhnx / strict-architecture
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/strict-architecture && curl -o .claude/skills/strict-architecture/SKILL.md https://fastmcp.me/Skills/DownloadRaw?id=199
Project Skills
This skill will be saved in .claude/skills/strict-architecture/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
Enforces universal strict governance rules (500 lines, 5 funcs, 4 args) and interface-first I/O for Python, Golang, and .NET.
1 views
0 installs
Skill Content
---
name: strict-architecture
description: Enforces universal strict governance rules (500 lines, 5 funcs, 4 args) and interface-first I/O for Python, Golang, and .NET.
license: MIT
model: inherit
mode: false
allowed-tools:
- Read
- Grep
disable-model-invocation: false
when-to-use: "Enforce hard architecture limits and I/O contracts"
requires-container: false
disallow-container: true
---
# Strict Architecture Governance
These rules apply to ALL code in this project, regardless of language.
## 1. Universal Limits (Non-Negotiable)
These constraints apply to every source file:
- **MAX_LINES**: 500 lines per file. (Split file if exceeded)
- **MAX_FUNCS**: 5 public functions/methods per class/struct.
- **MAX_ARGS**: 4 arguments per function/constructor.
- **NO_DEFAULTS**: No default argument values allowed.
- **NO_ENV_VARS**: No reading environment variables inside constructors or methods (pass values in).
## 2. Implementation Patterns by Language
### Python Implementation
- **Interfaces**: Use `typing.Protocol` for all dependencies.
```python
class IClient(Protocol):
def fetch(self) -> dict: ...
```
- **Config**: Use `@dataclass` for configuration objects if args > 4.
- **Env Block**: Reject `os.environ` or `os.getenv` anywhere except `main.py`.
### Golang Implementation
- **Interfaces**: Define `type Service interface` for all dependencies.
- **Config**: Use strict structs for config.
- **Env Block**: Reject `os.Getenv` anywhere except `main.go`.
- **Forbidden**: Do not use struct pointers for dependencies; use interfaces.
### .NET / C# Implementation
- **Interfaces**: Use `IInterface` prefix.
- **Config**: Use `IOptions<T>` pattern or simple POCO config objects.
- **Env Block**: Reject `Environment.GetEnvironmentVariable` anywhere except `Program.cs`.
## 3. Enforcement Checklist
Before saving any file, verify:
1. [ ] Is the file < 500 lines?
2. [ ] Does the constructor have dependencies passed as Interfaces?
3. [ ] Are there 0 calls to env var readers?
4. [ ] Are there 0 default arguments?