mcpField
H
honest-cv

honest-cv

ローカル
github.com/JesusCabreraRevelesビジネス・マーケティング11 週間前に更新

honest-cv について

honest-cv は、本人が確認した経験プロフィールから職種別の履歴書やカバーレターを作る MCP サーバー、CLI、Claude Code スキルです。スキルレベルには証拠と本人の確認を求め、PDF の ATS 向けテキスト抽出も検査します。

主な機能

  1. 01証拠に基づき本人が確認するスキルレベル
  2. 02求人キーワードの網羅率と不足レポート
  3. 03職種別の PDF・DOCX 履歴書作成
  4. 042 種類の抽出器による ATS 検査
  5. 05カバーレターの主張確認と応募記録

活用シーン

  1. 01職種ごとの履歴書作成
  2. 02登録済みスキルと求人要件の照合
  3. 03プロフィールの証拠に基づくレター確認
  4. 04実績を基にした面接回答の準備

MCP 対応

MCP サーバーを通じて、MCP クライアントから経験の聞き取り、履歴書の調整、文書の作成と検証を行えます。スキルレベルの引き上げには MCP elicitation またはターミナルで本人の確認が必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jesuscabrerareveles-honest-cv": {
"command": "uvx",
"args": [
"honest-cv"
],
"env": {
"HONEST_CV_PROFILE": "<HONEST_CV_PROFILE>"
}
}
}
}
起動コマンドuvx honest-cv
設定が必要な環境変数
HONEST_CV_PROFILEFolder that holds your profile, e.g. ~/cv-profile. Keep it out of public repositories. Tools also accept a profile argument.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypihonest-cv0.3.3

ツール

31

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
profilestringはい作成するフォルダーです。プロファイルがまだ存在しない必要があります。

詳細

honest-cv

CI License: MIT PyPI Listed on mcpservers.org

AI エージェントが生成する、誠実で ATS に適した、職種ごとに最適化された CV。 honest-cv は MCP サーバー、CLI、Claude Code スキルです。経験に関する信頼できる唯一の情報源を維持し、 職種の種類ごとに PDF と DOCX に変換します。持っていないスキルを主張することはありません。

スペイン語で読む

デモ:本人のスキルチェックリストと求人情報のスコアリング、検証済みのビルド、本人が持たないスキルを断るカバーレター、LinkedIn 用テキスト、応募の記録

その理由

返信のない CV の多くは、デザインが原因ではありません。職種への最適化が不十分で、テキスト抽出を ひそかに妨げる細部に問題があります。AI によって、反対の問題は簡単に起こるようになりました。モデルは、 面接で説明できないキーワードを CV に喜んで詰め込みます。honest-cv は、次の 3 つの考えに基づいています。

  • 誠実さを守るのはプロンプトではなくコードです。 すべてのスキルにはレベルがあります。習熟度が 「基礎知識」のスキルには必ずその旨が示され、持っていないスキルが記載されることはありません。レベルを 上げるには、記述した証拠とあなたの確認が必要で、サーバーが直接あなたに尋ねます。 モデルがあなたに代わって確認することはできません。
  • 不足は、あなた自身のスキル一覧を基準に測定されます。 求人情報に記載された各キーワードについて、 honest-cv は次の 3 つのうちどれに当てはまるかを示します。
    • 持っているが、この CV には記載されていない。
    • 基礎知識としてしか知らない。
    • 持っていない。
  • ビルドのたびに ATS 対応をチェックします。 すべての PDF を 2 つのテキスト抽出ツール(pypdf と pdfminer.six)で確認します。ビルドでは、テキストが 1 段組であること、合字がないこと、各日付が 対応する職務の行にあること、適切な読み取り順序に従っていること、すべての箇条書き項目が含まれていることを確認します。

サーバーは決定論的に動作し、API キーは不要です。会話は MCP クライアントのモデルが実行し、 honest-cv が検証、ビルド、確認、測定を行います。プロフィールはマシン上のフォルダーに保存され、 外部に送信されることはありません。AI クライアントによるデータの取り扱いについては、 プライバシーをご覧ください。

架空の人物 Ada Example 用に生成された 1 ページの CV

クイックスタート

honest-cv には uv が必要です。Typst とフォントはパッケージに含まれているため、 ほかにインストールするものはありません。 Linux(glibc)の x86_64 と ARM64、Intel および Apple Silicon 搭載の macOS、x64 の Windows で動作します。 Alpine Linux と ARM 版 Windows は、typst パッケージがそれら向けの wheel を公開していないため、サポートされていません。

Claude Code
claude mcp add honest-cv -- uvx honest-cv serve --profile ~/cv-profile

インタビューと職種に合わせた最適化を案内するスキルもインストールするには、次の手順を実行します。

mkdir -p ~/.claude/skills/honest-cv
curl -fsSL https://raw.githubusercontent.com/JesusCabreraReveles/honest-cv/master/skills/honest-cv/SKILL.md \
  -o ~/.claude/skills/honest-cv/SKILL.md

続いて、初めての CV を作成する手順に従ってください。

Cursor

~/.cursor/mcp.json またはプロジェクト内の .cursor/mcp.json に、次の内容を追加します。

{
  "mcpServers": {
    "honest-cv": {
      "command": "uvx",
      "args": ["honest-cv", "serve", "--profile", "/absolute/path/to/cv-profile"]
    }
  }
}
Claude Desktop

claude_desktop_config.json を編集します。

  • macOS の場合:~/Library/Application Support/Claude/。
  • Windows の場合:%APPDATA%\Claude\。

Cursor の例と同じ mcpServers ブロックを追加し、アプリを再起動します。アプリが uvx を見つけられない場合は、絶対パスを使用してください(which uvx)。

各クライアントでスキルのレベルアップを確認する方法

スキルのレベルアップには、本人による確認が必要です。サーバーはMCPのエリシテーションを通じて確認を求めます。まだ対応していないクライアントもあります。

クライアント確認する場所
Claude Codeチャット内で、レベルアップごとに「no / sí」のフィールドが1つあるフォームが表示されます。一度に最大10件まで確認できます。「sí」と回答した項目のみ保存されます。「Decline」を選択すると何も保存されません。
Claude Desktopターミナル内で確認します。サーバーは変更を拒否し、実行するコマンドを提示します:uvx honest-cv skill <profile> "<name>" <level> --evidence "..."。
その他のクライアントエリシテーションに対応している場合はチャット内で、対応していない場合は上記のようにターミナルで確認します。

初めての履歴書を作成する手順

このガイドでは Claude Code を使用しますが、セットアップ方法が異なるだけで、どの MCP クライアントでも同じように利用できます。

1. uv をインストールして honest-cv を追加します。 最初の1回だけ行います。macOS または Linux の場合:

curl -LsSf https://astral.sh/uv/install.sh | sh        # Windows: see docs.astral.sh/uv
claude mcp add honest-cv -- uvx honest-cv serve --profile ~/cv-profile

~/cv-profile は、プロフィールを保存するフォルダーです。まだ存在していなくてもかまいません。また、公開リポジトリ内には作成しないでください。スキルもインストールしてください(上記の Claude Code を参照)。

2. インタビューを始めます。 任意のフォルダーで Claude Code を開き(claude)、自分の言語で 「履歴書を作るためのインタビューをしてください」 と入力するか、/mcp__honest-cv__interview を実行します。会話中はずっと、アシスタントがあなたの言語を使います。システムの音声入力(macOS の場合:システム設定 → キーボード → 音声入力)を使って回答することもできます。音声入力では名前や数字を聞き間違えることがあるため、保存前に読み上げて確認します。次のように進みます。

あなた: 履歴書を作るためのインタビューをしてください。

