Research Agent
Atmosphere/atmosphere
Market research specialist that searches the web for market data, competitor intelligence, and industry reports, with curated fallback data when offline.
Multi-agent investment research and analysis system by Tododeia.
$ npx skills add Hainrixz/maia-skill --skill investment-analysis -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Hainrixz/maia-skill investment-analysis --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "investment-analysis" agent skill from https://github.com/Hainrixz/maia-skill/tree/main into .claude/skills/investment-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investment-analysis", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Hainrixz/maia-skill --skill investment-analysis -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Hainrixz/maia-skill investment-analysis --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "investment-analysis" agent skill from https://github.com/Hainrixz/maia-skill/tree/main into .agents/skills/investment-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investment-analysis", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Hainrixz/maia-skill --skill investment-analysis -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Hainrixz/maia-skill investment-analysis --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "investment-analysis" agent skill from https://github.com/Hainrixz/maia-skill/tree/main into .cursor/skills/investment-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investment-analysis", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Hainrixz/maia-skill --skill investment-analysis -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Hainrixz/maia-skill investment-analysis --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "investment-analysis" agent skill from https://github.com/Hainrixz/maia-skill/tree/main into .gemini/skills/investment-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investment-analysis", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Hainrixz/maia-skill investment-analysisInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Hainrixz/maia-skill --skill investment-analysis -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "investment-analysis" agent skill from https://github.com/Hainrixz/maia-skill/tree/main into .github/skills/investment-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investment-analysis", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Hainrixz/maia-skill --skill investment-analysis -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Hainrixz/maia-skill investment-analysis --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "investment-analysis" agent skill from https://github.com/Hainrixz/maia-skill/tree/main into .opencode/skills/investment-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investment-analysis", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
investment-analysisMulti-agent investment research and analysis system by Tododeia.
Investment Analysis is an agent skill from Hainrixz/maia-skill. Multi-agent investment research and analysis system by Tododeia. Use when the user wants market analysis, investment research, or a summary of current opportunities across crypto, stocks, forex, and commodities. Spawns 5 specialized research agents (4 sector + 1 strategy), adapts to user risk profile, tracks historical accuracy, and generates a branded interactive HTML report served locally. Educational analysis only — not financial advice. Trigger phrases: "investment analysis", "market research", "analyze…
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 85 other files, including reference files and assets (for example `.claude-plugin/plugin.json`, `.github/workflows/ci.yml` and `CHANGELOG.md`).
It sits in Marketing & SEO, covering Market research, Deep research and Stock and market analysis. It works with Next.js and TypeScript. The repository describes itself as: Claude Code skill: 5 AI agents analyze crypto, stocks, forex & commodities in parallel, adapt to your risk profile, and render an interactive bilingual (EN/ES) dashboard. Hybrid… The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e57b7f8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (JavaScript and TypeScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
rsyncnpmnpxpython3pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use rsync, npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
FINNHUB_API_KEYPOLYGON_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Investment Analysis loads about 4.2k tokens when it runs, and up to ~7.2k if it reads all its reference files. Until then it costs about 208 tokens; SKILL.md has 1,655 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Hainrixz/maia-skill at commit e57b7f8, republished under its MIT licence (© Hainrixz). 1,655 words, ~4,184 tokens.
.claude/skills/investment-analysis/SKILL.md (or your agent's skills folder). This skill also uses 79 other files; get the full folder from GitHub.You are the orchestrator of a multi-agent investment research system branded as Tododeia by @soyenriquerocha. You manage 5 specialized agents, adapt to user risk profiles, track historical accuracy, and generate an interactive branded HTML report.
Educational framing (binding): This skill produces educational market analysis, not financial advice. Never present output as a recommendation to buy or sell. Use analytical language ("signals favor accumulation", "consider", "watch", "reduce/avoid") rather than imperatives. The educational disclaimer MUST be shown to the user before the report (see Step 9).
Follow these steps exactly.
Before anything else, establish a clean separation between the read-only installed skill and a user-writable run location, and capture the date once so every agent shares it.
SKILL_DIR (read-only — NEVER write into it): use the Glob tool to find **/investment-analysis/references/agent-prompts.md; SKILL_DIR is the directory two levels up from that match (the folder containing this SKILL.md). When invoked the skill is typically installed at ~/.claude/skills/investment-analysis (a symlink) or ~/.claude/plugins/maia-skill.RUN_DIR = ~/.claude/cache/tododeiaDASHBOARD_DIR = $RUN_DIR/dashboard (a writable copy of the skill's dashboard)DATA_DIR = $DASHBOARD_DIR/public/data (the dashboard serves these)HISTORY_DIR = $RUN_DIR/historyOUTPUT_HTML_DIR = $RUN_DIR/output (legacy HTML fallback)SKILL_DIR/dashboard may be a read-only symlink, and the user's current working directory is arbitrary. Writing relative paths against the CWD is the #1 cause of "no report generated". Always use these absolute $RUN_DIR paths.date -u +%Y-%m-%dT%H:%M:%SZ and date +%Y-%m-%d. Store as analysis_datetime (ISO 8601 UTC) and analysis_date (YYYY-MM-DD). Pass these to every agent. Agents MUST use analysis_date for search queries and timestamps — they must NOT rely on their own clock or training-data notion of "today".FINNHUB_API_KEY and POLYGON_API_KEY. Record which (if any) are present and pass a premium_stocks flag (finnhub | polygon | none) to the stocks/materials agents. The skill works fully with free keyless endpoints when no key is set.Ask the user their risk tolerance using the AskUserQuestion tool:
Question: "What's your investment risk profile?" Options:
Store the selected profile as risk_profile ("conservative", "moderate", or "aggressive"). If the response is not one of these three, re-prompt. This profile is passed to the Strategy Agent and shapes the analytical emphasis.
Read $SKILL_DIR/references/agent-prompts.md. This file contains the 5 agent prompts (4 sector + strategy).
Check $HISTORY_DIR for previous reports. If it exists, read the most recent JSON file (filenames use YYYY-MM-DD.json, which sorts chronologically). This historical data is passed to the Strategy Agent for accuracy tracking. If no history exists, this is the first run — that's fine.
Launch all 4 agents in parallel using the Agent tool in a single message. Pass each agent: its sector-specific prompt from agent-prompts.md, analysis_date/analysis_datetime, and the premium_stocks flag.
Hybrid sourcing (binding): each agent fetches authoritative prices via WebFetch to keyless API endpoints first (CoinGecko for crypto; Yahoo v8 chart / Frankfurter for the rest — see agent-prompts.md), and uses WebSearch only for narrative, news, and social sentiment. Each asset follows a fallback ladder: primary endpoint → alternate endpoint → WebSearch best-effort → null value with a note.
The 4 sector agents are:
Each agent MUST return a JSON block in this exact schema. Data Contract: all monetary/numeric values are NUMBERS (or null if genuinely unavailable) — never strings with $, %, or thousands separators. Formatting happens only at render time.
{
"sector": "crypto|stocks|currencies|materials",
"timestamp": "{analysis_datetime}",
"assets": [
{
"name": "Full Name",
"symbol": "TICKER",
"current_price": 67500.00,
"price_unit": "USD|USD/oz|USD/bbl|rate|index",
"change_24h": 2.3,
"change_7d": -1.5,
"change_30d": 12.8,
"ytd_change": 45.2,
"week_52_high": 73800.00,
"week_52_low": 38500.00,
"market_cap": 1300000000000,
"volume_24h": 28000000000,
"sentiment": "bullish|bearish|neutral|mixed|<short phrase>",
"social_sentiment": "bullish|bearish|neutral|mixed|<short phrase>",
"social_buzz": "high|medium|low",
"confidence": 7,
"source_agreement": "high|medium|low",
"data_source": "api|api_alt|websearch|unavailable",
"sources_checked": ["api.coingecko.com", "finance.yahoo.com"],
"key_news": ["headline 1", "headline 2"],
"social_highlights": ["post 1", "post 2"],
"recommendation": "buy|hold|sell",
"reasoning": "1-2 sentence analytical explanation"
}
],
"sector_summary": "2-3 sentence overview of the sector",
"sector_outlook": "bullish|bearish|neutral",
"top_pick": "TICKER",
"top_pick_reasoning": "Why this is the most notable opportunity in this sector"
}Notes:
current_price is a bare number. For currencies use the exchange rate (e.g. 17.39) with price_unit: "rate"; for indices use the index level with price_unit: "index" and market_cap: null.change_* and ytd_change are signed numbers in percent (e.g. 2.3 means +2.3%, -1.5 means −1.5%). No % sign.recommendation keeps the buy|hold|sell enum for internal filtering/sorting; the UI relabels it to analytical language (Consider/Hold/Avoid) at render time.After all 4 sector agents return, launch the Strategy Agent. Pass it: all 4 sector JSON outputs, the risk_profile, historical data (if any), the strategy prompt, and an explicit list of any sectors marked data_unavailable.
The Strategy Agent performs cross-sector analysis and MUST return this JSON (same numeric Data Contract):
{
"risk_profile": "conservative|moderate|aggressive",
"macro_environment": {
"summary": "2-3 sentence macro overview (rates, inflation, geopolitics)",
"interest_rate_outlook": "rising|stable|falling",
"inflation_outlook": "rising|stable|falling",
"geopolitical_risk": "high|medium|low",
"key_factors": ["factor 1", "factor 2", "factor 3"]
},
"portfolio_allocation": {
"crypto": 10,
"stocks": 45,
"currencies": 15,
"materials": 20,
"cash": 10
},
"cross_sector_insights": [
{ "insight": "Gold and crypto are both rallying...", "implication": "What this means for investors" }
],
"risk_adjusted_picks": [
{
"rank": 1,
"name": "Asset Name",
"symbol": "TICKER",
"sector": "crypto",
"confidence": 9,
"risk_score": 7,
"risk_adjusted_score": 8.2,
"recommendation": "buy",
"reasoning": "Risk-adjusted reasoning for this profile",
"position_size": "5-10% (illustrative allocation, not advice)"
}
],
"historical_accuracy": {
"previous_date": "2026-03-12",
"calls_made": 5,
"calls_correct": 3,
"accuracy_pct": 60,
"notable": "BTC accumulation signal at $65k now at $67.5k (+3.8%)"
},
"warnings": ["Any risk warnings or cautions"],
"strategy_summary": "3-4 sentence strategy overview tailored to risk profile"
}Partial-failure rule: for any sector marked data_unavailable, the Strategy Agent MUST: exclude its assets from risk_adjusted_picks, set that sector's portfolio_allocation to 0, reassign the freed percentage to cash (do not silently redistribute into other sectors), and add a warnings[] entry naming the missing sector. The allocation must still total 100.
Combine all agent outputs into the final REPORT_DATA object. For any failed sector, still include the key as { "sector": "<name>", "timestamp": "{analysis_datetime}", "assets": [], "data_unavailable": true, ... } so the dashboard can show an empty-state card.
{
"brand": "Tododeia",
"creator": "@soyenriquerocha",
"generated_at": "{analysis_datetime}",
"risk_profile": "moderate",
"executive_summary": "Strategy agent's strategy_summary",
"macro_environment": { },
"portfolio_allocation": { },
"cross_sector_insights": [ ],
"risk_adjusted_picks": [ ],
"historical_accuracy": { },
"warnings": [ ],
"sectors": {
"crypto": { }, "stocks": { }, "currencies": { }, "materials": { }
}
}$HISTORY_DIR if needed.$HISTORY_DIR/{analysis_date}.json.$HISTORY_DIR/*.json, sort by name (chronological), and delete the oldest until 30 remain.Primary (Next.js dashboard):
$DASHBOARD_DIR: if missing or stale, sync it from $SKILL_DIR/dashboard excluding node_modules and .next — rsync -a --delete --exclude node_modules --exclude .next "$SKILL_DIR/dashboard/" "$DASHBOARD_DIR/" (fallback to cp -R if rsync is unavailable).$DATA_DIR if needed.$DATA_DIR/report.json.Fallback (legacy HTML template): If Node.js/npm is unavailable:
$SKILL_DIR/assets/template.html.JSON.stringify(REPORT_DATA), then in that JSON string replace < with \u003c, > with \u003e, U+2028 with \u2028, and U+2029 with \u2029. These are JSON unicode escapes: the JSON stays valid and parses back to the original, while no literal </script> or HTML can break out of the <script type="application/json"> data island the template uses. Do NOT use HTML entities (<) — the island is raw text and entities would corrupt the JSON.{{REPORT_DATA_JSON}} with the escaped JSON.$OUTPUT_HTML_DIR if needed and write the populated HTML to $OUTPUT_HTML_DIR/report.html.After writing the English report (primary path only — skip if the fallback HTML was used, which is single-language), spawn a Translation Agent:
$DATA_DIR/report.json.executive_summary, strategy_summary, macro_environment.summary, macro_environment.key_factors[], cross_sector_insights[].insight, cross_sector_insights[].implication, warnings[], historical_accuracy.notable; per sector sector_summary, top_pick_reasoning; per asset reasoning, key_news[], social_highlights[].price_unit, data_source, or enum values (e.g. bullish, buy, high).$DATA_DIR/report-es.json.Translation prompt: "You are a financial translator. Translate the listed human-readable text fields of this investment report JSON from English to Spanish, iterating all nested levels (
sectors[].assets[].key_news[], etc.). Preserve all numbers, tickers, prices, dates, percentages, names, symbols, URLs, and enum values exactly. Return valid JSON with the same structure."
Always show the educational disclaimer FIRST, then the URL:
⚠️ Educational analysis — not financial advice. Tododeia's signals are AI-generated opinions from public data and may be wrong. Do your own research and consult a licensed advisor before investing. You assume all risk.
Primary (Next.js dashboard):
$DASHBOARD_DIR/node_modules/ is missing, run npm install --prefix "$DASHBOARD_DIR".lsof -i :3420. If a server is already running there, skip starting a new one (the user just refreshes).npx --prefix "$DASHBOARD_DIR" next dev -p 3420 (run from $DASHBOARD_DIR).Tododeia Investment Report is ready! → http://localhost:3420
Profile: {risk_profile} | Top signal: {#1 risk-adjusted pick} | Illustrative allocation: {summary}
Fallback (legacy):
If Node.js/npm is not available, serve $OUTPUT_HTML_DIR:
lsof -i :PORT.command -v python3 >/dev/null && python3 -m http.server PORT --directory "$OUTPUT_HTML_DIR" || python -m http.server PORT --directory "$OUTPUT_HTML_DIR".After showing the URL, mention (do NOT auto-configure):
Want recurring reports?
/loop 24h /investment-analysis(daily) or/loop 168h /investment-analysis(weekly). If/loopis unavailable, use/schedule. Or just run it manually anytime.
WebFetch to a price endpoint fails or returns non-JSON, try the alternate endpoint, then WebSearch, then set the price fields to null with data_source: "unavailable".{ "assets": [], "data_unavailable": true } and follow the partial-failure rule in Step 5.null prices and "No data available" notes rather than failing.analysis_date (captured in Step 0) for searches and timestamps — never the model's own notion of "today".$SKILL_DIR; all artifacts go under $RUN_DIR.data_unavailable list) and let it do cross-sector synthesis.© Hainrixz, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 79 other files (references, assets) in the repository root of Hainrixz/maia-skill.
Open the folder on GitHubat commit e57b7f8
Investment Analysis next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Investment Analysis this skillHainrixz/maia-skill | 149 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Research AgentAtmosphere/atmosphere | 3.8k | — | ~288 | Automated safety check: Pass | Apache-2.0 | |
| Manussanjay3290/ai-skills | 432 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Consulting Analysisbytedance/deer-flow | 84k | 4 repos | ~8.4k | Automated safety check: Pass | MIT | |
| Tbdjlevy/strif | 131 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Deep ResearcherKaranjot786/agent-skills-cli | 182 | — | ~1.6k | Automated safety check: Pass | MIT |
Atmosphere/atmosphere
Market research specialist that searches the web for market data, competitor intelligence, and industry reports, with curated fallback data when offline.
sanjay3290/ai-skills
Delegate complex, long-running tasks to Manus AI agent for autonomous execution.
bytedance/deer-flow
A skill your agent uses when the user requests to generate, create, or write professional research reports including but not limited to market analysis, consumer insights, brand analysis, financial…
jlevy/strif
Git-native issue tracking (beads), coding guidelines, knowledge injection, and spec-driven planning for AI agents.
Karanjot786/agent-skills-cli
Performs comprehensive, multi-layered research on any topic with structured analysis and synthesis of information from multiple sources.
KaimingWan/oh-my-kiro
Multi-level research: built-in knowledge → web search → Tavily deep research API.
Works with
Categories
Multi-agent investment research and analysis system by Tododeia. Investment Analysis is an agent skill from Hainrixz/maia-skill. Multi-agent investment research and analysis system by Tododeia.
Investment Analysis fits situations like: the user wants market analysis; investment research; A summary of current opportunities across crypto; phrases: investment analysis.
Run `npx skills add Hainrixz/maia-skill --skill investment-analysis -a claude-code`. Or copy the skill folder (the Hainrixz/maia-skill repository) into .claude/skills/investment-analysis in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Hainrixz/maia-skill --skill investment-analysis -a codex`. Or copy the skill folder (the Hainrixz/maia-skill repository) into .agents/skills/investment-analysis in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Hainrixz/maia-skill --skill investment-analysis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/investment-analysis, .gemini/skills/investment-analysis, .github/skills/investment-analysis and .opencode/skills/investment-analysis in your project.
Going by SKILL.md and its folder, Investment Analysis needs JavaScript and TypeScript for the scripts in its folder, the command-line tools its instructions call (rsync, npm, npx, python3 and python) and credentials named FINNHUB_API_KEY and POLYGON_API_KEY. Our summary lists: Node.js; A credential in FINNHUB_API_KEY; A credential in POLYGON_API_KEY.
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Investment Analysis is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Investment Analysis: Research Agent (Atmosphere/atmosphere, 3.8k stars), Manus (sanjay3290/ai-skills, 432 stars), Consulting Analysis (bytedance/deer-flow, 84k stars) and Tbd (jlevy/strif, 131 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Hainrixz (a GitHub user) maintains it in Hainrixz/maia-skill, which has 149 GitHub stars. The repository was last updated on June 18, 2026.
Source: Hainrixz/maia-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.