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