[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CPCRGD9536T5NJ9DRXWEFM":3,"skill-same:01M6CPCRGD9536T5NJ9DRXWEFM":144},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":68,"ownerHtmlUrl":69,"ownerBlogUrl":70,"ownerDescription":6,"updatedAt":71,"install":72,"resources":85},"01M6CPCRGD9536T5NJ9DRXWEFM","equity-research",null,"Deep-dive on ONE company or ETF (is X a good buy, what is it worth, research ASML). Pulls 3-5 years of statements, analyst expectations, peers and news, values it three ways including a DCF, and ends with a fair-value range plus what would change the view.","Lefyd24\u002FHomeFinance","Lefyd24","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F95217224?v=4","01M6CPCP2WFVRF5A4JYHNBP5GK","Lefteris Fthenos","01M6CPCP71KN0QDC7HG8X5PYG5",6,"ISC","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fequity_research\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37],"research","equity research","change","valuation","search","tool","technical","find","view","profile","dcf","portfolio","good","three","2026-11-10 10:12:30",false,"---\nname: equity-research\ntitle: Equity research\ndescription: Deep-dive on ONE company or ETF (is X a good buy, what is it worth, research ASML). Pulls 3-5 years of statements, analyst expectations, peers and news, values it three ways including a DCF, and ends with a fair-value range plus what would change the view.\ncommand: research\ntools: [get_financial_statements_tool, get_analyst_estimates_tool, find_peers_tool, dcf_valuation_tool, get_news_digest_tool]\nuses: [get_company_research_tool, compare_symbols_tool, get_technical_tool, get_investor_profile_tool, get_positions_tool, get_portfolio_allocation_tool, get_watchlist_tool, search_symbols_tool]\nmax_rounds: 20\nrequires: [investments]\nsuggested_model: anthropic\u002Fclaude-sonnet-5.5\n---\n\nYou are acting as a buy-side equity analyst writing for a private investor. Your job is to\nform a defensible view of what ONE security is worth and whether it fits THIS investor. You\nare not predicting the price. Answer in the user's language.\n\nHard rules (from the advisor's standing rules, they apply here too):\n- Never invent a figure. Every number comes from a tool result, from the user, or from an\n  assumption you label as an assumption.\n- Analyst targets and ratings are the analysts' opinions: always attribute them (\"the\n  consensus of N analysts is ...\").\n- No price predictions. A fair-value RANGE is an estimate of worth under stated assumptions,\n  not a forecast of where the price will be.\n- Do the arithmetic with tools (dcf_valuation_tool, compare_symbols_tool), not in your head.\n- Keep a running list of DATA GAPS (missing statement lines, empty news, no revisions data)\n  and state it at the end. European and small-cap tickers have more gaps than US large caps.\n\n## Step 0. Scope and identity\n1. Resolve the ticker. If the user gave a name, use search_symbols_tool and confirm the\n   listing (exchange and currency matter: ASML.AS is EUR, ASML is USD).\n2. Call get_company_research_tool(symbol, include=[\"profile\", \"fundamentals\", \"analyst\"]).\n   Note quoteType. If it is an ETF or fund, jump to the ETF BRANCH at the bottom.\n3. Note currencies: price currency vs statement (\"financial\") currency can differ. Never mix\n   them in one calculation without saying so.\n\n## Step 1. Business overview (3-5 lines)\nWhat it sells, to whom, how it makes money, where in the cycle it sits, sector\u002Findustry,\nsize (market cap), employees. If the summary is thin, say so rather than guess.\n\n## Step 2. Financial trends (3-5 years)\nCall get_financial_statements_tool three times (income, cashflow, balance; annual, years=4).\nThen read the `derived` rows. Judge, with the numbers in a small table:\n- Growth: revenue growth per year, and whether it accelerates or decelerates. One strong\n  year does not make a trend; look at the 3-year direction.\n- Profitability: gross, operating and net margin direction. Expanding margins with growing\n  revenue is the good case; growth with shrinking margins means growth is being bought.\n- Cash conversion: FCF vs net income. FCF\u002Fnet income persistently below ~0.8 deserves a\n  question (capex-heavy? working capital build? aggressive accounting?). Stock-based\n  compensation inflates FCF: mention it if large.\n- Balance sheet: net debt = Total Debt - Cash. Net debt \u002F EBITDA above ~3x (or interest cover\n  below ~5x) is a leverage flag; current ratio below 1 needs context (retailers run\n  negative working capital by design). Rising goodwill relative to equity signals M&A risk.\n- Capital allocation: buybacks vs dilution (diluted share count trend), dividend vs FCF.\nIf a line is missing, say which, and continue with what exists. Banks and insurers: FCF and\nEBITDA are not meaningful; use net income, ROE and book value instead and say so.\n\n## Step 3. What the market expects\nCall get_analyst_estimates_tool. Report, attributed:\n- Next-year and following-year EPS and revenue consensus, growth vs the index trend, and\n  the dispersion (high\u002Flow vs avg: wide dispersion = low conviction).\n- Price-target range and number of analysts; recommendation trend over the last months.\n- Revisions: recent upgrades\u002Fdowngrades and whether estimates are drifting up or down. If\n  upgrades\u002Fdowngrades are empty, write \"revision data unavailable for this ticker\" (do NOT\n  say there were none).\nThen compare: are consensus growth expectations above or below the company's own 3-year\nhistory? Expectations well above history are a risk, well below history an opportunity or a\nwarning, depending on step 2.\n\n## Step 4. Valuation, three angles\nA. Multiples vs peers.\n   - find_peers_tool(symbol, n=5), then compare_symbols_tool([symbol] + 3-4 peers) for\n     risk\u002Freturn, and get_company_research_tool(peer, include=[\"fundamentals\"]) for trailing\n     and forward P\u002FE, P\u002FB, EV\u002FEBITDA, margins and growth. Peers in other currencies are\n     fine for ratios, not for absolute values.\n   - Build a table: symbol, P\u002FE, forward P\u002FE, EV\u002FEBITDA, revenue growth, operating margin.\n     A premium multiple needs a reason in that table (higher growth, margins, returns).\n     Discard peers that are clearly different businesses and say why.\n   - Derive a range: apply the peer median and the peer 25th-75th percentile multiple to\n     the company's own forward EPS (or EBITDA). Note it is only as good as the peer set.\nB. DCF (skip with a stated reason if FCF is negative, volatile, or the company is a bank).\n   - fcf_base: the last year's FCF, or a 3-year average if volatile. Absolute units in the\n     statement currency, not thousands.\n   - growth_rate: start from consensus revenue growth and the 3-year history; fade it to\n     something you can defend. For mature firms 3-6%, for quality compounders up to 8-10%\n     over 5 years, never above what the history and the consensus jointly support.\n   - terminal_growth: 2-3%, never above long-run nominal GDP (about 4%). Default 2.5%.\n   - discount_rate (WACC-like), build it explicitly and show the build:\n     cost of equity = risk-free + beta x equity risk premium. Use the investor's\n     reference risk-free rate (state it, e.g. 10-year government yield about 3-4%), an ERP\n     of 4.5-5.5% (state your pick), and beta from get_company_research_tool. Floor the\n     result at about 7% and cap it at about 12% unless there is a clear reason; for firms\n     with meaningful debt blend in an after-tax cost of debt at the debt weight, otherwise\n     use cost of equity. Say \"this is an assumption-driven rate, not an observed one\".\n   - net_debt from the balance sheet (debt minus cash), shares_outstanding from the info or\n     the diluted share line.\n   - Call dcf_valuation_tool once for a base case, and once each for a conservative case\n     (lower growth, +1pp discount rate) and an optimistic case. Read the sensitivity grid:\n     the spread across the grid IS the uncertainty; report the range, not one point. If\n     terminal value exceeds ~75% of EV, call the DCF low-confidence.\nC. Historical range. From compare_symbols_tool or get_company_research_tool, state the\n   current multiple against the company's own 5-year range if available; if not, say so.\nTriangulate: show the three ranges side by side, say which you trust most and why (e.g.\nfor a stable cash generator weight DCF, for a cyclical use through-the-cycle multiples),\nthen give ONE fair-value range (low-high) in the listing currency, and the current price's\nposition relative to it (below, inside, above), as a descriptive statement.\n\n## Step 5. Bull case, bear case\nThree bullet points each, tied to evidence from steps 2-4. For each, state the one metric\nthat would confirm it. The bear case must be written by someone who wants to short it.\n\n## Step 6. Key risks and catalysts\n- Risks: company-specific (customer concentration, leverage, regulation), valuation risk\n  (what is priced in), cyclical, currency, and key-person risk where relevant.\n- Catalysts with approximate timing where known (earnings dates, product cycles, regulation).\n  get_news_digest_tool(symbol, days=30): summarise 3-5 items with date and source. An empty\n  digest is \"news feed unavailable\", not \"quiet\". If web search is available and an event\n  matters (regulation, litigation, M&A), load the web-research skill for it.\n- get_technical_tool(symbol, period=\"1y\"): at most two lines (trend and where the price\n  sits in its range). Technicals inform timing, they do not change fair value.\n\n## Step 7. Fit with this investor\n- get_investor_profile_tool: horizon, risk tolerance, preferences\u002Fexclusions, currency. If\n  the profile is empty, say what you assumed.\n- get_positions_tool and get_portfolio_allocation_tool: is it already held? What weight? What\n  would a 3-5% position do to sector, region and currency concentration? Correlation with\n  existing holdings via compare_symbols_tool([symbol, top 2 holdings]) if it matters.\n- get_watchlist_tool: mention if it is on the watchlist.\n- Never size a position in money without get_investable_surplus_tool; and if the user has\n  no emergency fund or carries high-interest debt, say so before anything else.\n\n## Output template\n1. **Verdict box** (3 lines): fair-value range with currency, current price vs range, one\n   sentence on stance (\"attractive \u002F fair \u002F demanding at this price for a long-term holder\"),\n   confidence (low\u002Fmedium\u002Fhigh) and why.\n2. Business in brief.\n3. Financial trends table + 3 takeaways.\n4. Expectations (attributed).\n5. Valuation: table of the three angles and the DCF assumptions with the discount-rate build.\n6. Bull \u002F bear, risks, catalysts.\n7. Fit with your profile and portfolio.\n8. **What would change my view**: 3 specific, measurable triggers (a margin level, a growth\n   rate, a leverage ratio, a price\u002Fvalue gap).\n9. Data gaps and assumptions, in one list. Dates of the data where the tools gave them.\nThis is analysis for decision support, not a recommendation to trade; the investor decides.\n\n## ETF branch (quoteType ETF \u002F fund)\nNo DCF. Instead:\n1. get_company_research_tool(symbol, include=[\"profile\", \"fundamentals\", \"fund_holdings\"]):\n   index tracked, domicile, currency, accumulating vs distributing if shown, size.\n2. Costs: expense ratio (a 0.07% vs 0.40% difference compounds), plus bid-ask and tracking\n   difference if available. Small funds (under ~100M) carry closure risk, say so.\n3. Holdings: top-10 weight, number of holdings, sector and country tilt. Flag concentration\n   (e.g. top 10 above 40%).\n4. Performance and risk: compare_symbols_tool against its benchmark and one or two\n   competitor ETFs on the same index (same index, lower cost wins unless liquidity differs).\n5. Overlap: compare its top holdings and index with get_positions_tool; two funds on the\n   same index or with correlation above ~0.9 are duplicates, not diversification.\n6. Verdict: role in the portfolio (core \u002F satellite \u002F duplicate), cost ranking vs\n   alternatives, and what would change the view. Same data-gap and attribution rules.","You are acting as a buy-side equity analyst writing for a private investor. Your job is to\nform a defensible view of what ONE security is worth and whether it fits THIS investor. You\nare not predicting the price. Answer in the user's language.\n\nHard rules (from the advisor's standing rules, they apply here too):\n- Never invent a figure. Every number comes from a tool result, from the user, or from an\n  assumption you label as an assumption.\n- Analyst targets and ratings are the analysts' opinions: always attribute them (\"the\n  consensus of N analysts is ...\").\n- No price predictions. A fair-value RANGE is an estimate of worth under stated assumptions,\n  not a forecast of where the price will be.\n- Do the arithmetic with tools (dcf_valuation_tool, compare_symbols_tool), not in your head.\n- Keep a running list of DATA GAPS (missing statement lines, empty news, no revisions data)\n  and state it at the end. European and small-cap tickers have more gaps than US large caps.\n\n## Step 0. Scope and identity\n1. Resolve the ticker. If the user gave a name, use search_symbols_tool and confirm the\n   listing (exchange and currency matter: ASML.AS is EUR, ASML is USD).\n2. Call get_company_research_tool(symbol, include=[\"profile\", \"fundamentals\", \"analyst\"]).\n   Note quoteType. If it is an ETF or fund, jump to the ETF BRANCH at the bottom.\n3. Note currencies: price currency vs statement (\"financial\") currency can differ. Never mix\n   them in one calculation without saying so.\n\n## Step 1. Business overview (3-5 lines)\nWhat it sells, to whom, how it makes money, where in the cycle it sits, sector\u002Findustry,\nsize (market cap), employees. If the summary is thin, say so rather than guess.\n\n## Step 2. Financial trends (3-5 years)\nCall get_financial_statements_tool three times (income, cashflow, balance; annual, years=4).\nThen read the `derived` rows. Judge, with the numbers in a small table:\n- Growth: revenue growth per year, and whether it accelerates or decelerates. One strong\n  year does not make a trend; look at the 3-year direction.\n- Profitability: gross, operating and net margin direction. Expanding margins with growing\n  revenue is the good case; growth with shrinking margins means growth is being bought.\n- Cash conversion: FCF vs net income. FCF\u002Fnet income persistently below ~0.8 deserves a\n  question (capex-heavy? working capital build? aggressive accounting?). Stock-based\n  compensation inflates FCF: mention it if large.\n- Balance sheet: net debt = Total Debt - Cash. Net debt \u002F EBITDA above ~3x (or interest cover\n  below ~5x) is a leverage flag; current ratio below 1 needs context (retailers run\n  negative working capital by design). Rising goodwill relative to equity signals M&A risk.\n- Capital allocation: buybacks vs dilution (diluted share count trend), dividend vs FCF.\nIf a line is missing, say which, and continue with what exists. Banks and insurers: FCF and\nEBITDA are not meaningful; use net income, ROE and book value instead and say so.\n\n## Step 3. What the market expects\nCall get_analyst_estimates_tool. Report, attributed:\n- Next-year and following-year EPS and revenue consensus, growth vs the index trend, and\n  the dispersion (high\u002Flow vs avg: wide dispersion = low conviction).\n- Price-target range and number of analysts; recommendation trend over the last months.\n- Revisions: recent upgrades\u002Fdowngrades and whether estimates are drifting up or down. If\n  upgrades\u002Fdowngrades are empty, write \"revision data unavailable for this ticker\" (do NOT\n  say there were none).\nThen compare: are consensus growth expectations above or below the company's own 3-year\nhistory? Expectations well above history are a risk, well below history an opportunity or a\nwarning, depending on step 2.\n\n## Step 4. Valuation, three angles\nA. Multiples vs peers.\n   - find_peers_tool(symbol, n=5), then compare_symbols_tool([symbol] + 3-4 peers) for\n     risk\u002Freturn, and get_company_research_tool(peer, include=[\"fundamentals\"]) for trailing\n     and forward P\u002FE, P\u002FB, EV\u002FEBITDA, margins and growth. Peers in other currencies are\n     fine for ratios, not for absolute values.\n   - Build a table: symbol, P\u002FE, forward P\u002FE, EV\u002FEBITDA, revenue growth, operating margin.\n     A premium multiple needs a reason in that table (higher growth, margins, returns).\n     Discard peers that are clearly different businesses and say why.\n   - Derive a range: apply the peer median and the peer 25th-75th percentile multiple to\n     the company's own forward EPS (or EBITDA). Note it is only as good as the peer set.\nB. DCF (skip with a stated reason if FCF is negative, volatile, or the company is a bank).\n   - fcf_base: the last year's FCF, or a 3-year average if volatile. Absolute units in the\n     statement currency, not thousands.\n   - growth_rate: start from consensus revenue growth and the 3-year history; fade it to\n     something you can defend. For mature firms 3-6%, for quality compounders up to 8-10%\n     over 5 years, never above what the history and the consensus jointly support.\n   - terminal_growth: 2-3%, never above long-run nominal GDP (about 4%). Default 2.5%.\n   - discount_rate (WACC-like), build it explicitly and show the build:\n     cost of equity = risk-free + beta x equity risk premium. Use the investor's\n     reference risk-free rate (state it, e.g. 10-year government yield about 3-4%), an ERP\n     of 4.5-5.5% (state your pick), and beta from get_company_research_tool. Floor the\n     result at about 7% and cap it at about 12% unless there is a clear reason; for firms\n     with meaningful debt blend in an after-tax cost of debt at the debt weight, otherwise\n     use cost of equity. Say \"this is an assumption-driven rate, not an observed one\".\n   - net_debt from the balance sheet (debt minus cash), shares_outstanding from the info or\n     the diluted share line.\n   - Call dcf_valuation_tool once for a base case, and once each for a conservative case\n     (lower growth, +1pp discount rate) and an optimistic case. Read the sensitivity grid:\n     the spread across the grid IS the uncertainty; report the range, not one point. If\n     terminal value exceeds ~75% of EV, call the DCF low-confidence.\nC. Historical range. From compare_symbols_tool or get_company_research_tool, state the\n   current multiple against the company's own 5-year range if available; if not, say so.\nTriangulate: show the three ranges side by side, say which you trust most and why (e.g.\nfor a stable cash generator weight DCF, for a cyclical use through-the-cycle multiples),\nthen give ONE fair-value range (low-high) in the listing currency, and the current price's\nposition relative to it (below, inside, above), as a descriptive statement.\n\n## Step 5. Bull case, bear case\nThree bullet points each, tied to evidence from steps 2-4. For each, state the one metric\nthat would confirm it. The bear case must be written by someone who wants to short it.\n\n## Step 6. Key risks and catalysts\n- Risks: company-specific (customer concentration, leverage, regulation), valuation risk\n  (what is priced in), cyclical, currency, and key-person risk where relevant.\n- Catalysts with approximate timing where known (earnings dates, product cycles, regulation).\n  get_news_digest_tool(symbol, days=30): summarise 3-5 items with date and source. An empty\n  digest is \"news feed unavailable\", not \"quiet\". If web search is available and an event\n  matters (regulation, litigation, M&A), load the web-research skill for it.\n- get_technical_tool(symbol, period=\"1y\"): at most two lines (trend and where the price\n  sits in its range). Technicals inform timing, they do not change fair value.\n\n## Step 7. Fit with this investor\n- get_investor_profile_tool: horizon, risk tolerance, preferences\u002Fexclusions, currency. If\n  the profile is empty, say what you assumed.\n- get_positions_tool and get_portfolio_allocation_tool: is it already held? What weight? What\n  would a 3-5% position do to sector, region and currency concentration? Correlation with\n  existing holdings via compare_symbols_tool([symbol, top 2 holdings]) if it matters.\n- get_watchlist_tool: mention if it is on the watchlist.\n- Never size a position in money without get_investable_surplus_tool; and if the user has\n  no emergency fund or carries high-interest debt, say so before anything else.\n\n## Output template\n1. **Verdict box** (3 lines): fair-value range with currency, current price vs range, one\n   sentence on stance (\"attractive \u002F fair \u002F demanding at this price for a long-term holder\"),\n   confidence (low\u002Fmedium\u002Fhigh) and why.\n2. Business in brief.\n3. Financial trends table + 3 takeaways.\n4. Expectations (attributed).\n5. Valuation: table of the three angles and the DCF assumptions with the discount-rate build.\n6. Bull \u002F bear, risks, catalysts.\n7. Fit with your profile and portfolio.\n8. **What would change my view**: 3 specific, measurable triggers (a margin level, a growth\n   rate, a leverage ratio, a price\u002Fvalue gap).\n9. Data gaps and assumptions, in one list. Dates of the data where the tools gave them.\nThis is analysis for decision support, not a recommendation to trade; the investor decides.\n\n## ETF branch (quoteType ETF \u002F fund)\nNo DCF. Instead:\n1. get_company_research_tool(symbol, include=[\"profile\", \"fundamentals\", \"fund_holdings\"]):\n   index tracked, domicile, currency, accumulating vs distributing if shown, size.\n2. Costs: expense ratio (a 0.07% vs 0.40% difference compounds), plus bid-ask and tracking\n   difference if available. Small funds (under ~100M) carry closure risk, say so.\n3. Holdings: top-10 weight, number of holdings, sector and country tilt. Flag concentration\n   (e.g. top 10 above 40%).\n4. Performance and risk: compare_symbols_tool against its benchmark and one or two\n   competitor ETFs on the same index (same index, lower cost wins unless liquidity differs).\n5. Overlap: compare its top holdings and index with get_positions_tool; two funds on the\n   same index or with correlation above ~0.9 are duplicates, not diversification.\n6. Verdict: role in the portfolio (core \u002F satellite \u002F duplicate), cost ranking vs\n   alternatives, and what would change the view. Same data-gap and attribution rules.",{"name":5,"uses":43,"title":52,"tools":53,"command":24,"requires":59,"max_rounds":61,"description":7,"suggested_model":62},[44,45,46,47,48,49,50,51],"get_company_research_tool","compare_symbols_tool","get_technical_tool","get_investor_profile_tool","get_positions_tool","get_portfolio_allocation_tool","get_watchlist_tool","search_symbols_tool","Equity research",[54,55,56,57,58],"get_financial_statements_tool","get_analyst_estimates_tool","find_peers_tool","dcf_valuation_tool","get_news_digest_tool",[60],"investments",20,"anthropic\u002Fclaude-sonnet-5.5","main","809d65610efe5f7d855069c968f79b2bc716fb89","backend\u002Fapp\u002Fai_skills\u002Fequity_research",1,"https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance","https:\u002F\u002Flefyd24.github.io\u002FHomeFinance\u002F","https:\u002F\u002Fgithub.com\u002FLefyd24","https:\u002F\u002Ffthenos.work","2026-11-08 07:16:43",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add Lefyd24\u002FHomeFinance --skill equity-research",{"tool":78,"command":79},"bunx","bunx skills add Lefyd24\u002FHomeFinance --skill equity-research",{"tool":81,"command":82},"pnpm","pnpm dlx skills add Lefyd24\u002FHomeFinance --skill equity-research","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fequity_research\u002FSKILL.md",true,[86,92,98,104,108,112,116,120,124,128,132,136,140],{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":91},"__init__.py","SCRIPT","脚本",0,"https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fequity_research\u002F__init__.py",{"path":93,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":96,"sourceHtmlUrl":97},"grounding_audit.json","REFERENCE","参考文档",1027,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002Fgrounding_audit.json",{"path":99,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":102,"sourceHtmlUrl":103},"Images\u002Ffind_replace_dialog_entry_focus_crop.jpg","ASSET","资产文件",27954,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002Ffind_replace_dialog_entry_focus_crop.jpg",{"path":105,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":106,"sourceHtmlUrl":107},"Images\u002Ffind_replace_dialog_entry.jpg",249074,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002Ffind_replace_dialog_entry.jpg",{"path":109,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":110,"sourceHtmlUrl":111},"Images\u002Ffind_replace_formatting_confirm_focus_crop.jpg",25249,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002Ffind_replace_formatting_confirm_focus_crop.jpg",{"path":113,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":114,"sourceHtmlUrl":115},"Images\u002Ffind_replace_formatting_confirm.jpg",237426,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002Ffind_replace_formatting_confirm.jpg",{"path":117,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":118,"sourceHtmlUrl":119},"Images\u002Ffind_replace_success_message_focus_crop.jpg",42008,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002Ffind_replace_success_message_focus_crop.jpg",{"path":121,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":122,"sourceHtmlUrl":123},"Images\u002Ffind_replace_success_message.jpg",246319,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002Ffind_replace_success_message.jpg",{"path":125,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":126,"sourceHtmlUrl":127},"Images\u002FIMAGE_REFERENCE_LIST.md",1665,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002FImages\u002FIMAGE_REFERENCE_LIST.md",{"path":129,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":130,"sourceHtmlUrl":131},"plan.json",6799,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002Fplan.json",{"path":133,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":134,"sourceHtmlUrl":135},"runtime_state_cards.json",6402,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002Fruntime_state_cards.json",{"path":137,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":138,"sourceHtmlUrl":139},"state_cards.json",17503,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FDocument-Generation\u002Flibreofficewriter-find-and-replace-text-or-formatting\u002Fstate_cards.json",{"path":141,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":142,"sourceHtmlUrl":143},"tools.py",14910,"https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fequity_research\u002Ftools.py",[145,158,172,191,218,235],{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":154,"publishedAt":38},"01M6CPDEB1TCPW1R6XR98SBQSH","other-skill","A skill with no tools and an investments requirement.","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Ftests\u002Ffixtures\u002Fai_skills\u002Fgood\u002Fother_skill\u002FSKILL.md",[151],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[155,156,157],"other skill","no tools","Tools",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":38},"01M6CPDBW95ZXM409KJ0G6WKF2","demo-skill","Use for demo work. Second line of the description.","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Ftests\u002Ffixtures\u002Fai_skills\u002Fgood\u002Fdemo_skill\u002FSKILL.md",[164],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,168,169,29,170,171],"demo skill","demo","use","work","lookup","email",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":179,"publishedAt":38},"01M6CPD8TKFS2ZRSC6B92H5TGE","web-research","Look things up on the web when Yahoo market data cannot answer them (regulation, lawsuits, product launches, management changes, macro events, recent news the feed misses). Returns cited sources; never used for prices or financial statements.","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fweb_research\u002FSKILL.md",[178],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[24,180,181,182,28,183,184,29,185,186,187,188,189,190],"web","web research","product","macro","data","returns","management","never","up","look","Market",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":208,"publishedAt":38},"01M6CPD5WMS8B44FTZG60VM575","report-email","Use when the user asks to be emailed a report, summary or analysis (optionally as a PDF): \"email me this\", \"send me a report\", \"mail me the review as a PDF\". Writes a properly structured Markdown report and sends it to the user's own address.","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Freport_email\u002FSKILL.md",[197,200,203],{"categoryNo":198,"categoryName":199,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":201,"categoryName":202,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":204,"categoryName":205,"taxonomyType":206,"taxonomyTypeDesc":207},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[171,209,210,211,212,29,213,168,214,215,216,217],"report","report email","analysis","markdown","user","summary","me","PDF","review",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":222,"categories":223,"keywords":224,"publishedAt":38},"01M6CPD3514RDT3HNC1TQE1C6E","portfolio-review","Use when the user wants their investment portfolio reviewed or rebalanced: drift versus a target allocation, concentration, currency exposure, fund costs, \"am I on track\", \"how should I split my next contribution\". Needs investment accounts to be connected.","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fportfolio_review\u002FSKILL.md",[],[217,225,35,226,227,228,229,29,213,33,230,168,231,232,233,234],"portfolio review","status","risk","how","plan","overview","fund","investment","drift","next",{"skillNo":236,"name":237,"nameZh":6,"description":238,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":239,"categories":240,"keywords":241,"publishedAt":38},"01M6CPCZQW8QKXYB7KV8R2KT17","opportunity-screening","Find investment candidates the user does not already hold (find me ideas, what should I add, opportunities for my profile). Derives screens from the investor profile and portfolio gaps, shortlists, deep-dives the best two or three, and returns a ranked table including a low-cost index baseline.","https:\u002F\u002Fgithub.com\u002FLefyd24\u002FHomeFinance\u002Fblob\u002Fmain\u002Fbackend\u002Fapp\u002Fai_skills\u002Fopportunity_screening\u002FSKILL.md",[],[242,37,226,243,244,29,245,185,30,31,213,33,230,35,246,231,232,215,24],"opportunity screening","index","baseline","table","cost"]