Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
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)
Copy link

Copilot AI Feb 19, 2026

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."

Copilot uses AI. Check for mistakes.
- [ ] `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)
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The template specifies that the LICENSE should be "copied from an existing plugin (MIT)", but the legal-swiss plugin uses the Apache License 2.0. This is an inconsistency between the template requirement and the actual implementation. Either the template should be updated to allow Apache 2.0 or the plugin should use MIT.

Copilot uses AI. Check for mistakes.

---

### Commands (`commands/*.md`)

Each command file must have:

- [ ] A YAML frontmatter block with at least `name` and `description`
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The template requires command frontmatter to have "at least name and description", but the command files only have description and argument-hint. The name field is missing. Either add the name field to command frontmatter or update the template to reflect that name is optional (since it can be inferred from the filename).

Copilot uses AI. Check for mistakes.
- [ ] 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 -->
26 changes: 26 additions & 0 deletions legal-swiss/.claude-plugin/plugin.json
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.",
Copy link

Copilot AI Feb 19, 2026

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 be "one sentence, ≤160 characters, actionable (starts with a verb)", but the plugin.json description is 487 characters long. This significantly exceeds the 160-character limit specified in the template. Consider shortening the description to meet the stated requirement, for example: "Automate Swiss legal workflows: contract review (OR Art. 100), NDA triage, nDSG/GDPR compliance, and risk assessment for in-house teams."

Suggested change
"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.",

Copilot uses AI. Check for mistakes.
"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)"
]
}
24 changes: 24 additions & 0 deletions legal-swiss/.mcp.json
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"
}
}
}
85 changes: 85 additions & 0 deletions legal-swiss/CONNECTORS.md
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.
Loading
Loading