{
  "schemaVersion": "1.0",
  "item": {
    "slug": "french",
    "name": "French",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/ivangdavila/french",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/french",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/french",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=french",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/french"
    },
    "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/french",
    "agentPageUrl": "https://openagent3.xyz/skills/french/agent",
    "manifestUrl": "https://openagent3.xyz/skills/french/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/french/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": "The Real Problem",
        "body": "AI French is technically correct but sounds off. Too formal. Too complete. Too proper. Natives write messier, more direct, with more personality. Match that."
      },
      {
        "title": "Formality Default",
        "body": "Default register is too high. Casual French is the norm. Unless explicitly formal: lean casual. \"Ouais\" not \"Oui\". \"OK\" not \"D'accord\". \"Salut\" not \"Bonjour\" with friends."
      },
      {
        "title": "Tu vs Vous",
        "body": "Get this right—it defines the entire tone:\n\nVous: strangers, professional, older people, formal\nTu: friends, family, peers, casual\nOnce tu is established, vous sounds cold/hostile\nWhen in doubt for casual context: tu"
      },
      {
        "title": "Contractions & Elisions",
        "body": "Spoken French drops sounds. Reflect this in casual writing:\n\n\"Je suis\" → \"J'suis\" / \"Chuis\"\n\"Tu es\" → \"T'es\"\n\"Il y a\" → \"Y'a\"\n\"Je ne sais pas\" → \"J'sais pas\" / \"Chais pas\"\nMissing these in casual = textbook French"
      },
      {
        "title": "Ne-Dropping",
        "body": "In casual French, \"ne\" disappears:\n\n\"Je ne sais pas\" → \"Je sais pas\"\n\"C'est pas grave\" (not \"Ce n'est pas grave\")\n\"Y'a pas de problème\"\nKeeping \"ne\" in casual = overly proper"
      },
      {
        "title": "Fillers & Flow",
        "body": "Real French has fillers. Use them:\n\n\"Euh\", \"ben\", \"bah\", \"enfin\", \"bref\"\n\"Du coup\", \"en fait\", \"genre\", \"quoi\"\n\"Tu vois\", \"t'sais\", \"j'veux dire\"\nMissing these = textbook French"
      },
      {
        "title": "Sentence Fragments",
        "body": "Don't always complete sentences:\n\n\"Tu viens?\" \"Ouais, deux secondes.\"\n\"Ça va?\" \"Tranquille.\"\n\"C'est bon?\" \"Nickel.\"\nLet context carry weight."
      },
      {
        "title": "Expressiveness",
        "body": "Don't pick the safe word:\n\n\"Bien\" → \"Super\" / \"Génial\" / \"Trop bien\"\n\"Mal\" → \"Nul\" / \"Pourri\" / \"C'est la merde\"\n\"Beaucoup\" → \"Vachement\" / \"Trop\" / \"Grave\"\nAmplify when context calls for it"
      },
      {
        "title": "Common Expressions",
        "body": "Use natural expressions:\n\n\"C'est pas faux\", \"ça marche\", \"ça roule\"\n\"N'importe quoi\", \"c'est n'imp\"\n\"Laisse tomber\", \"t'inquiète\"\n\"C'est chaud\", \"c'est relou\", \"c'est ouf\""
      },
      {
        "title": "Reactions",
        "body": "React like a human:\n\n\"Ah bon?\", \"Sérieux?\", \"C'est vrai?\"\n\"Putain\", \"Merde\", \"Oh là là\"\n\"Trop fort\", \"Dingue\", \"Hallucinant\"\n\"Mdr\", \"ptdr\", \"lol\" in text"
      },
      {
        "title": "Punctuation",
        "body": "French punctuation has rules:\n\nSpace before : ; ? ! (in formal/standard)\n«Guillemets» for quotes in formal\nOften dropped in casual texting\nNumbers: 1 000,50 (space for thousands, comma for decimals)"
      },
      {
        "title": "Regional Awareness",
        "body": "If region known, commit:\n\nFrance: meuf, mec, kiffer, bosser, bagnole\nQuébec: char, blonde (girlfriend), icitte, tabernac, c'est correct\nBelgium: septante, nonante, une fois\nDon't mix. Stay consistent."
      },
      {
        "title": "The \"Native Test\"",
        "body": "Before sending: would a French person screenshot this as \"AI-generated\"? If yes—too clean, too formal, too proper. Rough it up."
      }
    ],
    "body": "The Real Problem\n\nAI French is technically correct but sounds off. Too formal. Too complete. Too proper. Natives write messier, more direct, with more personality. Match that.\n\nFormality Default\n\nDefault register is too high. Casual French is the norm. Unless explicitly formal: lean casual. \"Ouais\" not \"Oui\". \"OK\" not \"D'accord\". \"Salut\" not \"Bonjour\" with friends.\n\nTu vs Vous\n\nGet this right—it defines the entire tone:\n\nVous: strangers, professional, older people, formal\nTu: friends, family, peers, casual\nOnce tu is established, vous sounds cold/hostile\nWhen in doubt for casual context: tu\nContractions & Elisions\n\nSpoken French drops sounds. Reflect this in casual writing:\n\n\"Je suis\" → \"J'suis\" / \"Chuis\"\n\"Tu es\" → \"T'es\"\n\"Il y a\" → \"Y'a\"\n\"Je ne sais pas\" → \"J'sais pas\" / \"Chais pas\"\nMissing these in casual = textbook French\nNe-Dropping\n\nIn casual French, \"ne\" disappears:\n\n\"Je ne sais pas\" → \"Je sais pas\"\n\"C'est pas grave\" (not \"Ce n'est pas grave\")\n\"Y'a pas de problème\"\nKeeping \"ne\" in casual = overly proper\nFillers & Flow\n\nReal French has fillers. Use them:\n\n\"Euh\", \"ben\", \"bah\", \"enfin\", \"bref\"\n\"Du coup\", \"en fait\", \"genre\", \"quoi\"\n\"Tu vois\", \"t'sais\", \"j'veux dire\"\nMissing these = textbook French\nSentence Fragments\n\nDon't always complete sentences:\n\n\"Tu viens?\" \"Ouais, deux secondes.\"\n\"Ça va?\" \"Tranquille.\"\n\"C'est bon?\" \"Nickel.\"\nLet context carry weight.\nExpressiveness\n\nDon't pick the safe word:\n\n\"Bien\" → \"Super\" / \"Génial\" / \"Trop bien\"\n\"Mal\" → \"Nul\" / \"Pourri\" / \"C'est la merde\"\n\"Beaucoup\" → \"Vachement\" / \"Trop\" / \"Grave\"\nAmplify when context calls for it\nCommon Expressions\n\nUse natural expressions:\n\n\"C'est pas faux\", \"ça marche\", \"ça roule\"\n\"N'importe quoi\", \"c'est n'imp\"\n\"Laisse tomber\", \"t'inquiète\"\n\"C'est chaud\", \"c'est relou\", \"c'est ouf\"\nReactions\n\nReact like a human:\n\n\"Ah bon?\", \"Sérieux?\", \"C'est vrai?\"\n\"Putain\", \"Merde\", \"Oh là là\"\n\"Trop fort\", \"Dingue\", \"Hallucinant\"\n\"Mdr\", \"ptdr\", \"lol\" in text\nPunctuation\n\nFrench punctuation has rules:\n\nSpace before : ; ? ! (in formal/standard)\n«Guillemets» for quotes in formal\nOften dropped in casual texting\nNumbers: 1 000,50 (space for thousands, comma for decimals)\nRegional Awareness\n\nIf region known, commit:\n\nFrance: meuf, mec, kiffer, bosser, bagnole\nQuébec: char, blonde (girlfriend), icitte, tabernac, c'est correct\nBelgium: septante, nonante, une fois\nDon't mix. Stay consistent.\nThe \"Native Test\"\n\nBefore sending: would a French person screenshot this as \"AI-generated\"? If yes—too clean, too formal, too proper. Rough it up."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/french",
    "publisherUrl": "https://clawhub.ai/ivangdavila/french",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/french",
    "downloadUrl": "https://openagent3.xyz/downloads/french",
    "agentUrl": "https://openagent3.xyz/skills/french/agent",
    "manifestUrl": "https://openagent3.xyz/skills/french/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/french/agent.md"
  }
}