| name | add-component |
| description | Generates SolidJS components or pages with ts-rs bindings, error handling, and reactive patterns. Use when creating new frontend UI. |
| disable-model-invocation | true |
| user-invocable | true |
| argument-hint | <์ปดํฌ๋ํธ๋ช
> [page|component|feature] |
| allowed-tools | Read, Grep, Edit, Write, Bash(npm *), Bash(npx *) |
| context | fork |
| agent | ts-impl |
SolidJS ์ปดํฌ๋ํธ ์ถ๊ฐ ์ํฌํ๋ก์ฐ
$ARGUMENTS[0]์ ์์ฑํฉ๋๋ค.
0๋จ๊ณ: ํ์
๋ถ๋ฅ
| ์ธ์ | ์์น | ์ค๋ช
|
|---|
page | src/pages/ | ๋ผ์ฐํธ ํ์ด์ง (lazy import) |
component | src/components/ | ์ฌ์ฌ์ฉ ๊ณต์ ์ปดํฌ๋ํธ |
feature | src/features/ | ๋๋ฉ์ธ ๊ธฐ๋ฅ ๋ชจ๋ |
(๋ฏธ์ง์ ์ component๋ก ๊ธฐ๋ณธ ์ฒ๋ฆฌ)
1๋จ๊ณ: ์ปดํฌ๋ํธ ํ์ผ ์์ฑ
Page์ธ ๊ฒฝ์ฐ
์์น: src/pages/$ARGUMENTS[0].tsx
import { createResource, Show } from "solid-js";
import type { MyType } from "@/types/generated/MyType";
export default function $ARGUMENTS[0]Page() {
const [data] = createResource(fetchData);
return (
<div class="p-4">
<h1 class="text-xl font-bold mb-4">ํ์ด์ง ์ ๋ชฉ</h1>
<Show when={data.loading}>
<div class="animate-pulse">๋ก๋ฉ ์ค...</div>
</Show>
<Show when={data.error}>
<div class="text-red-500">์๋ฌ: {data.error.message}</div>
</Show>
<Show when={data()}>
{/* ๋ฐ์ดํฐ ๋ ๋๋ง */}
</Show>
</div>
);
}
async function fetchData(): Promise<MyType> {
const res = await fetch("/api/v1/...");
if (!res.ok) throw new Error(`API ์๋ฌ: ${res.status}`);
return res.json();
}
Component์ธ ๊ฒฝ์ฐ
์์น: src/components/$ARGUMENTS[0].tsx
import type { Component } from "solid-js";
interface $ARGUMENTS[0]Props {
}
export const $ARGUMENTS[0]: Component<$ARGUMENTS[0]Props> = (props) => {
return (
<div>
{/* ์ปดํฌ๋ํธ ๋ด์ฉ */}
</div>
);
};
2๋จ๊ณ: ๋ผ์ฐํธ ๋ฑ๋ก (Page์ธ ๊ฒฝ์ฐ)
์์น: src/App.tsx
const $ARGUMENTS[0]Page = lazy(() => import("./pages/$ARGUMENTS[0]"));
<Route path="/<route>" component={$ARGUMENTS[0]Page} />
3๋จ๊ณ: ts-rs ํ์
ํ์ธ
API ์ฐ๋์ด ํ์ํ ๊ฒฝ์ฐ:
grep -r "pub struct.*Response" crates/trader-api/src/routes/
cargo test -p trader-api export_bindings
cp crates/trader-api/bindings/*.ts frontend/src/api/types/generated/
โ ๏ธ src/types/generated/ ํ์ผ์ ์๋ ํธ์งํ์ง ๋ง์ธ์.
4๋จ๊ณ: ๊ฒ์ฆ
cd frontend
npx tsc --noEmit
npx eslint src --max-warnings 0
npm run build
๊ฒ์ฆ ์คํจ ์
- ์๋ฌ ๋ฉ์์ง์์ ํ์ผ/๋ผ์ธ ํ์ธ
- ํด๋น ํ์ผ ์์
- ๊ฒ์ฆ ๋ช
๋ น ์ฌ์คํ โ ํต๊ณผํ ๋๊น์ง ๋ฐ๋ณต
์ฒดํฌํฌ์ธํธ