Add canvas creation from Markdown#116
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
agent-slack canvas create, giving agents a first-class way to create Slack canvases from either a local Markdown file or an inline Markdown blob.--file <path>or--markdown <text>--title--channel <id-or-name>to add the canvas as a channel tab (and cover Slack free plans, wherechannel_idis required)canvas: { id, title?, channel_id? }Authentication paths
Live testing found that Slack's public
canvases.createAPI rejects importedxoxcbrowser credentials withnot_allowed_token_type. Canvas creation now selects the appropriate API automatically:canvases.createAPI with Markdowndocument_contentfiles.createCanvasMarkdown path--channelremains standard-token-only because the browser-auth path creates standalone canvases and cannot add a channel tabStandard tokens require Slack's
canvases:writescope.Usage
When multiple workspaces are configured, callers can use the standard
--workspace <url-or-unique-substring>selector. Channel names go through the same ambiguity checks and name-to-ID resolution used by the rest of the CLI.Validation and failure behavior
--file/--markdownis rejected before authenticationDocumentation
Kept all shipped agent guidance in sync with the implementation:
skills/agent-slack/SKILL.mdcommon commands and mutation safety guidancellms.txtfeature metadataTesting
Live acceptance testing in
stablygrouppassed for both supported sources using imported browser credentials:Automated verification:
bun test— 265 passed, 0 failedbun run typecheckbun run buildbun run build:npmbun run lint— 0 errors (10 existing warnings in unrelated files)bun run format:checkgit diff --check