# Documentation framework support

import { Aside, Card, CardGrid, Tabs, TabItem } from '@astrojs/starlight/components';

EkLine can be configured for popular documentation frameworks. When you specify a framework, EkLine adjusts how it processes MDX files to better analyze content inside framework-specific components.

## Why framework support matters

Documentation frameworks like Mintlify use custom MDX components to create rich layouts. These components often contain important prose that you should check for quality.

**The problem:** Without framework awareness, EkLine may treat custom components as code blocks and skip the text inside them.

**The solution:** Set the `framework` option to tell EkLine how to process your MDX files. EkLine then extracts and checks content from framework-specific components.

### Example: Mintlify Note component

**Without framework configuration:**
```mdx
<Note>
  Users shoud configure there API keys before proceeding.
</Note>
```
EkLine might skip this content entirely, missing two spelling and grammar errors.

**With `framework: "mintlify"`:**
EkLine detects that `<Note>` is a prose component and checks the content, catching:
- "shoud" → "should"
- "there" → "their"

---

## Supported frameworks

EkLine accepts the following framework values:

| Framework | Value |
|-----------|-------|
| [Mintlify](https://mintlify.com) | `mintlify` |
| [Astro](https://astro.build) | `astro` |
| [Fern](https://buildwithfern.com) | `fern` |
| [Docusaurus](https://docusaurus.io) | `docusaurus` |
| [GitBook](https://gitbook.com) | `gitbook` |

<Aside type="note">
Mintlify currently has the most comprehensive component support, with specific handling for prose components like Note, Card, Update, and more. Support for other frameworks is expanding.
</Aside>

---

## Mintlify

[Mintlify](https://mintlify.com) is a modern documentation platform with beautiful, customizable components. EkLine has comprehensive support for Mintlify's component library.

### Configuration

Create an `ekline.config.json` file in your project root:

<Tabs>
  <TabItem label="Config file">
    ```json title="ekline.config.json"
    {
      "contentDirectory": ["."],
      "framework": "mintlify",
      "excludeDirectories": ["node_modules"]
    }
    ```
  </TabItem>
  <TabItem label="CLI">
    ```bash
    ekline-cli --ek-token YOUR_TOKEN --framework mintlify
    ```
  </TabItem>
</Tabs>

### How it works

When `framework: "mintlify"` is set, EkLine:
1. Detects Mintlify components in your MDX files
2. Identifies which components contain prose, like `<Note>`, `<Card>`, and `<Update>`
3. Extracts the text content for quality checking
4. Skips code-focused components (like `<CodeGroup>`, `<Snippet>`)

### Prose components

EkLine checks content inside these Mintlify components:

- `<Note>`, `<Tip>`, `<Warning>`, `<Info>` — Callout boxes
- `<Card>` — Card components with content
- `<Accordion>`, `<AccordionGroup>` — Expandable sections
- `<Update>` — Changelog entries
- `<Step>`, `<Steps>` — Step-by-step instructions
- `<Expandable>` — Expandable content
- `<Tab>`, `<Tabs>` — Tabbed content

### Skipped code components

These components are intentionally skipped because they contain code, not prose:

- `<CodeGroup>` — Code examples
- `<Snippet>` — Reusable code snippets
- `<Frame>` — Image and video frames

### Example configuration

For a typical Mintlify project, your `ekline.config.json` might look like:

```json title="ekline.config.json"
{
  "contentDirectory": ["."],
  "framework": "mintlify",
  "styleGuide": "google",
  "excludeDirectories": ["node_modules", "api-reference"],
  "excludeFiles": ["mint.json"]
}
```

<Aside type="tip">
Exclude your `api-reference` directory if it has auto-generated OpenAPI documentation.
</Aside>

---

## Other frameworks

For Astro, Fern, Docusaurus, and GitBook, create an `ekline.config.json` file and set the `framework` option to enable framework-aware processing:

<Tabs>
  <TabItem label="Astro">
    ```json title="ekline.config.json"
    {
      "contentDirectory": ["src/content/docs"],
      "framework": "astro",
      "excludeDirectories": ["node_modules", "dist"]
    }
    ```
  </TabItem>
  <TabItem label="Fern">
    ```json title="ekline.config.json"
    {
      "contentDirectory": ["fern/docs"],
      "framework": "fern",
      "excludeDirectories": ["node_modules"]
    }
    ```
  </TabItem>
  <TabItem label="Docusaurus">
    ```json title="ekline.config.json"
    {
      "contentDirectory": ["docs"],
      "framework": "docusaurus",
      "excludeDirectories": ["node_modules", "build"]
    }
    ```
  </TabItem>
  <TabItem label="GitBook">
    ```json title="ekline.config.json"
    {
      "contentDirectory": ["."],
      "framework": "gitbook",
      "excludeDirectories": ["node_modules"]
    }
    ```
  </TabItem>
</Tabs>

---

## Troubleshooting

### Content inside components not being checked

1. **Verify framework is set correctly in your `ekline.config.json` file:**
   ```json title="ekline.config.json"
   {
     "framework": "mintlify"
   }
   ```

2. **Check for typos — the value is case-sensitive:**

   Correct:
   ```json
   { "framework": "mintlify" }
   ```

   Wrong:
   ```json
   { "framework": "Mintlify" }
   ```

3. **Ensure the component supports this:**
   Not all components contain prose. Code blocks, images, and similar components are intentionally skipped.

### Framework not recognized

If you see a warning about an unrecognized framework value, check that you're using one of the supported values: `mintlify`, `astro`, `fern`, `docusaurus`, or `gitbook`.

---

## Request a framework

Need support for a different framework or specific components? [Contact us](mailto:support@ekline.io) with details about your documentation setup.

---

## Next steps

- [CLI Reference](/reviewer/integrations/cli-integration/) — All CLI options and configuration
- [GitHub Actions](/reviewer/integrations/github-integration/) — Set up automated PR reviews
- [Custom Rules](https://ekline.io/guidelines/rules) — Configure style guides and terminology