solid-detection
SKILL.md
SOLID Detection Skill
Project Detection
Detect project type from configuration files:
# Next.js (priority over React)
[ -f "package.json" ] && grep -q '"next"' package.json
# React (no "next" in package.json)
[ -f "package.json" ] && grep -q '"react"' package.json && ! grep -q '"next"' package.json
# Generic TypeScript (no react/next, has .ts files)
[ -f "package.json" ] && ! grep -q '"react"' package.json && ! grep -q '"next"' package.json
[ -f "tsconfig.json" ] || [ -f "bun.lockb" ] || [ -f "bunfig.toml" ]
# Laravel
[ -f "composer.json" ] && grep -q '"laravel' composer.json
# Swift
[ -f "Package.swift" ] || ls *.xcodeproj
# Java
[ -f "pom.xml" ] || [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]
# Go
[ -f "go.mod" ]
# Ruby
[ -f "Gemfile" ] && [ -f "Rakefile" ]
# Rust
[ -f "Cargo.toml" ]
# Python
[ -f "pyproject.toml" ] || [ -f "requirements.txt" ]
Priority order: Next.js > React > Generic TS > Laravel > Swift > Java > Go > Ruby > Rust > Python
Language Rules
Next.js / TypeScript
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | modules/[feature]/src/interfaces/ |
| Shared interfaces | modules/cores/interfaces/ |
| Forbidden | Interfaces in components/, app/ |
| SOLID skill | solid-nextjs |
Pattern detection:
^(export )?(interface|type) \w+
React / TypeScript
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | modules/[feature]/src/interfaces/ |
| Shared interfaces | modules/cores/interfaces/ |
| Forbidden | Interfaces in components/ files |
| SOLID skill | solid-react |
Pattern detection:
^(export )?(interface|type) \w+
Generic TypeScript / Bun / Node.js
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | modules/[feature]/src/interfaces/ |
| Shared interfaces | modules/cores/interfaces/ |
| Structure | Modular MANDATORY |
| Forbidden | Interfaces in service/lib files |
| SOLID skill | solid-generic |
Pattern detection:
^(export )?(interface|type) \w+
Laravel / PHP
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | FuseCore/[Module]/App/Contracts/ |
| Shared interfaces | FuseCore/Core/App/Contracts/ |
| Structure | FuseCore Modular MANDATORY |
| Forbidden | Interfaces outside Contracts/ |
| SOLID skill | solid-php |
Pattern detection:
^interface \w+
Swift
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | Features/[Feature]/Protocols/ |
| Shared interfaces | Core/Protocols/ |
| Structure | Features Modular MANDATORY |
| Forbidden | Protocols outside Protocols/ |
| SOLID skill | solid-swift |
Pattern detection:
^protocol \w+
Java
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | modules/[feature]/interfaces/ |
| Shared interfaces | modules/core/interfaces/ |
| Structure | Modular MANDATORY |
| Forbidden | Interfaces in impl files |
| SOLID skill | solid-java |
Pattern detection:
^(public )?(interface) \w+
Go
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | internal/modules/[feature]/ports/ |
| Shared interfaces | internal/core/ports/ |
| Structure | Modular MANDATORY |
| Forbidden | Interfaces in impl files |
| SOLID skill | solid-go |
Pattern detection:
^type \w+ interface \{
Ruby
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | app/modules/[feature]/contracts/ |
| Shared interfaces | app/modules/core/contracts/ |
| Structure | Modular MANDATORY |
| Forbidden | Contracts in model files |
| SOLID skill | solid-ruby |
Pattern detection:
^module \w+Contract
Rust
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | src/modules/[feature]/traits.rs |
| Shared interfaces | src/core/traits.rs |
| Structure | Modular MANDATORY |
| Forbidden | Traits in impl files |
| SOLID skill | solid-rust |
Pattern detection:
^pub trait \w+
Python
| Rule | Value |
|---|---|
| File limit | 100 lines |
| Interface location | src/interfaces/ |
| Forbidden | ABC outside interfaces/ |
Pattern detection:
class \w+\(.*ABC.*\)
Line Counting
Exclude from count:
- Blank lines
- Comments (
//,/* */,#,""") - Import statements (optional)
# TypeScript/Go/Rust/Swift
grep -v '^\s*$\|^\s*//\|^\s*/\*\|^\s*\*' file
# PHP
grep -v '^\s*$\|^\s*//\|^\s*#\|^\s*/\*\|^\s*\*' file
# Python
grep -v '^\s*$\|^\s*#\|^\s*"""' file
Validation Actions
| Severity | Action |
|---|---|
| Interface in wrong location | BLOCK (exit 2) |
| File over limit | WARNING (exit 0) |
| Missing documentation | WARNING |
Skill Mapping
| Project Type | SOLID Skill | Skill Path |
|---|---|---|
nextjs |
solid-nextjs | nextjs-expert/skills/solid-nextjs/ |
react |
solid-react | react-expert/skills/solid-react/ |
generic |
solid-generic | solid/skills/solid-generic/ |
laravel |
solid-php | laravel-expert/skills/solid-php/ |
swift |
solid-swift | swift-apple-expert/skills/solid-swift/ |
java |
solid-java | solid/skills/solid-java/ |
go |
solid-go | solid/skills/solid-go/ |
ruby |
solid-ruby | solid/skills/solid-ruby/ |
rust |
solid-rust | solid/skills/solid-rust/ |
python |
(no skill yet) | - |
Environment Variables
Set by detect-project.sh:
SOLID_PROJECT_TYPE=nextjs|react|generic|laravel|swift|java|go|ruby|rust|python|unknown
SOLID_FILE_LIMIT=100|150
SOLID_INTERFACE_DIR=path/to/interfaces
SOLID_STRUCTURE=modular
Weekly Installs
12
Repository
fusengine/agentsGitHub Stars
3
First Seen
Feb 28, 2026
Security Audits
Installed on
gemini-cli12
opencode12
codebuddy12
github-copilot12
codex12
kimi-cli12