Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
6367c27
feat(contract): add model and fallbackModels to AgentDefinitionSchema
espetro Jun 28, 2026
2f9700b
feat(adapter-claude): emit agents/*.md with model frontmatter
espetro Jun 28, 2026
9be09d3
feat(adapter-opencode): add model frontmatter to generateAgentFiles
espetro Jun 28, 2026
99c37c2
docs(compat-matrix): add per-agent model row
espetro Jun 28, 2026
2d98ae6
fix(adapter-copilot): handle universal CommandHookHandler format
espetro Jun 28, 2026
500229a
feat(docs): add sponsor section to landing page
espetro Jun 28, 2026
0edc0af
docs(readme): add Sponsor badge above the fold and near License
espetro Jun 28, 2026
1767d25
fix(docs): render sponsor section as markdown body
espetro Jun 28, 2026
a9c1119
feat(docs): add SEO metadata, sitemap, favicon, and OG assets
espetro Jun 29, 2026
2283124
feat(pipeline): add @agentplugins/pipeline middleware kernel
espetro Jun 29, 2026
ca02a30
refactor(compile): extract validate/lint/compile/write as middleware …
espetro Jun 29, 2026
9ff8379
refactor(cli): replace getAdapterFactory switch with pipeline app reg…
espetro Jun 29, 2026
a337915
refactor(core): replace registry with pipeline-app-backed implementation
espetro Jun 29, 2026
ad2eeb1
feat(contract): widen TargetPlatform to allow custom adapter targets
espetro Jun 29, 2026
6e7a3e2
feat(core): add defineConfig API with plugin bus and target overrides
espetro Jun 29, 2026
efa2e6c
feat(compile): add registerEmitter and mutable emitter registry
espetro Jun 29, 2026
3e76611
refactor(store): expose security gate as install-pipeline Plugin
espetro Jun 29, 2026
ad3ff61
docs(architecture): add pipeline package, middleware bus, plugin exte…
espetro Jun 29, 2026
5bbf26e
fix(compile,core): return permissive constraints for unknown (custom)…
espetro Jun 29, 2026
0ed7078
feat(examples): add example-custom-adapter plugin demonstrating defin…
espetro Jun 29, 2026
6708cdb
docs(guide): add Extending the Build Pipeline guide
espetro Jun 29, 2026
08f68f1
docs(guide): document defineConfig alongside definePlugin in creating…
espetro Jun 29, 2026
5c9cc66
docs(reference): replace stub adapter section with PlatformAdapter in…
espetro Jun 29, 2026
974b542
fix(compile): add knownTargets option to validateUniversal; dedupe co…
espetro Jun 29, 2026
be0b0b8
fix(store/plugin): add pinnedIntegrityMiddleware to securityPlugin; g…
espetro Jun 29, 2026
2b0c984
feat(cli/build): wire runBuild/runTarget, lintRules, emitters, knownT…
espetro Jun 29, 2026
8be803e
feat(cli/add): replace inline B17/B18 with securityPlugin pipeline; e…
espetro Jun 29, 2026
9ea7e76
feat(store): parse GitHub tree URLs — parseSubdir, parseBranch, norma…
espetro Jun 29, 2026
6abe7bb
test(store): normalizeSource / parseSubdir / parseBranch unit tests
espetro Jun 29, 2026
59b7d16
docs: document GitHub tree URL (monorepo subdir) in add command; fix …
espetro Jun 29, 2026
386d380
refactor(compile): delete vestigial middleware-factory experiment
espetro Jun 29, 2026
0c81a52
fix(adapter-pimono): emit WARNING when mcpServers set — Pi has no bui…
espetro Jun 29, 2026
f37fee7
fix(docs): correct Pi mcpServers/agents[] cells; add MCP-on-Pi patter…
espetro Jun 29, 2026
b214f20
fix(docs): reconcile init output — no SKILL.md or hooks/ directory
espetro Jun 29, 2026
d2a4df1
fix(docs): agentplugins.dev → agentplugins.pages.dev; add sidecar esc…
espetro Jun 29, 2026
f61ff84
refactor(docs): move compat-matrix to guide/capability-matrix; update…
espetro Jun 29, 2026
4848764
docs(readme): simplify to concise hero-style landing
espetro Jun 29, 2026
23d1d07
docs(site): add logo, sponsor CTA, reference landing page; restructur…
espetro Jun 29, 2026
654767c
chore(release): merge feat/v0.4.0-authoring-primitives into develop
espetro Jun 29, 2026
d5f58a2
chore: gitignore .npmrc (local verdaccio config)
espetro Jun 29, 2026
4704d73
chore(repo): add pnpm catalog, .nvmrc 22, bump engines.node to >=22
espetro Jun 30, 2026
3a2eb1d
chore(pipeline): migrate from tsup to tsdown
espetro Jun 30, 2026
4b9c457
chore(adapter-claude): migrate from tsup to tsdown
espetro Jun 30, 2026
ee28a75
chore(adapter-codex): migrate from tsup to tsdown
espetro Jun 30, 2026
c2dcbad
chore(adapter-copilot): migrate from tsup to tsdown
espetro Jun 30, 2026
5443dea
chore(compile): pin to pnpm catalog versions
espetro Jun 30, 2026
28eea19
chore(ingest): pin to pnpm catalog versions
espetro Jun 30, 2026
1ea5383
chore(schema): pin to pnpm catalog versions
espetro Jun 30, 2026
a6ee437
chore(security): pin to pnpm catalog versions
espetro Jun 30, 2026
9609c0b
chore(store): pin to pnpm catalog versions
espetro Jun 30, 2026
1805248
chore(example-logger): pin to pnpm catalog versions
espetro Jun 30, 2026
8e886b1
chore(example-custom-adapter): pin to pnpm catalog versions
espetro Jun 30, 2026
77f1bf9
chore(adapter-gemini): migrate from tsup to tsdown
espetro Jun 30, 2026
26c5775
chore(adapter-kimi): migrate from tsup to tsdown
espetro Jun 30, 2026
01da542
chore(adapter-pimono): migrate from tsup to tsdown
espetro Jun 30, 2026
7bf556e
feat(contract): migrate to zod 4
espetro Jun 30, 2026
bdb0374
feat(core): migrate to zod 4
espetro Jun 30, 2026
ff85876
feat(migrate): migrate to zod 4
espetro Jun 30, 2026
de294f6
feat(adapter-opencode): migrate to zod 4
espetro Jun 30, 2026
a77b9bf
chore(pipeline): align exports with tsdown output extensions
espetro Jun 30, 2026
e9a0713
chore(adapter-claude): align exports with tsdown output extensions
espetro Jun 30, 2026
e16c2f5
chore(adapter-codex): align exports with tsdown output extensions
espetro Jun 30, 2026
3f05594
chore(adapter-copilot): align exports with tsdown output extensions
espetro Jun 30, 2026
9f19e91
chore(adapter-gemini): align exports with tsdown output extensions
espetro Jun 30, 2026
73c44c1
chore(adapter-kimi): align exports with tsdown output extensions
espetro Jun 30, 2026
d86593f
chore(adapter-pimono): align exports with tsdown output extensions
espetro Jun 30, 2026
4abc053
feat(cli): migrate from cac to cleye
espetro Jun 30, 2026
2dbd436
feat(cli): migrate from chalk to logtape (structured logging)
espetro Jun 30, 2026
b2bf4de
feat(cli): migrate jiti to v2
espetro Jun 30, 2026
cf96fcd
chore(scripts): migrate recompile-installed to jiti v2
espetro Jun 30, 2026
ec5ecd3
chore(tsconfig): exclude __tests__ and dist from root type checking
espetro Jun 30, 2026
73a0335
chore(vitest): nest include/exclude under test key for vitest 3
espetro Jun 30, 2026
8d4fe9a
chore(scripts): add @ts-nocheck to recompile-installed build script
espetro Jun 30, 2026
b53ebdb
fix(adapters): resolve remaining tsc errors in opencode and gemini ad…
espetro Jun 30, 2026
741c04d
chore(full-stack): complete dependency upgrades
espetro Jun 30, 2026
fe5e213
fix(readme): swap logo srcset, npx primary, Tier-1/Tier-2 framing, ar…
espetro Jun 30, 2026
e5624c7
fix(cli): bump scaffolded devDeps to ^0.5.0 in agentplugins init
espetro Jun 30, 2026
6011de8
fix(docs): version strings 1.0.0→0.6.0 in quick-start, v0.4.0→v0.5.0 …
espetro Jun 30, 2026
d5b995f
fix(scripts): install.sh comment domain agentplugins.dev→pages.dev; g…
espetro Jun 30, 2026
c446fc3
fix(schema): update $id and hosted URL from agentplugins.dev to agent…
espetro Jun 30, 2026
6e9e638
fix(docs): GitHub before Sponsor in nav/hero; license footer MIT→Apac…
espetro Jun 30, 2026
08e67e3
fix(agents): update branch conventions to current develop→main flow
espetro Jun 30, 2026
e3f51a4
ci(release): replace selective filter with topological pnpm --filter …
espetro Jun 30, 2026
5a4ac67
feat(opencode): emit mcpServers as mcp.servers in opencode.json; add …
espetro Jun 30, 2026
6ab782b
chore(github): add community health files, issue templates, PR templa…
espetro Jun 30, 2026
9c07914
fix(docs): unignore docs/public/img/ logos so they deploy to Pages
espetro Jun 30, 2026
30b20cf
feat(docs): hero image with glow effect — logo right-side on landing,…
espetro Jun 30, 2026
0f0ec29
fix(docs): remove hero image glow effect
espetro Jun 30, 2026
b305542
feat(docs): grey radial glow behind hero logo
espetro Jun 30, 2026
8686b1c
fix(docs): use logo-dark.png as tab favicon instead of placeholder SVG
espetro Jun 30, 2026
7cc3e3b
fix(docs): resolve tsc errors — vite@5/6 plugin cast, declare *.css, …
espetro Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .agents/docs/prd.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Five operating principles:

1. **Tier-1 parity is the bar.** Same functionality across Claude Code, Codex, OpenCode, Pi Mono. TUI-grade fidelity (overlays, widgets) is the only allowed degradation.
2. **Codegen first, guided per-harness fallback second.** Where universal codegen can express a capability across all Tier-1, do that. Where a harness lacks the native primitive, check whether all Tier-1 can support it via a custom (escape-hatch) method, and if so guide the author — rather than dropping the feature.
3. **Keep a compat matrix.** The living [Tier-1 Capability Matrix](../../docs/reference/compat-matrix.md) (published at `/reference/compat-matrix`) records what's universal-codegen, guided-per-harness, and genuinely unsupported. It's the contract for "same functionality, different plumbing."
3. **Keep a compat matrix.** The living [Capability Matrix](../../docs/guide/capability-matrix.md) (published at `/guide/capability-matrix`) records what's universal-codegen, guided-per-harness, and genuinely unsupported. It's the contract for "same functionality, different plumbing."
4. **Lean, no global SDK.** Primitives express intent, not mechanism; each adapter owns its own plumbing. The escape hatch lets power users write native code against each harness's SDK.
5. **Multi-platform by default, platform-specific code allowed.** AgentPlugins gives plugin authors the foundations to distribute their plugin across all Tier-1 harnesses (Claude Code, Codex, OpenCode, Pi Mono). Authors are not forced to support every harness — they may target a single harness or ship harness-specific behavior (e.g., custom logging for one harness) when another harness lacks a needed primitive. The end goal is a distribution platform and utilities so authors can make a plugin usable in other harnesses without porting or rewriting the implementation. Think React Native or Rust: multi-platform by default, platform-specific code when you need it.

Expand All @@ -69,8 +69,8 @@ _Draft — this section reflects the current product direction and will be final

- **Distribution-first CLI** — `agentplugins add <github-url>` installs a plugin once; the universal store (`~/.agents/plugins/<name>/`) fans out via symlinks to every detected agent harness.
- **Skills.sh compatibility** — plugins exposing `SKILL.md` are first-class citizens; our CLI reads both AgentPlugins and Skills.sh layouts.
- **JSON Schema** — `@agentplugins/schema` package + hosted JSON Schema (`agentplugins.dev/schema/v1.json`) for editor autocomplete and self-documenting manifests.
- **Tier-1 parity primitives** — every shipped capability works across Claude Code, Codex, OpenCode, and Pi Mono. The [Tier-1 Capability Matrix](../../docs/reference/compat-matrix.md) is the living contract.
- **JSON Schema** — `@agentplugins/schema` package + hosted JSON Schema (`agentplugins.pages.dev/schema/v1.json`) for editor autocomplete and self-documenting manifests.
- **Parity primitives** — every shipped capability works across Claude Code, Codex, OpenCode, and Pi Mono. The [Capability Matrix](../../docs/guide/capability-matrix.md) is the living contract.
- **Security & audit guardrails** — `agentplugins audit` scores supply-chain risk (OSV, Scorecard, npm provenance); safe-fetch SSRF guard; lifecycle script policy.
- **Public launch** — registry, docs site, examples, and a stable v1 manifest format.

Expand Down
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
custom: ["https://buy.polar.sh/polar_cl_Mv1gdlG7bw3I70EC9IHtfeSHJj4PEKvA7JAUz23CFhj"]
46 changes: 46 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Bug Report
description: Something is broken
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Before filing: check the [capability matrix](https://agentplugins.pages.dev/guide/capability-matrix) — some behaviours are by design.
- type: textarea
id: description
attributes:
label: What happened?
description: A clear description of the bug.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
placeholder: |
1. Run `agentplugins add ...`
2. See error
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behaviour
validations:
required: true
- type: input
id: version
attributes:
label: AgentPlugins version
placeholder: "0.5.0"
validations:
required: true
- type: input
id: harness
attributes:
label: Agent harness(es) affected
placeholder: "Claude Code, Codex, ..."
- type: textarea
id: context
attributes:
label: Additional context
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://agentplugins.pages.dev
about: Read the full docs before filing an issue.
- name: Capability Matrix
url: https://agentplugins.pages.dev/guide/capability-matrix
about: Check if a behaviour is by design (⚠️ guided per-harness).
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Feature Request
description: Propose a new capability or improvement
labels: ["feature"]
body:
- type: textarea
id: problem
attributes:
label: Problem or motivation
description: What are you trying to do that you can't do today?
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed solution
validations:
required: true
- type: textarea
id: harnesses
attributes:
label: Harnesses this should cover
placeholder: "Claude Code, Codex, OpenCode, Pi Mono (Tier-1) / Copilot, Gemini, Kimi (Tier-2)"
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
- type: textarea
id: context
attributes:
label: Additional context
18 changes: 18 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## Summary

<!-- What does this PR do? Link the issue: Closes #123 -->

## Changes

<!-- Bullet list of what changed -->

## Test plan

- [ ] `pnpm test` passes
- [ ] `pnpm -r exec tsc --noEmit` passes
- [ ] Capability matrix updated (if adapter behaviour changed)
- [ ] Linked to a refined issue in Project 14

## Notes

<!-- Anything reviewers should know -->
16 changes: 16 additions & 0 deletions .github/social-preview.snip.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
$ agentplugins add sigilco/agentplugins-ponytail

> AgentPlugins - write once, ship to every AI agent

+ Resolved sigilco/agentplugins-ponytail@0.4.0
+ ponytail: linked to ~/.agents/plugins/ponytail/

Detected 5 harnesses:
+ claude-code ~/.claude/skills/ponytail
+ opencode ~/.config/opencode/skills/ponytail
+ codex ~/.codex/skills/ponytail
+ pimono ~/.pi/skills/ponytail
+ copilot ~/.copilot/skills/ponytail

$ agentplugins list
agentplugins-ponytail v0.4.0 5/5 harnesses
7 changes: 2 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,8 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build workspace dependencies
run: pnpm --filter @agentplugins/core --filter @agentplugins/schema build

- name: Build CLI (tsc)
run: pnpm --filter @agentplugins/cli build
- name: Build all packages (topological)
run: pnpm --filter './packages/**' build

- name: Compile native binary
run: |
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/triage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Triage

on:
issues:
types: [opened, reopened]
pull_request_target:
types: [opened, reopened]

jobs:
label:
name: Auto-label
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- name: Label issues by template
if: github.event_name == 'issues'
uses: actions/github-script@v7
with:
script: |
const body = context.payload.issue.body ?? '';
const title = context.payload.issue.title ?? '';
// Templates already inject labels via YAML; this is a fallback.
// If no label was set, apply 'needs-triage'.
const existing = context.payload.issue.labels.map(l => l.name);
if (existing.length === 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.issue.number,
labels: ['needs-triage'],
});
}
16 changes: 15 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ dist/
*.d.ts
*.d.ts.map

# Exceptions: source declaration files (not build artifacts)
!docs/.vitepress/env.d.ts

# pnpm
.pnpm-store/
.pnpm/
Expand Down Expand Up @@ -48,11 +51,22 @@ coverage/
storybook-static/
docs/.vitepress/cache/
docs/.vitepress/dist/
docs/public/
docs/public/*
!docs/public/robots.txt
!docs/public/favicon.svg
!docs/public/favicon.ico
!docs/public/og.png
!docs/public/img/
!docs/public/img/logo-dark.png
!docs/public/img/logo-light.png

# Misc
*.local
*.backup

# Session / scratch files
tmp/

# Deepwork session state (ephemeral)
.slim/
.npmrc
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ GitHub Project is [https://github.com/users/espetro/projects/14](https://github.

1. **Tier-1 parity is the bar.** Every shipped capability must work across all four Tier-1 harnesses at the functionality level (not TUI level).
2. **Codegen first, guided per-harness fallback second.** Universal codegen where possible; otherwise guide the author via the escape hatch rather than dropping the feature.
3. **Compat matrix is the contract.** `docs/reference/compat-matrix.md` — universal-codegen / guided-per-harness / unsupported, per Tier-1 harness. Keep it current.
3. **Compat matrix is the contract.** `docs/guide/capability-matrix.md` — universal-codegen / guided-per-harness / unsupported, per harness. Keep it current.
4. **Lean, no global SDK.** Primitives express intent; each adapter owns its plumbing.
5. **Community plugins are ground-up rewrites** in `agentplugins-<name>` sibling repos (e.g. `../agentplugins-caveman`), not mechanical ports.

Expand All @@ -15,6 +15,6 @@ Full detail: [`prd.md`](.agents/docs/prd.md)
## Commit & branch conventions

- Atomic conventional commits (`feat(adapter-pimono): fix subagentStop collision`)
- Feature work on `feat/v0.3.0-authoring-wins`; release branch `release/v0.3.0` cut from `develop`
- Feature work on `feat/*` branches off `develop`; merge to `develop`, then PR `develop → main` to release
- All plans in `.agents/plans/<date>-<purpose>.md` before implementation begins
- All work linked to a refined issue in [Project 14](https://github.com/users/espetro/projects/14/views/1)
Loading
Loading