Kb misskey
A Fediverse & ActivityPub plugin for those wishing to use LLM coding tools for the Fediverse and the Social Web.
npx -y skills add reiver/vibefed --skill kb-misskeyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Background knowledge about Misskey, the Japanese-origin federated microblogging platform (created 2014 by syuilo). Covers Misskey's ActivityPub extensions (custom namespace https://misskey-hub.net/ns# with _misskey_content, _misskey_quote, _misskey_reaction for emoji reactions on Like activities, _misskey_votes, _misskey_talk for chat, isCat boolean, _misskey_followedMessage, _misskey_requireSigninToViewContents, _misskey_makeNotesFollowersOnlyBefore, _misskey_makeNotesHiddenBefore, _misskey_license), MFM (Misskey Flavored Markdown) proprietary markup with animations/colors/effects, emoji reactions as primary engagement mechanism (Unicode + custom emoji, federated via Like with _misskey_reaction), the Drive file management system, Antennas (custom filtered feeds), Deck UI, Channels, Pages, Clips, Plugins, Themes, Widgets, isCat mode, the tech stack (Node.js/TypeScript/NestJS/PostgreSQL/Redis/Vue.js 3/Vite, AGPL-3.0), REST API (POST-based) and WebSocket streaming API, Note visibility levels (public/home/followers/specified), the extensive fork ecosystem (Sharkey active soft fork, Cherrypick, Firefish/Calckey discontinued, Iceshrimp.NET C# rewrite, FoundKey EOL, Catodon discontinued, Meiskey), Misskey vs Mastodon comparison, and federation interoperability quirks. Load when the user asks about Misskey; implementing a Misskey-compatible ActivityPub server; Misskey's ActivityPub extensions and custom namespace; how emoji reactions federate from Misskey; the _misskey_reaction or _misskey_quote properties; MFM markup language; federating with Misskey instances; the Misskey fork ecosystem (Sharkey, Firefish, Iceshrimp, FoundKey); how Misskey differs from Mastodon; Misskey's Drive or Antenna features; or building software that interoperates with Misskey-family platforms.
SKILL.md
17.4 KB, ~4.0k tokens by cl100k_base, as published. Nobody here has run it
Misskey — Complete Reference
Overview
Misskey is a free, open-source, decentralized microblogging platform — a feature-rich Japanese-origin Fediverse platform that predates many others. Created by syuilo (Eiji Shinoda) in 2014 as a BBS-style forum, it adopted ActivityPub in 2018. The name comes from the song "Brain Diver" by the band May'n. Licensed AGPL-3.0.
Misskey is explicitly not a Mastodon fork — it is "a project
completely different from Mastodon or other alike projects." Its
cultural DNA reflects Japanese social media preferences: emoji reactions
as the primary engagement mechanism (not simple likes), rich visual
formatting (MFM), integrated file management (Drive), and playful
features like isCat mode and the mascot Ai (藍). Community members
are called "Misskists."
As of late 2024: ~918,550 registered accounts, ~25,782 active users, 1,096+ instances. The flagship instance misskey.io is reportedly the second largest instance in the entire Fediverse. MisskeyHQ exists as a company entity, funded by donations and software licensing.
1. Technology Stack
| Component | Technology |
|---|---|
| Backend | Node.js with TypeScript |
| Framework | NestJS (dependency injection) |
| Database | PostgreSQL (TypeORM) |
| Cache / Queue | Redis (ioredis) / BullMQ |
| Frontend | Vue.js 3 (Composition API, TypeScript) |
| Build tool | Vite |
| License | AGPL-3.0 |
Resource Footprint
Small instances: ~848 MB RAM with CPU bursts. A $10/month VPS suffices for small communities; $20/month for 15–50 users.
Repository
https://github.com/misskey-dev/misskey
2. ActivityPub Extensions
Misskey uses the JSON-LD namespace https://misskey-hub.net/ns#
(prefix misskey). This is the most extensive set of custom ActivityPub
extensions in the Fediverse ecosystem.
Extension Reference
| Property | On | Description |
|---|---|---|
_misskey_content | Note | Deprecated. MFM source text (equivalent to source property) |
_misskey_summary | Actor | Actor summary in MFM format |
_misskey_quote | Note | ID of quoted note. Compatible with fedibird:quoteUri and as:quoteUrl |
_misskey_reaction | Like | Emoji reaction type. Unicode emoji or :name: custom emoji string |
_misskey_votes | Question option | Vote count (equivalent to replies.totalItems) |
_misskey_talk | Note | Boolean true marks note as a chat message |
isCat | Actor | Boolean — actor identifies as a cat (triggers visual effects) |
_misskey_followedMessage | Actor | Custom message on follow notification (since 2024.9.0-alpha.11) |
_misskey_requireSigninToViewContents | Actor | Forbids display to non-signed-in viewers |
_misskey_makeNotesFollowersOnlyBefore | Actor | Restricts past notes to followers only. Value: Unix epoch ms (negative = relative) |
_misskey_makeNotesHiddenBefore | Actor | Hides past notes from all except author. Same value format |
_misskey_license | Emoji | License metadata. Properties: freeText (string or null) |
Emoji Reactions Wire Format
Misskey's emoji reactions are the most significant interoperability
concern. When a user reacts with an emoji, Misskey sends a Like
activity with _misskey_reaction set to the emoji:
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"misskey": "https://misskey-hub.net/ns#",
"_misskey_reaction": "misskey:_misskey_reaction"
}
],
"type": "Like",
"id": "https://misskey.example/likes/abc123",
"actor": "https://misskey.example/users/alice",
"object": "https://remote.example/notes/xyz",
"_misskey_reaction": "👍",
"content": "👍"
}
For custom emoji reactions:
{
"type": "Like",
"_misskey_reaction": ":blobcat:",
"content": ":blobcat:",
"tag": [
{
"type": "Emoji",
"id": "https://misskey.example/emojis/blobcat",
"name": ":blobcat:",
"icon": {
"type": "Image",
"url": "https://misskey.example/files/blobcat.png"
}
}
]
}
Interoperability: Platforms that do not understand _misskey_reaction
will treat these as standard Like activities (favourites). Custom emoji
reactions are only visible to other Misskey-family software. The content
field is also set to the reaction value as a fallback.
Quote Posts Wire Format
{
"type": "Note",
"id": "https://misskey.example/notes/abc123",
"content": "<p>My thoughts on this</p>",
"_misskey_quote": "https://remote.example/notes/original",
"quoteUrl": "https://remote.example/notes/original"
}
Both _misskey_quote and quoteUrl are set for compatibility. Also
recognized: https://fedibird.com/ns#quoteUri.
3. MFM (Misskey Flavored Markdown)
Proprietary markup language usable in notes, content warnings,
usernames, and bios. General syntax:
$[name.attribute1,attribute2=value content]
Text Formatting
- Bold:
**text** - Small:
<small>text</small> - Center:
<center>text</center> - Quotes:
> text - Ruby:
$[ruby text reading] - Links:
[label](url) - Code: backticks (inline), triple backticks with language (blocks, 200+ languages via Shiki)
Visual Effects
| Syntax | Effect |
|---|---|
$[flip text] | Horizontal/vertical flip |
$[font.serif text] | Font change (serif, monospace, cursive, fantasy) |
$[blur text] | Blur until hover |
$[fg.color=hex text] | Foreground color |
$[bg.color=hex text] | Background color |
$[border.style=solid,width=4 text] | Border (solid, dotted, dashed, double, groove, ridge, inset, outset) |
$[position.x=0.8,y=0.5 text] | Position shifting |
$[rotate.deg=30 text] | Rotation |
$[scale.x=4,y=2 text] | Scaling (also $[x2], $[x3], $[x4]) |
Animations
| Syntax | Effect |
|---|---|
$[jelly text] | Jiggles |
$[tada text] | Celebration |
$[jump text] | Bouncing |
$[bounce text] | Elasticity |
$[spin text] | Rotation (modifiers: .left, .alternate, .x, .y) |
$[shake text] | Vibration |
$[twitch text] | Random twitching |
$[rainbow text] | Color cycling |
$[sparkle text] | Shimmer |
All animations support .speed=5s for timing control.
Federation note: MFM is rendered as HTML when federating via
ActivityPub. The _misskey_content (deprecated) and source properties
carry the original MFM source. Non-Misskey platforms see plain HTML with
animations and effects stripped.
4. Note System
Visibility Levels
| Level | Description |
|---|---|
public | Visible to everyone, appears on all timelines |
home | Visible to everyone but only appears on home timeline |
followers | Only visible to followers |
specified | Only visible to specified users (direct message) |
Features
- Content Warning (CW):
summaryfield hides content behind a toggle - Renote: Boost/reblog (Announce activity)
- Quote Renote: Boost with added commentary (
_misskey_quote) - Polls:
Questionactivity type with_misskey_votesfor counts - Reactions: Full emoji reactions (see Section 2)
- Mentions: @-mentions across the Fediverse
- Hashtags: Standard
Hashtagtag type
Timelines
| Timeline | Content |
|---|---|
| Home | Notes from followed users |
| Local | All public notes from the instance |
| Social (Hybrid) | Home + Local combined |
| Global | All known public notes including remote |
5. Unique Features
Drive
Cloud storage system for managing uploaded files. Files can be organized into folders and reused across multiple notes without re-uploading. Each file retains metadata (type, size, hash). Drive capacity is configurable per-user by instance administrators via role policies.
Antennas
Customizable filtered feeds that collect notes matching set conditions (keywords, users, file attachments) in real time. Essentially continuous background searches. Antennas exclude the user's own posts.
Deck UI
Multi-column layout with side-by-side views for an information-dense interface. Users can arrange timeline columns, notification panels, and other widgets freely.
Channels
Topic-based note collections within an instance. Similar to forums or discussion threads organized by subject.
Pages
Static page creation system using MFM and custom emoji, enabling users to build content beyond notes.
Other Features
- Clips — public/private categorized bookmarks
- Plugins — extend web client functionality via AiScript
- Themes — full client appearance customization
- Widgets — small interactive dashboard displays
- Webhooks — external service integration
- Word mute / Thread mute — content filtering
- Charts — server data visualization
- Online status — activity indicators on profile icons
- Share form — at
/sharepath for social sharing buttons - Safe mode — disables custom CSS, plugins, themes
- Embeds — embed notes and timelines on external websites
isCatmode — users identify as cats with visual effects in supporting clients
6. API
REST API
All endpoints use HTTP POST (not GET for reads):
POST /api/notes/create
POST /api/notes/show
POST /api/users/show
POST /api/following/create
Authentication via access tokens. SDK: misskey-js (TypeScript).
Streaming API
WebSocket-based with channel multiplexing:
{
"type": "connect",
"body": {
"channel": "homeTimeline",
"id": "arbitrary-unique-id"
}
}
Available channels: globalTimeline, homeTimeline, hybridTimeline,
localTimeline, main.
Multiple channels can be multiplexed on a single WebSocket connection using different IDs.
7. Fork Ecosystem
Misskey has the most extensive fork tree in the Fediverse. All forks federate with each other and the broader Fediverse.
Active Forks
| Fork | Type | Key Differentiators |
|---|---|---|
| Sharkey | Soft fork (tracks upstream) | Federated note editing with history, Mastodon-compatible API + OAuth2, multi-platform import (Mastodon/Pleroma/Firefish/Twitter/Instagram/Facebook), GDPR data export, "Bubble" timeline, Argon2 hashing, multiple translation services |
| Cherrypick | Soft fork | Compatible with Misskey client ecosystem |
| Meiskey | v11 fork | Based on older Misskey v11 |
Discontinued / EOL Forks
| Fork | Status | Notes |
|---|---|---|
| Firefish (was Calckey) | Discontinued 2024 | Added recommended timeline, account migration, mobile-optimized UI. Lead developer became absent |
| Iceshrimp | Transitioning | JS version: security patches only. Iceshrimp.NET: complete C# rewrite (beta), Mastodon API support |
| FoundKey | End of Life | Hard fork of v12, goal was removing bloat |
| Catodon | Discontinued Nov 2025 | Community-driven fork of Iceshrimp, created in reaction to Firefish governance failures |
Fork Relationship
Misskey (syuilo, 2014–)
├── Sharkey (soft fork, ACTIVE)
├── Cherrypick (soft fork, ACTIVE)
├── Meiskey (v11 fork, ACTIVE)
├── FoundKey (v12 hard fork, EOL)
└── Calckey (2022) → Firefish (2023, DISCONTINUED)
├── Iceshrimp → Iceshrimp.NET (C# rewrite)
└── Catodon (DISCONTINUED)
Pattern: Forks emerge from (a) feature gaps upstream won't fill, (b) governance/communication issues, or (c) architectural changes (Iceshrimp.NET's language rewrite).
8. Misskey vs Mastodon
| Aspect | Misskey | Mastodon |
|---|---|---|
| Origin | Japan (2014) | Germany (2016) |
| Character limit | Configurable per instance | 500 default |
| Reactions | Full emoji reactions (custom + Unicode) | Favourites only |
| File management | Built-in Drive | No persistent storage |
| Markup | MFM (animations, colors, effects) | Limited Markdown |
| Channels | Topic-based communities | No |
| Antennas | Custom filtered feeds | No equivalent |
| Resource usage | Lighter than Mastodon | Heavier |
| Mobile apps | Limited (PWA, third-party) | Official iOS/Android + many third-party |
| Post editing | Not in core (Sharkey has it) | Supported |
| User base | ~918k (mostly Japanese) | ~7.6M total |
9. Interoperability Notes for Implementers
-
Emoji reactions arrive as
Likeactivities — check for_misskey_reactionto distinguish a specific emoji reaction from a generic favourite. If absent, treat as a standard Like. Thecontentfield also contains the reaction value. -
Custom emoji in reactions — when
_misskey_reactioncontains a:name:string, thetagarray includes anEmojiobject with the image URL. Display the custom emoji image if available, fall back to treating it as a Like. -
Quote posts — Misskey sends
_misskey_quoteandquoteUrlon Note objects. Also check forfedibird:quoteUri(Fedibird/Mastodon compatibility). Display as an embedded quote if your platform supports it. -
MFM content — notes from Misskey contain HTML in
content(with MFM effects stripped) and optionally MFM source in thesourceproperty. Use the HTML for display; the MFM source is only useful if you want to re-render with a MFM parser (library:mfm-js). -
isCatproperty on actors — a boolean extension. Misskey-family clients show cat ears and modify text display for cat-mode users. Safe to ignore but do not strip when forwarding actor documents. -
Chat messages — notes with
_misskey_talk: trueare Misskey chat messages. They federate as normal Notes to non-Misskey platforms. Display as regular posts if your platform has no chat feature. -
All API endpoints use POST — unlike Mastodon's REST conventions, Misskey uses POST for everything including reads. If implementing a Misskey-compatible API, every endpoint must accept POST.
-
Visibility level "home" — Misskey has a fourth visibility level (
home) where notes are visible to everyone but excluded from the local and global timelines. This maps to ActivityPubto: followers, cc: Public(the inverse of Mastodon's "unlisted"). Handle carefully when federating. -
Poll vote counts — Misskey includes
_misskey_voteson poll options. This is equivalent toreplies.totalItemsbut may be more reliably present. Prefer_misskey_voteswhen available. -
Note content restrictions — the
_misskey_makeNotesFollowersOnlyBeforeand_misskey_makeNotesHiddenBeforeproperties on actors signal that historical content has access restrictions. Respect these when fetching older notes from Misskey actors.
10. Known Considerations
- No post editing in core Misskey — users must delete and redraft. The Sharkey fork adds federated note editing with version history.
- Cannot follow hashtags — use Antennas (keyword-filtered feeds) instead.
- No official mobile apps — third-party options include SocialHub (iOS) and Milktea (Android). The web client supports PWA.
- Antennas exclude personal posts from their results.
- Mute functionality gaps regarding mentions.
- No MRF equivalent for regex-based content filtering (unlike Pleroma/Akkoma).
- November 2025 announcement about potentially replacing ActivityPub with "Misskey's own low-overhead federation system" — details unclear, impact on interoperability unknown.
- Geographic registration restrictions on misskey.io — initially blocked Europeans (GDPR concerns), later restricted to Japanese users, Korea allowed since February 2026.
- Recent security fixes — CVE-2026-28431, CVE-2026-28432, CVE-2026-28433 patched in version 2026.3.1.
Gives 0 of the 12 instructions most databases sql skills give in ~4.0k tokens
Counted across 589 of the 662 authors here whose files we hold, read 2026-08-07
- use parameterized queriesin 37 of 589, across 34 files
- use timestamptz for timestampsin 30 of 589, across 14 files
- index foreign keysin 29 of 589, across 18 files
- create indexes concurrentlyin 29 of 589, across 24 files
- use numeric type for moneyin 25 of 589, across 8 files
- use cursor pagination instead of offsetin 24 of 589, across 17 files
- select only required columnsin 24 of 589, across 20 files
- add indexes manually on foreign key columnsin 22 of 589, across 12 files
- normalize to third normal formin 19 of 589, across 10 files
- configure connection poolingin 19 of 589, across 17 files
- put equality columns before range columns in indexesin 18 of 589, across 10 files
- read individual rule files for detailed explanationsin 18 of 589, across 4 files
Said here and by no other author read
- Use the custom namespace for Misskey ActivityPub extensions
- Send emoji reactions as Like activities with the custom reaction property
- Include quote URLs in both custom and standard properties for compatibility
- Set the content field as a fallback reaction value
- Strip MFM visual effects and animations when rendering as plain HTML
- Use HTTP POST for all REST API endpoints
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.