mcpField
S
solid-detection

solid-detection

github.com/fusengine开发3440 次安装2 周前更新
代码仓库

关于 solid-detection

solid-detection 根据配置文件识别项目语言和框架,再匹配相应的 SOLID skill 并设置项目环境变量,适用于需要按语言检查接口位置和文件限制的开发流程。

主要功能

  1. 01按配置文件优先级识别项目类型
  2. 02将技术栈映射到对应 SOLID skill
  3. 03设置项目类型和结构变量
  4. 04阻止接口文件位置错误
  5. 05对文件超限和缺少文档发出警告

适用场景

  1. 01编码前选择对应技术栈规则
  2. 02检查接口文件位置
  3. 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 技能技能路径
nextjssolid-nextjsnextjs-expert/skills/solid-nextjs/
tanstack-startsolid-tanstack-starttanstack-start-expert/skills/solid-tanstack-start/
astrosolid-astroastro-expert/skills/solid-astro/
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/
csharpsolid-csharpsolid/skills/solid-csharp/
gosolid-gosolid/skills/solid-go/
rubysolid-rubysolid/skills/solid-ruby/
rustsolid-rustsolid/skills/solid-rust/
pythonsolid-pythonsolid/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