Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions plugins/nette-dev/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "nette-dev",
"version": "1.2.0",
"description": "Coding standards and conventions for Nette Framework contributors",
"author": {
"name": "David Grudl"
},
"keywords": [
"php",
"nette",
"coding-standards",
"phpdoc",
"contributor"
],
"skills": "./skills/",
"interface": {
"displayName": "Nette Contributor Tools",
"shortDescription": "Coding conventions for Nette contributors",
"developerName": "David Grudl",
"category": "Developer Tools",
"longDescription": "Coding standards and conventions for Nette Framework contributors",
"defaultPrompt": [
"Use $phpstan-analysis to investigate PHPStan errors in this project."
],
"capabilities": [
"Read",
"Write"
]
}
}
3 changes: 3 additions & 0 deletions plugins/nette-dev/skills/commit-messages/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Commit Messages"
short_description: "Write commits using Nette repository conventions"
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "PHP Coding Standards"
short_description: "Apply Nette PHP formatting and naming conventions"
3 changes: 3 additions & 0 deletions plugins/nette-dev/skills/php-doc/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "PHP Documentation"
short_description: "Write concise phpDoc using Nette conventions"
3 changes: 3 additions & 0 deletions plugins/nette-dev/skills/phpstan-analysis/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "PHPStan Analysis"
short_description: "Resolve PHPStan errors and maintain type tests"
30 changes: 30 additions & 0 deletions plugins/nette-lint/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "nette-lint",
"version": "1.1.0",
"description": "Automatic validation of PHP, Latte, NEON and JavaScript/TypeScript files after each edit. These hooks target Claude Code Edit/Write events; Codex hook compatibility is not verified.",
"author": {
"name": "David Grudl"
},
"keywords": [
"php",
"nette",
"latte",
"neon",
"lint",
"validation"
],
"interface": {
"displayName": "Nette Lint",
"shortDescription": "File validation hooks for Claude Code",
"developerName": "David Grudl",
"category": "Developer Tools",
"longDescription": "Automatic validation of PHP, Latte, NEON and JavaScript/TypeScript files after each edit. These hooks target Claude Code Edit/Write events; Codex hook compatibility is not verified.",
"defaultPrompt": [
"Explain the bundled lint hooks and how to run equivalent project checks manually."
],
"capabilities": [
"Read",
"Write"
]
}
}
35 changes: 35 additions & 0 deletions plugins/nette/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "nette",
"version": "1.2.0",
"description": "Conventions and best practices for Nette Framework, Latte templating engine, and NEON configuration format",
"author": {
"name": "David Grudl"
},
"keywords": [
"php",
"nette",
"latte",
"neon",
"framework",
"mvc",
"templates",
"forms",
"database",
"di"
],
"skills": "./skills/",
"interface": {
"displayName": "Nette Framework",
"shortDescription": "Nette, Latte and NEON development skills",
"developerName": "David Grudl",
"category": "Developer Tools",
"longDescription": "Conventions and best practices for Nette Framework, Latte templating engine, and NEON configuration format",
"defaultPrompt": [
"Use $nette-architecture to review my Nette application structure."
],
"capabilities": [
"Read",
"Write"
]
}
}
3 changes: 3 additions & 0 deletions plugins/nette/skills/frontend-development/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Frontend Development"
short_description: "Build Nette frontends with Vite, Naja and Tailwind"
3 changes: 3 additions & 0 deletions plugins/nette/skills/latte-templates/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Latte Templates"
short_description: "Create Latte templates, layouts and snippets"
3 changes: 3 additions & 0 deletions plugins/nette/skills/neon-format/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "NEON Format"
short_description: "Write and validate NEON configuration files"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-architecture/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Architecture"
short_description: "Design Nette presenters, modules and applications"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-caching/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Caching"
short_description: "Use Nette cache storage, dependencies and invalidation"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-components/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Components"
short_description: "Build Nette components, signals and AJAX snippets"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-configuration/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Configuration"
short_description: "Configure Nette DI services and autowiring"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-database/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Database"
short_description: "Work with Nette Explorer, entities and queries"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-forms/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Forms"
short_description: "Build and validate forms with Nette Forms"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-http/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette HTTP"
short_description: "Handle Nette requests, responses, sessions and cookies"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-mail/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Mail"
short_description: "Compose and send email with Nette Mail"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-routing/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Routing"
short_description: "Configure Nette routes and troubleshoot URL generation"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-schema/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Schema"
short_description: "Validate and normalize data with Nette Schema"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-security/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Security"
short_description: "Implement Nette authentication and authorization"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-tester/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Tester"
short_description: "Write and debug tests using Nette Tester"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-upgrading/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Upgrading"
short_description: "Migrate retired Nette APIs to their current equivalents"
3 changes: 3 additions & 0 deletions plugins/nette/skills/nette-utils/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Nette Utils"
short_description: "Use Nette utilities for strings, files and collections"
3 changes: 3 additions & 0 deletions plugins/nette/skills/tracy-debugging/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "Tracy Debugging"
short_description: "Debug PHP errors with Tracy BlueScreen and Tracy Bar"
28 changes: 28 additions & 0 deletions plugins/php-fixer/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "php-fixer",
"version": "1.1.0",
"description": "Nette coding standard installation and PHP fixer guidance. Automatic fixing hooks target Claude Code; Codex hook compatibility is not verified.",
"author": {
"name": "David Grudl"
},
"keywords": [
"php",
"coding-standards",
"fixer"
],
"skills": "./skills/",
"interface": {
"displayName": "PHP Fixer",
"shortDescription": "Nette coding standard setup and fixer guidance",
"developerName": "David Grudl",
"category": "Developer Tools",
"longDescription": "Nette coding standard installation and PHP fixer guidance. Automatic fixing hooks target Claude Code; Codex hook compatibility is not verified.",
"defaultPrompt": [
"Use $install-php-fixer to set up the Nette coding standard."
],
"capabilities": [
"Read",
"Write"
]
}
}
4 changes: 2 additions & 2 deletions plugins/php-fixer/skills/install-php-fixer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ php "$(composer global config home)/vendor/bin/ecs" --version

