agentleFS
xiding-codexiding-code/job-application-skills/self-check/SKILL.md

self-check

Skill4 starsChanged 7 months agoMITView on GitHub

Pre-flight check that reads the user's config, profile, resume, and application history before starting any job search or application task. This skill MUST run at the start of every new conversation or session involving job applications. Trigger automatically when any other job-application skill is invoked, or when the user starts a new job search session. Also trigger on: "start applying", "new session", or any job-related request at the beginning of a conversation. Think of this as the initialization routine — it ensures every other skill operates with the most current information.

We split this skill into the rules it gives an agent

22 rules. 0 are common, 17 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 8 edited versions we read keep these.

  • 17

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read the config file to get the user's personal settings:

    line 23
  2. Distinctive:

    Ask these questions one by one (group related ones together to save time):

    line 34
  3. Very specific:

    After collecting answers, generate a complete config.yml and save it to the skills directory.

    line 45
  4. Very specific:

    Run validate_config.py to confirm everything is valid.

    line 46
  5. Distinctive:

    All downstream skills reference config values — never hardcode personal information.

    line 51
  6. Distinctive:

    Read the auto-memory file to get the user's current information:

    line 55
  7. Distinctive:

    If multiple versions exist, use the newest one

    line 83
  8. Distinctive:

    If resume is older than 2 weeks, flag: "Your resume was last updated on [date] — would you like to update it first?"

    line 84
  9. Very specific:

    Read config.registered_files — this is the user's file registry.

    line 104
  10. Distinctive:

    Verify the path still exists

    line 105
  11. Distinctive:

    If a file is missing, warn the user: "⚠ [filename] is registered but not found at [path]"

    line 106
  12. Distinctive:

    Read the file contents (or at least note the file type/size) so downstream skills can use them

    line 107
  13. Distinctive:

    If new files are found, ask the user:

    line 120
  14. Very specific:

    When the user says yes, add the file(s) to config.registered_files with:

    line 132
  15. Distinctive:

    Also handle "remember this file" mid-conversation: If at any point during a session the user says "remember this file", "add this to my …

    line 137
  16. Very specific:

    Add it to config.registered_files

    line 138
  17. Distinctive:

    Read any feedback memory files in auto-memory:

    line 144
  18. Distinctive:

    If a Job Tracker spreadsheet exists, read it to get:

    line 156
  19. Distinctive:

    After completing all checks, give a brief status report AND proactively ask the user to set this session's workload:

    line 164
  20. Distinctive:

    If the user only wants to evaluate a specific JD they've already pasted (not searching), skip question 1 and only ask question 2.

    line 190
  21. Distinctive:

    Keep the report concise — the questions are the most important part.

    line 192
  22. Distinctive:

    New projects: If profile mentions projects not in the cover letter templates, flag them as potential new material

    line 200

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Self-Check: Pre-Flight Initialization

This skill is the startup routine for the job application system. It reads all relevant files and memory to build an up-to-date picture before any search, writing, or application work begins. Without this step, other skills risk using stale data — wrong resume version, outdated skill list, or duplicate applications.

When to Run

Run this check:

  1. At the start of every new conversation that involves job applications
  2. Before the first use of any job-application skill in a session
  3. When the user explicitly asks to refresh or re-check their profile
  4. You only need to run it once per session — not before every single skill invocation

Check Sequence

Step 0: Load Configuration

Read the config file to get the user's personal settings:

File: [skills-root]/config.yml

This file contains all personal data (name, email, skills, projects, rubric weights, file paths, etc.).

If config.yml doesn't exist or still has placeholder values, enter Interactive Setup Mode:

  1. Tell the user: "Looks like this is your first time! I'll help you set up your profile. Just answer a few questions."
  2. Ask these questions one by one (group related ones together to save time):
    • "What's your full name? (and preferred name if different)"
    • "Email and phone number?"
    • "School, degree, and major? Expected graduation year?"
    • "Current job title and company? (or N/A if none)"
    • "List your strongest technical skills (e.g., Python, SQL, Excel...)"
    • "Briefly describe 1-3 key projects you've done (name + one sentence each)"
    • "Do you need visa sponsorship to work? (yes/no)"
    • "What cities are you open to working in?"
    • "What types of roles are you looking for? (e.g., Data Analyst Intern, PM Intern...)"
    • "Where is your resume file located? (e.g., ~/Desktop/MyResume.pdf)"
  3. After collecting answers, generate a complete config.yml and save it to the skills directory.
  4. Run validate_config.py to confirm everything is valid.
  5. Then proceed with the normal check sequence.

This way, new users never need to manually edit YAML. The conversation handles it.

All downstream skills reference config values — never hardcode personal information.

Step 1: Read Personal Profile

Read the auto-memory file to get the user's current information:

File: [session]/mnt/.auto-memory/user_background.md

Cross-reference with config.yml — if they conflict, trust the config file (it's the user's explicit settings) and flag the discrepancy.

Extract and verify:

  • Name, email, phone (from config)
  • Current education (school, degree, expected graduation)
  • Current role and responsibilities
  • Key projects and their details
  • Skills stack
  • Visa status

