Agent Skills by ALSEL
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 0品質スコア 50/100

pragmatic-programmer

「The Pragmatic Programmer」に基づくソフトウェアクラフトマンシップのメタ原則(DRY・直交性・トレーサーバレット・契約による設計)を適用します。「ベストプラクティス」「割れ窓」「技術的負債の予防」「コードオーナーシップ」といったキーワードが登場したとき、またはビルド vs バイの意思決定・見積もり手法の設計・可逆/不可逆なアーキテクチャ選択の評価時に活用してください。推定・ドメイン言語・可逆性も対象範囲に含み、コードレベルの品質は clean-code、リファクタリング手法は refactoring-patterns を参照。

description の原文を見る

Apply meta-principles of software craftsmanship: DRY, orthogonality, tracer bullets, and design by contract. Use when the user mentions "best practices", "pragmatic approach", "broken windows", "tracer bullet", "software craftsmanship", "technical debt prevention", "prototype vs tracer bullet", or "code ownership". Also trigger when evaluating build-vs-buy decisions, designing estimation approaches, or choosing between reversible and irreversible architectural decisions. Covers estimation, domain languages, and reversibility. For code-level quality, see clean-code. For refactoring techniques, see refactoring-patterns.

SKILL.md 本文

プラグマティックプログラマーフレームワーク

Hunt & Thomas の著作『The Pragmatic Programmer』(20周年記念版)に基づくシステムレベルのソフトウェア職人技へのアプローチ。システム設計、アーキテクチャレビュー、コード執筆、またはエンジニアリング文化のアドバイスを行う際に、これらの原則を適用してください。このフレームワークはメタレベルに対応しています。単にコードを書く方法ではなく、ソフトウェアについてどう考えるかです。

コアプリンシパル

あなたの職人技を大切にしてください。 ソフトウェア開発は継続的な学習、規律ある実践、そして個人的な責任を求める職人技です。プラグマティックプログラマーは目の前の問題を超えて考えます――彼らはあらゆる技術的決定の文脈、トレードオフ、長期的な影響を考慮します。

基礎: 優れたソフトウェアは優れた習慣から生まれます。プラグマティックプログラマーは幅広い知識ポートフォリオを維持し、明確にコミュニケーションを取り、重複を徹底的に避け、コンポーネントを直交したものに保ち、すべてのコード行を生きた資産として扱い、その価値を自分たちの場所で獲得する必要があります。目標は完璧さではなく――変更しやすく、理解しやすく、信頼できるシステムを構築することです。

スコアリング

目標: 10/10 ソフトウェアデザイン、アーキテクチャ、またはコードをレビューまたは作成する際、以下の原則への準拠に基づいて 0~10 で評価してください。10/10 はすべてのガイドラインとの完全な一致を意味し、低いスコアは対処すべきギャップを示しています。常に現在のスコアと 10/10 に到達するために必要な具体的な改善を提供してください。

プラグマティックプログラマーフレームワーク

長く愛用されるソフトウェアを構築するための7つのメタプリンシパル:

1. DRY (繰り返すな)

コアコンセプト: すべての知識は、システム内で単一の、曖昧でない、権威のある表現を持つ必要があります。DRY は知識についてのもので、コードについてではありません――重複したロジック、ビジネスルール、またはコンフィグは、重複した構文よりもはるかに危険です。

なぜ機能するのか: 知識が重複している場合、複数の場所で変更を加える必要があります。やがて1つが見落とされ、矛盾が生じます。DRY はバグの表面積を減らし、システムの変更を容易にします。

主要な洞察:

  • DRY は知識と意図に適用され、テキスト的類似性には適用されません――異なるビジネスルールに役立つ同一のコードブロック2つは、重複ではありません
  • 重複には4つのタイプがあります: 強制(環境が強制)、不本意(開発者が気付かない)、せっかち(抽象化に怠ける)、開発者間(複数の人が重複する)
  • コードを言い換えるコメントは DRY に違反します――コメントは ではなく なぜ を説明すべきです
  • データベーススキーマ、API 仕様、ドキュメントは、単一のソースから生成されない場合、すべて重複の原因です
  • DRY の反対は WET です: 「Write Everything Twice」または「We Enjoy Typing」

