{
  "schemaVersion": "1.0",
  "item": {
    "slug": "work-application",
    "name": "Openclaw Skill Work Application",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Romain-Grosos/work-application",
    "canonicalUrl": "https://clawhub.ai/Romain-Grosos/work-application",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "manual_only",
    "downloadUrl": "/downloads/work-application",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=work-application",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "config.example.json",
      "references/api.md",
      "references/troubleshooting.md",
      "scripts/_analyzer.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Open the source page and confirm the package flow manually.",
      "Review SKILL.md if you can obtain the files.",
      "Treat this source as manual setup until the download is verified."
    ],
    "agentAssist": {
      "summary": "Use the source page and any available docs to guide the install because the item currently does not return a direct package file.",
      "steps": [
        "Open the source page via Open source listing.",
        "If you can obtain the package, extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the source page and extracted files."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I tried to install a skill package from Yavira, but the item currently does not return a direct package file. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required. Then review README.md for any prerequisites, environment setup, or post-install checks."
        },
        {
          "label": "Upgrade existing",
          "body": "I tried to upgrade a skill package from Yavira, but the item currently does not return a direct package file. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need. Then review README.md for any prerequisites, environment setup, or post-install checks."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "work-application",
      "status": "source_issue",
      "reason": "not_found",
      "recommendedAction": "review_source",
      "checkedAt": "2026-05-06T16:33:45.513Z",
      "expiresAt": "2026-05-07T16:33:45.513Z",
      "httpStatus": 404,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=work-application",
      "contentType": "text/plain",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=work-application",
        "contentDisposition": null,
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "work-application"
      },
      "scope": "item",
      "summary": "Known item issue.",
      "detail": "This item's current download entry is known to bounce back to a listing or homepage instead of returning a package file.",
      "primaryActionLabel": "Open source listing",
      "primaryActionHref": "https://clawhub.ai/Romain-Grosos/work-application"
    },
    "validation": {
      "installChecklist": [
        "Open the source listing and confirm there is a real package or setup artifact available.",
        "Review SKILL.md before asking your agent to continue.",
        "Treat this source as manual setup until the upstream download flow is fixed."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/work-application",
    "agentPageUrl": "https://openagent3.xyz/skills/work-application/agent",
    "manifestUrl": "https://openagent3.xyz/skills/work-application/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/work-application/agent.md"
  },
  "agentAssist": {
    "summary": "Use the source page and any available docs to guide the install because the item currently does not return a direct package file.",
    "steps": [
      "Open the source page via Open source listing.",
      "If you can obtain the package, extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the source page and extracted files."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I tried to install a skill package from Yavira, but the item currently does not return a direct package file. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required. Then review README.md for any prerequisites, environment setup, or post-install checks."
      },
      {
        "label": "Upgrade existing",
        "body": "I tried to upgrade a skill package from Yavira, but the item currently does not return a direct package file. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need. Then review README.md for any prerequisites, environment setup, or post-install checks."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Work Application Skill",
        "body": "Job search automation with CV generation, scraping, analysis, and tracking. 4 HTML CV templates (classic, modern-sidebar, two-column, creative), job scraping across 5 French platforms (Free-Work, WTTJ, Apec, HelloWork, LeHibou), keyword-based scoring, deep page analysis, full multi-dimension report (skills/company/location/salary with market data), and candidature tracking via markdown table. Stdlib only (except Playwright for scraping/analysis). Supports local and Nextcloud storage.\n\nProfiles: ~/.openclaw/data/work-application/ · Config: ~/.openclaw/config/work-application/config.json"
      },
      {
        "title": "Trigger phrases",
        "body": "Load this skill when the user says anything like:\n\n\"generate my CV\", \"create a resume\", \"render my CV\"\n\"adapt my CV for this job offer\", \"tailor my resume\"\n\"scrape job offers\", \"find jobs\", \"search for devops positions\"\n\"analyze job offers\", \"rank these jobs\", \"score job matches\"\n\"deep analyze these jobs\", \"scrape and analyze job pages\"\n\"analyze this job offer\", \"generate a report for this URL\", \"report on this job\"\n\"track this application\", \"log candidature\", \"update application status\"\n\"list my applications\", \"show candidatures\"\n\"validate my CV\", \"check CV formatting\"\n\"show my profile\", \"what's in my master profile\""
      },
      {
        "title": "Quick Start",
        "body": "python3 scripts/work_application.py profile show\npython3 scripts/work_application.py render --template classic --output cv.html\npython3 scripts/work_application.py report \"https://example.com/job-offer\"\npython3 scripts/work_application.py track list"
      },
      {
        "title": "Setup",
        "body": "python3 scripts/setup.py       # interactive: profile + permissions + scraper config\npython3 scripts/init.py        # validate configuration\n\nconfig.json - behavior restrictions (all destructive capabilities disabled by default):\n\nKeyDefaultEffectallow_writefalseallow modifying master profileallow_exporttrueallow generating HTML/PDFallow_scrapefalseallow running job scraper + network requests (requires Playwright)allow_trackingtrueallow logging candidaturesdefault_template\"classic\"CV template when not specifieddefault_color\"#2563eb\"accent colordefault_lang\"fr\"language (fr/en)report_mode\"analysis\"report output: analysis or cv+analysisreadonly_modefalseoverride: block all writes regardless of above"
      },
      {
        "title": "Storage & data",
        "body": "PathWritten byPurpose~/.openclaw/config/work-application/config.jsonsetup.pyPermissions and defaults. No secrets.~/.openclaw/data/work-application/profile-master.jsonsetup.pyComplete master profile (all experiences, skills, etc.)~/.openclaw/data/work-application/profile.jsonAgentAdapted profile for current job offer~/.openclaw/data/work-application/candidatures.mdAgentApplication tracking table~/.openclaw/data/work-application/jobs/jobs-found.mdScraperRaw scraped job offers~/.openclaw/data/work-application/jobs/jobs-ranked.mdAnalyzerScored and ranked offers~/.openclaw/data/work-application/jobs/jobs-selected.mdAnalyzerTop selection (CDI + Freelance)~/.openclaw/data/work-application/market-data.jsonReportMarket salary references (auto-generated, editable)~/.openclaw/data/work-application/reports/report-*.mdReportFull analysis reports (markdown)~/.openclaw/data/work-application/reports/report-*.jsonReportFull analysis reports (JSON)\n\nNextcloud storage (optional): when storage.backend = \"nextcloud\" is set in config, files are stored on the user's Nextcloud instance instead of locally. Authentication is delegated entirely to the openclaw-skill-nextcloud skill - this skill never handles Nextcloud credentials. The nextcloud skill must be installed separately.\n\nCleanup: python3 scripts/setup.py --cleanup\n\nUninstall: rm -rf ~/.openclaw/data/work-application/ ~/.openclaw/config/work-application/"
      },
      {
        "title": "Capability isolation",
        "body": "All capabilities are disabled or restricted by default. The agent cannot perform actions until explicitly enabled in config.json:\n\nCapabilityDefaultWhat it gatesallow_writefalseModify master profileallow_exporttrueGenerate HTML/PDF outputallow_scrapefalseRun Playwright browser, make network requestsallow_trackingtrueAppend to candidature logreadonly_modefalseMaster kill-switch - blocks all writes"
      },
      {
        "title": "Credential isolation",
        "body": "This skill stores no secrets and requires no environment variables. config.json contains only behavioral flags and defaults - never credentials.\n\nLocal storage (default): reads/writes files under ~/.openclaw/data/work-application/. No authentication needed.\nNextcloud storage (optional): delegates all authentication to the openclaw-skill-nextcloud skill, which manages its own credentials (NC_URL, NC_USER, NC_APP_KEY in ~/.openclaw/secrets/nc_creds). This skill never reads, stores, or handles Nextcloud credentials directly - it imports NextcloudClient from the nextcloud skill at runtime. The nextcloud skill must be installed and configured separately (clawhub install nextcloud-files).\nScraping (optional, allow_scrape=true): Playwright runs without authentication. Job pages are fetched as anonymous HTTP requests. Company review scraping (Glassdoor/Indeed) also runs unauthenticated - no login or API key is used."
      },
      {
        "title": "Path traversal protection",
        "body": "All storage operations (local and Nextcloud) validate filenames through _validate_name():\n\nRejects absolute paths (/etc/passwd, C:\\...)\nRejects traversal sequences (../, ..\\\\, bare ..)\nRejects null bytes (\\x00)\nNormalizes slashes and collapses redundant separators\nLocalStorage additionally resolves the final path and verifies it remains inside the storage root directory"
      },
      {
        "title": "HTML output safety",
        "body": "All profile fields are passed through html.escape() before HTML rendering. No raw user content is inserted into templates. This prevents XSS if the generated CV is served or shared."
      },
      {
        "title": "Network boundaries",
        "body": "No network calls by default - CV generation, analysis, tracking are fully offline\nNetwork calls only happen when allow_scrape=true, exclusively via Playwright (headless Chromium)\nDomains contacted when scraping: free-work.com, welcometothejungle.com, apec.fr, hellowork.com, lehibou.com (job platforms), plus the specific job offer URL provided by the user\nDomains contacted by report (optional, allow_scrape=true): glassdoor.fr, fr.indeed.com (company reviews - unauthenticated, anonymous)\nNextcloud storage (optional): contacts the user's own Nextcloud instance via the nextcloud skill - no third-party server\nURLs built from user data (company names for review lookup) are properly URL-encoded\nNo background network activity, no telemetry, no phone-home"
      },
      {
        "title": "File output safety",
        "body": "Reports and CVs are written only to the configured storage directory (~/.openclaw/data/work-application/ or Nextcloud remote path)\nFilenames derived from user data (company names) are strictly sanitized to ASCII alphanumeric + hyphens\nSubdirectories (reports/, jobs/) are created inside the storage root only"
      },
      {
        "title": "Module usage",
        "body": "from scripts._profile import load_master_profile, load_adapted_profile, save_adapted_profile\nfrom scripts._cv_renderer import render_cv\nfrom scripts._validators import validate_profile\nfrom scripts._tracker import log_application, list_applications, update_status\nfrom scripts._report import generate_report, format_report_markdown, save_report"
      },
      {
        "title": "CLI reference",
        "body": "# Profile\npython3 scripts/work_application.py profile show\npython3 scripts/work_application.py profile validate\n\n# CV Rendering\npython3 scripts/work_application.py render --template classic --output cv.html\npython3 scripts/work_application.py render --template modern-sidebar --color \"#e63946\" --lang en\n\n# Job Scraping\npython3 scripts/work_application.py scrape\npython3 scripts/work_application.py scrape --platforms free-work,wttj\n\n# Job Analysis\npython3 scripts/work_application.py analyze\n\n# Deep Analysis (scrape job pages for detailed matching)\npython3 scripts/work_application.py deep-analyze\npython3 scripts/work_application.py deep-analyze --max 10\n\n# Report (full multi-dimension analysis of a single offer)\npython3 scripts/work_application.py report \"https://example.com/job-offer\"\n\n# Application Tracking\npython3 scripts/work_application.py track list\npython3 scripts/work_application.py track list --status en_attente\npython3 scripts/work_application.py track add \"Thales\" \"DevOps Engineer\" --location Paris --salary \"55-65k\"\npython3 scripts/work_application.py track update \"Thales\" entretien\n\n# Config\npython3 scripts/work_application.py config"
      },
      {
        "title": "Adapt CV for a job offer",
        "body": "from scripts._profile import load_master_profile, save_adapted_profile\nfrom scripts._cv_renderer import render_cv\nfrom scripts._validators import validate_profile\n\n# 1. Load master profile\nmaster = load_master_profile()\n# 2. Agent adapts profile for the job (select relevant skills, rewrite summary, etc.)\nadapted = adapt_for_job(master, job_description)  # agent logic\n# 3. Validate\nreport = validate_profile(adapted)\nif not report[\"valid\"]:\n    print(\"Errors:\", report[\"errors\"])\n# 4. Save and render\nsave_adapted_profile(adapted)\nhtml = render_cv(adapted, template=\"classic\", color=\"#2563eb\")"
      },
      {
        "title": "Scrape → Analyze → Track",
        "body": "# 1. Scrape jobs\nfrom scripts._scraper import JobScraper, filter_jobs, deduplicate\nscraper = JobScraper(config)\njobs = asyncio.run(scraper.scrape_all())\njobs = deduplicate(filter_jobs(jobs, config[\"scraper\"][\"filters\"]))\n\n# 2. Analyze\nfrom scripts._analyzer import rank_jobs, select_top\nranked = rank_jobs(jobs, master_profile)\nselected = select_top(ranked)\n\n# 3. Track top matches\nfrom scripts._tracker import log_application\nfor job in selected[\"cdi\"][:5]:\n    log_application(job[\"company\"], job[\"title\"], location=job.get(\"location\",\"\"))"
      },
      {
        "title": "Quick candidature update",
        "body": "from scripts._tracker import update_status, list_applications\nupdate_status(\"Thales\", \"entretien\")\nactive = list_applications(status=\"en_attente\")"
      },
      {
        "title": "CV Templates",
        "body": "TemplateDescriptionBest forclassicSingle-column, ATS-optimizedMost applications, ATS systemsmodern-sidebarSidebar (35%) + main (65%)Tech companies, startupstwo-columnTwo-column grid (38/62)Creative roles, design-awarecreativeTimeline, gradient headerPersonal branding, portfolios"
      },
      {
        "title": "Status icons",
        "body": "StatusIconMeaningen_attente⏳Waiting for responseentretien📞Interview schedulednegociation🤝In negotiationoffre✅Offer receivedrefus❌Rejecteddesistement🚫Withdrawn"
      },
      {
        "title": "Scraper platforms",
        "body": "PlatformURLTypesNotesFree-Workfree-work.comFreelanceTJM parsing, remote detectionWTTJwelcometothejungle.comCDISalary ranges, company pagesApecapec.frCDI/CadreExecutive positionsHelloWorkhellowork.comCDIBroad coverageLeHiboulehibou.comFreelanceIT freelance missions"
      },
      {
        "title": "Ideas",
        "body": "Set allow_scrape: false + allow_export: true for a CV-only mode\nUse scraper with allow_tracking: true to auto-log the best matches\nAdapt CV per job offer, validate, render, then log the application\nUse readonly_mode: true for a safe demo mode"
      },
      {
        "title": "Notes",
        "body": "Playwright dependency: Only needed for scraping. CV generation is stdlib only.\nProfile structure: Master profile contains ALL data. Adapted profile is a filtered subset for a specific job.\nValidators: Port of the JavaScript validators - same limits and thresholds.\ni18n: CV rendering supports French and English section headings.\nPrint-ready: Generated HTML includes @media print rules and A4 page breaks."
      },
      {
        "title": "Combine with",
        "body": "SkillWorkflowghostGenerate CV → publish as Ghost pagenextcloudSave rendered CV to NextcloudgmailSend CV as email attachmentveilleMonitor job market trends → adapt search queries"
      },
      {
        "title": "API reference",
        "body": "See references/api.md for CLI command details and profile schema."
      },
      {
        "title": "Troubleshooting",
        "body": "See references/troubleshooting.md for common errors and fixes."
      }
    ],
    "body": "Work Application Skill\n\nJob search automation with CV generation, scraping, analysis, and tracking. 4 HTML CV templates (classic, modern-sidebar, two-column, creative), job scraping across 5 French platforms (Free-Work, WTTJ, Apec, HelloWork, LeHibou), keyword-based scoring, deep page analysis, full multi-dimension report (skills/company/location/salary with market data), and candidature tracking via markdown table. Stdlib only (except Playwright for scraping/analysis). Supports local and Nextcloud storage.\n\nProfiles: ~/.openclaw/data/work-application/ · Config: ~/.openclaw/config/work-application/config.json\n\nTrigger phrases\n\nLoad this skill when the user says anything like:\n\n\"generate my CV\", \"create a resume\", \"render my CV\"\n\"adapt my CV for this job offer\", \"tailor my resume\"\n\"scrape job offers\", \"find jobs\", \"search for devops positions\"\n\"analyze job offers\", \"rank these jobs\", \"score job matches\"\n\"deep analyze these jobs\", \"scrape and analyze job pages\"\n\"analyze this job offer\", \"generate a report for this URL\", \"report on this job\"\n\"track this application\", \"log candidature\", \"update application status\"\n\"list my applications\", \"show candidatures\"\n\"validate my CV\", \"check CV formatting\"\n\"show my profile\", \"what's in my master profile\"\nQuick Start\npython3 scripts/work_application.py profile show\npython3 scripts/work_application.py render --template classic --output cv.html\npython3 scripts/work_application.py report \"https://example.com/job-offer\"\npython3 scripts/work_application.py track list\n\nSetup\npython3 scripts/setup.py       # interactive: profile + permissions + scraper config\npython3 scripts/init.py        # validate configuration\n\n\nconfig.json - behavior restrictions (all destructive capabilities disabled by default):\n\nKey\tDefault\tEffect\nallow_write\tfalse\tallow modifying master profile\nallow_export\ttrue\tallow generating HTML/PDF\nallow_scrape\tfalse\tallow running job scraper + network requests (requires Playwright)\nallow_tracking\ttrue\tallow logging candidatures\ndefault_template\t\"classic\"\tCV template when not specified\ndefault_color\t\"#2563eb\"\taccent color\ndefault_lang\t\"fr\"\tlanguage (fr/en)\nreport_mode\t\"analysis\"\treport output: analysis or cv+analysis\nreadonly_mode\tfalse\toverride: block all writes regardless of above\nStorage & data\nPath\tWritten by\tPurpose\n~/.openclaw/config/work-application/config.json\tsetup.py\tPermissions and defaults. No secrets.\n~/.openclaw/data/work-application/profile-master.json\tsetup.py\tComplete master profile (all experiences, skills, etc.)\n~/.openclaw/data/work-application/profile.json\tAgent\tAdapted profile for current job offer\n~/.openclaw/data/work-application/candidatures.md\tAgent\tApplication tracking table\n~/.openclaw/data/work-application/jobs/jobs-found.md\tScraper\tRaw scraped job offers\n~/.openclaw/data/work-application/jobs/jobs-ranked.md\tAnalyzer\tScored and ranked offers\n~/.openclaw/data/work-application/jobs/jobs-selected.md\tAnalyzer\tTop selection (CDI + Freelance)\n~/.openclaw/data/work-application/market-data.json\tReport\tMarket salary references (auto-generated, editable)\n~/.openclaw/data/work-application/reports/report-*.md\tReport\tFull analysis reports (markdown)\n~/.openclaw/data/work-application/reports/report-*.json\tReport\tFull analysis reports (JSON)\n\nNextcloud storage (optional): when storage.backend = \"nextcloud\" is set in config, files are stored on the user's Nextcloud instance instead of locally. Authentication is delegated entirely to the openclaw-skill-nextcloud skill - this skill never handles Nextcloud credentials. The nextcloud skill must be installed separately.\n\nCleanup: python3 scripts/setup.py --cleanup\n\nUninstall: rm -rf ~/.openclaw/data/work-application/ ~/.openclaw/config/work-application/\n\nSecurity model\nCapability isolation\n\nAll capabilities are disabled or restricted by default. The agent cannot perform actions until explicitly enabled in config.json:\n\nCapability\tDefault\tWhat it gates\nallow_write\tfalse\tModify master profile\nallow_export\ttrue\tGenerate HTML/PDF output\nallow_scrape\tfalse\tRun Playwright browser, make network requests\nallow_tracking\ttrue\tAppend to candidature log\nreadonly_mode\tfalse\tMaster kill-switch - blocks all writes\nCredential isolation\n\nThis skill stores no secrets and requires no environment variables. config.json contains only behavioral flags and defaults - never credentials.\n\nLocal storage (default): reads/writes files under ~/.openclaw/data/work-application/. No authentication needed.\nNextcloud storage (optional): delegates all authentication to the openclaw-skill-nextcloud skill, which manages its own credentials (NC_URL, NC_USER, NC_APP_KEY in ~/.openclaw/secrets/nc_creds). This skill never reads, stores, or handles Nextcloud credentials directly - it imports NextcloudClient from the nextcloud skill at runtime. The nextcloud skill must be installed and configured separately (clawhub install nextcloud-files).\nScraping (optional, allow_scrape=true): Playwright runs without authentication. Job pages are fetched as anonymous HTTP requests. Company review scraping (Glassdoor/Indeed) also runs unauthenticated - no login or API key is used.\nPath traversal protection\n\nAll storage operations (local and Nextcloud) validate filenames through _validate_name():\n\nRejects absolute paths (/etc/passwd, C:\\...)\nRejects traversal sequences (../, ..\\\\, bare ..)\nRejects null bytes (\\x00)\nNormalizes slashes and collapses redundant separators\nLocalStorage additionally resolves the final path and verifies it remains inside the storage root directory\nHTML output safety\n\nAll profile fields are passed through html.escape() before HTML rendering. No raw user content is inserted into templates. This prevents XSS if the generated CV is served or shared.\n\nNetwork boundaries\nNo network calls by default - CV generation, analysis, tracking are fully offline\nNetwork calls only happen when allow_scrape=true, exclusively via Playwright (headless Chromium)\nDomains contacted when scraping: free-work.com, welcometothejungle.com, apec.fr, hellowork.com, lehibou.com (job platforms), plus the specific job offer URL provided by the user\nDomains contacted by report (optional, allow_scrape=true): glassdoor.fr, fr.indeed.com (company reviews - unauthenticated, anonymous)\nNextcloud storage (optional): contacts the user's own Nextcloud instance via the nextcloud skill - no third-party server\nURLs built from user data (company names for review lookup) are properly URL-encoded\nNo background network activity, no telemetry, no phone-home\nFile output safety\nReports and CVs are written only to the configured storage directory (~/.openclaw/data/work-application/ or Nextcloud remote path)\nFilenames derived from user data (company names) are strictly sanitized to ASCII alphanumeric + hyphens\nSubdirectories (reports/, jobs/) are created inside the storage root only\nModule usage\nfrom scripts._profile import load_master_profile, load_adapted_profile, save_adapted_profile\nfrom scripts._cv_renderer import render_cv\nfrom scripts._validators import validate_profile\nfrom scripts._tracker import log_application, list_applications, update_status\nfrom scripts._report import generate_report, format_report_markdown, save_report\n\nCLI reference\n# Profile\npython3 scripts/work_application.py profile show\npython3 scripts/work_application.py profile validate\n\n# CV Rendering\npython3 scripts/work_application.py render --template classic --output cv.html\npython3 scripts/work_application.py render --template modern-sidebar --color \"#e63946\" --lang en\n\n# Job Scraping\npython3 scripts/work_application.py scrape\npython3 scripts/work_application.py scrape --platforms free-work,wttj\n\n# Job Analysis\npython3 scripts/work_application.py analyze\n\n# Deep Analysis (scrape job pages for detailed matching)\npython3 scripts/work_application.py deep-analyze\npython3 scripts/work_application.py deep-analyze --max 10\n\n# Report (full multi-dimension analysis of a single offer)\npython3 scripts/work_application.py report \"https://example.com/job-offer\"\n\n# Application Tracking\npython3 scripts/work_application.py track list\npython3 scripts/work_application.py track list --status en_attente\npython3 scripts/work_application.py track add \"Thales\" \"DevOps Engineer\" --location Paris --salary \"55-65k\"\npython3 scripts/work_application.py track update \"Thales\" entretien\n\n# Config\npython3 scripts/work_application.py config\n\nTemplates\nAdapt CV for a job offer\nfrom scripts._profile import load_master_profile, save_adapted_profile\nfrom scripts._cv_renderer import render_cv\nfrom scripts._validators import validate_profile\n\n# 1. Load master profile\nmaster = load_master_profile()\n# 2. Agent adapts profile for the job (select relevant skills, rewrite summary, etc.)\nadapted = adapt_for_job(master, job_description)  # agent logic\n# 3. Validate\nreport = validate_profile(adapted)\nif not report[\"valid\"]:\n    print(\"Errors:\", report[\"errors\"])\n# 4. Save and render\nsave_adapted_profile(adapted)\nhtml = render_cv(adapted, template=\"classic\", color=\"#2563eb\")\n\nScrape → Analyze → Track\n# 1. Scrape jobs\nfrom scripts._scraper import JobScraper, filter_jobs, deduplicate\nscraper = JobScraper(config)\njobs = asyncio.run(scraper.scrape_all())\njobs = deduplicate(filter_jobs(jobs, config[\"scraper\"][\"filters\"]))\n\n# 2. Analyze\nfrom scripts._analyzer import rank_jobs, select_top\nranked = rank_jobs(jobs, master_profile)\nselected = select_top(ranked)\n\n# 3. Track top matches\nfrom scripts._tracker import log_application\nfor job in selected[\"cdi\"][:5]:\n    log_application(job[\"company\"], job[\"title\"], location=job.get(\"location\",\"\"))\n\nQuick candidature update\nfrom scripts._tracker import update_status, list_applications\nupdate_status(\"Thales\", \"entretien\")\nactive = list_applications(status=\"en_attente\")\n\nCV Templates\nTemplate\tDescription\tBest for\nclassic\tSingle-column, ATS-optimized\tMost applications, ATS systems\nmodern-sidebar\tSidebar (35%) + main (65%)\tTech companies, startups\ntwo-column\tTwo-column grid (38/62)\tCreative roles, design-aware\ncreative\tTimeline, gradient header\tPersonal branding, portfolios\nStatus icons\nStatus\tIcon\tMeaning\nen_attente\t⏳\tWaiting for response\nentretien\t📞\tInterview scheduled\nnegociation\t🤝\tIn negotiation\noffre\t✅\tOffer received\nrefus\t❌\tRejected\ndesistement\t🚫\tWithdrawn\nScraper platforms\nPlatform\tURL\tTypes\tNotes\nFree-Work\tfree-work.com\tFreelance\tTJM parsing, remote detection\nWTTJ\twelcometothejungle.com\tCDI\tSalary ranges, company pages\nApec\tapec.fr\tCDI/Cadre\tExecutive positions\nHelloWork\thellowork.com\tCDI\tBroad coverage\nLeHibou\tlehibou.com\tFreelance\tIT freelance missions\nIdeas\nSet allow_scrape: false + allow_export: true for a CV-only mode\nUse scraper with allow_tracking: true to auto-log the best matches\nAdapt CV per job offer, validate, render, then log the application\nUse readonly_mode: true for a safe demo mode\nNotes\nPlaywright dependency: Only needed for scraping. CV generation is stdlib only.\nProfile structure: Master profile contains ALL data. Adapted profile is a filtered subset for a specific job.\nValidators: Port of the JavaScript validators - same limits and thresholds.\ni18n: CV rendering supports French and English section headings.\nPrint-ready: Generated HTML includes @media print rules and A4 page breaks.\nCombine with\nSkill\tWorkflow\nghost\tGenerate CV → publish as Ghost page\nnextcloud\tSave rendered CV to Nextcloud\ngmail\tSend CV as email attachment\nveille\tMonitor job market trends → adapt search queries\nAPI reference\n\nSee references/api.md for CLI command details and profile schema.\n\nTroubleshooting\n\nSee references/troubleshooting.md for common errors and fixes."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Romain-Grosos/work-application",
    "publisherUrl": "https://clawhub.ai/Romain-Grosos/work-application",
    "owner": "Romain-Grosos",
    "version": "1.0.10",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/work-application",
    "downloadUrl": "https://openagent3.xyz/downloads/work-application",
    "agentUrl": "https://openagent3.xyz/skills/work-application/agent",
    "manifestUrl": "https://openagent3.xyz/skills/work-application/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/work-application/agent.md"
  }
}