Skip to content

RFC: Constructs Network — Install, Discovery & Schema Foundation #181

@zkSoju

Description

@zkSoju

Intent & Purpose

Constructs are expertise in any form. The network is the environment where that expertise becomes discoverable, installable, and composable.

No construct is prescribed a form. A construct could be a skill pack, a codex, a product with its full build history, or something nobody's thought of yet. The network's job is to make these pieces findable and connectable — then step aside and let people play.

The maintainer of this network embodies Gecko — the ecosystem intelligence lens. Not watching from above, but walking the stalls, noticing patterns, feeding what's observed back into the system. This RFC comes from that walk: a full audit of all 24 live constructs, grounded in what actually exists, not what we imagined.

Everyone who encounters constructs will approach them differently. Some will find a construct through an app that was built with it. Some will browse the explorer. Some will see a one-liner on Twitter and paste it into their terminal. Some will arrive through Loa. The network must support all of these entry points without privileging any of them.

"It's just a game. There's many ways to play and no right way to play. We just provide an environment where evolution can happen."


Context

This RFC emerges from a deep session examining the constructs network DX from multiple perspectives — Gecko (ecosystem intelligence), KEEPER (user observation), OSTROM (structural architecture), and STAMETS (game design patterns) — grounded in a full bazaar audit of all 24 live constructs.

The constructs network has genuine depth: observer at v3.0.0 with 24 skills, k-hole as the reference Nakamoto implementation, artisan governing a 5-stall design lineage, 9 repos synced with 216 symlinks. But the surfaces that present these constructs to the world are fractured, and the schema foundation that would enable composition is incomplete.

Companion RFC: See loa#452 for first-class construct support in the Loa framework.

Origin: Conversation between @janitooor and @zkSoju about better tooling support when not on golden path rails, and first-class support for the constructs network.

Problem

Fractured Install Surface

Three install commands across four surfaces:

Surface Command Shown Audience
Homepage (rotating hero) npx constructs install <slug> Everyone
Detail page (InstallBlock) /constructs install <slug> Assumes Loa user
Install page (/install) npx @loa-constructs/cli install observer Reference docs
Stack Composer HUD /constructs install <slugs> Power users

A first-time visitor copies /constructs install observer from a detail page, pastes it into their terminal, and gets nothing. The command is a Loa slash command — meaningless without the framework.

Post-Install Activation Gap

After install, files land in .claude/constructs/packs/. Nothing validates they work. No "now try this" prompt. The gap between "installed" and "using" is where most users fall off. Compare: brew install jqjq --version → confirmation. Our install has no confirmation moment.

Schema Foundation is Sparse

Bazaar audit of all 24 stalls reveals:

Metric Finding
workflow.gates declared 3/24 (the-easel, vocabulary-bank, protocol)
quick_start field 19/24 (missing: the-easel, webgl-particles, mibera-codex, hypha, herald)
composition_paths ~3 stalls use them
Command name collisions 2: /observe (gecko vs observer), /dig (k-hole vs hypha)
No construct.yaml 1 (webgl-particles — still on manifest.json v1)
Significant identity drift 4: beacon (persona says SEO, skills do agent-commerce), dynamic-auth (draft persona), the-mint (crypto naming, asset pipeline delivery), gecko (persona ahead of skills)
Hard deps that should be optional 4: showcase↔k-hole, vfx-playbook↔k-hole, protocol↔observer/artisan, observer↔crucible
index.yaml schema gaps 2 (the-speakers, the-mint — no name/description, routing fails silently)

These gaps mean: the archetype resolver (Loa RFC) has almost nothing to resolve. Composition-as-navigation can't show material chains if stalls don't declare their read/write paths. The "skill tab" would show mostly islands.

Composability is Aspirational

Constructs should work like Unix tools — composable, pipeable, adversarial-reviewable. The maintainer already does this manually: naming TeamCreate agents by construct, piping dig findings into observer canvases, getting adversarial review from multiple construct perspectives. The usage pattern exists. The infrastructure to make it consistent doesn't.

The compose_with declarations across the network are mostly one-sided (6+ asymmetric claims). composition_paths are barely declared. Event chains are disconnected. The material connections that would make composition automatic are missing from the schema.

Design Principles

Principle 0: Environment for Evolution

The network doesn't prescribe compositions, workflows, or usage patterns. It provides pieces and surfaces connections. The user discovers their path through play. Every design decision should be tested against: "does this enable evolution, or does it prescribe form?"

Drawn from the Hotel Experience Paradox (Octalysis/Yu-kai Chou), game design research (RuneScape, Dark Souls, BOTW), and developer ecosystem analysis (skills.sh, lazy.nvim, Homebrew):

  1. Agency over prescription — the install experience empowers, doesn't prescribe. Show options, honor the choice, step aside. (Hotel Paradox: "more personalization often means less connection")
  2. Use before understand — RuneScape's Tutorial Island makes you mine before you know Mining exists. The install should produce immediate output, not just deposit files.
  3. The skill tab, not the leaderboard — persistent ambient awareness of what you have and what's adjacent. Desire through proximity, not download counts. (RuneScape's skill tab is always visible, always honest, always personal)
  4. Composition as material fact — "Observer reads what K-Hole writes" (filesystem path overlap) is more honest than "these compose well together" (social claim). Surface material chains, not declared affinities. (Dark Souls' shortcuts are revelations, not rewards)
  5. The ecosystem should be felt before it's understood — not explained, not onboarded. Felt. The way you feel a RuneScape skill tab by having it always there. (BOTW's runes are discovered through use, not tutorials)
  6. Package-as-Portfolio — constructs aren't just skill packs. They can contain products, build history, progression artifacts. The Factorio modder gets hired because the mod demonstrates systems thinking. A construct's showcase isn't decoration — it's evidence that the expertise works. (NeoForge/Docusaurus: documentation as the product)

Proposals

P1: Unify Install Command

One command everywhere: npx constructs install <slug>

  • Detail page InstallBlock: change from /constructs installnpx constructs install
  • Install page: consolidate to npx constructs install (retire @loa-constructs/cli reference if same binary)
  • Stack composer: npx constructs install slug1 slug2 (multi-slug support)
  • /constructs install continues to exist for Loa users but is secondary — shown as "With Loa Framework:" disclosure

This command should be tweetable. Every social post about a construct should include the one-liner. The install command IS the social artifact.

P2: Post-Install Activation

After install succeeds, CLI outputs:

✓ k-hole installed (6 skills, 5 commands)

  Try it:  /dig "your topic here"
  
  K-Hole goes where search engines won't.
  Seven voices in productive tension.

Generated from quick_start + description in construct.yaml. This is the concierge pointing to the pool — not the hotel pre-setting your room temperature. An offer, not an automation.

P3: Composition-as-Navigation on Explorer

Add a second edge type to the canvas graph — material chain — computed from composition_paths.reads/writes overlaps:

"Observer writes to grimoires/laboratory/. Herald reads from grimoires/laboratory/." → material chain edge.

On detail pages, "Adjacent constructs" section: "3 constructs write to paths this one reads from." Not recommendations. Material facts. This is the Dark Souls elevator — the moment you realize the world was connected all along.

"Built With" layer: When a construct's showcase links to a live app, show the trail — which constructs contributed, what artifacts they produced. This is the Package-as-Portfolio pattern: the construct's output IS the proof.

P4: Schema Hygiene Sprint (Foundation)

This unblocks everything else. The Loa RFC's construct index is only useful if stalls declare their fields.

Priority 1 — Must-have for Loa construct index:

Fix Scope Effort
Add workflow.gates to 21 stalls Bulk PR across construct repos Low
Add quick_start to 5 missing stalls 5 repos Low
Add composition_paths declarations All stalls that read/write grimoires/ Medium
Resolve command collisions /observe (gecko→/network-health?), /dig (hypha→/pol-dig?) Medium

Priority 2 — Should-have (quality, non-blocking):

Fix Scope Effort
Fix index.yaml schema (add name/description) the-speakers, the-mint Low
Create construct.yaml for webgl-particles 1 repo Low
Fix domain misclassifications crucible→testing, k-hole→research, webgl-particles/webreel→tooling Low
Downgrade hard deps to optional showcase, vfx-playbook, protocol, observer Low

Priority 3 — Nice-to-have (identity quality):

Fix Scope Effort
Rewrite beacon persona.yaml 1 repo Medium
Add vfx-playbook to artisan governance 2 repos Low

P5: Adjacent-Possible on Detail Pages

When viewing a construct, show uninstalled constructs that connect through composition paths:

"K-Hole writes research findings that Observer can synthesize. [Install Observer →]"

Desire through proximity — the dark tile next to the lit one. The RuneScape skill tab shows what's adjacent to what you have, not just what you have.

Personal canvas ("My Network" view): The canvas should have a mode where installed constructs are highlighted, composition edges are drawn from your active set, and uninstalled-but-connected constructs glow as possibilities. The full 24-tile grid is the backdrop. Your constructs are lit. The dark tiles are desire. This is the skill tab made spatial.

P6: External Builder DX

The ecosystem is growing with external builders. Hypha (El Capitan) is the first. The bazaar audit found it uses construct.json (not construct.yaml), has no SKILL.md files, and its commands conflict with internal constructs.

  • Document minimum viable construct.yaml for external builders
  • Define command namespace collision resolution
  • Publish verification pipeline criteria (UNVERIFIED → BACKTESTED → PROVEN)
  • Ensure the construct-base template is discoverable and up to date

Sequencing

  1. P4 (schema hygiene — priority 1) — populate the fields that unblock Loa's construct index
  2. P1 (unified install) — fix the surface
  3. P2 (post-install activation) — close the activation gap
  4. P4 (schema hygiene — priority 2+3) — quality improvements
  5. P3 + P5 (composition navigation + adjacent possible) — enable discovery
  6. P6 (external builder DX) — enable ecosystem growth
  7. Loa RFC L1 (construct index) becomes possible once P4 priority 1 is done

Out of Scope

  • Loa-side changes (name resolution, archetype resolver, freestyle mode) → loa#452
  • Construct certification / OSINT verification → separate initiative
  • Leaderboard / ranking mechanics → deliberately deferred (souk, not mall)
  • Prescribing construct form or content → constructs are expertise in any form the creator chooses

Bazaar Audit Reference

Full 24-stall audit findings (click to expand)

Tier 1 — Mature

  • observer v3.0.0 — 24 skills, tooling scripts, composition wired
  • k-hole v1.2.1 — reference Nakamoto protocol, 7 voices
  • protocol v1.0.0 — 10 skills, detect-state script, conditional routing
  • artisan v1.0.0 — 14 skills, governance root for 5 stalls

Tier 2 — Solid

  • hardening — 11 skills, best counterfactual writing in network
  • gtm-collective — 8 skills + 14 commands, most feature-complete
  • the-arcade — 6 skills, OSTROM/BARTH, game design depth
  • showcase — 6 skills, landing page intelligence
  • the-easel — 4 skills, only design stall with workflow.gates
  • vocabulary-bank — 2 skills, governance clean for 4 targets
  • the-speakers — 8 skills, rich TANDY persona (index.yaml schema gap)
  • the-mint — 8 skills, dual CELLINI/MURAGE (naming confusion)
  • growthpages — 5 skills, real pipeline with HITL gate
  • social-oracle — 5 skills, good filter architecture
  • beacon — 6 skills, strong content (WRONG persona — SEO ghost from v1)
  • vfx-playbook — 4 skills, practitioner-grounded
  • webreel — 4 skills, real Playwright+FFmpeg tool

Tier 3 — Early/Incomplete

  • crucible v1.0.0 — domain: security is WRONG (it's QA/testing)
  • gecko v0.1.0 — persona far ahead of implementation
  • herald v0.1.0 — no commands array registered
  • dynamic-auth v1.0.0 — draft persona, complete island
  • webgl-particles — 9 deep skills, NO construct.yaml
  • hypha v0.2.0 — external, no SKILL.md files

Cross-Cluster Patterns

  • Asymmetric compositions: gtm-collective→observer, growthpages→k-hole (neither reciprocated)
  • Security cluster ungoverned: protocol, hardening, beacon, dynamic-auth have zero governance
  • Undeclared pipeline: dynamic-auth → hardening → protocol (auth→audit→verify chain)
  • Content pipeline: vocabulary-bank → growthpages → k-hole research (exists in intent, not schema)
  • Vocabulary-bank governance: 4/4 governed constructs acknowledge back (previous reports of false claims were stale)

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions