From c8c5c00644e8f2ae4a4f1dabf943e2344902b1e3 Mon Sep 17 00:00:00 2001 From: Aleksandr Lozhkovoi Date: Sun, 22 Feb 2026 08:18:35 +0100 Subject: [PATCH 1/3] remove namespaced command aliases and keep canonical commands only --- CHANGELOG.md | 4 ++ README.md | 6 +-- commands/flutter-generate-flutter-tests.md | 10 ---- commands/flutter-implement-figma-screen.md | 10 ---- commands/flutter-implement-flutter-feature.md | 10 ---- commands/flutter-integrate-firebase.md | 10 ---- commands/flutter-integrate-mobile-api.md | 10 ---- commands/flutter-migrate-flutter-code.md | 10 ---- commands/flutter-prepare-mobile-release.md | 10 ---- .../flutter-resolve-flutter-build-error.md | 10 ---- commands/flutter-review-flutter-code.md | 10 ---- commands/flutter-scaffold-flutter-feature.md | 10 ---- commands/flutter-security-review.md | 10 ---- commands/flutter-setup-flutter-environment.md | 10 ---- .../flutter-setup-mobile-github-pipeline.md | 10 ---- .../flutter-sync-official-flutter-ai-rules.md | 10 ---- .../flutter-update-flutter-dependencies.md | 10 ---- commands/flutter-write-bloc-test.md | 10 ---- commands/flutter-write-e2e-test.md | 10 ---- commands/flutter-write-widget-test.md | 10 ---- docs/command-namespacing.md | 20 -------- docs/official-release-checklist.md | 2 +- docs/pre-release-enable-plugin.md | 2 +- .../generate_namespaced_command_aliases.py | 50 ------------------- 24 files changed, 8 insertions(+), 256 deletions(-) delete mode 100644 commands/flutter-generate-flutter-tests.md delete mode 100644 commands/flutter-implement-figma-screen.md delete mode 100644 commands/flutter-implement-flutter-feature.md delete mode 100644 commands/flutter-integrate-firebase.md delete mode 100644 commands/flutter-integrate-mobile-api.md delete mode 100644 commands/flutter-migrate-flutter-code.md delete mode 100644 commands/flutter-prepare-mobile-release.md delete mode 100644 commands/flutter-resolve-flutter-build-error.md delete mode 100644 commands/flutter-review-flutter-code.md delete mode 100644 commands/flutter-scaffold-flutter-feature.md delete mode 100644 commands/flutter-security-review.md delete mode 100644 commands/flutter-setup-flutter-environment.md delete mode 100644 commands/flutter-setup-mobile-github-pipeline.md delete mode 100644 commands/flutter-sync-official-flutter-ai-rules.md delete mode 100644 commands/flutter-update-flutter-dependencies.md delete mode 100644 commands/flutter-write-bloc-test.md delete mode 100644 commands/flutter-write-e2e-test.md delete mode 100644 commands/flutter-write-widget-test.md delete mode 100644 docs/command-namespacing.md delete mode 100755 scripts/generate_namespaced_command_aliases.py diff --git a/CHANGELOG.md b/CHANGELOG.md index f2a6f5f..a601add 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,10 @@ - Added external backend API integration workflow: - command: `commands/integrate-mobile-api.md` - skill: `skills/integrate-mobile-api/SKILL.md` +- Removed `flutter:*` command aliases and kept canonical commands only. +- Removed alias maintenance artifacts: + - deleted `docs/command-namespacing.md` + - deleted `scripts/generate_namespaced_command_aliases.py` ## 1.10.0 diff --git a/README.md b/README.md index 7477bb7..e77e91b 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Reference project layout: - Canonical manifest: `.cursor-plugin/plugin.json` (schema-aligned for Cursor plugins). - Compatibility manifest kept for existing setups: `plugin.json`. - MCP auto-configuration: `mcp.json` (Dart MCP server). -- Command namespace support: canonical commands plus `flutter:*` aliases. +- Command naming: canonical commands only (no aliases). ## Compatibility matrix @@ -191,9 +191,7 @@ Reference project layout: 14. For automated release cut (version/changelog/tag/release), use: - `.github/workflows/release-automation.yml` - `docs/release-automation.md` -15. For command namespacing/aliases (`flutter:*`), see: - - `docs/command-namespacing.md` -16. For deterministic local setup and SDK/MCP readiness, use: +15. For deterministic local setup and SDK/MCP readiness, use: - `setup-flutter-environment` Note: every code review flow includes mandatory security checks (OWASP MASVS-oriented). diff --git a/commands/flutter-generate-flutter-tests.md b/commands/flutter-generate-flutter-tests.md deleted file mode 100644 index ad9347a..0000000 --- a/commands/flutter-generate-flutter-tests.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:generate-flutter-tests -description: Alias for `generate-flutter-tests`. Generate or extend Flutter tests (unit/widget/bloc/Patrol E2E) for existing code paths. ---- - -Namespaced alias for `generate-flutter-tests`. - -1. Run the canonical command with the same intent. -2. Follow `./generate-flutter-tests.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-implement-figma-screen.md b/commands/flutter-implement-figma-screen.md deleted file mode 100644 index a528622..0000000 --- a/commands/flutter-implement-figma-screen.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:implement-figma-screen -description: Alias for `implement-figma-screen`. Implement a Flutter screen/component from Figma using Figma MCP and Flutter best practices. ---- - -Namespaced alias for `implement-figma-screen`. - -1. Run the canonical command with the same intent. -2. Follow `./implement-figma-screen.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-implement-flutter-feature.md b/commands/flutter-implement-flutter-feature.md deleted file mode 100644 index f968227..0000000 --- a/commands/flutter-implement-flutter-feature.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:implement-flutter-feature -description: Alias for `implement-flutter-feature`. Implement or refactor a Flutter feature using clean architecture and Dart MCP workflows. ---- - -Namespaced alias for `implement-flutter-feature`. - -1. Run the canonical command with the same intent. -2. Follow `./implement-flutter-feature.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-integrate-firebase.md b/commands/flutter-integrate-firebase.md deleted file mode 100644 index a274516..0000000 --- a/commands/flutter-integrate-firebase.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:integrate-firebase -description: Alias for `integrate-firebase`. Set up Firebase in Flutter app with FlutterFire CLI and production-ready checks for core Firebase services. ---- - -Namespaced alias for `integrate-firebase`. - -1. Run the canonical command with the same intent. -2. Follow `./integrate-firebase.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-integrate-mobile-api.md b/commands/flutter-integrate-mobile-api.md deleted file mode 100644 index cfa42e8..0000000 --- a/commands/flutter-integrate-mobile-api.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:integrate-mobile-api -description: Alias for `integrate-mobile-api`. Integrate backend REST/GraphQL APIs into Flutter app with safe auth, error handling, and layered architecture. ---- - -Namespaced alias for `integrate-mobile-api`. - -1. Run the canonical command with the same intent. -2. Follow `./integrate-mobile-api.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-migrate-flutter-code.md b/commands/flutter-migrate-flutter-code.md deleted file mode 100644 index 433c645..0000000 --- a/commands/flutter-migrate-flutter-code.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:migrate-flutter-code -description: Alias for `migrate-flutter-code`. Perform targeted Flutter/Dart migration or refactor with safe incremental steps. ---- - -Namespaced alias for `migrate-flutter-code`. - -1. Run the canonical command with the same intent. -2. Follow `./migrate-flutter-code.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-prepare-mobile-release.md b/commands/flutter-prepare-mobile-release.md deleted file mode 100644 index 2be8c1c..0000000 --- a/commands/flutter-prepare-mobile-release.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:prepare-mobile-release -description: Alias for `prepare-mobile-release`. Execute Android and iOS release-readiness workflow for Flutter apps before Play Store/App Store submission. ---- - -Namespaced alias for `prepare-mobile-release`. - -1. Run the canonical command with the same intent. -2. Follow `./prepare-mobile-release.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-resolve-flutter-build-error.md b/commands/flutter-resolve-flutter-build-error.md deleted file mode 100644 index 00f2c0d..0000000 --- a/commands/flutter-resolve-flutter-build-error.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:resolve-flutter-build-error -description: Alias for `resolve-flutter-build-error`. Diagnose and fix Flutter build/runtime errors across Dart, Android, iOS, and package dependency layers. ---- - -Namespaced alias for `resolve-flutter-build-error`. - -1. Run the canonical command with the same intent. -2. Follow `./resolve-flutter-build-error.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-review-flutter-code.md b/commands/flutter-review-flutter-code.md deleted file mode 100644 index 6bb93db..0000000 --- a/commands/flutter-review-flutter-code.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:review-flutter-code -description: Alias for `review-flutter-code`. Review Flutter code or diff against conventions, architecture, and testing standards. ---- - -Namespaced alias for `review-flutter-code`. - -1. Run the canonical command with the same intent. -2. Follow `./review-flutter-code.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-scaffold-flutter-feature.md b/commands/flutter-scaffold-flutter-feature.md deleted file mode 100644 index 8f56f31..0000000 --- a/commands/flutter-scaffold-flutter-feature.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:scaffold-flutter-feature -description: Alias for `scaffold-flutter-feature`. Generate a new Flutter feature skeleton with clean architecture and selected state-management pattern. ---- - -Namespaced alias for `scaffold-flutter-feature`. - -1. Run the canonical command with the same intent. -2. Follow `./scaffold-flutter-feature.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-security-review.md b/commands/flutter-security-review.md deleted file mode 100644 index c77f44b..0000000 --- a/commands/flutter-security-review.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:security-review -description: Alias for `security-review`. Run security-focused review with secret scanning and prioritized findings for Flutter/Dart repositories. ---- - -Namespaced alias for `security-review`. - -1. Run the canonical command with the same intent. -2. Follow `./security-review.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-setup-flutter-environment.md b/commands/flutter-setup-flutter-environment.md deleted file mode 100644 index d9379ba..0000000 --- a/commands/flutter-setup-flutter-environment.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:setup-flutter-environment -description: Alias for `setup-flutter-environment`. Prepare and verify Flutter development environment (SDK, doctor, MCP, and baseline repo checks). ---- - -Namespaced alias for `setup-flutter-environment`. - -1. Run the canonical command with the same intent. -2. Follow `./setup-flutter-environment.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-setup-mobile-github-pipeline.md b/commands/flutter-setup-mobile-github-pipeline.md deleted file mode 100644 index d038866..0000000 --- a/commands/flutter-setup-mobile-github-pipeline.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:setup-mobile-github-pipeline -description: Alias for `setup-mobile-github-pipeline`. Create a typical GitHub Actions mobile CI pipeline for Flutter with APK/AAB build artifacts and release-ready quality gates. ---- - -Namespaced alias for `setup-mobile-github-pipeline`. - -1. Run the canonical command with the same intent. -2. Follow `./setup-mobile-github-pipeline.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-sync-official-flutter-ai-rules.md b/commands/flutter-sync-official-flutter-ai-rules.md deleted file mode 100644 index 336850b..0000000 --- a/commands/flutter-sync-official-flutter-ai-rules.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:sync-official-flutter-ai-rules -description: Alias for `sync-official-flutter-ai-rules`. Sync official Flutter AI rules from Flutter upstream and select active profile (10k, 4k, 1k). ---- - -Namespaced alias for `sync-official-flutter-ai-rules`. - -1. Run the canonical command with the same intent. -2. Follow `./sync-official-flutter-ai-rules.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-update-flutter-dependencies.md b/commands/flutter-update-flutter-dependencies.md deleted file mode 100644 index ee0e3bc..0000000 --- a/commands/flutter-update-flutter-dependencies.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:update-flutter-dependencies -description: Alias for `update-flutter-dependencies`. Upgrade Flutter SDK and Dart/Flutter dependencies safely with analysis, tests, and rollback guidance. ---- - -Namespaced alias for `update-flutter-dependencies`. - -1. Run the canonical command with the same intent. -2. Follow `./update-flutter-dependencies.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-write-bloc-test.md b/commands/flutter-write-bloc-test.md deleted file mode 100644 index e163db3..0000000 --- a/commands/flutter-write-bloc-test.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:write-bloc-test -description: Alias for `write-bloc-test`. Create or update a Bloc/Cubit test using the plugin skill, rules, and template. ---- - -Namespaced alias for `write-bloc-test`. - -1. Run the canonical command with the same intent. -2. Follow `./write-bloc-test.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-write-e2e-test.md b/commands/flutter-write-e2e-test.md deleted file mode 100644 index 7b7d653..0000000 --- a/commands/flutter-write-e2e-test.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:write-e2e-test -description: Alias for `write-e2e-test`. Create or update a Patrol E2E test for a critical user flow. ---- - -Namespaced alias for `write-e2e-test`. - -1. Run the canonical command with the same intent. -2. Follow `./write-e2e-test.md`. -3. Keep output and checks identical to the canonical command. diff --git a/commands/flutter-write-widget-test.md b/commands/flutter-write-widget-test.md deleted file mode 100644 index 0aea4ae..0000000 --- a/commands/flutter-write-widget-test.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: flutter:write-widget-test -description: Alias for `write-widget-test`. Create or update a Flutter widget test using the plugin skill, rules, and template. ---- - -Namespaced alias for `write-widget-test`. - -1. Run the canonical command with the same intent. -2. Follow `./write-widget-test.md`. -3. Keep output and checks identical to the canonical command. diff --git a/docs/command-namespacing.md b/docs/command-namespacing.md deleted file mode 100644 index 4debd4b..0000000 --- a/docs/command-namespacing.md +++ /dev/null @@ -1,20 +0,0 @@ -# Command Namespacing - -This plugin keeps canonical command names and provides namespaced aliases to reduce marketplace conflicts. - -## Naming model - -- Canonical command: `implement-flutter-feature` -- Namespaced alias: `flutter:implement-flutter-feature` - -Both forms are supported and route to the same workflow. - -## Alias generation - -To regenerate aliases for all canonical commands: - -```bash -scripts/generate_namespaced_command_aliases.py -``` - -This creates `commands/flutter-*.md` alias files for every canonical command. diff --git a/docs/official-release-checklist.md b/docs/official-release-checklist.md index 1ad1759..49e7f0f 100644 --- a/docs/official-release-checklist.md +++ b/docs/official-release-checklist.md @@ -7,7 +7,7 @@ Use this checklist before tagging a public release. - Plugin metadata is up to date (`plugin.json`: name, version, author, description, keywords). - README clearly explains scope, commands, agents, and MCP requirements. - Changelog includes the release notes for the target version. -- Command naming and aliases are documented (`docs/command-namespacing.md`). +- Command naming is documented in README (canonical commands only). - Reference example repository is linked (`https://github.com/Wreos/flutter-cursor-plugin-example`). ## Quality diff --git a/docs/pre-release-enable-plugin.md b/docs/pre-release-enable-plugin.md index 0b585e6..07e4691 100644 --- a/docs/pre-release-enable-plugin.md +++ b/docs/pre-release-enable-plugin.md @@ -31,4 +31,4 @@ Notes: ``` 4. Reload Cursor window. -5. Verify plugin commands are available (for example `implement-flutter-feature` or `flutter:implement-flutter-feature`). +5. Verify plugin commands are available (for example `implement-flutter-feature`). diff --git a/scripts/generate_namespaced_command_aliases.py b/scripts/generate_namespaced_command_aliases.py deleted file mode 100755 index 9d47c45..0000000 --- a/scripts/generate_namespaced_command_aliases.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 - -import re -from pathlib import Path - - -FRONTMATTER_RE = re.compile(r"^---\n(.*?)\n---\n", re.DOTALL) - - -def extract_description(content: str) -> str: - match = FRONTMATTER_RE.search(content) - if not match: - return "Namespaced alias command." - frontmatter = match.group(1) - for line in frontmatter.splitlines(): - if line.strip().startswith("description:"): - return line.split(":", 1)[1].strip() - return "Namespaced alias command." - - -def main() -> None: - repo_root = Path(__file__).resolve().parents[1] - commands_dir = repo_root / "commands" - for cmd_file in sorted(commands_dir.glob("*.md")): - stem = cmd_file.stem - if stem.startswith("flutter-"): - continue - - alias_file = commands_dir / f"flutter-{stem}.md" - if alias_file.exists(): - continue - - content = cmd_file.read_text(encoding="utf-8") - description = extract_description(content) - alias_content = ( - "---\n" - f"name: flutter:{stem}\n" - f"description: Alias for `{stem}`. {description}\n" - "---\n\n" - f"Namespaced alias for `{stem}`.\n\n" - "1. Run the canonical command with the same intent.\n" - f"2. Follow `./{stem}.md`.\n" - "3. Keep output and checks identical to the canonical command.\n" - ) - alias_file.write_text(alias_content, encoding="utf-8") - print(f"Created {alias_file.relative_to(repo_root)}") - - -if __name__ == "__main__": - main() From bafd0961f359f19cc6581961828e718a9418d44f Mon Sep 17 00:00:00 2001 From: Aleksandr Lozhkovoi Date: Sun, 22 Feb 2026 08:19:41 +0100 Subject: [PATCH 2/3] bump plugin version for command surface change --- .cursor-plugin/plugin.json | 2 +- plugin.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 65db417..eb96e42 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "flutter-cursor-plugin", "displayName": "Flutter Cursor Plugin", - "version": "1.10.6", + "version": "1.11.0", "description": "Open-source Cursor plugin for end-to-end Flutter development and testing with Dart MCP, Figma MCP, practical architecture patterns, and reliable test workflows.", "author": { "name": "Aleksandr Lozhkovoi", diff --git a/plugin.json b/plugin.json index ff9124e..93273dd 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "name": "flutter-cursor-plugin", "displayName": "Flutter Cursor Plugin", - "version": "1.10.6", + "version": "1.11.0", "description": "Open-source Cursor plugin for end-to-end Flutter development and testing with Dart MCP, Figma MCP, practical architecture patterns, and reliable test workflows.", "author": "Aleksandr Lozhkovoi", "license": "MIT", From 4ba4869100ecdb50b68502dccf65eb8674f8be14 Mon Sep 17 00:00:00 2001 From: Aleksandr Lozhkovoi Date: Sun, 22 Feb 2026 08:20:28 +0100 Subject: [PATCH 3/3] mark alias removal as breaking and bump major version --- .cursor-plugin/plugin.json | 2 +- CHANGELOG.md | 1 + plugin.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index eb96e42..80c12e6 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "flutter-cursor-plugin", "displayName": "Flutter Cursor Plugin", - "version": "1.11.0", + "version": "2.0.0", "description": "Open-source Cursor plugin for end-to-end Flutter development and testing with Dart MCP, Figma MCP, practical architecture patterns, and reliable test workflows.", "author": { "name": "Aleksandr Lozhkovoi", diff --git a/CHANGELOG.md b/CHANGELOG.md index a601add..714c665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ - command: `commands/integrate-mobile-api.md` - skill: `skills/integrate-mobile-api/SKILL.md` - Removed `flutter:*` command aliases and kept canonical commands only. +- Breaking: removed `flutter:*` command aliases; use canonical command names only. - Removed alias maintenance artifacts: - deleted `docs/command-namespacing.md` - deleted `scripts/generate_namespaced_command_aliases.py` diff --git a/plugin.json b/plugin.json index 93273dd..4091fde 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "name": "flutter-cursor-plugin", "displayName": "Flutter Cursor Plugin", - "version": "1.11.0", + "version": "2.0.0", "description": "Open-source Cursor plugin for end-to-end Flutter development and testing with Dart MCP, Figma MCP, practical architecture patterns, and reliable test workflows.", "author": "Aleksandr Lozhkovoi", "license": "MIT",