name: architecture-standards description: Use when working in massCode and you need repo-wide architecture rules, naming conventions, decomposition boundaries, or guidance on which massCode skill to load next.
Architecture Standards
Overview
Базовый принцип проекта: YAGNI и простота прежде всего. Не усложняй код ради гипотетических сценариев, не строй абстракции без повторяющейся потребности и не размывай границы между renderer, API и main.
Core Rules
- Соблюдай разделение слоёв:
- Renderer: только UI, composables, вызовы
api.*иipc.invoke(...). - API: маршруты Elysia, DTO, orchestration и доступ к сервисам и данным приложения.
- Main: системные интеграции, IPC handlers, lifecycle и слой данных приложения.
- Renderer: только UI, composables, вызовы
- Data flow по умолчанию: Renderer → API / IPC → service / data layer → response.
- Vue-компоненты называй в
PascalCase. - TypeScript-файлы называй в
camelCase. - Composables именуй с префиксом
use, а имя файла должно совпадать с экспортируемой функцией.
YAGNI Guardrails
Признаки overengineering:
- функция страхуется от кейса, которого реально не существует;
- factory или wrapper используется ровно в одном месте и не скрывает состояние;
- abstraction-for-abstraction без повторяющейся боли;
- константы, паттерны и конфигурации придуманы заранее, а не из реальной потребности.
Component Decomposition
- Если компонент становится больше примерно
300строк или держит3+несвязанных обязанности, дели его. - Порядок разбиения:
- вынеси константы и статические данные;
- вынеси чистые функции в utils, только если это реально переиспользуется;
- перемести состояние и эффекты в composable;
- разбей шаблон на локальные child components.
- Не держи в
<template>логику сложнее тернарного оператора.
Feature Subdirectories
- Если часть домена выросла в отдельный subsystem, группируй локальные компоненты, helpers, tests и fixtures в поддиректорию.
- Внутри поддиректории не повторяй полный родительский префикс в именах файлов.
- Локальные файлы держи рядом с фичей. Shared-код, который нужен нескольким областям, оставляй выше уровнем.
When to Load Other Skills
- Vue renderer, auto-imports, composables, shared state:
vue-renderer-standards - визуальная база, typography, renderer styling decisions:
ui-foundations Ui*, Shadcn,cn,cva, notifications:ui-primitives- API routes, DTO, IPC, Electron boundaries:
electron-api-and-ipc - generated API types, utility typing, локальные view-model:
api-and-typing code/notes/math/tools, состояние spaces и их синхронизация:spaces-architecture- i18n, locale keys,
i18n.t(...):i18n - docs website, docs sidebar, скриншоты, README-упоминания фич:
documentation-workflow - scoped lint/test и follow-up commands:
development-workflow
Common Mistakes
- Тянуть DB или filesystem knowledge в renderer.
- Раздувать один компонент до “оркестратора всего”.
- Выносить абстракцию до появления второй реальной точки использования.
- Размазывать одну фичу по плоской структуре файлов, когда ей уже нужен локальный subdirectory.
- Придумывать локальные typing-паттерны, хотя для них уже пора иметь отдельный skill.