원클릭으로
tsx-code-order
规范 TSX/React 函数组件内部的代码书写顺序。 Use when: 用户说「整理组件顺序」「代码顺序乱了」「按规范排列 hooks」「tsx 代码排序」「梳理一下组件结构」, 或在写新组件 / review 已有组件时需要对齐代码顺序规范。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
规范 TSX/React 函数组件内部的代码书写顺序。 Use when: 用户说「整理组件顺序」「代码顺序乱了」「按规范排列 hooks」「tsx 代码排序」「梳理一下组件结构」, 或在写新组件 / review 已有组件时需要对齐代码顺序规范。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when releasing a new version of Sudowork. Generates internal (shareone) and public (GitHub Release / in-app) release notes, bumps version, creates a release PR, tags, and injects the release body after CI publishes.
🔧 PRIMARY skill installer for Sudowork. Use this skill for ALL skill installation requests. **CRITICAL: This is the ONLY skill installer you should use.** **DO NOT use clawhub for installation** - clawhub is for ClawHub.com publishing ONLY. Triggers: "帮我安装skill", "install a skill", "安装技能", "推荐技能", "need a skill", "find a skill", "下载技能", "网文大纲", "skill安装". When user asks to install any skill → ALWAYS use sudoclaw-skill-installer, NEVER clawhub.
检测本项目 Renderer 层'同功能不同入口'的语义重复代码(jscpd token 比对覆盖不到的)。当用户说'有没有重复代码'、'同功能多入口'、'扫一下重复'、'这个功能是不是在别处也写了一遍'时使用。典型信号:同一组 ipcBridge 调用 + 同一组领域 utils + 相同 UI 结构出现在不同文件。
Log in to a website automatically using credentials saved in the local key store. Use when the user wants unattended/repeat login to a site (no re-scanning QR, no re-typing passwords), e.g. '帮我自动登录这个网站', 'set up auto-login for X', '记住这个网站的登录'. The plaintext password is NEVER seen by you — the user fills it in 秘钥管理 and sudowork fills the form itself.
Scheduled task management - create, query, delete scheduled tasks to automatically execute operations at specified times.
AI-native browser. Explore websites, discover page structure, take screenshots, and automate interactions.
| name | tsx-code-order |
| description | 规范 TSX/React 函数组件内部的代码书写顺序。 Use when: 用户说「整理组件顺序」「代码顺序乱了」「按规范排列 hooks」「tsx 代码排序」「梳理一下组件结构」, 或在写新组件 / review 已有组件时需要对齐代码顺序规范。 |
规范化 React 函数组件内部代码块的书写顺序,提升可读性与一致性。
开始时声明: "我在用 tsx-code-order skill 整理组件代码顺序。"
函数组件内部,按以下顺序从上到下排列:
1. 组件内部常量(不依赖 props/state 的固定值)
2. useState
3. useRef
4. useContext / 其他返回单一值的内置 Hook
5. 自定义 Hook(use*)
6. 普通派生变量(从 props / state 直接计算,不需要缓存)
7. useMemo(需要缓存的派生值)
8. useEffect / useLayoutEffect
9. useCallback(需要缓存的函数引用)
10. 事件处理函数 / 普通函数(on* 命名)
11. JSX return
文件底部(组件函数体外):
12. 辅助组件(不导出的内部小组件)
13. Props interface(I<ComponentName>Props,必须放在文件最底部)
不依赖运行时 props / state 的固定值,写在 Hook 之前:
const MAX_RETRIES = 3;
const OPTIONS = ['a', 'b', 'c'];
所有状态声明集中在一起:
const [isOpen, setIsOpen] = useState(false);
const [name, setName] = useState('');
const inputRef = useRef<HTMLInputElement>(null);
const timerRef = useRef<ReturnType<typeof setTimeout>>();
const { theme } = useContext(ThemeContext);
const { t } = useTranslation();
const navigate = useNavigate();
调用自定义 hook,拿到数据或状态:
const { data, isLoading } = useFetchUsers();
const { isVisible, onToggle } = useToggle();
不需要 useMemo 的简单派生值,直接 const:
const isDisabled = isLoading || !name;
const displayName = name.trim() || 'Anonymous';
判断标准:计算量小、依赖稳定、不产生新引用的就用普通 const;反之用 useMemo。
缓存计算量较大或需要稳定引用的派生值:
const sortedList = useMemo(() => [...items].sort(compareByName), [items]);
const chartData = useMemo(() => transformToChartFormat(rawData), [rawData]);
副作用统一放在函数之前。多个 effect 按逻辑相关性排列(初始化 → 监听 → 清理):
useEffect(() => {
fetchData();
}, []);
useEffect(() => {
document.title = name;
}, [name]);
缓存需要传递给子组件或放入依赖数组的函数:
const onSubmit = useCallback(() => {
// ...
}, [name]);
本项目统一用 on* 命名,不用 handle*:
function onConfirm() {
setIsOpen(false);
onOk(name);
}
function onInputChange(value: string) {
setName(value);
}
return (
<Modal visible={isOpen} onOk={onConfirm}>
<Input value={name} onChange={onInputChange} />
</Modal>
);
[导入语句]
[模块级常量,如 const DEFAULT_PAGE_SIZE = 20]
export default function MyComponent({ ... }: IMyComponentProps) {
// 组件内部代码按上面顺序排列
}
function InternalHelper() { ... } // 内部辅助组件(不导出)
interface IMyComponentProps { // Props interface 永远放最底部
isOpen: boolean;
onOk: () => void;
}
bunx eslint <path> --fix 和 bunx tsc --noEmit 确保无错误只调整顺序,不改业务逻辑、不重构代码、不拆分文件。如有发现命名不符合规范(bool 非
is*、handler 非on*),单独列出告知用户,不自动修改命名。