onboard
Set up internbot for development. Use when setting up the project for the first time.
SKILL.md.claude/skills/onboard/SKILL.md
GitHubInternbot Developer Setup
Prerequisites
- Node.js >= 20
- A Slack workspace where you can create apps
Steps
1. Create a Slack App
- Go to https://api.slack.com/apps → Create New App → From scratch
- Name it (e.g., "internbot"), select your workspace
- Enable Socket Mode under Settings → Socket Mode → toggle on
- Generate an app-level token with
connections:writescope → save asSLACK_APP_TOKEN
- Generate an app-level token with
- Under OAuth & Permissions, add these Bot Token Scopes:
app_mentions:readchannels:historychannels:readchat:writegroups:historygroups:readim:historyim:readim:writempim:historympim:readusers:readreactions:write
- Under Event Subscriptions → toggle on → Subscribe to bot events:
message.channelsmessage.groupsmessage.immessage.mpimapp_mention
- Install the app to your workspace → copy the Bot User OAuth Token as
SLACK_BOT_TOKEN
2. Configure Environment
cp .env.example .env
# Edit .env with your tokens:
# SLACK_BOT_TOKEN=xoxb-...
# SLACK_APP_TOKEN=xapp-...
3. Set Up Reports Repository
The bot publishes LaTeX reports to a separate GitHub repo. Set it up as a subdirectory:
mkdir reports-repo && cd reports-repo
git init
mkdir reports
echo '[]' > papers-log.json
git add . && git commit -m "init reports repo"
Create a GitHub repo for reports, then configure the remote with a dedicated account (optional):
git remote add origin https://<github-user>@github.com/<github-user>/<repo-name>.git
git config user.name "<bot-name>"
git config user.email "<github-user>@users.noreply.github.com"
git push -u origin main
If using a dedicated GitHub account, store its PAT locally:
echo "https://<github-user>:<PAT>@github.com" > .git/credentials
git config credential.helper 'store --file=.git/credentials'
4. Install & Run
npm install
npm run dev # Development with hot reload
npm run build # Compile TypeScript
npm start # Run compiled version
5. Test
- DM the bot "hi" → should get a simple reply
- In a channel, @mention the bot with a question → should get a threaded response
- Ask it to search for papers → should use arxiv tools