-
Notifications
You must be signed in to change notification settings - Fork 776
Add PR template for plugin submissions #67
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
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) | ||||||
|
||||||
| - [ ] `LICENSE` — copied from an existing plugin (MIT) | |
| - [ ] `LICENSE` — copied from an existing plugin |
Copilot
AI
Feb 19, 2026
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.
This checklist requires command frontmatter to include name, but existing commands in this repo only use description (and sometimes argument-hint) in frontmatter (e.g., productivity/commands/start.md). Please align this requirement with the repo’s established command format, otherwise contributors will follow a convention that doesn’t match existing plugins.
| - [ ] A YAML frontmatter block with at least `name` and `description` | |
| - [ ] A YAML frontmatter block with at least `description` (and optional `argument-hint`, matching existing commands) |
| 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.", | ||
| "author": { | ||
| "name": "Anthropic" | ||
| }, | ||
| "jurisdiction": "CH", | ||
| "primaryLaw": [ | ||
| "OR (Obligationenrecht)", | ||
| "nDSG (Bundesgesetz über den Datenschutz, in force 1 September 2023)", | ||
| "ZGB (Zivilgesetzbuch)", | ||
| "ZPO (Zivilprozessordnung)", | ||
| "IPRG (Bundesgesetz über das Internationale Privatrecht)", | ||
| "URG (Urheberrechtsgesetz)", | ||
| "FINMA Circular 2023/1 (outsourcing)", | ||
| "KG / WEKO (Kartellgesetz)" | ||
| ], | ||
| "languages": ["de", "fr", "it", "en"], | ||
| "regulatoryAuthorities": [ | ||
| "FDPIC / EDÖB (Federal Data Protection and Information Commissioner)", | ||
| "FINMA (Swiss Financial Market Supervisory Authority)", | ||
| "WEKO (Swiss Competition Commission / Commission de la concurrence)", | ||
| "SECO (State Secretariat for Economic Affairs)" | ||
| ] | ||
| } |
| 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.
PR title/description indicate this change is only adding a PR template, but this PR also adds a full new
legal-swiss/plugin (commands, skills, samples, manifests, etc.). Please update the PR title/description to match the actual scope, or split the plugin addition into a separate PR so reviewers can track intent and risk appropriately.