diff --git a/AGENTS.md b/AGENTS.md index 22a2138..a8f7347 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 diff --git a/README.md b/README.md index b40179d..5a0d778 100644 --- a/README.md +++ b/README.md @@ -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//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 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ | diff --git a/install.sh b/install.sh index c6ae014..3facfb9 100755 --- a/install.sh +++ b/install.sh @@ -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 diff --git a/tests/test_install.sh b/tests/test_install.sh index f7015d5..72b3425 100755 --- a/tests/test_install.sh +++ b/tests/test_install.sh @@ -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"'