Skip to content
Merged
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
5 changes: 3 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
{
"name": "stella",
"owner": {
"name": "stella"
"name": "stella labs, s.r.o."
},
"description": "Plugins that connect AI agents to stella, the open-source legal workspace.",
"plugins": [
{
"name": "stella",
"source": "./plugins/stella",
"description": "stella's MCP server plus a skill that connects and verifies it."
"description": "Connect stella to search case law and legislation and work with accessible matters and documents.",
"version": "1.1.0"
}
]
}
20 changes: 20 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Validate

on:
pull_request:
push:
branches: [main]

permissions:
contents: read

jobs:
listing:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Validate plugin manifests and listing metadata
run: python3 -I scripts/validate_listing.py
6 changes: 3 additions & 3 deletions plugins/stella/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"name": "stella",
"version": "0.1.0",
"description": "Connect to stella, the open-source legal workspace: its MCP server and a skill that signs in and verifies the connection.",
"version": "1.1.0",
"description": "Connect stella to search case law and legislation and work with accessible matters and documents.",
"author": {
"name": "stella",
"name": "stella labs, s.r.o.",
"url": "https://stll.app"
},
"homepage": "https://stll.app/docs/get-started/connect-ai-assistant/",
Expand Down
46 changes: 42 additions & 4 deletions plugins/stella/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"name": "stella",
"version": "0.1.0",
"description": "Connect to stella, the open-source legal workspace: its MCP server and a skill that signs in and verifies the connection.",
"version": "1.1.0",
"description": "Connect stella to search case law and legislation and work with accessible matters and documents.",
"author": {
"name": "stella",
"name": "stella labs, s.r.o.",
"url": "https://stll.app"
},
"homepage": "https://stll.app/docs/get-started/connect-ai-assistant/",
Expand All @@ -12,6 +12,44 @@
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "stella"
"displayName": "stella",
"shortDescription": "Legal research and matters",
"longDescription": "Connect stella to search case law and legislation and work with the matters your account can access. Read documents, find templates, inspect contacts, and perform supported document and matter updates through separate tools. Sign in to stella in your browser and review the requested permissions before connecting. Available tools depend on your permissions and the features enabled for your organization. Results include source references where available. You need a stella account and access to an organization. Legal-source coverage varies by jurisdiction.",
"developerName": "stella labs, s.r.o.",
"category": "Productivity",
"capabilities": [
"Search case law",
"Read court decisions and citations",
"Search and read legislation",
"Find and read matter documents",
"Fill document templates",
"Manage tasks, contacts, and matter records"
],
"websiteURL": "https://stll.app",
"supportURL": "https://stll.app/support/",
"privacyPolicyURL": "https://stll.app/privacy/",
"termsOfServiceURL": "https://stll.app/terms/",
"defaultPrompt": [
"Find Czech Supreme Court decisions on dismissal for redundancy and summarize the key reasoning.",
"What does the Czech Labour Code say about the notice period? Quote the provision.",
"List my matters and the tasks that are due this week."
],
"logo": "./assets/logo.png",
"logoDark": "./assets/logo-dark.png",
"composerIcon": "./assets/composer-icon.png",
"composerIconDark": "./assets/composer-icon-dark.png"
},
"extensions": {
"com.openai": {
"onboardingSkill": "./skills/connect-stella/SKILL.md",
"review": {
"commerce": false,
"commerce_description": "stella does not sell products or process payments in conversations."
},
"publication": {
"release_notes": "Adds listing details, icons, and an onboarding skill for the stella connection.",
"countries": []
}
}
}
}
19 changes: 17 additions & 2 deletions plugins/stella/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,28 @@ Connect to [stella](https://stll.app), the open-source legal workspace, through
its remote MCP server. This plugin includes the server configuration and a
`connect-stella` skill that guides sign-in and verifies the connection.

Version 1.1.0 includes listing descriptions, capability labels, starter prompts,
publisher and policy links, and 512 × 512 PNG icons for light and dark themes.
The bundled onboarding skill runs setup only when requested. Icon artwork is
the app favicon from `stella/stella`, `apps/web/public/favicon.svg`; its blue
background keeps the same mark legible on both white and `#212121`.
Increase the semantic version in both manifests and the root plugin entry
for every release.

## Connect

Install the `stella` plugin from the `stella/plugins` marketplace, then ask your
assistant to connect to stella. You need a stella account and access to an
organization. Open the authorization link in your browser, sign in, and review
the requested permissions. The skill checks authentication and asks for one
read-only tool call to verify access.
the requested permissions. The skill checks authentication and can make one
public, read-only tool call when verification is requested. Keep passwords,
tokens, and callback URLs in the client's sign-in flow.

In clients that support the plugin install command:

```text
/plugin install stella --marketplace stella/plugins
```

## Commands and connections

Expand Down
Binary file added plugins/stella/assets/composer-icon-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added plugins/stella/assets/composer-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions plugins/stella/assets/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added plugins/stella/assets/logo-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added plugins/stella/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 16 additions & 6 deletions plugins/stella/skills/connect-stella/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
---
name: connect-stella
description: Connect this agent to stella, the open-source legal workspace, through its MCP server, and verify the connection. Use when the user asks to connect, set up, sign in to, or fix stella, or when stella tools are missing or fail to authenticate.
description: Guide browser sign-in and verify the stella connection when the user asks to connect, set up, sign in to, or fix stella.
---

# Connect stella

Run setup commands only when the user requests connection or troubleshooting.
If tools are missing during another task, explain that a connection is needed
and let the user choose whether to set it up. Use the installed client's
supported sign-in flow; do not install or launch another application.
Never ask for passwords, tokens, authorization codes, or full callback URLs.
The user signs in and approves permissions in their browser.

stella's MCP server signs people in with OAuth in their browser. The client
receives the sign-in result on a local port that stays open only while the
sign-in command runs. Keep that command alive until it reports success; a call
Expand Down Expand Up @@ -52,9 +59,10 @@ call:
permissions, and approve.
3. The browser then shows a plain confirmation page from the client itself.
That page is expected.
4. If their browser runs on another machine, the page may not load. Ask them
to copy the full URL from the address bar, then pass it to the waiting
command's input.
4. If their browser runs on another machine and the callback cannot reach the
client, explain the problem and use the client's supported remote sign-in
flow or repeat sign-in with the browser on the same machine. Do not ask
them to paste the callback URL into the conversation.
5. Keep the command running until it reports success.

## 4. Verify before you say "connected"
Expand All @@ -69,8 +77,10 @@ output, and offer to repeat step 2. Never call an added server connected.

## 5. Make one read-only call

stella's tools appear in a new session. There, make one read-only call, such as
a case-law search, and do not change anything:
stella's tools appear in a new session. If the user's connection request
includes verification, make one read-only call, such as a public case-law
search. Otherwise, offer this check. Do not read private matter data for a
setup check or change records or documents:

- If it fails, report the error exactly.
- If it succeeds, tell the user what they can now do through stella: search
Expand Down
34 changes: 34 additions & 0 deletions scripts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# stella package checks

Run the offline release checks and their boundary tests from the repository root:

```sh
python3 scripts/validate_listing.py --self-test
claude plugin validate ./plugins/stella --strict
claude plugin validate ./.claude-plugin/marketplace.json --strict
```

The Python check uses only the standard library. `listing.schema.json` records
the release's field types, required fields, text and array limits, HTTPS links,
and allowed extension fields. The evaluator implements the schema's declared
keywords and rejects unsupported keywords. It is a focused local schema based
on the [package field reference](https://developers.openai.com/plugins/deploy/submission#manifest-fields),
not the complete hosted validator. It also checks both manifest versions, both
root entries, the shared URL-backed HTTP configuration, bundled PNGs, skill
metadata, README length, and package hygiene. No sign-in or live tool calls run.

The existing `.claude-plugin/plugin.json` retains its supported standard fields;
the extended listing lives in `.codex-plugin/plugin.json`. The two root indexes
continue pointing to the same package. This package does not introduce a root
`plugin.json` in the separate Agent Plugins format.

To build the local release archive:

```sh
cd plugins
zip -r stella.zip stella -x '*/.git' '*/.git/*'
```

Keep the archive out of Git. Increment the versions in both package manifests
and the root versioned entry for each release. Additional test fixtures and a
recording can be added once verified; the current package omits those fields.
Loading
Loading