コード適用:

コンテキストパターン
設定値単一の真実の源DB 接続を1つの env ファイルで定義し、どこからでも参照
検証ルール共有スキーマクライアント及びサーバー検証に JSON Schema または Zod スキーマを使用
API コントラクト仕様から生成OpenAPI 仕様は型、ドキュメント、クライアントコードを生成
ビジネスロジックドメインモジュール税金計算を1つのモジュール内で定義し、コントローラー全体に分散させない
データベーススキーママイグレーション駆動スキーマをマイグレーションで定義し、ORM モデルを DB から生成

参照: references/dry-orthogonality.md

2. 直交性

コアコンセプト: 2つのコンポーネントは、1つの変更が他方に影響しない場合、直交しています。コンポーネントが自己完結し、独立し、単一の明確な目的を持つシステムを設計します。

なぜ機能するのか: 直交したシステムはテストしやすく、変更しやすく、副作用が少ないです。データベース層を変更しても、UI は壊れません。認証プロバイダーを変更しても、ビジネスロジックは気にしません。

主要な洞察:

  • 質問してください: 「特定の関数の背後にある要件を劇的に変更した場合、何個のモジュールに影響するか?」答えは1つであるべきです
  • 無関係なもの間の影響を排除します――ログの変更は請求を決して破るべきではありません
  • レイヤード アーキテクチャは直交性を促進します: プレゼンテーション、ドメインロジック、データアクセス
  • グローバルデータを避けます――すべてのグローバル状態のコンシューマーは、それに結合されています
  • フレームワーククラスから継承を強制するツールキットとライブラリは、直交性を減らします

コード適用:

コンテキストパターン
アーキテクチャレイヤード分離Controller -> Service -> Repository、各々置き換え可能
依存関係依存性注入SlackClient 具体クラスではなく、Notifier インターフェースを渡す
テスト隔離されたユニットテストデータベース、ネットワーク、またはファイルシステムなしにビジネスロジックをテスト
コンフィグ環境駆動フィーチャーフラグをコンフィグに置き、ビジネスロジック内の if ブランチではなく
デプロイメント独立したサービス支払いサービスを再デプロイしなくても、認証サービスをデプロイ

参照: references/dry-orthogonality.md

3. トレーサー弾とプロトタイプ

コアコンセプト: トレーサー弾は、すべてのシステムレイヤーを最小限の機能で接続するエンドツーエンド実装です。プロトタイプ(廃棄型)とは異なり、トレーサー弾コードは本番コード――薄いながらも実在するものです。

なぜ機能するのか: トレーサー弾は即座のフィードバックを提供します。すべての機能を埋める前に、エンドツーエンドでシステムがどのように見えるかを確認できます。ユーザーは実在するものを見ることができ、開発者は構築するためのフレームワークを持ち、統合の問題が早期に浮上します。

主要な洞察:

  • トレーサー弾: システムを通す薄いながらも完全なパス(UI -> API -> DB)――それを保持します
  • プロトタイプ: 単一の危険な側面の焦点を絞った探索――それを廃棄します
  • トレーサー弾は「暗い中での射撃」の際に機能します――要件が曖昧で、アーキテクチャが未証明
  • トレーサーが外れた場合、調整して再び射撃します――反復のコストは低いです
  • プロトタイプは廃棄として明確にラベル付けされるべきです――プロトタイプが本番コードになることは決してありません

コード適用:

