从固定点(commit、branch、tag 或 merge-base)开始,沿两条轴线审查变更——规范(代码是否遵循仓库文档化的编码规范?)和规格(代码是否与原始 issue/PRD 的要求一致?)。两条审查线在并行子 agent 中运行,并以并排方式报告结果。当用户想审查一个分支、PR、进行中的变更,或要求"从 X 开始审查"时使用。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when working on AUTO-MAS frontend UI, Ant Design Vue components, page layout, forms, tables, modals, drawers, feedback, empty/loading/error states, drag interactions, dark mode, or visual polish.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Keep AUTO-MAS UI changes consistent with an Electron desktop business operations platform: dense enough for repeated work, quiet enough for long sessions, and aligned with Ant Design Vue 4.x.
This skill is self-contained for AUTO-MAS UI rules. Nearby existing pages are still the authority for module-specific layout, wording, and visual rhythm when they do not conflict with this skill.
Before editing UI:
@ant-design/icons-vue, not Element Plus, Naive UI, Arco, or Ant Design React.src/style.css and src/composables/useTheme.ts.| Need | Prefer |
|---|---|
| Layout | a-layout, a-menu, a-tabs, a-card, a-space, a-flex, a-row, a-col |
| Form input | a-form, a-form-item, a-input, a-input-number, a-select, a-switch, a-checkbox, a-radio, a-date-picker |
| Data display | a-table, a-tag, a-empty, a-statistic, a-typography |
| Feedback | a-modal, Modal.confirm, message, a-spin, a-progress, a-alert |
| Icons | @ant-design/icons-vue |
Use default component styles, official props, slots, layout components, and theme tokens first. Custom CSS is for local layout constraints or real readability needs.
When overriding Ant Design Vue internals:
:deep() under the current component root class only when the rendered DOM is actually its descendant. Ant Design portal shells may lack the component scope attribute; inspect the DOM and computed styles, then use a narrowly namespaced :global(.module-modal .ant-modal-body) when needed..ant-* overrides unless the task is a deliberate project-wide token or global fix.!important; if unavoidable, document the reason.src/composables/useTheme.ts: it toggles the dark class on <html> and injects all --ant-* variables on :root. ConfigProvider runs without cssVar, so AntD token variables do not exist at runtime unless useTheme defines them.--ant-* tokens that already adapt to the theme. When a distinct dark value is unavoidable, key it on the html.dark ancestor selector inside scoped styles. Never use @media (prefers-color-scheme: ...) in components; it follows the OS instead of the app theme.[data-theme='dark'] or a .light class; nothing in the codebase sets them, so such rules are dead code.isDark exported by useTheme. Never read window.matchMedia('(prefers-color-scheme: ...)') outside useTheme.ts; a matchMedia call inside a computed is non-reactive and will not update on theme or OS changes.--ant-* names defined by useTheme.updateCSSVariables(). Every --ant-* definition must map to the matching antTokens.<token> value derived from the same Ant Design algorithm and seed used by ConfigProvider; never approximate Ant Design tokens with hand-written light/dark values. Use a literal name in each setProperty call so the variable stays greppable.--app-* for project-specific shared values that have no Ant Design token equivalent. Derive those values from the app theme in useTheme.ts, with explicit light/dark behavior where needed.Before completing styling work that touches colors, borders, backgrounds, or adds var() references, run the undefined-CSS-variable audit in references/css-variable-audit.md. Fix every reported variable by correcting it to an existing token, mapping a missing --ant-* variable to its matching antTokens.<token>, or defining a genuinely project-specific --app-* variable.
danger for delete, stop, disable, clear, or irreversible actions.Modal.confirm.loading or confirm-loading.aria-label when context is not enough.a-form; complex configuration pages prefer layout="vertical".rules and required; do not rely on placeholder as validation.isEdit or route parameters.a-table; use custom lists for drag, complex cards, or virtual logs.a-tag only for finite enum statuses or scan-friendly categories.YYYY-MM-DD HH:mm:ss unless a local pattern differs.Modal.confirm for destructive confirmation.a-modal for short forms and simple flows.alert and confirm.z-index. Prefer reserving the title bar height plus normal spacing; do not raise z-index to repair positioning. Reserve the chrome for both the overlay wrapper and its mask, since moving only the dialog does not keep window controls clickable. Only an intentional startup or shutdown safety layer may block window controls.overflow-y: auto; nested scrolling is reserved for deliberately independent panes. Do not make the page body or the modal wrapper provide the overflow, and keep close and footer actions reachable.Every page or major panel should account for:
Loading indicators for an otherwise empty panel or dialog step must sit in a container with explicit usable size and centered alignment. Do not place an overlay spinner around zero-height conditional content, which leaves the indicator anchored at the container origin.
For WebSocket, scheduler, download, backend startup, and other process flows, distinguish connecting, connected, disconnected, reconnecting, timeout, processing, success, and failure when those states exist.
MenuOutlined or DragOutlined.grab on handles and grabbing while dragging.Before declaring UI work complete:
mas-frontend-standards.prefers-color-scheme appears only in src/composables/useTheme.ts; grep for it when touching theme-related styles.references/css-variable-audit.md and confirm zero undefined references.| Temptation | Reality |
|---|---|
| "This page can have its own style." | AUTO-MAS uses a shared desktop business UI language. |
| "A custom button/input/table is faster." | Use Ant Design Vue and existing project components first. |
| "A tag makes short text look neat." | Tags are only for finite statuses or categories. |
| "Hover cursor is enough for drag." | Draggable items need visible handles and protected inner controls. |
| "Success/failure messages can be generic." | Feedback should state the concrete result or reason. |
| "Dark mode can wait." | Color and token changes must remain readable in both themes. |
| "prefers-color-scheme is the standard way." | The app theme overrides the OS theme; components must key on html.dark or tokens, never media queries. |
| "Any --ant-* name will work." | AntD does not emit CSS variables here; only names defined in useTheme.updateCSSVariables() resolve. |
For UI tasks, report:
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
从固定点(commit、branch、tag 或 merge-base)开始,沿两条轴线审查变更——规范(代码是否遵循仓库文档化的编码规范?)和规格(代码是否与原始 issue/PRD 的要求一致?)。两条审查线在并行子 agent 中运行,并以并排方式报告结果。当用户想审查一个分支、PR、进行中的变更,或要求"从 X 开始审查"时使用。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
一场无休止的盘问,用来打磨你的计划或设计。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
对用户的计划、决策或想法进行层层盘问。当用户想要压力测试自己的思考,或使用任何 'grill' 触发短语时使用。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Define backend API contract standards for FastAPI services. Use when adding or refactoring HTTP/WebSocket endpoints in app/api, designing request/response schemas in app/models/schema.py, standardizing status/error contracts, and maintaining backward compatibility for clients.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when an AUTO-MAS PR is red in CI, when reproducing a dev-PR gate locally before pushing, when a workflow needs a skip-changelog or changelog-maintenance label, or when editing .github/workflows, .github/actions, scripts/changelog.py or scripts/check_reverts.py. Covers every gate that runs on a PR to dev and the exact local command for each.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when implementing, fixing, refactoring, or reviewing non-generated AUTO-MAS code, or when preparing code-style guidance, comments, docstrings, version notes, or Conventional Commit wording. Skip read-only diagnosis, explanation, exploration, and planning unless code conventions are requested.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.