{
  "markdown": "# Gemini Extension\n\nA professional-grade extension for Gemini CLI providing universal linting and formatting hooks.\n\n## Universal Hooks\n\nThis extension automatically formats and lints files whenever they are modified via `write_file` or `replace`. It supports a wide array of languages and frameworks by detecting installed binaries on your system.\n\n### Supported Languages & Tools\n\nTo enable support for a specific language, install the corresponding tools listed below:\n\n| Language / Framework | Extensions                                   | Formatting Tools                         | Linting Tools                     |\n| :------------------- | :------------------------------------------- | :--------------------------------------- | :-------------------------------- |\n| **JS / TS**          | `.js`, `.ts`, `.jsx`, `.tsx`, `.mjs`, `.cjs` | [Biome], [Prettier]                      | [Biome], [ESLint]                 |\n| **Python**           | `.py`, `.pyi`                                | [Ruff], [Black]                          | [Ruff], [Flake8]                  |\n| **Go**               | `.go`                                        | `gofmt`                                  | [golangci-lint]                   |\n| **Rust**             | `.rs`                                        | `rustfmt`                                | [Clippy]                          |\n| **PHP / Laravel**    | `.php`                                       | [Laravel Pint], [PHP-CS-Fixer], [PHPCBF] | [Laravel Pint], `php -l`, [PHPCS] |\n| **.NET**             | `.cs`, `.vb`, `.fs`, `.cshtml`, `.razor`     | [dotnet format], [CSharpier]             | [dotnet format]                   |\n| **C / C++**          | `.c`, `.cpp`, `.h`, `.hpp`, `.cc`, `.cxx`    | [clang-format]                           | [clang-tidy]                      |\n| **Java**             | `.java`                                      | [google-java-format]                     | [Checkstyle]                      |\n| **Ruby**             | `.rb`, `.rake`                               | [RuboCop]                                | [RuboCop]                         |\n| **Swift**            | `.swift`                                     | [SwiftFormat]                            | [SwiftLint]                       |\n| **Kotlin**           | `.kt`, `.kts`                                | [ktlint]                                 | [detekt], [ktlint]                |\n| **Shell**            | `.sh`, `.bash`, `.zsh`                       | [shfmt]                                  | [ShellCheck]                      |\n| **Web**              | `.html`, `.css`, `.scss`, `.yaml`, `.md`     | [Prettier]                               | [Stylelint] (CSS)                 |\n| **Frameworks**       | `.vue`, `.svelte`, `.astro`                  | [Biome], [Prettier]                      | [Biome], [ESLint]                 |\n\n[Biome]: https://biomejs.dev/\n[Prettier]: https://prettier.io/\n[ESLint]: https://eslint.org/\n[Ruff]: https://docs.astral.sh/ruff/\n[Black]: https://black.readthedocs.io/\n[Flake8]: https://flake8.pycqa.org/\n[golangci-lint]: https://golangci-lint.run/\n[Clippy]: https://doc.rust-lang.org/clippy/\n[Laravel Pint]: https://laravel.com/docs/pint\n[PHP-CS-Fixer]: https://cs.symfony.com/\n[PHPCBF]: https://github.com/squizlabs/PHP_CodeSniffer\n[PHPCS]: https://github.com/squizlabs/PHP_CodeSniffer\n[dotnet format]: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-format\n[CSharpier]: https://csharpier.com/\n[clang-format]: https://clang.llvm.org/docs/ClangFormat.html\n[clang-tidy]: https://clang.llvm.org/extra/clang-tidy/\n[google-java-format]: https://github.com/google/google-java-format\n[Checkstyle]: https://checkstyle.sourceforge.io/\n[RuboCop]: https://rubocop.org/\n[SwiftFormat]: https://github.com/nicklockwood/SwiftFormat\n[SwiftLint]: https://github.com/realm/SwiftLint\n[ktlint]: https://pinterest.github.io/ktlint/\n[detekt]: https://detekt.dev/\n[shfmt]: https://github.com/mvdan/sh\n[ShellCheck]: https://www.shellcheck.net/\n[Stylelint]: https://stylelint.io/\n\n### Configuration\n\nHooks are registered in `hooks/hooks.json` and executed via POSIX-compliant scripts in `hooks/scripts/`.\n\n- **Event:** `AfterTool` (triggers after file-modifying tools).\n- **Timeout:** 15 seconds per hook.\n- **Protocol:** Standard Gemini CLI JSON protocol (stdin/stdout).\n\n## Framework-Specific Modular Rules\n\nThis extension provides robust, enterprise-grade rules for specific frameworks. These rules are **not** imported by default to keep the global context lean.\n\nTo use these rules in your project, import them into your project's `GEMINI.md` using the following syntax:\n\n### Next.js\n\n```markdown\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/architecture.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/code-quality.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/dependency-management.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/documentation.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/naming-conventions.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/performance.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/security.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/testing.md -->\n```\n\n### .NET\n\n```markdown\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/architecture.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/code-quality.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/dependency-management.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/documentation.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/naming-conventions.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/performance.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/security.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/testing.md -->\n```\n\n### Laravel\n\n```markdown\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/architecture.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/code-quality.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/dependency-management.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/documentation.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/error-handling.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/naming-conventions.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/performance.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/security.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/testing.md -->\n```\n\n### Nuxt.js\n\n```markdown\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/architecture.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/code-quality.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/dependency-management.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/documentation.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/naming-conventions.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/performance.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/security.md -->\n<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/testing.md -->\n```\n",
  "bytes": 7644,
  "sha": "d9f8bd968f22cf5e06741196e8e9c2a1c22a2e6eb1fa15fbee199fe6c666e048",
  "repo_slug": "patrickquijano/gemini-extension",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_patrickquijano_gemini_extension_6f90dcc1/readme"
}