コンテキストパターン
新規プロジェクト垂直スライス1つの機能をエンドツーエンドで構築: ボタン -> API -> DB -> レスポンス
不確実な技術スパイク プロトタイプWebSocket パフォーマンスが十分かどうかをテストしてから、コミット
フレームワーク評価スタック全体でのトレーサーログインフローをフルフレームワークで構築し、その後それを選択
マイクロサービスウォーキング スケルトンhello-world サービスをフル CI/CD パイプライン経由でデプロイ
データパイプラインエンドツーエンドフロー1つのレコードを取り込みから変換まで出力へ

参照: references/tracer-bullets.md

4. コントラクト設計と断定的プログラミング

コアコンセプト: 前提条件(実行前に真である必要がある)、事後条件(実行後に保証される)、クラス不変式(常に真である)を通じて、ソフトウェアモジュールの権利と責務を定義し、強制します。コントラクトが違反された場合、すぐに大きく失敗します。

なぜ機能するのか: コントラクトは仮定を明示的にします。データを静かに破損させたり、無効な状態で歩み続けたりする代わりに、システムは問題の時点で停止します――バグを可視化し、追跡可能にします。死んだプログラムは嘘をつきません。

主要な洞察:

  • 前提条件: 呼び出し側の責任――「正の整数のみを受け入れます」
  • 事後条件: ルーチンの保証――「ソート済みリストを返します」
  • 不変式: 常に真――「アカウント残高は決して負にならない」
  • 早期に停止: 死んだプログラムは、障害のあるプログラムよりもはるかに少ないダメージを与えます
  • 起こらないはずのことにはアサーションを使用し、起こる可能性のあることにはエラーハンドリングを使用します
  • 動的言語では、ランタイムチェックと保護句を通じてコントラクトを実装します

コード適用:

コンテキストパターン
関数エントリ前提条件ガード関数の開始時に assert age >= 0, "Age cannot be negative"
関数終了事後条件チェック返す前に返却されたリストがソート済みであることを検証
クラス状態不変式検証すべての状態ミューテーションの後に呼ばれる validate! メソッド
API 境界スキーマ検証処理する前にリクエストボディをスキーマに対して検証
データパイプラインステージアサーションETL 変換後のアサーション行数が期待値と一致

参照: references/contracts-assertions.md

5. 割れた窓理論

コアコンセプト: 1つの割れた窓――悪い設計のコード、悪い管理上の決定、「後で修正します」というハック――が腐食を開始させます。一旦システムがネグレクトの兆候を示すと、エントロピーは加速し、規律は崩壊します。

なぜ機能するのか: 心理学。コードがクリーンでよくメンテナンスされていると、開発者はそれをそのように保つための社会的プレッシャーを感じます。コードが既に乱雑になっている場合、さらに乱雑さを追加する閾値は0に低下します。品質は個々のヒロイックな努力ではなく、チームの習慣です。

主要な洞察:

  • 割れた窓(悪い設計、誤った決定、悪いコード)を修復されないままにしないでください
  • 今すぐ修正できない場合は、板を張ります: チケット付きで TODO を追加し、フィーチャーを無効にし、スタブで置き換えます
  • 変化の触媒になります: 将来の働く一瞥を人々に示します(石スープ)
  • 遅い劣化を監視します(ゆでカエル)――時間の経過とともに技術債メトリクスを監視します
  • 最初のハックが最も高価なのは、その後のすべてのハックへの許可を与えるからです

コード適用:

コンテキストパターン
レガシーコード窓を板で張るフィーチャーを追加する前に、悪いコードをクリーンなインターフェースでラップ
コードレビュー新しい債務への不寛容チケットなしで // TODO: fix later を追加する PR を拒否
技術債債務予算各スプリントの20%を割れた窓の修正に割り当てる
新しいチームメンバークリーンなオンボーディング パス最初のタスク: コードベースを学ぶために割れた窓を修正
監視エントロピー メトリクスリント違反、テストカバレッジ トレンドを時間の経過で追跡

参照: references/broken-windows.md

6. 可逆性と柔軟性

コアコンセプト: 最終決定はありません。データベース、フレームワーク、ベンダー、アーキテクチャ、およびデプロイメント対象について気を変えることを簡単にするシステムを構築します。変更のコストは変更の範囲に比例する必要があります。

なぜ機能するのか: 要件は変わります。ベンダーは買収されます。テクノロジーは支持を失います。アーキテクチャにこれらのいずれかについてハードコードされた仮定がある場合、すべての変更は書き直しになります。柔軟なアーキテクチャは決定を構造ではなくコンフィグとして扱います。

主要な洞察:

  • サードパーティの依存関係を独自のインターフェースの背後に抽象化します――ベンダー API が決してビジネスロジックに漏れないようにします
  • 「フォーク道テスト」を使用します: Postgres から DynamoDB に1週間で切り替えられますか? 合わない場合は、結合されています
  • メタデータ駆動システム(コンフィグファイル、フィーチャーフラグ)は、ハードコードされたロジックよりも柔軟です
  • YAGNI は時期尚早な抽象化にも適用されます――必要な具体的な証拠がない限り、柔軟性を構築しないでください
  • 可逆性は将来を予測することについてではなく、自分自身を隅に追い込まないことについてです

コード適用:

コンテキストパターン
データベースリポジトリパターンビジネスロジックは pg.query(...) ではなく repo.save(user) を呼び出す
外部 APIアダプター/ラッパーPaymentGateway インターフェースが Stripe をラップし、後で Braintree に切り替え
フィーチャーフラグランタイム トグル新しいチェックアウトフロー、フラグの背後、数秒でロールバック
アーキテクチャイベント駆動デカップリングサービスは直接 HTTP 呼び出しではなくイベント経由で通信
デプロイメントコンテナ抽象化Docker化されたアプリは AWS、GCP、またはベアメタルで変更なしで実行

参照: references/reversibility.md

7. 見積りと知識ポートフォリオ

コアコンセプト: 範囲、モデル構築、コンポーネントへの分解、範囲割り当てを理解することで、信頼性のある見積りを習得します。財務ポートフォリオのように学習を管理します: 定期的に投資し、多様化し、リバランスします。

なぜ機能するのか: 見積りは誠実に行われた場合、ステークホルダーとの信頼を構築します(「2週間正確」よりも「1~3週間」が優れている)。知識ポートフォリオは、テクノロジーが変わる際に関連性を保ちます――学習を停止するプログラマーは効果的であることを停止します。

主要な洞察:

  • 「この見積りは何のためか?」と聞いてください――文脈が精度を決定します(予算計画対スプリント計画)
  • PERT を使用: (楽観的 + 4倍最も可能性が高い + 悲観的) / 6
  • 見積りをコンポーネントに分解し、各々を見積ります; 合計は単一の推測より正確です
  • 見積りログを保持します: 見積りと実績を比較し、キャリブレーション
  • 知識ポートフォリオ ルール: 定期的に投資(毎週何かを学習)、多様化(スタックのみ学習しない)、リスク管理(安全で投機的な賭けを混ぜる)、安く買って高く売る(新興テクノロジーを早期に学習)

コード適用:

コンテキストパターン
スプリント計画範囲見積り単一の数字ではなく、信頼レベル付きの「3~5日」
新しいテクノロジー時間制限スパイク「2日間評価します; その後、適切に見積ることができます」
大規模プロジェクトボトムアップ分解< 1日のタスクに分割し、統合用バッファで合計
学習週次投資新しい言語、ツール、またはドメインに1時間/週
キャリア成長ポートフォリオ多様化深さ(専門知識)と幅(隣接スキル)のミックス

参照: references/estimation-portfolio.md

一般的なミステイク

