k-skill/docs/setup.md
Jeffrey (Dongkyu) Kim 720964cf49 Prepare k-skill for packaged releases and broader skill discovery
This snapshots the current repository updates as a coherent release-prep
baseline: workspace/package scaffolding, release automation docs and
workflows, refreshed skill/setup documentation, roadmap expansion, and
the README thumbnail polish.

Constraint: Node packages in this repo must use npm workspaces and Changesets for releases
Constraint: Python release automation stays scaffold-only until a real package exists
Rejected: Split the current work into multiple commits | user asked to commit the current changes together
Confidence: medium
Scope-risk: moderate
Reversibility: clean
Directive: Keep release docs, workflows, and package metadata aligned when adding future packages
Tested: npm run ci
Not-tested: GitHub Actions execution on remote after push
2026-03-25 23:57:53 +09:00

3.3 KiB

공통 설정 가이드

SRT 예매, KTX 예매, 서울 지하철 도착정보 조회처럼 인증 정보가 필요한 기능은 이 문서를 먼저 보면 된다.

이 설정으로 해결하는 것

  • sops + age 설치
  • age key 생성
  • 공통 secrets 파일 생성
  • 암호화 확인
  • 런타임 주입 확인

기본 경로

  • age key: ~/.config/k-skill/age/keys.txt
  • encrypted secrets file: ~/.config/k-skill/secrets.env

1) 필요한 도구 설치

macOS

brew install sops age

Ubuntu / Debian

sudo apt-get update
sudo apt-get install -y sops age

Arch Linux

sudo pacman -S sops age

Windows

winget install Mozilla.SOPS FiloSottile.age

도구가 없으면 다른 비밀 관리 방식으로 우회하지 말고, 이 도구들을 먼저 설치하는 것을 기본으로 합니다.

2) age key 만들기

mkdir -p ~/.config/k-skill/age
age-keygen -o ~/.config/k-skill/age/keys.txt

출력된 public key를 복사해 둡니다.

3) .sops.yaml 만들기

creation_rules:
  - path_regex: .*secrets\.env(\.plain)?$
    age: age1replace-with-your-public-key

4) 공통 secrets 파일 만들기

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

실제 값을 채운 뒤 바로 암호화합니다.

cd ~/.config/k-skill
sops --encrypt --input-type dotenv --output-type dotenv \
  secrets.env.plain > secrets.env
rm secrets.env.plain

시크릿이 없을 때의 기본 응답

인증이 필요한 스킬에서 값이 비어 있으면 다음 식으로 안내하는 것을 기본으로 합니다.

  • 어떤 값이 필요한지 정확한 변수 이름으로 알려주기
  • 그 값을 채팅에 보내지 말라고 안내하기
  • 아래 절차로 로컬에 직접 등록하게 하기

예:

이 작업에는 KSKILL_SRT_ID, KSKILL_SRT_PASSWORD 가 필요합니다.
값을 채팅창에 붙여 넣지 말고, ~/.config/k-skill/secrets.env.plain 에 채운 뒤
sops 로 ~/.config/k-skill/secrets.env 로 암호화해 주세요.
끝나면 plaintext 파일은 지우고 bash scripts/check-setup.sh 로 다시 확인해 주세요.

5) 런타임 주입 확인

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 scripts/check-setup.sh

6) 실행 래퍼 두기

kskill-run() {
  SOPS_AGE_KEY_FILE="$HOME/.config/k-skill/age/keys.txt" \
  sops exec-env "$HOME/.config/k-skill/secrets.env" "$@"
}

기능별로 필요한 값

기능 필요한 값
SRT 예매 KSKILL_SRT_ID, KSKILL_SRT_PASSWORD
KTX 예매 KSKILL_KTX_ID, KSKILL_KTX_PASSWORD
서울 지하철 도착정보 조회 SEOUL_OPEN_API_KEY

다음에 볼 문서