{
  "schemaVersion": "1.0",
  "item": {
    "slug": "freelance-toolkit-fr",
    "name": "Freelance Toolkit FR",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/HugoSbl/freelance-toolkit-fr",
    "canonicalUrl": "https://clawhub.ai/HugoSbl/freelance-toolkit-fr",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/freelance-toolkit-fr",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=freelance-toolkit-fr",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "assets/invoice.html",
      "references/french-law.md",
      "scripts/clients.py",
      "scripts/config.py",
      "scripts/dashboard.py"
    ],
    "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/freelance-toolkit-fr"
    },
    "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/freelance-toolkit-fr",
    "agentPageUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr/agent",
    "manifestUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr/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": "Freelance Toolkit",
        "body": "Boîte à outils pour freelances/indépendants en France : factures, time tracking, clients, dashboard."
      },
      {
        "title": "Scripts",
        "body": "Tous dans scripts/. Python 3 stdlib uniquement. Données dans ~/.freelance/."
      },
      {
        "title": "config.py — Configuration prestataire",
        "body": "python3 config.py set --name \"Hugo Dupont\" --address \"42 rue de la Paix, 75002 Paris\" \\\n  --siret \"98765432100010\" --email \"hugo@example.com\" --phone \"0600000000\" \\\n  --iban \"FR76 1234 5678 9012 3456 7890 123\" --rate 80 --micro\npython3 config.py show [--json]\n\nStockage : ~/.freelance/config.json"
      },
      {
        "title": "clients.py — Gestion clients",
        "body": "python3 clients.py add --name \"Acme\" --email \"contact@acme.fr\" --phone \"0612345678\" \\\n  --address \"10 rue Example, 75001 Paris\" --siret \"12345678900010\" --rate 80 --notes \"Client fidèle\"\npython3 clients.py list [--json]\npython3 clients.py show \"Acme\" [--json]\npython3 clients.py edit \"Acme\" --rate 90 --notes \"Nouveau taux\"\npython3 clients.py remove \"Acme\"\n\nStockage : ~/.freelance/clients.json"
      },
      {
        "title": "timetrack.py — Suivi du temps",
        "body": "python3 timetrack.py start \"Site web Acme\" [--client \"Acme\"]\npython3 timetrack.py stop\npython3 timetrack.py status [--json]\npython3 timetrack.py log [--from 2026-01-01] [--to 2026-01-31] [--project \"Site web\"] [--json]\npython3 timetrack.py report [--month 2026-01] [--json]\n\nStockage : ~/.freelance/timetrack.json"
      },
      {
        "title": "invoice.py — Génération de factures HTML",
        "body": "python3 invoice.py generate --client \"Acme\" --items \"Dev site web:5:400\" \"Design logo:1:200\" \\\n  [--number 2026-001] [--date 2026-02-15] [--due-days 30] [--no-open]\npython3 invoice.py list [--json]\npython3 invoice.py show 2026-001\npython3 invoice.py paid 2026-001\n\nGénère un HTML professionnel dans ~/.freelance/invoices/\nAuto-numérotation YYYY-NNN si --number omis\nOuvre dans le navigateur par défaut (sauf --no-open)\nPré-remplit les infos client depuis clients.json si trouvé\nMentions légales françaises incluses (micro-entreprise par défaut)\npaid marque une facture comme payée (suivi dans dashboard)\nMontants au format français (2 900,00 €)\nInitiales du prestataire comme logo sur la facture"
      },
      {
        "title": "dashboard.py — Tableau de bord revenus",
        "body": "python3 dashboard.py summary [--year 2026] [--json]\npython3 dashboard.py monthly [--year 2026] [--json]\n\nAgrège factures + time tracking\nCA total, par mois, par client\nHeures travaillées, jours ouvrés (heures/7), taux horaire effectif\nFactures payées vs impayées\nTaux effectif calculé sur les mois avec CA uniquement"
      },
      {
        "title": "Configuration",
        "body": "Fichier optionnel ~/.freelance/config.json :\n\n{\n  \"provider\": {\n    \"name\": \"Hugo Dupont\",\n    \"address\": \"42 rue de la Paix, 75002 Paris\",\n    \"siret\": \"98765432100010\",\n    \"email\": \"hugo@example.com\",\n    \"phone\": \"0600000000\"\n  },\n  \"default_rate\": 80,\n  \"tva_rate\": 0,\n  \"micro_entreprise\": true,\n  \"payment_delay_days\": 30,\n  \"payment_method\": \"Virement bancaire\",\n  \"iban\": \"FR76 1234 5678 9012 3456 7890 123\"\n}\n\nSi micro_entreprise: true → TVA = 0%, mention art. 293B du CGI.\nSi tva_rate > 0 → TVA calculée sur chaque facture."
      },
      {
        "title": "Données",
        "body": "Tout dans ~/.freelance/ :\n\n~/.freelance/\n├── config.json          — Configuration prestataire\n├── clients.json         — Base clients\n├── timetrack.json       — Entrées de temps\n└── invoices/\n    ├── 2026-001.html    — Factures HTML\n    ├── 2026-001.json    — Métadonnées facture\n    └── ..."
      },
      {
        "title": "Notes",
        "body": "Montants en euros (€), output en français\n--json disponible sur toutes les commandes pour usage machine\nLes factures HTML sont optimisées pour impression / export PDF via navigateur\nVoir references/french-law.md pour le détail des obligations légales"
      }
    ],
    "body": "Freelance Toolkit\n\nBoîte à outils pour freelances/indépendants en France : factures, time tracking, clients, dashboard.\n\nScripts\n\nTous dans scripts/. Python 3 stdlib uniquement. Données dans ~/.freelance/.\n\nconfig.py — Configuration prestataire\npython3 config.py set --name \"Hugo Dupont\" --address \"42 rue de la Paix, 75002 Paris\" \\\n  --siret \"98765432100010\" --email \"hugo@example.com\" --phone \"0600000000\" \\\n  --iban \"FR76 1234 5678 9012 3456 7890 123\" --rate 80 --micro\npython3 config.py show [--json]\n\n\nStockage : ~/.freelance/config.json\n\nclients.py — Gestion clients\npython3 clients.py add --name \"Acme\" --email \"contact@acme.fr\" --phone \"0612345678\" \\\n  --address \"10 rue Example, 75001 Paris\" --siret \"12345678900010\" --rate 80 --notes \"Client fidèle\"\npython3 clients.py list [--json]\npython3 clients.py show \"Acme\" [--json]\npython3 clients.py edit \"Acme\" --rate 90 --notes \"Nouveau taux\"\npython3 clients.py remove \"Acme\"\n\n\nStockage : ~/.freelance/clients.json\n\ntimetrack.py — Suivi du temps\npython3 timetrack.py start \"Site web Acme\" [--client \"Acme\"]\npython3 timetrack.py stop\npython3 timetrack.py status [--json]\npython3 timetrack.py log [--from 2026-01-01] [--to 2026-01-31] [--project \"Site web\"] [--json]\npython3 timetrack.py report [--month 2026-01] [--json]\n\n\nStockage : ~/.freelance/timetrack.json\n\ninvoice.py — Génération de factures HTML\npython3 invoice.py generate --client \"Acme\" --items \"Dev site web:5:400\" \"Design logo:1:200\" \\\n  [--number 2026-001] [--date 2026-02-15] [--due-days 30] [--no-open]\npython3 invoice.py list [--json]\npython3 invoice.py show 2026-001\npython3 invoice.py paid 2026-001\n\nGénère un HTML professionnel dans ~/.freelance/invoices/\nAuto-numérotation YYYY-NNN si --number omis\nOuvre dans le navigateur par défaut (sauf --no-open)\nPré-remplit les infos client depuis clients.json si trouvé\nMentions légales françaises incluses (micro-entreprise par défaut)\npaid marque une facture comme payée (suivi dans dashboard)\nMontants au format français (2 900,00 €)\nInitiales du prestataire comme logo sur la facture\ndashboard.py — Tableau de bord revenus\npython3 dashboard.py summary [--year 2026] [--json]\npython3 dashboard.py monthly [--year 2026] [--json]\n\nAgrège factures + time tracking\nCA total, par mois, par client\nHeures travaillées, jours ouvrés (heures/7), taux horaire effectif\nFactures payées vs impayées\nTaux effectif calculé sur les mois avec CA uniquement\nConfiguration\n\nFichier optionnel ~/.freelance/config.json :\n\n{\n  \"provider\": {\n    \"name\": \"Hugo Dupont\",\n    \"address\": \"42 rue de la Paix, 75002 Paris\",\n    \"siret\": \"98765432100010\",\n    \"email\": \"hugo@example.com\",\n    \"phone\": \"0600000000\"\n  },\n  \"default_rate\": 80,\n  \"tva_rate\": 0,\n  \"micro_entreprise\": true,\n  \"payment_delay_days\": 30,\n  \"payment_method\": \"Virement bancaire\",\n  \"iban\": \"FR76 1234 5678 9012 3456 7890 123\"\n}\n\n\nSi micro_entreprise: true → TVA = 0%, mention art. 293B du CGI. Si tva_rate > 0 → TVA calculée sur chaque facture.\n\nDonnées\n\nTout dans ~/.freelance/ :\n\n~/.freelance/\n├── config.json          — Configuration prestataire\n├── clients.json         — Base clients\n├── timetrack.json       — Entrées de temps\n└── invoices/\n    ├── 2026-001.html    — Factures HTML\n    ├── 2026-001.json    — Métadonnées facture\n    └── ...\n\nNotes\nMontants en euros (€), output en français\n--json disponible sur toutes les commandes pour usage machine\nLes factures HTML sont optimisées pour impression / export PDF via navigateur\nVoir references/french-law.md pour le détail des obligations légales"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/HugoSbl/freelance-toolkit-fr",
    "publisherUrl": "https://clawhub.ai/HugoSbl/freelance-toolkit-fr",
    "owner": "HugoSbl",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr",
    "downloadUrl": "https://openagent3.xyz/downloads/freelance-toolkit-fr",
    "agentUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr/agent",
    "manifestUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/freelance-toolkit-fr/agent.md"
  }
}