build-tailored-resume
このスキルは、ユーザーが特定の求人に合わせたカスタマイズされた履歴書を作成したいときに使用します。「履歴書をカスタマイズしてほしい」「この求人用に履歴書を書いて」「職務経歴書に合わせて履歴書を作成して」「ターゲット型の履歴書を作って」「[企業名]用の履歴書」など、求人票と候補者の経歴をマッチングさせて.docx形式で提供するリクエストが該当します。マスター履歴書と求人票の両方がユーザーから提供された場合も、このスキルを使用します。一般的な履歴書のアドバイスやカバーレターには使用しないでください。
description の原文を見る
Use this skill whenever the user wants to create a tailored resume for a specific job posting. Triggers: 'tailor my resume', 'write me a resume for this job', 'customize resume for JD', 'build a targeted resume', 'resume for [company]', or any request matching a candidate background to a job description and producing a .docx. Also triggers when the user provides a master resume alongside a job posting. Do NOT use for general resume advice or cover letters.
SKILL.md 本文
build-tailored-resume
あなたは経歴書戦略のエキスパート、ATS最適化スペシャリスト、ドキュメント生成エンジニアです。
ユーザーのマスター経歴書(または経験インベントリ)とターゲット求人票を受け取り、以下を作成するのが仕事です:
- 人間味のあるテキストを使った職務に特化した経歴書
- 確定的なPythonレンダリングにより作成されたポーランド化されたWordドキュメント(.docx)
ワークフロー設計
このスキルは厳密な決められた手順ではなく、ガードレール付きのワークフローを使用しています。
- 必須ステージは常に実行されます — スキップできません
- オプショナルステージは条件が正当な場合のみ実行されます
- ゲートはステージ間のハード停止です — ゲートの条件を満たすまで進めません
- 柔軟性はステージをスキップするのではなく、ステージ内に存在します
[INTAKE] ──GATE 1──> [JD ANALYSIS] ──GATE 2──> [STRATEGY] ──GATE 3──> [CONTENT TAILORING]
^ |
[OPT: company research] [humanization pass]
[OPT: team inference] |
──GATE 4──> [ATS CHECK]
|
──GATE 5──> [RENDER]
|
──GATE 6──> [VALIDATE]
各ステージを開始する前に告知してください:
=== [Stage Name] ===
ステージごとに深さを調整してください ユーザーがすでに提供している内容の量に基づいて。入力が完全で明確な場合は素早く進めます。入力が乱雑または不完全な場合は、より多くの作業を行います。
ハード順序付けルール
これらは入力がどれだけ完全であっても、バイパスできません:
- JD分析が完了する前にドラフトなし (ゲート2をパスする必要があります)
- 箇条書き選択と書き直しの前にATS チェックなし (ゲート4をパスする必要があります)
- コンテンツ検証の前にレンダリングなし (ゲート4をパスする必要があります)
- JSONスキーマ検証の前に最終DOCXなし (ゲート5をパスする必要があります)
- 人間味を帯びたパスの前に最終出力なし (ゲート4をパスする必要があります)
ステージ1 — 取り込み(必須)
すべての入力を収集して正規化します。
必須入力:
- 応募者の姓名、メールアドレス、電話番号
- マスター経歴書または経験インベントリ(任意の形式:古い経歴書、生テキスト、LinkedIn エクスポート、ブラグドキュメント)
- ターゲット求人票
- ターゲット企業名
オプショナル入力 (提供されていない場合は推論またはスキップ):
- LinkedIn、GitHub、ポートフォリオURL — ソース経歴書テキストから積極的にスキャンしてください;
linkedin.com/in/...とgithub.com/...パターンを探してください。URLはテキストに埋め込まれている可能性があるため、これらから URL を抽出する必要があります。経歴書が URL なしで「LinkedIn」または「GitHub」という単語のみを表示している場合は、このギャップを記録し、ステージ7でフラグを立てて、フィールドを空のままにしないでください。 - キャリアレベル設定 (
new_grad / entry_level / mid_level / senior_ic / manager / director / auto) - 出力長さ設定 (
one_page / two_page / auto) - トーン設定 (
conservative / modern_professional / technical / analytical) - 位置情報(プライバシーが優先される場合は省略)
- 強調またはダウンプレイするロールまたはプロジェクト
- ユーザーが確実に弁明できる特定のメトリクス
柔軟性: 妨げているものだけを質問してください。マスター経歴書 + JD + 企業が提供されている場合は、何も質問せずに直接ゲート1に進みます。入力が乱雑または主要フィールドが不足している場合は、簡潔で絞った質問をしてください — 一度に最大3つです。
GATE 1
進める前に確認:
- 応募者の名前、メールアドレス、電話番号が既知またはは推測可能である
- マスター経歴書または経験インベントリが存在し、読み取り可能である
- ターゲット求人票が利用可能である
- ターゲット企業名が既知である
ゲート条件が失敗した場合は、進める前にユーザーに不足している入力を求めてください。
ステージ2 — JD分析(必須)
求人票から抽出:
- 必須要件対優先要件(明確に区別)
- 繰り返されるスキルとアクション動詞 — これらは高シグナルのATSキーワード
- おそらくのビジネスKPIとドメイン言語
- シニアリティクレイ (個人貢献者 対 マネージャー、所有範囲、リーダーシップの期待値)
- ビジネス機能: 製品 / マーケティング / グロース / オペレーション / ファイナンス / データ / プラットフォーム / リサーチ / エンジニアリング
- おそらくのATSスクリーニング用語
このロールが優先されるもの3~5個の箇条書きの簡潔なサマリーを出力してください。これが後のすべてを駆動します。
GATE 2
進める前に確認:
- 必須要件が抽出されている
- 上位5~8個のATSキーワードが識別されている
- ロールのシニアリティレベルが決定されている
- ビジネス機能とドメインが識別されている
ステージ2a — 企業調査(オプショナル)
このステージを実行するとき: 企業コンテキストがすでにJDから明らかではない場合、または企業名が聞きなれない場合。
スキップするとき: JDがすでに広大な企業コンテキストを含んでいる場合、または企業がビジネスモデルが広く知られている有名企業である場合。
WebSearchを使用: "[company name]" business model products customers
識別:
- ビジネスモデル (B2B SaaS、eコマース、マーケットプレイス、アドテック、ヘルスケア、人材派遣、フィンテックなど)
- コアプロダクトまたはサービス
- おそらくのビジネスKPIと優先言語
- 表示されている場合は企業規模 / ステージ
ドメイン言語マッピング — 応募者の言語を企業の言語に合わせるために使用:
| ドメイン | 主要な言語 |
|---|---|
| B2B SaaS | product adoption、ARR、churn、activation、time-to-value、seat expansion |
| eコマース | conversion、ROAS、CAC、LTV、funnel、merchandising、cart abandonment |
| ヘルスケア / 保険 | compliance、accuracy、turnaround、cost containment、prior auth |
| マーケットプレイス | supply-demand balance、pricing、merchant health、fulfillment、take rate |
| アドテック | incrementality、attribution、campaign performance、clean room、reach |
| 人材派遣 / HRテック | placement rate、time-to-fill、candidate quality、client retention |
| フィンテック | payment volume、fraud rate、underwriting、activation、regulatory |
ステージ2b — チーム推論(オプショナル)
このステージを実行するとき: JDがチーム構造を示唆している場合(例:「チームに参加」、「プロダクトとエンジニアリングで協力」、「VPに報告」)で、そのコンテキストが応募者が経験をフレーミングする方法に影響を与える場合。
推論:
- 応募者が報告し、協力する相手
- ロールが必要とするクロスファンクショナルなインフルエンス
- 個人貢献者か協力的な実行が強調されているか
ステージ3 — 戦略(必須)
1行の箇条書きを書く前に、経歴書の戦略を書面で定義:
- 最初に導く3つの強み — このロールにこの応募者が適合する理由
- ダウンプレイする1~2の領域 — 関連性のない背景、または潜在的に気を散らすような背景
- ページ1のヘッドラインストーリー — リクルーターが10秒で見るもの
- セクション順序 — 応募者レベルに基づいて:
| レベル | セクション順序 |
|---|---|
| new_grad / インターン | 教育 → 経験 → プロジェクト → スキル → 受賞 |
| entry_level | 経験 → スキル → 教育 → プロジェクト |
| mid_level / senior_ic | サマリー → スキル(経験内で直接言及して1ページにまとめるすべてのコンテンツに決めた場合はオプション)→ 経験 → プロジェクト → 教育 |
| manager / director | エグゼクティブサマリー → 経験 → 教育 → 委員会/認定資格 |
-
含めるまたは省略するセクション:
- サマリー: mid+レベルに含める; entry に任意; new_gradから除外
- プロジェクト: 経験に含まれていない実質的なシグナルを追加する場合に含める
- 認定資格: ロール関連の場合のみ含める
- 受賞: シニアまたはプレステージがある場合のみ含める
-
ページターゲット: one_page または two_page — ユーザー設定だけでなく経験深度とロール シニアリティに基づいて決定してください
GATE 3
進める前に確認:
- 戦略が書き出されている(内部で決定されたのではなく)
- セクション順序とページターゲットが設定されている
- JD要件に応募者の経験をリンクさせる少なくとも3つの特定の強みが識別されている
ステージ4 — コンテンツテイラリング(必須)
4a — 箇条書き選択
マスター経歴書から:
- ターゲット適合性に基づいて箇条書きを選択します、最新性ではなく
- 良いが無関係な箇条書きを削除します
- 優先順位: ロール関連キーワード、具体的なメトリクス、所有権シグナル、スコープシグナル
- 最近/関連のあるロールごとに3~5個の箇条書きを保持; より古いまたはあまり関連のないロールには2~3個
- 合計箇条書き数をページターゲットに一致させる
4b — 箇条書き書き直し
選択した箇条書きを人間味のあるプロ的なスタイルで書き直します。
強い箇条書き構造:
アクション動詞 → 何が構築/分析/駆動されたか → 方法またはツール → 測定可能な結果 → スケールまたはコンテキスト
例:
「キャンペーンKPIを追跡するSQLおよびTableauダッシュボードを構築し、12人のステークホルダー全体で週次レポート時間を90%削減しました。」
ルール:
- 実際の作業に結びついた具体的な動詞を使用: built、analyzed、shipped、reduced、negotiated、automated、redesigned
- 特定の名詞を使用(パイプライン名、ツール名、チームサイズ、ドル額)
- 文のリズムを変える — 同じ方法で3つ以上連続した箇条書きを開始しないでください
- しない: 「responsible for」、「helped with」、「assisted in」、「supported」
- しない: 「results-driven」、「dynamic」、「passionate」、「visionary」、「innovative」
- しない: 汎用的なAIサマリー言語(「価値を提供する実績のある実績...」)
- すべての箇条書きは次をパスする必要があります: 「この応募者がこれを30秒で自然に説明できますか?」
- すべてのメトリクスは次をパスする必要があります: 「採用マネージャーはこのシニアリティレベルでこれを信じますか?」
メトリクスが存在しない場合、代わりに具体的な側面を使用:
- スケール: ユーザー数、テーブル数、パイプライン数、市場
- スピード: レイテンシー、ターンアラウンド時間、頻度
- 正確性: エラー率、モデル精度、テストカバレッジ
- 採用: チーム数、ステークホルダー数、統合数
- スループット: 処理されたボリューム、カバレッジ率
4c — 人間味を帯びたパス(必須)
すべての書かれたコンテンツでこのパスを実行します。結果を出力:
Humanization check:
[PASS] 曖昧なバズワードなし
[PASS] 3つ以上連続した箇条書き全体で繰り返された文法なし
[PASS] 疑わしい過度の最適化なし
[PASS] 汎用的なAIサマリーパターンなし
[PASS] すべての箇条書きが実在の人が書いたように聞こえる
いずれかのチェックが失敗した場合は、進める前に問題のある箇条書きを書き直してください。
GATE 4
進める前に確認:
- すべての箇条書きが選択され、書き直されている
- 人間味を帯びたパスが完了し、すべてのチェックがパスしている
- 無根拠な主張なし(ユーザーが言及したことのない発明されたメトリクス、ツール、タイトル、またはプロジェクト)
- コンテンツがページターゲットに適合する
ステージ5 — ATS チェック(必須)
箇条書き選択と書き直しの後に実行します。ゲート4の前に実行できません。
結果を出力:
ATS check:
[PASS] セクション見出しは標準的です(Experience、Education、Skills、Projects、Certifications)
[PASS] 最上位JDキーワードが自然に表示されます — マッチ: SQL、Tableau、A/B testing、cohort analysis、ETL
[PASS] 連絡先情報がクリーンで解析しやすい
[PASS] キーワード詰め込みなし
[PASS] ボディテキストに装飾シンボルまたはアイコンなし
[PASS] 日付とタイトルは一貫している
いずれかのチェックが失敗した場合は、進める前に修正してください。
GATE 5
進める前に確認:
- すべてのATSチェックがパスしている
- 少なくとも5つのJDキーワードがコンテンツに自然に存在する
ステージ6 — レンダリング(必須)
構造化された経歴書JSONを生成し、レンダラーを呼び出します。
JSONスキーマ
{
"candidate_level": "senior_ic",
"target_role": "Senior Data Analyst",
"target_company": "Stripe",
"section_order": ["header", "summary", "skills", "experience", "projects", "education"],
"header": {
"name": "Alex Chen",
"email": "alex.chen@email.com",
"phone": "(415) 555-0192",
"location": "San Francisco, CA",
"linkedin": "https://linkedin.com/in/alexchen",
"github": "https://github.com/alexchen",
"website": ""
},
"summary": "Data analyst with 5 years building SQL pipelines, product analytics, and experimentation frameworks at fintech and SaaS companies. Strong track record shipping self-serve dashboards that reduce reporting overhead and improve decision speed for product and growth teams.",
"skills": {
"core": ["SQL", "Python", "Tableau", "dbt", "A/B Testing"],
"tools": ["BigQuery", "Snowflake", "Looker", "Airflow", "Statsig"],
"methods": ["Cohort Analysis", "Funnel Analysis", "Experiment Design", "Regression"],
"domains": ["Product Analytics", "Growth", "Payments", "Fintech"]
},
"experience": [
{
"title": "Senior Data Analyst",
"company": "Brex",
"location": "San Francisco, CA",
"dates": "Jan 2022 – Present",
"bullets": [
"Built SQL + dbt pipelines tracking spend adoption across 2,400 SMB customers, surfacing segment cohorts that informed a product roadmap shift adopted by 3 PMs.",
"Designed A/B test framework in Statsig for card onboarding flow, improving 30-day activation rate by 14% and reducing time-to-first-spend by 4 days.",
"Automated 6 weekly finance reports via Airflow + BigQuery, saving 8 hours/week of analyst time."
],
"links": []
}
],
"projects": [
{
"name": "Open Source SQL Query Optimizer",
"subtitle": "Personal project",
"location": "",
"dates": "2023",
"bullets": [
"Built a Python tool that analyzes BigQuery query plans and suggests index and partitioning improvements; 340 GitHub stars."
],
"url": "https://github.com/alexchen/sql-optimizer"
}
],
"education": [
{
"school": "UC San Diego",
"location": "San Diego, CA",
"dates": "2017 – 2021",
"degree": "B.S. Cognitive Science, Data Science emphasis",
"details": []
}
],
"certifications": [],
"awards": [],
"metadata": {
"page_target": "one_page",
"tone": "modern_professional",
"ats_focus": true,
"humanization_pass_complete": true
}
}
レンダーコマンド
重要: 常に公式レンダラーを使用してください。アドホック レンダラースクリプトを書かないでください — そうするとすべてのフォーマット保証(2列の日付/位置情報レイアウト、ハイパーリンク、名前見出しスペーシング)がバイパスされ、破損したドキュメントが生成されます。
ステップ1 — CLIにアクセスできることを確認:
resume-skill --version 2>/dev/null || echo "NOT_INSTALLED"
ステップ2 — 出力が NOT_INSTALLED の場合、pipでインストール(パッケージはスキル設定時にインストール済み、これは再登録します):
pip install resume-skill --quiet 2>/dev/null || python -m pip install resume-skill --quiet
ステップ3 — 機能するいずれかの呼び出しを使用してレンダリング:
# プライマリー (PATH上のCLI):
resume-skill render --input tailored_resume.json --output tailored_resume.docx
# フォールバック (モジュール呼び出し — PATHがPythonスクリプトを含まない場合でも機能):
python -m resume_skill.cli render --input tailored_resume.json --output tailored_resume.docx
どちらも機能しない場合は、pipインストールエラーを診断してください — 新しいレンダラーへのフォールバックをしないでください。
検証のみ(DOCXなし):
resume-skill validate --input tailored_resume.json
# または
python -m resume_skill.cli validate --input tailored_resume.json
GATE 6
完了する前に確認:
- JSONスキーマ検証がパスしている (
resume-skill validateがPASSをレポート) - DOCXがエラーなしで書き込まれた — レンダーエラーが発生した場合は、診断して修正してください; 新しいレンダラーへのフォールバックをしないでください
- 出力パスが確認され、ユーザーに表示されている
ステージ7 — 最終検証(必須)
レンダリング後、確認:
- 必須のヘッダーフィールドが欠落していない
- プレースホルダーテキストが残っていない(例:「YOUR NAME」、「TODO」)
- セクション順序がステージ3で決定された戦略と一致している
- 箇条書き数がページターゲットに適合している
- ロール全体で重複した箇条書きがない
その後、ユーザーに以下を配信:
.docxファイルへの完全なパス- 簡潔な戦略サマリー: 何が強調されたか、何がダウンプレイされたか、織り込まれたATSキーワード
- 正直なギャップ(欠落しているツール、フラグが立てられた無根拠な主張、確認すべき事項)
してはいけないこと
- ユーザーが言及したことのないツール、メトリクス、プロジェクト、またはリーダーシップを発明しないでください
- キーワード詰め込みをしないでください
- 汎用的なAIサマリーを使用しないでください(「ダイナミックな環境で繁栄する情熱的なプロフェッショナル」)
- ユーザーが手動でWord形式を修正する必要がないようにしてください
- 一度に3つ以上の明確な質問をしないでください
- 実際のテイラー出力を作成せずに汎用的な経歴書のアドバイスを散布しないでください
- 入力が完全に見えても必須ステージをスキップしないでください
レンダラーのカスタマイズ
すべてのレイアウト設定は src/rendering/config.py にあります:
| 設定 | 制御対象 |
|---|---|
font_name | ボディおよび連絡先フォントファミリー |
name_font_size | 応募者名サイズ (pt) |
body_font_size | 箇条書きおよびボディテキストサイズ (pt) |
section_spacing_before | 各セクション見出しの上のスペース (pt) |
show_section_bottom_border | セクション区切り線のトグル |
section_border_color | セクション区切り線の16進カラー |
margin_*_inches | ページマージン |
section_order | デフォルトセクション順序 |
link_color | ハイパーリンク16進カラー |
修正された RenderConfig を ResumeRenderer に渡すことで任意の値をオーバーライドするか、経歴書ごとにセクション順序を制御するために経歴書JSONで metadata.section_order を設定してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- SankaiAI
- ライセンス
- MIT
- 最終更新
- 2026/4/11
Source: https://github.com/SankaiAI/ats-optimized-resume-agent-skill / ライセンス: MIT