Repository navigation
Add Perps (josystems) third-party plugin #1052
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
cursor
wants to merge
1
commit into
main
Choose a base branch
from
cursor/new-plugin-setup-3552
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+602
−0
Draft
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -121,6 +121,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | |
| | `ringcentral-chat` | [RingCentral Chat](third_party/ringcentral-chat/) | Cursor | Integrations | Read team chats and posts, send messages, and manage teams, tasks, and notes. | | ||
| | `servicenow` | [ServiceNow](third_party/servicenow/) | Cursor | Integrations | Call the tools your admin publishes on a ServiceNow instance. | | ||
| | `rippling` | [Rippling](third_party/rippling/) | Cursor | Integrations | Look up people, time off, and company policy in Rippling, and file time-off requests and draft hires. | | ||
| | `josystems` | [Perps](third_party/josystems/) | Bentayga Empire LLC | Integrations | Run the open-source Perps bot for Jupiter Perps (SOL, BTC, ETH): read market packets, size positions inside an owner-set leverage cap, and manage exits. Paper mode by default. | | ||
| Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `[email protected]` in the manifest). | ||
|
|
||
| ## Repository structure | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| { | ||
| "name": "josystems", | ||
| "displayName": "Perps", | ||
| "version": "1.0.2", | ||
| "description": "Run the open-source Perps bot for Jupiter Perps (SOL, BTC, ETH): read market packets, size positions inside an owner-set leverage cap, and manage exits. Paper mode by default.", | ||
| "author": { | ||
| "name": "Bentayga Empire LLC", | ||
| "email": "[email protected]" | ||
| }, | ||
| "homepage": "https://github.com/BadmonLano/perps", | ||
| "repository": "https://github.com/BadmonLano/perps", | ||
| "license": "MIT", | ||
| "logo": "assets/logo.png", | ||
| "keywords": [ | ||
| "perps", | ||
| "jupiter perps", | ||
| "solana", | ||
| "perpetuals", | ||
| "trading bot", | ||
| "paper trading" | ||
| ], | ||
| "category": "integrations", | ||
| "tags": [ | ||
| "perps", | ||
| "trading", | ||
| "solana", | ||
| "crypto" | ||
| ], | ||
| "skills": [ | ||
| "skills/perps-boss", | ||
| "skills/pnl-tracker", | ||
| "skills/forensics", | ||
| "skills/sub-skills/autoagent", | ||
| "skills/sub-skills/code-monitor", | ||
| "skills/sub-skills/learnings-summarizer", | ||
| "skills/sub-skills/morning-brief", | ||
| "skills/sub-skills/owner-ping", | ||
| "skills/sub-skills/warden" | ||
| ] | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| MIT License | ||
|
|
||
| Copyright (c) 2026 Bentayga Empire LLC | ||
|
|
||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
|
|
||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
|
|
||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| SOFTWARE. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| # Perps | ||
|
|
||
| Skills for running [Perps](https://github.com/BadmonLano/perps), an open-source Jupiter Perps (SOL-PERP, BTC-PERP, ETH-PERP) trading bot that an agent operates for a human owner. The bot writes one market packet per chain to `inbox/`. The agent reads them with these skills and answers with signal files. The bot checks its hard gates and executes or declines. It never opens a trade on its own. | ||
|
|
||
| Published by Bentayga Empire LLC. | ||
|
|
||
| > **Warning:** Paper mode (`PERPS_DRY_RUN=true`) is the default and simulates every fill. With `PERPS_DRY_RUN=false`, every signal becomes a real leveraged Jupiter Perps transaction. Leverage runs from 10x up to the owner's cap, `PERP_MAX_LEVERAGE` (20x by default, adjustable up to 250x). A small move against a position can liquidate its collateral. Not financial advice. | ||
|
|
||
| ## Install | ||
|
|
||
| 1. Install the **Perps** plugin from the Cursor marketplace. | ||
| 2. Clone the bot and install its dependencies: | ||
|
|
||
| ```bash | ||
| git clone https://github.com/BadmonLano/perps.git | ||
| cd perps | ||
| python3 -m venv .venv | ||
| source .venv/bin/activate # Windows: .venv\Scripts\activate | ||
| pip install -r requirements.txt | ||
| cp bots/.env.example bots/.env | ||
| ``` | ||
|
|
||
| 3. Leave `PERPS_DRY_RUN=true` in `bots/.env` for paper mode. No wallet or exchange keys are needed. | ||
| 4. Open the `perps` folder in Cursor, follow the repository README quick start to run the self-check and start the bot, then ask the agent to "run Perps in paper mode". | ||
|
|
||
| ## MCP | ||
|
|
||
| This plugin ships no `mcp.json`. The source repository publishes skills only, and the bot runs locally from the cloned repository. | ||
|
|
||
| ## Skills | ||
|
|
||
| - `perps-boss`: core playbook for reading packets, sizing with the leverage ladder, writing signals, and managing open positions. | ||
| - `pnl-tracker`: realized and unrealized PnL, fees, and funding. | ||
| - `forensics`: autopsies of closed and missed trades. Proposes changes and never edits live params. | ||
| - `autoagent`, `code-monitor`, `learnings-summarizer`, `morning-brief`, `owner-ping`, `warden`: sub-skills for overseer reports, code drift, nightly learnings, the daily brief, owner notifications, and security alerts. | ||
|
|
||
| The skills expect the cloned repository's folders (`bots/`, `inbox/`, `json_relay/`, `bot_logs/`, `rules/`) in the workspace. | ||
|
|
||
| ## Notes | ||
|
|
||
| - Use a burner hot wallet that holds only what you can afford to lose if you switch to live mode. | ||
| - Owner rules in `rules/rules.md` override skill defaults. The bot's hard gates still apply. | ||
|
|
||
| Logo is Perps' own mark, from the source repository's `assets/perps_logo.png`. | ||
|
|
||
| ## License | ||
|
|
||
| MIT |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| --- | ||
| name: forensics | ||
| version: 2.0.0 | ||
| description: | | ||
| Autopsies of closed and missed perp trades. Reads the ledger and decision snapshots, | ||
| writes lessons and proposals. Never edits live params. | ||
| Triggers: "perps_bot - autopsy_eod_*.json", "why did that trade lose", "autopsy last". | ||
| allowed-tools: [Read, Write] | ||
| --- | ||
|
|
||
| # Forensics | ||
|
|
||
| ## Inputs | ||
| - `bot_logs/perp_pnl.json`: closed trades (net % on collateral). | ||
| - `bot_logs/perp_decision_snapshots.jsonl`: what the packet showed at decision time. | ||
| - `bot_logs/missed_perp_autopsy.json`: setups that were declined or skipped. | ||
| - `bot_logs/perp_autopsy_lessons.json`: lessons the bot already gated by sample size. | ||
| - `bot_logs/perp_trade_autopsies.jsonl`: one SI / rules review per closed trade (verdict, root_cause, lesson, proposal). | ||
|
|
||
| ## Method | ||
| 1. State the trade plainly: market, side, collateral, leverage, notional, entry, exit, net %. | ||
| 2. Compare the call with what the packet said. Was the thesis wrong, the timing, or the size? | ||
| 3. Group by leverage bucket and setup. A lesson needs at least 5 samples | ||
| (`_AUTOPSY_MIN_LEV_SAMPLES`); under that, call it a note, not a rule. | ||
| 4. Write a proposal (what to change and why) to owner_inbox/. Do not change params yourself. | ||
|
|
||
| ## Tone | ||
| Short, factual, no blame. One line per finding. |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Listing logo exceeds marketplace size cap
High Severity · Bugbot Rules
The listing logo at
assets/logo.pngis about 880 KB, over the marketplace 512 KiB limit, so Cursor will reject this plugin listing.scripts/validate-plugins.mjsdoes not check logo size, so a passing validation run does not catch this.Triggered by learned rule: Marketplace plugin logos must stay under 512KiB
Reviewed by Cursor Bugbot for commit 2eddf58. Configure here.