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 Detection は、設定ファイル(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` を設定します。

インターフェースが誤った場所にある場合は、重大な BLOCK となります。ファイルサイズの上限超過やドキュメントの欠落は WARNING のみです。言語ごとのインターフェース配置、禁止ゾーン、行数のカウント方法の詳細は language-rules.md を参照してください。

SOLID Detection スキル

参照資料

  • 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 を参照してください。

検証アクション

重大度アクション
インターフェースの配置が誤っているBLOCK(終了コード 2)
ファイルが上限を超えているWARNING(終了コード 0)
ドキュメントがないWARNING

スキルのマッピング

プロジェクトタイプ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

コメント