一键导入
understand
実装完了後にユーザーの理解を確認する対話スキル。Claudeが何をやったのか・なぜそうしたのかを、ユーザー自身の言葉で説明させることで理解を定着させる。Spring Boot(Java)との対比で技術概念を翻訳する機能も持つ。/impl の完了報告後に自動発動する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
実装完了後にユーザーの理解を確認する対話スキル。Claudeが何をやったのか・なぜそうしたのかを、ユーザー自身の言葉で説明させることで理解を定着させる。Spring Boot(Java)との対比で技術概念を翻訳する機能も持つ。/impl の完了報告後に自動発動する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
@issue_note.txt の課題No、または Evernote 共有リンク(ノート下書き)をもとに、GitHub Issueを作成する。対応種別に応じてfeature/bugfixテンプレートを使い分ける。
PRをMerge commit方式でマージし、リモート・ローカル両方のfeatureブランチを削除して司令塔ベースブランチを最新化する。マージのタイミングはユーザーが決める。
Issue起点の実装計画を作成する。Issueの内容とプロジェクトの設計ドキュメントを照合し、影響範囲・実装方針・テスト方針を含む計画を出力する。
Playwright MCPを使って、既に起動済みのlocalhost環境に対してE2E観点の動作確認を行うための運用ルール。
PRのコードレビューを実施し、レビュー結果をPRコメントとして投稿する。アーキテクチャ観点でのコードレビュー。
ブランチ・Git運用ルール。feature ブランチ作成、コミット、プッシュ、PR作成の手順。品質チェック後のGit操作フロー。
| name | understand |
| description | 実装完了後にユーザーの理解を確認する対話スキル。Claudeが何をやったのか・なぜそうしたのかを、ユーザー自身の言葉で説明させることで理解を定着させる。Spring Boot(Java)との対比で技術概念を翻訳する機能も持つ。/impl の完了報告後に自動発動する。 |
| when_to_use | /impl の Phase 2 完了報告の直後に自動発動する。手動で「/understand」と呼んだ場合も発動する。 |
このスキルには複数の入り口がある。起動時にどれかを判定してから進む。
/impl の Phase 2-4 から呼ばれた場合)
→ Phase M(モード選択)を経由せず、直接「Phase H: 宿題への書き出し(+Issue 自動起票)」へ進む。
実装に充てたい時間を理解チェックの対話に取られないよう、自動発動時は常に宿題化する(モードを聞かない)。/understand)
→ 「Phase M: モード選択」へ進む(机で今すぐ解きたい日のため、従来どおりモードを聞く)。/understand で、未回答の宿題 Issue が存在する場合)
→ オープン中の understand-homework ラベル付き Issue があるか確認する。
あれば「Phase R: 宿題の再開」へ進むか新規チェックを始めるかをユーザーに尋ねる。@claude メンションに応答する実行)
→ 「Phase G: GitHub コメント上の一問一答」へ進む。
CLI 上の /understand ではなく、.github/workflows/claude.yml から起動された
Claude が Issue/PR のコメントスレッドで出題・回答・判定を行う入口。/impl スキルの Phase 2-4 から続けて呼ばれた場合。impl の完了報告直後に
このスキルへ入った文脈であれば自動発動とみなし、Phase M を飛ばして Phase H(宿題用 Issue 起票)へ直行する。/understand と打って起動した場合。Phase M でモード選択を聞く。過去に溜まった宿題の消化は、手動 /understand(入口3 = Phase R)で行う。
未回答の宿題があるかは gh issue list --label understand-homework --state open で調べる。
宿題は GitHub Issue を唯一の正(ソース・オブ・トゥルース)とし、ローカルの Markdown ファイルには一切残さない。
2方式の関係(CLI / GitHub コメント): 判定基準(核心の有無・ヒント3段階・正誤)は いずれの入口でも Phase 1 を単一の正 とする。Phase R も Phase G も Phase 1 を参照し、基準を重複定義しない。 宿題の状態(出題済み・回答済み)は Issue 本文とコメントスレッドだけで管理し、ローカルファイルは作らない。
/understand 時のみ聞く)理解チェックを始める前に、今回の問いを「いま解く」か「宿題にする」かをユーザーに尋ねる。 机にいる日はその場で、外出予定の日は宿題、と日によって使い分けられるようにするため、毎回聞く(デフォルト固定にしない)。
このフェーズを通るのは手動
/understand(入口2)のときだけ。/impl完了直後の自動発動(入口1)は Phase M を経由せず Phase H へ直行する(モード選択を聞かない)。
---
## 理解チェックのモード選択
今回の実装について理解チェックを行います。どちらで進めますか?
1. いま解く(その場で対話形式。従来どおり)
2. 宿題にする(問いを GitHub Issue に起票し、後で GitHub アプリ等から取り組む)
---
/impl をブロックせず終了する。今回の問いを 宿題用 GitHub Issue として起票し、その場では解かずに終了する。 ローカルの Markdown ファイルは一切作らない(宿題は Issue を唯一の正とする)。 このフェーズに来る入口は2つある:
/understand で「宿題にする」を選択): Phase M を経由してここへ来る。どちらの入口でも手順は同一(Issue 起票のみ)。
/impl をブロックせず終了する。
宿題化した時点でこのスキルの今回分の役割は完了とみなす(解き終えるまで待たない)。生成した問いを gh issue create で GitHub Issue に起票する。外出先からその Issue の
コメント欄に @claude 付きで回答すれば、Phase G の基準(= Phase 1)で採点が返る。
机に戻ったときも、手動 /understand(Phase R)が同じ Issue を読んで続きから出題する。
gh issue create を実行する:
理解チェック宿題: ISSUE-<N>(PR #<番号> / Phase G で採点)
(Issue番号が特定できない手動起動時は 理解チェック宿題: <実装日>(Phase G で採点))。understand-homework を付与する。
このラベルが未作成の場合は先に gh label create understand-homework で作成してから付与する
(宿題 Issue を一覧でフィルタできるようにするため)。問い本文({問N} の部分)を Phase 1 で生成した問いに、{Spring Boot 翻訳} を Phase 0 の翻訳結果に差し替えて使う。
これは understand 理解チェックの宿題です。外出先からスマホで回答するための Issue。
## @claude への採点指示(毎回適用)
このスレッドで `@claude` 付きの回答が投稿されたら、リポジトリ内の
`.claude/skills/understand/SKILL.md` の **Phase G(GitHub コメント上の一問一答)** の手順に従って採点してください。
判定基準(核心の有無・ヒント3段階・正誤)は **Phase 1 のステップ2〜3(3-A〜3-D)を単一の正** とします。
スレッドの履歴を読み、その問いに対する不正解が何回続いているかを数えてヒント段階を判断してください。
## 回答方法(スマホ)
各問の回答を、このIssueのコメント欄に **先頭に `@claude` を付けて** 投稿してください。
1問ずつ投稿すると、Claude が直前までの文脈を踏まえて1問ずつ採点します。
---
## 対象実装
PR #<番号> / <実装日> / 規模区分: <小/中/大>
(<今回の実装の1行要約>)
## Spring Boot 翻訳
{Spring Boot 翻訳}
## 問1
{問1}
## 問2
{問2}
gh issue create(または gh label create)が失敗した場合は、起票せずにその旨を報告して終了する。
ローカルファイルは作らない(宿題は Issue を唯一の正とするため)。
「Issue 起票に失敗。後で再度 /understand を実行して起票し直してください」と報告し、/impl はブロックしない。Issue 起票に成功した場合:
---
## 宿題 Issue を起票しました
{N} 問を宿題 Issue #{番号}({URL})に起票しました。
外出先からは Issue のコメント欄に `@claude` 付きで回答すれば、その場で採点されます。
机で取り組むときは `/understand` を実行すれば、この Issue を読んで続きから出題します。
---
Issue 起票に失敗した場合:
---
## 宿題 Issue の起票に失敗しました
{N} 問を生成しましたが、Issue の起票に失敗しました({失敗理由})。
後で再度 `/understand` を実行すると、起票し直せます。
---
/understand で未回答の宿題がある場合)オープン中の宿題 Issue の未回答の問いを、机(CLI)で出題・判定する。回答記録は Issue コメントに残し、 全問終えたら Issue をクローズする。ローカルファイルは作らない(宿題は Issue を唯一の正とする)。
gh issue list --label understand-homework --state open でオープン中の宿題 Issue を探す。
複数ある場合はどの Issue に取り組むかユーザーに選ばせる。
gh issue view <番号> --comments で Issue 本文とコメントスレッドを読み、
「どの問いに・どこまで回答済みか」を把握する(状態は Issue 上だけで管理しているため毎回読み直す)。
未回答の問いを、上から順に「Phase 1 の対話の進め方」(ステップ1〜3、ヒント段階・正誤判定)でそのまま出題する。 ヒント段階は、その問いに対する過去コメントの不正解回数から判断する(Phase G と同じ数え方)。
1問終えるごとに、回答と判定を Issue コメントに追記する(gh issue comment <番号> --body ...)。
記録を Issue に残し、第三者が読んで理解できる状態にするため。
**問N の回答(机 / Phase R):** {ユーザーの回答}
**判定:** {正解 / 解説など。3-A〜3-D に準ずる}
その Issue の未回答がすべて消えたら、gh issue close <番号> でクローズし、
「## 理解チェック完了」と同等のサマリを出力して終了する。
外出先からスマホの GitHub アプリ等で Issue/PR コメントに回答を書くと、Claude が判定・ヒントを コメントで返す。CLI に戻らずに理解チェックの一問一答を GitHub 上で完結させるための入口。
.github/workflows/claude.yml が issue_comment / pull_request_review_comment イベントで
起動し、@claude メンションを含むコメントが理解チェックの文脈(宿題の問い・回答)である場合。実体は .github/workflows/claude.yml(anthropics/claude-code-action)。確定済みの方針:
CLAUDE_CODE_OAUTH_TOKEN(Claude サブスク連携)を使う。ANTHROPIC_API_KEY の従量課金は採らない
(1問ごとに Actions が起動するため、サブスク枠でコストを固定する)。Secret はリポジトリに登録済み。@claude を含む Issue/PR コメント等(claude.yml の if 条件を参照)。理解チェックの宿題は
Phase H で起票した専用 Issue のコメント欄でやり取りする。.github/workflows/ は GitHub Actions 上の Claude 自身は編集できない。ワークフロー変更は CLI から手動で行う。/understand の Phase R が同じ Issue を読んで未回答の続きから出題し、
全問終えたら Issue をクローズする。宿題の状態は一貫して Issue 上だけで管理する。「いま解く」を選んだ場合に実行する。「宿題にする」を選んだ場合は Phase H の手順で内部的に生成し、宿題 Issue 本文に併記する。
今回の実装で使われた Next.js / React の技術概念を、Spring Boot(Java)の対応概念に翻訳して説明する。 ユーザーは Spring Boot / Java の開発経験があり、Next.js / React は学習中である。
| Next.js / React | Spring Boot / Java |
|---|---|
| Server Actions | @Controller の @PostMapping / @GetMapping メソッド |
| Server Components (RSC) | Thymeleaf テンプレート + Controller(サーバーサイドレンダリング) |
Client Components ("use client") | REST API を呼ぶフロントエンド JS(Thymeleaf + fetch/axios) |
App Router (app/ ディレクトリ) | @RequestMapping によるルーティング定義 |
layout.tsx | 共通テンプレートレイアウト / Spring Security の FilterChain |
middleware.ts | Spring Security の Filter / HandlerInterceptor |
page.tsx | Controller メソッド + 対応する Thymeleaf テンプレート |
loading.tsx | ※ Spring MVC に直接対応なし(フロントエンド固有のローディング表示) |
error.tsx | @ControllerAdvice + @ExceptionHandler |
| Prisma ORM | Spring Data JPA / Hibernate |
Prisma schema (schema.prisma) | @Entity アノテーション付き Java クラス |
Prisma の findMany, create 等 | JPA Repository の findAll(), save() 等 |
| Zod バリデーション | Jakarta Bean Validation (@Valid, @NotNull, @Size 等) |
| React Hook Form | Spring MVC のフォームバインディング (@ModelAttribute) |
| Supabase Auth | Spring Security + JWT / OAuth2 |
API Route (route.ts) | @RestController のエンドポイント |
useEffect | ※ フロントエンド固有。Spring に対応なし |
useState | ※ フロントエンド固有。Spring に対応なし |
| Tailwind CSS | ※ CSS フレームワーク。Java 側に対応なし |
revalidatePath / revalidateTag | Spring Cache の @CacheEvict |
redirect() | return "redirect:/path" |
cookies() / headers() | HttpServletRequest から取得 |
環境変数 (process.env) | application.properties / @Value |
---
## Spring Boot 翻訳
今回の実装を Spring Boot で例えると:
**変更内容の要約**
{1-2文で今回やったことを要約}
**ファイルごとの対応**
- `{変更したファイル}` → Spring Boot では `{対応するクラス/ファイル}` に相当
- {具体的な説明}
**使われた技術概念**
- {Next.js の概念}: Spring Boot でいう {対応概念}。{補足説明}
**Spring Boot 開発者として注意すべき違い**
- {考え方が根本的に異なる部分があれば記載。なければ省略}
---
useState 等)は「Spring Boot に対応なし。フロントエンド固有の仕組みで〜」と正直に伝える実装完了後、ユーザーが「何が変わったのか」「なぜそうしたのか」を自分の言葉で説明できるか確認する対話を行う。
今回の実装内容を振り返り、以下の両面から質問を作る:
変更の規模に応じて質問数を決める:
各質問は、今回の実装で最も重要なポイントから順に出題する。
質問をユーザーに投げかける。最初はヒントを一切出さない。
出力フォーマット:
---
## 実装理解チェック(1/N問目)
【質問】
{質問文}
あなたの言葉で説明してください。
---
ユーザーの回答を受け取ったら、核心を突いているかどうかを判定する。
正解です!
{ユーザーの理解を補強する一言(30文字以内)}
次の質問があればステップ1に戻る。全問正解なら対話を終了する。
ヒントは出さず、どの部分が惜しいかだけ伝える。
惜しいです。{どの観点が足りないか}の部分をもう少し考えてみてください。
具体的なヒントを1つ出す。
ヒント: {実装内容に関連する具体的な手がかり}
正解を伝えて次の質問へ進む。
正解はこうです:
{正解の説明}
次の質問に進みます。
すべての質問が終わったら、以下を出力して対話を終了する。
---
## 理解チェック完了
{正解数}/{全問数} 問正解でした。
---