k-skill-setup
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesek-skill Setup
k-skill 设置
Purpose
目的
전체 설치가 끝난 뒤, 공통 후속 작업을 처리한다.
k-skill- 설치
sops + age - age key 생성
- 공통 secrets 파일 생성
- 암호화 확인
- 런타임 주입 확인
- 선택 사항: 주기적인 업데이트 확인 자동화
- 선택 사항: GitHub star 여부 확인 및 동의 시 실행
이 스킬의 기본 정책:
- 시크릿이 없으면 필요한 값 이름을 사용자에게 정확히 알려준다
- 값을 채팅창에 붙여 넣으라고 하지 않는다
- 로컬에 안전하게 등록하는 절차를 안내한 뒤 다시 진행한다
- 필요한 패키지가 없으면 대체 구현을 찾기보다 전역 설치를 먼저 시도한다
- ,
cron,launchd,schtasks같은 지속성/외부 상태 변경은 자동으로 하지 말고 먼저 사용자 동의를 받는다gh - GitHub star는 사용자가 명시적으로 동의했을 때만 실행한다
完成完整 安装后,处理通用后续操作。
k-skill- 安装
sops + age - 生成age密钥
- 生成通用secrets文件
- 验证加密有效性
- 验证运行时注入有效性
- 可选:自动化定期更新检查
- 可选:检查GitHub标星状态,用户同意后执行对应操作
本技能的基本政策:
- 若缺少密钥,会准确告知用户需要的参数名称
- 不要求用户将敏感值粘贴到聊天窗口
- 先引导用户完成本地安全注册流程后再继续操作
- 缺少必要包时,优先尝试全局安装,而非寻找替代实现
- 涉及、
cron、launchd、schtasks这类持久化/外部状态变更的操作,不会自动执行,需先获得用户同意gh - GitHub标星仅在用户明确同意后执行
Why this is the default setup path
为什么这是默认设置路径
- 계정 가입이 필요 없다
- macOS, Linux, Windows 모두 가능하다
- 스킬은 비밀값 위치를 몰라도 되고, 표준 환경변수 이름만 보면 된다
- 비밀값은 저장소에 평문으로 두지 않아도 된다
- 설치 단계와 시크릿/운영 자동화 단계를 분리할 수 있다
- 不需要注册账号
- 支持macOS、Linux、Windows全平台
- 技能无需知晓保密值的存储位置,只需读取标准环境变量名称即可
- 保密值无需明文存储在仓库中
- 安装阶段和密钥/运维自动化阶段可拆分
Security model
安全模型
중요한 한계:
- 암호화된 파일은 안전하게 저장할 수 있다
- 하지만 로 실행된 프로세스는 복호화된 환경변수를 사용할 수 있다
sops exec-env ... - 즉, 에이전트가 "쓸 수는 있지만 절대로 읽을 수는 없는" 구조는 아니다
더 강한 모델이 필요하면 비밀값 자체를 넘기지 말고, 비밀값을 내부에서 소비하는 래퍼 명령만 노출해야 한다.
重要限制:
- 加密后的文件可安全存储
- 但通过运行的进程可使用解密后的环境变量
sops exec-env ... - 也就是说,该结构无法做到“Agent仅可使用、绝对无法读取”保密值
如果需要更高级别的安全模型,不要直接传递保密值,仅暴露内部消费保密值的封装命令即可。
Standard file locations
标准文件位置
- age key:
~/.config/k-skill/age/keys.txt - encrypted secrets file:
~/.config/k-skill/secrets.env
원하면 다른 위치를 써도 되지만, 기본 문서는 이 경로를 기준으로 한다.
- age密钥:
~/.config/k-skill/age/keys.txt - 加密后的secrets文件:
~/.config/k-skill/secrets.env
如果你想使用其他位置也可以,但官方文档默认以上述路径为准。
Install
安装
이 스킬은 전체 스킬 설치가 끝난 뒤 실행하는 것을 기본으로 한다.
k-skill예:
bash
npx --yes skills add <owner/repo> --all -g설치가 끝나면 이 스킬을 호출해 아래 setup 단계를 이어간다.
本技能默认在完整安装完成后执行。
k-skill示例:
bash
npx --yes skills add <owner/repo> --all -g安装完成后调用本技能,继续执行后续设置步骤。
macOS
macOS
bash
brew install sops agebash
brew install sops ageUbuntu / Debian
Ubuntu / Debian
bash
sudo apt-get update
sudo apt-get install -y sops agebash
sudo apt-get update
sudo apt-get install -y sops ageArch Linux
Arch Linux
bash
sudo pacman -S sops agebash
sudo pacman -S sops ageWindows
Windows
powershell
winget install Mozilla.SOPS FiloSottile.age패키지 이름은 배포 채널에 따라 바뀔 수 있으니, 실패하면 공식 releases 페이지를 확인한다.
powershell
winget install Mozilla.SOPS FiloSottile.age包名可能根据分发渠道变化,若安装失败请查看官方发布页。
Setup steps
设置步骤
1. Create an age key
1. 生成age密钥
bash
mkdir -p ~/.config/k-skill/age
age-keygen -o ~/.config/k-skill/age/keys.txt출력에 보이는 public key를 복사한다.
bash
mkdir -p ~/.config/k-skill/age
age-keygen -o ~/.config/k-skill/age/keys.txt复制输出显示的公钥。
2. Create .sops.yaml
.sops.yaml2. 创建.sops.yaml
.sops.yaml작업 디렉터리나 secrets 파일이 있는 디렉터리에 생성한다.
yaml
creation_rules:
- path_regex: .*secrets\.env(\.plain)?$
age: age1replace-with-your-public-key在工作目录或secrets文件所在目录创建:
yaml
creation_rules:
- path_regex: .*secrets\.env(\.plain)?$
age: age1replace-with-your-public-key3. Create the plaintext env file once
3. 首次创建明文env文件
bash
mkdir -p ~/.config/k-skill
cat > ~/.config/k-skill/secrets.env.plain <<'EOF'
KSKILL_SRT_ID=replace-me
KSKILL_SRT_PASSWORD=replace-me
KSKILL_KTX_ID=replace-me
KSKILL_KTX_PASSWORD=replace-me
SEOUL_OPEN_API_KEY=replace-me
EOF실제 값을 채운다.
bash
mkdir -p ~/.config/k-skill
cat > ~/.config/k-skill/secrets.env.plain <<'EOF'
KSKILL_SRT_ID=replace-me
KSKILL_SRT_PASSWORD=replace-me
KSKILL_KTX_ID=replace-me
KSKILL_KTX_PASSWORD=replace-me
SEOUL_OPEN_API_KEY=replace-me
EOF填入实际的参数值。
4. Encrypt it
4. 加密文件
bash
cd ~/.config/k-skill
sops --encrypt --input-type dotenv --output-type dotenv \
secrets.env.plain > secrets.env
rm secrets.env.plainbash
cd ~/.config/k-skill
sops --encrypt --input-type dotenv --output-type dotenv \
secrets.env.plain > secrets.env
rm secrets.env.plainMissing secret response template
缺失密钥响应模板
인증 스킬에서 값이 빠졌을 때는 다음 식으로 안내한다.
text
이 작업에는 <REQUIRED_SECRET_NAMES> 이 필요합니다.
값을 채팅창에 보내지 말고 ~/.config/k-skill/secrets.env.plain 에 직접 채운 뒤
sops 로 ~/.config/k-skill/secrets.env 로 암호화해 주세요.
암호화가 끝나면 plaintext 파일은 지우고 bash scripts/check-setup.sh 로 다시 확인해 주세요.예를 들면:
- SRT: ,
KSKILL_SRT_IDKSKILL_SRT_PASSWORD - KTX: ,
KSKILL_KTX_IDKSKILL_KTX_PASSWORD - 서울 지하철:
SEOUL_OPEN_API_KEY
시크릿이 비어 있다는 이유로 다른 서비스나 비공식 우회 경로를 자동 선택하지 않는다.
认证技能发现参数缺失时,按以下模板引导用户:
text
该操作需要 <REQUIRED_SECRET_NAMES>。
请勿将值发送到聊天窗口,请直接填入 ~/.config/k-skill/secrets.env.plain,
然后使用sops加密为 ~/.config/k-skill/secrets.env。
加密完成后删除明文文件,运行bash scripts/check-setup.sh重新验证即可。示例:
- SRT:、
KSKILL_SRT_IDKSKILL_SRT_PASSWORD - KTX:、
KSKILL_KTX_IDKSKILL_KTX_PASSWORD - 首尔地铁:
SEOUL_OPEN_API_KEY
不得因密钥为空自动选择其他服务或非官方绕过路径。
5. Verify runtime injection
5. 验证运行时注入
bash
SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
sops exec-env "$HOME/.config/k-skill/secrets.env" \
'test -n "$KSKILL_SRT_ID" || test -n "$KSKILL_KTX_ID" || test -n "$SEOUL_OPEN_API_KEY"'또는 저장소에 들어있는 점검 스크립트를 쓴다.
bash
bash scripts/check-setup.shbash
SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
sops exec-env "$HOME/.config/k-skill/secrets.env" \
'test -n "$KSKILL_SRT_ID" || test -n "$KSKILL_KTX_ID" || test -n "$SEOUL_OPEN_API_KEY"'也可以使用仓库内置的检查脚本:
bash
bash scripts/check-setup.sh6. Run tools with the encrypted file
6. 使用加密文件运行工具
bash
SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
sops exec-env "$HOME/.config/k-skill/secrets.env" '<your command>'bash
SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
sops exec-env "$HOME/.config/k-skill/secrets.env" '<your command>'7. Offer scheduled update checks
7. 提供定时更新检查选项
setup이 끝나면 사용자에게 주기적인 업데이트 확인 자동화를 원하는지 먼저 묻는다. 원하지 않으면 건너뛴다.
기본 정책:
- 자동 설치가 아니라 만 기본으로 제안한다
업데이트 확인 - 지속성 있는 시스템 변경(,
crontab,launchd)은 동의 없이 적용하지 않는다schtasks - 기본 확인 명령은
npx --yes skills check - 사용자가 명시적으로 를 원할 때만
자동 업데이트기반 스케줄을 별도로 제안한다npx --yes skills update
macOS / Linux 예시:
bash
mkdir -p ~/.config/k-skill/bin ~/.config/k-skill/logs
cat > ~/.config/k-skill/bin/check-skill-updates.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
mkdir -p "$HOME/.config/k-skill/logs"
{
date '+[%Y-%m-%d %H:%M:%S]'
npx --yes skills check
printf '\n'
} >> "$HOME/.config/k-skill/logs/skills-check.log" 2>&1
EOF
chmod +x ~/.config/k-skill/bin/check-skill-updates.sh
(crontab -l 2>/dev/null; echo "0 9 * * * $HOME/.config/k-skill/bin/check-skill-updates.sh") | crontab -Windows 예시:
powershell
New-Item -ItemType Directory -Force "$HOME/.config/k-skill/bin" | Out-Null
New-Item -ItemType Directory -Force "$HOME/.config/k-skill/logs" | Out-Null
@'
npx --yes skills check >> "$HOME/.config/k-skill/logs/skills-check.log" 2>&1
'@ | Set-Content "$HOME/.config/k-skill/bin/check-skill-updates.cmd"
schtasks /Create /SC DAILY /TN "k-skill-update-check" /TR "\"$HOME/.config/k-skill/bin/check-skill-updates.cmd\"" /ST 09:00 /F설정 후에는 로그 위치를 짧게 알려준다:
~/.config/k-skill/logs/skills-check.log
设置完成后先询问用户是否需要自动化定期更新检查,不需要则跳过。
基本政策:
- 默认仅建议「更新检查」而非自动安装
- 未经同意不得应用持久化系统变更(、
crontab、launchd)schtasks - 默认检查命令为
npx --yes skills check - 仅当用户明确想要「自动更新」时,再单独提供基于的定时任务方案
npx --yes skills update
macOS / Linux 示例:
bash
mkdir -p ~/.config/k-skill/bin ~/.config/k-skill/logs
cat > ~/.config/k-skill/bin/check-skill-updates.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
mkdir -p "$HOME/.config/k-skill/logs"
{
date '+[%Y-%m-%d %H:%M:%S]'
npx --yes skills check
printf '\n'
} >> "$HOME/.config/k-skill/logs/skills-check.log" 2>&1
EOF
chmod +x ~/.config/k-skill/bin/check-skill-updates.sh
(crontab -l 2>/dev/null; echo "0 9 * * * $HOME/.config/k-skill/bin/check-skill-updates.sh") | crontab -Windows 示例:
powershell
New-Item -ItemType Directory -Force "$HOME/.config/k-skill/bin" | Out-Null
New-Item -ItemType Directory -Force "$HOME/.config/k-skill/logs" | Out-Null
@'
npx --yes skills check >> "$HOME/.config/k-skill/logs/skills-check.log" 2>&1
'@ | Set-Content "$HOME/.config/k-skill/bin/check-skill-updates.cmd"
schtasks /Create /SC DAILY /TN "k-skill-update-check" /TR "\"$HOME/.config/k-skill/bin/check-skill-updates.cmd\"" /ST 09:00 /F设置完成后简要告知日志位置:
~/.config/k-skill/logs/skills-check.log
8. Offer GitHub starring with explicit consent
8. 经用户明确同意后提供GitHub标星服务
setup 마지막에는 다음처럼 짧게 묻는다.
text
k-skill 저장소(NomaDamas/k-skill)에 GitHub star를 눌러드릴까요?
원하시면 `gh` 로 바로 처리하고, 원하지 않으면 건너뜁니다.규칙:
- 사용자가 명시적으로 동의하기 전에는 를 실행하지 않는다
gh repo star - 가 없거나 인증되지 않았으면 설치/로그인 안내만 하고 자동 우회하지 않는다
gh - star 대상 저장소는 이다
NomaDamas/k-skill
동의했고 가 정상이면:
gh auth statusbash
gh repo star NomaDamas/k-skill성공하면 짧게 완료만 알린다.
设置最后简短询问用户:
text
需要帮您给k-skill仓库(NomaDamas/k-skill)点GitHub star吗?
如果您同意,我们将通过`gh`直接处理,不同意则跳过。规则:
- 用户明确同意前不得执行命令
gh repo star - 如果没有或未认证,仅引导安装/登录,不自动绕过
gh - 标星目标仓库为
NomaDamas/k-skill
用户同意且正常时执行:
gh auth statusbash
gh repo star NomaDamas/k-skill成功后仅简短告知操作完成。
Recommended shell helper
推荐Shell辅助函数
bash
kskill-run() {
SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
sops exec-env "$HOME/.config/k-skill/secrets.env" "$@"
}예시:
bash
kskill-run python your-script.pybash
kskill-run() {
SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
sops exec-env "$HOME/.config/k-skill/secrets.env" "$@"
}示例:
bash
kskill-run python your-script.pyCompletion checklist
完成检查清单
- works
sops --version - or
age-keygen --versionworksage --version - exists
~/.config/k-skill/age/keys.txt - exists and is encrypted
~/.config/k-skill/secrets.env - can inject expected env vars
sops exec-env ... - 사용자가 원한 경우에만 업데이트 확인 자동화 또는 GitHub star가 설정되었다
- 可正常运行
sops --version - 或
age-keygen --version可正常运行age --version - 存在
~/.config/k-skill/age/keys.txt - 存在且已加密
~/.config/k-skill/secrets.env - 可正常注入预期的环境变量
sops exec-env ... - 仅在用户同意的前提下配置了自动更新检查或GitHub标星
Notes
注意事项
- 기본 흐름은 "전체 스킬 설치 → 이 setup skill 실행 → 개별 기능 사용" 이다
- 저장소 안에는 plaintext secret file을 두지 않는다
- 标准流程为「安装完整skill → 运行本设置skill → 使用各独立功能」
- 请勿在仓库中存放明文密钥文件