AGENT SKILL

architecture

Project architecture and file structure conventions for all process types. Use when: (1) Creating new files or modules, (2) Deciding where code should go, (3) Converting single-file components to directories, (4) Reviewing code for structure compliance, (5) Adding new bridges, services, agents, or workers.

License 许可
Apache-2.0
最近更新
2026-07-14
Stars
★ 0
Forks
0

01 前言 Front Matter

name
architecture
description
Project architecture and file structure conventions for all process types. Use when: (1) Creating new files or modules, (2) Deciding where code should go, (3) Converting single-file components to directories, (4) Reviewing code for structure compliance, (5) Adding new bridges, services, agents, or workers.

02 资源文件 3

03 SKILL.md 正文

Architecture Skill

Determine correct file placement and structure for an Electron multi-process project.

Detailed References


Decision Tree — Where Does New Code Go?

Is it UI (React components, hooks, pages)?
  └── YES → packages/desktop/src/renderer/              → see references/renderer.md

Is it an IPC handler responding to renderer calls?
  └── YES → packages/desktop/src/process/bridge/        → see references/process.md

Is it business logic running in the main process?
  └── YES → packages/desktop/src/process/services/      → see references/process.md

Is it an AI platform connection (API client, message protocol)?
  └── YES → packages/desktop/src/process/agent/<platform>/

Is it a background task that runs in a worker thread?
  └── YES → packages/desktop/src/process/worker/

Is it used by BOTH main and renderer processes?
  └── YES → packages/desktop/src/common/

Is it an HTTP/WebSocket endpoint?
  └── YES → packages/desktop/src/process/webserver/

Is it a plugin/extension resolver or loader?
  └── YES → packages/desktop/src/process/extensions/

Is it a messaging channel (Lark, DingTalk, Telegram)?
  └── YES → packages/desktop/src/process/channels/

Process Boundary Rules

Hard rules — violating them causes runtime crashes.

Process Can use Cannot use
Main (packages/desktop/src/process/) Node.js, Electron main APIs, fs, path, child_process DOM APIs (document, window, React)
Renderer (packages/desktop/src/renderer/) DOM APIs, React, browser APIs Node.js APIs (fs, path), Electron main APIs
Worker (packages/desktop/src/process/worker/) Node.js APIs DOM APIs, Electron APIs
Preload (packages/desktop/src/preload/) contextBridge, ipcRenderer DOM manipulation, Node.js fs

Cross-process communication:

  • Main ↔ Renderer: IPC via packages/desktop/src/preload/ + packages/desktop/src/process/bridge/*.ts
  • Main ↔ Worker: fork protocol via packages/desktop/src/process/worker/WorkerProtocol.ts
// NEVER in renderer
import { something } from '@process/services/foo'; // crashes at runtime

// Use IPC instead
const result = await window.api.someMethod(); // goes through preload

Naming Conventions

Directories

Scope Convention Reason
Renderer component/module dirs PascalCase React convention — dir name = component name
Everything else lowercase Node.js convention
Categorical dirs (everywhere) lowercase components/, hooks/, utils/, services/
Platform dirs (everywhere) lowercase acp/, codex/, gemini/ — cross-process consistency

Quick test: "Inside packages/desktop/src/renderer/ AND represents a specific component/feature (not a category)?" → PascalCase. Otherwise → lowercase.

Files

Content Convention Examples
React components, classes PascalCase SettingsModal.tsx, CronService.ts
Hooks camelCase with use prefix useTheme.ts, useCronJobs.ts
Utilities, helpers camelCase formatDate.ts, cronUtils.ts
Entry points index.ts / index.tsx Required for directory-based modules
Config, types, constants camelCase types.ts, constants.ts
Styles kebab-case or Name.module.css chat-layout.css

Structural Rules

  1. Directory size limit: Max 10 direct children. Split into subdirectories by responsibility when approaching.
  2. No single-file directories: Merge into parent or related directory.
  3. Single file vs directory: If a component needs a private sub-component or hook, convert to a directory with index.tsx.
  4. Page-private first: Start code in pages/<PageName>/. Promote to shared only when a second consumer appears.

Test File Mapping

Tests mirror source files in tests/ subdirectories:

Source Test
packages/desktop/src/process/services/CronService.ts tests/unit/cronService.test.ts
packages/desktop/src/renderer/hooks/ui/useAutoScroll.ts tests/unit/useAutoScroll.dom.test.ts
packages/desktop/src/process/extensions/ExtensionLoader.ts tests/unit/extensions/extensionLoader.test.ts

When tests/unit/ exceeds 10 direct children, group into subdirectories matching source structure.


Quick Checklist

  • [ ] Code is in the correct process directory (no cross-process imports)
  • [ ] Renderer code does not use Node.js APIs
  • [ ] Main process code does not use DOM APIs
  • [ ] New IPC channels are bridged through preload.ts
  • [ ] Renderer component/module dirs use PascalCase; categorical dirs use lowercase
  • [ ] Platform dirs use lowercase everywhere
  • [ ] Directory-based modules have index.tsx / index.ts entry point
  • [ ] Page-private code is under pages/<PageName>/, not in shared dirs
  • [ ] No single-file directories
  • [ ] No directory exceeds 10 direct children
  • [ ] New source files are auto-included in coverage — verify they are not accidentally excluded in vitest.config.ts → coverage.exclude
  • [ ] New services separate pure logic from IO

04 同仓库更多 Skills

finewood2008
finewood2008/centaurai-team

团队周报

Use when generating structured weekly team reports from git commits, task boards, and meeting notes. Auto-aggregates work done, work planned, blockers, and metrics. Chinese output by default. Trigger on: weekly report, 周报, sprint review, 本周总结, team update, status report.

★ 0
finewood2008
finewood2008/centaurai-team

中英互译

Use when translating content between Chinese and English for business, technical, or marketing purposes. Handles docs, emails, UI strings, marketing copy, and technical documentation with domain-aware terminology. Trigger on: 翻译, translate, 中译英, 英译中, i18n, localization, English version, 中文版.

★ 0
finewood2008
finewood2008/centaurai-team

社媒规划

Use when planning, drafting, or scheduling social media content for WeChat Official Account, Twitter/X, and Xiaohongshu. Generates content calendars with platform-adapted copy, publishing schedules, and performance tracking. Trigger on: social media, 公众号, 推文, content calendar, 社媒, 发布计划.

★ 0
finewood2008
finewood2008/centaurai-team

项目任务看板

Use when managing team projects, tasks, or sprint tracking with a lightweight markdown kanban board. Create, update, assign, and track tasks across team members without external tools. Trigger on: task board, kanban, sprint planning, assign task, task status, project progress.

★ 0
finewood2008
finewood2008/centaurai-team

新人入职

Use when onboarding a new team member to the company, project, or development environment. Covers environment setup, account provisioning, access permissions, first-day tasks, and knowledge base orientation. Trigger on: onboarding, 入职, new employee, 新人, setup workstation, 环境配置, first day.

★ 0
finewood2008
finewood2008/centaurai-team

会议纪要

Use when recording, structuring, or extracting action items from team meetings. Creates standardized meeting minutes with decisions, action items with owners and deadlines, and follow-up tracking. Trigger on: meeting notes, 会议纪要, meeting minutes, 开会记录, standup notes, decision log, 会议记录.

★ 0