Skip to content
Back to skills

Gui Develop Patterns

ASecurity

Design patterns, rules, and procedures for developing GUI features in `apps/web`. Covers migration from `optaic-v0` legacy design and new `ApiClient` integration patterns.

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
developmentpythongoreactnextjsapifrontendbackend

Works with

  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill gui-develop-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gui Develop Patterns?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gui Develop Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-gui-develop-patterns/badge)](https://www.skillsdirectory.com/skills/majiayu000-gui-develop-patterns)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gui-develop-patterns
description: Design patterns, rules, and procedures for developing GUI features in `apps/web`. Covers migration from `optaic-v0` legacy design and new `ApiClient` integration patterns.
---

# GUI Development Patterns

Reference patterns and rules for frontend development in `apps/web`.

## 1. Design Reference Pattern

**Pattern**: "Strict Legacy Replication"
**Context**: When porting features from `optaic-v0`, the design must be preserved exactly while replacing the backend implementation.

**Reference Material**:
- **Legacy Codebase**: `v0-ui/next_app` (Project Relative)
- **Target Aesthetic**: Tailwind CSS classes must match the legacy source to ensure visual consistency.

## 2. Design Philosophy & User Persona

**Target Audience**: Investment Quant Researchers, Data Engineers, Data Scientists, Risk Quants.

**Core Requirements**:
- **Simplism & Modernity**: Clean, distraction-free, professional "FinTech" aesthetic.
- **Density w/ Digestibility**: High information density (grids, charts) but easy to scan.
- **Interactive**: Keyboard shortcuts (Esc, Enter, /) are mandatory for power users.
- **Action-Oriented**: Controls must be intuitive and immediately accessible.

## 3. The Iterative Development Process

GUI development is **iterative, not linear**.

1.  **Develop**: Port/Build using `optaic-v0` reference.
2.  **Verify**: QA using Browser (Agent `ui-ux-tester`).
    - *Check*: Alignment, Responsiveness, Data Binding.
3.  **Report**: Generate QA Report (UX Polish, Missing Backend Features).
4.  **Refine**: Fix issues, improve UX, strictly ignoring backend limitations (report them instead).
5.  **Approve**: Mark as "Production Ready".

## 4. Architecture Patterns

### Data Fetching Pattern

**Rule**: ALL data access must go through the `useApiClient` hook.
**Prohibited**: Direct `fetch()`, `axios`, or SWR fetchers without the SDK.

| Feature | Legacy Pattern (`optaic-v0`) | Modern Pattern (`optaic-trading`) |
|---------|------------------------------|-----------------------------------|
| **Auth** | Implicit Cookie/Session | `ApiClient` (Header integration) |
| **Fetch** | `fetch('/api/resource')` | `api.resource.list()` |
| **State** | Ad-hoc React state | React Query (optional) or `useEffect` + State |
| **Types** | `any` / Missing | `libs/sdk_ts` mapped types |

### Component Structure Pattern

Components should follow this structure separate logic from presentation where possible, but colocation is accepted for simpler ports.

```tsx
export const MyComponent = () => {
    // 1. Hook Initialization
    const api = useApiClient();
    const { tenantId } = useSessionStore();

    // 2. State
    const [data, setData] = useState<DataType | null>(null);

    // 3. Effect (Data Loading)
    useEffect(() => {
        if (!api) return;
        api.domain.operation().then(setData);
    }, [api]);

    // 4. Render
    return <div className="legacy-tailwind-classes">...</div>;
};
```

## 3. Migration Procedure

Use this procedure when porting a component from `optaic-v0` to `apps/web`.

1.  **Selection**: Identify the target component in `optaic-v0/dev_tools/src/ui/next_app`.
2.  **Transplant**: Copy the component file to `apps/web/src/components/...`.
3.  **Sanitization**:
    - Remove Next.js specific imports (`next/link`, `next/router`). Replace with `react-router-dom`.
    - Remove all `fetch` calls.
4.  **Integration**:
    - Inject `useApiClient`.
    - Re-implement data fetching using SDK methods.
    - Map legacy data shapes to SDK `Out` types if necessary.
5.  **Refinement**: Ensure Tailwind classes render correctly in the Vite environment.

## 4. Anti-Patterns (Blocking Rules)

> [!WARNING]
> The following patterns violate platform architecture and must be rejected during code review.

- **Backend Route Copying**: Do NOT copy Next.js API routes (`pages/api/...`). Logic must live in the Python backend (`apps/api`).
- **Raw Fetch**: No `fetch()` calls in UI components.
- **Style Deviation**: Do not "improve" the design unless explicitly requested. Start with strict parity.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.