소스 정보
- 저장소
- majiayu000/claude-skill-registry
- 최근 소스 활동
- 2026년 6월 23일 12:15
- 감지된 SKILL.md 언어
- 영어
- 스타
- 543
- 포크
- 85
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/majiayu000/claude-skill-registry --skill postal명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
LLM token logprobs and calibration. Per-decision confidence, ECE, Brier, reliability diagrams, low-confidence triage.
Analyze LLM token logprobs and calibration. Use for per-decision confidence, ECE, Brier scores, reliability diagrams, and low-confidence triage.
回顾最近 N 天的 Claude Code 使用记录——扫描原始会话数据,按主题分组汇总"我都做了什么",并从个人操作系统视角输出模式、风险与增删建议。当用户说 /recap、"看看我这几天做了什么"、"回顾一下我最近的会话"、"这两天我用 claude 干了啥"、"活动回顾" 时使用。
| name | postal |
| description | Complete messaging system — letters, texts, goals, rewards, attachments |
| allowed-tools | ["read_file","write_file"] |
| tier | 1 |
| protocol | POSTAL-SYSTEM |
| tags | ["moollm","mail","message","goals","rewards","attachments","phone","communication"] |
| related | ["goal","character","object","room","storage","buff"] |
| adversary | instant-coupling |
"Any address can send and receive. Goals come from anyone, not just Mom." — The Rusty Lantern Design Principles
The Postal System is the complete messaging infrastructure:
| Feature | Description |
|---|---|
| Messages | Letters between any endpoints |
| Texts | SMS-style instant messages |
| Attachments | Items, gold, images, buffs, room access |
| Goals | Any character can assign/modify/complete goals |
| Phone | Always-available mobile access (it's 2026!) |
| Routing | Deterministic delivery without LLM |
Anything addressable can send/receive:
to: "player" # Reserved keyword
to: "characters/family/mom/" # Character path
to: "characters/npcs/bartender/" # Any NPC
to: "pub/" # Room
to: "storage/vault/" # Directory
to: "start/mailbox.yml" # Object
CRITICAL: Addresses are paths, not names. The simulator routes without LLM.
# BAD: Symbolic (requires LLM)
from: mom
to: the bartender
# GOOD: Deterministic paths
from: "characters/family/mom/"
to: "characters/npcs/bartender/"
| Keyword | Resolves To |
|---|---|
player | Current player character |
party | All party members |
narrator | System/narrative voice |
You carry a phone at all times. Mail and texts are always available.
player:
devices:
phone:
always_carried: true
capabilities: [mail, text, notifications, camera, maps]
| Type | Example |
|---|---|
| "New letter from Mom!" | |
| 💬 Text | "Don: Meet me at the pub" |
| 🎯 Quest | "Quest updated: Find the Key" |
| ⚠️ Alert | "WARNING: Grue nearby!" |
| 🎁 Reward | "You received: Gold Coins (50)" |
letter:
id: "letter-001"
from: "characters/family/mom/"
to: "player"
subject: "Your First Quest"
body: |
Dearest child,
I need you to find something for me.
There's a brass key somewhere in the maze.
With love,
Mom
attachments: []
# Goal integration (optional — ANY character can do this!)
creates_goal:
id: find-key
name: "Find the Key"
complete_when: "player has brass-key"
reward:
letter: mom-reward-001
item: family-locket
# Metadata
sent: null
delivered: null
read: false
status: draft # draft | outbox | sent | delivered | read
Any character can create/modify/complete goals — not just Mom:
# Bartender assigns a quest
letter:
from: "characters/npcs/bartender/"
to: "player"
subject: "A Favor to Ask"
body: "Could you deliver this package to the mayor?"
creates_goal:
id: deliver-package
name: "Deliver the Package"
complete_when: "player has talked to mayor with package"
reward:
gold: 50
# Don Hopkins updates your quest
letter:
from: "characters/real-people/don-hopkins/"
to: "player"
subject: "Found something!"
modifies_goal:
id: find-key
extend_with: "also check the old chest"
Short, instant messages. It's 2026!
text:
id: "text-001"
from: "characters/npcs/bartender/"
to: "player"
body: "Hey, you left your hat here!"
quick_replies:
- "On my way!"
- "Thanks, be there soon"
- "Can you hold it?"
delivery: instant # Not queued like letters
timestamp: null
read: false
| Feature | Text | Letter |
|---|---|---|
| Length | Short (< 160) | Long |
| Attachments | Photos only | Anything |
| Delivery | Instant | Next tick |
| Creates goals | Rarely | Yes |
| Formality | Casual | Can be formal |
Messages can carry anything:
attachments:
# Objects
- type: object
ref: "brass-key"
action: send # Remove from sender, give to recipient
- type: object
ref: "map"
action: reference # Just mention, don't transfer
# Currency
- type: gold
quantity: 100
action: send
# Images
- type: image
ref: "images/treasure-map.png"
action: copy
- type: image
action: generate
prompt: "A hand-drawn map to the treasure..."
# Buffs
- type: buff
ref:
name: "Blessed"
effect: "+1 luck"
duration: 10
action: apply
# Room access
| Action | Effect |
|---|---|
send | Remove from sender, give to recipient |
give | Give to recipient (sender keeps if applicable) |
copy | Duplicate for recipient |
reference | Mention without transfer |
unlock | Grant access (for rooms) |
apply | Apply effect (for buffs) |
generate | Create on delivery (for images) |
# player/INBOX.yml
inbox:
owner: "player"
messages:
- ref: "messages/mom-quest.yml"
received: "2026-01-10T10:00:00Z"
read: false
priority: high
from: "characters/family/mom/"
subject: "Your First Quest"
preview: "Dearest child, I need you to..."
unread_count: 1
settings:
max_messages: 100
forward_to: null
Stage messages before sending:
# player/OUTBOX.yml
outbox:
owner: "player"
drafts:
- ref: "messages/draft-001.yml"
started: "2026-01-10T09:00:00Z"
pending:
- ref: "messages/ready-001.yml"
to: "characters/family/mom/"
The postal system simulates realistic delivery:
Messages don't arrive instantly (unless texting!):
letter:
from: "characters/family/mom/"
to: "player"
# Delivery simulation
delivery:
method: letter # letter, express, text
# Time calculation
base_time: 3 # Base turns
distance_factor: 1 # Turns per "hop" of distance
total_time: 5 # Calculated: base + (distance * factor)
# Timestamps
sent: "2026-01-10T10:00:00Z"
estimated_arrival: "2026-01-10T10:05:00Z" # 5 turns later
delivered: null # Set when actually delivered
# Status
status: in_transit # draft | outbox | in_transit | delivered | read
turns_remaining: 5
| Method | Base Time | Cost | Features |
|---|---|---|---|
text | 0 (instant) | Free | Photos only, casual |
letter | 3 turns | 1 gold | Full attachments, goals |
express | 1 turn | 5 gold | Priority delivery |
freight | 10 turns | 0.5 gold/kg | Heavy items, bulk |
courier | 2 turns | 10 gold | Guaranteed, tracked |
Distance is measured in "hops" through the room graph:
# Distance examples:
# Same room: 0 hops
# Adjacent room: 1 hop
# Through maze: 5+ hops
# Different "region": 10+ hops
delivery:
from_location: "pub/"
to_location: "characters/family/mom/" # Mom's home
hops: 4
time_per_hop: 1
total_delivery_time: 7 # base 3 + (4 * 1)
Sending mail costs resources:
letter:
from: "player"
to: "characters/family/mom/"
postage:
method: letter
base_cost: 1 # Gold
weight_cost: 0 # Per kg for heavy items
distance_cost: 0.5 # Per hop
total_cost: 3 # Calculated
# Payment
paid: false
paid_from: "player" # Who pays
# Insufficient funds?
requires_payment: true
can_send: true # false if can't afford
Some messages are free:
# Texts are free
text:
postage:
method: text
total_cost: 0
# System messages are free
letter:
from: "narrator"
postage:
total_cost: 0
reason: "system message"
# Within same location is free
letter:
from: "pub/bartender.yml"
to: "pub/patron.yml"
postage:
total_cost: 0
reason: "same location"
Track messages in transit:
# world.skills.postal state
postal:
in_transit:
- id: letter-001
from: "player"
to: "characters/family/mom/"
turns_remaining: 3
- id: letter-002
from: "characters/npcs/bartender/"
to: "player"
turns_remaining: 1
# Each tick, turns_remaining decrements
# When 0, message is delivered
# MAIL phase of simulation
def deliver_mail(world):
postal = world.skills.postal
# Decrement turns for in-transit messages
still_in_transit = []
for message in postal.get('in_transit', []):
message['turns_remaining'] -= 1
if message['turns_remaining'] <= 0:
# Deliver now!
actually_deliver(world, message)
world.trigger_event('MAIL_ARRIVED', {
'from': message['from'],
'to': message['to']
})
else:
still_in_transit.append(message)
postal['in_transit'] = still_in_transit
Pay more for faster delivery:
letter:
delivery:
method: express
postage:
base_cost: 5 # Express premium
guaranteed_time: 1 # Arrives next turn
tracking: true # Can check status
insurance: true # Compensated if lost
For added realism/drama:
postal:
settings:
loss_chance: 0.01 # 1% chance of loss
loss_recoverable: true # Can be found later
# Lost mail goes to:
lost_mail_location: "maze/lost-and-found/"
The simulator delivers mail without LLM. See ROUTING.md.
letter:
from: "characters/family/mom/"
to: "player"
# Generated routing (deterministic)
routing:
destination_type: player
destination_path: player
delivery_point: inbox
inbox_path: player/INBOX.yml
attachments_transfer:
- type: object
ref: "brass-key"
action: send
from_inventory: "characters/family/mom/"
to_inventory: "player"
triggers:
- event: MESSAGE_RECEIVED
data: { from: "characters/family/mom/" }
- event: GOAL_CREATED
data: { goal_id: find-key }
Mail delivery is a phase in the simulation tick:
1. RESET — foo_effective = foo
2. BUFFS — Apply modifiers
3. SIMULATE — Objects run
4. MAIL — Deliver queued messages (deterministic!)
5. EVENTS — Process queue
6. NAVIGATE — Move player
7. DISPLAY — Update UI
Mail items to your vault:
letter:
from: "player"
to: "storage/vault/"
subject: "Depositing treasure"
attachments:
- type: gold
quantity: 500
action: send
KEY INSIGHT: You don't need physical bots to move items between logistic containers. The postal system IS the transport layer — instantaneous, free, efficient!
| Factorio | MOOLLM |
|---|---|
| Logistics bots | Postal system (free, instant) |
| Flying between chests | Email/text delivery |
| Request list | Triggers automated mail |
| Active provider pushing | Auto-send attachments |
| Circuit signals | Text notifications |
When a logistics requester needs items, instead of dispatching a bot:
# Automatic postal delivery for logistics
logistics_delivery:
trigger: "requester.request_unfulfilled"
# Find a provider with matching items
provider: "nw/iron-ore/"
requester: "forge/"
item: "iron-ore"
count: 20
# Generate a postal transfer (instant, free!)
postal_transfer:
type: internal-logistics # Special type: no cost, instant
from: "nw/iron-ore/"
to: "forge/"
attachments:
- type: object
ref: "iron-ore"
quantity: 20
action: send
# No delivery time for internal logistics!
delivery:
method: logistics # New method: instant, free
total_time: 0
cost: 0
| Method | Time | Cost | Use Case |
|---|---|---|---|
logistics | 0 | Free | Internal network transfers |
text | 0 | Free | Signals, notifications |
letter | 3+ turns | 1+ gold | Player-to-player with drama |
freight | 10+ turns | Per weight | Physical bulk transport |
Your phone's camera can generate images via prompts:
text:
from: "player"
to: "narrator"
body: "Take a photo of this treasure map"
attachments:
- type: image
action: generate
prompt: "A weathered treasure map showing the maze layout..."
save_to: "player/photos/treasure-map.png"
Texts can carry logistics signals:
# Room emits signal when low on fuel
room:
signals:
enabled: true
emit:
- signal: "low-fuel"
when: "stacks.coal < 5"
action:
text:
to: "player"
body: "⚠️ Forge is running low on coal!"
Default: Logistics uses postal (instant, free) Optional: Physical bots for gameplay/drama
logistic-container:
transport:
method: postal # Default: instant via mail
# OR
method: bot # Physical transport (slower, visible)
bot_path: "characters/courier-kitten/"
When using bots:
1. REQUESTER: "I need 20 iron ore"
│
▼
2. LOGISTICS ENGINE finds provider with iron ore
│
▼
3. Generate POSTAL TRANSFER (internal, instant, free)
│
├─── method: postal ────→ Instant delivery
│ No physical movement
│ Items "teleport"
│
└─── method: bot ───────→ Dispatch courier kitten
Physical movement
Player can see/interact
│
▼
4. REQUESTER receives items
│
▼
5. on_request_fulfilled fires
| Physical Bots | Postal Transport |
|---|---|
| Slow (travel time) | Instant |
| Visible (might break immersion) | Invisible (just works) |
| Can get stuck | Never fails |
| Limited cargo | Unlimited |
| Fun to watch | Efficient |
Use bots for drama. Use postal for efficiency.
| Command | Effect |
|---|---|
CHECK PHONE | See notifications and quick access |
READ MAIL | Open inbox |
READ [letter] | Display letter |
COMPOSE | Start writing |
REPLY | Reply to current |
ATTACH [item] | Add attachment |
SEND | Send current message |
TEXT [character] | Quick text |
Mom isn't special infrastructure — she's just a character:
# characters/family/mom/CHARACTER.yml
character:
id: mom
name: "Mom"
type: correspondent
personality:
warmth: 10
worry: 7
pride: 9
voice:
patterns:
- "Dearest child"
- "I'm so proud"
- "Be careful out there"
triggers:
on_goal_complete: "Send congratulations letter"
on_danger: "Send worried letter"
on_long_silence: "Send 'are you okay?' letter"
Any character can have similar triggers. The bartender can send quests. Don Hopkins can send updates. Goals come from anyone!
See BROWSER-UI.md for the delightful mail interface.
POSTAL-SYSTEM — Complete messaging with deterministic routing