skills/woltz-react-rich-domain/SKILL.md
React hooks and components for @woltz/rich-domain. Use when building frontend UIs with DataTable, Kanban, Timeline, or Criteria-based filtering.
npx skillsauth add tarcisioandrade/rich-domain woltz-react-rich-domainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
React integration for @woltz/rich-domain with hooks, components, and React Query integration.
npm install @woltz/react-rich-domain @tanstack/react-query
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<YourApp />
</QueryClientProvider>
);
}
import { useCriteriaTable, DataTableCriteria } from "@woltz/react-rich-domain";
import { ColumnDef } from "@tanstack/react-table";
interface User {
id: string;
name: string;
email: string;
status: "active" | "inactive";
}
const columns: ColumnDef<User>[] = [
{ accessorKey: "name", header: "Name" },
{ accessorKey: "email", header: "Email" },
{ accessorKey: "status", header: "Status" },
];
export function UserTable() {
const { table, filterProps, searchProps } = useCriteriaTable({
columns,
queryKey: ["users"],
queryFn: async (criteria) => {
const res = await fetch("/api/users?" + criteria.toQueryString());
return res.json();
},
filterFields: [
{
field: "status",
type: "string",
fieldLabel: "Status",
options: [
{ label: "Active", value: "active" },
{ label: "Inactive", value: "inactive" },
],
},
],
});
return (
<DataTableCriteria
table={table}
filterProps={filterProps}
{...searchProps}
showColumnToggle
/>
);
}
import { useCriteriaKanban, DataKanbanCriteria } from "@woltz/react-rich-domain";
interface Task {
id: string;
title: string;
status: "todo" | "doing" | "done";
}
const columns = [
{ id: "todo", title: "To Do", criteria: (c) => c.where("status", "equals", "todo") },
{ id: "doing", title: "In Progress", criteria: (c) => c.where("status", "equals", "doing") },
{ id: "done", title: "Done", criteria: (c) => c.where("status", "equals", "done") },
];
export function TaskBoard() {
const kanban = useCriteriaKanban<Task>("tasks", fetchTasks, {
columns,
getItemId: (task) => task.id,
groupField: "status",
onCardMove: async ({ cardId, toColumn }) => {
await updateTask(cardId, { status: toColumn.id });
},
});
return (
<DataKanbanCriteria
kanban={kanban}
renderCard={(task) => <div>{task.title}</div>}
showItemCount
/>
);
}
| Hook | Purpose |
| -------------------------- | ----------------------------------------- |
| useCriteria | Manage filter, sort, pagination state |
| useCriteriaQuery | Criteria + React Query for paginated data |
| useCriteriaInfiniteQuery | Infinite scroll with Criteria |
| useCriteriaTable | TanStack Table + Criteria integration |
| useCriteriaKanban | Kanban board with drag-and-drop |
| useCriteriaTimeline | Timeline view with date grouping |
| Component | Purpose |
| ---------------------- | ---------------------------------------- |
| DataTableCriteria | Full-featured data table with filtering |
| DataKanbanCriteria | Kanban board with drag-and-drop |
| DataTimelineCriteria | Timeline view with grouped items |
| DataViewToolbar | Search, filter, export toolbar |
| Filter | Standalone filter dropdown UI |
| Sorting | Sorting UI with drag-and-drop reordering |
For detailed documentation:
Load references based on context - don't read all at once.
development
Guide for @woltz/rich-domain DDD library and ecosystem. Use when building domain models, repositories, transactional outbox, or working with Prisma/TypeORM/Drizzle adapters.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.