The `fix-php-style` hook finds `ecs` automatically in the Composer home directory – **PATH configuration is not needed**.

If verification succeeds, confirm to the user that Nette Coding Standard is installed and the `fix-php-style` hook will automatically fix code style after editing PHP files.
If verification succeeds, confirm that Nette Coding Standard is installed. In Claude Code, the enabled `fix-php-style` hook automatically fixes code style after editing PHP files. In Codex, hook compatibility has not been verified; do not promise automatic fixing and run ECS explicitly when needed.

---

Expand All @@ -73,7 +73,7 @@ If verification succeeds, confirm to the user that Nette Coding Standard is inst
```
- If not available: Skip this step entirely (don't ask the user)

2. **If `gh` is available**, use AskUserQuestion:
2. **If `gh` is available**, use AskUserQuestion or the host's available user-question mechanism:
- Question: "Would you like to support these projects with a GitHub star?"
- Options: "Yes, I'd love to!" / "No, thanks"

Expand Down
6 changes: 6 additions & 0 deletions plugins/php-fixer/skills/install-php-fixer/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
interface:
display_name: "Install PHP Fixer"
short_description: "Install the global Nette coding standard and ECS"

policy:
allow_implicit_invocation: false
6 changes: 5 additions & 1 deletion plugins/php-fixer/skills/php-auto-fixer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ description: "CRITICAL: Read BEFORE writing or modifying any PHP file. A PostToo

# PHP Auto-Fixer

## Host compatibility

The automatic behavior below assumes the Claude Code `Edit|Write` hook is active. In Codex, hook compatibility has not been verified: check whether the fixer actually ran, and run the project's coding-standard command explicitly when needed. Keep imports and their uses in the same edit in either host.

A PostToolUse hook runs `ecs fix` on every PHP file after each Edit or Write operation. The file is automatically reformatted and cleaned up - no manual formatting needed.

## Editing Order for `use` Statements
Expand Down Expand Up @@ -86,4 +90,4 @@ Patterns are gitignore-like, relative to the config file: a pattern without a sl

## Installation

If the fixer is not installed, run `/php-fixer:install-php-fixer`.
If the fixer is not installed, run `/php-fixer:install-php-fixer` in Claude Code or invoke `$install-php-fixer` in Codex.
3 changes: 3 additions & 0 deletions plugins/php-fixer/skills/php-auto-fixer/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "PHP Auto-Fixer"
short_description: "Keep PHP imports safe during automatic style fixing"
35 changes: 34 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
# Nette Plugins for Claude Code
# Nette Plugins for Claude Code and Codex

Plugins for [Claude Code](https://claude.com/product/claude-code) – the AI-powered coding assistant by Anthropic. These plugins give Claude deep knowledge of the Nette Framework ecosystem, including best practices, coding conventions, and automatic file validation.

The same skills are also available in OpenAI Codex, with dedicated plugin manifests and skill UI metadata. Automatic validation and fixing hooks currently target Claude Code; their compatibility with Codex has not been verified.

<img width="1536" height="601" alt="image" src="https://github.com/user-attachments/assets/8b9443b6-9f37-418d-9212-3f4fd4356961" />

## Installation

### Claude Code

First, add the Nette marketplace to Claude Code (and enable auto-update):

```
Expand Down Expand Up @@ -37,6 +41,35 @@ For automatic PHP code style fixing:
/install-php-fixer
```

### Codex

From a local checkout of this repository, register the marketplace:

```bash
codex plugin marketplace add /absolute/path/to/claude-code
```

The marketplace name comes from the catalog's `name` field and is `nette`, regardless of the checkout directory or Git branch. To list and install plugins from the CLI:

```bash
codex plugin list --marketplace nette --available --json
codex plugin add nette@nette --json
```

Use `codex plugin marketplace list --json` to check registered marketplace names. Filtering by an unregistered name returns an empty plugin list.

Open the plugin directory in the Codex app, select the `nette` marketplace, and install `nette` for application development or `nette-dev` for framework contributions. Start a new conversation after installation.

Codex can reuse the existing `.claude-plugin/marketplace.json`; no second catalog is needed. Each plugin has a `.codex-plugin/plugin.json` manifest, and each skill has `agents/openai.yaml` with its display name and short description. Both assistants share the original `SKILL.md` files and references.

For example, ask Codex to use `$nette-forms` to build a form or `$phpstan-analysis` to investigate a PHPStan error. The `php-fixer` plugin also provides `$install-php-fixer`, which remains explicitly invoked only.

The install skill preserves Claude Code's `disable-model-invocation: true` and declares Codex's `policy.allow_implicit_invocation: false` in `agents/openai.yaml`. The bundled Codex plugin validator rejects the former flag, so `php-fixer` still requires an installation check in the target Codex client. The `nette`, `nette-dev`, and `nette-lint` manifests pass that validator.

The `nette-lint` plugin contains only hooks, with no skills. Its hooks and the automatic fixer use Claude Code's `Edit|Write` events and input format. Installing metadata does not adapt those events to Codex tools; do not assume validation or formatting runs automatically in Codex. Run the relevant project tools explicitly when needed.

See the [OpenAI plugin documentation](https://developers.openai.com/plugins/build/plugins) for supported clients, marketplace setup, and hook requirements.

## Plugins

### `nette` – For Application Developers
Expand Down