s-skill-setup

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

s-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_PATH
변수처럼 이후 모든 단계에서 사용.
bash
undefined
首先确定配置文件的存储位置。使用
AskUserQuestion
提问:
  • 选项A:仅当前项目(推荐) — 当前目录下的
    ./.mcp.json
    。团队使用该项目时可共享相同配置,且不会影响其他项目。
  • 选项B:全局
    ~/.claude/.mcp.json
    。可在任意项目中生效。
选择结果将作为
$MCP_PATH
变量在后续所有阶段中使用。
bash
undefined

프로젝트 선택 시 (기본 추천)

选择项目时(默认推荐)

MCP_PATH="./.mcp.json"
MCP_PATH="./.mcp.json"

전역 선택 시

选择全局时

MCP_PATH="$HOME/.claude/.mcp.json"
undefined
MCP_PATH="$HOME/.claude/.mcp.json"
undefined

2단계. 현재 상태 탐지

2阶段. 检测当前状态

질문하기 전에 상태를 훑어본다:
bash
undefined
提问前先检查当前状态:
bash
undefined

gh 설치/로그인

检查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"

그리고 현재 세션에서 MCP 도구가 로드돼 있는지 확인:
ToolSearch "+linear" → Linear MCP 도구 있는지 ToolSearch "+slack" → Slack MCP 도구 있는지 ToolSearch "+notion" → Notion MCP 도구 있는지

탐지 결과를 한눈에 보여준다:
📋 현재 상태 GitHub CLI : ✅ (jongbeomlee로 로그인됨) / ❌ (미설치 또는 로그인 안 됨) Linear MCP : ✅ 연결됨 / ❌ 미설정 Slack MCP : ✅ 연결됨 / ❌ 미설정 Notion MCP : ✅ 연결됨 / ❌ 미설정 Shiftee CLI : ✅ 로그인됨 / ⚠️ 번들은 있지만 로그인 안 됨 / ❌ 바이너리 없음 (자동 다운로드 시도 예정)
undefined
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"

同时检查当前会话中是否已加载MCP工具:
ToolSearch "+linear" → 检查是否存在Linear MCP工具 ToolSearch "+slack" → 检查是否存在Slack MCP工具 ToolSearch "+notion" → 检查是否存在Notion MCP工具

将检测结果汇总展示:
📋 当前状态 GitHub CLI : ✅ 已登录(用户名为jongbeomlee) / ❌ 未安装或未登录 Linear MCP : ✅ 已连接 / ❌ 未配置 Slack MCP : ✅ 已连接 / ❌ 未配置 Notion MCP : ✅ 已连接 / ❌ 未配置 Shiftee CLI : ✅ 已登录 / ⚠️ 存在程序包但未登录 / ❌ 无二进制文件(将尝试自动下载)
undefined

3단계. 인터뷰 + 설치 루프

3阶段. 询问 + 安装循环

상태가 ❌인 항목에 대해서만 "쓰시나요?" 묻고, ✅인 건 그냥 스킵.
순서: GitHub → Linear → Slack → Notion → Shiftee
각 항목에 대해 아래의 "설치 분기"를 수행.

仅对状态为❌的项询问“您是否使用该工具?”,状态为✅的项直接跳过。
顺序:GitHub → Linear → Slack → Notion → Shiftee
对每个项执行以下“安装分支”流程。

설치 분기

安装分支

GitHub CLI 분기

GitHub CLI分支

Q.
AskUserQuestion
: "코드/이슈 관리를 위해 GitHub를 쓰시나요?"
Y면:
  1. which gh
    체크
  2. 없으면:
    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
    재검증.
  3. gh auth status
    체크
  4. 로그인 안 돼있으면:
    이제 로그인할게요. 터미널에 이거 치시고, 기본값으로 엔터 엔터 쭉 누르시면 됩니다:
    
    gh auth login
    
    브라우저가 열리고 one-time code 입력하라고 나와요. 완료하셨나요?
    AskUserQuestion
    (네/문제있음). 네면
    gh auth status
    재검증.
  5. 성공: "✅ GitHub 로그인 완료: @username"

问题.
AskUserQuestion
: "您是否使用GitHub进行代码/问题管理?"
如果回答是:
  1. 执行
    which gh
    检查是否安装
  2. 若未安装:
    未检测到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
    验证。
  3. 执行
    gh auth status
    检查登录状态
  4. 若未登录:
    现在进行登录操作。请在终端中输入以下命令,按回车键选择默认选项即可:
    
    gh auth login
    
    浏览器会打开并提示输入一次性验证码。完成操作了吗?
    → 使用
    AskUserQuestion
    提问(是/有问题)。回答“是”则重新执行
    gh auth status
    验证。
  5. 成功后提示:"✅ GitHub登录完成:@username"

Linear MCP 분기

Linear MCP分支

Q.
AskUserQuestion
: "프로젝트 관리/이슈 트래킹에 Linear를 쓰시나요?"
Y면:
  1. $MCP_PATH
    에 다음 블록을 merge:
    json
    {
      "mcpServers": {
        "linear-server": {
          "type": "http",
          "url": "https://mcp.linear.app/mcp"
        }
      }
    }
  2. 병합 규칙: 파일이 없으면 새로 생성. 있으면
    jq
    mcpServers["linear-server"]
    추가 (기존 키 있으면 "덮어쓸까요?" 물어봄).
  3. 안내:
    ✅ Linear 설정 추가 완료!
    
    Claude Code를 한 번 재시작해주세요 (Cmd+Q 후 다시 열기).
    재시작 후 Linear에 처음 접근할 때 브라우저가 뜨면 Linear 계정으로 로그인해주세요.
  4. 재시작 여부 확인 →
    ToolSearch "+linear"
    로 검증.

问题.
AskUserQuestion
: "您是否使用Linear进行项目管理/问题追踪?"
如果回答是:
  1. 将以下代码块合并到
    $MCP_PATH
    中:
    json
    {
      "mcpServers": {
        "linear-server": {
          "type": "http",
          "url": "https://mcp.linear.app/mcp"
        }
      }
    }
  2. 合并规则:若文件不存在则新建;若已存在则使用
    jq
    添加
    mcpServers["linear-server"]
    (若已有该键则询问“是否覆盖?”)。
  3. 引导说明:
    ✅ Linear配置添加完成!
    
    请重启Claude Code(按Cmd+Q后重新打开)。
    重启后首次访问Linear时,浏览器会弹出登录窗口,请使用Linear账号登录。
  4. 确认是否重启 → 使用
    ToolSearch "+linear"
    验证。

Slack MCP 분기 (가장 복잡)

Slack MCP分支(最复杂)

