Skip to content

Installer: per-project MCP setup, Playwright MCP, Codex fixes - #195

Open
Fedoseew wants to merge 9 commits into
v3from
feature/191-installer-codex-mcp
Open

Fedoseew wants to merge 9 commits into
v3from
feature/191-installer-codex-mcp

Conversation

@Fedoseew

@Fedoseew Fedoseew commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Reworks the installers (install.sh, install.ps1) and the Studio metadata.

Closes #191, closes #192, closes #193, closes #194, closes #20.

Test plan

  • bash tests/test_install_sh.sh (macOS /bin/bash 3.2)
  • pwsh tests/test_install_ps1.ps1 (pwsh 7.6)
  • python3 tests/check_skill_frontmatter.py
  • Generated configs checked with Codex 0.142.5 and Claude Code 2.1.221
  • CI: Windows / pwsh
  • Manual run through Studio on Windows (Windows PowerShell 5.1)

- Fix the Codex setup: strict-YAML skill frontmatter (+ CI lint), a missing
  agent CLI no longer aborts MCP steps, JetBrains endpoint probe with an
  mcp-remote bridge for IntelliJ before 2026.1, skill links through
  symlinked dirs, guidelines block on top of AGENTS.md (#191)
- Register MCP servers per project (--scope local|global) by merging the
  agents' config files; Context7 always at user level; keep Codex user and
  project tables on one transport (#192)
- Replace the playwright-cli skill with the Playwright MCP server (#193)
- Junie follows the shared conventions: .agents/skills and AGENTS.md (#194)
- Add Claude Desktop as an MCP target (#20)
gawk counts the UTF-8 BOM as one character, so substr($0, 1, 3) never
matched and a BOM-prefixed config.toml got a duplicate table.
A cold python3 start on the macOS CI runner took longer than the 5 s
the SSE fallback test allowed.
BSD awk compares strings by collation, which ignores the BOM, so
line == probe was true and the BOM was dropped. Detect it with index()
and remember it in a flag instead of comparing the lines.
HTTPServer's bind resolves the host name (getfqdn), which kept the
server from starting within 30 s on the macOS CI runner.
Preflight Codex configuration layers before writing, preserve legacy Playwright skills until global migration succeeds, and protect Context7 keys before publishing configuration. Reject non-file destinations and cover the regressions in both installer suites.
Claude Desktop is no longer a separate agent. Whenever claude is selected
in an MCP step, its user-level claude_desktop_config.json is updated too if
the Claude Desktop config folder exists, and left alone otherwise. The
restart reminder appears only when the file changed.
- Remove old .junie/skills links only when an agent that reads
  .agents/skills was selected, and never from a .junie/skills that is
  the same dir as .agents/skills or .claude/skills.
- Link only the skills being installed, so --backup-existing-files
  backups in the store are no longer linked, and drop such links left
  by earlier runs.
- Skip an agent skills dir that is the store itself, and let write_dest
  replace a store entry that is a dangling or looping symlink.
- Check the other and inherited Codex layers read-only: a triple-quoted
  string there blocks the step only when that file must be rewritten.
- Skip layer alignment when the project and user Codex configs are the
  same file (run from $HOME).
- Do not replace a JetBrains table with a guessed transport when
  IntelliJ IDEA is not reachable; note that other projects may need a
  re-run when the user table is aligned.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant