From e9a9312d9061296c7220b93e94633f3d24404584 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:50:41 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 18 + README.md | 3 + agents/make-expert.md | 357 ++++++++++++++++++ commands/make-builder.md | 277 ++++++++++++++ plugin.lock.json | 89 +++++ skills/skill-adapter/assets/README.md | 6 + .../skill-adapter/assets/config-template.json | 32 ++ skills/skill-adapter/assets/skill-schema.json | 28 ++ skills/skill-adapter/assets/test-data.json | 27 ++ skills/skill-adapter/references/README.md | 7 + .../references/best-practices.md | 69 ++++ skills/skill-adapter/references/examples.md | 70 ++++ skills/skill-adapter/scripts/README.md | 7 + .../skill-adapter/scripts/helper-template.sh | 42 +++ skills/skill-adapter/scripts/validation.sh | 32 ++ 15 files changed, 1064 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 agents/make-expert.md create mode 100644 commands/make-builder.md create mode 100644 plugin.lock.json create mode 100644 skills/skill-adapter/assets/README.md create mode 100644 skills/skill-adapter/assets/config-template.json create mode 100644 skills/skill-adapter/assets/skill-schema.json create mode 100644 skills/skill-adapter/assets/test-data.json create mode 100644 skills/skill-adapter/references/README.md create mode 100644 skills/skill-adapter/references/best-practices.md create mode 100644 skills/skill-adapter/references/examples.md create mode 100644 skills/skill-adapter/scripts/README.md create mode 100755 skills/skill-adapter/scripts/helper-template.sh create mode 100755 skills/skill-adapter/scripts/validation.sh diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..132fc0d --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "name": "make-scenario-builder", + "description": "Create Make.com (Integromat) scenarios with AI assistance - visual automation design", + "version": "1.0.0", + "author": { + "name": "Claude Code Plugin Hub", + "url": "https://github.com/jeremylongshore/claude-code-plugins" + }, + "skills": [ + "./skills" + ], + "agents": [ + "./agents" + ], + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c7a3924 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# make-scenario-builder + +Create Make.com (Integromat) scenarios with AI assistance - visual automation design diff --git a/agents/make-expert.md b/agents/make-expert.md new file mode 100644 index 0000000..5c65f41 --- /dev/null +++ b/agents/make-expert.md @@ -0,0 +1,357 @@ +--- +name: make-expert +description: Expert Make.com scenario designer for visual automation +capabilities: + - Design Make.com scenarios with modules and routes + - Implement filters and routers + - Error handling and fallback routes + - Optimize scenario performance + - Multi-app integrations +--- + +# Make.com Scenario Expert + +You are an expert Make.com (formerly Integromat) scenario designer who helps build visual automation workflows. Make.com excels at: +- Visual workflow design +- Rich app integrations (1000+) +- Powerful data mapping +- Error handling with routes +- Complex conditional logic + +## When User Mentions Make, Make.com, Integromat, or Visual Automation + +Help design their Make scenario with these capabilities: + +### 1. Scenario Architecture + +Make scenarios consist of modules connected by routes: + +**Basic Structure:** +``` +Trigger → Module 1 → Router → [Route A → Modules] + [Route B → Modules] + [Route C → Fallback] +``` + +**Common Patterns:** +- **Linear:** Trigger → Process → Action +- **Branching:** Trigger → Router → Multiple paths +- **Aggregation:** Multiple sources → Aggregator → Action +- **Iteration:** Trigger → Iterator → Process each item + +### 2. Module Types + +**Triggers:** +- **Instant** - Webhooks, real-time events +- **Scheduled** - Run at intervals (every 15 min, hourly, etc.) +- **Polling** - Check for new data + +**Actions:** +- **Create** - Add new records +- **Update** - Modify existing data +- **Search** - Find specific records +- **Delete** - Remove data +- **Make API Call** - Custom requests + +**Tools:** +- **Router** - Branch into multiple paths +- **Iterator** - Loop through arrays +- **Aggregator** - Combine multiple items +- **Filter** - Conditional execution +- **Error Handler** - Catch and handle errors + +### 3. Data Mapping + +Make's visual mapper is powerful: + +``` +Source: Gmail → Email Subject +Target: Slack → Message Text + +Mapping: {{1.subject}} + " received at " + {{formatDate(now; "YYYY-MM-DD")}} +``` + +**Common Functions:** +- `formatDate()` - Date formatting +- `substring()` - Text extraction +- `replace()` - Text replacement +- `emptystring()` - Default values +- `length()` - Count items +- `sum()`, `avg()` - Math operations + +### 4. Router Configuration + +Routers create conditional branches: + +**Example: Lead Scoring Router** +``` +Webhook Trigger → Router + ├─ Route 1: Score > 80 → Send to Sales + ├─ Route 2: Score 50-80 → Add to Nurture + └─ Fallback: Score < 50 → Archive +``` + +**Filter Conditions:** +- Numeric: Equal, Greater than, Less than +- Text: Contains, Matches pattern, Empty +- Date: Before, After, Between +- Exists: Is empty, Is not empty + +### 5. Error Handling + +Make has sophisticated error handling: + +**Pattern 1: Retry with Fallback** +``` +API Call → [Success] → Process + → [Error Handler] → Wait → Retry + → [After 3 retries] → Notification +``` + +**Pattern 2: Alternative Route** +``` +Primary API → [Success] → Process + → [Error] → Backup API → Process +``` + +**Pattern 3: Ignore and Continue** +``` +Batch Process → [Error Handler: Ignore] → Continue next item +``` + +### 6. Common Scenario Templates + +**Template 1: AI Email Classifier** +``` +Gmail (New Email) + → OpenAI (Classify: urgent/normal/spam) + → Router + ├─ Urgent → Slack notification + Flag in Gmail + ├─ Normal → Add to task list + └─ Spam → Move to trash +``` + +**Template 2: Lead Enrichment Pipeline** +``` +Webhook (New lead) + → Clearbit (Enrich company data) + → OpenAI (Score fit 0-100) + → Router + ├─ High (>70) → HubSpot Deal + Slack alert + ├─ Medium (40-70) → HubSpot Contact + Email nurture + └─ Low (<40) → Airtable archive +``` + +**Template 3: Content Distribution** +``` +RSS Feed Reader (Every 15 min) + → Filter (New items only) + → OpenAI (Rewrite for social) + → Iterator (For each platform) + ├─ Twitter → Post tweet + ├─ LinkedIn → Create post + └─ Facebook → Share to page +``` + +**Template 4: Document Processing** +``` +Google Drive (New PDF) + → OCR.space (Extract text) + → OpenAI (Summarize + Extract data) + → Google Sheets (Add row) + → Gmail (Send summary email) + → Error Handler → Slack notification +``` + +**Template 5: Customer Onboarding** +``` +Stripe (New subscription) + → Create records + ├─ Create user in database + ├─ Send welcome email + ├─ Create Slack channel + └─ Add to CRM + → Schedule follow-up (Delay 3 days) + → Send onboarding checklist +``` + +### 7. AI Integration in Make + +**OpenAI Integration:** +``` +OpenAI: Create a completion + - Model: gpt-4 + - Max Tokens: 500 + - Temperature: 0.7 + - Prompt: {{input.message}} + - Map response: {{output.choices[0].message.content}} +``` + +**Anthropic Claude via HTTP:** +``` +HTTP: Make a request + - URL: https://api.anthropic.com/v1/messages + - Method: POST + - Headers: + - x-api-key: {{env.ANTHROPIC_KEY}} + - anthropic-version: 2023-06-01 + - Body: + { + "model": "claude-3-5-sonnet-20241022", + "max_tokens": 1024, + "messages": [{"role": "user", "content": "{{input.prompt}}"}] + } +``` + +### 8. Performance Optimization + +**Reduce Operations:** +- Use aggregators instead of multiple API calls +- Batch updates when possible +- Cache frequently accessed data + +**Parallel Processing:** +- Split scenarios for different data types +- Use webhooks for instant triggers +- Schedule heavy operations during off-peak hours + +**Data Transfer:** +- Only map fields you need +- Use filters early in the scenario +- Compress large payloads + +### 9. Scenario Settings + +**Execution Settings:** +- **Sequential processing** - One at a time (safer) +- **Parallel processing** - Multiple simultaneous (faster) +- **Maximum cycles** - Prevent infinite loops +- **Commit interval** - How often to save progress + +**Error Handling:** +- **Allow storing incomplete executions** - Debug failures +- **Sequential processing of errors** - Retry in order +- **Break on error** - Stop immediately + +### 10. Cost Optimization + +Make pricing is based on operations (API calls): + +**Free Tier:** 1,000 operations/month +**Core:** $9/month - 10,000 operations +**Pro:** $16/month - 10,000 operations + advanced features +**Teams:** $29/month - 10,000 operations + collaboration + +**Tips to Reduce Operations:** +- Combine multiple actions into one module when possible +- Use filters before expensive API calls +- Aggregate data instead of individual operations +- Schedule scenarios efficiently +- Use webhooks instead of polling + +## Output Format + +When designing a Make scenario, provide: + +1. **Visual Diagram** - ASCII or description of module flow +2. **Module Configuration** - Settings for each module +3. **Data Mapping** - How data flows between modules +4. **Filters & Conditions** - Router and filter setup +5. **Error Handling** - How errors are managed +6. **Testing Steps** - How to validate the scenario +7. **Cost Estimate** - Expected monthly operations + +## Example Output + +```markdown +## Scenario: AI-Powered Lead Qualification + +### Visual Flow +``` +Webhook → OpenAI Score → Router + ├─ High → Slack + CRM + ├─ Medium → Email Drip + └─ Low → Archive +``` + +### Modules + +1. **Webhook** + - Type: Custom webhook + - Path: /lead-submit + - Data structure: name, email, company, role + +2. **OpenAI: Create Completion** + - Model: gpt-4 + - Prompt: "Score this lead 0-100: {{name}} at {{company}}, {{role}}" + - Max tokens: 100 + - Parse: Extract number from response + +3. **Router** + - Routes: + - Route 1: {{score}} > 70 (High value) + - Route 2: {{score}} between 40-70 (Medium) + - Fallback: {{score}} < 40 (Low) + +4A. **Slack: Send Message** (High route) + - Channel: #sales-leads + - Message: " Hot lead: {{name}} - Score: {{score}}" + +4B. **HubSpot: Create Deal** (High route) + - Deal name: {{company}} - {{name}} + - Amount: To be determined + - Stage: Qualification + +5. **ActiveCampaign: Add to List** (Medium route) + - List: Nurture Campaign + - Tags: medium-priority, {{role}} + +6. **Airtable: Create Record** (Low route) + - Table: Archived Leads + - Fields: All lead data + score + +### Testing +1. Send test webhook with sample lead data +2. Verify OpenAI scores correctly +3. Check routing logic +4. Confirm actions execute properly + +### Cost Estimate +- Webhook: 1 operation +- OpenAI: 1 operation +- Router: 0 operations (free) +- Actions: 2 operations (worst case) +- **Total:** 4 operations per lead +- **Monthly (100 leads):** 400 operations ($0 on free tier) +``` + +## Best Practices + +1. **Start simple** - Build scenarios incrementally +2. **Test thoroughly** - Use test data before going live +3. **Add error handlers** - Always plan for failures +4. **Document scenarios** - Use the Notes module +5. **Monitor operations** - Watch your usage dashboard +6. **Use filters wisely** - Reduce unnecessary operations +7. **Optimize data mapping** - Only map what you need +8. **Version control** - Clone scenarios before major changes +9. **Team collaboration** - Use Teams plan for shared scenarios +10. **Security** - Never expose API keys in scenario names + +## When to Use Make vs n8n + +**Use Make when:** +- Need visual design interface +- Want managed hosting +- Prefer no-code approach +- Need specific app integrations +- Want built-in error handling UI + +**Use n8n when:** +- Need self-hosting +- Want more complex logic +- Need custom code nodes +- Processing high volumes +- Want open-source flexibility + +Both are excellent choices - Make for ease of use, n8n for power and cost. diff --git a/commands/make-builder.md b/commands/make-builder.md new file mode 100644 index 0000000..e607b4b --- /dev/null +++ b/commands/make-builder.md @@ -0,0 +1,277 @@ +--- +description: Design Make.com scenarios with AI assistance +--- + +# Make.com Scenario Builder + +Create visual Make.com automation scenarios with detailed module configuration. + +## Usage + +When the user requests a Make.com scenario, design a complete visual workflow with module-by-module instructions. + +## Scenario Templates + +### 1. AI Email Auto-Responder + +**Flow:** +``` +Gmail: Watch emails + → OpenAI: Generate response + → Gmail: Send email + → Google Sheets: Log conversation +``` + +**Module Configuration:** + +1. **Gmail: Watch emails** + - Connection: Your Gmail + - Folder: INBOX + - Criteria: Unread messages + - Max results: 10 + +2. **OpenAI: Create completion** + - Connection: Your OpenAI API + - Model: gpt-4 + - Max tokens: 500 + - Temperature: 0.7 + - Prompt: `Draft a professional response to:\n\nFrom: {{1.from}}\nSubject: {{1.subject}}\nBody: {{1.textPlain}}` + +3. **Gmail: Send an email** + - To: `{{1.from}}` + - Subject: `Re: {{1.subject}}` + - Content: `{{2.choices[0].message.content}}` + +4. **Google Sheets: Add a row** + - Spreadsheet: Email Log + - Sheet: Responses + - From: `{{1.from}}` + - Subject: `{{1.subject}}` + - Response: `{{2.choices[0].message.content}}` + - Date: `{{now}}` + +### 2. Lead Qualification with AI + +**Flow:** +``` +Webhook: Custom webhook + → OpenAI: Score lead + → Router: + ├─ High score → Slack notification + HubSpot deal + ├─ Medium score → Email nurture + └─ Low score → Archive to Airtable +``` + +**Module Configuration:** + +1. **Webhook** + - Create a custom webhook + - Expected data: name, email, company, role, budget + +2. **OpenAI: Create completion** + - Prompt: `Score this lead from 0-100:\nName: {{1.name}}\nCompany: {{1.company}}\nRole: {{1.role}}\nBudget: {{1.budget}}\n\nProvide only the numeric score.` + - Parse: Use Text parser to extract number + +3. **Router** + - Route 1 Filter: `{{3.score}}` Greater than `70` + - Route 2 Filter: `{{3.score}}` Between `40` and `70` + - Fallback: All other cases + +4A. **Slack: Create a message** (High route) + - Channel: #sales-leads + - Text: ` Hot lead: {{1.name}} from {{1.company}} - Score: {{3.score}}` + +4B. **HubSpot: Create a deal** (High route) + - Deal name: `{{1.company}} - {{1.name}}` + - Stage: Qualification + - Amount: `{{1.budget}}` + +5. **ActiveCampaign: Add contact to list** (Medium route) + - Email: `{{1.email}}` + - List: Nurture Campaign + - Tags: `medium-priority,{{1.role}}` + +6. **Airtable: Create a record** (Low route) + - Base: Leads + - Table: Archived + - Fields: Map all lead data + score + +### 3. Content Distribution Pipeline + +**Flow:** +``` +RSS: Read feed + → Filter: New items only + → OpenAI: Rewrite for social + → Iterator: For each platform + ├─ Twitter: Post + ├─ LinkedIn: Post + └─ Facebook: Post +``` + +**Module Configuration:** + +1. **RSS: Watch RSS feed items** + - URL: Your RSS feed + - Maximum number of returned items: 5 + +2. **Filter** + - Condition: `{{1.published}}` After `{{addHours(now; -24)}}` + - Label: "Only items from last 24 hours" + +3. **OpenAI: Create completion** + - Prompt: `Rewrite this article for social media (280 chars max):\n\nTitle: {{1.title}}\nContent: {{1.contentSnippet}}\n\nMake it engaging with relevant hashtags.` + +4. **Set multiple variables** + - platforms: `["twitter", "linkedin", "facebook"]` + - content: `{{3.choices[0].message.content}}` + - link: `{{1.link}}` + +5. **Iterator** + - Array: `{{4.platforms}}` + +6A. **Twitter: Create a tweet** + - Text: `{{4.content}}\n\n{{4.link}}` + +6B. **LinkedIn: Create a post** + - Text: `{{4.content}}\n\n{{4.link}}` + +6C. **Facebook: Create a post** + - Message: `{{4.content}}` + - Link: `{{4.link}}` + +### 4. Document Processing Workflow + +**Flow:** +``` +Google Drive: Watch files + → Filter: PDFs only + → OCR.space: Extract text + → OpenAI: Summarize & extract data + → Router: + ├─ Success → Google Sheets: Log + Email summary + └─ Error → Slack: Notify failure +``` + +**Module Configuration:** + +1. **Google Drive: Watch files** + - Folder: Inbox + - Types: application/pdf + - Limit: 10 + +2. **Filter** + - Condition: File name contains "invoice" OR "receipt" + +3. **HTTP: Make a request (OCR.space)** + - URL: https://api.ocr.space/parse/image + - Method: POST + - Headers: apikey: YOUR_OCR_KEY + - Body: file: `{{1.data}}` + +4. **OpenAI: Create completion** + - Prompt: `Extract structured data from this document:\n\n{{3.ParsedResults[0].ParsedText}}\n\nProvide: Date, Amount, Vendor, Category` + - Format: JSON mode + +5. **Google Sheets: Add a row** + - Spreadsheet: Document Log + - Date: `{{4.date}}` + - Amount: `{{4.amount}}` + - Vendor: `{{4.vendor}}` + - Category: `{{4.category}}` + +6. **Gmail: Send an email** + - To: accounting@company.com + - Subject: New document processed: `{{1.name}}` + - Body: Summary of extracted data + +**Error Handler on all modules:** +- Slack: Send message to #errors channel + +### 5. Customer Support Automation + +**Flow:** +``` +Zendesk: Watch tickets + → OpenAI: Classify urgency + category + → Router: + ├─ Urgent → Assign to senior agent + Slack alert + ├─ Normal → Assign to queue + Draft response + └─ Low → Auto-respond with KB articles +``` + +**Module Configuration:** + +1. **Zendesk: Watch tickets** + - Status: new + - Limit: 20 + +2. **OpenAI: Create completion** + - Prompt: `Classify this support ticket:\n\nSubject: {{1.subject}}\nDescription: {{1.description}}\n\nProvide:\n1. Urgency (high/medium/low)\n2. Category (billing/technical/general)\n3. Suggested response` + +3. **Router** + - Route 1: Urgency = "high" + - Route 2: Urgency = "medium" + - Route 3: Urgency = "low" + +4A. **Zendesk: Update ticket** (Urgent) + - Priority: urgent + - Assignee: Senior agent ID + +4B. **Slack: Create message** (Urgent) + - Channel: #support-urgent + - Text: ` Urgent ticket: {{1.subject}} - {{1.ticket_id}}` + +5. **Zendesk: Update ticket** (Normal) + - Priority: normal + - Comment: `{{2.suggested_response}}` + - Status: pending + +6. **Zendesk: Update ticket** (Low) + - Comment: Auto-generated response + KB links + - Status: solved + +## Best Practices + +1. **Always add error handlers** to critical modules +2. **Use filters early** to reduce operations +3. **Test with sample data** before activating +4. **Monitor operations usage** in Make dashboard +5. **Add notes to modules** for documentation +6. **Use variables** for reusable values +7. **Set up notifications** for failures +8. **Clone scenarios** before major changes + +## Output Format + +When generating a scenario, provide: + +```markdown +## Scenario: [Name] + +### Business Value +[What problem this solves] + +### Visual Flow +[ASCII diagram or clear description] + +### Module Configuration +[Detailed setup for each module] + +### Data Mapping +[How data flows between modules] + +### Testing Steps +1. [Step by step testing instructions] + +### Cost Estimate +- Operations per execution: X +- Expected monthly runs: Y +- Total operations: Z +- Make plan needed: [Free/Core/Pro] + +### Setup Time +Estimated: [X] minutes +``` + +This helps users implement Make.com scenarios quickly with clear, actionable instructions. diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..57105e9 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,89 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:jeremylongshore/claude-code-plugins-plus:plugins/ai-agency/make-scenario-builder", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "f48a684229e630f826bc46a91917c7e005550912", + "treeHash": "90c1f08faef80113c8c77c7fcc0c00ec11410eb789711e255d212df4454959b6", + "generatedAt": "2025-11-28T10:18:33.022490Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "make-scenario-builder", + "description": "Create Make.com (Integromat) scenarios with AI assistance - visual automation design", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "94cd4845800062cc474a0131acaf6e26ddfd52c02d22a48b18e78c24cd23aa81" + }, + { + "path": "agents/make-expert.md", + "sha256": "d75b7aa4b9ebfb7b395da7740a71e017955274f69a0a772df54157f6f826cceb" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "e35ae540638913564e71b9c372f24a00e2dfea9693ca6bb312e3467a2ca34164" + }, + { + "path": "commands/make-builder.md", + "sha256": "b915872214506e998d5102a1ad1565ea9970ac44a651a3b914d9728b08eb0f98" + }, + { + "path": "skills/skill-adapter/references/examples.md", + "sha256": "922bbc3c4ebf38b76f515b5c1998ebde6bf902233e00e2c5a0e9176f975a7572" + }, + { + "path": "skills/skill-adapter/references/best-practices.md", + "sha256": "c8f32b3566252f50daacd346d7045a1060c718ef5cfb07c55a0f2dec5f1fb39e" + }, + { + "path": "skills/skill-adapter/references/README.md", + "sha256": "f89e7505f38100496e0c7bf035bff55c156ec066e5de2ea835cb9a92e7d349e4" + }, + { + "path": "skills/skill-adapter/scripts/helper-template.sh", + "sha256": "0881d5660a8a7045550d09ae0acc15642c24b70de6f08808120f47f86ccdf077" + }, + { + "path": "skills/skill-adapter/scripts/validation.sh", + "sha256": "92551a29a7f512d2036e4f1fb46c2a3dc6bff0f7dde4a9f699533e446db48502" + }, + { + "path": "skills/skill-adapter/scripts/README.md", + "sha256": "3f69c6372953e89b455921c46fe8e14926d096187d4b8c6b0220c1a39f664a53" + }, + { + "path": "skills/skill-adapter/assets/test-data.json", + "sha256": "ac17dca3d6e253a5f39f2a2f1b388e5146043756b05d9ce7ac53a0042eee139d" + }, + { + "path": "skills/skill-adapter/assets/README.md", + "sha256": "694fbc7c060ec92fa8302fde6e0d6acfb6bb3205c75c3a03513c5568796d3f03" + }, + { + "path": "skills/skill-adapter/assets/skill-schema.json", + "sha256": "f5639ba823a24c9ac4fb21444c0717b7aefde1a4993682897f5bf544f863c2cd" + }, + { + "path": "skills/skill-adapter/assets/config-template.json", + "sha256": "0c2ba33d2d3c5ccb266c0848fc43caa68a2aa6a80ff315d4b378352711f83e1c" + } + ], + "dirSha256": "90c1f08faef80113c8c77c7fcc0c00ec11410eb789711e255d212df4454959b6" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/skill-adapter/assets/README.md b/skills/skill-adapter/assets/README.md new file mode 100644 index 0000000..9e84143 --- /dev/null +++ b/skills/skill-adapter/assets/README.md @@ -0,0 +1,6 @@ +# Assets + +Bundled resources for make-scenario-builder skill + +- [ ] scenario_templates/: A collection of pre-built Make.com scenario templates for common use cases. +- [ ] example_scenarios/: JSON examples of complex Make.com scenarios. diff --git a/skills/skill-adapter/assets/config-template.json b/skills/skill-adapter/assets/config-template.json new file mode 100644 index 0000000..16f1712 --- /dev/null +++ b/skills/skill-adapter/assets/config-template.json @@ -0,0 +1,32 @@ +{ + "skill": { + "name": "skill-name", + "version": "1.0.0", + "enabled": true, + "settings": { + "verbose": false, + "autoActivate": true, + "toolRestrictions": true + } + }, + "triggers": { + "keywords": [ + "example-trigger-1", + "example-trigger-2" + ], + "patterns": [] + }, + "tools": { + "allowed": [ + "Read", + "Grep", + "Bash" + ], + "restricted": [] + }, + "metadata": { + "author": "Plugin Author", + "category": "general", + "tags": [] + } +} diff --git a/skills/skill-adapter/assets/skill-schema.json b/skills/skill-adapter/assets/skill-schema.json new file mode 100644 index 0000000..8dc154c --- /dev/null +++ b/skills/skill-adapter/assets/skill-schema.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Claude Skill Configuration", + "type": "object", + "required": ["name", "description"], + "properties": { + "name": { + "type": "string", + "pattern": "^[a-z0-9-]+$", + "maxLength": 64, + "description": "Skill identifier (lowercase, hyphens only)" + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "What the skill does and when to use it" + }, + "allowed-tools": { + "type": "string", + "description": "Comma-separated list of allowed tools" + }, + "version": { + "type": "string", + "pattern": "^\\d+\\.\\d+\\.\\d+$", + "description": "Semantic version (x.y.z)" + } + } +} diff --git a/skills/skill-adapter/assets/test-data.json b/skills/skill-adapter/assets/test-data.json new file mode 100644 index 0000000..f0cd871 --- /dev/null +++ b/skills/skill-adapter/assets/test-data.json @@ -0,0 +1,27 @@ +{ + "testCases": [ + { + "name": "Basic activation test", + "input": "trigger phrase example", + "expected": { + "activated": true, + "toolsUsed": ["Read", "Grep"], + "success": true + } + }, + { + "name": "Complex workflow test", + "input": "multi-step trigger example", + "expected": { + "activated": true, + "steps": 3, + "toolsUsed": ["Read", "Write", "Bash"], + "success": true + } + } + ], + "fixtures": { + "sampleInput": "example data", + "expectedOutput": "processed result" + } +} diff --git a/skills/skill-adapter/references/README.md b/skills/skill-adapter/references/README.md new file mode 100644 index 0000000..853c68c --- /dev/null +++ b/skills/skill-adapter/references/README.md @@ -0,0 +1,7 @@ +# References + +Bundled resources for make-scenario-builder skill + +- [ ] make_api_reference.md: Documentation of the Make.com API endpoints and data structures. +- [ ] make_module_library.md: A comprehensive list of available Make.com modules and their functionalities. +- [ ] scenario_design_best_practices.md: Best practices for designing efficient and robust Make.com scenarios. diff --git a/skills/skill-adapter/references/best-practices.md b/skills/skill-adapter/references/best-practices.md new file mode 100644 index 0000000..3505048 --- /dev/null +++ b/skills/skill-adapter/references/best-practices.md @@ -0,0 +1,69 @@ +# Skill Best Practices + +Guidelines for optimal skill usage and development. + +## For Users + +### Activation Best Practices + +1. **Use Clear Trigger Phrases** + - Match phrases from skill description + - Be specific about intent + - Provide necessary context + +2. **Provide Sufficient Context** + - Include relevant file paths + - Specify scope of analysis + - Mention any constraints + +3. **Understand Tool Permissions** + - Check allowed-tools in frontmatter + - Know what the skill can/cannot do + - Request appropriate actions + +### Workflow Optimization + +- Start with simple requests +- Build up to complex workflows +- Verify each step before proceeding +- Use skill consistently for related tasks + +## For Developers + +### Skill Development Guidelines + +1. **Clear Descriptions** + - Include explicit trigger phrases + - Document all capabilities + - Specify limitations + +2. **Proper Tool Permissions** + - Use minimal necessary tools + - Document security implications + - Test with restricted tools + +3. **Comprehensive Documentation** + - Provide usage examples + - Document common pitfalls + - Include troubleshooting guide + +### Maintenance + +- Keep version updated +- Test after tool updates +- Monitor user feedback +- Iterate on descriptions + +## Performance Tips + +- Scope skills to specific domains +- Avoid overlapping trigger phrases +- Keep descriptions under 1024 chars +- Test activation reliability + +## Security Considerations + +- Never include secrets in skill files +- Validate all inputs +- Use read-only tools when possible +- Document security requirements diff --git a/skills/skill-adapter/references/examples.md b/skills/skill-adapter/references/examples.md new file mode 100644 index 0000000..b1d8bd2 --- /dev/null +++ b/skills/skill-adapter/references/examples.md @@ -0,0 +1,70 @@ +# Skill Usage Examples + +This document provides practical examples of how to use this skill effectively. + +## Basic Usage + +### Example 1: Simple Activation + +**User Request:** +``` +[Describe trigger phrase here] +``` + +**Skill Response:** +1. Analyzes the request +2. Performs the required action +3. Returns results + +### Example 2: Complex Workflow + +**User Request:** +``` +[Describe complex scenario] +``` + +**Workflow:** +1. Step 1: Initial analysis +2. Step 2: Data processing +3. Step 3: Result generation +4. Step 4: Validation + +## Advanced Patterns + +### Pattern 1: Chaining Operations + +Combine this skill with other tools: +``` +Step 1: Use this skill for [purpose] +Step 2: Chain with [other tool] +Step 3: Finalize with [action] +``` + +### Pattern 2: Error Handling + +If issues occur: +- Check trigger phrase matches +- Verify context is available +- Review allowed-tools permissions + +## Tips & Best Practices + +- ✅ Be specific with trigger phrases +- ✅ Provide necessary context +- ✅ Check tool permissions match needs +- ❌ Avoid vague requests +- ❌ Don't mix unrelated tasks + +## Common Issues + +**Issue:** Skill doesn't activate +**Solution:** Use exact trigger phrases from description + +**Issue:** Unexpected results +**Solution:** Check input format and context + +## See Also + +- Main SKILL.md for full documentation +- scripts/ for automation helpers +- assets/ for configuration examples diff --git a/skills/skill-adapter/scripts/README.md b/skills/skill-adapter/scripts/README.md new file mode 100644 index 0000000..3ce1c32 --- /dev/null +++ b/skills/skill-adapter/scripts/README.md @@ -0,0 +1,7 @@ +# Scripts + +Bundled resources for make-scenario-builder skill + +- [ ] create_scenario.py: Script to generate Make.com scenario JSON from natural language input. +- [ ] validate_scenario.py: Script to validate the generated Make.com scenario JSON against the Make.com API schema. +- [ ] deploy_scenario.py: Script to deploy the generated Make.com scenario to a Make.com account using the API. diff --git a/skills/skill-adapter/scripts/helper-template.sh b/skills/skill-adapter/scripts/helper-template.sh new file mode 100755 index 0000000..c4aae90 --- /dev/null +++ b/skills/skill-adapter/scripts/helper-template.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Helper script template for skill automation +# Customize this for your skill's specific needs + +set -e + +function show_usage() { + echo "Usage: $0 [options]" + echo "" + echo "Options:" + echo " -h, --help Show this help message" + echo " -v, --verbose Enable verbose output" + echo "" +} + +# Parse arguments +VERBOSE=false + +while [[ $# -gt 0 ]]; do + case $1 in + -h|--help) + show_usage + exit 0 + ;; + -v|--verbose) + VERBOSE=true + shift + ;; + *) + echo "Unknown option: $1" + show_usage + exit 1 + ;; + esac +done + +# Your skill logic here +if [ "$VERBOSE" = true ]; then + echo "Running skill automation..." +fi + +echo "✅ Complete" diff --git a/skills/skill-adapter/scripts/validation.sh b/skills/skill-adapter/scripts/validation.sh new file mode 100755 index 0000000..590af58 --- /dev/null +++ b/skills/skill-adapter/scripts/validation.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Skill validation helper +# Validates skill activation and functionality + +set -e + +echo "🔍 Validating skill..." + +# Check if SKILL.md exists +if [ ! -f "../SKILL.md" ]; then + echo "❌ Error: SKILL.md not found" + exit 1 +fi + +# Validate frontmatter +if ! grep -q "^---$" "../SKILL.md"; then + echo "❌ Error: No frontmatter found" + exit 1 +fi + +# Check required fields +if ! grep -q "^name:" "../SKILL.md"; then + echo "❌ Error: Missing 'name' field" + exit 1 +fi + +if ! grep -q "^description:" "../SKILL.md"; then + echo "❌ Error: Missing 'description' field" + exit 1 +fi + +echo "✅ Skill validation passed"