アシスタント: ~/cv-profile フォルダーはまだありません。作成しますか?… インタビュー全体には数時間かかることがありますが、進めながらすべて保存されます。連絡先情報、直近2つの職務、スキルチェックリストまで済ませれば、まず履歴書を作成できます。LinkedIn のデータエクスポートまたは JSON Resume をお持ちですか?

  • 可能ならインポートします(任意)。LinkedIn のデータエクスポートをダウンロードし(インポートを参照)、ZIP ファイルのパスをアシスタントに伝えます。職務経歴、学歴、実績が取り込まれ、スキルはレベルを付けずに読み込まれます。
  • 連絡先、職務経歴、学歴。 一度にいくつかずつ質問し、保存前に名前や数字を読み上げて確認します。その後、資格、講座、自分で書いたものについて一度質問します。
  • 職務ごとの実績。 職務ごとに、チームが何をしたか、あなた自身が何をしたか、そして何が変わったかを数字も含めて確認します。箇条書きの案を作成し、表現を承認した後にのみ保存します。
  • スキル。 たとえば backend-jvm + engineering-lead のようなチェックリストを提示します。どの職種でも、自分用のものを用意できます。エディターで ~/cv-profile/checklist.md を開き、各行に P、L、F、または X を記入し、「 — 」の後にそのスキルを使った場所を追加して保存したら、アシスタントに 「完了」 と伝えます。不足している根拠を、項目ごとにまとめて質問します。その後、フォームでレベルの引き上げを確認します。「sí」と回答したものだけが保存されます。
  • 最も大きな実績。 1つの実績で複数のスキルを示せるのが一般的です。次に、実績ではまだ示されていない、主要な P レベルのスキルについて質問します。残りは求人票に合わせて後で対応できます。

3. 初めての履歴書を作成します。 応募する職種ごとに、アシスタントが1つの バリエーション を提案します(たとえば「プラットフォーム」や「エンジニアリングマネージャー」)。タイトル、概要、掲載する箇条書きが含まれます。承認したら、次のように伝えます。

あなた: プラットフォーム職向けの履歴書を英語とスペイン語で作成してください。

PDF と DOCX は、ATS 対応を確認済みの状態で ~/cv-profile/out/ に出力されます。AI クライアントを使わない場合は、同じ操作を uvx honest-cv build ~/cv-profile -v platform -l en で実行できます。

4. 求人票に合わせて調整します。 求人票を貼り付けるか、/mcp__honest-cv__tailor_for_job を実行します。

あなた: 求人票はこちらです:(貼り付けてください)。私の適性はどの程度で、何を変更すればよいですか?

各バリエーションの適合状況、不足しているキーワード(スキルはあるが、この履歴書には記載されていない、知識があるだけ、持っていないに分類)に加え、チェックリストで選択したものの根拠がまだ示されていないスキル(どこで使ったか質問されます)が提示されます。また、承認用の調整済みバリエーションと履歴書の作成も行われます。その後、カバーレターの案を作成できます。作成前に check_claims で内容を確認し、求人票の本文と面接に向けて準備すべき内容を記録できます。面接が決まったら、「面接の準備を手伝って」 と伝えると、自分の実績をもとに想定質問と回答を作成します。

5. いつでも再開できます。 「履歴書インタビューの続きをしましょう」 と伝えると、不足している項目から始めます。LinkedIn プロフィールを更新するときは、「LinkedIn を更新して」 と伝えます。

あなたのプロフィール

プロフィールは4つの YAML ファイルを含むフォルダーです。honest-cv init ~/cv-profile を実行して作成するか、interview プロンプトに入力を手伝ってもらってください。公開リポジトリには含めないでください。

ファイル内容
profile.yaml連絡先、職歴、学歴、資格、出版物、コース、言語。
bullets.yaml成果の一覧。それぞれに id、role、tags が含まれます。
skills.yamlレベルと根拠を含むスキル一覧。
variants.yaml役職の種類ごとの履歴書プラン。extends: を使って別のプランを継承できます。

テキストは単一の文字列にも、言語ごとに1つの文字列にもできます:{en: ..., es: ...}。履歴書は英語とスペイン語で作成できます。

