SkillAgentSearch skills...

beefreeSDK

Guidelines and best practices for building applications with [Beefree SDK](https://docs.beefree.io/beefree-sdk), including installation, authentication, configuration, customization, and template management

Install / Use

npx skills add PatrickJS/awesome-cursorrules

Installs into whichever agent you are using.

About this skill
📦

Other

Other agent config

Quality Score

93/100

Category

Security

Supported Platforms

Cursor
Zed

Our assessment of beefreeSDK

beefreeSDK scores 93/100 on our quality scale, 332nd of 1,099 Security skills we index (top 31%).

Its Other is 16 KB long, well organised into 46 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.

With 41,108 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
18/20
Description
15/15
Adoption
20/20
Freshness
11/15

Maintenance, license and trust

  • The repository was last updated about 5 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
  • Our last check on 2026-10-17 found the source still online.
  • It is released under the CC0-1.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 98/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

beefreeSDK compared with similar skills

All 4 of these similar skills score higher than beefreeSDK; compare them before choosing.

SkillScoreStarsUpdatedFormat
beefreeSDK (this skill)by PatrickJS9341.1k5mo agoOther
Agent-Reachby Panniantong100109.2ktodayCLAUDE.md
headroomby headroomlabs-ai10078.9ktodayCLAUDE.md
Scraplingby D4Vinci10097.9ktodayMCP Server
crawl4aiby unclecode10087.0k1d agoMCP Server

Frequently asked questions

How do I install beefreeSDK?
Run npx skills add PatrickJS/awesome-cursorrules. The install tabs above show the steps for each supported agent.
Which AI agents does beefreeSDK work with?
It is written for Cursor and Zed, as a Other file. Other agents that read the same format can often use it too.
Is beefreeSDK safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is CC0-1.0-licensed and scores 98/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is beefreeSDK still maintained?
The repository was last updated about 5 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.

description: "Guidelines and best practices for building applications with Beefree SDK, including installation, authentication, configuration, customization, and template management" globs: **/*.{ts,tsx,js,jsx,html,css} alwaysApply: false

Beefree SDK Guidelines

Guidelines and best practices for building applications with Beefree SDK, including installation, authentication, configuration, customization, and template management.

Installation Guidelines

Package Installation

  • Install the Beefree SDK package using npm or yarn:
    npm install @beefree.io/sdk
    # or
    yarn add @beefree.io/sdk
    

Dependencies

  • Beefree SDK requires the following core dependencies:
    {
      "dependencies": {
        "@beefree.io/sdk": "^9.0.2-fix-optional-url-config.0",
        "axios": "^1.10.0",
        "express": "^5.1.0",
        "cors": "^2.8.5",
        "dotenv": "^17.2.0"
      }
    }
    

Environment Setup

  • Create a .env file in your project root with your Beefree credentials:
    BEE_CLIENT_ID=your_client_id_here
    BEE_CLIENT_SECRET=your_client_secret_here
    

Authentication Guidelines

Proxy Server Setup

  • ALWAYS use a proxy server for authentication to protect your credentials
  • Create a proxy server file (e.g., proxy-server.js) to handle authentication:
    import express from 'express';
    import cors from 'cors';
    import axios from 'axios';
    import dotenv from 'dotenv';
    
    dotenv.config();
    
    const app = express();
    const PORT = 3001;
    
    app.use(cors());
    app.use(express.json());
    
    const BEE_CLIENT_ID = process.env.BEE_CLIENT_ID;
    const BEE_CLIENT_SECRET = process.env.BEE_CLIENT_SECRET;
    
    // V2 Auth Endpoint
    app.post('/proxy/bee-auth', async (req, res) => {
      try {
        const { uid } = req.body;
        
        const response = await axios.post(
          'https://auth.getbee.io/loginV2',
          {
            client_id: BEE_CLIENT_ID,
            client_secret: BEE_…[redacted],
            uid: uid || 'demo-user'
          },
          { headers: { 'Content-Type': 'application/json' } }
        );
        
        res.json(response.data);
      } catch (error) {
        console.error('Auth error:', error.message);
        res.status(500).json({ error: 'Failed to authenticate' });
      }
    });
    
    app.listen(PORT, () => {
      console.log(`Proxy server running on http://localhost:${PORT}`);
    });
    

Authentication Process

  • Use the V2 authentication endpoint: https://auth.getbee.io/loginV2
  • Pass the ENTIRE API response to the Beefree SDK, not just the token
  • Example authentication call:
    const token = await fetch('http://localhost:3001/proxy/bee-auth', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ uid: 'demo-user' })
    }).then(res => res.json());
    

Container Setup Guidelines

HTML Container

  • Create a dedicated container element for the Beefree SDK:
    <div id="beefree-sdk-container"></div>
    

CSS Styling

  • Style the container to ensure proper display:
    #beefree-sdk-container {
      position: absolute;
      top: 0px;
      bottom: 0px;
      left: 0px;
      right: 0px;
      height: 600px;
      width: 90%;
      margin: 20px auto;
      border: 1px solid #ddd;
      border-radius: 8px;
    }
    

React Container

  • For React applications, the following code snippet shows an example using refs to manage the container:
    const containerRef = useRef<HTMLDivElement>(null);
    
    return (
      <div
        id="beefree-react-demo"
        ref={containerRef}
        style={{
          height: '600px',
          width: '90%',
          margin: '20px auto',
          border: '1px solid #ddd',
          borderRadius: '8px'
        }}
      />
    );
    

Configuration Guidelines

Required Configuration Parameters

  • ALWAYS include the container parameter in your configuration:
    const beeConfig = {
      container: 'beefree-sdk-container', // Required
      language: 'en-US'
    };
    

Optional Configuration Parameters

  • Customize your SDK with optional parameters:
    const beeConfig = {
      container: 'beefree-sdk-container', // Required
      language: 'en-US',
      specialLinks: [
        {
          type: "unsubscribe",
          label: "Unsubscribe",
          link: "http://[unsubscribe]/",
        },
        {
          type: "subscribe",
          label: "Subscribe",
          link: "http://[subscribe]/",
        },
      ],
      mergeTags: [
        {
          name: "First Name",
          value: "[first_name]",
        },
        {
          name: "Last Name",
          value: "[last_name]",
        },
        {
          name: "Email",
          value: "[email]",
        },
      ]
    };
    

Callback Functions

  • Implement essential callback functions for proper functionality:
    const beeConfig = {
      container: 'beefree-sdk-container',
      onSave: function (jsonFile, htmlFile) {
        console.log("Template saved:", jsonFile);
        // Implement custom save logic here
      },
      onAutoSave: function (jsonFile) {
        console.log("Auto-saving template...");
        localStorage.setItem("email.autosave", jsonFile);
      },
      onSend: function (htmlFile) {
        console.log("Email ready to send:", htmlFile);
        // Implement custom send logic here
      },
      onError: function (errorMessage) {
        console.error("Beefree SDK error:", errorMessage);
        // Handle errors appropriately
      }
    };
    

SDK Initialization Guidelines

Basic Initialization

  • Initialize the Beefree SDK with proper error handling:
    async function initializeBeefree(authResponse) {
      try {
        const bee = new BeefreeSDK(authResponse);
        bee.start(beeConfig, {});
        console.log('Beefree SDK initialized successfully');
      } catch (error) {
        console.error('Failed to initialize Beefree SDK:', error);
      }
    }
    

React Integration

  • For React applications, the following code snippet shows an example using useEffect for initialization:
    useEffect(() => {
      async function initializeEditor() {
        const beeConfig = {
          container: 'beefree-react-demo',
          language: 'en-US',
          onSave: (pageJson: string, pageHtml: string, ampHtml: string | null, templateVersion: number, language: string | null) => {
            console.log('Saved!', { pageJson, pageHtml, ampHtml, templateVersion, language });
          },
          onError: (error: unknown) => {
            console.error('Error:', error);
          }
        };
    
        const token = await fetch('http://localhost:3001/proxy/bee-auth', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ uid: 'demo-user' })
        }).then(res => res.json());
    
        const bee = new BeefreeSDK(token);
        bee.start(beeConfig, {});
      }
    
      initializeEditor();
    }, []);
    

Template Loading Guidelines

Loading Templates

  • Use the start() method with template data to load existing templates:
    // Load template from localStorage
    const selectedTemplate = JSON.parse(localStorage.getItem('currentEmailData'));
    
    if (selectedTemplate) {
      beefreeSDKInstance.start(selectedTemplate);
      console.log('Loaded template from localStorage');
    } else {
      // Start with empty template
                beefreeSDKInstance.start();
            console.log('Started with empty template');
    }
    

Template Storage

  • Store templates in localStorage for persistence while testing:
    // Save template data
    localStorage.setItem('currentEmailData', JSON.stringify(templateData));
    localStorage.setItem('currentEmailName', emailName);
    
    // Load template data
    const emailData = localStorage.getItem('currentEmailData');
    const emailName = localStorage.getItem('currentEmailName');
    

Autosave Functionality

  • Implement autosave to prevent data loss:
    onAutoSave: function (jsonFile) {
      console.log("Auto-saving template...");
      localStorage.setItem("email.autosave", jsonFile);
    }
    

HTML Import Guidelines

HTML Importer API

  • Use the HTML Importer API to convert existing HTML templates to Beefree SDK format
  • API endpoint: https://api.getbee.io/v1/conversion/html-to-json
  • Reference: HTML Importer API Documentation

Import Process

  • Convert HTML templates to Beefree SDK's native JSON format:
    const response = await fetch('https://api.getbee.io/v1/conversion/html-to-json', {
      method: 'POST',
      headers: {
        "Authorization": "Bearer Enter Dev Console API Key as Bearer token",
        "Content-Type": "text/html"
      },
      body: "<!DOCTYPE html><html><body><h1>Hello World</h1></body></html>"
    }); 
    const data = await response.json();
    

Loading Imported Templates

  • Load imported templates into the Beefree SDK:
    const importedTemplate = await importHtmlTemplate(htmlContent);
    beefreeSDK.start(importedTemplate);
    

Error Handling Guidelines

onError Callback

  • ALWAYS implement the onError callback to handle SDK errors:
    onError: function (errorMessage) {
      console.error("Beefree SDK error:", errorMessage);
      // Display user-friendly error message
      document.getElementById('beefree-sdk-container').innerHTML = 
        '<div class="error">Error loading Beefree SDK: ' + errorMessage.message + '</div>';
    }
    

Authentication Error Handling

  • Handle authentication failures gracefully:
    function getBeeToken(callback) {
      fetch('/api/beefree/auth', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
          client_id: 'your_client_id',
          client_secret: 'your_client_secret',
          uid: beeConfig.uid
        })
      })
      .then(response => {
        if (!response.ok) throw new Error('Auth failed: ' + response.status);
        return response.json();
      })
      .then(data => {
        callback(data);
      })
      .catch(error => {
        console.error('Error getting Beefree token:', error);
        document.getElementById('beefree-sdk-container').innerHTML = 
          '<div class="error">Failed to authenticate with Beefree. Please check your credentials and try again.</div>';
      });
    }
    

Template Change Tracking Guidelines

Track Message Changes

Change Detection

  • Use the onChange callback to track template changes:
    onChange: function (jsonFile, response) {
    console.log('json', jsonFile);
    console.log('response', response);
      },
    

Customization Guidelines

UI Customization

Customize the Beefree SDK appearance with:

Language Customization

  • Set the language for internationalization:
    const beeConfig = {
      container: 'beefree-sdk-container',
      language: 'en-US', // or 'es-ES', 'fr-FR', etc.
    };
    

Merge Tags and Special Links

  • Configure merge tags and special links for email personalization:
    const beeConfig = {
      container: 'beefree-sdk-container',
      mergeTags: [
        { name: "First Name", value: "[first_name]" },
        { name: "Last Name", value: "[last_name]" },
        { name: "Email", value: "[email]" },
        { name: "Company", value: "[company]" }
      ],
      specialLinks: [
        { type: "unsubscribe", label: "Unsubscribe", link: "http://[unsubscribe]/" },
        { type: "subscribe", label: "Subscribe", link: "http://
    

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars41.1k
CategorySecurity
Updated5mo ago
Forks3.5k

Languages

JavaScript

Trust signals

98/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 info