Skip to content

feat(provider-catalog): agent connectors catalog with category and auth filters#573

Open
ravibits wants to merge 23 commits intomainfrom
preview/provider-catalog
Open

feat(provider-catalog): agent connectors catalog with category and auth filters#573
ravibits wants to merge 23 commits intomainfrom
preview/provider-catalog

Conversation

@ravibits
Copy link
Copy Markdown
Contributor

@ravibits ravibits commented Apr 7, 2026

Summary

  • Adds a provider catalog grid page at /guides/integrations/agent-connectors/ with search, category filters, and auth type filters
  • sync-agent-connectors.js extended to generate src/data/agent-connectors/catalog.ts — icon URLs, auth types, and categories sourced directly from the API (no hardcoded maps)
  • ProviderCatalog.astro now driven entirely by the generated catalog; category chips and section headings derived dynamically from API data
  • Tool params sorted: required fields first (alphabetically), then optional (alphabetically)
  • 68 providers, 1125 tools synced with a clean 15-category taxonomy

Preview

https://deploy-preview-573--scalekit-starlight.netlify.app/guides/integrations/agent-connectors/

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 7, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Comprehensive refactoring of agent connector documentation infrastructure: introduced new UI components (ProviderCatalog, ToolList) and shared type definitions for tool parameters, migrated tool documentation from inline MDX to centralized TypeScript data files, extended the sync script to generate per-provider tool data modules, and updated ~40 connector documentation pages to use data-driven rendering instead of hardcoded content.

Changes

Cohort / File(s) Summary
Type Definitions & Core Components
src/types/agent-connectors.ts, src/components/ProviderCatalog.astro, src/components/ToolList.astro
Added type definitions for ParamType, ToolParam, and Tool interfaces. Introduced ProviderCatalog component with search/filtering UI for provider cards and auth-type toggling. Added ToolList component with accordion-style tool cards, parameter grids, client-side filtering, and deep-linking via URL hash.
Build & Sync Script
scripts/sync-agent-connectors.js
Extended script to generate per-provider TypeScript data files (src/data/agent-connectors/<slug>.ts) alongside MDX pages. Added helper functions to normalize parameter types, escape template literals, and emit export const tools: Tool[] arrays. Updated MDX generation to import and render tools via ToolList component instead of hardcoded tool documentation.
Connector Data Files — Core Providers
src/data/agent-connectors/snowflakekeyauth.ts, src/data/agent-connectors/figma.ts, src/data/agent-connectors/affinity.ts, src/data/agent-connectors/apollo.ts
Added tool metadata definitions for Snowflake Key Auth (14 tools), Figma (~40 tools), Affinity, and Apollo connectors. Each module exports a typed tools: Tool[] array with tool names, descriptions, and parameter schemas.
Connector Data Files — Additional Providers
src/data/agent-connectors/{airtable,asana,attention,attio,bigquery,brave,chorus,clari_copilot,clickup,confluence,discord,dropbox,evertrace,exa,fathom,freshdesk,github}.ts
Added tool metadata for 17+ additional connectors. Most are empty or minimal (core provider data will be generated on next sync), while larger ones like attio.ts (~1100 lines), brave.ts (~640 lines), and evertrace.ts (~480 lines) contain detailed tool/parameter schemas.
MDX Documentation Updates — Catalog & Navigation
src/content/docs/guides/integrations/agent-connectors/index.mdx
Updated connector list rendering to use new ProviderCatalog component instead of AgentConnectorsSection.
MDX Documentation Updates — Individual Connectors (Standard Pattern)
src/content/docs/reference/agent-connectors/{snowflakekeyauth,figma,affinity,airtable,apifymcp,apollo,asana,attention,attio,bigquery,brave,chorus,clari_copilot,clickup,confluence,dropbox,evertrace,exa,fathom,freshdesk,github,...}.mdx
~40 MDX files updated with consistent pattern: (1) added sidebar.label frontmatter; (2) removed custom table cell whitespace CSS; (3) simplified imports to only Badge; (4) added imports for ToolList component and provider-specific tools data; (5) replaced large static "Tool list" sections with single <ToolList tools={tools} /> render. Files affected include Affinity through Zendesk.
MDX Documentation Removals
src/content/docs/reference/agent-connectors/{discord,gitlab,pipedrive}.mdx
Deleted three full connector documentation pages. Discord page removed all tool references and setup/usage sections. GitLab page removed ~1190 lines of documentation. Pipedrive page removed ~697 lines of content.
Template Exports
src/components/templates/agent-connectors/index.ts
Removed three re-exports: SetupGitlabSection, SetupPipedriveSection, UsageDiscordSection.
.gitignore
.gitignore
Added ignore patterns for .firebase/, docs/superpowers/, and .worktrees.

Sequence Diagram(s)

No sequence diagrams generated. While the changes introduce new UI components and data flows, they are primarily concerned with data rendering and client-side filtering rather than multi-component orchestration with significant control flow interactions.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Review requires careful attention to: (1) new type definitions and their application across components/data files; (2) ToolList and ProviderCatalog component logic including client-side filtering and deep-linking; (3) script modifications for generating TypeScript data and updating MDX templates; (4) consistency across ~40 MDX files following a similar but not identical refactoring pattern; (5) completeness and correctness of tool metadata definitions across multiple provider files; (6) verification that deleted pages/exports align with expected deprecations.

Possibly related PRs

Suggested reviewers

  • jranaskit
  • saif-at-scalekit
  • amitash1912
🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 27.27% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly and concisely describes the main feature: adding a searchable provider catalog with category and authentication type filters for agent connectors.

✏️ 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 preview/provider-catalog

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.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 7, 2026

Deploy Preview for scalekit-starlight ready!

Name Link
🔨 Latest commit 6d9343b
🔍 Latest deploy log https://app.netlify.com/projects/scalekit-starlight/deploys/69d5dfaefb78d500087cf01c
😎 Deploy Preview https://deploy-preview-573--scalekit-starlight.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 31

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/firebase-hosting-pull-request.yml:
- Around line 21-24: The workflow currently sets actions/setup-node@v4 with
node-version: '22' and installs pnpm globally (run: npm install -g pnpm); change
node-version to '20' to match production and stop using an unpinned global pnpm
install—either pin a specific pnpm version (e.g., npm install -g pnpm@<version>)
or replace the global install with the official pnpm setup action
(pnpm/action-setup) specifying a fixed version, updating the lines referencing
actions/setup-node@v4, node-version, and run: npm install -g pnpm accordingly.

In @.gitignore:
- Around line 48-51: Remove the broad ignore entry "docs/superpowers/" from
.gitignore so design spec files (e.g.,
docs/superpowers/specs/2026-03-26-website-redesign-design.md) are tracked; if
you intend to ignore only generated or temporary files inside that folder,
replace the entry with a more specific pattern (for example targeting build
artifacts) and add a brief comment explaining why the narrower pattern is used.

In `@docs/superpowers/specs/2026-03-26-website-redesign-design.md`:
- Around line 64-87: Update the fenced code blocks that show the site hierarchy
so they include a language identifier (e.g., change ``` to ```text);
specifically update the block that begins with "/                       
Homepage (two-door entry, agents-primary)" and the other similar hierarchy
blocks (the ones showing "/for-agents/", "/for-apps/", "/sdks/", "/apis/",
"/pricing/", "/changelog/") so every triple-backtick fence uses ```text for
consistent rendering and readability.

In `@firebase.json`:
- Around line 1-6: Update the hosting configuration in firebase.json to add a
"headers" array under the existing "hosting" object: add cache-control rules for
static assets (e.g., source patterns like "**/*.@(js|css)" with Cache-Control:
public, max-age=31536000, immutable) and security headers for all responses
(e.g., X-Content-Type-Options: nosniff and X-Frame-Options: DENY using source
"**"); modify the "hosting" object (the existing public/ignore keys) to include
this "headers" section so Firebase Hosting serves the suggested caching and
security headers.

In `@project-docs/2026-03-30-docs-chatbot-flywheel-design.md`:
- Around line 321-326: The doc marks webhook signature verification and rate
limiting as open questions but they must be tracked—create two concrete issues:
one for implementing Pylon webhook signature verification (reference the Pylon
webhook endpoint and add acceptance criteria: verify signature header, reject
invalid requests, include tests and docs, assign owner and priority) and one for
adding rate limiting to the chatbot /api/chat endpoint for anonymous users
(reference /api/chat and InMemorySessionStore, acceptance criteria: per-IP
limits, configurable thresholds, fallback for authenticated users, tests, and
deployment checklist); also create an issue to decide/track hosting for
chatbot.js (reference chatbot.js and CDN vs npm/jsDelivr vs Firebase) so all
security/deployment decisions are tracked before production.

In `@project-docs/plans/2026-03-30-chatbot-api-plan-a.md`:
- Around line 1019-1024: The current app.use middleware sets
Access-Control-Allow-Origin to '*' which is too permissive; update the CORS
handling in the Express middleware (the app.use anonymous function) to validate
the request Origin against a whitelist of allowed domains (or use the cors
package with an origin callback) and set Access-Control-Allow-Origin to the
specific origin when it matches, otherwise omit or return a 403; preserve the
existing allowed-headers and allowed-methods logic and ensure preflight
(OPTIONS) requests are handled accordingly.
- Line 9: The Tech Stack line uses lowercase "github" in the agentboard
reference; update the text to use "GitHub" capitalization by replacing the token
`github:scalekit-inc/agentboard` with `GitHub:scalekit-inc/agentboard` in the
Tech Stack string (the reference inside the parentheses after "agentboard").
- Around line 17-47: The fenced code blocks in the plan (the "File map" block,
the ".env example" block, and the "expected output" block) lack language
identifiers; update those triple-backtick blocks to include appropriate
languages so they render correctly (e.g., use ```text for the file map and
expected output blocks and ```sh for the ANTHROPIC_API_KEY .env example). Locate
the blocks by the visible content strings ("services/chatbot-api/" for the file
map, "ANTHROPIC_API_KEY=sk-ant-..." for the .env example, and "chatbot-api
listening on http://localhost:3001" for the expected output) and insert the
language tags immediately after the opening ``` markers.

In `@public/redesign/index.html`:
- Around line 1206-1213: Add explicit type="button" to all standalone button
elements to prevent implicit submit behavior: update the docs-tab buttons (ids
dtab-agents, dtab-apps, dtab-machine) to include type="button" and do the same
for the language tab buttons and pricing tab buttons referenced in the file;
ensure each <button class="docs-tab" ...> (and analogous language/pricing
buttons) includes type="button" while keeping existing ids and onclick handlers
(e.g., showDocsTab).

In `@render.yaml`:
- Around line 6-7: The render.yaml buildCommand and startCommand use npm which
can diverge from the repo's pnpm lockfile; change buildCommand to run pnpm
install with the lockfile flag and then pnpm run build (e.g., "pnpm install
--frozen-lockfile && pnpm run build") and change startCommand to use pnpm (e.g.,
"pnpm run start") so the service uses pnpm for dependency resolution and
scripts; update the values for the buildCommand and startCommand keys
accordingly.

In `@services/chatbot-api/package.json`:
- Around line 5-8: Add a "test" script to the package.json scripts block
(alongside "dev", "build", "start") that runs Vitest (e.g., "test": "vitest")
and add "vitest" to devDependencies so tests in the tests/ directory can run;
update package.json's "scripts" to include the new "test" entry and add "vitest"
under "devDependencies" (or run npm/yarn to install vitest as a dev dependency).

In `@services/chatbot-api/src/index.ts`:
- Around line 12-21: The CORS middleware in the app.use(...) anonymous handler
currently sets Access-Control-Allow-Origin to '*' which is too permissive for
production; change it to use a configurable allowlist (e.g., read allowed
origins from an env var like ALLOWED_ORIGINS or a config value) and only echo
the request Origin when it matches the allowlist (or fall back to a safe
default) and keep the OPTIONS handling; alternatively replace the custom handler
with the cors middleware configured with the same allowlist. Update the
middleware in index.ts (the app.use(...) block) to perform origin validation and
only set Access-Control-Allow-Origin to the validated origin in production.
- Around line 27-43: The /api/chat route handler currently assumes
req.body.messages is present and well-formed and calls streamText without error
handling; update the app.post('/api/chat' ...) handler to validate that messages
exists and is an array and that each item matches the expected message shape
(e.g., has role and content) before calling streamText, return 400 with a clear
error when validation fails, sanitize/ensure userId and orgId defaulting to ''
only after validation, and wrap the streamText(...) invocation (and subsequent
result.pipeDataStreamToResponse(res)) in a try/catch to handle SDK/Anthropic
errors (from anthropic(...)/streamText) and respond with a 500 and a logged
error; reference the existing symbols streamText,
anthropic('claude-haiku-4-5-20251001'), SYSTEM_PROMPT, searchDocsTool, and
createPylonIssueTool when making the fixes.

In `@services/chatbot-api/src/lib/search-algolia.ts`:
- Around line 30-47: The fetch to Algolia in search-algolia.ts (the POST to url
using ALGOLIA_API_KEY/ALGOLIA_APP_ID that assigns const res) needs a timeout to
avoid hanging; wrap the fetch call with an AbortController: create controller =
new AbortController(), pass signal: controller.signal into fetch options, start
a timer (e.g., setTimeout to 3–5s or a configurable SEARCH_TIMEOUT) that calls
controller.abort(), and clear the timer after fetch completes; handle the abort
error by rethrowing a clear timeout-specific Error or mapping it into the
existing error path so the caller gets a deterministic failure instead of an
infinite hang.
- Around line 1-3: The three constants ALGOLIA_APP_ID, ALGOLIA_API_KEY, and
ALGOLIA_INDEX must not use hardcoded fallbacks; change their initialization to
read directly from process.env and validate presence, throwing a clear Error if
any are missing (same pattern as PYLON_API_TOKEN) so the service fails fast when
env vars are not set; update any exports or usages in search-algolia.ts to rely
on these validated constants.

In `@services/chatbot-api/src/tools/create-pylon-issue.ts`:
- Around line 4-7: The Context interface in create-pylon-issue.ts is missing the
isAdmin property used by tests; update the interface named Context to include
isAdmin: boolean and export the interface (export interface Context) so tests
like create-pylon-issue.test.ts can import and pass { userId, orgId, isAdmin }
without type errors.
- Around line 53-60: The fetch call that posts to `${apiUrl}/issues` can hang
because it has no timeout; wrap the request with an AbortController: create a
controller, start a setTimeout (e.g., 5s or configurable) that calls
controller.abort(), pass controller.signal into the fetch options used when
constructing `res`, and clear the timeout after fetch completes; also handle the
abort case (check for an AbortError or treat fetch rejection as a timeout) in
the surrounding function (the code around the POST to `${apiUrl}/issues` that
creates `res`) so the caller receives a timely error instead of waiting
indefinitely.

In `@services/chatbot-api/src/tools/search-docs.ts`:
- Around line 5-18: The tool currently defines its Zod schema under the wrong
key: change the "parameters" property on the object passed to tool(...) to
"inputSchema" so the exported searchDocsTool exposes the schema as
searchDocsTool.inputSchema (leave the execute, description and other fields
intact); do not add a .definition wrapper or try to set a tool name on the
object (the tool name is the key when registering tools), and ensure the Zod
shape remains z.object({ query: z.string().describe(...) }) so callers/tests can
access searchDocsTool.inputSchema.

In `@services/chatbot-api/tests/agent.test.ts`:
- Around line 3-16: The test's vi.mock currently targets '@anthropic-ai/sdk' but
the code under test imports the Vercel provider '@ai-sdk/anthropic', so update
the mock target to '@ai-sdk/anthropic' and shape the mock to match the API used
in index.ts; replace the vi.mock module string and ensure the mocked export
surface matches the actual consumer calls (e.g., the methods in index.ts that
call the Anthropic client instead of messages.create) so tests stub the correct
functions.
- Around line 31-47: Tests import createAgent from agent.ts but agent.ts only
exports SYSTEM_PROMPT, so either add and export a createAgent function from
agent.ts that constructs and returns an object { runner, tools } where runner is
defined and tools exposes size and requiresConfirmation(name) (so tools.size and
tools.requiresConfirmation('search_docs'|'create_pylon_issue') work), or change
the tests to import the actual factory exported from index.ts; ensure the
exported createAgent signature and behavior match the tests (createAgent -> {
runner, tools }) and export it alongside SYSTEM_PROMPT.

In `@services/chatbot-api/tests/tools/create-pylon-issue.test.ts`:
- Line 3: The test is importing AgentContext from a non-existent package
(`@scalekit/agentkit`); remove that import and instead reference the local Context
type used by create-pylon-issue.ts (or export the Context type from
create-pylon-issue.ts and import it into the test). Update the test file to use
the exported Context type (or declare a matching local Context interface)
wherever AgentContext is currently used so types align with the
create-pylon-issue functions.
- Around line 49-56: Test calls pass a second ctx argument to
createPylonIssueTool.execute even though the returned tool's execute signature
only accepts the input object (execute: async ({ question, conversation_summary,
user_email })). Remove the extra ctx argument from createPylonIssueTool.execute
calls (and similar calls in this test file) so each call only passes the input
object; rely on the tool factory closure to capture ctx as intended.
- Around line 30-39: The tests currently access properties directly on the
factory createPylonIssueTool; call the factory with a test context first (e.g.,
const tool = createPylonIssueTool(ctx)) and then assert against tool.definition
and tool.requiresConfirmation; ensure the ctx you pass provides any required
fields (or use an existing test helper/mock context) so the returned tool has
definition and requiresConfirmation to inspect.

In `@services/chatbot-api/tests/tools/search-docs.test.ts`:
- Around line 15-20: The test sets process.env.DOCS_BASE_URL in beforeEach but
doesn't restore or delete it in afterEach, risking test pollution; update the
test to save the original value (e.g., const _origDocsBase =
process.env.DOCS_BASE_URL) in beforeEach and then either delete
process.env.DOCS_BASE_URL or restore the saved value in afterEach (in addition
to vi.unstubAllGlobals()) so process.env.DOCS_BASE_URL is not leaked to other
tests; reference the existing beforeEach, afterEach, process.env.DOCS_BASE_URL,
and vi.unstubAllGlobals symbols when making the change.
- Around line 36-46: The test asserts a non-existent optional topic parameter on
searchDocsTool; either remove the test or add topic support: update the
search-docs.ts schema to include topic?: z.string(), update the searchDocsTool
(the code that builds the payload) to pass topic through to searchAlgolia, and
change search-algolia.ts (searchAlgolia) to accept a topic parameter and
incorporate it into the request (e.g., choose the Algolia index or URL fragment
based on topic) so the fetch call uses a topic-specific endpoint; ensure
signatures for searchDocsTool.execute and searchAlgolia match and update any
callers/mocks accordingly.

In `@services/chatbot-api/tsconfig.json`:
- Around line 4-5: The tsconfig currently uses "module": "ESNext" and
"moduleResolution": "bundler", which is intended for bundler environments;
update the TypeScript config to use Node's native ESM resolution by changing the
"module" value to "NodeNext" and "moduleResolution" to "NodeNext" in
tsconfig.json so the compiler enforces NodeNext semantics (no code changes
needed since imports already include .js extensions).

In `@src/components/chatbot/ChatbotWidget.vue`:
- Around line 34-50: The keydown handler registered inside onMounted using
document.addEventListener is never removed causing a leak; extract the handler
into a named function (e.g., handleKeydown) and register that function in
onMounted, then call document.removeEventListener('keydown', handleKeydown)
inside onUnmounted; also remove or clear the exposed global (window.ScalekitChat
and window.__scalekitChatUser) in onUnmounted to fully clean up.
- Around line 204-219: The trigger button currently shows the Mac-specific "⌘K"
label while the keyboard handler accepts both metaKey and ctrlKey; update the UI
in ChatbotWidget.vue (button with id="sk-trigger" and its <kbd> element) to
display a cross-platform shortcut (e.g., "⌘K / Ctrl+K" or detect platform and
show "⌘K" on macOS and "Ctrl+K" elsewhere) so Windows/Linux users see the
correct hint; implement the platform check where the component initializes (or
use a computed property) and bind its result into the <kbd> content so the
displayed shortcut matches the keyboard handler behavior.

In `@src/components/chatbot/renderMarkdown.ts`:
- Around line 46-48: The link URL is inserted into the href without escaping,
enabling attribute-breaking XSS; update the code that builds anchor tags (the
linkMatch handling in renderMarkdown.ts and the inlineMd function) to escape or
sanitize the URL before interpolation (e.g., use a dedicated
escapeAttr/escapeUrl helper or encodeURI/encodeURIComponent as appropriate) and
use that escaped value in href while continuing to use escHtml for the link
text; ensure the helper only allows http/https and properly encodes quotes and
other special characters before assigning to the href attribute.

In `@src/components/overrides/Head.astro`:
- Around line 3-10: Head.astro currently imports and mounts the interactive
ChatbotWidget (symbol: ChatbotWidget) which places a Vue island inside the
document <head>; remove the <ChatbotWidget client:load /> usage and its import
from Head.astro so Head.astro only contains metadata/Default slot, then add the
import and <ChatbotWidget client:load /> into your body/layout override (e.g.,
PageFrame.astro or the component that renders the page body) so the widget is
mounted in the document body where client:load hydration is valid.

In `@src/components/ProviderCatalog.astro`:
- Around line 12-66: CATEGORY_MAP and AUTH_MAP are hardcoded in
ProviderCatalog.astro; extract them to a centralized config to reduce
duplication and maintenance. Create a shared module (e.g., a config or utils
export) that exports CATEGORY_MAP and AUTH_MAP, update ProviderCatalog.astro to
import those symbols instead of declaring them inline, and optionally add a
loader that can derive mappings from connector frontmatter/MDX metadata so new
connectors auto-populate categories/auth types.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 7d5ffae9-fe1f-49d9-8c72-124dd1c89c04

📥 Commits

Reviewing files that changed from the base of the PR and between de5b8cd and a8f3438.

⛔ Files ignored due to path filters (3)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • public/redesign/inbound-outbound.png is excluded by !**/*.png
  • services/chatbot-api/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (35)
  • .firebaserc
  • .github/workflows/firebase-hosting-pull-request.yml
  • .gitignore
  • astro.config.mjs
  • docs/superpowers/specs/2026-03-26-website-redesign-design.md
  • firebase.json
  • package.json
  • project-docs/2026-03-30-docs-chatbot-flywheel-design.md
  • project-docs/plans/2026-03-30-chatbot-api-plan-a.md
  • public/redesign/index.html
  • render.yaml
  • services/chatbot-api/.env.example
  • services/chatbot-api/README.md
  • services/chatbot-api/package.json
  • services/chatbot-api/src/agent.ts
  • services/chatbot-api/src/index.ts
  • services/chatbot-api/src/lib/search-algolia.ts
  • services/chatbot-api/src/tools/create-pylon-issue.ts
  • services/chatbot-api/src/tools/search-docs.ts
  • services/chatbot-api/tests/agent.test.ts
  • services/chatbot-api/tests/tools/create-pylon-issue.test.ts
  • services/chatbot-api/tests/tools/search-docs.test.ts
  • services/chatbot-api/tsconfig.json
  • services/chatbot-api/vitest.config.ts
  • src/components/ProviderCatalog.astro
  • src/components/ToolList.astro
  • src/components/chatbot/ChatbotWidget.vue
  • src/components/chatbot/renderMarkdown.ts
  • src/components/overrides/Head.astro
  • src/components/templates/coding-agents/_mcp-auth-claude-code.mdx
  • src/content/docs/guides/integrations/agent-connectors/index.mdx
  • src/content/docs/reference/agent-connectors/snowflakekeyauth.mdx
  • src/data/agent-connectors/snowflakekeyauth.ts
  • src/pages/redesign.astro
  • src/types/agent-connectors.ts

Comment on lines +21 to +24
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install -g pnpm
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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify Node/pnpm version declarations used across deployment and CI config.
# Expected: consistent Node major and explicit pnpm version strategy.

rg -nP "node-version:|NODE_VERSION|pnpm/action-setup|npm install -g pnpm|packageManager" \
  .github/workflows/firebase-hosting-pull-request.yml render.yaml package.json services/chatbot-api/package.json

Repository: scalekit-inc/developer-docs

Length of output: 283


🏁 Script executed:

#!/bin/bash
# Get the actual NODE_VERSION value and surrounding context from render.yaml
cat render.yaml | sed -n '15,25p'

Repository: scalekit-inc/developer-docs

Length of output: 192


🏁 Script executed:

#!/bin/bash
# Check if package.json specifies a packageManager field
rg -A 2 '"packageManager"' package.json 2>/dev/null || echo "No packageManager field found"

Repository: scalekit-inc/developer-docs

Length of output: 100


🏁 Script executed:

#!/bin/bash
# Get full pnpm installation line and any surrounding context
rg -B 2 -A 2 'npm install -g pnpm' .github/workflows/firebase-hosting-pull-request.yml

Repository: scalekit-inc/developer-docs

Length of output: 191


🏁 Script executed:

#!/bin/bash
# Check for .npmrc or pnpm version constraints
fd -type f -name ".npmrc" -o -name ".pnpmrc" | head -5

Repository: scalekit-inc/developer-docs

Length of output: 241


🏁 Script executed:

#!/bin/bash
# Search for pnpm version references in the codebase
rg "pnpm|pnpm@" package.json package-lock.json pnpm-lock.yaml 2>/dev/null | head -20

Repository: scalekit-inc/developer-docs

Length of output: 381


🏁 Script executed:

#!/bin/bash
# Check if there's a pnpm-lock.yaml to see what pnpm version generated it
head -3 pnpm-lock.yaml 2>/dev/null || echo "No pnpm-lock.yaml found"

Repository: scalekit-inc/developer-docs

Length of output: 104


Align preview CI runtime with deployment settings.

CI uses Node 22 while production is pinned to Node 20, and pnpm is installed unpinned globally. Even though both versions are supported by the project, this divergence can mask Node 20-specific issues and make preview builds non-reproducible with the actual deployment environment.

🔧 Suggested workflow change
       - uses: actions/setup-node@v4
         with:
-          node-version: '22'
-      - run: npm install -g pnpm
+          node-version: '20'
+      - uses: pnpm/action-setup@v4
+        with:
+          version: 10.33.0
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install -g pnpm
- uses: actions/setup-node@v4
with:
node-version: '20'
- uses: pnpm/action-setup@v4
with:
version: 10.33.0
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/firebase-hosting-pull-request.yml around lines 21 - 24,
The workflow currently sets actions/setup-node@v4 with node-version: '22' and
installs pnpm globally (run: npm install -g pnpm); change node-version to '20'
to match production and stop using an unpinned global pnpm install—either pin a
specific pnpm version (e.g., npm install -g pnpm@<version>) or replace the
global install with the official pnpm setup action (pnpm/action-setup)
specifying a fixed version, updating the lines referencing
actions/setup-node@v4, node-version, and run: npm install -g pnpm accordingly.

Comment thread .gitignore
Comment on lines +48 to +51
.firebase/
.superpowers/
docs/superpowers/
.worktrees
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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if docs/superpowers/ contains files that should be tracked
fd . docs/superpowers --type f 2>/dev/null | head -20
# Check if any files in docs/superpowers/ are already tracked
git ls-files docs/superpowers/ 2>/dev/null | head -20

Repository: scalekit-inc/developer-docs

Length of output: 131


Remove docs/superpowers/ from .gitignore to track design spec files.

The design spec at docs/superpowers/specs/2026-03-26-website-redesign-design.md exists and is part of this PR. Adding docs/superpowers/ to .gitignore will prevent tracking these files. Remove this entry to allow git to track the design documentation, or if these are internal-only working documents, use a more specific ignore pattern and document the reason.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitignore around lines 48 - 51, Remove the broad ignore entry
"docs/superpowers/" from .gitignore so design spec files (e.g.,
docs/superpowers/specs/2026-03-26-website-redesign-design.md) are tracked; if
you intend to ignore only generated or temporary files inside that folder,
replace the entry with a more specific pattern (for example targeting build
artifacts) and add a brief comment explaining why the narrower pattern is used.

Comment on lines +64 to +87
```
/ Homepage (two-door entry, agents-primary)
/for-agents/ Auth for Agents documentation root
quickstart 10-minute Gmail agent walkthrough
overview What Agent Auth is and how it works
connected-accounts Let users connect their accounts
token-vault How token storage and refresh works
tool-calling Using tokens in agent tool calls
frameworks/ LangChain, OpenAI, Anthropic, Vercel AI, Google ADK, Mastra
providers/ 100+ OAuth provider integration guides
/for-apps/ Auth for Apps documentation root
quickstart Full stack auth in minutes
overview Products and when to use each
full-stack-auth/ Login, session, orgs, RBAC
modular-sso/ SAML/OIDC with enterprise IdPs
modular-scim/ User provisioning from Okta, Azure AD
mcp-auth/ Securing your MCP server
api-auth/ M2M tokens and API keys
/sdks/ Shared across both product lines
node / python / go / java / expo
/apis/ REST API reference (Scalar-powered)
/pricing/ Tabbed pricing — Agent Auth | App Auth
/changelog/ Engineering blog-style release notes
```
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 | 🔵 Trivial

Add language identifier to code blocks for consistency.

Several structure/hierarchy code blocks are missing language identifiers. While this is a design spec, adding identifiers improves readability.

Suggested fix
-```
+```text
 /                        Homepage (two-door entry, agents-primary)
 /for-agents/             Auth for Agents documentation root

Apply similarly to blocks at lines 91, 127, 142, 194, and 209.

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 64-64: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/superpowers/specs/2026-03-26-website-redesign-design.md` around lines 64
- 87, Update the fenced code blocks that show the site hierarchy so they include
a language identifier (e.g., change ``` to ```text); specifically update the
block that begins with "/                        Homepage (two-door entry,
agents-primary)" and the other similar hierarchy blocks (the ones showing
"/for-agents/", "/for-apps/", "/sdks/", "/apis/", "/pricing/", "/changelog/") so
every triple-backtick fence uses ```text for consistent rendering and
readability.

Comment thread firebase.json Outdated
Comment on lines +1 to +6
{
"hosting": {
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
}
}
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 | 🔵 Trivial

Consider adding security headers and caching configuration.

The basic Firebase Hosting config is correct, but consider adding headers for security and performance:

Optional enhancement
{
  "hosting": {
    "public": "dist",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "headers": [
      {
        "source": "**/*.@(js|css)",
        "headers": [
          { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
        ]
      },
      {
        "source": "**",
        "headers": [
          { "key": "X-Content-Type-Options", "value": "nosniff" },
          { "key": "X-Frame-Options", "value": "DENY" }
        ]
      }
    ]
  }
}

This is optional if Firebase Hosting is only used for PR previews rather than production.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@firebase.json` around lines 1 - 6, Update the hosting configuration in
firebase.json to add a "headers" array under the existing "hosting" object: add
cache-control rules for static assets (e.g., source patterns like
"**/*.@(js|css)" with Cache-Control: public, max-age=31536000, immutable) and
security headers for all responses (e.g., X-Content-Type-Options: nosniff and
X-Frame-Options: DENY using source "**"); modify the "hosting" object (the
existing public/ignore keys) to include this "headers" section so Firebase
Hosting serves the suggested caching and security headers.

Comment on lines +321 to +326
## Open questions (non-blocking)

1. **CDN hosting**: Where does `chatbot.js` get hosted? (scalekit CDN, npm + jsDelivr, or self-hosted on Firebase?)
2. **Session persistence**: InMemorySessionStore works for MVP single-instance. If the backend scales horizontally, migrate to Redis.
3. **Webhook security**: Pylon webhook endpoint needs signature verification to prevent spoofing.
4. **Rate limiting**: Chatbot `/api/chat` endpoint needs rate limiting per IP for anonymous users.
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 | 🔵 Trivial

Security items documented as open questions — ensure they're tracked.

The webhook signature verification and rate limiting are correctly identified as requirements. Consider creating issues to track these before production deployment.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@project-docs/2026-03-30-docs-chatbot-flywheel-design.md` around lines 321 -
326, The doc marks webhook signature verification and rate limiting as open
questions but they must be tracked—create two concrete issues: one for
implementing Pylon webhook signature verification (reference the Pylon webhook
endpoint and add acceptance criteria: verify signature header, reject invalid
requests, include tests and docs, assign owner and priority) and one for adding
rate limiting to the chatbot /api/chat endpoint for anonymous users (reference
/api/chat and InMemorySessionStore, acceptance criteria: per-IP limits,
configurable thresholds, fallback for authenticated users, tests, and deployment
checklist); also create an issue to decide/track hosting for chatbot.js
(reference chatbot.js and CDN vs npm/jsDelivr vs Firebase) so all
security/deployment decisions are tracked before production.

Comment on lines +34 to +50
onMounted(() => {
document.addEventListener('keydown', (e) => {
if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
e.preventDefault()
isOpen.value = !isOpen.value
if (isOpen.value) nextTick(() => document.getElementById('sk-input')?.focus())
}
if (e.key === 'Escape') isOpen.value = false
})

// Expose identify API for host app to pass user context
;(window as any).ScalekitChat = {
identify: (user: { email?: string; name?: string; orgId?: string; orgName?: string }) => {
;(window as any).__scalekitChatUser = user
},
}
})
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.

⚠️ Potential issue | 🟡 Minor

Event listener is never removed — potential memory leak.

The keydown listener added in onMounted is never cleaned up. If this component is ever unmounted and remounted (e.g., in a SPA navigation scenario), listeners will accumulate.

🧹 Proposed fix: use onUnmounted for cleanup
-import { ref, computed, nextTick, watch, onMounted } from 'vue'
+import { ref, computed, nextTick, watch, onMounted, onUnmounted } from 'vue'
 import { renderMarkdown } from './renderMarkdown'

 // ...

+function handleKeydown(e: KeyboardEvent) {
+  if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
+    e.preventDefault()
+    isOpen.value = !isOpen.value
+    if (isOpen.value) nextTick(() => document.getElementById('sk-input')?.focus())
+  }
+  if (e.key === 'Escape') isOpen.value = false
+}

 onMounted(() => {
-  document.addEventListener('keydown', (e) => {
-    if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
-      e.preventDefault()
-      isOpen.value = !isOpen.value
-      if (isOpen.value) nextTick(() => document.getElementById('sk-input')?.focus())
-    }
-    if (e.key === 'Escape') isOpen.value = false
-  })
+  document.addEventListener('keydown', handleKeydown)

   // Expose identify API for host app to pass user context
   ;(window as any).ScalekitChat = {
     identify: (user: { email?: string; name?: string; orgId?: string; orgName?: string }) => {
       ;(window as any).__scalekitChatUser = user
     },
   }
 })

+onUnmounted(() => {
+  document.removeEventListener('keydown', handleKeydown)
+})
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
onMounted(() => {
document.addEventListener('keydown', (e) => {
if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
e.preventDefault()
isOpen.value = !isOpen.value
if (isOpen.value) nextTick(() => document.getElementById('sk-input')?.focus())
}
if (e.key === 'Escape') isOpen.value = false
})
// Expose identify API for host app to pass user context
;(window as any).ScalekitChat = {
identify: (user: { email?: string; name?: string; orgId?: string; orgName?: string }) => {
;(window as any).__scalekitChatUser = user
},
}
})
import { ref, computed, nextTick, watch, onMounted, onUnmounted } from 'vue'
import { renderMarkdown } from './renderMarkdown'
// ... other code ...
function handleKeydown(e: KeyboardEvent) {
if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
e.preventDefault()
isOpen.value = !isOpen.value
if (isOpen.value) nextTick(() => document.getElementById('sk-input')?.focus())
}
if (e.key === 'Escape') isOpen.value = false
}
onMounted(() => {
document.addEventListener('keydown', handleKeydown)
// Expose identify API for host app to pass user context
;(window as any).ScalekitChat = {
identify: (user: { email?: string; name?: string; orgId?: string; orgName?: string }) => {
;(window as any).__scalekitChatUser = user
},
}
})
onUnmounted(() => {
document.removeEventListener('keydown', handleKeydown)
})
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/chatbot/ChatbotWidget.vue` around lines 34 - 50, The keydown
handler registered inside onMounted using document.addEventListener is never
removed causing a leak; extract the handler into a named function (e.g.,
handleKeydown) and register that function in onMounted, then call
document.removeEventListener('keydown', handleKeydown) inside onUnmounted; also
remove or clear the exposed global (window.ScalekitChat and
window.__scalekitChatUser) in onUnmounted to fully clean up.

Comment on lines +204 to +219
<button id="sk-trigger" aria-label="Ask the docs AI (⌘K)" @click="open">
<svg
width="13"
height="13"
viewBox="0 0 24 24"
fill="none"
stroke="#6366f1"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
</svg>
<span>Ask AI</span>
<kbd>⌘K</kbd>
</button>
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 | 🔵 Trivial

Keyboard shortcut display is Mac-specific.

The trigger button shows ⌘K but the keyboard handler supports both metaKey (Mac) and ctrlKey (Windows/Linux). Windows users may not recognize the ⌘ symbol.

💡 Optional: detect platform for shortcut display
+const isMac = computed(() => 
+  typeof navigator !== 'undefined' && /Mac|iPod|iPhone|iPad/.test(navigator.platform)
+)

 <!-- Trigger pill -->
-<button id="sk-trigger" aria-label="Ask the docs AI (⌘K)" `@click`="open">
+<button id="sk-trigger" :aria-label="`Ask the docs AI (${isMac ? '⌘' : 'Ctrl+'}K)`" `@click`="open">
   <!-- ... -->
-  <kbd>⌘K</kbd>
+  <kbd>{{ isMac ? '⌘' : 'Ctrl+' }}K</kbd>
 </button>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<button id="sk-trigger" aria-label="Ask the docs AI (⌘K)" @click="open">
<svg
width="13"
height="13"
viewBox="0 0 24 24"
fill="none"
stroke="#6366f1"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
</svg>
<span>Ask AI</span>
<kbd>⌘K</kbd>
</button>
const isMac = computed(() =>
typeof navigator !== 'undefined' && /Mac|iPod|iPhone|iPad/.test(navigator.platform)
)
Suggested change
<button id="sk-trigger" aria-label="Ask the docs AI (⌘K)" @click="open">
<svg
width="13"
height="13"
viewBox="0 0 24 24"
fill="none"
stroke="#6366f1"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
</svg>
<span>Ask AI</span>
<kbd>K</kbd>
</button>
<button id="sk-trigger" :aria-label="`Ask the docs AI (${isMac ? '' : 'Ctrl+'}K)`" `@click`="open">
<svg
width="13"
height="13"
viewBox="0 0 24 24"
fill="none"
stroke="#6366f1"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
</svg>
<span>Ask AI</span>
<kbd>{{ isMac ? '⌘' : 'Ctrl+' }}K</kbd>
</button>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/chatbot/ChatbotWidget.vue` around lines 204 - 219, The trigger
button currently shows the Mac-specific "⌘K" label while the keyboard handler
accepts both metaKey and ctrlKey; update the UI in ChatbotWidget.vue (button
with id="sk-trigger" and its <kbd> element) to display a cross-platform shortcut
(e.g., "⌘K / Ctrl+K" or detect platform and show "⌘K" on macOS and "Ctrl+K"
elsewhere) so Windows/Linux users see the correct hint; implement the platform
check where the component initializes (or use a computed property) and bind its
result into the <kbd> content so the displayed shortcut matches the keyboard
handler behavior.

Comment on lines +46 to +48
const linkMatch = line.match(/^\[([^\]]+)\]\((https?:\/\/[^)]+)\)/)
if (linkMatch) {
html += `<a class="sk-source-link" href="${linkMatch[2]}" target="_blank" rel="noopener">${escHtml(linkMatch[1])}</a>`
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.

⚠️ Potential issue | 🟠 Major

Escape URL in href attribute to prevent XSS.

The URL from Algolia search results is inserted directly into the href attribute without escaping. While the regex limits URLs to http/https, a malicious URL could still contain unescaped quotes or other characters that break out of the attribute context.

🛡️ Proposed fix: escape href attribute
+function escAttr(s: string): string {
+  return s.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;')
+}

 // Inside sources section
 if (inSources) {
   if (line.trim() === '') {
     i++
     continue
   }
   const linkMatch = line.match(/^\[([^\]]+)\]\((https?:\/\/[^)]+)\)/)
   if (linkMatch) {
-    html += `<a class="sk-source-link" href="${linkMatch[2]}" target="_blank" rel="noopener">${escHtml(linkMatch[1])}</a>`
+    html += `<a class="sk-source-link" href="${escAttr(linkMatch[2])}" target="_blank" rel="noopener">${escHtml(linkMatch[1])}</a>`
   } else {

Also apply to the inlineMd function on line 10-13:

     .replace(
       /\[([^\]]+)\]\((https?:\/\/[^)]+)\)/g,
-      '<a href="$2" target="_blank" rel="noopener">$1</a>',
+      (_, text, url) => `<a href="${escAttr(url)}" target="_blank" rel="noopener">${text}</a>`,
     )
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/chatbot/renderMarkdown.ts` around lines 46 - 48, The link URL
is inserted into the href without escaping, enabling attribute-breaking XSS;
update the code that builds anchor tags (the linkMatch handling in
renderMarkdown.ts and the inlineMd function) to escape or sanitize the URL
before interpolation (e.g., use a dedicated escapeAttr/escapeUrl helper or
encodeURI/encodeURIComponent as appropriate) and use that escaped value in href
while continuing to use escHtml for the link text; ensure the helper only allows
http/https and properly encodes quotes and other special characters before
assigning to the href attribute.

Comment thread src/components/overrides/Head.astro Outdated
Comment on lines +3 to +10
import ChatbotWidget from '../chatbot/ChatbotWidget.vue'
---

<Default>
<slot />
</Default>

<ChatbotWidget client:load />
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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

In Astro Starlight, is rendering a Vue component with client:loadfromsrc/components/overrides/Head.astro supported, or should interactive UI components be mounted in body/layout overrides (e.g., PageFrame)?

💡 Result:

Rendering a hydrated Vue island (e.g., <MyWidget client:load />) from src/components/overrides/Head.astro is not the intended/supported pattern in Starlight, because Head.astro is rendered inside <head> and Starlight explicitly says head overrides “should only include elements permitted inside <head>. Interactive UI islands typically render a DOM mounting element, which would be invalid in <head>. [1]

Use Head.astro (or preferably Starlight’s head config/frontmatter) for metadata, links, styles, and scripts—not UI. [1][2]

If you need interactive UI, mount it from a body/layout override such as PageFrame (or other layout/body components), which is designed to wrap the page content and is the appropriate place for UI structure. [1]

Sources:
[1] Starlight Overrides Reference (Head + PageFrame) (starlight.astro.build)
[2] Starlight Configuration Reference (head behavior / when to override Head) (starlight.astro.build)

Citations:


Mount the chatbot in a body/layout override, not Head.astro.

Rendering interactive Vue islands from the head override is not supported in Starlight. Head.astro renders inside <head> and should contain only metadata elements; interactive UI components render DOM mounting elements, which are invalid in <head> and can cause hydration failures. Move <ChatbotWidget client:load /> to a body/layout override (e.g., PageFrame.astro) instead.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/overrides/Head.astro` around lines 3 - 10, Head.astro
currently imports and mounts the interactive ChatbotWidget (symbol:
ChatbotWidget) which places a Vue island inside the document <head>; remove the
<ChatbotWidget client:load /> usage and its import from Head.astro so Head.astro
only contains metadata/Default slot, then add the import and <ChatbotWidget
client:load /> into your body/layout override (e.g., PageFrame.astro or the
component that renders the page body) so the widget is mounted in the document
body where client:load hydration is valid.

Comment thread src/components/ProviderCatalog.astro Outdated
Comment on lines +12 to +66
const CATEGORY_MAP: Record<string, string> = {
gmail: 'Google Workspace',
googledrive: 'Google Workspace',
googlecalendar: 'Google Workspace',
googlesheets: 'Google Workspace',
googledocs: 'Google Workspace',
googleslides: 'Google Workspace',
googlemeet: 'Google Workspace',
googleforms: 'Google Workspace',
google_ads: 'Google Workspace',
outlook: 'Microsoft 365',
onedrive: 'Microsoft 365',
microsoftword: 'Microsoft 365',
microsoftexcel: 'Microsoft 365',
microsoftteams: 'Microsoft 365',
sharepoint: 'Microsoft 365',
onenote: 'Microsoft 365',
slack: 'Communication',
discord: 'Communication',
zoom: 'Communication',
vimeo: 'Communication',
youtube: 'Communication',
intercom: 'Communication',
jira: 'Project Management',
linear: 'Project Management',
asana: 'Project Management',
monday: 'Project Management',
clickup: 'Project Management',
trello: 'Project Management',
notion: 'Project Management',
confluence: 'Project Management',
salesforce: 'CRM & Sales',
hubspot: 'CRM & Sales',
pipedrive: 'CRM & Sales',
apollo: 'CRM & Sales',
attio: 'CRM & Sales',
chorus: 'CRM & Sales',
gong: 'CRM & Sales',
attention: 'CRM & Sales',
github: 'Data & Dev',
gitlab: 'Data & Dev',
figma: 'Data & Dev',
snowflake: 'Data & Dev',
snowflakekeyauth: 'Data & Dev',
bigquery: 'Data & Dev',
dropbox: 'Data & Dev',
}

const AUTH_MAP: Record<string, string> = {
snowflakekeyauth: 'Bearer Token',
exa: 'API Key',
harvestapi: 'API Key',
'brave-search': 'API Key',
figma: 'API Key',
}
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 | 🔵 Trivial

Hardcoded category and auth maps work for PoC but consider centralization.

The CATEGORY_MAP and AUTH_MAP are functional for the current set of connectors. As more connectors are added, consider extracting these mappings to a shared configuration file or deriving them from frontmatter metadata in the connector MDX files to reduce maintenance overhead.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ProviderCatalog.astro` around lines 12 - 66, CATEGORY_MAP and
AUTH_MAP are hardcoded in ProviderCatalog.astro; extract them to a centralized
config to reduce duplication and maintenance. Create a shared module (e.g., a
config or utils export) that exports CATEGORY_MAP and AUTH_MAP, update
ProviderCatalog.astro to import those symbols instead of declaring them inline,
and optionally add a loader that can derive mappings from connector
frontmatter/MDX metadata so new connectors auto-populate categories/auth types.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/components/ToolList.astro`:
- Line 14: Replace fragile raw anchor ids that use tool.name (the details
element with id={tool.name} and the other occurrences around the 281-286 range)
with a stable slugified identifier: create or use a slug helper (e.g., slugify
or a utility like encodeURIComponent) and set id={slugify(tool.name)} (or
id={slugify(tool.id ?? tool.name)} to prefer an explicit id if available)
everywhere anchors are generated so spaces/special characters are normalized and
collisions reduced; update any corresponding anchor links/TOC references to use
the same slug helper.
- Around line 28-44: The params grid in ToolList.astro renders tabular data with
divs; update the JSX to use semantic table markup instead: replace the outer
<div class="params-grid"> and its header <div class="params-header"> with a
<table> containing a <thead> (use <th> for "Name", "Type", "Required",
"Description") and move the mapped rows (tool.params.map(...) inside
ToolList.astro) into a <tbody> where each mapped item produces a <tr> with <td>
cells for param.name, a type cell for param.type (keeping the type-chip class),
a required cell using the is-required / is-optional classes, and a description
<td>; ensure attributes/classes like param-name, type-chip, req-badge, and
param-desc are preserved on the respective <td> elements for styling and that
the mapping still references tool.params.
- Around line 261-297: The TOC injection currently runs only on DOMContentLoaded
so it doesn't re-run after Starlight client-side navigations; replace the
document.addEventListener('DOMContentLoaded', ...) usage with listening for the
'astro:page-load' event (as Footer.astro does) and move the injection logic into
that handler, and add a guard to avoid duplicate injections by checking for an
existing nested UL under the found toolListItem (or a sentinel attribute on
toolListItem) before creating/appending the nestedUl; keep the same element
creation logic (cards query for '.tool-list .tool-card[id]', building nestedUl,
appending to toolListItem) but ensure idempotency on repeated page loads.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5286d1f5-b08f-42cb-bddf-15661f2cf608

📥 Commits

Reviewing files that changed from the base of the PR and between a8f3438 and 55f7a7f.

📒 Files selected for processing (1)
  • src/components/ToolList.astro
📜 Review details
🧰 Additional context used
🧠 Learnings (6)
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to src/components/templates/_*.{tsx,jsx,astro} : Reusable content components in `src/components/templates/` (files starting with `_`) MUST be used and maintained for consistency across integration guides

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Applies to astro.config.mjs : Expressive Code collapsible sections plugin must be enabled in `astro.config.mjs`

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to src/configs/sidebar.config.ts,src/components/overrides/Header.astro,src/components/SecondaryNav.astro : Left Sidebar must be configured via `src/configs/sidebar.config.ts`. Secondary Navigation must be managed through `src/components/overrides/Header.astro` and `src/components/SecondaryNav.astro`. Changes to navigation structure MUST be coordinated across both configurations

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-02-26T07:21:37.207Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/googlesheets.mdx:89-131
Timestamp: 2026-02-26T07:21:37.207Z
Learning: In src/content/docs/reference/agent-connectors/** MDX files, tool headings (e.g., `googlesheets_create_spreadsheet`, `googlesheets_get_values`) intentionally use H2 (##) instead of H3 to ensure they appear in the table of contents for easier navigation. This is a deliberate UX choice for agent connector reference pages and should not be flagged as a hierarchy issue.

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-03-25T16:00:29.351Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 531
File: src/content/docs/reference/agent-connectors/granolamcp.mdx:52-58
Timestamp: 2026-03-25T16:00:29.351Z
Learning: In `src/content/docs/reference/agent-connectors/**` (agent-connector reference pages, e.g., granolamcp.mdx), short sequential setup steps (4 items or fewer) may use plain Markdown numbered lists instead of the Starlight `<Steps>` component to avoid visual clutter when the page already contains multiple structured content blocks (tables, details/summary blocks, tool sections). Do not flag or require `<Steps>` for these short setup procedures on agent-connector reference pages.

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-02-25T12:04:06.383Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 445
File: src/pages/apis.astro:63-64
Timestamp: 2026-02-25T12:04:06.383Z
Learning: In the developer-docs repository, all Astro pages are intended to render in light mode. Enforce this by setting localStorage.colorMode = 'light' globally to ensure a consistent light theme across the site, including Scalar API reference pages. This should be treated as a deliberate, project-wide style decision rather than a per-page override; verify no page uses a conflicting color mode and document any exception in developer docs.

Applied to files:

  • src/components/ToolList.astro

<div class="tool-list not-content">
{
tools.map((tool, i) => (
<details class="tool-card" id={tool.name} open={i === 0 || undefined}>
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.

⚠️ Potential issue | 🟡 Minor

Use stable slug IDs instead of raw tool names for anchors.

id={tool.name} can collide or produce fragile anchors (spaces/special chars), which breaks TOC deep links when datasets expand.

Suggested fix
 ---
 import type { Tool } from '../types/agent-connectors'
@@
 const { tools } = Astro.props
+
+const toToolId = (name: string, i: number) =>
+  `tool-${name.toLowerCase().trim().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || i}`
 ---
@@
-    tools.map((tool, i) => (
-      <details class="tool-card" id={tool.name} open={i === 0 || undefined}>
+    tools.map((tool, i) => {
+      const toolId = toToolId(tool.name, i)
+      return (
+      <details class="tool-card" id={toolId} open={i === 0 || undefined}>
@@
-      </details>
-    ))
+      </details>
+    )})
   }
 </div>

Also applies to: 281-286

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` at line 14, Replace fragile raw anchor ids
that use tool.name (the details element with id={tool.name} and the other
occurrences around the 281-286 range) with a stable slugified identifier: create
or use a slug helper (e.g., slugify or a utility like encodeURIComponent) and
set id={slugify(tool.name)} (or id={slugify(tool.id ?? tool.name)} to prefer an
explicit id if available) everywhere anchors are generated so spaces/special
characters are normalized and collisions reduced; update any corresponding
anchor links/TOC references to use the same slug helper.

Comment on lines +28 to +44
<div class="params-grid">
<div class="params-header">
<span>Name</span>
<span>Type</span>
<span>Required</span>
<span>Description</span>
</div>
{tool.params.map((param) => (
<div class="param-row">
<code class="param-name">{param.name}</code>
<span class={`type-chip type-${param.type}`}>{param.type}</span>
<span class={`req-badge ${param.required ? 'is-required' : 'is-optional'}`}>
{param.required ? 'required' : 'optional'}
</span>
<span class="param-desc">{param.description}</span>
</div>
))}
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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, let's look at the file structure and understand the codebase
git ls-files | head -20

Repository: scalekit-inc/developer-docs

Length of output: 638


🏁 Script executed:

# Examine the ToolList.astro file in full context
cat -n src/components/ToolList.astro

Repository: scalekit-inc/developer-docs

Length of output: 11045


🏁 Script executed:

# Search for other table-like components or patterns in the repo
fd -e astro | head -20

Repository: scalekit-inc/developer-docs

Length of output: 818


🏁 Script executed:

# Check if there are accessibility guidelines or configurations
fd -e json | xargs grep -l "a11y\|accessibility\|eslint" 2>/dev/null | head -10

Repository: scalekit-inc/developer-docs

Length of output: 81


🏁 Script executed:

# Check biome.json configuration for accessibility rules
cat biome.json

Repository: scalekit-inc/developer-docs

Length of output: 3446


🏁 Script executed:

# Search for table usage in the codebase
rg "<table" --type astro

Repository: scalekit-inc/developer-docs

Length of output: 100


🏁 Script executed:

# Check if there are any accessibility standards or documentation
find . -name "*access*" -o -name "*a11y*" -o -name "*WCAG*" 2>/dev/null | head -10

Repository: scalekit-inc/developer-docs

Length of output: 517


🏁 Script executed:

# Search for similar grid/data displays in components
rg "grid" src/components --type astro -A 3 | head -40

Repository: scalekit-inc/developer-docs

Length of output: 100


Use semantic table markup for parameter data.

The params grid is tabular data but rendered as <div> elements. Screen readers cannot determine header-to-cell relationships with this structure. Refactor using <table>, <thead>, <tbody>, <tr>, <th>, and <td> to maintain accessibility and semantic HTML.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` around lines 28 - 44, The params grid in
ToolList.astro renders tabular data with divs; update the JSX to use semantic
table markup instead: replace the outer <div class="params-grid"> and its header
<div class="params-header"> with a <table> containing a <thead> (use <th> for
"Name", "Type", "Required", "Description") and move the mapped rows
(tool.params.map(...) inside ToolList.astro) into a <tbody> where each mapped
item produces a <tr> with <td> cells for param.name, a type cell for param.type
(keeping the type-chip class), a required cell using the is-required /
is-optional classes, and a description <td>; ensure attributes/classes like
param-name, type-chip, req-badge, and param-desc are preserved on the respective
<td> elements for styling and that the mapping still references tool.params.

Comment on lines +261 to +297
<script>
// Inject tool names into Starlight's right-sidebar TOC
document.addEventListener('DOMContentLoaded', () => {
const tocNav = document.querySelector<HTMLElement>('starlight-toc nav > ul')
if (!tocNav) return

const toolListLink = Array.from(
tocNav.querySelectorAll<HTMLAnchorElement>(':scope > li a'),
).find((a) => a.getAttribute('href') === '#tool-list')
if (!toolListLink) return
const toolListItem = toolListLink.closest('li')
if (!toolListItem) return

const cards = document.querySelectorAll<HTMLElement>('.tool-list .tool-card[id]')
if (!cards.length) return

const nestedUl = document.createElement('ul')
nestedUl.style.cssText =
'list-style:none;padding-inline-start:1rem;margin:0.25rem 0 0;display:flex;flex-direction:column;gap:0.125rem;'

cards.forEach((card) => {
const name = card.querySelector('.tool-name')?.textContent?.trim() ?? card.id
const li = document.createElement('li')
const a = document.createElement('a')
a.href = `#${card.id}`
a.textContent = name
a.style.cssText =
'font-size:var(--sl-text-xs);font-family:var(--sl-font-system-mono);color:var(--sl-color-gray-2);text-decoration:none;display:block;padding:0.125rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;'
a.addEventListener('mouseenter', () => (a.style.color = 'var(--sl-color-text-accent)'))
a.addEventListener('mouseleave', () => (a.style.color = 'var(--sl-color-gray-2)'))
li.appendChild(a)
nestedUl.appendChild(li)
})

toolListItem.appendChild(nestedUl)
})
</script>
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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify whether client-side navigation/lifecycle hooks are used in this repo.
fd -i 'astro.config.*'
fd -i 'starlight.config.*'
rg -n -C2 'viewTransitions|ClientRouter|astro:page-load|DOMContentLoaded|starlight-toc' --type-add 'astro:*.astro' -tastro -tts -tjs -tmjs -tcjs

Repository: scalekit-inc/developer-docs

Length of output: 132


🏁 Script executed:

#!/bin/bash
# Retry search for astro:page-load, viewTransitions, and DOMContentLoaded
# without the problematic --type-add flag
rg -n 'viewTransitions|ClientRouter|astro:page-load|astro:before-preparation|astro:before-swap' --type-list | head -5
rg -n 'viewTransitions|astro:page-load|astro:before-preparation|astro:before-swap' -t astro -t ts -t js

Repository: scalekit-inc/developer-docs

Length of output: 490


🏁 Script executed:

#!/bin/bash
# Check Astro config for view transitions
cat -n astro.config.mjs | head -40

Repository: scalekit-inc/developer-docs

Length of output: 2320


🏁 Script executed:

#!/bin/bash
# Check if DOMContentLoaded is used elsewhere in .astro files and verify ToolList.astro context
rg -n 'DOMContentLoaded' -t astro -t ts -t js

Repository: scalekit-inc/developer-docs

Length of output: 100


🏁 Script executed:

#!/bin/bash
# Search in astro.config.mjs for viewTransitions
grep -n 'viewTransitions\|ClientRouter\|client:' astro.config.mjs || echo "Not found in astro.config.mjs"

Repository: scalekit-inc/developer-docs

Length of output: 100


🏁 Script executed:

#!/bin/bash
# Search for astro:page-load and DOMContentLoaded across all source files
grep -r 'astro:page-load' src/ || echo "astro:page-load not found"
echo "---"
grep -r 'DOMContentLoaded' src/ || echo "DOMContentLoaded not found"

Repository: scalekit-inc/developer-docs

Length of output: 1688


🏁 Script executed:

#!/bin/bash
# Check if ToolList.astro is the only place with DOMContentLoaded and what its context is
grep -n 'script' src/components/ToolList.astro | head -20
wc -l src/components/ToolList.astro

Repository: scalekit-inc/developer-docs

Length of output: 375


🏁 Script executed:

#!/bin/bash
# Look at the full astro.config.mjs to understand navigation setup
cat -n astro.config.mjs | grep -A5 -B5 'viewTransitions\|integrations\|router'

Repository: scalekit-inc/developer-docs

Length of output: 1011


🏁 Script executed:

#!/bin/bash
# Check Footer.astro script structure for astro:page-load and DOMContentLoaded pattern
grep -A20 -B5 'astro:page-load\|DOMContentLoaded' src/components/overrides/Footer.astro

Repository: scalekit-inc/developer-docs

Length of output: 908


🏁 Script executed:

#!/bin/bash
# Check SecondaryNav.astro (mentioned in learnings) to see if it needs similar treatment
grep -A15 'DOMContentLoaded' src/components/SecondaryNav.astro

Repository: scalekit-inc/developer-docs

Length of output: 660


🏁 Script executed:

#!/bin/bash
# Verify Starlight version and check if view transitions are default
cat astro.config.mjs | grep -A5 'starlight('

Repository: scalekit-inc/developer-docs

Length of output: 234


🏁 Script executed:

#!/bin/bash
# Check if Starlight has view transitions by default or if they're explicitly configured
grep -n 'viewTransitions\|transition' astro.config.mjs || echo "No explicit viewTransitions config"
# Also check if there's documentation or comments about client-side nav expectations
head -100 astro.config.mjs | grep -i 'view\|client\|nav'

Repository: scalekit-inc/developer-docs

Length of output: 105


🏁 Script executed:

#!/bin/bash
# Check which pages/layouts use ToolList.astro component
grep -r 'ToolList' src/ --include='*.astro' --include='*.ts' --include='*.tsx' --include='*.mdx'

Repository: scalekit-inc/developer-docs

Length of output: 278


🏁 Script executed:

#!/bin/bash
# Check the apis.astro page (likely context for ToolList) to understand its lifecycle
head -50 src/pages/apis.astro
grep -n 'ToolList\|viewTransitions' src/pages/apis.astro

Repository: scalekit-inc/developer-docs

Length of output: 1578


🏁 Script executed:

#!/bin/bash
# Check if Astro config has viewTransitions enabled globally (check entire file)
cat astro.config.mjs | grep -i 'viewTransitions\|transitions\|client.*router'
# Also check for Starlight-specific transition settings
grep -A50 'starlight({' astro.config.mjs | head -60

Repository: scalekit-inc/developer-docs

Length of output: 1970


🏁 Script executed:

#!/bin/bash
# Check if SecondaryNav.astro (from learnings) should also use astro:page-load
# per the pattern in Footer.astro
cat -n src/components/SecondaryNav.astro | head -50

Repository: scalekit-inc/developer-docs

Length of output: 2352


🏁 Script executed:

#!/bin/bash
# Verify: does ToolList.astro actually get used on pages that have client-side nav?
# Search for the snowflakekeyauth.mdx file structure
head -20 src/content/docs/reference/agent-connectors/snowflakekeyauth.mdx

Repository: scalekit-inc/developer-docs

Length of output: 645


TOC injection is tied to first-page load only.

Using DOMContentLoaded at Line 263 means this logic won't run after internal client-side navigations (which Starlight enables by default), so nested tool links can disappear on subsequent page transitions. Hook into astro:page-load (and guard against duplicate injection) to match the pattern used in Footer.astro.

Suggested fix
 <script>
-  // Inject tool names into Starlight's right-sidebar TOC
-  document.addEventListener('DOMContentLoaded', () => {
+  const injectToolLinks = () => {
     const tocNav = document.querySelector<HTMLElement>('starlight-toc nav > ul')
     if (!tocNav) return
@@
-    const nestedUl = document.createElement('ul')
+    const existing = toolListItem.querySelector('ul[data-tool-links="true"]')
+    if (existing) existing.remove()
+
+    const nestedUl = document.createElement('ul')
+    nestedUl.dataset.toolLinks = 'true'
@@
-    toolListItem.appendChild(nestedUl)
-  })
+    toolListItem.appendChild(nestedUl)
+  }
+
+  document.addEventListener('DOMContentLoaded', injectToolLinks)
+  document.addEventListener('astro:page-load', injectToolLinks)
 </script>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<script>
// Inject tool names into Starlight's right-sidebar TOC
document.addEventListener('DOMContentLoaded', () => {
const tocNav = document.querySelector<HTMLElement>('starlight-toc nav > ul')
if (!tocNav) return
const toolListLink = Array.from(
tocNav.querySelectorAll<HTMLAnchorElement>(':scope > li a'),
).find((a) => a.getAttribute('href') === '#tool-list')
if (!toolListLink) return
const toolListItem = toolListLink.closest('li')
if (!toolListItem) return
const cards = document.querySelectorAll<HTMLElement>('.tool-list .tool-card[id]')
if (!cards.length) return
const nestedUl = document.createElement('ul')
nestedUl.style.cssText =
'list-style:none;padding-inline-start:1rem;margin:0.25rem 0 0;display:flex;flex-direction:column;gap:0.125rem;'
cards.forEach((card) => {
const name = card.querySelector('.tool-name')?.textContent?.trim() ?? card.id
const li = document.createElement('li')
const a = document.createElement('a')
a.href = `#${card.id}`
a.textContent = name
a.style.cssText =
'font-size:var(--sl-text-xs);font-family:var(--sl-font-system-mono);color:var(--sl-color-gray-2);text-decoration:none;display:block;padding:0.125rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;'
a.addEventListener('mouseenter', () => (a.style.color = 'var(--sl-color-text-accent)'))
a.addEventListener('mouseleave', () => (a.style.color = 'var(--sl-color-gray-2)'))
li.appendChild(a)
nestedUl.appendChild(li)
})
toolListItem.appendChild(nestedUl)
})
</script>
<script>
const injectToolLinks = () => {
const tocNav = document.querySelector<HTMLElement>('starlight-toc nav > ul')
if (!tocNav) return
const toolListLink = Array.from(
tocNav.querySelectorAll<HTMLAnchorElement>(':scope > li a'),
).find((a) => a.getAttribute('href') === '#tool-list')
if (!toolListLink) return
const toolListItem = toolListLink.closest('li')
if (!toolListItem) return
const cards = document.querySelectorAll<HTMLElement>('.tool-list .tool-card[id]')
if (!cards.length) return
const existing = toolListItem.querySelector('ul[data-tool-links="true"]')
if (existing) existing.remove()
const nestedUl = document.createElement('ul')
nestedUl.dataset.toolLinks = 'true'
nestedUl.style.cssText =
'list-style:none;padding-inline-start:1rem;margin:0.25rem 0 0;display:flex;flex-direction:column;gap:0.125rem;'
cards.forEach((card) => {
const name = card.querySelector('.tool-name')?.textContent?.trim() ?? card.id
const li = document.createElement('li')
const a = document.createElement('a')
a.href = `#${card.id}`
a.textContent = name
a.style.cssText =
'font-size:var(--sl-text-xs);font-family:var(--sl-font-system-mono);color:var(--sl-color-gray-2);text-decoration:none;display:block;padding:0.125rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;'
a.addEventListener('mouseenter', () => (a.style.color = 'var(--sl-color-text-accent)'))
a.addEventListener('mouseleave', () => (a.style.color = 'var(--sl-color-gray-2)'))
li.appendChild(a)
nestedUl.appendChild(li)
})
toolListItem.appendChild(nestedUl)
}
document.addEventListener('DOMContentLoaded', injectToolLinks)
document.addEventListener('astro:page-load', injectToolLinks)
</script>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` around lines 261 - 297, The TOC injection
currently runs only on DOMContentLoaded so it doesn't re-run after Starlight
client-side navigations; replace the
document.addEventListener('DOMContentLoaded', ...) usage with listening for the
'astro:page-load' event (as Footer.astro does) and move the injection logic into
that handler, and add a guard to avoid duplicate injections by checking for an
existing nested UL under the found toolListItem (or a sentinel attribute on
toolListItem) before creating/appending the nestedUl; keep the same element
creation logic (cards query for '.tool-list .tool-card[id]', building nestedUl,
appending to toolListItem) but ensure idempotency on repeated page loads.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

♻️ Duplicate comments (3)
src/components/ToolList.astro (3)

14-14: ⚠️ Potential issue | 🟡 Minor

Use stable slugs for tool anchors.

The anchor/TOC flow still keys everything off raw tool.name. That keeps deep links fragile and collision-prone when names contain non-URL-safe characters or duplicates. Generate one slug per tool and reuse it for the <details id>, TOC href, and hash lookup.

Also applies to: 291-307, 318-324

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` at line 14, The code currently uses raw
tool.name as the details id and anchor target (in ToolList.astro), which is
fragile; generate a stable URL-safe slug once (e.g., via a slugify utility or a
new function like generateToolSlug(tool.name) or compute a slug property on each
tool) and use that single slug variable for the <details id={...}>, the TOC
href="#{...}", and any hash-based lookup logic; update references in the
component (including the blocks around the TOC and hash handling at lines
~291-307 and ~318-324) to reuse this slug instead of tool.name to avoid
collisions and unsafe characters.

271-315: ⚠️ Potential issue | 🟠 Major

Initialize TOC/hash behavior on astro:page-load, not only DOMContentLoaded.

Starlight page transitions won’t fire DOMContentLoaded again, so the nested tool links stop being injected after internal navigation. Move the setup into an idempotent init function and run it on astro:page-load as well.

Expected result: ToolList.astro still shows DOMContentLoaded, while the repo already uses astro:page-load patterns for transition-safe hooks elsewhere.

#!/bin/bash
set -e
rg -n 'DOMContentLoaded|astro:page-load' \
  src/components/ToolList.astro \
  src/components/overrides/Footer.astro \
  src/components/SecondaryNav.astro

Also applies to: 328-329

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` around lines 271 - 315, The current code
attaches the TOC injection only inside
document.addEventListener('DOMContentLoaded', ...) so it won't run on Starlight
internal navigations; refactor by extracting the DOM-manipulating block into an
idempotent init function (e.g., initToolListTOC) that first checks/clears
existing nested UL under the '#tool-list' TOC item and then performs the same
querySelector logic (tocNav, toolListLink, cards, nestedUl, etc.), and call that
init function both on DOMContentLoaded and on the 'astro:page-load' event so the
nested links are injected after page transitions as well. Ensure the
click/mouseenter handlers and history.pushState behavior remain unchanged and
that initToolListTOC exits early if nested UL already present to avoid
duplicates.

27-45: ⚠️ Potential issue | 🟠 Major

Render parameter rows with table semantics.

This is tabular data, but the current div grid gives assistive tech no header-to-cell relationship. Use <table>, <thead>, <tbody>, <th>, and <td> here instead of generic divs.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` around lines 27 - 45, The params grid is
tabular data but uses divs, so replace the outer <div class="params-grid"> and
inner header div "params-header" and each "param-row" with proper table
semantics: use <table> wrapping a <thead> with <tr> and <th scope="col"> for
"Name/Type/Required/Description", and a <tbody> where the tool.params.map(...)
renders a <tr> per param with <td> cells (instead of the div.param-row and
spans/code). Keep existing CSS classes (rename or re-target them if needed) such
as param-name/type-chip/req-badge/param-desc on the <th>/<td> elements to
preserve styling, and ensure each generated <tr> from tool.params.map remains
uniquely identifiable if your framework requires keys.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/sync-agent-connectors.js`:
- Around line 559-560: The generator is emitting a sidebar.label for each
agent-connector page (see the lines.push('sidebar:') and lines.push(`  label:
${providerName}`) in scripts/sync-agent-connectors.js) which duplicates the
central sidebar config; remove the unconditional emission of the label — only
emit a sidebar block when you need nested metadata (e.g., a badge) and otherwise
omit both the 'sidebar:' and the `label` line so navigation remains
authoritative in src/configs/sidebar.config.ts.
- Around line 668-669: The cleanup only removes stale .mdx files but new
generation writes .ts modules to dataOutputDir, so orphaned .ts files remain;
update the cleanup logic (the code that iterates stale .mdx under dataOutputDir,
referenced around dataOutputDir and the cleanup block near lines 720-727) to
also remove sibling files with the same basename and other extensions (e.g.,
.ts, .js) when an .mdx is deemed stale, or alternatively compute stale basenames
and delete all matching files in dataOutputDir; ensure you reference
dataOutputDir and the existing cleanup routine so both .mdx and generated .ts
outputs are removed together.

In `@src/components/ToolList.astro`:
- Around line 258-266: The responsive CSS hides the required badge and parameter
description below 48rem; instead of display:none, update the mobile rules for
.params-header and .param-row to use a single-column grid
(grid-template-columns: 1fr) and make .req-badge and .param-desc visible (remove
display:none), forcing them to span the full row (e.g., grid-column: 1 / -1 or
block-level) so they stack under the parameter name; adjust the .params-header
span:nth-child(3)/nth-child(4) rules similarly so header labels remain visible
on small screens.

---

Duplicate comments:
In `@src/components/ToolList.astro`:
- Line 14: The code currently uses raw tool.name as the details id and anchor
target (in ToolList.astro), which is fragile; generate a stable URL-safe slug
once (e.g., via a slugify utility or a new function like
generateToolSlug(tool.name) or compute a slug property on each tool) and use
that single slug variable for the <details id={...}>, the TOC href="#{...}", and
any hash-based lookup logic; update references in the component (including the
blocks around the TOC and hash handling at lines ~291-307 and ~318-324) to reuse
this slug instead of tool.name to avoid collisions and unsafe characters.
- Around line 271-315: The current code attaches the TOC injection only inside
document.addEventListener('DOMContentLoaded', ...) so it won't run on Starlight
internal navigations; refactor by extracting the DOM-manipulating block into an
idempotent init function (e.g., initToolListTOC) that first checks/clears
existing nested UL under the '#tool-list' TOC item and then performs the same
querySelector logic (tocNav, toolListLink, cards, nestedUl, etc.), and call that
init function both on DOMContentLoaded and on the 'astro:page-load' event so the
nested links are injected after page transitions as well. Ensure the
click/mouseenter handlers and history.pushState behavior remain unchanged and
that initToolListTOC exits early if nested UL already present to avoid
duplicates.
- Around line 27-45: The params grid is tabular data but uses divs, so replace
the outer <div class="params-grid"> and inner header div "params-header" and
each "param-row" with proper table semantics: use <table> wrapping a <thead>
with <tr> and <th scope="col"> for "Name/Type/Required/Description", and a
<tbody> where the tool.params.map(...) renders a <tr> per param with <td> cells
(instead of the div.param-row and spans/code). Keep existing CSS classes (rename
or re-target them if needed) such as param-name/type-chip/req-badge/param-desc
on the <th>/<td> elements to preserve styling, and ensure each generated <tr>
from tool.params.map remains uniquely identifiable if your framework requires
keys.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 36151a37-1f17-43ce-99ca-ef115c368bd6

📥 Commits

Reviewing files that changed from the base of the PR and between 55f7a7f and 8fdc7af.

📒 Files selected for processing (5)
  • scripts/sync-agent-connectors.js
  • src/components/ToolList.astro
  • src/content/docs/reference/agent-connectors/figma.mdx
  • src/data/agent-connectors/figma.ts
  • src/types/agent-connectors.ts
📜 Review details
🧰 Additional context used
📓 Path-based instructions (9)
**/*.mdx

📄 CodeRabbit inference engine (.cursorrules)

**/*.mdx: Use clear, descriptive titles that explain the purpose of the document
Include comprehensive descriptions in frontmatter metadata
Organize content with logical heading hierarchy (H2, H3, H4)
Use tableOfContents property in frontmatter when content has multiple sections
Set appropriate sidebar labels for navigation in frontmatter
Use direct instruction writing style with phrases like 'This guide shows you how to...' and 'Create an authorization URL to...'
Use second person perspective ('your application', 'you receive', 'you must') in documentation
Keep sentences concise, aiming for under 25 words per sentence
Explain the 'why' in documentation with phrases like 'This prevents CSRF attacks by...' or 'Use this to validate that...'
Use action verbs in section headings: 'Store session tokens securely', 'Validate the state parameter', 'Exchange authorization code for tokens'
Use present tense for descriptions: 'Scalekit handles the complex authentication flow', 'The SDK provides methods to refresh tokens'
Use future tense for results: 'This will redirect users to...', 'You'll receive a JWT containing...', 'Scalekit returns an authorization code'
Use transition phrases between sections: 'After the user authenticates...', 'Once the state is validated...', 'Let's take a look at how to...'
Write 1-3 opening paragraphs that explain what users will accomplish, provide context about when/why, preview key concepts, and use direct instructional language
Begin introduction sections with a clear statement of what the guide covers and explain the problem being solved
Use collapsible sections in introduction for sequence diagrams, video demonstrations, data models, and JSON examples with appropriate icons
Use numbered format within Steps component: 1. ## Title with all step content indented with exactly 3 spaces
Use action-oriented headings in step-by-step guides within Steps components
Include code examples in all 4 languages (Node.js, Python, Go, Java) within Steps co...

Files:

  • src/content/docs/reference/agent-connectors/figma.mdx

⚙️ CodeRabbit configuration file

**/*.mdx: You are reviewing Scalekit developer documentation written in MDX
(Astro + Starlight framework). Apply ALL of the following checks:

Frontmatter

  • title MUST be ≤ 60 characters and clearly state what the page does.
  • description MUST be ≤ 160 characters, action-oriented, unique per page.
  • sidebar.label MUST be present and ≤ 30 characters.
  • sidebar.order MUST be set on every page that lives inside a section
    with siblings, to enforce the journey order in sidebar.config.ts.
  • Flag any missing prev / next links on pages that are clearly
    part of a sequential flow (e.g., quickstart → implement-login →
    complete-login → manage-session → logout).

Voice & Style (CLAUDE.md standards)

  • Voice: confident, direct, collaborative, instructional.
  • Person: second person only ("you", "your application"). Reject "we",
    "our", "the developer", "the user".
  • Tense: present tense for descriptions; imperative mood for instructions.
  • Flag weasel words: "simply", "just", "easy", "straightforward",
    "obviously", "of course", "note that".
  • Flag passive voice constructions where active voice is clearer.
  • Headings must be sentence case, not Title Case (except proper nouns).
  • No heading should end with a colon or period.

Content structure

  • Journey how-to guides MUST contain numbered <Steps> (Starlight
    component). This does NOT apply to src/content/docs/cookbooks/**
    (blog-style recipes — optional <Steps>, <Tabs> after </Steps> OK;
    see cookbooks path_instructions).
  • Concept pages MUST NOT contain numbered steps — concepts explain, not instruct.
  • API reference pages MUST list parameters in a table with Name / Type /
    Required / Description columns.
  • Every page MUST end with a clear "what's next" signal — either a
    next: frontmatter link, a <LinkCard>, or an explicit paragraph
    pointing the reader forward in the sidebar journey.

Code examples

  • ALL code examples that show SDK usage MUST include all four language
    tabs...

Files:

  • src/content/docs/reference/agent-connectors/figma.mdx
**/*.{yml,yaml,md,mdx}

📄 CodeRabbit inference engine (.cursor/rules/browsecentral-labels.mdc)

**/*.{yml,yaml,md,mdx}: BrowseCentral labels should be maximum 3-5 words - keep concise but add context when needed
BrowseCentral labels should be action-oriented - start with verbs when possible
BrowseCentral labels should be specific and clear - add context when simple labels are ambiguous
BrowseCentral labels should be outcome-focused - describe what users accomplish and the context
BrowseCentral labels should use 'Action + Object' pattern (e.g., 'Invite users', 'Restrict sign-up', 'Set up SCIM')
BrowseCentral labels should use feature names (e.g., 'Enterprise SSO', 'Passwordless quickstart')
BrowseCentral labels should describe task completion (e.g., 'Run migrations', 'Migrate auth', 'Merge identities')
BrowseCentral labels should include specific context when needed (e.g., 'Configure Scalekit MCP server', 'Validate incoming API requests')
BrowseCentral labels should use integration context when applicable (e.g., 'Build MCP auth with your existing auth system')
BrowseCentral labels should avoid instructional prefixes: 'How to', 'Guide to', 'Implement', 'Configure', 'Learn', 'Understand'
BrowseCentral labels should avoid verbose phrases: 'Step-by-step guide', 'Complete tutorial', 'Detailed documentation'
BrowseCentral labels should avoid weak verbs: 'Enable', 'Allow', 'Provide', 'Support'

Files:

  • src/content/docs/reference/agent-connectors/figma.mdx
**/*.{md,mdx}

📄 CodeRabbit inference engine (.cursor/rules/deno-docs-style.mdc)

**/*.{md,mdx}: Use sentence case for all titles and headings in MD/MDX documentation
Keep page titles short and descriptive (3–7 words when possible) in MD/MDX documentation
Use outcome-focused headings that describe results, not categories (e.g., 'Run a script' not 'Scripts')
Avoid gerunds in headings when an imperative works - prefer 'Configure proxies' over 'Configuring proxies'
Keep sidebar labels concise (1–3 words), use sentence case, and focus on outcomes or objects
Use sentence case in sidebar labels without punctuation
Set frontmatter title in sentence case with a clear outcome; description in one sentence (≤160 chars); sidebar.label as shorter form of title; enable tableOfContents on longer pages
Start documentation pages with a one-paragraph overview explaining what the page covers and when to use it
Present the primary use case (80% path) first in documentation, with edge cases later
Use numbered steps for task-focused sections in documentation, with each step beginning with a verb
Break up long documentation sections with subheadings every 3–6 paragraphs
Use asides for important notes, tips, cautions, and references in documentation
Provide runnable, minimal code examples that work as-is in documentation
Prefer CLI-first examples and show file layout when helpful in documentation
Label code blocks with titles for context (e.g., 'Terminal', 'main.ts') in documentation
Keep code block annotations brief and purposeful - annotate only what matters
Use consistent variable and file names across a documentation page
Use descriptive link text in documentation (e.g., 'See permission flags' not 'click here')
Prefer relative links for internal documentation pages and include anchors for section references
Reference APIs consistently using backticks for code, file names, CLI flags, and endpoints
Use backticks for code, file names, CLI flags, and endpoints in documentation
Use lists for options and features in documentation; tables only when comparisons are cleare...

Files:

  • src/content/docs/reference/agent-connectors/figma.mdx
src/content/docs/**/*.mdx

📄 CodeRabbit inference engine (.cursor/rules/starlight-steps-tabs-structure.mdc)

src/content/docs/**/*.mdx: In MDX documentation files, <Steps> must contain one continuous ordered list. Wrap <Steps> around a normal Markdown ordered list such as 1. ## ...
In MDX documentation files, numbered step lines must start at column 0. Do not indent the 1. ##, 2. ##, etc.
In MDX documentation files, any content that belongs to a step must be indented with 3 spaces: paragraphs, bullets, images, <Tabs>, <TabItem>, and fenced code blocks
In MDX documentation files, prefer plain Markdown inside <Steps>. If the content is mostly <Tabs> or other JSX-heavy blocks, use normal section headings instead of <Steps>
In MDX documentation files, when <Tabs> is used inside a step, keep <Tabs>, <TabItem>, </TabItem>, and </Tabs> consistently nested under that step
In MDX documentation files, if a tabs block is not part of a numbered step, place it outside </Steps>

Files:

  • src/content/docs/reference/agent-connectors/figma.mdx
**/*.{js,ts,tsx,jsx,py,java,cs,go,cpp,c,rb,php,swift,kt,scala,rs,m,mm,groovy,gradle,xml,json}

📄 CodeRabbit inference engine (.cursor/rules/comment-standards.mdc)

Comments should not duplicate the code - avoid comments that simply restate what the code does; comments should add value beyond what's obvious from reading the code

Files:

  • src/types/agent-connectors.ts
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
**/*.{js,ts,tsx,jsx,py,java,cs,go,cpp,c,rb,php,swift,kt,scala,rs,m,mm,groovy}

📄 CodeRabbit inference engine (.cursor/rules/comment-standards.mdc)

**/*.{js,ts,tsx,jsx,py,java,cs,go,cpp,c,rb,php,swift,kt,scala,rs,m,mm,groovy}: Good comments do not excuse unclear code - refactor the code to be self-explanatory instead of using comments to explain poorly written code; use better variable names, function names, and code structure
Comments should dispel confusion, not cause it - ensure comments clarify rather than obscure the code's purpose; avoid cryptic or joke comments
Explain unidiomatic code in comments - comment on code that might seem unnecessary or redundant and document why you chose a specific pattern over more common alternatives, especially when it deviates from team conventions
Provide links to the original source of copied code - always attribute code copied from external sources with URLs to Stack Overflow answers, GitHub repositories, or documentation
Include links to external references where helpful - reference standards, RFCs, and official documentation; link to relevant specifications when implementing protocols
Add comments when fixing bugs - document bug fixes with context about the issue, reference issue trackers and bug reports, and explain workarounds and their limitations
Use comments to mark incomplete implementations - use standard formats for TODO, FIXME, and NOTE comments with context about what needs to be done and reference issue trackers when possible
Always document public APIs with function/class comments - explain the purpose, parameters, return values, and exceptions; include usage examples for complex functions
Include file headers with copyright information, license, and authorship - provide a brief description of the file's purpose and document dependencies and requirements

Files:

  • src/types/agent-connectors.ts
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
**/*.{js,ts,tsx,jsx}

📄 CodeRabbit inference engine (.cursor/rules/comment-standards.mdc)

Use JSDoc standards for all function, class, and complex logic comments in JavaScript/TypeScript - include parameter descriptions (@param), return values (@returns), types (@type), and descriptions; document exceptions and edge cases

Files:

  • src/types/agent-connectors.ts
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
**/*.{ts,tsx,js,jsx,go,py,java}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx,js,jsx,go,py,java}: Comments should not duplicate the code; avoid comments that simply restate what the code does. Comments should add value beyond what's obvious. Do not use comments to explain poorly written code; instead, use better variable names and structure. Ensure comments clarify rather than obscure purpose
Use JSDoc/JavaDoc/docstring standards for function, class, and complex logic comments. Include parameter descriptions, return values, types, and descriptions. Document exceptions and edge cases. Include links to external references where helpful (standards, RFCs, official documentation)
Add comments when fixing bugs; reference issue trackers. Use standard formats for TODO, FIXME, and NOTE comments

Files:

  • src/types/agent-connectors.ts
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
**/*.{ts,js,mjs}

⚙️ CodeRabbit configuration file

**/*.{ts,js,mjs}: Do NOT enforce code-commenting style rules on these files.
Specifically, do not flag:

  • Comments that "duplicate" or restate what the code does.
  • Missing comments on bug fixes, workarounds, or issue references.
  • Missing inline documentation or explanatory comments.
    Code comments are at the author's discretion.

Files:

  • src/types/agent-connectors.ts
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
🧠 Learnings (52)
📚 Learning: 2026-02-26T07:18:41.518Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: scripts/sync-agent-connectors.js:0-0
Timestamp: 2026-02-26T07:18:41.518Z
Learning: For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config. Do not rely on or modify sidebar.label in these files; ensure ordering and grouping are defined in the shared sidebar configuration.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-26T07:21:32.951Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/googlesheets.mdx:89-131
Timestamp: 2026-02-26T07:21:32.951Z
Learning: For agent-connectors reference MDX files, use H2 headings (##) for tool sections (e.g., googlesheets_create_spreadsheet, googlesheets_get_values) so they appear in the table of contents. This is a deliberate UX choice and should not be flagged as a hierarchy issue.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-26T07:22:49.128Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/googlesheets.mdx:95-141
Timestamp: 2026-02-26T07:22:49.128Z
Learning: For MDX files under src/content/docs/reference/agent-connectors, parameter tables are auto-generated from JSON API responses by scripts/sync-agent-connectors.js. Do not manually edit the generated MDX files. Update scripts/sync-agent-connectors.js to output a four-column table with headers Name | Type | Required | Description for all parameter tables, ensuring consistency with the coding guidelines. This pattern should apply to all MDX files in that directory.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-13T03:44:16.883Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 489
File: src/content/docs/reference/agent-connectors/youtube.mdx:19-26
Timestamp: 2026-03-13T03:44:16.883Z
Learning: In MDX files under src/content/docs/reference/agent-connectors, specifically simple connector-header div blocks used for the header grid layout (e.g., a 5-column grid with description and logo), treat the absence of a justification comment as acceptable/readable. Do not flag or require a justification comment for these simple header div blocks in agent-connector reference pages.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-26T07:20:42.107Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/googlemeet.mdx:1-87
Timestamp: 2026-02-26T07:20:42.107Z
Learning: In src/content/docs/reference/agent-connectors/**, these auto-generated agent connector reference pages (e.g., googlemeet.mdx) are lookup resources. Do not require or enforce the 'what's next' signal (next link, LinkCard, or concluding paragraph) for these pages; treat them as non-sequential references produced by scripts (scripts/sync-agent-connectors.js).

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-01-30T18:20:07.851Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 415
File: src/content/docs/authenticate/fsa/multiapp/native-app.mdx:1-6
Timestamp: 2026-01-30T18:20:07.851Z
Learning: In the scalekit-inc/developer-docs repository, MDX files under `src/content/docs/authenticate/fsa/multiapp/` do not use `order` or `tags` fields in their frontmatter. Ordering and grouping are managed centrally in `src/configs/sidebar.config.ts`.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-26T07:23:24.179Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/microsoftword.mdx:3-3
Timestamp: 2026-02-26T07:23:24.179Z
Learning: Do not enforce the 160-character description limit for MDX files under src/content/docs/reference/agent-connectors/. These files are auto-generated from API payloads via scripts/sync-agent-connectors.js and may contain longer descriptions sourced from the data.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-13T04:24:59.653Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 0
File: :0-0
Timestamp: 2026-03-13T04:24:59.653Z
Learning: In scalekit-inc/developer-docs, for PRs focused on tooling and templatizing (e.g., extracting usage sections into reusable MDX templates and updating sync scripts), review comments about .mdx file content quality (casing, unused imports, import consolidation, endpoint descriptions, etc.) are considered out of scope and should be resolved without blocking the PR.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-25T16:00:25.846Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 531
File: src/content/docs/reference/agent-connectors/granolamcp.mdx:52-58
Timestamp: 2026-03-25T16:00:25.846Z
Learning: For MDX pages under src/content/docs/reference/agent-connectors/ (e.g., agent-connector reference pages like granolamcp.mdx), if you have a short sequential setup procedure of 4 items or fewer, it’s acceptable to use a plain Markdown numbered list instead of the Starlight <Steps> component. This exception is intended to avoid visual clutter on pages that already contain multiple structured content blocks (such as tables, <details>/<summary>, or tool sections). When this 4-or-fewer condition is met, do not flag missing/avoided <Steps> for these setup procedures.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to src/configs/sidebar.config.ts : Documentation must be organized into logical sections (FSA, SSO, Directory/SCIM, Connect, M2M, Guides, Reference) with proper sidebar configuration and navigation structure

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-01-30T18:18:50.883Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 415
File: src/content/docs/authenticate/fsa/multiapp/manage-apps.mdx:31-49
Timestamp: 2026-01-30T18:18:50.883Z
Learning: In all Scalekit documentation files (MDX), treat the terms 'Applications', 'Single Page Application (SPA)', 'Native Application', and 'Web Application' as proper nouns and preserve their capitalization in headings and body text. Ensure these terms remain capitalized even when used in sentence case or within prose.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-04T12:47:16.544Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 412
File: src/content/docs/dev-kit/tools/scalekit-dryrun.mdx:1-23
Timestamp: 2026-02-04T12:47:16.544Z
Learning: In scalekit-inc/developer-docs, the MDX frontmatter field order is required only when the sidebar configuration points to a directory (for auto-generation). If the sidebar.config.ts references a specific file path, the order field is not required. Apply this check to all MDX files under src/content/docs: if a file contributes to an auto-generated sidebar (directory path), ensure order is present; if it’s linked to a concrete file, order can be omitted. Use sidebar.config.ts to determine whether a given MDX file falls under directory-based vs file-specific sidebar references.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-25T08:57:12.201Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 444
File: src/content/docs/agent-auth/quickstart.mdx:2-10
Timestamp: 2026-02-25T08:57:12.201Z
Learning: In Scalekit developer-docs (Astro Starlight), do not auto-suggest adding tableOfContents in frontmatter unless the user explicitly overrides the default behavior. The default enables tableOfContents with minHeadingLevel 2 and maxHeadingLevel 3. Only set tableOfContents when you want to customize heading levels or disable it entirely; otherwise omit it for other docs.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-25T13:04:27.491Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 444
File: src/content/docs/agent-auth/start-agent-auth-coding-agents.mdx:9-17
Timestamp: 2026-02-25T13:04:27.491Z
Learning: Allow page-level CSS overrides in MDX frontmatter (head: style) for readability and engagement, even if it customizes typography beyond defaults. This applies to per-page UX decisions, including heading sizes and style tweaks, but keep overrides purposeful, accessible, and within the repository's design guidelines. Use these overrides sparingly and document the rationale for maintainability.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-05T11:29:08.125Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 463
File: src/content/docs/agent-auth/providers.mdx:35-73
Timestamp: 2026-03-05T11:29:08.125Z
Learning: In src/content/docs/agent-auth/providers.mdx, the Card components intentionally use icon=" " (a space) to render consistent colored boxes since some Starlight icon names resolve to icons and others do not. Do not flag icon=" " as a placeholder issue for this file; treat this as a deliberate UX choice specific to this MDX page and avoid raising a placeholder-icon warning here.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-09T07:27:56.794Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 469
File: src/content/docs/guides/integrations/scim-integrations/azure-scim.mdx:95-107
Timestamp: 2026-03-09T07:27:56.794Z
Learning: Do not enforce the 3-space indentation rule for Steps component content as a hard style rule in MDX files under src/content/docs/**/*.mdx. Only flag/rectify it if it causes visible rendering problems in the UI. Otherwise, allow current formatting; apply this rule only when rendering issues are observed and document any fixes.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-09T07:32:38.426Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 467
File: src/content/docs/sso/guides/sso-user-attributes.mdx:108-148
Timestamp: 2026-03-09T07:32:38.426Z
Learning: In MDX code samples under src/content/docs (and similar conceptual snippets in scalekit-inc/developer-docs), when an example's sole purpose is to show how to access a specific value (e.g., reading JWT claims after token validation), omit error/non-happy-path handling to keep the snippet focused. Do not flag the absence of error paths in narrowly scoped conceptual snippets.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-17T16:01:50.487Z
Learnt from: dhaneshbs
Repo: scalekit-inc/developer-docs PR: 506
File: src/content/docs/authenticate/fsa/quickstart.mdx:851-853
Timestamp: 2026-03-17T16:01:50.487Z
Learning: In the Scalekit Python SDK docs, clarify that LogoutUrlOptions is not exported from the top-level scalekit package __init__.py. The correct import path in code samples or reviews is: from scalekit.common.scalekit import LogoutUrlOptions. Do not flag this import path as incorrect in documentation or code reviews; ensure examples reflect the proper import path to avoid confusion for users.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-25T03:34:41.147Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 444
File: src/content/docs/agent-auth/start-agent-auth-coding-agents.mdx:31-31
Timestamp: 2026-02-25T03:34:41.147Z
Learning: In MDX files, import { Code } from 'astrojs/starlight/components' only if the MDX content actually uses the <Code> component. If the file uses only fenced code blocks (```), the import is not required. Apply this guideline to all MDX files (e.g., src/content/docs/**/*.mdx) to avoid unnecessary imports and reduce bundle size.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-25T18:41:00.639Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 446
File: src/content/docs/authenticate/m2m/api-auth-quickstart.mdx:78-78
Timestamp: 2026-02-25T18:41:00.639Z
Learning: Preserve full URLs inside code comments in MDX code blocks (bash/python/js) when the URLs are part of copyable examples. Do not flag these in code examples. Use relative paths in prose and hyperlinks within MDX; only enforce relative paths for markdown prose links, not for URLs inside code comments.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-03T13:35:47.638Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 455
File: src/content/docs/reference/agent-connectors/asana.mdx:94-173
Timestamp: 2026-03-03T13:35:47.638Z
Learning: In Agent Connectors documentation (src/content/docs/reference/agent-connectors/**/*.mdx), only Python SDK examples for Agent Actions/Agent Connectors should be required for now. Do not enforce or require multi-language SDK code examples (Node.js, Python, Go, Java) until the respective SDKs support Agent Actions. Once supported, you can add and require other languages in those docs. This guideline applies to all files under the agent-connectors documentation path.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-03-13T03:51:40.660Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 489
File: src/content/docs/reference/agent-connectors/attio.mdx:24-24
Timestamp: 2026-03-13T03:51:40.660Z
Learning: In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (e.g., https://cdn.scalekit.com/sk-connect/assets/provider-icons/attio.svg). The host should be cdn.scalekit.com (not cdn.scalekit.cloud). Do not flag or modify image src attributes that already use cdn.scalekit.com for provider icons within this directory.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-04-01T10:25:46.962Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 567
File: src/content/docs/reference/agent-connectors/apifymcp.mdx:70-70
Timestamp: 2026-04-01T10:25:46.962Z
Learning: For agent-connector reference documentation pages (MDX under `src/content/docs/reference/agent-connectors/`), treat backtick/code-quoted example search terms inside parameter tables (e.g., `"google maps"`, `"instagram scraper"`) as literal query inputs that users type. Do not flag changes to the lowercase casing of words within these code-quoted example queries as if they were improper product-name capitalization; the casing is intentional to reflect realistic user input.

Applied to files:

  • src/content/docs/reference/agent-connectors/figma.mdx
📚 Learning: 2026-02-26T07:22:55.583Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/googlesheets.mdx:95-141
Timestamp: 2026-02-26T07:22:55.583Z
Learning: For MDX files under src/content/docs/reference/agent-connectors/, the parameter tables (showing tool properties) are auto-generated from JSON API responses by scripts/sync-agent-connectors.js. Any table format corrections must be made in the generation script, not by manually editing the generated MDX files. The script should be updated to output the required "Name | Type | Required | Description" four-column table format per coding guidelines.

Applied to files:

  • src/types/agent-connectors.ts
  • src/components/ToolList.astro
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to src/components/templates/_*.{tsx,jsx,astro} : Reusable content components in `src/components/templates/` (files starting with `_`) MUST be used and maintained for consistency across integration guides

Applied to files:

  • src/components/ToolList.astro
  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to src/configs/sidebar.config.ts,src/components/overrides/Header.astro,src/components/SecondaryNav.astro : Left Sidebar must be configured via `src/configs/sidebar.config.ts`. Secondary Navigation must be managed through `src/components/overrides/Header.astro` and `src/components/SecondaryNav.astro`. Changes to navigation structure MUST be coordinated across both configurations

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Applies to astro.config.mjs : Expressive Code collapsible sections plugin must be enabled in `astro.config.mjs`

Applied to files:

  • src/components/ToolList.astro
  • scripts/sync-agent-connectors.js
📚 Learning: 2026-02-26T07:21:37.207Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/googlesheets.mdx:89-131
Timestamp: 2026-02-26T07:21:37.207Z
Learning: In src/content/docs/reference/agent-connectors/** MDX files, tool headings (e.g., `googlesheets_create_spreadsheet`, `googlesheets_get_values`) intentionally use H2 (##) instead of H3 to ensure they appear in the table of contents for easier navigation. This is a deliberate UX choice for agent connector reference pages and should not be flagged as a hierarchy issue.

Applied to files:

  • src/components/ToolList.astro
  • scripts/sync-agent-connectors.js
  • src/data/agent-connectors/figma.ts
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to **/*.{md,mdx} : Prefer relative links for internal pages; include anchors for sections. Reference APIs consistently: use backticks for code (`Deno.run`, `--allow-net`)

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-03-12T16:28:42.817Z
Learnt from: Pranesh-Raghu
Repo: scalekit-inc/developer-docs PR: 483
File: src/components/templates/agent-connectors/_setup-zendesk.mdx:20-20
Timestamp: 2026-03-12T16:28:42.817Z
Learning: In src/components/templates/agent-connectors/_setup-*.mdx files, using plain Markdown link syntax (e.g., [Scalekit dashboard](https://app.scalekit.com)) for external links is acceptable and intentional. Do not flag the absence of target="_blank" and rel="noopener" attributes in these agent-connector setup template files. This follows the established pattern across all connector templates in this directory.

Applied to files:

  • src/components/ToolList.astro
  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-05T11:29:12.786Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 463
File: src/content/docs/agent-auth/providers.mdx:35-73
Timestamp: 2026-03-05T11:29:12.786Z
Learning: In `src/content/docs/agent-auth/providers.mdx`, the `<Card>` components use `icon=" "` (a space) intentionally. This is a deliberate UX choice to render consistent colored boxes across all cards, because only some Starlight icon names resolve to actual icons while others do not. Do not flag `icon=" "` as a placeholder issue on this file.

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to **/*.{md,mdx} : Use `<Badge>` component to indicate parameter requirements in tables and inline text

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Applies to **/*.mdx : Use tables for comparing features, options, or specifications with concise column headers (1-3 words max)

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-01-13T12:48:11.566Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursor/rules/documentation-guide.mdc:0-0
Timestamp: 2026-01-13T12:48:11.566Z
Learning: Applies to **/*.{md,mdx} : Maintain proper heading hierarchy and list semantics in documentation for accessibility

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Applies to **/*.mdx : Use descriptive link text and include proper heading structure for accessibility

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to **/*.{md,mdx} : Use meaningful link text; never use 'click here' or 'this' as link labels. Always include headers in tables; keep cell content concise and readable. Prefer fenced code blocks with language identifiers for all code; never use screenshots of code

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-02-25T12:04:06.383Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 445
File: src/pages/apis.astro:63-64
Timestamp: 2026-02-25T12:04:06.383Z
Learning: In the developer-docs repository, all Astro pages are intended to render in light mode. Enforce this by setting localStorage.colorMode = 'light' globally to ensure a consistent light theme across the site, including Scalar API reference pages. This should be treated as a deliberate, project-wide style decision rather than a per-page override; verify no page uses a conflicting color mode and document any exception in developer docs.

Applied to files:

  • src/components/ToolList.astro
📚 Learning: 2026-02-26T07:23:27.672Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: src/content/docs/reference/agent-connectors/microsoftword.mdx:3-3
Timestamp: 2026-02-26T07:23:27.672Z
Learning: For MDX files under src/content/docs/reference/agent-connectors/, do not enforce the 160-character description limit. These files are auto-generated from API payloads via scripts/sync-agent-connectors.js and may have longer descriptions from the source data.

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-09T15:06:49.617Z
Learnt from: hrishikesh-p
Repo: scalekit-inc/developer-docs PR: 473
File: src/content/docs/agent-auth/tools/execute.mdx:34-76
Timestamp: 2026-03-09T15:06:49.617Z
Learning: In src/content/docs/agent-auth/tools/**/*.mdx (Agent Auth tool execution docs, e.g., execute.mdx, authorize.mdx), only Python and Node.js SDK support is currently available for Agent Auth tool execution. Do not require or enforce Go and Java tabs in Tabs syncKey="tech-stack" blocks for these files until the Go and Java SDKs support Agent Auth features. Add Go and Java TabItems once those SDKs are ready.

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-02-26T07:18:51.377Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 448
File: scripts/sync-agent-connectors.js:0-0
Timestamp: 2026-02-26T07:18:51.377Z
Learning: In src/content/docs/reference/agent-connectors/**/*.mdx files, sidebar.label frontmatter is not required because the sidebar configuration references the agent-connectors directory for auto-generation. Navigation ordering and grouping are managed centrally in the sidebar configuration file.

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-13T03:44:23.786Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 489
File: src/content/docs/reference/agent-connectors/youtube.mdx:19-26
Timestamp: 2026-03-13T03:44:23.786Z
Learning: In src/content/docs/reference/agent-connectors/*.mdx files, small raw HTML <div> blocks used for the connector header grid layout (e.g., a 5-column grid with description and logo) are considered readable without a justification comment. Do not flag the absence of a justification comment on these simple connector-header div blocks in agent-connector reference pages.

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-02-25T03:34:46.151Z
Learnt from: saif-at-scalekit
Repo: scalekit-inc/developer-docs PR: 444
File: src/content/docs/agent-auth/start-agent-auth-coding-agents.mdx:31-31
Timestamp: 2026-02-25T03:34:46.151Z
Learning: Import `Code` from 'astrojs/starlight/components' only when the MDX file actually uses the `<Code>` component. If the file uses only fenced code blocks (```), the Code import is not required.

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-16T21:02:51.181Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursor/rules/expressive-code.mdc:0-0
Timestamp: 2026-03-16T21:02:51.181Z
Learning: Applies to **/*.mdx : Import `<Code>` from `astrojs/starlight/components` once per file below frontmatter in `.mdx` files

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-25T16:00:29.351Z
Learnt from: AkshayParihar33
Repo: scalekit-inc/developer-docs PR: 531
File: src/content/docs/reference/agent-connectors/granolamcp.mdx:52-58
Timestamp: 2026-03-25T16:00:29.351Z
Learning: In `src/content/docs/reference/agent-connectors/**` (agent-connector reference pages, e.g., granolamcp.mdx), short sequential setup steps (4 items or fewer) may use plain Markdown numbered lists instead of the Starlight `<Steps>` component to avoid visual clutter when the page already contains multiple structured content blocks (tables, details/summary blocks, tool sections). Do not flag or require `<Steps>` for these short setup procedures on agent-connector reference pages.

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Applies to astro.config.mjs : Expressive Code is configured in `astro.config.mjs` with themes 'tokyo-night' (dark) and 'light-plus' (light), JetBrains Mono font, and border radius 0.375rem

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Applies to **/*.mdx : Use 'collapse={lines}' to hide imports, setup, and boilerplate code in code blocks

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-16T21:02:51.181Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursor/rules/expressive-code.mdc:0-0
Timestamp: 2026-03-16T21:02:51.181Z
Learning: Applies to **/*.{md,mdx} : Use Expressive Code consistently across all documentation pages, preferring Starlight's `<Code>` component for rich features (titles, markers, accurate syntax highlighting) and dynamic snippets

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Use pnpm for package management. Follow Astro + Starlight framework conventions. Maintain compatibility with Tailwind CSS styling. Ensure Vue 3 and React component compatibility

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-03-27T17:20:14.679Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-27T17:20:14.679Z
Learning: Applies to **/*.{md,mdx} : Use normal section headings instead of `<Steps>` when the content is mostly `<Tabs>`, long JSX blocks, or multiple embedded components

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-01-13T12:47:52.148Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursor/rules/deno-docs-style.mdc:0-0
Timestamp: 2026-01-13T12:47:52.148Z
Learning: Applies to **/*.{md,mdx} : Use lists for options and features in documentation; tables only when comparisons are clearer

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Run prettier with `prettier --write src/content/docs/**/*.mdx` to auto-fix MDX Steps indentation errors

Applied to files:

  • scripts/sync-agent-connectors.js
📚 Learning: 2026-01-13T12:46:55.260Z
Learnt from: CR
Repo: scalekit-inc/developer-docs PR: 0
File: .cursorrules:0-0
Timestamp: 2026-01-13T12:46:55.260Z
Learning: Test MDX documentation locally before committing to catch parsing and Steps component indentation errors

Applied to files:

  • scripts/sync-agent-connectors.js
🔇 Additional comments (1)
src/types/agent-connectors.ts (1)

3-16: Shared connector types look good.

Tool and ToolParam give the generator and ToolList.astro one contract, which should reduce drift as more providers move to the typed data model.

Comment on lines +559 to +560
lines.push('sidebar:')
lines.push(` label: ${providerName}`)
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 | 🔵 Trivial

Don’t emit sidebar.label for generated agent-connector pages.

This directory’s navigation is already owned by the central sidebar config, so generating sidebar.label here only creates frontmatter churn and a second source of truth. Keep the sidebar block only when you actually need nested metadata like a badge. Based on learnings, src/content/docs/reference/agent-connectors/** pages are auto-generated into navigation, so sidebar.label should stay centralized in src/configs/sidebar.config.ts.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/sync-agent-connectors.js` around lines 559 - 560, The generator is
emitting a sidebar.label for each agent-connector page (see the
lines.push('sidebar:') and lines.push(`  label: ${providerName}`) in
scripts/sync-agent-connectors.js) which duplicates the central sidebar config;
remove the unconditional emission of the label — only emit a sidebar block when
you need nested metadata (e.g., a badge) and otherwise omit both the 'sidebar:'
and the `label` line so navigation remains authoritative in
src/configs/sidebar.config.ts.

