Skip to content

Route get_space — a space is a graph, and nothing told agents to read it - #8

Open
A-PachecoT wants to merge 2 commits into
mainfrom
feat/space-as-graph
Open

Route get_space — a space is a graph, and nothing told agents to read it#8
A-PachecoT wants to merge 2 commits into
mainfrom
feat/space-as-graph

Conversation

@A-PachecoT

Copy link
Copy Markdown
Contributor

get_space already returns the tree, the landing slug, and the link graph (resolved + pending edges). It is exactly the map an agent needs — and neither the skill nor the flow mentioned it.

Same shape as #6: the capability existed, the routing did not.

Measured on a real space

cofoundy/atelier, 41 docs published:

landing_slug null — the space opened as a list of 41 titles, no front door
every tree node isFolder: false — no folder is a node (cofoundy/basalt#472)
outbound edges only from readme

Changes

  1. get_space becomes step 2 of the MCP flow — read the map before authoring into it.
  2. A new "link it into the graph" step. This is the one that decays silently: a doc nothing points at is a page with a URL in a pit, reachable only by search.
  3. SKILL.md gains a short "a space is a graph, not a folder" section plus one anti-pattern (don't publish an orphan), stated once for both paths.

Made measurable rather than a matter of taste: get_space reports edges against nodes, and --strict already fails the CLI publish on unresolved links.

Size

SKILL.md 387 → 512 words (before this branch series: 666). Tests 26/26, validate-skills.sh ok.

Related: cofoundy/basalt#475 (landing inference), #472 (folders as nodes).

…elling agents to read it

get_space already returns the tree, the landing slug, and the link graph with resolved
and pending edges. It is exactly the map an agent needs to know where a new doc belongs
and what should point at it — and neither the skill nor the flow mentioned it.

Same shape as the CLI-vs-MCP fix: the capability existed, the routing did not.

Measured on a real space (cofoundy/atelier, 41 docs):
  - landing_slug was null, so the space opened as a list of 41 titles with no front door
  - every tree node came back isFolder:false — no folder is a node (cofoundy/basalt#472)
  - the readme was the only doc with outbound edges

Three changes:
  - get_space becomes step 2 of the MCP flow: read the map BEFORE authoring into it.
  - a new 'link it into the graph' step, because that is the one that decays silently —
    every unlinked doc turns the space back into a flat list only search can reach.
  - SKILL.md gains a short 'a space is a graph, not a folder' section plus one anti-pattern
    (don't publish an orphan), stated once and applying to both paths.

Made measurable rather than a matter of taste: get_space reports edges against nodes, and
on the CLI side --strict already fails on unresolved links.

SKILL.md 387 -> 512 words (original before this branch series: 666). Tests 26/26,
validate-skills ok.
…egla

Segunda palanca del incentivo (la primera vive en el generador: harvest.py ahora emite
KPIBoard/DonutChart/MetadataCard en vez de tablas planas, así el formato bueno sale gratis
y nadie tiene que acordarse).

Acá va la que sí es de la skill: antes de autorar, si el doc lleva datos, leer
basalt://reference/components y elegir por forma. Markdown tables pasan a ser el fallback
explícito, no el default silencioso.

Con la razón correcta, que el cookbook no enuncia (cofoundy/basalt#476): los componentes
usan var(--cf-*) y se re-skinean por tenant; el markup estilizado a mano no. Un doc con
color hardcodeado se ve roto el día que un cliente tenga su propia marca.

No es una prohibición: la prosa sigue siendo prosa, y un componente se usa cuando el
contenido tiene una forma que la prosa no expresa — no para decorar un párrafo.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant