AGENT SKILL

principle-model-the-domain

WHEN invalid states or repeated domain rules complicate logic; NOT clear local transformations; represent invariants and ownership directly.

License 许可
MIT
所属仓库
mintuz/skills
最近更新
2026-11-13
Stars
★ 35
Forks
7

01 前言 Front Matter

name
principle-model-the-domain
description
WHEN invalid states or repeated domain rules complicate logic; NOT clear local transformations; represent invariants and ownership directly.

02 资源文件 3

03 SKILL.md 正文

Model The Domain

Represent legal states, transitions and ownership directly, so invalid states and scattered rules have nowhere to live.

Identify legal states, forbidden combinations, transitions, ownership and access patterns. Choose the smallest structure that expresses them: variants for alternatives, a transition model for lifecycle, a map for keyed lookup, a queue for ordered work.

Carry required data with its state: pending, failed(error), complete(receipt). Centralise transition rules instead of synchronising flags across consumers. Group repeated domain knowledge under one owner; execution phases alone do not define ownership.

Parse or migrate persisted and external representations into the model. Types cannot retroactively make stored invalid states valid.

Verify allowed and rejected transitions through the public behaviour, including restoration and failure. Keep boring local code when a proposed abstraction removes no invalid state, repeated rule or lifecycle risk. No framework is required.

Distinct from: principle-type-system-discipline (making the compiler enforce distinctions the model already names), principle-parse-at-the-boundary (untrusted or persisted data enters and must be validated), principle-derive-from-one-owner (one fact computed or stored in two places).

Done: each state carries its data; transitions are centralised; allowed and rejected transitions are tested.

04 同仓库更多 Skills

mintuz
mintuz/skills

xstate

WHEN React state changes in response to an external answer — async submit, in-flight or loading flags, retries, cancellation, polling, optimistic updates, stale responses — or to an interaction with an interruptible middle, such as a drag or a gesture; or WHEN building, reviewing, testing, or visualising XState 5 actors and @xstate/react integrations; NOT for a value one event sets completely, such as a text draft, a focus flag, or a plain open and closed toggle; models typed lifecycles and renders legal Mermaid stateDiagram-v2 charts.

测试与质量前端开发
★ 35
mintuz
mintuz/skills

web-design

WHEN refining UI layout, typography, color, or polish; NOT code implementation; provides concise principles for intentional, legible design.

设计师视觉设计
★ 35
mintuz
mintuz/skills

tailwind

USE WHEN writing, fixing or reviewing styling in a project that uses Tailwind CSS, even a one-class change or a request that does not name Tailwind: colours, focus rings, spacing, class names chosen by a prop, map or CVA variants, theme tokens and dark mode in the Tailwind stylesheet or tailwind.config, setup or upgrades (if unsure whether the project uses Tailwind, check package.json or the main stylesheet first); NOT WHEN writing plain CSS or Sass in a project without Tailwind; produces class names Tailwind can find, syntax for the installed major version, visible focus indicators, and no unrequested dependency or invented brand value.

视觉设计
★ 35
mintuz
mintuz/skills

refactoring

WHEN you need a plan to refactor, restructure, or clean up working code and the test result is known, either green or a recorded failing set; NOT for new feature delivery or any behavior change; reversible-baseline safety with prioritized improvements.

代码审查
★ 35
mintuz
mintuz/skills

react

USE WHEN changing the logic, data, props, state, Effects or rendered text of a React component, hook or page, even a one-line change; NOT WHEN the request is styling only (class names, Tailwind, CSS, dark mode, spacing, shadows) or tests only, or when it models submit, in-flight, loading, retry or failure states, even for a named React form (xstate covers that, including its React wiring); applies React 19 composition, state, Effect, structure, API and performance rules with only the project's installed libraries.

测试与质量前端开发
★ 35
mintuz
mintuz/skills

react-testing

USE WHEN writing, fixing or reviewing a React Testing Library test for a component, hook or context provider, even one small test, or when asked for an end-to-end journey inside a Vitest or React Testing Library suite; NOT WHEN changing the component itself (react), testing XState actors or @xstate/react (xstate), or writing a Playwright or Cypress test; covers renderHook, providers, async results, forms and false-pass anti-patterns, and declines end-to-end journeys with the testable slices.

测试与质量前端开发
★ 35