From bsv-skills
This skill should be used when the user asks to "post to BSocial", "like a post", "unlike", "follow user", "unfollow", "send message", "repost", "friend request", "on-chain social media", "BMAP", "BSocial protocol", "channel message", "create on-chain post", "read BSocial posts", or needs social operations (posts, likes, follows, messages, reposts, friends) on BSV blockchain.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bsv-skills:bsocialThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Complete on-chain social protocol for BSV blockchain. Posts, likes, follows, messages, reposts, and friend requests using BitcoinSchema.org standards.
lib/bmap-client.tslib/broadcast.tsreferences/schemas.mdscripts/create-follow.tsscripts/create-friend.tsscripts/create-like.tsscripts/create-message.tsscripts/create-post.tsscripts/create-reply.tsscripts/create-repost.tsscripts/read-follows.tsscripts/read-friends.tsscripts/read-likes.tsscripts/read-messages.tsscripts/read-posts.tsComplete on-chain social protocol for BSV blockchain. Posts, likes, follows, messages, reposts, and friend requests using BitcoinSchema.org standards.
Build and broadcast social transactions using raw WIF keys and the @1sat/templates BSocial class (included in this plugin).
bun run skills/bsocial/scripts/create-post.ts <wif> "Post content" [options]
# Options:
# --channel <name> Post to a channel
# --url <url> Associate with URL
# --tags <t1,t2> Comma-separated tags
# --dry-run Build tx without broadcasting
bun run skills/bsocial/scripts/create-reply.ts <wif> <txid> "Reply content" [--tags <t1,t2>]
bun run skills/bsocial/scripts/create-like.ts <wif> <txid>
bun run skills/bsocial/scripts/create-follow.ts <wif> <bapId>
bun run skills/bsocial/scripts/create-repost.ts <wif> <txid> [--context <type> --value <val>]
bun run skills/bsocial/scripts/create-message.ts <wif> "Message" [options]
# Options:
# --channel <name> Send to channel
# --to <bapId> Direct message to user
bun run skills/bsocial/scripts/create-friend.ts <wif> <bapId>
Query social data from the BMAP API.
bun run skills/bsocial/scripts/read-posts.ts <address> [--limit 20] [--json]
bun run skills/bsocial/scripts/read-likes.ts --address <addr>
bun run skills/bsocial/scripts/read-likes.ts --txid <txid>
bun run skills/bsocial/scripts/read-follows.ts <address> [--limit 100] [--json]
bun run skills/bsocial/scripts/read-messages.ts --channel <name>
bun run skills/bsocial/scripts/read-messages.ts --address <addr>
bun run skills/bsocial/scripts/read-friends.ts <address> [--json]
For BRC-100 wallet users, @1sat/actions provides high-level social actions that handle B:// + MAP + AIP construction and wallet signing automatically. This requires the 1sat plugin and the @1sat/actions package — it is not part of bsv-skills.
See the 1sat:transaction-building skill for details.
import { createSocialPost, createContext } from '@1sat/actions'
const ctx = createContext(wallet)
const result = await createSocialPost.execute(ctx, {
app: 'my-app', // MAP attribution — identifies the calling application
content: 'Hello BSV!',
contentType: 'text/plain', // or 'text/markdown'
tags: ['intro', 'bsv'], // optional
})
// result: { txid, rawtx, error }
The action:
WalletSigner from @1sat/templates)bsocial basket for post historyapp:my-app, type:post, tag:intro, etc.) for filtered queriesQuery post history: wallet.listOutputs({ basket: 'bsocial' })
[B Protocol] | [MAP Protocol] | [AIP Protocol]
content metadata signature
| Context | Use Case |
|---|---|
tx | Reply/like a transaction |
channel | Post/message to named channel |
bapID | Target specific identity |
provider | Associate with external URL or provider |
videoId | Reference a video |
geohash | Geolocation context |
btcTx | Reference a BTC transaction |
ethTx | Reference an ETH transaction |
@bsv/sdk - Transaction building@1sat/templates - BSocial protocol templates (Signer abstraction, BSocial class)@1sat/actions - BRC-100 action system (external — requires the 1sat plugin)Base URL: https://bmap-api-production.up.railway.app
| Endpoint | Description |
|---|---|
/social/post/bap/{bapId} | Posts by BAP ID |
/social/feed/{bapId} | Feed for BAP ID |
/social/post/{txid}/like | Likes for a post |
/social/bap/{bapId}/like | Likes by user |
/social/friend/{bapId} | Friends for BAP ID |
/social/@/{bapId}/messages | Messages for user |
/social/channels/{channelId}/messages | Channel messages |
/q/{collection}/{base64Query}/s/{collection}/{base64Query}/ingest with { rawTx: tx.toHex() }Friend requests use Type42 key derivation with BRC-43 invoice numbers (2-friend-{sha256(friendBapId)}) via the BRC-100 wallet.
import { Hash, Utils } from "@bsv/sdk";
const { toHex, toArray } = Utils;
const keyID = toHex(Hash.sha256(toArray(friendBapId, "utf8")));
// Get encryption pubkey for friend request
const { publicKey } = await wallet.getPublicKey({
protocolID: [2, "friend"],
keyID,
counterparty: "self",
});
// Encrypt private message for friend
const { ciphertext } = await wallet.encrypt({
protocolID: [2, "friend"],
keyID,
counterparty: friendIdentityKey,
plaintext: toArray("secret message", "utf8"),
});
// Decrypt message from friend
const { plaintext } = await wallet.decrypt({
protocolID: [2, "friend"],
keyID,
counterparty: friendIdentityKey,
ciphertext,
});
references/schemas.md - Full schema referencenpx claudepluginhub b-open-io/claude-plugins --plugin bsv-skillsPosts content to Bluesky via the bsky CLI — text, images, video, replies, and quotes. Activates when asked to post or when shareable work is found in public repos.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.