PRD: Market Price Tracker
Version: 2.0.0
Author: Jeremy Longshore jeremy@intentsolutions.io
Status: In Development
Last Updated: 2025-01-14
Document Control
| Field |
Value |
| Skill Name |
tracking-crypto-prices |
| Skill Type |
Utility Skill |
| Domain |
Cryptocurrency / Market Data |
| Target Users |
Traders, Investors, Developers, Analysts |
| Priority |
Critical (Foundation Skill) |
| Status |
In Development |
| Owner |
Jeremy Longshore |
1. Executive Summary
One-sentence description: Track real-time cryptocurrency prices across multiple exchanges with historical data, price alerts, and multi-currency support.
Value Proposition: This is the foundation skill for the entire crypto plugin ecosystem. It provides the price data infrastructure that 10+ other skills depend on for their functionality. Without reliable price tracking, portfolio management, tax calculation, DeFi optimization, and arbitrage detection are impossible.
Key Metrics:
- Activation accuracy: 95%+
- Price data freshness: < 30 seconds
- API reliability: 99.5%+ uptime
- Supported assets: 10,000+ cryptocurrencies
Dependent Skills (skills that require this one):
- market-movers-scanner
- crypto-portfolio-tracker
- crypto-tax-calculator
- defi-yield-optimizer
- liquidity-pool-analyzer
- staking-rewards-optimizer
- crypto-derivatives-tracker
- dex-aggregator-router
- options-flow-analyzer
- arbitrage-opportunity-finder
2. Problem Statement
Current State (Without This Skill)
Pain Points:
- Fragmented Data Sources: Traders must manually check multiple exchanges and websites for price information, wasting time and risking decisions on stale data
- No Standardized Format: Price data comes in different formats from different sources, making programmatic analysis difficult
- Missing Historical Context: Point-in-time prices without historical trends lead to poor trading decisions
- Alert Fatigue: Without intelligent alerting, users miss important price movements or get overwhelmed by noise
- Currency Confusion: Prices in USD only ignore users who think in EUR, GBP, or other currencies
Current Workarounds:
- Manually refreshing CoinGecko/CoinMarketCap tabs
- Using spreadsheets with manual data entry
- Writing one-off scripts for each data source
- Subscribing to expensive third-party services
Impact of Problem:
- Time wasted: 30+ minutes daily checking prices across sources
- Error rate: 15% of decisions based on stale/incorrect data
- Missed opportunities: Significant due to delayed information
- User frustration: High
Desired State (With This Skill)
Transformation:
- From: Manual, fragmented, time-consuming price checking
- To: Instant, unified, automated price intelligence with historical context
Expected Benefits:
- Time Savings: Reduce price checking from 30+ minutes to < 30 seconds
- Accuracy: 99.9%+ data accuracy with source verification
- Intelligence: Historical trends and price alerts reduce missed opportunities by 80%
- Foundation: Enable 10+ dependent skills to function reliably
3. Target Users
Primary Users
User Persona 1: Active Cryptocurrency Trader
- Background: Trades crypto daily, uses multiple exchanges, technically competent
- Goals: Get real-time prices quickly, set price alerts, compare across exchanges
- Pain Points: Switching between apps/tabs, missing price movements, stale data
- Use Frequency: 10-50 times daily
User Persona 2: Crypto Investor (HODLer)
- Background: Long-term holder, checks portfolio weekly, moderate technical skills
- Goals: Monitor portfolio value, track historical performance, set major price alerts
- Pain Points: No simple way to see current holdings value, missing major moves
- Use Frequency: 2-5 times weekly
User Persona 3: Developer Building Crypto Tools
- Background: Software developer integrating price data into applications
- Goals: Reliable price API, consistent data format, historical data access
- Pain Points: Inconsistent API responses, rate limits, data normalization
- Use Frequency: Continuous (via other skills)
Secondary Users
- Analysts: Need historical price data for research and modeling
- Content Creators: Need current prices for articles and videos
- Compliance Officers: Need price data for regulatory reporting
4. User Stories
Critical User Stories (Must Have)
As a trader,
I want to get the current price of any cryptocurrency instantly,
So that I can make informed trading decisions without delay.
Acceptance Criteria:
As a investor,
I want to see price history for any cryptocurrency,
So that I can understand trends before making buy/sell decisions.
Acceptance Criteria:
As a multi-currency user,
I want prices displayed in my preferred currency (EUR, GBP, JPY, etc.),
So that I don't have to mentally convert from USD.
Acceptance Criteria:
As a developer using other crypto skills,
I want a reliable price data interface,
So that dependent skills (portfolio tracker, tax calculator, etc.) work correctly.
Acceptance Criteria:
High-Priority User Stories (Should Have)
- As a trader, I want to compare prices across exchanges to find arbitrage opportunities
- As a investor, I want price alerts when assets hit target prices
- As a analyst, I want batch price queries for multiple assets simultaneously
Nice-to-Have User Stories (Could Have)
- As a user, I want price predictions based on historical patterns
- As a user, I want social sentiment integration with price data
5. Functional Requirements
Core Capabilities (Must Have)
REQ-1: Real-Time Price Fetching
- Description: Fetch current price for any cryptocurrency by symbol or name
- Rationale: Core functionality - everything else depends on this
- Acceptance Criteria:
- Dependencies: CoinGecko API or equivalent
REQ-2: Historical Price Data
- Description: Fetch OHLCV data for specified time ranges
- Rationale: Trend analysis requires historical context
- Acceptance Criteria:
- Dependencies: Yahoo Finance, CoinGecko, or exchange APIs
REQ-3: Multi-Currency Support
- Description: Display prices in user's preferred fiat currency
- Rationale: Global user base thinks in different currencies
- Acceptance Criteria:
- Dependencies: Exchange rate API
REQ-4: Watchlist Management
- Description: Track a personalized list of cryptocurrencies
- Rationale: Users care about specific assets, not all 10,000+
- Acceptance Criteria:
- Dependencies: Local storage for watchlist data
REQ-5: Caching Layer
- Description: Cache price data to reduce API calls and improve speed
- Rationale: Rate limits and latency require intelligent caching
- Acceptance Criteria:
- Dependencies: Local file system
Integration Requirements
REQ-API-1: CoinGecko API
- Purpose: Primary source for price data (10,000+ assets, free tier available)
- Endpoints:
/simple/price - Current prices
/coins/{id}/market_chart - Historical data
/coins/markets - Market data with sorting
- Authentication: API key (optional for higher limits)
- Rate Limits: 10-50 calls/minute (free), 500/minute (Pro)
- Error Handling: Exponential backoff on 429, fallback to cache
REQ-API-2: Yahoo Finance (yfinance)
- Purpose: Backup source, especially for historical OHLCV data
- Endpoints: Via yfinance Python library
- Authentication: None required
- Rate Limits: Implicit (be respectful)
- Error Handling: Fallback to CoinGecko
Data Requirements
REQ-DATA-1: Input Data Format
- Format: Command-line arguments or JSON config
- Required Fields:
symbol or symbols (list)
- Optional Fields:
currency, period, interval
- Validation Rules: Symbol must be valid crypto ticker
REQ-DATA-2: Output Data Format
- Format: JSON (programmatic) or formatted table (human-readable)
- Fields:
symbol, name, price, change_24h, volume_24h, market_cap, last_updated
- Quality Standards: Prices accurate to 8 decimal places for small-cap assets
Performance Requirements
REQ-PERF-1: Response Time
- Target: < 3 seconds for single asset
- Max Acceptable: < 10 seconds for watchlist of 20 assets
REQ-PERF-2: Token Budget
- Description Size: < 250 characters
- SKILL.md Size: < 500 lines
- Total Skill Size: < 5,000 tokens
Quality Requirements
REQ-QUAL-1: Description Quality
- Target Score: 80%+ on quality formula
- Must Include:
REQ-QUAL-2: Data Accuracy
- Price Accuracy: Match exchange prices within 0.5%
- Data Freshness: < 30 seconds for spot prices
- Error Rate: < 1% failed requests after retries
6. Non-Goals (Out of Scope)
What This Skill Does NOT Do:
Execute Trades
- Rationale: Trading requires exchange authentication and carries financial risk
- Alternative: Use exchange-specific trading bots or manual trading
Provide Price Predictions
- Rationale: Prediction is speculative and outside data-fetching scope
- Alternative: May be added in future version (v3.0)
Track NFT Prices
- Rationale: NFTs require different data sources and valuation methods
- Alternative: Use nft-rarity-analyzer skill (separate)
Aggregate DEX Prices
- Rationale: DEX prices require on-chain queries (different architecture)
- Alternative: Use dex-aggregator-router skill (depends on this skill)
7. Success Metrics
Skill Activation Metrics
Metric 1: Activation Accuracy
- Definition: % of times skill activates when user intends to check prices
- Target: 95%+
- Measurement: Manual testing with 50+ trigger phrase variations
Metric 2: False Positive Rate
- Definition: % of times skill activates when user meant something else
- Target: < 2%
- Measurement: User feedback and log analysis
Quality Metrics
Metric 3: Description Quality Score
- Formula: 6-criterion weighted scoring
- Target: 85%+
- Components:
- Action-oriented: 20%
- Clear triggers: 25%
- Comprehensive: 15%
- Natural language: 20%
- Specificity: 10%
- Technical terms: 10%
Usage Metrics
Metric 4: Daily Active Use
- Target: Used 5+ times daily by active users
- Measurement: Skill invocation logs
Performance Metrics
Metric 5: Data Freshness
- Definition: Time since last price update
- Target: < 30 seconds for cached data
- Measurement: Timestamp comparison
8. User Experience Flow
Typical Usage Flow
- User Intent: User wants to know current Bitcoin price
- Trigger: User says "What's the Bitcoin price?" or "check BTC"
- Skill Activation: Claude recognizes price query intent
- Skill Execution:
- Check cache for recent BTC price
- If stale, fetch from CoinGecko API
- Format response with price, change, volume
- Output Delivered: Formatted price card with key metrics
- User Action: User uses information for trading decision
Example Scenario
Scenario: Check current prices for a watchlist
Input:
Check prices for my top holdings: BTC, ETH, SOL
Claude's Response:
Fetching current prices...
================================================================================
CRYPTO PRICES Updated: [timestamp]
================================================================================
Symbol Price (USD) 24h Change Volume (24h) Market Cap
--------------------------------------------------------------------------------
BTC $97,234.56 +2.34% $28.5B $1.92T
ETH $3,456.78 +1.87% $12.3B $415.2B
SOL $142.34 +5.12% $2.1B $61.4B
--------------------------------------------------------------------------------
Total Portfolio Change: +2.44%
================================================================================
User Benefit: Instant visibility into holdings without checking multiple sources
9. Integration Points
External Systems
System 1: CoinGecko API
- Purpose: Primary price data source
- Integration Type: REST API
- Authentication: Optional API key for higher limits
- Data Flow: Skill → API → Parse JSON → Cache → Format → User
System 2: Yahoo Finance (via yfinance)
- Purpose: Historical OHLCV data, backup price source
- Integration Type: Python library
- Authentication: None
- Data Flow: Skill → yfinance → DataFrame → CSV/JSON → User
Internal Dependencies
Dependency 1: Local Cache System
- What it provides: Fast access to recently fetched prices
- Why needed: Reduces API calls, improves response time
Dependency 2: Python Libraries
- Libraries: requests, pandas, yfinance
- Versions: requests>=2.28, pandas>=2.0, yfinance>=0.2.30
Skills That Depend on This
| Skill |
How It Uses Price Data |
| market-movers-scanner |
Compares price changes to find movers |
| crypto-portfolio-tracker |
Values holdings at current prices |
| crypto-tax-calculator |
Gets cost basis and current values |
| defi-yield-optimizer |
Calculates yield in USD terms |
| liquidity-pool-analyzer |
Values LP positions |
| staking-rewards-optimizer |
Calculates staking APY |
| crypto-derivatives-tracker |
Tracks underlying asset prices |
| dex-aggregator-router |
Compares DEX prices to CEX |
| options-flow-analyzer |
Values options based on underlying |
| arbitrage-opportunity-finder |
Detects price discrepancies |
10. Constraints & Assumptions
Technical Constraints
- API Rate Limits: CoinGecko free tier limits to 10-50 calls/minute
- Token Budget: Must fit in 5,000 token skill discovery limit
- Processing Time: Max 10 seconds for any operation
- Dependencies: Requires network access for price fetching
Business Constraints
- API Costs: Free tier preferred; Pro tier ($129/month) if needed
- Timeline: Foundation skill - must be complete before dependent skills
- Resources: Single developer (Claude)
Assumptions
Assumption 1: CoinGecko API remains available and free tier sufficient
- Risk if false: Switch to backup provider (CoinMarketCap)
- Mitigation: Implement provider abstraction layer
Assumption 2: Users have Python 3.8+ installed
- Risk if false: Scripts won't run
- Mitigation: Document requirements, provide error messages
11. Risk Assessment
Technical Risks
Risk 1: API Rate Limiting
- Probability: High (free tier has strict limits)
- Impact: Medium (degraded but not broken experience)
- Mitigation: Aggressive caching, exponential backoff, batch requests
Risk 2: API Downtime
- Probability: Low (CoinGecko has 99.9% uptime)
- Impact: High (skill unusable)
- Mitigation: Multiple fallback providers, cached data with staleness warning
User Experience Risks
Risk 1: Skill Over-Triggering (False Positives)
- Probability: Medium
- Impact: Low (user can clarify)
- Mitigation: Precise trigger phrases, domain-specific keywords
Risk 2: Stale Data Confusion
- Probability: Medium (if cache too aggressive)
- Impact: Medium (bad trading decisions)
- Mitigation: Clear timestamps, configurable cache duration, manual refresh
12. Open Questions
Resolved Questions:
✅ Question: Which API should be primary?
- Decision: CoinGecko (largest free tier, most assets)
✅ Question: How long to cache spot prices?
- Decision: 30 seconds (balance between freshness and rate limits)
Pending Questions: None
13. Appendix: Examples
Example 1: Single Asset Price Check
User Request:
What's the current Ethereum price?
Expected Skill Behavior:
- Parse "Ethereum" as ETH
- Check cache for recent ETH price
- If stale (>30s), fetch from CoinGecko
- Format response with price card
Expected Output:
ETH (Ethereum)
$3,456.78 USD
+1.87% (24h) | Vol: $12.3B | MCap: $415.2B
Updated: [timestamp]
Example 2: Watchlist Scan
User Request:
Check prices for the top 10 cryptos
Expected Behavior:
- Use predefined "crypto_top10" watchlist
- Batch fetch all 10 prices
- Format as table with all metrics
Example 3: Historical Data Export
User Request:
Get Bitcoin's price history for the last 30 days and save to CSV
Expected Behavior:
- Fetch 30-day OHLCV data from yfinance
- Format as DataFrame
- Export to
data/BTC_30d_[date].csv
- Confirm file location
14. Version History
| Version |
Date |
Changes |
Author |
| 1.0.0 |
2025-01-01 |
Initial stub |
Jeremy Longshore |
| 2.0.0 |
2025-01-14 |
Full PRD per nixtla standard |
Jeremy Longshore |
15. Approval
| Role |
Name |
Approval Date |
Signature |
| Product Owner |
Jeremy Longshore |
2025-01-14 |
✓ |
| Tech Lead |
Claude (Opus 4.5) |
2025-01-14 |
✓ |
Document maintained by: Intent Solutions
Standard: Nixtla Enterprise Skill PRD Template v1.0
1---2name: 027-prd-75b337413description: PRD: Market Price Tracker4---5# PRD: Market Price Tracker67**Version**: 2.0.08**Author**: Jeremy Longshore <jeremy@intentsolutions.io>9**Status**: In Development10**Last Updated**: 2025-01-141112---1314## Document Control1516| Field | Value |17|-------|-------|18| **Skill Name** | tracking-crypto-prices |19| **Skill Type** | Utility Skill |20| **Domain** | Cryptocurrency / Market Data |21| **Target Users** | Traders, Investors, Developers, Analysts |22| **Priority** | Critical (Foundation Skill) |23| **Status** | In Development |24| **Owner** | Jeremy Longshore |2526---2728## 1. Executive Summary2930**One-sentence description**: Track real-time cryptocurrency prices across multiple exchanges with historical data, price alerts, and multi-currency support.3132**Value Proposition**: This is the **foundation skill** for the entire crypto plugin ecosystem. It provides the price data infrastructure that 10+ other skills depend on for their functionality. Without reliable price tracking, portfolio management, tax calculation, DeFi optimization, and arbitrage detection are impossible.3334**Key Metrics**:35- Activation accuracy: 95%+36- Price data freshness: < 30 seconds37- API reliability: 99.5%+ uptime38- Supported assets: 10,000+ cryptocurrencies3940**Dependent Skills** (skills that require this one):41- market-movers-scanner42- crypto-portfolio-tracker43- crypto-tax-calculator44- defi-yield-optimizer45- liquidity-pool-analyzer46- staking-rewards-optimizer47- crypto-derivatives-tracker48- dex-aggregator-router49- options-flow-analyzer50- arbitrage-opportunity-finder5152---5354## 2. Problem Statement5556### Current State (Without This Skill)5758**Pain Points**:591. **Fragmented Data Sources**: Traders must manually check multiple exchanges and websites for price information, wasting time and risking decisions on stale data602. **No Standardized Format**: Price data comes in different formats from different sources, making programmatic analysis difficult613. **Missing Historical Context**: Point-in-time prices without historical trends lead to poor trading decisions624. **Alert Fatigue**: Without intelligent alerting, users miss important price movements or get overwhelmed by noise635. **Currency Confusion**: Prices in USD only ignore users who think in EUR, GBP, or other currencies6465**Current Workarounds**:66- Manually refreshing CoinGecko/CoinMarketCap tabs67- Using spreadsheets with manual data entry68- Writing one-off scripts for each data source69- Subscribing to expensive third-party services7071**Impact of Problem**:72- Time wasted: 30+ minutes daily checking prices across sources73- Error rate: 15% of decisions based on stale/incorrect data74- Missed opportunities: Significant due to delayed information75- User frustration: High7677### Desired State (With This Skill)7879**Transformation**:80- From: Manual, fragmented, time-consuming price checking81- To: Instant, unified, automated price intelligence with historical context8283**Expected Benefits**:841. **Time Savings**: Reduce price checking from 30+ minutes to < 30 seconds852. **Accuracy**: 99.9%+ data accuracy with source verification863. **Intelligence**: Historical trends and price alerts reduce missed opportunities by 80%874. **Foundation**: Enable 10+ dependent skills to function reliably8889---9091## 3. Target Users9293### Primary Users9495**User Persona 1**: Active Cryptocurrency Trader96- **Background**: Trades crypto daily, uses multiple exchanges, technically competent97- **Goals**: Get real-time prices quickly, set price alerts, compare across exchanges98- **Pain Points**: Switching between apps/tabs, missing price movements, stale data99- **Use Frequency**: 10-50 times daily100101**User Persona 2**: Crypto Investor (HODLer)102- **Background**: Long-term holder, checks portfolio weekly, moderate technical skills103- **Goals**: Monitor portfolio value, track historical performance, set major price alerts104- **Pain Points**: No simple way to see current holdings value, missing major moves105- **Use Frequency**: 2-5 times weekly106107**User Persona 3**: Developer Building Crypto Tools108- **Background**: Software developer integrating price data into applications109- **Goals**: Reliable price API, consistent data format, historical data access110- **Pain Points**: Inconsistent API responses, rate limits, data normalization111- **Use Frequency**: Continuous (via other skills)112113### Secondary Users114115- **Analysts**: Need historical price data for research and modeling116- **Content Creators**: Need current prices for articles and videos117- **Compliance Officers**: Need price data for regulatory reporting118119---120121## 4. User Stories122123### Critical User Stories (Must Have)1241251. **As a** trader,126 **I want** to get the current price of any cryptocurrency instantly,127 **So that** I can make informed trading decisions without delay.128129 **Acceptance Criteria**:130 - [ ] Price returned in < 3 seconds131 - [ ] Price includes 24h change percentage132 - [ ] Price includes volume data133 - [ ] Works for top 10,000 cryptocurrencies by market cap1341352. **As a** investor,136 **I want** to see price history for any cryptocurrency,137 **So that** I can understand trends before making buy/sell decisions.138139 **Acceptance Criteria**:140 - [ ] Historical data available for 1d, 7d, 30d, 90d, 1y, all-time141 - [ ] Data includes OHLCV (Open, High, Low, Close, Volume)142 - [ ] Data exportable to CSV for analysis143 - [ ] Charts/visualizations available1441453. **As a** multi-currency user,146 **I want** prices displayed in my preferred currency (EUR, GBP, JPY, etc.),147 **So that** I don't have to mentally convert from USD.148149 **Acceptance Criteria**:150 - [ ] Support for 30+ fiat currencies151 - [ ] Currency preference can be set and remembered152 - [ ] Conversion rates are current (< 1 hour old)1531544. **As a** developer using other crypto skills,155 **I want** a reliable price data interface,156 **So that** dependent skills (portfolio tracker, tax calculator, etc.) work correctly.157158 **Acceptance Criteria**:159 - [ ] Standardized JSON output format160 - [ ] Consistent error handling161 - [ ] Cached data for rate limit management162 - [ ] Clear documentation for integration163164### High-Priority User Stories (Should Have)1651661. **As a** trader, **I want** to compare prices across exchanges to find arbitrage opportunities1672. **As a** investor, **I want** price alerts when assets hit target prices1683. **As a** analyst, **I want** batch price queries for multiple assets simultaneously169170### Nice-to-Have User Stories (Could Have)1711721. **As a** user, **I want** price predictions based on historical patterns1732. **As a** user, **I want** social sentiment integration with price data174175---176177## 5. Functional Requirements178179### Core Capabilities (Must Have)180181**REQ-1**: Real-Time Price Fetching182- **Description**: Fetch current price for any cryptocurrency by symbol or name183- **Rationale**: Core functionality - everything else depends on this184- **Acceptance Criteria**:185 - [ ] Support symbol lookup (BTC, ETH, SOL)186 - [ ] Support name lookup (Bitcoin, Ethereum, Solana)187 - [ ] Return price, 24h change, volume, market cap188 - [ ] Response time < 3 seconds189- **Dependencies**: CoinGecko API or equivalent190191**REQ-2**: Historical Price Data192- **Description**: Fetch OHLCV data for specified time ranges193- **Rationale**: Trend analysis requires historical context194- **Acceptance Criteria**:195 - [ ] Configurable time ranges (1d to all-time)196 - [ ] Configurable intervals (1m, 5m, 1h, 1d)197 - [ ] OHLCV format output198 - [ ] Export to CSV/JSON199- **Dependencies**: Yahoo Finance, CoinGecko, or exchange APIs200201**REQ-3**: Multi-Currency Support202- **Description**: Display prices in user's preferred fiat currency203- **Rationale**: Global user base thinks in different currencies204- **Acceptance Criteria**:205 - [ ] Support 30+ fiat currencies206 - [ ] Automatic conversion using current rates207 - [ ] Configurable default currency208- **Dependencies**: Exchange rate API209210**REQ-4**: Watchlist Management211- **Description**: Track a personalized list of cryptocurrencies212- **Rationale**: Users care about specific assets, not all 10,000+213- **Acceptance Criteria**:214 - [ ] Create/edit/delete watchlists215 - [ ] Predefined watchlists (top 10, DeFi, Layer 2, etc.)216 - [ ] Batch price fetch for watchlist217- **Dependencies**: Local storage for watchlist data218219**REQ-5**: Caching Layer220- **Description**: Cache price data to reduce API calls and improve speed221- **Rationale**: Rate limits and latency require intelligent caching222- **Acceptance Criteria**:223 - [ ] Configurable cache duration (default: 30 seconds for spot prices)224 - [ ] Cache invalidation on demand225 - [ ] Disk-based cache for persistence226- **Dependencies**: Local file system227228### Integration Requirements229230**REQ-API-1**: CoinGecko API231- **Purpose**: Primary source for price data (10,000+ assets, free tier available)232- **Endpoints**:233 - `/simple/price` - Current prices234 - `/coins/{id}/market_chart` - Historical data235 - `/coins/markets` - Market data with sorting236- **Authentication**: API key (optional for higher limits)237- **Rate Limits**: 10-50 calls/minute (free), 500/minute (Pro)238- **Error Handling**: Exponential backoff on 429, fallback to cache239240**REQ-API-2**: Yahoo Finance (yfinance)241- **Purpose**: Backup source, especially for historical OHLCV data242- **Endpoints**: Via yfinance Python library243- **Authentication**: None required244- **Rate Limits**: Implicit (be respectful)245- **Error Handling**: Fallback to CoinGecko246247### Data Requirements248249**REQ-DATA-1**: Input Data Format250- **Format**: Command-line arguments or JSON config251- **Required Fields**: `symbol` or `symbols` (list)252- **Optional Fields**: `currency`, `period`, `interval`253- **Validation Rules**: Symbol must be valid crypto ticker254255**REQ-DATA-2**: Output Data Format256- **Format**: JSON (programmatic) or formatted table (human-readable)257- **Fields**: `symbol`, `name`, `price`, `change_24h`, `volume_24h`, `market_cap`, `last_updated`258- **Quality Standards**: Prices accurate to 8 decimal places for small-cap assets259260### Performance Requirements261262**REQ-PERF-1**: Response Time263- **Target**: < 3 seconds for single asset264- **Max Acceptable**: < 10 seconds for watchlist of 20 assets265266**REQ-PERF-2**: Token Budget267- **Description Size**: < 250 characters268- **SKILL.md Size**: < 500 lines269- **Total Skill Size**: < 5,000 tokens270271### Quality Requirements272273**REQ-QUAL-1**: Description Quality274- **Target Score**: 80%+ on quality formula275- **Must Include**:276 - [ ] Action-oriented verbs277 - [ ] "Use when [scenarios]" clause278 - [ ] "Trigger with '[phrases]'" examples279 - [ ] Domain keywords (price, crypto, exchange, market)280281**REQ-QUAL-2**: Data Accuracy282- **Price Accuracy**: Match exchange prices within 0.5%283- **Data Freshness**: < 30 seconds for spot prices284- **Error Rate**: < 1% failed requests after retries285286---287288## 6. Non-Goals (Out of Scope)289290**What This Skill Does NOT Do**:2912921. **Execute Trades**293 - **Rationale**: Trading requires exchange authentication and carries financial risk294 - **Alternative**: Use exchange-specific trading bots or manual trading2952962. **Provide Price Predictions**297 - **Rationale**: Prediction is speculative and outside data-fetching scope298 - **Alternative**: May be added in future version (v3.0)2993003. **Track NFT Prices**301 - **Rationale**: NFTs require different data sources and valuation methods302 - **Alternative**: Use nft-rarity-analyzer skill (separate)3033044. **Aggregate DEX Prices**305 - **Rationale**: DEX prices require on-chain queries (different architecture)306 - **Alternative**: Use dex-aggregator-router skill (depends on this skill)307308---309310## 7. Success Metrics311312### Skill Activation Metrics313314**Metric 1**: Activation Accuracy315- **Definition**: % of times skill activates when user intends to check prices316- **Target**: 95%+317- **Measurement**: Manual testing with 50+ trigger phrase variations318319**Metric 2**: False Positive Rate320- **Definition**: % of times skill activates when user meant something else321- **Target**: < 2%322- **Measurement**: User feedback and log analysis323324### Quality Metrics325326**Metric 3**: Description Quality Score327- **Formula**: 6-criterion weighted scoring328- **Target**: 85%+329- **Components**:330 - Action-oriented: 20%331 - Clear triggers: 25%332 - Comprehensive: 15%333 - Natural language: 20%334 - Specificity: 10%335 - Technical terms: 10%336337### Usage Metrics338339**Metric 4**: Daily Active Use340- **Target**: Used 5+ times daily by active users341- **Measurement**: Skill invocation logs342343### Performance Metrics344345**Metric 5**: Data Freshness346- **Definition**: Time since last price update347- **Target**: < 30 seconds for cached data348- **Measurement**: Timestamp comparison349350---351352## 8. User Experience Flow353354### Typical Usage Flow3553561. **User Intent**: User wants to know current Bitcoin price3572. **Trigger**: User says "What's the Bitcoin price?" or "check BTC"3583. **Skill Activation**: Claude recognizes price query intent3594. **Skill Execution**:360 - Check cache for recent BTC price361 - If stale, fetch from CoinGecko API362 - Format response with price, change, volume3635. **Output Delivered**: Formatted price card with key metrics3646. **User Action**: User uses information for trading decision365366### Example Scenario367368**Scenario**: Check current prices for a watchlist369370**Input**:371```372Check prices for my top holdings: BTC, ETH, SOL373```374375**Claude's Response**:376```377Fetching current prices...378379================================================================================380 CRYPTO PRICES Updated: [timestamp]381================================================================================382383 Symbol Price (USD) 24h Change Volume (24h) Market Cap384--------------------------------------------------------------------------------385 BTC $97,234.56 +2.34% $28.5B $1.92T386 ETH $3,456.78 +1.87% $12.3B $415.2B387 SOL $142.34 +5.12% $2.1B $61.4B388--------------------------------------------------------------------------------389390 Total Portfolio Change: +2.44%391392================================================================================393```394395**User Benefit**: Instant visibility into holdings without checking multiple sources396397---398399## 9. Integration Points400401### External Systems402403**System 1**: CoinGecko API404- **Purpose**: Primary price data source405- **Integration Type**: REST API406- **Authentication**: Optional API key for higher limits407- **Data Flow**: Skill → API → Parse JSON → Cache → Format → User408409**System 2**: Yahoo Finance (via yfinance)410- **Purpose**: Historical OHLCV data, backup price source411- **Integration Type**: Python library412- **Authentication**: None413- **Data Flow**: Skill → yfinance → DataFrame → CSV/JSON → User414415### Internal Dependencies416417**Dependency 1**: Local Cache System418- **What it provides**: Fast access to recently fetched prices419- **Why needed**: Reduces API calls, improves response time420421**Dependency 2**: Python Libraries422- **Libraries**: requests, pandas, yfinance423- **Versions**: requests>=2.28, pandas>=2.0, yfinance>=0.2.30424425### Skills That Depend on This426427| Skill | How It Uses Price Data |428|-------|------------------------|429| market-movers-scanner | Compares price changes to find movers |430| crypto-portfolio-tracker | Values holdings at current prices |431| crypto-tax-calculator | Gets cost basis and current values |432| defi-yield-optimizer | Calculates yield in USD terms |433| liquidity-pool-analyzer | Values LP positions |434| staking-rewards-optimizer | Calculates staking APY |435| crypto-derivatives-tracker | Tracks underlying asset prices |436| dex-aggregator-router | Compares DEX prices to CEX |437| options-flow-analyzer | Values options based on underlying |438| arbitrage-opportunity-finder | Detects price discrepancies |439440---441442## 10. Constraints & Assumptions443444### Technical Constraints4454461. **API Rate Limits**: CoinGecko free tier limits to 10-50 calls/minute4472. **Token Budget**: Must fit in 5,000 token skill discovery limit4483. **Processing Time**: Max 10 seconds for any operation4494. **Dependencies**: Requires network access for price fetching450451### Business Constraints4524531. **API Costs**: Free tier preferred; Pro tier ($129/month) if needed4542. **Timeline**: Foundation skill - must be complete before dependent skills4553. **Resources**: Single developer (Claude)456457### Assumptions4584591. **Assumption 1**: CoinGecko API remains available and free tier sufficient460 - **Risk if false**: Switch to backup provider (CoinMarketCap)461 - **Mitigation**: Implement provider abstraction layer4624632. **Assumption 2**: Users have Python 3.8+ installed464 - **Risk if false**: Scripts won't run465 - **Mitigation**: Document requirements, provide error messages466467---468469## 11. Risk Assessment470471### Technical Risks472473**Risk 1**: API Rate Limiting474- **Probability**: High (free tier has strict limits)475- **Impact**: Medium (degraded but not broken experience)476- **Mitigation**: Aggressive caching, exponential backoff, batch requests477478**Risk 2**: API Downtime479- **Probability**: Low (CoinGecko has 99.9% uptime)480- **Impact**: High (skill unusable)481- **Mitigation**: Multiple fallback providers, cached data with staleness warning482483### User Experience Risks484485**Risk 1**: Skill Over-Triggering (False Positives)486- **Probability**: Medium487- **Impact**: Low (user can clarify)488- **Mitigation**: Precise trigger phrases, domain-specific keywords489490**Risk 2**: Stale Data Confusion491- **Probability**: Medium (if cache too aggressive)492- **Impact**: Medium (bad trading decisions)493- **Mitigation**: Clear timestamps, configurable cache duration, manual refresh494495---496497## 12. Open Questions498499**Resolved Questions**:5005011. ✅ **Question**: Which API should be primary?502 - **Decision**: CoinGecko (largest free tier, most assets)5035042. ✅ **Question**: How long to cache spot prices?505 - **Decision**: 30 seconds (balance between freshness and rate limits)506507**Pending Questions**: None508509---510511## 13. Appendix: Examples512513### Example 1: Single Asset Price Check514515**User Request**:516```517What's the current Ethereum price?518```519520**Expected Skill Behavior**:5211. Parse "Ethereum" as ETH5222. Check cache for recent ETH price5233. If stale (>30s), fetch from CoinGecko5244. Format response with price card525526**Expected Output**:527```528ETH (Ethereum)529$3,456.78 USD530+1.87% (24h) | Vol: $12.3B | MCap: $415.2B531Updated: [timestamp]532```533534### Example 2: Watchlist Scan535536**User Request**:537```538Check prices for the top 10 cryptos539```540541**Expected Behavior**:5421. Use predefined "crypto_top10" watchlist5432. Batch fetch all 10 prices5443. Format as table with all metrics545546### Example 3: Historical Data Export547548**User Request**:549```550Get Bitcoin's price history for the last 30 days and save to CSV551```552553**Expected Behavior**:5541. Fetch 30-day OHLCV data from yfinance5552. Format as DataFrame5563. Export to `data/BTC_30d_[date].csv`5574. Confirm file location558559---560561## 14. Version History562563| Version | Date | Changes | Author |564|---------|------|---------|--------|565| 1.0.0 | 2025-01-01 | Initial stub | Jeremy Longshore |566| 2.0.0 | 2025-01-14 | Full PRD per nixtla standard | Jeremy Longshore |567568---569570## 15. Approval571572| Role | Name | Approval Date | Signature |573|------|------|---------------|-----------|574| Product Owner | Jeremy Longshore | 2025-01-14 | ✓ |575| Tech Lead | Claude (Opus 4.5) | 2025-01-14 | ✓ |576577---578579**Document maintained by**: Intent Solutions580**Standard**: Nixtla Enterprise Skill PRD Template v1.0