Skip to content

feat(profile): add Claude profile adapter - #480

Open
christso wants to merge 2 commits into
feat/460-codex-profilefrom
feat/460-claude-profile
Open

feat(profile): add Claude profile adapter#480
christso wants to merge 2 commits into
feat/460-codex-profilefrom
feat/460-claude-profile

Conversation

@christso

Copy link
Copy Markdown
Contributor

Summary

  • materialize Claude Code global profiles under an isolated absolute CLAUDE_CONFIG_DIR with an isolated plugin cache and generated launcher
  • serialize strict supported settings plus additive MCP configuration while preserving normal project discovery and runtime ${ENV_VAR} resolution
  • add authoritative native marketplace/plugin install, inspect, update, uninstall, and ownership-safe cleanup for Claude Code 2.1.268+
  • preserve the existing ungated ordinary project/user Claude native lifecycle contract outside global profiles

Stack

Depends on #479 (feat/460-codex-profile).

Related: #460

Validation

  • bun test tests/unit — 1548 passed, 2 skipped
  • bun run test:e2e — 142 passed, 4 skipped
  • bun run typecheck
  • bun run lint
  • bun run build
  • cd docs && bun run build
  • git diff --check b4ec93d
  • final focused code review — no remaining P0-P2 findings

Real-runtime dogfood

Used Claude Code 2.1.270 with an isolated disposable home, two disposable projects, a local Claude marketplace/native plugin, a separate file plugin, and a disposable stdio MCP server.

  1. Built the CLI with bun run build and installed Claude Code 2.1.270 into a disposable runtime directory.
  2. Ran node dist/index.js profile install claude-dogfood --dry-run; verified the profile root and launcher were absent and ambient .claude/settings.json was unchanged.
  3. Ran node dist/index.js profile install claude-dogfood --yes; verified the selected root, generated launcher, strict settings.json, additive allagents.mcp.json, file skill, native marketplace, and native plugin.
  4. Ran claude plugin list --json with the selected profile environment; observed native-tools@allagents-dogfood enabled at user scope, version 1.0.0.
  5. Ran the generated launcher from project A and project B against a disposable local Anthropic-compatible streaming endpoint. The real Claude binary exited 0 and returned RUNTIME_OK in both directories. Captured runtime requests contained only the current project's unique CLAUDE.md marker, contained both the file-installed and native profile skill names, and exposed the additive MCP tool. The MCP process confirmed ${DOGFOOD_TOKEN} was resolved only at runtime.
  6. Ran claude doctor in both projects with the selected root; Claude reported 2.1.270 and the declared stable update channel.
  7. Changed the marketplace plugin from 1.0.0 to 1.0.1 and changed profile settings, then ran node <repo>/dist/index.js update --profile claude-dogfood; observed both settings and native plugin updates. A subsequent profile status reported every resource unchanged, and native inventory reported 1.0.1.
  8. Compared project A/B tree hashes before and after targeted update; both were unchanged.
  9. Ran node dist/index.js profile remove claude-dogfood --yes; observed native plugin uninstall, marketplace removal, managed file removal, recursive selected-root removal, and launcher removal.
  10. Compared hashes after removal; both projects, both plugin source fixtures, and ambient Claude state were unchanged. Removed every disposable fixture and runtime directory.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 14, 2026

Copy link
Copy Markdown

Deploying allagents with  Cloudflare Pages  Cloudflare Pages

Latest commit: b56d89e
Status: ✅  Deploy successful!
Preview URL: https://d51170c6.allagents.pages.dev
Branch Preview URL: https://feat-460-claude-profile.allagents.pages.dev

View logs

@christso
christso force-pushed the feat/460-claude-profile branch from 0a3658f to b56d89e Compare September 14, 2026 20:43
@christso
christso force-pushed the feat/460-codex-profile branch from ae90144 to bea213e Compare September 14, 2026 20:43
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