feat!: one plugin, aplyca-adf, with a packaged install, and semantic versioning (decisions 0016, 0017) - #20
Merged
Conversation
…ugin A pilot's upgrade touched 82 files, mostly generic machinery no project edits, and its team asked to use the framework like a package. Proposes an opt-in packaged mode for Claude Code-only teams: the core skills, agents, workflows, and hook scripts ship as the plugin aplyca-adf, generated from skeleton/ and pinned per project to a release tag; the project keeps committing its own layer and every module. Records a spike's findings: prefixed names, bare names resolving for the model, plugin hooks reading the project's config, branch and tag pins, the per-user marketplace entry, trust, and cloud sessions. Status: proposed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…on 0016) Accepts 0016, amending 0009. A team that works in Claude Code only can take the skills, agents, workflows, and hook scripts from a plugin pinned to a release tag, and commit only its own layer and its modules — about 40 fewer files. The committed install stays the default. - plugins/aplyca-adf, generated from skeleton/.claude by scripts/build-aplyca-adf.sh: 20 skills, 8 agents as flat files, 4 workflows, the hook scripts and hooks.json. Names inside are the plugin's (/aplyca-adf:triage, @aplyca-adf:code-reviewer); no pinned version, so each release tag loads as its own. Listed in the marketplace. - _lib.sh reads config.sh next to the scripts or, packaged, the project's .claude/hooks/config.sh through CLAUDE_PROJECT_DIR. - /adopt asks committed or packaged; /upgrade bumps a packaged project's pin from release to release, skips the plugin's paths, and offers the switch either way. - SETUP.md § Packaged install (settings, the names note for CLAUDE.md, the stamp, CI), UPGRADING.md, both READMEs, CONTRIBUTING (release tags, the build script), CLAUDE.md. - Checks: the plugin matches the skeleton, the marketplace lists both plugins, aplyca-adf pins no version; hook tests for the packaged config lookup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… install Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…6, 0017)
The installer aplyca-framework is renamed aplyca-adf and takes in the
packaged machinery: one plugin for both installs. Its skills are
/aplyca-adf:adopt, :upgrade, :cost-report, and in a packaged project
the framework's skills, agents, workflows, and hooks.
- In a committed project the plugin's copies step aside: its hooks
stand down unless CLAUDE.md's stamp says install: packaged (_lib.sh,
enforced in code), and its skills and agents open with a step that
hands over to the committed files. Every project pins its release
("ref": "vX.Y.Z"), so the plugin's copies and the committed files
are always one release.
- Semantic versioning from v1.0.0 (0017): MAJOR when a team has to act,
MINOR additive or opt-in, PATCH fixes. vX.Y.Z tags, the plugin's
version equal to the newest release (checked), and the stamp keeps
the commit for the diff. Upgrades move from release to release.
- The build script rebuilds only the paths it lists in .generated; the
installer skills, plugin.json, and README are hand-written.
- /aplyca-adf:upgrade migrates aplyca-framework@aplyca to the new name.
- Tests: the plugin's hooks act only in a packaged project and do
nothing in one that hasn't adopted the framework.
BREAKING CHANGE: the plugin aplyca-framework is now aplyca-adf.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Switching between the committed and packaged installs changes how the team works — the names they type, which tools and sessions get the skills — so the switch now lands with a process decision record in the same pull request: the next docs/process/NNNN from the template, its index row, the deciders, and PDR-0001 marked as amended. Also fixes the packaged → committed step: aplyca-adf stays on and pinned for upgrades. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The project's committed .claude/settings.json works like a package manifest: in the first session after a developer trusts the folder, Claude Code fetches the marketplace at the pinned release and loads aplyca-adf, with no install command (tested on a fresh plugin cache). - DEV-SETUP.md says so, and is merge-required in the upgrade taxonomy - the install prompt stops when the project already turns the plugin on; ADOPT.md asks before treating an adopted project as an upgrade - a packaged project's DEV-SETUP.md names the key commands in full (/adopt, the /upgrade install switch, SETUP.md) - the plugin README's "For teams" shows the pinned entry and the no-install load Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mauricios
marked this pull request as ready for review
October 2, 2026 22:58
mauricios
added a commit
that referenced
this pull request
Oct 2, 2026
…ersioning (#21) * fix: the install refreshes a marketplace added before A machine that added the aplyca marketplace before the rename keeps its copy, which lists only aplyca-framework, and `marketplace add` leaves it alone — so the install prompt failed with "Plugin aplyca-adf not found" in every project adopted before it. The prompt, ADOPT.md, and the documented commands run `claude plugin marketplace update aplyca` before the install. Tested on a copy of the marketplace from 7383422. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: release v1.0.0 — one plugin, a packaged install, and semantic versioning Turns Unreleased into v1.0.0, covering #17–#20 and the install fix, and opens it with the order to upgrade in from 7383422: install aplyca-adf with the prompt, run /aplyca-adf:upgrade (renames the setting, pins v1.0.0, restamps), then uninstall aplyca-framework. plugin.json is already 1.0.0, and the static check now matches it to the heading. README's "Update a project" and UPGRADING point at releases: the target is the newest tag, the stamp carries the version, and a project adopted before v1.0.0 has its own scenario. The plugin README's update section no longer tells those projects to update a plugin they never installed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- 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
Implements 0016, revised after review, and adds 0017. Breaking: the plugin
aplyca-frameworkis renamedaplyca-adf, and the next release is v1.0.0.One plugin,
aplyca-adf(0016)/aplyca-adf:adopt,/aplyca-adf:upgrade, and/aplyca-adf:cost-report, underplugins/aplyca-adf/skills/, moved withgit mv.skeleton/.claude/byscripts/build-aplyca-adf.sh, which rebuilds only the paths listed in.generated, and they're named under the plugin (/aplyca-adf:triage,@aplyca-adf:code-reviewer)._lib.shmakes a copy that isn't the project's own stand down unlessCLAUDE.md's stamp saysinstall: packaged. This is enforced in code, and tested: it acts in a packaged project, stands down in a committed one, and does nothing in a project without the framework.CLAUDE.mdsays "This project uses the packaged install", follow the committed file. In live tests, the agent skipped that step when both copies matched. So:"ref": "vX.Y.Z"on the marketplace, equal to the stamp's release, committed projects included. The plugin's copies and the committed files are always one release, so a skill listed twice never runs a different version./aplyca-adf:upgradeswitches a project between committed and packaged, the same pull request writes a PDR in the project. It covers why, what changes for the team, how to switch back, and the deciders, adds the index row, and marks PDR-0001 as amended. Switching back to committed keepsaplyca-adfon and pinned./aplyca-adf:upgradereplacesaplyca-framework@aplyca. The plugin README and the changelog give the uninstall commands.Semantic versioning (0017)
## vX.Y.Z — <date> — <title>.vX.Y.Zon the release PR's merge commit."version", which changes only in a release. A static check holds it equal to the newest release.Skeleton source: v1.0.0 · <SHA> (<date>). Older stamps still work.Joining an adopted project needs no install
.claude/settings.jsonworks like a package manifest. In the first session after a developer trusts the folder, Claude Code fetches the marketplace at the pinned release and loadsaplyca-adf, because the marketplace lists it by a relative path.docs/getting-started/DEV-SETUP.mdsays so. It's now merge-required in the upgrade taxonomy; it was unlisted, so upgrades skipped it./aplyca-adf:upgrade.ADOPT.mdasks before it treats an adopted project as an upgrade.DEV-SETUP.mdlists the key commands by their full names, written by/aplyca-adf:adoptand by the install switch.Where it's documented
docs/SETUP.md: § Packaged install, and the stamp format.docs/UPGRADING.md: the versioning convention, and the packaged scenario.CONTRIBUTING.md: cutting a release, the generated paths.ADOPT.md, the skills catalog,SECURITY.md, the repo'sCLAUDE.md, and the changelog.Upgrade impact
.claude/hooks/_lib.sh.CLAUDE.md's first line, for the stamp format;docs/getting-started/DEV-SETUP.md, for the joining paragraph.aplyca-adfwith the install prompt./aplyca-adf:upgrade, which renames the setting and pins the release.aplyca-framework.How to verify
./evals/run-evals.sh. New and changed checks:aplyca-adf;/aplyca-adf:upgrade;DEV-SETUP.md, the install prompt, the packaged names.claude plugin validate plugins/aplyca-adfandclaude plugin validate .both pass.Verified / not verified
--no-verify.aplyca-adf1.0.0 with all 27 commands; no install record was written.v1.0.0tag pinned by a project. The tag comes with the release./aplyca-adf:adoptor/aplyca-adf:upgradein packaged mode, or migrating fromaplyca-framework. The pilot is the test.Merge danger
Reversible: mostly. Reverting restores
aplyca-framework, but projects that already switched would have to switch back.Blast radius:
aplyca-framework@aplyca: its teammates lose/upgradeuntil the project switches. Today that's the pilot, whose #221 isn't merged and can switch first._lib.shchange, which behaves the same and is tested.🤖 Generated with Claude Code