[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71V52W009CTK4EMEX1Z5DBZ":3,"skill-same:01M71V52W009CTK4EMEX1Z5DBZ":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M71V52W009CTK4EMEX1Z5DBZ","career-coach",null,"Produces a skill-gap analysis and a phased learning roadmap for a candidate targeting a specific role (using hybrid search on the career_paths and skills_taxonomy collections), AND retrieves compensation benchmarks — base\u002Ftotal\u002Fpercentiles, benefits norms, and grounded negotiation ranges — for a role at a given seniority and location (using hybrid search on the compensation_data collection). Use this skill when a candidate asks what skills they need for a target role, how to transition between roles, how to reach a more senior level, wants a learning\u002Fdevelopment plan, OR asks what a role pays, what salary to expect or ask for, how pay varies by location or seniority, or how to frame a compensation negotiation.","mongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore","mongodb-partners","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9803686?v=4","01M71V4VSPZ03KW81YPCH5X0TW","01M71V4VT9HSQY1MYK6BRYR1CK",19,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fconfig\u002Fskills\u002Fcareer-coach\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"career","coach","career coach","how to","senior","when","transition","candidate","at","targeting","pay","Hybrid Search","data collection","search","roadmap","ask","plan","how","analysis","collection","2026-11-10 13:02:02",false,"---\nname: career-coach\ndescription: >-\n  Produces a skill-gap analysis and a phased learning roadmap for a candidate targeting a\n  specific role (using hybrid search on the career_paths and skills_taxonomy collections),\n  AND retrieves compensation benchmarks — base\u002Ftotal\u002Fpercentiles, benefits norms, and\n  grounded negotiation ranges — for a role at a given seniority and location (using hybrid\n  search on the compensation_data collection). Use this skill when a candidate asks what\n  skills they need for a target role, how to transition between roles, how to reach a more\n  senior level, wants a learning\u002Fdevelopment plan, OR asks what a role pays, what salary to\n  expect or ask for, how pay varies by location or seniority, or how to frame a compensation\n  negotiation.\nmetadata:\n  author: anujpanchal\n  version: \"2.0\"\n  domain: recruitment\n---\n\n# Career Coach Skill\n\nThis skill covers two workflows. Pick the one(s) that match the candidate's request:\n\n- **Career development** (Steps 1–4) — skill-gap analysis and a phased learning roadmap.\n- **Compensation** (Steps 5–7) — salary\u002Fbenefits benchmarks and a grounded negotiation range.\n\nIf the candidate asks about both (e.g. \"what does this role pay and what skills do I need?\"),\nrun both workflows and present the answer in two clearly-labelled sections.\n\n## What You Can Do\n\n### Career development\n\n1. **Resolve the candidate's current skill set** — from the skills stated in the message, or\n   from a stored `candidates` profile when a `candidateId` is provided.\n2. **Retrieve the target role's requirements and progression path** — run a hybrid vector +\n   full-text search against the `career_paths` collection.\n3. **Compute the skill gap** — diff the candidate's current skills against the target role's\n   `requiredSkills`, classifying each as covered, partial, or missing.\n4. **Assemble a phased learning roadmap** — enrich each missing\u002Fpartial skill with learning\n   resources from the `skills_taxonomy` collection and order them into time-boxed phases.\n\n### Compensation\n\n5. **Resolve the compensation query** — extract the role title, seniority, and location the\n   candidate is asking about.\n6. **Retrieve matching benchmarks** — run a hybrid vector + full-text search against the\n   `compensation_data` collection, pre-filtered by `seniority` and (when possible) region.\n7. **Present a grounded band and negotiation range** — translate the retrieved percentiles\n   into a plain-language pay band, benefits summary, and an \"ask\" range, all sourced from the\n   data.\n\n---\n\n## Step 1 — Resolve Current Skills and Target Role\n\nWhen a candidate asks about skills, a transition, or a development plan:\n\n1. Determine the **target role** from the conversation (e.g. \"Machine Learning Engineer\",\n   \"Staff Backend Engineer\"). If it is not clear, ask **one** clarifying question and stop.\n\n2. Determine the **candidate's current skills**:\n   - If the message lists skills, seniority, or years of experience, use those directly.\n   - If the candidate provides a `candidateId`, call `mongodb_query` → `findOne` on the\n     `candidates` collection with `{ \"candidateId\": \"\u003Cid>\" }` and\n     `\"projection\": { \"embedding\": 0 }`. Use `profile.skills`, `profile.seniority`, and\n     `profile.yearsExperience`.\n   - If neither is available, ask the candidate to paste their key skills or their current\n     role, then stop.\n\n3. Build a `queryText` string in this format for the target-role search:\n   ```\n   \u003Ctarget role title>\n   Current seniority: \u003Ccandidate seniority or \"unspecified\">\n   Current skills: \u003Ccomma-separated current skills>\n   Goal: transition to \u003Ctarget role title>\n   ```\n\n---\n\n## Step 2 — Hybrid Career-Path Search\n\nPerform a hybrid search against the `career_paths` collection in **a single tool call**. The\nMCP runtime runs the vector and lexical legs in parallel and merges them with Reciprocal Rank\nFusion server-side — do **not** run a separate `$search` aggregation or compute RRF in-band.\n\n### Single hybrid call\n\nCall `mongodb_vector_search` with:\n- `collection`: `career_paths`\n- `queryText`: the string built in Step 1.3. The runtime embeds this server-side for the\n  vector leg and uses it verbatim for the BM25 lexical leg. **Do NOT call\n  `embed_multimodal_content` — the search runtime embeds `queryText` internally.**\n- `indexName`: `career_paths_vector_index`\n- `hybrid`: `true`\n- `lexicalIndex`: `career_paths_text_index`\n- `lexicalPath`: `description` — single text-indexed field the BM25 leg searches. It carries\n  the densest mix of role title, required-skill, and progression signal. (Atlas Search hybrid\n  mode is single-path; multi-field recall is recovered by the vector leg.)\n- `limit`: 3 — final fused result count.\n- `fetchK`: 8 — per-leg over-fetch before RRF merge.\n\nEach result carries a `_score` (RRF score) and a `_sources` array (`[\"vector\"]`,\n`[\"lexical\"]`, or both). Use the top-ranked path whose `targetRole` best matches the\ncandidate's stated target. Do not re-rank or re-fuse yourself.\n\n---\n\n## Step 3 — Compute the Skill Gap\n\nDiff the candidate's current skills against the chosen path's `requiredSkills` array:\n\n- **Covered** — the candidate already has this skill (exact or clear synonym match).\n- **Partial** — the candidate has a related\u002Ffoundational skill but not the specific one.\n- **Missing** — the candidate has no evidence of this skill.\n\nFor every **missing** and **partial** skill, look up learning resources. In **one**\n`mongodb_query` → `find` call on `skills_taxonomy`, pass a filter matching all the gap\nskills at once, e.g.:\n\n```json\n{\n  \"collection\": \"skills_taxonomy\",\n  \"operation\": \"find\",\n  \"filter\": { \"skillId\": { \"$in\": [\"\u003CskillId1>\", \"\u003CskillId2>\"] } },\n  \"projection\": { \"embedding\": 0 }\n}\n```\n\nIf the path stores `requiredSkills` as skill names rather than IDs, filter on\n`{ \"name\": { \"$in\": [ ... ] } }` instead. Use `references\u002Fcollections-schema.md` to confirm\nthe exact field names before constructing the query.\n\n---\n\n## Step 4 — Present the Skill Gap and Roadmap\n\nPresent the result in this structure:\n\n1. **Where you are** — one sentence summarizing the candidate's current level and strongest\n   relevant skills (the covered set).\n2. **The gap** — a short list of missing and partial skills, each with a one-line note on why\n   the target role needs it (from the path's `requiredSkills` notes when present).\n3. **Your roadmap** — the path's phased plan. Order the phases using the path's `milestones`\n   (each milestone has an `order`, `title`, `skills`, and `estimatedWeeks`). Under each\n   milestone, list the concrete learning resources retrieved from `skills_taxonomy`\n   (`name`, `resourceType`, and `resources` links\u002Ftitles) verbatim.\n4. **Estimated timeline** — sum the `estimatedWeeks` across milestones the candidate still\n   needs, and state it as an approximate range.\n\nCite `pathId` when you reference a specific progression path.\n\n---\n\n## Step 5 — Resolve Role, Seniority, and Location (compensation)\n\nWhen a candidate asks about pay, expectations, or negotiation:\n\n1. Extract from the conversation:\n   - **Role title** (e.g. \"Machine Learning Engineer\", \"Staff Backend Engineer\").\n   - **Seniority** — one of `junior` | `mid` | `senior` | `staff`. If not stated, infer from\n     the role title or the candidate's stated years of experience; otherwise leave unset.\n   - **Location** — a city\u002Fregion or \"remote\". Map it to a `region` value where possible\n     (see `references\u002Fcollections-schema.md` for the region enum). If not stated, leave unset\n     and note that the benchmark will be nationwide.\n\n2. If the **role** is missing, ask **one** clarifying question and stop. Seniority and\n   location are optional — proceed without them if not provided.\n\n3. Build a `queryText` string in this format:\n   ```\n   \u003Crole title>\n   Seniority: \u003Cseniority or \"unspecified\">\n   Location: \u003Clocation or \"any \u002F remote\">\n   ```\n\n---\n\n## Step 6 — Filtered Hybrid Compensation Search\n\nPerform a hybrid search against the `compensation_data` collection in **a single tool call**.\nThe MCP runtime runs the vector and lexical legs in parallel and merges them with Reciprocal\nRank Fusion server-side — do **not** run a separate `$search` aggregation or compute RRF\nin-band.\n\n### Single hybrid call\n\nCall `mongodb_vector_search` with:\n- `collection`: `compensation_data`\n- `queryText`: the string built in Step 5.3. The runtime embeds this server-side for the\n  vector leg and uses it verbatim for the BM25 lexical leg. **Do NOT call\n  `embed_multimodal_content` — the search runtime embeds `queryText` internally.**\n- `indexName`: `compensation_vector_index`\n- `hybrid`: `true`\n- `lexicalIndex`: `compensation_text_index`\n- `lexicalPath`: `role` — single text-indexed field the BM25 leg searches. It carries the\n  densest role\u002Ftitle signal. (Atlas Search hybrid mode is single-path; multi-field recall is\n  recovered by the vector leg.)\n- `limit`: 3 — final fused result count.\n- `fetchK`: 8 — per-leg over-fetch before RRF merge.\n- `filter`: when seniority and\u002For region are known, pass them as pre-filter fields, e.g.\n  `{ \"seniority\": \"senior\", \"region\": \"us-south\" }`. Only include keys you actually resolved\n  in Step 5. `seniority` and `region` are declared as `filter` fields on the vector index.\n\nEach result carries a `_score` (RRF score) and a `_sources` array. Use the top-ranked record\nwhose `role`, `seniority`, and `region` best match the query. Do not re-rank or re-fuse\nyourself.\n\n---\n\n## Step 7 — Present the Band and Negotiation Range\n\nFrom the chosen benchmark document, present:\n\n1. **Coverage line** — the exact `role`, `seniority`, `region`, and `asOf` date the benchmark\n   applies to, so the candidate knows the basis.\n2. **Pay band** — from `baseSalary` and `totalComp`, show:\n   - Base: `p25`–`p75` as the typical range, and note the `p50` (median).\n   - Total comp: `p25`–`p75`, and note the `p50`.\n   - State the `currency` and whether figures are annual.\n3. **Benefits & equity** — summarize `benefits` (array of strings) and `equityNote` verbatim.\n4. **Suggested ask range** — frame a realistic ask: for a strong candidate, anchor near the\n   `p50`–`p75` of total comp; for a stretch, mention `p90` if present. Present this as a range\n   and clearly label it as guidance derived from the retrieved percentiles.\n\nCite `benchmarkId` when you reference a specific record.\n\n---\n\n## References\n\n**References** (on demand): the API only serves files for skills that are **allowed for this\nagent** and **already activated** (`activate_skill`, or pre-activation for specialists). Call\n**`read_skill_resource`** with **`skillName`** `career-coach` and **`path`** (relative to that\nskill folder), e.g.:\n\n- `references\u002Fcollections-schema.md` — Full document schemas, index definitions, and field\n  notes for the `career_paths`, `skills_taxonomy`, and `compensation_data` collections\n  (including the `region` enum and percentile fields). Load this when you need to verify field\n  names, the region mapping, filter parameters, or construct precise queries.\n\nFor the **career-coach** specialist agent, this skill is **pre-activated** at turn start, so\n`read_skill_resource` works immediately. If you see `skill_not_activated`, run\n**`activate_skill`** with `career-coach` first.\n\n---\n\n## Edge Cases\n\n**Target role not found in `career_paths`:** If the hybrid search returns no path whose\n`targetRole` reasonably matches, tell the candidate honestly and suggest a closely related\nrole that does exist, or ask them to rephrase. Do not invent a progression path.\n\n**Candidate already meets all requirements:** If every `requiredSkill` is covered, say so and\npresent the path's advanced\u002Fnext-level milestones (highest `order`) as stretch goals.\n\n**No learning resources for a gap skill:** If `skills_taxonomy` has no document for a gap\nskill, list the skill in the gap section and note that no structured resource is on file yet —\ndo not fabricate a course or link.\n\n**Only a `candidateId` and no target role:** Ask the candidate which role they are targeting\nbefore running any search.\n\n**No exact compensation match for the combination:** If no `compensation_data` record matches\nthe role+seniority+region, relax the pre-filter to seniority-only or role-only and note to the\ncandidate that the figure is a broader benchmark, not their exact combination. Never\nextrapolate a number that is not in the data.\n\n**Compensation location not covered:** If the region has no data, present the\nnationwide\u002Fremote benchmark for the role and say the location-specific figure is not on file.\n\n**Stale benchmark:** If the top compensation result's `asOf` is old, present it but flag the\ndate so the candidate can weigh it.\n\n**Candidate asks to negotiate a specific offer:** Provide the grounded range and framing, but\ndo not promise an outcome and do not give legal or tax advice.\n\n## Boundaries\n\n- This skill handles skill-gap analysis, role transitions, learning roadmaps, AND\n  compensation benchmarking, benefits norms, and negotiation framing.\n- Do not research or evaluate specific employers — that belongs to the company-research\n  specialist.\n- Do not match the candidate to open job listings or write interview prep — that belongs to\n  the job-match specialist.\n- Do not give legal, tax, or immigration advice, and never promise a specific offer outcome.\n- Never reveal raw MongoDB `_id` values; use `pathId`, `skillId`, `candidateId`, or\n  `benchmarkId`.\n- Never fabricate career paths, skills, courses, certifications, timelines, figures, ranges,\n  benefits, or percentiles. All responses must be grounded in collection data, and all\n  compensation numbers must be presented as ranges with their source basis.\n","# Career Coach Skill\n\nThis skill covers two workflows. Pick the one(s) that match the candidate's request:\n\n- **Career development** (Steps 1–4) — skill-gap analysis and a phased learning roadmap.\n- **Compensation** (Steps 5–7) — salary\u002Fbenefits benchmarks and a grounded negotiation range.\n\nIf the candidate asks about both (e.g. \"what does this role pay and what skills do I need?\"),\nrun both workflows and present the answer in two clearly-labelled sections.\n\n## What You Can Do\n\n### Career development\n\n1. **Resolve the candidate's current skill set** — from the skills stated in the message, or\n   from a stored `candidates` profile when a `candidateId` is provided.\n2. **Retrieve the target role's requirements and progression path** — run a hybrid vector +\n   full-text search against the `career_paths` collection.\n3. **Compute the skill gap** — diff the candidate's current skills against the target role's\n   `requiredSkills`, classifying each as covered, partial, or missing.\n4. **Assemble a phased learning roadmap** — enrich each missing\u002Fpartial skill with learning\n   resources from the `skills_taxonomy` collection and order them into time-boxed phases.\n\n### Compensation\n\n5. **Resolve the compensation query** — extract the role title, seniority, and location the\n   candidate is asking about.\n6. **Retrieve matching benchmarks** — run a hybrid vector + full-text search against the\n   `compensation_data` collection, pre-filtered by `seniority` and (when possible) region.\n7. **Present a grounded band and negotiation range** — translate the retrieved percentiles\n   into a plain-language pay band, benefits summary, and an \"ask\" range, all sourced from the\n   data.\n\n---\n\n## Step 1 — Resolve Current Skills and Target Role\n\nWhen a candidate asks about skills, a transition, or a development plan:\n\n1. Determine the **target role** from the conversation (e.g. \"Machine Learning Engineer\",\n   \"Staff Backend Engineer\"). If it is not clear, ask **one** clarifying question and stop.\n\n2. Determine the **candidate's current skills**:\n   - If the message lists skills, seniority, or years of experience, use those directly.\n   - If the candidate provides a `candidateId`, call `mongodb_query` → `findOne` on the\n     `candidates` collection with `{ \"candidateId\": \"\u003Cid>\" }` and\n     `\"projection\": { \"embedding\": 0 }`. Use `profile.skills`, `profile.seniority`, and\n     `profile.yearsExperience`.\n   - If neither is available, ask the candidate to paste their key skills or their current\n     role, then stop.\n\n3. Build a `queryText` string in this format for the target-role search:\n   ```\n   \u003Ctarget role title>\n   Current seniority: \u003Ccandidate seniority or \"unspecified\">\n   Current skills: \u003Ccomma-separated current skills>\n   Goal: transition to \u003Ctarget role title>\n   ```\n\n---\n\n## Step 2 — Hybrid Career-Path Search\n\nPerform a hybrid search against the `career_paths` collection in **a single tool call**. The\nMCP runtime runs the vector and lexical legs in parallel and merges them with Reciprocal Rank\nFusion server-side — do **not** run a separate `$search` aggregation or compute RRF in-band.\n\n### Single hybrid call\n\nCall `mongodb_vector_search` with:\n- `collection`: `career_paths`\n- `queryText`: the string built in Step 1.3. The runtime embeds this server-side for the\n  vector leg and uses it verbatim for the BM25 lexical leg. **Do NOT call\n  `embed_multimodal_content` — the search runtime embeds `queryText` internally.**\n- `indexName`: `career_paths_vector_index`\n- `hybrid`: `true`\n- `lexicalIndex`: `career_paths_text_index`\n- `lexicalPath`: `description` — single text-indexed field the BM25 leg searches. It carries\n  the densest mix of role title, required-skill, and progression signal. (Atlas Search hybrid\n  mode is single-path; multi-field recall is recovered by the vector leg.)\n- `limit`: 3 — final fused result count.\n- `fetchK`: 8 — per-leg over-fetch before RRF merge.\n\nEach result carries a `_score` (RRF score) and a `_sources` array (`[\"vector\"]`,\n`[\"lexical\"]`, or both). Use the top-ranked path whose `targetRole` best matches the\ncandidate's stated target. Do not re-rank or re-fuse yourself.\n\n---\n\n## Step 3 — Compute the Skill Gap\n\nDiff the candidate's current skills against the chosen path's `requiredSkills` array:\n\n- **Covered** — the candidate already has this skill (exact or clear synonym match).\n- **Partial** — the candidate has a related\u002Ffoundational skill but not the specific one.\n- **Missing** — the candidate has no evidence of this skill.\n\nFor every **missing** and **partial** skill, look up learning resources. In **one**\n`mongodb_query` → `find` call on `skills_taxonomy`, pass a filter matching all the gap\nskills at once, e.g.:\n\n```json\n{\n  \"collection\": \"skills_taxonomy\",\n  \"operation\": \"find\",\n  \"filter\": { \"skillId\": { \"$in\": [\"\u003CskillId1>\", \"\u003CskillId2>\"] } },\n  \"projection\": { \"embedding\": 0 }\n}\n```\n\nIf the path stores `requiredSkills` as skill names rather than IDs, filter on\n`{ \"name\": { \"$in\": [ ... ] } }` instead. Use `references\u002Fcollections-schema.md` to confirm\nthe exact field names before constructing the query.\n\n---\n\n## Step 4 — Present the Skill Gap and Roadmap\n\nPresent the result in this structure:\n\n1. **Where you are** — one sentence summarizing the candidate's current level and strongest\n   relevant skills (the covered set).\n2. **The gap** — a short list of missing and partial skills, each with a one-line note on why\n   the target role needs it (from the path's `requiredSkills` notes when present).\n3. **Your roadmap** — the path's phased plan. Order the phases using the path's `milestones`\n   (each milestone has an `order`, `title`, `skills`, and `estimatedWeeks`). Under each\n   milestone, list the concrete learning resources retrieved from `skills_taxonomy`\n   (`name`, `resourceType`, and `resources` links\u002Ftitles) verbatim.\n4. **Estimated timeline** — sum the `estimatedWeeks` across milestones the candidate still\n   needs, and state it as an approximate range.\n\nCite `pathId` when you reference a specific progression path.\n\n---\n\n## Step 5 — Resolve Role, Seniority, and Location (compensation)\n\nWhen a candidate asks about pay, expectations, or negotiation:\n\n1. Extract from the conversation:\n   - **Role title** (e.g. \"Machine Learning Engineer\", \"Staff Backend Engineer\").\n   - **Seniority** — one of `junior` | `mid` | `senior` | `staff`. If not stated, infer from\n     the role title or the candidate's stated years of experience; otherwise leave unset.\n   - **Location** — a city\u002Fregion or \"remote\". Map it to a `region` value where possible\n     (see `references\u002Fcollections-schema.md` for the region enum). If not stated, leave unset\n     and note that the benchmark will be nationwide.\n\n2. If the **role** is missing, ask **one** clarifying question and stop. Seniority and\n   location are optional — proceed without them if not provided.\n\n3. Build a `queryText` string in this format:\n   ```\n   \u003Crole title>\n   Seniority: \u003Cseniority or \"unspecified\">\n   Location: \u003Clocation or \"any \u002F remote\">\n   ```\n\n---\n\n## Step 6 — Filtered Hybrid Compensation Search\n\nPerform a hybrid search against the `compensation_data` collection in **a single tool call**.\nThe MCP runtime runs the vector and lexical legs in parallel and merges them with Reciprocal\nRank Fusion server-side — do **not** run a separate `$search` aggregation or compute RRF\nin-band.\n\n### Single hybrid call\n\nCall `mongodb_vector_search` with:\n- `collection`: `compensation_data`\n- `queryText`: the string built in Step 5.3. The runtime embeds this server-side for the\n  vector leg and uses it verbatim for the BM25 lexical leg. **Do NOT call\n  `embed_multimodal_content` — the search runtime embeds `queryText` internally.**\n- `indexName`: `compensation_vector_index`\n- `hybrid`: `true`\n- `lexicalIndex`: `compensation_text_index`\n- `lexicalPath`: `role` — single text-indexed field the BM25 leg searches. It carries the\n  densest role\u002Ftitle signal. (Atlas Search hybrid mode is single-path; multi-field recall is\n  recovered by the vector leg.)\n- `limit`: 3 — final fused result count.\n- `fetchK`: 8 — per-leg over-fetch before RRF merge.\n- `filter`: when seniority and\u002For region are known, pass them as pre-filter fields, e.g.\n  `{ \"seniority\": \"senior\", \"region\": \"us-south\" }`. Only include keys you actually resolved\n  in Step 5. `seniority` and `region` are declared as `filter` fields on the vector index.\n\nEach result carries a `_score` (RRF score) and a `_sources` array. Use the top-ranked record\nwhose `role`, `seniority`, and `region` best match the query. Do not re-rank or re-fuse\nyourself.\n\n---\n\n## Step 7 — Present the Band and Negotiation Range\n\nFrom the chosen benchmark document, present:\n\n1. **Coverage line** — the exact `role`, `seniority`, `region`, and `asOf` date the benchmark\n   applies to, so the candidate knows the basis.\n2. **Pay band** — from `baseSalary` and `totalComp`, show:\n   - Base: `p25`–`p75` as the typical range, and note the `p50` (median).\n   - Total comp: `p25`–`p75`, and note the `p50`.\n   - State the `currency` and whether figures are annual.\n3. **Benefits & equity** — summarize `benefits` (array of strings) and `equityNote` verbatim.\n4. **Suggested ask range** — frame a realistic ask: for a strong candidate, anchor near the\n   `p50`–`p75` of total comp; for a stretch, mention `p90` if present. Present this as a range\n   and clearly label it as guidance derived from the retrieved percentiles.\n\nCite `benchmarkId` when you reference a specific record.\n\n---\n\n## References\n\n**References** (on demand): the API only serves files for skills that are **allowed for this\nagent** and **already activated** (`activate_skill`, or pre-activation for specialists). Call\n**`read_skill_resource`** with **`skillName`** `career-coach` and **`path`** (relative to that\nskill folder), e.g.:\n\n- `references\u002Fcollections-schema.md` — Full document schemas, index definitions, and field\n  notes for the `career_paths`, `skills_taxonomy`, and `compensation_data` collections\n  (including the `region` enum and percentile fields). Load this when you need to verify field\n  names, the region mapping, filter parameters, or construct precise queries.\n\nFor the **career-coach** specialist agent, this skill is **pre-activated** at turn start, so\n`read_skill_resource` works immediately. If you see `skill_not_activated`, run\n**`activate_skill`** with `career-coach` first.\n\n---\n\n## Edge Cases\n\n**Target role not found in `career_paths`:** If the hybrid search returns no path whose\n`targetRole` reasonably matches, tell the candidate honestly and suggest a closely related\nrole that does exist, or ask them to rephrase. Do not invent a progression path.\n\n**Candidate already meets all requirements:** If every `requiredSkill` is covered, say so and\npresent the path's advanced\u002Fnext-level milestones (highest `order`) as stretch goals.\n\n**No learning resources for a gap skill:** If `skills_taxonomy` has no document for a gap\nskill, list the skill in the gap section and note that no structured resource is on file yet —\ndo not fabricate a course or link.\n\n**Only a `candidateId` and no target role:** Ask the candidate which role they are targeting\nbefore running any search.\n\n**No exact compensation match for the combination:** If no `compensation_data` record matches\nthe role+seniority+region, relax the pre-filter to seniority-only or role-only and note to the\ncandidate that the figure is a broader benchmark, not their exact combination. Never\nextrapolate a number that is not in the data.\n\n**Compensation location not covered:** If the region has no data, present the\nnationwide\u002Fremote benchmark for the role and say the location-specific figure is not on file.\n\n**Stale benchmark:** If the top compensation result's `asOf` is old, present it but flag the\ndate so the candidate can weigh it.\n\n**Candidate asks to negotiate a specific offer:** Provide the grounded range and framing, but\ndo not promise an outcome and do not give legal or tax advice.\n\n## Boundaries\n\n- This skill handles skill-gap analysis, role transitions, learning roadmaps, AND\n  compensation benchmarking, benefits norms, and negotiation framing.\n- Do not research or evaluate specific employers — that belongs to the company-research\n  specialist.\n- Do not match the candidate to open job listings or write interview prep — that belongs to\n  the job-match specialist.\n- Do not give legal, tax, or immigration advice, and never promise a specific offer outcome.\n- Never reveal raw MongoDB `_id` values; use `pathId`, `skillId`, `candidateId`, or\n  `benchmarkId`.\n- Never fabricate career paths, skills, courses, certifications, timelines, figures, ranges,\n  benefits, or percentiles. All responses must be grounded in collection data, and all\n  compensation numbers must be presented as ranges with their source basis.\n",{"name":5,"metadata":48,"description":7},{"author":49,"domain":50,"version":51},"anujpanchal","recruitment","2.0","main","a6bd8916bc2b0c913faf9704528ecbc7f4432c2a","config\u002Fskills\u002Fcareer-coach",5,"https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore","https:\u002F\u002Fgithub.com\u002Fmongodb-partners","2026-11-10 06:47:38",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add mongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore --skill career-coach",{"tool":65,"command":66},"bunx","bunx skills add mongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore --skill career-coach",{"tool":68,"command":69},"pnpm","pnpm dlx skills add mongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore --skill career-coach","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fconfig\u002Fskills\u002Fcareer-coach\u002FSKILL.md",true,[73],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fcollections-schema.md","REFERENCE","参考文档",8790,"https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fconfig\u002Fskills\u002Fcareer-coach\u002Freferences\u002Fcollections-schema.md",[80,101,118,140],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":43},"01M71V5AFS98MSXZTJEFXHDF8D","job-match","Matches candidate CVs to job openings using hybrid search (vector + full-text) on the jobs collection, and provides interview preparation questions from the interview_prep collection. Use this skill when a candidate submits their CV, asks about job matches, wants job recommendations, or requests interview prep questions for a specific role.","https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fconfig\u002Fskills\u002Fjob-match\u002FSKILL.md",[],[87,88,89,34,90,91,92,93,36,94,95,96,28,42,30,50,97,98,99,100],"job match","match","interview","questions","interview preparation","hybrid","for","vector","cv","use","text","cvs","requests","recommendations",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":43},"01M71V57PH9PGS3G0EEY5RRDBC","company-intel","Researches a hiring company's culture, engineering practices, funding\u002Fstage, size, and employee sentiment using hybrid search (vector + full-text) on the companies collection, enriched by the Bedrock knowledge base. Use this skill when a candidate asks about a specific company, what it is like to work there, its reputation, funding or size, or wants the companies behind their job matches profiled.","https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fconfig\u002Fskills\u002Fcompany-intel\u002FSKILL.md",[],[108,109,110,28,111,97,50,30,42,112,96,113,34,92,36,94,114,115,116,117],"company","company intel","intel","knowledge base","stage","funding","culture","bedrock","knowledge","engineering practices",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":129,"publishedAt":43},"01M71V50NSY3J0K4QC9D5FQV30","demo-skill","Test fixture skill for HTTP tools unit tests","https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fapi\u002Ftests\u002Ffixtures\u002Fconfig\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[124],{"categoryNo":125,"categoryName":126,"taxonomyType":127,"taxonomyTypeDesc":128},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[130,131,93,132,133,134,135,136,137,138,139],"demo skill","demo","unit","fixture","tests","test","http","Tools","unit tests","fixture skill",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":150,"publishedAt":43},"01M71V4YQYTBMPQHZPY0MVXNN3","e2e-fixture-skill","Config-only fixture: proves a new skill directory is discovered without API code changes.","https:\u002F\u002Fgithub.com\u002Fmongodb-partners\u002FMulti-Agent-Architectural-Guidance-Bedrock-AgentCore\u002Fblob\u002Fmain\u002Fapi\u002Ftests\u002Ffixtures\u002Fconfig-extra-skill-only\u002Fskills\u002Fe2e-fixture-skill\u002FSKILL.md",[146,149],{"categoryNo":147,"categoryName":148,"taxonomyType":127,"taxonomyTypeDesc":128},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":125,"categoryName":126,"taxonomyType":127,"taxonomyTypeDesc":128},[151,152,139,133,153,154,155,156,157,158,159,160],"e2e fixture skill","e2e","only","new","changes","new skill","code","directory","api","config"]