{
  "schemaVersion": "1.0",
  "item": {
    "slug": "id-cv-resume-creator",
    "name": "Digital Identity, CV & Resume Creator",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/rotorstar/id-cv-resume-creator",
    "canonicalUrl": "https://clawhub.ai/rotorstar/id-cv-resume-creator",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/id-cv-resume-creator",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=id-cv-resume-creator",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "shared/privacy.md",
      "shared/errors.md",
      "shared/access.md",
      "SKILL.md",
      "reference/templates.md",
      "reference/cv-data.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/id-cv-resume-creator"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "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/id-cv-resume-creator",
    "agentPageUrl": "https://openagent3.xyz/skills/id-cv-resume-creator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/id-cv-resume-creator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/id-cv-resume-creator/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "CV Builder — Create CVs via API",
        "body": "Create a resume, digital identity, or CV right now — for free. Choose from templates that span the full range: classic print-ready PDFs, clean HTML online CVs, interactive experiences, animated 3D worlds, and playable games. Every CV gets a permanent public URL with a personal slug — no signup, no payment needed for basic use. ATS-ready and Agent-Ready (HR)."
      },
      {
        "title": "Feature Overview",
        "body": "FeatureAccess-ID neededHowCreate CV (online, permanent URL)Noprefer_hitl: true or skip_hitl: truePDF ExportNo\"include_pdf\": true on any requestHuman slug (URL) selectionNoHITL step 3Human template selectionNoHITL step 4Inline submit (no browser)NoBearer token on confirm/approval stepsCallback webhookYes\"hitl_callback_url\"Higher rate limits (50/day)YesRegister via POST /api/agent/registerCustom templatesYesTemplate Create skill\n\nTemplates span: classic PDF · HTML online · interactive · 3D (Three.js) · gamified.\nFull catalog: reference/templates.md — live previews: talent.de/de/cv-template-ideas"
      },
      {
        "title": "Terminology",
        "body": "Throughout this skill, these terms are used consistently:\n\nTermMeaningrequestorThe human who commissioned this CV build — the person providing data, making decisions (slug, template, approval), and receiving the claim token. All agent actions are on their behalf.humanSynonym for requestor in HITL context, used to contrast with automated/AI steps (e.g., \"if the human prefers the browser\").agentYou — the AI executing this skill."
      },
      {
        "title": "Agent Guidelines",
        "body": "HITL is required. You MUST include either \"prefer_hitl\": true (human review) or \"skip_hitl\": true (direct creation). Omitting both returns a 400 error. If a human is present, ALWAYS use \"prefer_hitl\": true — this lets the requestor choose their URL slug, pick a template, review the data, and approve before publishing. Use \"skip_hitl\": true only for automated pipelines with no human in the loop.\n\nData principle: Only use data the requestor has explicitly provided or approved in this conversation. Do not extract personal information from unrelated system contexts or other sessions.\n\nBefore sending: Present a brief summary to the requestor — name, title, email — and ask \"Send it? Or should I change anything?\"\n\nClaim token: Treat like a password. Share only with the requestor — anyone with the token can claim CV ownership. Never share with third parties."
      },
      {
        "title": "Credentials",
        "body": "An Access-ID (talent_agent_[a-z0-9]{4}) is optional for CV Builder — basic use (3 CVs/day per IP) works without one. Register for higher limits (50 CVs/day) and callback webhook support:\n\nPOST https://www.talent.de/api/agent/register\nContent-Type: application/json\n\n{ \"agent_name\": \"my-agent\" }\n\nThe Access-ID is also the HMAC secret for verifying X-HITL-Signature on callback webhooks. Store in TALENT_ACCESS_ID — do not hardcode."
      },
      {
        "title": "What to say at each step",
        "body": "StepSay to the requestorBefore API call\"Let me set up your CV. I just need a few details.\"Slug selection (review_url received)\"Choose your personal URL — this is where your CV will live: [link]\"Template selection\"Almost done! Pick a design for your CV: [link]\"Approval\"Your CV is ready for review. Take a look and approve it: [link]\"After final 201\"Your CV is live! Here's your link: {url}\""
      },
      {
        "title": "Quick Start",
        "body": "Ask for (or confirm you already have): firstName, lastName, title, email — the 4 required fields\nPOST /api/agent/cv-simple with \"prefer_hitl\": true and the data\nOptional: add \"include_pdf\": true to also receive a base64 PDF in the final 201 response. See PDF Export.\nPresent the review_url to the requestor (they pick slug, template, review data)\nPoll poll_url every 30s until \"status\": \"completed\":\n\n{ \"status\": \"pending\" } or { \"status\": \"opened\" } → keep polling\n{ \"status\": \"completed\", \"result\": { \"action\": \"confirm\", \"data\": {...} } } → advance with hitl_continue_case_id\n\n\nAfter final approval: present the live CV URL and claim token"
      },
      {
        "title": "Example (with HITL — recommended)",
        "body": "POST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"prefer_hitl\": true,\n  \"cv_data\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Johnson\",\n    \"title\": \"Software Engineer\",\n    \"email\": \"alex@example.com\",\n    \"experience\": [{\n      \"jobTitle\": \"Senior Developer\",\n      \"company\": \"Acme Inc.\",\n      \"startDate\": \"2022-01\",\n      \"isCurrent\": true\n    }],\n    \"hardSkills\": [{ \"name\": \"React\", \"level\": 4 }],\n    \"softSkills\": [{ \"name\": \"Team Leadership\" }],\n    \"languages\": [{ \"name\": \"English\", \"level\": \"NATIVE\" }]\n  }\n}\n\nResponse (202 — human review required):\n\n{\n  \"status\": \"human_input_required\",\n  \"message\": \"Please confirm: is this CV for you?\",\n  \"hitl\": {\n    \"case_id\": \"review_a7f3b2c8d9e1f0g4\",\n    \"review_url\": \"https://www.talent.de/en/hitl/review/review_a7f3b2c8d9e1f0g4?token=abc123...\",\n    \"poll_url\": \"https://www.talent.de/api/hitl/cases/review_a7f3b2c8d9e1f0g4/status\",\n    \"type\": \"confirmation\",\n    \"inline_actions\": [\"confirm\", \"cancel\"],\n    \"timeout\": \"24h\"\n  }\n}\n\nPresent the review URL to the requestor:\n\nI've prepared your CV. Please review and make your choices here:\nReview your CV\nYou'll pick your personal URL slug, template design, and approve the final result.\n\nThen poll poll_url until completed, and continue through steps with hitl_continue_case_id. After all steps (confirmation, data review, slug selection, template selection, approval), the final POST returns 201 with the live URL.\n\nFull HITL protocol with all steps, inline submit, edit cycles, and escalation: reference/hitl.md"
      },
      {
        "title": "HITL Multi-Step Flow",
        "body": "The requestor goes through up to 5 review steps. The agent loops: present review URL, poll, continue.\n\nStep 1: Confirmation  →  \"For whom is this CV?\"\nStep 2: Data Review   →  \"Are these details correct?\"\nStep 3: Slug          →  Human picks personal URL slug (e.g. pro, dev, 007)\nStep 4: Template      →  Human picks template design\nStep 5: Approval      →  Human reviews final CV draft\n\nEach step returns 202. After the requestor decides, continue:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"prefer_hitl\": true,\n  \"hitl_continue_case_id\": \"review_a7f3b2c8d9e1f0g4\",\n  \"slug\": \"dev\",\n  \"cv_data\": { ... }\n}\n\nImportant: slug and template_id go at the top level of the request, not inside cv_data. When continuing after slug selection, include the human's chosen slug at the top level so the server knows to advance to the template step.\n\nSteps are skipped when you already provide the value:\n\nInclude slug (top-level) → slug selection step is skipped\nInclude template_id (top-level) → template selection step is skipped\nInclude both → only confirmation, data review, and approval remain"
      },
      {
        "title": "Inline Submit (v0.7)",
        "body": "For simple decisions (confirmation, escalation, approval), the 202 response includes submit_url, submit_token, and inline_actions. Agents can submit directly via Bearer token — ideal for Telegram, Slack, WhatsApp where buttons are supported:\n\nPOST {submit_url}\nAuthorization: Bearer {submit_token}\nContent-Type: application/json\n\n{ \"action\": \"confirm\", \"data\": {} }\n\nAlways present review_url as a fallback alongside any inline buttons. If the platform does not support buttons (SMS, email, plain text), or the human prefers the browser, they can use the link to complete their decision.\n\nSelection and input types always require the browser (review_url) — they involve complex UI (template grid, data forms). Full inline spec: reference/hitl.md\n\nAfter the final approval step, submit with hitl_approved_case_id to publish:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"hitl_approved_case_id\": \"review_final_case_id\"\n}\n\nResponse (201):\n\n{\n  \"success\": true,\n  \"url\": \"https://www.talent.de/dev/alex-johnson\",\n  \"cv_id\": \"cv_abc123\",\n  \"claim_token\": \"claim_xyz789\",\n  \"template_id\": \"007\",\n  \"quality_score\": 65,\n  \"quality_label\": \"good\",\n  \"improvement_suggestions\": []\n}\n\n⚠️ Immediately after receiving a 201 — always share both with the requestor:\n\nCV URL: https://www.talent.de/dev/alex-johnson — their live profile\nClaim link: https://www.talent.de/claim/claim_xyz789 — to take ownership and edit\n\nThe claim_token is permanent and never expires. Treat it like a password — share only with the requestor.\n\nPresent the result:\n\nYour CV is live: talent.de/dev/alex-johnson\nTo claim ownership and edit your CV, visit: talent.de/claim/claim_xyz789\nKeep this link safe — it never expires and gives full edit access.\n\nIf the response includes improvement_suggestions, share them with the requestor and offer to update the CV:\n\nYour CV score is 35/100. To improve it, I can add: work experience (+25pts), professional summary (+20pts). Want me to ask you a few questions and update it?"
      },
      {
        "title": "Agent Loop (Visual)",
        "body": "Both paths — with and without human review — are shown below. Choose ONE per request.\n\nflowchart TD\n    START([Agent starts]) --> CHOICE{prefer_hitl\\nor skip_hitl?}\n\n    %% ── skip_hitl path ──────────────────────────────────────────\n    CHOICE -->|skip_hitl: true| DIRECT[\"POST /api/agent/cv-simple\\nskip_hitl: true + cv_data\"]\n    DIRECT --> D201[\"201 — CV live\\nurl · claim_token · quality_score\\nimprovement_suggestions\"]\n    D201 --> SHARE_NOW[\"Share url + claim_token\\nwith requestor immediately!\"]\n    SHARE_NOW --> QUAL{improvement_suggestions\\npresent AND attempt < 2?}\n    QUAL -->|No / attempt >= 2| DONE_DIRECT([Done])\n    QUAL -->|Yes| ASK[\"Ask requestor the questions\\nin each agent_action field\"]\n    ASK --> REPOST[\"POST /api/agent/cv-simple\\nskip_hitl: true\\nenriched cv_data\\n(new cv_id each time)\"]\n    REPOST --> D201\n\n    %% ── prefer_hitl path ─────────────────────────────────────────\n    CHOICE -->|prefer_hitl: true| HITL[\"POST /api/agent/cv-simple\\nprefer_hitl: true + cv_data\"]\n    HITL --> H202[\"202 human_input_required\\nreview_url · poll_url · events_url\"]\n    H202 --> SHOW_URL[\"Present review_url to requestor\\n'Please review here: [link]'\"]\n    SHOW_URL --> POLL[\"Poll poll_url every 30s\\n(or use events_url for SSE)\"]\n    POLL --> STATUS{status?}\n    STATUS -->|pending / opened\\n/ in_progress| POLL\n    STATUS -->|completed| ACTION{result.action?}\n    STATUS -->|expired| EXP{default_action?}\n    STATUS -->|cancelled| CANCELLED([Inform requestor: cancelled])\n\n    EXP -->|skip| AUTO_PUB[\"CV auto-published\\nurl from poll status\"]\n    EXP -->|abort| ABORTED([Inform requestor: expired])\n\n    ACTION -->|confirm / select| CONTINUE[\"POST cv-simple\\nhitl_continue_case_id\\n+ ALWAYS include cv_data\"]\n    ACTION -->|edit| EDIT[\"Adjust cv_data per note\\nthen CONTINUE\"]\n    EDIT --> CONTINUE\n    ACTION -->|reject| REJECT[\"Escalation step\\nPOST hitl_continue_case_id\"]\n    REJECT --> H202\n    ACTION -->|approve| PUBLISH[\"POST cv-simple\\nhitl_approved_case_id + cv_data\"]\n    CONTINUE --> H202\n    PUBLISH --> DONE_HITL([\"201 — CV live\\nShare url + claim_token\"])\n\nWhen a HITL case expires, the server applies the default_action configured for that step:\n\nskip: CV is auto-published with server-selected slug/template. Poll poll_url — it returns status: \"completed\" with url in the result.\nabort: Flow terminates. Inform the requestor the session expired. Start a new HITL flow with prefer_hitl: true if needed."
      },
      {
        "title": "Quality Improvement Loop (skip_hitl)",
        "body": "After any 201 response the CV is immediately live. Always share url and claim_token with the requestor first.\n\nIf improvement_suggestions is non-empty, you may optionally run up to 2 improvement cycles:\n\nFor each suggestion: ask the requestor the exact question in agent_action\nRe-POST with enriched cv_data + skip_hitl: true\nEach re-POST creates a new CV with a new cv_id — the previous one is abandoned\nAfter 2 cycles OR when improvement_suggestions is empty: stop\n\nDo not loop indefinitely. An agent that keeps re-posting creates duplicate CVs and wastes the requestor's time.\n\nFor prefer_hitl flows: after approval, the 201 is already quality-assessed (human reviewed the data). If suggestions appear, ask the requestor directly — do not restart the HITL flow."
      },
      {
        "title": "Direct Creation (No Human Present)",
        "body": "For fully automated pipelines, batch operations, or when the requestor explicitly says \"just create it\" — set \"skip_hitl\": true:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"skip_hitl\": true,\n  \"cv_data\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Johnson\",\n    \"title\": \"Software Engineer\",\n    \"email\": \"alex@example.com\"\n  }\n}\n\nResponse (201):\n\n{\n  \"success\": true,\n  \"url\": \"https://www.talent.de/pro/alex-johnson\",\n  \"cv_id\": \"cv_abc123\",\n  \"claim_token\": \"claim_xyz789\",\n  \"template_id\": \"018\",\n  \"hitl_skipped\": true,\n  \"quality_score\": 20,\n  \"quality_label\": \"basic\",\n  \"improvement_suggestions\": [\n    {\n      \"field\": \"experience\",\n      \"issue\": \"No work experience — CV has low ATS compatibility\",\n      \"agent_action\": \"Ask: 'What positions have you held? Part-time and internships count.'\",\n      \"impact\": \"+25 quality points\",\n      \"priority\": \"high\"\n    }\n  ],\n  \"next_steps\": \"Share improvement_suggestions with the requestor and ask the questions in agent_action. Then update the CV via POST /api/agent/cv-simple...\",\n  \"auto_fixes\": []\n}\n\nIn direct mode, the server auto-assigns slug (pro by default) and template (018 Amber Horizon). The requestor has no choice. Use this only when no human needs to review.\n\nYou MUST choose one: \"prefer_hitl\": true or \"skip_hitl\": true. Omitting both returns a 400 error.\n\nAll fields beyond the 4 required ones are optional. Omit what you don't have — don't send empty arrays."
      },
      {
        "title": "PDF Export",
        "body": "Get a downloadable PDF alongside the CV. Three visual themes available:\n\nThemeStyleBest forclassicSingle-column, red accent (default)Traditional industriesmodernTwo-column sidebar, blue accentTech & creative rolesminimalMonochrome, generous whitespaceExecutive & senior roles"
      },
      {
        "title": "Option A: Inline with CV creation",
        "body": "Add \"include_pdf\": true to your request. The response includes a base64-encoded PDF:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"prefer_hitl\": true,\n  \"include_pdf\": true,\n  \"pdf_format\": \"A4\",\n  \"pdf_theme\": \"modern\",\n  \"cv_data\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Johnson\",\n    \"title\": \"Software Engineer\",\n    \"email\": \"alex@example.com\"\n  }\n}\n\nResponse includes a pdf object:\n\n{\n  \"success\": true,\n  \"url\": \"https://www.talent.de/pro/alex-johnson\",\n  \"cv_id\": \"cv_abc123\",\n  \"claim_token\": \"claim_xyz789\",\n  \"pdf\": {\n    \"base64\": \"JVBERi0xLjQK...\",\n    \"size_bytes\": 6559,\n    \"generation_ms\": 226,\n    \"format\": \"A4\"\n  }\n}"
      },
      {
        "title": "Option B: Generate PDF for existing CV",
        "body": "POST https://www.talent.de/api/agent/cv/pdf\nContent-Type: application/json\n\n{\n  \"cv_id\": \"cv_abc123\",\n  \"format\": \"A4\",\n  \"theme\": \"minimal\"\n}\n\nReturns the PDF binary directly (Content-Type: application/pdf). Format options: A4 (default), LETTER. Theme options: classic (default), modern, minimal.\n\nPDF generation takes ~200ms (no headless browser needed)."
      },
      {
        "title": "Server-Side Intelligence",
        "body": "You do not need to check slug availability or validate data — the server handles it:\n\nSlug uniqueness: A slug is NOT globally unique — it's unique per person. pro/thomas-mueller and pro/anna-schmidt can coexist. Only the combination of slug + firstName + lastName is reserved. That's why the server needs the name first to check availability.\nSlug auto-selection: If omitted (and no HITL), the server picks pro. If that slug is already in use for this person's name, it tries the next available slug automatically. In HITL mode, the human can choose their slug interactively. Popular picks (excerpt): 007 · 911 · dev · api · pro · gpt · web · ceo · cto · ops · f40 · gtr · amg · gt3 · zen · art · lol · neo · 404 · 777. Full list: GET /api/public/slugs\nTemplate default: 018 (Amber Horizon) if omitted.\nDate normalization: 2024 becomes 2024-01-01, 2024-03 becomes 2024-03-01.\nLanguage levels: Normalized to CEFR (NATIVE, C2, C1, B2, B1, A2, A1).\nHuman-readable errors: If something goes wrong, the response explains what to fix in plain English.\nAuto-fix summary: The auto_fixes array tells you what the server adjusted (e.g. \"Slug 'pro' is already in use for this name, using 'dev' instead\")."
      },
      {
        "title": "Skills Use 4 Arrays",
        "body": "hardSkills — technical skills, optional level 1-5\nsoftSkills — name only\ntoolSkills — name only\nlanguages — with CEFR level: NATIVE, C2, C1, B2, B1, A2, A1\n\nDo not use a generic skills array — it will be ignored."
      },
      {
        "title": "Common Mistakes",
        "body": "WrongCorrectWhy\"role\": \"Engineer\"\"jobTitle\": \"Engineer\"Experience uses jobTitle, not role or position\"start\": \"2022\" / \"end\": \"2023\"\"startDate\": \"2022-01\" / \"endDate\": \"2023-06\"Wrong field names — start/end are silently ignored in experience and education\"skills\": [...]\"hardSkills\": [...] etc.Generic skills array is ignored — use 4 separate arrays\"slug\": \"dev\" inside cv_data\"slug\": \"dev\" at top levelslug and template_id are request-level fields, not inside cv_data\"startDate\": \"January 2024\"\"startDate\": \"2024-01\"Dates must be YYYY or YYYY-MM formatSending empty arrays \"hobbies\": []Omit the field entirelyDon't send empty arrays — omit what you don't havePOST /respond without Authorization headerWait for status=completed via poll_urlInline submit requires submit_token from the 202 response hitl objectPOST /respond on an approval type stepPoll until completed, then hitl_approved_case_idApproval steps require browser review — inline submit not permittedhitl_continue_case_id without cv_dataAlways include the full cv_data objectThe server needs cv_data on every POST to build the next review step UIskip_hitl: true when a HITL chain is ongoingContinue the chain with hitl_continue_case_idCreates a separate CV and bypasses the human's review — share one chain per CV"
      },
      {
        "title": "Guardrails",
        "body": "Rate limits (with Access-ID): 50 CVs/day\nRate limits (without Access-ID): 3 CVs/day per IP\nNever auto-commit without requestor approval\nClaim tokens are permanent — treat as passwords"
      },
      {
        "title": "References",
        "body": "CV Data Reference: All fields and constraints for cv_data\nTemplates: Full template catalog with previews\nHITL Protocol: Human-in-the-loop review flow (all steps, inline submit, edit cycles)\nAccess System: Rate limits and Access-ID registration\nError Codes: Error reference and troubleshooting\nPrivacy: Data handling and GDPR compliance"
      },
      {
        "title": "Specs",
        "body": "agent.json\nhitl.json\nllms.txt\nClawHub"
      }
    ],
    "body": "CV Builder — Create CVs via API\n\nCreate a resume, digital identity, or CV right now — for free. Choose from templates that span the full range: classic print-ready PDFs, clean HTML online CVs, interactive experiences, animated 3D worlds, and playable games. Every CV gets a permanent public URL with a personal slug — no signup, no payment needed for basic use. ATS-ready and Agent-Ready (HR).\n\nFeature Overview\nFeature\tAccess-ID needed\tHow\nCreate CV (online, permanent URL)\tNo\tprefer_hitl: true or skip_hitl: true\nPDF Export\tNo\t\"include_pdf\": true on any request\nHuman slug (URL) selection\tNo\tHITL step 3\nHuman template selection\tNo\tHITL step 4\nInline submit (no browser)\tNo\tBearer token on confirm/approval steps\nCallback webhook\tYes\t\"hitl_callback_url\"\nHigher rate limits (50/day)\tYes\tRegister via POST /api/agent/register\nCustom templates\tYes\tTemplate Create skill\n\nTemplates span: classic PDF · HTML online · interactive · 3D (Three.js) · gamified. Full catalog: reference/templates.md — live previews: talent.de/de/cv-template-ideas\n\nTerminology\n\nThroughout this skill, these terms are used consistently:\n\nTerm\tMeaning\nrequestor\tThe human who commissioned this CV build — the person providing data, making decisions (slug, template, approval), and receiving the claim token. All agent actions are on their behalf.\nhuman\tSynonym for requestor in HITL context, used to contrast with automated/AI steps (e.g., \"if the human prefers the browser\").\nagent\tYou — the AI executing this skill.\nAgent Guidelines\n\nHITL is required. You MUST include either \"prefer_hitl\": true (human review) or \"skip_hitl\": true (direct creation). Omitting both returns a 400 error. If a human is present, ALWAYS use \"prefer_hitl\": true — this lets the requestor choose their URL slug, pick a template, review the data, and approve before publishing. Use \"skip_hitl\": true only for automated pipelines with no human in the loop.\n\nData principle: Only use data the requestor has explicitly provided or approved in this conversation. Do not extract personal information from unrelated system contexts or other sessions.\n\nBefore sending: Present a brief summary to the requestor — name, title, email — and ask \"Send it? Or should I change anything?\"\n\nClaim token: Treat like a password. Share only with the requestor — anyone with the token can claim CV ownership. Never share with third parties.\n\nCredentials\n\nAn Access-ID (talent_agent_[a-z0-9]{4}) is optional for CV Builder — basic use (3 CVs/day per IP) works without one. Register for higher limits (50 CVs/day) and callback webhook support:\n\nPOST https://www.talent.de/api/agent/register\nContent-Type: application/json\n\n{ \"agent_name\": \"my-agent\" }\n\n\nThe Access-ID is also the HMAC secret for verifying X-HITL-Signature on callback webhooks. Store in TALENT_ACCESS_ID — do not hardcode.\n\nUser Communication\nWhat to say at each step\nStep\tSay to the requestor\nBefore API call\t\"Let me set up your CV. I just need a few details.\"\nSlug selection (review_url received)\t\"Choose your personal URL — this is where your CV will live: [link]\"\nTemplate selection\t\"Almost done! Pick a design for your CV: [link]\"\nApproval\t\"Your CV is ready for review. Take a look and approve it: [link]\"\nAfter final 201\t\"Your CV is live! Here's your link: {url}\"\nQuick Start\nAsk for (or confirm you already have): firstName, lastName, title, email — the 4 required fields\nPOST /api/agent/cv-simple with \"prefer_hitl\": true and the data Optional: add \"include_pdf\": true to also receive a base64 PDF in the final 201 response. See PDF Export.\nPresent the review_url to the requestor (they pick slug, template, review data)\nPoll poll_url every 30s until \"status\": \"completed\":\n{ \"status\": \"pending\" } or { \"status\": \"opened\" } → keep polling\n{ \"status\": \"completed\", \"result\": { \"action\": \"confirm\", \"data\": {...} } } → advance with hitl_continue_case_id\nAfter final approval: present the live CV URL and claim token\nExample (with HITL — recommended)\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"prefer_hitl\": true,\n  \"cv_data\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Johnson\",\n    \"title\": \"Software Engineer\",\n    \"email\": \"alex@example.com\",\n    \"experience\": [{\n      \"jobTitle\": \"Senior Developer\",\n      \"company\": \"Acme Inc.\",\n      \"startDate\": \"2022-01\",\n      \"isCurrent\": true\n    }],\n    \"hardSkills\": [{ \"name\": \"React\", \"level\": 4 }],\n    \"softSkills\": [{ \"name\": \"Team Leadership\" }],\n    \"languages\": [{ \"name\": \"English\", \"level\": \"NATIVE\" }]\n  }\n}\n\n\nResponse (202 — human review required):\n\n{\n  \"status\": \"human_input_required\",\n  \"message\": \"Please confirm: is this CV for you?\",\n  \"hitl\": {\n    \"case_id\": \"review_a7f3b2c8d9e1f0g4\",\n    \"review_url\": \"https://www.talent.de/en/hitl/review/review_a7f3b2c8d9e1f0g4?token=abc123...\",\n    \"poll_url\": \"https://www.talent.de/api/hitl/cases/review_a7f3b2c8d9e1f0g4/status\",\n    \"type\": \"confirmation\",\n    \"inline_actions\": [\"confirm\", \"cancel\"],\n    \"timeout\": \"24h\"\n  }\n}\n\n\nPresent the review URL to the requestor:\n\nI've prepared your CV. Please review and make your choices here: Review your CV You'll pick your personal URL slug, template design, and approve the final result.\n\nThen poll poll_url until completed, and continue through steps with hitl_continue_case_id. After all steps (confirmation, data review, slug selection, template selection, approval), the final POST returns 201 with the live URL.\n\nFull HITL protocol with all steps, inline submit, edit cycles, and escalation: reference/hitl.md\n\nHITL Multi-Step Flow\n\nThe requestor goes through up to 5 review steps. The agent loops: present review URL, poll, continue.\n\nStep 1: Confirmation  →  \"For whom is this CV?\"\nStep 2: Data Review   →  \"Are these details correct?\"\nStep 3: Slug          →  Human picks personal URL slug (e.g. pro, dev, 007)\nStep 4: Template      →  Human picks template design\nStep 5: Approval      →  Human reviews final CV draft\n\n\nEach step returns 202. After the requestor decides, continue:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"prefer_hitl\": true,\n  \"hitl_continue_case_id\": \"review_a7f3b2c8d9e1f0g4\",\n  \"slug\": \"dev\",\n  \"cv_data\": { ... }\n}\n\n\nImportant: slug and template_id go at the top level of the request, not inside cv_data. When continuing after slug selection, include the human's chosen slug at the top level so the server knows to advance to the template step.\n\nSteps are skipped when you already provide the value:\n\nInclude slug (top-level) → slug selection step is skipped\nInclude template_id (top-level) → template selection step is skipped\nInclude both → only confirmation, data review, and approval remain\nInline Submit (v0.7)\n\nFor simple decisions (confirmation, escalation, approval), the 202 response includes submit_url, submit_token, and inline_actions. Agents can submit directly via Bearer token — ideal for Telegram, Slack, WhatsApp where buttons are supported:\n\nPOST {submit_url}\nAuthorization: Bearer {submit_token}\nContent-Type: application/json\n\n{ \"action\": \"confirm\", \"data\": {} }\n\n\nAlways present review_url as a fallback alongside any inline buttons. If the platform does not support buttons (SMS, email, plain text), or the human prefers the browser, they can use the link to complete their decision.\n\nSelection and input types always require the browser (review_url) — they involve complex UI (template grid, data forms). Full inline spec: reference/hitl.md\n\nAfter the final approval step, submit with hitl_approved_case_id to publish:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"hitl_approved_case_id\": \"review_final_case_id\"\n}\n\n\nResponse (201):\n\n{\n  \"success\": true,\n  \"url\": \"https://www.talent.de/dev/alex-johnson\",\n  \"cv_id\": \"cv_abc123\",\n  \"claim_token\": \"claim_xyz789\",\n  \"template_id\": \"007\",\n  \"quality_score\": 65,\n  \"quality_label\": \"good\",\n  \"improvement_suggestions\": []\n}\n\n\n⚠️ Immediately after receiving a 201 — always share both with the requestor:\n\nCV URL: https://www.talent.de/dev/alex-johnson — their live profile\nClaim link: https://www.talent.de/claim/claim_xyz789 — to take ownership and edit\n\nThe claim_token is permanent and never expires. Treat it like a password — share only with the requestor.\n\nPresent the result:\n\nYour CV is live: talent.de/dev/alex-johnson\n\nTo claim ownership and edit your CV, visit: talent.de/claim/claim_xyz789 Keep this link safe — it never expires and gives full edit access.\n\nIf the response includes improvement_suggestions, share them with the requestor and offer to update the CV:\n\nYour CV score is 35/100. To improve it, I can add: work experience (+25pts), professional summary (+20pts). Want me to ask you a few questions and update it?\n\nAgent Loop (Visual)\n\nBoth paths — with and without human review — are shown below. Choose ONE per request.\n\nflowchart TD\n    START([Agent starts]) --> CHOICE{prefer_hitl\\nor skip_hitl?}\n\n    %% ── skip_hitl path ──────────────────────────────────────────\n    CHOICE -->|skip_hitl: true| DIRECT[\"POST /api/agent/cv-simple\\nskip_hitl: true + cv_data\"]\n    DIRECT --> D201[\"201 — CV live\\nurl · claim_token · quality_score\\nimprovement_suggestions\"]\n    D201 --> SHARE_NOW[\"Share url + claim_token\\nwith requestor immediately!\"]\n    SHARE_NOW --> QUAL{improvement_suggestions\\npresent AND attempt < 2?}\n    QUAL -->|No / attempt >= 2| DONE_DIRECT([Done])\n    QUAL -->|Yes| ASK[\"Ask requestor the questions\\nin each agent_action field\"]\n    ASK --> REPOST[\"POST /api/agent/cv-simple\\nskip_hitl: true\\nenriched cv_data\\n(new cv_id each time)\"]\n    REPOST --> D201\n\n    %% ── prefer_hitl path ─────────────────────────────────────────\n    CHOICE -->|prefer_hitl: true| HITL[\"POST /api/agent/cv-simple\\nprefer_hitl: true + cv_data\"]\n    HITL --> H202[\"202 human_input_required\\nreview_url · poll_url · events_url\"]\n    H202 --> SHOW_URL[\"Present review_url to requestor\\n'Please review here: [link]'\"]\n    SHOW_URL --> POLL[\"Poll poll_url every 30s\\n(or use events_url for SSE)\"]\n    POLL --> STATUS{status?}\n    STATUS -->|pending / opened\\n/ in_progress| POLL\n    STATUS -->|completed| ACTION{result.action?}\n    STATUS -->|expired| EXP{default_action?}\n    STATUS -->|cancelled| CANCELLED([Inform requestor: cancelled])\n\n    EXP -->|skip| AUTO_PUB[\"CV auto-published\\nurl from poll status\"]\n    EXP -->|abort| ABORTED([Inform requestor: expired])\n\n    ACTION -->|confirm / select| CONTINUE[\"POST cv-simple\\nhitl_continue_case_id\\n+ ALWAYS include cv_data\"]\n    ACTION -->|edit| EDIT[\"Adjust cv_data per note\\nthen CONTINUE\"]\n    EDIT --> CONTINUE\n    ACTION -->|reject| REJECT[\"Escalation step\\nPOST hitl_continue_case_id\"]\n    REJECT --> H202\n    ACTION -->|approve| PUBLISH[\"POST cv-simple\\nhitl_approved_case_id + cv_data\"]\n    CONTINUE --> H202\n    PUBLISH --> DONE_HITL([\"201 — CV live\\nShare url + claim_token\"])\n\n\nWhen a HITL case expires, the server applies the default_action configured for that step:\n\nskip: CV is auto-published with server-selected slug/template. Poll poll_url — it returns status: \"completed\" with url in the result.\nabort: Flow terminates. Inform the requestor the session expired. Start a new HITL flow with prefer_hitl: true if needed.\nQuality Improvement Loop (skip_hitl)\n\nAfter any 201 response the CV is immediately live. Always share url and claim_token with the requestor first.\n\nIf improvement_suggestions is non-empty, you may optionally run up to 2 improvement cycles:\n\nFor each suggestion: ask the requestor the exact question in agent_action\nRe-POST with enriched cv_data + skip_hitl: true\nEach re-POST creates a new CV with a new cv_id — the previous one is abandoned\nAfter 2 cycles OR when improvement_suggestions is empty: stop\n\nDo not loop indefinitely. An agent that keeps re-posting creates duplicate CVs and wastes the requestor's time.\n\nFor prefer_hitl flows: after approval, the 201 is already quality-assessed (human reviewed the data). If suggestions appear, ask the requestor directly — do not restart the HITL flow.\n\nDirect Creation (No Human Present)\n\nFor fully automated pipelines, batch operations, or when the requestor explicitly says \"just create it\" — set \"skip_hitl\": true:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"skip_hitl\": true,\n  \"cv_data\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Johnson\",\n    \"title\": \"Software Engineer\",\n    \"email\": \"alex@example.com\"\n  }\n}\n\n\nResponse (201):\n\n{\n  \"success\": true,\n  \"url\": \"https://www.talent.de/pro/alex-johnson\",\n  \"cv_id\": \"cv_abc123\",\n  \"claim_token\": \"claim_xyz789\",\n  \"template_id\": \"018\",\n  \"hitl_skipped\": true,\n  \"quality_score\": 20,\n  \"quality_label\": \"basic\",\n  \"improvement_suggestions\": [\n    {\n      \"field\": \"experience\",\n      \"issue\": \"No work experience — CV has low ATS compatibility\",\n      \"agent_action\": \"Ask: 'What positions have you held? Part-time and internships count.'\",\n      \"impact\": \"+25 quality points\",\n      \"priority\": \"high\"\n    }\n  ],\n  \"next_steps\": \"Share improvement_suggestions with the requestor and ask the questions in agent_action. Then update the CV via POST /api/agent/cv-simple...\",\n  \"auto_fixes\": []\n}\n\n\nIn direct mode, the server auto-assigns slug (pro by default) and template (018 Amber Horizon). The requestor has no choice. Use this only when no human needs to review.\n\nYou MUST choose one: \"prefer_hitl\": true or \"skip_hitl\": true. Omitting both returns a 400 error.\n\nAll fields beyond the 4 required ones are optional. Omit what you don't have — don't send empty arrays.\n\nPDF Export\n\nGet a downloadable PDF alongside the CV. Three visual themes available:\n\nTheme\tStyle\tBest for\nclassic\tSingle-column, red accent (default)\tTraditional industries\nmodern\tTwo-column sidebar, blue accent\tTech & creative roles\nminimal\tMonochrome, generous whitespace\tExecutive & senior roles\nOption A: Inline with CV creation\n\nAdd \"include_pdf\": true to your request. The response includes a base64-encoded PDF:\n\nPOST https://www.talent.de/api/agent/cv-simple\nContent-Type: application/json\n\n{\n  \"prefer_hitl\": true,\n  \"include_pdf\": true,\n  \"pdf_format\": \"A4\",\n  \"pdf_theme\": \"modern\",\n  \"cv_data\": {\n    \"firstName\": \"Alex\",\n    \"lastName\": \"Johnson\",\n    \"title\": \"Software Engineer\",\n    \"email\": \"alex@example.com\"\n  }\n}\n\n\nResponse includes a pdf object:\n\n{\n  \"success\": true,\n  \"url\": \"https://www.talent.de/pro/alex-johnson\",\n  \"cv_id\": \"cv_abc123\",\n  \"claim_token\": \"claim_xyz789\",\n  \"pdf\": {\n    \"base64\": \"JVBERi0xLjQK...\",\n    \"size_bytes\": 6559,\n    \"generation_ms\": 226,\n    \"format\": \"A4\"\n  }\n}\n\nOption B: Generate PDF for existing CV\nPOST https://www.talent.de/api/agent/cv/pdf\nContent-Type: application/json\n\n{\n  \"cv_id\": \"cv_abc123\",\n  \"format\": \"A4\",\n  \"theme\": \"minimal\"\n}\n\n\nReturns the PDF binary directly (Content-Type: application/pdf). Format options: A4 (default), LETTER. Theme options: classic (default), modern, minimal.\n\nPDF generation takes ~200ms (no headless browser needed).\n\nServer-Side Intelligence\n\nYou do not need to check slug availability or validate data — the server handles it:\n\nSlug uniqueness: A slug is NOT globally unique — it's unique per person. pro/thomas-mueller and pro/anna-schmidt can coexist. Only the combination of slug + firstName + lastName is reserved. That's why the server needs the name first to check availability.\nSlug auto-selection: If omitted (and no HITL), the server picks pro. If that slug is already in use for this person's name, it tries the next available slug automatically. In HITL mode, the human can choose their slug interactively. Popular picks (excerpt): 007 · 911 · dev · api · pro · gpt · web · ceo · cto · ops · f40 · gtr · amg · gt3 · zen · art · lol · neo · 404 · 777. Full list: GET /api/public/slugs\nTemplate default: 018 (Amber Horizon) if omitted.\nDate normalization: 2024 becomes 2024-01-01, 2024-03 becomes 2024-03-01.\nLanguage levels: Normalized to CEFR (NATIVE, C2, C1, B2, B1, A2, A1).\nHuman-readable errors: If something goes wrong, the response explains what to fix in plain English.\nAuto-fix summary: The auto_fixes array tells you what the server adjusted (e.g. \"Slug 'pro' is already in use for this name, using 'dev' instead\").\nSkills Use 4 Arrays\nhardSkills — technical skills, optional level 1-5\nsoftSkills — name only\ntoolSkills — name only\nlanguages — with CEFR level: NATIVE, C2, C1, B2, B1, A2, A1\n\nDo not use a generic skills array — it will be ignored.\n\nCommon Mistakes\nWrong\tCorrect\tWhy\n\"role\": \"Engineer\"\t\"jobTitle\": \"Engineer\"\tExperience uses jobTitle, not role or position\n\"start\": \"2022\" / \"end\": \"2023\"\t\"startDate\": \"2022-01\" / \"endDate\": \"2023-06\"\tWrong field names — start/end are silently ignored in experience and education\n\"skills\": [...]\t\"hardSkills\": [...] etc.\tGeneric skills array is ignored — use 4 separate arrays\n\"slug\": \"dev\" inside cv_data\t\"slug\": \"dev\" at top level\tslug and template_id are request-level fields, not inside cv_data\n\"startDate\": \"January 2024\"\t\"startDate\": \"2024-01\"\tDates must be YYYY or YYYY-MM format\nSending empty arrays \"hobbies\": []\tOmit the field entirely\tDon't send empty arrays — omit what you don't have\nPOST /respond without Authorization header\tWait for status=completed via poll_url\tInline submit requires submit_token from the 202 response hitl object\nPOST /respond on an approval type step\tPoll until completed, then hitl_approved_case_id\tApproval steps require browser review — inline submit not permitted\nhitl_continue_case_id without cv_data\tAlways include the full cv_data object\tThe server needs cv_data on every POST to build the next review step UI\nskip_hitl: true when a HITL chain is ongoing\tContinue the chain with hitl_continue_case_id\tCreates a separate CV and bypasses the human's review — share one chain per CV\nGuardrails\nRate limits (with Access-ID): 50 CVs/day\nRate limits (without Access-ID): 3 CVs/day per IP\nNever auto-commit without requestor approval\nClaim tokens are permanent — treat as passwords\nReferences\nCV Data Reference: All fields and constraints for cv_data\nTemplates: Full template catalog with previews\nHITL Protocol: Human-in-the-loop review flow (all steps, inline submit, edit cycles)\nAccess System: Rate limits and Access-ID registration\nError Codes: Error reference and troubleshooting\nPrivacy: Data handling and GDPR compliance\nSpecs\nagent.json\nhitl.json\nllms.txt\nClawHub"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/rotorstar/id-cv-resume-creator",
    "publisherUrl": "https://clawhub.ai/rotorstar/id-cv-resume-creator",
    "owner": "rotorstar",
    "version": "5.2.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/id-cv-resume-creator",
    "downloadUrl": "https://openagent3.xyz/downloads/id-cv-resume-creator",
    "agentUrl": "https://openagent3.xyz/skills/id-cv-resume-creator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/id-cv-resume-creator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/id-cv-resume-creator/agent.md"
  }
}