Skip to content
Draft
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
5 changes: 5 additions & 0 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,11 @@
"name": "rippling",
"source": "third_party/rippling",
"description": "Look up people, time off, and company policy in Rippling, and file time-off requests and draft hires."
},
{
"name": "josystems",
"source": "third_party/josystems",
"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."
}
]
}
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
40 changes: 40 additions & 0 deletions third_party/josystems/.cursor-plugin/plugin.json
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",

Copy link
Copy Markdown
Author

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.png is about 880 KB, over the marketplace 512 KiB limit, so Cursor will reject this plugin listing. scripts/validate-plugins.mjs does not check logo size, so a passing validation run does not catch this.

Fix in Cursor Fix in Web

Triggered by learned rule: Marketplace plugin logos must stay under 512KiB

Reviewed by Cursor Bugbot for commit 2eddf58. Configure here.

"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"
]
}
21 changes: 21 additions & 0 deletions third_party/josystems/LICENSE
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.
48 changes: 48 additions & 0 deletions third_party/josystems/README.md
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
Binary file added third_party/josystems/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions third_party/josystems/skills/forensics/SKILL.md
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.
Loading
Loading