@intentsolutionsio/openbb-terminal 1.0.0
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.
- package/.claude-plugin/plugin.json +29 -0
- package/LICENSE +21 -0
- package/README.md +1162 -0
- package/agents/crypto-analyst.md +165 -0
- package/agents/equity-analyst.md +148 -0
- package/agents/macro-economist.md +228 -0
- package/agents/portfolio-manager.md +163 -0
- package/commands/openbb-crypto.md +347 -0
- package/commands/openbb-equity.md +266 -0
- package/commands/openbb-macro.md +91 -0
- package/commands/openbb-options.md +87 -0
- package/commands/openbb-portfolio.md +154 -0
- package/commands/openbb-research.md +173 -0
- package/package.json +51 -0
- package/skills/skill-adapter/assets/README.md +7 -0
- package/skills/skill-adapter/assets/config-template.json +32 -0
- package/skills/skill-adapter/assets/skill-schema.json +28 -0
- package/skills/skill-adapter/assets/test-data.json +27 -0
- package/skills/skill-adapter/references/README.md +4 -0
- package/skills/skill-adapter/references/best-practices.md +69 -0
- package/skills/skill-adapter/references/examples.md +73 -0
- package/skills/skill-adapter/scripts/README.md +7 -0
- package/skills/skill-adapter/scripts/helper-template.sh +42 -0
- package/skills/skill-adapter/scripts/validation.sh +32 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openbb-options
|
|
3
|
+
description: Options analysis using OpenBB - chain data, Greeks, implied volatility,...
|
|
4
|
+
---
|
|
5
|
+
# OpenBB Options Analysis
|
|
6
|
+
|
|
7
|
+
Options chain analysis, Greeks calculations, and strategy optimization using OpenBB Platform.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/openbb-options TICKER [--strategy covered-call|put|spread] [--expiry 30d]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Key Features
|
|
16
|
+
|
|
17
|
+
### Options Data
|
|
18
|
+
- Options chains (calls/puts, all strikes)
|
|
19
|
+
- Greeks (Delta, Gamma, Theta, Vega, Rho)
|
|
20
|
+
- Implied volatility smile/skew
|
|
21
|
+
- Open interest and volume analysis
|
|
22
|
+
- Unusual options activity
|
|
23
|
+
|
|
24
|
+
### Workflow
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from openbb import obb
|
|
28
|
+
|
|
29
|
+
ticker = "AAPL"
|
|
30
|
+
expiry = "2024-12-20"
|
|
31
|
+
|
|
32
|
+
# Get options chain
|
|
33
|
+
chain = obb.derivatives.options.chains(symbol=ticker, expiration=expiry)
|
|
34
|
+
|
|
35
|
+
# Analyze call options
|
|
36
|
+
calls = chain[chain['option_type'] == 'call']
|
|
37
|
+
print(f"\n📞 Call Options for {ticker} (Exp: {expiry})")
|
|
38
|
+
print(f"{'Strike':>8} {'Last':>8} {'IV':>8} {'Delta':>8} {'OI':>10} {'Volume':>10}")
|
|
39
|
+
|
|
40
|
+
for _, opt in calls.iterrows():
|
|
41
|
+
print(f"${opt['strike']:>7.2f} ${opt['last']:>7.2f} {opt['iv']:>7.1f}% "
|
|
42
|
+
f"{opt['delta']:>7.3f} {opt['open_interest']:>9,} {opt['volume']:>9,}")
|
|
43
|
+
|
|
44
|
+
# Greeks summary
|
|
45
|
+
print(f"\n🔢 Portfolio Greeks:")
|
|
46
|
+
print(f"Net Delta: {calls['delta'].sum():.2f}")
|
|
47
|
+
print(f"Net Gamma: {calls['gamma'].sum():.4f}")
|
|
48
|
+
print(f"Net Theta: {calls['theta'].sum():.2f} (daily decay)")
|
|
49
|
+
print(f"Net Vega: {calls['vega'].sum():.2f} (per 1% IV move)")
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Strategy Analysis
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
# Covered Call Strategy
|
|
56
|
+
stock_price = obb.equity.price.quote(symbol=ticker).price
|
|
57
|
+
strike = stock_price * 1.05 # 5% OTM
|
|
58
|
+
|
|
59
|
+
call_premium = chain[(chain['strike'] == strike) & (chain['option_type'] == 'call')]['last'].iloc[0]
|
|
60
|
+
|
|
61
|
+
print(f"\n📊 Covered Call Strategy ({ticker}):")
|
|
62
|
+
print(f"Stock Price: ${stock_price:.2f}")
|
|
63
|
+
print(f"Sell Call: ${strike:.2f} strike")
|
|
64
|
+
print(f"Premium: ${call_premium:.2f}")
|
|
65
|
+
print(f"Max Profit: ${(strike - stock_price + call_premium):.2f} ({((strike - stock_price + call_premium) / stock_price * 100):.1f}%)")
|
|
66
|
+
print(f"Breakeven: ${(stock_price - call_premium):.2f}")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Unusual Activity
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
# Detect unusual options activity
|
|
73
|
+
unusual = chain[chain['volume'] > chain['open_interest'] * 2]
|
|
74
|
+
print(f"\n🚨 Unusual Activity ({len(unusual)} contracts):")
|
|
75
|
+
|
|
76
|
+
for _, opt in unusual.head(5).iterrows():
|
|
77
|
+
print(f"{opt['option_type'].upper()} ${opt['strike']:.2f} - "
|
|
78
|
+
f"Vol: {opt['volume']:,} (OI: {opt['open_interest']:,})")
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Examples
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
/openbb-options SPY --strategy=covered-call
|
|
85
|
+
/openbb-options TSLA --expiry=14d
|
|
86
|
+
/openbb-options NVDA --unusual-activity
|
|
87
|
+
```
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openbb-portfolio
|
|
3
|
+
description: Portfolio analysis and optimization using OpenBB - performance tracking,...
|
|
4
|
+
---
|
|
5
|
+
# OpenBB Portfolio Analysis
|
|
6
|
+
|
|
7
|
+
Comprehensive portfolio management and optimization using OpenBB Platform.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/openbb-portfolio [--analyze] [--optimize] [--benchmark SPY]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## What This Command Does
|
|
16
|
+
|
|
17
|
+
Analyzes portfolio performance, calculates risk metrics, and provides optimization recommendations.
|
|
18
|
+
|
|
19
|
+
## Key Features
|
|
20
|
+
|
|
21
|
+
### Portfolio Metrics
|
|
22
|
+
- **Returns**: Total return, annualized, Sharpe ratio, Sortino ratio
|
|
23
|
+
- **Risk**: Volatility, max drawdown, VaR, conditional VaR
|
|
24
|
+
- **Allocation**: Asset mix, sector exposure, geographic distribution
|
|
25
|
+
- **Performance Attribution**: Contribution analysis by position
|
|
26
|
+
|
|
27
|
+
### Workflow
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
from openbb import obb
|
|
31
|
+
import pandas as pd
|
|
32
|
+
|
|
33
|
+
# Define portfolio (can load from file or define inline)
|
|
34
|
+
portfolio = {
|
|
35
|
+
"AAPL": {"shares": 50, "cost_basis": 150.00},
|
|
36
|
+
"MSFT": {"shares": 30, "cost_basis": 300.00},
|
|
37
|
+
"GOOGL": {"shares": 20, "cost_basis": 2500.00},
|
|
38
|
+
"BTC-USD": {"shares": 0.5, "cost_basis": 45000.00}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Calculate current values
|
|
42
|
+
total_value = 0
|
|
43
|
+
positions = []
|
|
44
|
+
|
|
45
|
+
for symbol, data in portfolio.items():
|
|
46
|
+
current_price = obb.equity.price.quote(symbol=symbol).price
|
|
47
|
+
position_value = current_price * data["shares"]
|
|
48
|
+
total_value += position_value
|
|
49
|
+
|
|
50
|
+
pnl = (current_price - data["cost_basis"]) * data["shares"]
|
|
51
|
+
pnl_pct = (current_price / data["cost_basis"] - 1) * 100
|
|
52
|
+
|
|
53
|
+
positions.append({
|
|
54
|
+
"symbol": symbol,
|
|
55
|
+
"shares": data["shares"],
|
|
56
|
+
"cost_basis": data["cost_basis"],
|
|
57
|
+
"current_price": current_price,
|
|
58
|
+
"value": position_value,
|
|
59
|
+
"pnl": pnl,
|
|
60
|
+
"pnl_pct": pnl_pct,
|
|
61
|
+
"weight": 0 # Calculate after total_value known
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
# Calculate weights
|
|
65
|
+
for pos in positions:
|
|
66
|
+
pos["weight"] = (pos["value"] / total_value) * 100
|
|
67
|
+
|
|
68
|
+
# Display portfolio
|
|
69
|
+
print(f"\n💼 Portfolio Overview")
|
|
70
|
+
print(f"{'='*80}")
|
|
71
|
+
print(f"Total Value: ${total_value:,.2f}\n")
|
|
72
|
+
print(f"{'Symbol':<10} {'Shares':>10} {'Price':>12} {'Value':>15} {'P/L %':>10} {'Weight':>10}")
|
|
73
|
+
print(f"{'-'*80}")
|
|
74
|
+
|
|
75
|
+
for pos in positions:
|
|
76
|
+
print(f"{pos['symbol']:<10} {pos['shares']:>10.2f} ${pos['current_price']:>11.2f} "
|
|
77
|
+
f"${pos['value']:>14.2f} {pos['pnl_pct']:>9.1f}% {pos['weight']:>9.1f}%")
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Risk Analysis
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
# Calculate portfolio-level risk metrics
|
|
84
|
+
returns = []
|
|
85
|
+
for symbol in portfolio.keys():
|
|
86
|
+
hist = obb.equity.price.historical(symbol=symbol, period="1y")
|
|
87
|
+
returns.append(hist.to_dataframe()['close'].pct_change())
|
|
88
|
+
|
|
89
|
+
portfolio_returns = pd.concat(returns, axis=1).mean(axis=1)
|
|
90
|
+
portfolio_vol = portfolio_returns.std() * (252 ** 0.5) * 100 # Annualized
|
|
91
|
+
|
|
92
|
+
# Sharpe Ratio (assuming 4% risk-free rate)
|
|
93
|
+
risk_free_rate = 0.04
|
|
94
|
+
sharpe = (portfolio_returns.mean() * 252 - risk_free_rate) / (portfolio_returns.std() * (252 ** 0.5))
|
|
95
|
+
|
|
96
|
+
# Max Drawdown
|
|
97
|
+
cumulative = (1 + portfolio_returns).cumprod()
|
|
98
|
+
running_max = cumulative.expanding().max()
|
|
99
|
+
drawdown = (cumulative - running_max) / running_max
|
|
100
|
+
max_dd = drawdown.min() * 100
|
|
101
|
+
|
|
102
|
+
print(f"\n📊 Risk Metrics:")
|
|
103
|
+
print(f"Annualized Volatility: {portfolio_vol:.2f}%")
|
|
104
|
+
print(f"Sharpe Ratio: {sharpe:.2f}")
|
|
105
|
+
print(f"Max Drawdown: {max_dd:.2f}%")
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Portfolio Optimization
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
print(f"\n🎯 Optimization Recommendations:")
|
|
112
|
+
|
|
113
|
+
# Diversification score
|
|
114
|
+
diversification = 100 - max([pos['weight'] for pos in positions])
|
|
115
|
+
print(f"Diversification Score: {diversification:.0f}/100")
|
|
116
|
+
|
|
117
|
+
if diversification < 70:
|
|
118
|
+
print("⚠️ Portfolio concentrated - consider adding positions")
|
|
119
|
+
|
|
120
|
+
# Rebalancing suggestions
|
|
121
|
+
target_weight = 100 / len(positions)
|
|
122
|
+
rebalance_needed = []
|
|
123
|
+
|
|
124
|
+
for pos in positions:
|
|
125
|
+
diff = abs(pos['weight'] - target_weight)
|
|
126
|
+
if diff > 10:
|
|
127
|
+
action = "Reduce" if pos['weight'] > target_weight else "Increase"
|
|
128
|
+
rebalance_needed.append(f"{action} {pos['symbol']}: {pos['weight']:.1f}% → {target_weight:.1f}%")
|
|
129
|
+
|
|
130
|
+
if rebalance_needed:
|
|
131
|
+
print(f"\n🔄 Rebalancing Suggestions:")
|
|
132
|
+
for suggestion in rebalance_needed:
|
|
133
|
+
print(f" • {suggestion}")
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Examples
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Analyze current portfolio
|
|
140
|
+
/openbb-portfolio --analyze
|
|
141
|
+
|
|
142
|
+
# Optimize allocation
|
|
143
|
+
/openbb-portfolio --optimize
|
|
144
|
+
|
|
145
|
+
# Compare to SPY benchmark
|
|
146
|
+
/openbb-portfolio --benchmark=SPY
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Integration
|
|
150
|
+
|
|
151
|
+
- Import positions from CSV/Excel
|
|
152
|
+
- Export reports to PDF
|
|
153
|
+
- Sync with brokerage accounts (via supported integrations)
|
|
154
|
+
- Tax-loss harvesting analysis
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openbb-research
|
|
3
|
+
description: AI-powered investment research using OpenBB - comprehensive analysis, thesis...
|
|
4
|
+
---
|
|
5
|
+
# OpenBB AI Investment Research
|
|
6
|
+
|
|
7
|
+
AI-powered comprehensive investment research combining OpenBB data with Claude's analytical capabilities.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/openbb-research SYMBOL [--depth deep|quick] [--focus thesis|risks|opportunities]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## What This Command Does
|
|
16
|
+
|
|
17
|
+
Conducts comprehensive AI-powered investment research by combining multiple OpenBB data sources with advanced analysis.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
### 1. Data Aggregation
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from openbb import obb
|
|
25
|
+
|
|
26
|
+
symbol = "AAPL"
|
|
27
|
+
|
|
28
|
+
# Gather comprehensive data
|
|
29
|
+
data = {
|
|
30
|
+
"price": obb.equity.price.historical(symbol=symbol, period="1y"),
|
|
31
|
+
"fundamentals": obb.equity.fundamental.metrics(symbol=symbol),
|
|
32
|
+
"analyst": obb.equity.estimates.analyst(symbol=symbol),
|
|
33
|
+
"news": obb.equity.news(symbol=symbol, limit=10),
|
|
34
|
+
"peers": obb.equity.compare.peers(symbol=symbol),
|
|
35
|
+
"insider": obb.equity.ownership.insider(symbol=symbol)
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 2. Investment Thesis Generation
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
print(f"\n📋 Investment Thesis for {symbol}")
|
|
43
|
+
print(f"{'='*60}")
|
|
44
|
+
|
|
45
|
+
# Business Analysis
|
|
46
|
+
print(f"\n1. Business Quality:")
|
|
47
|
+
print(f" - Competitive moats identified")
|
|
48
|
+
print(f" - Revenue growth trajectory")
|
|
49
|
+
print(f" - Margin trends and sustainability")
|
|
50
|
+
print(f" - Market position and share")
|
|
51
|
+
|
|
52
|
+
# Financial Health
|
|
53
|
+
print(f"\n2. Financial Strength:")
|
|
54
|
+
print(f" - Balance sheet assessment")
|
|
55
|
+
print(f" - Cash flow generation")
|
|
56
|
+
print(f" - Capital allocation efficiency")
|
|
57
|
+
print(f" - Debt levels and coverage")
|
|
58
|
+
|
|
59
|
+
# Valuation
|
|
60
|
+
print(f"\n3. Valuation Assessment:")
|
|
61
|
+
print(f" - P/E vs sector average")
|
|
62
|
+
print(f" - PEG ratio analysis")
|
|
63
|
+
print(f" - DCF model implications")
|
|
64
|
+
print(f" - Historical valuation ranges")
|
|
65
|
+
|
|
66
|
+
# Catalysts
|
|
67
|
+
print(f"\n4. Key Catalysts:")
|
|
68
|
+
print(f" - Upcoming earnings/events")
|
|
69
|
+
print(f" - Product launches")
|
|
70
|
+
print(f" - Regulatory developments")
|
|
71
|
+
print(f" - Industry trends")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 3. Risk Assessment
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
print(f"\n⚠️ Risk Factors:")
|
|
78
|
+
|
|
79
|
+
risks = []
|
|
80
|
+
|
|
81
|
+
# Check technical risks
|
|
82
|
+
if data["price"].rsi[-1] > 75:
|
|
83
|
+
risks.append("Overbought conditions - potential pullback risk")
|
|
84
|
+
|
|
85
|
+
# Check fundamental risks
|
|
86
|
+
if data["fundamentals"].debt_to_equity > 1.5:
|
|
87
|
+
risks.append("High leverage - financial risk elevated")
|
|
88
|
+
|
|
89
|
+
# Check market risks
|
|
90
|
+
if data["price"].volatility > 50:
|
|
91
|
+
risks.append("High volatility - price uncertainty")
|
|
92
|
+
|
|
93
|
+
for i, risk in enumerate(risks, 1):
|
|
94
|
+
print(f" {i}. {risk}")
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 4. Opportunity Analysis
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
print(f"\n💡 Investment Opportunities:")
|
|
101
|
+
|
|
102
|
+
opportunities = []
|
|
103
|
+
|
|
104
|
+
if data["analyst"].rating_score > 4.0:
|
|
105
|
+
opportunities.append("Strong analyst support - positive sentiment")
|
|
106
|
+
|
|
107
|
+
if data["insider"].net_buy_sell > 0:
|
|
108
|
+
opportunities.append("Insider buying - management confidence")
|
|
109
|
+
|
|
110
|
+
if data["fundamentals"].roe > 20:
|
|
111
|
+
opportunities.append("High ROE - efficient capital use")
|
|
112
|
+
|
|
113
|
+
for i, opp in enumerate(opportunities, 1):
|
|
114
|
+
print(f" {i}. {opp}")
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 5. Actionable Recommendations
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
print(f"\n🎯 Recommendation:")
|
|
121
|
+
|
|
122
|
+
# Decision matrix
|
|
123
|
+
score = 0
|
|
124
|
+
score += 2 if data["analyst"].rating_score > 4.0 else 0
|
|
125
|
+
score += 2 if data["fundamentals"].roe > 15 else 0
|
|
126
|
+
score += 1 if data["price"].trend == "bullish" else 0
|
|
127
|
+
score -= 1 if data["fundamentals"].pe_ratio > 30 else 0
|
|
128
|
+
|
|
129
|
+
if score >= 4:
|
|
130
|
+
rating = "BUY"
|
|
131
|
+
action = "Consider accumulating position"
|
|
132
|
+
elif score >= 2:
|
|
133
|
+
rating = "HOLD"
|
|
134
|
+
action = "Monitor closely, hold current position"
|
|
135
|
+
else:
|
|
136
|
+
rating = "AVOID"
|
|
137
|
+
action = "Wait for better entry point"
|
|
138
|
+
|
|
139
|
+
print(f" Rating: {rating}")
|
|
140
|
+
print(f" Action: {action}")
|
|
141
|
+
print(f" Confidence: {score}/5")
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Examples
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Deep research report
|
|
148
|
+
/openbb-research AAPL --depth=deep
|
|
149
|
+
|
|
150
|
+
# Quick thesis
|
|
151
|
+
/openbb-research MSFT --depth=quick --focus=thesis
|
|
152
|
+
|
|
153
|
+
# Risk analysis
|
|
154
|
+
/openbb-research TSLA --focus=risks
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Output Format
|
|
158
|
+
|
|
159
|
+
1. Executive Summary
|
|
160
|
+
2. Investment Thesis
|
|
161
|
+
3. Financial Analysis
|
|
162
|
+
4. Valuation Assessment
|
|
163
|
+
5. Risk Factors
|
|
164
|
+
6. Opportunities
|
|
165
|
+
7. Recommendation & Price Targets
|
|
166
|
+
8. Monitoring Checklist
|
|
167
|
+
|
|
168
|
+
## Integration
|
|
169
|
+
|
|
170
|
+
- Export reports to PDF/Markdown
|
|
171
|
+
- Track recommendations over time
|
|
172
|
+
- Compare with analyst consensus
|
|
173
|
+
- Portfolio integration via `/openbb-portfolio`
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@intentsolutionsio/openbb-terminal",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Open-source investment research terminal integration - equity analysis, crypto tracking, macro indicators, portfolio optimization, and AI-powered financial insights using OpenBB Platform",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"finance",
|
|
7
|
+
"investment",
|
|
8
|
+
"openbb",
|
|
9
|
+
"stocks",
|
|
10
|
+
"crypto",
|
|
11
|
+
"portfolio",
|
|
12
|
+
"trading",
|
|
13
|
+
"financial-analysis",
|
|
14
|
+
"market-data",
|
|
15
|
+
"equity-research",
|
|
16
|
+
"options",
|
|
17
|
+
"forex",
|
|
18
|
+
"macroeconomics",
|
|
19
|
+
"quant",
|
|
20
|
+
"ai-finance",
|
|
21
|
+
"claude-code",
|
|
22
|
+
"claude-plugin",
|
|
23
|
+
"tonsofskills"
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/jeremylongshore/claude-code-plugins-plus-skills.git",
|
|
28
|
+
"directory": "plugins/business-tools/openbb-terminal"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://tonsofskills.com/plugins/openbb-terminal",
|
|
31
|
+
"bugs": "https://github.com/jeremylongshore/claude-code-plugins-plus-skills/issues",
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"author": {
|
|
34
|
+
"name": "Jeremy Longshore",
|
|
35
|
+
"email": "jeremy@claudecodeplugins.io",
|
|
36
|
+
"url": "https://github.com/jeremylongshore"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"README.md",
|
|
43
|
+
".claude-plugin",
|
|
44
|
+
"skills",
|
|
45
|
+
"commands",
|
|
46
|
+
"agents"
|
|
47
|
+
],
|
|
48
|
+
"scripts": {
|
|
49
|
+
"postinstall": "node -e \"console.log(\\\"\\\\n→ This npm package is a tracking/proof artifact. Install the plugin via:\\\\n ccpi install openbb-terminal\\\\n or /plugin install openbb-terminal@claude-code-plugins-plus in Claude Code\\\\n\\\")\""
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Assets
|
|
2
|
+
|
|
3
|
+
Bundled resources for openbb-terminal skill
|
|
4
|
+
|
|
5
|
+
- [ ] report_template.html: HTML template for generating investment reports
|
|
6
|
+
- [ ] example_report.pdf: Example investment report generated using the plugin
|
|
7
|
+
- [ ] openbb_logo.png: OpenBB logo for branding purposes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": {
|
|
3
|
+
"name": "skill-name",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"settings": {
|
|
7
|
+
"verbose": false,
|
|
8
|
+
"autoActivate": true,
|
|
9
|
+
"toolRestrictions": true
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"triggers": {
|
|
13
|
+
"keywords": [
|
|
14
|
+
"example-trigger-1",
|
|
15
|
+
"example-trigger-2"
|
|
16
|
+
],
|
|
17
|
+
"patterns": []
|
|
18
|
+
},
|
|
19
|
+
"tools": {
|
|
20
|
+
"allowed": [
|
|
21
|
+
"Read",
|
|
22
|
+
"Grep",
|
|
23
|
+
"Bash"
|
|
24
|
+
],
|
|
25
|
+
"restricted": []
|
|
26
|
+
},
|
|
27
|
+
"metadata": {
|
|
28
|
+
"author": "Plugin Author",
|
|
29
|
+
"category": "general",
|
|
30
|
+
"tags": []
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Claude Skill Configuration",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["name", "description"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"pattern": "^[a-z0-9-]+$",
|
|
10
|
+
"maxLength": 64,
|
|
11
|
+
"description": "Skill identifier (lowercase, hyphens only)"
|
|
12
|
+
},
|
|
13
|
+
"description": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"maxLength": 1024,
|
|
16
|
+
"description": "What the skill does and when to use it"
|
|
17
|
+
},
|
|
18
|
+
"allowed-tools": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Comma-separated list of allowed tools"
|
|
21
|
+
},
|
|
22
|
+
"version": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
25
|
+
"description": "Semantic version (x.y.z)"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"testCases": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Basic activation test",
|
|
5
|
+
"input": "trigger phrase example",
|
|
6
|
+
"expected": {
|
|
7
|
+
"activated": true,
|
|
8
|
+
"toolsUsed": ["Read", "Grep"],
|
|
9
|
+
"success": true
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "Complex workflow test",
|
|
14
|
+
"input": "multi-step trigger example",
|
|
15
|
+
"expected": {
|
|
16
|
+
"activated": true,
|
|
17
|
+
"steps": 3,
|
|
18
|
+
"toolsUsed": ["Read", "Write", "Bash"],
|
|
19
|
+
"success": true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"fixtures": {
|
|
24
|
+
"sampleInput": "example data",
|
|
25
|
+
"expectedOutput": "processed result"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Skill Best Practices
|
|
2
|
+
|
|
3
|
+
Guidelines for optimal skill usage and development.
|
|
4
|
+
|
|
5
|
+
## For Users
|
|
6
|
+
|
|
7
|
+
### Activation Best Practices
|
|
8
|
+
|
|
9
|
+
1. **Use Clear Trigger Phrases**
|
|
10
|
+
- Match phrases from skill description
|
|
11
|
+
- Be specific about intent
|
|
12
|
+
- Provide necessary context
|
|
13
|
+
|
|
14
|
+
2. **Provide Sufficient Context**
|
|
15
|
+
- Include relevant file paths
|
|
16
|
+
- Specify scope of analysis
|
|
17
|
+
- Mention any constraints
|
|
18
|
+
|
|
19
|
+
3. **Understand Tool Permissions**
|
|
20
|
+
- Check allowed-tools in frontmatter
|
|
21
|
+
- Know what the skill can/cannot do
|
|
22
|
+
- Request appropriate actions
|
|
23
|
+
|
|
24
|
+
### Workflow Optimization
|
|
25
|
+
|
|
26
|
+
- Start with simple requests
|
|
27
|
+
- Build up to complex workflows
|
|
28
|
+
- Verify each step before proceeding
|
|
29
|
+
- Use skill consistently for related tasks
|
|
30
|
+
|
|
31
|
+
## For Developers
|
|
32
|
+
|
|
33
|
+
### Skill Development Guidelines
|
|
34
|
+
|
|
35
|
+
1. **Clear Descriptions**
|
|
36
|
+
- Include explicit trigger phrases
|
|
37
|
+
- Document all capabilities
|
|
38
|
+
- Specify limitations
|
|
39
|
+
|
|
40
|
+
2. **Proper Tool Permissions**
|
|
41
|
+
- Use minimal necessary tools
|
|
42
|
+
- Document security implications
|
|
43
|
+
- Test with restricted tools
|
|
44
|
+
|
|
45
|
+
3. **Comprehensive Documentation**
|
|
46
|
+
- Provide usage examples
|
|
47
|
+
- Document common pitfalls
|
|
48
|
+
- Include troubleshooting guide
|
|
49
|
+
|
|
50
|
+
### Maintenance
|
|
51
|
+
|
|
52
|
+
- Keep version updated
|
|
53
|
+
- Test after tool updates
|
|
54
|
+
- Monitor user feedback
|
|
55
|
+
- Iterate on descriptions
|
|
56
|
+
|
|
57
|
+
## Performance Tips
|
|
58
|
+
|
|
59
|
+
- Scope skills to specific domains
|
|
60
|
+
- Avoid overlapping trigger phrases
|
|
61
|
+
- Keep descriptions under 1024 chars
|
|
62
|
+
- Test activation reliability
|
|
63
|
+
|
|
64
|
+
## Security Considerations
|
|
65
|
+
|
|
66
|
+
- Never include secrets in skill files
|
|
67
|
+
- Validate all inputs
|
|
68
|
+
- Use read-only tools when possible
|
|
69
|
+
- Document security requirements
|