opencode-skills-collection 4.0.74 → 4.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +14 -1
  2. package/bundled-skills/claude-api/SKILL.md +4 -4
  3. package/bundled-skills/claude-api/curl/examples.md +5 -5
  4. package/bundled-skills/claude-api/java/claude-api.md +1 -1
  5. package/bundled-skills/claude-api/php/claude-api.md +2 -2
  6. package/bundled-skills/claude-api/python/claude-api/README.md +13 -13
  7. package/bundled-skills/claude-api/python/claude-api/batches.md +3 -3
  8. package/bundled-skills/claude-api/python/claude-api/files-api.md +3 -3
  9. package/bundled-skills/claude-api/python/claude-api/streaming.md +6 -6
  10. package/bundled-skills/claude-api/python/claude-api/tool-use.md +19 -19
  11. package/bundled-skills/claude-api/ruby/claude-api.md +3 -3
  12. package/bundled-skills/claude-api/shared/error-codes.md +2 -2
  13. package/bundled-skills/claude-api/shared/live-sources.md +1 -1
  14. package/bundled-skills/claude-api/shared/models.md +4 -4
  15. package/bundled-skills/claude-api/shared/tool-use-concepts.md +2 -2
  16. package/bundled-skills/claude-api/typescript/claude-api/README.md +12 -12
  17. package/bundled-skills/claude-api/typescript/claude-api/batches.md +2 -2
  18. package/bundled-skills/claude-api/typescript/claude-api/files-api.md +1 -1
  19. package/bundled-skills/claude-api/typescript/claude-api/streaming.md +4 -4
  20. package/bundled-skills/claude-api/typescript/claude-api/tool-use.md +14 -14
  21. package/bundled-skills/electron-drive-skill/LICENSE +21 -0
  22. package/bundled-skills/electron-drive-skill/README.md +172 -0
  23. package/bundled-skills/electron-drive-skill/SKILL.md +237 -0
  24. package/bundled-skills/electron-drive-skill/drive.config.json.example +10 -0
  25. package/bundled-skills/electron-drive-skill/package.json +28 -0
  26. package/bundled-skills/electron-drive-skill/scripts/daemon.mjs +352 -0
  27. package/bundled-skills/electron-drive-skill/scripts/drive.mjs +250 -0
  28. package/bundled-skills/electron-drive-skill/scripts/lib.mjs +165 -0
  29. package/bundled-skills/electron-drive-skill/scripts/lib.test.mjs +56 -0
  30. package/bundled-skills/mcp-dependency-drift-audit/SKILL.md +169 -0
  31. package/bundled-skills/nexrad-mosaic-access/SKILL.md +297 -0
  32. package/bundled-skills/nexrad-mosaic-construction/SKILL.md +277 -0
  33. package/bundled-skills/nexrad-product-access/SKILL.md +258 -0
  34. package/bundled-skills/nexrad-radar-visualization/SKILL.md +318 -0
  35. package/bundled-skills/radar-satellite-analysis/SKILL.md +314 -0
  36. package/bundled-skills/traderspy-market-briefing/SKILL.md +132 -0
  37. package/bundled-skills/traderspy-market-screener/SKILL.md +182 -0
  38. package/bundled-skills/traderspy-market-screener/references/condition-cookbook.md +70 -0
  39. package/bundled-skills/traderspy-position-check/SKILL.md +130 -0
  40. package/bundled-skills/traderspy-position-check/references/risk-math.md +60 -0
  41. package/bundled-skills/traderspy-smart-money/SKILL.md +151 -0
  42. package/bundled-skills/traderspy-smart-money/references/exchange-notes.md +40 -0
  43. package/bundled-skills/traderspy-technical-analysis/SKILL.md +162 -0
  44. package/bundled-skills/traderspy-technical-analysis/references/derivatives-guide.md +57 -0
  45. package/bundled-skills/traderspy-technical-analysis/references/indicator-guide.md +47 -0
  46. package/bundled-skills/traderspy-trading-signals/SKILL.md +156 -0
  47. package/bundled-skills/traderspy-trading-signals/references/signal-fields.md +64 -0
  48. package/bundled-skills/unified-ai-gateway/SKILL.md +3 -3
  49. package/package.json +1 -1
  50. package/skills_index.json +235 -1
@@ -0,0 +1,57 @@
1
+ # Derivatives guide — `get_derivatives`
2
+
3
+ Source: Binance USDⓈ-M perpetual futures public endpoints, snapshot cached 60 s. One entry per
4
+ symbol; an unknown or non-Binance symbol comes back as `{ symbol, error, message }`.
5
+
6
+ ## Fields
7
+
8
+ - `markPrice`, `indexPrice`, `premiumPct` — mark vs index; a persistent positive premium is
9
+ another face of long crowding.
10
+ - `funding`: `rate` (raw, per 8h), `ratePct`, `annualizedPct`, `nextFundingTime`,
11
+ `minutesToNextFunding`, `avg24hPct`, `avg3dPct`, `label`.
12
+ - `openInterest`: `contracts`, `valueUsd`, `change4hPct`, `change24hPct`, `priceChange24hPct`,
13
+ `regime`.
14
+ - `positioning`: `globalLongShortRatio`, `globalLongPct` (all accounts), `topTraderLongShortRatio`,
15
+ `topTraderLongPct` (top traders, by position size), `takerBuySellRatio` (last hour),
16
+ `label`.
17
+ - `notes[]` — the interpretation in sentences; quote them.
18
+
19
+ ## Labels
20
+
21
+ | `funding.label` | Rule (per 8h) | Reading |
22
+ | --- | --- | --- |
23
+ | `extreme_shorts_paying` | ≤ −0.05% | Shorts crowded and paying heavily; squeeze risk |
24
+ | `shorts_paying` | ≤ −0.01% | Shorts paying longs |
25
+ | `neutral` | between −0.01% and +0.03% (Binance's baseline is +0.01%) | No crowding signal |
26
+ | `longs_paying` | ≥ +0.03% | Longs paying shorts — leverage leaning long |
27
+ | `extreme_longs_paying` | ≥ +0.10% | Longs crowded and paying heavily; long-squeeze / flush risk |
28
+
29
+ Quote `annualizedPct` alongside — "0.05%/8h" means little to most readers, "≈ 55% APR" does.
30
+
31
+ | `openInterest.regime` | OI 24h | Price 24h | Reading |
32
+ | --- | --- | --- | --- |
33
+ | `new_longs` | up | up | Fresh money buying; trend being funded |
34
+ | `short_covering` | down | up | Rally driven by shorts closing — less durable |
35
+ | `new_shorts` | up | down | Fresh shorts pressing; trend being funded to the downside |
36
+ | `long_liquidation` | down | down | Longs being flushed — capitulation-type move |
37
+ | `flat` | < 1% OI or < 0.5% price | No meaningful OI story |
38
+
39
+ | `positioning.label` | Rule | Reading |
40
+ | --- | --- | --- |
41
+ | `long_heavy` | long/short ratio ≥ 1.5 (≈ 60%+ long) | Leaders leaning long |
42
+ | `balanced` | between | No lean |
43
+ | `short_heavy` | ratio ≤ 0.67 (≈ 40% or less long) | Leaders leaning short |
44
+
45
+ Top-trader positioning (by position size) is read first because it is the informed cohort; the
46
+ all-account ratio shows the crowd. When they disagree ("top traders 69% long, all accounts 45%
47
+ long"), that disagreement is the interesting sentence.
48
+
49
+ ## Combining with the chart
50
+
51
+ - Chart bullish + `new_longs` + `neutral` funding: a trend with fuel and no crowding.
52
+ - Chart bullish + `extreme_longs_paying`: extended; flush risk is the caveat to state.
53
+ - Chart bearish + `short_covering` bounce: a relief rally, not a reversal, until OI rebuilds.
54
+ - `long_liquidation` with `extreme_shorts_paying` afterwards: the flush may be done; watch whether
55
+ OI rebuilds.
56
+
57
+ These are conventional readings to explain the data, not predictions.
@@ -0,0 +1,47 @@
1
+ # Indicator guide — fields and conventional readings
2
+
3
+ Every indicator object carries `value`, `previous`, `direction` (rising / falling / flat) and
4
+ `series` (history + 1 values, oldest → newest). Extra fields per indicator below. "Reading" is
5
+ the conventional interpretation, not a prediction.
6
+
7
+ | Key | Extra fields | Reading |
8
+ | --- | --- | --- |
9
+ | `rsi` | `period`, `zone` (oversold < 30, neutral, overbought > 70), `divergence` `{type, barsAgo, priceFrom, priceTo, oscillatorFrom, oscillatorTo}` or null | 40–60 is neutral; a rising RSI from 30 is recovering momentum, not "still oversold". A bearish divergence (price higher high, RSI lower high) within the last ~60 bars is worth one sentence |
10
+ | `macd` | `periods {fast, slow, signal}`, `macd`, `signal`, `histogram`, `previous {…}`, `crossover` (bullish / bearish / null — on the latest bar only), `divergence` | Histogram sign + direction is the state (`summary.momentum.macdState`: positive_rising, positive_falling, negative_rising, negative_falling). A cross on the latest bar is an event; report it as such |
11
+ | `ema` / `sma` | `values[] {period, value, previous, direction, priceAbove, distancePct, series}`, `stack` (bullish = fast > mid > slow, bearish, mixed), `pricePosition` (above_all / between / below_all) | Stack + price position is the trend structure. `distancePct` from the 200 is the "how extended" number |
12
+ | `bollinger` | `upper`, `middle`, `lower`, `bandwidthPct`, `percentB`, `position` (above_upper / upper_half / lower_half / below_lower), `squeeze` | %B > 1 or < 0 = outside the bands; `squeeze` true = bands inside the Keltner channel (TTM) — expect expansion, direction unknown |
13
+ | `atr` | `period`, `atrPct` | Volatility in price units and as % of price. A stop tighter than ~1 ATR is inside noise on that timeframe |
14
+ | `adx` | `plusDI`, `minusDI`, `strength` (absent / weak / strong / very_strong), `diBias` (bullish when +DI > −DI) | ADX measures strength, not direction; the DI bias gives the direction |
15
+ | `stochastic` | `k`, `d`, `zone`, `crossover` | < 20 oversold, > 80 overbought; a %K/%D cross inside a zone is the classic trigger |
16
+ | `obv` | `average`, `slopePct`, `divergence` (bullish / bearish / none) | Volume confirmation. `divergence: bullish` = price fell but OBV rose (accumulation). Use the direction and the divergence, not the raw level, which depends on where the window starts |
17
+ | `vwap` | `period`, `priceAbove`, `distancePct` | Rolling VWAP over `period` bars (default 48); above = buyers in control over that window |
18
+ | `cci` | `zone` | > 100 / < −100 = extended |
19
+ | `mfi` | `zone` | Volume-weighted RSI; < 20 / > 80 |
20
+ | `williamsR` | `zone` | −100…0; < −80 oversold, > −20 overbought |
21
+ | `roc` | `period` | % change over the period; sign and direction |
22
+ | `supertrend` | `trend` (up / down), `previousTrend`, `flipped`, `barsSinceFlip`, `distancePct` | A clean trend state with a trailing level; `flipped: true` is an event, `barsSinceFlip` says how mature the trend is |
23
+ | `ichimoku` | `tenkan`, `kijun`, `tkCross`, `tkAboveKijun`, `cloud {spanA, spanB, top, bottom, color}`, `futureCloud {spanA, spanB, color}`, `pricePosition` (above_cloud / in_cloud / below_cloud), `chikouAbovePrice`, `signal` (bullish / bearish / neutral) | Price vs cloud is the trend, `futureCloud.color` is where the cloud is heading, TK cross is the trigger; `signal` is bullish only when all three agree |
24
+ | `keltner` | `periods {ema, atr, multiplier}`, `upper`, `middle`, `lower` | Volatility channel (EMA ± ATR × multiplier); Bollinger inside it is the TTM squeeze |
25
+ | `pivots` | `basis: previous_day`, `source {openTime, high, low, close}`, `pivot`, `r1…r3`, `s1…s3`, `priceAbovePivot`, `nearestResistance`, `nearestSupport` | Classic floor pivots from yesterday's daily candle regardless of the requested timeframe |
26
+ | `levels` | `resistance[]` / `support[]` `{price, touches, swingHighs, swingLows, barsSinceLastTouch, distancePct}`, `range {high, low, positionPct}`, `fibonacci {leg, legStart, legEnd, retracedPct, levels[], nearestAbove, nearestBelow}`, `volumeProfile {poc, pocVolumePct, valueAreaHigh, valueAreaLow, pricePosition, nodes[]}` | More `touches` = more respected level. `range.positionPct` says where price sits in its 300-bar range. The Fibonacci leg is the dominant swing of the lookback; `retracedPct` is how much of it has been given back |
27
+
28
+ ## `summary` fields
29
+
30
+ - `bias`: bullish / bearish / neutral; `score`: signed vote sum (|score| ≥ 30 sets a bias).
31
+ - `trend`: `direction` (up / down / sideways), `strength` (absent / weak / moderate / strong),
32
+ `adx`, `emaStack`, `priceVsEma200`.
33
+ - `momentum`: `rsi`, `rsiZone`, `macdHistogram`, `macdState`.
34
+ - `volatility`: `atrPct`, `atrPercentile` (rank of today's ATR% in the last 100 bars — 90 means
35
+ unusually volatile), `bollingerBandwidthPct`, `state` (compressed / normal / expanded),
36
+ `squeeze`, `squeezeBars`.
37
+ - `volume.ratioVsAverage`: current bar ÷ 20-bar average (the current bar is partial on the live
38
+ candle — a ratio of 0.2 early in a 4h bar is normal).
39
+ - `patterns[]`: `{name, bias, barsAgo}` from 18 candlestick finders (engulfing, hammer, doji
40
+ variants, morning/evening star…). Patterns add notes, not score.
41
+ - `notes[]`: quotable sentences; use them.
42
+
43
+ ## Timeframe defaults that read well
44
+
45
+ - Intraday question → `["15m","1h","4h"]`
46
+ - "How does X look" with no horizon → `["1h","4h","1d"]`
47
+ - Position / investor framing → `["4h","1d"]` plus `levels` and `pivots`
@@ -0,0 +1,156 @@
1
+ ---
2
+ name: traderspy-trading-signals
3
+ description: "Fetch and explain TraderSpy's AI crypto futures signals: entry, take-profit ladder, stop, triggers, status against the live price, and how recent signals resolved. Use for \"latest signals\"."
4
+ category: finance
5
+ risk: safe
6
+ source: "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/trading-signals"
7
+ source_repo: target1m/traderspy-mcp
8
+ source_type: official
9
+ date_added: "2026-09-25"
10
+ author: target1m
11
+ tags: [traderspy, crypto, trading-signals, futures, mcp]
12
+ tools: [claude, cursor, gemini]
13
+ license: MIT
14
+ license_source: "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE"
15
+ ---
16
+
17
+ # TraderSpy Trading Signals
18
+
19
+ TraderSpy's AI signals are automated reads of the market: a named preset fires when several
20
+ technical conditions line up on one crypto futures pair, a validator scores the alignment, and
21
+ the published signal carries an entry, a take-profit ladder, a stop and — later — what actually
22
+ happened. The signals feed at https://traderspy.app/signals publishes every one with its resolved
23
+ outcome. Your job is to fetch,
24
+ translate and contextualise them; the decision stays with the user.
25
+
26
+ ## When to Use
27
+
28
+ - Use when the user mentions crypto signals, AI alerts, "any setups", "what is the AI seeing", long or short ideas, or TraderSpy alerts, even without the word "signal".
29
+ - Use to explain one signal's entry, take-profit and stop levels and the conditions that triggered it, or whether it still stands at the current price.
30
+ - Use when the user asks how signals have resolved (hits vs stops) over the last 4h to 7d.
31
+ - Not for placing trades (no tool can), not for top-trader positioning (`@traderspy-smart-money`), not for indicator reads on a coin (`@traderspy-technical-analysis`).
32
+
33
+ ## Tools
34
+
35
+ | Tool | Use it for | Key arguments |
36
+ | --- | --- | --- |
37
+ | `get_signals` | The list: newest first | `limit` 1–50 (default 20), `skip`, `importance` high / medium / low / all, `coin` |
38
+ | `get_signal_details` | One signal in full, plus the live price | `signalId` (the `id` from the list) |
39
+ | `get_signal_stats` | Aggregate hit rate over a window | `period` 4h / 8h / 24h / 7d |
40
+
41
+ Three argument behaviours that are easy to get wrong:
42
+
43
+ - **`importance` is inclusive downward.** `high` returns high only, `medium` returns high AND
44
+ medium, `low` returns everything. To show "medium and above" pass `medium`, not `low`.
45
+ - **`coin` is a prefix match** on the pair name. `BTC` matches `BTCUSDT` and also `BTCDOMUSDT`;
46
+ check the `coin` field of each row before presenting "BTC signals".
47
+ - **`limit` is what gets rendered.** In hosts that draw signal cards, every fetched row becomes a
48
+ card. If the user asks for "the last 5", pass `limit: 5` — do not fetch 20 and show 5.
49
+
50
+ ## What a signal row contains
51
+
52
+ `strategyName` (the preset, e.g. "OBV Divergence Buy (4H)") · `action` buy / sell · `timeframe`
53
+ 1h / 4h / 1d · `price` at trigger · `targets[]` as `{label, type, pct}` where `pct` is measured from
54
+ `price` · `triggeredConditions[]` in plain language · `importance` · `signalStrength` weak /
55
+ moderate / strong / very_strong · `resolutionStatus` · `createdAt`.
56
+
57
+ Convert target percentages to prices before showing them — users think in prices:
58
+
59
+ - buy: TP = price × (1 + pct/100), SL = price × (1 − pct/100)
60
+ - sell: TP = price × (1 − pct/100), SL = price × (1 + pct/100)
61
+ - reward-to-risk at TP1 = TP1 pct ÷ SL pct (a 0.7 R:R is normal for this system, whose first target
62
+ sits close to entry; read it together with the hit rate from `get_signal_stats`, and do not call a
63
+ sub-1 R:R "bad" on its own).
64
+
65
+ `resolutionStatus` is the outcome so far:
66
+
67
+ | Status | Meaning |
68
+ | --- | --- |
69
+ | `pending` | Still inside its tracking window, nothing hit yet |
70
+ | `tp1_hit` / `tp2_hit` / `tp3_hit` | Highest take-profit reached (a later stop touch does not downgrade it) |
71
+ | `profit_locked` | Trend exhaustion detected before TP1; a partial gain was locked |
72
+ | `stop` | Stop level touched before any take-profit |
73
+ | `expired` | Window ended with neither side touched |
74
+
75
+ Outcomes are judged on 1-minute wicks, so "TP1 hit" means price actually traded there. The
76
+ tracking window is 24 × the signal timeframe (24h for a 1h signal, 4 days for a 4h signal); a 1h
77
+ signal that is still `pending` two days later is stale rather than alive.
78
+
79
+ ## Workflows
80
+
81
+ **"Latest signals" / "any setups?"** → `get_signals` with the limit the user implies (default 10 if
82
+ they gave no number). Lead with the newest, group by side if several, and make the resolved ones
83
+ visible — a list that mixes three winners, two stops and five pending rows should say so.
84
+
85
+ **"Signals for SOL"** → `get_signals` with `coin`. If the result is empty, say there is no recent
86
+ signal on that pair rather than offering a different pair as if it were the same thing.
87
+
88
+ **"Is this signal still valid?" / "Should I still care about it?"** → `get_signal_details`, then
89
+ compare `livePrice` with the entry, TP1 and SL in the same units:
90
+
91
+ - distance from entry in % (signed the way the trade wants it: for a buy, positive = in profit)
92
+ - whether a level has already been crossed (a `pending` buy with `livePrice` below the SL price
93
+ is finished in everything but paperwork — say so)
94
+ - `history.highestPrice` / `lowestPrice` show the best and worst it has seen since entry
95
+ - `indicatorValues` are the readings at trigger time, not now; if the user wants the current
96
+ picture, hand off to technical-analysis rather than re-reading stale values as if they were live
97
+
98
+ **"How are the signals doing?"** → `get_signal_stats`. Explain the number honestly: `winRate` is
99
+ hits ÷ (hits + stops) over signals CREATED in the window, so it ignores `pending` rows, and a 4h
100
+ window is a handful of signals. Prefer `7d` for a track-record question and say how many signals
101
+ it rests on (`total`, `pending`).
102
+
103
+ ## Presenting
104
+
105
+ For a list, ALWAYS use a compact table and keep one signal per row:
106
+
107
+ | Coin | Side | TF | Entry | TP1 | SL | Preset | Status | Age |
108
+
109
+ For one signal, use this order: headline (coin, side, timeframe, preset, importance) → the levels
110
+ as prices with the % in brackets → what triggered it (the `triggeredConditions`, lightly
111
+ rephrased) → where price is now versus entry / TP1 / SL → the outcome so far → the one-line risk
112
+ note. Quote `livePrice` with its timestamp when the answer depends on it.
113
+
114
+ Do not invent an "AI review" if `aiReview` is null — most signals do not carry one. When it exists,
115
+ report `score` and `decision` as the reviewer's opinion, not as a verdict.
116
+
117
+ ## Conduct
118
+
119
+ - These are indicator alignments with published outcomes, not instructions. Report what the
120
+ signal says, what has happened to it and what has happened to signals like it; if the user asks
121
+ whether to take it, lay out what supports and what undercuts it and hand the decision back. Never
122
+ tell the user to buy, sell, size or leverage.
123
+ - Historical hit rates describe the sample they were computed on. Never present a win rate as a
124
+ forecast or imply any outcome is assured.
125
+ - Nothing in this connector trades. There is no order, close, transfer or withdrawal tool, by
126
+ design. If asked to execute, say so plainly; the decision and the trade stay with the user.
127
+ - Every number comes from a tool result; if a field is null, say it is unavailable rather than
128
+ estimating it.
129
+ - When the answer is about a specific trade idea, end with one plain sentence that crypto
130
+ derivatives are high-risk and this is market information, not financial advice. Once per answer
131
+ is enough.
132
+
133
+ For the full field glossary, including the `indicatorValues` keys, read
134
+ `references/signal-fields.md`.
135
+
136
+ ## Examples
137
+
138
+ ```text
139
+ Show me the latest AI signals.
140
+ Any signals on SOL right now?
141
+ Is the latest BTC signal still valid? Show me where price is against its entry, targets and stop.
142
+ How have the signals resolved over the last 7 days?
143
+ ```
144
+
145
+ ## Limitations
146
+
147
+ - Needs the hosted TraderSpy MCP server connected in the client (`https://mcp.traderspy.app/mcp`, Streamable HTTP), authorized with OAuth or a personal key from https://traderspy.app/mcp. A free TraderSpy account is enough. Without the server the skill has no data to work from.
148
+ - Tool calls are metered per day: 300 on the free tier, 5,000 on premium.
149
+ - Every tool is read-only. Nothing here places, closes or modifies an order, and there is no withdrawal or transfer tool.
150
+ - The output is market data and analysis for the user's own research, not investment advice.
151
+ - Covers TraderSpy's own AI signals only. Signal statistics describe signals that already resolved; they are not a forecast.
152
+
153
+ ## Related Skills
154
+
155
+ - `@traderspy-technical-analysis` (called `technical-analysis` in the text above, its upstream ID) - the current chart read on the signal's coin
156
+ - `@traderspy-market-briefing` - the freshest signals inside a market overview
@@ -0,0 +1,64 @@
1
+ # Signal field glossary
2
+
3
+ ## `get_signals` → `data[]`
4
+
5
+ | Field | Type | Notes |
6
+ | --- | --- | --- |
7
+ | `id` | string | Pass to `get_signal_details` |
8
+ | `strategyName` | string | Preset display name. The timeframe is usually in the name, e.g. "(4H)" |
9
+ | `importance` | high / medium / low | Preset tier, not a per-signal confidence |
10
+ | `action` | buy / sell | Direction |
11
+ | `signalStrength` | weak / moderate / strong / very_strong | How many optional conditions matched; capped at `strong` unless the entry was fresh |
12
+ | `coin` | string | Binance Futures pair, e.g. `WCTUSDT` |
13
+ | `timeframe` | 1h / 4h / 1d | Chart timeframe the preset evaluated |
14
+ | `price` | number | Price when the signal was published; targets are measured from it |
15
+ | `targets[]` | `{label, type, pct}` | `type` is `tp1` / `tp2` / `tp3` / `sl`; `pct` is unsigned distance from `price` |
16
+ | `triggeredConditions[]` | string | Plain-language conditions that fired, e.g. "Volume 2.2x average" |
17
+ | `resolutionStatus` | see table in SKILL.md | `pending` when nothing has resolved yet |
18
+ | `createdAt` | ISO date | Publication time |
19
+
20
+ `pagination` = `{ limit, skip, total, hasMore }`. `total` is the count matching the filter — it is
21
+ the size of the whole public archive when no filter is given, not "signals today".
22
+
23
+ ## `get_signal_details` adds
24
+
25
+ | Field | Notes |
26
+ | --- | --- |
27
+ | `livePrice` | Current price of the pair at call time — the number that decides whether the idea still stands |
28
+ | `indicatorValues` | Readings captured at trigger time. Common keys: `rsi`, `macd_histogram`, `adx`, `obv_slope`, `obv_flow_pct`, `volume_ratio`, `williams_r`, plus `validation_*` keys written by the publisher's scoring pass (`validation_score` 0–100, `validation_confidence`, `validation_rsi`, `validation_atr_pct`, `validation_btc_trend_1d`, `validation_btc_rsi_4h`, `validation_directional_move_pct` = how far price had already moved in the trade's direction when it was published) |
29
+ | `aiReview` | `{ score, decision, analysis }` or null. Null is the normal case |
30
+ | `history.entryPrice` | Price at entry (equals `price` unless recalibrated) |
31
+ | `history.currentPrice` | Last tracked price; may be null on a fresh signal |
32
+ | `history.highestPrice` / `lowestPrice` | Extremes seen since entry on 1-minute data |
33
+ | `history.resolution` | `{ status, price, time }` once resolved; `price` is the level that was hit, so realised move = (resolution.price − entryPrice) / entryPrice, sign-flipped for sells |
34
+
35
+ Interpretation notes:
36
+
37
+ - `validation_score` around 70–80 has historically been the sweet spot; the very highest scores
38
+ tended to be late entries. Do not rank signals by score alone.
39
+ - `validation_directional_move_pct` above ~1.5% means the move was already under way at
40
+ publication — worth mentioning as "the entry chased the move".
41
+ - The published TP2/TP3 are a ladder (≈1.7× and 2.4× TP1); they exist so a winner can be
42
+ graded beyond TP1, not as three independent forecasts.
43
+
44
+ ## `get_signal_stats`
45
+
46
+ `{ total, targetHits, stopped, pending, highCount, winRate }` over signals created in the period.
47
+
48
+ - `targetHits` counts `tp1_hit`, `tp2_hit`, `tp3_hit` and `profit_locked`.
49
+ - `pending` = total − hits − stops (so it also contains `expired` rows).
50
+ - `winRate` = round(hits ÷ (hits + stops) × 100), null when nothing has resolved.
51
+ - `highCount` = how many were high importance.
52
+
53
+ The 4h and 8h windows are small samples; treat single-digit `total` as noise.
54
+
55
+ ## Resolution mechanics worth knowing
56
+
57
+ - Tracking window = 1×, 4× and 24× the signal timeframe (1h → 1h/4h/1d; 4h → 4h/16h/4d).
58
+ - TP and SL are judged on 1-minute highs/lows starting the minute after entry; on a same-minute
59
+ ambiguity the stop is recorded first (conservative).
60
+ - TP2 and TP3 count only after TP1; after TP1 a later stop touch does not downgrade the result.
61
+ - `profit_locked` is set when a trend-exhaustion check fires before TP1 and locks a partial gain.
62
+ - Only a subset of signals is ever marked `expired`; a signal that finishes its window untouched
63
+ can stay `pending` indefinitely. Treat old `pending` rows as roughly flat outcomes, not as open
64
+ ideas.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: unified-ai-gateway
3
- description: Operate and evaluate Unified AI System through nine governed MCP tools, including provider-free prompt enhancement, while preserving fake-provider, authorization, and evidence boundaries.
3
+ description: Operate and evaluate Unified AI System through fifteen governed MCP tools, including provider-free prompt enhancement, while preserving fake-provider, authorization, and evidence boundaries.
4
4
  category: ai-ml
5
5
  risk: critical
6
6
  source: https://github.com/happy520ai/unified-ai-system/tree/master/skills/unified-ai-gateway
@@ -35,7 +35,7 @@ review is required before changing this pinned procedure.
35
35
  ## Prerequisites And Setup
36
36
 
37
37
  1. Confirm that Codex CLI and Docker are installed and Docker is running.
38
- 2. If the nine tools are already visible, skip setup and do not register a
38
+ 2. If the 15 tools are already visible, skip setup and do not register a
39
39
  duplicate server.
40
40
  3. Explain the first stage: it downloads one reviewed platform from the
41
41
  immutable `0.4.9` multi-platform index into Docker's cache, inspects its
@@ -133,7 +133,7 @@ codex mcp get unified-ai-system --json
133
133
  ```
134
134
 
135
135
  8. Restart Codex or open a new task, then use `/mcp verbose` to confirm that all
136
- nine tools are available. Remove the registration when it is no longer
136
+ 15 tools are available. Remove the registration when it is no longer
137
137
  wanted:
138
138
 
139
139
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-skills-collection",
3
- "version": "4.0.74",
3
+ "version": "4.0.75",
4
4
  "description": "OpenCode CLI plugin that automatically downloads and keeps skills up to date.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/skills_index.json CHANGED
@@ -20293,6 +20293,42 @@
20293
20293
  "reasons": []
20294
20294
  }
20295
20295
  },
20296
+ {
20297
+ "id": "electron-drive-skill",
20298
+ "path": "skills/electron-drive-skill",
20299
+ "category": "testing",
20300
+ "name": "electron-drive-skill",
20301
+ "description": "Launch the project's Electron app on a scratch profile and drive it: click, type, screenshot, run renderer or main-process code, read logs. Use to verify UI changes end to end.",
20302
+ "risk": "critical",
20303
+ "source": "community",
20304
+ "date_added": "2026-09-23",
20305
+ "plugin": {
20306
+ "targets": {
20307
+ "codex": "blocked",
20308
+ "claude": "blocked"
20309
+ },
20310
+ "setup": {
20311
+ "type": "none",
20312
+ "summary": "",
20313
+ "docs": null
20314
+ },
20315
+ "reasons": [
20316
+ "undeclared_runtime_dependency"
20317
+ ]
20318
+ },
20319
+ "source_type": "community",
20320
+ "source_repo": "Search-3D/electron-drive-skill",
20321
+ "license": "MIT",
20322
+ "license_source": "https://github.com/Search-3D/electron-drive-skill/blob/main/LICENSE",
20323
+ "tags": [
20324
+ "electron",
20325
+ "playwright",
20326
+ "desktop",
20327
+ "e2e",
20328
+ "testing",
20329
+ "automation"
20330
+ ]
20331
+ },
20296
20332
  {
20297
20333
  "id": "elixir",
20298
20334
  "path": "skills/super-code/elixir",
@@ -55220,6 +55256,204 @@
55220
55256
  "reasons": []
55221
55257
  }
55222
55258
  },
55259
+ {
55260
+ "id": "traderspy-market-briefing",
55261
+ "path": "skills/traderspy-market-briefing",
55262
+ "category": "finance",
55263
+ "name": "traderspy-market-briefing",
55264
+ "description": "Crypto market briefing from live TraderSpy data: majors, funding, open interest, top-trader lean, fresh AI signals and screener movers. Use for \"what's happening in crypto\" or a recap.",
55265
+ "risk": "safe",
55266
+ "source": "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/market-briefing",
55267
+ "date_added": "2026-09-25",
55268
+ "plugin": {
55269
+ "targets": {
55270
+ "codex": "supported",
55271
+ "claude": "supported"
55272
+ },
55273
+ "setup": {
55274
+ "type": "none",
55275
+ "summary": "",
55276
+ "docs": null
55277
+ },
55278
+ "reasons": []
55279
+ },
55280
+ "source_type": "official",
55281
+ "source_repo": "target1m/traderspy-mcp",
55282
+ "license": "MIT",
55283
+ "license_source": "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE",
55284
+ "tags": [
55285
+ "traderspy",
55286
+ "crypto",
55287
+ "market-briefing",
55288
+ "derivatives",
55289
+ "mcp"
55290
+ ]
55291
+ },
55292
+ {
55293
+ "id": "traderspy-market-screener",
55294
+ "path": "skills/traderspy-market-screener",
55295
+ "category": "finance",
55296
+ "name": "traderspy-market-screener",
55297
+ "description": "Scan the most-traded crypto futures pairs for up to 3 technical conditions in one TraderSpy call, compare coins, and backtest what followed a condition. Use for \"which coins are oversold\".",
55298
+ "risk": "safe",
55299
+ "source": "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/market-screener",
55300
+ "date_added": "2026-09-25",
55301
+ "plugin": {
55302
+ "targets": {
55303
+ "codex": "supported",
55304
+ "claude": "supported"
55305
+ },
55306
+ "setup": {
55307
+ "type": "none",
55308
+ "summary": "",
55309
+ "docs": null
55310
+ },
55311
+ "reasons": []
55312
+ },
55313
+ "source_type": "official",
55314
+ "source_repo": "target1m/traderspy-mcp",
55315
+ "license": "MIT",
55316
+ "license_source": "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE",
55317
+ "tags": [
55318
+ "traderspy",
55319
+ "crypto",
55320
+ "screener",
55321
+ "backtesting",
55322
+ "mcp"
55323
+ ]
55324
+ },
55325
+ {
55326
+ "id": "traderspy-position-check",
55327
+ "path": "skills/traderspy-position-check",
55328
+ "category": "finance",
55329
+ "name": "traderspy-position-check",
55330
+ "description": "Health-check crypto futures positions the user describes, with TraderSpy data: liquidation and stop distance, multi-timeframe read, funding and top-trader side. Reports only; never tells the user to close or add.",
55331
+ "risk": "safe",
55332
+ "source": "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/position-check",
55333
+ "date_added": "2026-09-25",
55334
+ "plugin": {
55335
+ "targets": {
55336
+ "codex": "supported",
55337
+ "claude": "supported"
55338
+ },
55339
+ "setup": {
55340
+ "type": "none",
55341
+ "summary": "",
55342
+ "docs": null
55343
+ },
55344
+ "reasons": []
55345
+ },
55346
+ "source_type": "official",
55347
+ "source_repo": "target1m/traderspy-mcp",
55348
+ "license": "MIT",
55349
+ "license_source": "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE",
55350
+ "tags": [
55351
+ "traderspy",
55352
+ "crypto",
55353
+ "risk-management",
55354
+ "futures",
55355
+ "mcp"
55356
+ ]
55357
+ },
55358
+ {
55359
+ "id": "traderspy-smart-money",
55360
+ "path": "skills/traderspy-smart-money",
55361
+ "category": "finance",
55362
+ "name": "traderspy-smart-money",
55363
+ "description": "Track what top crypto futures traders hold on Binance, Hyperliquid, Bybit and OKX with TraderSpy: elite leaderboard, positions, trader profiles and history. Use for \"what are whales doing\".",
55364
+ "risk": "safe",
55365
+ "source": "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/smart-money",
55366
+ "date_added": "2026-09-25",
55367
+ "plugin": {
55368
+ "targets": {
55369
+ "codex": "supported",
55370
+ "claude": "supported"
55371
+ },
55372
+ "setup": {
55373
+ "type": "none",
55374
+ "summary": "",
55375
+ "docs": null
55376
+ },
55377
+ "reasons": []
55378
+ },
55379
+ "source_type": "official",
55380
+ "source_repo": "target1m/traderspy-mcp",
55381
+ "license": "MIT",
55382
+ "license_source": "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE",
55383
+ "tags": [
55384
+ "traderspy",
55385
+ "crypto",
55386
+ "smart-money",
55387
+ "whale-tracking",
55388
+ "mcp"
55389
+ ]
55390
+ },
55391
+ {
55392
+ "id": "traderspy-technical-analysis",
55393
+ "path": "skills/traderspy-technical-analysis",
55394
+ "category": "finance",
55395
+ "name": "traderspy-technical-analysis",
55396
+ "description": "Read one crypto futures pair with TraderSpy: 19 indicators on up to 3 timeframes in one call, key levels, funding, open interest and positioning. Use for \"analyse BTC\" or \"is SOL oversold\".",
55397
+ "risk": "safe",
55398
+ "source": "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/technical-analysis",
55399
+ "date_added": "2026-09-25",
55400
+ "plugin": {
55401
+ "targets": {
55402
+ "codex": "supported",
55403
+ "claude": "supported"
55404
+ },
55405
+ "setup": {
55406
+ "type": "none",
55407
+ "summary": "",
55408
+ "docs": null
55409
+ },
55410
+ "reasons": []
55411
+ },
55412
+ "source_type": "official",
55413
+ "source_repo": "target1m/traderspy-mcp",
55414
+ "license": "MIT",
55415
+ "license_source": "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE",
55416
+ "tags": [
55417
+ "traderspy",
55418
+ "crypto",
55419
+ "technical-analysis",
55420
+ "indicators",
55421
+ "mcp"
55422
+ ]
55423
+ },
55424
+ {
55425
+ "id": "traderspy-trading-signals",
55426
+ "path": "skills/traderspy-trading-signals",
55427
+ "category": "finance",
55428
+ "name": "traderspy-trading-signals",
55429
+ "description": "Fetch and explain TraderSpy's AI crypto futures signals: entry, take-profit ladder, stop, triggers, status against the live price, and how recent signals resolved. Use for \"latest signals\".",
55430
+ "risk": "safe",
55431
+ "source": "https://github.com/target1m/traderspy-mcp/tree/069aae5a84640d671f92705a2e3bc0b62efca1e0/skills/trading-signals",
55432
+ "date_added": "2026-09-25",
55433
+ "plugin": {
55434
+ "targets": {
55435
+ "codex": "supported",
55436
+ "claude": "supported"
55437
+ },
55438
+ "setup": {
55439
+ "type": "none",
55440
+ "summary": "",
55441
+ "docs": null
55442
+ },
55443
+ "reasons": []
55444
+ },
55445
+ "source_type": "official",
55446
+ "source_repo": "target1m/traderspy-mcp",
55447
+ "license": "MIT",
55448
+ "license_source": "https://github.com/target1m/traderspy-mcp/blob/069aae5a84640d671f92705a2e3bc0b62efca1e0/LICENSE",
55449
+ "tags": [
55450
+ "traderspy",
55451
+ "crypto",
55452
+ "trading-signals",
55453
+ "futures",
55454
+ "mcp"
55455
+ ]
55456
+ },
55223
55457
  {
55224
55458
  "id": "trading-ledger",
55225
55459
  "path": "skills/trading-ledger",
@@ -56235,7 +56469,7 @@
56235
56469
  "path": "skills/unified-ai-gateway",
56236
56470
  "category": "ai-ml",
56237
56471
  "name": "unified-ai-gateway",
56238
- "description": "Operate and evaluate Unified AI System through nine governed MCP tools, including provider-free prompt enhancement, while preserving fake-provider, authorization, and evidence boundaries.",
56472
+ "description": "Operate and evaluate Unified AI System through fifteen governed MCP tools, including provider-free prompt enhancement, while preserving fake-provider, authorization, and evidence boundaries.",
56239
56473
  "risk": "critical",
56240
56474
  "source": "https://github.com/happy520ai/unified-ai-system/tree/master/skills/unified-ai-gateway",
56241
56475
  "date_added": "2026-08-01",