Skip to content

Remove vercel from the default scaffolded target list - #107

Merged
mike-north merged 2 commits into
mainfrom
fix/remove-vercel-from-default-scaffold
Jul 19, 2026
Merged

mike-north merged 2 commits into
mainfrom
fix/remove-vercel-from-default-scaffold

Conversation

@mike-north

Copy link
Copy Markdown
Contributor

Summary

vercel shipped in the DEFAULT scaffolded target list but is a silent no-op: it is accepted by
scaffold, build, validate, and check-support, and appears in list-targets, yet emits ZERO
build artifacts. A user who keeps the default config believes they have a working vercel target
that in fact produces nothing.

This PR removes vercel from the default scaffold set. vercel remains fully supported
elsewhere in the toolkit — it's still addable via core.scaffold(name, { targets: [...] }) or
aipm add-target <plugin> vercel — this only changes what a bare aipm scaffold <name> declares.

Changes

  • packages/core/src/pipeline/types.ts: adds DEFAULT_SCAFFOLD_TARGETS, TARGET_IDS minus
    vercel.
  • packages/core/src/pipeline/scaffold.ts: runScaffold now defaults to
    DEFAULT_SCAFFOLD_TARGETS instead of TARGET_IDS when opts.targets is omitted.
  • packages/core/src/pipeline/scaffold.test.ts: updates the existing "canonical file set"
    default-scaffold test (vercel's skills/*/SKILL.md is no longer part of the default set) and
    adds the regression + guard coverage below.
  • .changeset/remove-vercel-from-default-scaffold.md: minor bump for core + cli (user-visible
    default-scaffold behavior change).

Acceptance criteria → tests

  1. Remove vercel from the DEFAULT scaffolded targets listrunScaffold > does not declare vercel among the default targets (issue #94) (packages/core/src/pipeline/scaffold.test.ts).
    Confirmed to fail against pre-fix code (reverting the one-line default in scaffold.ts makes it
    fail with expected [...] to not include 'vercel').
  2. Add a test asserting every default-scaffolded target emits at least one artifact on build
    every default-scaffolded target emits a build artifact (issue #94) > produces at least one build artifact per target for a freshly scaffolded plugin with default targets
    (packages/core/src/pipeline/scaffold.test.ts). This test reads back the targets runScaffold
    actually declared (not the DEFAULT_SCAFFOLD_TARGETS constant directly), so it independently
    catches any future default target that ships with zero build artifacts — confirmed by
    temporarily reintroducing vercel into the default set, which makes this test fail with
    expected an artifact for default target 'vercel'. A companion negative test
    (vercel (excluded from defaults) emits zero build artifacts on a bare scaffold) documents why
    vercel specifically is excluded.

Both scaffold+build tests run against a workspace-mode repo (a hand-written aipm.workspace.ts),
matching the issue's real repro shape (aipm scaffold + aipm build in a repo that has opted into
marketplace-registry generation) — registry-backed targets (claude/cursor/codex/open-plugins) only
produce build artifacts in that mode; gemini/kiro's dist bundles are unconditional.

Note: exercising this combination surfaced a separate, pre-existing gap — runScaffold
hand-writes the repo-root Open Plugins marketplace.json unconditionally, which collides with
runBuild's generated version of the same path on a workspace-mode repo's first build
(root-artifact-collision). This is orthogonal to #94 (a build-failure/collision issue, not a
no-op-target issue) and reproduces identically on main before this change — the new tests work
around it exactly as the build's own finding documents (remove the hand-authored file before
building). Flagging here since it may warrant its own issue, but it's out of scope for this PR.

Non-goals (per issue)

  • The broader "declared-but-unsupported target state" UX is out of scope.
  • vercel support itself is untouched — still fully buildable/validatable/addable, just no longer a
    default.

Refs #94

`vercel`'s only build artifact is an author-authored skills/<name>/SKILL.md that the scaffold
never seeds, so a fresh plugin declared vercel but emitted zero artifacts for it anywhere on
build while looking fully supported by list-targets/check-support. A fresh scaffold now declares
every known target except vercel; vercel remains fully supported and addable via add-target.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts the core scaffolding defaults so a bare aipm scaffold <name> no longer declares vercel, preventing a freshly scaffolded plugin from including a target that produces no build artifacts out of the box. It also adds regression/guard tests to ensure the default scaffold target set remains “non-no-op” over time.

Changes:

  • Introduces DEFAULT_SCAFFOLD_TARGETS (all known targets except vercel) and uses it as the default in runScaffold when opts.targets is omitted.
  • Updates scaffold tests to reflect the new default set and adds a guard test ensuring every default-scaffolded target emits at least one build artifact (in workspace-mode builds).
  • Adds a changeset to bump @ai-plugin-marketplace/core and @ai-plugin-marketplace/cli for the user-visible default behavior change.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
packages/core/src/pipeline/types.ts Adds DEFAULT_SCAFFOLD_TARGETS as the new default scaffold target list (excluding vercel).
packages/core/src/pipeline/scaffold.ts Switches runScaffold default targets from TARGET_IDS to DEFAULT_SCAFFOLD_TARGETS.
packages/core/src/pipeline/scaffold.test.ts Updates default scaffold expectations and adds regression + build-artifact guard coverage for issue #94.
.changeset/remove-vercel-from-default-scaffold.md Declares minor bumps for core + cli due to the default scaffold behavior change.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/core/src/pipeline/scaffold.test.ts
Comment thread packages/core/src/pipeline/scaffold.test.ts
…nside tmpDir

The two default-scaffold tests passed tmpDir directly as pluginsDir, but runScaffold derives
repoRoot = dirname(pluginsDir) for marketplace registration, so registries were written to the
shared OS temp dir (outside afterEach's cleanup). Use a plugins/ subdirectory of tmpDir instead.
@mike-north
mike-north merged commit 9467da0 into main Jul 19, 2026
2 checks passed
@mike-north
mike-north deleted the fix/remove-vercel-from-default-scaffold branch July 19, 2026 18:23
@github-actions github-actions Bot mentioned this pull request Jul 19, 2026
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