レベル意味履歴書での表示
P職務で本番環境にて使用表示
L個人プロジェクトまたはラボで使用表示
F知識がある「知識」欄にのみ表示
X持っていない表示されませんが、ギャップレポートが正確になるよう記録されます
スキルチェックリスト

何十ものスキルを1問ずつ記録するのは時間がかかります。チェックリストは、エディターで記入する Markdown ファイルです。1行につき1文字を記入します:

## Messaging and streaming
evidence: Payments platform at Acme, 2020–2026
- [P] Kafka — reconciliation flow, 2M events a day · years: 6 · last year: 2026
- [F] RabbitMQ — a workshop and the official tutorials
- [X] NATS

「 — 」の後のテキストは根拠です。また、見出しの下にある evidence: 行は、そのセクション全体の根拠になります。根拠のない行は保存されず、保留中として戻され、アシスタントがまとめて質問します。アップグレードはファイル全体で一度だけ確認されます。

チェックリストは英語とスペイン語(--lang es)に対応しています。スペイン語の項目名は英語の項目名の同義語なので、スペイン語で記入したスキルも、英語の求人情報と照合されます。

honest-cv checklist list                                     # backend-jvm, platform-sre, ...
honest-cv checklist new ~/cv-profile backend-jvm engineering-lead
honest-cv checklist apply ~/cv-profile ~/cv-profile/checklist.md

どのような職種にも対応できます。 標準のチェックリストでは、ソフトウェア(バックエンド、フロントエンド、モバイル、データ、プラットフォーム/SRE、QA、セキュリティ、ML/AI、組み込み、ゲーム開発、アーキテクチャ、エンジニアリングリーダーシップ)、データ分析/BI、プロダクトおよびプロジェクト管理、UX デザイン、マーケティング、営業、カスタマーサポート、財務および会計、人事、サプライチェーン、看護、教育を扱っています。テンプレートは、この形式の Markdown リストです。自分で作成したもの(または誰かが共有したもの)を ~/cv-profile/checklists/ に保存すると、checklist list に表示され、checklist new でほかのチェックリストと組み合わせられます。checklist new ではパスも指定できます。テンプレートでは、same: Work Breakdown Structure = WBS のように同義語を宣言できます。求人のスコア、ギャップ、カバーレターのチェックでは、スキル名とあわせて同義語も使用されます。examples/checklists/event-planning.md を参考にしてください。自分で記入したファイルも適用できます。英語またはスペイン語(años、último uso)に対応しています。完了すると、honest-cv は成果に紐づいていない P と L のスキルを示し、アシスタントがそれぞれについて実際の事例を1つ尋ねます。

honest-cv checklist list ~/cv-profile                        # yours too, e.g. accounting
honest-cv checklist new ~/cv-profile accounting engineering-lead

ほかの種類の職種向けのチェックリストも歓迎します。CONTRIBUTING.md をご覧ください。

3つのバリアント、求人情報、そのキーワードを含む架空の完全なプロフィールについては、examples/ada/ をご覧ください。

プライバシー

  • honest-cv 自体はネットワークに接続しません。 アカウント、テレメトリー、API キーは不要です。プロフィールはお使いのマシン上にある YAML ファイルのフォルダーで、PDF エンジンとフォントもローカルで動作します。実際に確認できます。ネットワークをオフにしても、すべてのコマンドが動作します。
  • AI クライアントは別です。 ツールを通じてクライアントのモデルが読み取る内容は、チャットで共有するほかの情報と同様に、プロバイダーの規約に基づいてそのモデルのプロバイダーに送信されます。スキル、箇条書き、履歴書の本文も含まれます。
  • ファイルをクラウドにコピーするクライアントもあります。 ファイルを直接編集するために、Claude Desktop がプロフィールフォルダーへのアクセスを求め、ファイルがデバイスから外部に送信されると表示することがあります。honest-cv の編集ツールを使えば、その必要はありません。リクエストを拒否し、アシスタントにツールを使うよう依頼してください。
  • ホステッドサービスで実行すると、データはお使いのマシンの外に移ります。 Glama などのディレクトリーでは、honest-cv を自社サーバーにデプロイしたり、ブラウザーで試したりできます。動作しますが、その場合、プロフィールや履歴書はそのサービスの規約に基づいてサービス上に保存されます。実際のデータを使う場合は、ご自身のコンピューターで uvx honest-cv を実行してください。
  • データを一切マシンの外に出したくない場合は、 CLI(build、verify、score、skill)だけを使い、YAML ファイルはご自身で編集してください。

