-
@ Chris
2025-03-25 16:05:27draft
optional
Abstract
This NIP defines a new event kind for sharing and storing code snippets. Unlike regular text notes (
kind:1
), code snippets have specialized metadata like language, extension, and other code-specific attributes that enhance discoverability, syntax highlighting, and improved user experience.Event Kind
This NIP defines
kind:1337
as a code snippet event.The
.content
field contains the actual code snippet text.Optional Tags
-
filename
- Filename of the code snippet -
l
- Programming language name (lowercase). Examples: "javascript", "python", "rust" -
extension
- File extension (without the dot). Examples: "js", "py", "rs" -
description
- Brief description of what the code does -
runtime
- Runtime or environment specification (e.g., "node v18.15.0", "python 3.11") -
license
- License under which the code is shared (e.g., "MIT", "GPL-3.0", "Apache-2.0") -
dep
- Dependency required for the code to run (can be repeated) -
repo
- Reference to a repository where this code originates
Format
```json {
"id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>",
"pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>",
"created_at":
, "kind": 1337,
"content": "function helloWorld() {\n console.log('Hello, Nostr!');\n}\n\nhelloWorld();",
"tags": [
["l", "javascript"], ["extension", "js"], ["filename", "hello-world.js"], ["description", "A basic JavaScript function that prints 'Hello, Nostr!' to the console"], ["runtime", "node v18.15.0"], ["license", "MIT"], ["repo", "https://github.com/nostr-protocol/nostr"]
],
"sig": "<64-bytes signature of the id>"
} ```
Client Behavior
Clients that support this NIP SHOULD:
-
Display code snippets with proper syntax highlighting based on the language.
-
Allow copying the full code snippet with a single action.
-
Render the code with appropriate formatting, preserving whitespace and indentation.
-
Display the language and extension prominently.
-
Provide "run" functionality for supported languages when possible.
-
Display the description (if available) as part of the snippet presentation.
Clients MAY provide additional functionality such as:
-
Code editing capabilities
-
Forking/modifying snippets
-
Creating executable environments based on the runtime/dependencies
-
Downloading the snippet as a file using the provided extension
-
Sharing the snippet with attribution
References
nip #grownostr
-