Q.
AskUserQuestion
: "팀 커뮤니케이션에 Slack을 쓰시나요?"
Y면:
도입부:
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 계정처럼 동작하니까 깃에 올리거나 공유하지 마세요.)
AskUserQuestion
또는 사용자가 토큰 paste하게 유도. 받은 토큰이
xoxp-
로 시작하는지 validation.
단계 5 — 주입 + 검증:
$MCP_PATH
에 merge:
json
{
  "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
  • 토큰이
    xoxb-
    로 시작 → Bot token임,
    xoxp-
    (User) 토큰을 써야 함

问题.
AskUserQuestion
: "您是否使用Slack进行团队沟通?"
如果回答是:
开场说明:
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或分享给他人。)
→ 使用
AskUserQuestion
或引导用户粘贴令牌。验证令牌是否以
xoxp-
开头。
步骤5 — 注入配置 + 验证:
将以下代码块合并到
$MCP_PATH
中:
json
{
  "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" → 需要重新添加缺失的权限范围并重新获取令牌
  • 等待管理员审批 → 暂停流程直至审批通过
  • 令牌以
    xoxb-
    开头 → 这是Bot令牌,需使用
    xoxp-
    (用户)令牌

Notion MCP 분기

Notion MCP分支

Q.
AskUserQuestion
: "문서 관리에 Notion을 쓰시나요?"
Y면:
  1. $MCP_PATH
    에 merge:
    json
    {
      "mcpServers": {
        "notion": {
          "type": "http",
          "url": "https://mcp.notion.com/mcp"
        }
      }
    }
  2. 안내:
    ✅ Notion 설정 추가 완료!
    
    Claude Code를 재시작해주세요.
    재시작 후 Notion MCP에 처음 접근할 때 브라우저가 뜨면 Notion 계정으로 로그인하고
    'Allow access' 눌러주세요. 어떤 페이지에 접근 권한을 줄지 선택하는 화면이 나옵니다.
  3. 재시작 확인 →
    ToolSearch "+notion"
    검증.

问题.
AskUserQuestion
: "您是否使用Notion进行文档管理?"
如果回答是:
  1. 将以下代码块合并到
    $MCP_PATH
    中:
    json
    {
      "mcpServers": {
        "notion": {
          "type": "http",
          "url": "https://mcp.notion.com/mcp"
        }
      }
    }
  2. 引导说明:
    ✅ Notion配置添加完成!
    
    请重启Claude Code。
    重启后首次访问Notion MCP时,浏览器会弹出登录窗口,请使用Notion账号登录并点击'Allow access'。之后会出现选择授权页面的窗口。
  3. 确认是否重启 → 使用
    ToolSearch "+notion"
    验证。

Shiftee CLI 분기

Shiftee CLI分支

Q.
AskUserQuestion
: "근태/휴가 조회에 Shiftee를 쓰시나요?"
Y면:
  1. 바이너리 확보 (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
    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 이미 로그인됨" 한 줄로 스킵.
  3. 로그인 안내 (이메일/비밀번호가 아니라 브라우저 쿠키 토큰 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
    로 검증.
  4. 검증 실패 시 흔한 원인:
    • 토큰 복사할 때 앞뒤 공백·줄바꿈 포함 → 정확한 쿠키 Value 필드만 복사
    • 토큰 만료 (expires_at 지남) → Shiftee 재로그인 후 쿠키 다시 복사
    • Shiftee 로그아웃 상태의 쿠키 → shiftee.io에 먼저 로그인한 뒤 쿠키 조회
    • Python 3 없음 →
      python3 --version
      으로 확인, 없으면
      brew install python
      안내

问题.
AskUserQuestion
: "您是否使用Shiftee进行考勤/休假查询?"
如果回答是:
  1. 获取二进制文件(搜索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
若`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已登录”跳过。
  1. 登录引导(注意:不是使用邮箱/密码,而是粘贴浏览器中的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
    验证。
  2. 验证失败的常见原因:
    • 复制令牌时包含前后空格或换行符 → 仅复制Cookie的Value字段
    • 令牌过期(已过expires_at时间)→ 重新登录Shiftee后再次复制Cookie
    • 使用的是Shiftee未登录状态的Cookie → 先登录shiftee.io再查看Cookie
    • 未安装Python 3 → 执行
      python3 --version
      检查,若未安装则引导执行
      brew install python

4단계. 최종 검증 (live read-only 호출)

4阶段. 最终验证(只读实时调用)

모든 분기가 끝나면, 실제로 동작하는지 한 번씩 ping:
항목검증 호출
gh
gh api user --jq .login
Linear
mcp__linear-server__list_projects
(limit 1)
Slack
mcp__slack__channels_list
(limit 1)
Notion
mcp__notion__...search
(query "test")
Shiftee
$SHIFTEE_BIN me
(1단계에서 탐지한 경로)
하나라도 실패하면:
  • 에러 메시지 출력
  • 해당 분기의 "흔한 실패" 섹션 참고해서 구체적인 재시도 안내

所有分支完成后,逐一验证是否能正常运行:
项目验证调用
gh
gh api user --jq .login
Linear
mcp__linear-server__list_projects
(limit 1)
Slack
mcp__slack__channels_list
(limit 1)
Notion
mcp__notion__...search
(query "test")
Shiftee
$SHIFTEE_BIN me
(使用第1阶段检测到的路径)
若有任意一项失败:
  • 输出错误信息
  • 参考对应分支的“常见失败原因”提供具体的重试引导

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
合并规则(实现说明)

사용할 스크립트 패턴 (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"

- `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"

- 若未安装`jq`则先引导执行`brew install jq`。
- 修改前将原文件备份为`$MCP_PATH.bak`。

---

일반 행동 규칙

通用行为规则

  1. 묻기 전에 체크. 이미 되어있으면 질문하지 않는다.
  2. 한 번에 한 질문.
    AskUserQuestion
    은 2~4개 옵션짜리 하나씩.
  3. 실패 시 친절 모드로. 에러 메시지 그대로 보여주고, 해석해주고, 다음 액션 제안.
  4. 파괴적 작업 금지. 기존
    .mcp.json
    을 덮어쓸 때는 반드시 백업 + 재확인.
  5. 비밀키 노출 주의. 토큰은 파일에 쓰되, 출력에는 절대 echo하지 않는다.
  6. "스킵" 옵션 항상 제공. 질문마다 "나중에 설정"이 가능해야 한다.
$ARGUMENTS
  1. 先检查再询问。已完成的配置不再询问。
  2. 一次一个问题
    AskUserQuestion
    每次仅提供2~4个选项。
  3. 失败时提供贴心引导。展示错误信息并进行解释,同时提供下一步建议。
  4. 禁止破坏性操作。覆盖现有
    .mcp.json
    时必须先备份并再次确认。
  5. 注意保密密钥。令牌仅写入文件,绝不输出到终端。
  6. 始终提供“跳过”选项。每个问题都需允许“稍后配置”。
$ARGUMENTS