[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74YF3WPDQ9D2PJ00XWH29EA":3,"skill-same:01M74YF3WPDQ9D2PJ00XWH29EA":50},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":49},"01M74YF3WPDQ9D2PJ00XWH29EA","write-cover-letter",null,"Produce a job-specific, profile-grounded cover letter in markdown — ≤ 350 words, ≤ 1 page, three paragraphs (hook → two quantified proofs → fit close). Reuses keywords from a prior tailor-resume sidecar when present. Writes a JSON sidecar reserved for a future \u002Frender-resume --kind cover-letter (rendercv).","jain777\u002Fjobclaw-skills","jain777","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F57412580?v=4","01M74YCRYXSRMZFKERV6JS8M5D","Jeevesh Jain","01M74YCRZK4C3NNAEDWG5W8YMP",7,"MIT","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-cover-letter\u002FSKILL.md",[],[],"2026-11-11 17:31:23",false,"---\nname: write-cover-letter\ndescription: >\n  Produce a job-specific, profile-grounded cover letter in markdown — ≤ 350 words,\n  ≤ 1 page, three paragraphs (hook → two quantified proofs → fit close). Reuses keywords\n  from a prior tailor-resume sidecar when present. Writes a JSON sidecar reserved for a\n  future \u002Frender-resume --kind cover-letter (rendercv).\nwhen_to_use: >\n  Use when the user wants a cover letter for a specific job — typically after score-fit\n  recommends applying and tailor-resume has produced a tailored resume.\nuser-invocable: true\nallowed-tools: Read, Write, WebFetch\n---\n\n# write-cover-letter\n\nEarn the reader the next 30 seconds. Open with one concrete reason this candidate fits *this* role at *this* company. **Hard rules:** [`..\u002F_shared\u002FRULES.md`](..\u002F_shared\u002FRULES.md). Use **Communication \u002F Management \u002F Creative** verbs from [`..\u002Ftailor-resume\u002Freference\u002Faction-verbs.md`](..\u002Ftailor-resume\u002Freference\u002Faction-verbs.md).\n\n## Inputs\n1. **Profile:** `profile\u002Fmaster-profile.md`. Read `context:` for *direction only* — never quote.\n2. **Job:** pasted JD text, a URL (use `WebFetch`), or an entry from `jobs\u002Ffound-\u003Cdate>.json`.\n   **Known-info gate (RULES §6):** if no job is given inline, read `jobs\u002Fcurrent.json` and use its\n   `jd_text`\u002F`company`\u002F`role` — do not re-ask for the JD when it's already captured upstream.\n3. **Tone:** `enthusiastic | confident | concise | warm` (default: `confident`).\n4. **Optional sidecar:** `resumes\u002F\u003Cslug>.tailor.json` from a prior `tailor-resume` run — reuse its keyword list and `basics_overrides.summary` so the letter and the resume sing the same notes.\n5. **Optional score-fit sidecar:** `scores\u002F\u003Cjob-id>.score.json` — reuse `missing_keywords` to know what the resume already incorporated.\n\nIf no job is supplied **and** `jobs\u002Fcurrent.json` is absent, ask for it; the tone has a safe default.\n\n## Method\n\n0. **Region note.** Read the target region pack:\n   - **US:** cover letters role-dependent — stronger for senior, mission-driven, career-change roles. Surface this in the rationale so the user decides whether to send.\n   - **IN:** cover letters less emphasized; usually a 2–3 sentence email body suffices. Offer a \"short form\" alternative if the user wants.\n\n1. **Read the JD** for 3–5 must-have themes, the JD's tone of voice (formal \u002F casual \u002F mission-led), and any explicit asks (\"tell us why you want to work here\").\n\n2. **Pick two flagship achievements** from the profile that map to those themes — each quantified. No invention; if the profile lacks a quantified match, pick the closest qualitative win and flag the gap rather than fabricating a number.\n\n3. **Draft three paragraphs** (≤ 350 words total):\n   - **Opening hook** (~60 words) — concrete reason you\u002Fthis role fit, anchored to a specific JD theme. **Not** \"I am writing to apply for…\". **Not** \"I admire your mission…\".\n   - **Two proof points** (~180 words) — each a 2–3 sentence story tying one flagship achievement to one JD must-have. Verb-led, metric-led, no resume restating.\n   - **Fit close** (~110 words) — what specifically excites you about *this* role (not the company in general). One CTA-style close.\n\n4. **Apply tone modifier** + region spelling (US American · IN British) + region date format (if you reference dates).\n\n5. **No salary.** No street address. No \"References available on request.\" No `context:` echo.\n\n## Output\n- `resumes\u002F\u003Ccompany-slug>-\u003Crole-slug>.cover-letter.md` — body only (signed with the candidate's name; no address blocks).\n- `resumes\u002F\u003Ccompany-slug>-\u003Crole-slug>.cover-letter.json` — sidecar:\n  ```jsonc\n  {\n    \"company\": \"...\", \"role\": \"...\", \"tone\": \"confident\",\n    \"body_md\": \"...\",\n    \"themes_used\": [\"...\"],\n    \"source_profile_path\": \"profile\u002Fmaster-profile.md\",\n    \"source_sidecar_path\": \"resumes\u002F\u003Cslug>.tailor.json\" \u002F* or null *\u002F\n  }\n  ```\n  Reserved for `\u002Frender-resume --kind cover-letter` once rendercv cover-letter support lands.\n- Console: 2-line rationale (themes hit · what you cut) + region prevalence note.\n- Final line: *\"Future: pass to \u002Frender-resume --kind cover-letter when rendercv cover-letter support lands.\"*\n\n## Anti-patterns\n- \"I am writing to apply for the X position at Y.\" Cut the opener cliché.\n- First-paragraph flattery about the company.\n- Restating the resume in narrative form.\n- Salary \u002F current-CTC \u002F expected-CTC in the body (US: never; IN: only if the JD explicitly asks).\n- Quoting `context.career_goal` \u002F `context.additional_info`.\n- Filler (\"I believe\", \"I feel\", \"I think\", \"I am passionate about\").\n- Emoji.\n\n## Rubric (one-page self-check)\n- [ ] ≤ 350 words; exactly 3 paragraphs.\n- [ ] ≥ 2 quantified proof points.\n- [ ] Each proof point ties to a specific JD theme.\n- [ ] 1 explicit \"why this role\" sentence (specific, not generic).\n- [ ] No salary, no address, no clichés.\n- [ ] Spelling matches region.\n- [ ] Verb openers vary across the 6–10 sentences that have them.\n\n## Next steps\nCover letter ready. Next: `\u002Fanswer-application-questions` for the form, then submit.\n","# write-cover-letter\n\nEarn the reader the next 30 seconds. Open with one concrete reason this candidate fits *this* role at *this* company. **Hard rules:** [`..\u002F_shared\u002FRULES.md`](..\u002F_shared\u002FRULES.md). Use **Communication \u002F Management \u002F Creative** verbs from [`..\u002Ftailor-resume\u002Freference\u002Faction-verbs.md`](..\u002Ftailor-resume\u002Freference\u002Faction-verbs.md).\n\n## Inputs\n1. **Profile:** `profile\u002Fmaster-profile.md`. Read `context:` for *direction only* — never quote.\n2. **Job:** pasted JD text, a URL (use `WebFetch`), or an entry from `jobs\u002Ffound-\u003Cdate>.json`.\n   **Known-info gate (RULES §6):** if no job is given inline, read `jobs\u002Fcurrent.json` and use its\n   `jd_text`\u002F`company`\u002F`role` — do not re-ask for the JD when it's already captured upstream.\n3. **Tone:** `enthusiastic | confident | concise | warm` (default: `confident`).\n4. **Optional sidecar:** `resumes\u002F\u003Cslug>.tailor.json` from a prior `tailor-resume` run — reuse its keyword list and `basics_overrides.summary` so the letter and the resume sing the same notes.\n5. **Optional score-fit sidecar:** `scores\u002F\u003Cjob-id>.score.json` — reuse `missing_keywords` to know what the resume already incorporated.\n\nIf no job is supplied **and** `jobs\u002Fcurrent.json` is absent, ask for it; the tone has a safe default.\n\n## Method\n\n0. **Region note.** Read the target region pack:\n   - **US:** cover letters role-dependent — stronger for senior, mission-driven, career-change roles. Surface this in the rationale so the user decides whether to send.\n   - **IN:** cover letters less emphasized; usually a 2–3 sentence email body suffices. Offer a \"short form\" alternative if the user wants.\n\n1. **Read the JD** for 3–5 must-have themes, the JD's tone of voice (formal \u002F casual \u002F mission-led), and any explicit asks (\"tell us why you want to work here\").\n\n2. **Pick two flagship achievements** from the profile that map to those themes — each quantified. No invention; if the profile lacks a quantified match, pick the closest qualitative win and flag the gap rather than fabricating a number.\n\n3. **Draft three paragraphs** (≤ 350 words total):\n   - **Opening hook** (~60 words) — concrete reason you\u002Fthis role fit, anchored to a specific JD theme. **Not** \"I am writing to apply for…\". **Not** \"I admire your mission…\".\n   - **Two proof points** (~180 words) — each a 2–3 sentence story tying one flagship achievement to one JD must-have. Verb-led, metric-led, no resume restating.\n   - **Fit close** (~110 words) — what specifically excites you about *this* role (not the company in general). One CTA-style close.\n\n4. **Apply tone modifier** + region spelling (US American · IN British) + region date format (if you reference dates).\n\n5. **No salary.** No street address. No \"References available on request.\" No `context:` echo.\n\n## Output\n- `resumes\u002F\u003Ccompany-slug>-\u003Crole-slug>.cover-letter.md` — body only (signed with the candidate's name; no address blocks).\n- `resumes\u002F\u003Ccompany-slug>-\u003Crole-slug>.cover-letter.json` — sidecar:\n  ```jsonc\n  {\n    \"company\": \"...\", \"role\": \"...\", \"tone\": \"confident\",\n    \"body_md\": \"...\",\n    \"themes_used\": [\"...\"],\n    \"source_profile_path\": \"profile\u002Fmaster-profile.md\",\n    \"source_sidecar_path\": \"resumes\u002F\u003Cslug>.tailor.json\" \u002F* or null *\u002F\n  }\n  ```\n  Reserved for `\u002Frender-resume --kind cover-letter` once rendercv cover-letter support lands.\n- Console: 2-line rationale (themes hit · what you cut) + region prevalence note.\n- Final line: *\"Future: pass to \u002Frender-resume --kind cover-letter when rendercv cover-letter support lands.\"*\n\n## Anti-patterns\n- \"I am writing to apply for the X position at Y.\" Cut the opener cliché.\n- First-paragraph flattery about the company.\n- Restating the resume in narrative form.\n- Salary \u002F current-CTC \u002F expected-CTC in the body (US: never; IN: only if the JD explicitly asks).\n- Quoting `context.career_goal` \u002F `context.additional_info`.\n- Filler (\"I believe\", \"I feel\", \"I think\", \"I am passionate about\").\n- Emoji.\n\n## Rubric (one-page self-check)\n- [ ] ≤ 350 words; exactly 3 paragraphs.\n- [ ] ≥ 2 quantified proof points.\n- [ ] Each proof point ties to a specific JD theme.\n- [ ] 1 explicit \"why this role\" sentence (specific, not generic).\n- [ ] No salary, no address, no clichés.\n- [ ] Spelling matches region.\n- [ ] Verb openers vary across the 6–10 sentences that have them.\n\n## Next steps\nCover letter ready. Next: `\u002Fanswer-application-questions` for the form, then submit.\n",{"name":5,"description":24,"when_to_use":25,"allowed-tools":26,"user-invocable":27},"Produce a job-specific, profile-grounded cover letter in markdown — ≤ 350 words, ≤ 1 page, three paragraphs (hook → two quantified proofs → fit close). Reuses keywords from a prior tailor-resume sidecar when present. Writes a JSON sidecar reserved for a future \u002Frender-resume --kind cover-letter (rendercv).\n","Use when the user wants a cover letter for a specific job — typically after score-fit recommends applying and tailor-resume has produced a tailored resume.\n","Read, Write, WebFetch",true,"main","68211e04d37044c49c3a91f3a29ce9647fada95f","skills\u002Fwrite-cover-letter",1,"https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills","https:\u002F\u002Fgithub.com\u002Fjain777","https:\u002F\u002Fjeevesh.me\u002F","Product Manager | Builder | Claude Coder","2026-06-09 13:47:19",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":27},[39,42,45],{"tool":40,"command":41},"npx","npx skills add jain777\u002Fjobclaw-skills --skill write-cover-letter",{"tool":43,"command":44},"bunx","bunx skills add jain777\u002Fjobclaw-skills --skill write-cover-letter",{"tool":46,"command":47},"pnpm","pnpm dlx skills add jain777\u002Fjobclaw-skills --skill write-cover-letter","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-cover-letter\u002FSKILL.md",[],[51,58,65,72,79,86],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":19},"01M74YF759275CXY2ZWZBA1PD0","write-outreach","Write a short, profile-grounded cold outreach message to a recruiter, hiring manager, or potential referrer — LinkedIn DM or email — with one clear CTA and no flattery.","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-outreach\u002FSKILL.md",[],[],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M74YF106JXZQ3DMDMVR722YH","triage-inbox","Classify a recruiting email (or a batch) into one of the 10 canonical email classes, extract structured fields (company \u002F role \u002F dates \u002F links \u002F asks \u002F deadline \u002F sentiment), and suggest the next action. Writes inbox\u002Ftriage-\u003CYYYY-MM-DD>.json — consumed by infer-status and draft-reply.","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriage-inbox\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M74YEX348VFDH9FG9C00WKG3","tailor-resume","Produce a job-specific, ATS-optimized resume from the user's master profile and a target job — reordering, reframing, and surfacing the most relevant real experience and keywords. Enforces a content rubric (bullet shape, length, parallel grammar, metric coverage), then renders a polished PDF by default (via render-resume) and visually QAs it. Never fabricates.","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Ftailor-resume\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":19},"01M74YESFCVSEG3C0AB8QXVJBR","score-fit","Score how well the user's master profile fits a specific job — an ATS-style match percentage with matched\u002Fmissing keywords, strengths, gaps, and a clear apply-or-skip recommendation. Optionally writes a structured sidecar that tailor-resume consumes.","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fscore-fit\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M74YEP224H6Z9Q2K16YZ47K8","review-render","Visually QA a rendered resume PDF and auto-fix layout\u002Fcontent defects in a bounded loop: render → screenshot → deterministic gate → vision rubric → apply one fix → re-render, until it passes or hits a pass cap. Catches widows, under-fill, overflow, orphaned headers, and imbalance that text-only logic can't see.","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Freview-render\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M74YEHQPVC64D5BS57BY2EYB","research-company","Build a structured company × role brief — compensation, day-to-day, career growth, recent news, community sentiment (Reddit \u002F Blind \u002F Glassdoor), red flags, and a \"fit for this user\" view. Heavy reasoning — runs forked. Writes companies\u002F\u003Cslug>.{md,json} sidecars consumed by prep-interview and coach-negotiation.","https:\u002F\u002Fgithub.com\u002Fjain777\u002Fjobclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fresearch-company\u002FSKILL.md",[],[]]