关于 solid-detection
solid-detection 根据配置文件识别项目语言和框架,再匹配相应的 SOLID skill 并设置项目环境变量,适用于需要按语言检查接口位置和文件限制的开发流程。
主要功能
- 01按配置文件优先级识别项目类型
- 02将技术栈映射到对应 SOLID skill
- 03设置项目类型和结构变量
- 04阻止接口文件位置错误
- 05对文件超限和缺少文档发出警告
适用场景
- 01编码前选择对应技术栈规则
- 02检查接口文件位置
- 03应用项目文件限制
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fusengine/ claude-plugins --skill solid-detection安装后在 Claude Code 中输入/solid-detection确认已加载。
详细介绍
SOLID 检测会按照固定优先级,根据项目配置文件(package.json + next/@tanstack/react-start/astro/react、tsconfig.json/bun 文件、composer.json + laravel、Package.swift/*.xcodeproj、pom.xml/build.gradle、*.csproj/*.sln、go.mod、Gemfile+Rakefile、Cargo.toml、pyproject.toml/requirements.txt)识别项目的语言/框架,然后映射到匹配的 SOLID 技能,并通过 `detect-project.sh` 设置 `SOLID_PROJECT_TYPE`、`SOLID_FILE_LIMIT`、`SOLID_INTERFACE_DIR` 和 `SOLID_STRUCTURE` 环境变量。
在错误位置找到接口属于硬性阻止;超过文件大小限制或缺少文档仅会发出警告。完整的各语言接口位置、禁用区域和行数统计规则,请参阅 language-rules.md。
SOLID 检测技能
参考资料
- language-rules.md - 在以下情况下加载:需要确定特定语言(Next.js、React、Generic TS、Laravel、Swift、Java、Go、Ruby、Rust、Python)的确切接口目录、文件限制或模式检测正则表达式,或在排除注释/空行后统计行数
项目检测
根据配置文件检测项目类型:
# Next.js (priority over React)
[ -f "package.json" ] && grep -q '"next"' package.json
# TanStack Start (priority over React)
[ -f "package.json" ] && grep -q '"@tanstack/react-start"' package.json
# Astro (priority over React)
[ -f "package.json" ] && grep -q '"astro"' package.json
# React (no next / TanStack Start / astro 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.lock" ] || [ -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" ]
# C# / .NET
ls *.csproj *.sln *.slnx 2>/dev/null | grep -q .
# Go
[ -f "go.mod" ]
# Ruby
[ -f "Gemfile" ] && [ -f "Rakefile" ]
# Rust
[ -f "Cargo.toml" ]
# Python
[ -f "pyproject.toml" ] || [ -f "requirements.txt" ]
优先级顺序: Next.js > TanStack Start > Astro > React > Generic TS > Laravel > Swift > Java > C# > Go > Ruby > Rust > Python
完整的各语言规则表(接口位置、禁用区域、模式检测正则表达式)和行数统计规则,请参阅 language-rules.md。
验证操作
| 严重级别 | 操作 |
|---|---|
| 接口位置错误 | 阻止(退出码 2) |
| 文件超出限制 | 警告(退出码 0) |
| 缺少文档 | 警告 |
技能映射
| 项目类型 | SOLID 技能 | 技能路径 |
|---|---|---|
nextjs | solid-nextjs | nextjs-expert/skills/solid-nextjs/ |
tanstack-start | solid-tanstack-start | tanstack-start-expert/skills/solid-tanstack-start/ |
astro | solid-astro | astro-expert/skills/solid-astro/ |
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/ |
csharp | solid-csharp | solid/skills/solid-csharp/ |
go | solid-go | solid/skills/solid-go/ |
ruby | solid-ruby | solid/skills/solid-ruby/ |
rust | solid-rust | solid/skills/solid-rust/ |
python | solid-python | solid/skills/solid-python/ |
每个 solid-<stack> 技能都定义了该技术栈自己的共享位置(DRY“检查共享位置”步骤)——编写新代码前请先加载对应技能;切勿使用其他技术栈的目录。
环境变量
由 detect-project.sh 设置:
SOLID_PROJECT_TYPE=nextjs|tanstack-start|astro|react|generic|laravel|swift|java|csharp|go|ruby|rust|python|unknown
SOLID_FILE_LIMIT=100|150
SOLID_INTERFACE_DIR=path/to/interfaces
SOLID_STRUCTURE=modular
评论
支持 Markdown