diff --git a/plugins/kyberforge/skills/marketplace-author/SKILL.md b/plugins/kyberforge/skills/marketplace-author/SKILL.md index d82b8c1..317e0a4 100644 --- a/plugins/kyberforge/skills/marketplace-author/SKILL.md +++ b/plugins/kyberforge/skills/marketplace-author/SKILL.md @@ -7,14 +7,16 @@ description: > the marketplace version", "update the description for Y"). Always updates both .claude-plugin/marketplace.json and .github/plugin/marketplace.json in the same pass. Out of scope: plugin scaffold and configuration — use - /plugin-author for that. Does not manage marketplace registration with - Claude Code or Copilot CLI. + /plugin-author for that. Does not run `claude plugin marketplace add` or + equivalent CLI registration commands — only manages `marketplace.json` + entries. allowed-tools: Bash Read Write Edit metadata: category: factory source_keys: - context7-websites-code-claude - claude-code-plugins-docs + - context7-github-en-copilot - github-cli-plugin-reference - github-plugins-marketplace - github-plugins-finding-installing @@ -31,8 +33,8 @@ metadata: - `name` must be kebab-case. Reserved prefixes (`anthropic-*`, `claude-*`, `agent-skills`, `official-claude-plugins`) are rejected by the validator. - The `plugins[]` array order is not semantically significant, but maintain it consistently — add new entries at the end. - For Copilot CLI, the canonical marketplace.json location is `.github/plugin/marketplace.json`. Claude Code also reads `.claude-plugin/marketplace.json`. Both are equivalent; this repo maintains both files in sync. - -Read `references/manifest-fields.md` for the full field reference and source type shapes before editing any file. +- Copilot CLI places top-level `description` and `version` under a `metadata` object (`metadata.description`, `metadata.version`). Claude Code accepts them at the top level. For dual-tool repos, use the `metadata` form — it is valid in both tools. +- Set `"strict": false` on a plugin entry to allow relaxed schema validation for that entry. This is the right choice for plugins distributed as `.claude-plugin/` directories that also serve Claude Code — it prevents Copilot CLI from failing on CC-specific fields that are not in the Copilot schema. ## Route @@ -70,8 +72,10 @@ Create the file with the following structure (fill in the values from prerequisi { "name": "", "owner": { "name": "", "email": "" }, - "description": "", - "version": "0.1.0", + "metadata": { + "description": "", + "version": "0.1.0" + }, "plugins": [ { "name": "", @@ -82,7 +86,7 @@ Create the file with the following structure (fill in the values from prerequisi } ``` -Omit `"email"` if not provided. Omit `"version"` from plugin entries unless the user specifies one (see Gotchas). +Omit `"email"` if not provided. Omit `"metadata.version"` if the user does not want a pinned catalog version. The `metadata` object is the Copilot CLI canonical location for top-level description and version — Claude Code accepts both `metadata`-nested and top-level forms; use `metadata` for dual-tool repos. ### Step 2 — Write `.github/plugin/marketplace.json` @@ -106,6 +110,8 @@ Confirm you have: - [ ] Source type and source value (see source type branching below) - [ ] Version (optional; omit for git-sourced plugins) +If you need details on a specific source type shape or per-entry optional fields, read `references/manifest-fields.md`. + ### Source type branching If the user has not specified a source type, ask: @@ -127,7 +133,7 @@ Source shapes per type: ```json "source": { "source": "github", "repo": "owner/repo" } ``` -Add `"ref": ""` inside the object if the user specifies a branch or tag. +Add `"ref": ""` inside the object if the user specifies a branch or tag. Add `"sha": ""` if pinning to an exact commit — `sha` takes precedence over `ref` when both are present. **Git URL:** ```json @@ -155,6 +161,8 @@ The full entry added to `plugins[]`: Include `"version": ""` at the entry level only when the source is npm or when the user explicitly requests a pinned version in the catalog. +Include `"strict": false` when the plugin is a dual Claude Code / Copilot CLI plugin — this prevents Copilot from rejecting CC-specific fields in the plugin directory. + ### Step 1 — Read both files Read `.claude-plugin/marketplace.json` and `.github/plugin/marketplace.json`. Verify they are identical. If they differ, stop and report the divergence — do not proceed until the user resolves it. @@ -205,6 +213,8 @@ Follow the **VALIDATE** flow. Run this flow when an entry exists in `plugins[]` and the intent is to change one or more fields. +If you need to verify a field name or source type shape, read `references/manifest-fields.md`. + ### Step 1 — Read the current entry Read `.claude-plugin/marketplace.json`. Show the current state of the target entry so the user can confirm the fields to change. @@ -226,9 +236,11 @@ Follow the **VALIDATE** flow. Run `claude plugin validate .` from the repo root: ```bash -cd && claude plugin validate . +claude plugin validate . ``` +Add `--strict` to promote warnings to errors — recommended in CI. + Report the output. If validation fails, describe the specific error and what needs to be fixed. Do not attempt to auto-fix validation errors unless the fix is unambiguous (e.g. a trailing comma that violates JSON syntax); otherwise, describe the fix and ask the user to confirm. Validation checks include: `marketplace.json` schema compliance, duplicate plugin names, source path traversal, and version mismatches. diff --git a/plugins/kyberforge/skills/marketplace-author/references/manifest-fields.md b/plugins/kyberforge/skills/marketplace-author/references/manifest-fields.md index fc1356b..b766d97 100644 --- a/plugins/kyberforge/skills/marketplace-author/references/manifest-fields.md +++ b/plugins/kyberforge/skills/marketplace-author/references/manifest-fields.md @@ -2,6 +2,7 @@ source_keys: - context7-websites-code-claude - claude-code-plugins-docs + - context7-github-en-copilot - github-cli-plugin-reference - github-plugins-marketplace --- @@ -27,8 +28,9 @@ Both files must be kept identical at all times. Every operation that modifies on |---|---|---|---| | `name` | Yes | string | Marketplace name. Kebab-case, max 64 chars. Becomes the marketplace identifier used in `plugin install @`. | | `owner` | Yes | object | `{ "name": string, "email"?: string }` — the marketplace maintainer. | -| `description` | No | string | Human-readable description of the marketplace. Not in all schemas but accepted and displayed in the Discover tab. | -| `version` | No | string | Marketplace-level version string. Used for catalog caching; bump when the plugin list changes significantly. | +| `metadata` | No | object | `{ "description"?: string, "version"?: string, "pluginRoot"?: string }` — Copilot CLI canonical location for top-level description and version. Claude Code also accepts `description` and `version` directly at the top level; use `metadata` for dual-tool repos. | +| `description` | No | string | Top-level description — Claude Code only. For dual-tool repos, prefer `metadata.description` instead. | +| `version` | No | string | Top-level marketplace version — Claude Code only. For dual-tool repos, prefer `metadata.version` instead. | | `plugins` | Yes | array | Array of plugin entry objects. See Per-Entry Fields below. | --- @@ -42,6 +44,19 @@ Both files must be kept identical at all times. Every operation that modifies on | `description` | No | string | Human-readable plugin description. Max 1024 chars (Copilot CLI schema). Displayed in browse output. | | `version` | No | string | Pinned version for catalog display. Optional for git-sourced plugins — Claude Code derives version from git tags. Required for npm source. Include when the user wants an explicit pinned version visible in the catalog. | | `author` | No | object | `{ "name": string, "email"?: string, "url"?: string }` — the plugin author. | +| `homepage` | No | string | URL for the plugin homepage or docs site. | +| `repository` | No | string | URL for the plugin source repository. | +| `license` | No | string | SPDX license identifier (e.g. `"MIT"`, `"Apache-2.0"`). | +| `keywords` | No | string[] | Search terms for discovery (feeds into Discover tab search index). | +| `category` | No | string | Single category label for grouping in the Discover tab. | +| `tags` | No | string[] | Additional classification tags. | +| `agents` | No | string or string[] | Override the path(s) to agent definition files inside the plugin directory. Defaults to `agents/`. | +| `skills` | No | string or string[] | Override the path(s) to skill directories inside the plugin. Defaults to `skills/`. | +| `commands` | No | string or string[] | Override the path(s) to command definition files. | +| `hooks` | No | string or object | Override the path(s) to hook definitions. | +| `mcpServers` | No | string or object | Override MCP server configuration for the plugin. | +| `lspServers` | No | string or object | Override LSP server configuration for the plugin. | +| `strict` | No | boolean | Default `true`. Set to `false` for relaxed schema validation — allows extra or CC-specific fields without failing Copilot CLI validation. Use this for dual Claude Code / Copilot CLI plugins. | --- diff --git a/plugins/kyberforge/skills/marketplace-author/references/sources.md b/plugins/kyberforge/skills/marketplace-author/references/sources.md index 780fce3..b223b5e 100644 --- a/plugins/kyberforge/skills/marketplace-author/references/sources.md +++ b/plugins/kyberforge/skills/marketplace-author/references/sources.md @@ -2,6 +2,7 @@ source_keys: - context7-websites-code-claude - claude-code-plugins-docs + - context7-github-en-copilot - github-cli-plugin-reference - github-plugins-marketplace - github-plugins-finding-installing @@ -25,6 +26,22 @@ source_keys: - **Contributing files:** SKILL.md, references/manifest-fields.md - **Status:** `extracted` +## claude-code-subagents-docs + +- **URL:** https://code.claude.com/docs/en/sub-agents +- **Research doc:** plugins/kyberforge/docs/research/docs/claude-code-plugins/sources.md +- **Description:** Official Claude Code subagent reference — definition format, all frontmatter fields, scope priority, built-in agents, CLI flags, environment variables, known limitations +- **Contributing files:** (none) +- **Status:** `referenced` + +## context7-github-en-copilot + +- **URL:** context7:/websites/github_en_copilot +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Official GitHub Copilot documentation indexed by Context7; covers CLI plugins, custom agents, SDK, and marketplace — including `metadata` object schema, per-entry optional fields, `strict` field behavior +- **Contributing files:** SKILL.md, references/manifest-fields.md +- **Status:** `extracted` + ## github-cli-plugin-reference - **URL:** https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference @@ -48,3 +65,83 @@ source_keys: - **Description:** User-facing guide to discovering and installing CLI plugins — marketplace browsing commands, install/update/uninstall workflow; informs REMOVE flow design (unlisting does not uninstall from existing users) - **Contributing files:** SKILL.md - **Status:** `extracted` + +## github-custom-agents-configuration + +- **URL:** https://docs.github.com/en/copilot/reference/custom-agents-configuration +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Reference for cloud and IDE custom agent definition format — frontmatter fields, tool aliases, MCP server config, secrets interpolation, scoping hierarchy +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-plugins-creating + +- **URL:** https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** How-to for creating Copilot CLI plugins — plugin structure, agent and skill authoring, hooks format, MCP config, development lifecycle +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-sdk-custom-agents + +- **URL:** https://docs.github.com/en/copilot/how-tos/copilot-sdk/features/custom-agents +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** SDK custom agent API — CustomAgentConfig fields in all five languages, session config, sub-agent lifecycle events, tool scoping, permission handling +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-changelog-copilot-extensions-ga + +- **URL:** https://github.blog/changelog/2025-02-19-announcing-the-general-availability-of-github-copilot-extensions/ +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Announcement of GitHub Copilot Extensions general availability (February 2025) — OIDC auth, all license tiers, VS Code/Visual Studio/JetBrains/GitHub.com support +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-changelog-copilot-extensions-sunset + +- **URL:** https://github.blog/changelog/2025-09-24-deprecate-github-copilot-extensions-github-apps/ +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Sunset notice for GitHub App-based Copilot Extensions — creation blocked Sep 24, 2025; full shutdown Nov 10, 2025; MCP servers recommended as replacement +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-docs-copilot-extensions-skillsets + +- **URL:** https://docs.github.com/en/copilot/concepts/build-copilot-extensions/skillsets-for-copilot-extensions +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Concept doc for Copilot Extension skillsets — up to 5 skills per extension, Copilot handles routing/prompt crafting/response, contrast with agent extensions +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-docs-copilot-extensions-building + +- **URL:** https://docs.github.com/en/copilot/building-copilot-extensions/setting-up-copilot-extensions +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** How-to for setting up a Copilot Extension — GitHub App registration, Copilot Chat permission, Copilot Editor Context permission, backend URL configuration +- **Contributing files:** (none) +- **Status:** `referenced` + +## vscode-chat-participant-api + +- **URL:** https://code.visualstudio.com/api/extension-guides/ai/chat +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** VS Code Chat Participant API — createChatParticipant(), package.json contributes.chatParticipants, Language Model API, @mention invocation in Copilot Chat +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-marketplace-copilot-extensions + +- **URL:** https://github.com/marketplace?type=apps&copilot_app=true +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** GitHub Marketplace listing for Copilot Extensions — browsable list of available extensions (historical; page remains live but product is sunset) +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-docs-marketplace-listing-requirements + +- **URL:** https://docs.github.com/en/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Requirements for listing a GitHub App on the GitHub Marketplace — verified publisher, capability description, UX stability, submission and review process +- **Contributing files:** (none) +- **Status:** `referenced` diff --git a/plugins/kyberforge/skills/plugin-author/README.md b/plugins/kyberforge/skills/plugin-author/README.md index 50f742b..0a757da 100644 --- a/plugins/kyberforge/skills/plugin-author/README.md +++ b/plugins/kyberforge/skills/plugin-author/README.md @@ -37,4 +37,3 @@ bash scripts/new-plugin.sh data-tools . | `references/sources.md` | Research provenance — sources that informed this skill | | `scripts/README.md` | Directory meta-documentation for scripts/ | | `references/README.md` | Directory meta-documentation for references/ | -| `tests/README.md` | Test dependency instructions and run command | diff --git a/plugins/kyberforge/skills/plugin-author/SKILL.md b/plugins/kyberforge/skills/plugin-author/SKILL.md index b7f0895..8b6f2c1 100644 --- a/plugins/kyberforge/skills/plugin-author/SKILL.md +++ b/plugins/kyberforge/skills/plugin-author/SKILL.md @@ -6,14 +6,17 @@ description: > description", "add keyword", "bump version"), or release a plugin version ("release", "tag", "publish"). Manages both Claude Code (.claude-plugin/plugin.json) and Copilot CLI (plugin.json) manifests in one - pass. Explicitly out of scope: plugin content (skills, agents, hooks, MCP - servers) and marketplace.json entries — use /marketplace-author for those. + pass. Do not use when the request is about plugin content (skills, agents, + hooks, MCP servers) or marketplace.json entries — use /marketplace-author + for those. allowed-tools: Bash Read Write Edit metadata: category: factory source_keys: - context7-websites-code-claude - claude-code-plugins-docs + - claude-code-subagents-docs + - context7-github-en-copilot - github-cli-plugin-reference - github-plugins-creating - github-plugins-finding-installing @@ -22,12 +25,14 @@ metadata: ## Gotchas - Both manifests must carry identical `version` values — version parity is a hard invariant (ADR-0016). Never update version in one manifest without updating the other in the same edit pass. -- `author.email` belongs in the Copilot manifest (`plugin.json`); `author.url` belongs in the CC manifest (`.claude-plugin/plugin.json`). Do not swap them. +- `author.email` is placed in the Copilot manifest by convention; `author.url` is placed in the CC manifest by convention. Both fields are supported by both platforms — do not add them to the other manifest without a deliberate reason. - `claude plugin tag --push` is irreversible: it creates a git tag and pushes it to remote. Always present the HITL gate and wait for explicit confirmation before running it. +- `claude plugin tag --push` requires a clean working tree and will fail if there are uncommitted changes. Commit or stash all changes before running it. - `name` in both manifests must be kebab-case and must not use reserved prefixes: `anthropic-*`, `claude-*`, `agent-skills`, `official-claude-plugins`. - Copilot manifest lookup order: `.plugin/plugin.json` → `plugin.json` → `.github/plugin/plugin.json` → `.claude-plugin/plugin.json`. The canonical location for the Copilot manifest in this repo is `plugin.json` at the plugin root. -- `displayName` is CC-only — do not add it to the Copilot manifest. -- `skills`, `agents`, `hooks`, `mcpServers` are Copilot-only fields — do not add them to the CC manifest. +- `displayName` is a CC platform field — Copilot has no equivalent. Do not add it to the Copilot manifest. +- `skills`, `agents`, `hooks`, `mcpServers` are declared in the Copilot manifest by convention — Copilot requires explicit path declarations while CC auto-discovers content from the plugin root. Both platforms support these fields; omit them from the CC manifest by convention. +- Agent files in a plugin's `agents/` directory silently ignore `hooks`, `mcpServers`, and `permissionMode` frontmatter fields. ## Route @@ -38,7 +43,7 @@ Determine which flow before touching the filesystem. Read both manifest files if - **Plugin directory exists + field change intent** ("update description", "add keyword", "change author") → follow **UPDATE flow** - **Ambiguous** → ask: "Did you mean to create a new plugin, update its configuration, or release a version?" -Validate runs automatically before tagging (in RELEASE flow) and can be invoked explicitly at any time. +Validate runs automatically before tagging (in RELEASE flow) and can be invoked explicitly at any time: `claude plugin validate plugins/`. ## CREATE flow @@ -83,13 +88,13 @@ Open both manifest files and replace every `FILL_IN_*` placeholder. - `license` — SPDX identifier (default: `MIT`) - `keywords` — search/discovery tags (default: `[]`) -**CC-only fields** (`.claude-plugin/plugin.json` only): -- `displayName` — human-readable name shown in plugin manager; capitalised form of `name` -- `author.url` — author URL (e.g. Gitea profile URL) +**CC manifest fields** (`.claude-plugin/plugin.json` only): +- `displayName` — human-readable name shown in plugin manager; capitalised form of `name` (CC platform field — no Copilot equivalent) +- `author.url` — author URL (e.g. Gitea profile URL) (both platforms support this; placed here by convention) -**Copilot-only fields** (`plugin.json` only): -- `author.email` — author email -- `skills`, `agents`, `hooks`, `mcpServers` — paths; defaults are already set by the script +**Copilot manifest fields** (`plugin.json` only): +- `author.email` — author email (both platforms support this; placed here by convention) +- `skills`, `agents`, `hooks`, `mcpServers` — paths; defaults are already set by the script (CC auto-discovers these; Copilot requires explicit declarations) ### Step 3 — Validate @@ -116,11 +121,15 @@ For every field the user wants to change: | Change type | What to update | |---|---| | Shared field (`name`, `description`, `version`, `author.name`, `license`, `keywords`) | Both manifests in the same edit pass | -| CC-only (`displayName`, `author.url`) | `.claude-plugin/plugin.json` only | -| Copilot-only (`author.email`, `skills`, `agents`, `hooks`, `mcpServers`, `category`, `tags`, `extensions`) | `plugin.json` only | +| CC platform field (`displayName`) | `.claude-plugin/plugin.json` only — Copilot has no equivalent field | +| Copilot platform fields (`category`, `tags`, `extensions`) | `plugin.json` only — not in the CC manifest schema | +| CC scaffold convention (`author.url`) | `.claude-plugin/plugin.json` only — both platforms support this field; it is placed here by convention | +| Copilot scaffold convention (`author.email`, `skills`, `agents`, `hooks`, `mcpServers`) | `plugin.json` only by convention — CC also supports these fields; CC auto-discovers content from the plugin root rather than requiring explicit path declarations | Never update a shared field in one manifest without updating the other in the same pass. +If the target field is not listed in the classification table, read `references/manifest-fields.md` for the full field list and platform support notes. + ### Step 3 — Announce and apply State which fields change and which files are affected. Then apply. For `version` changes not part of a release, bump both manifests in the same edit. @@ -147,6 +156,8 @@ Run: claude plugin validate plugins/ ``` +Use `--strict` to promote warnings to errors: `claude plugin validate --strict plugins/`. + Stop and report errors if validation fails. Do not proceed to tagging until validation passes. ### Step 4 — HITL gate @@ -159,6 +170,8 @@ Do not call the tool until the user explicitly confirms in the conversation. ### Step 5 — Tag and release +To preview without tagging or pushing: `claude plugin tag --dry-run`. + After explicit confirmation, run from the repo root: ```bash diff --git a/plugins/kyberforge/skills/plugin-author/references/manifest-fields.md b/plugins/kyberforge/skills/plugin-author/references/manifest-fields.md index 9a68788..49b3040 100644 --- a/plugins/kyberforge/skills/plugin-author/references/manifest-fields.md +++ b/plugins/kyberforge/skills/plugin-author/references/manifest-fields.md @@ -3,6 +3,7 @@ topic: manifest-fields source_keys: - context7-websites-code-claude - claude-code-plugins-docs + - context7-github-en-copilot - github-cli-plugin-reference - github-plugins-creating - github-plugins-finding-installing @@ -14,6 +15,10 @@ This document covers optional fields beyond the scaffolded defaults. Consult it ## Field Classification +Fields fall into three categories: **shared** (identical in both manifests), **platform** (one platform does not support the field at all), and **convention** (both platforms support the field, but the repo scaffold places it in one manifest only). + +> CC auto-discovers content (skills, agents, hooks, MCP servers) from the plugin root; Copilot requires explicit path declarations. Convention fields in the CC manifest are omitted unless you have a deliberate reason to add them. + | Field | Copilot `plugin.json` | CC `.claude-plugin/plugin.json` | Notes | |---|---|---|---| | `name` | Yes (shared) | Yes (shared) | Identical in both; kebab-case; max 64 chars (Copilot) | @@ -22,16 +27,16 @@ This document covers optional fields beyond the scaffolded defaults. Consult it | `author.name` | Yes (shared) | Yes (shared) | Identical in both | | `license` | Yes (shared) | Yes (shared) | Identical in both; SPDX identifier | | `keywords` | Yes (shared) | Yes (shared) | Identical in both; string array | -| `displayName` | No | Yes (CC-only) | Human-readable name shown in plugin manager | -| `author.url` | No | Yes (CC-only) | Author profile or homepage URL | -| `author.email` | Yes (Copilot-only) | No | Author contact email | -| `agents` | Yes (Copilot-only) | No | Path or array; default: `agents/` | -| `skills` | Yes (Copilot-only) | No | Path or array; default: `skills/` | -| `hooks` | Yes (Copilot-only) | No | Path to hooks config | -| `mcpServers` | Yes (Copilot-only) | No | Path or object for MCP server config | -| `category` | Yes (Copilot-only) | No | Marketplace category string | -| `tags` | Yes (Copilot-only) | No | Additional taxonomy tags (distinct from `keywords`) | -| `extensions` | Yes (Copilot-only) | No | Path, array, or `{ paths, exclusive: true }` to disable built-ins | +| `displayName` | No (unsupported) | Yes | CC platform field — Copilot has no equivalent | +| `author.url` | Omitted (convention) | Yes (convention) | Author profile URL; CC scaffold places here; Copilot also supports this field | +| `author.email` | Yes (convention) | Omitted (convention) | Author email; Copilot scaffold places here; CC also supports this field | +| `agents` | Yes (convention) | Omitted (convention) | Path or array; default: `agents/`; Copilot requires explicit declaration; CC auto-discovers | +| `skills` | Yes (convention) | Omitted (convention) | Path or array; default: `skills/`; Copilot requires explicit declaration; CC auto-discovers | +| `hooks` | Yes (convention) | Omitted (convention) | Path to hooks config; Copilot requires explicit declaration; CC auto-discovers | +| `mcpServers` | Yes (convention) | Omitted (convention) | Path or object; Copilot requires explicit declaration; CC auto-discovers | +| `category` | Yes | No (unsupported) | Marketplace category string; Copilot platform field — not in CC manifest schema | +| `tags` | Yes | No (unsupported) | Additional taxonomy tags (distinct from `keywords`); Copilot platform field | +| `extensions` | Yes | No (unsupported) | Path, array, or `{ paths, exclusive: true }` to disable built-ins; Copilot platform field | | `homepage` | Both (independent) | Both (independent) | Documentation URL; not required to be identical | | `repository` | Both (independent) | Both (independent) | Source repo URL | diff --git a/plugins/kyberforge/skills/plugin-author/references/sources.md b/plugins/kyberforge/skills/plugin-author/references/sources.md index 6a3b6fa..7ec5ffe 100644 --- a/plugins/kyberforge/skills/plugin-author/references/sources.md +++ b/plugins/kyberforge/skills/plugin-author/references/sources.md @@ -2,9 +2,21 @@ source_keys: - context7-websites-code-claude - claude-code-plugins-docs + - claude-code-subagents-docs + - context7-github-en-copilot - github-cli-plugin-reference - github-plugins-creating - github-plugins-finding-installing + - github-custom-agents-configuration + - github-plugins-marketplace + - github-sdk-custom-agents + - github-changelog-copilot-extensions-ga + - github-changelog-copilot-extensions-sunset + - github-docs-copilot-extensions-skillsets + - github-docs-copilot-extensions-building + - vscode-chat-participant-api + - github-marketplace-copilot-extensions + - github-docs-marketplace-listing-requirements --- # Sources @@ -30,7 +42,7 @@ source_keys: - **URL:** https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference - **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md - **Description:** Full Copilot CLI plugin reference — `plugin.json` schema (all fields, types, constraints), marketplace.json schema, CLI commands, manifest lookup order -- **Contributing files:** SKILL.md, scripts/new-plugin.sh, references/manifest-fields.md +- **Contributing files:** SKILL.md, references/manifest-fields.md - **Status:** `extracted` ## github-plugins-creating @@ -38,7 +50,7 @@ source_keys: - **URL:** https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating - **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md - **Description:** How-to for creating Copilot CLI plugins — plugin structure, Copilot manifest fields, development lifecycle, hooks format, MCP config -- **Contributing files:** SKILL.md, scripts/new-plugin.sh +- **Contributing files:** SKILL.md - **Status:** `extracted` ## github-plugins-finding-installing @@ -48,3 +60,99 @@ source_keys: - **Description:** Finding and installing Copilot CLI plugins — install spec formats, marketplace registration, `copilot plugin` CLI commands - **Contributing files:** SKILL.md - **Status:** `extracted` + +## claude-code-subagents-docs + +- **URL:** https://code.claude.com/docs/en/sub-agents +- **Research doc:** plugins/kyberforge/docs/research/docs/claude-code-plugins/sources.md +- **Description:** Official Claude Code subagent reference — definition format, all frontmatter fields, scope priority, built-in agents, CLI flags, environment variables, known limitations +- **Contributing files:** SKILL.md +- **Status:** `extracted` + +## context7-github-en-copilot + +- **URL:** context7:/websites/github_en_copilot +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Official GitHub Copilot documentation indexed by Context7; covers CLI plugins, custom agents, SDK, and marketplace +- **Contributing files:** SKILL.md, references/manifest-fields.md +- **Status:** `extracted` + +## github-custom-agents-configuration + +- **URL:** https://docs.github.com/en/copilot/reference/custom-agents-configuration +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Reference for cloud and IDE custom agent definition format — frontmatter fields, tool aliases, MCP server config, secrets interpolation, scoping hierarchy +- **Contributing files:** (none) +- **Status:** `extracted` + +## github-plugins-marketplace + +- **URL:** https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** How-to for creating and publishing a plugin marketplace — marketplace.json structure, hosting options, registration commands +- **Contributing files:** (none) +- **Status:** `extracted` + +## github-sdk-custom-agents + +- **URL:** https://docs.github.com/en/copilot/how-tos/copilot-sdk/features/custom-agents +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** SDK custom agent API — CustomAgentConfig fields in all five languages, session config, sub-agent lifecycle events, tool scoping, permission handling +- **Contributing files:** (none) +- **Status:** `extracted` + +## github-changelog-copilot-extensions-ga + +- **URL:** https://github.blog/changelog/2025-02-19-announcing-the-general-availability-of-github-copilot-extensions/ +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Announcement of GitHub Copilot Extensions general availability (February 2025) — OIDC auth, all license tiers, VS Code/Visual Studio/JetBrains/GitHub.com support +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-changelog-copilot-extensions-sunset + +- **URL:** https://github.blog/changelog/2025-09-24-deprecate-github-copilot-extensions-github-apps/ +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Sunset notice for GitHub App-based Copilot Extensions — creation blocked Sep 24, 2025; full shutdown Nov 10, 2025; MCP servers recommended as replacement +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-docs-copilot-extensions-skillsets + +- **URL:** https://docs.github.com/en/copilot/concepts/build-copilot-extensions/skillsets-for-copilot-extensions +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Concept doc for Copilot Extension skillsets — up to 5 skills per extension, Copilot handles routing/prompt crafting/response, contrast with agent extensions +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-docs-copilot-extensions-building + +- **URL:** https://docs.github.com/en/copilot/building-copilot-extensions/setting-up-copilot-extensions +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** How-to for setting up a Copilot Extension — GitHub App registration, Copilot Chat permission, Copilot Editor Context permission, backend URL configuration +- **Contributing files:** (none) +- **Status:** `referenced` + +## vscode-chat-participant-api + +- **URL:** https://code.visualstudio.com/api/extension-guides/ai/chat +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** VS Code Chat Participant API — createChatParticipant(), package.json contributes.chatParticipants, Language Model API, @mention invocation in Copilot Chat +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-marketplace-copilot-extensions + +- **URL:** https://github.com/marketplace?type=apps&copilot_app=true +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** GitHub Marketplace listing for Copilot Extensions — browsable list of available extensions (historical; page remains live but product is sunset) +- **Contributing files:** (none) +- **Status:** `referenced` + +## github-docs-marketplace-listing-requirements + +- **URL:** https://docs.github.com/en/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app +- **Research doc:** plugins/kyberforge/docs/research/docs/github-copilot-plugins/sources.md +- **Description:** Requirements for listing a GitHub App on the GitHub Marketplace — verified publisher, capability description, UX stability, submission and review process +- **Contributing files:** (none) +- **Status:** `referenced` diff --git a/plugins/kyberforge/skills/plugin-author/scripts/new-plugin.sh b/plugins/kyberforge/skills/plugin-author/scripts/new-plugin.sh index 1be5dc4..c078117 100755 --- a/plugins/kyberforge/skills/plugin-author/scripts/new-plugin.sh +++ b/plugins/kyberforge/skills/plugin-author/scripts/new-plugin.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# source_keys: github-cli-plugin-reference github-plugins-creating set -euo pipefail usage() { diff --git a/plugins/kyberforge/skills/plugin-author/tests/README.md b/plugins/kyberforge/skills/plugin-author/tests/README.md deleted file mode 100644 index 5fa544c..0000000 --- a/plugins/kyberforge/skills/plugin-author/tests/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# tests/ - -Test files for scripts bundled with this skill. - -## When to add tests - -Add tests here when the skill has scripts in `scripts/` that are complex enough -to break silently — validators, parsers, generators, anything with branching -logic or edge cases. Test infrastructure (`.bats`, `*_test.*`, `test_*.sh`) -belongs here, not in `scripts/`. - -## Dependencies - -Tests require [bats-support](https://github.com/bats-core/bats-support) and -[bats-assert](https://github.com/bats-core/bats-assert). The test files load -helpers from the repo root's `tests/test_helper/`. - -From the repo root: - -```bash -git clone https://github.com/bats-core/bats-support tests/test_helper/bats-support -git clone https://github.com/bats-core/bats-assert tests/test_helper/bats-assert -``` - -Run all tests for this skill (from the repo root): - -```bash -bats plugins/kyberforge/skills/plugin-author/tests/ -``` - -## If no tests are needed - -Delete this README and the `tests/` directory entirely.