fix(opencode): убрана лишняя ссылка ~/.config/opencode/skills
- Зачем: opencode сам читает ~/.agents/skills и ~/.claude/skills. Ссылка загружала тот же набор третий раз, и opencode выдавал сотни предупреждений о повторяющихся именах скиллов. - Что: install.sh больше не создаёт ссылку и удаляет прежнюю, если она указывает на общие скиллы. README и AGENTS.md обновлены. - Проверка: tests/test_install.sh проходит. После удаления ссылки opencode debug skill показывает тот же набор скиллов, теперь из ~/.agents/skills. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d65403efb5
commit
ce9270623d
4 files changed
+16
-6
No files matched your search
@@ -28,7 +28,7 @@ This repository contains personal dotfiles and configurations for a highly produ
|
||||
* **Gemini CLI:** Configured via `gemini/.gemini/`.
|
||||
* **Policies:** `readonly-commands.toml` allows critical commands like `git status`, `git diff`, and `git add` to run without confirmation.
|
||||
* **Opencode:** MCP-based assistant configuration (`opencode.json`) with support for documentation, search, and web-reading.
|
||||
* **Skill Bridges:** Symlinks are used to share skills across Claude and Opencode.
|
||||
* **Skill Bridges:** Claude gets skills via the `~/.claude/skills` symlink; Opencode reads `~/.agents/skills` natively, no bridge needed.
|
||||
|
||||
## 🚀 Usage & Maintenance
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
|
||||
| `vscode` | `server-env-setup` для VS Code Server в WSL: секреты + авто-прокси |
|
||||
| `chatgpt` | Отдельный ярлык `ChatGPT Proxy` с запретом прямого запуска при ошибке |
|
||||
|
||||
`install.sh` дополнительно настраивает opencode (симлинки, MCP-конфиг), claude (симлинк `~/.claude/skills` на общие скиллы) и подключает bash_custom.
|
||||
`install.sh` дополнительно настраивает opencode (MCP-конфиг), claude (симлинк `~/.claude/skills` на общие скиллы) и подключает bash_custom.
|
||||
|
||||
### Windows (chezmoi)
|
||||
|
||||
@@ -77,7 +77,7 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
|
||||
|------------|-------------------|
|
||||
| **Agents** | Каноничное хранилище скиллов: `~/.agents/skills/<name>/SKILL.md` |
|
||||
| **Claude** | `~/.claude/skills` -> симлинк на agents; настройки (`settings.json`, `settings.local.json`) - управляются Claude Code на машине; в `settings.json` один раз добавляется блок `env` с прокси |
|
||||
| **[Opencode](https://github.com/anomalyco/opencode)** | MCP-серверы (context7, web-reader, playwright и др.), `~/.config/opencode/skills` -> симлинк на agents |
|
||||
| **[Opencode](https://github.com/anomalyco/opencode)** | MCP-серверы (context7, web-reader, playwright и др.); скиллы opencode сам читает из `~/.agents/skills` |
|
||||
| **Codex** | `~/.codex` - обычный каталог, управляется Codex; скиллы - из общего хранилища agents; `~/.codex/.env` - прокси по умолчанию, если файла ещё нет |
|
||||
| **Gemini** | Политики для CLI: pre-approved readonly команды |
|
||||
|
||||
|
||||
+10
-2
@@ -452,8 +452,16 @@ if [ -L "$OPENCODE_DIR/agents" ]; then
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -d "$SKILLS_SRC" ]; then
|
||||
ensure_symlink "$SKILLS_SRC" "$OPENCODE_DIR/skills"
|
||||
# Скиллы opencode сам берёт из ~/.agents/skills и ~/.claude/skills. Прежняя
|
||||
# ссылка ~/.config/opencode/skills загружала тот же набор ещё раз, и opencode
|
||||
# сыпал предупреждениями о дублях. Чистим её.
|
||||
if [ -L "$OPENCODE_DIR/skills" ]; then
|
||||
case "$(readlink "$OPENCODE_DIR/skills" 2>/dev/null || true)" in
|
||||
"$SKILLS_SRC"*)
|
||||
rm "$OPENCODE_DIR/skills"
|
||||
info "Удалён лишний симлинк ~/.config/opencode/skills"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -f "$OPENCODE_JSON_SRC" ]; then
|
||||
|
||||
@@ -575,12 +575,14 @@ test_opencode_runtime_dir_is_preserved_and_config_is_managed() {
|
||||
EOF
|
||||
# Артефакт прежнего установщика: симлинк на удалённые профили агентов
|
||||
ln -s "$repo_root/opencode/.config/opencode/agents" "$home_dir/.config/opencode/agents"
|
||||
# Лишняя ссылка на общие скиллы: opencode и так читает ~/.agents/skills
|
||||
ln -s "$repo_root/agents/.agents/skills" "$home_dir/.config/opencode/skills"
|
||||
|
||||
run_install "$repo_root" "$home_dir" env WSL_DISTRO_NAME= INSTALL_INTERACTIVE_MODE=never >/tmp/test-install.out
|
||||
|
||||
[ -f "$home_dir/.config/opencode/package.json" ] || fail "Expected opencode runtime files to be preserved"
|
||||
assert_not_exists "$home_dir/.config/opencode/agents"
|
||||
[ -L "$home_dir/.config/opencode/skills" ] || fail "Expected ~/.config/opencode/skills symlink"
|
||||
assert_not_exists "$home_dir/.config/opencode/skills"
|
||||
assert_file_contains "$home_dir/.config/opencode/opencode.json" '"$schema": "https://opencode.ai/config.json"'
|
||||
assert_file_contains "$home_dir/.config/opencode/permission-reviewer.jsonc" '"confidenceThreshold"'
|
||||
|
||||
|
||||
Reference in new issue
Block a user