Files
amethyst/.claude/core-skills-plan.md
Claude 60edd473c7 Refreshes .claude/ skill library: fixes stale refs, adds 4 new skills
- Updates CLAUDE.md tech stack to current versions (Compose 1.10.3, Kotlin 2.3.20).
- Reframes kotlin-multiplatform iOS as mature; adds secp256k1-kmp 0.23.0 references.
- Updates desktop-expert Main.kt references (code grew from ~270 to 1341 lines and
  NavigationRail moved to ui/deck/SinglePaneLayout.kt); replaces obsolete
  "hardcoded ctrl = true" anti-pattern note with accurate isMacOS branching.
- Removes compose-desktop.md (superseded by desktop-expert/).
- Adds nostr-expert references: nip19-bech32, event-factory, crypto-and-encryption,
  large-cache. Adds kotlin-expert/common-utilities, compose-expert/rich-text-parsing,
  android-expert/image-loading.
- New skills: account-state (Account + LocalCache), relay-client (subscriptions,
  filter assemblers, preloaders), feed-patterns (FeedFilter + FeedViewModel family),
  auth-signers (NostrSigner across internal / NIP-46 / NIP-55).
2026-04-21 21:00:45 +00:00

17 KiB

AmethystMultiplatform Skills Creation Plan

Overview

Create 8 hybrid domain skills combining general expertise with AmethystMultiplatform-specific patterns.

Approach: Each skill provides domain knowledge + project-specific implementation patterns from codebase.

Skills to Implement

1. kotlin-multiplatform COMPLETED

Focus: KMP architecture, jvmAndroid source set pattern, expect/actual

SKILL.md sections:

  • Mental model: KMP hierarchy as dependency graph
  • Source set architecture: commonMain → jvmAndroid → {androidMain, jvmMain}
  • The jvmAndroid pattern (unique to this project, verified in quartz/build.gradle.kts:132-149)
  • expect/actual mechanics with 24+ examples from codebase
  • iOS framework setup for Quartz distribution

Bundled resources:

  • references/source-set-hierarchy.md - Visual diagram + examples
  • references/expect-actual-catalog.md - All 24 expect/actual pairs with patterns
  • scripts/validate-kmp-structure.sh - Verify source set dependencies
  • assets/kmp-hierarchy-diagram.png - Visual graph

Differentiation: Existing kotlin-multiplatform agent = general KMP. This skill = Amethyst's unique jvmAndroid pattern, concrete examples.

Status: Skill created and packaged at .claude/skills/kotlin-multiplatform/


2. gradle-expert COMPLETED

Focus: Build optimization, dependency resolution, multi-module KMP troubleshooting

SKILL.md sections:

  • Build architecture: 4 modules, dependency flow
  • Version catalog mastery (libs.versions.toml)
  • Module dependency patterns (api vs implementation)
  • Android-specific: compileSdk, proguard
  • Desktop packaging: TargetFormat, distributions
  • Build performance: daemon, parallel, caching
  • Common errors: compose version conflicts, secp256k1 JNI variants

Bundled resources:

  • references/build-commands.md - Common gradle tasks
  • references/dependency-graph.md - Module visualization
  • references/version-catalog-guide.md - Version catalog patterns
  • references/common-errors.md - Troubleshooting guide
  • scripts/analyze-build-time.sh - Performance report
  • scripts/fix-dependency-conflicts.sh - Conflict patterns

Differentiation: Focus on 4-module structure, KMP + Android + Desktop combo, specific issues (compose conflicts).

Status: SKILL.md (549 lines) + 4 references + 2 scripts created at .claude/skills/gradle-expert/


3. kotlin-expert DRAFT COMPLETE

Focus: Flow state management, sealed hierarchies, immutability, DSL builders, inline/reified

SKILL.md sections:

  • Flow state management: StateFlow/SharedFlow patterns (AccountManager, RelayConnectionManager)
  • Sealed hierarchies: sealed class vs sealed interface decision trees (AccountState, SignerResult)
  • Immutability: @Immutable for Compose performance (173+ event classes)
  • DSL builders: Type-safe fluent APIs (TagArrayBuilder, TlvBuilder)
  • Inline functions: reified generics, performance optimization (OptimizedJsonMapper)
  • Value classes: Zero-cost wrappers (optimization opportunity)

Bundled resources:

  • references/flow-patterns.md - StateFlow/SharedFlow with AccountManager, RelayManager patterns
  • references/sealed-class-catalog.md - All 8 sealed types in quartz with usage patterns
  • references/dsl-builder-examples.md - TagArrayBuilder, PrivateTagArrayBuilder, TlvBuilder, custom DSL patterns
  • references/immutability-patterns.md - @Immutable annotation, data classes, ImmutableList/Map/Set

Differentiation: Complements kotlin-coroutines agent (deep async). This skill = Amethyst Kotlin idioms (StateFlow state management, sealed for type safety, @Immutable for Compose, DSL builders).

Status: SKILL.md (455 lines) + 4 references created at .claude/skills/kotlin-expert/

10-Step Progress:

  1. UNDERSTAND - Defined scope (Flow/sealed/DSL/immutability/inline)
  2. EXPLORE - Found 173 @Immutable events, StateFlow in AccountManager/RelayManager, SignerResult generics, TagArrayBuilder
  3. RESEARCH - StateFlow vs SharedFlow, sealed class vs interface best practices 2025
  4. SYNTHESIZE - Extracted Amethyst patterns (hot flows for state, sealed for results, @Immutable for perf)
  5. DRAFT - Created SKILL.md + 4 reference files (flow, sealed, dsl, immutability)
  6. SELF-CRITIQUE - Reviewed against 4 Core Truths (all PASS)
  7. ITERATE - Draft complete (skipping deep iteration for now)
  8. ⏸️ TEST - Deferred to later (requires real usage scenarios)
  9. ⏸️ FINALIZE - Deferred to later
  10. DOCUMENT - Updated plan

4. compose-expert COMPLETED

Focus: Shared composables, state management, animations, Material3

SKILL.md sections:

  • Shared composables philosophy (100+ already shared in commons/commonMain)
  • State management: remember, derivedStateOf, produceState (visual patterns)
  • Recomposition optimization: @Stable/@Immutable (visual usage)
  • Material3 conventions: theming
  • Custom icons: ImageVector builders (robohash pattern)
  • Platform differences: Desktop vs Android UI
  • Performance: lazy lists, image loading
  • Decision framework: share by default in commonMain

Bundled resources:

  • references/shared-composables-catalog.md - Complete catalog with patterns
  • references/state-patterns.md - State hoisting, derivedStateOf examples
  • references/icon-assets.md - ImageVector patterns, roboBuilder DSL
  • scripts/find-composables.sh - Grep @Composable utility

Differentiation: Multiplatform Compose patterns, shared vs platform UI philosophy, Amethyst conventions (robohash, custom icons). Delegates navigation to platform experts, defers Kotlin language details to kotlin-expert.

Status: SKILL.md (578 lines) + 3 references + 1 script created at .claude/skills/compose-expert/


5. ios-expert

Focus: iosMain patterns, Swift/KMP interop, XCFramework generation

SKILL.md sections:

  • iOS source sets: iosMain, iosArm64Main
  • Swift interop: type mapping, nullability
  • expect/actual iOS: 10+ examples from quartz/iosMain
  • XCFramework setup: baseName = "quartz-kmpKit"
  • Platform APIs: platform.posix, CFNetwork, Security
  • CocoaPods integration
  • XCode project setup

Bundled resources:

  • references/ios-actual-implementations.md - 10 iosMain actuals
  • references/swift-interop-guide.md - Type mapping
  • references/xcode-integration.md - XCode setup
  • scripts/generate-xcframework.sh - Build all iOS targets

Differentiation: iOS platform specialization with Amethyst iosMain patterns, Quartz framework setup.


6. desktop-expert DRAFT COMPLETE

Focus: Desktop UX, window management, Compose Desktop APIs, OS-specific conventions

SKILL.md sections:

  • Desktop entry point: application {} DSL
  • Window management: WindowState, positioning, multi-window
  • Menu system: MenuBar, keyboard shortcuts (OS-aware)
  • System tray: minimize to tray
  • Desktop navigation: NavigationRail pattern (vs Android bottom nav)
  • File system: Desktop.getDesktop(), file pickers, drag-drop
  • Desktop UX principles: keyboard-first, native feel, tooltips
  • OS-specific behavior: macOS vs Windows vs Linux
  • Platform detection: PlatformDetector utility
  • Packaging: DMG, MSI, DEB distribution

Bundled resources:

  • references/desktop-compose-apis.md - Complete Desktop API catalog (Window, Tray, MenuBar, Dialog, etc.)
  • references/desktop-navigation.md - NavigationRail vs BottomNav patterns
  • references/keyboard-shortcuts.md - Standard shortcuts by OS with DesktopShortcuts helper
  • references/os-detection.md - Platform detection, file paths, system integration

Differentiation: Desktop-only APIs, OS conventions (Cmd vs Ctrl), NavigationRail, delegates build to gradle-expert and shared code to kotlin-multiplatform/compose-expert.

Status: SKILL.md + 4 references created at .claude/skills/desktop-expert/

10-Step Progress:

  1. UNDERSTAND - Defined desktop usage scenarios
  2. EXPLORE - Analyzed desktopApp/ module patterns (Main.kt, FeedScreen.kt, LoginScreen.kt)
  3. RESEARCH - Compose Desktop APIs, OS-specific UX conventions (JetBrains docs, HIG)
  4. SYNTHESIZE - Extracted desktop principles from codebase
  5. DRAFT - Created SKILL.md + 4 reference files
  6. SELF-CRITIQUE - Reviewed against 4 Core Truths (all PASS)
  7. ITERATE - Draft complete (skipping deep iteration for now)
  8. ⏸️ TEST - Deferred to later (requires real desktop scenarios)
  9. ⏸️ FINALIZE - Deferred to later
  10. DOCUMENT - Updated plan

7. android-expert DRAFT COMPLETE

Focus: Android platform APIs, navigation, permissions, Material Design

SKILL.md sections:

  • Android module structure: amethyst/ layout
  • Navigation: Navigation Compose, bottom nav
  • Permissions: runtime (camera, biometric)
  • Platform APIs: Intent, Context, ContentResolver
  • Lifecycle: Lifecycle-aware, ViewModel
  • Material Design: Android Material 3
  • Build config: Proguard, R8
  • Android UX: mobile-first patterns

Bundled resources:

  • references/android-navigation.md - Navigation Compose
  • references/android-permissions.md - Permission handling
  • references/proguard-rules.md - Proguard explanation
  • scripts/analyze-apk-size.sh - APK optimization

Differentiation: amethyst module structure, Android vs desktop patterns, Amethyst conventions.

Status: SKILL.md + 3 references + 1 script created at .claude/skills/android-expert/

10-Step Progress:

  1. UNDERSTAND - Defined Android usage scenarios
  2. EXPLORE - Analyzed amethyst/ module patterns
  3. RESEARCH - Android best practices + KMP Android patterns
  4. SYNTHESIZE - Extracted Android principles from codebase
  5. DRAFT - Initialized skill, created resources
  6. SELF-CRITIQUE - Reviewed against 4 Core Truths (all PASS)
  7. ITERATE - Draft complete (skipping deep iteration for now)
  8. ⏸️ TEST - Deferred to later
  9. ⏸️ FINALIZE - Deferred to later
  10. DOCUMENT - Updated plan

8. nostr-expert COMPLETED

Focus: Nostr protocol, NIPs, Quartz architecture, event patterns

SKILL.md sections:

  • Quartz architecture: package structure by NIP (57 NIPs implemented)
  • Event anatomy: IEvent, Event, kinds, tags
  • EventTemplate & TagArrayBuilder DSL patterns
  • Common event types: TextNoteEvent, MetadataEvent, ReactionEvent, Addressable events
  • Tag patterns: e-tag, p-tag, a-tag, d-tag with builders
  • Threading (NIP-10): reply/root markers
  • Cryptography: secp256k1 signing, NIP-44 encryption
  • Bech32 encoding: npub, nsec, note, nevent
  • Event validation & verification
  • Common workflows: publishing, querying, zaps, gift-wrapped DMs

Bundled resources:

  • references/nip-catalog.md - All 57 NIPs with package locations (179 lines)
  • references/event-hierarchy.md - Event class hierarchy, kind classifications (293 lines)
  • references/tag-patterns.md - Tag structure, TagArrayBuilder DSL, parsing (251 lines)
  • scripts/nip-lookup.sh - Find NIP implementations by number or search term

Differentiation: nostr-protocol agent = NIP specs. This skill = Quartz implementation patterns (57 NIPs), concrete code examples from codebase.

Status: SKILL.md (552 lines) + 3 references + 1 script created at .claude/skills/nostr-expert/


Implementation Workflow

Using skill-creator 10-step methodology per skill:

Overall Plan:

  1. UNDERSTAND - 8 skills defined, user clarifications obtained
  2. EXPLORE - Codebase analyzed via Explore agent
  3. RESEARCH - Domain patterns identified via Plan agent
  4. SYNTHESIZE - Skills designed above

Per-Skill Implementation:

  • kotlin-multiplatform: COMPLETED
  • gradle-expert: COMPLETED
  • kotlin-expert: COMPLETED
  • compose-expert: COMPLETED
  • desktop-expert: COMPLETED
  • android-expert: COMPLETED
  • nostr-expert: COMPLETED
  • ios-expert: ⏸️ DEFERRED (iOS not yet implemented in AmethystMultiplatform)

Critical Files Referenced

Build patterns:

  • /quartz/build.gradle.kts:132-149 - jvmAndroid source set
  • /commons/build.gradle.kts - Shared UI setup

Code patterns:

  • /quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip10Notes/TextNoteEvent.kt - Event structure
  • /commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/account/AccountManager.kt - StateFlow pattern
  • /quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/utils/Platform.kt - expect/actual

Documentation:

  • /docs/shared-ui-analysis.md - UI migration strategy

Output Location

