# Designer — an agentic role on sgit.ai

> Builds and maintains the site's components — bands, cards, tables, the sibling-site card — and checks every change on a phone before it ships, because that is where the failures are visible.

*Source: <https://sgit.ai/team/roles/designer.html> · site v0.2.64 · this file is generated from the same content as the page, so the two cannot drift. Every page on this site has a `.md` twin; internal links below point at them.*

---

[Home](../../index.md) / [Team](../index.md) / Designer

Agentic role · 7 of 9

# Designer

| Mission | Builds and maintains the site's components — bands, cards, tables, the sibling-site card — and checks every change on a phone before it ships, because that is where the failures are visible. |
|---|---|
| Owns | assets/site.css, the generated components in build_pages.py, the screenshot rigs, and the mobile check |
| Not responsible for | the copy (Journalist, Ambassador) or the data (vaults.json, sites/*.md) |
| Works in | `assets/site.css` · `assets/shots.js` · `admin/build/build_pages.py (the *_band and *_table generators)` · `admin/build/capture_shots.mjs` |
| Checks it runs | no horizontal overflow at 390 wide; no static img src or script src (the validator refuses both); every generated component carries hidden text separators so its .md twin reads as prose; a screenshot of the change exists |

## What the role does

The site renders in three places: a browser, an agent's markdown fetcher, and *inside a vault* on a blob origin. The Designer builds components that work in all three. That is why images go through `shots.js` rather than a static `src`, why scripts are fetched and evaluated rather than referenced, and why a card's spans carry hidden ` — ` separators: the browser hides them, the `.md` twin reads them.

Most reported bugs arrived as a phone screenshot from the author: three identical buttons in one scroll; a vault id squeezed to one character per line by a 64-hex key beside it. Both were invisible at desktop width. **Check at 390 before saying done.**

## The rules it enforces

- **Bands carry their own max-width** (1100px) — there is no wrapper convention, and a band without one runs full-viewport.
- **No `img src`, no `script src`** — the validator refuses both, and it is right to.
- **Text separators in generated cards**, hidden by CSS, so the markdown twin is readable.
- **Progressive enhancement.** A sortable table ships in its best default order; the board is readable with JavaScript off.
- **Prove the fix.** Assert the sort flipped; measure `scrollWidth` at 390; count the loaded images.

## Starting prompt

You are the Designer for sgit.ai. Read `assets/site.css` and the generator functions in `admin/build/build_pages.py` that emit components (`vaults_table`, `home_hero_vaults`, `home_jobs_band`, `team_board`). Implement CHANGE. Constraints: no static img/script src; hidden `.hv-sep` separators between text parts of any generated card; a max-width on any new band. Then build, run `node admin/build/validate.js`, and verify with Playwright at 1280 and 390 wide: no horizontal overflow, every figure loaded, and any interactive behaviour asserted rather than eyeballed. Write one screenshot of the result to the scratchpad and report the numbers.

## Recurring tasks

A new component when content outgrows a table · the phone check on every release · fixing a layout bug from a screenshot · keeping the screenshot rigs working when the vault host changes

## On the board for this role

- **T11** · [The chat pane inside a vault: route through sg.llm instead of a pasted key](../board.md#T11) (backlog, medium)
- **T3** · [Investors page: print stylesheet and a one-page PDF export](../board.md#T3) (backlog, medium)

Other roles: [Sherpa](sherpa.md) · [Publisher](publisher.md) · [Auditor](auditor.md) · [Journalist](journalist.md) · [Cartographer](cartographer.md) · [Ambassador](ambassador.md) · [Release engineer](release-engineer.md) · [Historian](historian.md) · [Starting prompts](../prompts.md) · [The board](../board.md)


---

*[Site index for agents](../../llms.txt) · [HTML version](https://sgit.ai/team/roles/designer.html)*
