一键导入
go-i18n
Use when defining or updating Go CLI i18n rules in this repo, especially around locale files, env-based language selection, and key naming.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when defining or updating Go CLI i18n rules in this repo, especially around locale files, env-based language selection, and key naming.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Integrate PocketBase as a Go library using the github.com/castle-x/goutils/pocketbase (gopb) package to build single-binary full-stack applications. Use when building Go applications that need user authentication, embedding PocketBase into Go binary, registering custom API routes, managing default users, serving embedded SPA frontend, or deploying single-binary applications. NOT for using PocketBase as a standalone separate process.
Guide for contributing new skills to the skills-x collection. This skill should be used when users want to add new open-source skills from external sources (like agentskills.io or anthropics/skills) to the skills-x repository. It covers the complete workflow from discovery to publishing.
帮助用户将飞书群机器人 Webhook 通知接入 Claude Code,使得每次任务完成后自动发送飞书消息卡片通知。 触发场景(当用户提到以下任意内容时激活此 skill): - "飞书通知"、"接入飞书"、"飞书提醒" - "task 完成通知"、"任务完成提醒" - "claude 完成提醒"、"claude 通知" - "Stop hook 通知"、"hook 通知" - "发飞书消息"、"飞书机器人" - "任务结束通知"、"配置通知"
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
Use when you have a written implementation plan to execute in a separate session with review checkpoints
| name | go-i18n |
| description | Use when defining or updating Go CLI i18n rules in this repo, especially around locale files, env-based language selection, and key naming. |
This skill documents the Go CLI i18n rules used in this repo, including language detection, locale files, and key naming conventions.
cmd/skills-xcmd/skills-x/i18n/i18n.gocmd/skills-x/i18n/locales/zh.yaml, cmd/skills-x/i18n/locales/en.yaml//go:embed locales/*.yaml (locales are embedded at build time)Priority order in detectLanguage():
SKILLS_LANGLANGLC_ALLzhNormalization uses prefix matching:
zh, zh_CN, zh_TW → zhen, en_US → enzhInitialize once (early in main):
import "github.com/castle-x/skills-x/cmd/skills-x/i18n"
i18n.MustInit()
Translate strings:
title := i18n.T("list_header")
msg := i18n.Tf("init_success", skillName)
Missing keys return the key itself (useful for spotting gaps).
Use lowercase + underscores with category prefixes:
app_ app metadatacmd_ command descriptions/flagslist_ list outputinit_ init outputerr_ error messagescat_ category namesskill_ skill descriptionsmeta_ meta warningsRule: Never mix Chinese and English in the same string. Use two locale keys instead.
cmd/skills-x/i18n/locales/zh.yamlcmd/skills-x/i18n/locales/en.yamli18n.T / i18n.Tf in Go code.make build) to embed the updated YAML.SKILLS_LANG=zh ./bin/skills-x listSKILLS_LANG=en ./bin/skills-x listAdd a skill_<skill-name> key to both locale files. The list view reads descriptions from i18n, not from the skill file.
# locales/en.yaml
init_success: "Installed: %s"
# locales/zh.yaml
init_success: "安装成功: %s"
fmt.Println(i18n.Tf("init_success", skillName))
| Item | Value |
|---|---|
| Locale files | cmd/skills-x/i18n/locales/{zh,en}.yaml |
| Init | i18n.MustInit() |
| Translate | i18n.T, i18n.Tf |
| Language priority | SKILLS_LANG > LANG > LC_ALL > zh |
fmt.Sprintf before calling i18n.Tf