feat: adopt in one prompt and in new projects; per-project plugin; /upgrade offers modules - #15
Merged
Merged
Conversation
/upgrade updated only installed modules and never offered the others, so a project adopted before modules existed would never be offered the dispatcher hub, the ClickUp integration, or the GitHub harness. It now lists the missing modules, recommends from the repository's facts (the same rules as /adopt), and installs the chosen ones in the same upgrade PR with their customize steps. Choosing parallel-agents moves the upgrade into a worktree of its own, so the main checkout starts as a clean hub. Plugin 0.2.4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Show the --scope project (committed, offered to the team) and --scope local (only you) installs next to the default user-wide one, and why a dispatcher-hub project should use project scope: committed settings reach every task's worktree, a local install exists only where it ran. /adopt keeps the entries a project-scope install already wrote. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude Code's plugin commands default to user scope, which turns the plugin on in every project. Every install instruction now passes --scope project from the project's folder (or --scope local to try it alone); /adopt commits and checks the setting, /upgrade offers to add it when a project lacks it, and a static check rejects an install command without a scope. The MCP guide now uses the project's .mcp.json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The plugin README said only project scope reaches a hub's worktrees. Since Claude Code 2.1.211, worktrees read the main checkout's settings.local.json on macOS and Linux (not on Windows); project scope stays the default because it reaches every platform and teammate. Adds the desktop Code tab steps (+ → Plugins → Add plugin, scope "this project") and where plugins don't load (WSL, cloud sessions). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mauricios
marked this pull request as ready for review
October 2, 2026 03:13
The install was two shell commands, and the desktop app can't add a marketplace from its UI. Both READMEs now open with a prompt to paste into a session on the project — terminal, desktop, or IDE — that runs the commands with --scope project, skips a plugin the project already declares, stops in a hub's main checkout, shows the settings diff, and reports a leftover user-scope copy without removing it. A static check keeps the two copies identical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A session told "Adopt the Agentic Development Framework in this project: <URL>" had nothing to follow. ADOPT.md, pointed to from the top of the README, is the procedure for agents: confirm, check the project (new, adopted, or a hub's main checkout), install the plugin with --scope project, then run /adopt in a new session or by following its skill file in this one. /adopt gains a new-project mode: git init and a first commit, the planned stack asked for and marked as planned, the stack recorded as ADR-0001 (proposed), delivery without a remote; /init-project replaces the planned entries once code lands. /adopt and /upgrade find the marketplace folder through `claude plugin marketplace list --json`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new adopt suite for run-session-evals.sh: a new repository with no commits; one case gives only the framework's address, the other runs /adopt from this checkout's plugin (--plugin-dir) and answers its questions in a follow-up turn. The runner gains a suite's own project.sh, inspect.sh for the end state, follow-up turns, --source, and, for adopt, bypassPermissions on throwaway copies with deny rules for claude commands, git push, and edits under the home folder. The runs found two things in /adopt, both fixed: "one first commit" was read as two commits on main, and with no remote it offered to draft the PR body instead of showing it. Report: evals/dynamic/reports/2026-10-01-adopt.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mauricios
added a commit
that referenced
this pull request
Oct 2, 2026
…d adoption per project (#16) Renames Unreleased to the 7383422 release (aplyca-framework 0.2.4), covering #13, #14, and #15, and opens it with the order to upgrade in from 3eb7777: the plugin into the project first, then /upgrade, then the stamp. README and UPGRADING point at the release. The adopt eval report adds the run from the published GitHub address. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed and why
Adopted projects get the framework's workflow in two ways:
/adoptcopies it, and/upgradekeeps it current.parallel-agents), ClickUp, the GitHub harness, and local git hooks./upgradeupdated only the modules a project already had. It never offered the rest, so a project adopted before modules existed would never be offered them. The marketing-site pilot is exactly that case: baseline4c6d87e, nomodules:in its stamp./upgradenow:/adopt:parallel-agentswhenever several agent sessions may work at once;clickupwhen requirements arrive as ClickUp tasks;githubon GitHub;git-hooksfor local gates.parallel-agentsis chosen, created with plain git since the module's script isn't there yet. Otherwise the protect-hub hook would start stopping edits in the main checkout halfway through. This way the main checkout starts as a clean hub.Modules are offered, never imposed. Plugin 0.2.4.
Docs: the plugin README, the root README's update steps, and a new
docs/UPGRADING.mdscenario, "We adopted before the modules existed".The plugin installs per project, never for the whole machine
Claude Code's
claude plugin marketplace addandclaude plugin installdefault touserscope, which turns the plugin on in every project on the machine. The docs used that default. Now:Every install instruction passes
--scope projectfrom the project's folder (README, plugin README,docs/SETUP.md). The setting lands in the committed.claude/settings.json: the team is offered the plugin, and every worktree of a hub gets it.--scope localstays available to try it alone./adoptcommits that setting with the adoption, adds it (when asked) if a user- or local-scope install left it out, and checks it in Step 6./upgradeoffers to add the setting when a project doesn't have it — the case for projects adopted with the old instructions — and the PR body gives the commands that remove the user-scope copy.A static check (
check_install_scope) fails on any install command without--scope projector--scope local.skeleton/docs/MCP-INTEGRATION.mdpointed MCP servers at.claude/mcp.jsonor a global~/.claude/mcp.json; it now uses the project's.mcp.json.An install prompt opens both READMEs, to paste into any Claude Code session on the project: terminal, desktop app, or IDE. It:
--scope projectcommands;.claude/settings.jsondiff without committing it, since/adoptor/upgradecarries it;A static check (
check_install_prompt) keeps the two copies identical. The commands stay as the manual alternative.The desktop app: the plugin README gets a § In the desktop app. Add the marketplace from a terminal, then in the Code tab click + → Plugins → Add plugin and choose "this project". It also notes that plugins don't load in WSL sessions, and that cloud sessions don't install plugins declared in the repository's settings.
Correction: the hub note said only project scope reaches worktrees. Since Claude Code 2.1.211, worktrees read the main checkout's
.claude/settings.local.jsonon macOS and Linux, though not on Windows. Project scope stays the default because it reaches every platform and every teammate.Claude Code still keeps the downloaded plugin files in its cache under the home folder; the scope decides where the plugin is turned on.
Adopt in one prompt — and in a new project
A session told "Adopt the Agentic Development Framework in this project: " had nothing to follow. It could copy the skeleton by hand and skip the fact-checking, the version stamp, and the pull request.
ADOPT.mdat the repository root is the procedure for agents. The top of the README points to it, with the raw URL. The procedure:/upgrade), or a hub's main checkout (then stop).--scope project./adopt, either in a new session or in the same one by following the skill's file from the marketplace folder, so no restart is needed./adopthas a new-project mode for a repository with no code yet:git initand a first commit, the one exception to "never commit to the default branch";<!-- planned: not in the repository yet -->;proposed;/init-projectreplaces the planned entries once the first code lands; its description and body now say so./adoptand/upgradenow useclaude plugin marketplace list --json(installLocation) instead of assuming~/.claude/plugins/marketplaces/<name>/.docs/SETUP.mdhas a short new-project paragraph. The repo'sCLAUDE.mdlistsADOPT.md.ADOPT.md's project scope, and the README pointer.check_install_scopenow also scansADOPT.md.Session evals for adoption
There's a new
adoptsuite forrun-session-evals.sh, built on a new repository with no commits. Report:evals/dynamic/reports/2026-10-01-adopt.md, about $2.10 over two runs.one-line-prompt: only the framework's address, with no plugin and noclaudecommands allowed. Every session that opened the README followed its pointer toADOPT.md, laid out the--scope projectplan, noticed the project is new, and asked before changing anything. That held for Sonnet in both runs and Opus in run 1. In run 2, Opus, given a local folder, opened the adopt skill directly and skippedADOPT.md's install step, though it stayed safe. The URL path, where the README is the only way in, can only run once this merges.new-project:/adoptloaded from this checkout with--plugin-dir, with its questions answered in a follow-up turn.main; the adoption stamped on its own branch; planned entries marked; quick-reference commands left asTODO(team); ADR-0001proposed, with the agent's alternatives labeled as its own; verification reporting "no code yet" as a GAP./adoptmade two commits onmain. The wording now says exactly one, after agit statuscheck for secrets./adoptoffered to draft the PR body. It now shows the body, with the steps that follow.bypassPermissionsmode on throwaway copies of the project and of the framework. Deny rules, which hold in every mode, coverclaudecommands,git push, and edits under the home folder.project.sh,inspect.shfor the end state,## Follow-upturns, and--source.Upgrade impact
/upgradeand/adopt: framework-internal; update the plugin.docs/MCP-INTEGRATION.md: merge (one line)..claude/skills/init-project/SKILL.md: overwrite./upgradeadd the project setting; once every project that uses the plugin has it, runclaude plugin uninstall aplyca-framework@aplyca --scope userandclaude plugin marketplace remove aplyca --scope user.How to verify
./evals/run-evals.sh. The practices check covers the module offer;check_install_scopecovers the install commands (it flags both lines of the previous README);check_install_promptfails when the two prompt copies differ.plugins/aplyca-framework/skills/upgrade/SKILL.mdSteps 2–6,/adopt§ A new project and Step 5, andADOPT.md.Verified / not verified
ADOPT.md.check_install_scopefails on the previous README's install commands;check_install_promptfails when one copy is edited./upgraderun. The marketing-site pilot is that test.ADOPT.mdisn't onmainyet. Re-run--suite adopt --cases one-line-promptafter the merge.--scopeoptions come from the CLI's help and the docs; I didn't run one, because it would change this machine's plugin configuration. The pilot is the first real install.🤖 Generated with Claude Code