Official Plugin & Skill Registry for Memoh.
supermarket/
├── plugins/ # Plugin registry
│ └── <plugin-id>/
│ ├── plugin.yaml # Required plugin manifest
│ ├── hooks.json # Optional plugin-local hooks config
│ ├── scripts/ # Optional scripts used by plugin hooks
│ └── skills/ # Optional bundled skills
├── skills/ # Skill registry
│ └── <skill-id>/
│ ├── SKILL.md # Required entry file
│ └── ... # Optional scripts, references, assets
├── server/ # Nitro API routes & utilities
│ ├── api/
│ │ ├── plugins/
│ │ └── skills/
│ ├── utils/
│ └── types/
├── src/ # Vue frontend
├── nitro.config.ts
└── vite.config.ts
Base URL: https://supermarket.memoh.ai
| Method | Path | Description |
|---|---|---|
| GET | /api/plugins |
List Plugins. Query: q, tag, page, limit |
| GET | /api/plugins/:id |
Get Plugin details |
| GET | /api/plugins/:id/download |
Download Plugin package (plugin.yaml plus allowed bundle assets) |
| GET | /api/skills |
List skills. Query: q, tag, page, limit |
| GET | /api/skills/:id |
Get skill details |
| GET | /api/skills/:id/download |
Download skill directory (tar.gz) |
| GET | /api/tags |
List all tags (aggregated from Plugins and Skills) |
- Create a directory under
plugins/named after your plugin (e.g.plugins/notion/). - Add a
plugin.yamlmanifest:
schema_version: "1"
id: notion
name: Notion
version: "0.1.0"
description: Use Notion pages, databases, and search from Memoh.
author:
name: Memoh
email: support@memoh.ai
icon:
kind: builtin | external_url
name: notion # for builtin
url: https://example/icon.svg # for external_url
homepage: https://example.com
tags:
- productivity
capabilities:
- search_pages
install:
- sh scripts/install.sh
auth_requirements:
- key: notion_oauth
type: none | managed_oauth | user_secret
client_ref: notion
scopes: []
mcps:
- key: notion
name: Notion
transport: stdio
command: npx
args:
- "-y"
- "@notionhq/notion-mcp-server"
auth_ref: notion_oauth
visibility: hidden
skills: []- Optionally add plugin bundle assets:
plugins/<plugin-id>/hooks.json
plugins/<plugin-id>/scripts/<name>.py
plugins/<plugin-id>/skills/<skill-id>/SKILL.md
Plugin download archives include:
plugin.yamlhooks.jsonscripts/**skills/**
The optional install field can be a string or string list. Each item is a shell command executed by Memoh from /data/.memoh/plugins/<plugin-id> after bundle extraction, usually calling a script under scripts/**.
Memoh uses the Supermarket API response as the source of truth for plugin manifests, MCP resources, OAuth requirements, and install commands. The downloaded plugin.yaml is included for package completeness, while runtime bundle assets such as hooks, scripts, and skills are installed into the bot workspace by Memoh.
- Create a directory under
skills/named after your skill (e.g.skills/my-skill/). - Add a
SKILL.mdfile with YAML frontmatter:
---
name: my-skill
description: What this skill does and when to use it.
metadata:
author:
name: Your Name
email: you@example.com
tags:
- tag1
- tag2
homepage: https://example.com
---
# My Skill
Instructions and documentation go here...Built with Nitro and Cloudflare Workers.