Skip to content

feature/Make-target-local-workshop · L-260926-2b15c9 - #90

Merged
lchoquel merged 11 commits into
devfrom
feature/Make-target-local-workshop
Sep 26, 2026
Merged

lchoquel merged 11 commits into
devfrom
feature/Make-target-local-workshop

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

make claude-local-mcp and make codex-local-mcp start Claude Code or Codex on this checkout's plugin with the workshop from a local pipelex-mcp checkout (MCP=, default ../pipelex-mcp, built with its make build-local first) or a published version (MCP_VERSION=), without changing a tracked file: Claude loads a copy rendered into the ignored .local-mcp/<workshop>/, and Codex gets -c overrides for its mcp_servers.pipelex entry. The targets read their variables from make's command line alone and hand the session an environment stripped of make's state, and /pipelex-mcp-source keeps its status report while its switching arms now point at the targets.

Closes L-260926-2b15c9

🤖 Generated with Claude Code

https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS


Summary by cubic

Adds make claude-local-mcp and make codex-local-mcp, one-command ways to start Claude Code or Codex with a pipelex-mcp workshop other than the shipped one — a local checkout (MCP=<path>, built first) or a pinned published version (MCP_VERSION=<version>) — without changing any tracked file. Claude Code loads a rendered copy of this checkout's skills from the ignored .local-mcp/; Codex keeps its installed skills and gets -c overrides for its pipelex server entry.

Details

  • /pipelex-mcp-source no longer switches workshops by editing targets/defaults.toml; it reports which version each deployment serves and names the target to run.
  • The targets read MCP, MCP_VERSION, WORKDIR, and ARGS from make's command line and strip make's state from the session, so values exported for other tools or nested builds don't leak in.
  • Hook launcher args are now shell-quoted, so paths with $, backticks, quotes, or backslashes resolve correctly.

Written for commit 0e3d3b9. Summary will update on new commits.

Review in cubic

lchoquel and others added 11 commits September 26, 2026 17:45
…shop

`make claude-local-mcp` renders the Claude target, with the build's own
renderer and the workshop's command and args laid over [vars.mcp_server],
into the ignored .local-mcp/pipelex/ and starts `claude --plugin-dir` on it.
`make codex-local-mcp` starts Codex with -c overrides of its pipelex entry,
env_vars included, since such an entry replaces the plugin's whole. MCP
names a pipelex-mcp checkout, built first with its `make build-local`;
MCP_VERSION a published version, resolved by npm before anything starts.
Neither touches a tracked file.

The /pipelex-mcp-source skill keeps its status report and names the
targets instead of editing targets/defaults.toml, and the install page's
one-invocation Codex override now forwards the key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
…nder a lock

A session reads the copy's launcher again at every respawn, so the one shared
.local-mcp/pipelex/ let a later start with another workshop switch the workshop
of a session already running. Two starts at once also shared one staging
directory, and could fail or swap in a copy missing files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
The Makefile's build line ran before the script, so a wrong MCP met make's own
error and the script's refusal naming MCP could never be reached. The script now
checks the checkout, runs its `make build-local` with the make target's
variables removed from the environment, then looks for the workshop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
launch-pipelex-mcp.sh wrote each argument in bare double quotes, so a checkout
path holding `$`, a backtick, `"` or `\` was expanded or broke the word, and
under `set -u` a `$name` aborted the launcher. A renderer filter escapes the four;
every shipped output renders as it did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
… one

The development page told readers never to start a target from inside a
session, while the repository skill runs a headless prompt from one; and its
`ARGS='-p "…"'` selects a configuration profile on Codex, whose headless form
is `exec`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
os.execv handed the session MAKEFLAGS, MAKELEVEL and the target's MCP,
MCP_VERSION, WORKDIR and ARGS, so every make the agent ran took them as its
own command line: a project's ARGS was overridden, and a nested
`make codex-local-mcp MCP=<checkout>` started the outer run's MCP_VERSION.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
The recipe spliced both into double quotes, so make expanded a `$` in the
path, the shell ran a backtick, and a `"` broke the recipe, before the
launcher's own escaping could matter. Each now goes as one single-quoted
word of the variable's unexpanded value.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
MCP, MCP_VERSION, WORKDIR and ARGS are generic names. Read with `?=`, a
WORKDIR or ARGS the shell exported for another tool became the session's
directory or the harness's arguments, and the environment filter then removed
it from the session. The Makefile now takes each from the command line,
unexpanded, and never assigns it; the script removes one only when MAKEFLAGS
names it. ARGS is no longer expanded by make, so a `$` in a prompt survives.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014AcpM2qUzbWMenP62iSBoS
@lchoquel
lchoquel merged commit ec5309f into dev Sep 26, 2026
6 checks passed
@lchoquel
lchoquel deleted the feature/Make-target-local-workshop branch September 26, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant