Skip to content

feat: support developer sandboxes, free, and paid teams as install targets - #147

Merged
mwbrooks merged 8 commits into
mainfrom
mwbrooks-free-team-install-targets
Sep 10, 2026
Merged

mwbrooks merged 8 commits into
mainfrom
mwbrooks-free-team-install-targets

Conversation

@mwbrooks

@mwbrooks mwbrooks commented Sep 5, 2026

Copy link
Copy Markdown
Member

Summary

This pull request adds developer sandboxes, free, and paid teams as install
targets to get a developer without a Slack Developer Program account to a
running app, instead of treating a developer sandbox as the only option.

create-slack-app Step 3 was "Set Up a Developer Sandbox", written as a hard
requirement. The step is now "Choose Where to Install the App" and ranks
three targets:

  • Developer sandbox (recommended). The existing path, still first.
  • Free Team (second choice). A free workspace the developer creates, for
    starting now when program signup is the thing in the way.
  • Existing production workspace (last resort). Carries a warning that admin
    app approval usually gates the install, and that SLACK_AUTO_REQUEST_AAA is an
    environment variable rather than a CLI flag.

test-slack-app now accepts a Free Team as a safe place to test and
points at the new step when there is no safe target yet.

Preview

Creating a new app:

image

Testing an app:

image

Testing

  1. Logout of your Slack CLI auths
  2. Ask coding agent to create a new Slack app
  3. Confirm it recommends the 3 types of Slack Teams
  4. After creation, ask how to test the Slack app
  5. Confirm it checks your Slack Team type, discouraging Production Teams

Notes

  • N/A

Requirements

The Slack CLI logs into any workspace the developer belongs to, but
`create-slack-app` treated a developer sandbox as the only option, which
put Developer Program signup on the critical path for anyone trying the
plugin for the first time.

Step 3 is now "Choose Where to Install the App" and presents three
ranked targets: a developer sandbox (recommended), a Free Team (second
choice), or an existing production workspace (last resort). Each gets
its own sub-step with the constraint that actually bites: sandboxes need
a Developer Program account, Free Teams cap at 10 apps, and production
workspaces are usually gated by admin app approval, which is always on
for Enterprise Grid and switchable on elsewhere.

`test-slack-app` no longer implies a sandbox is the only safe place to
test. The warning it was carrying is right about a workspace with real
coworkers in it and wrong about a throwaway Free Team, so it now asks
which of the three the developer is pointed at rather than asking them
to confirm a sandbox.

Two smaller corrections while in here:

- `sandbox create` is not interactive when given `--name` and
  `--password`; the prompts are fallbacks for missing flags. The skill
  can run it directly instead of handing it to the developer. `sandbox
  list` needs `--team` for the same reason.
- Nothing this skill scaffolds can trip `free_team_not_allowed`, which
  is scoped to low-code workflow and function apps. Bolt apps install
  and run on the free plan.
@mwbrooks
mwbrooks requested a review from a team as a code owner September 5, 2026 00:41
@mwbrooks mwbrooks added the enhancement New feature or request label Sep 5, 2026
@changeset-bot

changeset-bot Bot commented Sep 5, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 31d217a

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

This PR includes changesets to release 1 package
Name Type
slack 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

