careerrat / templates
AGENTS.md4 starsChanged 9 days agoMITView on GitHub
Read this before touching jobs. The dashboard should be live during active CareerRat work. Check http://localhost:7777; if it is down, start careerrat tracker-dev from the repo root before telling the user to use the dashboard. careerrat start opens the terminal workspace and does not serve the dashboard. careerrat start --browser starts the legacy dashboard as a separate local process and records .internal/tracker-dev.pid plus .internal/tracker-dev.log. Agents opened directly in the repo must perform the same check themselves. For agent-run sessions, detach…
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository31 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- templates/CLAUDE.mdCLAUDE.md
- answer-questionSkill
- apply-jobSkill
- calendar-syncSkill
- coach-gapsSkill
- company-healthSkill
- configureSkill
- discover-companiesSkill
- email-commsSkill
- evaluate-jobSkill
- ingest-mailSkill
- ingest-messagesSkill
- ingest-profileSkill
- intake-extractSkill
- interview-prepSkill
- optimize-linkedinSkill
- reevaluate-strategySkill
- relationship-sourcingSkill
- report-issueSkill
- research-boardsSkill
- research-companySkill
- research-compSkill
- resume-extractSkill
- schedule-meetingSkill
- search-jobsSkill
- setup-searchesSkill
- sync-statusSkill
- tailor-applicationSkill
- track-outcomesSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
19 rules. About 0 are common, 2 are distinctive, and 17 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
17
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 3
Read this before touching jobs.
- Very specific: line 25
If port 7777 is already occupied by something other than CareerRat, use careerrat tracker-dev --port 7778 and report the actual URL.
- Distinctive: line 32
Do not leave useful job-search state only in chat.
- Very specific: line 46
After tracker-visible writes, run careerrat tracker --verify.
- Very specific: line 52
If the user says "apply", "apply to this", "submit", "fill this application", or gives a JD URL with application intent: use apply-job.
- Very specific: line 54
If the user says "find jobs", "search", "source", "scan", "refresh", "HiringCafe", or asks for a queue: use search-jobs.
- Very specific: line 56
If the user says "gate", "evaluate", "is this a fit", "should I apply", or gives a JD URL without application intent: use evaluate-job.
- Very specific: line 58
If the user asks to tailor a resume, cover letter, short answer, or non-message outreach artifact: use tailor-application, but only after …
- Very specific: line 61
If the user asks to write, reply to, follow up on, summarize, thank, schedule, negotiate, or respond to a recruiter/hiring email or …
- Very specific: line 64
If the user asks to add a tracked event to Apple Calendar, Google Calendar, Outlook Calendar, a real calendar, or an approved local …
- Very specific: line 69
If the user asks to sync/import/check email from Apple Mail, Gmail, or Outlook, pull recruiter replies, or ingest mailbox updates: use …
- Very specific: line 73
If the user asks to find a recruiter, hiring manager, employee contact, warm path, referral path, or relationship contact for a tracked …
- Very specific: line 78
If the user says they got an interview, screen, recruiter call, assessment, or panel: use interview-prep.
- Very specific: line 80
If the user reports a rejection, interview request, follow-up, blocker, or status change: use track-outcomes.
- Very specific: line 82
If the workspace is new or the candidate profile is incomplete: use ingest-profile.
- Very specific: line 84
If a careerrat command crashes or exits unexpectedly, a skill produces clearly-wrong output, or the user says "this is broken" / "report a …
- Very specific: line 110
Use candidate/evidence.yml and candidate/honesty.yml as source of truth.
- Very specific: line 113
Use tracker communication records and workspace/comms/ thread notes before asking the user to re-provide conversation history.
- Very specific: line 124
Stop only when an answer would require fabrication, unsupported years/metrics/dates or tool depth, a security clearance or legal claim not …
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CareerRat Local Agent Instructions
Read this before touching jobs.
Dashboard Dev Server
The dashboard should be live during active CareerRat work. Check
http://localhost:7777; if it is down, start careerrat tracker-dev from the repo
root before telling the user to use the dashboard.
careerrat start opens the terminal workspace and does not serve the dashboard.
careerrat start --browser starts the legacy dashboard as a
separate local process and records .internal/tracker-dev.pid plus
.internal/tracker-dev.log. Agents opened directly in the repo must perform the
same check themselves.
For agent-run sessions, detach it so it survives the current turn:
mkdir -p .internal
nohup careerrat tracker-dev > .internal/tracker-dev.log 2>&1 &
echo $! > .internal/tracker-dev.pidIf port 7777 is already occupied by something other than CareerRat, use
careerrat tracker-dev --port 7778 and report the actual URL. Keep the server
running after tracker-visible changes so the page hot reloads. The dashboard is
read-only; agents and skills write workspace/tracker.json.
Actionability Write-Back
Do not leave useful job-search state only in chat. The live dashboard renders from workspace files:
- Compact/actionable state goes in
workspace/tracker.json: applications, sourced roles, communication threads, message summaries, conversations, artifact paths, next actions, due dates, and source watermarks. - Long/raw bodies go in local artifacts and are referenced by JSON:
workspace/comms/*.md,workspace/jobs/*.md,workspace/tailored/*,workspace/interview-prep/*, andworkspace/research/*. - For every recruiter/email/message exchange, update
communications[], append amessages[]entry, set status/nextAction/nextActionDue, and store long thread bodies inworkspace/comms/withartifactPath. - For every application/interview/status change, update
applications[], artifact paths, follow-up state, andconversations[]as applicable. - After tracker-visible writes, run
careerrat tracker --verify; runnpm run verify:trackerwhen domain integrity could be affected; then runcareerrat trackerso the live UI hot reloads.
Intent Routing
- If the user says "apply", "apply to this", "submit", "fill this application",
or gives a JD URL with application intent: use
apply-job. - If the user says "find jobs", "search", "source", "scan", "refresh",
"HiringCafe", or asks for a queue: use
search-jobs. - If the user says "gate", "evaluate", "is this a fit", "should I apply", or
gives a JD URL without application intent: use
evaluate-job. - If the user asks to tailor a resume, cover letter, short answer, or
non-message outreach artifact: use
tailor-application, but only after the job has passedevaluate-job. - If the user asks to write, reply to, follow up on, summarize, thank, schedule,
negotiate, or respond to a recruiter/hiring email or message: use
email-comms. - If the user asks to add a tracked event to Apple Calendar, Google Calendar,
Outlook Calendar, a real calendar, or an approved local automation tool: use
calendar-sync. It requires thecalendar_synccapability to be allowed for the selected provider incareerrat automation status, previews the event, confirms first, writes only that provider, and appendscalendarWrites[]. - If the user asks to sync/import/check email from Apple Mail, Gmail, or
Outlook, pull recruiter replies, or ingest mailbox updates: use
ingest-mail. Gmail/Outlook requires themail_accesscapability to be allowed for that provider incareerrat automation status. - If the user asks to find a recruiter, hiring manager, employee contact, warm
path, referral path, or relationship contact for a tracked company or job: use
relationship-sourcing. It requires therelationship_sourcingcapability to be allowed for LinkedIn or Wellfound incareerrat automation status, writes only review leads intorelationshipLeads[], and never sends outreach. - If the user says they got an interview, screen, recruiter call, assessment, or
panel: use
interview-prep. - If the user reports a rejection, interview request, follow-up, blocker, or
status change: use
track-outcomes. - If the workspace is new or the candidate profile is incomplete: use
ingest-profile. - If a
careerratcommand crashes or exits unexpectedly, a skill produces clearly-wrong output, or the user says "this is broken" / "report a bug" / "file an issue": usereport-issue. It separates a real defect from a config problem, assembles redacted diagnostics (no candidate PII, comp, or workspace contents), and — only with an explicit yes — opens a GitHub issue on the upstreamCodesWhat/careerratrepo. It never auto-files.
Mandatory Gate
evaluate-job is the shared mandatory gate. Before tailoring or applying, read
the JD body and emit:
GATE: KEEP|CUT|REVIEW - reason
FIT: high|med|stretch <score> - why | caveats: ... | priority: ...
COMP: clear|review|below-floor|OE-bucket - reason
ACTION: apply-now|hold|manual|cutScanner scores are triage only.
search-jobs owns discovery and coarse intake. apply-job owns application
execution and must run or verify evaluate-job as step zero.
Truth Boundary
Use candidate/evidence.yml and candidate/honesty.yml as source of truth.
Never invent facts.
Use tracker communication records and workspace/comms/ thread notes before
asking the user to re-provide conversation history.
Application Fill Autonomy
Custom screening questions are not blockers by default. During apply-job, answer
as the candidate from local context first: candidate/form-defaults.yml (including
screening_answers), profile.yml, honesty.yml, evidence.yml, the saved JD,
and generated tailored artifacts. Fill ordinary supported prompts — interest,
relevant experience, availability, location, travel, work authorization,
sponsorship, expected compensation, and confirmed-tool questions — without stopping.
Stop only when an answer would require fabrication, unsupported years/metrics/dates
or tool depth, a security clearance or legal claim not in evidence, private current
compensation, a contradiction of honesty.yml, or a materially new disclosure not
captured during onboarding.
Public Default
CareerRat submits an application when it is complete and verified: every required
field answered, required uploads attached, exactly one clearly labelled submit
control, and an evaluate-job gate of KEEP or user-approved REVIEW. When
the submit mode is manual (careerrat automation submit manual --write), prepare the
form and stop for the candidate to press the final submit control.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

