Skip to content
Closed
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
Comment on lines +1 to +3
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.

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.

Copilot uses AI. Check for mistakes.
<!-- 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)
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 checklist says plugin LICENSE should be copied from an existing plugin “(MIT)”, but this repo’s existing plugins use Apache 2.0 (e.g., productivity/LICENSE, finance/LICENSE, repo root LICENSE). Please update this item to reference the correct license (or make it license-agnostic if multiple licenses are allowed).

Suggested change
- [ ] `LICENSE` — copied from an existing plugin (MIT)
- [ ] `LICENSE` — copied from an existing plugin

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.

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.

Suggested change
- [ ] 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)

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