Iterate on @welshman/domain following review: - base: add `group`/`protect`/`expires` behavior tags (parsed in base, emitted via addBehaviorTags before hashing) and an `extraTags` passthrough (opt-in via reservedTagKeys) so tag carry-over lives in one place; migrate Handler, Comment, Thread onto it. Comment gains nested root/parent ref structs + setters. - List: fix inverted keepTags; add clearTags/clearPublicTags/clearPrivateTags and use them in the relay/server list setters. - RelayList: preserve complementary read/write capability instead of dropping modeless entries. - Split Relay/Room membership ops into per-kind classes (RelayAddMember/ RelayRemoveMember, RoomAddMember/RoomRemoveMember) over a shared base. - TimeEvent (renamed from CalendarEvent): derive "D" day tags in toTemplate. - Feed: default to an empty feed, fail parse when the "feed" tag is missing. - RelaySet added; CommunityList renamed to GroupList; predicate bare add/remove mutators; RoomMeta uses randomId; PollResponse.selections drops pollType. - Remove ChannelList, FileServerList, Settings, and event-asserting getAddress/ display accessors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V67tPYdvh1qCkjEBhJGZUR
Welshman
A nostr toolkit focused on creating highly a configurable client system, extracted from the Coracle nostr client.
Linking
If you're developing an application which requires changes to welshman, you'll need to use npm link to link the two. This is an annoying process, and is only supported if using npm.
- Clone welshman and the repository that depends on it
- Within each
packagedirectory in welshman, runnpm link - Within your application directory, link all welshman dependencies simultaneously (or else only one will get linked. A command that does this is:
rm -rf node_modules; npm i; cat package.json|js '.dependencies|keys[]'|grep welshman|xargs npm link.
If you run npm install in your application directory, you'll need to repeat the final step above. Finally, if you're using the editor module, you may run into some dependency version conflicts. I recommend editing the command above to exclude the editor.
Agent Skills
Welshman ships with agent skills for AI coding tools. Each skill covers a specific package and is auto-loaded when relevant to your current task.
npx skills add coracle-social/welshman
This will prompt you to select which skills to install and which agent tool to install them for. Use -g to install globally across all your projects instead of just the current one.
See skills/README.md for the full list and details on how they activate.