{"id":49013380,"url":"https://github.com/yamitzky/slack-admin-cli","last_synced_at":"2026-04-19T00:18:49.539Z","repository":{"id":349770031,"uuid":"1203804714","full_name":"yamitzky/slack-admin-cli","owner":"yamitzky","description":"sladm — Slack Admin CLI for humans and AI agents. Manage Enterprise Grid via admin.* APIs.","archived":false,"fork":false,"pushed_at":"2026-04-17T08:48:56.000Z","size":254,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-17T10:33:30.542Z","etag":null,"topics":["agent-skills","cli","slack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/yamitzky.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2026-04-07T11:55:36.000Z","updated_at":"2026-04-17T08:48:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yamitzky/slack-admin-cli","commit_stats":null,"previous_names":["yamitzky/slack-admin-cli"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/yamitzky/slack-admin-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamitzky%2Fslack-admin-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamitzky%2Fslack-admin-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamitzky%2Fslack-admin-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamitzky%2Fslack-admin-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yamitzky","download_url":"https://codeload.github.com/yamitzky/slack-admin-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamitzky%2Fslack-admin-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31989341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agent-skills","cli","slack"],"created_at":"2026-04-19T00:18:48.775Z","updated_at":"2026-04-19T00:18:49.523Z","avatar_url":"https://github.com/yamitzky.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sladm — Slack Admin CLI for humans and AI agents\n\nCLI \u0026 Agent Skill for managing Slack Enterprise Grid / Business+ workspaces via `admin.*` APIs.\n\n[日本語版 README](README_ja.md)\n\n## Features\n\n- **130 commands** covering admin.\\* and standard Slack APIs: teams, users, conversations, apps, invite-requests, workflows, functions, scim-users, scim-groups, auth-policy, barriers, emoji, roles, usergroups, and token management\n- **Agent Skill** — ships with a Claude Code / Codex skill so AI agents can drive Slack admin tasks using the CLI as a tool\n- **Bulk operations** — archive, delete, or move hundreds of channels at once with `conversations bulk-*`\n- **Output formats** — table (human), JSON (programmatic), TSV (pipe-friendly)\n- **Multi-org support** — switch between orgs with `--profile`, tokens stored in OS keychain\n\n\u003e **Note:** This CLI is in alpha. Use at your own risk. Only a subset of features have been verified.\n\n## Installation\n\nRequires [Bun](https://bun.sh) runtime:\n\n```bash\nnpm install -g sladm-cli\n# or\nbun install -g sladm-cli\n```\n\nOr run directly without installing:\n\n```bash\nnpx sladm-cli --help\n# or\nbunx sladm-cli --help\n```\n\n### Pre-built Binaries\n\nStandalone binaries (no runtime required) are available on the [Releases](https://github.com/yamitzky/slack-admin-cli/releases) page:\n\n| Platform | File |\n|----------|------|\n| macOS (Apple Silicon) | `sladm-darwin-arm64` |\n| macOS (Intel) | `sladm-darwin-x64` |\n| Linux (x64) | `sladm-linux-x64` |\n| Linux (arm64) | `sladm-linux-arm64` |\n| Windows (x64) | `sladm-windows-x64.exe` |\n\n```bash\n# Example: download and install on macOS (Apple Silicon)\ncurl -L https://github.com/yamitzky/slack-admin-cli/releases/latest/download/sladm-darwin-arm64 -o sladm\nchmod +x sladm\nsudo mv sladm /usr/local/bin/\n```\n\n## Agent Skill\n\nTo use this CLI as an agent skill in Claude Code, Cursor, OpenCode, etc.:\n\n```bash\nnpx skills add yamitzky/slack-admin-cli\n```\n\nWhen the skill is active, agents automatically use `sladm` commands for Slack admin operations, with per-command-group recipes providing API reference context.\n\n## Quick Start\n\n### 1. Create a Slack App\n\nCreate an app at [Slack API](https://api.slack.com/apps) and grant the required `admin.*` scopes (see [Required Scopes](#required-scopes)).\n\n### 2. Register Token\n\n```bash\nsladm token add default xoxp-your-token-here\n```\n\n### 3. Verify\n\n```bash\nsladm token status\nsladm teams list\n```\n\n## Usage Examples\n\n### Invite a user\n\n```bash\n# Invite as a full member\nsladm users invite --team-id T024XCDSF --email new-member@example.com \\\n  --channel-ids C01ABCD2EFG\n\n# Invite as a single-channel guest\nsladm users invite --team-id T024XCDSF --email guest@partner.com \\\n  --channel-ids C01ABCD2EFG --is-ultra-restricted true\n```\n\n### Deactivate a user\n\n```bash\n# Find the user\nsladm scim-users list --filter 'email eq \"leaving@example.com\"'\n\n# Deactivate their account (org-wide, via SCIM API)\nsladm scim-users deactivate --id U02T7QBTFGA\n```\n\n## Authentication\n\n### Profile Management\n\n```bash\nsladm token add production xoxp-prod-token    # Add profile\nsladm token add staging xoxp-staging-token     # Add another\nsladm token list                               # List profiles\nsladm token remove staging                     # Remove profile\n```\n\nTokens are stored in the OS keychain (macOS Keychain / Linux Secret Service). Falls back to `~/.config/sladm/.token-\u003cname\u003e` if keychain is unavailable.\n\n### Switching Profiles\n\n```bash\nsladm --profile production teams list          # Via flag\nSLADM_PROFILE=staging sladm teams list         # Via env var\n```\n\nPriority: `--profile` flag \u003e `SLADM_PROFILE` env var \u003e default profile\n\nIf you only have one profile, `--profile` is not needed.\n\n## Output\n\nAll data-returning commands support three output formats:\n\n```bash\nsladm teams list                 # Table (default)\nsladm teams list --json          # JSON\nsladm teams list --plain         # TSV (for scripting)\n```\n\n## Commands\n\n### Token\n\n| Command | Description |\n|---------|-------------|\n| `token add \u003cNAME\u003e \u003cTOKEN\u003e` | Add profile |\n| `token list` | List profiles |\n| `token remove \u003cNAME\u003e` | Remove profile |\n| `token status` | Check token status |\n\n### Teams\n\n| Command | Description |\n|---------|-------------|\n| `teams create` | Create team |\n| `teams list` | List teams |\n| `teams admins list` | List admins |\n| `teams owners list` | List owners |\n| `teams settings info` | Get team settings |\n| `teams settings set-name` | Set team name |\n| `teams settings set-icon` | Set team icon |\n| `teams settings set-description` | Set description |\n| `teams settings set-discoverability` | Set discoverability |\n| `teams settings set-default-channels` | Set default channels |\n\n### Users\n\n| Command | Description |\n|---------|-------------|\n| `users list` | List users |\n| `users invite` | Invite user |\n| `users assign` | Assign to team |\n| `users remove` | Remove from team |\n| `users set-admin` | Promote to admin |\n| `users set-owner` | Promote to owner |\n| `users set-regular` | Demote to regular user |\n| `users set-expiration` | Set guest account expiration |\n| `users unsupported-versions export` | Export users on unsupported Slack versions |\n| `users session reset` | Reset session |\n| `users session list` | List active sessions |\n| `users session invalidate` | Invalidate a session |\n| `users session reset-bulk` | Bulk reset sessions |\n| `users session get-settings` | Get session settings |\n| `users session set-settings` | Set session settings |\n| `users session clear-settings` | Clear session settings |\n\n### Conversations\n\n| Command | Description |\n|---------|-------------|\n| `conversations create` | Create channel |\n| `conversations delete` | Delete channel |\n| `conversations archive` | Archive channel |\n| `conversations unarchive` | Unarchive channel |\n| `conversations rename` | Rename channel |\n| `conversations search` | Search channels |\n| `conversations invite` | Invite user to channel |\n| `conversations convert-to-private` | Convert to private |\n| `conversations convert-to-public` | Convert to public |\n| `conversations get-prefs` | Get channel preferences |\n| `conversations set-prefs` | Set channel preferences |\n| `conversations get-custom-retention` | Get retention policy |\n| `conversations set-custom-retention` | Set retention policy |\n| `conversations remove-custom-retention` | Remove retention policy |\n| `conversations get-teams` | List associated teams |\n| `conversations set-teams` | Set team associations |\n| `conversations disconnect-shared` | Disconnect shared channel |\n| `conversations bulk-archive` | Bulk archive |\n| `conversations bulk-delete` | Bulk delete |\n| `conversations bulk-move` | Bulk move across teams |\n| `conversations lookup` | Lookup by criteria |\n| `conversations restrict-access add-group` | Add access group |\n| `conversations restrict-access list-groups` | List access groups |\n| `conversations restrict-access remove-group` | Remove access group |\n| `conversations ekm list-original-connected-channel-info` | EKM channel info |\n\n### SCIM Users\n\n| Command | Description |\n|---------|-------------|\n| `scim-users list` | List users (SCIM) |\n| `scim-users get` | Get user details (SCIM) |\n| `scim-users create` | Create user (SCIM) |\n| `scim-users update` | Update user attributes (SCIM) |\n| `scim-users deactivate` | Deactivate user (SCIM) |\n\n### SCIM Groups\n\n| Command | Description |\n|---------|-------------|\n| `scim-groups list` | List groups (SCIM) |\n| `scim-groups get` | Get group details (SCIM) |\n| `scim-groups create` | Create group (SCIM) |\n| `scim-groups update` | Update group (SCIM) |\n| `scim-groups delete` | Delete group (SCIM) |\n\n### Apps\n\n| Command | Description |\n|---------|-------------|\n| `apps approve` | Approve app |\n| `apps restrict` | Restrict app |\n| `apps clear-resolution` | Clear approval/restriction |\n| `apps uninstall` | Uninstall app |\n| `apps activities list` | Activity log |\n| `apps approved list` | List approved apps |\n| `apps restricted list` | List restricted apps |\n| `apps requests list` | List requests |\n| `apps requests cancel` | Cancel request |\n| `apps config lookup` | Lookup app config |\n| `apps config set` | Set app config |\n\n### Invite Requests\n\n| Command | Description |\n|---------|-------------|\n| `invite-requests approve` | Approve request |\n| `invite-requests deny` | Deny request |\n| `invite-requests list` | List pending requests |\n| `invite-requests approved list` | List approved requests |\n| `invite-requests denied list` | List denied requests |\n\n### Workflows\n\n| Command | Description |\n|---------|-------------|\n| `workflows search` | Search workflows |\n| `workflows unpublish` | Unpublish workflow |\n| `workflows permissions lookup` | Lookup permissions |\n| `workflows collaborators add` | Add collaborator |\n| `workflows collaborators remove` | Remove collaborator |\n\n### Functions\n\n| Command | Description |\n|---------|-------------|\n| `functions list` | List functions |\n| `functions permissions lookup` | Lookup permissions |\n| `functions permissions set` | Set permissions |\n\n### Auth Policy\n\n| Command | Description |\n|---------|-------------|\n| `auth-policy assign-entities` | Assign entities to an auth policy |\n| `auth-policy get-entities` | List entities assigned to a policy |\n| `auth-policy remove-entities` | Remove entities from a policy |\n\n### Barriers\n\n| Command | Description |\n|---------|-------------|\n| `barriers create` | Create an information barrier |\n| `barriers delete` | Delete a barrier |\n| `barriers list` | List barriers |\n| `barriers update` | Update a barrier |\n\n### Emoji\n\n| Command | Description |\n|---------|-------------|\n| `emoji add` | Add a custom emoji |\n| `emoji add-alias` | Add an emoji alias |\n| `emoji list` | List custom emoji |\n| `emoji remove` | Remove an emoji |\n| `emoji rename` | Rename an emoji |\n\n### Roles\n\n| Command | Description |\n|---------|-------------|\n| `roles add-assignments` | Add role assignments |\n| `roles list-assignments` | List role assignments |\n| `roles remove-assignments` | Remove role assignments |\n\n### Usergroups\n\n| Command | Description |\n|---------|-------------|\n| `usergroups add-channels` | Add default channels to a usergroup |\n| `usergroups add-teams` | Add teams to a usergroup |\n| `usergroups list-channels` | List default channels of a usergroup |\n| `usergroups remove-channels` | Remove default channels from a usergroup |\n| `usergroups list` | List usergroups |\n| `usergroups create` | Create a usergroup |\n| `usergroups update` | Update a usergroup |\n| `usergroups enable` | Enable a usergroup |\n| `usergroups disable` | Disable a usergroup |\n| `usergroups users list` | List members of a usergroup |\n| `usergroups users update` | Update members of a usergroup |\n\n### Users (non-admin)\n\n| Command | Description |\n|---------|-------------|\n| `users info` | Get user info (`users.info`) |\n| `users lookup-by-email` | Look up user by email (`users.lookupByEmail`) |\n| `users get-presence` | Get user presence (`users.getPresence`) |\n| `users set-presence` | Set user presence (`users.setPresence`) |\n| `users conversations` | List user's conversations (`users.conversations`) |\n| `users identity` | Get caller's identity (`users.identity`) |\n| `users profile get` | Get user profile (`users.profile.get`) |\n| `users profile set` | Set user profile fields (`users.profile.set`) |\n\n### Conversations (non-admin)\n\n| Command | Description |\n|---------|-------------|\n| `conversations list` | List channels (`conversations.list`) |\n| `conversations info` | Get channel info (`conversations.info`) |\n| `conversations members` | List channel members (`conversations.members`) |\n\n### Teams (non-admin)\n\n| Command | Description |\n|---------|-------------|\n| `teams info` | Get team info (`team.info`) |\n| `teams profile get` | Get team profile (`team.profile.get`) |\n| `teams billable-info` | Get billable info per user (`team.billableInfo`) |\n| `teams access-logs` | Get access logs (`team.accessLogs`) |\n| `teams integration-logs` | Get integration logs (`team.integrationLogs`) |\n\n## Required Scopes\n\n| Scope | Purpose |\n|-------|---------|\n| `admin.teams:read` | List teams, get settings |\n| `admin.teams:write` | Create teams, update settings |\n| `admin.users:read` | List users |\n| `admin.users:write` | Invite users, manage roles |\n| `admin.conversations:read` | Search channels, get settings |\n| `admin.conversations:write` | Channel operations, bulk actions |\n| `admin.apps:read` | List apps, get config |\n| `admin.apps:write` | Approve/restrict apps, set config |\n| `admin.invites:read` | List invite requests |\n| `admin.invites:write` | Approve/deny invite requests |\n| `admin.workflows:read` | List workflows and functions |\n| `admin.workflows:write` | Manage workflows, set permissions |\n| `admin` | SCIM user and group management |\n\n### Non-admin API Scopes\n\n| Scope | Purpose |\n|-------|---------|\n| `users:read` | User info, presence, conversations |\n| `users:read.email` | Look up user by email |\n| `users.profile:read` | Read user profile |\n| `users.profile:write` | Update user profile |\n| `channels:read` | List public channels, get channel info/members |\n| `groups:read` | Private channel info/members |\n| `mpim:read` | Multi-party DM info/members |\n| `im:read` | DM info/members |\n| `usergroups:read` | List and read usergroups |\n| `usergroups:write` | Create, update, enable, disable usergroups |\n| `team:read` | Team info and profile |\n| `admin` (user token) | `team.accessLogs` and `team.billableInfo` require admin privilege |\n\n## Development\n\n```bash\ngit clone https://github.com/mitsuki-ogasahara/slack-admin-cli.git\ncd slack-admin-cli\nbun install\n\nbun run dev -- \u003ccommand\u003e   # Run in development\nbun test                   # Run tests\nbun run lint               # Type check (tsc --noEmit)\nbun link                   # Link as global command\n```\n\n### Tech Stack\n\nTypeScript / Bun / [@slack/web-api](https://www.npmjs.com/package/@slack/web-api) / [@optique/core](https://www.npmjs.com/package/@optique/core)\n\nArchitecture details: see [CLAUDE.md](./CLAUDE.md)\n\n## Related Links\n\n- [Slack Admin API documentation](https://api.slack.com/admins)\n- [Slack API method list (`admin.*`)](https://api.slack.com/methods?filter=admin)\n- [Slack App management](https://api.slack.com/apps)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamitzky%2Fslack-admin-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyamitzky%2Fslack-admin-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamitzky%2Fslack-admin-cli/lists"}