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.
From bsv-skillsnpx claudepluginhub b-open-io/claude-plugins --plugin bsv-skillsThis skill is limited to using the following tools:
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.tsGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes current state and user query to answer BMad questions or recommend the next skill(s) to use. Use when user asks for help, bmad help, what to do next, or what to start with in BMad.
Complete 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 reference