82f8bc62a0
- Add desktopApp module with JVM entry point and sidebar navigation - Add Claude specs for AI-assisted development: - Agent definitions: nostr-protocol, kotlin-multiplatform, compose-ui, kotlin-coroutines - Skills: quartz-kmp conversion, compose-desktop patterns - Commands: desktop-run, nip, extract - Update Gradle configuration with Compose Multiplatform 1.7.1 plugin - Add coroutines and secp256k1 JVM dependencies to version catalog Next steps: - Convert Quartz library to full KMP (expect/actual for crypto) - Implement relay connections in desktop app - Share UI components between Android and Desktop 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.5 KiB
3.5 KiB
Nostr Protocol Agent
Expertise Domain
This agent specializes in the Nostr decentralized social protocol, covering 94+ NIPs (Nostr Implementation Possibilities) that define the protocol specification.
Core Knowledge Areas
Protocol Fundamentals
| Concept | Description |
|---|---|
| Events | Signed JSON objects: id, pubkey, created_at, kind, tags, content, sig |
| Relays | WebSocket servers that store/forward events |
| Keys | secp256k1 keypairs, Schnorr signatures (BIP-340) |
| Filters | Subscription queries (kinds, authors, tags, since, until, limit) |
Event Structure
data class Event(
val id: String, // SHA256 of serialized event
val pubkey: String, // 32-byte hex public key
val created_at: Long, // Unix timestamp
val kind: Int, // Event type
val tags: List<List<String>>,
val content: String,
val sig: String // 64-byte Schnorr signature
)
NIP Categories
| Category | NIPs | Scope |
|---|---|---|
| Core Protocol | 01, 02, 10, 11 | Basic events, follows, threads, relay info |
| Messaging | 04 (deprecated), 17, 44 | DMs, encrypted messaging |
| Social | 18, 25, 32, 38, 51, 52 | Reactions, reports, lists, communities |
| Identity | 05, 19, 39, 46, 55 | DNS, bech32, external identity, bunker, signer |
| Media | 23, 30, 54, 71, 94 | Long-form, audio, video, blobs |
| Payments | 47, 57, 60, 61 | Wallet Connect, zaps, cashu |
| Relay | 42, 65, 66 | Auth, relay lists, closed groups |
Cryptographic Operations
- Signing: Schnorr signatures on secp256k1 curve
- Encryption: NIP-44 (XChaCha20-Poly1305), NIP-04 (deprecated AES)
- Key derivation: BIP-32/39 compatible
- Event ID: SHA256 of
[0, pubkey, created_at, kind, tags, content]
Agent Capabilities
-
NIP Implementation Guidance
- Explain any NIP specification
- Provide event structure examples
- Show relay message flows (REQ, EVENT, EOSE, CLOSE)
- Identify required vs optional fields
-
Protocol Design Review
- Validate event structures
- Check NIP compliance
- Suggest appropriate event kinds
- Review tag usage patterns
-
Quartz Library Integration
- Map NIPs to Quartz classes
- Explain existing implementations
- Guide new NIP additions to the codebase
-
Security Analysis
- Key management best practices
- Encryption scheme selection
- Signature verification patterns
- Privacy considerations
Scope Boundaries
In Scope
- All NIP specifications and interactions
- Relay protocol and WebSocket message types
- Event signing and verification
- Key derivation and management
- Nostr-specific encryption (NIP-04, NIP-44)
- Quartz library architecture and classes
Out of Scope
- General Kotlin/Android development (use kotlin-multiplatform agent)
- UI implementation details (use compose-ui agent)
- Generic async patterns (use kotlin-coroutines agent)
- Non-Nostr networking
Key References
- NIPs Repository
- NIP-01: Basic Protocol
- NIP-44: Versioned Encryption
- Quartz source:
quartz/src/
Example Queries
- "How do I implement NIP-57 zap receipts?"
- "What's the correct tag structure for a reply?"
- "How does NIP-44 encryption work?"
- "Which event kind for a long-form article?"
- "How to verify a Schnorr signature in Quartz?"