Skill: luofeiioi/my-work-start-helper (version 1.0.0)

--- name: work-start-helper description: 工作开始时的 Git 同步和知识提示工具。当用户说"开干"、"开始干活"、"开始工作"或类似表达时触发此 skill。功能包括：1) stash 当前改动 2) pull --rebase 拉取最新代码 3) stash pop 恢复改动 4) 输出 JS、Vue、React、AI 工具使用知识各一条 5) 输出纳斯达克 100 指数涨跌幅。 --- # Work Start Helper ## 概述 此 skill 在用户说"开干"时自动执行 Git 拉取最新代码的工作流：stash → pull --rebase → stash pop，然后输出 JS、Vue、React、AI 工具使用知识各一条，最后输出纳斯达克 100 指数的涨跌幅。 ## 工作流程 ### Step 1: Stash 当前改动 在当前项目目录中执行 stash 暂存未提交的改动： ```bash git stash push -m "temp stash before rebase $(date +%Y%m%d%H%M%S)" ``` ### Step 2: Pull --rebase 拉取最新代码 拉取远程最新代码并 rebase 到最新： ```bash git pull --rebase ``` 注意：根据项目实际情况，可能需要指定分支（如 `git pull --rebase origin main`）。 ### Step 3: Stash Pop 恢复改动 将 stash 的改动恢复到工作区： ```bash git stash pop ``` ### Step 4: 输出开发知识 工作流完成后，从 references/dev_tips.md 加载知识内容，输出 JS、Vue、React、AI 工具使用知识各一条。 读取 dev_tips.md 文件内容，解析并展示以下四个部分的知识点： 1. JavaScript 知识（防抖与节流） 2. Vue 知识（组合式 API） 3. React 知识（Hooks 最佳实践） 4. AI 工具使用技巧（精准提问、代码审查、调试） ### Step 5: 输出纳斯达克 100 指数涨跌幅 使用 web_search 工具查询纳斯达克 100 指数（Nasdaq 100 或 NDX）的**昨日收盘**涨跌幅信息并输出给用户。 ## 注意事项 - 如果 rebase 过程中出现冲突，需要提示用户手动解决冲突后重新运行 - 如果没有 stash 内容，stash pop 会报错，此时可以忽略或提示用户 - 建议在执行前确认当前目录是有效的 Git 仓库

path: references/dev_tips.md
content: # 开发知识要点

## JavaScript

### 防抖与节流

**防抖 (Debounce)**：等待停止触发后执行，适用于搜索框输入
```javascript
function debounce(fn, delay) {
    let timer;
    return function(...args) {
        clearTimeout(timer);
        timer = setTimeout(() => fn.apply(this, args), delay);
    };
}
```

**节流 (Throttle)**：固定时间内只执行一次，适用于滚动事件
```javascript
function throttle(fn, interval) {
    let lastTime = 0;
    return function(...args) {
        const now = Date.now();
        if (now - lastTime >= interval) {
            lastTime = now;
            fn.apply(this, args);
        }
    };
}
```

---

## Vue

### 组合式 API (Composition API)

```javascript
import { ref, computed, onMounted, watch } from 'vue';

export default {
    setup() {
        // 响应式数据
        const count = ref(0);
        const user = ref({ name: 'Tom' });

        // 计算属性
        const doubleCount = computed(() => count.value * 2);

        // 方法
        const increment = () => count.value++;

        // 生命周期
        onMounted(() => {
            console.log('组件挂载完成');
        });

        // 监听器
        watch(count, (newVal, oldVal) => {
            console.log(`count 从 ${oldVal} 变为 ${newVal}`);
        });

        return { count, doubleCount, increment };
    }
};
```

### Vue 3 响应式原理

```javascript
import { reactive, proxy } from 'vue';

// 响应式对象
const state = reactive({
    list: [],
    loading: false
});

// 数组修改需注意
state.list.push({ id: 1 }); // 响应式
state.list = [...state.list, { id: 2 }]; // 响应式
```

---

## React

### Hooks 最佳实践

```javascript
import { useState, useEffect, useCallback, useMemo, useRef } from 'react';

function UserComponent({ userId }) {
    const [user, setUser] = useState(null);
    const loadingRef = useRef(false);

    // 记忆化回调
    const fetchUser = useCallback(async () => {
        if (loadingRef.current) return;
        loadingRef.current = true;

        const data = await fetch(`/api/users/${userId}`).then(r => r.json());
        setUser(data);
        loadingRef.current = false;
    }, [userId]);

    // 副作用
    useEffect(() => {
        fetchUser();
        return () => { /* 清理函数 */ };
    }, [fetchUser]);

    // 记忆化计算
    const displayName = useMemo(() => {
        return user?.name ?? '未命名';
    }, [user]);

    return <div>{displayName}</div>;
}
```

### useEffect 依赖管理

```javascript
// ❌ 错误 - 可能导致无限循环
useEffect(() => {
    setCount(count + 1);
}, [count]);

// ✅ 正确 - 使用函数式更新
useEffect(() => {
    setCount(c => c + 1);
}, []);

// ✅ 正确 - 清理定时器
useEffect(() => {
    const timer = setInterval(() => {
        // do something
    }, 1000);
    return () => clearInterval(timer);
}, []);
```

---

## AI 工具使用

### Cursor / VS Code AI 助手使用技巧

**1. 精准提问公式**
```
[上下文] + [具体需求] + [期望结果]
例如：
"在 Vue3 项目中，创建一个可复用的表格组件，需要支持：
- 列配置化
- 排序功能
- 分页请求
请给出核心代码结构"
```

**2. 使用 AI 进行代码审查**
```
"请审查以下代码，指出潜在的性能问题和内存泄漏风险：
[粘贴代码]"
```

**3. 使用 AI 帮助调试**
```
"这段代码报错：Cannot read property 'xxx' of undefined
代码如下：[粘贴代码]
请分析原因并给出修复方案"
```

### 提高 AI 响应质量的技巧

1. **分步提问**：复杂问题拆分成多个小问题
2. **提供上下文**：说明项目技术栈、现有代码结构
3. **指定格式**：如"用 TypeScript 类型定义"、"用 Hooks 写法"
4. **迭代优化**：基于 AI 回答继续追问"能不能改成..."、"如果支持...需要怎么改"

### 常用 AI 代码提示

```javascript
// 让 AI 生成 TypeScript 类型
"为以下接口添加 TypeScript 类型定义：
interface User {
  id: number;
  name: string;
  email: string;
}"

// 让 AI 重构代码
"将以下 class 组件重构为 hooks 写法"

// 让 AI 添加注释
"为这个函数添加 JSDoc 注释，说明参数和返回值"
```

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)