Reading the repo
Opening the box…
Reading the repo
Opening the box…
Assembly instructions
JobCraft AI — Autonomous Career Engine, Real-time Job Radar & Application Studio
Saved setup from 11 h ago
Will it work on macOS?
CONTRIBUTING.mdThanks for considering a contribution! This repo has a deliberate, narrow philosophy, and most declined PRs are well-executed work that simply didn't know about it. Read this first; it will save you effort and tell you where your work will land best.
This repo is a universal template. People fork it and adapt it to their own market, language, and profile. Upstream stays market-agnostic, person-agnostic, and Claude Code-native. The corollary: a contribution is judged by fit to this rule first, execution quality second. Well-built but off-policy still gets declined (kindly, with reasons).
/add-template (#30), /add-portal (#37).linkedin-search) or the maintainer's own demonstration instance (the Danish portals).placeholder-integrity). Precedent: #17, #72.The core lifecycle is feature-complete: /setup → /scrape → /rank → /apply → /interview → /outcome → calibration back into /setup, with /expand, /upskill, /add-template, /add-portal, and /reset around it. Every stage of a real job hunt has an owner.
A new command therefore faces a high bar. The test that admitted the existing ones: does it operationalize something error-prone that already exists in the framework (documented machinery nothing executes, data something writes but nothing reads)? "Useful" and "possible" are not sufficient; the strongest proposals connect two things that already exist without modifying either (#43, #54).
Reviews here are empirical. Bug reports are reproduced on master before the fix is considered; "all tests green" is checked against whether the tests can distinguish master from the fix. PRs whose premise doesn't reproduce get declined even when the code is fine - it has happened (#35's converter fix, #52's first version). You can make this fast:
.agents/skills/<name>/cli/tests/ (bun test, network-free where possible); Python tool tests in tests/.python3 tools/lint_skills.py, python3 tools/check_framework_version.py, python3 tools/security_guards.py, python3 -m unittest discover -s tests, and in touched CLIs bun run typecheck + bun test.Credit norm: a change that incorporates your actual code gets a Co-authored-by trailer; a change written independently from your observation or report gets a named mention in the commit message and PR. Both happen unprompted.
Invited PRs: when a maintainer comment explicitly invites a named contributor to file the PR for an issue they diagnosed or designed, that invitation reserves the implementation for them - by default for seven days from the invite, longer when they say they are working on it. A duplicate PR filed inside that window will be closed in favor of the invitee's, regardless of arrival order or polish. Review, test, and comment on an invited PR all you like - that multiplies the work; racing it doesn't. (Prospective from 2026-08-14.)
/add-portal with your local job board - it scaffolds a portal skill matching the shipped contract, and /scrape picks it up automatically.python3 tools/check_upstream_updates.py) in your fork to check if upstream has updated any framework files and compare them with your personalized variants.Market-specific skills are genuinely valuable - they just live in forks, where their maintainers can test them and their users can find them.
One practical warning: when you open a PR from a fork, GitHub targets this upstream repo by default, not your own - three personalized-fork PRs landed here by accident in a single week (#155, #162, #165). Check the "base repository" dropdown before publishing.
Claude Code is the reference runtime: it is what the maintainer runs daily and what every methodology change is verified on. A parallel command tree for another runtime (Codex, Antigravity, Gemini CLI, ...) would ship untested on every change - CI cannot run those harnesses - and each accepted runtime makes the next one harder to refuse. It is the same arithmetic that keeps market-specific portals in forks.
What upstream maintains for other runtimes instead:
.agents/skills/ use the portable Agent Skills format (SKILL.md per portal) and are auto-discovered by Codex and Antigravity today.AGENTS.md points any agent at the canonical workflow specs and the profile entry point.framework_version markers, so a runtime fork can track methodology changes precisely (python3 tools/check_upstream_updates.py).Announce your runtime fork in the pinned Community forks & adaptations discussion and it gets listed alongside the market adaptations. The proven shape is a thin pointer: reference the specs here instead of copying them, so upstream improvements reach your fork on rebase.
This is a decision, not a dogma: if cross-runtime standards mature to the point where these specs run unmodified elsewhere, or the community's center of gravity moves to runtime forks, the trade-off gets re-evaluated. Background: the architecture thread in Community forks & adaptations.
search/detail commands, --format json|table|plain, stderr JSON errors with exit 1, backoff on 429/5xx, zero runtime dependencies by default. See /add-portal's spec and linkedin-search as the reference implementation.lualatex for the CV, xelatex for the cover letter) and hold their exact page counts. CI smoke-checks this.Questions and proposals are welcome in Discussions - an Idea thread costs nothing and can save you building the wrong thing :-)
Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
Needs Git: xcode-select --install
git clone https://github.com/jastfan/JobCraft.git cd JobCraft
Node.js >=18.0.0
# needs nvm: brew install nvm (or https://github.com/nvm-sh/nvm) nvm install --lts
npm install
npm run dev
v18.0.0 or highergit clone https://github.com/<your-username>/JobCraft.git
cd JobCraft
Copy the example environment configuration:
cp .env.example .env
(On Windows PowerShell: Copy-Item .env.example .env)
JobCraft has zero external runtime dependencies! Simply run:
npm start
Or directly via Node:
node web/server.js
Navigate to:
http://localhost:3000
http://localhost:3000http://localhost:3000/admin.htmlhttp://localhost:3000/api/healthNo reports for macOS yet.
GitManual AI Agent reads the 4 key files and writes a step-by-step guide for macOS. Once written, it's saved for everyone.