India equity report
Skill vishalmdi/india-equity-report-skill/india-equity-report
Institutional-quality equity research reports for NSE/BSE stocks. Generate comprehensive Buy/Sell/Hold analysis with zero hallucination using Claude Code. Multi-model valuation, forensic accounting, technical analysis & TAM sizing. MIT License.
npx -y skills add vishalmdi/india-equity-report-skill --skill india-equity-reportAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate a detailed Buy/Sell/Hold equity research report for Indian stock market (NSE/BSE listed companies). Use this skill whenever the user asks for a stock analysis, equity research, investment recommendation, target price, fundamental analysis, technical analysis, or buy/sell/hold opinion on any Indian company or stock. Triggers on phrases like "analyse [stock]", "should I buy [stock]", "research report for [company]", "target price for [stock]", "is [stock] a good buy", "NSE/BSE stock analysis", etc. Always use this skill for any Indian equity research request — even if the user just names a stock ticker or company and asks "what do you think?"
SKILL.md
13.1 KB, as published. Nobody here has run it
India Equity Research Report Skill
Generates institutional-quality Buy / Sell / Hold research reports for NSE/BSE-listed stocks, grounded entirely in live data fetched from authoritative sources. Never hallucinate financial figures.
0. Pre-flight: Read the data sources reference
Before writing a single word of the report, read /mnt/skills/user/india-equity-report/references/data-sources.md (or the bundled copy at references/data-sources.md) for the definitive list of approved sources and fetch URLs. Do not use any source not listed there.
1. Workflow
Step 1 — Identify the stock
- Resolve the company name → NSE ticker (e.g., RELIANCE, INFY, HDFCBANK).
- Confirm exchange: NSE preferred; BSE fallback (prefix
BSE:if NSE unavailable). - If ambiguous, ask the user to confirm before proceeding.
Step 1.5 — Fetch the Live CMP (MANDATORY — do this before anything else)
⚠️ CRITICAL: Screener.in's page often displays a stale cached price (e.g., it may show "13 Feb - close price" even when the report is run on Feb 27). Never use the price shown on the Screener.in page as the CMP. It is unreliable.
⚠️ CRITICAL: Yahoo Finance (HDFCBANK.NS etc.) shows US-session delayed quotes that can differ from the NSE close price by 10–15%. Do NOT use Yahoo Finance as a CMP source. It is structurally unreliable for Indian stocks.
The canonical CMP fetch method
Claude cannot execute GOOGLEFINANCE (that runs only in a live Google Sheet). Instead, use web search — Google's search result card pulls from the same Google Finance data feed and is equally reliable:
Step-by-step:
- Run
web_search: "[TICKER] NSE share price [CURRENT MONTH YEAR]"(e.g., "HDFCBANK NSE share price March 2026") - Read the price number from the Google Finance card in the search snippet — this is the current or last-close price from Google Finance.
- If the search snippet doesn't show a clear price, run
web_fetch: https://www.tickertape.in/stocks/[company-slug]-[TICKER]— Tickertape shows a clearly date-stamped last NSE closing price. - As an additional fallback:
web_fetch: https://www.5paisa.com/stocks/[company-slug]-share-price— 5Paisa also shows confirmed NSE close with date. - Confirm the date: The price must be from the most recent trading day. If the date shown is more than 3 trading days old, flag it as "last available closing price as of [DATE]".
- Record it as a concrete number: e.g.,
CMP: ₹869.05 [Source: Tickertape/NSE, 4 Mar 2026]
⚠️ DO NOT write raw formulas like
=GOOGLEFINANCE("NSE:HDFCBANK","price")as the CMP in the report. Always resolve these to actual fetched numbers before writing the report. The report must display real prices (e.g., ₹869.05), never spreadsheet formulas.
Do not proceed to Step 2 until you have a concrete ₹ price with a date.
Step 2 — Fetch all raw data (do this BEFORE writing the report)
Use web_search and web_fetch tools sequentially. Fetch every section below. Log each fetch with the source URL so the report can cite it.
| Data needed | Primary source | Fallback |
|---|---|---|
| Current price, 52w high/low, market cap | Step 1.5 above (dedicated CMP fetch — NOT Screener.in or Yahoo Finance) | See Step 1.5 fallback chain |
| Quarterly & annual P&L, balance sheet, cash flow | Screener.in — https://www.screener.in/company/[TICKER]/consolidated/ | Tickertape.in |
| Key ratios (P/E, P/B, ROE, ROCE, D/E, EV/EBITDA) | Screener.in same page | Trendlyne.com |
| Promoter & institutional shareholding | Screener.in shareholding tab | BSE filings |
| Latest quarterly results (numbers + commentary) | BSE corporate filings: https://www.bseindia.com/stock-share-price/[COMPANY]/[TICKER]/[BSE_CODE]/ | NSE: https://www.nseindia.com/get-quotes/equity?symbol=[TICKER] |
| Annual report / investor presentation | Company IR page (search: "[COMPANY]" investor relations annual report site:[company].com) | BSE filings PDF |
| Management commentary & concall highlights | Screener.in concall transcripts tab OR web_search: "[COMPANY] Q[N] FY[YY] earnings call transcript" | Trendlyne concall |
| News (last 90 days) | web_search: "[TICKER] news 2026" — use only ET Markets, Mint, Business Standard, Hindu BusinessLine, CNBCTV18, Moneycontrol | — |
| Sector / industry data | CMIE / MOSPI / RBI reports via web_search | IBEF.org sector reports |
| Technical indicators | web_search: "[TICKER] technical analysis tradingview" then fetch | Chartink.com screener |
| Peer valuation (P/E, P/B, ROE vs sector peers) | web_search: "[COMPANY] vs peers valuation comparison [SECTOR] 2026" then fetch Trendlyne peers tab OR Tickertape comparison | Screener.in peer comparison |
| Analyst consensus target price | web_fetch: https://trendlyne.com/equity/[TICKER]/ — look for analyst target section (e.g., "38 analysts, target ₹1,154") | web_search: "[TICKER] analyst target price consensus 2026" |
| Credit ratings (if applicable) | web_search: "[COMPANY] credit rating CRISIL ICRA CARE 2026" | — |
| Regulatory / SEBI filings | https://www.sebi.gov.in/ or BSE announcements | — |
⚠️ Rule: Every number in the report must be followed by
[Source: <URL or publication name, date>]. If a number cannot be sourced, write "data unavailable" — never estimate or infer.
Step 3 — Analyse
Run the analysis frameworks in references/analysis-frameworks.md.
Step 4 — Write the report
Follow the report template in references/report-template.md exactly.
Mandatory additions to the Valuation section (v1.1):
- Include a peer comparison table (minimum 3 peers) showing P/E, P/B, ROE, Revenue Growth for each peer alongside the subject stock. Source from Trendlyne peers tab or Screener.in comparison.
- Include the analyst consensus target (if fetched) as a reference data point alongside your independently derived target. Do not adopt it — just cite it as market context.
Step 5 — Quality Check (MANDATORY before publishing)
Before saving the .docx and presenting it to the user, perform a self-audit across these dimensions:
5a. Price & Formula Check
- CMP is a real ₹ number (e.g., ₹869.05) — not a formula like
=GOOGLEFINANCE(...) - No spreadsheet formula syntax anywhere in the report body
- Price Snapshot box contains actual fetched numbers, not placeholders
- CMP date is the most recent trading day (flag if >3 days old)
- CMP source is Tickertape, Google Finance card, or 5Paisa — NOT Yahoo Finance or Screener.in price field
5b. Data Integrity Check
- Every financial figure has an inline source tag
[Source: URL, date] - No figures marked "data unavailable" that could reasonably be found with one more search — if so, do that search now
- Screener.in price field was ignored (only historical financials used from there)
- Yahoo Finance was not used for CMP
- No analyst consensus figures invented — only cited if fetched from Trendlyne or news articles
- Peer comparison table is present in the Valuation section with sourced figures
5c. Formatting & Structure Check
- All section headers from the report template are present
- Scenario Analysis table (Bull/Base/Bear) is included
- Investment Verdict has separate guidance for (a) existing holders and (b) new investors, with specific price levels
- Executive Summary opens with a specific, compelling observation — not a generic company description
- SEBI disclaimer is present at the end
- No misplaced or broken markdown (stray
#,**,>outside intended sections) - Tables are properly formatted and all columns align
5d. Docx-Specific Check
- Read
/mnt/skills/public/docx/SKILL.mdbefore generating the .docx - File saved to
/mnt/user-data/outputs/and presented viapresent_filestool - Markdown summary also pasted in chat
If any check fails, fix it before presenting the report. Do not skip this step even under time pressure — a report with raw formulas or missing data is worse than a shorter but accurate one.
2. Hallucination Prevention Rules
- No fabricated figures — All EPS, revenue, margins, P/E ratios must come from fetched pages.
- Cite every number — Inline source tag
[Source: URL, date]mandatory. - No stale data — If a fetch returns data older than 6 months for financials, flag it explicitly.
- No analyst consensus invention — Only cite consensus if fetched from Trendlyne, Bloomberg Quint, or Refinitiv (via news articles).
- Uncertainty disclosure — If a key data point (e.g., FY25 guidance) is not found after 2 search attempts, state "Not available at time of report."
- No price targets from thin air — Target price must be derived from a visible DCF, P/E re-rating, or EV/EBITDA model using fetched numbers.
- Never display raw spreadsheet formulas in the report — The CMP and all prices must appear as concrete ₹ numbers (e.g., ₹869.05) fetched via web search/Tickertape. Never write
=GOOGLEFINANCE(...)or any formula syntax in the report body — this is a spreadsheet tool, not a report element. Never use Screener.in's displayed CMP or Yahoo Finance — both are unreliable for current NSE prices. Always obtain CMP via the Step 1.5 procedure.
3. Output format
Deliver the report as a downloadable .docx file using the docx skill, AND paste a markdown summary in chat.
Read /mnt/skills/public/docx/SKILL.md before generating the .docx output.
Report length: 1,500–3,000 words (excluding data tables).
Mandatory: Include a Live Price Snapshot box
Every report must include a clearly visible Price Snapshot box near the top (in the cover/snapshot section) showing the actual fetched prices:
📊 PRICE SNAPSHOT (as of [DATE])
CMP: ₹[actual price]
Prev. Close: ₹[actual price]
52W High: ₹[actual price]
52W Low: ₹[actual price]
Market Cap: ₹[actual value] Cr
Source: Google Finance / Tickertape (NSE)
Note: Prices reflect last NSE close. Verify current price on NSE/BSE before trading.
⚠️ All values in this box must be real numbers fetched in Step 1.5 — never write raw spreadsheet formulas (e.g.
=GOOGLEFINANCE(...)) anywhere in the report. Source must be Tickertape, Google Finance card, or 5Paisa — not Yahoo Finance.
4. Tone & Style
- Write in the style of a Tier-1 Indian brokerage research report (e.g., ICICI Securities, Kotak Institutional, Motilal Oswal style).
- The reference benchmark for style and depth is a Macfos Ltd. (BSE: 543787) style report — institutional quality, conviction-driven narrative, callout boxes for key insights and risks, specific dates/numbers throughout.
- Use callout boxes (blockquotes
>) for: key channel checks or "Practitioner's Edge" insights, ⚠️ critical financial risks (e.g. negative OCF paradox), valuation risk warnings, and anomaly explanations (one-time orders, base effects). - The Executive Summary should open with the most interesting real-world observation about the company — not a generic "Company X is a leading provider of Y." Lead with WHY the stock matters NOW.
- The Investment Verdict section must include separate, actionable guidance for (a) existing holders and (b) new investors — with specific price levels, tranching strategy, and stop-losses.
- The Scenario Analysis table (Bull/Base/Bear) is mandatory in every report.
- The Valuation section must include a peer comparison table (≥3 peers) sourced from Trendlyne or Tickertape.
- End every report with the standard SEBI disclaimer as shown in the template.
5. Benchmark Quality Dimensions
Use these 5 dimensions to self-assess report quality before delivering:
| Code | Dimension | Pass criteria |
|---|---|---|
| D1 | Data Sourcing | CMP from Step 1.5 (Tickertape/Google Finance, not Yahoo/Screener); all financials from Q-period filings with dates |
| D2 | Structure | Price Snapshot box ✓, Bull/Base/Bear table ✓, split Verdict ✓, peer comparison table ✓ |
| D3 | Anti-Hallucination | 100% of figures carry [Source: URL, date]; no invented consensus targets |
| D4 | Actionability | Specific ₹ entry/exit/tranche levels for both new investors and existing holders |
| D5 | Output | .docx file in /mnt/user-data/outputs/ + markdown summary in chat |
A report scoring < 5/5 on this rubric should not be delivered. Fix failing dimensions first.
Gives 0 of the 12 instructions most docs writing skills give
Counted across 1,637 of the 3,044 authors here whose files we hold, read 2026-08-06
- announce the skill at startin 54 of 1637, across 21 files
- convert legacy doc files before editingin 45 of 1637, across 7 files
- predict questions readers might askin 42 of 1637, across 3 files
- Generate clarifying questions for initial contextin 42 of 1637, across 3 files
- Create document scaffold with placeholder textin 42 of 1637, across 3 files
- Brainstorm content options for each sectionin 42 of 1637, across 3 files
- Test document with fresh context-less instancein 42 of 1637, across 3 files
- ask interview questions one at a timein 42 of 1637, across 26 files
- include exact file paths in every taskin 42 of 1637, across 15 files
- Apply surgical edits during refinementin 41 of 1637, across 2 files
- Offer structured workflow or freeformin 40 of 1637, across 1 file
- Ask for document meta-contextin 40 of 1637, across 1 file
Said here and by no other author read
- fetch live data from approved sources only
- resolve the company name to a ticker
- fetch the current market price before writing
- cite every financial figure inline
- include a peer comparison table
- include a scenario analysis table
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.