Skip to content

Conversation

@khaliqgant
Copy link
Member

@khaliqgant khaliqgant commented Nov 25, 2025

Migrates:
accelo ✅
amazon ❌ - api route for the proxy is wrong
apollo
asana
attio
box
calendly
clickup
confluence
discord
dropbox
freshdesk
github-app
github-app-oauth
google-ads
google-analytics
google-docs
instagram
intercom
linear
linkedin
microsoft
microsoft-teams
one-drive
outlook
pipedrive
quickbooks
salesforce-sandbox
sharepoint-online
stripe
twitter-v2
whatsapp-business
xero
youtube
zendesk
zoom
zoho-crm


Docs Migration Second Wave: Standardize Integration Guides in New Hub

This PR advances the documentation migration by moving dozens of connector guides from the legacy docs/integrations/all/ section into the newer docs/api-integrations/ hierarchy. Each guide now follows the refreshed template with updated front matter, consistent setup instructions, and current OAuth walkthroughs to align with the modern documentation framework.

Supporting assets and author guidance were also refreshed so the new structure is discoverable and maintainable across the product. Navigation manifests, Connect UI references, and managed-manifest.json were updated, while .claude/skills/creating-integration-docs/SKILL.md and AGENTS.md now describe the revised workflow and contributor expectations. Broken links and outdated assets were cleaned up, though Amazon integration docs remain partially blocked pending a proxy fix and future redirect work.

Key Changes

• Migrated 40+ connector guides from docs/integrations/all/ to the new docs/api-integrations/ hub with standardized templates and updated OAuth content
• Updated navigation manifests, Connect UI references, and managed-manifest.json to point to the new documentation paths
• Refreshed contributor guidance in .claude/skills/creating-integration-docs/SKILL.md and AGENTS.md, and fixed image assets and broken links uncovered during migration
• Documented outstanding follow-up for Amazon integration docs and pending redirects from legacy URLs

Affected Areas

• docs/api-integrations/
• docs/integrations/all/
• managed-manifest.json
• Connect UI documentation references
• .claude/skills/creating-integration-docs/SKILL.md
• AGENTS.md


This summary was automatically generated by @propel-code-bot

Comment on lines 128 to +133
}
let connectMdxPath: string | null = null;
if (provider.docs_connect) {
const updatedConnectMdx = path.join(updatedDocsPath, `${providerKey}/connect.mdx`);
if (!fs.existsSync(connectMdx) && !fs.existsSync(updatedConnectMdx)) {
const connectMdxExists = fs.existsSync(connectMdx);
const updatedConnectMdxExists = fs.existsSync(updatedConnectMdx);
if (!connectMdxExists && !updatedConnectMdxExists) {
Copy link
Contributor

Choose a reason for hiding this comment

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

[BestPractice]

Missing validation for provider configuration changes

The providers.yaml file is being updated with new docs and setup_guide_url fields, but there's no validation in validate.ts to ensure these URLs are valid or that the documentation files actually exist.

Issue: When setup_guide_url is added (e.g., for accelo), the system doesn't verify:

  1. The URL format is valid
  2. The referenced documentation file exists
  3. The URL is accessible

Recommendation: Add validation in validate.ts:

if (provider.setup_guide_url) {
    // Validate URL format
    try {
        new URL(provider.setup_guide_url);
    } catch {
        console.error(chalk.red('error'), chalk.blue(providerKey), `Invalid setup_guide_url format`);
        error = true;
    }
    // Check if local doc file exists
    const docPath = provider.setup_guide_url.replace('https://nango.dev/docs/', '');
    const fullPath = path.join(docsPath, `${docPath}.mdx`);
    if (!fs.existsSync(fullPath)) {
        console.error(chalk.red('error'), chalk.blue(providerKey), `setup_guide_url references non-existent file: ${fullPath}`);
        error = true;
    }
}
Context for Agents
**Missing validation for provider configuration changes**

The `providers.yaml` file is being updated with new `docs` and `setup_guide_url` fields, but there's no validation in `validate.ts` to ensure these URLs are valid or that the documentation files actually exist.

**Issue:** When `setup_guide_url` is added (e.g., for `accelo`), the system doesn't verify:
1. The URL format is valid
2. The referenced documentation file exists
3. The URL is accessible

**Recommendation:** Add validation in `validate.ts`:
```typescript
if (provider.setup_guide_url) {
    // Validate URL format
    try {
        new URL(provider.setup_guide_url);
    } catch {
        console.error(chalk.red('error'), chalk.blue(providerKey), `Invalid setup_guide_url format`);
        error = true;
    }
    // Check if local doc file exists
    const docPath = provider.setup_guide_url.replace('https://nango.dev/docs/', '');
    const fullPath = path.join(docsPath, `${docPath}.mdx`);
    if (!fs.existsSync(fullPath)) {
        console.error(chalk.red('error'), chalk.blue(providerKey), `setup_guide_url references non-existent file: ${fullPath}`);
        error = true;
    }
}
```

File: scripts/validation/providers/validate.ts
Line: 133

@@ -0,0 +1,85 @@
---
title: 'Quickbooks Sandbox'
Copy link
Contributor

Choose a reason for hiding this comment

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

[Documentation]

Correct capitalization: 'Quickbooks Sandbox' should be 'QuickBooks Sandbox'.

Additional affected locations:

  • docs/api-integrations/quickbooks.mdx:2
Context for Agents
[**Documentation**]

Correct capitalization: 'Quickbooks Sandbox' should be 'QuickBooks Sandbox'.

**Additional affected locations:**
- docs/api-integrations/quickbooks.mdx:2

File: docs/api-integrations/quickbooks-sandbox.mdx
Line: 2

}
});
console.log(JSON.stringify(res.data, 2, null));
```
Copy link
Contributor

Choose a reason for hiding this comment

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

[Documentation]

Fix the code sample: JSON.stringify expects the replacer as the second argument and the spacing value as the third. Update the call to JSON.stringify(res.data, null, 2) so readers don’t hit a runtime error when copying the snippet.

Context for Agents
[**Documentation**]

Fix the code sample: `JSON.stringify` expects the replacer as the second argument and the spacing value as the third. Update the call to `JSON.stringify(res.data, null, 2)` so readers don’t hit a runtime error when copying the snippet.

File: docs/api-integrations/attio.mdx
Line: 52

});

console.log(JSON.stringify(res.data, 2, null));
```
Copy link
Contributor

Choose a reason for hiding this comment

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

[Documentation]

Update the code example to call JSON.stringify(res.data, null, 2) — the current argument order passes a number as the replacer, which will throw when readers run the snippet.

Context for Agents
[**Documentation**]

Update the code example to call `JSON.stringify(res.data, null, 2)` — the current argument order passes a number as the replacer, which will throw when readers run the snippet.

File: docs/api-integrations/linear.mdx
Line: 55

@my-senior-dev-pr-review
Copy link

🤖 My Senior Dev — Analysis Complete

👤 For @khaliqgant

🎯 Unknown (0% confidence) • 📁 Expert in docs (181 edits) • ⚡ 20th PR this month

View your contributor analytics →


📊 196 files reviewed • 3 high risk • 2 need attention

🚨 High Risk:

  • .claude/agents/nango-docs-migrator.md — Core agent handling documentation migration; critical logic involved in managing integrations and OAuth steps.
  • docs/docs.json — Integral file for API routing affecting visibility of documentation; any errors impact user access directly.
  • packages/providers/providers.yaml — Configuration file affecting how integrations are managed; critical to ensure all documentation URLs are accurate.

⚠️ Needs Attention:

  • .claude/agents/nango-docs-migrator.md — Additional concerns about migration security and maintenance; needs to ensure proper authorizations are implemented.
  • docs/api-integrations/accelo.mdx — New documentation for an integration potentially affecting API security; clarity needed on scopes and permissions.
  • +3 more concerns...

🚀 Open Interactive Review →

The full interface unlocks features not available in GitHub:

  • 💬 AI Chat — Ask questions on any file, get context-aware answers
  • 🔍 Smart Hovers — See symbol definitions and usage without leaving the diff
  • 📚 Code Archeology — Understand how files evolved over time (/archeology)
  • 🎯 Learning Insights — See how this PR compares to similar changes

💬 Engage Right from GitHub

Quick try: @my-senior-dev explain this change or get specialized perspectives:

  • 🐵 @chaos-monkey — Edge cases & failure scenarios
  • 🔒 @security-auditor — Security vulnerabilities
  • @optimizer — Performance & efficiency
  • 🤨 @skeptic — Challenge assumptions
  • 🌱 @junior-dev — Simple explanations
📖 View all 12 personas & slash commands

You can interact with me by mentioning @my-senior-dev in any comment:

In PR comments or on any line of code:

  • Ask questions about the code or PR
  • Request explanations of specific changes
  • Get suggestions for improvements

Slash commands:

  • /help — Show all available commands
  • /archeology — See the history and evolution of changed files
  • /profile — Performance analysis and suggestions
  • /expertise — Find who knows this code best
  • /personas — List all available AI personas

AI Personas (mention to get their perspective):

Persona Focus
@chaos-monkey 🐵 Edge cases & failure scenarios
@skeptic 🤨 Challenge assumptions
@optimizer Performance & efficiency
@security-auditor 🔒 Security vulnerabilities
@accessibility-advocate Inclusive design
@junior-dev 🌱 Simple explanations
@tech-debt-collector 💳 Code quality & shortcuts
@ux-champion 🎨 User experience
@devops-engineer 🚀 Deployment & scaling
@documentation-nazi 📚 Documentation gaps
@legacy-whisperer 🏛️ Working with existing code
@test-driven-purist Testing & TDD

For the best experience, view this PR on myseniordev.com — includes AI chat, file annotations, and interactive reviews.

import { Nango } from '@nangohq/node';

const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

Copy link
Contributor

Choose a reason for hiding this comment

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

Advisory

[Documentation] The anchor here includes the emoji character, but the generated heading ID strips emojis, so this link does not resolve. Please adjust it to point to the actual heading ID (for example #-clickup-integration-guides).

Context for Agents
[**Documentation**]

The anchor here includes the emoji character, but the generated heading ID strips emojis, so this link does not resolve. Please adjust it to point to the actual heading ID (for example `#-clickup-integration-guides`).

File: docs/api-integrations/clickup.mdx
Line: 41

<Step title="Authorize Intercom">
Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then log in to Intercom. Later, you'll let your users do the same directly from your app. Nango doesn't provide a test OAuth app for Intercom yet. You'll need to set up your own by following these [instructions](#🧑%E2%80%8D💻-oauth-app-setup). After that, make sure to add the OAuth client ID, secret, and scopes in the integration settings in Nango.
</Step>
<Step title="Call the Intercom API">
Copy link
Contributor

Choose a reason for hiding this comment

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

Advisory

[Documentation] This link still points to the obsolete 🧑‍💻 OAuth app setup section, so it no longer navigates anywhere. Please update it to link to the new setup guide that’s listed in the Integration Guides section.

Additional affected locations:

  • docs/api-integrations/box.mdx:18
Context for Agents
[**Documentation**]

This link still points to the obsolete `🧑‍💻 OAuth app setup` section, so it no longer navigates anywhere. Please update it to link to the new setup guide that’s listed in the Integration Guides section.

**Additional affected locations:**
- docs/api-integrations/box.mdx:18

File: docs/api-integrations/intercom.mdx
Line: 18

@khaliqgant khaliqgant added this pull request to the merge queue Jan 5, 2026
Merged via the queue into master with commit f5c3368 Jan 5, 2026
24 checks passed
@khaliqgant khaliqgant deleted the docs-restructure-batch-two branch January 5, 2026 08:45
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.

3 participants