关于 forbid
forbid 是用于管理 RU 循环机会发现排除项的 skill。它修改项目配置,变更会在下一轮生效。
主要功能
- 01添加禁止项
- 02查看当前条目
- 03移除匹配条目
- 04清空禁止列表
适用场景
- 01排除文档更新等发现项
- 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 脚本来管理禁止项。
工作原理
- 配置文件:更改会写入
.claude/ru-config.json - 下一次迭代生效:Stop hook 会在每次迭代时重新读取配置
- 模板渲染:禁止项会显示在
## USER GUIDANCE部分
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 添加时出现 jq 错误 | 配置文件格式错误 | 运行 /ru:settings reset 重新创建 |
| 项目未显示 | 拼写错误或大小写不同 | 使用 --list 核对准确文本 |
| 禁止项未生效 | RU 未运行 | 使用 /ru:start 启动 |
| 按短语移除失败 | 未找到匹配项 | 使用 --list 查看准确的项目名称 |
| 未找到配置文件 | 缺少 .claude 目录 | 使用 mkdir -p .claude 创建 |
执行后反思
此技能完成后,请在结束前检查:
- 命令是否成功? — 如果没有,请修复导致失败的说明或错误表格。
- 参数或输出是否发生变化? — 如果底层工具的接口发生变化,请更新用法示例和参数表,使其保持一致。
- 是否需要采用变通方法? — 如果你不得不临时变通(使用不同的标志、增加额外步骤),请更新此 SKILL.md,确保下次调用无需采用相同的变通方法。
仅在问题真实且可复现时进行更新,不要基于猜测更新。
评论
支持 Markdown