.claude/skills/<skill-name>/ for each skill

Next Steps

  1. Save this plan as .claude/core-skills-plan.md for reference
  2. Completed kotlin-multiplatform skill
  3. Completed gradle-expert skill
  4. Completed kotlin-expert skill
  5. Completed compose-expert skill
  6. Completed desktop-expert skill
  7. Completed android-expert skill
  8. Completed nostr-expert skill
  9. ⏸️ Deferred ios-expert (iOS not yet implemented in codebase)

Current Status: 7/8 Skills Completed

Completed Skills (Auto-loaded from .claude/skills/):

  1. kotlin-multiplatform (KMP architecture, jvmAndroid pattern, expect/actual)
  2. gradle-expert (Build system, dependencies, version catalog, troubleshooting)
  3. kotlin-expert (Flow state, sealed classes, @Immutable, DSL builders)
  4. compose-expert (Shared composables, state management, Material3, ImageVector)
  5. desktop-expert (Desktop UX, window management, Compose Desktop APIs)
  6. android-expert (Android platform APIs, navigation, permissions)
  7. nostr-expert (Nostr protocol, Quartz implementation, NIPs, events, tags)

Deferred:

  • ⏸️ ios-expert (iOS not implemented yet in AmethystMultiplatform)

Skill Loading

All completed skills are automatically loaded when this project opens. Skills are auto-discovered from .claude/skills/ directory.

To manually verify skills are loaded:

ls -1 .claude/skills/

Should show:

  • android-expert/
  • compose-expert/
  • desktop-expert/
  • gradle-expert/
  • kotlin-expert/
  • kotlin-multiplatform/
  • nostr-expert/

Phase 2 (2026-04): Audit & Expansion

After a full audit of the skill library, the following changes were made:

Stale references fixed

  • CLAUDE.md tech-stack versions updated to Compose 1.10.3 / Kotlin 2.3.20.
  • kotlin-multiplatform reframed iOS as a mature target (not future) and added secp256k1-kmp 0.23.0 version notes.
  • desktop-expert Main.kt line references rewritten to match current layout (Main.kt grew from ~270 to ~1341 lines; NavigationRail moved to ui/deck/SinglePaneLayout.kt:97); the obsolete "hardcoded ctrl = true anti-pattern" section replaced with a note that isMacOS branching is now applied throughout.

Redundant files removed

  • .claude/skills/compose-desktop.md deleted (superseded by desktop-expert/). quartz-kmp.md kept as a small breadcrumb pointer.

New references added to existing skills

  • nostr-expert/references/nip19-bech32.mdNip19Parser, Bech32Util, TlvBuilder, entities.
  • nostr-expert/references/event-factory.mdEventFactory dispatch + registering a new kind.
  • nostr-expert/references/crypto-and-encryption.mdEventHasher, Secp256k1Instance, NIP-44, SharedKeyCache.
  • nostr-expert/references/large-cache.mdLargeCache<K,V> + ICacheOperations.
  • kotlin-expert/references/common-utilities.mdNumberFormatters, TimeUtils, Hex, PubKeyFormatter, CoroutinesExt.launchIO, etc.
  • compose-expert/references/rich-text-parsing.mdRichTextParser, UrlParser, GalleryParser, NIP-92 imeta.
  • android-expert/references/image-loading.md — Coil 3.x setup, custom fetchers, MyAsyncImage, RobohashAsyncImage.

New skills created

  • account-state/Account.kt (50+ StateFlow properties) and LocalCache.kt event store.
    • references/account-state-flow.md, references/local-cache.md
  • relay-client/ComposeSubscriptionManager, filter assemblers, preloaders (MetadataPreloader, MetadataRateLimiter).
    • references/filter-assemblers.md, references/preloaders.md
  • feed-patterns/FeedFilter, AdditiveComplexFeedFilter, FeedViewModel hierarchy in commons/.
    • references/feed-filter-composition.md, references/viewmodel-base-classes.md
  • auth-signers/NostrSigner abstraction across NostrSignerInternal, NostrSignerRemote (NIP-46), NostrSignerExternal (NIP-55).
    • references/nip46-remote-signer.md, references/nip55-android-signer.md

Updated skills directory (Phase 2)

- android-expert/
- auth-signers/                (new)
- account-state/               (new)
- compose-expert/
- desktop-expert/
- feed-patterns/               (new)
- find-missing-translations/
- find-non-lambda-logs/
- gradle-expert/
- kotlin-coroutines/
- kotlin-expert/
- kotlin-multiplatform/
- nostr-expert/
- quartz-integration/
- relay-client/                (new)
- quartz-kmp.md                (breadcrumb pointer)

Still deferred

  • ⏸️ ios-expert — iOS targets are mature but iOS-specific UI work hasn't surfaced yet in this repo.