既存のデータをインポートする

honest-cv import は、JSON Resume ファイル、または LinkedIn のデータエクスポート(Settings → Data privacy → Download your data からダウンロードできる CSV の ZIP ファイル、またはブラウザーで解凍した場合はそのフォルダー)を読み込みます。アーカイブ全体をリクエストしてください。ファイルを選択したときに提示される基本版には、職歴が含まれず、見出しと概要しかありません。連絡先、職歴、学歴、資格、言語、および各職歴の実績がプロフィールに追加されます。見出しと概要も含まれている場合は、最初のバリアントも作成されるため、すぐに build を実行できます。

  • プロフィールに不足している情報だけを追加し、既存の情報を上書きすることはありません。まず --dry-run をお試しください。
  • インポートした実績には imported タグが付くため、表現を確認してください。
  • どちらの形式にもスキルのレベルが記載されていないため、スキルはレベルなしで取り込まれます。 スキルを本番環境で使ったかどうかは、どちらの形式からも判断できません。スキルは imported-skills.md に追加されるので、ご自身でチェックを付けてください。

LinkedIn のプロフィールを「PDF として保存」すると、予告なくレイアウトが変わるため、解析されません。MCP クライアントを使う場合、import_linkedin_pdf プロンプトがテキストを読み取り、各セクションを確認して承認できるように提示します。

応募状況を管理する

honest-cv apps は、プロフィールフォルダー内の applications.yaml に記録を保存します。どのバリアントとファイルをどの企業に送ったか、各ステータスとその日付(draft、applied、interview、offer、rejected、withdrawn)を管理します。同じ企業と職種を再度記録すると、既存の情報が更新されます。MCP クライアントを使う場合、履歴書やカバーレターの作成後に、アシスタントが応募の記録を提案します。また、list_applications は2週間更新のない応募を知らせます。次回のビルドで out/ が上書きされるため、送信した各ファイルのコピーを sent/ に保存します。また、リンクが期限切れになるため、求人情報の本文も posts/ に保存します。さらに、面接に向けて準備する内容も記録されます。アシスタントに 「Acme の面接に向けて何を準備する必要があった?」 と尋ねてください。

面接が決まったら、「Acme の面接対策を手伝って」 と伝えるか、interview_prep プロンプトを実行してください。保存した求人情報に含まれる各キーワードについて、honest-cv があなたのレベル、根拠、その裏付けとなる箇条書きを整理します。まず、送信した履歴書に記載されたものを優先します。アシスタントは、該当する箇条書きだけを使った STAR 形式の回答を含む想定質問、習熟レベルでしか知らないことや未経験のことに対する誠実な回答、面接で尋ねる質問を作成します。承認したメモは prep/ に保存されます。AI クライアントを使わない場合は、次を実行してください。honest-cv apps prep ~/cv-profile acme_sre -k "Kafka,Scala"

LinkedIn

honest-cv linkedin は、バリアントを LinkedIn 用のテキストに変換します。各テキストは LinkedIn の上限内に収まります。見出し(役職と最大5つの実務スキル)、概要(サマリーと実績の箇条書き)、各職歴の箇条書きから作成した説明、スキル一覧です。コピーできるよう、Markdown ファイルに書き出します。スキルは P と L のみです。LinkedIn では習熟度をラベル付けできないため、F のスキルは含めず、X のスキルは一切表示しません。MCP クライアントを使う場合、linkedin_profile プロンプトで文章を整え、check_claims で内容を確認します。

エクスポート

