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
22 changes: 22 additions & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "pinecone",
"description": "Pinecone vector database integration. Streamline your Pinecone development with powerful tools for managing vector indexes, querying data, and rapid prototyping. Use slash commands like /quickstart to generate AGENTS.md files and initialize Python projects and /query to quickly explore indexes. Access the Pinecone MCP server for creating, describing, upserting and querying indexes with Cursor. Perfect for developers building semantic search, RAG applications, recommendation systems, and other vector-based applications with Pinecone.",
"version": "1.0.0",
"author": {
"name": "Pinecone"
},
"keywords": [
"pinecone",
"semantic search",
"retrieval",
"vector search",
"vector database",
"retrieval augmented generation",
"rag",
"agentic rag",
"sparse search",
"assistant",
"pinecone assistant",
"rag chatbot"
]
}
137 changes: 137 additions & 0 deletions .github/workflows/contextualize-skills.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
name: Contextualize Incoming Skills

on:
pull_request:
types: [opened, synchronize]

jobs:
contextualize:
if: startsWith(github.head_ref, 'sync/skills-')
runs-on: ubuntu-latest

permissions:
contents: write
pull-requests: write

steps:
- name: Checkout PR branch
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
fetch-depth: 0

- name: Skip if last commit was from bot
id: check_author
run: |
AUTHOR="$(git log -1 --format='%an')"
if [ "$AUTHOR" = "github-actions[bot]" ]; then
echo "skip=true" >> "$GITHUB_OUTPUT"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi

- name: Install Cursor CLI
if: steps.check_author.outputs.skip != 'true'
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> "$GITHUB_PATH"

- name: Write permissions config
if: steps.check_author.outputs.skip != 'true'
run: |
mkdir -p .cursor
cat > .cursor/cli.json << 'PERMS'
{
"permissions": {
"allow": [
"Read(**)",
"Write(skills/**/*.md)",
"Write(.contextualize-summary.md)",
"Shell(git)",
"Shell(gh)",
"Shell(mv)"
],
"deny": [
"Write(.cursor-plugin/**)",
"Write(.github/**)",
"Write(.mcp.json)",
"Write(skills/**/*.py)",
"Write(.env*)",
"Shell(git:push --force *)",
"Shell(git:reset --hard *)",
"Shell(rm:-rf *)"
]
}
}
PERMS

- name: Contextualize skills with Cursor Agent
if: steps.check_author.outputs.skip != 'true'
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
GH_TOKEN: ${{ github.token }}
PR_BRANCH: ${{ github.head_ref }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

agent -p --force "$(cat <<PROMPT
REPO: ${{ github.repository }}
PR NUMBER: ${PR_NUMBER}
BRANCH: ${PR_BRANCH}

You are adapting incoming Pinecone skill files for this Cursor plugin's conventions.

## Skill conventions for this plugin

- Each skill lives in \`skills/<skill-name>/SKILL.md\`
- SKILL.md requires YAML frontmatter with \`name\` (lowercase kebab-case, must match folder name) and \`description\`
- Skills can include \`scripts/\`, \`references/\`, and \`assets/\` subdirectories
- Folder names must NOT have a \`pinecone-\` prefix
- Only \`.md\` files should be modified — never touch \`.py\` scripts

## Steps

1. Find the files changed in this PR by running: git diff --name-only origin/main...HEAD
2. For each changed skill file, adapt it:
- Ensure SKILL.md files have correct YAML frontmatter with \`name\` and \`description\` fields
- Ensure \`name\` in frontmatter is lowercase kebab-case and matches the parent folder name
- Adapt any Claude Code-specific references to Cursor equivalents:
* "Claude" or "Claude Code" → "Cursor"
* "CLAUDE.md" → "AGENTS.md"
* ".claude/" → ".cursor/"
* ".claude-plugin/" → ".cursor-plugin/"
* Slash command references should note they work via /skill-name in Agent chat
- Update source/attribution tags to reflect that these skills are used within the
Cursor plugin (pinecone-io/pinecone-cursor-plugin), not the Claude Code plugin
or the base skills repo. Any source URLs, repo references, or attribution metadata
should point to this Cursor plugin repo.
- Only modify .md files (SKILL.md, references/*.md, etc.)
- Do NOT modify .py files in scripts/ directories — leave them exactly as they are
- Do not change the meaning or content of the skills
- Only change structure, formatting, field names, or terminology as needed
3. Rename skill directories to strip the \`pinecone-\` prefix if present.
Use \`mv skills/pinecone-foo skills/foo\` for each directory that has the prefix.
4. Validate against the Cursor plugin submission checklist:
- .cursor-plugin/plugin.json exists and is valid JSON
- Plugin \`name\` is lowercase kebab-case
- Plugin \`description\` clearly explains purpose
- All skills have proper frontmatter (\`name\` and \`description\` fields)
- All rules (.mdc files) have proper frontmatter (\`description\` field)
- All commands have proper frontmatter (\`name\` and \`description\` fields)
- All paths in manifests are relative (no \`..\`, no absolute paths)
5. Commit your changes directly to this branch with the message:
"contextualize: adapt synced skills for Cursor plugin"
6. Post a single PR comment using \`gh pr comment\` summarizing:
- What you changed in each file and why
- What you intentionally left unchanged
- Any submission checklist violations found
- Recommendations for manual changes the reviewer should consider
(e.g. existing rules or skills that may now be redundant given
the incoming skills — flag these for the reviewer but do NOT remove them yourself)

Do not modify files outside of the skills/ directory.
Do not modify .cursor-plugin/ files.
PROMPT
)"
16 changes: 16 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Validate Plugin

on:
push:
branches: [main]
pull_request:

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: node scripts/validate-plugin.mjs
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Dependencies
node_modules/

# OS files
.DS_Store
Thumbs.db

# Environment
.env
.env.local

# Contextualization artifacts
.contextualize-summary.md

# Local dev docs
REPO_MAINTENANCE.md
14 changes: 14 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"mcpServers": {
"pinecone": {
"command": "npx",
"args": [
"-y",
"@pinecone-database/mcp"
],
"env": {
"PINECONE_API_KEY": "${PINECONE_API_KEY}"
}
}
}
}
27 changes: 25 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,25 @@
# pinecone-cursor-plugin
WIP
# Pinecone Cursor Plugin

Official Pinecone plugin for Cursor. Provides skills, rules, and a Pinecone MCP server integration for building with Pinecone.

## Skills

| Skill | Description |
|-------|-------------|
| `quickstart` | Onboarding — create an index, upload data, run your first search |
| `query` | Natural language search across Pinecone indexes via MCP |
| `cli` | Pinecone CLI (`pc`) for index and vector management |
| `assistant` | Pinecone Assistants for document Q&A with citations |
| `mcp` | Reference docs for all MCP server tools and parameters |
| `docs` | Organized links to official Pinecone documentation |
| `help` | Overview of all skills and getting-started guidance |

## MCP Server

The plugin bundles the [Pinecone MCP server](https://github.com/pinecone-io/pinecone-mcp) (`@pinecone-database/mcp`). Requires a `PINECONE_API_KEY` environment variable.

## Prerequisites

- [Pinecone account](https://app.pinecone.io) (free)
- Pinecone API key
- Node.js v18+ (for the MCP server)
Empty file added commands/.gitkeep
Empty file.
Empty file added rules/.gitkeep
Empty file.
Loading
Loading