configuring-wpf-dev-pack-language — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited configuring-wpf-dev-pack-language (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill writes (or updates) a per-project preference file that tells the wpf-dev-pack plugin which language to respond in. A SessionStart hook (hooks/LanguagePreferenceLoader.cs) reads the file on every new conversation and emits a directive into the system context, so the preference takes effect automatically.
(typical case: an English-speaking contributor in a project where wpf-dev-pack was originally tuned for Korean responses, or vice versa).
just have them phrase the next message in the target language. Do not write a file for a one-shot.
SessionStart hook will not run without the plugin.
Copy this checklist and track progress:
Configure Progress:
- [ ] Step 1: Detect current state of .claude/wpf-dev-pack.local.md
- [ ] Step 2: Resolve target language (argument or AskUserQuestion)
- [ ] Step 3: Write or update .claude/wpf-dev-pack.local.md
- [ ] Step 4: Confirm and explain when the change takes effectCheck whether .claude/wpf-dev-pack.local.md exists in the current project root. If it does, read its YAML frontmatter and find any existing language: value so the user can see what they are replacing.
If the file does not exist, that is fine — Step 3 will create it.
If $0 is provided, treat it as a BCP-47 language code (the IETF standard built on ISO 639 language codes):
$0 value | Meaning |
|---|---|
ko, ko-KR | Korean |
en, en-US, en-GB | English |
ja, ja-JP | Japanese |
zh, zh-CN, zh-TW | Chinese |
| (other) | Pass through — the hook will display the raw code |
The table above is illustrative, not exhaustive. Claude understands any valid BCP-47 / ISO 639-1 code (Claude Code does not maintain a closed allowlist). Authoritative references for code samples:
<https://www.rfc-editor.org/info/bcp47>
<https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry>
<https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes>
<https://www.w3.org/International/articles/language-tags/>
Accept the value if it is a non-empty short token (letters, digits, hyphen). Reject and ask for clarification otherwise.
If $0 is missing, use AskUserQuestion with up to 4 options (typically Korean / English / Japanese / Chinese) plus an Other escape for free-form input. Surface the currently configured value from Step 1 so the user can see what they are replacing.
If the file does not exist, create .claude/wpf-dev-pack.local.md with this minimal structure:
---
language: <code>
---
# wpf-dev-pack — Per-Project Local Settings
This file stores personal, per-project preferences for the wpf-dev-pack
plugin. It is read by the LanguagePreferenceLoader SessionStart hook on
every new conversation in this project.
This file is personal and should not be committed. The repo's
.gitignore covers `.claude/*.local.md`.If the file already exists, only modify the language: field in its YAML frontmatter — preserve all other settings and the body verbatim. If the frontmatter is missing entirely, prepend one with just the language: field; do not touch the existing body.
Tell the user:
language: value it now contains.SessionStart hook runs only at the start of a new session, so the user needs to begin a new conversation for the directive to be injected into the system context.
language: field — the hook will then emit nothing and the plugin's default language behavior applies.
it does not hard-switch the model. Claude follows the recommendation by default, and the user can still override at any time ("respond in English please" / "한글로 답해줘").
conversation language is a meaningful side effect, so it must be invoked explicitly.
the same project are unaffected.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.