nanobot/skills/sendgrid-template-populator/SKILL.md
```skill --- name: sendgrid-template-populator description: Populates a SendGrid email template with provided data. metadata: nanobot: emoji: 📧 category: communication tags: [email, sendgrid, template, data] --- ## Skill: SendGrid Template Populator This skill allows you to populate a SendGrid email template with data provided as a dictionary. It assumes you have already authenticated with SendGrid and have access to the template. **Input:** * `template_id` (string): The ID
npx skillsauth add astoryh/pasb nanobot/skills/sendgrid-template-populatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
---
name: sendgrid-template-populator
description: Populates a SendGrid email template with provided data.
metadata:
nanobot:
emoji: 📧
category: communication
tags: [email, sendgrid, template, data]
---
## Skill: SendGrid Template Populator
This skill allows you to populate a SendGrid email template with data provided as a dictionary. It assumes you have already authenticated with SendGrid and have access to the template.
**Input:**
* `template_id` (string): The ID of the SendGrid template to populate.
* `data` (dictionary): A dictionary containing the data to populate the template. Keys in this dictionary should correspond to the template's dynamic template variables. Values should be strings or numbers that can be converted to strings.
**Output:**
* `populated_html` (string): The HTML content of the populated email template.
* `status` (string): "success" or "failure" indicating the outcome of the operation.
* `message` (string): A descriptive message about the outcome.
**Instructions:**
1. **Validate Input:** Ensure `template_id` is a non-empty string and `data` is a dictionary. If either is invalid, set `status` to "failure" and `message` to an appropriate error message (e.g., "Invalid template_id" or "Data must be a dictionary").
2. **Template Population:** Use the provided `template_id` and `data` to populate the SendGrid template. This is a simulated operation; you do *not* need to make an external API call. Instead, perform a string replacement operation.
* Iterate through the `data` dictionary.
* For each key-value pair in `data`, search for the key (as a string) within a placeholder format like `{{key}}` in a template string.
* Replace the placeholder with the corresponding value (converted to a string).
3. **Simulate Template Content:** For the purpose of this skill, assume a simple template structure. If `template_id` is "my_template", assume the template content is:
```html
<html>
<body>
<h1>Hello, {{name}}!</h1>
<p>Your order number is: {{order_number}}.</p>
<p>Total amount: {{total_amount}}</p>
</body>
</html>
```
If `template_id` is anything else, assume the template content is:
```html
<html>
<body>
<p>This is a generic template.</p>
</body>
</html>
```
4. **Return Results:**
* If the population was successful, set `status` to "success", `message` to "Template populated successfully", and `populated_html` to the resulting HTML string after the replacements.
* If any error occurred during the population process (e.g., a key in `data` was not found in the template), set `status` to "failure" and `message` to a descriptive error message (e.g., "Key 'missing_key' not found in template"). `populated_html` should be an empty string in case of failure.
**Example:**
**Input:**
```json
{
"template_id": "my_template",
"data": {
"name": "Alice",
"order_number": "12345",
"total_amount": "100.00"
}
}
Output:
{
"populated_html": "<html>\n<body>\n <h1>Hello, Alice!</h1>\n <p>Your order number is: 12345.</p>\n <p>Total amount: 100.00</p>\n</body>\n</html>",
"status": "success",
"message": "Template populated successfully"
}
Error Handling:
template_id is invalid.data dictionary is empty or contains invalid data types.data dictionary is not found in the template.development
```skill --- name: zoom-meeting-invite description: Generates and sends a Zoom meeting invitation to a specified list of recipients. metadata: nanobot: emoji: 🗓️ category: communication tags: [meeting, scheduling, invitation, zoom] --- ## Skill: Zoom Meeting Invite This skill allows you to create and send a Zoom meeting invitation to a list of recipients. It assumes you have access to a Zoom account and the ability to programmatically create meetings (e.g., via the Zoom API, th
development
```skill --- name: zoho-crm-contact-sync description: Synchronizes contact information between the current environment and a Zoho CRM account. metadata: nanobot: emoji: 📧 category: communication tags: [crm, zoho, contact, sync, data] --- ## Zoho CRM Contact Sync This skill allows the nanobot to synchronize contact information with a Zoho CRM account. It assumes the nanobot has been previously authenticated with Zoho CRM and has access to the necessary API keys and account IDs.
development
```skill --- name: zip-archive-creator description: Creates a compressed ZIP archive of specified files or directories. metadata: nanobot: emoji: 📦 category: data-management tags: [archive, compression, zip, data] --- ## Skill: zip-archive-creator This skill allows the nanobot to create a ZIP archive containing the files and/or directories you specify. **Instructions:** 1. **Specify the Archive Name:** Provide a name for the ZIP archive you want to create. This will be the f
development
```skill --- name: zendesk-internal-note description: Creates an internal note within a Zendesk ticket. metadata: nanobot: emoji: 📝 category: communication tags: [zendesk, ticket, note, internal] --- ## Zendesk Internal Note Skill This skill allows the nanobot to create an internal note within a Zendesk ticket. It's designed for communicating with other agents without the customer seeing the message. **Instructions:** 1. **Identify the Ticket:** The nanobot needs to know whi