mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 08:54:55 +08:00
docs(repo):完善协作规则与任务账本
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
本文件用于约束在 BlueArchiveToolkit 中工作的 AI Agent。
|
本文件用于约束在 BlueArchiveToolkit 中工作的 AI Agent。
|
||||||
|
|
||||||
具体开发进度看 `CURRENT_STATUS.md`,开发计划看 `PROJECT_PLAN.md`,当前缺口看 `docs/reports/CURRENT_GAPS.md`。这里不记录具体任务和阶段待办。
|
具体开发进度看 `CURRENT_STATUS.md`,开发计划看 `PROJECT_PLAN.md`,当前能力缺口看 `docs/reports/CURRENT_GAPS.md`,具体工程任务、优先级和依赖看根目录 `TODO.md`。这里不记录具体任务和阶段待办。
|
||||||
|
|
||||||
## 基本要求
|
## 基本要求
|
||||||
|
|
||||||
@@ -14,6 +14,18 @@ BlueArchiveToolkit 是长期维护项目。不要为了尽快完成当前任务
|
|||||||
|
|
||||||
如果发现用户提出的方案、现有代码或文档本身有问题,直接指出。不要为了迎合要求保留明显不合理的设计。
|
如果发现用户提出的方案、现有代码或文档本身有问题,直接指出。不要为了迎合要求保留明显不合理的设计。
|
||||||
|
|
||||||
|
## 工程修改原则
|
||||||
|
|
||||||
|
BlueArchiveToolkit 不以“最小修复”为工程目标。不要为了让单个 testcase 通过、暂时消除表面症状或缩小 diff,而留下已经能够确认的同根因问题。
|
||||||
|
|
||||||
|
处理问题时优先保证长期可维护性、可用性、安全性、明确契约、恢复能力和回归覆盖。进入一个工程边界后,应根据实际相关性检查正常路径、异常路径、并发、重试、恢复、兼容、持久化和资源限制,并把属于同一 root cause 或同一 contract 的问题完整收口。
|
||||||
|
|
||||||
|
这不意味着无边界重构。不要为了架构形式、代码行数或“以后也许会用”扩大修改范围;与当前 contract 无关的问题应记录到 `TODO.md`,留给后续独立处理。
|
||||||
|
|
||||||
|
跨模块问题必须沿真实状态所有权和调用链检查。例如 Rust 状态经 RPC 暴露给 Go,再由 HTTP 或 Web 消费时,不能只修改其中一层而让其他层继续保持矛盾语义。
|
||||||
|
|
||||||
|
持久化和状态机修改应考虑 schema/version、transaction、crash consistency、retry、recovery 与兼容读取;解析器、压缩包和其他外部输入应考虑 size/count/depth 等资源边界以及 malformed input 的确定性失败。
|
||||||
|
|
||||||
## 以什么为准
|
## 以什么为准
|
||||||
|
|
||||||
仓库里有不少历史文档,不能混着看。
|
仓库里有不少历史文档,不能混着看。
|
||||||
@@ -71,6 +83,96 @@ Go `bat-api` 是资源 bootstrap、只读分发和管理入口。它通过 `bat.
|
|||||||
|
|
||||||
不要静默改变已有字段的含义。确实需要破坏性修改时,先考虑版本号、迁移或兼容读取。
|
不要静默改变已有字段的含义。确实需要破坏性修改时,先考虑版本号、迁移或兼容读取。
|
||||||
|
|
||||||
|
## Dashboard 开发与设计
|
||||||
|
|
||||||
|
BlueArchiveToolkit 包含两个面向不同使用者的 Dashboard:用户 Dashboard 与运营 Dashboard。两者属于同一产品,应共享基础视觉语言、组件风格和交互一致性,但不得因为复用组件而混淆产品职责、信息层级或权限边界。
|
||||||
|
|
||||||
|
涉及 Dashboard、Web UI、页面布局、视觉样式、组件设计或交互体验的任务,在开始设计和修改前必须阅读仓库根目录的 `DESIGN.md`。
|
||||||
|
|
||||||
|
`DESIGN.md` 是 Dashboard 的主要视觉参考与设计灵感来源。应理解并延续其中的色彩关系、排版、空间、边框、层级、组件形态和交互气质,但不得机械复制其来源产品的页面结构、品牌内容或不适合 BlueArchiveToolkit 的设计。实际页面的信息架构始终由 BlueArchiveToolkit 当前功能、真实数据结构和使用场景决定。
|
||||||
|
|
||||||
|
### 用户 Dashboard
|
||||||
|
|
||||||
|
用户 Dashboard 面向普通 BlueArchiveToolkit 用户,目标是以尽可能低的认知负担完成与汉化相关的用户操作。
|
||||||
|
|
||||||
|
当前用户可控制的核心能力仅包括:
|
||||||
|
|
||||||
|
* 文字汉化是否启用;
|
||||||
|
* 图像汉化是否启用。
|
||||||
|
|
||||||
|
用户端可以展示与这些操作直接相关的必要信息,例如汉化状态、当前可用版本、更新状态、操作反馈或用户需要处理的异常,但不得暴露内部运维实现。
|
||||||
|
|
||||||
|
除非未来产品需求明确改变,否则用户 Dashboard 不应展示或要求用户理解:
|
||||||
|
|
||||||
|
* `bat` / `bat-api` 内部状态;
|
||||||
|
* RPC、daemon、worker;
|
||||||
|
* CAS;
|
||||||
|
* Provider / provider run;
|
||||||
|
* Translation Memory 内部记录;
|
||||||
|
* translation task;
|
||||||
|
* Parser;
|
||||||
|
* official/localized release 的内部实现细节;
|
||||||
|
* 服务端日志、内部错误栈和运维指标。
|
||||||
|
|
||||||
|
用户端优先保证清晰、简洁、可信和易操作。不要为了表现“Dashboard 感”堆积 KPI 卡片、图表、技术指标或无实际用途的信息。
|
||||||
|
|
||||||
|
### 运营 Dashboard
|
||||||
|
|
||||||
|
运营 Dashboard 面向项目运营和维护者,用于观察和管理 BlueArchiveToolkit 的真实运行状态。
|
||||||
|
|
||||||
|
运营端可以根据当前后端实际提供的 contract 展示和组织:
|
||||||
|
|
||||||
|
* `bat` 与 `bat-api` 运行状态;
|
||||||
|
* official resource / official release;
|
||||||
|
* localized resource / localized release;
|
||||||
|
* 资源同步与更新状态;
|
||||||
|
* Translation / Translation Memory;
|
||||||
|
* Provider 与 worker;
|
||||||
|
* task / job;
|
||||||
|
* daemon/runtime;
|
||||||
|
* CAS;
|
||||||
|
* 错误、诊断与日志;
|
||||||
|
* 配置和必要的运营操作。
|
||||||
|
|
||||||
|
运营 Dashboard 是高信息密度的 developer/operations interface。优先使用结构化列表、表格、紧凑状态信息、清晰的主次层级和按需 drill-down,而不是将所有数据做成大型 Card。
|
||||||
|
|
||||||
|
首页应帮助运营者快速回答“系统是否正常、哪里需要处理、最近发生了什么”,而不是简单罗列所有可获得的指标。
|
||||||
|
|
||||||
|
### 两个 Dashboard 的关系
|
||||||
|
|
||||||
|
两个 Dashboard 应共享:
|
||||||
|
|
||||||
|
* 基础 Design Token;
|
||||||
|
* Typography;
|
||||||
|
* Color System;
|
||||||
|
* Button、Input、Switch、Dialog 等基础组件;
|
||||||
|
* Loading、Empty、Error、Warning、Success 等状态语言;
|
||||||
|
* Motion 与交互反馈原则;
|
||||||
|
* 品牌识别。
|
||||||
|
|
||||||
|
但可以拥有不同的:
|
||||||
|
|
||||||
|
* Navigation;
|
||||||
|
* 页面结构;
|
||||||
|
* 信息密度;
|
||||||
|
* 内容层级;
|
||||||
|
* 默认组件尺寸;
|
||||||
|
* 数据展示方式。
|
||||||
|
|
||||||
|
不要把运营 Dashboard 简单裁剪几个菜单后作为用户 Dashboard,也不要为了用户端的简洁限制运营端所需的信息密度。
|
||||||
|
|
||||||
|
### 设计实现原则
|
||||||
|
|
||||||
|
Dashboard 设计必须以真实接口和真实状态为依据。不得为了视觉完整性伪造后端不存在的数据、指标、趋势、操作或状态。
|
||||||
|
|
||||||
|
如果设计需要当前 API/RPC 尚未提供的信息,应明确指出缺失 contract,而不是在前端维护第二份业务状态或通过猜测拼接数据。
|
||||||
|
|
||||||
|
优先复用项目现有前端组件和设计基础。引入新组件模式前先确认现有组件无法合理满足需求,避免同一项目逐步形成多套 Card、Table、Badge、Button 或状态展示体系。
|
||||||
|
|
||||||
|
`DESIGN.md` 是视觉方向,不高于项目稳定架构与产品事实。发生冲突时按以下优先级处理:
|
||||||
|
|
||||||
|
`AGENTS.md` 与稳定产品/接口契约 > 当前明确任务需求 > `DESIGN.md` > Agent 自身设计偏好。
|
||||||
|
|
||||||
## 代码修改
|
## 代码修改
|
||||||
|
|
||||||
先弄清楚代码为什么放在当前位置,再决定是继续修改还是拆模块。
|
先弄清楚代码为什么放在当前位置,再决定是继续修改还是拆模块。
|
||||||
@@ -86,9 +188,19 @@ Go `bat-api` 是资源 bootstrap、只读分发和管理入口。它通过 `bat.
|
|||||||
* 无说明的硬编码;
|
* 无说明的硬编码;
|
||||||
* 魔法数字;
|
* 魔法数字;
|
||||||
* 假实现、空实现冒充完成功能;
|
* 假实现、空实现冒充完成功能;
|
||||||
* 用 `TODO` / `FIXME` 代替正式的缺口记录。
|
* 用代码内 `TODO` / `FIXME` 代替根目录 `TODO.md`、`CURRENT_GAPS.md` 或其他正式缺口记录。
|
||||||
|
|
||||||
如果当前任务确实无法完成某一部分,应明确限制实现范围,并把剩余问题记录到对应的状态、缺口或 Issue 中。
|
如果当前任务确实无法完成某一部分,应明确限制实现范围;具体后续工程任务记录到根目录 `TODO.md`,能力缺口同步到 `CURRENT_GAPS.md`,需要外部协作时再使用 Issue。
|
||||||
|
|
||||||
|
## TODO 任务治理
|
||||||
|
|
||||||
|
根目录 `TODO.md` 是具体工程任务、优先级、依赖关系和完成条件的仓库内任务账本。开始具体开发前,应读取与当前工作相关的 TODO;完成任务或发现独立新问题后,应同步更新其状态和依赖。
|
||||||
|
|
||||||
|
`TODO.md` 不是当前实现事实来源。源码和测试、`CURRENT_STATUS.md`、专项 current-status 文档以及稳定 contract 的优先级高于 TODO 描述。若 TODO 与当前实现冲突,应先核对事实并更新过时 TODO,不要按照旧条目重新实现已经完成的能力。
|
||||||
|
|
||||||
|
属于当前任务同一 root cause 或同一 contract 的已确认问题,不得仅为了缩小 patch 而登记 TODO 后绕过;应在当前工程边界内一起收口。明显独立的问题应记录到 `TODO.md`,避免当前修改无限扩张。
|
||||||
|
|
||||||
|
`docs/reports/CURRENT_GAPS.md` 用于记录产品或工程能力层面的当前缺口;`PROJECT_PLAN.md` 用于长期路线;`TODO.md` 用于可执行任务追踪。不要把这些职责混在一起。
|
||||||
|
|
||||||
## 文件、网络和发布安全
|
## 文件、网络和发布安全
|
||||||
|
|
||||||
@@ -145,7 +257,9 @@ make check-docs
|
|||||||
|
|
||||||
不要把具体任务、临时优先级或某次实现方案写进本文件。
|
不要把具体任务、临时优先级或某次实现方案写进本文件。
|
||||||
|
|
||||||
新的长期架构决策应该进入 ADR 或对应架构文档;开发路线进入 `PROJECT_PLAN.md`;实际进度进入 `CURRENT_STATUS.md`;未完成内容进入 `CURRENT_GAPS.md` 或 Issue。
|
新的长期架构决策应该进入 ADR 或对应架构文档;开发路线进入 `PROJECT_PLAN.md`;实际进度进入 `CURRENT_STATUS.md`;能力缺口进入 `docs/reports/CURRENT_GAPS.md`;具体工程任务、依赖和完成条件进入根目录 `TODO.md`;需要外部协作时再使用 Issue。
|
||||||
|
|
||||||
|
Dashboard 的视觉方向与设计灵感进入根目录 `DESIGN.md`;Dashboard 的产品职责、状态所有权和接口事实仍以本文件与稳定产品/接口契约为准。
|
||||||
|
|
||||||
## 工作方式
|
## 工作方式
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,367 @@
|
|||||||
|
# Design System Inspiration of Linear
|
||||||
|
|
||||||
|
## 1. Visual Theme & Atmosphere
|
||||||
|
|
||||||
|
Linear's website is a masterclass in dark-mode-first product design — a near-black canvas (`#08090a`) where content emerges from darkness like starlight. The overall impression is one of extreme precision engineering: every element exists in a carefully calibrated hierarchy of luminance, from barely-visible borders (`rgba(255,255,255,0.05)`) to soft, luminous text (`#f7f8f8`). This is not a dark theme applied to a light design — it is darkness as the native medium, where information density is managed through subtle gradations of white opacity rather than color variation.
|
||||||
|
|
||||||
|
The typography system is built entirely on Inter Variable with OpenType features `"cv01"` and `"ss03"` enabled globally, giving the typeface a cleaner, more geometric character. Inter is used at a remarkable range of weights — from 300 (light body) through 510 (medium, Linear's signature weight) to 590 (semibold emphasis). The 510 weight is particularly distinctive: it sits between regular and medium, creating a subtle emphasis that doesn't shout. At display sizes (72px, 64px, 48px), Inter uses aggressive negative letter-spacing (-1.584px to -1.056px), creating compressed, authoritative headlines that feel engineered rather than designed. Berkeley Mono serves as the monospace companion for code and technical labels, with fallbacks to ui-monospace, SF Mono, and Menlo.
|
||||||
|
|
||||||
|
The color system is almost entirely achromatic — dark backgrounds with white/gray text — punctuated by a single brand accent: Linear's signature indigo-violet (`#5e6ad2` for backgrounds, `#7170ff` for interactive accents). This accent color is used sparingly and intentionally, appearing only on CTAs, active states, and brand elements. The border system uses ultra-thin, semi-transparent white borders (`rgba(255,255,255,0.05)` to `rgba(255,255,255,0.08)`) that create structure without visual noise, like wireframes drawn in moonlight.
|
||||||
|
|
||||||
|
**Key Characteristics:**
|
||||||
|
- Dark-mode-native: `#08090a` marketing background, `#0f1011` panel background, `#191a1b` elevated surfaces
|
||||||
|
- Inter Variable with `"cv01", "ss03"` globally — geometric alternates for a cleaner aesthetic
|
||||||
|
- Signature weight 510 (between regular and medium) for most UI text
|
||||||
|
- Aggressive negative letter-spacing at display sizes (-1.584px at 72px, -1.056px at 48px)
|
||||||
|
- Brand indigo-violet: `#5e6ad2` (bg) / `#7170ff` (accent) / `#828fff` (hover) — the only chromatic color in the system
|
||||||
|
- Semi-transparent white borders throughout: `rgba(255,255,255,0.05)` to `rgba(255,255,255,0.08)`
|
||||||
|
- Button backgrounds at near-zero opacity: `rgba(255,255,255,0.02)` to `rgba(255,255,255,0.05)`
|
||||||
|
- Multi-layered shadows with inset variants for depth on dark surfaces
|
||||||
|
- Radix UI primitives as the component foundation (6 detected primitives)
|
||||||
|
- Success green (`#27a644`, `#10b981`) used only for status indicators
|
||||||
|
|
||||||
|
## 2. Color Palette & Roles
|
||||||
|
|
||||||
|
### Background Surfaces
|
||||||
|
- **Marketing Black** (`#010102` / `#08090a`): The deepest background — the canvas for hero sections and marketing pages. Near-pure black with an imperceptible blue-cool undertone.
|
||||||
|
- **Panel Dark** (`#0f1011`): Sidebar and panel backgrounds. One step up from the marketing black.
|
||||||
|
- **Level 3 Surface** (`#191a1b`): Elevated surface areas, card backgrounds, dropdowns.
|
||||||
|
- **Secondary Surface** (`#28282c`): The lightest dark surface — used for hover states and slightly elevated components.
|
||||||
|
|
||||||
|
### Text & Content
|
||||||
|
- **Primary Text** (`#f7f8f8`): Near-white with a barely-warm cast. The default text color — not pure white, preventing eye strain on dark backgrounds.
|
||||||
|
- **Secondary Text** (`#d0d6e0`): Cool silver-gray for body text, descriptions, and secondary content.
|
||||||
|
- **Tertiary Text** (`#8a8f98`): Muted gray for placeholders, metadata, and de-emphasized content.
|
||||||
|
- **Quaternary Text** (`#62666d`): The most subdued text — timestamps, disabled states, subtle labels.
|
||||||
|
|
||||||
|
### Brand & Accent
|
||||||
|
- **Brand Indigo** (`#5e6ad2`): Primary brand color — used for CTA button backgrounds, brand marks, and key interactive surfaces.
|
||||||
|
- **Accent Violet** (`#7170ff`): Brighter variant for interactive elements — links, active states, selected items.
|
||||||
|
- **Accent Hover** (`#828fff`): Lighter, more saturated variant for hover states on accent elements.
|
||||||
|
- **Security Lavender** (`#7a7fad`): Muted indigo used specifically for security-related UI elements.
|
||||||
|
|
||||||
|
### Status Colors
|
||||||
|
- **Green** (`#27a644`): Primary success/active status. Used for "in progress" indicators.
|
||||||
|
- **Emerald** (`#10b981`): Secondary success — pill badges, completion states.
|
||||||
|
|
||||||
|
### Border & Divider
|
||||||
|
- **Border Primary** (`#23252a`): Solid dark border for prominent separations.
|
||||||
|
- **Border Secondary** (`#34343a`): Slightly lighter solid border.
|
||||||
|
- **Border Tertiary** (`#3e3e44`): Lightest solid border variant.
|
||||||
|
- **Border Subtle** (`rgba(255,255,255,0.05)`): Ultra-subtle semi-transparent border — the default.
|
||||||
|
- **Border Standard** (`rgba(255,255,255,0.08)`): Standard semi-transparent border for cards, inputs, code blocks.
|
||||||
|
- **Line Tint** (`#141516`): Nearly invisible line for the subtlest divisions.
|
||||||
|
- **Line Tertiary** (`#18191a`): Slightly more visible divider line.
|
||||||
|
|
||||||
|
### Light Mode Neutrals (for light theme contexts)
|
||||||
|
- **Light Background** (`#f7f8f8`): Page background in light mode.
|
||||||
|
- **Light Surface** (`#f3f4f5` / `#f5f6f7`): Subtle surface tinting.
|
||||||
|
- **Light Border** (`#d0d6e0`): Visible border in light contexts.
|
||||||
|
- **Light Border Alt** (`#e6e6e6`): Alternative lighter border.
|
||||||
|
- **Pure White** (`#ffffff`): Card surfaces, highlights.
|
||||||
|
|
||||||
|
### Overlay
|
||||||
|
- **Overlay Primary** (`rgba(0,0,0,0.85)`): Modal/dialog backdrop — extremely dark for focus isolation.
|
||||||
|
|
||||||
|
## 3. Typography Rules
|
||||||
|
|
||||||
|
### Font Family
|
||||||
|
- **Primary**: `Inter Variable`, with fallbacks: `SF Pro Display, -apple-system, system-ui, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue`
|
||||||
|
- **Monospace**: `Berkeley Mono`, with fallbacks: `ui-monospace, SF Mono, Menlo`
|
||||||
|
- **OpenType Features**: `"cv01", "ss03"` enabled globally — cv01 provides an alternate lowercase 'a' (single-story), ss03 adjusts specific letterforms for a cleaner geometric appearance.
|
||||||
|
|
||||||
|
### Hierarchy
|
||||||
|
|
||||||
|
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
||||||
|
|------|------|------|--------|-------------|----------------|-------|
|
||||||
|
| Display XL | Inter Variable | 72px (4.50rem) | 510 | 1.00 (tight) | -1.584px | Hero headlines, maximum impact |
|
||||||
|
| Display Large | Inter Variable | 64px (4.00rem) | 510 | 1.00 (tight) | -1.408px | Secondary hero text |
|
||||||
|
| Display | Inter Variable | 48px (3.00rem) | 510 | 1.00 (tight) | -1.056px | Section headlines |
|
||||||
|
| Heading 1 | Inter Variable | 32px (2.00rem) | 400 | 1.13 (tight) | -0.704px | Major section titles |
|
||||||
|
| Heading 2 | Inter Variable | 24px (1.50rem) | 400 | 1.33 | -0.288px | Sub-section headings |
|
||||||
|
| Heading 3 | Inter Variable | 20px (1.25rem) | 590 | 1.33 | -0.24px | Feature titles, card headers |
|
||||||
|
| Body Large | Inter Variable | 18px (1.13rem) | 400 | 1.60 (relaxed) | -0.165px | Introduction text, feature descriptions |
|
||||||
|
| Body Emphasis | Inter Variable | 17px (1.06rem) | 590 | 1.60 (relaxed) | normal | Emphasized body, sub-headings in content |
|
||||||
|
| Body | Inter Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard reading text |
|
||||||
|
| Body Medium | Inter Variable | 16px (1.00rem) | 510 | 1.50 | normal | Navigation, labels |
|
||||||
|
| Body Semibold | Inter Variable | 16px (1.00rem) | 590 | 1.50 | normal | Strong emphasis |
|
||||||
|
| Small | Inter Variable | 15px (0.94rem) | 400 | 1.60 (relaxed) | -0.165px | Secondary body text |
|
||||||
|
| Small Medium | Inter Variable | 15px (0.94rem) | 510 | 1.60 (relaxed) | -0.165px | Emphasized small text |
|
||||||
|
| Small Semibold | Inter Variable | 15px (0.94rem) | 590 | 1.60 (relaxed) | -0.165px | Strong small text |
|
||||||
|
| Small Light | Inter Variable | 15px (0.94rem) | 300 | 1.47 | -0.165px | De-emphasized body |
|
||||||
|
| Caption Large | Inter Variable | 14px (0.88rem) | 510–590 | 1.50 | -0.182px | Sub-labels, category headers |
|
||||||
|
| Caption | Inter Variable | 13px (0.81rem) | 400–510 | 1.50 | -0.13px | Metadata, timestamps |
|
||||||
|
| Label | Inter Variable | 12px (0.75rem) | 400–590 | 1.40 | normal | Button text, small labels |
|
||||||
|
| Micro | Inter Variable | 11px (0.69rem) | 510 | 1.40 | normal | Tiny labels |
|
||||||
|
| Tiny | Inter Variable | 10px (0.63rem) | 400–510 | 1.50 | -0.15px | Overline text, sometimes uppercase |
|
||||||
|
| Link Large | Inter Variable | 16px (1.00rem) | 400 | 1.50 | normal | Standard links |
|
||||||
|
| Link Medium | Inter Variable | 15px (0.94rem) | 510 | 2.67 | normal | Spaced navigation links |
|
||||||
|
| Link Small | Inter Variable | 14px (0.88rem) | 510 | 1.50 | normal | Compact links |
|
||||||
|
| Link Caption | Inter Variable | 13px (0.81rem) | 400–510 | 1.50 | -0.13px | Footer, metadata links |
|
||||||
|
| Mono Body | Berkeley Mono | 14px (0.88rem) | 400 | 1.50 | normal | Code blocks |
|
||||||
|
| Mono Caption | Berkeley Mono | 13px (0.81rem) | 400 | 1.50 | normal | Code labels |
|
||||||
|
| Mono Label | Berkeley Mono | 12px (0.75rem) | 400 | 1.40 | normal | Code metadata, sometimes uppercase |
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
- **510 is the signature weight**: Linear uses Inter Variable's 510 weight (between regular 400 and medium 500) as its default emphasis weight. This creates a subtly bolded feel without the heaviness of traditional medium or semibold.
|
||||||
|
- **Compression at scale**: Display sizes use progressively tighter letter-spacing — -1.584px at 72px, -1.408px at 64px, -1.056px at 48px, -0.704px at 32px. Below 24px, spacing relaxes toward normal.
|
||||||
|
- **OpenType as identity**: `"cv01", "ss03"` aren't decorative — they transform Inter into Linear's distinctive typeface, giving it a more geometric, purposeful character.
|
||||||
|
- **Three-tier weight system**: 400 (reading), 510 (emphasis/UI), 590 (strong emphasis). The 300 weight appears only in deliberately de-emphasized contexts.
|
||||||
|
|
||||||
|
## 4. Component Stylings
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
|
||||||
|
**Ghost Button (Default)**
|
||||||
|
- Background: `rgba(255,255,255,0.02)`
|
||||||
|
- Text: `#e2e4e7` (near-white)
|
||||||
|
- Padding: comfortable
|
||||||
|
- Radius: 6px
|
||||||
|
- Border: `1px solid rgb(36, 40, 44)`
|
||||||
|
- Outline: none
|
||||||
|
- Focus shadow: `rgba(0,0,0,0.1) 0px 4px 12px`
|
||||||
|
- Use: Standard actions, secondary CTAs
|
||||||
|
|
||||||
|
**Subtle Button**
|
||||||
|
- Background: `rgba(255,255,255,0.04)`
|
||||||
|
- Text: `#d0d6e0` (silver-gray)
|
||||||
|
- Padding: 0px 6px
|
||||||
|
- Radius: 6px
|
||||||
|
- Use: Toolbar actions, contextual buttons
|
||||||
|
|
||||||
|
**Primary Brand Button (Inferred)**
|
||||||
|
- Background: `#5e6ad2` (brand indigo)
|
||||||
|
- Text: `#ffffff`
|
||||||
|
- Padding: 8px 16px
|
||||||
|
- Radius: 6px
|
||||||
|
- Hover: `#828fff` shift
|
||||||
|
- Use: Primary CTAs ("Start building", "Sign up")
|
||||||
|
|
||||||
|
**Icon Button (Circle)**
|
||||||
|
- Background: `rgba(255,255,255,0.03)` or `rgba(255,255,255,0.05)`
|
||||||
|
- Text: `#f7f8f8` or `#ffffff`
|
||||||
|
- Radius: 50%
|
||||||
|
- Border: `1px solid rgba(255,255,255,0.08)`
|
||||||
|
- Use: Close, menu toggle, icon-only actions
|
||||||
|
|
||||||
|
**Pill Button**
|
||||||
|
- Background: transparent
|
||||||
|
- Text: `#d0d6e0`
|
||||||
|
- Padding: 0px 10px 0px 5px
|
||||||
|
- Radius: 9999px
|
||||||
|
- Border: `1px solid rgb(35, 37, 42)`
|
||||||
|
- Use: Filter chips, tags, status indicators
|
||||||
|
|
||||||
|
**Small Toolbar Button**
|
||||||
|
- Background: `rgba(255,255,255,0.05)`
|
||||||
|
- Text: `#62666d` (muted)
|
||||||
|
- Radius: 2px
|
||||||
|
- Border: `1px solid rgba(255,255,255,0.05)`
|
||||||
|
- Shadow: `rgba(0,0,0,0.03) 0px 1.2px 0px 0px`
|
||||||
|
- Font: 12px weight 510
|
||||||
|
- Use: Toolbar actions, quick-access controls
|
||||||
|
|
||||||
|
### Cards & Containers
|
||||||
|
- Background: `rgba(255,255,255,0.02)` to `rgba(255,255,255,0.05)` (never solid — always translucent)
|
||||||
|
- Border: `1px solid rgba(255,255,255,0.08)` (standard) or `1px solid rgba(255,255,255,0.05)` (subtle)
|
||||||
|
- Radius: 8px (standard), 12px (featured), 22px (large panels)
|
||||||
|
- Shadow: `rgba(0,0,0,0.2) 0px 0px 0px 1px` or layered multi-shadow stacks
|
||||||
|
- Hover: subtle background opacity increase
|
||||||
|
|
||||||
|
### Inputs & Forms
|
||||||
|
|
||||||
|
**Text Area**
|
||||||
|
- Background: `rgba(255,255,255,0.02)`
|
||||||
|
- Text: `#d0d6e0`
|
||||||
|
- Border: `1px solid rgba(255,255,255,0.08)`
|
||||||
|
- Padding: 12px 14px
|
||||||
|
- Radius: 6px
|
||||||
|
|
||||||
|
**Search Input**
|
||||||
|
- Background: transparent
|
||||||
|
- Text: `#f7f8f8`
|
||||||
|
- Padding: 1px 32px (icon-aware)
|
||||||
|
|
||||||
|
**Button-style Input**
|
||||||
|
- Text: `#8a8f98`
|
||||||
|
- Padding: 1px 6px
|
||||||
|
- Radius: 5px
|
||||||
|
- Focus shadow: multi-layer stack
|
||||||
|
|
||||||
|
### Badges & Pills
|
||||||
|
|
||||||
|
**Success Pill**
|
||||||
|
- Background: `#10b981`
|
||||||
|
- Text: `#f7f8f8`
|
||||||
|
- Radius: 50% (circular)
|
||||||
|
- Font: 10px weight 510
|
||||||
|
- Use: Status dots, completion indicators
|
||||||
|
|
||||||
|
**Neutral Pill**
|
||||||
|
- Background: transparent
|
||||||
|
- Text: `#d0d6e0`
|
||||||
|
- Padding: 0px 10px 0px 5px
|
||||||
|
- Radius: 9999px
|
||||||
|
- Border: `1px solid rgb(35, 37, 42)`
|
||||||
|
- Font: 12px weight 510
|
||||||
|
- Use: Tags, filter chips, category labels
|
||||||
|
|
||||||
|
**Subtle Badge**
|
||||||
|
- Background: `rgba(255,255,255,0.05)`
|
||||||
|
- Text: `#f7f8f8`
|
||||||
|
- Padding: 0px 8px 0px 2px
|
||||||
|
- Radius: 2px
|
||||||
|
- Border: `1px solid rgba(255,255,255,0.05)`
|
||||||
|
- Font: 10px weight 510
|
||||||
|
- Use: Inline labels, version tags
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
- Dark sticky header on near-black background
|
||||||
|
- Linear logomark left-aligned (SVG icon)
|
||||||
|
- Links: Inter Variable 13–14px weight 510, `#d0d6e0` text
|
||||||
|
- Active/hover: text lightens to `#f7f8f8`
|
||||||
|
- CTA: Brand indigo button or ghost button
|
||||||
|
- Mobile: hamburger collapse
|
||||||
|
- Search: command palette trigger (`/` or `Cmd+K`)
|
||||||
|
|
||||||
|
### Image Treatment
|
||||||
|
- Product screenshots on dark backgrounds with subtle border (`rgba(255,255,255,0.08)`)
|
||||||
|
- Top-rounded images: `12px 12px 0px 0px` radius
|
||||||
|
- Dashboard/issue previews dominate feature sections
|
||||||
|
- Subtle shadow beneath screenshots: `rgba(0,0,0,0.4) 0px 2px 4px`
|
||||||
|
|
||||||
|
## 5. Layout Principles
|
||||||
|
|
||||||
|
### Spacing System
|
||||||
|
- Base unit: 8px
|
||||||
|
- Scale: 1px, 4px, 7px, 8px, 11px, 12px, 16px, 19px, 20px, 22px, 24px, 28px, 32px, 35px
|
||||||
|
- The 7px and 11px values suggest micro-adjustments for optical alignment
|
||||||
|
- Primary rhythm: 8px, 16px, 24px, 32px (standard 8px grid)
|
||||||
|
|
||||||
|
### Grid & Container
|
||||||
|
- Max content width: approximately 1200px
|
||||||
|
- Hero: centered single-column with generous vertical padding
|
||||||
|
- Feature sections: 2–3 column grids for feature cards
|
||||||
|
- Full-width dark sections with internal max-width constraints
|
||||||
|
- Changelog: single-column timeline layout
|
||||||
|
|
||||||
|
### Whitespace Philosophy
|
||||||
|
- **Darkness as space**: On Linear's dark canvas, empty space isn't white — it's absence. The near-black background IS the whitespace, and content emerges from it.
|
||||||
|
- **Compressed headlines, expanded surroundings**: Display text at 72px with -1.584px tracking is dense and compressed, but sits within vast dark padding. The contrast between typographic density and spatial generosity creates tension.
|
||||||
|
- **Section isolation**: Each feature section is separated by generous vertical padding (80px+) with no visible dividers — the dark background provides natural separation.
|
||||||
|
|
||||||
|
### Border Radius Scale
|
||||||
|
- Micro (2px): Inline badges, toolbar buttons, subtle tags
|
||||||
|
- Standard (4px): Small containers, list items
|
||||||
|
- Comfortable (6px): Buttons, inputs, functional elements
|
||||||
|
- Card (8px): Cards, dropdowns, popovers
|
||||||
|
- Panel (12px): Panels, featured cards, section containers
|
||||||
|
- Large (22px): Large panel elements
|
||||||
|
- Full Pill (9999px): Chips, filter pills, status tags
|
||||||
|
- Circle (50%): Icon buttons, avatars, status dots
|
||||||
|
|
||||||
|
## 6. Depth & Elevation
|
||||||
|
|
||||||
|
| Level | Treatment | Use |
|
||||||
|
|-------|-----------|-----|
|
||||||
|
| Flat (Level 0) | No shadow, `#010102` bg | Page background, deepest canvas |
|
||||||
|
| Subtle (Level 1) | `rgba(0,0,0,0.03) 0px 1.2px 0px` | Toolbar buttons, micro-elevation |
|
||||||
|
| Surface (Level 2) | `rgba(255,255,255,0.05)` bg + `1px solid rgba(255,255,255,0.08)` border | Cards, input fields, containers |
|
||||||
|
| Inset (Level 2b) | `rgba(0,0,0,0.2) 0px 0px 12px 0px inset` | Recessed panels, inner shadows |
|
||||||
|
| Ring (Level 3) | `rgba(0,0,0,0.2) 0px 0px 0px 1px` | Border-as-shadow technique |
|
||||||
|
| Elevated (Level 4) | `rgba(0,0,0,0.4) 0px 2px 4px` | Floating elements, dropdowns |
|
||||||
|
| Dialog (Level 5) | Multi-layer stack: `rgba(0,0,0,0) 0px 8px 2px, rgba(0,0,0,0.01) 0px 5px 2px, rgba(0,0,0,0.04) 0px 3px 2px, rgba(0,0,0,0.07) 0px 1px 1px, rgba(0,0,0,0.08) 0px 0px 1px` | Popovers, command palette, modals |
|
||||||
|
| Focus | `rgba(0,0,0,0.1) 0px 4px 12px` + additional layers | Keyboard focus on interactive elements |
|
||||||
|
|
||||||
|
**Shadow Philosophy**: On dark surfaces, traditional shadows (dark on dark) are nearly invisible. Linear solves this by using semi-transparent white borders as the primary depth indicator. Elevation isn't communicated through shadow darkness but through background luminance steps — each level slightly increases the white opacity of the surface background (`0.02` → `0.04` → `0.05`), creating a subtle stacking effect. The inset shadow technique (`rgba(0,0,0,0.2) 0px 0px 12px 0px inset`) creates a unique "sunken" effect for recessed panels, adding dimensional depth that traditional dark themes lack.
|
||||||
|
|
||||||
|
## 7. Do's and Don'ts
|
||||||
|
|
||||||
|
### Do
|
||||||
|
- Use Inter Variable with `"cv01", "ss03"` on ALL text — these features are fundamental to Linear's typeface identity
|
||||||
|
- Use weight 510 as your default emphasis weight — it's Linear's signature between-weight
|
||||||
|
- Apply aggressive negative letter-spacing at display sizes (-1.584px at 72px, -1.056px at 48px)
|
||||||
|
- Build on near-black backgrounds: `#08090a` for marketing, `#0f1011` for panels, `#191a1b` for elevated surfaces
|
||||||
|
- Use semi-transparent white borders (`rgba(255,255,255,0.05)` to `rgba(255,255,255,0.08)`) instead of solid dark borders
|
||||||
|
- Keep button backgrounds nearly transparent: `rgba(255,255,255,0.02)` to `rgba(255,255,255,0.05)`
|
||||||
|
- Reserve brand indigo (`#5e6ad2` / `#7170ff`) for primary CTAs and interactive accents only
|
||||||
|
- Use `#f7f8f8` for primary text — not pure `#ffffff`, which would be too harsh
|
||||||
|
- Apply the luminance stacking model: deeper = darker bg, elevated = slightly lighter bg
|
||||||
|
|
||||||
|
### Don't
|
||||||
|
- Don't use pure white (`#ffffff`) as primary text — `#f7f8f8` prevents eye strain
|
||||||
|
- Don't use solid colored backgrounds for buttons — transparency is the system (rgba white at 0.02–0.05)
|
||||||
|
- Don't apply the brand indigo decoratively — it's reserved for interactive/CTA elements only
|
||||||
|
- Don't use positive letter-spacing on display text — Inter at large sizes always runs negative
|
||||||
|
- Don't use visible/opaque borders on dark backgrounds — borders should be whisper-thin semi-transparent white
|
||||||
|
- Don't skip the OpenType features (`"cv01", "ss03"`) — without them, it's generic Inter, not Linear's Inter
|
||||||
|
- Don't use weight 700 (bold) — Linear's maximum weight is 590, with 510 as the workhorse
|
||||||
|
- Don't introduce warm colors into the UI chrome — the palette is cool gray with blue-violet accent only
|
||||||
|
- Don't use drop shadows for elevation on dark surfaces — use background luminance stepping instead
|
||||||
|
|
||||||
|
## 8. Responsive Behavior
|
||||||
|
|
||||||
|
### Breakpoints
|
||||||
|
| Name | Width | Key Changes |
|
||||||
|
|------|-------|-------------|
|
||||||
|
| Mobile Small | <600px | Single column, compact padding |
|
||||||
|
| Mobile | 600–640px | Standard mobile layout |
|
||||||
|
| Tablet | 640–768px | Two-column grids begin |
|
||||||
|
| Desktop Small | 768–1024px | Full card grids, expanded padding |
|
||||||
|
| Desktop | 1024–1280px | Standard desktop, full navigation |
|
||||||
|
| Large Desktop | >1280px | Full layout, generous margins |
|
||||||
|
|
||||||
|
### Touch Targets
|
||||||
|
- Buttons use comfortable padding with 6px radius minimum
|
||||||
|
- Navigation links at 13–14px with adequate spacing
|
||||||
|
- Pill tags have 10px horizontal padding for touch accessibility
|
||||||
|
- Icon buttons at 50% radius ensure circular, easy-to-tap targets
|
||||||
|
- Search trigger is prominently placed with generous hit area
|
||||||
|
|
||||||
|
### Collapsing Strategy
|
||||||
|
- Hero: 72px → 48px → 32px display text, tracking adjusts proportionally
|
||||||
|
- Navigation: horizontal links + CTAs → hamburger menu at 768px
|
||||||
|
- Feature cards: 3-column → 2-column → single column stacked
|
||||||
|
- Product screenshots: maintain aspect ratio, may reduce padding
|
||||||
|
- Changelog: timeline maintains single-column through all sizes
|
||||||
|
- Footer: multi-column → stacked single column
|
||||||
|
- Section spacing: 80px+ → 48px on mobile
|
||||||
|
|
||||||
|
### Image Behavior
|
||||||
|
- Dashboard screenshots maintain border treatment at all sizes
|
||||||
|
- Hero visuals simplify on mobile (fewer floating UI elements)
|
||||||
|
- Product screenshots use responsive sizing with consistent radius
|
||||||
|
- Dark background ensures screenshots blend naturally at any viewport
|
||||||
|
|
||||||
|
## 9. Agent Prompt Guide
|
||||||
|
|
||||||
|
### Quick Color Reference
|
||||||
|
- Primary CTA: Brand Indigo (`#5e6ad2`)
|
||||||
|
- Page Background: Marketing Black (`#08090a`)
|
||||||
|
- Panel Background: Panel Dark (`#0f1011`)
|
||||||
|
- Surface: Level 3 (`#191a1b`)
|
||||||
|
- Heading text: Primary White (`#f7f8f8`)
|
||||||
|
- Body text: Silver Gray (`#d0d6e0`)
|
||||||
|
- Muted text: Tertiary Gray (`#8a8f98`)
|
||||||
|
- Subtle text: Quaternary Gray (`#62666d`)
|
||||||
|
- Accent: Violet (`#7170ff`)
|
||||||
|
- Accent Hover: Light Violet (`#828fff`)
|
||||||
|
- Border (default): `rgba(255,255,255,0.08)`
|
||||||
|
- Border (subtle): `rgba(255,255,255,0.05)`
|
||||||
|
- Focus ring: Multi-layer shadow stack
|
||||||
|
|
||||||
|
### Example Component Prompts
|
||||||
|
- "Create a hero section on `#08090a` background. Headline at 48px Inter Variable weight 510, line-height 1.00, letter-spacing -1.056px, color `#f7f8f8`, font-feature-settings `'cv01', 'ss03'`. Subtitle at 18px weight 400, line-height 1.60, color `#8a8f98`. Brand CTA button (`#5e6ad2`, 6px radius, 8px 16px padding) and ghost button (`rgba(255,255,255,0.02)` bg, `1px solid rgba(255,255,255,0.08)` border, 6px radius)."
|
||||||
|
- "Design a card on dark background: `rgba(255,255,255,0.02)` background, `1px solid rgba(255,255,255,0.08)` border, 8px radius. Title at 20px Inter Variable weight 590, letter-spacing -0.24px, color `#f7f8f8`. Body at 15px weight 400, color `#8a8f98`, letter-spacing -0.165px."
|
||||||
|
- "Build a pill badge: transparent background, `#d0d6e0` text, 9999px radius, 0px 10px padding, `1px solid #23252a` border, 12px Inter Variable weight 510."
|
||||||
|
- "Create navigation: dark sticky header on `#0f1011`. Inter Variable 13px weight 510 for links, `#d0d6e0` text. Brand indigo CTA `#5e6ad2` right-aligned with 6px radius. Bottom border: `1px solid rgba(255,255,255,0.05)`."
|
||||||
|
- "Design a command palette: `#191a1b` background, `1px solid rgba(255,255,255,0.08)` border, 12px radius, multi-layer shadow stack. Input at 16px Inter Variable weight 400, `#f7f8f8` text. Results list with 13px weight 510 labels in `#d0d6e0` and 12px metadata in `#62666d`."
|
||||||
|
|
||||||
|
### Iteration Guide
|
||||||
|
1. Always set font-feature-settings `"cv01", "ss03"` on all Inter text — this is non-negotiable for Linear's look
|
||||||
|
2. Letter-spacing scales with font size: -1.584px at 72px, -1.056px at 48px, -0.704px at 32px, normal below 16px
|
||||||
|
3. Three weights: 400 (read), 510 (emphasize/navigate), 590 (announce)
|
||||||
|
4. Surface elevation via background opacity: `rgba(255,255,255, 0.02 → 0.04 → 0.05)` — never solid backgrounds on dark
|
||||||
|
5. Brand indigo (`#5e6ad2` / `#7170ff`) is the only chromatic color — everything else is grayscale
|
||||||
|
6. Borders are always semi-transparent white, never solid dark colors on dark backgrounds
|
||||||
|
7. Berkeley Mono for any code or technical content, Inter Variable for everything else
|
||||||
+29
-2
@@ -1,6 +1,6 @@
|
|||||||
# BlueArchive Toolkit 文档分类索引
|
# BlueArchive Toolkit 文档分类索引
|
||||||
|
|
||||||
- **更新时间**:2026-09-04
|
- **更新时间**:2026-09-13
|
||||||
- **用途**:按用途、时效性和权威级别定位文档。
|
- **用途**:按用途、时效性和权威级别定位文档。
|
||||||
- **原则**:目录是物理归档方式,不能单独代表文档权威性;当前源码、测试和下列当前文档优先于历史报告。
|
- **原则**:目录是物理归档方式,不能单独代表文档权威性;当前源码、测试和下列当前文档优先于历史报告。
|
||||||
|
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
- `CHANGELOG.md`:版本变更记录,不作为当前实现的唯一依据。
|
- `CHANGELOG.md`:版本变更记录,不作为当前实现的唯一依据。
|
||||||
- `CLAUDE.md`:旧工具兼容入口,不承载独立规则。
|
- `CLAUDE.md`:旧工具兼容入口,不承载独立规则。
|
||||||
- `AGENTS.md`:AI agent 长期协作规则。
|
- `AGENTS.md`:AI agent 长期协作规则。
|
||||||
|
- `TODO.md`:具体工程任务、优先级、依赖与完成条件的仓库内任务账本;不作为当前实现事实来源。
|
||||||
|
- `DESIGN.md`:Dashboard 的主要视觉参考与设计灵感来源;涉及 Dashboard/Web UI/布局/视觉/组件/交互任务时必须先阅读。
|
||||||
|
|
||||||
## 2. 当前状态、计划与缺口
|
## 2. 当前状态、计划与缺口
|
||||||
|
|
||||||
@@ -25,6 +27,7 @@
|
|||||||
- `docs/reports/GO_STATUS.md`:Go `bat-api` 边界和组件进度的权威文档。
|
- `docs/reports/GO_STATUS.md`:Go `bat-api` 边界和组件进度的权威文档。
|
||||||
- `docs/reports/CURRENT_GAPS.md`:当前缺口、影响和推进顺序。
|
- `docs/reports/CURRENT_GAPS.md`:当前缺口、影响和推进顺序。
|
||||||
- `PROJECT_PLAN.md`:目标和路线图;其中的计划项不等于已实现。
|
- `PROJECT_PLAN.md`:目标和路线图;其中的计划项不等于已实现。
|
||||||
|
- `TODO.md`:当前可执行工程任务、优先级、依赖与验收条件;条目状态不高于源码、测试和 current-status 文档。
|
||||||
- `docs/reports/BAT_API_CONTRACT_FIXTURE_HANDOFF.md`:Rust 输出、Go contract fixture 和联调的当前交接说明。
|
- `docs/reports/BAT_API_CONTRACT_FIXTURE_HANDOFF.md`:Rust 输出、Go contract fixture 和联调的当前交接说明。
|
||||||
|
|
||||||
## 3. 架构、决策与稳定契约
|
## 3. 架构、决策与稳定契约
|
||||||
@@ -51,6 +54,15 @@
|
|||||||
|
|
||||||
契约文档涉及字段、状态码、错误码、release layout 或路径语义时,必须与源码测试和 `internal/api/testdata/contract/` 一起复核。
|
契约文档涉及字段、状态码、错误码、release layout 或路径语义时,必须与源码测试和 `internal/api/testdata/contract/` 一起复核。
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4 Dashboard 设计参考
|
||||||
|
|
||||||
|
- `DESIGN.md`:用户 Dashboard 与运营 Dashboard 的主要视觉参考和设计灵感来源,描述应延续的色彩关系、排版、空间、边框、层级、组件形态和交互气质。它不定义后端事实、权限或业务状态,也不要求复制参考来源的页面结构或品牌内容。
|
||||||
|
- Dashboard 的稳定产品职责、信息边界和设计执行规则见 `AGENTS.md` 的“Dashboard 开发与设计”。用户 Dashboard 与运营 Dashboard 共享基础视觉语言和组件体系,但拥有不同的信息架构、信息密度和权限边界。
|
||||||
|
- Dashboard 设计必须以当前真实 API/RPC contract 和数据结构为依据。若所需信息尚无后端 contract,应记录缺口,而不是在前端维护第二份业务状态或伪造指标。
|
||||||
|
|
||||||
|
发生冲突时遵循:`AGENTS.md` 与稳定产品/接口契约 > 当前明确任务需求 > `DESIGN.md` > Agent 自身设计偏好。
|
||||||
|
|
||||||
## 4. 用户、开发与运维指南
|
## 4. 用户、开发与运维指南
|
||||||
|
|
||||||
这些文件描述如何使用或验证已经存在的能力:
|
这些文件描述如何使用或验证已经存在的能力:
|
||||||
@@ -118,6 +130,8 @@
|
|||||||
|
|
||||||
## 8. 推荐阅读顺序
|
## 8. 推荐阅读顺序
|
||||||
|
|
||||||
|
### 8.1 项目与开发者通用阅读顺序
|
||||||
|
|
||||||
1. `README.md`
|
1. `README.md`
|
||||||
2. `CURRENT_STATUS.md`
|
2. `CURRENT_STATUS.md`
|
||||||
3. `PROJECT_PLAN.md`
|
3. `PROJECT_PLAN.md`
|
||||||
@@ -133,4 +147,17 @@
|
|||||||
13. `CONTRIBUTING.md`
|
13. `CONTRIBUTING.md`
|
||||||
14. `AGENTS.md`
|
14. `AGENTS.md`
|
||||||
|
|
||||||
阅读顺序中的状态和契约结论必须回到当前源码、测试和实际命令验证;历史报告只用于解释演进过程。
|
### 8.2 AI / Agent 开发接管顺序
|
||||||
|
|
||||||
|
Agent 进入仓库进行开发时优先按以下顺序建立上下文:
|
||||||
|
|
||||||
|
1. `AGENTS.md`:先确定长期规则、状态所有权和开发边界;
|
||||||
|
2. `DOCS_INDEX.md`:确认当前任务应阅读的权威文档;
|
||||||
|
3. `CURRENT_STATUS.md` 与对应专项状态文档:确认当前已经实现的事实;
|
||||||
|
4. `TODO.md`:确认当前具体任务、优先级、依赖和完成条件;
|
||||||
|
5. 当前任务直接相关的源码、tests、稳定 contract 和架构文档;
|
||||||
|
6. `docs/reports/CURRENT_GAPS.md` / `PROJECT_PLAN.md`:需要判断能力缺口或后续路线时再读取。
|
||||||
|
|
||||||
|
涉及 Dashboard、Web UI、页面布局、视觉样式、组件或交互体验时,在设计或修改前额外必须阅读 `DESIGN.md`。
|
||||||
|
|
||||||
|
阅读顺序中的状态和契约结论必须回到当前源码、测试和实际命令验证;`TODO.md`、`CURRENT_GAPS.md` 和 `PROJECT_PLAN.md` 均不能把计划项提升为已实现事实;历史报告只用于解释演进过程。
|
||||||
|
|||||||
Reference in New Issue
Block a user