modules/npm/packages/ に新しい npm/pnpm パッケージを追加するスキル
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
ドメインモデル、可視性、操作可能性、不変条件、層境界、API 設計に関わる実装時に使う。不正な状態や誤った呼び出し方を、型、関数の境界、ドメイン語彙で表し、正しい使い方が自然になる設計へ寄せるためのスキル。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
正しい使い方が自然になり、誤った使い方が書きにくい設計を優先する。
呼び出し側の注意力、コメント、ドキュメント、テストだけに依存しない。暗黙の順序、事前チェック、検証済みであることは、可能な限り型、関数、戻り値、境界で表現する。
型と境界の齟齬は、実装後に直すほど高くつく。型・境界・責務を追加・削除・変更する前に確認する。
集約は、意味のあるデータのまとまりであり、強整合性が要求される単位である。
概念に役割(判定、検証、変換、状態遷移の起点など)を担わせる前に、その概念が役割の遂行に必要な情報を自分の境界内で持てるか確認する。
持てない場合、その場で代替案を出し始めず、選択肢を並べて比較する: 必要な情報を持つ別概念を立てる / 境界を引き直す / 役割を担う仕組みの側を変える / 仕様上の制約として記録して許容する。
同じ名前は同じ意味を保証しない。操作や型を「何が、何に対して、何を起こすか」の自然言語で言い直し、同名同士で意味が一致するか確認する。
型を追加・削除・改名する前に、その型の役割を 1 つ選ぶ: 永続化される対象 / 操作の前提を表す値 / 判定のためだけの一時的な入力 / 処理途中の作業データ / 層境界の受け渡し用。
複数に当てはまる、またはどれとも言えないなら、概念が混ざっている。判定のためだけの一時的な値を domain / repository 境界に出す場合は、設計として妥当か疑う。
避けるもの:
bool や primitive の組み合わせから意味を推測させる API考えること:
ドメイン上ありえない状態は、可能な限り型の上で作れないようにする。
String / Vec / primitive 型をそのまま使う前に、ドメイン制約を持つ型にできないか考える判断基準:
型をどこに定義するかは、型の種類ではなく、ドメイン上の所有者で決める。
値オブジェクトや ID 型は、それを構成要素として持つ集約と同じモジュールに置く。UserId は User 集約の一部であり、OrderId は Order 集約の一部である。「identifier である」という形の類似は、まとめて置く理由にならない。
避けるもの:
identifiers のような 1 つのファイルへまとめて定義するtypes / values / newtypes など、型の種類だけを共通点にしたモジュール考えること:
設計判断や条件分岐を置く前に、それをドメインの言葉で説明できるか確認する。
技術的な都合の言葉だけで説明している場合、ドメイン上の概念やルールを見落としている可能性がある。status、flag、type、mode などの汎用的な名前に寄せる前に、その区別がドメイン上は何を意味するのかを考える。
考えること:
可視性や操作可能性は、最初から application 層の手続きとして扱うものとは限らない。
「誰が見えてよいか」「誰が操作してよいか」「どの状態なら操作できるか」は、単なる外側の制御ではなく、ドメイン仕様であることが多い。handler や usecase に条件分岐を書く前に、それがドメインの言葉で説明できるルールかを確認する。
避けるもの:
考えること:
ドメイン上の操作は、できるだけドメインの言葉で表現する。
望ましい例:
post_messagesubmit_answerpublisharchiveinvite_membermark_as_read避けたい例:
update_xxx_fieldset_statusmodify_recordapply_flag外側の usecase に手続きが散らばっている場合、その操作を集約や domain service のメソッドとして表現できないか考える。
ただし、巨大な集約を無理にすべてロードしてまで、自然なメソッドの形にしない。整合性境界と性能上の境界は分けて考える。
境界を越える型を混ぜない。
判断基準:
実装後、差分に対して行う。差分と要求だけを渡された第三者でも同じ結果になるように、対象を列挙してから、対象ごとの問いに答える形で進める。誰がこのレビューを行うかは、このスキルでは決めない。実装の進め方を管理する側に従う。
手順:
型ごとの問い:
public 関数・メソッドごとの問い:
set_ / update_ / modify_ 系の名前なら、ドメイン上は何が起きているのかを言い直す層境界をまたぐ箇所ごとの問い:
集約境界を追加・変更した場合の問い:
機械的に確認できる項目(対象の列挙とあわせて確認する):
identifiers / types / values のような、型の種類でまとめたファイルを新設していないかString / bool / primitive の引数・戻り値が増えていないかstatus / flag / type / mode のような汎用名のフィールドや分岐が増えていないか。増えているなら、ドメイン上の何の区別かを言い直す아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
modules/npm/packages/ に新しい npm/pnpm パッケージを追加するスキル
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
install/ 配下に新しいセットアップ用シェルスクリプトを追加するスキル
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
GitHub issue を新規作成・下書きするとき、または既存 issue の本文を書き直すときに必ず使うスキル。「issue を作って」「issue 化して」「これを issue にまとめて」のような依頼で発火し、`gh issue create` を直接呼ぶ前に必ず参照する。人間が合意した内容だけを、意味を足さずに issue へ残すための基準を定める。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
GitHub に Pull Request を作成するスキル。ユーザーが「PRを作って」「プルリクエストを出して」「PR作成して」と言ったとき、またはコミット済みの変更をレビューに出したいときに使用する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
コミットやPR作成の前に、作業ブランチが適切かどうかを確認・切り替えるスキル。git-commit や create-pr からサブルーチンとして呼び出される。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
コードを実装・修正・リファクタリングするすべてのタスクで使うスキル。純粋関数を中心に設計し、副作用(DB、HTTP、ファイル、時刻、乱数、ログなど)を境界へ寄せ、データ変換、エラー表現、コレクション操作、可変状態の扱いを既存コードに合う形で整理する。ユーザーが明示的に指示しなくても、言語を問わず、コードを書き始める前に発火する。設定値やドキュメントだけの変更では不要。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.