diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index d26b0445..7117ae2a 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -17,10 +17,10 @@ "category": "AI" }, { - "name": "flutter", + "name": "dart-flutter", "source": { "source": "url", - "url": "https://github.com/pleaseai/flutter-plugin.git" + "url": "https://github.com/flutter/agent-plugins.git" }, "policy": { "installation": "AVAILABLE", diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index b8d790b6..3794312b 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -24,14 +24,14 @@ } }, { - "name": "flutter", - "description": "Enables several Flutter and Dart-related commands and context.", + "name": "dart-flutter", + "description": "Official Dart and Flutter plugin - installs Flutter/Dart skills and the Dart MCP server for building natively compiled apps for mobile, web, desktop, and embedded from a single codebase", "category": "mobile", "keywords": ["flutter", "dart", "mobile", "cross-platform"], - "tags": ["framework", "mobile"], + "tags": ["framework", "mobile", "skills", "mcp"], "source": { "source": "github", - "repo": "pleaseai/flutter-plugin" + "repo": "flutter/agent-plugins" }, "relevance": { "topic": "Flutter", diff --git a/.claude/agent-memory/github-pr-manager/MEMORY.md b/.claude/agent-memory/github-pr-manager/MEMORY.md new file mode 100644 index 00000000..8c76b7ec --- /dev/null +++ b/.claude/agent-memory/github-pr-manager/MEMORY.md @@ -0,0 +1 @@ +- [External marketplace plugin conventions](marketplace-external-plugin-conventions.md) — github-source entries: name must match upstream manifest, no submodule, no release-please entry diff --git a/.claude/agent-memory/github-pr-manager/marketplace-external-plugin-conventions.md b/.claude/agent-memory/github-pr-manager/marketplace-external-plugin-conventions.md new file mode 100644 index 00000000..7da1fa8c --- /dev/null +++ b/.claude/agent-memory/github-pr-manager/marketplace-external-plugin-conventions.md @@ -0,0 +1,16 @@ +--- +name: marketplace-external-plugin-conventions +description: Unwritten conventions for github-source (external) marketplace entries in pleaseai/claude-code-plugins — name must match upstream manifest, no submodule, no release-please entry +metadata: + type: project +--- + +For `github:`-source entries in `.claude-plugin/marketplace.json` (as opposed to local `./plugins/...` entries), three conventions hold that are not written down in CLAUDE.md or `.claude/rules/marketplace-sync.md`: + +1. **The marketplace entry name must match the upstream `.claude-plugin/plugin.json` `"name"`** — e.g. `gemini-cli-security` ← `pleaseai/security-plugin`, `dart-flutter` ← `flutter/agent-plugins`. Do not alias to a friendlier name even when it breaks existing installs; document the rename as a BREAKING CHANGE instead. +2. **No git submodule** is added for third-party upstreams that do not accept PRs (chrome-devtools-mcp, notion, cloudflare, modern-web-guidance, dart-flutter all follow this). +3. **No `release-please-config.json` / `.release-please-manifest.json` entry** — those companions apply only to local plugins. + +**Why:** the name invariant keeps `/plugin install @pleaseai` resolvable against what the upstream manifest declares; drift there breaks installs silently. Established in PR #274 (flutter → dart-flutter swap). + +**How to apply:** when adding or swapping a github-source plugin, check upstream's manifest name first and surface any resulting install-name change prominently in the PR body. Skip the submodule and release-please steps that local plugins require. diff --git a/.gitmodules b/.gitmodules index eabf7a64..ac70bbe8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ [submodule "external-plugins/nanobanana"] path = external-plugins/nanobanana url = git@github.com:pleaseai/nanobanana-plugin.git -[submodule "external-plugins/flutter"] - path = external-plugins/flutter - url = git@github.com:pleaseai/flutter-plugin.git [submodule "external-plugins/code-review"] path = external-plugins/code-review url = git@github.com:pleaseai/code-review-plugin.git diff --git a/.idea/vcs.xml b/.idea/vcs.xml index d19e3ad3..e37bdf7d 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -4,7 +4,6 @@ - diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 8412684e..f8fab1a5 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -83,7 +83,7 @@ Development standards and reference documentation for **human contributors**. No Read-only git submodules containing **Type 4** plugins: external projects that are either Gemini CLI extensions or standalone Claude Code plugins. These are the canonical upstream sources. The sync pipeline reads from here and generates artifacts into `plugins/`. -Current external plugins: code-review, flutter, grafana, nanobanana, postgres, security, spec-kit. +Current external plugins: code-review, grafana, nanobanana, postgres, security, spec-kit. ### `hooks/` diff --git a/CLAUDE.md b/CLAUDE.md index 0c50cbb4..1fc96291 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,7 +17,6 @@ This is a Claude Code plugin marketplace repository providing bundled plugins th claude-code-plugins/ ├── external-plugins/ # All plugins (git submodules) │ ├── nanobanana/ # Image generation plugin -│ ├── flutter/ # Flutter development tools │ ├── security/ # Security analysis │ ├── spec-kit/ # Spec-driven development │ ├── code-review/ # Code review automation @@ -155,7 +154,6 @@ All plugins are maintained in separate repositories and included as git submodul - `external-plugins/nanobanana/` → https://github.com/pleaseai/nanobanana-plugin - `external-plugins/security/` → https://github.com/pleaseai/security-plugin -- `external-plugins/flutter/` → https://github.com/pleaseai/flutter-plugin - `external-plugins/code-review/` → https://github.com/pleaseai/code-review-plugin - `external-plugins/spec-kit/` → https://github.com/pleaseai/spec-kit-plugin - `external-plugins/postgres/` → https://github.com/pleaseai/postgres-plugin diff --git a/README.md b/README.md index 78961d42..49e7f574 100644 --- a/README.md +++ b/README.md @@ -35,10 +35,10 @@ AI-powered security analysis for code changes and pull requests, identifying vul **Install:** `/plugin install gemini-cli-security@pleaseai` | **Repository:** [pleaseai/security-plugin](https://github.com/pleaseai/security-plugin) -#### Flutter Development -Flutter and Dart-related commands and context for enhanced mobile development workflow. +#### Dart and Flutter +Official Dart and Flutter plugin from the Flutter team - Flutter/Dart skills and the Dart MCP server for building natively compiled apps across mobile, web, desktop, and embedded. -**Install:** `/plugin install flutter@pleaseai` | **Repository:** [pleaseai/flutter-plugin](https://github.com/pleaseai/flutter-plugin) +**Install:** `/plugin install dart-flutter@pleaseai` | **Repository:** [flutter/agent-plugins](https://github.com/flutter/agent-plugins) #### Code Review Comprehensive code review plugin for Claude Code with specialized review agents. @@ -562,7 +562,7 @@ Once the marketplace is added (or files copied), the following plugins are avail # External plugins /plugin install nanobanana@pleaseai /plugin install gemini-cli-security@pleaseai -/plugin install flutter@pleaseai +/plugin install dart-flutter@pleaseai /plugin install code-review@pleaseai /plugin install spec-kit@pleaseai /plugin install grafana@pleaseai diff --git a/external-plugins/flutter b/external-plugins/flutter deleted file mode 160000 index 54b8b594..00000000 --- a/external-plugins/flutter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 54b8b594c8770683c5de8e2ab423a2d293ddffff diff --git a/plugins/please-plugins/hooks/tooling-mappings.json b/plugins/please-plugins/hooks/tooling-mappings.json index 44c71f82..be78a250 100644 --- a/plugins/please-plugins/hooks/tooling-mappings.json +++ b/plugins/please-plugins/hooks/tooling-mappings.json @@ -1,5 +1,5 @@ [ { "indicators": { "files": ["pnpm-lock.yaml"], "packageManager": "pnpm" }, "pluginName": "pnpm" }, { "indicators": { "files": ["turbo.json"], "packageManager": null }, "pluginName": "turborepo" }, - { "indicators": { "files": ["pubspec.lock", "pubspec.yaml"], "packageManager": null }, "pluginName": "flutter" } + { "indicators": { "files": ["pubspec.lock", "pubspec.yaml"], "packageManager": null }, "pluginName": "dart-flutter" } ] diff --git a/plugins/please-plugins/skills/find-plugin/SKILL.md b/plugins/please-plugins/skills/find-plugin/SKILL.md index 50965d1d..24ba93f5 100644 --- a/plugins/please-plugins/skills/find-plugin/SKILL.md +++ b/plugins/please-plugins/skills/find-plugin/SKILL.md @@ -103,7 +103,7 @@ Quick reference for the types of plugins available: | Category | Examples | |----------|----------| | **Framework** | nuxt, vue, react, next, vitepress, slidev, tiptap | -| **Mobile** | flutter, react-native | +| **Mobile** | dart-flutter, react-native | | **Database** | prisma, supabase, mcp-neo4j | | **Tooling** | vite, pnpm, turborepo, tsdown, gatekeeper, ast-grep | | **AI** | nanobanana, ai-sdk, mastra, gemini |