Repository navigation
Conversation
Adds the 11 Slackbot skills Web API methods to the sync and async
clients: slackbot.skills.{create,delete,info,library.add,library.remove,
list,update} and admin.slackbot.skills.{list,publish,setAutoEnabled,
unpublish}. A shared Skill model backs the create, info, list and update
responses, and SkillMcpServer types the mcp_servers argument.
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1683 +/- ##
============================================
+ Coverage 73.75% 73.92% +0.16%
- Complexity 4679 4737 +58
============================================
Files 487 487
Lines 14669 14783 +114
Branches 1528 1534 +6
============================================
+ Hits 10819 10928 +109
- Misses 2939 2942 +3
- Partials 911 913 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. |
Orders the slackbot.skills methods case-insensitively, ahead of slackLists, to match the Node and Python SDKs. The generated rate_limit_tiers.json keeps its case-sensitive order. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
|
A note on placement: the |
This pull request adds the 11 Slackbot skills Web API methods to the sync and async clients.
slackbot.skills.create,.delete,.info,.library.add,.library.remove,.list,.update(skills:read/skills:write)admin.slackbot.skills.list,.publish,.setAutoEnabled,.unpublish(admin.skills:read/admin.skills:write)com.slack.api.model.slackbot.Skillmodel, shared by the create, info, list and update responses, plusSkillMcpServerfor themcp_serversargument.invalid_mcp_servers(create and update) andinvalid_usergroup_ids(setAutoEnabled), which the docs name in the errors table but don't show in an example.mcp_serversis sent as a JSON array of{service_type, app_id, server_id}objects. The reference pages only say "array". The API rejects plain strings ("must provide an object") and any other keys ("invalid additional property"). An empty list sends[], which clears the list on update.skill_ids,creator_idsandusergroup_idsare sent comma-joined, like other ID arrays in this SDK.JsonDataRecordernow writes a typed sample for emptymcp_serversarrays instead of"".Testing
The new
test_with_remote_apistests were run against an Enterprise Grid developer sandbox using an org-installed test app:slackbot_skills_TestusesSLACK_SDK_TEST_BOT_TOKEN(needscanvases:write,skills:read,skills:write). It creates a skill from instructions, then calls info, update (including an unknown MCP server), owned list, library remove and add, and delete. It also turns a new canvas into a skill and deletes it, and runs async list and info.AdminApi_slackbot_skills_TestusesSLACK_SDK_TEST_GRID_ORG_ADMIN_USER_TOKEN(needsadmin.skills:read,admin.skills:write,skills:write). It lists with each sort, then creates a skill, publishes it, runs a partial publish to checkfailed_skills, and auto-enables it. WithSLACK_SDK_TEST_GRID_IDP_USERGROUP_ID_2set it also auto-enables for a user group and checks an unknown group. Finally it setsno_one, unpublishes, and deletes the skill.setFailOnUnknownProperties(true), and every test skill is deleted at the end.Category (place an
xin each of the[ ])Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you agree to those rules.
🤖 Generated with Claude Code