agentleFS
ShuchangZhangShuchangZhang/job-application-tracker/SKILL.md

job-application-tracker

Skill3 starsChanged 3 months agoMITView on GitHub

Track and manage personal job applications across campus recruiting, internships, Graduate Programs, and experienced hiring. Use when the user mentions applications, interviews, written tests, offers, rejections, job-search progress, interview progress, an application dashboard, or a status change such as applying, advancing, being rejected, or receiving an offer. Also use when the user asks to install, activate, locate, open, repair, or start the tracker. Supports safe natural-language updates, text summaries, a local visual dashboard, and reminders for upcoming dated steps.

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

30 rules. 0 are common, 21 are distinctive, and 9 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 21

    Distinctive

    This author's own choices. Worth a look.

  • 9

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use a local, portable job board as the single source of truth for application records.

    line 8
  2. Distinctive:

    Keep the skill implementation, Agent instructions, references, scripts, schemas, comments, and tests in English.

    line 12
  3. Distinctive:

    Read only the reference needed for the current operation:

    line 18
  4. Distinctive:

    Read references/data-model.md before recording, updating, validating, summarizing, or reminding.

    line 20
  5. Distinctive:

    Read references/deployment.md before installing, activating, locating, moving, repairing, or starting a board.

    line 21
  6. Distinctive:

    Read references/board-ui.md before rebuilding or changing the dashboard, launchers, local server, or visualization logic.

    line 22
  7. Very specific:

    Use python3 on macOS/Linux.

    line 28
  8. Distinctive:

    If the user supplies a path, inspect it:

    line 30
  9. Very specific:

    If it contains valid legacy data.json but lacks the marker, explain that a portable, non-sensitive identity file will be added, then run:

    line 36
  10. Distinctive:

    Never choose by modification time, record count, or guesswork.

    line 54
  11. Distinctive:

    Treat exit 3 as a concurrent-edit conflict.

    line 79
  12. Very specific:

    Never write data.json directly.

    line 82
  13. Very specific:

    Keep note empty unless the user explicitly asks to write something into it.

    line 95
  14. Distinctive:

    Use the safe data workflow and report the exact record and event changed.

    line 96
  15. Distinctive:

    Never fabricate a company, role, date, channel, location, salary, outcome, or interview round.

    line 98
  16. Distinctive:

    Put qualifying dated reminders from today through the next seven days first.

    line 104
  17. Distinctive:

    Do not rebuild HTML unless the user explicitly asks.

    line 109
  18. Distinctive:

    Read references/deployment.md and references/board-ui.md.

    line 113
  19. Distinctive:

    Read references/deployment.md and follow its discovery-first workflow.

    line 121
  20. Very specific:

    Use only a resolved, marked BOARD_DIR.

    line 125
  21. Distinctive:

    Do not silently create a replacement board.

    line 126
  22. Distinctive:

    Do not recursively scan the user's home directory.

    line 127
  23. Distinctive:

    Do not store a global path registry.

    line 128
  24. Very specific:

    Use data_store.py for every Agent-side data write.

    line 129
  25. Very specific:

    Keep note empty unless explicitly requested.

    line 131
  26. Very specific:

    Use neutral stage and batch codes from references/data-model.md.

    line 132
  27. Distinctive:

    Use the real current date.

    line 133
  28. Distinctive:

    If file-write permission is unavailable, explain the exact manual steps and never claim a write succeeded.

    line 134
  29. Distinctive:

    Do not combine a data mutation with an engine rebuild unless the user explicitly requests both.

    line 135
  30. Very specific:

    Do not overwrite data.json, .data.backup.*.json, or .job-tracker-board.json when deploying or updating engine files.

    line 136

“Common” is measured: kept by at least 6 in 10 of the 4 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

Job Application Tracker

Use a local, portable job board as the single source of truth for application records. Let the user speak naturally; resolve the correct board, preserve existing information, and apply deterministic, conflict-safe changes.

Language Policy

Keep the skill implementation, Agent instructions, references, scripts, schemas, comments, and tests in English. Treat English names and definitions as canonical.

User-facing surfaces may be localized. README.md and the assets/dashboard-* front-end files currently include Chinese and English. Store language-neutral codes for stages and batches so display language never changes the underlying meaning.

Required References

Read only the reference needed for the current operation:

  • Read references/data-model.md before recording, updating, validating, summarizing, or reminding.
  • Read references/deployment.md before installing, activating, locating, moving, repairing, or starting a board.
  • Read references/board-ui.md before rebuilding or changing the dashboard, launchers, local server, or visualization logic.

Resolve the Board First

Denote the selected directory as BOARD_DIR.

Use python3 on macOS/Linux. On Windows, replace python3 in the commands below with py -3 when available, otherwise python.

  1. If the user supplies a path, inspect it:

    python3 <skill-dir>/scripts/board_locator.py inspect --board-dir <path>

    If it contains valid legacy data.json but lacks the marker, explain that a portable, non-sensitive identity file will be added, then run:

    python3 <skill-dir>/scripts/board_locator.py mark --board-dir <path>
  2. Otherwise discover marked boards:

    python3 <skill-dir>/scripts/board_locator.py discover
  3. Interpret discovery exactly:

    • Exit 0: use the single valid board and report its path and record count.
    • Exit 4: ask for an existing path or explicit permission to create a new board.
    • Exit 5: show every candidate and require the user to choose.

Never choose by modification time, record count, or guesswork. Never create a board merely because discovery failed. Never store a global absolute-path registry in the user's home directory.

Safe Data Workflow

For every read or write:

  1. Resolve BOARD_DIR.
  2. Get the real current date when dates affect the operation: run date +%Y-%m-%d on macOS/Linux or (Get-Date).ToString('yyyy-MM-dd') in Windows PowerShell.
  3. Take a snapshot:

    python3 <skill-dir>/scripts/data_store.py snapshot \
      --data <BOARD_DIR/data.json>
  4. Preserve the returned boardTitle, optional lang, optional stageLevels, all records, all unknown-but-valid record fields, and the returned ETag.
  5. For a write, create a candidate JSON file and replace safely:

    python3 <skill-dir>/scripts/data_store.py replace \
      --data <BOARD_DIR/data.json> \
      --input <candidate.json> \
      --expected-etag <etag>
  6. Treat exit 3 as a concurrent-edit conflict. Take a new snapshot, reapply only the user's requested change, and retry. Never force a stale write.
  7. Confirm success only after the tool succeeds.

Never write data.json directly. Never load teaching examples without explicit user confirmation or treat them as real applications. Never modify deployed engine files during a data-only operation.

Core Operations

Record or Update an Application

  1. Read references/data-model.md.
  2. Match an existing record by company and role. If the target is ambiguous, ask the user to choose.
  3. For a new record, require company and role. Ask once for missing optional details—channel, application portal, city, and recruiting batch—then wait for the user's answer or explicit request to skip before saving.
  4. Insert a new record at the beginning of records so new applications appear first by default. Preserve the existing array position when updating a record.
  5. For an existing record, change only the fields the user mentioned.
  6. Advance progress by appending an event; never maintain a separate status field.
  7. For an unseen custom stage, preserve its exact text and add a stageLevels rule. Use the user's requested placement; otherwise default to a distinct level immediately before k_hr.
  8. Keep note empty unless the user explicitly asks to write something into it.
  9. Use the safe data workflow and report the exact record and event changed.

Never fabricate a company, role, date, channel, location, salary, outcome, or interview round.

Show a Text Progress Summary

  1. Read references/data-model.md.
  2. Take a safe snapshot without modifying data.
  3. Put qualifying dated reminders from today through the next seven days first.
  4. Group records into in progress, offered, ended, and not yet applied.
  5. Identify stale in-progress records and upcoming milestones.
  6. End with one concrete next action.

Do not rebuild HTML unless the user explicitly asks.

Open or Rebuild the Visual Board

  1. Read references/deployment.md and references/board-ui.md.
  2. Resolve and validate the existing board before touching engine files.
  3. Normally tell the user to start the board and open http://127.0.0.1:8770/.
  4. Recopy the front-end engine set only when an engine file is missing or the user explicitly asks to rebuild or update the engine.
  5. Preserve data.json and all backups.

Install or Activate

Read references/deployment.md and follow its discovery-first workflow. Installation of the skill and creation of a new board are separate actions. Creating a board requires explicit user intent.

Hard Rules

  1. Use only a resolved, marked BOARD_DIR.
  2. Do not silently create a replacement board.
  3. Do not recursively scan the user's home directory.
  4. Do not store a global path registry.
  5. Use data_store.py for every Agent-side data write.
  6. Preserve unmentioned data and existing fields.
  7. Keep note empty unless explicitly requested.
  8. Use neutral stage and batch codes from references/data-model.md.
  9. Use the real current date; do not rely on mental date arithmetic.
  10. If file-write permission is unavailable, explain the exact manual steps and never claim a write succeeded.
  11. Do not combine a data mutation with an engine rebuild unless the user explicitly requests both.
  12. Do not overwrite data.json, .data.backup.*.json, or .job-tracker-board.json when deploying or updating engine files.

Bundled Resources

  • scripts/board_locator.py: identify, mark, and safely discover board directories.
  • scripts/data_store.py: snapshot, validate, conflict-check, atomically replace, and back up data.
  • assets/dashboard-template.html, dashboard.css, and dashboard-*.js: localized, dependency-free dashboard modules.
  • assets/server.py: loopback-only local server and validated data API.
  • assets/start.command / assets/stop.command: macOS launchers.
  • assets/start-board.bat / assets/stop-board.bat with matching PowerShell helpers: Windows launchers with health checks and diagnostic logs.
  • assets/data.json: empty seed for an explicitly requested new board only.
  • tools/: deterministic Sankey crossing-regression utilities.

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.