transmute-lore · git:20260828.e3d9c04 · 2026-08-28 · sha256 99efd9223acc30b1

transmute-lore git:20260828.e3d9c04A

Immutable. This exact content is served forever at /api/v1/blob/99efd9223acc30b1.

---
name: transmute-lore
description: Use when a project's existing body of criteria must be operated as a whole instead of grown one clue at a time — criteria scattered outside the six-piece standard, project modules duplicating what the area already owns, a Lore in mixed languages, a healthy Lore written against an older version of these skills, a Lore that decayed by accumulating correct things, a project leaving Lore without losing its criterion, or a Lore that has to travel as one Markdown into a chat or notebook. Trigger on transmute, migrate, clean, translate, upgrade, bring Lore up to date, prune the Lore, "prune-lore", "poda en lore", "poda el lore de {proyecto}", leave Lore, "dejar el lore", crystallize Lore, export Lore to one Markdown, prepare Lore as a chat/notebook source, extract a crystallization, "extrae esta cristalización", run MYCELIUM, "corre el micelio", "run MICELIO", "¿está conectado el lore?", "quedó todo conectado", "si hago esta tarea carga el criterio".
---

# Transmute Lore

The criteria is already there. It is in a README nobody finishes, in a `CLAUDE.md` that grew by
accretion, in a comment that says *don't touch this, it breaks hydration* — written by people who
paid for it, sitting in shapes nothing can load. Nothing is missing. Nothing is reachable either.

This skill operates a project's body of criteria. Eight modes, one skill:

- **ADD** — the project **never applied** the Lore method (or has a rough/incomplete `lore/`).
  Valuable criteria is *trapped* in non-distillable forms: long READMEs, an everything-mixed
  instruction contracts (`CLAUDE.md` or `AGENTS.md`), comments, tacit knowledge. ADD extracts it and lifts it to the six-piece
  standard **without losing it and without inventing what never existed**.
- **CLEAN** — the project already has the standard, but carries **per-project copies of thematic
  modules that duplicate what its area already owns**. CLEAN removes those modules, keeps
  `identidad.md` / `principios.md` / `index.md`, and rewrites `index.md` to point at the **area's**
  modules — but only after confirming that criteria already lives in the area (or reporting it if
  it does not).
- **TRANSLATE** — the Lore exists but its **language is mixed or wrong** (e.g. artifacts generated
  in English when the user works in Spanish). TRANSLATE standardizes every Lore artifact into one
  target language — **content and localizable filenames** — preserving structure, link integrity,
  confidence markers and — above all — **meaning**: it is a translation, never a rewrite.
- **UPGRADE** — the Lore is **in the standard and in active use**, but was written against an older
  version of these skills. It is structurally fine and materially behind: it lacks the gates and
  distinctions the kit learned after it was written. UPGRADE arbitrates the existing Lore **against
  the current version of the kit** and raises it, without rewriting what is already earned.
- **PRUNE** — the Lore is in the standard, in active use, and **nothing in it is wrong**. It decayed
  by accumulating correct things until their sum no longer fits the deliverable. PRUNE is the only
  mode that asks *does any of this need to be here?* and counts apparatus against content. What it
  shrinks is **the deliverable's surface**, not necessarily the corpus — see the warning in Phase 4.
  It is not CLEAN: nothing here is a duplicate.
- **MYCELIUM** — the Lore is in the standard and nothing in it is wrong, and you are about to lean on
  it for real work. MYCELIUM walks the network and reports which clues **nothing runs**: no step of
  any procedure runs them. It writes nothing. It is the only mode that asks *can this fire?*
  instead of *is this correct?* — and the two are independent, which is why no reading finds it.
  *Un Lore sin micelio es un herbario* — countable, not fireable. *Ese es el silencio dentro del
  silencio*: a check can run and its result never be consumed — two separate joints — and it is
  why MYCELIUM blocks the next operation until every finding is written or explicitly declined.
- **LEAVE** — the project outgrows Lore or the person chooses to leave (H13). LEAVE removes governance (`<!-- lore:always-on -->`) but keeps `lore/` and routing as plain `enrutamiento.md`, leaving `FASES.md` with `leave:` marker so `UPGRADE` can return. Project stays buildable without the kit.
- **CRYSTALLIZE** — the Lore is healthy and must travel as a **single Markdown derivative** into a
  chat, an AI project, or a notebook such as NotebookLM. It resolves the live routing into one
  traceable snapshot while leaving every source untouched. The snapshot is **extractable**: unpacking
  it rebuilds a mini-root whose routing table resolves, so a third person's AI session can work as
  closely as possible to the crystallizer's. It **does not replace the six live artifacts** and is
  not the normal format for work inside an agent or IDE that can read the live tree.

## When to use

- **ADD:** a project with real criteria but no standard structure — no `lore/identidad.md` or
  `lore/principios.md`, state living inline in the instruction contract, or an incomplete/stale `lore/`.
  Triggers: *"transmute the lore of {project}"*, *"this old project isn't in the new format"*,
  *"migrate this project to the lore standard"*.
- **CLEAN:** a project inside an area that has redundant thematic modules (e.g. its own
  `lore/animation.md` identical to the area's). Trigger: *"clean the lore of {project}"*.
- **TRANSLATE:** a Lore whose content is in the wrong language, or mixes languages across artifacts.
  Triggers: *"standardize the language of the lore of {project}"*, *"translate the lore of
  {project} to {language}"*, *"estandariza el idioma del lore"*.
- **UPGRADE:** a healthy Lore that predates the installed version of the kit — nothing looks broken,
  which is the point. Triggers: *"improve the lore of {project} with the new version"*, *"bring this
  lore up to date with the plugin"*, *"arbitra mi lore contra la versión nueva"*, *"mejora este lore
  con lo nuevo del plugin"*. Also the natural next step right after updating the plugin.
- **PRUNE:** a Lore nobody can point at a defect in, whose *output* has degraded — deliverables that
  go in circles, hedge, or arrive wrapped in more apparatus than content, and a human who has started
  writing the thing by hand instead. That last symptom is the loudest one: **the owner bypassing
  their own system is the measurement.** Triggers: *"prune the lore of {project}"*, *"prune-lore"*,
  *"poda en lore"*, *"poda el lore de {proyecto}"*, *"this lore has too much in it"*. Also the
  scheduled pass of a pruning ritual, run **before** producing the week's work and never after.
- **MYCELIUM:** before a complex task, right after installing or updating the kit, or any time the
  Lore *looks* healthy and you want to know whether it can actually fire. Triggers: *"corre el
  micelio"*, *"¿está conectado el lore?"*, *"micelio de {proyecto}"*, *"check the Lore is plugged
  in"*, *"quedó todo conectado"*, *"quedó todo bien conectado"*, *"los archivos hablan entre sí"*, *"mi lore quedó bien"*, *"si hago esta tarea carga el criterio"*, *"pedí A y me diste B"*. Read-only; it never writes. Also triggers in plain language without the name — *"quedó todo bien conectado?"*, *"los archivos hablan bien entre sí?"*, *"mi lore quedó funcionando bien?"*, *"si hago esta tarea el criterio carga bien o tengo que arreglar algo?"*, *"por qué te pedí A y me diste B?"*
- **LEAVE:** a project that outgrows Lore or a person who chooses to leave without losing the criterion (H13). Triggers: *"leave Lore"*, *"dejar el lore"*, *"quitar gobierno"*, *"salir del lore sin perder criterio"*, *"deja el lore pero conserva el criterio"*.
- **CRYSTALLIZE:** a project or bot whose routed criteria must be attached to a chat, AI project, or
  notebook as one `.md`, or unpacked from that file into a folder. Triggers: *"crystallize this
  Lore"*, *"export this Lore to one Markdown"*, *"prepare this bot as a ChatGPT source"*,
  *"cristaliza el lore en un solo archivo"*, *"extract this crystallization"*,
  *"extrae esta cristalización"*.

Detect the area: a project living in `{area}/proyectos/{name}/` inherits from `{area}/lore/`.
If the project is standalone (no parent area), CLEAN does not apply — say so.

## Target — the six-piece standard

| Artifact | Holds | Location |
|---|---|---|
| `identidad.md` | What the project is, its purpose, its **quality floor** (the north star). | `lore/` |
| `principios.md` | Invariant laws (technical + business): prohibitions and imperatives. | `lore/` |
| Thematic modules | Technical scars by topic (animation, layout, scroll…) as clues. | `lore/` |
| `index.md` | Navigation map of the lore: one line per pattern. | `lore/` |
| `FASES.md` | The project's state and plan (current phase, focus). **Outside `lore/`.** | root |
| `CLAUDE.md` or `AGENTS.md` | The one host-selected contract slimmed to **pointers** (no duplicated criteria). | root |

These are six structural pieces, not six literal files: thematic modules may be many.

> **Scope boundary for contracts:** “one contract” applies at the Lore scope root. Do not delete,
> rename or absorb nested instruction files managed by a framework or another tool (for example a
> Next.js or HyperFrames `AGENTS.md`). If both names already exist at the target root, compare their
> contents, identify ownership and present the choice at the threshold; never discard unique rules
> merely to satisfy the one-file default.

> **No `logos.md` is generated.** That is specific to research projects, not the generic standard.

> **Artifact names are localized.** The names above are the Spanish canonical forms; per the kit's
> language rule they render in the user's language (e.g. English: `identity.md`, `principles.md`,
> `PHASES.md`). Fixed in every language: the selected contract name, `lore/`, `index.md`, `golden-paths.md`, the `<!-- lore:always-on -->` marker pair (literal, never localized — localizing it breaks idempotent stamping silently).
> Inside an existing corpus, its established names win.

---

## Modes — full procedure, loaded on demand

Each mode's complete procedure lives in its own file, read only once you know which mode
applies (the sections above already say which one, and its triggers). Reading a mode you are
not running wastes nothing on its own, but eight full procedures for one task is the exact
kind of apparatus `PRUNE` exists to catch — so this skill does not preload them.

- **ADD** — `modes/add.md`
- **CLEAN** — `modes/clean.md`
- **TRANSLATE** — `modes/translate.md`
- **UPGRADE** — `modes/upgrade.md`
- **PRUNE** — `modes/prune.md`
- **MYCELIUM** — `modes/mycelium.md`
- **LEAVE** — `modes/leave.md`
- **CRYSTALLIZE** — `modes/crystallize.md`

## Invariants

- **Criteria is never invented.** Only already-scattered criteria is transmuted. An artifact that
  would be empty because the project lacks that criteria stays minimal and says so — never padded.
- **A transcribed binary is not told apart by its extension.** Compare a binary's text against the
  existing corpus before extracting it, and when transcribing one, **record the correspondence
  binary → transcription** in the destination. Pending extraction items are written by content, not
  by file type.
- **Discarded noise is reported**, not silently deleted (filter transparency).
- **Clean tree gates writing, not diagnosis:** ADD/CLEAN/TRANSLATE keep their existing Phase 0
  precondition; UPGRADE may diagnose and present its threshold in a dirty/read-only tree, then
  requires a clean tree immediately before applying the approved findings.
- **Free notes survive transmutation.** A `notas/` / `notes/` / `apuntes/` inbox is mined by the
  conditional `save-to-lore/notas.md` function, receives traceable frontmatter, and remains in
  place. No transmute mode deletes it as cleanup.
- **Do not overwrite old lore/docs without surfacing discrepancies** with code or the description.
- **A paragraph is a paragraph.** Continuous prose in `lore/`, the contract and `FASES.md` runs to
  the period, not to column 80. Full statement and boundary live in `use-lore`; this skill is the
  one that writes, so the rule is here too.
- **MYCELIUM writes nothing, and its findings block what comes next.** It reports pairs (clue ⇢ the
  junction that is missing) and a rate, never a score; a disconnected clue is proposed a junction,
  never pruned; and the next operation does not start until every finding is written or explicitly
  declined. Its premise (`H14`) is an open hypothesis with `Crowding` as declared rival.
- **Threshold**: present the mapping with content in view and wait for approval before writing.
- **Do not auto-commit the target project.** The user reviews the diff and decides.
- **CLEAN never deletes `identidad.md` / `principios.md` / `index.md`** — only thematic modules, and
  only after confirming their criteria already lives in the area (otherwise reported, not deleted).
- **ADD writes new artifacts in the user's language — content and filenames** (fixed names
  selected contract name / `lore/` / `index.md` / `golden-paths.md` and general technical English terms
  excluded) — never in English just because this skill is.
- **TRANSLATE is meaning-preserving**: it changes the language of content and localizable
  filenames, never the criteria or the structure, and never leaves a broken link behind.
  Ambiguous nuances are flagged, not guessed.
- **PRUNE never removes criteria it did not pay for.** No visible scar behind a clue means `Rooted`,
  not `Deadwood` — absence of a visible reason is not evidence of no reason. And **nothing comes out
  without residue**: every removal is a dated line in `FASES.md` saying what it used to be for, or the
  next person to meet that friction re-derives the clue and believes it is new.
- **CRYSTALLIZE is a derivative, never authority.** It follows routed owners, excludes private and
  unrouted material by default, writes no source artifact, and declares that its snapshot may become
  stale. Regenerate it from the live tree instead of editing it as Lore.
- **CRYSTALLIZE inlines every routed body.** A file that only *points* at `lore-ecosistema/` or at
  an area's `lore/` has failed the mode. The yardstick is that a third person can work from the
  snapshot alone. "Without the ecosystem" is not a default and not a convenience.
- **CRYSTALLIZE is extractable.** Every inlined file carries a `<!-- lore:extract path="..." owner="..." -->`
  marker. Unpacking rebuilds a mini-root where `enrutamiento.md` resolves. The extractor ships with
  this skill (`scripts/crystallize.mjs`); the user does not write it.