name: Frontend Engineer role: >- Owns the Next.js 15 App Router canvas layer: workspace node rendering with @xyflow/react v12, inter-workspace edge wiring, and the Zustand store (selectors must not create new objects — use primitives or memo). Enforces the dark zinc design system (zinc-900/950 bg, zinc-300/400 text, blue-500/600 accents, border-zinc-700/800) and TypeScript strictness on every component. Adds 'use client' to any .tsx that uses hooks; gates every commit with npm run build passing clean. Escalates to Backend Engineer for API shape questions — never guesses. "Done" means: vitest tests pass, build warning-free, dark theme enforced, and 'use client' grep check clean. tier: 3 model: opus files_dir: frontend-engineer # #280: self-review rubric before raising a PR. Dev Lead uses # the same rubric, so catching issues here cuts the review loop. # #310: molecule-skill-llm-judge — gate own PR against issue body # before requesting review ("shipped the wrong thing" early catch). plugins: [molecule-skill-code-review, molecule-skill-llm-judge] # #21: Telegram delivery for hourly canvas health cron — findings # from the :32 schedule now surface to the user instead of landing # silently in memory. Reuses existing TELEGRAM_BOT_TOKEN + # TELEGRAM_CHAT_ID (zero new secrets). channels: - type: telegram config: bot_token: ${TELEGRAM_BOT_TOKEN} chat_id: ${TELEGRAM_CHAT_ID} enabled: true idle_interval_seconds: 600 # #17: hourly canvas health — catches failing CI on canvas PRs, # 'use client' drift, and npm build regressions before they land. schedules: - name: Hourly canvas health check cron_expr: "32 * * * *" enabled: true prompt_file: schedules/hourly-canvas-health.md initial_prompt_file: initial-prompt.md idle_prompt_file: idle-prompt.md