Conversation
Adds two optional fields to AgentDefinitionSchema (issue #44). model: primary model identifier; when unset, harness uses its default. fallbackModels: ordered list resolved at setup time in roster plugins. JSON schema regenerated. Tests assert optional contract on both fields.
Claude previously dropped agents[] into metadata._dropped (issue #45). Adds buildAgentFile() mirroring buildSkillFile() and wires it into compile() after the skills step. Emits agents/<name>.md with name, description, tools (if set), and model (only when agent.model is set). Adds vitest test suite asserting model present/absent per contract.
Pushes model: <agent.model> into agent/<name>.md frontmatter only when agent.model is set; omitted when unset so the harness uses its default. Adds agent-emission tests asserting present/absent model contract.
Audit showed codex and pimono adapters do not emit agent files despite the matrix listing agents[] as universal. New row documents the actual state: Claude and OpenCode emit model: frontmatter (issue #47); Codex and Pi Mono have no per-agent file concept and fall back to harness default.
Command handlers in the universal contract store the command string directly on the handler object (handler.command), not inside handler.config. The copilot adapter was crashing with 'Cannot read properties of undefined (reading script)' when compiling hooks that used the universal format. Fix: fall back to the handler object itself when handler.config is not present, and default shell to 'bash' when not explicitly specified.
heroAlt slot with Apache 2.0 copy and Polar.sh checkout CTA.
Polar.sh checkout link, brand color #3c82f6, shields.io for-the-badge style.
The plan's heroAlt slot does not exist in VitePress — VitePress exposes home-hero-after, home-features-before, etc., but not heroAlt. Place the sponsor block as markdown content below the frontmatter divider, which the home layout renders below the features grid. No Vue component or theme override needed. VPButton scoped-class on inline anchor does not style as expected; link renders as default underlined link. Acceptable for v1; revisit if user wants the button styled like the hero CTA.
Closes #50 - sitemap.xml via VitePress built-in `sitemap.hostname` - robots.txt with Sitemap directive - Favicon (SVG + ICO), og.png 1200×630 brand image - Head expanded: keywords, OG, Twitter card, JSON-LD SoftwareApplication - Page-level title + description frontmatter on index, introduction, quick-start, creating-plugins - .gitignore: allow static public assets while keeping install.sh ignored
New zero-wiring package that defines the Plugin interface, middleware contexts (BuildCtx, TargetCtx, InstallCtx), and the createApp() runner. Every pipeline stage and adapter will register as a Plugin in later phases. Closes part of #51.
…factories Adds validateMiddleware, lintMiddleware, compileMiddleware, and writeMiddleware to @agentplugins/compile. Extends LintContext with extraRules for per-run rule injection. No changes to existing behavior — builds and tests remain green.
…istry Drops the 7-arm switch in favour of buildBuiltinApp() which registers each adapter as a Plugin via createApp().use(). Extracts resolveTargets() to eliminate the duplicated targets-fallback on lines 84 and 171. Build output is byte-identical (verified against example-logger baseline).
Rewrites registry.ts to use a shared pipeline App as the authoritative adapter store. Fixes the createAdapter-only bug: registerBuiltinAdapters now uses the per-adapter factory name (createClaudeAdapter, createCodexAdapter, …) instead of the deprecated createAdapter alias that only adapter-claude exports. Adds getRegistryApp() to the public adapter API.
TargetPlatformSchema now accepts any non-empty string instead of a closed enum, enabling custom/private adapters without schema rejections. Built-in ids are preserved as BuiltinTarget for autocomplete. Unknown target check in validateUniversal is downgraded from error to warning — the compile middleware enforces the "no adapter → skip" gate at build time.
Adds defineConfig({ manifest, plugins, targets }) to @agentplugins/core
as a power-user companion to definePlugin. The config loader detects the
defineConfig shape and threads plugins and target overrides into the build
pipeline. User plugins are registered after builtins so they can override
any built-in adapter or stage. Bare manifests remain backward-compatible.
EMITTERS is now a Map instead of a Record, with registerEmitter() and getRegisteredEmitters() exposed from both @agentplugins/compile and @agentplugins/core/adapter. Plugins can contribute code emitters for custom target languages without modifying core internals.
Adds securityPlugin to @agentplugins/store backed by evaluateScriptPolicy, gateSetupCommand, and hashDirectory. Three onInstall middleware stages — integrity hashing, setup-command policy gate, and dependency-lifecycle policy gate — run in sequence and abort the install on any denied decision. Transparent, reorderable, and removable via defineConfig.
…nsibility section - Add @agentplugins/pipeline node to dependency graph (with purple style) - Update all package dependency edges to include pipeline - Add package table row for pipeline - Add "Plugin bus" section explaining Plugin interface, lifecycle hooks, and defineConfig usage - Update compile pipeline flowchart to show preValidate/transformIR/postEmit middleware stages
… targets getPlatformConstraints() was returning undefined for custom targets, crashing validateForPlatform() when a user provides a non-builtin target id. Now falls back to PERMISSIVE_CONSTRAINTS (all hooks/handlers allowed, large limits) so custom-adapter plugins compile without errors. Update contract schema tests: TargetPlatformSchema is now an open string so tests for enum exhaustion become tests for non-empty constraint and custom target acceptance.
…eConfig + private adapter
Shows the minimum PlatformAdapter surface, how to wire a custom target via
defineConfig({ plugins: [{ name, adapter }], targets: ['claude', 'my-harness'] }),
and produces two dist targets from a single build run.
Covers Plugin interface, custom adapters (PlatformAdapter), lint rules, and all five middleware hooks (preValidate, transformIR, postEmit, onInstall, onAudit) with copy-paste examples. Adds page to sidebar.
…-plugins Shows the extended config format (manifest + plugins + targets fields), explains when to prefer it over definePlugin, and links to the new extending guide.
…terface docs Documents the full PlatformAdapter + AdapterOutput interfaces, the custom adapter registration pattern via defineConfig, and links to the new extending guide. Replaces the previous process-ABI stub.
…ate existsSync before hash
…argets; drop unadopted middleware factories
…xport securityPlugin from core
…lizeSource strips tree/blob path; thread branch/subdir through cloneRepo, installPlugin, updatePlugin
…pipeline execution order
- typescript ^6, vitest ^4, vite ^6 - @logtape/logtape ^2 (level->lowestLevel rename) - cleye ^2, @clack/prompts ^1 (multiselect API) - tsdown ^0.22.3, jiti ^2.7 - tsconfig: exclude __tests__, ignoreDeprecations 6.0, types: node - docs: own tsconfig, @types/node from catalog - vite ^6 root devDeps for vitest peer
…ch section, sponsor footer-only
…in capability-matrix
…plugins.pages.dev
…he 2.0; Tier-1/Tier-2 tagline
…'./packages/**' build in binary job
…te, FUNDING, triage workflow
Deploying agentplugins with
|
| Latest commit: |
7cc3e3b
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://5ad7f9f0.agentplugins.pages.dev |
| Branch Preview URL: | https://develop.agentplugins.pages.dev |
… dark/light CSS swap
…unignore env.d.ts
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.
Summary
This PR ships everything needed for the Show HN launch of v0.6.0.
$iddomain (agentplugins.dev→pages.dev), install.sh comment, sponsor after GitHub in nav/hero, license footer MIT→Apache 2.0pnpm --filter './packages/**' buildinstead of a selective filter that missedcontract/compile/store/pipelinedependenciesmcp.serversinopencode.json— the capability matrix ✅ formcpServerson OpenCode is now accurate; tests addedCONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md, issue templates (bug + feature + config), PR template,FUNDING.yml, triage workflow,needs-triagelabel; branch ruleset onmain(PR required + CI gate); tag ruleset restrictingv*pushesTest plan
pnpm --filter './packages/**' buildpassespnpm -r exec tsc --noEmitpassespnpm test— all tests pass (158 opencode + all other suites)pnpm --filter @agentplugins/cli pack— zerocatalog:/workspace:leaks in published deps/install.sh200,/guide/capability-matrix200npx @agentplugins/cli@latest --versionprints released version