逆方向の変換には、honest-cv export を使うと、他の履歴書ツールやサイト向けにバリアントを JSON Resume 形式で書き出せます。ルールは履歴書と同じで、X のスキルは一切表示せず、F のスキルはそのレベルを添えて「Familiarity」グループにのみ記載します。

カバーレター

cover_letter プロンプトは、自分の箇条書きをもとに、求人情報に合わせた1ページのカバーレターを作成します。作成前に、check_claims がプロフィールと照合して文章を確認します。

  • 問題がある場合は作成を中断します: X とマークしたスキル、または習熟スキルを経験として記載している場合(Rust が F なのに「本番環境で Rust を使っています」と書く場合など。「Rust に慣れています」なら問題ありません)。
  • 警告は確認が必要な項目です: インベントリにも箇条書きにも記載されていない技術、またはプロフィールのどこにも記載されていない数値です。事実であれば、まず記録してください。そうでなければ、レターから削除されます。

レターには履歴書と同じフォントを使い、同じ ATS チェックを適用します。AI クライアントがない場合は、テキストファイルに記述し(段落は空行で区切ります)、honest-cv letter check と letter build を使ってください。

CLI

uvx honest-cv ... で任意のコマンドを実行できます。または、uv tool install honest-cv で一度インストールすれば、honest-cv と入力するだけで実行できます。

honest-cv init ~/cv-profile                        # create the profile templates
honest-cv build ~/cv-profile -v backend -l en -l es # PDF + DOCX, verified on every build
honest-cv verify any-cv.pdf --text                  # check any PDF, even one made elsewhere
honest-cv score ~/cv-profile -k "Kubernetes,Go" -p "Rust"   # coverage per variant, with gaps
honest-cv skill ~/cv-profile "Rust" L --evidence "CLI tool on GitHub"  # asks you to confirm
honest-cv import ~/cv-profile linkedin-export.zip --dry-run         # or resume.json
honest-cv export ~/cv-profile -v backend -l en                       # JSON Resume
honest-cv apps log ~/cv-profile --company Acme --role "SRE" -s applied -v platform
honest-cv apps list ~/cv-profile                                     # latest first, with counts
honest-cv apps prep ~/cv-profile acme_sre -k "Kafka,Scala"           # what backs each keyword, for the interview
honest-cv linkedin ~/cv-profile -v platform -l en                    # texts to paste into LinkedIn
honest-cv remove skill ~/cv-profile "Kafka"                          # asks you to confirm
honest-cv letter check ~/cv-profile letter.txt -k "Kubernetes,Go"     # claims your profile doesn't support
honest-cv letter build ~/cv-profile letter.txt --company Acme --role "Platform Engineer" -l en
honest-cv serve --profile ~/cv-profile              # the MCP server, over stdio

verify は任意の PDF で使えます。パーサーが抽出する内容を正確に確認するには、--text を使ってください。single_column チェックでは、パーサーが職歴と切り離してしまう、日付が右寄せされているというよくある問題も検出します。

MCP ツールとプロンプト

