Freshness Gate
Current Unix timestamp: !date +%s
Read your MEMORY.md and find the last_fetch_date value. If it does not
exist, or if the current timestamp minus last_fetch_date exceeds 604800
(7 days), you MUST run a knowledge refresh before answering. Follow the
refresh procedure described in your agent system prompt (fetch SDK repos,
release notes, and NIP support tables — write findings to agent memory only,
never modify plugin files).
If memory is fresh, proceed directly to answering.
User Question
$ARGUMENTS
Reference Documents
The following supporting documents are available in your skill directory at
${CLAUDE_SKILL_DIR}/:
| File |
Content |
| library-matrix.md |
All major Nostr SDKs by language/maturity/NIP support/activity, with strengths and trade-offs |
| selection-guide.md |
Decision tree by language, platform, and use case; when to push back on a user's chosen library |
| common-tasks.md |
Side-by-side code examples for keypair generation, publish, subscribe, and NIP-46 connect across SDKs |
| interop-and-bindings.md |
rust-nostr UniFFI family, the two distinct nostr-sdk-ios projects, archived/legacy projects, wire compatibility |
Read the relevant documents to answer the user's question. Consult your agent
memory for additional context and prior findings.
Response Format
- Default to language-native first. Match the user's stack rather than
pushing one SDK universally. nostr-tools/NDK for TS, rust-nostr for Rust,
fiatjaf.com/nostr for Go, pynostr for Python, nostr-sdk-ios for native
Apple, etc.
- Surface bindings as a fallback when cross-platform parity matters
(rust-nostr → nostr-sdk-jvm + nostr-sdk-swift).
- Always check archive/legacy status before recommending: go-nostr is
archived (use fiatjaf.com/nostr), python-nostr is feature-frozen (use
pynostr), NostrKit is minimal (use nostr-sdk-ios), Rhodium is incomplete
(use nostr-sdk-jvm for KMP).
- Show concrete code for the chosen library — don't just name it.
- Cite NIP numbers when explaining behavior; defer to the
remote-signing skill for deep NIP-46/07/55 specifics.
- Flag pre-1.0 / alpha status (rust-nostr family, marmot-ts, Rhodium).
- Watch out for name collisions — distinguish rust-nostr/nostr-sdk-swift
(UniFFI) from nostr-sdk/nostr-sdk-ios (native) from damus-io/nostr-sdk
(Damus's own implementation).
- If you need to fetch live source or release notes to verify an API
surface, do so.
Source: 941design/claude-plugins — distributed by TomeVault.
1---2name: 941design-claude-plugins-nostr-sdks3description: Freshness Gate4---56## Freshness Gate78Current Unix timestamp: !`date +%s`910Read your MEMORY.md and find the `last_fetch_date` value. If it does not11exist, or if the current timestamp minus `last_fetch_date` exceeds **604800**12(7 days), you MUST run a knowledge refresh before answering. Follow the13refresh procedure described in your agent system prompt (fetch SDK repos,14release notes, and NIP support tables — write findings to agent memory only,15never modify plugin files).1617If memory is fresh, proceed directly to answering.1819## User Question2021$ARGUMENTS2223## Reference Documents2425The following supporting documents are available in your skill directory at26`${CLAUDE_SKILL_DIR}/`:2728| File | Content |29|---|---|30| [library-matrix.md](library-matrix.md) | All major Nostr SDKs by language/maturity/NIP support/activity, with strengths and trade-offs |31| [selection-guide.md](selection-guide.md) | Decision tree by language, platform, and use case; when to push back on a user's chosen library |32| [common-tasks.md](common-tasks.md) | Side-by-side code examples for keypair generation, publish, subscribe, and NIP-46 connect across SDKs |33| [interop-and-bindings.md](interop-and-bindings.md) | rust-nostr UniFFI family, the two distinct nostr-sdk-ios projects, archived/legacy projects, wire compatibility |3435Read the relevant documents to answer the user's question. Consult your agent36memory for additional context and prior findings.3738## Response Format3940- **Default to language-native first.** Match the user's stack rather than41 pushing one SDK universally. nostr-tools/NDK for TS, rust-nostr for Rust,42 fiatjaf.com/nostr for Go, pynostr for Python, nostr-sdk-ios for native43 Apple, etc.44- **Surface bindings as a fallback** when cross-platform parity matters45 (rust-nostr → nostr-sdk-jvm + nostr-sdk-swift).46- **Always check archive/legacy status** before recommending: go-nostr is47 archived (use fiatjaf.com/nostr), python-nostr is feature-frozen (use48 pynostr), NostrKit is minimal (use nostr-sdk-ios), Rhodium is incomplete49 (use nostr-sdk-jvm for KMP).50- **Show concrete code** for the chosen library — don't just name it.51- **Cite NIP numbers** when explaining behavior; defer to the52 remote-signing skill for deep NIP-46/07/55 specifics.53- **Flag pre-1.0 / alpha** status (rust-nostr family, marmot-ts, Rhodium).54- **Watch out for name collisions** — distinguish rust-nostr/nostr-sdk-swift55 (UniFFI) from nostr-sdk/nostr-sdk-ios (native) from damus-io/nostr-sdk56 (Damus's own implementation).57- If you need to fetch live source or release notes to verify an API58 surface, do so.5960---61> Source: [941design/claude-plugins](https://github.com/941design/claude-plugins) — distributed by [TomeVault](https://tomevault.io).62<!-- tomevault:4.0:skill_md:2026-06-16 -->