[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MZPXNGYKM1YG02F7Z5VRFW":3,"skill-same:01M6MZPXNGYKM1YG02F7Z5VRFW":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6MZPXNGYKM1YG02F7Z5VRFW","ways-localize",null,"Localize agent-ways into the operator's language — translate every way's matching metadata against the English root, tune it clean, and switch ways (and Claude Code) into that language. Use when the operator asks to run ways in their language (\"set up ways in Spanish\", \"localiza ways al español\", \"ways auf Deutsch\"). Not for authoring or editing individual ways (that is the ways skill), not for English installs (already built), and not for changing Claude Code's language alone (that is a settings.json edit).","aaronsb\u002Fagent-ways","aaronsb","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2738471?v=4","01M6MZKZTB1QDZ0YMSVFC2F0RE","Aaron Bockelie","01M6MZKZYG6T75YE9PCBNR72QK",26,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Fskills\u002Fways-localize\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"ways localize","localize","up","for","english","matching","spanish","switch","clean","settings.json","translate","use","settings","read","editing","json","Bash","SET","code","run","2026-11-10 10:12:30",false,"---\nname: ways-localize\ndescription: Localize agent-ways into the operator's language — translate every way's matching metadata against the English root, tune it clean, and switch ways (and Claude Code) into that language. Use when the operator asks to run ways in their language (\"set up ways in Spanish\", \"localiza ways al español\", \"ways auf Deutsch\"). Not for authoring or editing individual ways (that is the ways skill), not for English installs (already built), and not for changing Claude Code's language alone (that is a settings.json edit).\nallowed-tools: Bash, Read, Write, Edit\n---\n\n# ways-localize: Adopter-run localization\n\nTurns an English-only ways install into a localized one (ADR-139). English is the **source of truth**; a localization is a derivation, validated against the English root. This skill is the operator-facing orchestrator for the lifecycle in `docs\u002Fexplanation\u002Flocalization\u002F` (scenario `01.011.E`) — interview, consent, translate, tune, switch. The mechanics live in ADR-183, `docs\u002Farchitecture\u002Fways\u002FADR-183-single-language-localization-tuning-the-english-anchor-as-a-peer.md`; don't restate them.\n\nThe app source (the language registry, the embedder's Makefile, the docs) lives in `$XDG_DATA_HOME\u002Fagent-ways`. `~\u002F.claude` is a projection of it that does not carry `tools\u002F` (ADR-142). Resolve both once. The skill is global, so the working directory is unknown at invocation:\n\n```bash\nAPP=\"${XDG_DATA_HOME:-$HOME\u002F.local\u002Fshare}\u002Fagent-ways\"   # app source: tools\u002F, docs\u002F, bin\u002F\nROOT=\"${CLAUDE_CONFIG_DIR:-$HOME\u002F.claude}\"              # Claude Code config: settings.json\n# Verify the app source is there before doing anything.\n[ -f \"$APP\u002Ftools\u002Fways-core\u002Flanguages.json\" ] || { echo \"No agent-ways app source at $APP. (Re-run the installer to (re)stage it.)\"; exit 1; }\n```\n\n## 1. Interview — which language\n\nRecognize the target from the operator's request, **in their own language** (the operator is already reading and writing in it). Resolve it to a ways **code** and a Claude Code **name** from the registry, and confirm with the operator before proceeding:\n\n```bash\njq -r '.languages | to_entries[] | \"\\(.key)\\t\\(.value.name)\\t\\(.value.active)\"' \\\n  \"$APP\u002Ftools\u002Fways-core\u002Flanguages.json\"   # code  name  active\n```\n\nUse the code (e.g. `es`) for ways; the English name (e.g. `spanish`) for Claude Code. If the language is `active: false` in the registry, say so — it can be enabled, but that is a separate decision.\n\n## 2. Consent — this is heavy, ask first\n\nLocalization downloads a 127 MB model and translates + tunes every way. State that plainly and get a clear go-ahead before step 3. (The operator invoked the skill, but the model download and the all-ways pass are the kind of cost that earns a confirm — the same bar the delivery skills hold.)\n\n## 3. Flip the mode switch\n\nThe **effective** switch is the user-scope `language` in `$XDG_CONFIG_HOME\u002Fagent-ways\u002Fconfig.yaml`. Set it to the code:\n\n```bash\nCFG=\"${XDG_CONFIG_HOME:-$HOME\u002F.config}\u002Fagent-ways\u002Fconfig.yaml\"\nmkdir -p \"$(dirname \"$CFG\")\"; touch \"$CFG\"\n# replace an existing `language:` line, else append\ngrep -q '^language:' \"$CFG\" && sed -i \"s\u002F^language:.*\u002Flanguage: $CODE\u002F\" \"$CFG\" || printf 'language: %s\\n' \"$CODE\" >> \"$CFG\"\n\"$APP\u002Fbin\u002Fways\" tune language --json | jq -r '.resolved_language'   # confirm it resolves to $CODE\n```\n\n## 4. Fetch the multilingual model (on-demand)\n\n```bash\nmake -C \"$APP\u002Ftools\u002Fway-embed\" model-multilingual   # 127 MB, only when localizing\n```\n\n## 5. Translate every way against the English root\n\nFor each way, translate its frontmatter `description` + `vocabulary` into the target language — **faithfully to the English meaning** (it is the root; you are deriving, not reinventing). Write one `.locales.jsonl` line per way beside its `.md`:\n\n```\n{\"lang\":\"\u003Ccode>\",\"description\":\"\u003Ctranslated>\",\"vocabulary\":\"\u003Ctranslated keywords>\"}\n```\n\nThis is many small, independent units across ~all ways — a good **Workflow** fan-out when the count is large (translate + tune per way in parallel); batch inline for a handful. Vocabulary carries the *objective match words* in local form, so translate intent, not word-for-word. (`.{lang}.md` stubs + `pack-locales.sh` are the alternate path if you prefer per-file stubs; the script is `$APP\u002Ftools\u002Fways-cli\u002Fscripts\u002Fpack-locales.sh`.)\n\n## 6. Build the corpus, then tune as the acceptance gate\n\n```bash\n\"$APP\u002Fbin\u002Fways\" corpus --quiet               # localized mode → multi corpus + English anchor\n\"$APP\u002Fbin\u002Fways\" tune locale --lang \"$CODE\"          # root-anchored fidelity + discrimination\n```\n\n`ways tune locale` is the **objective gate**: fidelity = alignment to the English root, discrimination = no collision with another way. Re-author flagged stubs, rebuild, re-tune **until clean**. Do not declare done while entries are flagged — show the clean `ways tune locale` output as the evidence.\n\n## 7. Switch Claude Code's own language\n\n```bash\n# settings.json takes the NAME, not the code; effective next session \u002F after \u002Fclear\njq --arg L \"$NAME\" '.language = $L' \"$ROOT\u002Fsettings.json\" > \"$ROOT\u002Fsettings.json.tmp\" \\\n  && mv \"$ROOT\u002Fsettings.json.tmp\" \"$ROOT\u002Fsettings.json\"\n```\n\n## 8. Report — in the operator's language\n\nSummarize in the **target language**: how many ways localized, that `ways tune locale` is clean, and that Claude Code's language takes effect next session.\n\n## Not for\n\n- Authoring or revising a single way — that is the **ways** skill.\n- English installs — nothing to do; the intl pipeline is dormant by design.\n- Setting only Claude Code's response language — that is a one-line `settings.json` edit, not a localization.\n\n## See also\n\n- `$APP\u002Fdocs\u002Fexplanation\u002Flocalization\u002F` (`01.009.E`–`01.013.E`) — the scenarios and the mode gate\n- `$APP\u002Fdocs\u002Farchitecture\u002Fways\u002FADR-183-single-language-localization-tuning-the-english-anchor-as-a-peer.md` — the mechanics\n- the **ways** skill — authoring the English roots this skill derives from\n","# ways-localize: Adopter-run localization\n\nTurns an English-only ways install into a localized one (ADR-139). English is the **source of truth**; a localization is a derivation, validated against the English root. This skill is the operator-facing orchestrator for the lifecycle in `docs\u002Fexplanation\u002Flocalization\u002F` (scenario `01.011.E`) — interview, consent, translate, tune, switch. The mechanics live in ADR-183, `docs\u002Farchitecture\u002Fways\u002FADR-183-single-language-localization-tuning-the-english-anchor-as-a-peer.md`; don't restate them.\n\nThe app source (the language registry, the embedder's Makefile, the docs) lives in `$XDG_DATA_HOME\u002Fagent-ways`. `~\u002F.claude` is a projection of it that does not carry `tools\u002F` (ADR-142). Resolve both once. The skill is global, so the working directory is unknown at invocation:\n\n```bash\nAPP=\"${XDG_DATA_HOME:-$HOME\u002F.local\u002Fshare}\u002Fagent-ways\"   # app source: tools\u002F, docs\u002F, bin\u002F\nROOT=\"${CLAUDE_CONFIG_DIR:-$HOME\u002F.claude}\"              # Claude Code config: settings.json\n# Verify the app source is there before doing anything.\n[ -f \"$APP\u002Ftools\u002Fways-core\u002Flanguages.json\" ] || { echo \"No agent-ways app source at $APP. (Re-run the installer to (re)stage it.)\"; exit 1; }\n```\n\n## 1. Interview — which language\n\nRecognize the target from the operator's request, **in their own language** (the operator is already reading and writing in it). Resolve it to a ways **code** and a Claude Code **name** from the registry, and confirm with the operator before proceeding:\n\n```bash\njq -r '.languages | to_entries[] | \"\\(.key)\\t\\(.value.name)\\t\\(.value.active)\"' \\\n  \"$APP\u002Ftools\u002Fways-core\u002Flanguages.json\"   # code  name  active\n```\n\nUse the code (e.g. `es`) for ways; the English name (e.g. `spanish`) for Claude Code. If the language is `active: false` in the registry, say so — it can be enabled, but that is a separate decision.\n\n## 2. Consent — this is heavy, ask first\n\nLocalization downloads a 127 MB model and translates + tunes every way. State that plainly and get a clear go-ahead before step 3. (The operator invoked the skill, but the model download and the all-ways pass are the kind of cost that earns a confirm — the same bar the delivery skills hold.)\n\n## 3. Flip the mode switch\n\nThe **effective** switch is the user-scope `language` in `$XDG_CONFIG_HOME\u002Fagent-ways\u002Fconfig.yaml`. Set it to the code:\n\n```bash\nCFG=\"${XDG_CONFIG_HOME:-$HOME\u002F.config}\u002Fagent-ways\u002Fconfig.yaml\"\nmkdir -p \"$(dirname \"$CFG\")\"; touch \"$CFG\"\n# replace an existing `language:` line, else append\ngrep -q '^language:' \"$CFG\" && sed -i \"s\u002F^language:.*\u002Flanguage: $CODE\u002F\" \"$CFG\" || printf 'language: %s\\n' \"$CODE\" >> \"$CFG\"\n\"$APP\u002Fbin\u002Fways\" tune language --json | jq -r '.resolved_language'   # confirm it resolves to $CODE\n```\n\n## 4. Fetch the multilingual model (on-demand)\n\n```bash\nmake -C \"$APP\u002Ftools\u002Fway-embed\" model-multilingual   # 127 MB, only when localizing\n```\n\n## 5. Translate every way against the English root\n\nFor each way, translate its frontmatter `description` + `vocabulary` into the target language — **faithfully to the English meaning** (it is the root; you are deriving, not reinventing). Write one `.locales.jsonl` line per way beside its `.md`:\n\n```\n{\"lang\":\"\u003Ccode>\",\"description\":\"\u003Ctranslated>\",\"vocabulary\":\"\u003Ctranslated keywords>\"}\n```\n\nThis is many small, independent units across ~all ways — a good **Workflow** fan-out when the count is large (translate + tune per way in parallel); batch inline for a handful. Vocabulary carries the *objective match words* in local form, so translate intent, not word-for-word. (`.{lang}.md` stubs + `pack-locales.sh` are the alternate path if you prefer per-file stubs; the script is `$APP\u002Ftools\u002Fways-cli\u002Fscripts\u002Fpack-locales.sh`.)\n\n## 6. Build the corpus, then tune as the acceptance gate\n\n```bash\n\"$APP\u002Fbin\u002Fways\" corpus --quiet               # localized mode → multi corpus + English anchor\n\"$APP\u002Fbin\u002Fways\" tune locale --lang \"$CODE\"          # root-anchored fidelity + discrimination\n```\n\n`ways tune locale` is the **objective gate**: fidelity = alignment to the English root, discrimination = no collision with another way. Re-author flagged stubs, rebuild, re-tune **until clean**. Do not declare done while entries are flagged — show the clean `ways tune locale` output as the evidence.\n\n## 7. Switch Claude Code's own language\n\n```bash\n# settings.json takes the NAME, not the code; effective next session \u002F after \u002Fclear\njq --arg L \"$NAME\" '.language = $L' \"$ROOT\u002Fsettings.json\" > \"$ROOT\u002Fsettings.json.tmp\" \\\n  && mv \"$ROOT\u002Fsettings.json.tmp\" \"$ROOT\u002Fsettings.json\"\n```\n\n## 8. Report — in the operator's language\n\nSummarize in the **target language**: how many ways localized, that `ways tune locale` is clean, and that Claude Code's language takes effect next session.\n\n## Not for\n\n- Authoring or revising a single way — that is the **ways** skill.\n- English installs — nothing to do; the intl pipeline is dormant by design.\n- Setting only Claude Code's response language — that is a one-line `settings.json` edit, not a localization.\n\n## See also\n\n- `$APP\u002Fdocs\u002Fexplanation\u002Flocalization\u002F` (`01.009.E`–`01.013.E`) — the scenarios and the mode gate\n- `$APP\u002Fdocs\u002Farchitecture\u002Fways\u002FADR-183-single-language-localization-tuning-the-english-anchor-as-a-peer.md` — the mechanics\n- the **ways** skill — authoring the English roots this skill derives from\n",{"name":5,"description":7,"allowed-tools":44},"Bash, Read, Write, Edit","main","e99c7d9ee1f646cdb86d1a215830339837be153a","skills\u002Fways-localize",13,"https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways","https:\u002F\u002Fgithub.com\u002Faaronsb","I like coding with AI tools and making things.","2026-11-11 14:29:16",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add aaronsb\u002Fagent-ways --skill ways-localize",{"tool":59,"command":60},"bunx","bunx skills add aaronsb\u002Fagent-ways --skill ways-localize",{"tool":62,"command":63},"pnpm","pnpm dlx skills add aaronsb\u002Fagent-ways --skill ways-localize","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Fskills\u002Fways-localize\u002FSKILL.md",true,[],[68,87,99,120,145,167],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":39},"01M6MZQPWHX5QCS3PVPVY1WAVC","my-skill","A hand-built skill the user keeps in ~\u002F.claude\u002Fskills. The fixture asserts it survives the install.","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fdocker\u002Fseed\u002Fclaude\u002Fskills\u002Fmy-skill\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[80,81,82,83,84,85,86],"my skill","my","hand","user","it","fixture","install",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":39},"01M6MZQKYC9X5E94EDSGGGKZ78","work-skill","A skill in a second Claude Code config directory. The fixture asserts the directory is untouched.","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fdocker\u002Fseed\u002Fclaude-work\u002Fskills\u002Fwork-skill\u002FSKILL.md",[93],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[95,96,97,98,37,85],"work","work skill","config","directory",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":106,"publishedAt":39},"01M6MZQE8ZJARAB2WGCNHN9JB8","wrap","Wrap up a session at a natural seam — land in-flight work, square the TaskList honestly, write a copy-paste continuation prompt, then hand off to a directed \u002Fcompact. Use when the user says \"wrap up\", \"wrap this up\", \"let's wrap\", \"end of session\", \"checkpoint and compact\", \"hand off\", or invokes \u002Fwrap.","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Fskills\u002Fwrap\u002FSKILL.md",[105],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[101,107,108,109,110,111,21,30,95,112,113,114,115,116,117,32,118,119,82,35],"checkpoint","continuation","compact","session","end","wrap up","when","prompt","grep","square","write","at","paste",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":39},"01M6MZQ8GDE7JHXY907BF0B495","ways-update","Update the agent-ways installation to the latest version — preview the update with `ways manage update --what-if` (versions, release notes, the commits, local changes, the actions, dev links), read it back to the user, then apply it with `ways manage update --commit`, which pulls the app source in $XDG_DATA, refreshes the binaries and corpus, and reprojects ~\u002F.claude. Use when the user wants to update agent-ways, pull the latest ways\u002Fhooks, or refresh their ways framework install. Not for editing or authoring individual ways (that is the ways skill) or upgrading project dependencies.","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Fskills\u002Fways-update\u002FSKILL.md",[126],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[128,129,130,131,30,132,133,134,135,136,137,138,139,22,140,141,142,143,144,33],"ways update","update","version","update agent","release notes","dev","local","hooks","actions","manage","commits","project","which","links","app","pull","back",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":39},"01M6MZQ3N4FRH6A5Z56P034ZQW","ways-tests","Score way matching via embedding similarity, analyze vocabulary, and validate frontmatter. Use when testing how well a way matches prompts, checking cosine similarity scores, inspecting the embedding engine status, or validating way files.","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Fskills\u002Fways-tests\u002FSKILL.md",[],[152,153,30,154,155,156,35,115,157,158,159,160,161,32,24,162,163,164,165,166],"ways tests","tests","files","testing","embedding","frontmatter","prompts","status","validate","edit","how","via","similarity","engine","analyze",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":176,"publishedAt":39},"01M6MZPSVJJSS12GVWY7CG028A","think","Structured reasoning strategies (tree-of-thoughts, trilemma, self-consistency, step-back, ReAct). Use when facing complex decisions, weighing trade-offs, comparing multiple approaches, balancing competing objectives, or stuck. `\u002Fthink \u003Cmode>` runs one strategy; `\u002Fthink` alone shows the menu.","https:\u002F\u002Fgithub.com\u002Faaronsb\u002Fagent-ways\u002Fblob\u002Fmain\u002Fskills\u002Fthink\u002FSKILL.md",[173],{"categoryNo":174,"categoryName":175,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000009","前端开发",[169,115,177,178,35,179,30,180,181,182,32,183,184,185,186,187,188,144],"structured","react","decisions","strategy","reasoning","mode","trade-offs","consistency","trade","strategies","tree","self"]