Summary
dotagents add fails for a repository whose marketplace entry uses "source": "./" (the plugin lives at the repository root). The error says the source type is unsupported, then says that only that same type is supported:
Plugin "agent-browser" not found in ~/.local/dotagents/vercel-labs/agent-browser. Matching marketplace entries use unsupported source types: local. Only local marketplace sources are supported.
Reproduce (dotagents 3.1.0, clean HOME)
export HOME=$(mktemp -d)
npx -y @sentry/dotagents init
npx -y @sentry/dotagents add vercel-labs/agent-browser --name agent-browser
--skill agent-browser and --ref <commit> give the same error.
The repository's .claude-plugin/marketplace.json:
"plugins": [
{ "name": "agent-browser", "source": "./", "strict": false,
"skills": ["./skills/agent-browser"] }
]
Cause
In packages/dotagents/src/plugins/store.ts (still present on main at e42112b):
function localMarketplacePath(entry) {
const { source } = entry;
if (isString(source)) {return stripDotSlash(source);} // "./" -> ""
...
}
discoverFromMarketplaces then checks if (!path). The empty string is falsy, so the entry goes to unsupportedSources, and marketplaceSourceType reports a string source as "local". "." works, because stripDotSlash(".") returns ".". Only "./" fails.
Expected
"./" resolves to the source root, the same as ".". A possible fix: return "." when stripDotSlash gives an empty string, or test path === null instead of !path. The same check applies to an object source with path: "./".
Workaround
A skill that agents.toml already declares still installs with dotagents install (the [[skills]] entry with path = "skills/agent-browser" does not go through plugin discovery). Only add fails.
Summary
dotagents addfails for a repository whose marketplace entry uses"source": "./"(the plugin lives at the repository root). The error says the source type is unsupported, then says that only that same type is supported:Reproduce (dotagents 3.1.0, clean HOME)
--skill agent-browserand--ref <commit>give the same error.The repository's
.claude-plugin/marketplace.json:Cause
In
packages/dotagents/src/plugins/store.ts(still present onmainat e42112b):discoverFromMarketplacesthen checksif (!path). The empty string is falsy, so the entry goes tounsupportedSources, andmarketplaceSourceTypereports a string source as"local"."."works, becausestripDotSlash(".")returns".". Only"./"fails.Expected
"./"resolves to the source root, the same as".". A possible fix: return"."whenstripDotSlashgives an empty string, or testpath === nullinstead of!path. The same check applies to an object source withpath: "./".Workaround
A skill that
agents.tomlalready declares still installs withdotagents install(the[[skills]]entry withpath = "skills/agent-browser"does not go through plugin discovery). Onlyaddfails.