Slack 연결하기
뭘 하는 앱인가
섹션 제목: “뭘 하는 앱인가”Slack 스레드에서 봇을 멘션하면 그 스레드를 읽고 뭘 원하는지 파악해서 같은 스레드에 답으로 남깁니다. 새 카드를 만들 수 있고, 이미 있는 카드에 노트를 붙일 수도 있습니다. 카드를 담을 새 영역을 만드는 것도 됩니다. 스레드만 봐서는 뭘 원하는지 분명하지 않으면 넘겨짚지 않고 되묻습니다. 채널에 tuckit 링크를 붙여넣으면 Linear나 GitHub 링크처럼 미리보기로 펼쳐집니다. 하는 일은 이게 전부입니다: 멘션하거나 링크를 붙여넣는 순간부터 모든 게 시작됩니다.
Slack 앱 만들기
섹션 제목: “Slack 앱 만들기”api.slack.com/apps → Create New App →
From an app manifest에서 워크스페이스를 고르고 아래 내용을 붙여넣으세요.
<YOUR-TUCKIT-DOMAIN>을 본인 tuckit 인스턴스가 붙는 도메인으로 바꾸면
됩니다. 고칠 건 이것 하나뿐입니다.
display_information: name: tuckit description: Turn a Slack thread into board state.features: bot_user: display_name: Tuckit always_online: true slash_commands: - command: /tuckit url: https://<YOUR-TUCKIT-DOMAIN>/slack/command description: Connect your tuckit account usage_hint: connect unfurl_domains: - <YOUR-TUCKIT-DOMAIN>oauth_config: redirect_urls: - https://<YOUR-TUCKIT-DOMAIN>/slack/oauth/callback scopes: bot: - app_mentions:read - chat:write - channels:history - groups:history - links:read - links:write - commandssettings: event_subscriptions: request_url: https://<YOUR-TUCKIT-DOMAIN>/slack/events bot_events: - app_mention - link_shared org_deploy_enabled: false socket_mode_enabled: false이 화면에서 워크스페이스에 바로 설치하지는 마세요. 그건 나중에 tuckit 안에서 하는 단계입니다. 그래야 OAuth 인증이 Slack에서 멈추지 않고 tuckit 자신의 콜백까지 도달합니다. 지금은 Basic Information을 열어서 Client ID, Client Secret, Signing Secret 세 개만 복사해두세요. 다음 단계에서 씁니다.
tuckit에 값 넣기
섹션 제목: “tuckit에 값 넣기”tuckit 인스턴스에 아래 값을 설정하고 재시작하세요.
SLACK_CLIENT_ID=...SLACK_CLIENT_SECRET=...SLACK_SIGNING_SECRET=...설정 세 개가 다 갖춰지기 전까지 Slack 연동은 꺼진 채로 있습니다. Settings 항목을 포함해 Slack 관련 경로가 하나도 붙지 않고, 그래서 어중간하게 켜진 상태도 없습니다.
두 워크스페이스 잇기
섹션 제목: “두 워크스페이스 잇기”이 페이지에는 워크스페이스가 두 개 나옵니다. Slack 워크스페이스는 팀이 대화하는 곳이고, tuckit 워크스페이스는 보드입니다. 이 단계는 그 둘을 묶습니다.
tuckit 워크스페이스 관리자로 Settings → Slack에 들어가서 Connect to Slack을 누르세요. 보드를 운영하는 사람이 한 번만 하면 됩니다.
본인 계정 연결하기
섹션 제목: “본인 계정 연결하기”연결하기 전에 봇을 멘션하면 답 대신 “Connect your tuckit account”라는 일시적인 메시지만 옵니다. Slack 프로필로 신원을 추측하는 일은 없습니다. 버튼을 누르고 tuckit에 로그인하면 (이미 로그인돼 있다면 바로) 그때부터 봇이 만드는 카드에는 본인 이름이 남습니다.
멘션하기
섹션 제목: “멘션하기”@tuckit file this as a card in the billing area스레드를 읽고 할 수 있는 걸 처리한 다음, 멘션한 그 스레드 안에서 자기 메시지를 고쳐써서 결과를 보여줍니다. 답에는 새로 쓴 카드가 하나씩 적히고, 그 카드로 바로 가는 링크가 걸립니다.
이미 있는 카드에 덧붙이는 것도 똑같이, 카드를 지목해서 시키면 됩니다.
@tuckit add what we decided here to TP-118멘션으로 할 수 있는 일은 새 카드와 노트와 영역을 쓰는 것까지입니다. 카드를 shipped로 넘기는 건 tuckit에서, 그 카드에서 직접 내리는 결정으로 남습니다.
tuckit이 요청하지 않는 것
섹션 제목: “tuckit이 요청하지 않는 것”매니페스트를 직접 손댈 일이 없더라도 이 목록은 읽어볼 가치가 있습니다. “이 앱이 뭘 볼 수 있는가”에 대한 진짜 답이기 때문입니다.
users:read와users:read.email: tuckit은 Slack 프로필을 아예 읽지 않습니다. 카드에 남는 이름은 본인이 직접 연결한 tuckit 계정의 이름이고, 연결은 로그인한 채로 버튼을 누를 때 일어납니다. 이메일 주소를 맞춰서 이어붙이는 일은 없습니다. Slack의 이메일 필드는 워크스페이스가 채우는 값이고 Slack이 따로 검증하지 않는, 워크스페이스 관리자가 원하는 대로 써넣을 수 있는 값입니다. 이걸 신원 증거로 믿으면 관리자가 남의 이름으로 보드에 쓸 수 있게 됩니다.message.channels/message.im: 이 권한은 봇에게 말을 걸었는지와 상관없이 봇이 있는 모든 채널의 모든 메시지를 서버로 밀어보냅니다. tuckit은 누군가 실제로 멘션한 그 순간에만conversations.replies로 그 스레드 하나를 당겨서 읽습니다.reactions:write: 봇은 Slack에서 이모지 반응을 달지 않습니다.
이 권한들을 빼서 생기는 눈에 보이는 결과가 하나 있습니다. 봇은 DM에서
아무것도 하지 않습니다. im:history 권한이 없어서 Slack이 direct
message의 내용을 봇에게 아예 전달하지 않고, 그래서 DM을 보내면 그대로
조용합니다.
모델 키는 별도의 스위치입니다
섹션 제목: “모델 키는 별도의 스위치입니다”ANTHROPIC_API_KEY는 위 세 가지 설정과 무관하게 선택으로 켜는 값입니다.
# 선택 사항입니다. 없어도 설치와 링크 미리보기는 동작합니다.# 안 되는 건 @mention뿐입니다.ANTHROPIC_API_KEY=...이 값이 없어도 워크스페이스 연결, 본인 계정 연결, 링크 미리보기는 그대로 됩니다. 없어지는 건 스레드를 읽어서 할 일로 바꾸는 부분입니다. 키가 없으면 멘션해도 아무 일도 일어나지 않습니다.

