{"id":38171461,"url":"https://github.com/ericboehs/slk","last_synced_at":"2026-03-02T04:11:26.903Z","repository":{"id":332810635,"uuid":"1116542628","full_name":"ericboehs/slk","owner":"ericboehs","description":"A command-line interface for Slack. Manage your status, presence, DND, read messages, and more from the terminal.","archived":false,"fork":false,"pushed_at":"2026-02-25T20:09:49.000Z","size":537,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-25T21:44:49.347Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericboehs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-15T03:08:49.000Z","updated_at":"2026-02-25T20:09:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ericboehs/slk","commit_stats":null,"previous_names":["ericboehs/slk"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ericboehs/slk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fslk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fslk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fslk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fslk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericboehs","download_url":"https://codeload.github.com/ericboehs/slk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericboehs%2Fslk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29991298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T23:27:16.594Z","updated_at":"2026-03-02T04:11:26.898Z","avatar_url":"https://github.com/ericboehs.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# slk - Slack CLI\n\nA command-line interface for Slack. Manage your status, presence, DND, read messages, and more from the terminal.\n\n**Pure Ruby. No dependencies.**\n\n## Installation\n\n```bash\ngem install slk\n```\n\nRequires Ruby 3.2+.\n\n### Windows\n\n```powershell\n# Install Ruby (if needed) via RubyInstaller or Chocolatey\nwinget install RubyInstallerTeam.Ruby.3.3\n# or: choco install ruby\n\n# Install slk\ngem install slk\n\n# (Optional) Install age for encrypted token storage\nchoco install age.portable\n```\n\nConfiguration is stored in `%APPDATA%\\slk\\` on Windows.\n\n## Setup\n\nRun the setup wizard:\n\n```bash\nslk config setup\n```\n\nYou'll need a Slack token. Get one from:\n- **User token (xoxp-)**: https://api.slack.com/apps → OAuth \u0026 Permissions\n- **Bot token (xoxb-)**: Create a Slack App with bot scopes\n- **Session token (xoxc-)**: Extract from browser (requires cookie too)\n\n## Usage\n\n### Status\n\n```bash\nslk status                              # Show current status\nslk status \"Working from home\" :house:  # Set status with emoji\nslk status \"In a meeting\" :calendar: 1h # Set status for 1 hour\nslk status clear                        # Clear status\n```\n\n### Presence\n\n```bash\nslk presence              # Show current presence\nslk presence away         # Set to away\nslk presence active       # Set to active\n```\n\n### Do Not Disturb\n\n```bash\nslk dnd                   # Show DND status\nslk dnd 1h                # Enable DND for 1 hour\nslk dnd on 30m            # Enable DND for 30 minutes\nslk dnd off               # Disable DND\n```\n\n### Messages\n\n```bash\nslk messages general            # Read channel messages\nslk messages @username          # Read DM with user\nslk messages general -n 50      # Show 50 messages\nslk messages general --json     # Output as JSON\n```\n\n### Activity\n\n```bash\nslk activity              # Show recent activity feed\nslk activity -n 50        # Show 50 items\nslk activity -m           # Show message previews\nslk activity --reactions  # Filter: reactions only\nslk activity --mentions   # Filter: mentions only\nslk activity --threads    # Filter: thread replies only\n```\n\nDisplays your recent activity feed including:\n- Reactions to your messages\n- Mentions (@user, @channel, @here, etc.)\n- Thread replies\n- Bot messages (reminders, notifications)\n\nUse `--show-messages` (or `-m`) to preview the actual message content for each activity.\n\n### Unread\n\n```bash\nslk unread                # Show unread counts\nslk unread clear          # Mark all as read\nslk unread clear general  # Mark channel as read\n```\n\n### Catchup (Interactive Triage)\n\n```bash\nslk catchup               # Interactively review unread channels\nslk catchup --batch       # Non-interactive, mark all as read\n```\n\n### Presets\n\n```bash\nslk preset list           # List all presets\nslk preset meeting        # Apply preset\nslk preset add            # Add new preset (interactive)\nslk meeting               # Shortcut: use preset name as command\n```\n\nBuilt-in presets: `meeting`, `lunch`, `focus`, `brb`, `clear`\n\n### Workspaces\n\n```bash\nslk workspaces list       # List configured workspaces\nslk workspaces add        # Add a workspace\nslk workspaces primary    # Show/set primary workspace\n```\n\n### Cache Management\n\n```bash\nslk cache status          # Show cache status\nslk cache populate        # Pre-populate user cache\nslk cache clear           # Clear all caches\n```\n\n### Global Options\n\n```bash\n-w, --workspace NAME   # Use specific workspace\n--all                  # Apply to all workspaces\n-v, --verbose          # Show debug output\n-q, --quiet            # Suppress output\n--json                 # Output as JSON (where supported)\n```\n\n## Multi-Workspace\n\nConfigure multiple workspaces and switch between them:\n\n```bash\nslk workspaces add                    # Add another workspace\nslk status -w work                    # Check status on 'work' workspace\nslk status \"OOO\" --all                # Set status on all workspaces\n```\n\n## Token Encryption\n\nOptionally encrypt your tokens with [age](https://github.com/FiloSottile/age) using an SSH key:\n\n```bash\nslk config set ssh_key ~/.ssh/id_ed25519\n```\n\nTokens will be stored encrypted in `~/.config/slk/tokens.age`.\n\n## Configuration\n\nFiles are stored in XDG-compliant locations (or `%APPDATA%`/`%LOCALAPPDATA%` on Windows):\n\n- **Config**: `~/.config/slk/` (Windows: `%APPDATA%\\slk\\`)\n  - `config.json` - Settings\n  - `tokens.json` or `tokens.age` - Workspace tokens\n  - `presets.json` - Status presets\n- **Cache**: `~/.cache/slk/` (Windows: `%LOCALAPPDATA%\\slk\\`)\n  - `users-{workspace}.json` - User cache\n  - `channels-{workspace}.json` - Channel cache\n\n## Development\n\n```bash\n# Clone the repo\ngit clone https://github.com/ericboehs/slk.git\ncd slk\n\n# Run from source\nruby -Ilib bin/slk --version\n\n# Run tests\nrake test\n```\n\n### Releasing\n\n1. Update version in `lib/slk/version.rb`\n2. Update `CHANGELOG.md` (move Unreleased to new version, add date)\n3. Commit: `git commit -am \"Release vX.Y.Z\"`\n4. Release to RubyGems: `rake release`\n5. Create GitHub Release: `gh release create vX.Y.Z --generate-notes`\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericboehs%2Fslk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericboehs%2Fslk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericboehs%2Fslk/lists"}