Skip to content

Commit dfd7114

Browse files
committed
feat(catalog): eight design roles, and drop the Tailscale item
Brand guardian, UI designer, UX architect, accessibility reviewer, presentation designer, infographic designer, image prompt writer and design critic, with their text in the three languages. The catalog is now 66 roles; search and the category filter already cover them. Spec 18 drops item 6 (remote access with Tailscale), kept as a numbered slot so references to the other items stay valid: the phone uses the account server (28) instead.
1 parent 784bed0 commit dfd7114

21 files changed

Lines changed: 558 additions & 12 deletions

‎app/src/features/catalog/agency.test.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("the Bot agency", () => {
3333

3434
fireEvent.click(within(invite).getByRole("button", { name: "See all bots" }));
3535
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
36-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(58);
36+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(66);
3737
});
3838

3939
test("a crew with only its chief invites the owner to pick bots, and a click adds one", async () => {
@@ -82,7 +82,7 @@ describe("the Bot agency", () => {
8282
await openCrewWithChief();
8383
fireEvent.click(screen.getByRole("button", { name: "Bot agency" }));
8484
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
85-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(58);
85+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(66);
8686

8787
fireEvent.click(within(dialog).getByRole("button", { name: "Marketing & sales" }));
8888
expect(within(dialog).getAllByRole("listitem")).toHaveLength(18);
@@ -129,7 +129,7 @@ describe("the Bot agency", () => {
129129
expect(addCalls(fake)[0]).toMatchObject({ templateId: "code-reviewer" });
130130

131131
fireEvent.click(within(dialog).getByRole("button", { name: "Back to all bots" }));
132-
expect(within(dialog).getAllByRole("listitem")).toHaveLength(58);
132+
expect(within(dialog).getAllByRole("listitem")).toHaveLength(66);
133133
});
134134

135135
test("the same role twice gets another name", async () => {

‎app/src/i18n/en/catalog.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { base } from "./catalogBase";
22
import { contentAndLearning } from "./catalogContent";
3+
import { design } from "./catalogDesign";
34
import { engineering } from "./catalogEngineering";
45
import { marketing } from "./catalogMarketing";
56
import { product } from "./catalogProduct";
@@ -49,5 +50,5 @@ export const catalog = {
4950
pairs: "Works well with",
5051
technical: "What the bot is told when it starts",
5152
},
52-
roles: { ...base, ...product, ...marketing, ...engineering, ...contentAndLearning },
53+
roles: { ...base, ...product, ...marketing, ...engineering, ...contentAndLearning, ...design },
5354
};

‎app/src/i18n/en/catalogDesign.ts‎

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
// Design roles (spec 26.3): what the owner reads about each.
2+
3+
export const design = {
4+
"brand-guardian": {
5+
name: "Brand Guardian",
6+
role: "Keeps everything on brand: writes a short brand guide from your material and checks pieces against it",
7+
summary: "Writes a short brand guide from your material and checks that everything follows it",
8+
about:
9+
"Gathers your logo, colors, fonts and examples into a one-page brand guide, marking what it saw and what it suggests. Then it checks pages, posts and decks against the guide and lists exactly where each one drifts. It never invents a brand fact and never changes a rule without asking you.",
10+
when: "When you have a brand and several people or bots make things for it.",
11+
pairs: "Designer, who applies the visual fixes, and Writer, who applies the voice fixes.",
12+
},
13+
"ui-designer": {
14+
name: "UI Designer",
15+
role: "Builds the visual system of an interface: colors, type, spacing and components, shown on a style page",
16+
summary:
17+
"Builds the colors, type, spacing and buttons of an interface and shows them on one style page",
18+
about:
19+
"Chooses a small palette, a type scale and a spacing step, then builds the buttons, fields, cards and messages with all their states on one style page you can see. Every later screen reuses those parts, so the product looks like one thing.",
20+
when: "At the start of a product, or when your screens stopped looking like they belong together.",
21+
pairs:
22+
"Designer, who makes the pages, Frontend Developer, who builds them, and Accessibility Reviewer.",
23+
},
24+
"ux-architect": {
25+
name: "UX Architect",
26+
role: "Plans how a product is organized and how people move through it: site maps, user flows and plain wireframes",
27+
summary:
28+
"Plans how a product is organized and how people move through it, with flows and simple wireframes",
29+
about:
30+
"Starts from who the people are and what they want to do, groups the content the way they think and draws each flow, including errors, empty states and going back. The wireframes are plain grey screens, so you judge the structure before any decoration. It lists the places people are likely to get lost.",
31+
when: "Before you design or build a product, a site or a big new feature.",
32+
pairs: "UX Researcher, to test the guesses, and UI Designer, who gives the wireframes a look.",
33+
},
34+
"accessibility-reviewer": {
35+
name: "Accessibility Reviewer",
36+
role: "Checks pages and designs so people with different abilities can use them, and explains each fix in plain words",
37+
summary:
38+
"Checks that your pages work for people with different abilities and explains each fix plainly",
39+
about:
40+
"Reads the code of a page and checks what can be read there: contrast, image descriptions, form labels, headings, keyboard use, visible focus and information carried by color alone. Each problem comes with who it affects and the exact fix. It says what it cannot check, such as a real screen reader, and never calls a page certified.",
41+
when: "Before you launch a page, and after a big change to one.",
42+
pairs:
43+
"Frontend Developer, who applies the fixes, and UI Designer, who plans for it from the start.",
44+
},
45+
"presentation-designer": {
46+
name: "Presentation Designer",
47+
role: "Turns your message into a clear slide deck: the story, one idea per slide and a clean look, shown as screens",
48+
summary:
49+
"Turns what you want to say into a clear slide deck, one idea per slide, that you can see take shape",
50+
about:
51+
"Writes the story first, then designs each slide as a screen you see appear in the design area: one idea, a title that states the point, large text and one picture or chart at most. The details go into speaker notes. The slides are screens, not a PowerPoint file.",
52+
when: "When you have to present, pitch or teach something and want it clear.",
53+
pairs: "Researcher, for facts, Writer, for the words, and Infographic Designer, for charts.",
54+
},
55+
"infographic-designer": {
56+
name: "Infographic Designer",
57+
role: "Turns numbers and ideas into clear charts and infographics, drawn as screens, without bending the data",
58+
summary: "Turns numbers and ideas into clear charts and infographics, without bending the data",
59+
about:
60+
"Checks where the numbers come from, then picks the form that makes the message clear and draws it as a screen: honest scales, direct labels, few colors, the source and the date on the picture. It tells you what the picture does not show and never invents a number to fill a gap.",
61+
when: "When a table or a report is hard to read and a picture would do it better.",
62+
pairs: "Data Analyst, for the numbers, and Presentation Designer, to put it in a deck.",
63+
},
64+
"image-prompt-writer": {
65+
name: "Image Prompt Writer",
66+
role: "Writes clear, consistent descriptions that you paste into an image or video generator, and refines them from the results",
67+
summary:
68+
"Writes clear, consistent descriptions for the image or video generator you use, and refines them",
69+
about:
70+
"Does not make images itself: it writes the descriptions you paste into the tool you use, with the subject, setting, style, light and framing, in two or three variations. For a set that must look alike, it writes one shared style paragraph. Show it what came out and it changes only the part that caused the problem.",
71+
when: "When you use an image or video generator and your results are random or inconsistent.",
72+
pairs: "Brand Guardian, to keep the style on brand, and Social Media, for the posts.",
73+
},
74+
"design-critic": {
75+
name: "Design Critic",
76+
role: "Reviews screens and pages with a fresh eye and gives a short, ordered list of what to improve, and why",
77+
summary:
78+
"Looks at your screens with a fresh eye and tells you, in order, what to improve and why",
79+
about:
80+
"Reads the goal and the screen files and tells you the three things that matter most first: what the eye sees first, whether the main action is clear, spacing, type, contrast and how it works on a small screen. It separates clear problems from matters of taste, says what to keep and does not redesign unless you ask.",
81+
when: "When a screen feels off and you cannot say why, or before you ship.",
82+
pairs: "Designer, who makes the changes, and Accessibility Reviewer, for access.",
83+
},
84+
};

‎app/src/i18n/es/catalog.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { Messages } from "../en";
22
import { base } from "./catalogBase";
33
import { contentAndLearning } from "./catalogContent";
4+
import { design } from "./catalogDesign";
45
import { engineering } from "./catalogEngineering";
56
import { marketing } from "./catalogMarketing";
67
import { product } from "./catalogProduct";
@@ -46,5 +47,5 @@ export const catalog: Messages["catalog"] = {
4647
pairs: "Combina bien con",
4748
technical: "Lo que recibe el bot cuando empieza",
4849
},
49-
roles: { ...base, ...product, ...marketing, ...engineering, ...contentAndLearning },
50+
roles: { ...base, ...product, ...marketing, ...engineering, ...contentAndLearning, ...design },
5051
};

‎app/src/i18n/es/catalogDesign.ts‎

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import type { design as en } from "../en/catalogDesign";
2+
3+
export const design: typeof en = {
4+
"brand-guardian": {
5+
name: "Guardián de la marca",
6+
role: "Mantiene todo fiel a la marca: escribe una guía breve con tu material y revisa las piezas con ella",
7+
summary: "Escribe una guía breve de la marca con tu material y revisa que todo la siga",
8+
about:
9+
"Reúne tu logo, colores, fuentes y ejemplos en una guía de una página, marcando lo que vio y lo que sugiere. Luego revisa páginas, publicaciones y presentaciones con la guía y lista exactamente dónde se aparta cada una. Nunca inventa un dato de la marca ni cambia una regla sin preguntarte.",
10+
when: "Cuando tienes una marca y varias personas o bots crean cosas para ella.",
11+
pairs: "Diseñador, que aplica los ajustes visuales, y Redactor, que aplica los ajustes de voz.",
12+
},
13+
"ui-designer": {
14+
name: "Diseñador de interfaz",
15+
role: "Construye el sistema visual de una interfaz: colores, fuentes, espaciado y componentes, en una página de estilo",
16+
summary:
17+
"Construye colores, fuentes, espaciado y botones de una interfaz y los muestra en una página de estilo",
18+
about:
19+
"Elige una paleta pequeña, una escala de fuentes y un paso de espaciado, y construye botones, campos, tarjetas y avisos con todos sus estados en una página de estilo que ves. Cada pantalla siguiente reutiliza esas piezas, y el producto parece una sola cosa.",
20+
when: "Al empezar un producto, o cuando tus pantallas dejaron de parecer de la misma familia.",
21+
pairs:
22+
"Diseñador, que hace las páginas, Desarrollador front-end, que las construye, y Revisor de accesibilidad.",
23+
},
24+
"ux-architect": {
25+
name: "Arquitecto de experiencia",
26+
role: "Planifica cómo se organiza un producto y cómo se mueve la gente por él: mapas, flujos y bocetos simples",
27+
summary:
28+
"Planifica cómo se organiza un producto y cómo lo recorre la gente, con flujos y bocetos simples",
29+
about:
30+
"Parte de quiénes son las personas y qué quieren hacer, agrupa el contenido como ellas lo piensan y dibuja cada flujo, con errores, pantallas vacías y el volver atrás. Los bocetos son pantallas grises y simples, para que juzgues la estructura antes de cualquier adorno. Lista los lugares donde la gente puede perderse.",
31+
when: "Antes de diseñar o construir un producto, un sitio o una novedad grande.",
32+
pairs:
33+
"Investigador de usuarios, para probar las hipótesis, y Diseñador de interfaz, que da aspecto a los bocetos.",
34+
},
35+
"accessibility-reviewer": {
36+
name: "Revisor de accesibilidad",
37+
role: "Comprueba que páginas y diseños sirvan a personas con distintas capacidades y explica cada arreglo en palabras sencillas",
38+
summary:
39+
"Comprueba que tus páginas funcionen para personas con distintas capacidades y explica cada arreglo",
40+
about:
41+
"Lee el código de una página y comprueba lo que se puede ver en él: contraste, descripción de imágenes, etiquetas de campos, títulos, uso con teclado, foco visible e información dada solo por el color. Cada problema trae a quién afecta y el arreglo exacto. Dice lo que no puede comprobar, como un lector de pantalla real, y nunca llama certificada a una página.",
42+
when: "Antes de lanzar una página y después de un cambio grande en ella.",
43+
pairs:
44+
"Desarrollador front-end, que aplica los arreglos, y Diseñador de interfaz, que lo planifica desde el principio.",
45+
},
46+
"presentation-designer": {
47+
name: "Diseñador de presentaciones",
48+
role: "Convierte tu mensaje en una presentación clara: la historia, una idea por diapositiva y un aspecto limpio, en pantallas",
49+
summary:
50+
"Convierte lo que quieres decir en una presentación clara, una idea por diapositiva, que ves nacer",
51+
about:
52+
"Escribe primero la historia y luego diseña cada diapositiva como una pantalla que ves aparecer en el área de diseño: una idea, un título que dice el punto, texto grande y como mucho una imagen o gráfico. Los detalles van a las notas del orador. Las diapositivas son pantallas, no un archivo de PowerPoint.",
53+
when: "Cuando tienes que presentar, proponer o enseñar algo y quieres claridad.",
54+
pairs:
55+
"Investigador, para los datos, Redactor, para las palabras, y Diseñador de infografías, para los gráficos.",
56+
},
57+
"infographic-designer": {
58+
name: "Diseñador de infografías",
59+
role: "Convierte números e ideas en gráficos e infografías claros, dibujados como pantallas, sin torcer los datos",
60+
summary: "Convierte números e ideas en gráficos e infografías claros, sin torcer los datos",
61+
about:
62+
"Comprueba de dónde vienen los números, elige la forma que aclara el mensaje y la dibuja como pantalla: escalas honestas, etiquetas directas, pocos colores, la fuente y la fecha en la imagen. Dice lo que la imagen no muestra y nunca inventa un número para tapar un hueco.",
63+
when: "Cuando una tabla o un informe es difícil de leer y una imagen lo resolvería mejor.",
64+
pairs:
65+
"Analista de datos, para los números, y Diseñador de presentaciones, para llevarlo a una presentación.",
66+
},
67+
"image-prompt-writer": {
68+
name: "Redactor de descripciones de imagen",
69+
role: "Escribe descripciones claras y coherentes para pegar en un generador de imágenes o vídeo y las mejora con los resultados",
70+
summary:
71+
"Escribe descripciones claras y coherentes para el generador de imágenes o vídeo que usas y las mejora",
72+
about:
73+
"No hace las imágenes: escribe las descripciones que pegas en la herramienta que usas, con el tema, el escenario, el estilo, la luz y el encuadre, en dos o tres versiones. Para un conjunto que debe verse igual, escribe un párrafo de estilo para repetir. Enséñale el resultado y cambia solo la parte que causó el problema.",
74+
when: "Cuando usas un generador de imágenes o vídeo y los resultados salen al azar o distintos entre sí.",
75+
pairs:
76+
"Guardián de la marca, para mantener el estilo de la marca, y Redes sociales, para las publicaciones.",
77+
},
78+
"design-critic": {
79+
name: "Crítico de diseño",
80+
role: "Revisa pantallas y páginas con ojos nuevos y entrega una lista corta y ordenada de qué mejorar y por qué",
81+
summary: "Mira tus pantallas con ojos nuevos y te dice, en orden, qué mejorar y por qué",
82+
about:
83+
"Lee el objetivo y los archivos de la pantalla y te dice primero las tres cosas que más importan: qué ve primero el ojo, si la acción principal está clara, el espaciado, las fuentes, el contraste y cómo funciona en una pantalla pequeña. Separa lo que es un problema claro de lo que es gusto, dice qué conservar y no rehace la pantalla si no se lo pides.",
84+
when: "Cuando una pantalla se siente rara y no sabes decir por qué, o antes de publicar.",
85+
pairs: "Diseñador, que hace los cambios, y Revisor de accesibilidad, para el acceso.",
86+
},
87+
};

‎app/src/i18n/pt-BR/catalog.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { Messages } from "../en";
22
import { base } from "./catalogBase";
33
import { contentAndLearning } from "./catalogContent";
4+
import { design } from "./catalogDesign";
45
import { engineering } from "./catalogEngineering";
56
import { marketing } from "./catalogMarketing";
67
import { product } from "./catalogProduct";
@@ -46,5 +47,5 @@ export const catalog: Messages["catalog"] = {
4647
pairs: "Combina bem com",
4748
technical: "O que o bot recebe quando começa",
4849
},
49-
roles: { ...base, ...product, ...marketing, ...engineering, ...contentAndLearning },
50+
roles: { ...base, ...product, ...marketing, ...engineering, ...contentAndLearning, ...design },
5051
};

0 commit comments

Comments
 (0)