| name | personalized-storefront-render |
| description | Translate internal markdown artifacts (pitch decks, business plans, research) into per-persona client-facing storefront surfaces in the client's domain language with ELI5/TLDR layers. Sits above Product Domain Engine and 8-Strata Domain Ideal-Whole; invokes voice-enforcement against persona-specific voice_constitution. Triggers on requests for client-facing surfaces, persona-tuned translation, ELI5/TLDR projections, or storefront-style client deliverables. Render is scaffold-and-curate (never auto-publish) to protect client trust. |
| license | MIT |
Personalized Storefront Render — Substrate Skill
Translate internal artifacts into client-facing surfaces in the client's domain language. Substrate, not bespoke build.
When to invoke
- User asks for "a client-facing version of X" / "translate this for Rob/Maddie/" / "ELI5 / TLDR of ".
- User wants every internal artifact (or a class of them) to project to a client storefront.
- A new client is being onboarded and needs a personalized read-surface for ongoing work.
- A specific artifact is tagged with
audiences: frontmatter and the storefront has not been regenerated.
When NOT to invoke
- The artifact is governance/SOP/internal-only with no client surface (
audiences: [internal] or unmtagged).
- The work is bespoke creative direction for a specific deliverable (use the relevant domain skill — Hokage bridge content, Spiral lineage substrate, etc.).
- The client surface already exists and is hand-curated outside this substrate (do not ingest after-the-fact; respect the existing artifact).
Architecture (4 layers)
LAYER 0 — PERSONA CORPUS (~/Documents/personas/)
{id}.md ← prose source-of-truth (untouched by this skill)
{id}.lexicon.yaml ← machine-readable translation table (this skill consumes)
LAYER 1 — INTERNAL ARTIFACTS (per client repo, /docs/**)
Existing artifacts, optionally extended with YAML frontmatter:
audiences[], tldr, strata, client_render_mode
LAYER 2 — TRANSLATION ENGINE (this skill)
Composes:
Product Domain Engine (Phase 4 logos→pathos rendering)
8-Strata Domain Ideal-Whole (gap-map / coverage detection)
voice-enforcement (constitution check vs persona register)
lexicon-substitution (forbidden-terms removal, analogy mapping, ELI5/TLDR shaping)
Output: docs/storefront/_generated/<artifact>.<persona>.client.md
then: docs/storefront/_curated/<artifact>.<persona>.client.md (after human ratify)
LAYER 3 — DEPLOY SURFACE (per-repo, per-stack adapter)
Hokage: /storefront/[...slug] via Next.js → rob.<domain> (link-gated)
Spiral: /storefront/[...slug] via Astro → maddie.<domain> (link-gated)
Future: static adapter ships plain HTML
Commands (CLI surface)
The skill is callable from any agent; the operator-facing form is the organvm storefront subcommand:
| Command | Purpose |
|---|
organvm storefront sync --repo <path> | Walk source.globs, read audiences frontmatter, render per-persona drafts to _generated/. Idempotent. |
organvm storefront audit [--persona <id>] [--unmtagged] | Report: lexicons stale (>90d behind prose), unmtagged client-relevant artifacts, orphan curated files (no source), forbidden-term hits in any draft. |
organvm storefront ratify <artifact-slug> [--persona <id>] | Move _generated/...client.md → _curated/...client.md after human read. Records voice-scorer score in artifact metadata. |
organvm storefront status | One-line: <n> drafts unratified · <m> internal artifacts changed since last sync · <k> forbidden-term hits. |
organvm storefront feedback add --persona <id> --note "..." | Append client feedback to ~/Documents/personas/{id}.feedback.md and create an IRF.STO-FEEDBACK-* item. |
Invocation by agents: prefer the skill protocol (this document) over re-implementing; call the CLI for actual rendering.
Composition contract (what this skill does NOT duplicate)
This skill is a conductor. It invokes existing skills/tools rather than re-implementing them:
- Product Domain Engine — Phase 4 (rhetorical-mode rendering) is invoked for the logos→pathos transform when audience.register requires it.
- domain-ideal-whole-substrate — the 8-strata
internal-magnet rules are read to determine which source globs are eligible for client projection. The gap-map stratum surfaces audit findings.
- voice-enforcement — the persona's
voice_constitution field names a rule pack that voice-scorer uses to score every draft pre-ratify.
- stranger-test-protocol — the verification step "fresh agent identifies the persona's domain language without invoking PDE/ontology terms" comes from this protocol.
Do not re-implement what these skills already do. Substrate failure modes flow downstream from substrate violations.
Substrate refuses to render orphans
Every storefront-rendered artifact MUST trace bridge_to: lineage to a real internal artifact. The substrate refuses to emit _generated/*.client.md for any input where:
- No source file exists at the path implied by the artifact frontmatter, OR
bridge_to: references a domain handle not present in the persona's lexicon, OR
audiences[].id references a persona without a {id}.lexicon.yaml file in ~/Documents/personas/.
This rule prevents personalization theatre — making something sound like the persona without saying anything they would actually care about. Density-of-real-content is the gravity.
Lifecycle (Universal Rule #6 — everything is a loop)
internal artifact created/updated
→ audiences frontmatter present? if no → skip (default [internal])
→ operator runs `organvm storefront sync` (on demand, no daemon — Universal Rule #55)
→ render pipeline emits _generated/<artifact>.<persona>.client.md per audience entry
→ voice-scorer scores draft against persona.voice_constitution
→ IRF auto-issues STO-DRAFT-* item per unratified draft
→ operator reads + ratifies → _curated/
→ repo-native build (npm run build for Next.js, etc.) ships /storefront/* routes
→ client receives URL; reads in their language
→ client feedback enters via mailto + `storefront feedback add` → STO-FEEDBACK-* IRF items
→ next sync regenerates from updated source + lexicon
No daemons. No LaunchAgents. Pre-push git hook in opt-in repos may warn (exit 0) when client-relevant files changed without a regenerate; the warning surfaces the exact storefront sync command to run.
Phased rollout (substrate maturity)
| Slice | Scope | Status (2026-04-25) |
|---|
| 1 — Rob storefront | Schema, Rob lexicon, hokage-chess config, frontmatter on 1+ canonical artifact, hand-curated drafts | scaffolded; route + deploy deferred (hokage Next.js has breaking changes per AGENTS.md) |
| 2 — Maddie storefront | Astro adapter, Maddie lexicon, spiral config, frontmatter on 5 spiral artifacts | pending |
| 3 — Full substrate | Auto-draft generator, pre-push hook, IRF wiring, mailto backfeed, static adapter, audit --unmtagged baseline | pending |
References
- Plan:
~/.Codex/plans/2026-04-25-personalized-client-storefront-substrate.md
- Schema:
~/Workspace/organvm/schema-definitions/schemas/storefront-v1.schema.json
- Canonical example:
~/Workspace/organvm/schema-definitions/examples/storefront-frontmatter-rob.yaml
- First persona lexicon:
~/Documents/personas/rob-bonavoglia.lexicon.yaml
- First repo opt-in:
~/Workspace/4444J99/hokage-chess/storefront.config.yaml
- Sibling skills:
product-domain-engine (PDE Phase 4 invocation), domain-ideal-whole-substrate (8-strata gap-map), voice-enforcement (per-persona constitution checks)