ミステイクなぜ失敗するのか修正
異なる目的に役立つ類似コードを DRY する無関係な概念間の結合を作成; 1つの変更が他方を破る偶然のコード類似性ではなく、知識のみを DRY する
トレーサー弾をスキップしてレイヤーバイレイヤーで構築統合の問題が遅く浮上; エンドツーエンドフィードバックなし最初に1つの薄い垂直スライスを構築
「後でリファクタリングするから」と割れた窓を無視エントロピーが加速; 後は来ない; チームモラルが低下すぐに修正するか、追跡チケット付きで板を張る
単一ポイント の見積りをコミットメント偽の精度を作成; 見積が外れたときに信頼を削ぐ常に信頼レベル付き範囲を提供
すべてを最初から「柔軟」にする過度なエンジニアリング; YAGNI; 必要な証拠なし抽象化具体的な必要性の証拠がある場合に柔軟性を追加
「パフォーマンスのため」本番環境からアサーションを削除アサーションが捕捉するバグはデータを静かに破損重要なアサーションを保持; 削除する前にベンチマーク
グローバル状態を「便利なために」使用直交性を破壊; すべてのモジュールは結合依存性注入と明示的なパラメーターを使用

迅速な診断

質問いいえ の場合アクション
ビジネスロジックに触れずにデータベースを変更できますか?直交性違反リポジトリ/アダプターパターンを導入
エンドツーエンドスライスが機能していますか?トレーサー弾の欠落展開する前に1つの垂直スライスを構築
すべてのビジネスルールはちょうど1つの場所で定義されていますか?DRY 違反権威のあるソースを特定し、重複を削除
新しい開発者がこのコードベースを「クリーン」と呼ぶでしょうか?割れた窓が存在専用クリーンアップスプリントをスケジュール
見積りには範囲と信頼レベルが含まれていますか?見積り問題PERT または範囲ベースの見積りに切り替え
このデプロイメントを5分以内にロールバックできますか?可逆性ギャップフィーチャーフラグとブルーグリーンデプロイを追加
毎週何か新しいことを学んでいますか?知識ポートフォリオ停滞週次学習時間をスケジュールし、それを追跡

参照ファイル

  • references/dry-orthogonality.md -- DRY知識対コード重複、重複の4つのタイプ、設計とテストでの直交性
  • references/tracer-bullets.md -- トレーサー弾対プロトタイプ開発、ウォーキングスケルトン構築、トレーサーコードでの反復
  • references/contracts-assertions.md -- コントラクト設計、前提条件/事後条件/不変式、断定的プログラミングパターン
  • references/broken-windows.md -- ソフトウェア エントロピー、割れた窓理論、石スープ戦略、劣化との戦い
  • references/reversibility.md -- 柔軟なアーキテクチャ、デカップリング戦略、ベンダーロックインの回避、フォーク道決定
  • references/estimation-portfolio.md -- PERT見積り、分解テクニック、知識ポートフォリオ管理

さらに詳しく読む

著者について

Andrew Hunt はプログラマー、著者、出版社です。彼は Pragmatic Bookshelf を共同設立し、Agile Manifesto の17人の元の著者の1人でした。彼の仕事はソフトウェア開発の人間的側面――チームがどのように学び、コミュニケーションを取り、時間の経過とともに品質を保つかに焦点を当てています。

David Thomas はプログラマーおよび著者で、Pragmatic Bookshelf を共同設立しました。彼は「DRY」(Don't Repeat Yourself)および「Code Kata」という用語を作り出しました。日本外での Ruby 採用の先駆者で、「Programming Ruby」(Pickaxe book)を共著し、開発者の実用性を教条主義よりも数十年間提唱してきました。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
wondelai
リポジトリ
wondelai/skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/wondelai/skills / ライセンス: MIT

関連スキル

汎用デザイン・クリエイティブ⭐ リポ 1,739

nano-banana-2

inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」

by openakita
汎用デザイン・クリエイティブ⭐ リポ 815

octocode-slides

洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。

by bgauryy
汎用デザイン・クリエイティブ⭐ リポ 482

gpt-image2-ppt

OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。

by JuneYaooo
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

nano-banana

Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。

by majiayu000
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

oiloil-ui-ux-guide

モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。

by majiayu000
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

axiom-hig-ref

Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。

by majiayu000
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: wondelai · wondelai/skills · ライセンス: MIT