소스 정보
- 저장소
- ginlix-ai/LangAlpha
- 최근 소스 활동
- 2026년 5월 4일 16:36
- 감지된 SKILL.md 언어
- 영어
- 스타
- 1,672
- 포크
- 279
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ginlix-ai/LangAlpha --skill user-profile명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | user-profile |
| description | Manage user profile including watchlists, portfolio, and preferences. |
This skill provides 3 unified tools for managing user data:
get_user_data - Read user dataupdate_user_data - Create or update user dataremove_user_data - Delete user dataYou should call these tools directly instead of using ExecuteCode tool.
Retrieve user data by entity type.
| Entity | Description | entity_id |
|---|---|---|
all | Complete user data (profile, preferences, watchlists with items, portfolio) | Not used |
profile | User info (name, timezone, locale) | Not used |
preferences | All preferences (risk, investment, agent) | Not used |
watchlists | List of all watchlists | Not used |
watchlist_items | Items in a specific watchlist | Optional watchlist_id |
portfolio | All portfolio holdings | Not used |
# Get complete user data (recommended for initial context)
get_user_data(entity="all")
# Returns: {
# "profile": {"name": "John", "timezone": "America/New_York", "locale": "en-US"},
# "preferences": {"risk_preference": {...}, "investment_preference": {...}, ...},
# "watchlists": [{"name": "Tech Stocks", "items": [...], ...}],
# "portfolio": [{"symbol": "AAPL", "quantity": 50, ...}]
# }
# Get user profile
get_user_data(entity="profile")
# Returns: {"name": "John", "timezone": "America/New_York", "locale": "en-US"}
# Get all preferences
get_user_data(entity="preferences")
# Returns: {"risk_preference": {...}, "investment_preference": {...}, "agent_preference": {...}}
# Get all watchlists
get_user_data(entity="watchlists")
# Returns: [{"watchlist_id": "abc", "name": "Tech Stocks", "is_default": true}, ...]
# Get items from default watchlist
get_user_data(entity="watchlist_items")
# Returns: [{"symbol": "AAPL", "notes": "..."}, {"symbol": "NVDA", ...}]
# Get items from specific watchlist
get_user_data(entity="watchlist_items", entity_id="abc-123")
# Get portfolio holdings
get_user_data(entity="portfolio")
# Returns: [{"symbol": "AAPL", "quantity": 50, "average_cost": 175.0}, ...]
Create or update user data (upsert semantics).
All preference entities (risk_preference, investment_preference, agent_preference) support:
| Parameter | Type | Description |
|---|---|---|
replace | bool | If True, completely replace the preference instead of merging with existing data |
The data dict accepts any fields. Extra fields like notes, instruction, avoid_sectors are stored alongside named fields.
# Merge with existing (default behavior)
update_user_data(entity="agent_preference", data={
"output_style": "Balanced summary with key numbers highlighted",
"notes": "User prefers brevity"
})
# Replace entire preference (delete all existing fields, set only new ones)
update_user_data(entity="agent_preference", data={
"output_style": "In-depth deep dive with full analysis"
}, replace=True)
Update user profile info.
| Field | Type | Description |
|---|---|---|
name | str | Display name |
timezone | str | e.g., "America/New_York" |
locale | str | Preferred language, e.g., "en-US", "zh-CN" |
onboarding_completed | bool | Mark onboarding done (write-only, not returned in get) |
# Update display name
update_user_data(entity="profile", data={"name": "John Doe"})
# Mark onboarding complete
update_user_data(entity="profile", data={"onboarding_completed": True})
Set risk tolerance settings. All fields accept any descriptive string.
| Field | Type | Description |
|---|---|---|
risk_tolerance | str | Risk tolerance description (any text) |
| (extra fields) | any | Additional context (notes, constraints, etc.) |
# Descriptive risk preference
update_user_data(
entity="risk_preference",
data={
"risk_tolerance": "Moderate - comfortable with market swings but avoids concentrated bets",
"notes": "Prefers diversification after 2022 tech losses"
}
)
Set investment style settings. All fields accept any descriptive string. At least one field is required.
| Field | Type | Description |
|---|---|---|
company_interest | str | Type of companies interested in (any text) |
holding_period | str | Preferred holding period (any text) |
analysis_focus | str | Primary analysis focus area (any text) |
| (extra fields) | any | Additional context (avoid_sectors, focus_sectors, notes, etc.) |
# Full investment profile with rich descriptions
update_user_data(
entity="investment_preference",
data={
"company_interest": "Dividend-paying blue chips and REITs for income",
"holding_period": "Long-term (5+ years), rarely sells",
"analysis_focus": "Dividend sustainability and balance sheet strength",
"avoid_sectors": "Crypto, speculative biotech"
}
)
Set agent behavior settings. All fields accept any descriptive string.
| Field | Type | Description |
|---|---|---|
output_style | str | Preferred output style (any text) |
data_visualization | str | Chart/visualization preferences (any text) |
proactive_questions | str | When to ask clarifying questions (any text) |
| (extra fields) | any | Additional context (instruction, notes, etc.) |
# Rich agent preferences
update_user_data(
entity="agent_preference",
data={
"output_style": "Balanced summary with key numbers highlighted",
"data_visualization": "Include charts when comparing multiple stocks",
"proactive_questions": "Use your judgment, only ask when critical"
}
)
Create or update a watchlist.
| Field | Type | Required | Description |
|---|---|---|---|
name | str | Yes | Watchlist name (used as key for upsert) |
description | str | No | Purpose of the watchlist |
is_default | bool | No | Set as default watchlist |
# Create a watchlist
update_user_data(
entity="watchlist",
data={"name": "AI Companies", "description": "Companies focused on AI"}
)
# Create and set as default
update_user_data(
entity="watchlist",
data={"name": "My Watchlist", "is_default": True}
)
Add or update an item in a watchlist.
| Field | Type | Required | Description |
|---|---|---|---|
symbol | str | Yes | Stock symbol (used as key) |
watchlist_id | str | No | Target watchlist (uses default if omitted) |
instrument_type | str | No | Free-form. Common: "stock", "etf", "index", "crypto", "future", "commodity", "currency". Other values accepted (default: "stock") |
exchange | str | No | e.g., "NASDAQ" |
name | str | No | Company name |
notes | str | No | Why you're watching |
# Add to default watchlist
update_user_data(
entity="watchlist_item",
data={"symbol": "NVDA", "notes": "Watching for AI chip growth"}
)
# Add to specific watchlist with full details
update_user_data(
entity="watchlist_item",
data={
"symbol": "AAPL",
"watchlist_id": "abc-123",
"name": "Apple Inc.",
"exchange": "NASDAQ",
"notes": "iPhone revenue growth"
}
)
# Add an ETF
update_user_data(
entity="watchlist_item",
data={"symbol": "QQQ", "instrument_type": "etf", "notes": "Tech exposure"}
)
Add or update a portfolio holding.
| Field | Type | Required | Description |
|---|---|---|---|
symbol | str | Yes | Stock symbol (used as key) |
quantity | float | Yes | Number of shares |
average_cost | float | No | Cost per share |
account_name | str | No | e.g., "Robinhood", "Fidelity IRA" (part of key) |
instrument_type | str | No | Free-form. Common: "stock", "etf", "index", "crypto", "future", "commodity", "currency". Other values accepted (default: "stock") |
currency | str | No | Default: "USD" |
notes | str | No | Additional notes |
# Add basic holding
update_user_data(
entity="portfolio_holding",
data={"symbol": "AAPL", "quantity": 50, "average_cost": 175.0}
)
# Add holding with account
update_user_data(
entity="portfolio_holding",
data={
"symbol": "VTI",
"quantity": 100,
"average_cost": 220.50,
"account_name": "Fidelity 401k",
"instrument_type": "etf",
"notes": "Long-term retirement holding"
}
)
# Same symbol in different accounts
update_user_data(
entity="portfolio_holding",
data={"symbol": "MSFT", "quantity": 25, "account_name": "Robinhood"}
)
update_user_data(
entity="portfolio_holding",
data={"symbol": "MSFT", "quantity": 50, "account_name": "Schwab IRA"}
)
Delete user data by entity type.
Delete an entire watchlist.
| Field | Type | Required | Description |
|---|---|---|---|
watchlist_id | str | Either | Watchlist ID |
name | str | Either | Watchlist name |
# Delete by ID
remove_user_data(
entity="watchlist",
identifier={"watchlist_id": "abc-123"}
)
# Delete by name
remove_user_data(
entity="watchlist",
identifier={"name": "Tech Stocks"}
)
Remove an item from a watchlist.
| Field | Type | Required | Description |
|---|---|---|---|
symbol | str | Yes | Stock symbol |
watchlist_id | str | No | Uses default if omitted |
# Remove from default watchlist
remove_user_data(
entity="watchlist_item",
identifier={"symbol": "NVDA"}
)
# Remove from specific watchlist
remove_user_data(
entity="watchlist_item",
identifier={"symbol": "AAPL", "watchlist_id": "abc-123"}
)
Remove a portfolio holding.
| Field | Type | Required | Description |
|---|---|---|---|
symbol | str | Yes | Stock symbol |
account_name | str | No | For disambiguation if same symbol in multiple accounts |
# Remove holding (when only one account)
remove_user_data(
entity="portfolio_holding",
identifier={"symbol": "AAPL"}
)
# Remove from specific account
remove_user_data(
entity="portfolio_holding",
identifier={"symbol": "MSFT", "account_name": "Robinhood"}
)
Search X (Twitter) posts, pull user profiles, fetch specific tweets, and read reply threads for sentiment, news, and event research. Triggers on 'X', 'Twitter', 'tweets about', 'sentiment on', 'what are people saying about', 'historical tweets', or any request to read public X content.
Web scraping: scrape_page / scrape_pages MCP tools for fetching pages as markdown, HTML, or text (fast HTTP, browser rendering, anti-bot stealth), plus the direct Scrapling Python API for selectors, sessions, and spiders
Orchestrate parallel subagent pipelines from a JavaScript workflow script — fan out work across many items (tickers, filings, findings) then synthesize, or run a saved workflow by name. Unlocks the RunWorkflow tool.
SOC 직업 분류 기준