es-coach

新卒本選考の履歴書・ES(エントリーシート)の設問に対し、self_introduce.md と entry_sheet.md の素材から 回答の下書きを作成し、既存回答を採点基準で添削・修正する。志望動機、自己PR、ガクチカ、学生時代に力を入れたこと、 研究内容、キャリアビジョン、入社後に挑戦したいこと、注目している技術・サービス、キャッチコピー、逆質問、弱み、 文字数調整(○字以内に収める・削

SKILL.md

GitHub

ES 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 の正典表にあるものだけ。

最初に読むもの

毎回:

  1. references/material-index.md(素材の地図・正典数値・時系列表)
  2. 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: 添削

  1. 対象文を取り出す(entry_sheet.md 内なら es_index.py --question か --company)。
  2. 対象文を $W/draft.txt に保存し、es_lint.py --file $W/draft.txt --limit N で機械チェックする。文字数超過なら最初に指摘する(自動不合格)。ERROR はそのまま指摘に使う。
  3. rubric.md の自動不合格4条件 → 8項目 → 選考通過の観点 S1〜S6 を採点。各項目に原文の引用を根拠として添える。
  4. 修正方針を $W/plan.md にまとめる(評価してほしい一点、対応させる求める人物像、優先度順の修正提案 before/after と理由1行ずつ)。これを 段階 P のレビューにかけ、合格するまで最大5回直す。
  5. 修正版全文を $W/draft.txt に書き、再計測する。これを 段階 O のレビューにかけ、合格するまで最大5回直す。
  6. 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 → 実行)