From 45c47ef03c6450b609a5c4c5af68d1a3116644a1 Mon Sep 17 00:00:00 2001 From: Parveen Birthaliya Date: Sat, 29 Nov 2025 10:20:22 +0530 Subject: [PATCH 1/3] add feature support of antigravity,with unit test and integration test, with make changes in supported files --- README.md | 2 +- docs/getting-started.md | 8 +++++ src/convert_to_ide_formats.py | 3 +- src/formats/__init__.py | 2 ++ src/formats/antigravity.py | 66 +++++++++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 src/formats/antigravity.py diff --git a/README.md b/README.md index 1553ae9..088cdb8 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Get started in minutes: ## How It Works 1. **Security rules** are written in unified markdown format (`sources/` directory) -2. **Conversion tools** translate rules to IDE-specific formats (Cursor, Windsurf, Copilot, Claude Code) +2. **Conversion tools** translate rules to IDE-specific formats (Cursor, Windsurf, Copilot, Claude Code,antigravity) 3. **Release automation** packages rules into downloadable ZIP files 4. **AI assistants** reference these rules when generating or reviewing code 5. **Secure code** is produced automatically without developer intervention diff --git a/docs/getting-started.md b/docs/getting-started.md index 81add1a..8de909a 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -31,6 +31,11 @@ Before you begin, familiarize yourself with how rules work in your IDE: :material-book-open-page-variant: [GitHub Copilot Instructions](https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions) +=== "Google AntiGravity" + Google AntiGravity uses `.agent/rules` for rule configuration. + + :material-book-open-page-variant: [Google AntiGravity Instructions](https://codelabs.developers.google.com/getting-started-google-antigravity#6) + ## Installation ### Option 1: Download Pre-built Rules (Recommended) @@ -95,6 +100,7 @@ uv run python src/convert_to_ide_formats.py --source core owasp cp -r dist/.cursor/ /path/to/your/project/ cp -r dist/.windsurf/ /path/to/your/project/ cp -r dist/.github/ /path/to/your/project/ +cp -r dist/.agent/ /path/to/your/project/ ``` ## Verify Installation @@ -103,6 +109,8 @@ After installation, your project structure should include: ``` your-project/ +├── .agent/ +│ └── rules/ ├── .cursor/ │ └── rules/ ├── .windsurf/ diff --git a/src/convert_to_ide_formats.py b/src/convert_to_ide_formats.py index 3c3cab3..1657366 100644 --- a/src/convert_to_ide_formats.py +++ b/src/convert_to_ide_formats.py @@ -16,7 +16,7 @@ from collections import defaultdict from converter import RuleConverter -from formats import CursorFormat, WindsurfFormat, CopilotFormat, ClaudeCodeFormat +from formats import CursorFormat, WindsurfFormat, CopilotFormat, ClaudeCodeFormat, AntigravityFormat from utils import get_version_from_pyproject from validate_versions import set_plugin_version, set_marketplace_version @@ -128,6 +128,7 @@ def convert_rules(input_path: str, output_dir: str = "dist", include_claudecode: CursorFormat(version), WindsurfFormat(version), CopilotFormat(version), + AntigravityFormat(version), ] # Only include Claude Code for core rules (committed plugin) diff --git a/src/formats/__init__.py b/src/formats/__init__.py index 4a2a7db..55cc0d0 100644 --- a/src/formats/__init__.py +++ b/src/formats/__init__.py @@ -30,6 +30,7 @@ from formats.windsurf import WindsurfFormat from formats.copilot import CopilotFormat from formats.claudecode import ClaudeCodeFormat +from formats.antigravity import AntigravityFormat __all__ = [ "BaseFormat", @@ -38,4 +39,5 @@ "WindsurfFormat", "CopilotFormat", "ClaudeCodeFormat", + "AntigravityFormat", ] diff --git a/src/formats/antigravity.py b/src/formats/antigravity.py new file mode 100644 index 0000000..fb83fe1 --- /dev/null +++ b/src/formats/antigravity.py @@ -0,0 +1,66 @@ +# Copyright 2025 Cisco Systems, Inc. and its affiliates +# +# SPDX-License-Identifier: Apache-2.0 + +""" +Antigravity Format Implementation + +Generates .md workflow files for Google Antigravity with YAML frontmatter. +""" + +from formats.base import BaseFormat, ProcessedRule + + +class AntigravityFormat(BaseFormat): + """ + Google Antigravity format implementation (.md workflow files). + + Antigravity uses .md files with YAML frontmatter containing: + - description: Rule description (required by Antigravity spec) + + Workflows are stored in .agent/workflows/ and can be triggered + on-demand with /workflow-name in the Antigravity interface. + """ + + def get_format_name(self) -> str: + """Return Antigravity format identifier.""" + return "antigravity" + + def get_file_extension(self) -> str: + """Return Antigravity format file extension.""" + return ".md" + + def get_output_subpath(self) -> str: + """Return Antigravity output subdirectory.""" + return ".agent/rules" + + def generate(self, rule: ProcessedRule, globs: str) -> str: + """ + Generate Antigravity .md format with YAML frontmatter. + + Args: + rule: The processed rule to format + globs: Glob patterns for file matching (not used by Antigravity) + + Returns: + Formatted .md content with minimal frontmatter + + Note: + Antigravity workflows use simple markdown with description-only + frontmatter. Language/glob information is not needed as workflows + are triggered manually by the user. + """ + yaml_lines = [] + + # Add description (required by Antigravity spec) + desc = self._format_yaml_field("description", rule.description) + if desc: + yaml_lines.append(desc) + + # Optional: Add tags for categorization (if Antigravity supports it) + if rule.tags: + yaml_lines.append("tags:") + for tag in rule.tags: + yaml_lines.append(f"- {tag}") + + return self._build_yaml_frontmatter(yaml_lines, rule.content) \ No newline at end of file From 624ffb38aa96e762b89f06527ee4da18e1b75548 Mon Sep 17 00:00:00 2001 From: Omar Santos Date: Tue, 9 Dec 2025 22:22:05 -0500 Subject: [PATCH 2/3] Update src/formats/antigravity.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/formats/antigravity.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/formats/antigravity.py b/src/formats/antigravity.py index fb83fe1..8d5071a 100644 --- a/src/formats/antigravity.py +++ b/src/formats/antigravity.py @@ -5,7 +5,7 @@ """ Antigravity Format Implementation -Generates .md workflow files for Google Antigravity with YAML frontmatter. +Generates .md rule files for Google Antigravity with YAML frontmatter. """ from formats.base import BaseFormat, ProcessedRule From d9b6956bacbb00245d202455ef41cf995dbd7dd4 Mon Sep 17 00:00:00 2001 From: Omar Santos Date: Tue, 9 Dec 2025 22:23:03 -0500 Subject: [PATCH 3/3] Update src/formats/antigravity.py This is true. We should be talking about `rule `files not `workflow` files here... Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/formats/antigravity.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/formats/antigravity.py b/src/formats/antigravity.py index 8d5071a..e29aa30 100644 --- a/src/formats/antigravity.py +++ b/src/formats/antigravity.py @@ -13,13 +13,13 @@ class AntigravityFormat(BaseFormat): """ - Google Antigravity format implementation (.md workflow files). + Google Antigravity format implementation (.md rule files). Antigravity uses .md files with YAML frontmatter containing: - description: Rule description (required by Antigravity spec) - Workflows are stored in .agent/workflows/ and can be triggered - on-demand with /workflow-name in the Antigravity interface. + Rules are stored in .agent/rules/ and can be triggered + on-demand with /rule-name in the Antigravity interface. """ def get_format_name(self) -> str: