es-coach
新卒本選考の履歴書・ES(エントリーシート)の設問に対し、self_introduce.md と entry_sheet.md の素材から 回答の下書きを作成し、既存回答を採点基準で添削・修正する。志望動機、自己PR、ガクチカ、学生時代に力を入れたこと、 研究内容、キャリアビジョン、入社後に挑戦したいこと、注目している技術・サービス、キャッチコピー、逆質問、弱み、 文字数調整(○字以内に収める・削
SKILL.md.claude/skills/es-coach/SKILL.md
GitHubES Coach
新卒本選考の ES 回答を「素材から作る」「既存回答を添削する」ためのスキル。
プロジェクトルートは entry_sheet.md があるディレクトリ(通常は cwd)。以下のパスはそこからの相対パス。
目標は「正しい文章」ではなく 書類選考を通過する ES。採用担当が短時間で「会ってみたい」と判断できるように、評価してほしい一点を決め、企業の求める人物像に結びつけ、この人にしか書けない具体で差別化する(references/rubric.md「選考通過の観点」S1〜S6)。
そのために、骨子(プラン)と完成稿(出力)は、ユーザーに見せる前に別のレビュアーが審査し、合格するまで直す(各段階で最大5回)。手順は references/review.md。
また、レビューやユーザーの指示で骨子・回答を直した内容は history/ にナレッジとして蓄積し、作成時とレビュー時に必ず参照する。手順は references/knowledge.md。
前提として知っておくこと
- 書き手は名古屋工業大学大学院 情報工学専攻の修士1年(2028年3月修了見込)。iOS ネイティブが主軸(約3年)、副次で React/FastAPI。研究は対話ロボット。
- 過去 ES はほぼインターン向けで、長期インターン先(燈)は 2026年6月に終了している。そのまま流用すると「インターンでは〜したい」「現在従事しています」が残り、事実と時制がずれる。流用時は
references/style-guide.mdの変換表で必ず直す。 - 素材の正典は
self_introduce.md(強み・エピソード)とentry_sheet.md(過去回答・研究・URL・経歴)。README.mdは旧版なので読まない。 - ES は面接で深掘りされる。本人が説明できない数値や出来事を1つ書くと、その1つで信用を失う。使える数値は
references/material-index.mdの正典表にあるものだけ。
最初に読むもの
毎回:
references/material-index.md(素材の地図・正典数値・時系列表)python3 .claude/skills/es-coach/scripts/knowledge.py brief --company 企業名を実行し、蓄積した教訓(history/lessons.md)とその企業の修正履歴を今回の作業ルールに加える。
entry_sheet.md は 78KB あるので全文 Read しない。es_index.py も引数なしの全体一覧は出さず、手順2の --company --question --episodes --company で必要な箇所だけ取り出す(全体一覧が要るのは、どの企業に何を書いたか分からないときだけ)。
参照ファイルは必要な節だけ読む。何度も読み直さない。
設問タイプが決まったら references/question-types.md の該当節。執筆後と添削時は references/rubric.md。骨子と完成稿のレビュー時は references/review.md。志望動機・挑戦したいこと・ビジョン・逆質問は references/company-research.md。文体で迷ったら references/style-guide.md。
モード判定
| 入力 | モード |
|---|---|
| 設問(+企業名、文字数) | A: 下書き作成 |
| 既存の回答文、または entry_sheet.md 内の回答を指す指示(「MIXI の興味ある技術を添削して」) | B: 添削 |
| 「前の回答を直して本選考用にして」など両方 | B で採点 → 13点未満なら A の骨子からやり直す |
不足情報は 1回にまとめて 聞く。往復が増えると使われなくなる。聞く候補: 企業名、設問の原文、上限と表記(以内/約/以上)、職種、提出媒体(Web フォームか PDF か。改行の数え方が変わる)、燈を実名にするか「スタートアップ企業」にするか。分かるものは推測で進め、推測した点は報告の「確認事項」に書く。
ワークフロー A: 下書き作成
1. 入力を確定する
設問原文はそのまま見出しに使うので、原文を確保する。上限表記から count_chars.py の --mode を決める(以内→within、約/程度→about、以上→atleast)。上限が無い設問は question-types.md の既定字数(志望動機・自己PR・ガクチカ 400、研究 500、キャッチコピー 30+理由 200、プロダクト説明 800 まで)。
2. 類似の過去回答と、その企業の既存回答を見る
python3 .claude/skills/es-coach/scripts/es_index.py --question 挑戦 # 類似設問
python3 .claude/skills/es-coach/scripts/es_index.py --company MIXI # 同じ企業に既に書いたもの
python3 .claude/skills/es-coach/scripts/es_index.py --episodes --company MIXI # その企業で使用済みのエピソード
他社向けの良い回答は土台にできる。同じ企業では同じエピソードを2設問で使わない(読み手は全設問を続けて読む)。
3. 素材を選ぶ
question-types.md の該当節で軸を決め、self_introduce.md の該当エピソード(課題/行動/成果/学び)を1本選ぶ。自己PR・ガクチカはエピソード1本に絞る。過去回答で複数本を詰めたものは例外なく字数超過している。
数値は正典表からのみ。使い回し感を避けたいときは、企業別回答で未使用の「タスク約1か月短縮」や夏インターン3社(チームラボ・サイボウズ・kubell)を検討する。
4. 企業リサーチ(志望動機・挑戦したいこと・ビジョン・きっかけ・逆質問のみ)
まず .claude/skills/es-coach/history/companies/企業名.md があるか見る。あれば読んで使い、Web 検索は足りない情報があるときだけにする(company-research.md の手順0)。無ければ references/company-research.md の手順で WebSearch 2〜4回、WebFetch 2〜3ページ。固有名詞ごとに「事実・出典 URL・結べる素材」と、求める人物像・バリュー・職種要件を $W/research.md にメモし、最終報告に載せる($W は review.md の作業ディレクトリ)。自己PR・ガクチカ・研究では必須ではないが、同じ企業で既にリサーチ済みならメモを使い回して S2(求める人物像との一致)に活かす。
5. 骨子を作る → 自動レビュー(段階 P)
書き始める前に、次を $W/plan.md に書く。字数配分を先に決めると、後の削り作業がほぼ無くなる。配分の目安は question-types.md の各節。
- 設問原文と、そこに含まれる問いの分解
- 結論1文
- 評価してほしい一点(採用担当に残したい印象。例:「チームの開発速度を仕組みで上げられる人」)
- 対応させる求める人物像・バリュー・職種要件(根拠はリサーチメモ)
- 使うエピソード・数値と、差別化ポイント(この人にしか書けない判断・工夫)
- 段落ごとの役割と目安字数
自動レビュー(段階 P): references/review.md に従い、plan.md を自分でチェックリスト判定 → FAIL なら直して再判定。合格するまで、最大5回。記録は $W/reviews/plan_r{N}.md。「要修正」を直したら1件ずつ knowledge.py add --stage plan --source review --round N ... で記録する。5回で合格しなければ、残りの指摘を添えて骨子をユーザーに示し、判断を仰ぐ。
6. 書く
style-guide.md に従う。です・ます調、結論ファースト、一文80字目安、1段落1役割、インターン向け表現を使わない、社名は直書き。AIが書いたと分かる癖(普通の語を「」で強調する、決め台詞で締める、抽象語で飾る、ダッシュやコロンで区切る)を避け、本人が面接でそのまま話しても自然な文章にする。
7. 機械チェックとセルフチェック
本文を $W/draft.txt に保存し、機械チェックを通す。文字数・一文の長さ・口癖・誇張・NG表現・AIらしい表現をまとめて判定する。
python3 .claude/skills/es-coach/scripts/es_lint.py --file $W/draft.txt --limit 500 --mode within
ERROR が無くなるまで直す。WARN は目で確認する。文字数が OVER なら style-guide.md の「削る優先順位」で削る。SHORT なら「増やす順序」で行動の具体を足す(感想は足さない)。
次に、lint で判定できない項目(設問への回答、具体性、構成、企業接点、一貫性、S1〜S6)を自己採点し、1点以下の項目と ✕ を直す。13/16 未満なら骨子に戻る。
7.5 自動レビュー(段階 O)
review_bundle.py でレビュー資料を作り、references/review.md に従って Sonnet のレビュアーに審査させる → FAIL なら直し、es_lint.py を再度 OK にしてから再レビュー(2回目以降は差分だけ審査)。合格するまで、最大5回。記録は $W/reviews/output_r{N}.md。「要修正」を直したら1件ずつ knowledge.py add --stage output --source review --round N ... で記録する。骨子から崩れていると判定されたら手順5に戻る(review.md の規則7)。5回で合格しなければ、それ以上直さずに残りの指摘を報告の「確認事項」に載せる。
8. 追記して報告する
まず dry-run:
python3 .claude/skills/es-coach/scripts/append_entry.py --company MIXI --question "設問原文(500字以内)" --body-file $W/draft.txt --dry-run
挿入位置と見出しレベルを確認してから --dry-run を外して実行する。既存の企業セクションがあればその末尾に同じレベル体系で入り、無ければ末尾に ## 企業名 → ### 設問 で新設される。同名設問は上書きせず版が付く(過去版を残すのがこのリポジトリの慣習)。
報告の前に knowledge.py promote を実行し、候補があれば references/knowledge.md に従って history/lessons.md に昇格する。
報告は次の形:
## 回答(企業 / 設問 / N字以内)
(本文)
文字数: 改行込み xxx / 改行除く yyy(上限 N の zz%)
スコア: 14/16(1点以下の項目: なし)
選考通過の観点: S1〜S6 すべて ○(評価してほしい一点: 〜)
自動レビュー: 段階 P 第1回 PASS / 段階 O 第2回 PASS(直さなかった提案: 〜)
使用エピソード: …(この企業の他設問と重複なし)
企業固有名詞と出典: 〜(URL)/〜(URL)
確認事項: 推測した点、追加できる数値の有無、表記の選択
追記先: entry_sheet.md 「## 企業名」セクション末尾(L xxx)
ナレッジ: 記録 n 件(plan x / output y)、lessons.md への追加: 〜(なければ「なし」)
改行込み・改行除くを併記するのは、企業フォームの数え方が分からないときにユーザーが判断できるようにするため。
ワークフロー B: 添削
- 対象文を取り出す(entry_sheet.md 内なら
es_index.py --questionか--company)。 - 対象文を
$W/draft.txtに保存し、es_lint.py --file $W/draft.txt --limit Nで機械チェックする。文字数超過なら最初に指摘する(自動不合格)。ERROR はそのまま指摘に使う。 rubric.mdの自動不合格4条件 → 8項目 → 選考通過の観点 S1〜S6 を採点。各項目に原文の引用を根拠として添える。- 修正方針を
$W/plan.mdにまとめる(評価してほしい一点、対応させる求める人物像、優先度順の修正提案 before/after と理由1行ずつ)。これを 段階 P のレビューにかけ、合格するまで最大5回直す。 - 修正版全文を
$W/draft.txtに書き、再計測する。これを 段階 O のレビューにかけ、合格するまで最大5回直す。 rubric.md末尾の出力形式(総評 → 文字数 → 基準別評価 → 修正提案 → 修正版全文 → 修正後文字数 → 確認事項)で返す。総評に自動レビューの結果(各段階で何回目に合格したか、合格しなかった場合は残った指摘)を書く。
段階 P・O の「要修正」を直したら、ワークフロー A と同じく knowledge.py add で1件ずつ記録し、報告前に promote を確認する。
修正版では元の主張と事実を変えない。足したくなった事実は本文に入れず「確認事項」に出す。ユーザーが entry_sheet.md への反映を求めたら、ワークフロー A の手順8で版付き追記する。
報告後の修正指示
報告後や骨子の提示後に、ユーザーから修正の指示(「もっと〜して」「このエピソードは使わないで」など)が来たら、直したうえで knowledge.py add --stage plan|output --source prompt ... で記録する。今後も続く好み・方針なら lessons.md にも昇格する。修正が大きい場合(結論・エピソード・段落構成の変更)は、該当段階のレビューを1回目からやり直す。
文字数のルール
- 「N字以内」→ 90〜100%。「約N字/N字程度」→ 90〜110%。「N字以上」→ 100〜120%。
- 数え方は
count_chars.pyの既定(改行・空白・記号すべて1文字、最も厳しい慣習)で判定する。ここで収まればどの企業のフォームでも超えない。企業が「改行は含まない」と明記している場合だけ--exclude-newlines。 - 絵文字・特殊記号は使わない(JS の length で2文字になる)。
事実の扱い
- 書ける数値・固有名詞は、正典表・過去回答・ユーザーの発言にあるものだけ。
- 新しい数値を入れたいときは本文に入れず、報告の「確認事項」で「〜の数値はありますか」と聞く。
- 企業情報は検索結果に根拠があるものだけ。ミッション文は言い換える。出典 URL を残す。
- 研究内容は素材が1段落しか無いので、初回は担当範囲・評価指標・成果をヒアリングする。回答後、
self_introduce.mdへの追記を提案する(勝手には書かない)。
参照ファイル
| ファイル | いつ読むか |
|---|---|
references/material-index.md |
毎回最初。素材の所在、正典数値、時系列、表記慣習 |
references/question-types.md |
設問タイプが決まったら該当節 |
references/rubric.md |
執筆後のセルフチェック、添削時(8項目+選考通過の観点) |
references/review.md |
骨子(段階 P)と完成稿(段階 O)の自動レビュー。各段階最大5回 |
references/style-guide.md |
執筆時、文字数調整時、流用時の変換 |
references/company-research.md |
志望動機・挑戦・ビジョン・きっかけ・逆質問 |
references/knowledge.md |
修正履歴(ナレッジ)の記録・参照・昇格の手順 |
history/lessons.md / history/history.jsonl |
蓄積した教訓と修正履歴(knowledge.py で読み書き) |
scripts/knowledge.py |
ナレッジの add / list / brief / promote |
scripts/es_lint.py |
機械チェック(文字数・一文の長さ・口癖・誇張・NG表現・AIらしい表現・正典外の数値) |
scripts/review_bundle.py |
段階 O のレビュアーに渡す資料を1ファイルにまとめる |
history/companies/企業名.md |
企業リサーチの保存先。同じ企業の別設問で使い回す |
scripts/count_chars.py |
文字数と上限判定 |
scripts/es_index.py |
entry_sheet.md の索引・抽出・エピソード重複確認 |
scripts/append_entry.py |
entry_sheet.md への追記(dry-run → 実行) |