Skip to content

feat(stack): selective image rebuild, Claude plugin tip, demo agent model pin#464

Merged
OisinKyne merged 1 commit into
mainfrom
feat/dev-experience-image-rebuild-and-plugin-tip
May 11, 2026
Merged

feat(stack): selective image rebuild, Claude plugin tip, demo agent model pin#464
OisinKyne merged 1 commit into
mainfrom
feat/dev-experience-image-rebuild-and-plugin-tip

Conversation

@bussyjd
Copy link
Copy Markdown
Collaborator

@bussyjd bussyjd commented May 11, 2026

Summary

Three dev-experience improvements that were on the integration branch behind #452 but did not survive the squash merges.

S7 — Selective image rebuild (internal/stack/stack.go, stack_test.go).
OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES now accepts a comma-separated list of image short names in addition to the existing true/all and false/0/unset modes. Example:

```bash
OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES=x402-verifier obol stack up
OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES=serviceoffer-controller,x402-buyer obol stack up
```

Saves ~10 min per iteration when only one image changed. The full set is x402-verifier, serviceoffer-controller, x402-buyer, demo-server, obol-stack-public-storefront (with public-storefront accepted as an alias). Two new unit tests cover both selective rebuild and the alias.

S8 — Claude Code plugin install tip (internal/stack/stack.go).
After obol stack up, if the claude CLI is present but the ObolNetwork/skills marketplace or its plugin is not installed, surface a one-line install hint:

```
Tip: let your Claude Code instance manage your Obol Stack for you.
Add the Obol skills marketplace, then install the plugin:
claude plugin marketplace add ObolNetwork/skills
/plugin install obol@obol
```

Reads ~/.claude/plugins/{known_marketplaces,installed_plugins}.json best-effort and silently no-ops on any error so a malformed Claude config can never block stack up. If the marketplace is already registered, the message switches to just the /plugin install … hint. Fully silent for users without the claude CLI.

S9 — Auto-pin a model on the agent-backed demo (cmd/obol/sell_agent.go).
obol sell agent --demo now resolves the first non-paid/* model from the cluster's LiteLLM config (same source obol model list reads) and writes it into the rendered Agent's spec.model so the controller does not park at ModelUnpinned. Returns a clear "no usable LiteLLM model configured; run obol model setup …" error if the cluster has nothing usable. Also removes a stale "depend on step 2d" caveat that no longer applies now that the controller's in-cluster Hermes provisioning has landed.

Docs updated in CLAUDE.md, .agents/skills/obol-stack-dev/SKILL.md, and .agents/skills/obol-stack-dev/references/dev-environment.md. The Release descriptions / Release Notes blocks added in #456 are preserved untouched.

Test plan

  • go build ./...
  • go test ./internal/stack/... — including the two new selective-rebuild tests
  • On a host with no claude CLI: confirm obol stack up finishes without printing the plugin tip
  • On a host with claude installed but no Obol marketplace: confirm the marketplace + plugin install hint appears
  • On a host with the plugin already installed: confirm the tip is silent
  • OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES=x402-verifier obol stack up rebuilds only x402-verifier (verify in the build log)
  • obol sell agent --demo on a cluster with at least one non-paid/* model: confirm the Agent CR is created with spec.model set

…odel pin

Pulls forward three dev-experience improvements from the integration
branch behind #452 that did not survive the squash merges.

- Selective image rebuild via OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES.
  The variable now accepts a comma-separated list of image short names
  (e.g. `x402-verifier,serviceoffer-controller`) in addition to the
  existing `true`/`all` and `false`/`0`/unset behaviours. The full
  image set is x402-verifier, serviceoffer-controller, x402-buyer,
  demo-server, and obol-stack-public-storefront (with `public-storefront`
  accepted as an alias). Saves a full ~10-minute rebuild when only one
  image changed.

- Claude Code plugin install tip on stack up. After `obol stack up`,
  if the `claude` CLI is present but the ObolNetwork/skills marketplace
  or its plugin isn't installed, surface a one-line install hint.
  Reads ~/.claude/plugins/{known_marketplaces,installed_plugins}.json
  best-effort; silently no-ops on any error so a malformed Claude
  config can never block stack up.

- Auto-pin a model on the agent-backed demo. `obol sell agent --demo`
  resolves the first non-`paid/*` model from the cluster's LiteLLM
  config (the same source `obol model list` reads) and writes it into
  the rendered Agent's spec.model so the controller doesn't park at
  ModelUnpinned. Returns a clear "configure a model first" error if
  the cluster has nothing usable, and removes a stale "depend on step
  2d" caveat that no longer applies.

Docs updated in CLAUDE.md, .agents/skills/obol-stack-dev/SKILL.md, and
.agents/skills/obol-stack-dev/references/dev-environment.md.
@OisinKyne OisinKyne force-pushed the feat/dev-experience-image-rebuild-and-plugin-tip branch from fd7d865 to 205639d Compare May 11, 2026 12:09
@OisinKyne OisinKyne enabled auto-merge (rebase) May 11, 2026 12:09
@OisinKyne OisinKyne merged commit 038f8c7 into main May 11, 2026
5 checks passed
@OisinKyne OisinKyne deleted the feat/dev-experience-image-rebuild-and-plugin-tip branch May 11, 2026 15:38
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.

2 participants