From 49cc7f65da28bd6a418272860541436e01d46c93 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 26 Aug 2026 10:34:07 -0400 Subject: [PATCH] docs(docs): add initial project documentation and README files --- AGENTS.md | 19 + CHANGELOG.md | 893 ++++++++++++++++++++++++++++++ CONTRIBUTING.md | 103 ++++ LICENSE | 21 + README.md | 384 +++++++++++++ SECURITY.md | 22 + SETUP.md | 342 ++++++++++++ assets/mascot/pip_flight_loop.gif | Bin 0 -> 29896 bytes cover_letters/cover.cls | 96 ++++ cover_letters/cover_example.tex | 61 ++ cv/main_example.tex | 199 +++++++ documents/README.md | 200 +++++++ templates/README.md | 26 + 13 files changed, 2366 insertions(+) create mode 100755 AGENTS.md create mode 100755 CHANGELOG.md create mode 100755 CONTRIBUTING.md create mode 100755 LICENSE create mode 100755 README.md create mode 100755 SECURITY.md create mode 100755 SETUP.md create mode 100755 assets/mascot/pip_flight_loop.gif create mode 100755 cover_letters/cover.cls create mode 100755 cover_letters/cover_example.tex create mode 100755 cv/main_example.tex create mode 100755 documents/README.md create mode 100755 templates/README.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100755 index 0000000..6434985 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,19 @@ +--- +framework_version: 1.0.0 +--- + +# Agent Guidelines: AI Job Search + +This workspace is structured to manage job search activities, scraper tools, CVs, cover letters, and interview preparation. + +## Thin-Pointer Design (Single Source of Truth) + +To prevent duplication and configuration drift across different AI agent frameworks (Claude Code, Google Antigravity, Codex, Cursor, Gemini CLI, etc.), this workspace uses a unified thin-pointer design. All agent runtimes should load the canonical specifications and candidate profiles from the files and directories below: + +1. **Personal Candidate Profile:** + - The candidate profile, contact details, education, and target preferences are defined in [CLAUDE.md](CLAUDE.md) and the individual profile methodology files under [.claude/skills/job-application-assistant/](.claude/skills/job-application-assistant/) (specifically `01-*.md` etc.). +2. **Canonical Workflow Specifications:** + - The step-by-step instructions and triggers for tasks (setup, scrape, rank, apply, upskill, interview) are defined in the [.claude/](.claude/) directory (specifically under `.claude/skills/` and `.claude/commands/`). + - Do not duplicate these rules or specifications. Treat `.claude/` files as the single source of truth. +3. **Portal Search Skills:** + - Job-portal search CLIs live under [.agents/skills/](.agents/skills/) in the portable Agent Skills format (with a `SKILL.md` per portal). Codex and Antigravity discover these automatically; the `/scrape` workflow in [.claude/skills/job-scraper/](.claude/skills/job-scraper/) orchestrates them. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100755 index 0000000..0359da9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,893 @@ +# Changelog + +All notable changes to this project are documented here. The format is based on +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres +to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +Releases are vetted checkpoints of `master`. If you maintain a personalized fork, +prefer updating to a tagged release over pulling raw `master` (see +[SETUP.md, section 8](SETUP.md#8-pulling-upstream-updates-into-your-fork)). The +`framework_version` markers on methodology files tell you which of your customized +files a release touched; `python3 tools/check_upstream_updates.py` lists them with +per-file diff commands. + +## [1.6.0] - 2026-08-19 + +### Added + +- **Cross-portal `/scrape` contract pin** (#344) - a repo-level test deriving the Step 2 + search-output field list (`title`, `company`, `location`, `date`, `url`) from + `job-scraper/SKILL.md`'s own contract sentence and checking every installed portal + CLI's search source for it, so a portal that quietly stops emitting a contract field + (the failure class jobnet and jobdanmark actually shipped before #339/#340) fails CI + with a clean diff instead of degrading every `/scrape` run silently. The pin survived + the #347 output-shape changes unmodified - evidence the derived-from-spec design holds. + Contributed by @oscarbol09, the invited follow-up from #342's review. +- **`freehire-search` gains `--no-description` for cheap discovery passes** - a default + search hydrates full description bodies (~73% of the payload, ~20k tokens per query) + while `/scrape` is told to pre-filter by title before reading bodies. The new flag + drops the bodies (a live 10-result search shrinks from ~58k to ~10k chars) while + keeping every other field; hydration stays the default. The API currently returns + bodies regardless of `include_description=false`, so the lean guarantee is enforced + client-side. Pinned in `tests/commands.test.ts`. +- **Fixture coverage for linkedin's date/location and jobindex's `parseSearchPage`** - + linkedin's search-card fixture carried no `