From 624cd64a8c84f97cfb8a1115ef3f411ccac4efa1 Mon Sep 17 00:00:00 2001 From: Kevin Niparko Date: Mon, 9 Mar 2026 22:07:08 -0700 Subject: [PATCH] remove starter boilerplate from plugin repo Point the marketplace at the real Firetiger plugin so validation reflects the published repo structure instead of leftover template copies. Made-with: Cursor --- .cursor-plugin/marketplace.json | 21 ++---- .cursor-plugin/plugin.json | 15 ++++ README.md | 22 +++++- docs/add-a-plugin.md | 75 ------------------- .../.cursor-plugin/plugin.json | 13 ---- plugins/starter-advanced/README.md | 13 ---- .../agents/security-reviewer.md | 16 ---- plugins/starter-advanced/assets/logo.svg | 7 -- .../commands/deploy-staging.md | 11 --- plugins/starter-advanced/hooks/hooks.json | 20 ----- plugins/starter-advanced/mcp.json | 11 --- .../rules/coding-standards.mdc | 11 --- .../rules/review-checklist.mdc | 13 ---- plugins/starter-advanced/scripts/audit.sh | 5 -- .../starter-advanced/scripts/format-code.sh | 5 -- .../scripts/validate-shell.sh | 5 -- .../skills/code-reviewer/SKILL.md | 20 ----- .../starter-simple/.cursor-plugin/plugin.json | 13 ---- plugins/starter-simple/README.md | 8 -- plugins/starter-simple/assets/logo.svg | 7 -- .../starter-simple/rules/coding-standards.mdc | 11 --- .../skills/code-reviewer/SKILL.md | 20 ----- scripts/validate-template.mjs | 8 +- 23 files changed, 46 insertions(+), 304 deletions(-) create mode 100644 .cursor-plugin/plugin.json delete mode 100644 docs/add-a-plugin.md delete mode 100644 plugins/starter-advanced/.cursor-plugin/plugin.json delete mode 100644 plugins/starter-advanced/README.md delete mode 100644 plugins/starter-advanced/agents/security-reviewer.md delete mode 100644 plugins/starter-advanced/assets/logo.svg delete mode 100644 plugins/starter-advanced/commands/deploy-staging.md delete mode 100644 plugins/starter-advanced/hooks/hooks.json delete mode 100644 plugins/starter-advanced/mcp.json delete mode 100644 plugins/starter-advanced/rules/coding-standards.mdc delete mode 100644 plugins/starter-advanced/rules/review-checklist.mdc delete mode 100644 plugins/starter-advanced/scripts/audit.sh delete mode 100644 plugins/starter-advanced/scripts/format-code.sh delete mode 100644 plugins/starter-advanced/scripts/validate-shell.sh delete mode 100644 plugins/starter-advanced/skills/code-reviewer/SKILL.md delete mode 100644 plugins/starter-simple/.cursor-plugin/plugin.json delete mode 100644 plugins/starter-simple/README.md delete mode 100644 plugins/starter-simple/assets/logo.svg delete mode 100644 plugins/starter-simple/rules/coding-standards.mdc delete mode 100644 plugins/starter-simple/skills/code-reviewer/SKILL.md diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 1d1bc47..7d83d04 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -1,24 +1,17 @@ { - "name": "cursor-plugin-starters", + "name": "firetiger-marketplace", "owner": { - "name": "Your Org", - "email": "plugins@example.com" + "name": "Firetiger" }, "metadata": { - "description": "Starter marketplace template for Cursor plugins", - "version": "0.1.0", - "pluginRoot": "plugins" + "description": "Marketplace manifest for the Firetiger Cursor plugin", + "version": "0.1.0" }, "plugins": [ { - "name": "starter-simple", - "source": "./plugins/starter-simple", - "description": "Minimal plugin with rules and skills only" - }, - { - "name": "starter-advanced", - "source": "./plugins/starter-advanced", - "description": "Full-featured plugin with rules, skills, agents, commands, hooks, and MCP" + "name": "firetiger", + "source": ".", + "description": "Firetiger observability plugin with skills and MCP access" } ] } diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json new file mode 100644 index 0000000..fd98726 --- /dev/null +++ b/.cursor-plugin/plugin.json @@ -0,0 +1,15 @@ +{ + "name": "firetiger", + "version": "0.1.0", + "description": "Cursor plugin for Firetiger observability workflows and MCP-powered investigations.", + "author": { + "name": "Firetiger" + }, + "homepage": "https://firetiger.com", + "repository": "https://github.com/firetigerai/cursor-plugin", + "license": "MIT", + "keywords": ["cursor", "plugin", "observability", "firetiger", "mcp"], + "logo": "assets/firetiger.svg", + "skills": "skills", + "mcpServers": "mcp.json" +} diff --git a/README.md b/README.md index 9f55d2d..ce7b16e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,20 @@

- Cursor + Firetiger Logos + Firetiger logo

# Firetiger Cursor Plugin -The official [Cursor](https://cursor.com) plugin for [Firetiger](https://firetiger.com). Firetiger agents monitor, investigate, catalog issues, and apply runbooks autonomously -- the Cursor agents write all your code, Firetiger agents makes sure it works in prod. +The official [Cursor](https://cursor.com) plugin for [Firetiger](https://firetiger.com). Firetiger agents monitor, investigate, catalog issues, and apply runbooks autonomously while Cursor helps you build and debug code. + +## Repository Layout + +This repository publishes a single plugin: + +- `.cursor-plugin/plugin.json`: plugin manifest +- `.cursor-plugin/marketplace.json`: marketplace manifest pointing at the root plugin +- `skills/`: Firetiger skills exposed to Cursor +- `mcp.json`: Firetiger MCP server configuration +- `assets/firetiger.svg`: plugin logo ## What's Included @@ -23,6 +33,14 @@ Connect to Firetiger's API for querying telemetry data, managing investigations, | `firetiger-plan` | Plan and create new AI agents for automating workflows | | `firetiger-run` | Run existing agents by creating sessions and interacting with them | +## Validation + +Run the repository check before publishing changes: + +```bash +node scripts/validate-template.mjs +``` + ## Resources - [Firetiger Documentation](https://docs.firetiger.com) diff --git a/docs/add-a-plugin.md b/docs/add-a-plugin.md deleted file mode 100644 index b7b3414..0000000 --- a/docs/add-a-plugin.md +++ /dev/null @@ -1,75 +0,0 @@ -# Add a plugin - -Add a new plugin under `plugins/` and register it in `.cursor-plugin/marketplace.json`. - -## 1. Create plugin directory - -Create a new folder: - -```text -plugins/my-new-plugin/ -``` - -Add the required manifest: - -```text -plugins/my-new-plugin/.cursor-plugin/plugin.json -``` - -Example manifest: - -```json -{ - "name": "my-new-plugin", - "displayName": "My New Plugin", - "version": "0.1.0", - "description": "Describe what this plugin does", - "author": { - "name": "Your Org" - }, - "logo": "assets/logo.svg" -} -``` - -## 2. Add plugin components - -Add only the components you need: - -- `rules/` with `.mdc` files (YAML frontmatter required) -- `skills//SKILL.md` (YAML frontmatter required) -- `agents/*.md` (YAML frontmatter required) -- `commands/*.(md|mdc|markdown|txt)` (frontmatter recommended) -- `hooks/hooks.json` and `scripts/*` for automation hooks -- `mcp.json` for MCP server definitions -- `assets/logo.svg` for marketplace display - -## 3. Register in marketplace manifest - -Edit `.cursor-plugin/marketplace.json` and append a new entry: - -```json -{ - "name": "my-new-plugin", - "source": "./plugins/my-new-plugin", - "description": "Describe your plugin" -} -``` - -`source` is the relative path from the repository root to the plugin folder. - -## 4. Validate - -```bash -node scripts/validate-template.mjs -``` - -Fix all reported errors before committing. - -## 5. Common pitfalls - -- Plugin `name` not kebab-case. -- `source` path in marketplace manifest does not match folder name. -- Missing `.cursor-plugin/plugin.json` in plugin folder. -- Missing frontmatter keys (`name`, `description`) in skills, agents, or commands. -- Rule files missing frontmatter `description`. -- Broken relative paths for `logo`, `hooks`, or `mcpServers` in manifest files. diff --git a/plugins/starter-advanced/.cursor-plugin/plugin.json b/plugins/starter-advanced/.cursor-plugin/plugin.json deleted file mode 100644 index 6e41288..0000000 --- a/plugins/starter-advanced/.cursor-plugin/plugin.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "starter-advanced", - "displayName": "Advanced Starter", - "version": "0.1.0", - "description": "Full-featured Cursor plugin starter with rules, skills, agents, commands, hooks, and MCP.", - "author": { - "name": "Your Org", - "email": "plugins@example.com" - }, - "license": "MIT", - "keywords": ["cursor", "plugin", "rules", "skills", "agents", "commands", "hooks", "mcp"], - "logo": "assets/logo.svg" -} diff --git a/plugins/starter-advanced/README.md b/plugins/starter-advanced/README.md deleted file mode 100644 index e5a2f7e..0000000 --- a/plugins/starter-advanced/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# starter-advanced - -Full-featured Cursor plugin starter. - -## Included - -- `rules/`: coding standards and review checklist -- `skills/code-reviewer/`: code review skill -- `agents/`: security reviewer agent -- `commands/`: deploy-staging command -- `hooks/hooks.json`: hook definitions -- `scripts/`: hook script placeholders -- `mcp.json`: MCP server config diff --git a/plugins/starter-advanced/agents/security-reviewer.md b/plugins/starter-advanced/agents/security-reviewer.md deleted file mode 100644 index a47b26e..0000000 --- a/plugins/starter-advanced/agents/security-reviewer.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: security-reviewer -description: Security-focused reviewer that checks for common vulnerabilities and unsafe defaults. ---- - -# Security reviewer - -You are a security-focused reviewer. Prioritize concrete, high-impact findings. - -## Review focus - -1. Injection risks in SQL, shell commands, and rendered HTML content. -2. Sensitive data handling (tokens, credentials, personal data). -3. Authentication and authorization checks on privileged operations. -4. Safe defaults in configuration and network-facing behavior. -5. Dependency and supply-chain hygiene where relevant. diff --git a/plugins/starter-advanced/assets/logo.svg b/plugins/starter-advanced/assets/logo.svg deleted file mode 100644 index 078f604..0000000 --- a/plugins/starter-advanced/assets/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - Starter Advanced Logo - Full-featured plugin logo with lightning and badge. - - - - diff --git a/plugins/starter-advanced/commands/deploy-staging.md b/plugins/starter-advanced/commands/deploy-staging.md deleted file mode 100644 index 42ec2db..0000000 --- a/plugins/starter-advanced/commands/deploy-staging.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: deploy-staging -description: Deploy the current branch to the staging environment after validation. ---- - -# Deploy to staging - -1. Run project validation checks and tests. -2. Build artifacts for the target environment. -3. Publish or deploy to staging. -4. Run smoke checks and report status. diff --git a/plugins/starter-advanced/hooks/hooks.json b/plugins/starter-advanced/hooks/hooks.json deleted file mode 100644 index f023f07..0000000 --- a/plugins/starter-advanced/hooks/hooks.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "hooks": { - "afterFileEdit": [ - { - "command": "./scripts/format-code.sh" - } - ], - "beforeShellExecution": [ - { - "command": "./scripts/validate-shell.sh", - "matcher": "rm|curl|wget" - } - ], - "sessionEnd": [ - { - "command": "./scripts/audit.sh" - } - ] - } -} diff --git a/plugins/starter-advanced/mcp.json b/plugins/starter-advanced/mcp.json deleted file mode 100644 index 19bcbb3..0000000 --- a/plugins/starter-advanced/mcp.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "mcpServers": { - "postgres": { - "command": "npx", - "args": ["-y", "@modelcontextprotocol/server-postgres"], - "env": { - "POSTGRES_CONNECTION_STRING": "${POSTGRES_URL}" - } - } - } -} diff --git a/plugins/starter-advanced/rules/coding-standards.mdc b/plugins/starter-advanced/rules/coding-standards.mdc deleted file mode 100644 index 758350a..0000000 --- a/plugins/starter-advanced/rules/coding-standards.mdc +++ /dev/null @@ -1,11 +0,0 @@ ---- -description: Baseline coding standards for readable, maintainable changes -alwaysApply: true ---- - -coding-standards: - -- Prefer small, focused changes with a clear purpose. -- Use descriptive names for functions, variables, and files. -- Add concise comments only when non-obvious logic needs context. -- Keep user-facing documentation updated when behavior changes. diff --git a/plugins/starter-advanced/rules/review-checklist.mdc b/plugins/starter-advanced/rules/review-checklist.mdc deleted file mode 100644 index 2089407..0000000 --- a/plugins/starter-advanced/rules/review-checklist.mdc +++ /dev/null @@ -1,13 +0,0 @@ ---- -description: Checklist used during implementation and review -alwaysApply: false -globs: - - "**/*" ---- - -review-checklist: - -- Confirm new behavior has clear examples or tests where practical. -- Flag security-sensitive code paths for input validation review. -- Check for breaking changes in APIs, config, or user workflows. -- Ensure docs and migration notes are present for meaningful changes. diff --git a/plugins/starter-advanced/scripts/audit.sh b/plugins/starter-advanced/scripts/audit.sh deleted file mode 100644 index 2e67e9d..0000000 --- a/plugins/starter-advanced/scripts/audit.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "[starter-advanced] session audit placeholder" -echo "Write logs, metrics, or policy checks here." diff --git a/plugins/starter-advanced/scripts/format-code.sh b/plugins/starter-advanced/scripts/format-code.sh deleted file mode 100644 index 8a7d1de..0000000 --- a/plugins/starter-advanced/scripts/format-code.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "[starter-advanced] format-code hook placeholder" -echo "Replace this script with your formatter invocation." diff --git a/plugins/starter-advanced/scripts/validate-shell.sh b/plugins/starter-advanced/scripts/validate-shell.sh deleted file mode 100644 index a3d8981..0000000 --- a/plugins/starter-advanced/scripts/validate-shell.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "[starter-advanced] validate-shell hook placeholder" -echo "Inspect command inputs here before shell execution." diff --git a/plugins/starter-advanced/skills/code-reviewer/SKILL.md b/plugins/starter-advanced/skills/code-reviewer/SKILL.md deleted file mode 100644 index fbcc365..0000000 --- a/plugins/starter-advanced/skills/code-reviewer/SKILL.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: code-reviewer -description: Review code for correctness, maintainability, and security risks. Use when preparing a PR or auditing a change set. ---- - -# Code reviewer - -## When to use - -- Before opening a pull request -- After large refactors -- When validating risky changes - -## Instructions - -1. Identify potential behavioral regressions first. -2. Flag security concerns (XSS, SQL injection, command injection, secrets). -3. Evaluate readability, structure, and naming consistency. -4. Recommend concrete fixes with minimal churn. -5. Call out missing tests or validation steps. diff --git a/plugins/starter-simple/.cursor-plugin/plugin.json b/plugins/starter-simple/.cursor-plugin/plugin.json deleted file mode 100644 index e28e8a7..0000000 --- a/plugins/starter-simple/.cursor-plugin/plugin.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "starter-simple", - "displayName": "Simple Starter", - "version": "0.1.0", - "description": "Minimal Cursor plugin starter with rules and skills.", - "author": { - "name": "Your Org", - "email": "plugins@example.com" - }, - "license": "MIT", - "keywords": ["cursor", "plugin", "rules", "skills"], - "logo": "assets/logo.svg" -} diff --git a/plugins/starter-simple/README.md b/plugins/starter-simple/README.md deleted file mode 100644 index 76ef122..0000000 --- a/plugins/starter-simple/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# starter-simple - -Minimal Cursor plugin with rules and skills. - -## Included - -- `rules/`: one example rule -- `skills/code-reviewer/`: one example skill diff --git a/plugins/starter-simple/assets/logo.svg b/plugins/starter-simple/assets/logo.svg deleted file mode 100644 index b834618..0000000 --- a/plugins/starter-simple/assets/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - Starter Simple Logo - Minimal geometric logo for the starter simple plugin. - - - - diff --git a/plugins/starter-simple/rules/coding-standards.mdc b/plugins/starter-simple/rules/coding-standards.mdc deleted file mode 100644 index 758350a..0000000 --- a/plugins/starter-simple/rules/coding-standards.mdc +++ /dev/null @@ -1,11 +0,0 @@ ---- -description: Baseline coding standards for readable, maintainable changes -alwaysApply: true ---- - -coding-standards: - -- Prefer small, focused changes with a clear purpose. -- Use descriptive names for functions, variables, and files. -- Add concise comments only when non-obvious logic needs context. -- Keep user-facing documentation updated when behavior changes. diff --git a/plugins/starter-simple/skills/code-reviewer/SKILL.md b/plugins/starter-simple/skills/code-reviewer/SKILL.md deleted file mode 100644 index fbcc365..0000000 --- a/plugins/starter-simple/skills/code-reviewer/SKILL.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: code-reviewer -description: Review code for correctness, maintainability, and security risks. Use when preparing a PR or auditing a change set. ---- - -# Code reviewer - -## When to use - -- Before opening a pull request -- After large refactors -- When validating risky changes - -## Instructions - -1. Identify potential behavioral regressions first. -2. Flag security concerns (XSS, SQL injection, command injection, secrets). -3. Evaluate readability, structure, and naming consistency. -4. Recommend concrete fixes with minimal churn. -5. Call out missing tests or validation steps. diff --git a/scripts/validate-template.mjs b/scripts/validate-template.mjs index 5310b9e..d486f6c 100644 --- a/scripts/validate-template.mjs +++ b/scripts/validate-template.mjs @@ -345,13 +345,13 @@ async function main() { await validateComponentFrontmatter(pluginDir, entry.name); const hooksPath = path.join(pluginDir, "hooks", "hooks.json"); - if (!(await pathExists(hooksPath))) { - addWarning(`${entry.name}: no hooks/hooks.json file found (only needed when using hooks).`); + if (pluginManifest.hooks !== undefined && !(await pathExists(hooksPath))) { + addWarning(`${entry.name}: hooks are declared but hooks/hooks.json is missing.`); } const mcpPath = path.join(pluginDir, "mcp.json"); - if (!(await pathExists(mcpPath))) { - addWarning(`${entry.name}: no mcp.json file found (only needed when using MCP servers).`); + if (pluginManifest.mcpServers !== undefined && !(await pathExists(mcpPath))) { + addWarning(`${entry.name}: MCP servers are declared but mcp.json is missing.`); } }