@mwbrooks
mwbrooks marked this pull request as draft September 5, 2026 00:43
@mwbrooks mwbrooks self-assigned this Sep 5, 2026
@mwbrooks mwbrooks added the semver:minor Changes trigger a minor version bump label Sep 5, 2026
Matches the PR title. The changeset summary ships in the CHANGELOG, so
it carries the same framing as the title rather than the earlier
"ranked install targets" phrasing.
@mwbrooks mwbrooks changed the title feat: offer ranked install targets beyond developer sandboxes feat: support developer sandboxes, free, and paid teams as install targets Sep 5, 2026
The three targets are Step 3's content, and naming them in the
description bought nothing that Step 3 does not already do. Trigger cues
are unchanged.
"Throwaway workspace" is not Slack product language, and using it as an
umbrella term invented a category that covers a developer sandbox and a
Free Team. Name the two directly instead, and keep "safe" as the word
for the property being asked about, which Step 1 of test-slack-app
already used.
A developer sandbox is an Enterprise Grid org; a Free Team is a standalone
workspace. Anything org-level - org-wide installs, org-level app grants, the
admin.* methods, multi-workspace behaviour - is therefore untestable on a Free
Team, so Step 3 now says so in both the target table and 3b.
An empty `sandbox list` looks identical to having no Developer Program account,
so the agent reached the create bullet first, asked the developer for a sandbox
password, and only then hit the dead end. The no-account guidance now precedes
that bullet. The "wait for confirmation" gate also moves out from under 3c into
Step 3's intro, so it reads as gating all three targets rather than only the
production-workspace path. Reordering only, no new guidance.
SLACK_CMD sandbox list --team <team_id>
```

**If the developer has no Developer Program account**, `sandbox list` returns nothing useful, because sandboxes belong to the developer program account whose email matches the authenticated user rather than to the workspace. Point them at <https://api.slack.com/developer-program/join>, and offer the Free Team path in 3b as a way to start building now rather than waiting on signup.

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.

note: There is no guarantee the agent will wait while the developer signs up. I'll tackle this in a follow-up because there are many touch-points in this skill that have the same issue.

@mwbrooks
mwbrooks marked this pull request as ready for review September 9, 2026 19:54

@WilliamBergamin WilliamBergamin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this 💯

left a few comments, my only concern is around consistency in the skill 🤔

Comment thread docs/slack-skills-plugin.md Outdated
| `slack-messaging` | Compose well-formatted Slack messages using standard markdown. | _"Draft a release announcement message with a bulleted list of changes."_ |
| `slack-search` | Search Slack effectively to find messages, files, channels, and people. Requires a Slack MCP Server connection. | _"Find the channel where we discuss the platform roadmap."_ |
| `test-slack-app` | Run an existing Slack app in a [developer sandbox](/tools/developer-sandboxes) and get guided, source-specific steps to confirm it works in Slack. | _"Help me check that my Slack app actually works."_ |
| `test-slack-app` | Run an existing Slack app in a [developer sandbox](/tools/developer-sandboxes) or a Free Team, and get guided, source-specific steps to confirm it works in Slack. | _"Help me check that my Slack app actually works."_ |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What do you think about not specifying the team type at all 🪓

Suggested change
| `test-slack-app` | Run an existing Slack app in a [developer sandbox](/tools/developer-sandboxes) or a Free Team, and get guided, source-specific steps to confirm it works in Slack. | _"Help me check that my Slack app actually works."_ |
| `test-slack-app` | Run a Slack app and get guided, source-specific steps to confirm it works in Slack. | _"Help me check that my Slack app actually works."_ |

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.

Good catch @WilliamBergamin and agreed on the reason to generalize away from enumerating every Slack Team type.

I checked with Claude and Codex - I trimmed it slightly differently than your suggestion, because that row is the only link to /tools/developer-sandboxes on the whole page and I didn't want to drop the "not your real workspace" signal entirely - the safety gating is the opinionated part of this skill:

| `test-slack-app` | Run an existing Slack app somewhere safe, like a [developer sandbox](/tools/developer-sandboxes), and get guided, source-specific steps to confirm it works in Slack. | _"Help me check that my Slack app actually works."_ |

"like a" makes the sandbox an example rather than a closed list, so Free Team and production don't need naming and the row stops being a maintenance point.

Commit d28b2cb implements this tweak.

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.

Added you as a co-author to this change @WilliamBergamin: commit 31d217a

---
name: create-slack-app
description: 'Use when a developer wants to create, scaffold, or bootstrap a new Slack app or agent from scratch with the Slack CLI. Covers prerequisites, sandbox setup, authentication, and creating + running a project from a Bolt (JS or Python) template locally. Trigger on "create a Slack app", "new Bolt app", "start a Slack agent".'
description: 'Use when a developer wants to create, scaffold, or bootstrap a new Slack app or agent from scratch with the Slack CLI. Covers prerequisites, authentication, choosing a workspace to install into, and creating + running a project from a Bolt (JS or Python) template locally. Trigger on "create a Slack app", "new Bolt app", "start a Slack agent".'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Praise 🚀

The approach is simple and safe:

1. **Run the app in a developer sandbox:** a free, throwaway Slack org for building and testing, never a workspace with real coworkers in it.
1. **Run the app in a developer sandbox or a Free Team:** a sandbox for preference, or a Free Team the developer created for this. Never a workspace with real coworkers in it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do we want to remove?

Never a workspace with real coworkers in it.

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.

@WilliamBergamin Good idea! I did look at relaxing it - but it cascades further than this PR should go. "Never a workspace with real coworkers in it" isn't only in that summary bullet: it's also in the skill's description frontmatter, Step 1 heading, etc.

So I'd rather leave it for now and do it deliberately in a follow-up.

mwbrooks and others added 2 commits September 10, 2026 12:20
The wording in d28b2cb came from William's review suggestion. That commit
was already pushed, so this carries the co-author trailer rather than
amending it.

Co-authored-by: William Bergamin <wbergamin@salesforce.com>
@mwbrooks

Copy link
Copy Markdown
Member Author

@WilliamBergamin Thanks for the reviews! Your suggestions are solid, but I found that they cascade across the skills and cause additional changes. We may want to think about a slack-sandbox skill to capture the various types of Slack Teams, so that we DRY up the other areas. 🤔

@mwbrooks
mwbrooks merged commit 8044341 into main Sep 10, 2026
7 checks passed
@mwbrooks
mwbrooks deleted the mwbrooks-free-team-install-targets branch September 10, 2026 21:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request semver:minor Changes trigger a minor version bump

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants