Skir: A Modern Alternative to Protocol Buffers for Type-Safe Data Exchange

What Skir Does
Skir is a modern alternative to Protocol Buffers that serves as a single source of truth for data types. You write your schema once in a .skir file and generate idiomatic, type-safe code for multiple languages.
Key Features and Workflow
The entire configuration lives in one YAML file. You can initialize a project with npx skir init. Watch mode automatically recompiles when files change.
Here's an example schema from the source:
struct Point {
x: int32;
y: int32;
label: string;
}
struct Shape {
points: [Point];
/// A short string describing this shape.
label: string;
}
const TOP_RIGHT_CORNER: Point = {
x: 600,
y: 400,
label: "top-right corner",
};
Generated Code Usage
The generated code includes serialization and deserialization methods. For TypeScript:
import { Point } from "../skirout/shapes";
const point = Point.create({
x: 3,
y: 4,
label: "P"
});
const pointJson = Point.serializer.toJson(point);
console.log(pointJson); // [3, 4, "P"]
const restored = Point.serializer.fromJson(pointJson);
console.log(restored.label); // "P"
Schema Evolution and RPC Support
Skir includes built-in checks and guidelines for safe schema evolution in long-lived or distributed systems. It also supports RPCs with end-to-end type safety similar to gRPC.
Example RPC definition:
struct WhatToWearRequest {
temperature_celsius: float32;
raining: bool;
}
struct WhatToWearResponse {
bottom_outfit: string;
sunglasses: bool;
}
method WhatToWear(WhatToWearRequest): WhatToWearResponse = 770862;
Additional Features
- Serialization to dense JSON (compact, allows schema evolution), readable JSON (for debugging), or binary (for performance)
- Built-in package manager that imports types directly from GitHub repositories
- VS Code extension with real-time validation, code completion, and automatic formatting
- Supported languages: TypeScript, Python, C++, Java, Kotlin, Dart
Who It's For
Teams running mixed-language stacks who need type-safe data exchange between services, particularly useful for full-stack applications with different frontend and backend languages.
📖 Read the full source: HN AI Agents
👀 See Also

ToolLoop: Open-Source Agent Framework for Claude-Style Tools with Any Model
ToolLoop is an open-source Python framework with 11 tools for file operations, code search, shell access, and sub-agents that works with any LLM through LiteLLM. The 2,700-line framework allows switching models mid-conversation with shared context.

Vellium Adds Desktop Pets and CLI-Inspired Agents for Local LLMs
Vellium, an open-source crossplatform app for local LLMs, now supports desktop pets that float above windows and agents with MCP integration, terminal commands, and file editing.

Argyph: A Single MCP Server for Claude Code with 19 Structured Code Understanding Tools
Argyph is a local MCP server that gives Claude Code 19 tools — go-to-definition, find-references, call graphs, semantic search, token-budgeted repo packing — replacing multiple separate MCP servers with one install. No API key required; all processing stays on your machine.

Auto-optimize: A Claude Code Plugin for Autonomous Performance Optimization
A developer built auto-optimize, a Claude Code plugin that autonomously runs profile → plan → benchmark loops to optimize code performance. In one test, it achieved a 27% faster hash table across all benchmark scenarios in about 3 hours.