Dice easy apply
全球最大的 Claude Code 技能聚合库 · 收录 3900+ 来自 12+ 来源的技能,提供在线搜索与趋势分析看板 / The world's largest Claude Code skill aggregation hub — 3900+ skills from 12+ sources with online search and trend dashboard
npx -y skills add bg-szy/TOP-SKILLS --skill dice-easy-applyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Automate Dice.com Easy Apply searches and applications with Puppeteer/Chromium, resume and cover-letter uploads, remote-role filtering, and conservative application guardrails.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.1 KB, as published. Nobody here has run it
Dice Easy Apply Automation
This skill helps an AI coding/operations agent build and run a repeatable Dice.com Easy Apply workflow.
It is intentionally public and credential-free. It contains no usernames, passwords, cookies, private profile paths, or user-specific secrets.
What it does
- Searches Dice jobs using the explicit Remote workplace filter.
- Focuses on software, web, full-stack, frontend/backend, AI, GenAI, LLM, Claude/OpenAI/Codex-style roles.
- Uses Dice in-site Easy Apply flows only, unless the operator explicitly approves external ATS applications.
- Uploads a verified resume PDF and optional cover-letter PDF.
- Uses a persistent Chromium profile so login can be performed manually once and reused safely.
- Keeps state/log files so daily reruns avoid duplicates.
- Skips roles with explicit onsite/hybrid/local/travel/clearance constraints or unknown required questions.
Safety rules
- Do not store job-board credentials in scripts, skills, memory, logs, or reports.
- Pass credentials only via one-off environment variables if absolutely necessary, or use a pre-authenticated browser profile.
- Stop for CAPTCHA, MFA, suspicious-login checks, identity verification, or account-security prompts.
- Do not fabricate answers. Skip forms requiring salary expectations, essays, custom cover letters, relocation preferences, travel, or unverifiable facts.
- Treat Dice match percentages as advisory only. Do not skip a role solely because Dice reports a low match score if the role title is inside the resume's wheelhouse.
- Gen AI / Generative AI Engineer should be treated as a software-engineering role when the resume supports web/software/AI work.
Recommended search URL
Use Dice's remote filter directly, not a radius search:
https://www.dice.com/jobs?filters.workplaceTypes=Remote&filters.easyApply=true&q=<QUERY>
For contract/direct-hire filtered searches, add Dice's employment and employer filters:
https://www.dice.com/jobs?filters.easyApply=true&filters.employmentType=CONTRACTS&filters.employerType=Direct+Hire&filters.workplaceTypes=Remote&q=<QUERY>
Useful query set:
gen ai engineer
generative ai engineer
llm engineer
ai full stack engineer
frontend ai engineer
web developer
full stack engineer
node react engineer
javascript engineer
typescript engineer
react developer
node.js developer
svelte developer
software engineer
Environment variables
RESUME_PDF=/absolute/path/to/resume.pdf
COVER_PDF=/absolute/path/to/cover.pdf
CHROME_PROFILE=$HOME/.cache/dice-chrome
STATE_DIR=/tmp/dice-easyapply-daily
MAX_SCAN=120
MAX_APPLY=15
DRY_RUN=1
SEARCHES='gen ai engineer|llm engineer|full stack engineer|react developer'
EMPLOYMENT_FILTER=CONTRACTS
EMPLOYER_TYPE='Direct Hire'
Puppeteer launch pattern
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({
headless: false,
executablePath: process.env.CHROME_BIN || '/snap/bin/chromium',
userDataDir: process.env.CHROME_PROFILE || `${process.env.HOME}/.cache/dice-chrome`,
defaultViewport: null,
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--start-maximized']
});
let page = await browser.newPage();
page.setDefaultTimeout(30000);
page.on('dialog', async d => {
try {
if (d.type() === 'beforeunload') await d.accept();
else await d.dismiss();
} catch {}
});
Core workflow
- Verify local files exist:
test -f "$RESUME_PDF"
test -f "$COVER_PDF"
- Open Dice with a persistent browser profile and verify login.
- Search remote Easy Apply roles using the query list.
- Extract Dice job IDs from
/job-detail/<id>URLs. - Open each job detail page and inspect only the main job description, not footer/recommended-job/sidebar text.
- Skip explicit onsite/hybrid/local/travel/clearance constraints.
- Open the wizard:
https://www.dice.com/job-applications/<job-id>/wizard
- Replace any stale/default resume with the verified resume PDF.
- Upload the cover-letter PDF where Dice supports it.
- Continue to the review screen.
- Confirm expected filenames and work authorization are visible.
- Submit only if no unknown required questions remain.
- Append a JSONL audit row and save state.
Suggested state
{
"seen": {},
"applied": {},
"skipped": {},
"alreadySubmitted": {}
}
Write state and logs to:
/tmp/dice-easyapply-daily/state.json
/tmp/dice-easyapply-daily/results.jsonl
Skip reasons
Common skip reasons:
not_remote_only_or_has_hybrid_location_textoutside_resume_wheelhouseexternal_ats_not_approvedunknown_required_questioncaptcha_or_verification_requiredcould_not_attach_resumecould_not_attach_cover_letteralready_submitted
Reporting
Report concise results:
Submitted:
- Title — Company — URL
Skipped:
- Title — Company — URL — reason
State: /tmp/dice-easyapply-daily/state.json
Log: /tmp/dice-easyapply-daily/results.jsonl
Pitfalls
- Dice may preselect an older profile resume. Always verify the filename before submitting.
- Dice pages can fire native
beforeunloaddialogs; register a Puppeteer dialog handler and accept beforeunload dialogs. - Dice may close/detach a page after a submit attempt. If navigation reports
Target closed,Session closed, orframe was detached, create a fresh page, re-register the dialog handler, and continue from state. - Do not let unrelated recommendation/sidebar/footer text cause false remote/hybrid skips.
- Do not overfit to a single resume. Keep search queries and skip rules configurable.