-
Notifications
You must be signed in to change notification settings - Fork 766
Add PR template for plugin submissions #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| ## Plugin submission checklist | ||
|
|
||
| ### Type of change | ||
| <!-- Check all that apply --> | ||
| - [ ] New plugin | ||
| - [ ] New command or skill added to existing plugin | ||
| - [ ] Bug fix or correction | ||
| - [ ] Documentation update | ||
| - [ ] Other (describe below) | ||
|
|
||
| --- | ||
|
|
||
| ### Plugin metadata (`plugin.json`) | ||
|
|
||
| - [ ] `name` matches the directory name exactly | ||
| - [ ] `version` follows semver (`1.0.0` for new plugins) | ||
| - [ ] `description` is one sentence, ≤160 characters, actionable (starts with a verb) | ||
| - [ ] `author.name` is set | ||
|
|
||
| --- | ||
|
|
||
| ### Required files | ||
|
|
||
| Every plugin directory must contain: | ||
|
|
||
| - [ ] `.claude-plugin/plugin.json` | ||
| - [ ] `.mcp.json` | ||
| - [ ] `README.md` — includes: purpose, target persona, commands table, skills table, example workflows, MCP integration section, file structure diagram | ||
| - [ ] `CONNECTORS.md` — documents `~~category` placeholders and lists supported MCP servers per category | ||
| - [ ] `LICENSE` — copied from an existing plugin (MIT) | ||
|
||
|
|
||
| --- | ||
|
|
||
| ### Commands (`commands/*.md`) | ||
|
|
||
| Each command file must have: | ||
|
|
||
| - [ ] A YAML frontmatter block with at least `name` and `description` | ||
|
||
| - [ ] Clear instructions on what inputs it accepts (file, URL, pasted text, etc.) | ||
| - [ ] Graceful degradation behaviour documented when MCP tools are unavailable | ||
| - [ ] No hardcoded organization names, credentials, or personal data | ||
|
|
||
| --- | ||
|
|
||
| ### Skills (`skills/*/SKILL.md`) | ||
|
|
||
| Each skill file must have: | ||
|
|
||
| - [ ] YAML frontmatter with `name` and `description` | ||
| - [ ] Clear scope: what the skill does and what it explicitly does NOT do | ||
| - [ ] Escalation triggers — situations where the skill should not generate output and must instead alert the user | ||
| - [ ] No hardcoded sensitive data | ||
|
|
||
| --- | ||
|
|
||
| ### Quality bar | ||
|
|
||
| - [ ] Tested end-to-end with at least one representative input (paste test output or describe scenario below) | ||
| - [ ] `~~category` placeholders used for all tool references — no hardcoded product names in logic | ||
| - [ ] Plugin degrades gracefully when no MCP tools are connected | ||
| - [ ] Sample files added to `samples/` if the plugin handles structured documents (contracts, reports, tickets, etc.) | ||
|
|
||
| --- | ||
|
|
||
| ### For jurisdiction- or regulation-specific plugins (legal, finance, compliance, HR) | ||
|
|
||
| - [ ] Statutory or regulatory citations are accurate and versioned (e.g. "nDSG Art. 25 (in force 1 Sep 2023)", "GDPR Art. 33") | ||
| - [ ] Mandatory escalation triggers are present for situations requiring licensed professionals | ||
| - [ ] A disclaimer is included in `README.md` stating the plugin does not provide legal/financial/medical advice | ||
| - [ ] Language coverage documented if the jurisdiction is multilingual | ||
|
|
||
| --- | ||
|
|
||
| ### Summary | ||
| <!-- One paragraph: what does this plugin do, who is it for, and what problem does it solve? --> | ||
|
|
||
| ### Test scenario | ||
| <!-- Describe or paste the input you tested with and the output you got --> | ||
|
|
||
| ### Screenshots or sample output | ||
| <!-- Optional but encouraged for new plugins --> | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,26 @@ | ||||||
| { | ||||||
| "name": "legal-swiss", | ||||||
| "version": "1.0.0", | ||||||
| "description": "Swiss-law legal productivity plugin for in-house legal teams. Contract review (OR Art. 100 mandatory law, URG, CISG), NDA triage (OR Art. 340–340c), nDSG/GDPR compliance (AV-Vereinbarung, breach notification, FDPIC/EDÖB), legal risk assessment (CHF exposure, VR liability), and templated responses. Covers German, French, Italian, and English. Calibrated to Swiss mandatory law, FDPIC supervisory framework, and Swiss court practice.", | ||||||
|
||||||
| "description": "Swiss-law legal productivity plugin for in-house legal teams. Contract review (OR Art. 100 mandatory law, URG, CISG), NDA triage (OR Art. 340–340c), nDSG/GDPR compliance (AV-Vereinbarung, breach notification, FDPIC/EDÖB), legal risk assessment (CHF exposure, VR liability), and templated responses. Covers German, French, Italian, and English. Calibrated to Swiss mandatory law, FDPIC supervisory framework, and Swiss court practice.", | |
| "description": "Automate Swiss legal workflows: contract review (OR Art. 100), NDA triage, nDSG/GDPR compliance, and risk assessment for in-house teams.", |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| { | ||
| "mcpServers": { | ||
| "slack": { | ||
| "type": "http", | ||
| "url": "https://mcp.slack.com/mcp" | ||
| }, | ||
| "box": { | ||
| "type": "http", | ||
| "url": "https://mcp.box.com" | ||
| }, | ||
| "egnyte": { | ||
| "type": "http", | ||
| "url": "https://mcp-server.egnyte.com/mcp" | ||
| }, | ||
| "atlassian": { | ||
| "type": "http", | ||
| "url": "https://mcp.atlassian.com/v1/mcp" | ||
| }, | ||
| "ms365": { | ||
| "type": "http", | ||
| "url": "https://microsoft365.mcp.claude.com/mcp" | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| # Connectors — Swiss Legal Plugin | ||
|
|
||
| ## How tool references work | ||
|
|
||
| Plugin files use `~~category` as a placeholder for whatever tool the user connects in that category. For example, `~~cloud storage` might mean SharePoint, Box, or any storage provider with an MCP server. | ||
|
|
||
| Plugins are **tool-agnostic** — they describe workflows in terms of categories rather than specific products. The `.mcp.json` pre-configures specific MCP servers, but any MCP server in that category works. | ||
|
|
||
| --- | ||
|
|
||
| ## Connectors for this plugin | ||
|
|
||
| | Category | Placeholder | Included servers | Other options | | ||
| |----------|-------------|-----------------|---------------| | ||
| | Chat | `~~chat` | Slack | Microsoft Teams | | ||
| | Cloud storage | `~~cloud storage` | SharePoint, Box | Egnyte, Dropbox, Google Drive | | ||
| | CLM | `~~CLM` | — | Ironclad, Agiloft, Juro | | ||
| | CRM | `~~CRM` | — | Salesforce, HubSpot | | ||
| | E-signature | `~~e-signature` | — | DocuSign, Adobe Sign, PrivaSphere (Swiss-qualified) | | ||
| | Office suite | `~~office suite` | Microsoft 365 | Google Workspace | | ||
| | Project tracker | `~~project tracker` | Atlassian (Jira/Confluence) | Linear, Asana | | ||
|
|
||
| --- | ||
|
|
||
| ## Swiss-specific integrations | ||
|
|
||
| These integrations are relevant for Swiss legal workflows and are referenced in plugin commands and skills. | ||
|
|
||
| | Service | Purpose | Access | | ||
| |---------|---------|--------| | ||
| | **zefix.ch** (Swiss Federal Commercial Registry) | Handelsregister entity lookup; Kollektivunterschrift / signing authority verification; UID number check | Public web; no MCP required — use WebFetch | | ||
| | **shab.ch** (Schweizerisches Handelsamtsblatt / SOGC) | Bundesblatt-equivalent official gazette; company announcements; liquidation notices | Public web; no MCP required | | ||
| | **edoeb.admin.ch** (FDPIC / EDÖB) | FDPIC guidance, adequacy list, complaint register | Public web; no MCP required | | ||
| | **finma.ch** | FINMA circulars, outsourcing register, supervised entity lookup | Public web; no MCP required | | ||
| | **bger.ch / bvger.ch** | BGer (Federal Supreme Court) and BVGer (Federal Administrative Court) decisions | Public web; no MCP required | | ||
| | **eur-lex.europa.eu** | GDPR text, EU adequacy decisions, SCCs (June 2021) | Public web; no MCP required | | ||
|
|
||
| --- | ||
|
|
||
| ## Connector usage in workflows | ||
|
|
||
| ### Contract review (`/review-contract`) | ||
| - `~~cloud storage`: Retrieve contract files and precedent library | ||
| - `~~CLM`: Look up existing agreements with the same counterparty | ||
| - `~~e-signature`: Route executed redlines for signature | ||
| - zefix.ch: Verify counterparty Handelsregister entry and signing authority (Kollektivunterschrift) | ||
|
|
||
| ### Vendor check (`/vendor-check`) | ||
| - `~~CLM`: Primary source for existing agreement status | ||
| - `~~cloud storage`: Retrieve agreement copies and certificates | ||
| - zefix.ch: UID/entity verification; current Handelsregister status | ||
|
|
||
| ### Daily brief (`/brief daily`) | ||
| - `~~office suite`: Calendar items requiring legal prep; incoming email flagged for legal | ||
| - `~~chat`: Overnight requests in legal Slack channels | ||
| - `~~project tracker`: Open matters, upcoming deadlines, DSR tracker | ||
| - shab.ch / bger.ch / edoeb.admin.ch: Regulatory monitoring (fetched directly) | ||
|
|
||
| ### Incident brief (`/brief incident`) | ||
| - `~~chat`: Incident channel context (Slack #security, #legal) | ||
| - `~~office suite`: Incident emails, board notification drafts | ||
| - edoeb.admin.ch: FDPIC notification portal reference | ||
| - finma.ch: FINMA outsourcing notification requirement (if FINMA-supervised) | ||
|
|
||
| ### DSR / Auskunftsbegehren response (`/respond dsr`) | ||
| - `~~project tracker`: DSR intake register; deadline tracking | ||
| - `~~office suite`: Response letter drafting and delivery | ||
| - `~~cloud storage`: Data map / Verarbeitungsverzeichnis for data categories | ||
|
|
||
| ### FDPIC inquiry response (`/respond fdpic`) | ||
| - **Always escalate to outside Swiss counsel** — templates are orientation only | ||
| - `~~cloud storage`: AV-Vereinbarungen, Datenschutzerklärung, processing records | ||
| - `~~project tracker`: FDPIC matter docket (Aktenzeichen tracking) | ||
|
|
||
| --- | ||
|
|
||
| ## Graceful degradation | ||
|
|
||
| When MCP connections are unavailable, the plugin will: | ||
| 1. Note which tool category is missing | ||
| 2. Describe what the tool would have provided | ||
| 3. Ask the user to supply the information manually or check the relevant Swiss registry/authority website directly | ||
| 4. Continue the workflow with available information | ||
|
|
||
| The zefix.ch Handelsregister check is always flagged as a manual step since it requires real-time verification before contract execution. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The template requires the description to "start with a verb" (actionable), but examining the legal-swiss plugin.json, the description starts with "Swiss-law legal productivity plugin" (a noun phrase). Consider either relaxing this requirement or ensuring the example plugin adheres to it. For example: "Automate Swiss legal workflows including contract review, NDA triage, and nDSG/GDPR compliance."