solid-detection

SkillFiles & storage

Use when determining which language-specific SOLID skill to load, detecting project type from config files, or resolving interface directory conventions.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the solid-detection skill

What this skill tells your AI

The instructions your AI receives, as published by fusengine/agents in plugins/solid/skills/solid-detection/SKILL.md and read by ahel’s review.

An interface found in the wrong location is a hard BLOCK; exceeding the file-size limit or missing documentation is a WARNING only. See language-rules.md for the full per-language interface-location, forbidden-zone, and line-counting rules.

SOLID Detection Skill

References

  • language-rules.md - Load when: resolving the exact interface directory, file-limit, or pattern-detection regex for a specific language (Next.js, React, Generic TS, Laravel, Swift, Java, Go, Ruby, Rust, Python), or counting lines while excluding comments/blanks

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

For the full per-language rule tables (interface location, forbidden zones, pattern-detection regex) and line-counting rules, see language-rules.md.

Validation Actions

SeverityAction
Interface in wrong locationBLOCK (exit 2)
File over limitWARNING (exit 0)
Missing documentationWARNING

Skill Mapping

Project TypeSOLID SkillSkill Path
nextjssolid-nextjsnextjs-expert/skills/solid-nextjs/
reactsolid-reactreact-expert/skills/solid-react/
genericsolid-genericsolid/skills/solid-generic/
laravelsolid-phplaravel-expert/skills/solid-php/
swiftsolid-swiftswift-apple-expert/skills/solid-swift/
javasolid-javasolid/skills/solid-java/
gosolid-gosolid/skills/solid-go/
rubysolid-rubysolid/skills/solid-ruby/
rustsolid-rustsolid/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

Signals

GitHub stars
25
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
solid-detection
Source
github.com/fusengine/agents