plugins/devkit/skills/pursuing-simplicity/SKILL.md
Discipline for recognizing and cutting self-induced complexity to keep software sustainable and effective. Covers the orient-step-learn loop and a rubric for judging which option is simpler (easier to understand, fewer parts, reflects the problem); technology minimalism (dependency decision chains, minimal-and-stable framework choice, feature-as-liability restraint, incremental delivery, conservative tech adoption); personal automation and environment mastery (automate-first, day-zero deploy, terminal/shell/editor fluency, reproducible machine provisioning); collaboration for simplicity (asynchronous decoupled work, lean meetings, skill spreading, dialectical reasoning, empathy, listening to code, analogies); and data-driven simplification with error-revealing code layout. Use when code or workflows feel more complicated than warranted, when weighing a new dependency/framework/feature, when setting up developer tooling, or when untangling logic.
npx skillsauth add sumik5/sumik-claude-plugin pursuing-simplicityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ソフトウェア開発は本来、複雑なものだ。そこに自分たちが無用な複雑さ(complication) をさらに積み上げているとしたら——それは取り除ける。このスキルは、自己誘発の複雑化を見つけて削る判断と習慣を鍛えることを目的とする。
| 種類 | 説明 | 対処 | |------|------|------| | complexity(本質的複雑さ) | 問題領域が本来持つ複雑さ。ルールがある | 設計で管理する | | complication(自己誘発の複雑化) | 判断の先送り・過剰な依存・不要な機能が生む複雑さ。ルールがない | 取り除くべき対象 |
シンプリシティは「単純すぎる設計」ではない。理解しやすく、変更しやすく、「しっくりくる」状態を意図的に選び取ることだ。
状況に応じて参照先を選ぶ。
| 状況 | 参照先 | |------|--------| | 「複雑さを感じた」を起点に何から手を付けるかわからない | CUTTING-COMPLEXITY.md | | 依存・フレームワーク・機能を追加すべきか迷っている | TECHNOLOGY-MINIMALISM.md | | 開発環境の自動化・ツール整備・マシンセットアップ | AUTOMATION-AND-ENVIRONMENT.md | | チーム連携・会議・対話・コミュニケーション改善 | COLLABORATION-AND-SOFT-SKILLS.md | | 反復コードをデータで表す・コードレイアウト改善 | DATA-DRIVEN-AND-CODE-LAYOUT.md |
複雑さに気づいてから行動するまでの基本的なサイクル。
Orient(気づく)
↓
複雑すぎると感じた箇所を特定する。
「どうすれば簡潔になるか」「簡潔になったとわかる基準は何か」を考える。
Step(小さく試す)
↓
仮説を検証するための最小の実験を実施する。
コストが低ければ低いほど、素早く判断できる。
Learn(学ぶ)
↓
実験結果を振り返り、次のステップに活かす。
一回で解決することはまれ——繰り返しがパターンを身につかせる。
詳細は CUTTING-COMPLEXITY.md を参照。
「S(候補 A)は C(候補 B)より簡潔か」を判断する3観点。
| 観点 | 問いかけ | |------|---------| | 理解しやすさ | S は C より早く把握できるか?他者への説明が短くなるか? | | 部品の少なさ | S のコンポーネント・依存・条件は C より少ないか? | | 問題の直接反映 | S は問題領域の言葉により忠実か?余分なノイズを排除しているか? |
絶対的な正解はない——文脈と状況に依存する。「しっくりくるか」という感覚も判断の一部として認める。
詳細は CUTTING-COMPLEXITY.md を参照。
| スキル | 扱う範囲 |
|--------|---------|
| writing-clean-code | SOLID・コードスメル・リファクタリング機構・フォーマット原則・境界管理 |
| practicing-software-engineering | チーム構造・プロジェクト基盤・キャリア・持続可能なパフォーマンス・AI活用ワークフロー |
| testing-code | TDD・テスト設計・カバレッジ戦略 |
| cloud:practicing-devops | CI/CD パイプライン構成・デプロイインフラ |
| pursuing-simplicity(本スキル) | 簡潔さの判断と習慣——複雑化の検出・技術選定の抑制・自動化・協働 |
1. 本当に必要か? ─ No → 追加しない
↓ Yes
2. 自分で書けるか? ─ Yes → 自作を検討
↓ No
3. 付随する大きな依存はないか?
↓
4. ローカルコピーや隔離(ラッパー)が必要か?
↓
5. バージョン固定・セキュリティ監査を計画しているか?
→ 詳細チェックリストは TECHNOLOGY-MINIMALISM.md
1. 複雑に見える箇所を1つ特定 (Orient)
2. 「これを変えたら何が改善するか」を1行で書く
3. 最小の変更・実験を1つ実施 (Step)
4. 改善したか確認、次の箇所を探す (Learn)
→ パターンと定着法は CUTTING-COMPLEXITY.md
tools
FastAPI (Python) web API development guide covering fundamentals (routing, path/query params, Pydantic models, request/response, error handling), data persistence (SQLAlchemy, SQLModel, async DB, MongoDB, CRUD, Alembic migrations), dependency injection (Depends, dependency_overrides, scopes/lifespan), auth & security (OAuth2, JWT, CORS), async & concurrency (async/await, Starlette, BackgroundTasks, WebSocket, SSE/streaming), testing (TestClient, pytest, httpx, mocking), production deployment & scaling (uvicorn/gunicorn, Docker, optimization), generative-AI services (model serving, streaming, concurrency), and microservice/GraphQL/OpenAPI patterns. MUST load when fastapi is in pyproject.toml/requirements.txt or .py files import fastapi. For Python language/tooling fundamentals (uv/ruff/mypy, packaging, non-FastAPI patterns), use lang:developing-python. For REST/HTTP-spec design, versioning, and API test strategy, use developing-web-apis. For Node.js/Fastify backend services, use building-nodejs-services.
development
studying(スタディング, member.studying.jp)のコースレッスン一覧URLから、配下の「スマート問題集」 「セレクト過去問集(学科試験対策・実技試験対策)」の全問題(問題文・選択肢・正解・解説)を科目単位で 取得し、1科目1JSONファイルに保存する。出力は creating-flashcards スキルへ渡して科目ごとに Anki フラッシュカード化できる。 Use when studying のコースレッスン一覧URL(https://member.studying.jp/course/id/<course_id>/ 形式) を渡され「問題を全部保存したい」「Anki カードにしたい」等と言われたとき。 補足トリガー: studying, スタディング, 資格試験, スマート問題集, セレクト過去問集, 問題集, JSON 保存, Anki 連携。 ブラウザ操作自体の汎用ガイドは web:automating-browser、E2E テストは web:testing-e2e-with-playwright を使う。本スキルは studying 専用の収集ワークフロー + bundled script(scripts/collect-studying.sh) +ログイン認証を提供する。
development
Whizlabs のコース practice test 一覧URLから、配下の全クイズ(Free Test・Practice Test 1〜N 等)を practice mode で巡回し、各問題(問題文・選択肢・正解・解説・参考資料)を取得して 1 クイズ 1 JSON ファイルに 保存する。出力は creating-flashcards スキルへ渡してクイズごとに Anki フラッシュカード化できる。 Use when Whizlabs のコースURL(/learn/course/<slug>/<course-id>/pt 形式)を渡され 「問題を全部保存したい」「Anki カードにしたい」等と言われたとき。 補足トリガー: whizlabs, ホイズラボ, 資格試験, 問題集, practice test, quiz 収集, JSON 保存, Anki 連携。 ブラウザ操作自体の汎用ガイドは web:automating-browser、E2E テストは web:testing-e2e-with-playwright を使う。 本スキルは Whizlabs 専用の収集ワークフロー + bundled script(scripts/collect-whizlabs.sh)+ ログイン認証(agent-browser Auth Vault)を提供する。
development
Guides production Flutter app development with Dart targeting iOS, Android, web, and desktop from a single codebase, including project setup, the widget system (Stateless/Stateful, Material and Cupertino), layout, theming and animation, state management (setState, Provider, Riverpod, BLoC/Cubit, Redux, GetX), navigation and routing (Navigator, go_router, auto_route), networking and backends (http, dio, REST, Firebase, GraphQL), local persistence, responsive multi-platform design, architecture patterns (Clean Architecture, BLoC, MVVM), the pub.dev package ecosystem, widget and integration testing, performance optimization, and build and store release. REQUIRED when creating, implementing, modifying, testing, or shipping a Flutter app, or when pubspec.yaml lists the flutter SDK. For the Dart language itself (types, null safety, OOP, async, collections), use developing-dart. For native iOS/iPadOS apps in Swift/SwiftUI, use developing-ios-apps. For Apple HIG UI/UX decisions, use applying-apple-hig.