s-skill-setup
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineses-skills 설정 마법사
s-skills配置向导
s-skills 스킬을 처음 쓰기 전에 필요한 MCP 서버와 GitHub CLI를 대화로 설정해주는 스킬. 이미 설정된 건 건너뛰고, 안 된 것만 단계별로 안내·검증한다.
**这是一款在首次使用s-skills技能前,通过对话形式配置所需MCP服务器与GitHub CLI的技能。**已配置完成的项会自动跳过,仅对未完成项提供分步引导与验证。
원칙
原则
- 비개발자 기준으로 친절하게. 편집이나 토큰 발급을 처음 해보는 사람도 완주할 수 있어야 한다.
.mcp.json - 묻기 전에 먼저 확인한다. 이미 되어있으면 "이미 됐네요 ✅" 한 줄로 스킵.
- 절대 자동으로 기존 설정을 덮어쓰지 않는다. 충돌 시 사용자에게 묻는다.
- 존댓말 사용. "~했습니다/~할까요?" 체.
- step-by-step, 한 번에 하나씩. 체크리스트 여러 개 한꺼번에 들이밀지 말 것.
- 以非开发者为标准提供贴心引导。即便是首次编辑或获取令牌的用户也能顺利完成配置。
.mcp.json - 询问前先检查状态。已完成的配置仅用一句“已完成 ✅”跳过。
- 绝不自动覆盖现有配置。发生冲突时询问用户意见。
- 使用敬语。采用“~了吗?/~好吗?”的语气。
- 分步进行,一次一项。不要一次性展示多个检查项。
실행 흐름
执行流程
0단계. 시작 멘트
0阶段. 开场语
안녕하세요! s-skills 설정을 도와드릴게요. 🛠
몇 가지 질문 드리면서 필요한 것만 골라서 설정해드릴게요.
이미 되어 있는 건 자동으로 건너뜁니다.您好!我将为您协助完成s-skills的配置。🛠
我会通过几个问题,帮您仅选择需要的项进行配置。已完成的配置会自动跳过。1단계. 저장 위치 선택
1阶段. 选择存储位置
설정 파일을 어디에 쓸지 먼저 결정. :
AskUserQuestion- 옵션 A: 이 프로젝트만 (추천) — 현재 디렉토리 . 팀이 이 프로젝트를 쓸 때 동일 설정을 공유할 수 있고, 다른 프로젝트에 영향이 없음.
./.mcp.json - 옵션 B: 전역 — . 어느 프로젝트에서든 동작.
~/.claude/.mcp.json
선택 결과를 변수처럼 이후 모든 단계에서 사용.
$MCP_PATHbash
undefined首先确定配置文件的存储位置。使用提问:
AskUserQuestion- 选项A:仅当前项目(推荐) — 当前目录下的。团队使用该项目时可共享相同配置,且不会影响其他项目。
./.mcp.json - 选项B:全局 — 。可在任意项目中生效。
~/.claude/.mcp.json
选择结果将作为变量在后续所有阶段中使用。
$MCP_PATHbash
undefined프로젝트 선택 시 (기본 추천)
选择项目时(默认推荐)
MCP_PATH="./.mcp.json"
MCP_PATH="./.mcp.json"
전역 선택 시
选择全局时
MCP_PATH="$HOME/.claude/.mcp.json"
undefinedMCP_PATH="$HOME/.claude/.mcp.json"
undefined2단계. 현재 상태 탐지
2阶段. 检测当前状态
질문하기 전에 상태를 훑어본다:
bash
undefined提问前先检查当前状态:
bash
undefinedgh 설치/로그인
检查gh是否安装/登录
which gh >/dev/null 2>&1 && gh auth status 2>&1 | head -3
which gh >/dev/null 2>&1 && gh auth status 2>&1 | head -3
대상 .mcp.json 존재 및 서버 목록
检查目标.mcp.json是否存在及服务器列表
[ -f "$MCP_PATH" ] && cat "$MCP_PATH" | jq '.mcpServers | keys' 2>/dev/null
[ -f "$MCP_PATH" ] && cat "$MCP_PATH" | jq '.mcpServers | keys' 2>/dev/null
Shiftee CLI 바이너리 탐색 (캐시 → 전역 스킬 → 프로젝트 스킬 → Universal)
查找Shiftee CLI二进制文件(缓存 → 全局技能 → 项目技能 → Universal)
SHIFTEE_BIN=""
for p in
"$HOME/.cache/s-skill-shiftee/shiftee"
"$HOME/.claude/skills/s-skill-shiftee/shiftee"
"./.claude/skills/s-skill-shiftee/shiftee"
"$HOME/.agents/skills/s-skill-shiftee/shiftee"; do if [ -x "$p" ]; then SHIFTEE_BIN="$p"; break; fi done [ -n "$SHIFTEE_BIN" ] && echo "shiftee found at $SHIFTEE_BIN" [ -f "$HOME/.config/shiftee-cli/config.json" ] && echo "shiftee logged in"
"$HOME/.cache/s-skill-shiftee/shiftee"
"$HOME/.claude/skills/s-skill-shiftee/shiftee"
"./.claude/skills/s-skill-shiftee/shiftee"
"$HOME/.agents/skills/s-skill-shiftee/shiftee"; do if [ -x "$p" ]; then SHIFTEE_BIN="$p"; break; fi done [ -n "$SHIFTEE_BIN" ] && echo "shiftee found at $SHIFTEE_BIN" [ -f "$HOME/.config/shiftee-cli/config.json" ] && echo "shiftee logged in"
그리고 현재 세션에서 MCP 도구가 로드돼 있는지 확인:
ToolSearch "+linear" → Linear MCP 도구 있는지
ToolSearch "+slack" → Slack MCP 도구 있는지
ToolSearch "+notion" → Notion MCP 도구 있는지
탐지 결과를 한눈에 보여준다:
📋 현재 상태
GitHub CLI : ✅ (jongbeomlee로 로그인됨) / ❌ (미설치 또는 로그인 안 됨)
Linear MCP : ✅ 연결됨 / ❌ 미설정
Slack MCP : ✅ 연결됨 / ❌ 미설정
Notion MCP : ✅ 연결됨 / ❌ 미설정
Shiftee CLI : ✅ 로그인됨 / ⚠️ 번들은 있지만 로그인 안 됨 / ❌ 바이너리 없음 (자동 다운로드 시도 예정)
undefinedSHIFTEE_BIN=""
for p in
"$HOME/.cache/s-skill-shiftee/shiftee"
"$HOME/.claude/skills/s-skill-shiftee/shiftee"
"./.claude/skills/s-skill-shiftee/shiftee"
"$HOME/.agents/skills/s-skill-shiftee/shiftee"; do if [ -x "$p" ]; then SHIFTEE_BIN="$p"; break; fi done [ -n "$SHIFTEE_BIN" ] && echo "shiftee found at $SHIFTEE_BIN" [ -f "$HOME/.config/shiftee-cli/config.json" ] && echo "shiftee logged in"
"$HOME/.cache/s-skill-shiftee/shiftee"
"$HOME/.claude/skills/s-skill-shiftee/shiftee"
"./.claude/skills/s-skill-shiftee/shiftee"
"$HOME/.agents/skills/s-skill-shiftee/shiftee"; do if [ -x "$p" ]; then SHIFTEE_BIN="$p"; break; fi done [ -n "$SHIFTEE_BIN" ] && echo "shiftee found at $SHIFTEE_BIN" [ -f "$HOME/.config/shiftee-cli/config.json" ] && echo "shiftee logged in"
同时检查当前会话中是否已加载MCP工具:
ToolSearch "+linear" → 检查是否存在Linear MCP工具
ToolSearch "+slack" → 检查是否存在Slack MCP工具
ToolSearch "+notion" → 检查是否存在Notion MCP工具
将检测结果汇总展示:
📋 当前状态
GitHub CLI : ✅ 已登录(用户名为jongbeomlee) / ❌ 未安装或未登录
Linear MCP : ✅ 已连接 / ❌ 未配置
Slack MCP : ✅ 已连接 / ❌ 未配置
Notion MCP : ✅ 已连接 / ❌ 未配置
Shiftee CLI : ✅ 已登录 / ⚠️ 存在程序包但未登录 / ❌ 无二进制文件(将尝试自动下载)
undefined3단계. 인터뷰 + 설치 루프
3阶段. 询问 + 安装循环
상태가 ❌인 항목에 대해서만 "쓰시나요?" 묻고, ✅인 건 그냥 스킵.
순서: GitHub → Linear → Slack → Notion → Shiftee
각 항목에 대해 아래의 "설치 분기"를 수행.
仅对状态为❌的项询问“您是否使用该工具?”,状态为✅的项直接跳过。
顺序:GitHub → Linear → Slack → Notion → Shiftee
对每个项执行以下“安装分支”流程。
설치 분기
安装分支
GitHub CLI 분기
GitHub CLI分支
Q. : "코드/이슈 관리를 위해 GitHub를 쓰시나요?"
AskUserQuestionY면:
-
체크
which gh -
없으면:
GitHub CLI가 없네요. 터미널에서 다음 명령어를 실행해주세요: macOS: brew install gh Windows: winget install --id GitHub.cli Linux: https://github.com/cli/cli/blob/trunk/docs/install_linux.md 참고 설치 끝나셨나요?→(네/아직). 네면AskUserQuestion재검증.which gh -
체크
gh auth status -
로그인 안 돼있으면:
이제 로그인할게요. 터미널에 이거 치시고, 기본값으로 엔터 엔터 쭉 누르시면 됩니다: gh auth login 브라우저가 열리고 one-time code 입력하라고 나와요. 완료하셨나요?→(네/문제있음). 네면AskUserQuestion재검증.gh auth status -
성공: "✅ GitHub 로그인 완료: @username"
问题. : "您是否使用GitHub进行代码/问题管理?"
AskUserQuestion如果回答是:
-
执行检查是否安装
which gh -
若未安装:
未检测到GitHub CLI。请在终端中执行以下命令进行安装: macOS: brew install gh Windows: winget install --id GitHub.cli Linux: 参考https://github.com/cli/cli/blob/trunk/docs/install_linux.md 安装完成了吗?→ 使用提问(是/尚未)。回答“是”则重新执行AskUserQuestion验证。which gh -
执行检查登录状态
gh auth status -
若未登录:
现在进行登录操作。请在终端中输入以下命令,按回车键选择默认选项即可: gh auth login 浏览器会打开并提示输入一次性验证码。完成操作了吗?→ 使用提问(是/有问题)。回答“是”则重新执行AskUserQuestion验证。gh auth status -
成功后提示:"✅ GitHub登录完成:@username"
Linear MCP 분기
Linear MCP分支
Q. : "프로젝트 관리/이슈 트래킹에 Linear를 쓰시나요?"
AskUserQuestionY면:
-
에 다음 블록을 merge:
$MCP_PATHjson{ "mcpServers": { "linear-server": { "type": "http", "url": "https://mcp.linear.app/mcp" } } } -
병합 규칙: 파일이 없으면 새로 생성. 있으면로
jq추가 (기존 키 있으면 "덮어쓸까요?" 물어봄).mcpServers["linear-server"] -
안내:
✅ Linear 설정 추가 완료! Claude Code를 한 번 재시작해주세요 (Cmd+Q 후 다시 열기). 재시작 후 Linear에 처음 접근할 때 브라우저가 뜨면 Linear 계정으로 로그인해주세요. -
재시작 여부 확인 →로 검증.
ToolSearch "+linear"
问题. : "您是否使用Linear进行项目管理/问题追踪?"
AskUserQuestion如果回答是:
-
将以下代码块合并到中:
$MCP_PATHjson{ "mcpServers": { "linear-server": { "type": "http", "url": "https://mcp.linear.app/mcp" } } } -
合并规则:若文件不存在则新建;若已存在则使用添加
jq(若已有该键则询问“是否覆盖?”)。mcpServers["linear-server"] -
引导说明:
✅ Linear配置添加完成! 请重启Claude Code(按Cmd+Q后重新打开)。 重启后首次访问Linear时,浏览器会弹出登录窗口,请使用Linear账号登录。 -
确认是否重启 → 使用验证。
ToolSearch "+linear"
Slack MCP 분기 (가장 복잡)
Slack MCP分支(最复杂)
Q. : "팀 커뮤니케이션에 Slack을 쓰시나요?"
AskUserQuestionY면:
도입부:
Slack은 토큰 발급이 필요해서 5분 정도 걸려요.
브라우저에서 Slack 앱 하나 만들어주셔야 하는데, 제가 단계별로 안내할게요.
준비되셨으면 시작할게요!단계 1 — 앱 생성:
👉 https://api.slack.com/apps 열어주세요.
👉 'Create New App' → 'From scratch' 클릭
👉 App Name: `s-skills-mcp` (아무거나 OK)
👉 Pick a workspace: 회사 워크스페이스 선택
👉 'Create App' 클릭
생성 완료하셨어요?→ (네/안됨). 안됨이면 에러/스크린샷 요청.
AskUserQuestion단계 2 — 스코프 설정:
👉 왼쪽 메뉴에서 'OAuth & Permissions' 클릭
👉 페이지 하단의 'User Token Scopes' 섹션으로 스크롤
👉 'Add an OAuth Scope' 버튼을 눌러서 아래 스코프를 **하나씩 추가**해주세요
읽기 계열:
channels:history, channels:read, groups:history, groups:read,
im:history, im:read, mpim:history, mpim:read, search:read,
users:read, users:read.email, usergroups:read, files:read,
reactions:read, team:read, emoji:read, links:read
쓰기 계열:
chat:write, files:write, reactions:write, usergroups:write, links:write
(많아 보이지만 미리 넓게 잡아두면 나중에 스킬 추가돼도 재발급할 필요 없어요.)
다 추가하셨어요?→ (네/도움 필요). 도움 필요면 "어떤 스코프에서 막히셨어요?" 물어봄.
AskUserQuestion단계 3 — 워크스페이스에 설치:
👉 같은 페이지 맨 위로 스크롤해서 'Install to Workspace' 클릭
👉 브라우저 새 탭에서 권한 승인 화면 → 'Allow' 클릭
(주의: 워크스페이스에 따라 관리자 승인이 필요할 수 있어요.
"요청을 보냈습니다"가 뜨면 관리자한테 승인 요청이 간 거예요. 승인받으시면 계속 진행.)
설치 완료하셨어요?→ (네/관리자 승인 대기/에러).
AskUserQuestion단계 4 — 토큰 복사:
👉 설치 후 'OAuth & Permissions' 페이지로 돌아가면
👉 상단에 'User OAuth Token' 이라는 필드가 생겨있어요
👉 `xoxp-` 로 시작하는 긴 토큰을 복사해서 여기에 붙여넣어주세요
(이 토큰은 당신의 Slack 계정처럼 동작하니까 깃에 올리거나 공유하지 마세요.)→ 또는 사용자가 토큰 paste하게 유도. 받은 토큰이 로 시작하는지 validation.
AskUserQuestionxoxp-단계 5 — 주입 + 검증:
$MCP_PATHjson
{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "npx",
"args": ["-y", "slack-mcp-server"],
"env": {
"SLACK_MCP_XOXP_TOKEN": "xoxp-...사용자가_준_값...",
"SLACK_MCP_ADD_MESSAGE_TOOL": "true"
}
}
}
}안내:
✅ Slack 토큰 저장 완료!
Claude Code를 재시작해주세요. 재시작 후에 Slack MCP가 도구 목록에 나타나면 성공이에요.→ 재시작 확인 후 검증.
ToolSearch "+slack"흔한 실패:
- "403 missing_scope" → 누락된 스코프 재추가 후 토큰 재발급 필요
- 관리자 승인 대기 → 승인 받을 때까지 pause
- 토큰이 로 시작 → Bot token임,
xoxb-(User) 토큰을 써야 함xoxp-
问题. : "您是否使用Slack进行团队沟通?"
AskUserQuestion如果回答是:
开场说明:
Slack需要获取令牌,大约需要5分钟时间。
需要在浏览器中创建一个Slack应用,我会为您提供分步引导。
准备好的话就开始吧!步骤1 — 创建应用:
👉 打开https://api.slack.com/apps。
👉 点击'Create New App' → 'From scratch'
👉 应用名称: `s-skills-mcp`(任意名称均可)
👉 选择工作区: 选择公司工作区
👉 点击'Create App'
创建完成了吗?→ 使用提问(是/未完成)。若回答“未完成”则询问错误信息或请求截图。
AskUserQuestion步骤2 — 设置权限范围:
👉 在左侧菜单中点击'OAuth & Permissions'
👉 滚动到页面底部的'User Token Scopes'区域
👉 点击'Add an OAuth Scope'按钮,逐一添加以下权限范围
读取类权限:
channels:history, channels:read, groups:history, groups:read,
im:history, im:read, mpim:history, mpim:read, search:read,
users:read, users:read.email, usergroups:read, files:read,
reactions:read, team:read, emoji:read, links:read
写入类权限:
chat:write, files:write, reactions:write, usergroups:write, links:write
(看似很多,但提前设置完整权限后,后续添加技能时无需重新获取令牌。)
全部添加完成了吗?→ 使用提问(是/需要帮助)。若回答“需要帮助”则询问“在哪个权限范围遇到问题?”。
AskUserQuestion步骤3 — 安装到工作区:
👉 滚动到同一页面顶部,点击'Install to Workspace'
👉 在浏览器新标签页的权限确认页面中点击'Allow'
(注意:部分工作区可能需要管理员审批。
若显示“已发送请求”,则说明已向管理员提交审批请求,请等待审批通过后继续。)
安装完成了吗?→ 使用提问(是/等待管理员审批/有错误)。
AskUserQuestion步骤4 — 复制令牌:
👉 安装完成后返回'OAuth & Permissions'页面
👉 页面顶部会出现'User OAuth Token'字段
👉 复制以`xoxp-`开头的长令牌并粘贴到此处
(该令牌的作用等同于您的Slack账号,请不要上传到Git或分享给他人。)→ 使用或引导用户粘贴令牌。验证令牌是否以开头。
AskUserQuestionxoxp-步骤5 — 注入配置 + 验证:
将以下代码块合并到中:
$MCP_PATHjson
{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "npx",
"args": ["-y", "slack-mcp-server"],
"env": {
"SLACK_MCP_XOXP_TOKEN": "xoxp-...用户提供的令牌...",
"SLACK_MCP_ADD_MESSAGE_TOOL": "true"
}
}
}
}引导说明:
✅ Slack令牌已保存!
请重启Claude Code。重启后若Slack MCP出现在工具列表中则配置成功。→ 确认是否重启后使用验证。
ToolSearch "+slack"常见失败原因:
- "403 missing_scope" → 需要重新添加缺失的权限范围并重新获取令牌
- 等待管理员审批 → 暂停流程直至审批通过
- 令牌以开头 → 这是Bot令牌,需使用
xoxb-(用户)令牌xoxp-
Notion MCP 분기
Notion MCP分支
Q. : "문서 관리에 Notion을 쓰시나요?"
AskUserQuestionY면:
-
에 merge:
$MCP_PATHjson{ "mcpServers": { "notion": { "type": "http", "url": "https://mcp.notion.com/mcp" } } } -
안내:
✅ Notion 설정 추가 완료! Claude Code를 재시작해주세요. 재시작 후 Notion MCP에 처음 접근할 때 브라우저가 뜨면 Notion 계정으로 로그인하고 'Allow access' 눌러주세요. 어떤 페이지에 접근 권한을 줄지 선택하는 화면이 나옵니다. -
재시작 확인 →검증.
ToolSearch "+notion"
问题. : "您是否使用Notion进行文档管理?"
AskUserQuestion如果回答是:
-
将以下代码块合并到中:
$MCP_PATHjson{ "mcpServers": { "notion": { "type": "http", "url": "https://mcp.notion.com/mcp" } } } -
引导说明:
✅ Notion配置添加完成! 请重启Claude Code。 重启后首次访问Notion MCP时,浏览器会弹出登录窗口,请使用Notion账号登录并点击'Allow access'。之后会出现选择授权页面的窗口。 -
确认是否重启 → 使用验证。
ToolSearch "+notion"
Shiftee CLI 분기
Shiftee CLI分支
Q. : "근태/휴가 조회에 Shiftee를 쓰시나요?"
AskUserQuestionY면:
-
바이너리 확보 (4곳 탐색 → 없으면 GitHub에서 자동 다운로드):bash
SHIFTEE_BIN="" for p in \ "$HOME/.cache/s-skill-shiftee/shiftee" \ "$HOME/.claude/skills/s-skill-shiftee/shiftee" \ "./.claude/skills/s-skill-shiftee/shiftee" \ "$HOME/.agents/skills/s-skill-shiftee/shiftee"; do if [ -x "$p" ]; then SHIFTEE_BIN="$p"; break; fi done if [ -z "$SHIFTEE_BIN" ]; then mkdir -p "$HOME/.cache/s-skill-shiftee" SHIFTEE_BIN="$HOME/.cache/s-skill-shiftee/shiftee" curl -fsSL https://raw.githubusercontent.com/Salesmap-tech/s-skill/main/bin/shiftee \ -o "$SHIFTEE_BIN" && chmod +x "$SHIFTEE_BIN" fi까지 실패한 경우(오프라인/방화벽):curlshiftee 바이너리를 받지 못했어요. 네트워크를 확인하거나 아래 수동 명령을 써주세요: git clone https://github.com/Salesmap-tech/s-skill.git /tmp/s-skill mkdir -p ~/.cache/s-skill-shiftee cp /tmp/s-skill/bin/shiftee ~/.cache/s-skill-shiftee/shiftee chmod +x ~/.cache/s-skill-shiftee/shiftee→ 이 분기 스킵. -
로그인 상태 확인:bash
[ -f "$HOME/.config/shiftee-cli/config.json" ]이미 있으면 "✅ Shiftee 이미 로그인됨" 한 줄로 스킵. -
로그인 안내 (이메일/비밀번호가 아니라 브라우저 쿠키 토큰 2개를 붙여넣는 방식임에 주의):
Shiftee 로그인을 진행할게요. 아래 명령을 터미널에서 직접 실행해주세요: $SHIFTEE_BIN login 토큰은 브라우저에서 가져옵니다: 1. shiftee.io에 로그인된 상태에서 F12 → Application(또는 Storage) → Cookies → https://shiftee.io 2. `shiftee_account_auth_token` 값 복사해서 첫 번째 입력란에 붙여넣기 3. `shiftee_employee_auth_token` 값 복사해서 두 번째 입력란에 붙여넣기 토큰은 ~/.config/shiftee-cli/config.json (0600)에 저장됩니다. 완료하셨나요?→(네/문제있음). 네면AskUserQuestion로 검증.$SHIFTEE_BIN me -
검증 실패 시 흔한 원인:
- 토큰 복사할 때 앞뒤 공백·줄바꿈 포함 → 정확한 쿠키 Value 필드만 복사
- 토큰 만료 (expires_at 지남) → Shiftee 재로그인 후 쿠키 다시 복사
- Shiftee 로그아웃 상태의 쿠키 → shiftee.io에 먼저 로그인한 뒤 쿠키 조회
- Python 3 없음 → 으로 확인, 없으면
python3 --version안내brew install python
问题. : "您是否使用Shiftee进行考勤/休假查询?"
AskUserQuestion如果回答是:
- 获取二进制文件(搜索4个位置 → 若不存在则从GitHub自动下载):
bash
SHIFTEE_BIN="" for p in \ "$HOME/.cache/s-skill-shiftee/shiftee" \ "$HOME/.claude/skills/s-skill-shiftee/shiftee" \ "./.claude/skills/s-skill-shiftee/shiftee" \ "$HOME/.agents/skills/s-skill-shiftee/shiftee"; do if [ -x "$p" ]; then SHIFTEE_BIN="$p"; break; fi
done
if [ -z "$SHIFTEE_BIN" ]; then
mkdir -p "$HOME/.cache/s-skill-shiftee"
SHIFTEE_BIN="$HOME/.cache/s-skill-shiftee/shiftee"
curl -fsSL https://raw.githubusercontent.com/Salesmap-tech/s-skill/main/bin/shiftee
-o "$SHIFTEE_BIN" && chmod +x "$SHIFTEE_BIN" fi
-o "$SHIFTEE_BIN" && chmod +x "$SHIFTEE_BIN" fi
若`curl`执行失败(离线/防火墙):无法获取shiftee二进制文件。请检查网络连接或执行以下手动命令:
git clone https://github.com/Salesmap-tech/s-skill.git /tmp/s-skill
mkdir -p ~/.cache/s-skill-shiftee
cp /tmp/s-skill/bin/shiftee ~/.cache/s-skill-shiftee/shiftee
chmod +x ~/.cache/s-skill-shiftee/shiftee
→ 跳过该分支。
2. 检查登录状态:
```bash
[ -f "$HOME/.config/shiftee-cli/config.json" ]若已存在则直接用一句“✅ Shiftee已登录”跳过。
-
登录引导(注意:不是使用邮箱/密码,而是粘贴浏览器中的2个Cookie令牌):
现在进行Shiftee登录操作。请在终端中直接执行以下命令: $SHIFTEE_BIN login 令牌需从浏览器中获取: 1. 在已登录shiftee.io的状态下按F12 → 打开Application(或Storage)→ Cookies → https://shiftee.io 2. 复制`shiftee_account_auth_token`的值并粘贴到第一个输入框 3. 复制`shiftee_employee_auth_token`的值并粘贴到第二个输入框 令牌将保存到~/.config/shiftee-cli/config.json(权限为0600)。完成操作了吗?→ 使用提问(是/有问题)。回答“是”则执行AskUserQuestion验证。$SHIFTEE_BIN me -
验证失败的常见原因:
- 复制令牌时包含前后空格或换行符 → 仅复制Cookie的Value字段
- 令牌过期(已过expires_at时间)→ 重新登录Shiftee后再次复制Cookie
- 使用的是Shiftee未登录状态的Cookie → 先登录shiftee.io再查看Cookie
- 未安装Python 3 → 执行检查,若未安装则引导执行
python3 --versionbrew install python
4단계. 최종 검증 (live read-only 호출)
4阶段. 最终验证(只读实时调用)
모든 분기가 끝나면, 실제로 동작하는지 한 번씩 ping:
| 항목 | 검증 호출 |
|---|---|
| gh | |
| Linear | |
| Slack | |
| Notion | |
| Shiftee | |
하나라도 실패하면:
- 에러 메시지 출력
- 해당 분기의 "흔한 실패" 섹션 참고해서 구체적인 재시도 안내
所有分支完成后,逐一验证是否能正常运行:
| 项目 | 验证调用 |
|---|---|
| gh | |
| Linear | |
| Slack | |
| Notion | |
| Shiftee | |
若有任意一项失败:
- 输出错误信息
- 参考对应分支的“常见失败原因”提供具体的重试引导
5단계. 마무리 리포트
5阶段. 收尾报告
모두 통과하면:
🎉 s-skills 세팅 완료!
설정된 항목:
- ✅ GitHub CLI (@username)
- ✅ Linear MCP
- ✅ Slack MCP
- ✅ Notion MCP
- ✅ Shiftee CLI
이제 아래 스킬들을 쓸 수 있어요:
- /s-skill-linkedin-scrap [키워드] — 링크드인 포스트 수집
- /s-skill-work-log-scrap [기간] — 내가 한 일 요약
- /s-skill-slack [요청] — 슬랙 조회·작성
- /s-skill-shiftee [요청] — 근태·휴가 조회
뭐 도와드릴까요?일부만 설정한 경우:
🎉 부분 세팅 완료!
- ✅ GitHub CLI
- ✅ Linear MCP
- ⏭️ Slack MCP (스킵)
- ⏭️ Notion MCP (스킵)
- ⏭️ Shiftee (스킵)
나중에 추가하고 싶으시면 다시 /s-skill-setup 실행하시면 됩니다.全部通过验证时:
🎉 s-skills配置完成!
已配置的项目:
- ✅ GitHub CLI (@username)
- ✅ Linear MCP
- ✅ Slack MCP
- ✅ Notion MCP
- ✅ Shiftee CLI
现在您可以使用以下技能:
- /s-skill-linkedin-scrap [关键词] — 收集LinkedIn帖子
- /s-skill-work-log-scrap [时间段] — 汇总我的工作内容
- /s-skill-slack [请求] — 查询·发送Slack消息
- /s-skill-shiftee [请求] — 查询考勤·休假
有什么可以帮您的吗?仅完成部分配置时:
🎉 部分配置完成!
- ✅ GitHub CLI
- ✅ Linear MCP
- ⏭️ Slack MCP(已跳过)
- ⏭️ Notion MCP(已跳过)
- ⏭️ Shiftee(已跳过)
若后续需要添加配置,再次执行/s-skill-setup即可。.mcp.json
병합 규칙 (구현 노트)
.mcp.json.mcp.json
合并规则(实现说明)
.mcp.json사용할 스크립트 패턴 (Bash + jq):
bash
undefined使用的脚本模式(Bash + jq):
bash
undefined$MCP_PATH 없으면 생성
若$MCP_PATH不存在则创建
if [ ! -f "$MCP_PATH" ]; then
echo '{"mcpServers": {}}' > "$MCP_PATH"
fi
if [ ! -f "$MCP_PATH" ]; then
echo '{"mcpServers": {}}' > "$MCP_PATH"
fi
서버 추가 (기존 있으면 덮어쓸지 먼저 묻고)
添加服务器(若已存在则先询问是否覆盖)
EXISTING=$(jq ".mcpServers["$SERVER_NAME"] // empty" "$MCP_PATH")
if [ -n "$EXISTING" ]; then
AskUserQuestion: "기존 $SERVER_NAME 설정이 있네요. 덮어쓸까요?"
Y: 아래로 진행. N: skip.
:
fi
EXISTING=$(jq ".mcpServers["$SERVER_NAME"] // empty" "$MCP_PATH")
if [ -n "$EXISTING" ]; then
AskUserQuestion: "检测到已存在$SERVER_NAME配置。是否覆盖?"
是:继续执行。否:跳过。
:
fi
jq로 merge (in-place 아니니 temp 파일 쓰기)
使用jq合并(非原地修改,需使用临时文件)
jq --argjson new "$NEW_BLOCK" ".mcpServers["$SERVER_NAME"] = $new" "$MCP_PATH" > "$MCP_PATH.tmp"
&& mv "$MCP_PATH.tmp" "$MCP_PATH"
&& mv "$MCP_PATH.tmp" "$MCP_PATH"
- `jq`가 없으면 `brew install jq` 먼저 안내.
- 쓰기 전 원본을 `$MCP_PATH.bak`으로 백업.
---jq --argjson new "$NEW_BLOCK" ".mcpServers["$SERVER_NAME"] = $new" "$MCP_PATH" > "$MCP_PATH.tmp"
&& mv "$MCP_PATH.tmp" "$MCP_PATH"
&& mv "$MCP_PATH.tmp" "$MCP_PATH"
- 若未安装`jq`则先引导执行`brew install jq`。
- 修改前将原文件备份为`$MCP_PATH.bak`。
---일반 행동 규칙
通用行为规则
- 묻기 전에 체크. 이미 되어있으면 질문하지 않는다.
- 한 번에 한 질문. 은 2~4개 옵션짜리 하나씩.
AskUserQuestion - 실패 시 친절 모드로. 에러 메시지 그대로 보여주고, 해석해주고, 다음 액션 제안.
- 파괴적 작업 금지. 기존 을 덮어쓸 때는 반드시 백업 + 재확인.
.mcp.json - 비밀키 노출 주의. 토큰은 파일에 쓰되, 출력에는 절대 echo하지 않는다.
- "스킵" 옵션 항상 제공. 질문마다 "나중에 설정"이 가능해야 한다.
$ARGUMENTS
- 先检查再询问。已完成的配置不再询问。
- 一次一个问题。每次仅提供2~4个选项。
AskUserQuestion - 失败时提供贴心引导。展示错误信息并进行解释,同时提供下一步建议。
- 禁止破坏性操作。覆盖现有时必须先备份并再次确认。
.mcp.json - 注意保密密钥。令牌仅写入文件,绝不输出到终端。
- 始终提供“跳过”选项。每个问题都需允许“稍后配置”。
$ARGUMENTS