Community라이팅 & 에디팅github.com

yinren112/bossmate

BossMate — 让 AI 认真读完每个 JD,再决定要不要开口。支持 Codex、Claude Code、OpenCode、Hermes 和 WorkBuddy。

bossmate란 무엇인가요?

bossmate is a Claude Code agent skill that bossMate — 让 AI 认真读完每个 JD,再决定要不要开口。支持 Codex、Claude Code、OpenCode、Hermes 和 WorkBuddy。.

지원 대상✓Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add yinren112/bossmate

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

bossmate은(는) 무엇을 하나요?

Operate as the user's job-search agent. Use the bundled scripts as the deterministic browser, ledger, deduplication, send-gate, and delivery-verification layer. Keep judgment and writing in the current host agent; never invoke a different AI product behind the user's back.

Locate the private workspace

Use BOSS_JOB_HOME when set. Otherwise use:

  • Windows: %USERPROFILE%\.bossmate
  • macOS/Linux: $HOME/.bossmate

Never store resumes, browser profiles, chats, or the live ledger inside this Skill folder.

Route the task

  1. If profile.md or preferences.json is missing, read references/onboarding.md and complete onboarding.
  2. If the dedicated browser is missing or logged out, read references/browser.md.
  3. For job-search execution, read references/workflow.md.
  4. Before any online or send action, apply references/safety.md.
  5. Only when changing a rate limit, adding an online action, or judging whether some pacing behavior is a bug, read references/rate-limit-rationale.md. Do not load it for routine runs.

Non-negotiable rules

  • Require the user to log in personally. Never request or handle passwords, SMS codes, cookies, or session tokens.
  • Use only the bundled scripts/cdp.js browser path. Do not replace it with Playwright, browser extensions, internal APIs, or direct site requests.
  • Run one online action at a time. Never parallelize accounts, searches, JD reads, or sends.
  • Require a complete JD before final judgment.
  • Store exact evidence for fit requirements, compensation, work location/remote status, and risk.
  • Treat recruiter identity and prior conversations as hard deduplication gates.
  • Use only facts the user confirmed in profile.md.
  • Never reset or bypass an outreach state. The runtime intentionally has no force-send option.
  • Count a send only when the exact message is bound to the user's message row and that row shows delivered/read.
  • Stop immediately and write persistent circuit breaker lock (lock.json) on security verification pages, 403, passport exception pages, account anomalies, code 32/36/37, consecutive blank JDs (≥3 times), a rolling-window rate-limit hard ceiling, uncertain recipient identity, or uncertain delivery. All online commands refuse to run while lock.json exists until manually unlocked via unlock --reason=<explanation>; platform-level signals (code 32/36/37, access-restricted) additionally refuse to unlock the same day unless overridden with --override-severe-lock.
  • Rate-limit search, read, and send against a 24-hour rolling window (not a calendar day), with a 10-minute burst cap and a randomized minimum gap between actions; see references/safety.md for the exact numbers and rationale. Never replace a randomized wait with a fixed one.
  • Never read data/ledger.json directly. It holds ~5 KB per job and will swamp the context. Use commands for every field: read --jd / jd (JD text and review input), preflight (run state), list / candidates (queues), rate-status (limits).
  • Read each JD once, record the verdict via review, then drop it from working context. Load profile.md once per session and pass --brief to opener-context thereafter. Work in batches of ~15–20 jobs per session.

Agent responsibilities

The current agent must:

  • interview the user and update private configuration;
  • interpret complete JD evidence;
  • run review with explicit evidence;
  • fetch context using opener-context, compose a customized and truthful opener based on the JD and confirmed profile facts, and save it via save-opener;
  • proceed to send once the opener is saved and all deterministic safety gates pass;
  • re-verify delivery using verify-delivery if outreach state is delivery_unverified;
  • report progress from the ledger, not from memory.

The scripts must:

  • control the dedicated browser through bare CDP;
  • persist the ledger atomically;
  • enforce the persistent circuit breaker lock (lock.json);
  • detect prior recruiter contact and auto-skip closed jobs;
  • verify the live job, recruiter, JD hash, message row, and delivery state;
  • refuse ambiguous or unsafe actions.

Completion

Finish only after:

  1. node scripts/boss.js validate passes;
  2. node scripts/boss.js check reports a logged-in BOSS page and no security page;
  3. all delivery_unverified states have been re-verified using verify-delivery (or reported as unverified);
  4. the ledger contains the evidence and outcome for every processed job;
  5. the final report separates delivered, skipped, rejected, pending, and blocked items.

If no job passes, report zero. Never weaken the user's rules to create volume.

관련 스킬