From 288fc754a85844dda79402fd95cb5791876d63a3 Mon Sep 17 00:00:00 2001 From: Mohit gauniyal Date: Thu, 5 Feb 2026 13:14:56 +0530 Subject: [PATCH 1/2] Fix markdown formatting issues and add contribution infrastructure - Fix malformed strikethrough syntax in 29 files across 9 plugins - Add CONTRIBUTING.md with comprehensive guidelines - Add GitHub issue templates (bug, feature, plugin submission) - Add pull request template - Add CI/CD validation workflow for JSON and markdown Fixes markdown rendering issues that made documentation harder to read. Adds infrastructure to enable community contributions and ensure quality. --- bio-research/CONNECTORS.md | 18 ++++---- customer-support/CONNECTORS.md | 14 +++--- customer-support/commands/draft-response.md | 10 ++--- customer-support/commands/escalate.md | 12 ++--- customer-support/commands/kb-article.md | 8 ++-- customer-support/commands/research.md | 14 +++--- customer-support/commands/triage.md | 6 +-- data/CONNECTORS.md | 8 ++-- enterprise-search/CONNECTORS.md | 16 +++---- enterprise-search/commands/digest.md | 44 +++++++++---------- enterprise-search/commands/search.md | 42 +++++++++--------- finance/CONNECTORS.md | 12 ++--- legal/CONNECTORS.md | 14 +++--- marketing/CONNECTORS.md | 14 +++--- marketing/commands/brand-review.md | 2 +- marketing/commands/campaign-plan.md | 2 +- marketing/commands/email-sequence.md | 2 +- marketing/commands/performance-report.md | 2 +- marketing/commands/seo-audit.md | 4 +- product-management/CONNECTORS.md | 14 +++--- .../commands/competitive-brief.md | 4 +- product-management/commands/metrics-review.md | 2 +- product-management/commands/roadmap-update.md | 2 +- .../commands/stakeholder-update.md | 10 ++--- .../commands/synthesize-research.md | 8 ++-- product-management/commands/write-spec.md | 6 +-- productivity/CONNECTORS.md | 12 ++--- sales/CONNECTORS.md | 16 +++---- sales/commands/call-summary.md | 2 +- 29 files changed, 160 insertions(+), 160 deletions(-) diff --git a/bio-research/CONNECTORS.md b/bio-research/CONNECTORS.md index 7c2eb75..91aee2f 100644 --- a/bio-research/CONNECTORS.md +++ b/bio-research/CONNECTORS.md @@ -10,14 +10,14 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Literature | `~~literature` | PubMed, bioRxiv | Google Scholar, Semantic Scholar | -| Scientific illustration | `~~scientific illustration` | BioRender | — | -| Clinical trials | `~~clinical trials` | ClinicalTrials.gov | EU Clinical Trials Register | -| Chemical database | `~~chemical database` | ChEMBL | PubChem, DrugBank | -| Drug targets | `~~drug targets` | Open Targets | UniProt, STRING | -| Data repository | `~~data repository` | Synapse | Zenodo, Dryad, Figshare | -| Journal access | `~~journal access` | Wiley Scholar Gateway | Elsevier, Springer Nature | -| AI research | `~~AI research` | Owkin | — | -| Lab platform | `~~lab platform` | Benchling\* | — | +| Literature | `literature` | PubMed, bioRxiv | Google Scholar, Semantic Scholar | +| Scientific illustration | `scientific illustration` | BioRender | — | +| Clinical trials | `clinical trials` | ClinicalTrials.gov | EU Clinical Trials Register | +| Chemical database | `chemical database` | ChEMBL | PubChem, DrugBank | +| Drug targets | `drug targets` | Open Targets | UniProt, STRING | +| Data repository | `data repository` | Synapse | Zenodo, Dryad, Figshare | +| Journal access | `journal access` | Wiley Scholar Gateway | Elsevier, Springer Nature | +| AI research | `AI research` | Owkin | — | +| Lab platform | `lab platform` | Benchling\* | — | \* Placeholder — MCP URL not yet configured diff --git a/customer-support/CONNECTORS.md b/customer-support/CONNECTORS.md index 38c67d6..23bcab9 100644 --- a/customer-support/CONNECTORS.md +++ b/customer-support/CONNECTORS.md @@ -10,10 +10,10 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Chat | `~~chat` | Slack | Microsoft Teams | -| Email | `~~email` | Microsoft 365 | — | -| Cloud storage | `~~cloud storage` | Microsoft 365 | — | -| Support platform | `~~support platform` | Intercom | Zendesk, Freshdesk, HubSpot Service Hub | -| CRM | `~~CRM` | HubSpot | Salesforce, Pipedrive | -| Knowledge base | `~~knowledge base` | Guru, Notion | Confluence, Help Scout | -| Project tracker | `~~project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | +| Chat | `chat` | Slack | Microsoft Teams | +| Email | `email` | Microsoft 365 | — | +| Cloud storage | `cloud storage` | Microsoft 365 | — | +| Support platform | `support platform` | Intercom | Zendesk, Freshdesk, HubSpot Service Hub | +| CRM | `CRM` | HubSpot | Salesforce, Pipedrive | +| Knowledge base | `knowledge base` | Guru, Notion | Confluence, Help Scout | +| Project tracker | `project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | diff --git a/customer-support/commands/draft-response.md b/customer-support/commands/draft-response.md index 349fcf2..b2cd0f6 100644 --- a/customer-support/commands/draft-response.md +++ b/customer-support/commands/draft-response.md @@ -38,27 +38,27 @@ Parse the user's input to determine: Gather relevant background from available sources: -**~~email:** +**email:** - Previous correspondence with this customer on this topic - Any commitments or timelines previously shared - Tone and style of the existing thread -**~~chat:** +**chat:** - Internal discussions about this customer or topic - Any guidance from product, engineering, or leadership - Similar situations and how they were handled -**~~CRM (if connected):** +**CRM (if connected):** - Account details and plan level - Contact information and key stakeholders - Previous escalations or sensitive issues -**~~support platform (if connected):** +**support platform (if connected):** - Related tickets and their resolution - Known issues or workarounds - SLA status and response time commitments -**~~knowledge base:** +**knowledge base:** - Official documentation or help articles to reference - Product roadmap information (if shareable) - Policy or process documentation diff --git a/customer-support/commands/escalate.md b/customer-support/commands/escalate.md index 3595b23..6c2c08b 100644 --- a/customer-support/commands/escalate.md +++ b/customer-support/commands/escalate.md @@ -39,11 +39,11 @@ Use the "When to Escalate vs. Handle in Support" criteria from the **escalation* Pull together relevant information from available sources: -- **~~support platform**: Related tickets, timeline of communications, previous troubleshooting -- **~~CRM** (if connected): Account details, key contacts, previous escalations -- **~~chat**: Internal discussions about this issue, similar reports from other customers -- **~~project tracker** (if connected): Related bug reports or feature requests, engineering status -- **~~knowledge base**: Known issues or workarounds, relevant documentation +- **support platform**: Related tickets, timeline of communications, previous troubleshooting +- **CRM** (if connected): Account details, key contacts, previous escalations +- **chat**: Internal discussions about this issue, similar reports from other customers +- **project tracker** (if connected): Related bug reports or feature requests, engineering status +- **knowledge base**: Known issues or workarounds, relevant documentation ### 3. Assess Business Impact @@ -109,7 +109,7 @@ If the issue is a bug, follow the reproduction step best practices from the **es ### 7. Offer Next Steps After generating the escalation: -- "Want me to post this in a ~~chat channel for the target team?" +- "Want me to post this in a chat channel for the target team?" - "Should I update the customer with an interim response?" - "Want me to set a follow-up reminder to check on this?" - "Should I draft a customer-facing update with the current status?" diff --git a/customer-support/commands/kb-article.md b/customer-support/commands/kb-article.md index 6b62d1d..f7f48e8 100644 --- a/customer-support/commands/kb-article.md +++ b/customer-support/commands/kb-article.md @@ -35,9 +35,9 @@ Parse the input to identify: If a ticket reference is provided, look up the full context: -- **~~support platform**: Pull the ticket thread, resolution, and any internal notes -- **~~knowledge base**: Check if a similar article already exists (update vs. create new) -- **~~project tracker**: Check if there's a related bug or feature request +- **support platform**: Pull the ticket thread, resolution, and any internal notes +- **knowledge base**: Check if a similar article already exists (update vs. create new) +- **project tracker**: Check if there's a related bug or feature request ### 2. Draft the Article @@ -77,7 +77,7 @@ from the knowledge-management skill] ### 4. Offer Next Steps After generating the article: -- "Want me to check if a similar article already exists in your ~~knowledge base?" +- "Want me to check if a similar article already exists in your knowledge base?" - "Should I adjust the technical depth for a different audience?" - "Want me to draft a companion article (e.g., a how-to to go with this troubleshooting guide)?" - "Should I create an internal-only version with additional technical detail?" diff --git a/customer-support/commands/research.md b/customer-support/commands/research.md index 0c990e5..ecfcba0 100644 --- a/customer-support/commands/research.md +++ b/customer-support/commands/research.md @@ -30,14 +30,14 @@ Identify what type of research is needed: Search in priority order, adapting to what is connected: **Tier 1 — Internal Documentation (highest confidence):** -- ~~knowledge base (if connected): product docs, runbooks, FAQs -- ~~cloud storage: internal documents, specs, guides, past research -- ~~CRM notes: previous answers to similar questions, account context +- knowledge base (if connected): product docs, runbooks, FAQs +- cloud storage: internal documents, specs, guides, past research +- CRM notes: previous answers to similar questions, account context **Tier 2 — Team Communications:** -- ~~chat: search for the topic in relevant channels; check if teammates have discussed or answered this before -- ~~email: search for previous correspondence on this topic -- ~~support platform (if connected): check if this has been asked/resolved before +- chat: search for the topic in relevant channels; check if teammates have discussed or answered this before +- email: search for previous correspondence on this topic +- support platform (if connected): check if this has been asked/resolved before **Tier 3 — External Sources:** - Web search: official documentation, blog posts, community forums @@ -90,7 +90,7 @@ If no connected sources yield results: - Perform web research on the topic - Ask the user for internal context: - "I couldn't find this in connected sources. Do you have internal docs or knowledge base articles about this?" - - "Has your team discussed this topic before? Any ~~chat channels I should check?" + - "Has your team discussed this topic before? Any chat channels I should check?" - "Is there a subject matter expert who would know the answer?" - Be transparent about limitations: - "This answer is based on web research only — please verify against your internal documentation before sharing with the customer." diff --git a/customer-support/commands/triage.md b/customer-support/commands/triage.md index 5b786f3..1c056aa 100644 --- a/customer-support/commands/triage.md +++ b/customer-support/commands/triage.md @@ -45,9 +45,9 @@ Using the category taxonomy and priority framework from the **ticket-triage** sk Before routing, check available sources: -- **~~support platform**: Search for similar open or recently resolved tickets -- **~~knowledge base**: Check for known issues or existing documentation -- **~~project tracker**: Check if there's an existing bug report or feature request +- **support platform**: Search for similar open or recently resolved tickets +- **knowledge base**: Check for known issues or existing documentation +- **project tracker**: Check if there's an existing bug report or feature request ### 4. Determine Routing diff --git a/data/CONNECTORS.md b/data/CONNECTORS.md index 927afe8..84bea2c 100644 --- a/data/CONNECTORS.md +++ b/data/CONNECTORS.md @@ -10,9 +10,9 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Data warehouse | `~~data warehouse` | Snowflake\*, Databricks\*, BigQuery | Redshift, PostgreSQL, MySQL | -| Notebook | `~~notebook` | Hex | Jupyter, Deepnote, Observable | -| Product analytics | `~~product analytics` | Amplitude | Mixpanel, Heap | -| Project tracker | `~~project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | +| Data warehouse | `data warehouse` | Snowflake\*, Databricks\*, BigQuery | Redshift, PostgreSQL, MySQL | +| Notebook | `notebook` | Hex | Jupyter, Deepnote, Observable | +| Product analytics | `product analytics` | Amplitude | Mixpanel, Heap | +| Project tracker | `project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | \* Placeholder — MCP URL not yet configured diff --git a/enterprise-search/CONNECTORS.md b/enterprise-search/CONNECTORS.md index f4d3bd0..ebd0f6e 100644 --- a/enterprise-search/CONNECTORS.md +++ b/enterprise-search/CONNECTORS.md @@ -6,16 +6,16 @@ Plugin files use `~~category` as a placeholder for whatever tool the user connec Plugins are **tool-agnostic** — they describe workflows in terms of categories (chat, email, cloud storage, etc.) rather than specific products. The `.mcp.json` pre-configures specific MCP servers, but any MCP server in that category works. -This plugin uses `~~category` references extensively as source labels in search output (e.g. `~~chat:`, `~~email:`). These are intentional — they represent dynamic category markers that resolve to whatever tool is connected. +This plugin uses `category` references extensively as source labels in search output (e.g. `chat:`, `email:`). These are intentional — they represent dynamic category markers that resolve to whatever tool is connected. ## Connectors for this plugin | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Chat | `~~chat` | Slack | Microsoft Teams, Discord | -| Email | `~~email` | Microsoft 365 | — | -| Cloud storage | `~~cloud storage` | Microsoft 365 | Dropbox | -| Knowledge base | `~~knowledge base` | Notion, Guru | Confluence, Slite | -| Project tracker | `~~project tracker` | Atlassian (Jira/Confluence), Asana | Linear, monday.com | -| CRM | `~~CRM` | *(not pre-configured)* | Salesforce, HubSpot | -| Office suite | `~~office suite` | Microsoft 365 | Google Workspace | +| Chat | `chat` | Slack | Microsoft Teams, Discord | +| Email | `email` | Microsoft 365 | — | +| Cloud storage | `cloud storage` | Microsoft 365 | Dropbox | +| Knowledge base | `knowledge base` | Notion, Guru | Confluence, Slite | +| Project tracker | `project tracker` | Atlassian (Jira/Confluence), Asana | Linear, monday.com | +| CRM | `CRM` | *(not pre-configured)* | Salesforce, HubSpot | +| Office suite | `office suite` | Microsoft 365 | Google Workspace | diff --git a/enterprise-search/commands/digest.md b/enterprise-search/commands/digest.md index 28012ec..c94decb 100644 --- a/enterprise-search/commands/digest.md +++ b/enterprise-search/commands/digest.md @@ -27,47 +27,47 @@ The user may also specify a custom range: Identify which MCP sources are connected (same approach as the search command): -- **~~chat** — channels, DMs, mentions -- **~~email** — inbox, sent, threads -- **~~cloud storage** — recently modified docs shared with user -- **~~project tracker** — tasks assigned, completed, commented on -- **~~CRM** — opportunity updates, account activity -- **~~knowledge base** — recently updated wiki pages +- **chat** — channels, DMs, mentions +- **email** — inbox, sent, threads +- **cloud storage** — recently modified docs shared with user +- **project tracker** — tasks assigned, completed, commented on +- **CRM** — opportunity updates, account activity +- **knowledge base** — recently updated wiki pages If no sources are connected, guide the user: ``` To generate a digest, you'll need at least one source connected. -Check your MCP settings to add ~~chat, ~~email, ~~cloud storage, or other tools. +Check your MCP settings to add chat, email, cloud storage, or other tools. ``` ### 3. Gather Activity from Each Source -**~~chat:** +**chat:** - Search for messages mentioning the user (`to:me`) - Check channels the user is in for recent activity - Look for threads the user participated in - Identify new messages in key channels -**~~email:** +**email:** - Search recent inbox messages - Identify threads with new replies - Flag emails with action items or questions directed at the user -**~~cloud storage:** +**cloud storage:** - Find documents recently modified or shared with the user - Note new comments on docs the user owns or collaborates on -**~~project tracker:** +**project tracker:** - Tasks assigned to the user (new or updated) - Tasks completed by others that the user follows - Comments on tasks the user is involved with -**~~CRM:** +**CRM:** - Opportunity stage changes - New activities logged on accounts the user owns - Updated contacts or accounts -**~~knowledge base:** +**knowledge base:** - Recently updated documents in relevant collections - New documents created in watched areas @@ -101,15 +101,15 @@ Organize the digest by topic, project, or theme rather than by source. Merge rel ``` ## Project Aurora -- ~~chat: Design review thread concluded — team chose Option B (#design, Tuesday) -- ~~email: Sarah sent updated spec incorporating feedback (Wednesday) -- ~~cloud storage: "Aurora API Spec v3" updated by Sarah (Wednesday) -- ~~project tracker: 3 tasks moved to In Progress, 2 completed +- chat: Design review thread concluded — team chose Option B (#design, Tuesday) +- email: Sarah sent updated spec incorporating feedback (Wednesday) +- cloud storage: "Aurora API Spec v3" updated by Sarah (Wednesday) +- project tracker: 3 tasks moved to In Progress, 2 completed ## Budget Planning -- ~~email: Finance team requesting Q2 projections by Friday -- ~~chat: Todd shared template in #finance (Monday) -- ~~cloud storage: "Q2 Budget Template" shared with you (Monday) +- email: Finance team requesting Q2 projections by Friday +- chat: Todd shared template in #finance (Monday) +- cloud storage: "Q2 Budget Template" shared with you (Monday) ``` ### 6. Format the Digest @@ -119,7 +119,7 @@ Structure the output clearly: ``` # [Daily/Weekly] Digest — [Date or Date Range] -Sources scanned: ~~chat, ~~email, ~~cloud storage, [others] +Sources scanned: chat, email, cloud storage, [others] ## Action Items (X items) - [ ] [Action item 1] — from [person], [source] ([date]) @@ -166,7 +166,7 @@ Across [N] sources · Covering [time range] - Default to `--daily` if no flag is specified - Group by topic/project, not by source — users care about what happened, not where it happened - Action items should always be listed first — they are the most actionable part of a digest -- Deduplicate cross-source activity (same decision in ~~chat and email = one entry) +- Deduplicate cross-source activity (same decision in chat and email = one entry) - For weekly digests, prioritize significance over completeness — highlight what matters, skip noise - If the user has a memory system (CLAUDE.md), use it to decode people names and project references - Include enough context in each item that the user can decide whether to dig deeper without clicking through diff --git a/enterprise-search/commands/search.md b/enterprise-search/commands/search.md index 3d3d2bc..2133d4e 100644 --- a/enterprise-search/commands/search.md +++ b/enterprise-search/commands/search.md @@ -15,17 +15,17 @@ Search across all connected MCP sources in a single query. Decompose the user's Before searching, determine which MCP sources are available. Attempt to identify connected tools from the available tool list. Common sources: -- **~~chat** — chat platform tools -- **~~email** — email tools -- **~~cloud storage** — cloud storage tools -- **~~project tracker** — project tracking tools -- **~~CRM** — CRM tools -- **~~knowledge base** — knowledge base tools +- **chat** — chat platform tools +- **email** — email tools +- **cloud storage** — cloud storage tools +- **project tracker** — project tracking tools +- **CRM** — CRM tools +- **knowledge base** — knowledge base tools If no MCP sources are connected: ``` To search across your tools, you'll need to connect at least one source. -Check your MCP settings to add ~~chat, ~~email, ~~cloud storage, or other tools. +Check your MCP settings to add chat, email, cloud storage, or other tools. Supported sources: ~~chat, ~~email, ~~cloud storage, ~~project tracker, ~~CRM, ~~knowledge base, and any other MCP-connected service. @@ -38,7 +38,7 @@ Analyze the search query to understand: - **Intent**: What is the user looking for? (a decision, a document, a person, a status update, a conversation) - **Entities**: People, projects, teams, tools mentioned - **Time constraints**: Recency signals ("this week", "last month", specific dates) -- **Source hints**: References to specific tools ("in ~~chat", "that email", "the doc") +- **Source hints**: References to specific tools ("in chat", "that email", "the doc") - **Filters**: Extract explicit filters from the query: - `from:` — Filter by sender/author - `in:` — Filter by channel, folder, or location @@ -50,31 +50,31 @@ Analyze the search query to understand: For each available source, create a targeted sub-query using that source's native search syntax: -**~~chat:** +**chat:** - Use available search and read tools for your chat platform - Translate filters: `from:` maps to sender, `in:` maps to channel/room, dates map to time range filters - Use natural language queries for semantic search when appropriate - Use keyword queries for exact matches -**~~email:** +**email:** - Use available email search tools - Translate filters: `from:` maps to sender, dates map to time range filters - Map `type:` to attachment filters or subject-line searches as appropriate -**~~cloud storage:** +**cloud storage:** - Use available file search tools - Translate to file query syntax: name contains, full text contains, modified date, file type - Consider both file names and content -**~~project tracker:** +**project tracker:** - Use available task search or typeahead tools - Map to task text search, assignee filters, date filters, project filters -**~~CRM:** +**CRM:** - Use available CRM query tools - Search across Account, Contact, Opportunity, and other relevant objects -**~~knowledge base:** +**knowledge base:** - Use semantic search for conceptual questions - Use keyword search for exact matches @@ -90,7 +90,7 @@ For each source: ### 5. Rank and Deduplicate Results **Deduplication:** -- Identify the same information appearing across sources (e.g., a decision discussed in ~~chat AND confirmed via email) +- Identify the same information appearing across sources (e.g., a decision discussed in chat AND confirmed via email) - Group related results together rather than showing duplicates - Prefer the most authoritative or complete version @@ -109,9 +109,9 @@ Format the response as a synthesized answer, not a raw list of results: [Direct answer to the question] Sources: -- [Source 1: brief description] (~~chat, #channel, date) -- [Source 2: brief description] (~~email, from person, date) -- [Source 3: brief description] (~~cloud storage, doc name, last modified) +- [Source 1: brief description] (chat, #channel, date) +- [Source 2: brief description] (email, from person, date) +- [Source 3: brief description] (cloud storage, doc name, last modified) ``` **For exploratory queries ("what do we know about X"):** @@ -119,9 +119,9 @@ Sources: [Synthesized summary combining information from all sources] Found across: -- ~~chat: X relevant messages in Y channels -- ~~email: X relevant threads -- ~~cloud storage: X related documents +- chat: X relevant messages in Y channels +- email: X relevant threads +- cloud storage: X related documents - [Other sources as applicable] Key sources: diff --git a/finance/CONNECTORS.md b/finance/CONNECTORS.md index 936fd13..7c37410 100644 --- a/finance/CONNECTORS.md +++ b/finance/CONNECTORS.md @@ -10,11 +10,11 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Data warehouse | `~~data warehouse` | Snowflake\*, Databricks\*, BigQuery | Redshift, PostgreSQL | -| Email | `~~email` | Microsoft 365 | — | -| Office suite | `~~office suite` | Microsoft 365 | — | -| Chat | `~~chat` | Slack | Microsoft Teams | -| ERP / Accounting | `~~erp` | — (no supported MCP servers yet) | NetSuite, SAP, QuickBooks, Xero | -| Analytics / BI | `~~analytics` | — (no supported MCP servers yet) | Tableau, Looker, Power BI | +| Data warehouse | `data warehouse` | Snowflake\*, Databricks\*, BigQuery | Redshift, PostgreSQL | +| Email | `email` | Microsoft 365 | — | +| Office suite | `office suite` | Microsoft 365 | — | +| Chat | `chat` | Slack | Microsoft Teams | +| ERP / Accounting | `erp` | — (no supported MCP servers yet) | NetSuite, SAP, QuickBooks, Xero | +| Analytics / BI | `analytics` | — (no supported MCP servers yet) | Tableau, Looker, Power BI | \* Placeholder — MCP URL not yet configured diff --git a/legal/CONNECTORS.md b/legal/CONNECTORS.md index 8aaa878..64012e2 100644 --- a/legal/CONNECTORS.md +++ b/legal/CONNECTORS.md @@ -10,10 +10,10 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Chat | `~~chat` | Slack | Microsoft Teams | -| Cloud storage | `~~cloud storage` | Box, Egnyte | Dropbox, SharePoint, Google Drive | -| CLM | `~~CLM` | — | Ironclad, Agiloft | -| CRM | `~~CRM` | — | Salesforce, HubSpot | -| E-signature | `~~e-signature` | — | DocuSign, Adobe Sign | -| Office suite | `~~office suite` | Microsoft 365 | Google Workspace | -| Project tracker | `~~project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | +| Chat | `chat` | Slack | Microsoft Teams | +| Cloud storage | `cloud storage` | Box, Egnyte | Dropbox, SharePoint, Google Drive | +| CLM | `CLM` | — | Ironclad, Agiloft | +| CRM | `CRM` | — | Salesforce, HubSpot | +| E-signature | `e-signature` | — | DocuSign, Adobe Sign | +| Office suite | `office suite` | Microsoft 365 | Google Workspace | +| Project tracker | `project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | diff --git a/marketing/CONNECTORS.md b/marketing/CONNECTORS.md index 5013d8b..c2eea75 100644 --- a/marketing/CONNECTORS.md +++ b/marketing/CONNECTORS.md @@ -10,10 +10,10 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Chat | `~~chat` | Slack | Microsoft Teams | -| Design | `~~design` | Canva, Figma | Adobe Creative Cloud | -| Marketing automation | `~~marketing automation` | HubSpot | Marketo, Pardot, Mailchimp | -| Product analytics | `~~product analytics` | Amplitude | Mixpanel, Google Analytics | -| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru | -| SEO | `~~SEO` | Ahrefs, Similarweb | Semrush, Moz | -| Email marketing | `~~email marketing` | Klaviyo | Mailchimp, Brevo, Customer.io | +| Chat | `chat` | Slack | Microsoft Teams | +| Design | `design` | Canva, Figma | Adobe Creative Cloud | +| Marketing automation | `marketing automation` | HubSpot | Marketo, Pardot, Mailchimp | +| Product analytics | `product analytics` | Amplitude | Mixpanel, Google Analytics | +| Knowledge base | `knowledge base` | Notion | Confluence, Guru | +| SEO | `SEO` | Ahrefs, Similarweb | Semrush, Moz | +| Email marketing | `email marketing` | Klaviyo | Mailchimp, Brevo, Customer.io | diff --git a/marketing/commands/brand-review.md b/marketing/commands/brand-review.md index 436ee1a..37f7b7f 100644 --- a/marketing/commands/brand-review.md +++ b/marketing/commands/brand-review.md @@ -17,7 +17,7 @@ User runs `/brand-review` or asks to review, check, or audit content against bra 1. **Content to review** — accept content in any of these forms: - Pasted directly into the conversation - - A file path or ~~knowledge base reference (e.g. Notion page, shared doc) + - A file path or knowledge base reference (e.g. Notion page, shared doc) - A URL to a published page - Multiple pieces for batch review diff --git a/marketing/commands/campaign-plan.md b/marketing/commands/campaign-plan.md index 36acebb..497f7f0 100644 --- a/marketing/commands/campaign-plan.md +++ b/marketing/commands/campaign-plan.md @@ -93,7 +93,7 @@ Define KPIs aligned to the campaign objective: - How each metric will be tracked - Reporting cadence recommendation -If ~~product analytics is connected, reference any available historical performance benchmarks to inform targets. +If product analytics is connected, reference any available historical performance benchmarks to inform targets. ### 8. Budget Allocation (if budget provided) - Breakdown by channel or activity diff --git a/marketing/commands/email-sequence.md b/marketing/commands/email-sequence.md index 47ccbb8..6611ff1 100644 --- a/marketing/commands/email-sequence.md +++ b/marketing/commands/email-sequence.md @@ -144,7 +144,7 @@ Introduction and what they will learn -- Lesson 1: foundational concept -- Lesso ## Tool Integration -### If ~~email marketing is connected (e.g., Klaviyo, Mailchimp, Customer.io) +### If email marketing is connected (e.g., Klaviyo, Mailchimp, Customer.io) - Reference how to set up the sequence as a flow or automation in the platform - Note any platform-specific features to use (e.g., smart send time, conditional splits, A/B testing) - Map the branching logic to the platform's visual flow builder concepts diff --git a/marketing/commands/performance-report.md b/marketing/commands/performance-report.md index 86d53be..ae1188b 100644 --- a/marketing/commands/performance-report.md +++ b/marketing/commands/performance-report.md @@ -25,7 +25,7 @@ User runs `/performance-report` or asks for a marketing report, performance anal 2. **Time period** — the reporting window (last week, last month, last quarter, custom date range) 3. **Data source**: - - If ~~product analytics is connected: pull performance data automatically + - If product analytics is connected: pull performance data automatically - If not connected: ask the user to provide metrics. Prompt with: "Please paste or share your performance data. I can work with spreadsheets, CSV data, dashboard screenshots described in text, or just the key numbers." 4. **Comparison period** (optional) — prior period or year-over-year for trend context diff --git a/marketing/commands/seo-audit.md b/marketing/commands/seo-audit.md index bb9cfca..40b63bd 100644 --- a/marketing/commands/seo-audit.md +++ b/marketing/commands/seo-audit.md @@ -38,11 +38,11 @@ Gather the following from the user. If not provided, ask before proceeding: Research keywords related to the user's domain, topic, or target keywords. -**If ~~SEO tools are connected:** +**If SEO tools are connected:** - Pull keyword data, search volume, keyword difficulty scores, and ranking positions automatically - Identify keywords the site currently ranks for and where it's gaining or losing ground -**If ~~product analytics are connected:** +**If product analytics are connected:** - Cross-reference keyword targets with actual organic traffic data to validate which keywords are driving visits and conversions **If tools are not connected:** diff --git a/product-management/CONNECTORS.md b/product-management/CONNECTORS.md index f1905b7..aac0296 100644 --- a/product-management/CONNECTORS.md +++ b/product-management/CONNECTORS.md @@ -10,10 +10,10 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Chat | `~~chat` | Slack | Microsoft Teams | -| Project tracker | `~~project tracker` | Linear, Asana, monday.com, ClickUp, Atlassian (Jira/Confluence) | Shortcut, Basecamp | -| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru, Coda | -| Design | `~~design` | Figma | Sketch, Adobe XD | -| Product analytics | `~~product analytics` | Amplitude, Pendo | Mixpanel, Heap, FullStory | -| User feedback | `~~user feedback` | Intercom | Productboard, Canny, UserVoice | -| Meeting transcription | `~~meeting transcription` | Fireflies | Gong, Dovetail, Otter.ai | +| Chat | `chat` | Slack | Microsoft Teams | +| Project tracker | `project tracker` | Linear, Asana, monday.com, ClickUp, Atlassian (Jira/Confluence) | Shortcut, Basecamp | +| Knowledge base | `knowledge base` | Notion | Confluence, Guru, Coda | +| Design | `design` | Figma | Sketch, Adobe XD | +| Product analytics | `product analytics` | Amplitude, Pendo | Mixpanel, Heap, FullStory | +| User feedback | `user feedback` | Intercom | Productboard, Canny, UserVoice | +| Meeting transcription | `meeting transcription` | Fireflies | Gong, Dovetail, Otter.ai | diff --git a/product-management/commands/competitive-brief.md b/product-management/commands/competitive-brief.md index 1c71238..88d6ad3 100644 --- a/product-management/commands/competitive-brief.md +++ b/product-management/commands/competitive-brief.md @@ -29,12 +29,12 @@ Ask the user: - Job postings (signal of strategic direction) - Social media and community discussions -If **~~knowledge base** is connected: +If **knowledge base** is connected: - Search for existing competitive analysis documents - Find win/loss reports or sales battle cards - Pull prior competitive research -If **~~chat** is connected: +If **chat** is connected: - Search for competitive mentions in sales or product channels - Find recent deal feedback involving competitors diff --git a/product-management/commands/metrics-review.md b/product-management/commands/metrics-review.md index 6ac0cf0..778fab8 100644 --- a/product-management/commands/metrics-review.md +++ b/product-management/commands/metrics-review.md @@ -13,7 +13,7 @@ Review and analyze product metrics, identify trends, and surface actionable insi ### 1. Gather Metrics Data -If **~~product analytics** is connected: +If **product analytics** is connected: - Pull key product metrics for the relevant time period - Get comparison data (previous period, same period last year, targets) - Pull segment breakdowns if available diff --git a/product-management/commands/roadmap-update.md b/product-management/commands/roadmap-update.md index 05d9b25..78b94dd 100644 --- a/product-management/commands/roadmap-update.md +++ b/product-management/commands/roadmap-update.md @@ -13,7 +13,7 @@ Update, create, or reprioritize a product roadmap. ### 1. Understand Current State -If **~~project tracker** is connected: +If **project tracker** is connected: - Pull current roadmap items with their statuses, assignees, and dates - Identify items that are overdue, at risk, or recently completed - Surface any items without clear owners or dates diff --git a/product-management/commands/stakeholder-update.md b/product-management/commands/stakeholder-update.md index 41486d1..73f32d0 100644 --- a/product-management/commands/stakeholder-update.md +++ b/product-management/commands/stakeholder-update.md @@ -30,22 +30,22 @@ Ask who the update is for: ### 3. Pull Context from Connected Tools -If **~~project tracker** is connected: +If **project tracker** is connected: - Pull status of roadmap items and milestones - Identify completed items since last update - Surface items that are at risk or blocked - Pull sprint or iteration progress -If **~~chat** is connected: +If **chat** is connected: - Search for relevant team discussions and decisions - Find blockers or issues raised in channels - Identify key decisions made asynchronously -If **~~meeting transcription** is connected: +If **meeting transcription** is connected: - Pull recent meeting notes and discussion summaries - Find decisions and action items from relevant meetings -If **~~knowledge base** is connected: +If **knowledge base** is connected: - Search for recent meeting notes - Find decision documents or design reviews @@ -74,7 +74,7 @@ Structure the update for the target audience. See the **stakeholder-comms** skil After generating the update: - Ask if the user wants to adjust tone, detail level, or emphasis - Offer to format for the delivery channel (email, chat post, doc, slides) -- If **~~chat** is connected, offer to draft the message for sending +- If **chat** is connected, offer to draft the message for sending ## Output Format diff --git a/product-management/commands/synthesize-research.md b/product-management/commands/synthesize-research.md index 5a3d70b..eb28b88 100644 --- a/product-management/commands/synthesize-research.md +++ b/product-management/commands/synthesize-research.md @@ -16,10 +16,10 @@ Synthesize user research from multiple sources into structured insights and reco Accept research from any combination of: - **Pasted text**: Interview notes, transcripts, survey responses, feedback - **Uploaded files**: Research documents, spreadsheets, recordings summaries -- **~~knowledge base** (if connected): Search for research documents, interview notes, survey results -- **~~user feedback** (if connected): Pull recent support tickets, feature requests, bug reports -- **~~product analytics** (if connected): Pull usage data, funnel metrics, behavioral data -- **~~meeting transcription** (if connected): Pull interview recordings, meeting summaries, and discussion notes +- **knowledge base** (if connected): Search for research documents, interview notes, survey results +- **user feedback** (if connected): Pull recent support tickets, feature requests, bug reports +- **product analytics** (if connected): Pull usage data, funnel metrics, behavioral data +- **meeting transcription** (if connected): Pull interview recordings, meeting summaries, and discussion notes Ask the user what they have: - What type of research? (interviews, surveys, usability tests, analytics, support tickets, sales call notes) diff --git a/product-management/commands/write-spec.md b/product-management/commands/write-spec.md index 13ab22c..1c18be5 100644 --- a/product-management/commands/write-spec.md +++ b/product-management/commands/write-spec.md @@ -31,17 +31,17 @@ Ask the user for the following. Be conversational — do not dump all questions ### 3. Pull Context from Connected Tools -If **~~project tracker** is connected: +If **project tracker** is connected: - Search for related tickets, epics, or features - Pull in any existing requirements or acceptance criteria - Identify dependencies on other work items -If **~~knowledge base** is connected: +If **knowledge base** is connected: - Search for related research documents, prior specs, or design docs - Pull in relevant user research findings - Find related meeting notes or decision records -If **~~design** is connected: +If **design** is connected: - Pull related mockups, wireframes, or design explorations - Search for design system components relevant to the feature diff --git a/productivity/CONNECTORS.md b/productivity/CONNECTORS.md index 537f509..1070de1 100644 --- a/productivity/CONNECTORS.md +++ b/productivity/CONNECTORS.md @@ -10,9 +10,9 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Chat | `~~chat` | Slack | Microsoft Teams, Discord | -| Email | `~~email` | Microsoft 365 | — | -| Calendar | `~~calendar` | Microsoft 365 | — | -| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru, Coda | -| Project tracker | `~~project tracker` | Asana, Linear, Atlassian (Jira/Confluence), monday.com, ClickUp | Shortcut, Basecamp, Wrike | -| Office suite | `~~office suite` | Microsoft 365 | — | +| Chat | `chat` | Slack | Microsoft Teams, Discord | +| Email | `email` | Microsoft 365 | — | +| Calendar | `calendar` | Microsoft 365 | — | +| Knowledge base | `knowledge base` | Notion | Confluence, Guru, Coda | +| Project tracker | `project tracker` | Asana, Linear, Atlassian (Jira/Confluence), monday.com, ClickUp | Shortcut, Basecamp, Wrike | +| Office suite | `office suite` | Microsoft 365 | — | diff --git a/sales/CONNECTORS.md b/sales/CONNECTORS.md index e1acb62..55daff8 100644 --- a/sales/CONNECTORS.md +++ b/sales/CONNECTORS.md @@ -10,11 +10,11 @@ Plugins are **tool-agnostic** — they describe workflows in terms of categories | Category | Placeholder | Included servers | Other options | |----------|-------------|-----------------|---------------| -| Calendar | `~~calendar` | Microsoft 365 | Google Calendar | -| Chat | `~~chat` | Slack | Microsoft Teams | -| CRM | `~~CRM` | HubSpot, Close | Salesforce, Pipedrive, Copper | -| Data enrichment | `~~data enrichment` | Clay, ZoomInfo | Apollo, Clearbit, Lusha | -| Email | `~~email` | Microsoft 365 | Gmail | -| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru | -| Meeting transcription | `~~conversation intelligence` | Fireflies | Gong, Chorus, Otter.ai | -| Project tracker | `~~project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | +| Calendar | `calendar` | Microsoft 365 | Google Calendar | +| Chat | `chat` | Slack | Microsoft Teams | +| CRM | `CRM` | HubSpot, Close | Salesforce, Pipedrive, Copper | +| Data enrichment | `data enrichment` | Clay, ZoomInfo | Apollo, Clearbit, Lusha | +| Email | `email` | Microsoft 365 | Gmail | +| Knowledge base | `knowledge base` | Notion | Confluence, Guru | +| Meeting transcription | `conversation intelligence` | Fireflies | Gong, Chorus, Otter.ai | +| Project tracker | `project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | diff --git a/sales/commands/call-summary.md b/sales/commands/call-summary.md index 2d39855..b604872 100644 --- a/sales/commands/call-summary.md +++ b/sales/commands/call-summary.md @@ -152,7 +152,7 @@ Here's what we discussed: - Update next steps field **Email connected:** -- I'll offer to create a draft in ~~email +- I'll offer to create a draft in email - Or send directly if you approve --- From b3bac5549432792b4ef8bf5cec34e6b4c8a09c6b Mon Sep 17 00:00:00 2001 From: Mohit gauniyal Date: Thu, 5 Feb 2026 13:42:33 +0530 Subject: [PATCH 2/2] Add contribution infrastructure - Add CONTRIBUTING.md with comprehensive guidelines - Add GitHub issue templates (bug, feature, plugin submission) - Add pull request template - Add CI/CD validation workflow --- .github/ISSUE_TEMPLATE/bug_report.md | 50 +++ .github/ISSUE_TEMPLATE/feature_request.md | 75 ++++ .github/ISSUE_TEMPLATE/plugin_submission.md | 120 ++++++ .github/PULL_REQUEST_TEMPLATE.md | 99 +++++ .github/workflows/validate.yml | 148 +++++++ CONTRIBUTING.md | 440 ++++++++++++++++++++ 6 files changed, 932 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/plugin_submission.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/validate.yml create mode 100644 CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..2744307 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,50 @@ +--- +name: Bug Report +about: Report a bug or issue with a plugin +title: '[BUG] ' +labels: bug +assignees: '' +--- + +## Bug Description + +A clear and concise description of what the bug is. + +## Plugin Information + +- **Plugin name**: (e.g., sales, data, productivity) +- **Plugin version**: (check plugin.json) +- **Environment**: Claude Code / Claude Cowork + +## Steps to Reproduce + +1. Go to '...' +2. Run command '/...' +3. Enter input '...' +4. See error + +## Expected Behavior + +What you expected to happen. + +## Actual Behavior + +What actually happened. + +## Screenshots/Logs + +If applicable, add screenshots or error messages to help explain the problem. + +``` +Paste any error messages or logs here +``` + +## Additional Context + +- MCP connectors enabled: (list any) +- Related skills/commands: (list any) +- Any other context about the problem + +## Possible Solution + +If you have suggestions on how to fix the bug, please share them here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..170ae48 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,75 @@ +--- +name: Feature Request +about: Suggest a new feature or enhancement +title: '[FEATURE] ' +labels: enhancement +assignees: '' +--- + +## Feature Description + +A clear and concise description of the feature you'd like to see. + +## Problem It Solves + +Describe the problem or pain point this feature would address. + +**Example scenario:** +"As a [role], I want to [do something] so that [benefit]." + +## Proposed Solution + +Describe how you envision this feature working. + +**Example workflow:** +1. User does X +2. Claude responds with Y +3. Result is Z + +## Which Plugin? + +Which plugin should this feature be added to? Or is this a new plugin? + +- [ ] Existing plugin: _______________ +- [ ] New plugin needed + +## Command or Skill? + +Should this be: +- [ ] A slash command (user invokes explicitly) +- [ ] A skill (triggers automatically) +- [ ] Both +- [ ] Not sure + +## Required Connectors + +What external tools/APIs would this need? + +- List connectors: _______________ +- Or: [ ] Works standalone + +## Alternatives Considered + +Describe alternative solutions or features you've considered. + +## Examples + +Provide examples of: +- How a user would invoke this +- What input they'd provide +- What output they'd receive + +``` +Example usage here +``` + +## Additional Context + +Add any other context, screenshots, or references about the feature request. + +## Would You Contribute? + +- [ ] I'd like to help implement this +- [ ] I can provide testing/feedback +- [ ] I can help with documentation +- [ ] Just suggesting the idea diff --git a/.github/ISSUE_TEMPLATE/plugin_submission.md b/.github/ISSUE_TEMPLATE/plugin_submission.md new file mode 100644 index 0000000..02f2eb8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/plugin_submission.md @@ -0,0 +1,120 @@ +--- +name: Plugin Submission +about: Submit a new plugin to the marketplace +title: '[PLUGIN] ' +labels: new-plugin +assignees: '' +--- + +## Plugin Information + +**Plugin name**: +**Version**: +**Author**: +**License**: Apache 2.0 (required) + +## Description + +Provide a clear, concise description of what this plugin does and who it's for. + +**Target audience**: (e.g., "Data analysts", "Sales teams", "Content creators") + +**Main use cases**: +1. +2. +3. + +## Plugin Components + +**Commands** (slash commands): +- [ ] `/plugin:command-1` - Description +- [ ] `/plugin:command-2` - Description + +**Skills** (auto-triggered): +- [ ] skill-1 - Description, triggers when... +- [ ] skill-2 - Description, triggers when... + +## Connectors + +**Required connectors** (plugin won't work without): +- None / List them + +**Optional connectors** (enhance functionality): +- Connector 1 - Adds: _______________ +- Connector 2 - Adds: _______________ + +**MCP servers included in `.mcp.json`**: +- [ ] Listed and tested + +## Testing + +I have tested this plugin: +- [ ] In Claude Code +- [ ] In Claude Cowork +- [ ] With connectors enabled +- [ ] Without connectors (standalone mode) +- [ ] All commands work as documented +- [ ] All skills trigger correctly + +## Documentation + +- [ ] README.md with installation and usage +- [ ] CONNECTORS.md (if using connectors) +- [ ] All commands have usage examples +- [ ] All skills have clear trigger descriptions +- [ ] plugin.json is complete and valid + +## Code Quality + +- [ ] All JSON files are valid +- [ ] All markdown renders correctly +- [ ] No sensitive data in files +- [ ] Follows naming conventions +- [ ] Follows style guide in CONTRIBUTING.md + +## Examples + +Provide examples of the plugin in action: + +**Example 1: [Scenario]** +``` +User: [What they type] +Claude: [What happens] +Result: [What they get] +``` + +**Example 2: [Scenario]** +``` +[Another example] +``` + +## Why Add This Plugin? + +Explain why this plugin would be valuable to the marketplace: +- What gap does it fill? +- Who requested it? +- What makes it different from existing plugins? + +## Related Plugins + +Is this similar to any existing plugins? How is it different? + +## Maintenance + +- [ ] I commit to maintaining this plugin +- [ ] I will respond to issues and questions +- [ ] I will keep dependencies updated + +## Additional Context + +Any other information about the plugin submission. + +## Checklist + +Before submitting: +- [ ] Plugin structure matches guidelines +- [ ] All required files present +- [ ] Documentation is complete +- [ ] Tested thoroughly +- [ ] No placeholder TODOs in files +- [ ] Ready for review diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..73ebf27 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,99 @@ +## Description + + + +## Type of Change + + + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Documentation update +- [ ] New plugin +- [ ] Plugin enhancement + +## Related Issues + + + +Fixes #(issue number) +Relates to #(issue number) + +## Changes Made + + + +- +- +- + +## Plugin(s) Affected + + + +- [ ] All plugins +- [ ] Specific plugins: _______________ + +## Testing + + + +**Tested in:** +- [ ] Claude Code +- [ ] Claude Cowork +- [ ] Both + +**Test scenarios:** +1. +2. +3. + +**Test results:** +- [ ] All tests passed +- [ ] Manual testing completed +- [ ] Edge cases considered + +## Documentation + +- [ ] README.md updated (if needed) +- [ ] CONNECTORS.md updated (if needed) +- [ ] Command documentation updated (if needed) +- [ ] Skill documentation updated (if needed) +- [ ] Examples provided + +## Code Quality + +- [ ] JSON files are valid +- [ ] Markdown renders correctly +- [ ] No trailing whitespace +- [ ] Follows style guidelines +- [ ] No sensitive data included +- [ ] Commit messages are clear + +## Breaking Changes + + + +- [ ] No breaking changes +- [ ] Breaking changes described below: + +## Screenshots + + + +## Checklist + + + +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my code +- [ ] I have commented my code where needed +- [ ] I have updated the documentation accordingly +- [ ] My changes generate no new warnings +- [ ] I have tested my changes thoroughly +- [ ] Any dependent changes have been merged + +## Additional Notes + + diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml new file mode 100644 index 0000000..3571315 --- /dev/null +++ b/.github/workflows/validate.yml @@ -0,0 +1,148 @@ +name: Validate Plugin Files + +on: + pull_request: + branches: [ main ] + push: + branches: [ main ] + +jobs: + validate-json: + name: Validate JSON Files + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Validate all JSON files + run: | + echo "Validating JSON files..." + find . -name "*.json" -type f | while read file; do + echo "Checking $file" + python3 -m json.tool "$file" > /dev/null || exit 1 + done + echo "✓ All JSON files are valid" + + - name: Validate plugin.json schema + run: | + echo "Validating plugin.json files..." + find . -name "plugin.json" -type f | while read file; do + echo "Checking $file" + # Check required fields exist + python3 << EOF +import json +import sys + +with open("$file") as f: + data = json.load(f) + +required = ["name", "version", "description", "author"] +missing = [field for field in required if field not in data] + +if missing: + print(f"Missing required fields in $file: {missing}") + sys.exit(1) + +# Validate name format (lowercase, hyphens only) +if not data["name"].replace("-", "").islower(): + print(f"Plugin name must be lowercase with hyphens: {data['name']}") + sys.exit(1) + +# Validate version format (semantic versioning) +version = data["version"] +parts = version.split(".") +if len(parts) != 3 or not all(p.isdigit() for p in parts): + print(f"Version must be semantic (e.g., 1.0.0): {version}") + sys.exit(1) + +print(f"✓ $file is valid") +EOF + done + echo "✓ All plugin.json files are valid" + + validate-markdown: + name: Validate Markdown Files + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Check for malformed strikethrough + run: | + echo "Checking for malformed strikethrough syntax..." + if grep -r "~~[^~]" --include="*.md" .; then + echo "❌ Found malformed strikethrough syntax (~~text without closing ~~)" + echo "Please remove strikethrough or fix formatting" + exit 1 + fi + echo "✓ No malformed strikethrough found" + + - name: Check for trailing whitespace + run: | + echo "Checking for trailing whitespace..." + if grep -r " $" --include="*.md" .; then + echo "❌ Found trailing whitespace in markdown files" + exit 1 + fi + echo "✓ No trailing whitespace found" + + validate-structure: + name: Validate Plugin Structure + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Check required files + run: | + echo "Validating plugin structure..." + for plugin_dir in */; do + # Skip if not a plugin directory + if [ ! -f "$plugin_dir/.claude-plugin/plugin.json" ]; then + continue + fi + + plugin_name=$(basename "$plugin_dir") + echo "Checking $plugin_name..." + + # Check required files + required_files=( + ".claude-plugin/plugin.json" + "README.md" + "LICENSE" + ) + + for file in "${required_files[@]}"; do + if [ ! -f "$plugin_dir/$file" ]; then + echo "❌ Missing required file: $plugin_dir/$file" + exit 1 + fi + done + + echo "✓ $plugin_name structure is valid" + done + echo "✓ All plugin structures are valid" + + lint-markdown: + name: Lint Markdown + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Markdown Lint + uses: DavidAnson/markdownlint-cli2-action@v13 + with: + globs: '**/*.md' + config: | + { + "default": true, + "MD013": false, + "MD033": false, + "MD041": false + } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..abaf22c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,440 @@ +# Contributing to Knowledge Work Plugins + +Thank you for your interest in contributing to Knowledge Work Plugins! This guide will help you get started. + +## Table of Contents + +- [Code of Conduct](#code-of-conduct) +- [How Can I Contribute?](#how-can-i-contribute) +- [Getting Started](#getting-started) +- [Plugin Structure](#plugin-structure) +- [Development Guidelines](#development-guidelines) +- [Submitting Changes](#submitting-changes) +- [Style Guidelines](#style-guidelines) + +## Code of Conduct + +This project follows the [Anthropic Community Guidelines](https://www.anthropic.com/community-guidelines). By participating, you are expected to uphold this code. + +## How Can I Contribute? + +### Reporting Bugs + +Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include: + +- **Clear title** describing the issue +- **Detailed description** of the problem +- **Steps to reproduce** the behavior +- **Expected vs actual behavior** +- **Plugin name and version** +- **Claude Code/Cowork version** +- **Screenshots** if applicable + +### Suggesting Enhancements + +Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion: + +- **Use a clear title** for the issue +- **Provide detailed description** of the proposed enhancement +- **Explain why this would be useful** to most users +- **List examples** of how it would work + +### Contributing New Plugins + +We welcome new plugins that add value to specific roles or workflows: + +1. Review existing plugins for inspiration +2. Ensure your plugin serves a clear use case +3. Follow the plugin structure guidelines below +4. Include comprehensive documentation +5. Test thoroughly before submitting + +### Contributing to Existing Plugins + +Improvements to existing plugins are always welcome: + +- Bug fixes +- Documentation improvements +- New skills or commands +- Better examples +- Connector additions + +## Getting Started + +### Prerequisites + +- Git installed +- [Claude Code](https://claude.com/product/claude-code) or [Claude Cowork](https://claude.com/product/cowork) +- Text editor (VS Code recommended) +- Basic knowledge of Markdown and JSON + +### Fork and Clone + +1. Fork the repository on GitHub +2. Clone your fork locally: + ```bash + git clone https://github.com/YOUR-USERNAME/knowledge-work-plugins.git + cd knowledge-work-plugins + ``` + +3. Add the upstream repository: + ```bash + git remote add upstream https://github.com/anthropics/knowledge-work-plugins.git + ``` + +### Testing Your Changes + +#### With Claude Code + +```bash +# Install your local plugin +claude plugin add ./path/to/your-plugin + +# Test commands +/your-plugin:command-name + +# Verify skills activate correctly +``` + +#### With Claude Cowork + +1. Navigate to Settings → Plugins +2. Click "Load Local Plugin" +3. Select your plugin directory +4. Test functionality + +## Plugin Structure + +Every plugin must follow this structure: + +``` +plugin-name/ +├── .claude-plugin/ +│ └── plugin.json # Required: Plugin metadata +├── .mcp.json # Optional: MCP server connections +├── commands/ # Optional: Slash commands +│ └── command-name.md +├── skills/ # Optional: Auto-triggered skills +│ └── skill-name/ +│ └── SKILL.md +├── README.md # Required: Plugin documentation +├── CONNECTORS.md # Recommended: Tool placeholder guide +└── LICENSE # Required: Apache 2.0 +``` + +### Required Files + +#### plugin.json + +```json +{ + "name": "your-plugin-name", + "version": "1.0.0", + "description": "Clear, concise description of what this plugin does", + "author": { + "name": "Your Name" + } +} +``` + +**Requirements**: +- `name`: lowercase, hyphen-separated (e.g., "data-analysis") +- `version`: Semantic versioning (e.g., "1.0.0") +- `description`: 1-2 sentences, under 200 characters +- `author.name`: Your name or organization + +#### README.md + +Must include: +- Plugin title and tagline +- Installation instructions +- What it does (with/without connectors) +- Commands table +- Skills table +- Example workflows +- Connector information + +See [sales/README.md](./sales/README.md) for a great example. + +#### LICENSE + +All plugins must use Apache 2.0 license. Copy from existing plugin. + +### Optional Files + +#### Commands + +Commands are slash commands users invoke explicitly. + +**File**: `commands/command-name.md` + +**Format**: +```markdown +--- +description: Brief description of what this command does +argument-hint: "" +--- + +# /command-name + +> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../CONNECTORS.md). + +[Detailed documentation...] + +## Usage + +``` +/command-name [arguments] +``` + +## How It Works + +[Explanation with diagrams if helpful] + +## What I Need From You + +[Required inputs] + +## Output + +[Expected output format] +``` + +#### Skills + +Skills are automatically triggered based on context. + +**File**: `skills/skill-name/SKILL.md` + +**Format**: +```markdown +--- +name: skill-name +description: When this skill triggers and what it does. Include trigger phrases. +--- + +# Skill Name + +[Clear explanation of what this skill does] + +## How It Works + +[Flow diagram showing standalone vs connected modes] + +## Getting Started + +[What the user needs to provide] + +## Execution Flow + +[Step-by-step workflow] + +## Output Format + +[Expected output structure] + +## Related Skills + +[Links to related skills] +``` + +#### .mcp.json + +Defines MCP server connections. + +```json +{ + "mcpServers": { + "server-name": { + "type": "http", + "url": "https://example.com/mcp" + } + } +} +``` + +#### CONNECTORS.md + +Explains the `**category**` placeholder system. + +See [sales/CONNECTORS.md](./sales/CONNECTORS.md) for template. + +## Development Guidelines + +### Writing Skills + +1. **Make them work standalone first** + - Don't require connectors + - Ask users for needed information + - Provide graceful degradation + +2. **Supercharge with connectors** + - Show "standalone vs supercharged" modes + - Use `**category**` placeholders (e.g., `**CRM**`, `**email**`) + - Document which connectors add what value + +3. **Be specific about execution** + - Provide step-by-step flows + - Show example queries to connectors + - Include error handling guidance + +4. **Focus on outcomes** + - What does the user get? + - What format? + - What can they do with it? + +### Writing Commands + +1. **Clear purpose** + - One command = one clear action + - Descriptive name (e.g., `/sales:call-prep` not `/sales:prep`) + +2. **Flexible input** + - Accept various input formats + - Don't force rigid structure + - Provide examples + +3. **Rich output** + - Structured, actionable results + - Include next steps + - Reference related commands + +### Connector Integration + +1. **Use category placeholders** + - `**CRM**` not "Salesforce" + - `**email**` not "Gmail" + - `**chat**` not "Slack" + +2. **Document in CONNECTORS.md** + - What category means + - Example servers + - What data they provide + +3. **Graceful fallbacks** + - Always work without connectors + - Show what's missing + - Suggest what to connect + +### Documentation + +1. **Write for humans** + - Clear, concise language + - Avoid jargon + - Include examples + +2. **Show, don't tell** + - Use diagrams and tables + - Provide example outputs + - Include workflow illustrations + +3. **Keep it practical** + - Real-world scenarios + - Common use cases + - Actual problems solved + +## Submitting Changes + +### Pull Request Process + +1. **Create a feature branch** + ```bash + git checkout -b feature/your-feature-name + ``` + +2. **Make your changes** + - Follow style guidelines + - Update documentation + - Test thoroughly + +3. **Commit with clear messages** + ```bash + git commit -m "Add feature: clear description" + ``` + + Good commit messages: + - "Fix markdown formatting in sales plugin" + - "Add account research skill to sales plugin" + - "Update README with connector examples" + + Bad commit messages: + - "fix stuff" + - "update" + - "wip" + +4. **Push to your fork** + ```bash + git push origin feature/your-feature-name + ``` + +5. **Create Pull Request** + - Use the PR template + - Link related issues + - Describe what changed and why + - Include screenshots if UI-related + - Request review from maintainers + +### Pull Request Checklist + +Before submitting, ensure: + +- [ ] Code follows style guidelines +- [ ] All JSON files are valid +- [ ] All markdown files render correctly +- [ ] Documentation is updated +- [ ] Examples are included +- [ ] Plugin has been tested locally +- [ ] No sensitive data in commits +- [ ] Commit messages are clear +- [ ] PR description is complete + +## Style Guidelines + +### Markdown + +- Use ATX headers (`#`, `##`, not underlines) +- One blank line between sections +- Code blocks with language tags +- No trailing whitespace +- Lists use `-` for bullets, `1.` for numbers +- Tables use GitHub-flavored markdown +- Links use reference style for readability +- **Do not use strikethrough (`~~text~~`) for placeholders** +- Use bold for category placeholders: `**CRM**`, `**email**`, etc. + +### JSON + +- 2-space indentation +- No trailing commas +- Use double quotes +- Alphabetize keys when logical +- Validate before committing + +### File Naming + +- Lowercase with hyphens: `call-prep.md` +- Descriptive names: `competitive-intelligence.md` not `ci.md` +- Match command/skill name exactly + +### Command and Skill Names + +- Lowercase with hyphens +- Action-oriented: `write-query`, `call-prep` +- Clear and specific +- Namespace with plugin: `/sales:call-prep` + +## Questions? + +- **Documentation**: Check existing plugins for examples +- **Technical**: Open a GitHub issue +- **General**: Use GitHub Discussions +- **Private**: Email plugins@anthropic.com + +## Recognition + +Contributors will be recognized in: +- CHANGELOG.md (for significant contributions) +- GitHub contributors page +- Plugin author field (for new plugins) + +Thank you for contributing! 🎉