Skip to content

Replace developer-cli MCP server with per-command Claude Code skills#875

Draft
tjementum wants to merge 27 commits intomainfrom
pp-1161-replace-developer-cli-mcp-server-with-skills
Draft

Replace developer-cli MCP server with per-command Claude Code skills#875
tjementum wants to merge 27 commits intomainfrom
pp-1161-replace-developer-cli-mcp-server-with-skills

Conversation

@tjementum
Copy link
Copy Markdown
Member

@tjementum tjementum commented Apr 28, 2026

Summary & Motivation

The custom developer-cli MCP server wrapped the same CLI commands the developer CLI already exposes (build, test, format, lint, run, restart, stop, e2e, send-interrupt-signal). It was the source of recurring bugs - hardcoded ports, Aspire startup races returning misleading success messages, file locking on Windows, worktree-binding gotchas tied to the MCP startup directory - and a recent Claude Code change broke its progress notifications, removing its main remaining benefit. The CLI fallback (dotnet run --project developer-cli -- <command>) already worked correctly and is naturally worktree-aware.

This change drops the MCP server entirely and replaces it with per-command Claude Code skills. Each skill documents the exact CLI invocation, flags, and timing notes so agents pick the right command via skill matching instead of through an MCP tool wrapper.

  • Add seven per-command skills (build, test, format, lint, e2e, aspire-restart, team-interrupt) under .claude/skills/
  • Add a claude-command send-interrupt-signal --team X --agent Y CLI subcommand that writes the agent signal file at ~/.claude/teams/{team}/signals/{agent}.signal and prints the interrupt ID on stdout for the caller to prefix to its follow-up SendMessage
  • Delete developer-cli/Commands/McpCommand.cs (~890 lines), drop the ModelContextProtocol package references from developer-cli/DeveloperCli.csproj, remove the developer-cli entry from .mcp.json, and drop "developer-cli" from enabledMcpjsonServers in .claude/settings.json
  • Update twelve agent docs, AGENTS.md, and the pre-tool-use-bash.sh hook error messages to reference the skills and direct CLI invocation form
  • Delete the now-redundant .claude/hooks/send-interrupt.sh bash equivalent of the new CLI subcommand
  • Make port allocation fully deterministic: PortAllocation.LoadFrom auto-picks the first free base port from [9100, 9200, ..., 9900] for worktrees on first load (root checkout keeps 9000), and the basePort positional argument is removed from pp run and pp restart since .workspace/port.txt is now the single source of truth
  • Clarify the check-interrupt.sh hook reason so an agent that has already processed the matching message ID continues instead of stopping

Checklist

  • I have added tests, or done manual regression tests
  • I have updated the documentation, if necessary

@tjementum tjementum requested a review from a team as a code owner April 28, 2026 14:34
@tjementum tjementum added the Enhancement New feature or request label Apr 28, 2026
@tjementum tjementum self-assigned this Apr 28, 2026
@linear
Copy link
Copy Markdown

linear Bot commented Apr 28, 2026

@tjementum tjementum moved this to 🏗 In Progress in Kanban board Apr 28, 2026
@tjementum tjementum marked this pull request as draft April 28, 2026 14:49
@tjementum tjementum force-pushed the pp-1161-replace-developer-cli-mcp-server-with-skills branch from e0f6f0f to 224f330 Compare April 28, 2026 15:41
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request

Projects

Status: 🏗 In Progress

Development

Successfully merging this pull request may close these issues.

1 participant