feat: marketplace maintainer UX (#722)#790
Draft
sergio-sisternes-epam wants to merge 4 commits intomainfrom
Draft
feat: marketplace maintainer UX (#722)#790sergio-sisternes-epam wants to merge 4 commits intomainfrom
sergio-sisternes-epam wants to merge 4 commits intomainfrom
Conversation
Empty commit to open the draft PR. Implementation follows. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…or, publish (#722) Introduces a full marketplace-maintainer command surface designed around an authored marketplace.yml that compiles to an Anthropic-compliant marketplace.json (byte-for-byte), plus a publisher that updates downstream consumers via PR. New commands: - apm marketplace init scaffold marketplace.yml - apm marketplace build compile yml -> marketplace.json - apm marketplace outdated show packages with newer upstream refs - apm marketplace check validate refs, tag_pattern, schema - apm marketplace doctor diagnose repo/tooling issues - apm marketplace publish push updates to consumer apm.yml via PR Library modules (src/apm_cli/marketplace/): - yml_schema, builder, tag_pattern, ref_resolver, semver - init_template, publisher, pr_integration, git_stderr Design invariant: marketplace.json matches Anthropic's standard exactly. APM-only fields (build:, per-entry version ranges, ref:, subdir:, tag_pattern:, includePrerelease:) live only in marketplace.yml and are stripped during compile. metadata: is verbatim pass-through; packages: is renamed to plugins: per Anthropic's schema. Consumer updates follow the existing apm.yml dependencies.apm string format (plugin@marketplace[#ref]). Raw git refs only - semver ranges are not accepted in the consumer syntax. Docs: new guide at docs/src/content/docs/guides/marketplace-authoring.md, CLI reference entries, and skill updates for commands + package-authoring. Tests: 4824 unit+integration tests passing (68 new integration tests, 7 live e2e tests default-skipped behind APM_E2E_MARKETPLACE). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
sergio-sisternes-epam
pushed a commit
to sergio-sisternes-epam/apm
that referenced
this pull request
Apr 20, 2026
Wrap the state-file path in rich.text.Text(..., no_wrap=True) so it renders on a single line and does not break the publish-state.json substring that CI tests rely on when the terminal width is 80 cols. (microsoft#790) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…terminals Rich was breaking `publish-state.json` across lines at 80-col width, which (a) made the path uncopyable for users and (b) caused CI test assertions checking for the substring to fail. Route the final state-file line through `console.print(..., soft_wrap=True)` with a `Text(..., no_wrap=True)` so the path is preserved verbatim regardless of terminal width. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
6ec634c to
72d1b7b
Compare
Introduce `apm marketplace plugin {add,set,remove}` for programmatic
management of marketplace.yml entries. Uses ruamel.yaml for round-trip
YAML editing that preserves comments and formatting.
- `plugin add <source>` appends a validated entry with remote verification
- `plugin set <name>` updates fields on an existing entry
- `plugin remove <name>` deletes an entry with confirmation prompt
Includes 37 unit tests, documentation updates (authoring guide, skill
reference, CHANGELOG), and ruamel.yaml>=0.18.0 as a new dependency.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
72d1b7b to
56c20fe
Compare
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.
Description
First pass of the maintainer-side marketplace tooling tracked in #722. Builds on the foundations landing in #677 (semver engine,
MarketplaceValidatorskeleton, security advisories, publish skeleton).Design context and the full UX proposal are captured in the discussion thread on the tracking issue: #722 (comment).
Hard rule driving this work
marketplace.jsonis Anthropic's standard, unaltered. APM emits the artifact byte-for-byte against Anthropic's schema; APM-only build inputs live inmarketplace.ymland are stripped at compile time. A golden-file test enforces round-trip compatibility with Claude Code.High-level scope
apm marketplace init— scaffoldmarketplace.ymlapm marketplace build— compilemarketplace.yml-> Anthropic-compliantmarketplace.json(concurrent ref resolution, diff output, dry-run)apm marketplace check— validation + freshness for CI (--strict, per-rule toggles)apm marketplace outdated— maintainer-side discovery of stale rangesapm marketplace publish— transactional add/update of a package entry (PR-first,--resume/--abortrecovery)apm marketplace doctor— preflight probe for git / gh / tokens /ls-remoteDetailed plan, UX previews, and the 45-item UX-risk absorption map live in the session plan and will be distilled into a design doc / changelog entry during delivery.
Fixes #722
Type of change
Testing
Draft — work in progress. Please hold review until marked ready.