ies/music-topos/.agents/skills/captp/SKILL.md
# CapTP: Capability Transfer Protocol **Trit**: 0 (ERGODIC - transports capabilities without amplification) **Color**: #46F27F (Coordinator stream) **Source**: Spritely Goblins (codeberg.org/spritely/goblins) --- ## Overview CapTP (Capability Transfer Protocol) enables distributed object programming with capability security. Objects can live anywhere on the network; CapTP abstracts location so programmers focus on object interaction, not protocol architecture. **Core principle**: Capabiliti
npx skillsauth add plurigrid/asi ies/music-topos/.agents/skills/captpInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Trit: 0 (ERGODIC - transports capabilities without amplification) Color: #46F27F (Coordinator stream) Source: Spritely Goblins (codeberg.org/spritely/goblins)
CapTP (Capability Transfer Protocol) enables distributed object programming with capability security. Objects can live anywhere on the network; CapTP abstracts location so programmers focus on object interaction, not protocol architecture.
Core principle: Capabilities are unforgeable references. You can only invoke what you've been given.
;; Guile Goblins
(define vat (spawn-vat))
(define greeter (vat-spawn vat ^greeter))
| Concept | Description | Trit Mapping | |---------|-------------|--------------| | Vat | Transactional actor container | 0 (ergodic boundary) | | Actor | Encapsulated object with behavior | +1 (generative) | | Capability | Unforgeable reference | -1 (constraining) |
;; Don't wait for result - pipeline through promises
(<- (<- alice 'get-friend) 'greet "Hello")
Reduces round-trips: send message to promise, network resolves.
| Reference | Persistence | Use Case | |-----------|-------------|----------| | Live | Session only | Active communication | | Sturdy | Survives restart | Reconnection, storage |
op:deliver-only → Fire-and-forget message
op:deliver → Message expecting response
op:pick → Select from multiple promises
op:abort → Cancel pending operation
op:listen → Subscribe to updates
op:gc → Garbage collection hint
# Core CapTP Bundle
keychain-secure (-1) ⊗ captp (0) ⊗ gay-mcp (+1) = 0 ✓ [Secure Transport]
shadow-goblin (-1) ⊗ captp (0) ⊗ agent-o-rama (+1) = 0 ✓ [Distributed Actors]
polyglot-spi (-1) ⊗ captp (0) ⊗ pulse-mcp-stream (+1) = 0 ✓ [Cross-Lang Objects]
temporal-coalgebra (-1) ⊗ captp (0) ⊗ koopman-generator (+1) = 0 ✓ [State Observation]
# Goblins Integration
three-match (-1) ⊗ captp (0) ⊗ gay-mcp (+1) = 0 ✓ [Colored Capabilities]
sheaf-cohomology (-1) ⊗ captp (0) ⊗ operad-compose (+1) = 0 ✓ [Compositional]
| Spritely | Our System | Function |
|----------|------------|----------|
| spawn-vat | SplitMixTernary.new(seed) | Create isolated generator |
| <- (send) | next_color! | Advance state, get result |
| $ (call) | color_at(idx) | Synchronous access |
| Sturdy ref | (seed, index) tuple | Reconstructable reference |
| Promise | Derivation chain | Future state determined by seed |
require 'captp'
# Create vat (generator with transactional boundary)
vat = CapTP::Vat.new(seed: 0x42D)
# Spawn actor (color stream)
actor = vat.spawn(:color_stream)
# Send message (advance stream)
promise = actor.send(:next_color)
# Pipeline (derive without waiting)
result = actor.send(:palette, 5).then { |colors| colors.map(&:hex) }
(use-modules (goblins) (goblins actor-lib cell))
;; Define actor constructor
(define (^color-stream bcom seed)
(define idx (spawn ^cell 0))
(lambda (method . args)
(case method
((next-color)
(let ((i ($ idx)))
($ idx (+ i 1))
(color-at seed i)))
((palette)
(map (lambda (i) (color-at seed i))
(iota (car args)))))))
;; Spawn in vat
(define stream (spawn ^color-stream 1069))
(<- stream 'next-color) ;; => promise of color
| Layer | Transport | Use Case | |-------|-----------|----------| | Tor Onion | .onion addresses | Anonymous, censorship-resistant | | TCP Direct | IP:port | Local network, low latency | | WebSocket | wss:// | Browser-based (Hoot target) | | NATS | nats:// | High-throughput pub/sub | | Tailscale | 100.x.y.z | Mesh VPN, zero-config |
You can only:
1. Use capabilities you were given
2. Create new objects (that you then have caps to)
3. Introduce objects you have caps to, to each other
# Full capability
full_stream = vat.spawn(:color_stream, seed: 0x42D)
# Attenuated: read-only, no advance
read_only = full_stream.attenuate(:color_at)
# Attenuated: limited palette size
limited = full_stream.attenuate(:palette, max: 10)
just captp-vat seed=1069 # Create vat with seed
just captp-spawn actor_type # Spawn actor in vat
just captp-send actor method # Send message
just captp-pipeline expr # Pipeline expression
just captp-sturdy actor # Get sturdy reference
| Skill | Relation | |-------|----------| | localsend-mcp | P2P file transfer via CapTP-like protocol | | tailscale-file-transfer | Mesh VPN netlayer | | keychain-secure | Credential capabilities | | shadow-goblin | Validates capability boundaries | | agent-o-rama | Generates actor proposals |
Skill Name: captp Type: Distributed Object Protocol Trit: 0 (ERGODIC) GF(3): Transports capabilities without amplification Invariant: Capabilities unforgeable, only invoke what you're given
development
BDD-Driven Mathematical Content Verification Skill Combines Behavior-Driven Development with mathematical formula extraction, verification, and transformation using: - Cucumber/Gherkin for specification - RSpec for implementation verification - mathpix-gem for LaTeX/mathematical content extraction - Pattern matching on syntax trees for formula validation Enables iterative discovery and verification of mathematical properties through executable specifications.
tools
Meta-skill that generates domain-specific AI skills from tool documentation
development
Code Query with AI-enhanced deterministic analysis via SplitMix ternary classification
development
Directed Yoneda lemma as directed path induction. Riehl-Shulman's key insight for synthetic ∞-categories.