> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate a Team-Specific Devin Onboarding Guide

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Generate a Team-Specific Devin Onboarding Guide" description="Devin reads its own documentation and generates a getting-started guide customized to your team's stack, integrations, and workflows — ready to share in Notion or Slack." prompt="Read the Devin documentation and create a getting-started guide for our engineering team. Focus on: starting sessions from Slack, writing effective prompts, setting up our Linear and GitHub integrations, creating playbooks, and managing knowledge. Tailor examples to a Node.js/React stack. Format it as a Notion page we can share in #engineering." category="Devin Optimization" features="MCP" />

<div className="uc-detail-wrapper">
  <Tip>Don't want to set this up manually? Paste a link to this page into a Devin session and ask it to set everything up for you.</Tip>

  <Steps>
    <Step title="Prompt Devin to generate your guide">
      Devin has built-in access to its own documentation through the [Devin Docs MCP](/work-with-devin/devin-mcp) — no setup or configuration needed. It can search and read the full docs site, API reference, changelog, and best practices on demand.

      Instead of sending new engineers a list of docs links, have Devin distill exactly what your team needs into a single onboarding guide with prompts, workflows, and examples tailored to your stack.

      <PromptBlock>
        ```txt Generate a team-specific onboarding guide theme={null}
        Read the Devin documentation and create a getting-started guide for
        our engineering team. The guide should cover:

        1. How to start a session (Slack vs. web app — when to use each)
        2. Writing effective prompts (include file paths, error context, scope)
        3. Setting up our Linear integration for ticket-driven workflows
        4. Creating playbooks for our recurring Express-to-Fastify migrations
        5. Adding Knowledge entries for our codebase conventions
           (e.g., "all API routes live in src/routes/, run npm run test:api")

        Tailor every example to our stack: Node.js, React, PostgreSQL.
        Format the output as a Notion page we can paste into #engineering.
        ```
      </PromptBlock>
    </Step>

    <Step title="Review the generated guide">
      Devin searches its docs for each topic, reads the relevant pages, and synthesizes a complete onboarding guide matched to your stack and workflow. Here's what the output looks like:

      ```markdown theme={null}
      # Getting Started with Devin — Acme Engineering Team

      ## 1. Starting a Session
      | Method | When to use | Example |
      |--------|-------------|--------|
      | **Slack** — message @Devin | Quick, scoped tasks | "Fix the failing CI in api-service" |
      | **Web app** — app.devin.ai | Longer tasks needing file attachments or playbooks | Attach a migration playbook + spec file |

      ## 2. Writing Effective Prompts
      Devin works best with specific, scoped requests. Always include
      the file path, what's broken, and when it started.

      ❌ "Fix the login bug"
      ✅ "The login form at src/pages/Login.tsx returns a 401 for valid
         credentials since the JWT key rotation on Friday. Check the
         auth middleware at src/middleware/auth.ts."

      ## 3. Linear Integration
      Go to Settings > Connections > Linear and authorize. Once
      connected, Devin can:
      - Pick up tickets assigned to it automatically
      - Update ticket status as it works
      - Link PRs to the originating Linear ticket

      See the full setup guide: docs.devin.ai/integrations/linear

      ## 4. Playbooks for Recurring Tasks
      Create reusable prompts at Settings > Playbooks > Create New.
      For our Express-to-Fastify migration, the playbook should include:
      - The target module path (e.g., src/services/payments/)
      - Test commands: npm run test:api && npm run test:integration
      - Rollback steps if the migration breaks downstream consumers

      ## 5. Knowledge — Teaching Devin Our Conventions
      Add team conventions at Settings > Knowledge > Create knowledge.

      Example entry:
        Trigger: "working on API routes"
        Content: "We use Fastify, not Express. All routes live in
        src/routes/. Run npm run test:api before committing.
        Error responses must use the ApiError class from src/lib/errors.ts."
      ```
    </Step>

    <Step title="Extend the guide with follow-ups">
      Keep the same session open — Devin retains context and can extend the guide with additional sections.

      <PromptBlock>
        ```txt Add a prompt templates section theme={null}
        Add a new section to the guide: "Copy-Paste Prompt Templates."
        Include 6 templates our team can reuse for common tasks:
        bug fixes, feature implementation, test coverage, database
        migrations, dependency upgrades, and CI debugging.
        Each template should have placeholders like [file path],
        [error message], and [ticket link].
        ```
      </PromptBlock>

      <PromptBlock>
        ```txt Add a "What's New" section from the changelog theme={null}
        Read the Devin release notes and add a "What's New" section
        to the guide covering features released in the past month.
        Highlight anything that changes how we use playbooks,
        scheduled sessions, or the API.
        ```
      </PromptBlock>

      <PromptBlock>
        ```txt Add a Knowledge vs. Playbooks decision table theme={null}
        Add a section to the guide explaining when to use Knowledge
        vs. Playbooks. Include a comparison table and 3 concrete
        examples from a Node.js project showing which is better
        for each scenario.
        ```
      </PromptBlock>
    </Step>

    <Step title="Share the guide and keep it current">
      Once the guide looks good, share it and save it as [Knowledge](/product-guides/knowledge) so Devin itself can reference your team's conventions:

      1. **Share the guide** — paste the Notion page into your `#engineering` channel or pin it in your team wiki
      2. **Save it as Knowledge** — go to **Settings > Knowledge > Create knowledge**, set the trigger to `"onboarding new team members to Devin"`, paste the guide content, and pin it to **all repositories**

      Now when any team member asks Devin "how should I write prompts?" or "how do I connect Linear?", it pulls from your customized guide — not generic docs.

      As Devin ships new features, ask it to update the guide in the same session format: *"Read the latest [changelog](/release-notes/overview) and update our onboarding guide with any new features that affect our workflows."*
    </Step>
  </Steps>
</div>
