mcpField
F
forbid

forbid

github.com/terrylicaAgent 工作流144 次安装1 天前更新
代码仓库

关于 forbid

forbid 是用于管理 RU 循环机会发现排除项的 skill。它修改项目配置,变更会在下一轮生效。

主要功能

  1. 01添加禁止项
  2. 02查看当前条目
  3. 03移除匹配条目
  4. 04清空禁止列表

适用场景

  1. 01排除文档更新等发现项
  2. 02检查或调整循环指引

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill forbid

安装后在 Claude Code 中输入/forbid确认已加载。

附带文件references/evolution-log.md

详细介绍

RU:禁止项

在活动循环会话期间,将项目添加到禁止列表。 禁止项会被排除在机会发现之外。

运行时可配置:无论是否存在活动循环均可使用。更改会在下一次迭代时生效。

自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏移,或需要采用变通方法,请立即修复此文件,不要延后。仅针对真实且可复现的问题进行更新。

用法

  • /ru:forbid documentation updates - 将“documentation updates”添加到禁止列表
  • /ru:forbid --list - 显示当前禁止项
  • /ru:forbid --clear - 清除所有禁止项
  • /ru:forbid --remove <phrase> - 移除与短语匹配的项目(模糊匹配)

执行

/usr/bin/env bash << 'RALPH_FORBID_SCRIPT'
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
CONFIG_FILE="$PROJECT_DIR/.claude/ru-config.json"

# Get arguments
ARGS="${ARGUMENTS:-}"

# Ensure config file exists with guidance structure
if [[ ! -f "$CONFIG_FILE" ]]; then
    echo '{"guidance": {"forbidden": [], "encouraged": []}}' > "$CONFIG_FILE"
fi

# Ensure guidance structure exists
if ! jq -e '.guidance' "$CONFIG_FILE" >/dev/null 2>&1; then
    jq '. + {guidance: {forbidden: [], encouraged: []}}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
fi

# Handle commands
case "$ARGS" in
    "--list"|"-l")
        echo "Current forbidden items:"
        jq -r '.guidance.forbidden[]?' "$CONFIG_FILE" | while read -r item; do
            echo "  ✗ $item"
        done
        COUNT=$(jq -r '.guidance.forbidden | length' "$CONFIG_FILE")
        echo ""
        echo "Total: $COUNT items"
        ;;
    "--clear"|"-c")
        jq '.guidance.forbidden = []' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
        echo "Cleared all forbidden items"
        ;;
    --remove\ *)
        PHRASE="${ARGS#--remove }"
        MATCH=$(jq -r --arg phrase "$PHRASE" \
            '.guidance.forbidden[] | select(. | ascii_downcase | contains($phrase | ascii_downcase))' \
            "$CONFIG_FILE" | head -1)
        if [[ -z "$MATCH" ]]; then
            echo "No forbidden item matches: $PHRASE"
            exit 1
        fi
        TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)
        jq --arg match "$MATCH" --arg ts "$TS" \
            '.guidance.forbidden |= map(select(. != $match)) | .guidance.timestamp = $ts' \
            "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
        echo "Removed from forbidden list: $MATCH"
        ;;
    "")
        echo "Usage: /ru:forbid <phrase> | --list | --clear | --remove <phrase>"
        echo ""
        echo "Current forbidden items:"
        jq -r '.guidance.forbidden[]?' "$CONFIG_FILE" | while read -r item; do
            echo "  ✗ $item"
        done
        ;;
    *)
        TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)
        jq --arg item "$ARGS" --arg ts "$TS" \
            '.guidance.forbidden = ((.guidance.forbidden // []) + [$item] | unique) | .guidance.timestamp = $ts' \
            "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
        echo "Added to forbidden list: $ARGS"
        echo ""
        echo "Current forbidden items:"
        jq -r '.guidance.forbidden[]?' "$CONFIG_FILE" | while read -r item; do
            echo "  ✗ $item"
        done
        ;;
esac
RALPH_FORBID_SCRIPT

运行上方的 bash 脚本来管理禁止项。

工作原理

  1. 配置文件:更改会写入 .claude/ru-config.json
  2. 下一次迭代生效:Stop hook 会在每次迭代时重新读取配置
  3. 模板渲染:禁止项会显示在 ## USER GUIDANCE 部分

故障排除

问题原因解决方案
添加时出现 jq 错误配置文件格式错误运行 /ru:settings reset 重新创建
项目未显示拼写错误或大小写不同使用 --list 核对准确文本
禁止项未生效RU 未运行使用 /ru:start 启动
按短语移除失败未找到匹配项使用 --list 查看准确的项目名称
未找到配置文件缺少 .claude 目录使用 mkdir -p .claude 创建

执行后反思

此技能完成后,请在结束前检查:

  1. 命令是否成功? — 如果没有,请修复导致失败的说明或错误表格。
  2. 参数或输出是否发生变化? — 如果底层工具的接口发生变化,请更新用法示例和参数表,使其保持一致。
  3. 是否需要采用变通方法? — 如果你不得不临时变通(使用不同的标志、增加额外步骤),请更新此 SKILL.md,确保下次调用无需采用相同的变通方法。

仅在问题真实且可复现时进行更新,不要基于猜测更新。

评论

支持 Markdown