Skip to content

docs: Slack Q&A bot blog post + custom model catalog changelog - #2746

Merged
smakosh merged 9 commits into
mainfrom
feat/slack-qa-bot-blog-changelog
Jun 18, 2026
Merged

smakosh merged 9 commits into
mainfrom
feat/slack-qa-bot-blog-changelog

Conversation

@smakosh

@smakosh smakosh commented Jun 18, 2026 •

Copy link
Copy Markdown
Member

What

Content + tooling additions for the LLM Gateway site:

Blog — "Building a Slack Q&A Bot with LLM Gateway and Chat SDK"

An engineering walkthrough of the new open-source slack-qa-bot template (Chat SDK + AI SDK + LLM Gateway + Hono + Redis): the single-route webhook, the four event handlers, fullStream vs textStream, server-side web search and the empty-sources caveat, Redis subscriptions + locking, and gateway-driven model swapping. Every code sample is grounded in the actual template.

  • apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md
  • apps/ui/public/blog/slack-qa-bot-with-llm-gateway.png (on-brand hero, no text)

Changelog — "Custom Model Catalog for Custom Providers"

The changelog entry (id: 59, next after 58) plus its previously-missing OpenGraph image, generated with gpt-image-2 per the house changelog skill (clean abstract, no text, 1536×1024).

  • apps/ui/src/content/changelog/2026-06-18-custom-model-catalog.md
  • apps/ui/public/changelog/custom-model-catalog.png

Tooling — changelog agent skill

The changelog agent skill and its guide update.

  • .agents/skills/changelog/SKILL.md (+ .claude/skills/changelog symlink)
  • apps/docs/content/guides/agent-skills.mdx

Notes

  • Frontmatter validated against apps/ui/content-collections.ts; markdown run through the repo's prettier.
  • A pnpm-lock.yaml change existed locally but was intentionally excluded — it was diffed against a stale base, adds no dependencies for these changes, and would break the frozen-lockfile install on main.
  • Did not run the full turbo run build --filter=ui locally; schema checked manually. (PNGs were auto-optimized by the repo's image-actions bot.)

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Documentation

    • Added a guide for deploying an open-source Slack Q&A bot template using LLM Gateway and the Chat SDK.
    • Added an Agent Skills section describing a “Changelog Writer” workflow for generating dated changelog entries and matching images.
  • New Features

    • Introduced the Custom Model Catalog (Enterprise) for defining custom model entries with limits, pricing, and capability controls, improving cost attribution and logging.

smakosh and others added 3 commits June 18, 2026 21:29
Engineering walkthrough of the new open-source Slack Q&A bot template
(Chat SDK + AI SDK + LLM Gateway + Hono), with an on-brand hero image.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add the Custom Model Catalog changelog entry and its gpt-image-2
OpenGraph image (1536x1024).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@steebchen

Copy link
Copy Markdown
Member

Images automagically compressed by Calibre's image-actions ✨

Compression reduced images by 75.5%, saving 2.5 MB.

Filename Before After Improvement Visual comparison
apps/ui/public/blog/slack-qa-bot-with-llm-gateway.png 1.7 MB 428.3 KB 75.8% View diff
apps/ui/public/changelog/custom-model-catalog.png 1.6 MB 401.0 KB 75.3% View diff

@steebchen

Copy link
Copy Markdown
Member

Images automagically compressed by Calibre's image-actions ✨

Compression reduced images by 13.4%, saving 53.6 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/changelog/custom-model-catalog.png 401.0 KB 347.4 KB 13.4% View diff

1 image did not require optimisation.

@steebchen

Copy link
Copy Markdown
Member

Images automagically compressed by Calibre's image-actions ✨

Compression reduced images by 8.5%, saving 29.5 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/changelog/custom-model-catalog.png 347.4 KB 317.9 KB 8.5% View diff

1 image did not require optimisation.

@steebchen

Copy link
Copy Markdown
Member

Images automagically compressed by Calibre's image-actions ✨

Compression reduced images by 6.2%, saving 19.9 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/changelog/custom-model-catalog.png 317.9 KB 298.0 KB 6.2% View diff

1 image did not require optimisation.

@steebchen

Copy link
Copy Markdown
Member

Images automagically compressed by Calibre's image-actions ✨

Compression reduced images by 7.3%, saving 21.8 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/changelog/custom-model-catalog.png 298.0 KB 276.2 KB 7.3% View diff

1 image did not require optimisation.

@steebchen

Copy link
Copy Markdown
Member

Images automagically compressed by Calibre's image-actions ✨

Compression reduced images by 6.4%, saving 17.8 KB.

Filename Before After Improvement Visual comparison
apps/ui/public/changelog/custom-model-catalog.png 276.2 KB 258.4 KB 6.4% View diff

1 image did not require optimisation.

@coderabbitai

coderabbitai Bot commented Jun 18, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Three new documentation additions expand content and tooling: a blog post (249 lines) describing a Slack Q&A bot template using Chat SDK, AI SDK, LLM Gateway, Hono, and Redis; a changelog entry (54 lines) documenting the Custom Model Catalog Enterprise feature; and an agent skill (113 lines) for automated changelog generation with Claude Code integration and documentation.

Changes

Slack Q&A Bot Blog Post

Layer / File(s) Summary
Frontmatter, intro, and template scaffolding
apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md
Establishes post metadata (slug, date, title, category, image) and describes the TypeScript file layout and core stack: Chat SDK, AI SDK, LLM Gateway provider, Hono, Redis.
Webhook route and bot event handlers
apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md
Documents the single Hono webhook handler with a :platform route parameter and four bot event entry points: mention handling, subscribed-message follow-ups, unsubscribe behavior, and assistant thread start prompts.
Thread history conversion and LLM streaming
apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md
Explains converting Slack thread history into AI SDK messages, streaming model output into Slack via fullStream, enabling server-side web search via gateway extraBody, and handling citation annotations via inline markdown links in the prompt.
Redis state, deployment, and model switching
apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md
Covers Redis-backed thread subscription state and distributed locking, fetch-compatible Hono deployment, local dev node server wrapper, AI_MODEL-based model switching via gateway key, adapter-based platform extensibility, and CLI initialization instructions.

Custom Model Catalog Changelog Entry

Layer / File(s) Summary
Custom Model Catalog changelog entry
apps/ui/src/content/changelog/2026-06-18-custom-model-catalog.md
Adds frontmatter, feature overview with custom model field definitions (id, display name, context/output limits, token pricing, capability flags), cost attribution and limit/capability enforcement behavior (400 rejection), catalog-only mode description, Enterprise plan availability note, and footer links to docs and contact page.

Agent Skill for Changelog Writer

Layer / File(s) Summary
Changelog Writer skill definition and workflow
.agents/skills/changelog/SKILL.md
Defines the agent skill with background research requirements, file locations, date/id/slug selection, required markdown/frontmatter structure, house style rules (tone, formatting, API examples, plan gating, footer links), OpenGraph image prompt generation (1536×1024, no-text constraint, brand style), and validation/commit commands with conventional commit example.
Claude Code skill registration and documentation
.claude/skills/changelog, apps/docs/content/guides/agent-skills.mdx
Registers the skill as a symlink in .claude/skills/ and adds documentation describing the Changelog Writer skill's output (dated markdown with frontmatter and OpenGraph image prompt at 1536×1024), validation/build enforcement, installation steps for Claude Code, and trigger instructions by typing changelog.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • theopenco/llmgateway#2684: Both PRs involve LLM Gateway changelog/OpenGraph image formatting; this PR generates guidelines for 1536×1024 no-text changelog image prompts, while the referenced PR updates specific changelog entry image dimensions.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly describes the two main content additions: a Slack Q&A bot blog post and a custom model catalog changelog entry, matching the actual changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/slack-qa-bot-blog-changelog

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🧹 Nitpick comments (2)
apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md (2)

186-186: ⚡ Quick win

Capitalize "Markdown" as a proper noun.

Line 186 references "markdown" in a technical context; the correct spelling is "Markdown" (with capital M) when referring to the markup language.

🔧 Proposed fix
-> When you rely on web results, cite your sources inline as markdown links, e.g. `[Anthropic](https://anthropic.com)`.
+> When you rely on web results, cite your sources inline as Markdown links, e.g. `[Anthropic](https://anthropic.com)`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md` at line
186, In the blog post file, locate the text on line 186 that contains "markdown
links" and capitalize the "m" to "Markdown links". The word "Markdown" should
always be capitalized when referring to the markup language by its proper name,
even when used as a compound noun like "Markdown links".

Source: Linters/SAST tools


29-29: ⚡ Quick win

Add language identifier to code block.

The file-tree code block should specify a language to ensure proper syntax highlighting and rendering in markdown parsers.

🔧 Proposed fix
 The whole bot is about 200 lines of TypeScript across four files:
 
-```
+```text
 src/
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md` at line
29, The code block in the markdown file starting with the file-tree content
(src/) is missing a language identifier after the opening triple backticks. Add
the language identifier `text` to the opening code fence markers (change ``` to
```text) on the line before the src/ content to ensure proper syntax
highlighting and markdown rendering.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/ui/src/content/changelog/2026-06-18-custom-model-catalog.md`:
- Line 54: The link anchor `#custom-model-catalog` in the Custom providers
documentation link does not exist on the target page at
docs.llmgateway.io/features/custom-providers. Either remove the
`#custom-model-catalog` anchor entirely from the URL so it points to the base
custom-providers page, or replace it with a valid anchor that exists on that
documentation page such as `#supported-features` or another appropriate section
heading.

---

Nitpick comments:
In `@apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md`:
- Line 186: In the blog post file, locate the text on line 186 that contains
"markdown links" and capitalize the "m" to "Markdown links". The word "Markdown"
should always be capitalized when referring to the markup language by its proper
name, even when used as a compound noun like "Markdown links".
- Line 29: The code block in the markdown file starting with the file-tree
content (src/) is missing a language identifier after the opening triple
backticks. Add the language identifier `text` to the opening code fence markers
(change ``` to ```text) on the line before the src/ content to ensure proper
syntax highlighting and markdown rendering.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: db5b62e6-89c1-4a89-8d48-316a53af1826

📥 Commits

Reviewing files that changed from the base of the PR and between c07a40b and 9e12bc4.

⛔ Files ignored due to path filters (2)
  • apps/ui/public/blog/slack-qa-bot-with-llm-gateway.png is excluded by !**/*.png
  • apps/ui/public/changelog/custom-model-catalog.png is excluded by !**/*.png
📒 Files selected for processing (2)
  • apps/ui/src/content/blog/2026-06-18-slack-qa-bot-with-llm-gateway.md
  • apps/ui/src/content/changelog/2026-06-18-custom-model-catalog.md

Comment thread apps/ui/src/content/changelog/2026-06-18-custom-model-catalog.md
Add the changelog agent skill (.agents/skills/changelog + .claude symlink)
and the related agent-skills guide update. Lockfile drift intentionally
excluded — it does not match theopenco/main and would break the install.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot 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.

🧹 Nitpick comments (2)
.agents/skills/changelog/SKILL.md (2)

91-91: ⚡ Quick win

Add language identifier to outer fenced code block for markdown linting compliance.

The 4-backtick fence at line 91 demonstrates markdown output; markdownlint prefers a language tag. Change the opening fence from ``````` to `````markdown (or ````text) to match the format being demonstrated and suppress the linter warning.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/changelog/SKILL.md at line 91, The fenced code block using 4
backticks at line 91 is missing a language identifier, which causes markdownlint
to raise a warning. Add a language identifier to the opening fence by appending
either "markdown" or "text" after the opening backticks (e.g., ````markdown or
````text) to clearly indicate the code block language and comply with markdown
linting standards.

69-69: 💤 Low value

Minor style note: Consider varying sentence openers in the list.

Line 69 has three successive sentences starting with "No"; a parallel structure like this is clear but reads repetitively. Consider rewording one or two items as guidance (e.g., "Avoid exclamation points; skip 'very/really/simply'; no buzzwords") if you'd like to reduce the repetition.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/changelog/SKILL.md at line 69, The bullet point starting with
"Confident and plain" contains three successive sentences that begin with "No",
creating repetitive sentence structure. Vary the sentence openers by rewording
one or two of these items to use alternative phrasings (such as "Avoid" or
"Skip" instead of "No") while preserving the same guidance content. For example,
rephrase items like "No exclamation points" and "No very/really/simply" into
varied constructions such as "Avoid exclamation points" or "Skip buzzwords like
streamline and seamless" to improve readability and reduce the repetitive
pattern.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.agents/skills/changelog/SKILL.md:
- Line 91: The fenced code block using 4 backticks at line 91 is missing a
language identifier, which causes markdownlint to raise a warning. Add a
language identifier to the opening fence by appending either "markdown" or
"text" after the opening backticks (e.g., ````markdown or ````text) to clearly
indicate the code block language and comply with markdown linting standards.
- Line 69: The bullet point starting with "Confident and plain" contains three
successive sentences that begin with "No", creating repetitive sentence
structure. Vary the sentence openers by rewording one or two of these items to
use alternative phrasings (such as "Avoid" or "Skip" instead of "No") while
preserving the same guidance content. For example, rephrase items like "No
exclamation points" and "No very/really/simply" into varied constructions such
as "Avoid exclamation points" or "Skip buzzwords like streamline and seamless"
to improve readability and reduce the repetitive pattern.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 41b275d6-e298-42c5-999c-90de61280023

📥 Commits

Reviewing files that changed from the base of the PR and between 9e12bc4 and aeea205.

📒 Files selected for processing (3)
  • .agents/skills/changelog/SKILL.md
  • .claude/skills/changelog
  • apps/docs/content/guides/agent-skills.mdx
✅ Files skipped from review due to trivial changes (2)
  • .claude/skills/changelog
  • apps/docs/content/guides/agent-skills.mdx

@smakosh
smakosh enabled auto-merge June 18, 2026 20:03
@smakosh
smakosh added this pull request to the merge queue Jun 18, 2026
Merged via the queue into main with commit 3d7885a Jun 18, 2026
14 checks passed
@smakosh
smakosh deleted the feat/slack-qa-bot-blog-changelog branch June 18, 2026 20:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants