Skip to content

feat(experiment): prompt create shows more example templates and agents#402

Open
zimeg wants to merge 2 commits intozimeg-revert-multistep-createfrom
zimeg-feat-templates-experiment
Open

feat(experiment): prompt create shows more example templates and agents#402
zimeg wants to merge 2 commits intozimeg-revert-multistep-createfrom
zimeg-feat-templates-experiment

Conversation

@zimeg
Copy link
Member

@zimeg zimeg commented Mar 16, 2026

Changelog

N/A - Some updates to the experiments page though! 🧪 ✨

Summary

This PR prompts create to show more starter templates, list "typescript" projects, and show agentic examples. This includes:

  • Enterprise Search templates
  • Blank templates
  • MCP server template
  • Casey the IT helpdesk agent 👾

We include this behind a new "templates" experiment until templates have matching framework support and examples are made public.

Preview

📸 Starter templates:

templates

🤖 Agent examples:

agents

Requirements

@zimeg zimeg added this to the Next Release milestone Mar 16, 2026
@zimeg zimeg self-assigned this Mar 16, 2026
@zimeg zimeg requested review from a team as code owners March 16, 2026 03:46
@zimeg zimeg added enhancement M-T: A feature request for new functionality experiment Experimental feature accessed behind the --experiment flag or toggle semver:patch Use on pull requests to describe the release version increment labels Mar 16, 2026
@zimeg zimeg changed the base branch from main to zimeg-revert-multistep-create March 16, 2026 03:51
@codecov
Copy link

codecov bot commented Mar 16, 2026

Codecov Report

❌ Patch coverage is 79.21569% with 53 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.01%. Comparing base (42aeefd) to head (cd63d76).

Files with missing lines Patch % Lines
cmd/project/create_template.go 83.17% 25 Missing and 11 partials ⚠️
cmd/project/create_samples.go 45.83% 10 Missing and 3 partials ⚠️
internal/pkg/create/template.go 0.00% 4 Missing ⚠️
Additional details and impacted files
@@                        Coverage Diff                        @@
##           zimeg-revert-multistep-create     #402      +/-   ##
=================================================================
+ Coverage                          67.82%   68.01%   +0.18%     
=================================================================
  Files                                217      217              
  Lines                              17997    18185     +188     
=================================================================
+ Hits                               12206    12368     +162     
- Misses                              4637     4657      +20     
- Partials                            1154     1160       +6     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member Author

@zimeg zimeg left a comment

Choose a reason for hiding this comment

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

💌 Leaving a few comments and questions ahead for future reviewers!

Comment on lines +38 to +49
languageOptions := []string{
fmt.Sprintf("Bolt for JavaScript %s", style.Secondary("Node.js")),
fmt.Sprintf("Bolt for Python %s", style.Secondary("Python")),
fmt.Sprintf("Deno Slack SDK %s", style.Secondary("Deno")),
}
if clients.Config.WithExperimentOn(experiment.Templates) {
languageOptions = []string{
"Bolt for JavaScript",
"Bolt for Python",
"Deno Slack SDK",
}
}
Copy link
Member Author

Choose a reason for hiding this comment

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

🔭 note: Toward confusion of #325 we focused on on a "framework" selection here - @srtaalej!

🐣 ramble: The samples command has the following flag option too but IMHO the prompt it supports feels unexpected. Perhaps it's changed to "framework" soon?

      --language string   runtime for the app framework
                            ex: "deno", "node", "python"

categoryID = "slack-cli#getting-started"
}

// App categories and templates
Copy link
Member Author

Choose a reason for hiding this comment

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

🪓 note: This comment is removed in favor of godoc above.

"github.com/spf13/cobra"
)

// getSelectionOptions returns the app template options for a given category.
Copy link
Member Author

Choose a reason for hiding this comment

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

🪬 thought: The changes of this PR make me think of the create selections now as:

  1. Category: Choice of template, agent, or sample
  2. Scaffold: Feature focused examples
  3. Framework: Code implementation details

Comment on lines +66 to +70
{
Title: "Custom agent",
Description: "Minimal setup with the Slack MCP server",
Repository: "slack-cli#ai-apps/mcp-server",
},
Copy link
Member Author

Choose a reason for hiding this comment

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

🔍 note: We can perhaps make effort to feature this as the agent starter template with a minimal event listener, action listener, and agentic loop to be compliment to the quickstart:

📚 https://docs.slack.dev/tools/bolt-js/getting-started

👾 question: Does this seem like the right separation with the assistant template below? I understand that "Casey" might be more useful to known cases and demonstrates adjacent frameworks also?

Comment on lines +277 to +278
return create.Template{}, slackerror.New(slackerror.ErrInvalidArgs).
WithMessage("The %s category was not found", categoryShortcut)
Copy link
Member Author

Choose a reason for hiding this comment

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

⚠️ note: This case should never happen, but we might want to guard against prompting for a category if a shortcut is provided using this!

Comment on lines +449 to +457
categories = []categoryInfo{
{id: "slack-cli#starter-templates/getting-started", name: "Starter templates"},
{id: "slack-cli#starter-templates/automation-apps", name: "Automation templates"},
{id: "slack-cli#starter-templates/search-template", name: "Search templates"},
{id: "slack-cli#starter-templates/blank-template", name: "Blank templates"},
{id: "slack-cli#ai-apps/support-agent", name: "Support agent"},
{id: "slack-cli#ai-apps/mcp-server", name: "Custom agent"},
{id: "slack-cli#ai-apps/assistant-template", name: "Assistant templates"},
}
Copy link
Member Author

Choose a reason for hiding this comment

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

🎨 note: Preview of an extended list:

Image

Copy link
Member Author

Choose a reason for hiding this comment

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

🤡 note: These changes are with #400 also!

Copy link
Member Author

Choose a reason for hiding this comment

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

🪵 note: This file is updated in #400 and included here for demo purposes.

Copy link
Member Author

Choose a reason for hiding this comment

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

🍰 note: The emoji related changes are also toward #400 changes!

Comment on lines +80 to +87
selectOptions := make([]string, len(sortedRepos))
for i, r := range sortedRepos {
if !clients.Config.WithExperimentOn(experiment.Charm) {
selectOptions[i] = fmt.Sprint(i+1, ". ", r.Name)
} else {
selectOptions[i] = r.Name
}
}
Copy link
Member Author

Choose a reason for hiding this comment

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

👁️‍🗨️ note: The remaining changes of this file exist in #400!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement M-T: A feature request for new functionality experiment Experimental feature accessed behind the --experiment flag or toggle semver:patch Use on pull requests to describe the release version increment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant