protocol
npx skills add https://github.com/simhacker/moollm --skill protocol
Agent 安装分布
Skill 文档
PROTOCOL
“Protocol names ARE K-lines.”
MOOLLM protocol symbols are Minsky’s K-lines made concrete and greppable.
Protocol Names = K-Lines
A K-line (Minsky, Society of Mind) is a mental structure that, when activated, reactivates an entire constellation of knowledge, skills, and associations.
Protocol names are exactly this:
YAML-JAZZ â Activates: semantic comments, jazz interpretation, LLM-as-musician
POSTEL â Activates: charitable interpretation, robustness, collaboration
PLAY-LEARN-LIFT â Activates: exploration, pattern-finding, crystallization, sharing
COHERENCE-ENGINE â Activates: consistency, constraints, orchestration, referee, simulation, DM
Type the name â activate the tradition â invoke the behavior.
The UPPER-CASE-HYPHENATED format makes these K-lines findable.
Naming Convention
| Rule | Example | Why |
|---|---|---|
| ALL CAPS | YAML-JAZZ not yaml-jazz |
Stands out in prose |
| Hyphen-separated | PLAY-LEARN-LIFT not PLAY_LEARN_LIFT |
Shell-friendly, readable |
| No colons | POSTEL not WP:POSTEL |
Cleaner than Wikipedia |
| Semantic | ROBUST-FIRST not RF |
Self-documenting |
Why This Convention?
1. Grep-Friendly
# Find all uses of a protocol
grep -r "YAML-JAZZ" .
# Find all protocol definitions
grep -r "^[A-Z-]*:" PROTOCOLS.yml
# Find all mentions in docs
grep -rn "POSTEL\|PLAY-LEARN-LIFT" skills/
2. Vector-Search Friendly
The UPPER-CASE format creates distinct embeddings. When you search for “YAML-JAZZ”, you get:
- The protocol definition
- Files that reference it
- Examples that demonstrate it
Not general YAML documentation.
3. Human-Scannable
In prose, protocols pop:
When parsing user input, apply POSTEL (charitable interpretation). If the command is ambiguous, use YAML-JAZZ to infer intent.
You can’t miss them.
Protocol Layers
Kernel Protocols (Low-Level)
Defined in kernel/, fundamental to operation:
| Protocol | Purpose | Location |
|---|---|---|
FILES-AS-STATE |
Everything is files | kernel/constitution-core.md |
WHY-REQUIRED |
Tool calls need reasons | kernel/tool-calling-protocol.md |
APPEND-ONLY |
Never modify logs | kernel/constitution-template.md |
MINIMAL-DIFF |
Change only what’s needed | kernel/constitution-core.md |
Skill Protocols (Mid-Level)
Defined in skills/, behavioral patterns:
| Protocol | Purpose | Location |
|---|---|---|
PLAY-LEARN-LIFT |
The methodology | skills/play-learn-lift/ |
SOUL-CHAT |
Everything speaks | skills/soul-chat/ |
POSTEL |
Charitable interpretation | skills/postel/ |
YAML-JAZZ |
Comments carry meaning | skills/yaml-jazz/ |
Ad-Hoc Protocols (Emergent)
Mentioned in conversations, examples, documents:
# In a soul-chat document
We should apply KITCHEN-RULES here â no running,
always clean up, respect the fridge contents.
# In an adventure room
This room follows GRUE-SAFE protocol â magically lit.
These don’t need formal definitions. Naming them makes them real.
Where Protocols Live
Central Registry
PROTOCOLS.yml â The master list:
YAML-JAZZ:
meaning: "Comments carry meaning. Data is interpreted."
location: kernel/constitution-core.md §3
invoke_when: "Writing or reading YAML with semantic intent"
Embedded in Files
Protocols can be defined inline where they’re used:
# In a room's ROOM.yml
protocols:
DARK-ROOM:
meaning: "No light source = grue danger"
applies_when: "player enters without lit lamp"
Referenced in Prose
Just mention them:
This adventure follows REINCARNATION protocol â death returns you to start, inventory preserved.
The name IS the definition until someone formalizes it.
Protocol Lifecycle
Mentioned â Documented â Formalized â Skill
â â â â
"Let's Entry in Directory Full
try PROTOCOLS in PROTOTYPE
FOOD-CHAIN" .yml skills/ + templates
Most protocols stay informal. Only crystallize when needed.
K-REFs: File Pointers as K-Lines
A K-REF is a K-line that points to a specific location in a file with optional metadata:
/path/to/file.md:42-58 # section_type | preview text
K-REF Format
PATH[:LINE[-END]][#ANCHOR][?SEARCH] # TYPE [LABEL] SEVERITY - DESCRIPTION
EXCERPT or MASKED_VALUE
Components:
- PATH â Absolute file path (if no line number, refers to whole file)
- LINE â Line number (1-based), optionally with column
:LINE:COL. Omit for whole file. - END â Optional end line or column for ranges
- #ANCHOR â Jump to heading/section (like URL fragments)
- ?SEARCH â Find first match of pattern (like URL query)
- TYPE â What was found (uuid, secret, user_prompt, tool_call, etc.)
- LABEL â Optional redact label like
[SSH_KEY] - SEVERITY â Icon: ð´ critical, ð high, ð¡ medium, ðµ low, â¹ï¸ info
- DESCRIPTION â Human-readable explanation
- EXCERPT â Surrounding context or masked value
Location Specifiers
| Format | Meaning | Example |
|---|---|---|
/path/file |
Whole file | /etc/config.yml |
/path/file:42 |
Line 42 | /src/main.py:42 |
/path/file:42-58 |
Lines 42-58 | /src/main.py:42-58 |
/path/file:42:10-46 |
Line 42, cols 10-46 | /src/main.py:42:10-46 |
/path/file#section |
Anchor/heading | /docs/API.md#authentication |
/path/file?pattern |
Search for pattern | /src/main.py?def process_data |
/path/file#section?pattern |
Section + search | /docs/API.md#errors?401 |
Anchor Types
# Markdown headings (slugified)
/README.md#installation
/SKILL.md#k-ref-format
# YAML keys (dot-path)
/config.yml#server.port
/CARD.yml#methods.K-REF
# Code symbols (function/class)
/main.py#def:process_data
/main.py#class:AuditRunner
# HTML-style id
/page.html#footer
Search Patterns
# Literal string (default)
/file.py?def main
# Regex (prefix with ~)
/file.py?~def\s+\w+\(
# First match of pattern
/transcript.txt?user:
# Combine with line context
/file.py?def main # function - Jump to main()
Examples
/path/to/config.yml # config - Whole file reference
/path/to/SKILL.md#k-refs # section - Jump to K-REFs section
/path/to/main.py?def audit # search - Find audit function
/path/transcript.txt:91:12-48 # uuid â¹ï¸
fe18ce96-5200-4e15-acd3-190695de6295
/path/transcript.txt:7528:18-45 # private_key ([PRIVATE_KEY]) ð´ - Private key header
********** ******* ********
/path/config.json:15 # password ([PASSWORD]) ð - Database password
************
Images Work Too!
Cursor (and other orchestrators) can read absolute file paths directly â INCLUDING IMAGES!
/Users/me/Screenshots/error.png # screenshot - Analyze this error
/tmp/architecture-diagram.jpg # diagram - Explain this system
/path/to/chart.png # data - What trends do you see?
No line numbers for images (obviously). Just the absolute path.
This is powerful:
- Point to any image on disk
- Cursor reads and analyzes it
- Works with screenshots, diagrams, charts, photos
- Supports: jpeg, png, gif, webp
Security note: Cursor can read ANYWHERE on your disk, not just the workspace. Powerful, but be aware.
Sister Script Methodology
Problem: LLMs have limited context windows. Dumping entire files wastes tokens.
Solution: Sister scripts emit K-REFs (pointers) instead of full content:
# Sister script â K-REF â LLM flow
kref_flow:
source: "cursor-mirror (sister script)"
produces: "K-REFs (pointers)"
consumer: "LLM reads only what it needs"
- Scan â Script searches large data (transcripts, databases)
- Emit â Output K-REFs pointing to relevant sections
- Read â LLM selectively reads only the referenced ranges
This is reference by pointer, not by value â parsimonious context.
K-REF Output Modes
| Mode | Command | Use Case |
|---|---|---|
| K-REF | --emit-kref |
Human/LLM navigation |
| REDACT | --emit-redact |
Pipe to masking tool |
| JSON | --json |
Programmatic processing |
Example: cursor-mirror as Sister Script
# Emit K-REFs for secrets (LLM reads just the pointers)
cursor-mirror audit --patterns secrets --emit-kref
# Output:
# /path/file.txt:42:10-46 # openai_key ([OPENAI_KEY]) ð´ - OpenAI API key
# sk-proj-****...(48 chars)...****
# LLM can then selectively read context around line 42
Commands
| Command | Action |
|---|---|
PROTOCOL [name] |
Describe or invoke a protocol |
PROTOCOLS |
List defined protocols |
DEFINE-PROTOCOL [name] |
Add to PROTOCOLS.yml |
GREP-PROTOCOL [name] |
Find all references |
K-REF [path:line] |
Navigate to a K-REF location |
Protocol Symbols
| Symbol | Meaning |
|---|---|
PROTOCOL |
This meta-protocol |
K-LINE |
Minsky’s concept â name activates tradition |
K-REF |
K-line as file pointer: path:line + metadata |
SISTER-SCRIPT |
Tool emits K-REFs, LLM reads selectively |
GREPPABLE |
Easy to find with text search |
UPPER-CASE |
The naming convention itself |
Dovetails With
- ../skill/ â Protocols can become skills
- ../../PROTOCOLS.yml â The central registry
- ../../kernel/ â Low-level protocols
- ../yaml-jazz/ â Protocol for semantic YAML
- ../postel/ â Protocol for charitable interpretation
The Power of Naming
“In the beginning was the Word.”
When you name something, you can:
- Find it â grep, vector search, memory
- Invoke it â type the name, activate the tradition
- Compose it â combine named things into new things
- Teach it â names are handles for concepts
MOOLLM protocols are handles on ideas. The UPPER-CASE convention makes them impossible to miss, trivial to find.
“Name it, grep it, use it.”