Skip to content
Skills Library
Programming · Writing

basic-design

/basic-design

spec.md の REQ-# を入力に、機能一覧・モジュール構成・インターフェース・データフローを持つ docs/dev/<対象>/basic-design.md を作成・改訂するスキル。/basic-design <対象名> で明示的に呼び出されたときのみ使用する。

Repository
skills ↗
Licence
MIT
Last repository change
23.10.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
2
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 23.10.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

spec.md の REQ-# を入力に、機能一覧・モジュール構成・インターフェース・データフローを持つ docs/dev/<対象>/basic-design.md を作成・改訂するスキル。/basic-design <対象名> で明示的に呼び出されたときのみ使用する。

Arguments

/basic-design [対象名]
Original author description

spec.md の REQ-# を入力に、機能一覧・モジュール構成・インターフェース・データフローを持つ docs/dev/<対象>/basic-design.md を作成・改訂するスキル。/basic-design <対象名> で明示的に呼び出されたときのみ使用する。

How it works

  1. このスキルがやらないこと
  2. このスキルが従う原則
  3. 機能一覧の REQ- 契約(下流が依存する形式)
  4. 手順
  5. セルフ機械検査
  6. 終了条件
  7. 用語
Original SKILL.md headings · 208 lines, 489 words
SKILL.md preview
---
name: basic-design
description: spec.md の REQ-# を入力に、機能一覧・モジュール構成・インターフェース・データフローを持つ docs/dev/<対象>/basic-design.md を作成・改訂するスキル。/basic-design <対象名> で明示的に呼び出されたときのみ使用する。
license: MIT
disable-model-invocation: true
user-invocable: true
argument-hint: "[対象名]"
---

# basic-design: 基本設計書の作成・改訂

feature-spec と対をなす **基本設計書 1 本** を作る単機能スキル。成果物は
`docs/dev/<対象>/basic-design.md`。仕様が「何を満たすか(`REQ-#`)」を定義するのに対し、
基本設計は **「どう実現するか」** を定義し、各機能を `REQ-#` へ紐づけて
**要求に紐づかない機能 = スコープ外混入** を機械検出可能にする。

## このスキルがやらないこと

- **実装しない**。コードの作成・修正は範囲外。
- **仕様を書かない・改訂しない**。要求の追加・変更が必要になったら `/feature-spec <対象>`
  の改訂モードへ回す(設計側で要求を勝手に足さない。それがスコープドリフトの発生源)。
- **詳細設計に踏み込みすぎない**。クラス単位の内部実装・アルゴリズムの逐次手順は実装工程の
  領分。基本設計は **境界(モジュール・インターフェース・データの流れ)** までを確定させる。
- **テスト成果物を作らない・直さない**。`docs/test/<対象>/` は testing スキル群の担当。

## このスキルが従う原則

### 1. 単体動作(graceful degradation)

- 成果物の既定パスは **`docs/dev/<対象>/basic-design.md`**。
- **プロジェクト側(`CLAUDE.md` / `AGENTS.md` 等)に成果物の配置規約があればそちらを優先する**。
- 主入力: **`docs/dev/<対象>/spec.md`**(`REQ-#` を参照して機能一覧を導出する)。
- 任意入力(あれば整合を取るが、無くても成立する):
  - `docs/test/<対象>/test-analysis.md`(テスト条件 `TC-#`。観測点・境界の洗い出しに使う)
  - `docs/test/<対象>/test-case.md`(テストケース `CASE-#`。設計が想定する入出力と突合する)
  - `docs/dev/definition-of-done.md`(完成の定義)
  - 任意のレビュードキュメント・ユーザーの直接指示
- **`spec.md` が無くても作れる**。ユーザーの直接指示・任意のレビュードキュメントを入力に
  設計書を書いてよい。ただしその場合、機能一覧の「対応要求」列が `-` になり、
  セルフ機械検査が「要求に紐づかない機能」として検出する。
  **先に `/feature-spec <対象>` を実行して仕様を確定させることを推奨する** 旨を利用者へ伝え、
  それでも進めるなら検査 NG が出ることを了解のうえで進める。

### 2. 調査優先 + 決定のみ質問

- **事実はリポジトリ調査で埋める**。既存のモジュール構成・レイヤ分け・命名規約・
  依存の向き・公開契約は、利用者に訊く前に自分で調べる。既存構成に馴染む設計を出す。
- **利用者にしか決められない判断だけ** を `AskUserQuestion`(推奨案を先頭)で確認する。
  本スキルでは **設計方式の選択・既存構成を変えるか否か・分割の粒度・改訂提案の採否** が
  これに当たる。トレードオフのある選択は選択肢と代償を添えて訊く。
- 流れは **調査 → ドラフト提示 → 承認 → 規約パスへ書き込み**。承認前に確定ファイルを書かない。

### 3. 記述品質

- 曖昧語(「適宜」「など」「柔軟に」「必要に応じて」)を設計文から排する。
- **略号・コードネームを定義なしで使わない**。初出で正式名称・意味を併記する。
- インターフェースは **呼び出し側が実装なしで使える粒度** で書く(名前・入力・出力・
  エラー時の振る舞い)。「よしなに返す」で終わらせない。

### 4. Progressive disclosure

- 本文は簡潔に保ち、雛形は `references/` に置く。
- テンプレ: [`references/template.md`](references/template.md)(`basic-design.md` の雛形)。

## 機能一覧の REQ-# 契約(下流が依存する形式)

- 機能一覧は **`| 機能 | 対応要求 | 概要 |` のテーブル** で書く。
- **対応要求列に `REQ-#` を必ず書く**。1 機能が複数要求にまたがるなら `REQ-01/03` と併記する。
- 実在しない `REQ-#` を書かない(`spec.md` に無い ID は機械検査で検出される)。
- **要求に紐づかない機能を足さない**。設計中に「これも要るのでは」と気づいたら、
  勝手に足さず **`/feature-spec` の改訂モードで要求として立てる** ことを提案する。
- `test-case.md` があるときは `CASE-#` との対応が取れるかを確認する(機械検査も突合する)。

## 手順

引数は `<対象名>`。省略されたら `docs/dev/` 配下の既存ディレクトリを一覧して選択を求める。

`docs/dev/<対象>/basic-design.md` の存在で **作成モード**(無い)と **改訂モード**(ある)に
分岐する。

### 作成モード

#### 手順 1: 入力の確認

- `docs/dev/<対象>/spec.md` を読む。無ければ原則 1 に従い、`/feature-spec` の先行実行を
  推奨したうえで、進めるかを利用者に確認する。
- 任意入力(`test-analysis.md` / `test-case.md` / `definition-of-done.md`)の有無を確認し、
  **あるものだけを読む**。何を読んで何が無かったかを利用者へ 1 行で報告する。

#### 手順 2: 既存構成の調査

リポジトリを調査して、設計の前提になる事実を集める:

- 既存のモジュール構成・レイヤ分け・ディレクトリ規約
- 依存の向き(どの層がどの層を呼んでよいか)と、既存の公開契約
- 新機能が差し込まれる接続点(拡張ポイント・既存のインターフェース)
- 既存の設定・データ書式(新しい書式を足すべきか、既存に乗るべきか)

#### 手順 3: 機能一覧の導出

`spec.md` の `REQ-#` を 1 件ずつ辿り、実現に必要な機能へ分解してテーブルにする。

- 1 要求が複数機能に割れることも、複数要求が 1 機能に集約されることもある。
  どちらでもよいが、**対応要求列が空の行を作らない**。
- 全 `REQ-#` が少なくとも 1 つの機能から参照されているかを確認する(要求の取りこぼし検出)。

#### 手順 4: 設計の作成

[`references/template.md`](references/template.md) の構成でドラフトを作り、承認後に
`docs/dev/<対象>/basic-design.md` へ書き込む。必須セクションは
**機能一覧 / モジュール構成 / インターフェース / データフロー** の 4 つ。

- モジュール構成: 新設・変更するモジュールと責務、依存の向き。既存構成との関係を明示する。
- インターフェース: 公開する関数・API・CLI 引数・ファイル書式・イベントの契約
  (名前 / 入力 / 出力 / エラー時の振る舞い)。
- データフロー: 入力がどこから来てどう変換され、どこへ出るか。状態を持つなら
  どこが持つか。異常系の流れも書く。

#### 手順 5: セルフ機械検査

後述の「セルフ機械検査」を実行し、NG があればその場で直してから完了宣言する。

### 改訂モード

既存の `docs/dev/<対象>/basic-design.md` を検出したら改訂モードに入る。

#### 手順 1: 未反映の改善提案を収集

以下の入力源を横断して、**まだ設計へ反映されていない** 指摘・提案を集める。
入力源は疎結合で、どれか 1 つでもあれば成立する:

- `docs/test/<対象>/` 配下のテスト成果物の「改善提案」セクション
  (`test-design.md` / `test-analysis.md` 等。設計の観測可能性・テスト容易性の指摘が集まる)
- `docs/test/<対象>/test-review-*.md` の「未解消の指摘」
- `spec.md` の改訂で増えた `REQ-#`(機能一覧に未反映のものが無いか突合する)
- ユーザーの直接指示・任意のレビュードキュメント

#### 手順 2: 取捨選択

収集した提案を一覧で提示し、**`AskUserQuestion`(推奨案を先頭)で採否を確認する**。
各提案には「反映すると設計のどこが変わるか」(機能追加 / インターフェース変更 /
モジュール移動)を添える。**インターフェースの破壊的変更** はその旨を明示する。

#### 手順 3: 反映

採用された提案だけを `basic-design.md` へ反映する。

- 機能を足すときは **必ず対応する `REQ-#` を確認する**。対応要求が無い機能は反映せず、
  `/feature-spec <対象>` の改訂モードで要求を立てることを提案する。
- `spec.md` から要求が消えている場合、それを参照する機能行は孤児になる。
  機能ごと落とすか、要求を復活させるかを利用者に確認する。
- テスト成果物側の改善提案の **削除はしない**(testing スキルの責務)。

#### 手順 4: セルフ機械検査

作成モードと同じ(下記)。

## セルフ機械検査

終了前に、test-review の決定論スクリプトを `design-doc` モードで自分に対して実行する。

```sh
<review-check.sh のパス> design-doc docs/dev/<対象> [docs/test/<対象>]
```

- 第 2 引数は開発ドキュメントのディレクトリ(`docs/dev/<対象>`)。
- 第 3 引数のテストドキュメントディレクトリは省略可(省略時は `docs/dev/<対象>` から
  `docs/test/<対象>` を自動導出する)。
- 検査内容: 必須セクションの存在 / 機能一覧の各項の `REQ-#` 参照必須と実在 /
  `test-case.md` があれば `CASE-#` との対応突合。

### スクリプトの探索

次の順で探し、最初に見つかったものを使う:

1. 作業リポジトリ内の `skills/testing/test-review/scripts/review-check.sh`
2. install 済み testing-skills プラグインの同一パス
   (`~/.claude/plugins/` 配下等。プラグインの配置は環境で変わるため実在確認をしてから使う)

**どちらにも無ければ検査をスキップし、その旨を利用者へ明示する**(例:
「review-check.sh が見つからないためセルフ機械検査をスキップした。testing-skills を
install するか、`/test-review <対象> design-doc` で別途ゲートを通してほしい」)。
スクリプトの不在を理由に設計作成を失敗させない(原則 1: graceful degradation)。

### NG が出たとき

NG は形式契約の違反であり事実なので、**利用者判定を待たずにその場で直す**。
ただし「対応要求が `-` の機能がある」NG は、要求側を足さないと直せない。この場合は
自分で要求を捏造せず、**`/feature-spec <対象>` の実行を提案** して NG が残る旨を明示する。
SKIP(`test-case.md` が無い等)は問題ではない。

## 終了条件

以下を全て満たしたら **「<対象> の基本設計は完了」と明言** して閉じる。満たしていない項目が
あれば、何が残っているかを列挙して先へ進めない。

1. 入力の有無を確認・報告済み(`spec.md` の有無、任意入力で読んだもの)。
2. `docs/dev/<対象>/basic-design.md` が規約パスへ書き込み済みで、必須 4 セクションを持つ。
3. 機能一覧の全行に対応要求(`REQ-#`)が入っている、または `-` が残る理由を利用者へ明示済み。
4. セルフ機械検査が NG ゼロ、または残る NG の理由・スクリプト不在によるスキップを
   利用者へ明示済み。

完了後の次の一手として、以下を **提案するに留める**(本スキルは実行しない):

- 正式ゲート: `/test-review <対象> design-doc`
- テスト設計: `/test-design <対象>`
- 実装フェーズ: 基本設計と `test-case.md` から実装計画を組み立てる

## 用語

- 基本設計(basic design): 要求を実現する構造(モジュール・インターフェース・データの流れ)を
  確定させる工程。内部実装の詳細には踏み込まない。
- インターフェース(interface): モジュール間の公開契約。名前・入力・出力・エラー時の振る舞い。
- スコープ外混入: 要求に紐づかない機能が設計に紛れ込む状態。機能一覧の `REQ-#` 参照必須で
  機械検出する。
Files in this package (2)
  • SKILL.md 13 KB
  • references/template.md 3 KB

Versions

The database has no other skills named basic-design.

Database snapshot: 13.11.2026 · package version 3fc40a8dea67 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100feature-spec
    既存プロダクトへの機能追加の仕様を対話で固め、既存コード・既存仕様との整合を調査して REQ-# 契約付きの docs/dev/<対象>/spec.md を作成・改訂するスキル。/feature-spec <対象名> で明示的に呼び出されたときのみ使用する。
  • 100code-review
    Use when reviewing Basic Machines code for house style, architecture risk, pre-merge hardening, or whether a change fits basic-memory/basic-memory-cloud conventions.
  • 100test-review
    ISTQB/JSTQB のテストプロセス各工程の出口ゲートとして、工程成果物(test-plan.md / test-analysis.md / test-design.md / test-case.md / テスト実装 / test-execution-log.md / test-monitoring.md / test-summary-report.md)をレビューするスキル。決定論スクリプトの機械検査(トレーサビリティ ID 突合・テンプレ準拠)と test-reviewer…
  • 100tech-spec
    Tech spec generation and review. Use when: designing features, writing specs, spec review. Not for: requirements analysis (use req-analyze), implementation (use feature-dev), architecture advice (use codex-architect). Output: numbered tech spec document.
  • 100architecture
    Architecture design and documentation. Produces 3-architecture.md with component diagrams, data flow, integration points, and architecture decisions. Reads existing tech-spec as input. Use when: designing system architecture, documenting component interactions, creating…
  • 100sync
    Detect Spec-to-Code drift by scanning REQ, DESIGN and TASK specs for references to code that no longer exists, then report it for triage. Use when you say `detect spec drift`, `sync the specs`, or `did my refactor break a spec`, and run it after a hand-edit that moved or deleted…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.