Comment on lines +668 to +669
const dataOutputDir = path.join(__dirname, '../src/data/agent-connectors')
fs.mkdirSync(dataOutputDir, { recursive: true })
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.

⚠️ Potential issue | 🟡 Minor

Clean orphaned .ts outputs alongside .mdx.

These additions create a second generated tree under src/data/agent-connectors, but the cleanup pass still only removes stale .mdx files. A provider rename or removal will leave obsolete data modules behind in the repo.

Also applies to: 720-727

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/sync-agent-connectors.js` around lines 668 - 669, The cleanup only
removes stale .mdx files but new generation writes .ts modules to dataOutputDir,
so orphaned .ts files remain; update the cleanup logic (the code that iterates
stale .mdx under dataOutputDir, referenced around dataOutputDir and the cleanup
block near lines 720-727) to also remove sibling files with the same basename
and other extensions (e.g., .ts, .js) when an .mdx is deemed stale, or
alternatively compute stale basenames and delete all matching files in
dataOutputDir; ensure you reference dataOutputDir and the existing cleanup
routine so both .mdx and generated .ts outputs are removed together.

Comment on lines +258 to +266
.params-header,
.param-row {
grid-template-columns: 1fr 1fr;
}
.params-header span:nth-child(3),
.params-header span:nth-child(4),
.param-row .req-badge,
.param-row .param-desc {
display: none;
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.

⚠️ Potential issue | 🟠 Major

Don’t hide required/description on mobile.

Below 48rem the component drops both the required badge and the parameter description, so small-screen users lose the information needed to call the tool correctly. Reflow those fields into a stacked layout instead of removing them.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ToolList.astro` around lines 258 - 266, The responsive CSS
hides the required badge and parameter description below 48rem; instead of
display:none, update the mobile rules for .params-header and .param-row to use a
single-column grid (grid-template-columns: 1fr) and make .req-badge and
.param-desc visible (remove display:none), forcing them to span the full row
(e.g., grid-column: 1 / -1 or block-level) so they stack under the parameter
name; adjust the .params-header span:nth-child(3)/nth-child(4) rules similarly
so header labels remain visible on small screens.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 58

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (9)
src/content/docs/reference/agent-connectors/gong.mdx (2)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the correct CDN domain for provider icons.

The image URL uses cdn.scalekit.cloud but should use cdn.scalekit.com per the established pattern for agent-connector reference pages.

🔧 Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gong.svg" width="64" height="64" alt="Gong logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg" width="64" height="64" alt="Gong logo" />

Based on learnings: "enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/... The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/gong.mdx` at line 26, The
provider-icon image src is using the wrong CDN domain; update the img tag's src
URL in the gong.mdx content (the <img ...
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gong.svg" ...>
occurrence) to use the correct host https://cdn.scalekit.com so the src becomes
https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg; keep the
same path, width, height and alt attributes unchanged.

30-30: ⚠️ Potential issue | 🟡 Minor

Capitalize "API" in the Badge text.

"Api Key" should be "API Key" — "API" is an acronym and should be fully capitalized.

🔧 Proposed fix
-Supports authentication: <Badge text="OAuth 2.0" /> , <Badge text="Api Key" />
+Supports authentication: <Badge text="OAuth 2.0" /> , <Badge text="API Key" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/gong.mdx` at line 30, Change the
Badge text "Api Key" to "API Key" in the authentication line so the badge reads
<Badge text="API Key" /> (update the Badge usage in the "Supports
authentication" line where Badge text="Api Key" is present).
src/content/docs/reference/agent-connectors/vimeo.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

CDN URL uses incorrect host.

The image URL uses cdn.scalekit.cloud but should use cdn.scalekit.com to match the established pattern for provider icons in this directory.

🔧 Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/vimeo.svg" width="64" height="64" alt="Vimeo logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg" width="64" height="64" alt="Vimeo logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/... The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/vimeo.mdx` at line 25, The img
tag in vimeo.mdx uses the wrong CDN host in the src attribute
("https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/vimeo.svg");
update that host to "https://cdn.scalekit.com" so the src becomes
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg", leaving
the width, height, and alt attributes unchanged to match the established
provider-icon pattern.
src/content/docs/reference/agent-connectors/zoom.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the correct CDN host for provider icons.

