{"id":67583,"plugin_id":"plugin_asdk_app_6ac7b1a0689c81919b1b49bfa1eb5a9d","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:09:36.179Z","digest":"a1131ac517a9c4e8cd36770e1cc671358bd46af44b5b2ee0a023f325dde66932","against":null,"payload":{"description":"Documents the Crowdin CLI context commands (download, upload, status, reset) for AI enrichment. Use when downloading or uploading strings context for Crowdin, checking context coverage, resetting AI-generated context, managing context files, or running crowdin context commands.","included_files":[],"name":"crowdin-context-cli","skill_md_contents":"---\nname: crowdin-context-cli\ndescription: Documents the Crowdin CLI context commands (download, upload, status, reset) for AI enrichment. Use when downloading or uploading strings context for Crowdin, checking context coverage, resetting AI-generated context, managing context files, or running crowdin context commands.\n---\n\n# Crowdin Context CLI\n\nUse the Crowdin CLI for context download and upload. Config is read from `crowdin.yml` by default; override with `-c, --config=<path>` if needed.\n\n```\ncrowdin context <command> [options]\n```\n\n## context download\n\nDownload strings context to a separate file for enrichment by AI Agent.\n\n```\ncrowdin context download [CONFIG OPTIONS] [OPTIONS]\n```\n\n- `--to=<path>` — File path to download the context to. Default: `crowdin-context.jsonl`\n- `-f, --file=<glob>` — Filter strings by Crowdin file paths (glob). Multiple paths can be specified\n- `--label=<label>` — Filter strings by labels. Multiple labels can be specified\n- `-b, --branch=<name>` — Filter by branch name\n- `--croql=<expr>` — CroQL expression (cannot be combined with the other filter options)\n- `--since=<YYYY-MM-DD>` — Only strings created after this date\n- `--status=<value>` — Which kind of context a string already has: `empty` (none of any kind), `manual` (source context, no AI context), `ai` (AI context written). See below — this is not a filter for \"still needs context\"\n\nConfig options (if not using a config file): `-T, --token`, `-i, --project-id`, `--base-url`, `--base-path`. Use `-c, --config=<path>` to override config file (default: `crowdin.yml` or `crowdin.yaml`).\n\n**Which `--status` selects the strings needing AI context depends on the source format, so prefer omitting it.** A format that carries source references into Crowdin — PO `#:` lines, for one — leaves every string holding manual context, so `empty` matches nothing and `manual` matches everything; a format carrying no context at all inverts that. With no `--status` the download covers both cases in one call, and costs nothing extra: `context upload` writes back only the records whose `ai_context` was actually filled.\n\n## context upload\n\nUpload strings context. Only files previously downloaded by `context download` are supported.\n\n```\ncrowdin context upload [CONFIG OPTIONS] [OPTIONS]\n```\n\n- `--from=<path>` — File path to upload the context from. Default: `crowdin-context.jsonl`\n- `--overwrite` — Also update strings where `ai_context` is empty (removes their AI section). Default: false\n- `--dryrun` — Print command output without execution\n\n## context status\n\nShow context coverage statistics — how many strings have manual, AI, or no context.\n\n```\ncrowdin context status [CONFIG OPTIONS] [OPTIONS]\n```\n\n- `-f, --file=<glob>` — Filter strings by Crowdin file paths (glob). Multiple paths can be specified\n- `--label=<label>` — Filter strings by labels. Multiple labels can be specified\n- `-b, --branch=<name>` — Filter by branch name\n- `--croql=<expr>` — CroQL expression (cannot be combined with the other filter options)\n- `--since=<YYYY-MM-DD>` — Only strings created after this date\n- `--by-file` — Break statistics down per file\n\n## context reset\n\nRemove AI-generated context from strings; manually written context is preserved.\n\n```\ncrowdin context reset [CONFIG OPTIONS] [OPTIONS]\n```\n\n- `-f, --file=<glob>` — Only reset strings from matching file paths. Multiple paths can be specified\n- `--label=<label>` — Only reset strings with matching labels. Multiple labels can be specified\n- `-b, --branch=<name>` — Only reset strings from the matching branch\n- `--croql=<expr>` — Only reset strings matching the CroQL expression (cannot be combined with the other filter options)\n- `--since=<YYYY-MM-DD>` — Only reset strings created after this date\n- `--dryrun` — Print command output without execution\n- `--all` — Required safety flag when no filter is specified\n\n## JSONL format\n\nOne JSON object per line. Fields:\n\n- `id` — String ID in Crowdin\n- `key` — String key\n- `text` — Source text\n- `file` — Crowdin file path\n- `context` — Existing source context\n- `ai_context` — AI context to set (**edit this field before uploading**)\n\nExample line:\n\n```json\n{\"file\":\"/src/locales/en.po\",\"ai_context\":\"\",\"context\":\"#: src/App.tsx:54\",\"id\":3125833,\"text\":\"Click on the Vite and React logos to learn more\",\"key\":\"Click on the Vite and React logos to learn more\"}\n```\n\n## Typical Workflow\n\n1. Check coverage (optional): `crowdin context status` — the split between manual, AI and no context. Read it before picking a `--status` filter for the next step, or skip the filter and take everything.\n2. Download: `crowdin context download` (writes to `crowdin-context.jsonl` by default) or `crowdin context download --to=path/to/file.jsonl`\n3. Edit the file - fill in `ai_context` for each string (use [context-extraction](../context-extraction/SKILL.md) to help).\n4. Upload: `crowdin context upload` (reads from `crowdin-context.jsonl` by default) or `crowdin context upload --from=path/to/file.jsonl`\n\nTo discard AI-generated context later (e.g. before re-running enrichment from scratch), use `crowdin context reset` with a filter, or `crowdin context reset --all`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}