Skills Catalog
"Skill" means three different things in this repository. This catalog is about exactly one of them:
| Layer | What it is | Count | Where |
|---|---|---|---|
| A. AI Skills (this page) | Named, versioned AI prompt bodies the app runs against your career data. | 16 | apps/api/src/ai/default-prompts.ts |
| B. MCP tools | Thin API-relay tools exposed to an MCP client (Claude Code, Cursor, etc). | 81 | See the MCP Tool Reference |
| C. Claude Code Skill | A distributable SKILL.md plugin that teaches an agent to use the MCP tools. | 1 | See The Jobweave Claude Code Skill |
The repo itself calls Layer A "skills" — the executor is apps/api/src/ai/skill-tools.ts, and
default-prompts.ts calls these "skill bodies." An AI Skill is not the same thing as an MCP
tool: a skill is a specific prompt run server-side against your data; a tool is an API endpoint
an MCP client can call directly, some of which (ai:generate-scoped tools) happen to invoke a
skill's prompt underneath. They overlap but are not interchangeable, and this page states which
one it means every time.
Status
Not every prompt key in the source file is wired to a live route. Three statuses:
- Shipped — has a live route (and usually an MCP tool) that runs this exact prompt.
- Orphan — prompt body exists in source, but nothing in the product calls it.
- Orphan (ships via a different path) — the feature is shipped and used daily, but through a different, separately-maintained prompt — not this key. Editing this key's body has zero effect on production behavior.
| Skill | Status | Purpose | Use case |
|---|---|---|---|
career_fact_extractor | Shipped | Pulls a confidence-scored fact library out of your resume, including projects and repos. | Run once before other AI actions so later actions ground in verified facts. |
job_description_analyzer | Shipped | Extracts required/preferred skills, keywords, and a match score from a job posting. | Deciding whether — and how — to tailor before you commit to a full rewrite. |
resume_tailor | Shipped | Wipes and rebuilds a resume from your full Career Library against one job posting. | The most aggressive AI action; gated behind a confirmation dialog. |
tech_resume_optimizer | Orphan | Prompt-only. No route, no tool, never runs. | None — documented as unshipped. |
resume_ats_optimizer | Orphan | Prompt-only. No route, no tool, never runs. | None — documented as unshipped. |
resume_bullet_writer | Orphan (ships via a different path) | Prompt-only under this key. The shipped "Enhance Bullets" feature uses a separate inline prompt. | None under this key — see the page for the real path. |
resume_quantifier | Shipped | Adds numbers to a caller-supplied set of bullets — nothing else in context. | Tightening bullets that already exist without a full resume rewrite. |
linkedin_profile_optimizer | Orphan | Prompt-only. No route, no tool, never runs. | None — documented as unshipped. |
interview_prep_generator | Shipped | Generates ranked interview questions with a STAR-format breakdown. | Prepping for a specific application from the application detail view. |
recruiter_first_screen_simulation | Shipped | Read-only scoring across 8 dimensions, simulating a recruiter's first pass. | Feedback before you send, without the AI rewriting anything. |
cover_letter_generator | Orphan (ships via a different path) | Prompt-only under this key. Cover letters ship through a separate, hardcoded provider prompt. | None under this key — see the page for the real path. |
company_insights | Shipped | A company briefing (funding, culture, comparable companies) independent of your resume. | Research before an interview or before deciding whether to apply. |
outreach_cold | Shipped | Drafts a cold outreach message with up to 600 chars of job-description context. | First contact with a hiring manager or recruiter. |
outreach_follow_up | Shipped | Drafts a follow-up message with up to 400 chars of job-description context. | Checking in after an application with no response. |
outreach_thank_you | Shipped | Drafts a thank-you message with zero job-description context by design. | After an interview, where the JD is no longer the point. |
import_url_extract | Shipped (fallback) | AI extraction of job posting fields, used only when structured JSON-LD parsing fails. | Importing a posting from a URL the extension didn't auto-detect. |
16 rows, verified: sed -n "/^export const PROMPT_KEYS/,/^] as const/p" apps/api/src/ai/default-prompts.ts | grep -oE "'[a-z_]+'" | wc -l.
Reachability, orphan status, and every "does not touch" claim above are cited per-skill on
each page — see .omc/handoffs/skills-triage.md for the full investigation this table is
built from.