If neither the config nor the memory file has adequate info, ask the user to provide it.

Step 2: Read Latest Resume

Find and read the user's most recent resume:

Path: [config.files.resume]
  • Identify the most recent version by filename date or file modification time
  • Note the filename and date for use in application-filler
  • If multiple versions exist, use the newest one
  • If resume is older than 2 weeks, flag: "Your resume was last updated on [date] — would you like to update it first?"

Step 3: Scan Working Folder

List the contents of the user's working folder (config.files.cover_letter_dir) to understand:

Application history:

  • Which cover letters exist? (pattern: [Company]_CoverLetter_*.pdf)
  • Which JD snapshots exist? (pattern: [Company]_JD_*.md)
  • Is there a Job Tracker spreadsheet? What's the latest one?

Build a quick inventory:

Companies applied to: [list from cover letters]
Tracker file: [filename] (last updated: [date])
Resume version: [filename] (date: [date])

Step 4: Read Registered Files & Detect New Ones

Read config.registered_files — this is the user's file registry. For each registered file:

  • Verify the path still exists
  • If a file is missing, warn the user: "⚠ [filename] is registered but not found at [path]"
  • Read the file contents (or at least note the file type/size) so downstream skills can use them

Then scan the working folder for unregistered files that might be useful:

Scan: [config.files.cover_letter_dir] and [config.files.resume parent dir]
Look for: .pdf, .docx, .md, .txt, .py, .ipynb files that are NOT already:
  - Cover letters (pattern: *_CoverLetter_*)
  - JD snapshots (pattern: *_JD_*)
  - Tracker spreadsheets (pattern: Job_Tracker_*)
  - Already in config.registered_files

If new files are found, ask the user:

I found some files I don't recognize yet:
  1. 📄 portfolio_v2.pdf (added 3 days ago)
  2. 📁 capstone_project/ (folder, 12 files)
  3. 📄 recommendation_letter.pdf (added 1 week ago)

Want me to register any of these? They'll be available for
cover letters and applications. (Reply with numbers, or "skip")

When the user says yes, add the file(s) to config.registered_files with:

  • path: the file path
  • type: ask the user or infer from filename (resume, portfolio, transcript, writing, certificate, project_doc, reference, other)
  • description: ask the user for a one-line description

Also handle "remember this file" mid-conversation. If at any point during a session the user says "remember this file", "add this to my profile", "这个文件也用上", or similar:

  1. Add it to config.registered_files
  2. Save the updated config.yml
  3. Confirm: "✓ Registered [filename] as [type]"

Step 5: Read Feedback Memory

Read any feedback memory files in auto-memory:

Files:
- [session]/mnt/.auto-memory/feedback_cover_letter.md
- [session]/mnt/.auto-memory/feedback_job_screening.md

These contain accumulated preferences and corrections. Incorporate them into the current session.

Step 6: Check Application Tracker

If a Job Tracker spreadsheet exists, read it to get:

  • Total applications submitted
  • Recent applications (last 7 days)
  • Any pending actions (manual uploads, follow-ups)
  • Companies already applied to (for duplicate detection)

Step 7: Report & Ask Session Plan

After completing all checks, give a brief status report AND proactively ask the user to set this session's workload:

✓ Config loaded (personal data from config.yml)
✓ Resume version: [filename]
✓ Applied to: [N] companies
✓ This week: [M] applications
✓ Rubric loaded (weights, CL standards)
[⚠ Any issues that need attention]

Then immediately ask these two questions before doing anything else:

Ready to go. Before we start:

1. 这次要搜索多少个岗位?(How many jobs to search & score?)
   Default: [config.search.max_jobs_per_run] | Options: 5 / 10 / 20 / custom

2. 这次要全自动投递多少份?(How many to auto-apply with full pipeline?)
   Default: [config.search.max_apply_per_run] | Options: 1 / 3 / 5 / custom
   (Each includes: cover letter debate + form fill + tracking)

Wait for the user's answer. Store these two numbers as the session limits. All downstream skills (job-search, cover-letter-writer, application-filler) must respect these limits. If the user says "随便" or doesn't specify, use the config defaults.

If the user only wants to evaluate a specific JD they've already pasted (not searching), skip question 1 and only ask question 2.

Keep the report concise — the questions are the most important part.

What to Flag

  • Missing config.yml: User hasn't set up their configuration yet
  • Resume too old: Last modified > 2 weeks ago
  • Tracker gap: Applications in cover letter folder not in tracker
  • Memory conflict: Memory says something different from config (trust config, update memory)
  • New projects: If profile mentions projects not in the cover letter templates, flag them as potential new material

Integration

This skill feeds into all other job-application skills:

  • job-search: Uses the duplicate list to filter already-applied companies
  • job-screener: Uses the skill stack from config for matching
  • cover-letter-writer: Uses project details and latest background
  • application-filler: Uses the correct resume filename and personal data from config
  • application-tracker: Knows the current tracker file location and row count

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.