Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .claude/commands/update-bolt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
Update the vendored bolt-python wheel to the latest commit on the `main` branch.

## Steps

1. If `.bolt-python-build/` exists, `cd` into it and run `git pull`. Otherwise, clone bolt-python:
```
git clone --depth 1 https://github.com/slackapi/bolt-python.git .bolt-python-build
```

2. `cd .bolt-python-build` and get the HEAD commit SHA (short form, 7 chars):
```
SHA=$(git rev-parse --short HEAD)
```

3. Read the current version from `slack_bolt/version.py` and patch it to append `+<SHA>` as a PEP 440 local version identifier:
```
sed -i '' "s/__version__ = \"\(.*\)\"/__version__ = \"\1+$SHA\"/" slack_bolt/version.py
```

4. Build the wheel:
```
python -m build --wheel
```

5. Remove any old `.whl` files from `vendor/` and copy the new one in:
```
rm -f ../vendor/slack_bolt-*.whl
cp dist/slack_bolt-*.whl ../vendor/
```

6. Update the whl filename in all three `requirements.txt` files (`claude-agent-sdk/requirements.txt`, `openai-agents-sdk/requirements.txt`, `pydantic-ai/requirements.txt`). Replace the existing `../vendor/slack_bolt-*.whl` line with the new filename.

7. Clean up the build directory:
```
cd .. && rm -rf .bolt-python-build
```

8. Report the old version/SHA vs new version/SHA to the user. Do NOT commit — let the user review first.
3 changes: 3 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ updates:
labels:
- "pip"
- "dependencies"
ignore:
- dependency-name: "slack-bolt"
# Vendored from bolt-python main — managed via /project:update-bolt
- package-ecosystem: "github-actions"
directory: "/"
schedule:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# Claude
.claude/*.local.json

# bolt-python build scratch (used by /project:update-bolt command)
.bolt-python-build/
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,21 @@ Casey gives your team instant IT support through three entry points:
Behind the scenes, Casey has access to five simulated tools: knowledge base search, support ticket creation, password reset, system status checks, and user permissions lookup.

> **Note:** All tools return simulated data for demonstration purposes. In a production app, these would connect to your actual IT systems.

## Local Development

This repo uses a vendored (pre-release) build of `slack-bolt` from the [bolt-python](https://github.com/slackapi/bolt-python) `main` branch. The `.whl` file lives in `vendor/` and is referenced by each app's `requirements.txt`.

Always install dependencies with:

```sh
pip install -r requirements.txt
```

Do not use `pip install .` or `pip install -e .` — those read from `pyproject.toml`, which does not reference the vendored wheel.

To update the vendored bolt-python to the latest `main`, run the Claude Code slash command:

```
/project:update-bolt
```
1 change: 0 additions & 1 deletion claude-agent-sdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ source .venv/bin/activate # for Windows OS, .\.venv\Scripts\Activate instead sh

```sh
pip install -r requirements.txt
# or pip install -e .
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.

question: went back and forth on whether to remove this or leave a comment. I fear we'll forget to add this back after we un-vendor Bolt

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@mwbrooks I think you made the right call here. We should keep README as correct as possible for what exists. It'd be so confusing otherwise to find incorrect instruction! 📠

```

## Providers
Expand Down
2 changes: 1 addition & 1 deletion claude-agent-sdk/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
"slack-sdk==3.40.1",
"slack-bolt==1.27.0",
# slack-bolt is installed from a vendored whl — see ../vendor/
"slack-cli-hooks<1.0.0",
"claude-agent-sdk>=0.1.36",
"aiohttp>=3.13.3",
Expand Down
2 changes: 1 addition & 1 deletion claude-agent-sdk/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
slack-sdk==3.40.1
slack-bolt==1.27.0
../vendor/slack_bolt-1.27.0+837e120-py2.py3-none-any.whl
slack-cli-hooks<1.0.0
claude-agent-sdk>=0.1.36
aiohttp>=3.13.3
Expand Down
1 change: 0 additions & 1 deletion openai-agents-sdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ source .venv/bin/activate # for Windows OS, .\.venv\Scripts\Activate instead sh

```sh
pip install -r requirements.txt
# or pip install -e .
```

## Providers
Expand Down
2 changes: 1 addition & 1 deletion openai-agents-sdk/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
requires-python = ">=3.10"
dependencies = [
"slack-sdk==3.40.1",
"slack-bolt==1.27.0",
# slack-bolt is installed from a vendored whl — see ../vendor/
"slack-cli-hooks<1.0.0",
"openai-agents",
"python-dotenv==1.2.1",
Expand Down
2 changes: 1 addition & 1 deletion openai-agents-sdk/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
slack-sdk==3.40.1
slack-bolt==1.27.0
../vendor/slack_bolt-1.27.0+837e120-py2.py3-none-any.whl
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 issue(non-blocking): IIRC the kind @dependabot cannot update requirements.txt files that use a relative path. This happened to me with similar testing setups before but I'm not confident in this statement when vendoring the package to be honest...

Wanting to call this out here since we might find adjacent dependencies fall outdated, but I think the slash command included does more than enough!

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.

Thanks for the insight @zimeg!

Hmm... that's a bummer. I suppose we can merge it and if we find that @dependabot has trouble, then we can revisit it.

An alternative approach could be to have the Claude Code slash command install the vendored Bolt into each project using pip. This would allow us to use the production slack_bolt and then /project:update-bolt would overwrite it with the vendor copy.

slack-cli-hooks<1.0.0
openai-agents
python-dotenv==1.2.1
Expand Down
1 change: 0 additions & 1 deletion pydantic-ai/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ source .venv/bin/activate # for Windows OS, .\.venv\Scripts\Activate instead sh

```sh
pip install -r requirements.txt
# or pip install -e .
```

## Providers
Expand Down
2 changes: 1 addition & 1 deletion pydantic-ai/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
requires-python = ">=3.10"
dependencies = [
"slack-sdk==3.40.1",
"slack-bolt==1.27.0",
# slack-bolt is installed from a vendored whl — see ../vendor/
"slack-cli-hooks<1.0.0",
"pydantic-ai[openai]",
"python-dotenv==1.2.1",
Expand Down
2 changes: 1 addition & 1 deletion pydantic-ai/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
slack-sdk==3.40.1
slack-bolt==1.27.0
../vendor/slack_bolt-1.27.0+837e120-py2.py3-none-any.whl
slack-cli-hooks<1.0.0
pydantic-ai[openai]
python-dotenv==1.2.1
Expand Down
Binary file not shown.