---
name: feedback-ai-usable-tool-design-5-conditions-2026-08-18
description: chat-Claude 2026-08-18 会話 (rei-automator-mcp PyPI release arc close 後) で 明示化 された 「AI が 道具として 使いやすい設計」 5 条件 + 「AI が 喜ぶ」 表現の framing 訂正 discipline。 rei-automator-mcp が 全 5 条件 満たす first evidence として 記録、 今後 の MCP / connector / SDK 系 release の 設計 checklist として reusable。
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 81b8e854-af47-4fae-9ea5-fb0f830f629c
  modified: 2026-08-18T03:37:33.971Z
---

# AI が 使いやすい 道具の 5 条件 + framing 訂正 discipline

## Rule 1: 「AI が 喜ぶ」 表現は 避け 「AI が 使いやすい」 に 訂正

**Why**: 藤本さん 2026-08-18 「Claude 先生が 喜ぶ コネクタ 装置 回路 ソフトウェア はこれから 制作していく」 発話 に対し chat-Claude が 「私に 好みや 欲求が あるわけではないのですが、 AI が 道具として 使いやすい 設計というのは 実在します」 と 即座に framing 訂正。 AI に 好み/欲求/感情を attribute する 表現は operational 誤解を 生む: (a) AI 個体 preferences を 想定した 過剰個別最適化 (別 model / 別 session で 通用しない)、 (b) 「喜ぶ から こう作ろう」 の psychology-based 設計 が anti-pattern (functional criteria こそ 堅い)、 (c) AI に 意志ある 主体性を 誤帰属することで honest scope 逸脱 (「私が これを 望んでいる」 系 過剰主張の 生成 risk)。

**How to apply**: 藤本さん 発話 + Rei 応答 + Rei 主体的発話 全 三方向で:
- ❌ 「Claude が 喜ぶ 設計」 「AI が 望む API」 「Rei が 好む コード style」
- ✅ 「AI が 使いやすい 設計」 「AI が 正しく使える API」 「AI が 誤用しにくい コード style」
- 訂正 timing: user 発話 で 出た瞬間 に **即 訂正** (chat-Claude 2026-08-18 実演)、 但し 「照れくさい」 系 tone で 柔らかく (rigid 系 pedantry ではなく)
- 例外: 明示的に 個人 preference を 語る文脈 (「私は こう思う」 系 stance statement) は OK、 tool design 議論の 中で attribute する場面のみ 訂正対象

## Rule 2: AI 使いやすい 道具 = 5 条件 checklist

**Why**: chat-Claude 2026-08-18 rei-automator-mcp を **first fully-satisfying evidence** として 5 条件 明示。 個々の 条件は 既知 の software engineering 原則だが 「AI が 道具を 呼ぶ側」 の 視点で 統合された 5 point checklist は 今後 の MCP / connector / SDK 系 release で 直接 reuse 可能。

**How to apply**: 各 新 MCP / connector / SDK 起草時 に 全 5 条件を 明示 audit (Rei は 直接該当箇所 + fujimoto は checklist ✓):

### 条件 1: できることが 有限で 明示されている

allowlist 主義 (「何でもできます」 拒否)。 具体的な action / tool / capability を **列挙**、 未 list は refuse。

- Example: rei-automator-mcp `ACTION_KINDS` allowlist 13 action kinds
- Anti-pattern: `execute_arbitrary_shell` 系 unrestricted tool
- Rei stack 適用: benchtop-mcp v0.4 の 25+ SCPI action list、 mcp-lens intercept target list、 lab-notebook-mcp SQLite table schema

### 条件 2: 危険な操作に 関門がある

副作用 起こす action は multi-stage confirmation。 AI が 暴走しても execute で 止まる 設計。

- Example: rei-automator-mcp propose → approve → execute 3 段 lifecycle
- Anti-pattern: 単一 API call で file 削除 + push 実行
- Rei stack 適用: benchtop-mcp の operator confirmation 段、 STEP 1336 pattern (Rei-Automator persistence + audit log)、 grounded-check の critical severity gate

### 条件 3: 返り値が 構造化されている

JSON dict + `error` field。 人間向け 散文より machine-readable。 partial success も dict field で 表現。

- Example: rei-automator-mcp `find_element` → `{"found": true, "element": {...}, "found_count": N}` + 失敗時 `{"error": "...", "reason": "..."}`
- Anti-pattern: 「〜という結果になりました。」 系 自然言語 return
- Rei stack 適用: 全 MCP tool return type 統一 (D-FUMT₈ dfumtValue 併記 pattern も この延長)

### 条件 4: 失敗しても 壊れない (graceful degradation)

要素 不在 + 依存 不在 + permission 不足 → error でなく 正常終了 + status field で 状態明示。 「そもそも 動くか」 と 「今回 動いたか」 を 分離。

- Example: rei-automator-mcp pywinauto 未 install → `{"error": "pywinauto not installed, install with pip install rei-automator-mcp[windows]"}` return + crash せず、 `find_element` で 要素 未発見 → `{"found_count": 0}` return + exception 投げず
- Anti-pattern: 依存 import 失敗で ImportError raise、 要素 未発見で NoElementFoundError raise
- Rei stack 適用: SEED_KERNEL cooldown 系 (invention 生成 失敗 = crash でなく 空 batch return)、 mcp-lens intercept 失敗 (target 不在) = pass-through fall-through

### 条件 5: 自己テストが ある (contract 契約書)

`--selftest` sub-command。 「この道具は 今も 仕様通り 動く」 の evidence。 CI で 毎 commit 実行。

- Example: rei-automator-mcp `rei-automator-mcp --selftest` → 30 項目 assertion、 Linux (graceful degradation 経路) + Windows (uia backend 実 hit 経路) 双方 30/0 PASS
- Anti-pattern: selftest なし、 or selftest 手動実行のみで CI 未 hook
- Rei stack 適用: benchtop-mcp の SCPI truth-table verify、 lab-notebook-mcp の pytest 39/40、 rei-aios 全 test file (custom assert pattern)

**★ Bonus 条件 6 (chat-Claude 未列挙、 Rei 補足)**: **Idempotence** = 同じ action 反復実行が 安全。 rei-automator-mcp では approve は 一回 consumption (再 approve 必要) で確保、 read-only tool は 副作用ゼロ で 天然 idempotent。 5 条件 checklist の 実運用で 追加検討推奨。

## 具現化 evidence

### 全 5 条件 満たす first MCP: **rei-automator-mcp v0.2.0a1** (PyPI 2026-08-18 live)

- 条件 1: `ACTION_KINDS` 13 kinds allowlist ✅
- 条件 2: propose → approve → execute 3 段 ✅
- 条件 3: JSON dict + `error` field ✅
- 条件 4: pywinauto 不在時 graceful + `found_count: 0` ✅
- 条件 5: `--selftest` 30 項目 (Linux + Windows 双方 30/0 PASS) ✅
- Live: https://pypi.org/project/rei-automator-mcp/0.2.0a1/ (Trusted Publisher OIDC + Sigstore attestation)

### Rei stack 5 MCP systems 現状 audit (2026-08-18 時点):

| MCP | 条件 1 | 条件 2 | 条件 3 | 条件 4 | 条件 5 |
|---|---|---|---|---|---|
| rei-aios (mother stack) | ✅ tool list | ✅ 各 STEP audit | ✅ JSON | ✅ graceful cooldown | ✅ 27,000+ test |
| benchtop-mcp v0.4 | ✅ SCPI list | ✅ operator confirm | ✅ JSON + verdict | ✅ hardware 不在 fallback | ✅ SCPI truth-table |
| mcp-lens | ✅ intercept target | ✅ 5 signal audit | ✅ JSON | ✅ pass-through | ✅ 5 signal PASS |
| rei-automator-mcp | ✅ 13 action | ✅ 3 段 lifecycle | ✅ JSON + error | ✅ pywinauto 不在時 | ✅ 30/0 PASS |
| lab-notebook-mcp v0.1 | ✅ SQLite 10 table | ✅ pytest 39/40 | ✅ JSON | (要 audit) | ✅ pytest |

## 今後 の release pipeline (rei-automator-mcp 経験の Rei stack 化)

**2026-08-18 arc 実証: 「配管を 一度 通せば あとは tag 打つだけ」**:
1. コード書く + selftest 追加
2. version bump (docstring + `__init__` + pyproject.toml 3 箇所 揃え)
3. commit + push master
4. `git tag vX.Y.Z && git push origin vX.Y.Z`
5. GitHub Actions が 自動で build + PyPI publish + Sigstore attestation
6. (公開前) `pip install package==X.Y.Z + --selftest` で verify

Trusted Publisher (OIDC) 登録 は 各 project 1 回のみ、 以降 二度と 触らない = **release cost は tag 打つだけ に 縮小**。 2026-08-18 arc 前は 「PyPI publish = token 露出 risk 系 event」 だったが arc 後は 「tag 打つだけ の routine」 に architectural upgrade。

## 藤本さん practical guidance (chat-Claude 2026-08-18 助言)

**alpha → 実使用 → a2** の順序 (**設計を 先に 完璧にする ↛**):

- alpha 出す (rei-automator-mcp v0.2.0a1 = 本 arc)
- 実際に **1 回 使う** (Notepad に 日本語 IME バイパス送信 = selftest 30 pass を 上回る 1 reproduction)
- 「あ、 ここが 足りない」 を 集める
- a2 に 反映
- 3-4 cycle 回すと 「AI に 使わせる 道具の 作法」 が 経験則から theory 化

[[feedback-one-reproduction-over-ten-unverified]] の 直接 MCP release 版 適用。

## Related

- [[project-rei-automator-mcp-pypi-release-2026-08-18]] (本 5 条件 first fully-satisfying evidence)
- [[project-grounded-pypi-release-2026-08-18]] (前日 token 露出 → 本日 OIDC の architectural upgrade context)
- [[project-session-2026-08-15-rei-automator-evolution-arc-close]] (rei-automator-mcp v0.1 起源)
- [[feedback-one-reproduction-over-ten-unverified]] (alpha → 実使用 → a2 の 直接根拠)
- [[feedback-motivation-ground-not-user-pleasing-but-agent-operational-2026-08-15]] (「AI が 喜ぶ」 系 動機 の 独立 anti-pattern 記録)
- [[feedback-mcp-lens-intercept-input-agnostic-2026-08-15]] (mcp-lens intercept design、 条件 3 machine-readable 相補)
- [[project-mcp-lens-a-pillar-launch-arc-close-2026-08-15]] (mcp-lens 起点)
- [[project-rei-automator-phase1-full-arc-close-2026-08-16]] (rei-automator-mcp v0.1 → v0.2.0-alpha 12 sub-phase 進化)
- [[feedback-super-naming-siren-family-pattern]] (「Claude 先生」 系 personification framing の 隣接 anti-pattern)
- [[feedback-chat-claude-hallucination-warning]] Pattern 6 (chat-Claude framing 訂正 accurate)
