[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6Q326CSGJFZREVGBSSM0H33":3,"skill-same:01M6Q326CSGJFZREVGBSSM0H33":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6Q326CSGJFZREVGBSSM0H33","actual-budget",null,"Query and manage personal finances via the official Actual Budget Node.js API. Use for budget queries, transaction imports\u002Fexports, account management, categorization, rules, schedules, and bank sync with self-hosted Actual Budget instances.","Kernel8901\u002Fai-agent-skills-classification","Kernel8901","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72647553?v=4","01M6KV388J2H5PNC8D8P940BJD","01M6KV38CS5B3AY63RKZB410YM",7,"MIT","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Factual-budget\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"Budget","actual budget","finances","official","imports","categorization","for","bank","with","via","transaction","self","query","instances","manage","queries","self-hosted","use","Rules","api","2026-11-10 10:12:30",false,"---\nname: actual-budget\ndescription: Query and manage personal finances via the official Actual Budget Node.js API. Use for budget queries, transaction imports\u002Fexports, account management, categorization, rules, schedules, and bank sync with self-hosted Actual Budget instances.\n---\n\n# Actual Budget API\n\nOfficial Node.js API for [Actual Budget](https:\u002F\u002Factualbudget.org). Runs headless — works on local budget data synced from your server.\n\n## Installation\n\n```bash\nnpm install @actual-app\u002Fapi\n```\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `ACTUAL_SERVER_URL` | Yes | Server URL (e.g., `https:\u002F\u002Factual.example.com`) |\n| `ACTUAL_PASSWORD` | Yes | Server password |\n| `ACTUAL_SYNC_ID` | Yes | Budget Sync ID (Settings → Advanced → Sync ID) |\n| `ACTUAL_DATA_DIR` | No | Local cache directory for budget data (defaults to cwd) |\n| `ACTUAL_ENCRYPTION_PASSWORD` | No | E2E encryption password, if enabled |\n| `NODE_TLS_REJECT_UNAUTHORIZED` | No | Set to `0` for self-signed certs |\n\n## Quick Start\n\n```javascript\nconst api = require('@actual-app\u002Fapi');\n\nawait api.init({\n  dataDir: process.env.ACTUAL_DATA_DIR || '\u002Ftmp\u002Factual-cache',\n  serverURL: process.env.ACTUAL_SERVER_URL,\n  password: process.env.ACTUAL_PASSWORD,\n});\n\nawait api.downloadBudget(\n  process.env.ACTUAL_SYNC_ID,\n  process.env.ACTUAL_ENCRYPTION_PASSWORD ? { password: process.env.ACTUAL_ENCRYPTION_PASSWORD } : undefined\n);\n\n\u002F\u002F ... do work ...\n\nawait api.shutdown();\n```\n\n## Core Concepts\n\n- **Amounts** are integers in cents: `$50.00` = `5000`, `-1200` = expense of $12.00\n- **Dates** use `YYYY-MM-DD`, months use `YYYY-MM`\n- **IDs** are UUIDs — use `getIDByName(type, name)` to look up by name\n- Convert with `api.utils.amountToInteger(123.45)` → `12345`\n\n## Common Operations\n\n### Get Budget Overview\n```javascript\nconst months = await api.getBudgetMonths();        \u002F\u002F ['2026-01', '2026-02', ...]\nconst jan = await api.getBudgetMonth('2026-01');   \u002F\u002F { categoryGroups, incomeAvailable, ... }\n```\n\n### Accounts\n```javascript\nconst accounts = await api.getAccounts();\nconst balance = await api.getAccountBalance(accountId);\nconst newId = await api.createAccount({ name: 'Checking', type: 'checking' }, 50000); \u002F\u002F $500 initial\nawait api.closeAccount(id, transferToAccountId);  \u002F\u002F transfer remaining balance\n```\n\n### Transactions\n```javascript\n\u002F\u002F Get transactions for date range\nconst txns = await api.getTransactions(accountId, '2026-01-01', '2026-01-31');\n\n\u002F\u002F Import with deduplication + rules (preferred for bank imports)\nconst { added, updated } = await api.importTransactions(accountId, [\n  { date: '2026-01-15', amount: -2500, payee_name: 'Grocery Store', notes: 'Weekly run' },\n  { date: '2026-01-16', amount: -1200, payee_name: 'Coffee Shop', imported_id: 'bank-123' },\n]);\n\n\u002F\u002F Update a transaction\nawait api.updateTransaction(txnId, { category: categoryId, cleared: true });\n```\n\n### Categories & Payees\n```javascript\nconst categories = await api.getCategories();\nconst groups = await api.getCategoryGroups();\nconst payees = await api.getPayees();\n\n\u002F\u002F Create\nconst catId = await api.createCategory({ name: 'Subscriptions', group_id: groupId });\nconst payeeId = await api.createPayee({ name: 'Netflix', category: catId });\n```\n\n### Budget Amounts\n```javascript\nawait api.setBudgetAmount('2026-01', categoryId, 30000);  \u002F\u002F budget $300\nawait api.setBudgetCarryover('2026-01', categoryId, true);\n```\n\n### Rules\n```javascript\nconst rules = await api.getRules();\nawait api.createRule({\n  stage: 'pre',\n  conditionsOp: 'and',\n  conditions: [{ field: 'payee', op: 'is', value: payeeId }],\n  actions: [{ op: 'set', field: 'category', value: categoryId }],\n});\n```\n\n### Schedules\n```javascript\nconst schedules = await api.getSchedules();\nawait api.createSchedule({\n  payee: payeeId,\n  account: accountId,\n  amount: -1500,\n  date: { frequency: 'monthly', start: '2026-01-01', interval: 1, endMode: 'never' },\n});\n```\n\n### Bank Sync\n```javascript\nawait api.runBankSync({ accountId });  \u002F\u002F GoCardless\u002FSimpleFIN\n```\n\n### Sync & Shutdown\n```javascript\nawait api.sync();      \u002F\u002F push\u002Fpull changes to server\nawait api.shutdown();  \u002F\u002F always call when done\n```\n\n## ActualQL Queries\n\nFor complex queries, use ActualQL:\n\n```javascript\nconst { q, runQuery } = require('@actual-app\u002Fapi');\n\n\u002F\u002F Sum expenses by category this month\nconst { data } = await runQuery(\n  q('transactions')\n    .filter({\n      date: [{ $gte: '2026-01-01' }, { $lte: '2026-01-31' }],\n      amount: { $lt: 0 },\n    })\n    .groupBy('category.name')\n    .select(['category.name', { total: { $sum: '$amount' } }])\n);\n\n\u002F\u002F Search transactions\nconst { data } = await runQuery(\n  q('transactions')\n    .filter({ 'payee.name': { $like: '%grocery%' } })\n    .select(['date', 'amount', 'payee.name', 'category.name'])\n    .orderBy({ date: 'desc' })\n    .limit(20)\n);\n```\n\n**Operators:** `$eq`, `$lt`, `$lte`, `$gt`, `$gte`, `$ne`, `$oneof`, `$regex`, `$like`, `$notlike`\n**Splits:** `.options({ splits: 'inline' | 'grouped' | 'all' })`\n\n## Helpers\n\n```javascript\n\u002F\u002F Look up ID by name\nconst acctId = await api.getIDByName('accounts', 'Checking');\nconst catId = await api.getIDByName('categories', 'Food');\nconst payeeId = await api.getIDByName('payees', 'Amazon');\n\n\u002F\u002F List budgets\nconst budgets = await api.getBudgets();  \u002F\u002F local + remote files\n```\n\n## Transfers\n\nTransfers use special payees. Find transfer payee by `transfer_acct` field:\n```javascript\nconst payees = await api.getPayees();\nconst transferPayee = payees.find(p => p.transfer_acct === targetAccountId);\nawait api.importTransactions(fromAccountId, [\n  { date: '2026-01-15', amount: -10000, payee: transferPayee.id }\n]);\n```\n\n## Split Transactions\n\n```javascript\nawait api.importTransactions(accountId, [{\n  date: '2026-01-15',\n  amount: -5000,\n  payee_name: 'Costco',\n  subtransactions: [\n    { amount: -3000, category: groceryCatId },\n    { amount: -2000, category: householdCatId },\n  ]\n}]);\n```\n\n## Bulk Import (New Budget)\n\nFor migrating from another app:\n```javascript\nawait api.runImport('My-New-Budget', async () => {\n  for (const acct of myData.accounts) {\n    const id = await api.createAccount(acct);\n    await api.addTransactions(id, myData.transactions.filter(t => t.acctId === id));\n  }\n});\n```\n\n## Reference\n\nFull API: https:\u002F\u002Factualbudget.org\u002Fdocs\u002Fapi\u002Freference\nActualQL: https:\u002F\u002Factualbudget.org\u002Fdocs\u002Fapi\u002Factual-ql","# Actual Budget API\n\nOfficial Node.js API for [Actual Budget](https:\u002F\u002Factualbudget.org). Runs headless — works on local budget data synced from your server.\n\n## Installation\n\n```bash\nnpm install @actual-app\u002Fapi\n```\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `ACTUAL_SERVER_URL` | Yes | Server URL (e.g., `https:\u002F\u002Factual.example.com`) |\n| `ACTUAL_PASSWORD` | Yes | Server password |\n| `ACTUAL_SYNC_ID` | Yes | Budget Sync ID (Settings → Advanced → Sync ID) |\n| `ACTUAL_DATA_DIR` | No | Local cache directory for budget data (defaults to cwd) |\n| `ACTUAL_ENCRYPTION_PASSWORD` | No | E2E encryption password, if enabled |\n| `NODE_TLS_REJECT_UNAUTHORIZED` | No | Set to `0` for self-signed certs |\n\n## Quick Start\n\n```javascript\nconst api = require('@actual-app\u002Fapi');\n\nawait api.init({\n  dataDir: process.env.ACTUAL_DATA_DIR || '\u002Ftmp\u002Factual-cache',\n  serverURL: process.env.ACTUAL_SERVER_URL,\n  password: process.env.ACTUAL_PASSWORD,\n});\n\nawait api.downloadBudget(\n  process.env.ACTUAL_SYNC_ID,\n  process.env.ACTUAL_ENCRYPTION_PASSWORD ? { password: process.env.ACTUAL_ENCRYPTION_PASSWORD } : undefined\n);\n\n\u002F\u002F ... do work ...\n\nawait api.shutdown();\n```\n\n## Core Concepts\n\n- **Amounts** are integers in cents: `$50.00` = `5000`, `-1200` = expense of $12.00\n- **Dates** use `YYYY-MM-DD`, months use `YYYY-MM`\n- **IDs** are UUIDs — use `getIDByName(type, name)` to look up by name\n- Convert with `api.utils.amountToInteger(123.45)` → `12345`\n\n## Common Operations\n\n### Get Budget Overview\n```javascript\nconst months = await api.getBudgetMonths();        \u002F\u002F ['2026-01', '2026-02', ...]\nconst jan = await api.getBudgetMonth('2026-01');   \u002F\u002F { categoryGroups, incomeAvailable, ... }\n```\n\n### Accounts\n```javascript\nconst accounts = await api.getAccounts();\nconst balance = await api.getAccountBalance(accountId);\nconst newId = await api.createAccount({ name: 'Checking', type: 'checking' }, 50000); \u002F\u002F $500 initial\nawait api.closeAccount(id, transferToAccountId);  \u002F\u002F transfer remaining balance\n```\n\n### Transactions\n```javascript\n\u002F\u002F Get transactions for date range\nconst txns = await api.getTransactions(accountId, '2026-01-01', '2026-01-31');\n\n\u002F\u002F Import with deduplication + rules (preferred for bank imports)\nconst { added, updated } = await api.importTransactions(accountId, [\n  { date: '2026-01-15', amount: -2500, payee_name: 'Grocery Store', notes: 'Weekly run' },\n  { date: '2026-01-16', amount: -1200, payee_name: 'Coffee Shop', imported_id: 'bank-123' },\n]);\n\n\u002F\u002F Update a transaction\nawait api.updateTransaction(txnId, { category: categoryId, cleared: true });\n```\n\n### Categories & Payees\n```javascript\nconst categories = await api.getCategories();\nconst groups = await api.getCategoryGroups();\nconst payees = await api.getPayees();\n\n\u002F\u002F Create\nconst catId = await api.createCategory({ name: 'Subscriptions', group_id: groupId });\nconst payeeId = await api.createPayee({ name: 'Netflix', category: catId });\n```\n\n### Budget Amounts\n```javascript\nawait api.setBudgetAmount('2026-01', categoryId, 30000);  \u002F\u002F budget $300\nawait api.setBudgetCarryover('2026-01', categoryId, true);\n```\n\n### Rules\n```javascript\nconst rules = await api.getRules();\nawait api.createRule({\n  stage: 'pre',\n  conditionsOp: 'and',\n  conditions: [{ field: 'payee', op: 'is', value: payeeId }],\n  actions: [{ op: 'set', field: 'category', value: categoryId }],\n});\n```\n\n### Schedules\n```javascript\nconst schedules = await api.getSchedules();\nawait api.createSchedule({\n  payee: payeeId,\n  account: accountId,\n  amount: -1500,\n  date: { frequency: 'monthly', start: '2026-01-01', interval: 1, endMode: 'never' },\n});\n```\n\n### Bank Sync\n```javascript\nawait api.runBankSync({ accountId });  \u002F\u002F GoCardless\u002FSimpleFIN\n```\n\n### Sync & Shutdown\n```javascript\nawait api.sync();      \u002F\u002F push\u002Fpull changes to server\nawait api.shutdown();  \u002F\u002F always call when done\n```\n\n## ActualQL Queries\n\nFor complex queries, use ActualQL:\n\n```javascript\nconst { q, runQuery } = require('@actual-app\u002Fapi');\n\n\u002F\u002F Sum expenses by category this month\nconst { data } = await runQuery(\n  q('transactions')\n    .filter({\n      date: [{ $gte: '2026-01-01' }, { $lte: '2026-01-31' }],\n      amount: { $lt: 0 },\n    })\n    .groupBy('category.name')\n    .select(['category.name', { total: { $sum: '$amount' } }])\n);\n\n\u002F\u002F Search transactions\nconst { data } = await runQuery(\n  q('transactions')\n    .filter({ 'payee.name': { $like: '%grocery%' } })\n    .select(['date', 'amount', 'payee.name', 'category.name'])\n    .orderBy({ date: 'desc' })\n    .limit(20)\n);\n```\n\n**Operators:** `$eq`, `$lt`, `$lte`, `$gt`, `$gte`, `$ne`, `$oneof`, `$regex`, `$like`, `$notlike`\n**Splits:** `.options({ splits: 'inline' | 'grouped' | 'all' })`\n\n## Helpers\n\n```javascript\n\u002F\u002F Look up ID by name\nconst acctId = await api.getIDByName('accounts', 'Checking');\nconst catId = await api.getIDByName('categories', 'Food');\nconst payeeId = await api.getIDByName('payees', 'Amazon');\n\n\u002F\u002F List budgets\nconst budgets = await api.getBudgets();  \u002F\u002F local + remote files\n```\n\n## Transfers\n\nTransfers use special payees. Find transfer payee by `transfer_acct` field:\n```javascript\nconst payees = await api.getPayees();\nconst transferPayee = payees.find(p => p.transfer_acct === targetAccountId);\nawait api.importTransactions(fromAccountId, [\n  { date: '2026-01-15', amount: -10000, payee: transferPayee.id }\n]);\n```\n\n## Split Transactions\n\n```javascript\nawait api.importTransactions(accountId, [{\n  date: '2026-01-15',\n  amount: -5000,\n  payee_name: 'Costco',\n  subtransactions: [\n    { amount: -3000, category: groceryCatId },\n    { amount: -2000, category: householdCatId },\n  ]\n}]);\n```\n\n## Bulk Import (New Budget)\n\nFor migrating from another app:\n```javascript\nawait api.runImport('My-New-Budget', async () => {\n  for (const acct of myData.accounts) {\n    const id = await api.createAccount(acct);\n    await api.addTransactions(id, myData.transactions.filter(t => t.acctId === id));\n  }\n});\n```\n\n## Reference\n\nFull API: https:\u002F\u002Factualbudget.org\u002Fdocs\u002Fapi\u002Freference\nActualQL: https:\u002F\u002Factualbudget.org\u002Fdocs\u002Fapi\u002Factual-ql",{"name":5,"description":7},"main","f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","网页与前端开发\u002Factual-budget",1,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification","https:\u002F\u002Fgithub.com\u002FKernel8901","a little little little dobe in life but science geek","2026-04-05 16:43:56",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill actual-budget",{"tool":62,"command":63},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill actual-budget",{"tool":65,"command":66},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill actual-budget","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Factual-budget\u002FSKILL.md",true,[70],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"_meta.json","REFERENCE","参考文档",326,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F网页与前端开发\u002Factual-budget\u002F_meta.json",[77,100,132,143,153,180],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":43},"01M6Q5R6WZ06RRB9RQTW54B34B","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzyfai-sdk\u002FSKILL.md",[],[79,84,85,86,87,88,40,89,90,91,92,93,94,95,96,97,98,99],"safe","ethereum","defi","Optimization","user","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":101,"name":102,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":116,"publishedAt":43},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[105,110,113],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":111,"categoryName":112,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师",[42,117,118,119,120,121,122,86,123,89,124,125,126,127,35,128,129,130,131],"zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","across","positions","token","prices",{"skillNo":133,"name":134,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":140,"publishedAt":43},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[137,138,139],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},{"categoryNo":111,"categoryName":112,"taxonomyType":108,"taxonomyTypeDesc":109},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},[42,141,142,117,118,119,120,121,122,86,123,89,125,126,127,35,128,129,130,131],"api skill","zerion api skill",{"skillNo":144,"name":145,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":43},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[148,149,150],{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},{"categoryNo":111,"categoryName":112,"taxonomyType":108,"taxonomyTypeDesc":109},{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},[119,42,152,117,118,120,121,86,123,89,124,125,126,127,35,128,129,130,131],"zerion api mcp",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":43},"01M6Q5QQYZB7A501BDEQWKGSJT","yahoo-finance-forex","Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR\u002FUSD, GBP\u002FUSD, USD\u002FJPY, etc.). Analyzes sentiment and provides trading context.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-forex\u002FSKILL.md",[159],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,29],"finance","yahoo finance","forex","yahoo","yahoo finance forex","github","https","sentiment","real-time","python3","install","Market","usd","news","time","currency","gbp","pip","market data",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":187,"publishedAt":43},"01M6Q5QM6VS84WZVM7BKXXPF32","yahoo-finance","This skill should be used when the user asks to \"get stock prices\", \"check stock quotes\", \"look up earnings\", \"get financial data\", \"find trending stocks\", or needs stock market data from Yahoo Finance.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-cli\u002FSKILL.md",[186],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[161,162,164,188,189,190,191,192,193,172,194,195,196,197,198,199,200,201,131,179],"cli","homebrew","find","check","brew","up","local","get","stock","link","trending","sf","quotes","ln"]