Skip to content

feat: add slackbot.skills and admin.slackbot.skills methods - #2830

Closed
zimeg wants to merge 4 commits into
mainfrom
zimeg-feat-slackbot-skills
Closed

zimeg wants to merge 4 commits into
mainfrom
zimeg-feat-slackbot-skills

Conversation

@zimeg

@zimeg zimeg commented Nov 11, 2026

Copy link
Copy Markdown
Member

Summary

This pull request adds the Slackbot skills Web API methods to @slack/web-api.

Testing

Every method was called through these bindings with an org-installed user token (skills:read, skills:write, admin.skills:read, admin.skills:write) in an Enterprise developer sandbox. To repeat it:

  1. Call client.slackbot.skills.create({ display_name, instructions, category, description, example_prompt }) and save skill.id.
  2. Call info, then update (including category: '' and mcp_servers: [] to clear them), then library.remove and library.add with that ID.
  3. Call client.slackbot.skills.list({ filter: 'owned' }) and confirm the skill appears. New skills can take a few seconds to show up in lists.
  4. With an org admin token, call admin.slackbot.skills.list, publish, setAutoEnabled with everyone and then no_one, and unpublish. Passing an unknown ID to publish returns failed_for_some_skills with failed_skills.
  5. Iterate client.paginate('admin.slackbot.skills.list', { limit: 1 }) and confirm it follows next_cursor across empty pages.
  6. Create a second skill and call delete on it.

Not exercised live: create from a real canvas_id (only the canvas_not_found error), a successful mcp_servers declaration (no MCP-enabled app was available, only mcp_server_not_found), setAutoEnabled with a real user group, and a builtin: skill ID.

Requirements

🤖 Generated with Claude Code

Adds the Slackbot skills Web API methods to @slack/web-api:
admin.slackbot.skills.{list,publish,setAutoEnabled,unpublish} and
slackbot.skills.{create,delete,info,library.add,library.remove,list,update}.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@zimeg zimeg added this to the web-api@next milestone Nov 11, 2026
@zimeg zimeg added semver:minor enhancement M-T: A feature request for new functionality area:typescript issues that specifically impact using the package from typescript projects pkg:web-api applies to `@slack/web-api` labels Nov 11, 2026
@zimeg zimeg self-assigned this Nov 11, 2026
@changeset-bot

changeset-bot Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 00ef370

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@slack/web-api Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@zimeg zimeg left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📣 fast comments of implementation but seeming solid. .please extend these to other arguments and such

…arrays

Inlines the skill ID, category, MCP server, and canvas or instructions
helper types into each argument, drops the SlackbotSkillCategory and
SlackbotSkillMCPServer exports, and types skill_ids and usergroup_ids as
string[] instead of non-empty tuples.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@codecov

codecov Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.31%. Comparing base (5e8d3f0) to head (00ef370).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2830      +/-   ##
==========================================
+ Coverage   94.30%   94.31%   +0.01%     
==========================================
  Files          67       67              
  Lines       10671    10780     +109     
  Branches      673      676       +3     
==========================================
+ Hits        10063    10167     +104     
- Misses        580      584       +4     
- Partials       28       29       +1     
Flag Coverage Δ
cli-hooks 94.23% <100.00%> (+0.06%) ⬆️
cli-test 94.23% <100.00%> (+0.06%) ⬆️
logger 94.23% <100.00%> (+0.06%) ⬆️
oauth 94.23% <100.00%> (+0.06%) ⬆️
socket-mode 94.23% <100.00%> (+0.06%) ⬆️
web-api 94.23% <100.00%> (+0.06%) ⬆️
webhook 94.23% <100.00%> (+0.06%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@zimeg

zimeg commented Nov 12, 2026 •

Copy link
Copy Markdown
Member Author

A note on placement: the slackbot methods come before slackLists in methods.ts, its type imports, and the types/request/index.ts exports, because method names are sorted case-insensitively. slackbot (b) sorts before slackLists (l). This is the order Biome's organizeImports check enforces for the imports and exports, and the Python and Java SDKs use the same order for these methods.

The generated types/response/index.ts is the exception, listing SlackLists* before Slackbot*. scripts/code_generator.rb writes it in byte order and it isn't hand-edited.

Reverts 080f82d. All three SDKs follow Biome's case-insensitive order.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@zimeg

zimeg commented Nov 12, 2026

Copy link
Copy Markdown
Member Author

Closing this in favor of a stack that adds one method per pull request, in the order of a skill's life from creation to deletion: #2831 slackbot.skills.create, #2832 slackbot.skills.info, #2833 slackbot.skills.update, #2834 slackbot.skills.list, #2835 slackbot.skills.library.add, #2836 slackbot.skills.library.remove, #2837 admin.slackbot.skills.list, #2838 admin.slackbot.skills.publish, #2839 admin.slackbot.skills.setAutoEnabled, #2840 admin.slackbot.skills.unpublish, and #2841 slackbot.skills.delete. Together they match this pull request, with arguments now in the reference's order and mcp_servers keys in the order service_type, app_id, server_id. The branch is kept.

@zimeg zimeg closed this Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:typescript issues that specifically impact using the package from typescript projects enhancement M-T: A feature request for new functionality pkg:web-api applies to `@slack/web-api` semver:minor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant