Back to the catalog

gemini-extension

Professional-grade Gemini CLI extension including universal hooks, agent skills, modular rules, and specialized agents.

Open source Open in the app JSON README (API)

About

Professional-grade Gemini CLI extension including universal hooks, agent skills, modular rules, and specialized agents.

Details

Kind
Plugins
Topic
AI, RAG & memory
Publisher
patrickquijano
Origin
gemini
Category
ferramentas
Version
1.0.0
Last push
2026-08-01T13:13:29Z
Repository state
ativo
Language
Shell
Added
2026-08-30 14:13:39
Updated
2026-08-30 14:13:39
Origin id
patrickquijano/gemini-extension

README

# Gemini Extension

A professional-grade extension for Gemini CLI providing universal linting and formatting hooks.

## Universal Hooks

This 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.

### Supported Languages & Tools

To enable support for a specific language, install the corresponding tools listed below:

| Language / Framework | Extensions                                   | Formatting Tools                         | Linting Tools                     |
| :------------------- | :------------------------------------------- | :--------------------------------------- | :-------------------------------- |
| **JS / TS**          | `.js`, `.ts`, `.jsx`, `.tsx`, `.mjs`, `.cjs` | [Biome], [Prettier]                      | [Biome], [ESLint]                 |
| **Python**           | `.py`, `.pyi`                                | [Ruff], [Black]                          | [Ruff], [Flake8]                  |
| **Go**               | `.go`                                        | `gofmt`                                  | [golangci-lint]                   |
| **Rust**             | `.rs`                                        | `rustfmt`                                | [Clippy]                          |
| **PHP / Laravel**    | `.php`                                       | [Laravel Pint], [PHP-CS-Fixer], [PHPCBF] | [Laravel Pint], `php -l`, [PHPCS] |
| **.NET**             | `.cs`, `.vb`, `.fs`, `.cshtml`, `.razor`     | [dotnet format], [CSharpier]             | [dotnet format]                   |
| **C / C++**          | `.c`, `.cpp`, `.h`, `.hpp`, `.cc`, `.cxx`    | [clang-format]                           | [clang-tidy]                      |
| **Java**             | `.java`                                      | [google-java-format]                     | [Checkstyle]                      |
| **Ruby**             | `.rb`, `.rake`                               | [RuboCop]                                | [RuboCop]                         |
| **Swift**            | `.swift`                                     | [SwiftFormat]                            | [SwiftLint]                       |
| **Kotlin**           | `.kt`, `.kts`                                | [ktlint]                                 | [detekt], [ktlint]                |
| **Shell**            | `.sh`, `.bash`, `.zsh`                       | [shfmt]                                  | [ShellCheck]                      |
| **Web**              | `.html`, `.css`, `.scss`, `.yaml`, `.md`     | [Prettier]                               | [Stylelint] (CSS)                 |
| **Frameworks**       | `.vue`, `.svelte`, `.astro`                  | [Biome], [Prettier]                      | [Biome], [ESLint]                 |

[Biome]: https://biomejs.dev/
[Prettier]: https://prettier.io/
[ESLint]: https://eslint.org/
[Ruff]: https://docs.astral.sh/ruff/
[Black]: https://black.readthedocs.io/
[Flake8]: https://flake8.pycqa.org/
[golangci-lint]: https://golangci-lint.run/
[Clippy]: https://doc.rust-lang.org/clippy/
[Laravel Pint]: https://laravel.com/docs/pint
[PHP-CS-Fixer]: https://cs.symfony.com/
[PHPCBF]: https://github.com/squizlabs/PHP_CodeSniffer
[PHPCS]: https://github.com/squizlabs/PHP_CodeSniffer
[dotnet format]: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-format
[CSharpier]: https://csharpier.com/
[clang-format]: https://clang.llvm.org/docs/ClangFormat.html
[clang-tidy]: https://clang.llvm.org/extra/clang-tidy/
[google-java-format]: https://github.com/google/google-java-format
[Checkstyle]: https://checkstyle.sourceforge.io/
[RuboCop]: https://rubocop.org/
[SwiftFormat]: https://github.com/nicklockwood/SwiftFormat
[SwiftLint]: https://github.com/realm/SwiftLint
[ktlint]: https://pinterest.github.io/ktlint/
[detekt]: https://detekt.dev/
[shfmt]: https://github.com/mvdan/sh
[ShellCheck]: https://www.shellcheck.net/
[Stylelint]: https://stylelint.io/

### Configuration

Hooks are registered in `hooks/hooks.json` and executed via POSIX-compliant scripts in `hooks/scripts/`.

- **Event:** `AfterTool` (triggers after file-modifying tools).
- **Timeout:** 15 seconds per hook.
- **Protocol:** Standard Gemini CLI JSON protocol (stdin/stdout).

## Framework-Specific Modular Rules

This extension provides robust, enterprise-grade rules for specific frameworks. These rules are **not** imported by default to keep the global context lean.

To use these rules in your project, import them into your project's `GEMINI.md` using the following syntax:

### Next.js

```markdown
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/architecture.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/code-quality.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/dependency-management.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/documentation.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/naming-conventions.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/performance.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/security.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nextjs/testing.md -->
```

### .NET

```markdown
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/architecture.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/code-quality.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/dependency-management.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/documentation.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/naming-conventions.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/performance.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/security.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/dotnet/testing.md -->
```

### Laravel

```markdown
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/architecture.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/code-quality.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/dependency-management.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/documentation.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/error-handling.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/naming-conventions.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/performance.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/security.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/laravel/testing.md -->
```

### Nuxt.js

```markdown
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/architecture.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/code-quality.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/dependency-management.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/documentation.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/naming-conventions.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/performance.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/security.md -->
<!-- Imported from: @patrickquijano/gemini-extension/rules/nuxtjs/testing.md -->
```

More