Ceremony
Description
[](CHANGELOG.md) [](grimoires/loa-constructs-seed-2026-04-21/bonfire-construct-pipe-doctrine.md) [](LICENSE.md)
Installation
Installs to ~/.claude/commands/0xhoneyjar-loa-constructs-ceremony.md
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/0xHoneyJar/loa-constructs/HEAD/.claude/commands/ceremony.md -o ~/.claude/commands/0xhoneyjar-loa-constructs-ceremony.md Restart Claude Code, or start a new session, for it to be picked up.
Repository README
This is the README for 0xHoneyJar/loa-constructs, shared by 5 entries
in this directory. It describes the repository, not this entry specifically.
Constructs Network
[](CHANGELOG.md) [](grimoires/loa-constructs-seed-2026-04-21/bonfire-construct-pipe-doctrine.md) [](LICENSE.md)
a construct is expertise you install. constructs pipe like unix stages. what's active is always checkable.
**[constructs.network](https://constructs.network)** · [Loa framework](https://github.com/0xHoneyJar/loa) · [construct-base](https://github.com/0xHoneyJar/construct-base)
What this is
A package distribution network for AI agent expertise.
A **construct** is a self-contained pack — identity, skills, and boundaries — that you install into a Claude Code session. After install, the agent can be invoked by slug, name, command, or persona handle. Multiple constructs can be composed into a pipeline with typed streams between stages (Unix philosophy, applied to LLM expertise).
The network handles discovery, install, version sync, and composition. Authors publish packs. Operators install them. Agents resolve them deterministically.
Quick start
# Install — inject a construct into the current Claude session
constructs-install.sh observer
# See what's active right now (the agent can see this too, always)
constructs-active # one line · <1s
constructs-active --orient # multi-line orientation · ~2s
constructs-active --intervene # JSON · pipeable
# Enumerate installed packs with provenance
constructs-list # table · 3 read-modes
# Invoke — four surface forms, all resolve to the same construct
@artisan # persona handle
Artisan # display name (case-insensitive)
artisan # slug
/feel # registered command → routes to the-arcade (cycle-004)
Browse and install from the web at **[constructs.network](https://constructs.network)**.
Honest status: the web discovery UI is live but the public index is still bootstrapping. CLI install from `0xHoneyJar/construct-*` repos is the reliable path today.
Why
Agents without constructs give you generic output. Agents with constructs give you depth — a Craftsman that decomposes "design" into feel, motion, and material; a Researcher that synthesizes evidence into hypotheses; a Strategist that maps capability to market position.
Same agent. Different expertise installed. Different way of seeing the problem.
graph LR
You([You]) --> Agent([Your Agent])
Agent --> |without constructs| Generic["'help me with design'
generic output"]
Agent --> |with constructs| Craftsman["Craftsman — depth-5 Design Systems
decomposes into feel, motion, material"]
Agent --> |with constructs| Researcher["Researcher — depth-5 User Research
synthesizes evidence into hypotheses"]
Agent --> |with constructs| Strategist["Strategist — depth-5 Positioning
maps capabilities to market"]
style Generic fill:#1c1c1c,stroke:#555,color:#888
style Craftsman fill:#1a1a2e,stroke:#8B5CF6,color:#e8e8ea
style Researcher fill:#1a1a2e,stroke:#8B5CF6,color:#e8e8ea
style Strategist fill:#1a1a2e,stroke:#8B5CF6,color:#e8e8ea
Invoke
Agents resolve a construct reference through **five tiers** — first match wins, collisions warn explicitly.
| Tier | Form | Example | Resolves via |
|---|---|---|---|
| 1 | Slug | artisan |
construct.yaml slug (case-insensitive) |
| 2 | Display name | Artisan |
construct.yaml name |
| 3 | Command | /feel, /dig, /ceremony, /forge |
commands/*.yaml registration |
| 4 | Persona handle | @ALEXANDER, @STAMETS, @OSTROM |
identity/.md filename |
| 5 | No match | — | warn, list closest matches |
Cycle-004 L2 sweep wired command-tier routing end-to-end. `/feel` → `the-arcade`. `/dig` → `k-hole`. `/ceremony` and `/forge` → `noether`. Full contract, tested across 12 of 14 reference forms: [`cycle-004-L2-invocation-contract.md`](grimoires/loa-constructs-seed-2026-04-21/cycle-004-L2-invocation-contract.md).
Agent-facing transparency is a first-class invariant. `constructs-active` answers the question "what expertise is loaded in this session right now?" in under a second, in three read-modes suited to glance, orient, or pipe.
Compose
Constructs chain through **typed streams** — [Unix philosophy](https://iamchandra.com/Technology/2024-02-23-Unix-Philosophy) over LLM expertise. Five primitive stream types flow between stages:
`Signal` · `Verdict` · `Artifact` · `Intent` · `Operator-Model`
# grimoires/compositions/discovery/audit-feel.yaml — canonical 3-stage reference
kind: workflow
chain:
- { construct: artisan, skill: decomposing-feel, writes: [Signal] }
- { construct: artisan, skill: scoring-experience, reads: [Signal], writes: [Verdict] }
- { construct: observer, skill: analyzing-gaps, reads: [Verdict], writes: [Verdict] }
This repo owns the **schema** ([`composition.schema.json`](.claude/schemas/runtime/composition.schema.json)) + the **runner** (`compose-run.sh`) + **one canonical reference composition** (`audit-feel`) for teaching and runner smoke-tests. The full curated **registry** of compositions lives in [`loa-compositions`](https://github.com/0xHoneyJar/loa-compositions), organized by Hivemind Lab workstream (discovery / delivery / experimentation / tech-debt / sorry-for-ur-loss). One contract, two homes.
Full doctrine: [`bonfire-construct-pipe-doctrine.md`](grimoires/loa-constructs-seed-2026-04-21/bonfire-construct-pipe-doctrine.md).
Cluster index
Cycles that ship a **bundle of related composition lanes** index their per-lane verdicts here.
- **Craft Cluster** (cycle-craft-cluster, 2026-05-11) — pair-relay primitive (RFC #235) plus three reference compositions over existing constructs:
fidelity-relay,access-relay,frame-relay. Substrate: construct-rooms-substrate v0.2.0. Zero new construct repos.
Create
Three files. Push. Done.
construct.yaml— name, slug, authorskills/example-simple/SKILL.md— one skill's instructionsCLAUDE.md— identity injected on install
gh repo create my-org/construct-my-expertise \
--template 0xHoneyJar/construct-base --private --clone
CI validates on push. Placeholder text (`your-name`, `TODO`, template markers) is blocked — you can't accidentally publish unedited scaffolding.
Start here: **[construct-base](https://github.com/0xHoneyJar/construct-base)**.
Responsibility boundary
This repo owns a **narrow slice** of the network's concerns: distribution + registry API + license-verify hooks.
| Layer | Lives in | Owns |
|---|---|---|
| Apps (UI + checkout) | World repos — sprawl-world, purupuru, etc | Payment-initiation, wallet connect, checkout UI |
| Network API | This repo (apps/api, apps/docs, packages/shared, packages/loa-registry) |
Construct distribution + registry API + license-verify hooks |
| Ledger | loa-freeside | Author payouts + revenue share + single-source-of-truth for receipts |
**N-rails invariant**: the network supports N payment rails (Stripe, NOWPayments, x402, future) via freeside hooks. **NONE live here.** Adding a rail means apps adopt it + freeside adapter ingests it; this repo stays rail-agnostic.
Full details: [`docs/architecture/payment-responsibility.md`](docs/architecture/payment-responsibility.md).
Per cycle-007: `apps/explorer` (wallet/wagmi bleed) lifted to sprawl-world as `@sprawl-world/constructs-network`. `loa-freeside/packages/adapters/billing/polar/` stub removed — if a billing adapter ever ships, it lives in Jani's freeside repo.
Operator OS (optional)
Some operators layer a mode-and-lens workflow on top of raw construct invocation — FEEL for zoomed-in craft, ARCH for zoomed-out structure, DIG for research, SHIP for scope discipline. This is a personal workflow pattern, not part of the network itself.
One operator's worked example lives at **[operator-os-starter](https://github.com/0xHoneyJar/operator-os-starter)** as a template to fork and adapt. Constructs work without any OS layer — adopt, modify, or ignore it.
Develop
bun install
bun --filter api dev # API on localhost:3000
bun --filter explorer dev # Explorer on localhost:3001
The toolchain that makes constructs visible to agents (`constructs-active.sh`, `constructs-list.sh`, `feedback-v3-emit.sh`) is shell-first — 700+ net new lines across cycle-003/004, zero new TypeScript. Shell for the agent-runtime layer, TypeScript for the web and API only.
Links
- constructs.network — browse & install
- Loa — underlying framework
- construct-base — author a new construct
- operator-os-starter — optional workflow template
- Pipe doctrine v4 — how constructs compose
- Invocation contract — 5-tier dispatch, tested
- CHANGELOG.md
[AGPL-3.0](LICENSE.md)
Related Skills
Auto Update
Pull the latest ECC repo changes and reinstall the current managed targets.
Development Ecc Guide
Navigate ECC's current agents, skills, commands, hooks, install profiles, and docs from the live repository su
Development Epic Claim
Claim an epic issue, stamp coordination state, and sync local ownership.
Development Epic Publish
Publish a validated epic update back to the issue and local cache.
Development Epic Review
Mark epic review requested, approved, or changes requested.
Development Epic Unblock
Sweep blocked epic issues and reopen anything whose dependencies are closed.
Development Related Agents
Django Build Resolver
Django/Python build, migration, and dependency error resolution specialist. Fixes pip/Poetry errors, migration
Openai Codex CLI
(55.8k ⭐) - Lightweight coding agent that runs in your terminal.
src/agents/ — 11 Agent Definitions
**Generated:** 2026-04-11