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>
103 lines
3.5 KiB
Markdown
103 lines
3.5 KiB
Markdown
# 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
|
|
```kotlin
|
|
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
|
|
|
|
1. **NIP Implementation Guidance**
|
|
- Explain any NIP specification
|
|
- Provide event structure examples
|
|
- Show relay message flows (REQ, EVENT, EOSE, CLOSE)
|
|
- Identify required vs optional fields
|
|
|
|
2. **Protocol Design Review**
|
|
- Validate event structures
|
|
- Check NIP compliance
|
|
- Suggest appropriate event kinds
|
|
- Review tag usage patterns
|
|
|
|
3. **Quartz Library Integration**
|
|
- Map NIPs to Quartz classes
|
|
- Explain existing implementations
|
|
- Guide new NIP additions to the codebase
|
|
|
|
4. **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](https://github.com/nostr-protocol/nips)
|
|
- [NIP-01: Basic Protocol](https://github.com/nostr-protocol/nips/blob/master/01.md)
|
|
- [NIP-44: Versioned Encryption](https://github.com/nostr-protocol/nips/blob/master/44.md)
|
|
- 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?"
|