Skip to content
Merged
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
26 changes: 26 additions & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "arcjet",
"version": "1.0.0",
"description": "Runtime security for your app — abuse protection, budget controls & rate limiting, prompt injection detection, and PII blocking. Connects your AI agent to the Arcjet MCP server and provides security-aware coding guidance.",
"author": {
"name": "Arcjet",
"email": "support@arcjet.com",
"url": "https://arcjet.com"
},
"homepage": "https://arcjet.com",
"repository": "https://github.com/arcjet/arcjet-plugin",
"license": "Apache-2.0",
"logo": "./assets/logo.svg",
"keywords": [
"security",
"rate-limiting",
"bot-detection",
"abuse-protection",
"budget-controls",
"waf",
"ai-security",
"prompt-injection",
"pii",
"arcjet"
]
}
25 changes: 15 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,32 @@ Thanks for your interest in contributing to the Arcjet plugin for AI coding agen

## Plugin Specification

This plugin follows the [Open Plugins Specification v1.0.0](https://open-plugins.com/plugin-builders/specification). Key structural requirements:
This plugin follows the [Open Plugins Specification v1.0.0](https://open-plugins.com/plugin-builders/specification) and is also compatible with [Claude Code](https://docs.claude.com/en/docs/claude-code/plugins) and [Cursor](https://cursor.com/docs/reference/plugins). To support all three, the manifest and MCP config are duplicated into each tool's expected location. Key structural requirements:

- **Manifest** at `.plugin/plugin.json` must include `name`, `version`, `description`, `author`, `license`, and `logo`
- **Manifest** at `.plugin/plugin.json` (Open Plugins), `.claude-plugin/plugin.json` (Claude Code), and `.cursor-plugin/plugin.json` (Cursor) — all three must stay in sync and include `name`, `version`, `description`, `author`, `license`, and `logo`
- **Rules** in `rules/` as `.mdc` files with YAML frontmatter (`description`, `globs`, `alwaysApply`)
- **Skills** in `skills/<name>/SKILL.md` with YAML frontmatter (`name`, `description`)
- **Agents** in `agents/` as `.md` files with YAML frontmatter (`name`, `description`)
- **MCP servers** in `.mcp.json` at the repo root
- **MCP servers** in `.mcp.json` (Open Plugins / Claude Code) and `mcp.json` (Cursor) at the repo root — both must stay in sync
- **Assets** in `assets/` (logo, etc.)

## Directory Structure

```
.plugin/plugin.json # Plugin manifest
rules/*.mdc # Auto-activated coding guidance
skills/*/SKILL.md # Task-oriented workflows
agents/*.md # Agent definitions
.mcp.json # MCP server configuration
scripts/ # Tooling (validation, etc.)
assets/ # Static assets
.plugin/plugin.json # Plugin manifest (Open Plugins)
.claude-plugin/plugin.json # Plugin manifest (Claude Code)
.cursor-plugin/plugin.json # Plugin manifest (Cursor)
rules/*.mdc # Auto-activated coding guidance
skills/*/SKILL.md # Task-oriented workflows
agents/*.md # Agent definitions
.mcp.json # MCP server configuration (Open Plugins / Claude Code)
mcp.json # MCP server configuration (Cursor)
scripts/ # Tooling (validation, etc.)
assets/ # Static assets
```

When updating any manifest or MCP config, update all copies so the tools stay in sync.

## Development Setup

Open this repo in a devcontainer (VS Code or GitHub Codespaces) — it installs all tooling automatically. Alternatively, install [dprint](https://dprint.dev/) manually.
Expand Down
8 changes: 8 additions & 0 deletions mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"arcjet": {
"type": "http",
"url": "https://api.arcjet.com/mcp"
}
}
}