名前機能
init_profileコメント付きテンプレートを含むプロフィールフォルダーを作成します。
get_inventoryスキルをレベル別に、経験年数と根拠とともに返します。
set_skillスキルを追加または変更します。レベルを上げるには根拠が必要で、確認を求めます。
set_skills複数のスキルを一度に追加または変更します。レベルアップは、変更内容を列挙した1つの質問で確認します。
checklist_list組み込みのチェックリストを一覧表示します。
checklist_new組み込みのチェックリストを1つのファイルにまとめ、インベントリの内容をあらかじめ入力します。
checklist_applyチェックリストでマークしたスキルを保存し、根拠がまだ必要な項目を返します。
add_bullet実績をプールに追加します。
remove_skill, remove_bullet, remove_role, remove_publication完全に削除し、各バリアントでの使用箇所もすべて削除します。箇条書きがある職務の削除には with_bullets が必要です。クライアントは実行前に確認します。
set_contact名前、メールアドレス、電話番号、所在地、リンクなどの連絡先情報を変更します。
set_profile_details資格の一覧、講座の一覧、話せる言語の行を置き換えます。
upsert_role職務を日付順に追加するか、既存の職務の項目を変更します。
upsert_education学歴を追加または変更します。
upsert_publication本人が執筆した書籍、記事、論文を追加または変更します。各バリアントにはすべての出版物、またはそのバリアントに記載された出版物が表示されます。
save_variantバリアントを追加または置き換えます。保存前にすべての参照を確認します。
list_variants継承後のバリアントを、箇条書きのテキストと、どのバリアントでも使用されていない箇条書きとともに一覧表示します。
build_cvPDF および/または DOCX を生成し、検証します。
verify_pdf任意の PDF に ATS チェックを実行し、抽出したテキストを返します。
score_job各バリアントのキーワード網羅率を測定します。キーワードはクライアントが抽出します。
gap_report不足しているキーワードを、それぞれに対して正直にできる対応ごとに分類します。
prompt interview質問を1つずつ行い、インベントリと箇条書きプールを埋めます。
check_claims任意のテキストをプロフィールと照合します。X スキルや、経験として提示された知識・習熟度をブロックし、プロフィールに示されていない内容にフラグを立てます。
build_letterATS チェックを CV と同じ条件で実行し、1ページのカバーレターを PDF および DOCX として生成します。check_claims が問題を検出している間は生成を拒否します。
prompt tailor_for_jobバリアントをスコアリングしてギャップを説明し、バリアントを調整して再生成します。
prompt cover_letter箇条書きの実績をもとに求人票向けのレターを作成し、記載内容を確認して生成します。
import_profileJSON Resume または LinkedIn のデータエクスポートをインポートし、不足している項目のみを追加します。LinkedIn の PDF の場合はテキストを返します。
export_json_resumeバリアントを JSON Resume としてエクスポートします。X スキルは表示されず、F スキルにはラベルが残ります。
log_application応募(企業、職務、CV バリアント、送信ファイル、求人票のテキスト、準備する内容)または新しいステータスを、その日付とともに記録します。
linkedin_profileバリアントから LinkedIn の見出し、「自己紹介」、職務の説明、スキル(P と L のみ)を、LinkedIn の制限内で作成します。
list_applications応募を新しい順に一覧表示し、ステータス別の件数と、14日以上更新がない応募を示します。
interview_prep応募について、保存済みの求人票と、キーワードごとのレベル、根拠、それを裏付ける箇条書きを表示します。面接準備のメモを保存します。
prompt import_linkedin_pdfLinkedIn の「PDFで保存」で作成した PDF を、セクションごとに確認を得ながらプロフィールに変換します。
prompt linkedin_profile記載内容を追加せず、check_claims で確認しながら、バリアントの LinkedIn 用テキストを整えます。
prompt interview_prep面接に備え、想定質問、自分の箇条書きをもとにした STAR 形式の回答、ギャップについての正直な回答を準備します。

ATS による保証

テンプレートでは、以下を徹底しています。verify はビルドごとにこれらをチェックし、テストスイートは Linux、macOS、Windows 上の CI で実行されます。

  • 1 段組みです。レイアウト用の表、画像、アイコン、ヘッダー、フッターはありません。
  • 合字とカーニングは無効で、ハイフネーションは行われません。また、「CI/CD」、URL、メールアドレスが行をまたいで分割されることはありません。
  • 読み取り順はソースの順序と同じです。日付は職務と同じ行に配置されます。
  • テキストは pypdf と pdfminer.six の両方で抽出でき、両者の結果は一致します。
  • フォント(Calibri とメトリクス互換の Carlito)は埋め込まれ、どのマシンでも同一です。

開発

uv sync
uv run pytest
uv run honest-cv build examples/ada -l en -l es

リポジトリの .mcp.json は、架空のプロファイルを持つ honest-cv-dev を登録しているため、このフォルダー内の Claude Code で作業コピーを使用できます。CONTRIBUTING.md を参照してください。

ライセンス

MIT です。同梱の Carlito フォントは SIL Open Font License に基づいています。src/honest_cv/render/fonts/OFL.txt を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。