The image URL uses cdn.scalekit.cloud, but provider-icon logos should use cdn.scalekit.com per the established pattern for agent-connector reference pages. Based on learnings, enforce using CDN URLs with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🔧 Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/zoom.svg" width="64" height="64" alt="Zoom logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg" width="64" height="64" alt="Zoom logo" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/zoom.mdx` at line 26, The image
src in the <img> tag uses the wrong CDN host; update the src attribute to use
the canonical host by replacing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/zoom.svg" with
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg" so the
provider-icon URL follows the established pattern (ensure the src begins with
https://cdn.scalekit.com/sk-connect/assets/provider-icons/).
src/content/docs/reference/agent-connectors/freshdesk.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Use cdn.scalekit.com instead of cdn.scalekit.cloud for provider icons.

The CDN host should be cdn.scalekit.com for consistency with other agent-connector reference pages.

🔧 Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/freshdesk.png" width="64" height="64" alt="Freshdesk logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png" width="64" height="64" alt="Freshdesk logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/... The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx` at line 25,
Replace the provider icon URL host in the image tag used in the Freshdesk
connector doc so it uses cdn.scalekit.com instead of cdn.scalekit.cloud; locate
the <img> tag referencing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/freshdesk.png" and
update the host to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png" to
match the canonical CDN pattern used across agent-connector reference pages.
src/content/docs/reference/agent-connectors/clari_copilot.mdx (1)

25-25: ⚠️ Potential issue | 🟠 Major

Use the required provider-icon CDN host

Line 25 uses cdn.scalekit.cloud; agent-connector provider icons in this directory must use cdn.scalekit.com.

Suggested diff
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/clari.svg" width="64" height="64" alt="Clari Copilot logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg" width="64" height="64" alt="Clari Copilot logo" />

Based on learnings: In src/content/docs/reference/agent-connectors/**, enforce provider icon URLs with host https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx` at line 25,
The provider icon URL on the Clari Copilot doc currently uses the wrong CDN
host; update the img src in
src/content/docs/reference/agent-connectors/clari_copilot.mdx to use
https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg instead of
https://cdn.scalekit.cloud, and scan other files in the
src/content/docs/reference/agent-connectors/ directory to ensure all
provider-icon img src values use the
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ host format (update
any occurrences to match).
src/content/docs/reference/agent-connectors/googlemeet.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Use cdn.scalekit.com for provider icon URLs.

The logo URL uses cdn.scalekit.cloud but the established pattern for this directory requires cdn.scalekit.com.

🔧 Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_meet.svg" width="64" height="64" alt="Google Meet logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_meet.svg" width="64" height="64" alt="Google Meet logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/... The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/googlemeet.mdx` at line 25,
Update the image URL host to use the canonical CDN host: replace the src in the
<img> tag referencing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_meet.svg"
with the same path but host "https://cdn.scalekit.com" (i.e., update the
provider icon URL in src/content/docs/reference/agent-connectors/googlemeet.mdx
to use cdn.scalekit.com).
src/content/docs/reference/agent-connectors/asana.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the canonical provider icon CDN host.

Line 26 points to cdn.scalekit.cloud; connector reference pages should use cdn.scalekit.com.

Suggested change
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/asana-n.svg" width="64" height="64" alt="Asana logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/asana-n.svg" width="64" height="64" alt="Asana logo" />

Based on learnings: In src/content/docs/reference/agent-connectors/**, enforce provider-icon URLs with host https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (not cdn.scalekit.cloud).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/asana.mdx` at line 26, The img
tag for the Asana connector uses the wrong CDN host (cdn.scalekit.cloud); update
the src to use the canonical host
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (replace
cdn.scalekit.cloud with cdn.scalekit.com) for the Asana provider image
referenced by the img src ending in asana-n.svg; also scan other files under the
agent-connectors reference directory to ensure all provider-icon URLs use the
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ host.
src/content/docs/reference/agent-connectors/jira.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the correct CDN host for provider icons.

The image URL uses cdn.scalekit.cloud but should use cdn.scalekit.com.

Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/jira.svg" width="64" height="64" alt="Jira logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/jira.svg" width="64" height="64" alt="Jira logo" />

Based on learnings: "The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/jira.mdx` at line 26, The img
tag's src URL uses the wrong CDN host (src="https://cdn.scalekit.cloud/...");
update the src to use the correct host by replacing "cdn.scalekit.cloud" with
"cdn.scalekit.com" in the <img> element (the provider icon reference) so the
image points to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/jira.svg.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/content/docs/reference/agent-connectors/affinity.mdx`:
- Line 24: The provider icon URL in the img tag uses the deprecated host
"cdn.scalekit.cloud" — update the src value to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/affinity.svg"
instead; search for similar img src attributes in files under the
agent-connectors docs (references to provider icons like the img tag with
src=".../sk-connect/assets/provider-icons/...") and replace ".cloud" with ".com"
to enforce the new host pattern.

In `@src/content/docs/reference/agent-connectors/airtable.mdx`:
- Around line 5-6: Remove the redundant frontmatter key `sidebar.label` from the
Airtable connector MDX (the `sidebar.label` entry in the file's frontmatter),
leaving other frontmatter intact; ensure no references to `sidebar.label` remain
in that MDX file and run the local docs build to confirm navigation is still
auto-generated from the agent-connectors directory.

In `@src/content/docs/reference/agent-connectors/apifymcp.mdx`:
- Line 24: Update the provider icon URL host in the img src to use
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ instead of
https://cdn.scalekit.cloud; locate the img tag that contains
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/apify.svg" in
src/content/docs/reference/agent-connectors/apifymcp.mdx and replace the host
portion so the src becomes
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/apify.svg" to align
with the connector icon standard.

In `@src/content/docs/reference/agent-connectors/asana.mdx`:
- Around line 16-17: The page imports the ToolList component and the tools data
but never renders them; update the MDX content in asana.mdx to include the
ToolList component and pass the imported tools prop (use the imported symbol
ToolList and the tools array) where the tool list should appear so the page
displays the data-driven tool list.

In `@src/content/docs/reference/agent-connectors/attention.mdx`:
- Around line 5-6: Remove the page-level sidebar.label entry in the
attention.mdx frontmatter; specifically delete the "sidebar: label: Attention"
lines so the agent-connector reference page does not set sidebar.label (the
shared sidebar config controls grouping/ordering), ensuring only standard
frontmatter remains.
- Around line 16-17: The page imports ToolList and tools but never renders them;
update the MDX content to render the ToolList component and pass the tools data
so the connector tool list is visible (use the imported ToolList component with
the imported tools prop in the page body, mirroring how other agent-connector
reference pages render tool output).

In `@src/content/docs/reference/agent-connectors/chorus.mdx`:
- Around line 5-6: Remove the frontmatter key sidebar.label from this MDX file
(the snippet adding "sidebar:\n  label: Chorus") because connector pages under
src/content/docs/reference/agent-connectors are auto-generated by the shared
sidebar config; simply delete the sidebar.label entry in chorus.mdx (remove the
"sidebar" block containing "label: Chorus") so the page uses the central sidebar
navigation.

In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx`:
- Around line 5-6: Remove the manual frontmatter key "sidebar.label" from this
agent-connector MDX (Clari Copilot) and any other files under the
agent-connectors docs; locate the frontmatter block in clari_copilot.mdx (look
for "sidebar.label: Clari Copilot") and delete that line so the page relies on
the auto-generated navigation, and ensure no new "sidebar.label" entries are
added to files in the agent-connectors collection.

In `@src/content/docs/reference/agent-connectors/discord.mdx`:
- Around line 5-6: Remove the frontmatter key `sidebar.label` from the MDX file
(discord.mdx) — locate the top-of-file frontmatter that contains `sidebar:
label: Discord` and delete that `sidebar.label` entry so the agent-connector
reference navigation is driven solely by the central sidebar config; also scan
other files in the same agent-connectors folder for any remaining
`sidebar.label` keys and remove them if present.

In `@src/content/docs/reference/agent-connectors/dropbox.mdx`:
- Around line 5-6: Remove the redundant frontmatter key `sidebar.label` from the
Dropbox MDX page (dropbox.mdx) — this page under the agent-connectors reference
is auto-indexed by the central sidebar configuration, so delete the
`sidebar.label` entry and leave other frontmatter intact; no other changes to
ordering/grouping should be made in the MDX files.
- Around line 19-20: The file imports ToolList and tools but never uses them;
either render the component where the Dropbox connector tools should appear by
adding a <ToolList tools={tools} /> JSX/MDX node in the document (place it in
the section that lists connector tools) or remove the unused imports (ToolList
and tools) if this page shouldn't display the tool list; update the MDX so no
unused imports remain and ensure the symbol names ToolList and tools are
referenced correctly if you choose to render the component.

In `@src/content/docs/reference/agent-connectors/fathom.mdx`:
- Around line 5-6: Remove the frontmatter key `sidebar.label` from this
agent-connector reference page (the YAML block in fathom.mdx) — navigation is
generated from the shared sidebar config so delete the `sidebar: label: Fathom`
entry (or the `sidebar.label` line) from the file to avoid overriding the
central sidebar.

In `@src/content/docs/reference/agent-connectors/figma.mdx`:
- Line 26: Update the image src in the img tag so the CDN host is
cdn.scalekit.com instead of cdn.scalekit.cloud; locate the <img> element with
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/figma.svg" and
change only the host portion to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/figma.svg", leaving
width, height, and alt attributes unchanged.

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx`:
- Around line 15-18: Update the inconsistent import path for
UsageFreshdeskSection so it uses the project alias prefix like the other
imports; replace the import specifier '@components/templates' with
'@/components/templates' in the import that brings in UsageFreshdeskSection to
match the '@/components/...' and '@/data/...' style used by Badge, ToolList, and
tools.

In `@src/content/docs/reference/agent-connectors/gitlab.mdx`:
- Line 25: The provider icon img tag in gitlab.mdx uses the wrong CDN host;
update the src URL in the <img ...> tag (the current
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gitlab.svg") to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/gitlab.svg" so it
matches the established CDN convention for agent-connector reference pages.

In `@src/content/docs/reference/agent-connectors/google_ads.mdx`:
- Around line 5-6: Remove the page-level frontmatter key `sidebar.label` from
this auto-generated reference MDX under the agent-connectors reference section:
locate the top-of-file frontmatter containing `sidebar.label: Google Ads` and
delete that key (and its value) so the page relies on the central sidebar
configuration instead of a drifting per-page label.
- Around line 15-17: The file imports ToolList and tools but never renders them;
update the MDX to include the ToolList component where the connector's tools
should appear (e.g. add a ToolList usage that passes the imported tools, such as
<ToolList tools={tools} />) so the connector tool details are surfaced; ensure
you reference the imported identifiers ToolList and tools and remove unused
imports if you decide not to display the list.

In `@src/content/docs/reference/agent-connectors/googledocs.mdx`:
- Around line 5-6: The generated MDX file includes a per-file frontmatter key
`sidebar.label` which must be removed from files under
src/content/docs/reference/agent-connectors because navigation is driven by the
central sidebar and these files are generator-driven; update the emitter in
scripts/sync-agent-connectors.js (the function responsible for emitting
connector MDX) to stop writing `sidebar.label` into the frontmatter and update
the generator logic to omit that field when composing the file content, then
remove the existing `sidebar.label` entry from the googledocs.mdx file so the
generated output and repo stay consistent.

In `@src/content/docs/reference/agent-connectors/googledrive.mdx`:
- Around line 5-6: Remove the explicit sidebar.label entry from this
agent-connector reference page: delete the "sidebar.label: Google Drive"
key/value (the top-level sidebar.label YAML) so the page relies on the
centralized auto-generated navigation; ensure no other sidebar.* keys remain in
the frontmatter for the agent-connectors docs.

In `@src/content/docs/reference/agent-connectors/googleforms.mdx`:
- Around line 5-6: Remove the per-page frontmatter entry "sidebar.label: Google
Forms" from this autogenerated connector reference MDX (the sidebar.label
metadata) because navigation is produced centrally; delete that local
sidebar.label block so the page no longer contains per-page sidebar metadata and
relies on the central sidebar config.

In `@src/content/docs/reference/agent-connectors/googlemeet.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either remove the unused imports (ToolList, tools) or render the data-driven
ToolList component where the connector examples are shown. To fix, open the
Google Meet connector MDX and (a) delete the two imports if you don't intend to
show a tool list, or (b) add a ToolList component instance (passing the imported
tools as its data prop, e.g., <ToolList tools={tools} />) at the appropriate
spot in the document (near the summary or examples section) so ToolList and
tools are actually referenced.

In `@src/content/docs/reference/agent-connectors/googleslides.mdx`:
- Around line 5-6: Remove the local sidebar metadata by deleting the
sidebar.label entry in googleslides.mdx (the two lines adding "sidebar:\n 
label: Google Slides"); ensure no other per-file sidebar metadata remains in
this MDX so the page relies on the centralized sidebar generation used for
agent-connector reference pages.

In `@src/content/docs/reference/agent-connectors/granola.mdx`:
- Line 24: Replace the provider icon URL host in the <img> tag's src attribute
that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/..." so it instead
uses the approved host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/..."; update the src
value in the <img> element in the Granola agent-connector doc (the <img src=...
width=64 height=64 alt="Granola logo" /> line) to use the new host.

In `@src/content/docs/reference/agent-connectors/granolamcp.mdx`:
- Line 25: Update the image src in the Granola MCP connector doc to use the
correct CDN host: change the src attribute of the <img ...
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/granola.svg"...>
entry to use
https://cdn.scalekit.com/sk-connect/assets/provider-icons/granola.svg so the
provider-icon URL follows the established cdn.scalekit.com pattern for
agent-connector reference pages.
- Line 3: The description and body text state "OAuth 2.1" but the badge shows
"OAuth 2.0"; update the badge string and any other occurrences of "OAuth 2.0" in
src/content/docs/reference/agent-connectors/granolamcp.mdx (e.g., the badge text
and line with "OAuth 2.0") to "OAuth 2.1" so the file consistently reflects
OAuth 2.1 across the description, body, and badge.

In `@src/content/docs/reference/agent-connectors/harvestapi.mdx`:
- Line 26: Update the provider icon URL in the img tag so the src uses the
correct CDN host: replace
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/harvestapi.svg"
with "https://cdn.scalekit.com/sk-connect/assets/provider-icons/harvestapi.svg"
(i.e., change the host from cdn.scalekit.cloud to cdn.scalekit.com) in the img
element's src attribute.

In `@src/content/docs/reference/agent-connectors/hubspot.mdx`:
- Around line 5-6: Remove the per-page frontmatter key "sidebar.label" from this
MDX file (and any other MDX under the agent-connectors reference directory)
because the sidebar is generated centrally; locate the frontmatter block
containing sidebar.label and delete that key (or the entire frontmatter if it
becomes empty), then save so navigation uses the central sidebar generator
conventions.

In `@src/content/docs/reference/agent-connectors/intercom.mdx`:
- Around line 5-6: Remove the unnecessary frontmatter key "sidebar.label" from
the MDX file (the YAML frontmatter that currently contains "sidebar: label:
Intercom"); locate the "sidebar.label" entry in the file (e.g., in intercom.mdx)
and delete that key (and its parent "sidebar:" mapping if it becomes empty) so
the page relies on the central sidebar config and auto-generated navigation.

In `@src/content/docs/reference/agent-connectors/jiminny.mdx`:
- Line 24: Replace the provider logo URL host in the <img> tag for the Jiminny
connector so it uses the required CDN host; change the src from
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/jiminny.svg" to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/jiminny.svg" (ensure
the rest of the path and filename remain unchanged so it matches the src pattern
used across src/content/docs/reference/agent-connectors).

In `@src/content/docs/reference/agent-connectors/jira.mdx`:
- Around line 15-17: The file imports ToolList and tools but never uses them;
add a "## Tool list" section near the end of the document and render the
component by inserting the ToolList component with the tools prop (i.e., add a
section containing the header "## Tool list" followed by <ToolList tools={tools}
/>), matching other connector pages like pipedrive.mdx and apollo.mdx so the
imported ToolList and tools are used.

In `@src/content/docs/reference/agent-connectors/linear.mdx`:
- Around line 5-6: Remove the frontmatter block that sets sidebar.label (the
lines `sidebar:` and `label: Linear`) from the linear.mdx agent-connector
reference page; locate the `sidebar.label` entry in that file and delete those
lines so the directory navigation continues to be generated from the central
source of truth.

In `@src/content/docs/reference/agent-connectors/microsoftexcel.mdx`:
- Around line 5-6: Remove the redundant frontmatter key `sidebar.label` from the
microsoftexcel.mdx file’s frontmatter (this MDX under the agent-connectors docs
directory); simply delete the `sidebar: label: Microsoft Excel` block so the
file relies on the central sidebar config, and ensure the remaining frontmatter
remains valid (proper separators) after removal.
- Around line 16-17: The imports ToolList and tools are unused; either remove
those imports or render the component—add a <ToolList tools={tools} /> element
into the MDX page content where the tool list should appear (for example below
the page header/intro) so the imported ToolList and tools symbols are used; if
the page should not show tools, simply delete the import lines for ToolList and
tools to eliminate the unused imports.

In `@src/content/docs/reference/agent-connectors/microsoftteams.mdx`:
- Around line 5-6: Remove the frontmatter key `sidebar.label` from the
microsoftteams.mdx connector reference page: locate the top YAML/frontmatter
where `sidebar.label: Teams` is set and delete that line so the page relies on
the central sidebar configuration; ensure no other `sidebar.label` entries
remain in this MDX file.

In `@src/content/docs/reference/agent-connectors/microsoftword.mdx`:
- Around line 5-6: Remove the per-page frontmatter key "sidebar.label" from the
Microsoft Word agent-connector MDX file (the frontmatter block that currently
sets sidebar: label: Microsoft Word); since this directory uses central
auto-generated navigation, delete that "sidebar.label" entry so the page relies
on the central sidebar config instead of per-page drift.

In `@src/content/docs/reference/agent-connectors/monday.mdx`:
- Around line 5-6: Remove the manual frontmatter key `sidebar.label` from the
monday.mdx page (delete the `sidebar: label: Monday.com` lines) so the
agent-connectors directory uses the centralized auto-generated navigation;
ensure no other `sidebar.label` entries remain in files under the
agent-connectors pages and commit the cleaned MDX file.

In `@src/content/docs/reference/agent-connectors/notion.mdx`:
- Around line 5-6: Remove the manually added sidebar.label frontmatter from the
auto-generated connector reference MDX (the Notion connector page) because
navigation is managed centrally; locate the frontmatter key "sidebar.label" and
delete that entry so the page relies on the shared sidebar configuration
instead.

In `@src/content/docs/reference/agent-connectors/onedrive.mdx`:
- Around line 5-6: Remove the unnecessary frontmatter key by deleting the
sidebar.label entry from the MDX frontmatter (the "sidebar.label: OneDrive"
line) in the OneDrive reference page under the agent-connectors reference
directory; simply remove that frontmatter key so the auto-generated sidebar
config can drive navigation instead of having an explicit sidebar.label in the
file.

In `@src/content/docs/reference/agent-connectors/onenote.mdx`:
- Around line 5-6: Remove the per-page frontmatter key "sidebar.label" from this
OneNote reference MDX (and any other files under the agent-connectors reference
directory) because navigation is auto-generated centrally; open the MDX
frontmatter block that contains sidebar.label and delete that line so the page
uses the shared sidebar configuration instead.
- Around line 16-17: The page imports ToolList and tools but never renders them;
update the MDX body to include the ToolList component (e.g., <ToolList
tools={tools} />) so the imported `ToolList` component and `tools` data are
actually rendered; place this JSX/MDX snippet in the appropriate spot in
src/content/docs/reference/agent-connectors/onenote.mdx where the tool catalog
should appear.

In `@src/content/docs/reference/agent-connectors/outlook.mdx`:
- Line 26: Update the provider icon URL host from cdn.scalekit.cloud to
cdn.scalekit.com in the <img> tag: change the src attribute value
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/outlook.svg" to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/outlook.svg" so it
matches the CDN pattern used by other connector pages (the <img> tag at the top
of outlook.mdx).

In `@src/content/docs/reference/agent-connectors/pagerduty.mdx`:
- Line 24: The img tag's src uses the wrong CDN host (cdn.scalekit.cloud);
update the src attribute on the <img> element to use the approved provider-icon
CDN base "https://cdn.scalekit.com/sk-connect/assets/provider-icons/" (so the
full src becomes that base plus the existing filename, e.g.,
provider-icons/pagerduty.svg) ensuring width/height/alt remain unchanged.

In `@src/content/docs/reference/agent-connectors/phantombuster.mdx`:
- Line 26: Update the provider-icon URL to use the canonical CDN host by
replacing the img src host from "cdn.scalekit.cloud" to "cdn.scalekit.com" in
the img element (the <img
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/phantombuster.svg"
... /> line) so the PhantomBuster logo path matches other files in
src/content/docs/reference/agent-connectors and uses
https://cdn.scalekit.com/sk-connect/assets/provider-icons/phantombuster.svg.

In `@src/content/docs/reference/agent-connectors/salesforce.mdx`:
- Around line 5-6: Remove the frontmatter key named `sidebar.label` (currently
set to "Salesforce") from this generated reference page so it doesn't override
the central navigation; locate the `sidebar.label` entry in the page frontmatter
and delete that key (and its value) so navigation remains auto-generated from
the shared sidebar configuration.

In `@src/content/docs/reference/agent-connectors/servicenow.mdx`:
- Line 6: Remove the page-level frontmatter key sidebar.label from the
ServiceNow connector MDX (the servicenow.mdx file) because this directory’s
navigation is generated centrally; locate the frontmatter block and delete the
sidebar.label entry so the page uses the shared sidebar configuration instead of
a local label.

In `@src/content/docs/reference/agent-connectors/sharepoint.mdx`:
- Around line 15-17: The file currently imports ToolList and tools but never
uses them; decide whether to render the tool accordion or remove the imports. If
the page should show the connector tools, add a ToolList rendering such as
<ToolList tools={tools} /> placed in the appropriate section (e.g., where
connector usage or tools are described, near UsageSharepointSection if relevant)
and ensure props match the ToolList API; otherwise delete the unused imports
(ToolList and tools) to remove dead code. Keep references to the existing
UsageSharepointSection intact if it remains responsible for usage documentation.

In `@src/content/docs/reference/agent-connectors/slack.mdx`:
- Around line 5-6: Remove the frontmatter key `sidebar.label` from the MDX file
(the top YAML block in src/content/docs/reference/agent-connectors/slack.mdx)
because sidebar navigation for this directory is generated centrally; simply
delete the `sidebar: label: Slack` entry so the file relies on the central
sidebar config and avoids duplicate sources of truth.

In `@src/content/docs/reference/agent-connectors/snowflake.mdx`:
- Around line 5-6: This page includes a page-level navigation override via the
frontmatter key `sidebar.label`; remove the `sidebar.label` entry from the MDX
frontmatter so the connector's navigation stays managed centrally (do not add or
replace any other sidebar keys); locate and delete the `sidebar.label` line in
this generated connector MDX under the agent-connectors reference directory.

In `@src/content/docs/reference/agent-connectors/supadata.mdx`:
- Line 24: The provider icon URL currently uses the wrong CDN host; update the
img src for the Supadata provider icon (the <img ...
src=".../sk-connect/assets/provider-icons/..."> attribute) to use the approved
host by replacing "https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/"
with "https://cdn.scalekit.com/sk-connect/assets/provider-icons/" so the asset
path and filename remain unchanged but the host is cdn.scalekit.com.

In `@src/content/docs/reference/agent-connectors/trello.mdx`:
- Around line 5-6: Remove the unnecessary frontmatter key sidebar.label from the
MDX frontmatter in the Trello agent connector page: locate the frontmatter block
that contains sidebar.label and delete that key (and its value) so the page
relies on the repository's auto-generated sidebar for files under the
agent-connectors docs; ensure no other frontmatter keys are modified.
- Around line 18-20: The Trello connector page imports ToolList and tools but
never renders them; add a ToolList component invocation using the imported tools
(i.e., <ToolList tools={tools} />) immediately after the Usage section in the
trello.mdx file so it matches other agent-connector pages; locate the Usage
heading in the file and insert the ToolList render there referencing the
imported ToolList and tools symbols.

In `@src/content/docs/reference/agent-connectors/twitter.mdx`:
- Line 28: The comma after the first Badge is separated by a stray space; update
the line in the docs where Supports authentication is rendered (the <Badge
text="Bearer Token" /> , <Badge text="OAuth 2.0" /> sequence) so the comma is
immediately after the first component (i.e. change " /> , <Badge" to "/>,
<Badge") ensuring there is a single space after the comma before the next Badge.

In `@src/content/docs/reference/agent-connectors/vercel.mdx`:
- Line 24: Replace the raw GitHub SVG src in the <img> tag with the standardized
CDN host URL: change the src attribute on the Vercel logo <img> element to point
to https://cdn.scalekit.com/sk-connect/assets/provider-icons/vercel.svg (keep
width="64" height="64" alt="Vercel logo" intact); ensure the image path exactly
matches the provider icon naming convention used across other agent-connectors
pages.

In `@src/content/docs/reference/agent-connectors/vimeo.mdx`:
- Around line 5-6: Remove the unnecessary frontmatter key `sidebar.label` from
the MDX file (the block that sets "sidebar: label: Vimeo") in `vimeo.mdx`;
locate the frontmatter at the top of the file and delete the `sidebar`/`label`
lines (or the entire frontmatter if it's now empty) and ensure the remaining
frontmatter is valid YAML so the file continues to parse correctly.

In `@src/content/docs/reference/agent-connectors/youtube.mdx`:
- Around line 5-6: Remove the page-level frontmatter key "sidebar.label" from
this MDX document’s frontmatter (the line setting sidebar.label: YouTube) since
navigation for the agent-connectors reference is centrally generated; simply
delete that key/value from the file’s top-matter and ensure no other page-level
sidebar.label entries remain in the agent-connectors reference docs.

In `@src/content/docs/reference/agent-connectors/zendesk.mdx`:
- Around line 5-6: Remove the per-page frontmatter key sidebar.label from this
connector reference MDX file: the issue is that sidebar.label is being set at
the page level (in the frontmatter block) which conflicts with the centrally
generated navigation; fix it by deleting the sidebar.label line/entry from the
file’s frontmatter (ensure no other sidebar.label entries are present in this
directory’s connector pages) so navigation remains driven by the central
generator.
- Around line 37-43: The page renders a duplicated/empty tools section because
UsageZendeskSection already emits the "## Scalekit Tools" heading and then the
page immediately renders <ToolList tools={tools} />; fix by removing or
conditionally rendering the extra ToolList: either delete the <ToolList
tools={tools} /> line from this MDX so UsageZendeskSection alone supplies the
tools block, or change the MDX to render <ToolList tools={tools} /> only when
tools is non-empty (e.g., wrap in a conditional check) so the page does not
produce a blank or duplicate "Tools" heading; reference the JSX components
UsageZendeskSection and ToolList when updating the file.

In `@src/content/docs/reference/agent-connectors/zoom.mdx`:
- Around line 5-6: Remove the unnecessary frontmatter key `sidebar.label` from
the MDX frontmatter in src/content/docs/reference/agent-connectors/zoom.mdx;
locate the frontmatter block at the top of the file and delete the `sidebar:
label: Zoom` entry so the page uses the auto-generated navigation from the
central sidebar config (no other content changes required).

---

Outside diff comments:
In `@src/content/docs/reference/agent-connectors/asana.mdx`:
- Line 26: The img tag for the Asana connector uses the wrong CDN host
(cdn.scalekit.cloud); update the src to use the canonical host
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (replace
cdn.scalekit.cloud with cdn.scalekit.com) for the Asana provider image
referenced by the img src ending in asana-n.svg; also scan other files under the
agent-connectors reference directory to ensure all provider-icon URLs use the
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ host.

In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx`:
- Line 25: The provider icon URL on the Clari Copilot doc currently uses the
wrong CDN host; update the img src in
src/content/docs/reference/agent-connectors/clari_copilot.mdx to use
https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg instead of
https://cdn.scalekit.cloud, and scan other files in the
src/content/docs/reference/agent-connectors/ directory to ensure all
provider-icon img src values use the
https://cdn.scalekit.com/sk-connect/assets/provider-icons/ host format (update
any occurrences to match).

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx`:
- Line 25: Replace the provider icon URL host in the image tag used in the
Freshdesk connector doc so it uses cdn.scalekit.com instead of
cdn.scalekit.cloud; locate the <img> tag referencing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/freshdesk.png" and
update the host to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png" to
match the canonical CDN pattern used across agent-connector reference pages.

In `@src/content/docs/reference/agent-connectors/gong.mdx`:
- Line 26: The provider-icon image src is using the wrong CDN domain; update the
img tag's src URL in the gong.mdx content (the <img ...
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gong.svg" ...>
occurrence) to use the correct host https://cdn.scalekit.com so the src becomes
https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg; keep the
same path, width, height and alt attributes unchanged.
- Line 30: Change the Badge text "Api Key" to "API Key" in the authentication
line so the badge reads <Badge text="API Key" /> (update the Badge usage in the
"Supports authentication" line where Badge text="Api Key" is present).

In `@src/content/docs/reference/agent-connectors/googlemeet.mdx`:
- Line 25: Update the image URL host to use the canonical CDN host: replace the
src in the <img> tag referencing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_meet.svg"
with the same path but host "https://cdn.scalekit.com" (i.e., update the
provider icon URL in src/content/docs/reference/agent-connectors/googlemeet.mdx
to use cdn.scalekit.com).

In `@src/content/docs/reference/agent-connectors/jira.mdx`:
- Line 26: The img tag's src URL uses the wrong CDN host
(src="https://cdn.scalekit.cloud/..."); update the src to use the correct host
by replacing "cdn.scalekit.cloud" with "cdn.scalekit.com" in the <img> element
(the provider icon reference) so the image points to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/jira.svg.

In `@src/content/docs/reference/agent-connectors/vimeo.mdx`:
- Line 25: The img tag in vimeo.mdx uses the wrong CDN host in the src attribute
("https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/vimeo.svg");
update that host to "https://cdn.scalekit.com" so the src becomes
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg", leaving
the width, height, and alt attributes unchanged to match the established
provider-icon pattern.

In `@src/content/docs/reference/agent-connectors/zoom.mdx`:
- Line 26: The image src in the <img> tag uses the wrong CDN host; update the
src attribute to use the canonical host by replacing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/zoom.svg" with
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg" so the
provider-icon URL follows the established pattern (ensure the src begins with
https://cdn.scalekit.com/sk-connect/assets/provider-icons/).
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5d9201ae-c544-487a-9ef8-b4a71add6723

📥 Commits

Reviewing files that changed from the base of the PR and between 8fdc7af and 90d8480.

📒 Files selected for processing (136)
  • src/components/templates/agent-connectors/index.ts
  • src/content/docs/reference/agent-connectors/affinity.mdx
  • src/content/docs/reference/agent-connectors/airtable.mdx
  • src/content/docs/reference/agent-connectors/apifymcp.mdx
  • src/content/docs/reference/agent-connectors/apollo.mdx
  • src/content/docs/reference/agent-connectors/asana.mdx
  • src/content/docs/reference/agent-connectors/attention.mdx
  • src/content/docs/reference/agent-connectors/attio.mdx
  • src/content/docs/reference/agent-connectors/bigquery.mdx
  • src/content/docs/reference/agent-connectors/brave-search.mdx
  • src/content/docs/reference/agent-connectors/brave.mdx
  • src/content/docs/reference/agent-connectors/chorus.mdx
  • src/content/docs/reference/agent-connectors/clari_copilot.mdx
  • src/content/docs/reference/agent-connectors/clickup.mdx
  • src/content/docs/reference/agent-connectors/confluence.mdx
  • src/content/docs/reference/agent-connectors/discord.mdx
  • src/content/docs/reference/agent-connectors/dropbox.mdx
  • src/content/docs/reference/agent-connectors/evertrace.mdx
  • src/content/docs/reference/agent-connectors/exa.mdx
  • src/content/docs/reference/agent-connectors/fathom.mdx
  • src/content/docs/reference/agent-connectors/figma.mdx
  • src/content/docs/reference/agent-connectors/freshdesk.mdx
  • src/content/docs/reference/agent-connectors/github.mdx
  • src/content/docs/reference/agent-connectors/gitlab.mdx
  • src/content/docs/reference/agent-connectors/gmail.mdx
  • src/content/docs/reference/agent-connectors/gong.mdx
  • src/content/docs/reference/agent-connectors/google_ads.mdx
  • src/content/docs/reference/agent-connectors/googlecalendar.mdx
  • src/content/docs/reference/agent-connectors/googledocs.mdx
  • src/content/docs/reference/agent-connectors/googledrive.mdx
  • src/content/docs/reference/agent-connectors/googleforms.mdx
  • src/content/docs/reference/agent-connectors/googlemeet.mdx
  • src/content/docs/reference/agent-connectors/googlesheets.mdx
  • src/content/docs/reference/agent-connectors/googleslides.mdx
  • src/content/docs/reference/agent-connectors/granola.mdx
  • src/content/docs/reference/agent-connectors/granolamcp.mdx
  • src/content/docs/reference/agent-connectors/harvestapi.mdx
  • src/content/docs/reference/agent-connectors/hubspot.mdx
  • src/content/docs/reference/agent-connectors/intercom.mdx
  • src/content/docs/reference/agent-connectors/jiminny.mdx
  • src/content/docs/reference/agent-connectors/jira.mdx
  • src/content/docs/reference/agent-connectors/linear.mdx
  • src/content/docs/reference/agent-connectors/linkedin.mdx
  • src/content/docs/reference/agent-connectors/microsoftexcel.mdx
  • src/content/docs/reference/agent-connectors/microsoftteams.mdx
  • src/content/docs/reference/agent-connectors/microsoftword.mdx
  • src/content/docs/reference/agent-connectors/monday.mdx
  • src/content/docs/reference/agent-connectors/notion.mdx
  • src/content/docs/reference/agent-connectors/onedrive.mdx
  • src/content/docs/reference/agent-connectors/onenote.mdx
  • src/content/docs/reference/agent-connectors/outlook.mdx
  • src/content/docs/reference/agent-connectors/outreach.mdx
  • src/content/docs/reference/agent-connectors/pagerduty.mdx
  • src/content/docs/reference/agent-connectors/phantombuster.mdx
  • src/content/docs/reference/agent-connectors/pipedrive.mdx
  • src/content/docs/reference/agent-connectors/salesforce.mdx
  • src/content/docs/reference/agent-connectors/servicenow.mdx
  • src/content/docs/reference/agent-connectors/sharepoint.mdx
  • src/content/docs/reference/agent-connectors/slack.mdx
  • src/content/docs/reference/agent-connectors/snowflake.mdx
  • src/content/docs/reference/agent-connectors/snowflakekeyauth.mdx
  • src/content/docs/reference/agent-connectors/supadata.mdx
  • src/content/docs/reference/agent-connectors/trello.mdx
  • src/content/docs/reference/agent-connectors/twitter.mdx
  • src/content/docs/reference/agent-connectors/vercel.mdx
  • src/content/docs/reference/agent-connectors/vimeo.mdx
  • src/content/docs/reference/agent-connectors/youtube.mdx
  • src/content/docs/reference/agent-connectors/zendesk.mdx
  • src/content/docs/reference/agent-connectors/zoom.mdx
  • src/data/agent-connectors/affinity.ts
  • src/data/agent-connectors/airtable.ts
  • src/data/agent-connectors/apifymcp.ts
  • src/data/agent-connectors/apollo.ts
  • src/data/agent-connectors/asana.ts
  • src/data/agent-connectors/attention.ts
  • src/data/agent-connectors/attio.ts
  • src/data/agent-connectors/bigquery.ts
  • src/data/agent-connectors/brave.ts
  • src/data/agent-connectors/chorus.ts
  • src/data/agent-connectors/clari_copilot.ts
  • src/data/agent-connectors/clickup.ts
  • src/data/agent-connectors/confluence.ts
  • src/data/agent-connectors/discord.ts
  • src/data/agent-connectors/dropbox.ts
  • src/data/agent-connectors/evertrace.ts
  • src/data/agent-connectors/exa.ts
  • src/data/agent-connectors/fathom.ts
  • src/data/agent-connectors/figma.ts
  • src/data/agent-connectors/freshdesk.ts
  • src/data/agent-connectors/github.ts
  • src/data/agent-connectors/gitlab.ts
  • src/data/agent-connectors/gmail.ts
  • src/data/agent-connectors/gong.ts
  • src/data/agent-connectors/google_ads.ts
  • src/data/agent-connectors/googlecalendar.ts
  • src/data/agent-connectors/googledocs.ts
  • src/data/agent-connectors/googledrive.ts
  • src/data/agent-connectors/googleforms.ts
  • src/data/agent-connectors/googlemeet.ts
  • src/data/agent-connectors/googlesheets.ts
  • src/data/agent-connectors/googleslides.ts
  • src/data/agent-connectors/granola.ts
  • src/data/agent-connectors/granolamcp.ts
  • src/data/agent-connectors/harvestapi.ts
  • src/data/agent-connectors/hubspot.ts
  • src/data/agent-connectors/intercom.ts
  • src/data/agent-connectors/jiminny.ts
  • src/data/agent-connectors/jira.ts
  • src/data/agent-connectors/linear.ts
  • src/data/agent-connectors/linkedin.ts
  • src/data/agent-connectors/microsoftexcel.ts
  • src/data/agent-connectors/microsoftteams.ts
  • src/data/agent-connectors/microsoftword.ts
  • src/data/agent-connectors/monday.ts
  • src/data/agent-connectors/notion.ts
  • src/data/agent-connectors/onedrive.ts
  • src/data/agent-connectors/onenote.ts
  • src/data/agent-connectors/outlook.ts
  • src/data/agent-connectors/outreach.ts
  • src/data/agent-connectors/pagerduty.ts
  • src/data/agent-connectors/phantombuster.ts
  • src/data/agent-connectors/pipedrive.ts
  • src/data/agent-connectors/salesforce.ts
  • src/data/agent-connectors/servicenow.ts
  • src/data/agent-connectors/sharepoint.ts
  • src/data/agent-connectors/slack.ts
  • src/data/agent-connectors/snowflake.ts
  • src/data/agent-connectors/snowflakekeyauth.ts
  • src/data/agent-connectors/supadata.ts
  • src/data/agent-connectors/trello.ts
  • src/data/agent-connectors/twitter.ts
  • src/data/agent-connectors/vercel.ts
  • src/data/agent-connectors/vimeo.ts
  • src/data/agent-connectors/youtube.ts
  • src/data/agent-connectors/zendesk.ts
  • src/data/agent-connectors/zoom.ts
💤 Files with no reviewable changes (1)
  • src/content/docs/reference/agent-connectors/brave-search.mdx

Comment on lines +5 to +6
sidebar:
label: Airtable
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 | 🔵 Trivial

sidebar.label is redundant for auto-generated connector pages.

Per repository learnings, navigation for files under src/content/docs/reference/agent-connectors is auto-generated from the directory via the central sidebar config. The sidebar.label field is not required and can be omitted. Based on learnings: "For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config."

♻️ Proposed removal
 tableOfContents: true
-sidebar:
-  label: Airtable
 head:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sidebar:
label: Airtable
tableOfContents: true
head:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/airtable.mdx` around lines 5 - 6,
Remove the redundant frontmatter key `sidebar.label` from the Airtable connector
MDX (the `sidebar.label` entry in the file's frontmatter), leaving other
frontmatter intact; ensure no references to `sidebar.label` remain in that MDX
file and run the local docs build to confirm navigation is still auto-generated
from the agent-connectors directory.

Comment on lines +5 to +6
sidebar:
label: Attention
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.

⚠️ Potential issue | 🟡 Minor

Remove sidebar.label from this agent-connector reference page.

This directory’s navigation is centrally auto-generated, so page-level sidebar.label should not be set here.

Based on learnings, for MDX files under src/content/docs/reference/agent-connectors, sidebar.label is not required and should not be relied on or modified because ordering/grouping is defined in shared sidebar configuration.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/attention.mdx` around lines 5 -
6, Remove the page-level sidebar.label entry in the attention.mdx frontmatter;
specifically delete the "sidebar: label: Attention" lines so the agent-connector
reference page does not set sidebar.label (the shared sidebar config controls
grouping/ordering), ensuring only standard frontmatter remains.

Comment on lines +16 to +17
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/attention'
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.

⚠️ Potential issue | 🟠 Major

Render the imported ToolList so tool reference content is visible.

ToolList and tools are imported but never rendered, so this page does not expose the connector tool list.

Proposed fix
 import { UsageAttentionSection } from '@components/templates'
@@
 ## Usage
 
 <UsageAttentionSection />
+
+## Tools
+
+<ToolList tools={tools} />

Based on learnings, agent-connector reference pages in this directory are generated around structured tool/parameter data and should present that generated output consistently.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/attention.mdx` around lines 16 -
17, The page imports ToolList and tools but never renders them; update the MDX
content to render the ToolList component and pass the tools data so the
connector tool list is visible (use the imported ToolList component with the
imported tools prop in the page body, mirroring how other agent-connector
reference pages render tool output).

Comment on lines +5 to +6
sidebar:
label: Clari Copilot
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.

🛠️ Refactor suggestion | 🟠 Major

Remove sidebar.label from agent-connector reference frontmatter

src/content/docs/reference/agent-connectors/** navigation is auto-generated, so adding/changing sidebar.label here introduces manual metadata that should be kept out of generated connector pages.

Suggested diff
 sidebar:
-  label: Clari Copilot

Based on learnings: For MDX files under src/content/docs/reference/agent-connectors, sidebar.label is not required because navigation is auto-generated from central sidebar config; do not rely on or modify sidebar.label in these files.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx` around lines 5
- 6, Remove the manual frontmatter key "sidebar.label" from this agent-connector
MDX (Clari Copilot) and any other files under the agent-connectors docs; locate
the frontmatter block in clari_copilot.mdx (look for "sidebar.label: Clari
Copilot") and delete that line so the page relies on the auto-generated
navigation, and ensure no new "sidebar.label" entries are added to files in the
agent-connectors collection.

Comment on lines +5 to +6
sidebar:
label: Discord
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.

⚠️ Potential issue | 🟡 Minor

Remove sidebar.label from agent-connector reference frontmatter

src/content/docs/reference/agent-connectors/** navigation is auto-generated from central sidebar config, so this local sidebar.label should not be added here.

Suggested fix
-sidebar:
-  label: Discord

Based on learnings: For MDX files under src/content/docs/reference/agent-connectors, sidebar.label is not required because navigation is auto-generated from the central sidebar config.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sidebar:
label: Discord
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/discord.mdx` around lines 5 - 6,
Remove the frontmatter key `sidebar.label` from the MDX file (discord.mdx) —
locate the top-of-file frontmatter that contains `sidebar: label: Discord` and
delete that `sidebar.label` entry so the agent-connector reference navigation is
driven solely by the central sidebar config; also scan other files in the same
agent-connectors folder for any remaining `sidebar.label` keys and remove them
if present.

Comment thread src/content/docs/reference/agent-connectors/supadata.mdx Outdated
Connect to Vercel. Access user profile, teams, projects, deployments, and environment settings.
</div>
<div class="flex justify-center">
<img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vercel.svg" width="64" height="64" alt="Vercel logo" />
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.

⚠️ Potential issue | 🟠 Major

Use CDN URL for provider logo.

The logo must use the standardized CDN host for consistency and performance. Based on coding guidelines, all provider icons in agent-connectors reference pages must be served from https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🔄 Proposed fix
- <img src="https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vercel.svg" width="64" height="64" alt="Vercel logo" />
+ <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/vercel.svg" width="64" height="64" alt="Vercel logo" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/vercel.mdx` at line 24, Replace
the raw GitHub SVG src in the <img> tag with the standardized CDN host URL:
change the src attribute on the Vercel logo <img> element to point to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/vercel.svg (keep
width="64" height="64" alt="Vercel logo" intact); ensure the image path exactly
matches the provider icon naming convention used across other agent-connectors
pages.

Comment on lines +5 to +6
sidebar:
label: Vimeo
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 | 🔵 Trivial

Sidebar label is unnecessary for this directory.

Navigation for files under src/content/docs/reference/agent-connectors/ is auto-generated via the central sidebar config, so sidebar.label is not required. This won't cause issues but can be removed for consistency with the auto-generation pattern.

Based on learnings: "For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/vimeo.mdx` around lines 5 - 6,
Remove the unnecessary frontmatter key `sidebar.label` from the MDX file (the
block that sets "sidebar: label: Vimeo") in `vimeo.mdx`; locate the frontmatter
at the top of the file and delete the `sidebar`/`label` lines (or the entire
frontmatter if it's now empty) and ensure the remaining frontmatter is valid
YAML so the file continues to parse correctly.

Comment on lines +5 to +6
sidebar:
label: YouTube
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.

⚠️ Potential issue | 🟡 Minor

Remove page-level sidebar.label from this auto-generated reference page.

Line 5–Line 6 introduces sidebar.label, but this directory’s navigation is centrally generated, so local labels create metadata drift.

Suggested fix
-sidebar:
-  label: YouTube

Based on learnings: For MDX files under src/content/docs/reference/agent-connectors, sidebar.label is not required because navigation is auto-generated from central sidebar configuration.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sidebar:
label: YouTube
---
title: YouTube
description: Connect to YouTube to search videos and manage playlists in your AI agent workflows
---
import { ToolList } from '@/components/tools/ToolList';
import { tools } from '@/data/agent-connectors/youtube-tools';
<div class="grid grid-cols-5 gap-4 items-center mb-8">
<div>
<h1 class="text-2xl font-bold">YouTube</h1>
<p class="text-sm text-gray-600">Video search and playlist management</p>
</div>
<div class="col-span-4 flex justify-end">
<img src="@/assets/docs/connectors/youtube.svg" alt="YouTube logo" class="h-16" />
</div>
</div>
## Available tools
<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/youtube.mdx` around lines 5 - 6,
Remove the page-level frontmatter key "sidebar.label" from this MDX document’s
frontmatter (the line setting sidebar.label: YouTube) since navigation for the
agent-connectors reference is centrally generated; simply delete that key/value
from the file’s top-matter and ensure no other page-level sidebar.label entries
remain in the agent-connectors reference docs.

Comment on lines +5 to +6
sidebar:
label: Zoom
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 | 🔵 Trivial

Sidebar label is not required for auto-generated agent-connector pages.

The sidebar.label is unnecessary here because navigation for files under src/content/docs/reference/agent-connectors/ is auto-generated from the directory via the central sidebar config. This won't cause issues, but you can remove it to keep frontmatter minimal and consistent with other connector pages.

♻️ Optional cleanup
 ---
 title: Zoom
 description: Connect to Zoom. Schedule meetings, manage recordings, and handle video conferencing workflows
 tableOfContents: true
-sidebar:
-  label: Zoom
 head:
   - tag: style

Based on learnings: "For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/zoom.mdx` around lines 5 - 6,
Remove the unnecessary frontmatter key `sidebar.label` from the MDX frontmatter
in src/content/docs/reference/agent-connectors/zoom.mdx; locate the frontmatter
block at the top of the file and delete the `sidebar: label: Zoom` entry so the
page uses the auto-generated navigation from the central sidebar config (no
other content changes required).

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Review continued from previous batch...

Comment thread src/content/docs/reference/agent-connectors/affinity.mdx Outdated
Comment thread src/content/docs/reference/agent-connectors/apifymcp.mdx Outdated
Comment on lines +16 to +17
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/asana'
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.

⚠️ Potential issue | 🟠 Major

The ToolList migration is incomplete on this page.

Line 16-Line 17 imports the data-driven tool list, but the page does not render it in content.

Suggested change
 ## Usage
 
 <UsageAsanaSection />
+
+## Tool list
+
+<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/asana.mdx` around lines 16 - 17,
The page imports the ToolList component and the tools data but never renders
them; update the MDX content in asana.mdx to include the ToolList component and
pass the imported tools prop (use the imported symbol ToolList and the tools
array) where the tool list should appear so the page displays the data-driven
tool list.

Comment on lines +5 to +6
sidebar:
label: Chorus
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 | 🔵 Trivial

Remove sidebar.label from this auto-generated connector reference page.

Line 5 and Line 6 add sidebar.label, but this directory’s navigation is generated from shared sidebar config and should not be set in-page.

Based on learnings: For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/chorus.mdx` around lines 5 - 6,
Remove the frontmatter key sidebar.label from this MDX file (the snippet adding
"sidebar:\n  label: Chorus") because connector pages under
src/content/docs/reference/agent-connectors are auto-generated by the shared
sidebar config; simply delete the sidebar.label entry in chorus.mdx (remove the
"sidebar" block containing "label: Chorus") so the page uses the central sidebar
navigation.

Comment on lines +5 to +6
sidebar:
label: Fathom
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.

⚠️ Potential issue | 🟡 Minor

Remove sidebar.label from this agent-connector reference page.

This directory’s navigation is auto-generated from shared sidebar config, so this frontmatter label should not be set here.

Suggested fix
-sidebar:
-  label: Fathom

Based on learnings: For MDX files under src/content/docs/reference/agent-connectors, sidebar.label is not required because navigation is auto-generated from the central sidebar config.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sidebar:
label: Fathom
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/fathom.mdx` around lines 5 - 6,
Remove the frontmatter key `sidebar.label` from this agent-connector reference
page (the YAML block in fathom.mdx) — navigation is generated from the shared
sidebar config so delete the `sidebar: label: Fathom` entry (or the
`sidebar.label` line) from the file to avoid overriding the central sidebar.

Comment on lines 5 to +6
sidebar:
label: Trello
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 | 🔵 Trivial

sidebar.label is unnecessary for auto-generated agent connector pages.

Per repository conventions, the sidebar navigation for files under src/content/docs/reference/agent-connectors/ is auto-generated from the central sidebar config. The label field can be omitted.

♻️ Suggested simplification
 sidebar:
-  label: Trello
   badge:
     text: Soon
     variant: tip

Based on learnings: "For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sidebar:
label: Trello
sidebar:
badge:
text: Soon
variant: tip
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/trello.mdx` around lines 5 - 6,
Remove the unnecessary frontmatter key sidebar.label from the MDX frontmatter in
the Trello agent connector page: locate the frontmatter block that contains
sidebar.label and delete that key (and its value) so the page relies on the
repository's auto-generated sidebar for files under the agent-connectors docs;
ensure no other frontmatter keys are modified.

Comment on lines +18 to +20
import { Badge } from '@astrojs/starlight/components'
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/trello'
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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if the trello data file exists
fd -t f 'trello.ts' src/data/agent-connectors

# See how other agent connector pages use ToolList
rg -n -A 3 '<ToolList' src/content/docs/reference/agent-connectors/ | head -30

Repository: scalekit-inc/developer-docs

Length of output: 1464


🏁 Script executed:

cat -n src/content/docs/reference/agent-connectors/trello.mdx

Repository: scalekit-inc/developer-docs

Length of output: 1302


Add missing <ToolList> component rendering after the Usage section.

The imports for ToolList and tools exist (lines 19–20), but the component is never rendered. Every other agent-connector page in this directory includes <ToolList tools={tools} /> after the Usage section. The data file src/data/agent-connectors/trello.ts exists and follows the established pattern across all connector pages.

Add the missing rendering after the Usage section:

Suggested fix
 ## Usage

 <UsageTrelloSection />
+
+## Tools
+
+<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/trello.mdx` around lines 18 - 20,
The Trello connector page imports ToolList and tools but never renders them; add
a ToolList component invocation using the imported tools (i.e., <ToolList
tools={tools} />) immediately after the Usage section in the trello.mdx file so
it matches other agent-connector pages; locate the Usage heading in the file and
insert the ToolList render there referencing the imported ToolList and tools
symbols.

</div>
</div>

Supports authentication: <Badge text="Bearer Token" /> , <Badge text="OAuth 2.0" />
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 | 🔵 Trivial

Fix Badge spacing for consistency.

The comma should come immediately after the first <Badge> component, with a space before the next Badge.

✨ Suggested formatting fix
-Supports authentication: <Badge text="Bearer Token" /> , <Badge text="OAuth 2.0" />
+Supports authentication: <Badge text="Bearer Token" />, <Badge text="OAuth 2.0" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Supports authentication: <Badge text="Bearer Token" /> , <Badge text="OAuth 2.0" />
Supports authentication: <Badge text="Bearer Token" />, <Badge text="OAuth 2.0" />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/twitter.mdx` at line 28, The
comma after the first Badge is separated by a stray space; update the line in
the docs where Supports authentication is rendered (the <Badge text="Bearer
Token" /> , <Badge text="OAuth 2.0" /> sequence) so the comma is immediately
after the first component (i.e. change " /> , <Badge" to "/>, <Badge") ensuring
there is a single space after the comma before the next Badge.

Comment on lines +5 to +6
sidebar:
label: Zendesk
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.

⚠️ Potential issue | 🟡 Minor

Avoid setting sidebar.label in this auto-generated connector reference page.

This directory’s navigation is centrally generated, so adding page-level sidebar.label here creates unnecessary drift from the generation pattern.

Suggested change
-sidebar:
-  label: Zendesk

Based on learnings: In src/content/docs/reference/agent-connectors/**, sidebar.label is managed centrally and should not be modified per page.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/zendesk.mdx` around lines 5 - 6,
Remove the per-page frontmatter key sidebar.label from this connector reference
MDX file: the issue is that sidebar.label is being set at the page level (in the
frontmatter block) which conflicts with the centrally generated navigation; fix
it by deleting the sidebar.label line/entry from the file’s frontmatter (ensure
no other sidebar.label entries are present in this directory’s connector pages)
so navigation remains driven by the central generator.

Comment thread src/content/docs/reference/agent-connectors/zendesk.mdx
@ravibits ravibits force-pushed the preview/provider-catalog branch from 90d8480 to f2f002b Compare April 7, 2026 12:55
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 21

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (16)
src/content/docs/reference/agent-connectors/monday.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the correct CDN host for provider icons.

The image URL uses cdn.scalekit.cloud but should use cdn.scalekit.com per the established pattern for agent-connector reference pages.

Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/monday.svg" width="64" height="64" alt="Monday.com logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/monday.svg" width="64" height="64" alt="Monday.com logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/. The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/monday.mdx` at line 26, The image
tag for the Monday.com provider icon uses the wrong CDN host; change the src URL
in the <img> tag that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/monday.svg" to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/monday.svg" so the
provider-icon path conforms to the established cdn.scalekit.com host pattern.
src/content/docs/reference/agent-connectors/google_ads.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the correct CDN host for provider icons.

The image URL uses cdn.scalekit.cloud but should use cdn.scalekit.com per the established pattern.

Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_ads.png" width="64" height="64" alt="Google Ads logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_ads.png" width="64" height="64" alt="Google Ads logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/. The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/google_ads.mdx` at line 26,
Update the image src that currently reads
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_ads.png" to
use the correct CDN host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_ads.png";
locate the <img> tag with that src (provider icon for Google Ads) and change
only the host portion, and scan other provider icons under the same docs area to
ensure they also use cdn.scalekit.com.
src/content/docs/reference/agent-connectors/intercom.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the approved provider-icon CDN host.

Line 26 uses cdn.scalekit.cloud; provider icons in this directory must use https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/intercom.svg" width="64" height="64" alt="Intercom logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/intercom.svg" width="64" height="64" alt="Intercom logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/"

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/intercom.mdx` at line 26, Replace
the provider icon URL host in the img tag: change the src value
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/intercom.svg" to
use the approved CDN host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/intercom.svg" in the
Intercom doc (the img element on line containing that src) so the file
src/content/docs/reference/agent-connectors/intercom.mdx uses the canonical
provider-icon CDN.
src/content/docs/reference/agent-connectors/clari_copilot.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Use the approved provider-icon CDN host.

Line 25 uses cdn.scalekit.cloud; provider icons must use https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/clari.svg" width="64" height="64" alt="Clari Copilot logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg" width="64" height="64" alt="Clari Copilot logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/"

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx` at line 25,
The img tag for the Clari Copilot logo uses the wrong CDN host; update the src
value in the <img> element to use the approved host by replacing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/clari.svg" with
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg" so the
provider-icon URL conforms to the required CDN pattern used across
src/content/docs/reference/agent-connectors.
src/content/docs/reference/agent-connectors/fathom.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Use the approved provider-icon CDN host.

Line 25 uses cdn.scalekit.cloud; in agent-connector reference pages, provider icons must use https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/fathom.svg" width="64" height="64" alt="Fathom logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/fathom.svg" width="64" height="64" alt="Fathom logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/ ... host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/fathom.mdx` at line 25, The
provider icon src uses the wrong CDN host; update the img tag's src attribute
(the <img ... src="..."> line) to use the approved host prefix
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/" instead of
"https://cdn.scalekit.cloud/..." so the image URL points to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/fathom.svg; keep
width, height and alt unchanged.
src/content/docs/reference/agent-connectors/gong.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Incorrect CDN host: use cdn.scalekit.com instead of cdn.scalekit.cloud.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gong.svg" width="64" height="64" alt="Gong logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg" width="64" height="64" alt="Gong logo" />

Based on learnings: "enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/... (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/gong.mdx` at line 26, The image
src in the <img> element for the Gong provider icon uses the wrong CDN host;
update the src URL in the img tag (the one with
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gong.svg") to
use https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg instead,
preserving width, height and alt attributes; also scan other provider icon img
tags in the same file for the same host and correct them to cdn.scalekit.com if
present.
src/content/docs/reference/agent-connectors/googlemeet.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Incorrect CDN host: use cdn.scalekit.com instead of cdn.scalekit.cloud.

The provider icon URL uses cdn.scalekit.cloud but should use cdn.scalekit.com per the established pattern for agent connector reference pages.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_meet.svg" width="64" height="64" alt="Google Meet logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_meet.svg" width="64" height="64" alt="Google Meet logo" />

Based on learnings: "enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/... The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/googlemeet.mdx` at line 26, The
image src in the Google Meet provider icon uses the wrong CDN host; update the
src attribute value in the <img> tag that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_meet.svg" so
the host is "cdn.scalekit.com" (i.e., change to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_meet.svg") to
match the established CDN pattern for provider icons.
src/content/docs/reference/agent-connectors/zoom.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Incorrect CDN host: use cdn.scalekit.com instead of cdn.scalekit.cloud.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/zoom.svg" width="64" height="64" alt="Zoom logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg" width="64" height="64" alt="Zoom logo" />

Based on learnings: "enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/... (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/zoom.mdx` at line 26, The image
src uses the wrong CDN host; update the <img> tag's src URL in the Zoom
connector doc (the line with the img tag currently pointing to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/zoom.svg") to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg" so the
provider icon loads from the correct CDN host.
src/content/docs/reference/agent-connectors/vimeo.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Incorrect CDN host: use cdn.scalekit.com instead of cdn.scalekit.cloud.

🔧 Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/vimeo.svg" width="64" height="64" alt="Vimeo logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg" width="64" height="64" alt="Vimeo logo" />

Based on learnings: "enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/... (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/vimeo.mdx` at line 25, Update the
img src URL in the Vimeo docs entry: replace the host "cdn.scalekit.cloud" with
"cdn.scalekit.com" for the <img
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/vimeo.svg" ...>
reference so the logo uses the enforced CDN host (i.e., change the URL to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg).
src/content/docs/reference/agent-connectors/googledocs.mdx (1)

26-26: ⚠️ Potential issue | 🟠 Major

Use cdn.scalekit.com instead of cdn.scalekit.cloud for provider icons.

The logo URL uses the wrong CDN host. Provider icon URLs in this directory must use cdn.scalekit.com.

🔧 Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_docs.svg" width="64" height="64" alt="Google Docs logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_docs.svg" width="64" height="64" alt="Google Docs logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, enforce using CDN URLs for provider-icon logos with the host https://cdn.scalekit.com/sk-connect/assets/provider-icons/... The host should be cdn.scalekit.com (not cdn.scalekit.cloud)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/googledocs.mdx` at line 26, The
provider icon URL in src/content/docs/reference/agent-connectors/googledocs.mdx
uses the wrong CDN host; update the img src attribute so the host is
cdn.scalekit.com (i.e., change
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_docs.svg" to
use "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_docs.svg")
so all provider-icon URLs in this directory use the correct CDN host.
src/content/docs/reference/agent-connectors/youtube.mdx (1)

25-25: ⚠️ Potential issue | 🟠 Major

Switch the logo URL to the approved CDN domain.

Line 25 points to cdn.scalekit.cloud; use cdn.scalekit.com for provider icons in this directory.

Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/youtube.svg" width="64" height="64" alt="YouTube logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/youtube.svg" width="64" height="64" alt="YouTube logo" />

Based on learnings, provider-icon URLs for agent-connector reference pages should use the cdn.scalekit.com host.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/youtube.mdx` at line 25, Update
the YouTube provider icon URL to use the approved CDN host: locate the img tag
with src
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/youtube.svg" in the
youtube.mdx content and change the domain from "cdn.scalekit.cloud" to
"cdn.scalekit.com" so the src becomes the approved CDN URL; ensure the width,
height, and alt attributes on the same img tag remain unchanged.
src/content/docs/reference/agent-connectors/salesforce.mdx (1)

26-26: ⚠️ Potential issue | 🟠 Major

Use the approved provider icon CDN host.

Line 26 uses cdn.scalekit.cloud; this directory standard is cdn.scalekit.com.

Proposed fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/sales_force.svg" width="64" height="64" alt="Salesforce logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/sales_force.svg" width="64" height="64" alt="Salesforce logo" />

Based on learnings, provider icons under src/content/docs/reference/agent-connectors/** must use https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/salesforce.mdx` at line 26,
Replace the image src host in the <img> tag that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/sales_force.svg" so
it uses the approved CDN host:
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/sales_force.svg";
keep the existing width, height, and alt attributes intact and ensure the path
starts with "https://cdn.scalekit.com/sk-connect/assets/provider-icons/".
src/content/docs/reference/agent-connectors/googlesheets.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the canonical provider-icon CDN host.

Line 26 uses cdn.scalekit.cloud but should use cdn.scalekit.com to stay aligned with the shared asset path convention used across agent-connector reference pages.

Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_sheets.svg" width="64" height="64" alt="Google Sheets logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_sheets.svg" width="64" height="64" alt="Google Sheets logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, provider-icon logos should use https://cdn.scalekit.com/sk-connect/assets/provider-icons/…; the host should be cdn.scalekit.com, not cdn.scalekit.cloud."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/googlesheets.mdx` at line 26,
Update the provider-icon img src to use the canonical CDN host: replace the src
attribute value in the img tag (the <img
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_sheets.svg"
... /> line) so the host is cdn.scalekit.com
(https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_sheets.svg) to
match the shared asset path convention used across agent-connector reference
pages.
src/content/docs/reference/agent-connectors/googledrive.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the canonical provider-icon CDN host.

Line 26 uses cdn.scalekit.cloud but should use cdn.scalekit.com to stay aligned with the shared asset path convention used across agent-connector reference pages.

Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_drive.svg" width="64" height="64" alt="Google Drive logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_drive.svg" width="64" height="64" alt="Google Drive logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, provider-icon logos should use https://cdn.scalekit.com/sk-connect/assets/provider-icons/…; the host should be cdn.scalekit.com, not cdn.scalekit.cloud."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/googledrive.mdx` at line 26, The
image tag's src in the googledrive agent-connector doc uses the wrong CDN host;
update the <img> src URL (the src value in the img element) to use
https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_drive.svg
instead of https://cdn.scalekit.cloud/... so it follows the canonical
provider-icon CDN convention used across agent-connector reference pages.
src/content/docs/reference/agent-connectors/googleslides.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use the canonical provider-icon CDN host.

Line 26 uses cdn.scalekit.cloud but should use cdn.scalekit.com to stay aligned with the shared asset path convention.

Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_slides.svg" width="64" height="64" alt="Google Slides logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_slides.svg" width="64" height="64" alt="Google Slides logo" />

Based on learnings: "In src/content/docs/reference/agent-connectors/**, provider-icon logos should use https://cdn.scalekit.com/sk-connect/assets/provider-icons/…"

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/googleslides.mdx` at line 26,
Update the image src in the Google Slides docs page to use the canonical CDN
host by replacing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_slides.svg"
with
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_slides.svg" in
the <img> tag on the page (the tag shown in the diff is the unique identifier to
modify).
src/content/docs/reference/agent-connectors/freshdesk.mdx (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Provider icon host should be cdn.scalekit.com.

Line 25 uses cdn.scalekit.cloud which should be cdn.scalekit.com per the connector icon standard.

Suggested change
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/freshdesk.png" width="64" height="64" alt="Freshdesk logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png" width="64" height="64" alt="Freshdesk logo" />

Based on learnings: In src/content/docs/reference/agent-connectors/**, enforce provider-icon URLs with host https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (not cdn.scalekit.cloud).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx` at line 25, The
provider icon URL in the <img> tag uses the wrong host
(https://cdn.scalekit.cloud); update the src attribute to use the standardized
host https://cdn.scalekit.com so the URL reads
https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png (change
the src in the <img> element shown in the diff).
♻️ Duplicate comments (9)
.gitignore (1)

50-50: ⚠️ Potential issue | 🟡 Minor

docs/superpowers/ ignore rule can hide new design/spec docs.

Line 50 broadly ignores the whole directory, which can prevent new documentation specs from being tracked unless force-added. Prefer a narrower ignore pattern for generated/temp artifacts only.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitignore at line 50, The .gitignore entry "docs/superpowers/" is too broad
and will hide all files under that docs folder; remove or narrow this rule so
new design/spec docs can be tracked—replace the blanket directory ignore with
specific patterns for generated/temp artifacts (e.g., generated/, build/, *.tmp,
*.log) inside docs/superpowers or add explicit allow rules (negated patterns)
for source/spec files you want tracked; update the .gitignore to target only
build/temp artifacts rather than the entire docs/superpowers directory.
src/content/docs/reference/agent-connectors/asana.mdx (1)

15-17: ⚠️ Potential issue | 🟠 Major

Render the imported tool list on this page.

ToolList and tools are imported, but the page never renders <ToolList tools={tools} />. That removes the tool reference section from the Asana page.

Suggested fix
 ## Usage
 
 <UsageAsanaSection />
+
+## Tool list
+
+<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/asana.mdx` around lines 15 - 17,
The page imports ToolList and tools but never renders them; add a render of the
ToolList component using the imported tools (e.g., <ToolList tools={tools} />)
somewhere in the page body where the tool-reference section should appear—locate
the MDX/Astro template that uses Badge and insert the ToolList render after the
header/intro so the agents' Asana tool list displays.
src/content/docs/reference/agent-connectors/linear.mdx (1)

26-26: ⚠️ Potential issue | 🟡 Minor

Use cdn.scalekit.com for provider icons.

cdn.scalekit.cloud regresses this page back to the non-standard host. If this came from shared generation logic, please fix it there so the same URL is not emitted on other connector pages.

Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/linear.svg" width="64" height="64" alt="Linear logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/linear.svg" width="64" height="64" alt="Linear logo" />

Based on learnings, provider icons in src/content/docs/reference/agent-connectors/** should use https://cdn.scalekit.com/sk-connect/assets/provider-icons/.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/linear.mdx` at line 26, Replace
the provider icon URL host in the img tag so it uses the canonical host; change
the src value
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/linear.svg" to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/linear.svg" in this
file and ensure any shared generation logic that emits provider icon URLs for
files under src/content/docs/reference/agent-connectors/** is updated to use the
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/" base instead of
"https://cdn.scalekit.cloud".
src/content/docs/reference/agent-connectors/gmail.mdx (1)

5-6: ⚠️ Potential issue | 🟡 Minor

Keep sidebar metadata centralized for generated connector pages.

This directory already gets its navigation metadata from the shared sidebar config. If the sync/template started emitting sidebar.label, please remove it there so these reference pages do not carry a second source of truth.

Suggested fix
-sidebar:
-  label: Gmail

Based on learnings, sidebar.label is not required for src/content/docs/reference/agent-connectors/** because navigation is auto-generated from the shared sidebar config.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/gmail.mdx` around lines 5 - 6,
Remove the redundant sidebar metadata by deleting the `sidebar.label` key from
generated connector pages under the agent-connectors set (e.g., the
`sidebar.label: Gmail` entry shown); update the generator/template or sync that
emits `sidebar.label` so it no longer injects that field for files in the
agent-connectors directory and rely on the shared sidebar config for navigation
instead.
src/content/docs/reference/agent-connectors/trello.mdx (1)

18-20: ⚠️ Potential issue | 🟠 Major

Render the imported tool list on this page.

ToolList and tools are imported, but the page ends after Usage. The current migration drops the tool reference entirely from the rendered Trello page.

Suggested fix
 ## Usage
 
 <UsageTrelloSection />
+
+## Tool list
+
+<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/trello.mdx` around lines 18 - 20,
The page imports Badge, ToolList and tools but never renders the tool list;
update the Trello MDX page to include the ToolList component (passing the
imported tools) in the rendered output—e.g., insert <ToolList tools={tools} />
(or the equivalent Astro component usage) below the Usage section so the
imported ToolList and tools are actually displayed; ensure the import names
ToolList and tools are referenced exactly as imported and remove any leftover
unused imports if not needed.
src/content/docs/reference/agent-connectors/freshdesk.mdx (1)

15-18: 🧹 Nitpick | 🔵 Trivial

Inconsistent import path prefix on line 18.

Lines 16–17 use the @/ prefix, but line 18 uses @components/templates (missing the slash). Align all imports for consistency.

Suggested change
-import { UsageFreshdeskSection } from '@components/templates'
+import { UsageFreshdeskSection } from '@/components/templates'

As per coding guidelines: "Use consistent import paths with the @/ prefix in MDX files."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx` around lines 15 -
18, The import path for UsageFreshdeskSection is inconsistent; update the import
to use the same '@/' prefix as the others (make the import for
UsageFreshdeskSection use '@/components/templates') so all imports (Badge,
ToolList, tools, UsageFreshdeskSection) follow the '@/...' convention.
src/content/docs/reference/agent-connectors/apifymcp.mdx (1)

24-24: ⚠️ Potential issue | 🟡 Minor

Use cdn.scalekit.com for provider icon assets.

Line 24 uses cdn.scalekit.cloud which should be cdn.scalekit.com per the connector icon standard.

Suggested change
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/apify.svg" width="64" height="64" alt="Apify MCP logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/apify.svg" width="64" height="64" alt="Apify MCP logo" />

Based on learnings: In src/content/docs/reference/agent-connectors/**, enforce provider-icon URLs with host https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (not cdn.scalekit.cloud).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/apifymcp.mdx` at line 24, The
provider icon URL uses the wrong host; update the img src value that currently
points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/apify.svg" so it
uses "https://cdn.scalekit.com/sk-connect/assets/provider-icons/apify.svg"
instead; ensure other connector docs in the same directory follow the same host
pattern for src attributes of provider icons (look for the img tag with src
containing "sk-connect/assets/provider-icons").
src/content/docs/reference/agent-connectors/affinity.mdx (1)

24-24: ⚠️ Potential issue | 🟡 Minor

Provider icon host should be cdn.scalekit.com.

Line 24 uses the deprecated .cloud host for connector icons.

Suggested change
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/affinity.svg" width="64" height="64" alt="Affinity logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/affinity.svg" width="64" height="64" alt="Affinity logo" />

Based on learnings: In src/content/docs/reference/agent-connectors/**, enforce provider-icon URLs with host https://cdn.scalekit.com/sk-connect/assets/provider-icons/ (not cdn.scalekit.cloud).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/affinity.mdx` at line 24, The
provider icon URL in the Affinity connector's doc uses the deprecated host
"cdn.scalekit.cloud"; update the img src value (the string
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/affinity.svg") to
use "https://cdn.scalekit.com/sk-connect/assets/provider-icons/affinity.svg" so
all connector docs under src/content/docs/reference/agent-connectors/
consistently reference the new cdn.scalekit.com host.
src/content/docs/reference/agent-connectors/figma.mdx (1)

27-27: ⚠️ Potential issue | 🟡 Minor

Use the canonical provider icon CDN host.

Line 27 still points to cdn.scalekit.cloud; this should be cdn.scalekit.com for agent-connector provider icons.

Suggested fix
-  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/figma.svg" width="64" height="64" alt="Figma logo" />
+  <img src="https://cdn.scalekit.com/sk-connect/assets/provider-icons/figma.svg" width="64" height="64" alt="Figma logo" />
Based on learnings: In `src/content/docs/reference/agent-connectors/**`, provider icons should use `https://cdn.scalekit.com/sk-connect/assets/provider-icons/` (not `cdn.scalekit.cloud`).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/figma.mdx` at line 27, Update the
provider icon URL in src/content/docs/reference/agent-connectors/figma.mdx:
replace the img src host
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/figma.svg" with the
canonical CDN host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/figma.svg" so the
<img> tag uses cdn.scalekit.com for provider icons.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@scripts/sync-agent-connectors.js`:
- Around line 543-551: The properties iteration can produce non-deterministic
ordering; sort the parameter keys before generating lines to make output
deterministic. Replace the direct for...of over properties with iterating over
Array.from(properties).sort((a,b)=>a[0].localeCompare(b[0])) (or equivalent) so
you process entries in alphabetical order by propName; preserve existing usage
of mapParamType(propInfo.type), required.includes(propName),
escapeTemplateLiteral(propInfo.description) and the lines.push call to generate
the same objects but in a stable order.

In `@src/content/docs/reference/agent-connectors/airtable.mdx`:
- Around line 16-17: The imports ToolList and tools are unused; either remove
the two import lines or render a "Tool list" section using the imported
symbols—add a section in the MDX body that mounts the ToolList component and
passes the tools prop (e.g., include a ToolList usage like <ToolList
tools={tools} />) so the imported tools data is consumed; if you choose removal,
delete both import statements (ToolList and tools) to eliminate the unused
imports.

In `@src/content/docs/reference/agent-connectors/bigquery.mdx`:
- Around line 16-17: The page imports ToolList and tools but never renders them;
update src/content/docs/reference/agent-connectors/bigquery.mdx to include the
shared rendering pattern by inserting a ToolList component instance that
receives the imported tools (e.g., <ToolList tools={tools} />) where the
connector tool reference content should appear so the generated tool/parameter
output is displayed; ensure the component usage matches other agent-connector
pages and keeps the existing imports (ToolList and tools).

In `@src/content/docs/reference/agent-connectors/brave.mdx`:
- Around line 5-6: Remove the per-page frontmatter key "sidebar.label" from the
brave.mdx page: open brave.mdx, delete the sidebar.label line in the frontmatter
so the page uses the centralized auto-generated navigation, and save/commit the
change (ensure no other frontmatter keys are altered).

In `@src/content/docs/reference/agent-connectors/chorus.mdx`:
- Around line 16-17: The imports ToolList and tools are unused; either render
the component or remove them: add a JSX/MDX usage like <ToolList tools={tools}
/> in the document where other content displays connector tools (follow the
pattern used by supadata pages) or delete the ToolList and tools import lines if
this page should not show tools; update the MDX content to reference the
ToolList component (ToolList) and the tools data (tools) so the imports are
actually used.

In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either remove the unused imports or render the component—update
clari_copilot.mdx to include <ToolList tools={tools} /> in the MDX body where
the tools should appear (referencing the imported ToolList component and the
tools export) or delete the two import lines to eliminate the unused-symbol
warning.

In `@src/content/docs/reference/agent-connectors/clickup.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either render the tool list by adding the JSX/MDX element <ToolList
tools={tools} /> into the page content where the connector tools should appear
(e.g., under the intro or a “Tools” section), or if the page should not display
the list remove the unused imports (ToolList and tools) to eliminate the
warning; locate the import statements for ToolList and tools and apply one of
these two fixes consistently.

In `@src/content/docs/reference/agent-connectors/confluence.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either render the data-driven component or drop the imports. To fix, insert the
component usage <ToolList tools={tools} /> at the appropriate place in the
Confluence connector doc where the tool list should appear (e.g., after the
introduction or under the "Tools" section) so ToolList and tools are consumed,
or if this page intentionally doesn't show a list, remove the unused imports
(`ToolList` and `tools`) to eliminate the warning; reference the symbols
ToolList and tools when making the change.

In `@src/content/docs/reference/agent-connectors/fathom.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either remove the unused imports or render the component — to fix, add a render
of the ToolList component where connectors are listed (e.g., insert <ToolList
tools={tools} /> in the component/template body) or delete the import lines for
ToolList and tools; reference the imported symbols ToolList and tools and the
JSX/MDX usage <ToolList tools={tools} /> when making the change.

In `@src/content/docs/reference/agent-connectors/googlesheets.mdx`:
- Around line 5-6: Remove the per-page frontmatter key "sidebar.label" from the
googlesheets.mdx file so this auto-generated reference page follows the
centralized navigation; locate the frontmatter block containing "sidebar: label:
Google Sheets" and delete that "sidebar.label" entry (or the entire sidebar
block if it only contains the label) so the page relies on the directory-level
auto-generated sidebar.

In `@src/content/docs/reference/agent-connectors/intercom.mdx`:
- Around line 16-17: The imports ToolList and tools are unused; either remove
them or render the component—add the JSX/MDX snippet that uses ToolList with the
tools prop (i.e., render <ToolList tools={tools} />) into the page content where
the connector tools should appear (for example after the introductory paragraph
or before the assets section) so the imported symbols ToolList and tools are
actually used and the tool list is displayed.

In `@src/content/docs/reference/agent-connectors/microsoftteams.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them,
causing unused-import clutter; render the component by adding <ToolList
tools={tools} /> in the MDX content where the connector tools should appear (or
remove both imports if you intentionally don't want to show the list). Locate
the imports for ToolList and tools at the top and either insert the ToolList
usage into the document body or delete the import lines to resolve the lint
warning.

In `@src/content/docs/reference/agent-connectors/microsoftword.mdx`:
- Around line 16-17: The imports ToolList and tools are unused; update the MDX
by either removing those two imports or by adding a "Tool list" section that
renders the ToolList component with the tools data (e.g., include a headings
like "## Tool list" and insert <ToolList tools={tools} /> in the document body).
Locate the import lines (ToolList and tools) and either delete them or add the
new section where other reference sections are rendered so the ToolList and
tools symbols are actually used.

In `@src/content/docs/reference/agent-connectors/monday.mdx`:
- Around line 15-17: The file imports ToolList and tools but never uses them;
either remove those unused imports or render a tool list section in the MDX page
by invoking the ToolList component and passing the tools data (i.e., use
ToolList with the tools prop) where the page's connector/tool details are shown;
update the MDX content to include that section and ensure the import lines for
ToolList and tools (from '@/components/ToolList.astro' and
'@/data/agent-connectors/monday') remain if you choose to render.

In `@src/content/docs/reference/agent-connectors/onedrive.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either remove those unused imports or render the component by inserting
<ToolList tools={tools} /> into the MDX content where the list should appear
(ensure the imported symbols ToolList and tools are referenced exactly as
imported and that the placement fits the document flow). If you choose to
render, place the component at the intended section (e.g., after the connector
overview) so the tools prop is passed correctly; if you remove them, delete both
import lines (ToolList and tools) to avoid linter errors.

In `@src/content/docs/reference/agent-connectors/outreach.mdx`:
- Around line 5-6: Remove the page-level frontmatter key `sidebar.label` (the
line `sidebar: label: Outreach`) from the outreach MDX file so the connector
reference uses the central, auto-generated sidebar; locate the `sidebar.label`
entry in the file and delete that frontmatter block while leaving the rest of
the document unchanged.

In `@src/content/docs/reference/agent-connectors/phantombuster.mdx`:
- Around line 5-6: Remove the per-page frontmatter entries "sidebar:" and
"label: PhantomBuster" from the phantomBuster MDX reference page so it no longer
sets sidebar.label; since navigation for agent-connectors is auto-generated,
delete the sidebar.label block (the two lines containing sidebar: and label:
PhantomBuster) from the file to avoid configuration drift.

In `@src/content/docs/reference/agent-connectors/servicenow.mdx`:
- Around line 18-20: The imports ToolList and tools are unused; either remove
the unused imports (delete "import ToolList from '@/components/ToolList.astro'"
and "import { tools } from '@/data/agent-connectors/servicenow'") or render the
list by adding a Tool list section in the MDX content that uses the component
(e.g., insert a section header like "## Tool list" and include "<ToolList
tools={tools} />" where you want the list to appear); update whichever you
choose and ensure no leftover unused import remains.

In `@src/content/docs/reference/agent-connectors/snowflakekeyauth.mdx`:
- Around line 15-18: The import for UsageSnowflakekeyauthSection is inconsistent
with the other imports—change the path to use the same "@/..." prefix as the
others; update the import that currently references "@components/templates" to
"@/components/templates" so all imports (Badge, ToolList, tools,
UsageSnowflakekeyauthSection) use the consistent "@/…" prefix.

In `@src/content/docs/reference/agent-connectors/supadata.mdx`:
- Around line 5-6: Remove the unnecessary frontmatter key "sidebar.label" from
the Supadata agent-connector MDX page (the frontmatter block containing sidebar:
label: Supadata) because navigation for files under
src/content/docs/reference/agent-connectors is auto-generated; locate the
"sidebar.label" entry in
src/content/docs/reference/agent-connectors/supadata.mdx and delete that key
(and its value) from the frontmatter so the page relies on the central sidebar
config.

In `@src/content/docs/reference/agent-connectors/zoom.mdx`:
- Around line 16-17: The file imports ToolList and tools but never uses them;
either render the tool list or remove the imports—add a JSX/MDX usage of
<ToolList tools={tools} /> in the page content where the connector tools should
appear (look for the component that lists connector tools or an appropriate
section) so ToolList and tools are consumed, or if the page intentionally has no
tool list, delete the imports (ToolList and tools) to eliminate the
unused-import warning.

---

Outside diff comments:
In `@src/content/docs/reference/agent-connectors/clari_copilot.mdx`:
- Line 25: The img tag for the Clari Copilot logo uses the wrong CDN host;
update the src value in the <img> element to use the approved host by replacing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/clari.svg" with
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg" so the
provider-icon URL conforms to the required CDN pattern used across
src/content/docs/reference/agent-connectors.

In `@src/content/docs/reference/agent-connectors/fathom.mdx`:
- Line 25: The provider icon src uses the wrong CDN host; update the img tag's
src attribute (the <img ... src="..."> line) to use the approved host prefix
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/" instead of
"https://cdn.scalekit.cloud/..." so the image URL points to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/fathom.svg; keep
width, height and alt unchanged.

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx`:
- Line 25: The provider icon URL in the <img> tag uses the wrong host
(https://cdn.scalekit.cloud); update the src attribute to use the standardized
host https://cdn.scalekit.com so the URL reads
https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png (change
the src in the <img> element shown in the diff).

In `@src/content/docs/reference/agent-connectors/gong.mdx`:
- Line 26: The image src in the <img> element for the Gong provider icon uses
the wrong CDN host; update the src URL in the img tag (the one with
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/gong.svg") to
use https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg instead,
preserving width, height and alt attributes; also scan other provider icon img
tags in the same file for the same host and correct them to cdn.scalekit.com if
present.

In `@src/content/docs/reference/agent-connectors/google_ads.mdx`:
- Line 26: Update the image src that currently reads
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_ads.png" to
use the correct CDN host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_ads.png";
locate the <img> tag with that src (provider icon for Google Ads) and change
only the host portion, and scan other provider icons under the same docs area to
ensure they also use cdn.scalekit.com.

In `@src/content/docs/reference/agent-connectors/googledocs.mdx`:
- Line 26: The provider icon URL in
src/content/docs/reference/agent-connectors/googledocs.mdx uses the wrong CDN
host; update the img src attribute so the host is cdn.scalekit.com (i.e., change
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_docs.svg" to
use "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_docs.svg")
so all provider-icon URLs in this directory use the correct CDN host.

In `@src/content/docs/reference/agent-connectors/googledrive.mdx`:
- Line 26: The image tag's src in the googledrive agent-connector doc uses the
wrong CDN host; update the <img> src URL (the src value in the img element) to
use https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_drive.svg
instead of https://cdn.scalekit.cloud/... so it follows the canonical
provider-icon CDN convention used across agent-connector reference pages.

In `@src/content/docs/reference/agent-connectors/googlemeet.mdx`:
- Line 26: The image src in the Google Meet provider icon uses the wrong CDN
host; update the src attribute value in the <img> tag that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_meet.svg" so
the host is "cdn.scalekit.com" (i.e., change to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_meet.svg") to
match the established CDN pattern for provider icons.

In `@src/content/docs/reference/agent-connectors/googlesheets.mdx`:
- Line 26: Update the provider-icon img src to use the canonical CDN host:
replace the src attribute value in the img tag (the <img
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_sheets.svg"
... /> line) so the host is cdn.scalekit.com
(https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_sheets.svg) to
match the shared asset path convention used across agent-connector reference
pages.

In `@src/content/docs/reference/agent-connectors/googleslides.mdx`:
- Line 26: Update the image src in the Google Slides docs page to use the
canonical CDN host by replacing
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/google_slides.svg"
with
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_slides.svg" in
the <img> tag on the page (the tag shown in the diff is the unique identifier to
modify).

In `@src/content/docs/reference/agent-connectors/intercom.mdx`:
- Line 26: Replace the provider icon URL host in the img tag: change the src
value "https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/intercom.svg"
to use the approved CDN host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/intercom.svg" in the
Intercom doc (the img element on line containing that src) so the file
src/content/docs/reference/agent-connectors/intercom.mdx uses the canonical
provider-icon CDN.

In `@src/content/docs/reference/agent-connectors/monday.mdx`:
- Line 26: The image tag for the Monday.com provider icon uses the wrong CDN
host; change the src URL in the <img> tag that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/monday.svg" to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/monday.svg" so the
provider-icon path conforms to the established cdn.scalekit.com host pattern.

In `@src/content/docs/reference/agent-connectors/salesforce.mdx`:
- Line 26: Replace the image src host in the <img> tag that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/sales_force.svg" so
it uses the approved CDN host:
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/sales_force.svg";
keep the existing width, height, and alt attributes intact and ensure the path
starts with "https://cdn.scalekit.com/sk-connect/assets/provider-icons/".

In `@src/content/docs/reference/agent-connectors/vimeo.mdx`:
- Line 25: Update the img src URL in the Vimeo docs entry: replace the host
"cdn.scalekit.cloud" with "cdn.scalekit.com" for the <img
src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/vimeo.svg" ...>
reference so the logo uses the enforced CDN host (i.e., change the URL to
https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg).

In `@src/content/docs/reference/agent-connectors/youtube.mdx`:
- Line 25: Update the YouTube provider icon URL to use the approved CDN host:
locate the img tag with src
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/youtube.svg" in the
youtube.mdx content and change the domain from "cdn.scalekit.cloud" to
"cdn.scalekit.com" so the src becomes the approved CDN URL; ensure the width,
height, and alt attributes on the same img tag remain unchanged.

In `@src/content/docs/reference/agent-connectors/zoom.mdx`:
- Line 26: The image src uses the wrong CDN host; update the <img> tag's src URL
in the Zoom connector doc (the line with the img tag currently pointing to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/zoom.svg") to use
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg" so the
provider icon loads from the correct CDN host.

---

Duplicate comments:
In @.gitignore:
- Line 50: The .gitignore entry "docs/superpowers/" is too broad and will hide
all files under that docs folder; remove or narrow this rule so new design/spec
docs can be tracked—replace the blanket directory ignore with specific patterns
for generated/temp artifacts (e.g., generated/, build/, *.tmp, *.log) inside
docs/superpowers or add explicit allow rules (negated patterns) for source/spec
files you want tracked; update the .gitignore to target only build/temp
artifacts rather than the entire docs/superpowers directory.

In `@src/content/docs/reference/agent-connectors/affinity.mdx`:
- Line 24: The provider icon URL in the Affinity connector's doc uses the
deprecated host "cdn.scalekit.cloud"; update the img src value (the string
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/affinity.svg") to
use "https://cdn.scalekit.com/sk-connect/assets/provider-icons/affinity.svg" so
all connector docs under src/content/docs/reference/agent-connectors/
consistently reference the new cdn.scalekit.com host.

In `@src/content/docs/reference/agent-connectors/apifymcp.mdx`:
- Line 24: The provider icon URL uses the wrong host; update the img src value
that currently points to
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/apify.svg" so it
uses "https://cdn.scalekit.com/sk-connect/assets/provider-icons/apify.svg"
instead; ensure other connector docs in the same directory follow the same host
pattern for src attributes of provider icons (look for the img tag with src
containing "sk-connect/assets/provider-icons").

In `@src/content/docs/reference/agent-connectors/asana.mdx`:
- Around line 15-17: The page imports ToolList and tools but never renders them;
add a render of the ToolList component using the imported tools (e.g., <ToolList
tools={tools} />) somewhere in the page body where the tool-reference section
should appear—locate the MDX/Astro template that uses Badge and insert the
ToolList render after the header/intro so the agents' Asana tool list displays.

In `@src/content/docs/reference/agent-connectors/figma.mdx`:
- Line 27: Update the provider icon URL in
src/content/docs/reference/agent-connectors/figma.mdx: replace the img src host
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/figma.svg" with the
canonical CDN host
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/figma.svg" so the
<img> tag uses cdn.scalekit.com for provider icons.

In `@src/content/docs/reference/agent-connectors/freshdesk.mdx`:
- Around line 15-18: The import path for UsageFreshdeskSection is inconsistent;
update the import to use the same '@/' prefix as the others (make the import for
UsageFreshdeskSection use '@/components/templates') so all imports (Badge,
ToolList, tools, UsageFreshdeskSection) follow the '@/...' convention.

In `@src/content/docs/reference/agent-connectors/gmail.mdx`:
- Around line 5-6: Remove the redundant sidebar metadata by deleting the
`sidebar.label` key from generated connector pages under the agent-connectors
set (e.g., the `sidebar.label: Gmail` entry shown); update the
generator/template or sync that emits `sidebar.label` so it no longer injects
that field for files in the agent-connectors directory and rely on the shared
sidebar config for navigation instead.

In `@src/content/docs/reference/agent-connectors/linear.mdx`:
- Line 26: Replace the provider icon URL host in the img tag so it uses the
canonical host; change the src value
"https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/linear.svg" to
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/linear.svg" in this
file and ensure any shared generation logic that emits provider icon URLs for
files under src/content/docs/reference/agent-connectors/** is updated to use the
"https://cdn.scalekit.com/sk-connect/assets/provider-icons/" base instead of
"https://cdn.scalekit.cloud".

In `@src/content/docs/reference/agent-connectors/trello.mdx`:
- Around line 18-20: The page imports Badge, ToolList and tools but never
renders the tool list; update the Trello MDX page to include the ToolList
component (passing the imported tools) in the rendered output—e.g., insert
<ToolList tools={tools} /> (or the equivalent Astro component usage) below the
Usage section so the imported ToolList and tools are actually displayed; ensure
the import names ToolList and tools are referenced exactly as imported and
remove any leftover unused imports if not needed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

Comment thread scripts/sync-agent-connectors.js
Comment on lines +16 to +17
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/airtable'
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.

⚠️ Potential issue | 🟡 Minor

Unused imports: ToolList and tools are imported but never used.

The file imports ToolList and tools but does not include a "Tool list" section. Either add the missing section or remove the unused imports.

Option 1: Remove unused imports
 import { Badge } from '@astrojs/starlight/components'
-import ToolList from '@/components/ToolList.astro'
-import { tools } from '@/data/agent-connectors/airtable'
 import { SetupAirtableSection } from '@components/templates'
Option 2: Add the missing Tool list section
 <UsageAirtableSection />
+
+## Tool list
+
+<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/airtable.mdx` around lines 16 -
17, The imports ToolList and tools are unused; either remove the two import
lines or render a "Tool list" section using the imported symbols—add a section
in the MDX body that mounts the ToolList component and passes the tools prop
(e.g., include a ToolList usage like <ToolList tools={tools} />) so the imported
tools data is consumed; if you choose removal, delete both import statements
(ToolList and tools) to eliminate the unused imports.

Comment on lines +16 to +17
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/bigquery'
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.

⚠️ Potential issue | 🟠 Major

Render the imported tool list component.

Line 16 and Line 17 import ToolList and tools, but the page never renders them, so the connector tool reference content is missing.

Proposed fix
 ## Usage
 
 <UsageBigquerySection />
+
+## Tool list
+
+<ToolList tools={tools} />

Based on learnings, agent-connector reference pages in this directory should consistently present generated tool/parameter output via the shared rendering pattern.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/bigquery.mdx` around lines 16 -
17, The page imports ToolList and tools but never renders them; update
src/content/docs/reference/agent-connectors/bigquery.mdx to include the shared
rendering pattern by inserting a ToolList component instance that receives the
imported tools (e.g., <ToolList tools={tools} />) where the connector tool
reference content should appear so the generated tool/parameter output is
displayed; ensure the component usage matches other agent-connector pages and
keeps the existing imports (ToolList and tools).

Comment on lines +5 to +6
sidebar:
label: Brave Search
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 | 🔵 Trivial

Remove per-page sidebar.label from this auto-generated reference page.

This directory uses centralized, auto-generated navigation. Adding page-level sidebar.label creates configuration drift from the generation pattern.

Suggested fix
-sidebar:
-  label: Brave Search

Based on learnings: "For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/brave.mdx` around lines 5 - 6,
Remove the per-page frontmatter key "sidebar.label" from the brave.mdx page:
open brave.mdx, delete the sidebar.label line in the frontmatter so the page
uses the centralized auto-generated navigation, and save/commit the change
(ensure no other frontmatter keys are altered).

Comment on lines +16 to +17
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/chorus'
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.

⚠️ Potential issue | 🟠 Major

ToolList and tools are imported but never used.

The imports for ToolList and tools are added but the component is never rendered. Based on the PR objectives and the pattern in supadata.mdx, this page should display tools using <ToolList tools={tools} />.

🔧 Proposed fix to render the ToolList
 <UsageChorusSection />
+
+## Tool list
+
+<ToolList tools={tools} />

Or, if tools display is not intended for this page, remove the unused imports:

 import { Badge } from '@astrojs/starlight/components'
-import ToolList from '@/components/ToolList.astro'
-import { tools } from '@/data/agent-connectors/chorus'
 import { UsageChorusSection } from '@components/templates'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/chorus.mdx` around lines 16 - 17,
The imports ToolList and tools are unused; either render the component or remove
them: add a JSX/MDX usage like <ToolList tools={tools} /> in the document where
other content displays connector tools (follow the pattern used by supadata
pages) or delete the ToolList and tools import lines if this page should not
show tools; update the MDX content to reference the ToolList component
(ToolList) and the tools data (tools) so the imports are actually used.

Comment thread src/content/docs/reference/agent-connectors/phantombuster.mdx
Comment on lines +18 to +20
import { Badge } from '@astrojs/starlight/components'
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/servicenow'
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.

⚠️ Potential issue | 🟠 Major

Imported ToolList and tools are never rendered.

The imports at lines 19-20 add ToolList and tools, but the page doesn't include a "Tool list" section or <ToolList tools={tools} />. Either add the tool list section or remove the unused imports.

Proposed fix
 <UsageServicenowSection />
+
+## Tool list
+
+<ToolList tools={tools} />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/servicenow.mdx` around lines 18 -
20, The imports ToolList and tools are unused; either remove the unused imports
(delete "import ToolList from '@/components/ToolList.astro'" and "import { tools
} from '@/data/agent-connectors/servicenow'") or render the list by adding a
Tool list section in the MDX content that uses the component (e.g., insert a
section header like "## Tool list" and include "<ToolList tools={tools} />"
where you want the list to appear); update whichever you choose and ensure no
leftover unused import remains.

Comment on lines +15 to 18
import { Badge } from '@astrojs/starlight/components'
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/snowflakekeyauth'
import { UsageSnowflakekeyauthSection } from '@components/templates'
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 | 🔵 Trivial

Inconsistent import path prefix on line 18.

Lines 16–17 use the @/ prefix (@/components/, @/data/), but line 18 uses @components/templates (missing the slash). Align all imports to use the same @/ prefix for consistency.

Suggested change
 import { Badge } from '@astrojs/starlight/components'
 import ToolList from '@/components/ToolList.astro'
 import { tools } from '@/data/agent-connectors/snowflakekeyauth'
-import { UsageSnowflakekeyauthSection } from '@components/templates'
+import { UsageSnowflakekeyauthSection } from '@/components/templates'

As per coding guidelines: "Use consistent import paths with the @/ prefix in MDX files."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/snowflakekeyauth.mdx` around
lines 15 - 18, The import for UsageSnowflakekeyauthSection is inconsistent with
the other imports—change the path to use the same "@/..." prefix as the others;
update the import that currently references "@components/templates" to
"@/components/templates" so all imports (Badge, ToolList, tools,
UsageSnowflakekeyauthSection) use the consistent "@/…" prefix.

Comment on lines +5 to +6
sidebar:
label: Supadata
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 | 🔵 Trivial

Remove sidebar.label from this agent-connector reference page.

This directory's navigation is auto-generated from the central sidebar config, so sidebar.label should not be set here.

🔧 Suggested fix
 ---
 title: Supadata
 description: Connect with Supadata to extract transcripts, metadata, and structured content from YouTube, social media, and the web using AI.
 tableOfContents: true
-sidebar:
-  label: Supadata
 head:

Based on learnings: For MDX files under src/content/docs/reference/agent-connectors, the sidebar.label frontmatter is not required because navigation is auto-generated from this directory via the central sidebar config.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/supadata.mdx` around lines 5 - 6,
Remove the unnecessary frontmatter key "sidebar.label" from the Supadata
agent-connector MDX page (the frontmatter block containing sidebar: label:
Supadata) because navigation for files under
src/content/docs/reference/agent-connectors is auto-generated; locate the
"sidebar.label" entry in
src/content/docs/reference/agent-connectors/supadata.mdx and delete that key
(and its value) from the frontmatter so the page relies on the central sidebar
config.

Comment on lines +16 to +17
import ToolList from '@/components/ToolList.astro'
import { tools } from '@/data/agent-connectors/zoom'
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.

⚠️ Potential issue | 🟠 Major

Unused imports: ToolList and tools are imported but never rendered.

These imports are added but not used in the page content. Based on the PR objectives, the page should render the tool list via <ToolList tools={tools} />.

🔧 Option A: Add ToolList rendering (likely intended)
 <UsageZoomSection />
+
+## Tool list
+
+<ToolList tools={tools} />
🔧 Option B: Remove unused imports
 import { Badge } from '@astrojs/starlight/components'
-import ToolList from '@/components/ToolList.astro'
-import { tools } from '@/data/agent-connectors/zoom'
 import { SetupZoomSection } from '@components/templates'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/content/docs/reference/agent-connectors/zoom.mdx` around lines 16 - 17,
The file imports ToolList and tools but never uses them; either render the tool
list or remove the imports—add a JSX/MDX usage of <ToolList tools={tools} /> in
the page content where the connector tools should appear (look for the component
that lists connector tools or an appropriate section) so ToolList and tools are
consumed, or if the page intentionally has no tool list, delete the imports
(ToolList and tools) to eliminate the unused-import warning.

…, categories)

- sync-agent-connectors.js now generates src/data/agent-connectors/catalog.ts with
  iconUrl, authType, and categories per provider, sourced directly from the API
- ProviderCatalog.astro replaces hardcoded CATEGORY_MAP, AUTH_MAP, and icon URL
  construction with imports from the generated catalog.ts
- Categories are derived dynamically from the API; 'Other' is always placed last
- Script variable renamed catalogEl to avoid shadowing the catalog import
ravibits added 2 commits April 8, 2026 06:20
…ory taxonomy

- Sync script regenerated: 68 providers, 1125 tools with updated category taxonomy
  (down from 83 raw tags to 15 clean categories)
- ProviderCatalog.astro adds a Category filter row with chips above the Auth row,
  both working independently and combined with search
- categoryLabel() maps API slugs (developer_tools, customer_support…) to display
  names (Developer Tools, Customer Support…) for both chips and section headings
- Category chips are derived dynamically from catalog data — no hardcoding
@ravibits ravibits changed the title feat(provider-catalog): searchable provider grid + ToolList accordion (Snowflake PoC) feat(provider-catalog): agent connectors catalog with category and auth filters Apr 8, 2026
ravibits added 3 commits April 8, 2026 06:39
- Background: bg-card / white (light) to match FoldCard
- Border: gray-6 instead of hairline, 0.5rem radius to match
- Hover: accent border + translateY(-2px) + box-shadow matching FoldCard.clickable
- Title: text-base weight-600 heading color, accent on hover
- Logo container: 38px with gray-6 border
…fine auth label

- Remove card-footer divider + arrow (redundant on a fully-clickable card)
- Auth badge moved to bottom of card as subtle monospace colored label (no pill border)
- Logo + title on same row (centered alignment)
- Description font bumped to text-sm for better readability
- Tighter, more consistent gap and padding
- min-height added for grid uniformity
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.

1 participant