Provide implementations of advanced data structures
日本語の概要は準備中です。原文の説明を表示しています。
Generate Ink (React for CLI) components for terminal UIs with hooks, state management, and layout components.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Generate Ink (React) components for terminal UIs.
Invoke this skill when you need to:
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectName | string | Yes | Project name |
| components | array | Yes | Component definitions |
| includeHooks | boolean | No | Generate custom hooks |
{
"components": [
{
"name": "SelectList",
"type": "interactive",
"props": ["items", "onSelect"],
"state": ["selectedIndex"]
}
]
}
import React, { useState, useCallback } from 'react';
import { Box, Text, useInput, useApp } from 'ink';
interface SelectListProps {
items: string[];
onSelect: (item: string, index: number) => void;
}
export const SelectList: React.FC<SelectListProps> = ({ items, onSelect }) => {
const [selectedIndex, setSelectedIndex] = useState(0);
const { exit } = useApp();
useInput((input, key) => {
if (key.upArrow) {
setSelectedIndex((prev) => (prev > 0 ? prev - 1 : items.length - 1));
} else if (key.downArrow) {
setSelectedIndex((prev) => (prev < items.length - 1 ? prev + 1 : 0));
} else if (key.return) {
onSelect(items[selectedIndex], selectedIndex);
} else if (input === 'q' || key.escape) {
exit();
}
});
return (
<Box flexDirection="column">
{items.map((item, index) => (
<Box key={item}>
<Text color={index === selectedIndex ? 'green' : undefined}>
{index === selectedIndex ? '> ' : ' '}
{item}
</Text>
</Box>
))}
<Box marginTop={1}>
<Text dimColor>Use arrow keys to navigate, Enter to select, q to quit</Text>
</Box>
</Box>
);
};
import React, { useState } from 'react';
import { Box, Text, useInput } from 'ink';
interface TextInputProps {
placeholder?: string;
onSubmit: (value: string) => void;
mask?: string;
}
export const TextInput: React.FC<TextInputProps> = ({
placeholder = '',
onSubmit,
mask,
}) => {
const [value, setValue] = useState('');
const [cursor, setCursor] = useState(0);
useInput((input, key) => {
if (key.return) {
onSubmit(value);
return;
}
if (key.backspace || key.delete) {
setValue((prev) => prev.slice(0, -1));
setCursor((prev) => Math.max(0, prev - 1));
return;
}
if (!key.ctrl && !key.meta && input) {
setValue((prev) => prev + input);
setCursor((prev) => prev + 1);
}
});
const displayValue = mask ? mask.repeat(value.length) : value;
return (
<Box>
<Text>
{displayValue || <Text dimColor>{placeholder}</Text>}
<Text backgroundColor="white"> </Text>
</Text>
</Box>
);
};
import React, { useState, useEffect } from 'react';
import { Text } from 'ink';
const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
interface SpinnerProps {
label?: string;
}
export const Spinner: React.FC<SpinnerProps> = ({ label }) => {
const [frame, setFrame] = useState(0);
useEffect(() => {
const timer = setInterval(() => {
setFrame((prev) => (prev + 1) % frames.length);
}, 80);
return () => clearInterval(timer);
}, []);
return (
<Text>
<Text color="green">{frames[frame]}</Text>
{label && <Text> {label}</Text>}
</Text>
);
};
import { useState, useEffect, useCallback } from 'react';
interface AsyncState<T> {
data: T | null;
loading: boolean;
error: Error | null;
}
export function useAsync<T>(
asyncFn: () => Promise<T>,
deps: any[] = []
): AsyncState<T> & { refetch: () => void } {
const [state, setState] = useState<AsyncState<T>>({
data: null,
loading: true,
error: null,
});
const execute = useCallback(async () => {
setState({ data: null, loading: true, error: null });
try {
const data = await asyncFn();
setState({ data, loading: false, error: null });
} catch (error) {
setState({ data: null, loading: false, error: error as Error });
}
}, deps);
useEffect(() => {
execute();
}, [execute]);
return { ...state, refetch: execute };
}
{
"dependencies": {
"ink": "^4.0.0",
"react": "^18.0.0"
},
"devDependencies": {
"@types/react": "^18.0.0",
"ink-testing-library": "^3.0.0"
}
}
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Provide implementations of advanced data structures
日本語の概要は準備中です。原文の説明を表示しています。
Fresh adversarial code review with binary PASS/FAIL verdicts, evidence citations, and anchoring bias prevention via fresh reviewer spawning.
日本語の概要は準備中です。原文の説明を表示しています。
WASM-based instant code transforms for simple tasks, achieving 352x speedup over LLM inference with zero cost.
日本語の概要は準備中です。原文の説明を表示しています。
Coordinate Crew (persistent) and Polecat (transient) agents using Gas Town's hook-based work distribution and GUPP principle.
日本語の概要は準備中です。原文の説明を表示しています。
Generate visual representations of algorithm execution
日本語の概要は準備中です。原文の説明を表示しています。
Hierarchical coordination and drift detection with frequent checkpoints, shared memory coherence validation, role specialization enforcement, and short task cycles.
日本語の概要は準備中です。原文の説明を表示しています。