feat: kind schemas and better man pages

This commit is contained in:
Alejandro Gómez
2025-12-18 10:05:45 +01:00
parent 3b06e23686
commit a7dd4635dc
13 changed files with 2911 additions and 257 deletions

View File

@@ -39,7 +39,7 @@ export const manPages: Record<string, ManPageEntry> = {
"nip 19 View the bech32 encoding specification",
"nip b0 View the NIP-B0 specification",
],
seeAlso: ["feed", "kind"],
seeAlso: ["nips", "kind", "kinds"],
appId: "nip",
category: "Documentation",
argParser: (args: string[]) => {
@@ -67,7 +67,7 @@ export const manPages: Record<string, ManPageEntry> = {
"kind 0 View metadata event kind",
"kind 1 View short text note kind",
],
seeAlso: ["nip"],
seeAlso: ["kinds", "nip", "nips"],
appId: "kind",
category: "Documentation",
argParser: (args: string[]) => ({ number: args[0] || "1" }),
@@ -79,10 +79,6 @@ export const manPages: Record<string, ManPageEntry> = {
synopsis: "help",
description:
"Display general help information about Grimoire and available commands.",
examples: [
"Use man <command> to view detailed documentation",
"Click any command to open its man page",
],
seeAlso: ["man", "nip", "kind"],
appId: "man",
category: "System",
@@ -137,7 +133,7 @@ export const manPages: Record<string, ManPageEntry> = {
},
],
examples: [
"man feed View the feed command manual",
"man req View the req command manual",
"man nip View the nip command manual",
],
seeAlso: ["help"],
@@ -223,33 +219,32 @@ export const manPages: Record<string, ManPageEntry> = {
},
],
examples: [
"req -k 1 -l 20 Get 20 recent notes (auto-selects optimal relays via NIP-65)",
"req -k 1,3,7 -l 50 Get notes, contact lists, and reactions",
"req -k 0 -a npub1... Get profile (queries author's outbox relays)",
"req -k 1 -a user@domain.com Get notes from NIP-05 identifier",
"req -k 1 -a dergigi.com Get notes from bare domain (resolves to _@dergigi.com)",
"req -k 1 -a npub1...,npub2... Get notes from multiple authors (balances across outbox relays)",
"req -a $me Get all your events (queries your outbox relays)",
"req -k 1 -a $contacts --since 24h Get notes from contacts (queries their outbox relays)",
"req -k 1 -a $contacts --since 7d Get notes from contacts in last week",
"req -k 1 -a $contacts --since 3mo Get notes from contacts in last 3 months",
"req -k 1 -a $contacts --since 1y Get notes from contacts in last year",
"req -p $me -k 1,7 Get replies and reactions to you (queries your inbox relays)",
"req -k 1 -a $me -a $contacts Get notes from you and contacts",
"req -k 9735 -p $me --since 7d Get zaps you received (queries your inbox)",
"req -k 9735 -P $me --since 7d Get zaps you sent",
"req -k 9735 -P $contacts Get zaps sent by your contacts",
"req -k 1 -p verbiricha@habla.news Get notes mentioning user (queries their inbox)",
"req -k 1 --since 1h relay.damus.io Get notes from last hour (manual relay override)",
"req -k 1 --since 7d --until now Get notes from last week up to now",
"req -k 1 --close-on-eose Get recent notes and close after EOSE",
"req -t nostr,bitcoin -l 50 Get 50 events tagged #nostr or #bitcoin",
"req --tag a 30023:abc...:article Get events referencing addressable event (#a tag)",
"req -T r https://example.com Get events referencing URL (#r tag)",
"req -k 30023 --tag d article1,article2 Get specific replaceable events by d-tag",
"req --tag g geohash123 -l 20 Get 20 events with geolocation tag",
"req --search bitcoin -k 1 Search notes for 'bitcoin'",
"req -k 1 relay1.com relay2.com Query specific relays (overrides auto-selection)",
"req -k 1 -l 20 Get 20 recent notes (auto-selects optimal relays via NIP-65)",
"req -k 1,3,7 -l 50 Get notes, contact lists, and reactions",
"req -k 0 -a fiatjaf.com Get profile (queries author's outbox relays)",
"req -k 1 -a verbiricha@habla.news Get notes from NIP-05 identifier",
"req -k 1 -a dergigi.com Get notes from bare domain (resolves to _@dergigi.com)",
"req -k 1 -a fiatjaf.com,dergigi.com Get notes from multiple authors (balances across outbox relays)",
"req -a $me Get all your events (queries your outbox relays)",
"req -k 1 -a $contacts --since 24h Get notes from contacts (queries their outbox relays)",
"req -k 1 -a $contacts --since 7d Get notes from contacts in last week",
"req -k 1 -a $contacts --since 3mo Get notes from contacts in last 3 months",
"req -k 1 -a $contacts --since 1y Get notes from contacts in last year",
"req -p $me -k 1,7 Get replies and reactions to you (queries your inbox relays)",
"req -k 1 -a $me -a $contacts Get notes from you and contacts",
"req -k 9735 -p $me --since 7d Get zaps you received (queries your inbox)",
"req -k 9735 -P $me --since 7d Get zaps you sent",
"req -k 9735 -P $contacts Get zaps sent by your contacts",
"req -k 1 -p verbiricha@habla.news Get notes mentioning user (queries their inbox)",
"req -k 1 --since 1h relay.damus.io Get notes from last hour (manual relay override)",
"req -k 1 --since 7d --until now Get notes from last week up to now",
"req -k 1 --close-on-eose Get recent notes and close after EOSE",
"req -t nostr,grimoire,bitcoin -l 50 Get 50 events tagged #nostr, #grimoire, or #bitcoin",
"req --tag a 30023:7fa56f5d6962ab1e3cd424e758c3002b8665f7b0d8dcee9fe9e288d7751ac194:grimoire Get events referencing addressable event (#a tag)",
"req -T r grimoire.rocks Get events referencing URL (#r tag)",
"req -k 30023 --tag d badges,grimoire Get specific replaceable events by d-tag",
"req --search bitcoin -k 1 Search notes for 'bitcoin'",
"req -k 1 theforest.nostr1.com relay.damus.io Query specific relays (overrides auto-selection)",
],
seeAlso: ["kind", "nip"],
appId: "req",
@@ -323,11 +318,9 @@ export const manPages: Record<string, ManPageEntry> = {
},
],
examples: [
"open note1abc... Open event by note1 ID",
"open nevent1xyz... Open event with relay hints",
"open naddr1def... Open addressable event",
"open abc123... Open event by hex ID (64 chars)",
"open 30023:abc123...:my-article Open by address pointer (kind:pubkey:d-tag)",
"open nevent1qgs8lft0t45k92c78n2zfe6ccvqzhpn977cd3h8wnl579zxhw5dvr9qqyz4nf2hlglhzhezygl5x2fdsg332fyd9q0p8ja7kvn0g53e0edzyxa32zg8 Open event with relay hints",
"open naddr1qvzqqqrkvupzpn6956apxcad0mfp8grcuugdysg44eepex68h50t73zcathmfs49qy88wumn8ghj7mn0wvhxcmmv9uq3wamnwvaz7tmjv4kxz7fwdehhxarj9e3xzmny9uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uq3qamnwvaz7tmwdaehgu3wd4hk6tcpz9mhxue69uhkummnw3ezuamfdejj7qghwaehxw309a3xjarrda5kuetj9eek7cmfv9kz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3samnwvaz7tmxd9k8getj9ehx7um5wgh8w6twv5hszymhwden5te0danxvcmgv95kutnsw43z7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcpr9mhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9uqsuamnwvaz7tmev9382tndv5hsz9nhwden5te0wfjkccte9e3k76twdaeju6t09uq3vamnwvaz7tmjv4kxz7fwxvuns6np9eu8j730qqjr2vehvyenvdtr94nrzetr956rgctr94skvvfs95eryep3x3snwve389nxy97cjwx Open addressable event",
"open 30023:7fa56f5d6962ab1e3cd424e758c3002b8665f7b0d8dcee9fe9e288d7751ac194:grimoire Open by address pointer (kind:pubkey:d-tag)",
],
seeAlso: ["req", "kind"],
appId: "open",
@@ -350,12 +343,11 @@ export const manPages: Record<string, ManPageEntry> = {
},
],
examples: [
"profile npub1abc... Open profile by npub",
"profile nprofile1xyz... Open profile with relay hints",
"profile abc123... Open profile by hex pubkey (64 chars)",
"profile user@domain.com Open profile by NIP-05 identifier",
"profile jack@cash.app Open profile using NIP-05",
"profile fiatjaf.com Open profile by NIP-05 identifier",
"profile nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qgmwaehxw309a6xsetxdaex2um59ehx7um5wgcjucm0d5hsz9mhwden5te0veex2mnn9ehx7um5wgcjucm0d5hszxrhwden5te0ve5kcar9wghxummnw3ezuamfdejj7qpq07jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2q0al9p4 Open profile with relay hints",
"profile 3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d Open profile by hex pubkey (64 chars)",
"profile dergigi.com Open profile by domain (resolves to _@dergigi.com)",
"profile jack@cash.app Open profile using NIP-05",
],
seeAlso: ["open", "req"],
appId: "profile",
@@ -391,11 +383,11 @@ export const manPages: Record<string, ManPageEntry> = {
},
],
examples: [
"encode npub abc123... Encode pubkey to npub",
"encode nprofile abc123... --relay wss://relay.example.com",
"encode note def456... Encode event ID to note",
"encode nevent def456... --relay wss://relay.example.com --author abc123...",
"encode naddr 30023:abc123...:article --relay wss://relay.example.com",
"encode npub 3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d Encode pubkey to npub",
"encode nprofile 3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d --relay wss://theforest.nostr1.com Encode profile with relay",
"encode note 5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36 Encode event ID to note",
"encode nevent 5c83da77af1dec6d7289834998ad7aafbd9e2191396d75ec3cc27f5a77226f36 --relay wss://theforest.nostr1.com --author 3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d Encode event with metadata",
"encode naddr 30023:3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d:my-article --relay wss://theforest.nostr1.com Encode addressable event",
],
seeAlso: ["decode"],
appId: "encode",
@@ -417,10 +409,9 @@ export const manPages: Record<string, ManPageEntry> = {
},
],
examples: [
"decode npub1abc... Decode npub to hex pubkey",
"decode nevent1xyz... Decode nevent showing ID, relays, author",
"decode naddr1def... Decode naddr showing kind, pubkey, identifier",
"decode nprofile1ghi... Decode nprofile with relay hints",
"decode nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qgmwaehxw309a6xsetxdaex2um59ehx7um5wgcjucm0d5hsz9mhwden5te0veex2mnn9ehx7um5wgcjucm0d5hszxrhwden5te0ve5kcar9wghxummnw3ezuamfdejj7qpq07jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2q0al9p4 Decode nprofile with relay hints",
"decode nevent1qgs8lft0t45k92c78n2zfe6ccvqzhpn977cd3h8wnl579zxhw5dvr9qqyz4nf2hlglhzhezygl5x2fdsg332fyd9q0p8ja7kvn0g53e0edzyxa32zg8 Decode nevent showing ID, relays, author",
"decode naddr1qvzqqqrkvupzpn6956apxcad0mfp8grcuugdysg44eepex68h50t73zcathmfs49qy88wumn8ghj7mn0wvhxcmmv9uq3wamnwvaz7tmjv4kxz7fwdehhxarj9e3xzmny9uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uq3qamnwvaz7tmwdaehgu3wd4hk6tcpz9mhxue69uhkummnw3ezuamfdejj7qghwaehxw309a3xjarrda5kuetj9eek7cmfv9kz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3samnwvaz7tmxd9k8getj9ehx7um5wgh8w6twv5hszymhwden5te0danxvcmgv95kutnsw43z7qgawaehxw309ahx7um5wghxy6t5vdhkjmn9wgh8xmmrd9skctcpr9mhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9uqsuamnwvaz7tmev9382tndv5hsz9nhwden5te0wfjkccte9e3k76twdaeju6t09uq3vamnwvaz7tmjv4kxz7fwxvuns6np9eu8j730qqjr2vehvyenvdtr94nrzetr956rgctr94skvvfs95eryep3x3snwve389nxy97cjwx Decode naddr showing kind, pubkey, identifier",
],
seeAlso: ["encode"],
appId: "decode",
@@ -444,7 +435,6 @@ export const manPages: Record<string, ManPageEntry> = {
],
examples: [
"relay wss://relay.damus.io View relay information",
"relay relay.primal.net Auto-adds wss:// protocol",
"relay nos.lol View relay capabilities",
],
seeAlso: ["req", "profile"],