From fd6138b361116fb96f567a68458c9a22b352f67a Mon Sep 17 00:00:00 2001 From: Lily Shen <115414357+lilyshen0722@users.noreply.github.com> Date: Tue, 27 Oct 2026 19:48:33 -0700 Subject: [PATCH 1/5] content(geo): retitle AI agent collaboration platforms, add Claude Code @mentions guide - ai-agent-collaboration-platforms: new title and titleTag, license sentence on intro and summary (self-hosting list matches the live page), new Q2 FAQ. - New guide /guides/claude-code-team-chat-mentions. The own-agent @mention claim is stated as Mac only. - Page-count test: 99 -> 100 pages, 89 -> 90 guides. - Renderer: skip the FAQ heading when a guide has no FAQ. Co-Authored-By: Claude Haiku 5.5 Co-authored-by: folio Agent-Model: claude/claude-haiku-5-5/high --- frontend/scripts/generate-seo-pages.mjs | 2 +- frontend/scripts/generate-seo-pages.test.mjs | 5 +- frontend/src/content/guides.json | 157 ++++++++++++++++++- 3 files changed, 157 insertions(+), 7 deletions(-) diff --git a/frontend/scripts/generate-seo-pages.mjs b/frontend/scripts/generate-seo-pages.mjs index a42890b45f..27cc7cc98c 100644 --- a/frontend/scripts/generate-seo-pages.mjs +++ b/frontend/scripts/generate-seo-pages.mjs @@ -354,7 +354,7 @@ const renderGuide = (guide) => { ${(guide.intro || []).map((paragraph) => `

${escapeHtml(paragraph)}

`).join('')} ${sections} -

Frequently asked questions

${faq}
+ ${guide.faq.length ? `

Frequently asked questions

${faq}
` : ''}

${escapeHtml(guide.cta.title)}

${escapeHtml(guide.cta.body)}

${escapeHtml(guide.cta.primary.label)}${escapeHtml(guide.cta.secondary.label)}

${relatedLinks}

diff --git a/frontend/scripts/generate-seo-pages.test.mjs b/frontend/scripts/generate-seo-pages.test.mjs index a041540fe0..e45de05e0b 100644 --- a/frontend/scripts/generate-seo-pages.test.mjs +++ b/frontend/scripts/generate-seo-pages.test.mjs @@ -20,7 +20,7 @@ test('emits a canonical crawlable page for every public route', async () => { const guides = JSON.parse(guideText); const pages = buildPageDefinitions({ landing: translations.landing, compare: translations.compare, useCases, guides }); - assert.equal(pages.length, 99); + assert.equal(pages.length, 100); assert.deepEqual(pages.map((page) => page.path), [ '/', '/compare/', @@ -121,6 +121,7 @@ test('emits a canonical crawlable page for every public route', async () => { '/guides/control-what-coding-agents-can-access/', '/guides/github-agent-hq-alternative/', '/guides/run-claude-code-and-codex-together/', + '/guides/claude-code-team-chat-mentions/', ]); assert.deepEqual(pages[0].schema['@graph'].map((item) => item['@type']), [ 'Organization', @@ -158,7 +159,7 @@ test('emits a canonical crawlable page for every public route', async () => { '/guides/ai-agent-task-management/', '/guides/connect-claude-codex-shared-workspace/', ]); - assert.equal(guidePages.length, 89); + assert.equal(guidePages.length, 90); for (const guide of guidePages) { assert.equal(guide.ogType, 'article'); const article = guide.schema['@graph'].find((item) => item['@type'] === 'Article'); diff --git a/frontend/src/content/guides.json b/frontend/src/content/guides.json index c6ed5f15f7..9e6c7eccf6 100644 --- a/frontend/src/content/guides.json +++ b/frontend/src/content/guides.json @@ -32457,10 +32457,10 @@ }, "ai-agent-collaboration-platforms": { "eyebrow": "Guide", - "titleTag": "AI Agent Collaboration Platforms for Teams (2026) | Commonly AI", - "title": "AI agent collaboration platforms for teams (2026)", + "titleTag": "AI Agents From Different Tools, One Team: 6 Platforms Compared (2026)", + "title": "Where AI agents from different tools work with your team: 6 open-source platforms compared (2026)", "description": "Alook, Buzz (Block), Commonly, Multica, OpenAgents (openagents.org) and Paperclip, compared on the same fields: what each says it is, license and self-hosting, which agents it names, how people take part, and pricing as stated. Dated October 2026.", - "summary": "Six products put people and coding agents in one shared workspace. They differ in shape, license, hosting and the agent tools they name.", + "summary": "Six products put people and coding agents in one shared workspace. They differ in shape, license, hosting and the agent tools they name. Five are open source (Apache-2.0 or MIT) and Multica is source-available. Alook, Buzz, Multica, OpenAgents and Paperclip document self-hosting.", "provenance": { "author": "Commonly", "reviewer": "Commonly SEO team", @@ -32468,7 +32468,7 @@ "dateModified": "2026-10-27" }, "intro": [ - "Six products put people and AI coding agents in one shared workspace: Alook, Buzz (from Block), Commonly, Multica, OpenAgents (openagents.org) and Paperclip. They differ in shape, on license and hosting, and on which agent tools they name. This guide compares them on the same fields, as of October 27, 2026. Each product's facts come from its own site or repository." + "Six products put people and AI coding agents in one shared workspace: Alook, Buzz (from Block), Commonly, Multica, OpenAgents (openagents.org) and Paperclip. They differ in shape, on license and hosting, and on which agent tools they name. This guide compares them on the same fields, as of October 27, 2026. Each product's facts come from its own site or repository. Five are open source (Apache-2.0 or MIT) and Multica is source-available. Alook, Buzz, Multica, OpenAgents and Paperclip document self-hosting." ], "sections": [ { @@ -32699,6 +32699,10 @@ { "question": "Do these products supply the AI models?", "answer": "Alook says it \"does not supply AI models\", and the OpenAgents FAQ says you pay your model provider for usage. Buzz and Paperclip describe bringing agents from other tools. Commonly connects your own Claude Code, or a hosted agent you start in one click. [3][5][11][14][16]" + }, + { + "question": "Is there an open-source Slack alternative for teams of people and AI agents?", + "answer": "Buzz, from Block, is the closest to Slack in shape. It has channels, threads, DMs, canvases and huddles, and you add an agent to a channel the way you add a person. It's Apache-2.0 and runs on a Nostr relay you can host yourself. [4][6] Alook (Apache-2.0) has shared rooms, channels and DMs where teammates talk with the agents they run on their own machines. [1][2] In Commonly (Apache-2.0), each teammate brings their own agent into one pod, and people and agents share the same conversations and one task board. [14]" } ], "relatedLinks": [ @@ -33272,5 +33276,150 @@ "path": "/guides/" } } + }, + "claude-code-team-chat-mentions": { + "eyebrow": "Guide", + "titleTag": "How to connect Claude Code to your team's chat so it answers @mentions", + "title": "How to connect Claude Code to your team's chat so it answers @mentions", + "description": "Three ways to get Claude Code answering @mentions in team chat: Claude Tag in Slack, the earlier Claude Code in Slack app, or your own Slack bot that calls claude -p. Plus how Commonly does it with each teammate's own agent on a Mac.", + "summary": "On Slack, you have three choices: Claude Tag, the earlier Claude Code in Slack app, or your own Slack bot that runs claude -p. Commonly gives each teammate their own Claude Code, answering @mentions in one shared pod on a Mac.", + "provenance": { + "author": "Commonly", + "reviewer": "Commonly SEO team", + "datePublished": "2026-10-28", + "dateModified": "2026-10-28" + }, + "intro": [ + "Updated 2026-10-28. Facts about other products were checked on their own docs on 2026-10-28.", + "Short answer. On Slack, you have three choices. Your workspace can turn on Claude Tag, Anthropic's version of @Claude for Team and Enterprise plans. You can use the earlier Claude Code in Slack app on a Pro or Max plan. Or you can build a small Slack bot that runs claude -p when it's mentioned. The first two run Claude in Anthropic's cloud. A bot runs wherever you host it. If you want each teammate's own Claude Code, on their own machine, answering @mentions in one shared space, that's what a Commonly pod does." + ], + "sections": [ + { + "title": "Claude Tag (Slack, Team and Enterprise plans)", + "paragraphs": [ + "Claude Tag is \"Claude working in your team's Slack channels\". [1] It's in public beta. [1]" + ], + "bullets": [ + "Pick it if your team wants one shared @Claude that anyone in a channel can hand work to, with access set by an admin.", + "Who sets it up. An Owner of a Claude organization on a Team or Enterprise plan runs setup, together with a Slack workspace admin, who runs @Claude connect and passes the pairing code over. It isn't available on Free, Pro or Max. [1]", + "Where the work runs. Each thread gets its own session, and \"the work runs in an ephemeral cloud sandbox, not on your local machine.\" [2] For code, Claude clones your GitHub repositories into the sandbox and pushes back a branch or pull request. [2]", + "Whose identity. In channels, Claude acts under its own service accounts that an admin provisions, not as the person who asked. Access is set per channel. [2]", + "Add it to a channel with /invite @Claude. [1]" + ] + }, + { + "title": "Claude Code in Slack, the earlier app (Pro and Max)", + "paragraphs": [ + "Anthropic's docs call this \"the earlier Claude Code in Slack\". [3]" + ], + "bullets": [ + "Pick it if you're on a Pro or Max plan and you want to start cloud coding tasks from a Slack thread.", + "It answers channel @mentions \"only from Pro and Max accounts, and only in a Slack workspace that no organization has connected to Claude Tag.\" [3]", + "Each session \"runs under your own Claude account, using your connected repositories and your plan limits.\" [3] A coding request creates a Claude Code cloud session on claude.ai/code. [3]", + "It works in public and private channels, not in DMs. You add it with /invite @Claude. [3]", + "Repositories must be on GitHub, and each session can open one pull request. [3]" + ] + }, + { + "title": "Your own Slack bot", + "paragraphs": [ + "If neither fits, a Slack app can subscribe to the app_mention event, which delivers \"only the message events that mention your app or bot\" and needs the app_mentions.read scope. [4] Your handler then runs Claude Code non-interactively with claude -p \"\". [5]" + ], + "bullets": [ + "Set what the agent may do without asking with --allowedTools, or with a permission mode such as --permission-mode dontAsk. In a manual-mode -p run, a call that needs approval is denied unless something approves it. [5]", + "Use --output-format json to get the reply text back in the result field, ready to post into the thread. [5]", + "In scripts, --bare skips the host's hooks, plugins, memory and CLAUDE.md, so every run starts the same. [5]", + "You host and secure the bot yourself. Slack messages become prompts, so keep the allowed tools narrow. Anthropic warns that Claude \"may follow directions from other messages in the context\" of a Slack thread. [3]" + ] + }, + { + "title": "Each teammate's own Claude Code, in one pod (Commonly)", + "paragraphs": [ + "The options above give the team one @Claude. In Commonly, each teammate brings their own agent into one pod, and people and agents share the same conversations and one task board. Each agent is a named member with an owner, so everyone sees whose agent did what. [6]", + "Own-agent @mentions work on a Mac only. Linux and Windows can't answer @mentions yet." + ], + "orderedItems": [ + "Create a pod and invite your teammates with the invite link.", + "Each teammate runs the command from the pod's Connect page to bring their own Claude Code. On a Mac, it then answers @mentions in the pod. Codex connects the same way on a Mac.", + "Mention a teammate's agent by name. It runs on its owner's machine, with that person's checkout and settings, and replies in the pod." + ] + }, + { + "title": "Or start a hosted agent", + "paragraphs": [ + "You can also start a hosted agent in the pod with one click. Hosted agents answer in the pod but don't claim tasks on the board." + ] + }, + { + "title": "Which to pick", + "bullets": [ + "One shared @Claude for the whole Slack workspace, admin-managed: Claude Tag. [1][2]", + "You alone, on a Pro or Max plan, starting cloud tasks from Slack: the earlier Claude Code in Slack app. [3]", + "Full control, and you'll run the service: your own bot calling claude -p. [4][5]", + "Each teammate's own agent on their own Mac, answering in one shared space with a task board: Commonly. [6]" + ] + }, + { + "title": "Sources", + "paragraphs": [ + "Fetched 2026-10-28, between about 02:35 and 02:40 UTC." + ], + "links": [ + { + "label": "1. Anthropic, \"Set up Claude Tag\" (fetched 2026-10-28)", + "path": "https://claude.com/docs/claude-tag/admins/setup-overview", + "external": true + }, + { + "label": "2. Anthropic, \"How Claude Tag works\" (fetched 2026-10-28)", + "path": "https://claude.com/docs/claude-tag/concepts/how-it-works", + "external": true + }, + { + "label": "3. Anthropic, \"Claude Code in Slack\" (fetched 2026-10-28)", + "path": "https://code.claude.com/docs/en/slack", + "external": true + }, + { + "label": "4. Slack, app_mention event (fetched 2026-10-28)", + "path": "https://docs.slack.dev/reference/events/app_mention", + "external": true + }, + { + "label": "5. Anthropic, \"Run Claude Code programmatically\" (fetched 2026-10-28)", + "path": "https://code.claude.com/docs/en/headless", + "external": true + }, + { + "label": "6. Commonly README (fetched 2026-10-28)", + "path": "https://github.com/Team-Commonly/commonly", + "external": true + } + ] + } + ], + "faq": [], + "relatedLinks": [ + { + "label": "How to Connect Claude Code and Codex to a Shared Workspace", + "path": "/guides/connect-claude-codex-shared-workspace/" + }, + { + "label": "AI agent collaboration platforms, compared", + "path": "/guides/ai-agent-collaboration-platforms/" + } + ], + "cta": { + "title": "One pod for your team and the agents each of you runs", + "body": "Create a shared workspace where each teammate brings their own agent, and each agent is a named member with an owner.", + "primary": { + "label": "Create a shared workspace", + "path": "/v2/register" + }, + "secondary": { + "label": "Explore Commonly's guides", + "path": "/guides/" + } + } } } From 5274f5291a71c4ebbc439baf2e8ab3bf00235b79 Mon Sep 17 00:00:00 2001 From: Lily Shen <115414357+lilyshen0722@users.noreply.github.com> Date: Tue, 27 Oct 2026 19:49:22 -0700 Subject: [PATCH 2/5] content(geo): name Codex on a Mac wherever the guide names Claude Code Per review on PR #2924: the public guide names Codex as "Codex on a Mac" in every spot that names Claude Code as a supported runtime. Co-Authored-By: Claude Haiku 5.5 Co-authored-by: folio Agent-Model: claude/claude-haiku-5-5/high --- frontend/src/content/guides.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/content/guides.json b/frontend/src/content/guides.json index 9e6c7eccf6..889fcc924f 100644 --- a/frontend/src/content/guides.json +++ b/frontend/src/content/guides.json @@ -33282,7 +33282,7 @@ "titleTag": "How to connect Claude Code to your team's chat so it answers @mentions", "title": "How to connect Claude Code to your team's chat so it answers @mentions", "description": "Three ways to get Claude Code answering @mentions in team chat: Claude Tag in Slack, the earlier Claude Code in Slack app, or your own Slack bot that calls claude -p. Plus how Commonly does it with each teammate's own agent on a Mac.", - "summary": "On Slack, you have three choices: Claude Tag, the earlier Claude Code in Slack app, or your own Slack bot that runs claude -p. Commonly gives each teammate their own Claude Code, answering @mentions in one shared pod on a Mac.", + "summary": "On Slack, you have three choices: Claude Tag, the earlier Claude Code in Slack app, or your own Slack bot that runs claude -p. Commonly gives each teammate their own Claude Code, or Codex on a Mac, answering @mentions in one shared pod.", "provenance": { "author": "Commonly", "reviewer": "Commonly SEO team", @@ -33291,7 +33291,7 @@ }, "intro": [ "Updated 2026-10-28. Facts about other products were checked on their own docs on 2026-10-28.", - "Short answer. On Slack, you have three choices. Your workspace can turn on Claude Tag, Anthropic's version of @Claude for Team and Enterprise plans. You can use the earlier Claude Code in Slack app on a Pro or Max plan. Or you can build a small Slack bot that runs claude -p when it's mentioned. The first two run Claude in Anthropic's cloud. A bot runs wherever you host it. If you want each teammate's own Claude Code, on their own machine, answering @mentions in one shared space, that's what a Commonly pod does." + "Short answer. On Slack, you have three choices. Your workspace can turn on Claude Tag, Anthropic's version of @Claude for Team and Enterprise plans. You can use the earlier Claude Code in Slack app on a Pro or Max plan. Or you can build a small Slack bot that runs claude -p when it's mentioned. The first two run Claude in Anthropic's cloud. A bot runs wherever you host it. If you want each teammate's own Claude Code, on their own machine, answering @mentions in one shared space, that's what a Commonly pod does. Codex on a Mac works the same way." ], "sections": [ { @@ -33340,7 +33340,7 @@ ], "orderedItems": [ "Create a pod and invite your teammates with the invite link.", - "Each teammate runs the command from the pod's Connect page to bring their own Claude Code. On a Mac, it then answers @mentions in the pod. Codex connects the same way on a Mac.", + "Each teammate runs the command from the pod's Connect page to bring their own Claude Code. On a Mac, it then answers @mentions in the pod. Codex on a Mac connects the same way.", "Mention a teammate's agent by name. It runs on its owner's machine, with that person's checkout and settings, and replies in the pod." ] }, From 7df4244db56f4920e1c950c9a1303d521010ddea Mon Sep 17 00:00:00 2001 From: Lily Shen <115414357+lilyshen0722@users.noreply.github.com> Date: Sat, 31 Oct 2026 03:34:10 -0700 Subject: [PATCH 3/5] test(v2): the guides index lists 90 guides with the Claude Code @mentions guide Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01N4VWLCoyuvz5pcLfFSWo2R --- frontend/src/v2/__tests__/V2Login.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/v2/__tests__/V2Login.test.tsx b/frontend/src/v2/__tests__/V2Login.test.tsx index 0b25603b2e..94718ca6c2 100644 --- a/frontend/src/v2/__tests__/V2Login.test.tsx +++ b/frontend/src/v2/__tests__/V2Login.test.tsx @@ -699,7 +699,7 @@ describe('V2 routing', () => { level: 1, name: 'Guides for teams working with AI agents', })).toBeInTheDocument(); - expect(screen.getAllByRole('button', { name: 'Read the guide' })).toHaveLength(89); + expect(screen.getAllByRole('button', { name: 'Read the guide' })).toHaveLength(90); expect(screen.getByRole('heading', { level: 2, name: 'How to Connect Claude Code and Codex to a Shared Workspace', From 4044a6f3f9c8b2432f9ed12a30cc3a86f8b03f33 Mon Sep 17 00:00:00 2001 From: Lily Shen <115414357+lilyshen0722@users.noreply.github.com> Date: Sat, 31 Oct 2026 03:44:27 -0700 Subject: [PATCH 4/5] fix(guides): match the @mentions guide to the README and Anthropic's docs as of 10-31 Claude Code answers @mentions on Linux in invite-only pods, not only on a Mac. The connect path is Bring your own, then Use my own agent. The earlier Slack app now takes Ultra too, and bare mode needs ANTHROPIC_API_KEY. The platforms guide lists Commonly among the products that document self-hosting. A guide with no FAQ entries no longer shows an empty FAQ heading, in the static page or the app, with a test for each. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01N4VWLCoyuvz5pcLfFSWo2R --- frontend/scripts/generate-seo-pages.test.mjs | 15 ++++++++++ .../src/components/landing/GuidePage.test.tsx | 16 ++++++++++ frontend/src/components/landing/GuidePage.tsx | 2 ++ frontend/src/content/guides.json | 30 +++++++++---------- 4 files changed, 48 insertions(+), 15 deletions(-) diff --git a/frontend/scripts/generate-seo-pages.test.mjs b/frontend/scripts/generate-seo-pages.test.mjs index f0c9355d3d..5cf9a93626 100644 --- a/frontend/scripts/generate-seo-pages.test.mjs +++ b/frontend/scripts/generate-seo-pages.test.mjs @@ -2147,3 +2147,18 @@ test('the compare page is unlisted: noindex, out of the sitemap, and linked from assert.doesNotMatch(sitemap, /\/compare\//); assert.match(sitemap, /https:\/\/commonly\.me\/use-cases\/team-chat\/<\/loc>/); }); + +test('a guide with no FAQ entries renders no FAQ heading', async () => { + const outputDir = await mkdtemp(join(tmpdir(), 'seo-nofaq-')); + try { + const source = await readFile(resolve(frontendDir, 'index.html'), 'utf8'); + await writeFile(join(outputDir, 'index.html'), source.replace('src="/src/index.tsx"', 'src="/assets/index-test.js"')); + await generateSeoPages({ outputDir }); + const empty = await readFile(join(outputDir, 'guides/claude-code-team-chat-mentions/index.html'), 'utf8'); + assert.doesNotMatch(empty, /

Frequently asked questions<\/h2>/); + const withFaq = await readFile(join(outputDir, 'guides/ai-agent-collaboration-platforms/index.html'), 'utf8'); + assert.match(withFaq, /

Frequently asked questions<\/h2>/); + } finally { + await rm(outputDir, { recursive: true, force: true }); + } +}); diff --git a/frontend/src/components/landing/GuidePage.test.tsx b/frontend/src/components/landing/GuidePage.test.tsx index bb7a289c30..682bdd4751 100644 --- a/frontend/src/components/landing/GuidePage.test.tsx +++ b/frontend/src/components/landing/GuidePage.test.tsx @@ -16,3 +16,19 @@ test('guide related links no longer offer the unlisted compare page', () => { expect(screen.queryByRole('button', { name: 'Compare Commonly' })).not.toBeInTheDocument(); expect(document.querySelector('a[href="/compare/"]')).toBeNull(); }); + +test('a guide with no FAQ entries shows no FAQ heading', () => { + const renderGuide = (id: string) => render( + + + } /> + + , + ); + + const { unmount } = renderGuide('claude-code-team-chat-mentions'); + expect(screen.queryByRole('heading', { name: 'Frequently asked questions' })).not.toBeInTheDocument(); + unmount(); + renderGuide('ai-agent-collaboration-platforms'); + expect(screen.getByRole('heading', { name: 'Frequently asked questions' })).toBeInTheDocument(); +}); diff --git a/frontend/src/components/landing/GuidePage.tsx b/frontend/src/components/landing/GuidePage.tsx index d02d83ccfb..76f330cddf 100644 --- a/frontend/src/components/landing/GuidePage.tsx +++ b/frontend/src/components/landing/GuidePage.tsx @@ -202,6 +202,7 @@ const GuidePage: React.FC = () => { + {guide.faq.length > 0 && ( Frequently asked questions @@ -215,6 +216,7 @@ const GuidePage: React.FC = () => { ))} + )} {guide.cta.title} diff --git a/frontend/src/content/guides.json b/frontend/src/content/guides.json index 889fcc924f..ad378c6b7c 100644 --- a/frontend/src/content/guides.json +++ b/frontend/src/content/guides.json @@ -32460,7 +32460,7 @@ "titleTag": "AI Agents From Different Tools, One Team: 6 Platforms Compared (2026)", "title": "Where AI agents from different tools work with your team: 6 open-source platforms compared (2026)", "description": "Alook, Buzz (Block), Commonly, Multica, OpenAgents (openagents.org) and Paperclip, compared on the same fields: what each says it is, license and self-hosting, which agents it names, how people take part, and pricing as stated. Dated October 2026.", - "summary": "Six products put people and coding agents in one shared workspace. They differ in shape, license, hosting and the agent tools they name. Five are open source (Apache-2.0 or MIT) and Multica is source-available. Alook, Buzz, Multica, OpenAgents and Paperclip document self-hosting.", + "summary": "Six products put people and coding agents in one shared workspace. They differ in shape, license, hosting and the agent tools they name. Five are open source (Apache-2.0 or MIT) and Multica is source-available. Alook, Buzz, Commonly, Multica, OpenAgents and Paperclip document self-hosting.", "provenance": { "author": "Commonly", "reviewer": "Commonly SEO team", @@ -32468,7 +32468,7 @@ "dateModified": "2026-10-27" }, "intro": [ - "Six products put people and AI coding agents in one shared workspace: Alook, Buzz (from Block), Commonly, Multica, OpenAgents (openagents.org) and Paperclip. They differ in shape, on license and hosting, and on which agent tools they name. This guide compares them on the same fields, as of October 27, 2026. Each product's facts come from its own site or repository. Five are open source (Apache-2.0 or MIT) and Multica is source-available. Alook, Buzz, Multica, OpenAgents and Paperclip document self-hosting." + "Six products put people and AI coding agents in one shared workspace: Alook, Buzz (from Block), Commonly, Multica, OpenAgents (openagents.org) and Paperclip. They differ in shape, on license and hosting, and on which agent tools they name. This guide compares them on the same fields, as of October 27, 2026. Each product's facts come from its own site or repository. Five are open source (Apache-2.0 or MIT) and Multica is source-available. Alook, Buzz, Commonly, Multica, OpenAgents and Paperclip document self-hosting." ], "sections": [ { @@ -32690,7 +32690,7 @@ "faq": [ { "question": "Which of these can I run on my own servers?", - "answer": "Alook, Buzz, Multica, OpenAgents and Paperclip document self-hosting. Multica's license allows it free for use inside your own organization. [2][4][8][10][15]" + "answer": "Alook, Buzz, Commonly, Multica, OpenAgents and Paperclip document self-hosting. Multica's license allows it free for use inside your own organization. [2][4][8][10][14][15]" }, { "question": "Is OpenAgents the same as openagents.com?", @@ -33287,11 +33287,11 @@ "author": "Commonly", "reviewer": "Commonly SEO team", "datePublished": "2026-10-28", - "dateModified": "2026-10-28" + "dateModified": "2026-10-31" }, "intro": [ - "Updated 2026-10-28. Facts about other products were checked on their own docs on 2026-10-28.", - "Short answer. On Slack, you have three choices. Your workspace can turn on Claude Tag, Anthropic's version of @Claude for Team and Enterprise plans. You can use the earlier Claude Code in Slack app on a Pro or Max plan. Or you can build a small Slack bot that runs claude -p when it's mentioned. The first two run Claude in Anthropic's cloud. A bot runs wherever you host it. If you want each teammate's own Claude Code, on their own machine, answering @mentions in one shared space, that's what a Commonly pod does. Codex on a Mac works the same way." + "Updated 2026-10-31. Facts about other products were checked on their own docs on 2026-10-31.", + "Short answer. On Slack, you have three choices. Your workspace can turn on Claude Tag, Anthropic's version of @Claude for Team and Enterprise plans. You can use the earlier Claude Code in Slack app on a Pro, Max or Ultra plan. Or you can build a small Slack bot that runs claude -p when it's mentioned. The first two run Claude in Anthropic's cloud. A bot runs wherever you host it. If you want each teammate's own Claude Code, on their own machine, answering @mentions in one shared space, that's what a Commonly pod does. Codex on a Mac works the same way." ], "sections": [ { @@ -33301,20 +33301,20 @@ ], "bullets": [ "Pick it if your team wants one shared @Claude that anyone in a channel can hand work to, with access set by an admin.", - "Who sets it up. An Owner of a Claude organization on a Team or Enterprise plan runs setup, together with a Slack workspace admin, who runs @Claude connect and passes the pairing code over. It isn't available on Free, Pro or Max. [1]", + "Who sets it up. An Owner of a Claude organization on a Team or Enterprise plan runs setup, together with a Slack workspace admin, who runs @Claude connect and passes the pairing code over. It isn't available on Free, Pro, Max or Ultra. [1]", "Where the work runs. Each thread gets its own session, and \"the work runs in an ephemeral cloud sandbox, not on your local machine.\" [2] For code, Claude clones your GitHub repositories into the sandbox and pushes back a branch or pull request. [2]", "Whose identity. In channels, Claude acts under its own service accounts that an admin provisions, not as the person who asked. Access is set per channel. [2]", "Add it to a channel with /invite @Claude. [1]" ] }, { - "title": "Claude Code in Slack, the earlier app (Pro and Max)", + "title": "Claude Code in Slack, the earlier app (Pro, Max and Ultra)", "paragraphs": [ "Anthropic's docs call this \"the earlier Claude Code in Slack\". [3]" ], "bullets": [ - "Pick it if you're on a Pro or Max plan and you want to start cloud coding tasks from a Slack thread.", - "It answers channel @mentions \"only from Pro and Max accounts, and only in a Slack workspace that no organization has connected to Claude Tag.\" [3]", + "Pick it if you're on a Pro, Max or Ultra plan and you want to start cloud coding tasks from a Slack thread.", + "It answers channel @mentions \"only from Pro, Max, and Ultra accounts, and only in a Slack workspace that no organization has connected to Claude Tag.\" [3]", "Each session \"runs under your own Claude account, using your connected repositories and your plan limits.\" [3] A coding request creates a Claude Code cloud session on claude.ai/code. [3]", "It works in public and private channels, not in DMs. You add it with /invite @Claude. [3]", "Repositories must be on GitHub, and each session can open one pull request. [3]" @@ -33328,7 +33328,7 @@ "bullets": [ "Set what the agent may do without asking with --allowedTools, or with a permission mode such as --permission-mode dontAsk. In a manual-mode -p run, a call that needs approval is denied unless something approves it. [5]", "Use --output-format json to get the reply text back in the result field, ready to post into the thread. [5]", - "In scripts, --bare skips the host's hooks, plugins, memory and CLAUDE.md, so every run starts the same. [5]", + "In scripts, --bare skips the host's hooks, plugins, memory and CLAUDE.md, so every run starts the same. Bare mode doesn't use your Claude login, so set ANTHROPIC_API_KEY. [5]", "You host and secure the bot yourself. Slack messages become prompts, so keep the allowed tools narrow. Anthropic warns that Claude \"may follow directions from other messages in the context\" of a Slack thread. [3]" ] }, @@ -33336,11 +33336,11 @@ "title": "Each teammate's own Claude Code, in one pod (Commonly)", "paragraphs": [ "The options above give the team one @Claude. In Commonly, each teammate brings their own agent into one pod, and people and agents share the same conversations and one task board. Each agent is a named member with an owner, so everyone sees whose agent did what. [6]", - "Own-agent @mentions work on a Mac only. Linux and Windows can't answer @mentions yet." + "Claude Code answers @mentions on a Mac, and on Linux in invite-only pods. On Windows it connects over MCP but doesn't answer @mentions. Codex answers on a Mac. [6]" ], "orderedItems": [ "Create a pod and invite your teammates with the invite link.", - "Each teammate runs the command from the pod's Connect page to bring their own Claude Code. On a Mac, it then answers @mentions in the pod. Codex on a Mac connects the same way.", + "Each teammate opens Bring your own, then Use my own agent, then Get my connect command, and runs it to bring their own Claude Code. On a Mac, it then answers @mentions in the pod. Codex on a Mac connects the same way.", "Mention a teammate's agent by name. It runs on its owner's machine, with that person's checkout and settings, and replies in the pod." ] }, @@ -33354,7 +33354,7 @@ "title": "Which to pick", "bullets": [ "One shared @Claude for the whole Slack workspace, admin-managed: Claude Tag. [1][2]", - "You alone, on a Pro or Max plan, starting cloud tasks from Slack: the earlier Claude Code in Slack app. [3]", + "You alone, on a Pro, Max or Ultra plan, starting cloud tasks from Slack: the earlier Claude Code in Slack app. [3]", "Full control, and you'll run the service: your own bot calling claude -p. [4][5]", "Each teammate's own agent on their own Mac, answering in one shared space with a task board: Commonly. [6]" ] @@ -33362,7 +33362,7 @@ { "title": "Sources", "paragraphs": [ - "Fetched 2026-10-28, between about 02:35 and 02:40 UTC." + "Checked 2026-10-28, and again 2026-10-31." ], "links": [ { From 9d43671d6280e67f58f0761cc59924e09ba2131a Mon Sep 17 00:00:00 2001 From: Lily Shen <115414357+lilyshen0722@users.noreply.github.com> Date: Sat, 31 Oct 2026 04:08:28 -0700 Subject: [PATCH 5/5] test(v2): count 91 guides, since #2945 merges first and adds one Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01N4VWLCoyuvz5pcLfFSWo2R --- frontend/src/v2/__tests__/V2Login.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/v2/__tests__/V2Login.test.tsx b/frontend/src/v2/__tests__/V2Login.test.tsx index 94718ca6c2..f8acf94e2b 100644 --- a/frontend/src/v2/__tests__/V2Login.test.tsx +++ b/frontend/src/v2/__tests__/V2Login.test.tsx @@ -699,7 +699,7 @@ describe('V2 routing', () => { level: 1, name: 'Guides for teams working with AI agents', })).toBeInTheDocument(); - expect(screen.getAllByRole('button', { name: 'Read the guide' })).toHaveLength(90); + expect(screen.getAllByRole('button', { name: 'Read the guide' })).toHaveLength(91); expect(screen.getByRole('heading', { level: 2, name: 'How to Connect Claude Code and Codex to a Shared Workspace',