Productivity
CLAUDE - Claude MCP Skill
CLAUDE.md - Resume Matcher
SEO Guide: Enhance your AI agent with the CLAUDE tool. This Model Context Protocol (MCP) server allows Claude Desktop and other LLMs to claude.md - resume matcher... Download and configure this skill to unlock new capabilities for your AI workflow.
Documentation
SKILL.md# CLAUDE.md - Resume Matcher
> **Context file for Claude Code.** Full documentation at [docs/agent/README.md](../docs/agent/README.md).
---
## Project Overview
Resume Matcher is an AI-powered application for tailoring resumes to job descriptions, with a Kanban Application Tracker for managing the job-application pipeline.
| Layer | Stack |
|-------|-------|
| **Backend** | FastAPI + Python 3.13+, LiteLLM (multi-provider AI) |
| **Frontend** | Next.js 16 + React 19, Tailwind CSS v4 |
| **Database** | SQLite (SQLAlchemy 2.0 async / aiosqlite) |
| **PDF** | Headless Chromium via Playwright |
---
## First Steps
Before exploring code, read [docs/agent/README.md](../docs/agent/README.md) for project orientation.
---
## Non-Negotiable Rules
1. **All frontend UI changes** MUST follow [Swiss International Style](../docs/portable/swiss-design-system/README.md) β see [tokens](../docs/portable/swiss-design-system/tokens.md), [components](../docs/portable/swiss-design-system/components.md), [anti-patterns](../docs/portable/swiss-design-system/anti-patterns.md)
2. **All Python functions** MUST have type hints
3. **Run `npm run lint`** before committing frontend changes
4. **Run `npm run format`** (Prettier) before committing
5. **Log detailed errors server-side**, return generic messages to clients
6. **Do NOT modify** `.github/workflows/` files without explicit request
---
## Essential Commands
```bash
# Backend (from repo root)
cd apps/backend
uv sync --extra dev # Install Python deps (incl. test deps)
uv run uvicorn app.main:app --reload --port 8000 # FastAPI on :8000
uv run pytest # Run backend tests (~444; LLM evals excluded)
# Frontend (from repo root, in a separate terminal)
cd apps/frontend
npm install # Install Node.js dependencies
npm run dev # Next.js on :3000
npm run test # Run frontend tests (vitest)
# Quality checks (from apps/frontend)
npm run lint # Lint frontend
npm run format # Format with Prettier
# Build (from apps/frontend)
npm run build
```
---
## Project Structure
```
apps/
βββ backend/ # FastAPI + Python
β βββ app/
β β βββ main.py # Entry point
β β βββ config.py # Environment settings
β β βββ database.py # Async SQLAlchemy/SQLite facade
β β βββ models.py # SQLAlchemy ORM models (Resume/Job/Improvement/Application/ApiKey)
β β βββ db_engine.py # Async + sync SQLite engines (WAL/FK pragmas)
β β βββ crypto.py # Fernet encrypt/decrypt for API keys at rest
β β βββ llm.py # LiteLLM wrapper
β β βββ routers/ # API endpoints (incl. applications.py = tracker)
β β βββ services/ # Business logic
β β βββ schemas/ # Pydantic models (incl. applications.py)
β β βββ prompts/ # LLM prompt templates
β β βββ scripts/ # One-time TinyDBβSQLite migration (runs on startup)
β βββ data/ # resume_matcher.db (SQLite) + encrypted API keys + .secret_key
β
βββ frontend/ # Next.js + React
βββ app/ # Pages (dashboard, builder, tailor, tracker, print)
βββ components/ # UI components (incl. tracker/)
βββ lib/ # Utilities, API client (incl. api/tracker.ts)
βββ hooks/ # Custom React hooks
βββ messages/ # i18n translations (en, es, zh, ja, pt)
```
---
## Documentation by Task
### For Backend Changes
1. [Backend guide](../docs/agent/architecture/backend-guide.md) - Architecture, modules, services
2. [API contracts](../docs/agent/apis/front-end-apis.md) - API specifications
3. [LLM integration](../docs/agent/llm-integration.md) - Multi-provider AI support
### For Frontend Changes
1. [Frontend workflow](../docs/agent/architecture/frontend-workflow.md) - User flow, components
2. [Swiss design system pack](../docs/portable/swiss-design-system/README.md) - **REQUIRED** Swiss International Style (portable pack)
3. [Next.js performance pack](../docs/portable/nextjs-performance/README.md) - **REQUIRED** Next.js 15 perf patterns (portable pack)
4. [Coding standards](../docs/agent/coding-standards.md) - Frontend conventions
### For Testing
1. [Testing strategy](../docs/agent/testing-strategy.md) - Current-state assessment, framework, phased plan, how to run + how we verify (anti-theater)
### For Template/PDF Changes
1. [PDF template guide](../docs/agent/design/pdf-template-guide.md) - PDF rendering
2. [Template system](../docs/agent/design/template-system.md) - Resume templates
3. [Resume templates](../docs/agent/features/resume-templates.md) - Template types & controls
### For Features
| Feature | Documentation |
|---------|---------------|
| Application tracker | [application-tracker.md](../docs/agent/features/application-tracker.md) |
| Custom sections | [custom-sections.md](../docs/agent/features/custom-sections.md) |
| Resume templates | [resume-templates.md](../docs/agent/features/resume-templates.md) |
| i18n | [i18n.md](../docs/agent/features/i18n.md) |
| AI enrichment | [enrichment.md](../docs/agent/features/enrichment.md) |
| JD matching | [jd-match.md](../docs/agent/features/jd-match.md) |
---
## Code Patterns
### Backend Error Handling
```python
except Exception as e:
logger.error(f"Operation failed: {e}")
raise HTTPException(status_code=500, detail="Operation failed. Please try again.")
```
### Frontend Textarea Fix
All textareas need Enter key handling:
```tsx
const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
if (e.key === 'Enter') e.stopPropagation();
};
```
### Mutable Defaults (Python)
Always use `copy.deepcopy()` for mutable defaults:
```python
import copy
data = copy.deepcopy(DEFAULT_DATA) # Correct
# data = DEFAULT_DATA # Wrong - shared state bug
```
---
## Testing
Both apps have real test suites, and **tests are in scope** (deliberate testing initiative β full plan in [docs/agent/testing-strategy.md](../docs/agent/testing-strategy.md)).
| Suite | Stack | Run |
|-------|-------|-----|
| Backend | pytest + pytest-asyncio + httpx + respx | `cd apps/backend && uv run pytest` |
| Frontend | vitest + Testing Library (jsdom) | `cd apps/frontend && npm run test` |
- **Backend layers:** `tests/unit` (pure logic), `tests/service` (mocked LLM), `tests/integration` (real routers via httpx ASGI), `tests/evals` (prompt-quality scorers + a gated LLM-judge β excluded by default; run with `uv run pytest -m eval`).
- **Local push gate (not CI):** a `pre-push` hook (`.githooks/pre-push`) runs the backend suite + a locale-parity check and **blocks red pushes**. Activate once per clone: `git config core.hooksPath .githooks`. We deliberately avoid a GitHub Actions PR gate (high external-PR volume) β see [`.githooks/README.md`](../.githooks/README.md).
- Keep tests **deterministic and anti-theater**: a test must fail when its target breaks, and the default suites make no real network/LLM calls.
---
## Design System Quick Reference
| Element | Value |
|---------|-------|
| Canvas background | `#F0F0E8` |
| Ink (text) | `#000000` |
| Hyper Blue (links) | `#1D4ED8` |
| Signal Green (success) | `#15803D` |
| Alert Orange (warning) | `#F97316` |
| Alert Red (error) | `#DC2626` |
| Headers font | `font-serif` |
| Body font | `font-sans` |
| Metadata font | `font-mono` |
| Borders | `rounded-none`, 1px black, hard shadows |
---
## Definition of Done
Before completing a task:
- [ ] Code compiles without errors
- [ ] Backend tests pass (`uv run pytest`); frontend tests pass (`npm run test`)
- [ ] `npm run lint` passes
- [ ] UI changes follow Swiss International Style
- [ ] Python functions have type hints
- [ ] Schema/prompt changes documented
- [ ] New behavior covered by a deterministic test (it must fail if the behavior breaks)
---
## Out of Scope
Do NOT modify without explicit request:
- `.github/workflows/` files
- CI/CD configuration
- Docker build behavior
- Existing tests (removal/disabling)
---
> **Full agent documentation**: [docs/agent/README.md](../docs/agent/README.md)Signals
Information
- Repository
- srbhr/Resume-Matcher
- Author
- srbhr
- Last Sync
- 9/4/2026
- Repo Updated
- 9/3/2026
- Created
- 1/16/2026
Reviews (0)
No reviews yet. Be the first to review this skill!
Related Skills
upgrade-nodejs
Upgrading Bun's Self-Reported Node.js Version
cursorrules
CrewAI Development Rules
README
Agents β Working Implementations
cn-check
Install and run the Continue CLI (`cn`) to execute AI agent checks on local code changes. Use when asked to "run checks", "lint with AI", "review my changes with cn", or set up Continue CI locally.
Related Guides
Bear Notes Claude Skill: Your AI-Powered Note-Taking Assistant
Learn how to use the bear-notes Claude skill. Complete guide with installation instructions and examples.
OpenAI Whisper API Claude Skill: Complete Guide to AI-Powered Audio Transcription
Learn how to use the openai-whisper-api Claude skill. Complete guide with installation instructions and examples.
Mastering the Oracle CLI: A Complete Guide to the Claude Skill for Database Professionals
Learn how to use the oracle Claude skill. Complete guide with installation instructions and examples.