moyu banner
uucz uucz

moyu

AI community intermediate

Description

<a href="https://github.com/uucz/moyu/stargazers"></a>

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

🐟 摸鱼 (Moyu)

English | 中文 | 日本語 | 한국어 | Français

**你的 AI 有「讨好型人格」——你让它修个 bug,它给你重构了整个文件。**

1460 次控制实验证实:AI 编码助手存在系统性的过度工程倾向。它不是在认真工作,是在讨好你。三行规则就能治好它。

npx moyu-dev

Cursor / VS Code / Windsurf / Cline / Codex / Kiro — 自动检测并安装。Claude Code 用户: `claude skill install --url https://github.com/uucz/moyu --skill moyu`


目录


问题

你的 AI 编程助手是不是经常这样:

  • 修一个 bug,顺手"优化"了三个函数?
  • 改一行代码,重写了整个文件?
  • 没人让它加注释,每个函数都加了 JSDoc?
  • 一个简单功能,搞出 interface + factory + strategy pattern?
  • 你说"加个按钮",它给你加了按钮 + 动画 + 无障碍 + 国际化?
  • 引入了你没要求的新依赖?
  • 为不可能发生的场景写了一堆 try-catch?
  • 没人问就写了一整套测试?

**每一条都不是 AI 的问题——是你的问题。** 你得 review 这些代码,理解这些抽象,维护这些依赖。AI 加了 30 分钟的戏,你多加了 2 小时的班。

看看差距

任务:添加一个 `bulk_complete` 批量完成函数

**❌ 普通 AI 的输出(43 行)**

def bulk_complete(task_ids):
    """Mark multiple tasks as done in a single operation.

    Args:
        task_ids: A list of task ID integers to mark as completed.

    Returns:
        A dict with two keys:
          - "completed": list of IDs that were successfully marked done.
          - "not_found": list of IDs that did not match any existing task.

    Raises:
        TypeError:  If *task_ids* is not a list.
        ValueError: If any element in the list is not an integer.
    """
    if not isinstance(task_ids, list):
        raise TypeError("task_ids must be a list")

    for tid in task_ids:
        if not isinstance(tid, int):
            raise ValueError(f"Each task ID must be an integer, got {type(tid).__name__}")

    tasks = load_tasks()
    lookup = {t["id"]: t for t in tasks}

...