Coding Trace Raw
uw-syfi/TraceLab
Read and explain raw Claude Code and Codex CLI session logs in this coding-trace repo.
Autonomously screen NYSE, Nasdaq, and NYSE American operating-company stocks for undervalued-growth/GARP opportunities using forward same-basis valuation, driver-derived EPS/FCF forecasts…
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tradermonty/claude-trading-skills us-undervalued-growth-screener --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tradermonty/claude-trading-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/us-undervalued-growth-screener .claude/skills/us-undervalued-growth-screener && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "us-undervalued-growth-screener" agent skill from https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screener into .claude/skills/us-undervalued-growth-screener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "us-undervalued-growth-screener", 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.
$skill-installer install https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screenerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tradermonty/claude-trading-skills us-undervalued-growth-screener --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tradermonty/claude-trading-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/us-undervalued-growth-screener .agents/skills/us-undervalued-growth-screener && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "us-undervalued-growth-screener" agent skill from https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screener into .agents/skills/us-undervalued-growth-screener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "us-undervalued-growth-screener", 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 tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tradermonty/claude-trading-skills us-undervalued-growth-screener --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tradermonty/claude-trading-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/us-undervalued-growth-screener .cursor/skills/us-undervalued-growth-screener && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "us-undervalued-growth-screener" agent skill from https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screener into .cursor/skills/us-undervalued-growth-screener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "us-undervalued-growth-screener", 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.
$ gemini skills install https://github.com/tradermonty/claude-trading-skills.git --path skills/us-undervalued-growth-screener--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tradermonty/claude-trading-skills us-undervalued-growth-screener --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tradermonty/claude-trading-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/us-undervalued-growth-screener .gemini/skills/us-undervalued-growth-screener && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "us-undervalued-growth-screener" agent skill from https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screener into .gemini/skills/us-undervalued-growth-screener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "us-undervalued-growth-screener", 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 tradermonty/claude-trading-skills us-undervalued-growth-screenerInstalls 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 tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tradermonty/claude-trading-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/us-undervalued-growth-screener .github/skills/us-undervalued-growth-screener && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "us-undervalued-growth-screener" agent skill from https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screener into .github/skills/us-undervalued-growth-screener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "us-undervalued-growth-screener", 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 tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tradermonty/claude-trading-skills us-undervalued-growth-screener --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tradermonty/claude-trading-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/us-undervalued-growth-screener .opencode/skills/us-undervalued-growth-screener && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "us-undervalued-growth-screener" agent skill from https://github.com/tradermonty/claude-trading-skills/tree/main/skills/us-undervalued-growth-screener into .opencode/skills/us-undervalued-growth-screener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "us-undervalued-growth-screener", 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.
us-undervalued-growth-screenerAutonomously screen NYSE, Nasdaq, and NYSE American operating-company stocks for undervalued-growth/GARP opportunities using forward same-basis valuation, driver-derived EPS/FCF forecasts…
Us Undervalued Growth Screener is an agent skill from tradermonty/claude-trading-skills. Autonomously screen NYSE, Nasdaq, and NYSE American operating-company stocks for undervalued-growth/GARP opportunities using forward same-basis valuation, driver-derived EPS/FCF forecasts, primary-source financial verification, SBC and dilution controls, sector and cycle normalization, auditable candidate-pool coverage, and fail-closed final reporting. Use when asked to find, screen, rank, or refresh US undervalued-growth stocks, including minimal requests with no ticker list or parameters.
Its SKILL.md is about 9.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 73 other files, including scripts, reference files and assets (for example `assets/broad-screen-audit.example.json`, `assets/broad-screen-shortlist.example.json` and `assets/candidate-input.example.json`).
It sits in Business, Finance & HR, covering Database schema design. The repository describes itself as: Claude Code skills for equity investors and traders — market analysis, technical charting, economic calendars, screeners, and trading strategy development. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit eab8d5c. 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 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
FMP_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Us Undervalued Growth Screener loads about 9.6k tokens when it runs, and up to ~62k if it reads all its reference files. Until then it costs about 132 tokens; SKILL.md has 3,755 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 patterns that need a careful read before installing.
ACTION.json`. Follow `NEXT_ACTION.json` without asking the user for confirmation. The manual commands below remain the fAutomated 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); the scripts in this folder are not scanned.
The full file from tradermonty/claude-trading-skills at commit eab8d5c, republished under its MIT licence (© tradermonty). 3,755 words, ~9,634 tokens.
.claude/skills/us-undervalued-growth-screener/SKILL.md (or your agent's skills folder). This skill also uses 71 other files; get the full folder from GitHub.Run an end-to-end US undervalued-growth/GARP screen from a minimal request. Find companies whose EPS or FCF per share can compound enough to support attractive two- to three-year returns without assuming multiple expansion, while controlling for accounting basis, forecast construction, SBC, dilution, leverage, cyclicality, corporate actions, peer context, source freshness, and evidence quality.
Claude Code is the preferred execution environment. In Claude Code, run the local direct-FMP pipeline once. The Python process performs bulk retrieval, persistent caching, FY1 normalization, liquidity calculation, four-lane discovery, and deterministic broad screening while keeping raw FMP payloads on disk and out of the model context. Claude reads only the compact run summary and selected candidate packets, then completes SEC/IR underwriting and the existing strict evaluation sequence.
Treat a request such as “use this skill to screen for undervalued-growth stocks” as complete. Resolve defaults, collect current data, choose a viable acquisition path, checkpoint the work, repair obtainable blockers, and return the finished result in the same task. Never ask the user to supply a ticker list, API-plan details, output path, or a separate “continue” instruction unless the user explicitly narrows the scope.
Deep-dive budget and lane coverage: The bounded direct-FMP path defaults to max_deep_dive_candidates: 3. Three selected names cannot represent all four research lanes. The default lane targets are core GARP 2, high-growth exception 1, quality near miss 1, and cyclical normalization 1 (five slots total). A three-name run prioritizes candidates across lanes; it does not promise one name per lane. For a five-slot lane-first selection, set max_deep_dive_candidates: 5 in a local copy of assets/claude-code-config.example.json and rerun the bounded pipeline with that config. Eligible candidates and diversification preferences still determine actual lane representation. The separate full-snapshot path requires full_snapshot_deep_dive_candidates: 5. See references/claude-code-execution.md for selection and budget-change details.
Before reading or reusing any prior run artifact, verify the installed runtime:
python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py --version
python3 skills/us-undervalued-growth-screener/scripts/screen_universe.py --version
python3 skills/us-undervalued-growth-screener/scripts/build_discovery_pool.py --version
python3 skills/us-undervalued-growth-screener/scripts/build_provider_prefilter_pool.py --version
python3 skills/us-undervalued-growth-screener/scripts/normalize_estimates.py --version
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py --version
python3 skills/us-undervalued-growth-screener/scripts/evaluate_candidates.py --version
python3 skills/us-undervalued-growth-screener/scripts/prepublish_audit.py --version
python3 skills/us-undervalued-growth-screener/scripts/bundle_run_artifacts.py --versionEvery command must report the same metadata:
skill_version = 3.6.1
schema_version = 3
contract_revision = 3.5
runtime_fingerprint = ug-v3.6.1-claude-code-direct-fmp-20260830Discard and regenerate any audit, checkpoint, or snapshot whose runtime metadata differs. Do not mix scripts, assets, or run artifacts from v3.1 through v3.5. A stale or cached same-name skill is a hard execution failure, not a warning.
For a minimal request, perform all of the following without handing control back to the user:
analysis_as_of and the latest completed US regular-session close.run_pipeline.py instead of issuing bulk FMP MCP calls. Keep provider payloads on disk and expose only compact summaries to the model.review_required, screened_out, and excluded outcomes.evaluate_candidates.py --strict --require-final.conditional or review_required.prepublish_audit.py; repair every obtainable blocker and rerun.bundle_run_artifacts.py to produce a self-contained audit ZIP containing every referenced artifact.An exit code of 2 means continue the same execution: enrich the queue, verify the pool-generation audit, complete selected deep dives, or repair contract failures. It never means “ask the user to say continue.” After attaching the audit, run manage_run_state.py next-action; execute the returned action and every returned symbol. Never ask whether to process two versus five selected names. To change the budget, rerun the broad screen first so omitted names become deferred_by_budget.
A reproducibly generated bounded pool may support a scoped final ranking when:
candidate-pool generation audit is valid
candidate_pool_exhausted = true
all_rows_resolved = true
unresolved_count = 0
queue_count = 0
all selected symbols have verified candidate records
strict final evaluation passesLabel the conclusion scope, such as stratified_discovery_pool or provider_prefilter. Do not imply that unexamined market listings were economically screened.
A market-wide no-candidates conclusion requires all of the above plus full in-scope economic coverage:
conclusion_scope = full_listing_universe
candidate_pool covers every in-scope listing
in_scope_missing_count = 0
at least one row was economically assessable
selected_symbols = []A bounded pool may conclude only:
no qualifying candidates in the audited bounded poolIt must not claim that the entire US small/mid-cap market has no qualifying company.
Read references/autonomous-execution.md before a live minimal-request run.
Use this skill to:
Do not use it for:
us-stock-analysis.requests for the generated direct-FMP client; deterministic evaluation and audit scripts otherwise use the standard library.FMP_API_KEY in the environment for Claude Code direct mode. Never commit or print the key.reports/ and .cache/ directories.Unless the user specifies otherwise:
deferred_by_budget.For a minimal request, the user-requested market-cap scope is always USD 500M–20B. Never rewrite the run config so a convenient 3–4B band becomes the requested scope. Record user_requested_scope and executed_scope separately. A narrower executed scope is incomplete unless the user explicitly requested it; context or tool-budget pressure is not authorization. Stream listing pages/bands to JSONL rather than loading every row into the conversation context.
Never calculate ADDV from one session's volume. Candidate generation requires a provider average-dollar-volume measure or price × average_volume with an explicit averaging window of at least 20 trading days and source IDs. Rows lacking valid average-liquidity evidence remain needs_enrichment and cannot enter the discovery pool.
A current P/E must be explicitly NTM or FY1 and must reconcile to a positive current forward EPS, price, fiscal-year/period metadata, estimate date, analyst count, and source IDs. Generic outer-year P/E values are invalid. A missing FY1/NTM row, a range crossing zero, or extreme forecast dispersion sends the name to enrichment or unavailable_after_enrichment; it must never appear as a low-P/E selection.
Do not let one global score fill the research budget with a single style or sector. Allocate the default five deep dives across these lanes when qualifying names exist:
Backfill unused slots by deterministic priority and limit selections to two per sector when alternatives exist. Report each selected name's selection_lane. The LLM may explain these decisions but may not replace them with ad hoc cutoffs.
A name that passes the upside test is not automatically eligible. Formal ranking also requires:
One or two ordinary failures may produce conditional; severe FCF or LOE failures and broader weakness produce review_required. Never label a low-P/E/high-EV-FCF transition story as a formal winner merely because average-consensus EPS implies 30% upside.
Every ranked year-2/year-3 bridge must use construction_method=independent_driver_model. Each revenue, margin, interest, tax, share-count, FCF, and adjustment driver needs an origin and source IDs. Mark any driver solved backwards from target EPS with target_solved=true; this fails the bridge. A residual adjustment that merely forces the model to consensus is not independent validation.
The final report is not publishable until prepublish_audit.py verifies all referenced audit files, counts, hashes, scenario arithmetic, candidate statuses, final-three labels, and absence of unfinished-run language. Package the entire run directory with bundle_run_artifacts.py; a ZIP containing only Markdown/JSON summaries is incomplete.
Run one local command:
python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
--config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
--output-dir reports/us-undervalued-growth-screenerThe generated FMP client reuses the repository's central scripts/fmp_client/ source-of-truth pattern. It writes raw responses and a persistent SQLite cache to disk. Do not paste or read the raw provider trees into the language-model context. Read only run-summary.json, NEXT_ACTION.json, audit/broad-screen-audit.json, and the compact packets under candidate-packets/.
For a market-wide run on a plan without bulk estimates, collect every frozen universe shard first, then screen the verified snapshot:
python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
--stage collect-estimates --shard-index 0 --shard-count 8 \
--snapshot-dir .cache/us-garp/snapshot-current \
--config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
--resume
python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
--stage screen-full-snapshot \
--snapshot-dir .cache/us-garp/snapshot-current \
--config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
--output-dir reports/us-undervalued-growth-screenerRun each shard once without --resume; use --resume only to continue an
existing partial shard. Both collection and screening are current-only:
collection fixes the estimate-normalization basis, while screening adds exact
liquidity and TTM quality evidence. The first collection binds the exhausted
listing-enumeration audit into the snapshot manifest. Screening performs a
read-only content/freshness preflight before creating provider or run
artifacts, carries a digest binding the enumeration proof and every verified
shard into downstream audits, backfills liquidity failures until 50 valid
names or full eligible exhaustion, and commits five probed deep-dive names. Read
references/full-universe-snapshot.md for the full collection and screening
contract.
If the provider call budget is exhausted during screen enrichment, the command
exits 2 and writes audit/partial-run-diagnostic.json plus
audit/enriched-estimates.partial.jsonl. The diagnostic is the last atomic
commit marker and records the snapshot ID/digest, stage, deterministic
attempted/completed/pending/interrupted symbols, interrupted provider
operation, provider counters, and hashes for the partial artifacts. Read a
partial artifact only when that marker exists and its recorded hashes and row
counts verify; a missing or mismatched marker makes the partial output
non-authoritative. screen-full-snapshot has no --resume: rerun the same
verified snapshot after restoring the provider budget, allowing new cache/raw
records from successful calls and reusing existing cache/raw data without
deleting or rewriting it. A packet-stage budget failure also marks
broad-screen-audit.json incomplete/diagnostic, clears all nested selection
commitment fields, and rewrites all broad-screen rows (including rejected
rows) to deferred_by_budget with selection eligibility disabled. The original
decision is preserved in prior_decision, and original top-level selection
fields in prior_selection; these archives are audit-only, never selection
authority, and repeated invalidation retains the first archive. Neither the
audit nor any partial output is a final market-wide conclusion. Quality-probe
calls_used and actual_eps_calls count FMP provider-budget units: cached or
unsent calls cost zero, and consumed retry responses remain counted. Each retry uses a new empty run directory. The CLI adds a unique
attempt suffix and keeps raw responses in a sibling attempt directory, while
direct callers must not reuse a non-empty output directory.
The direct runner first attempts bulk ratios, key metrics, estimate, and EOD datasets. It falls back to bounded per-symbol enrichment only when bulk access is unavailable; a plan-gated (402/403) bulk endpoint is remembered in the cache for 30 days so later runs do not spend calls re-probing it. On the fallback path the estimate seed is a stratified sector × market-cap sample (√-weighted Hamilton quota, liquidity-ranked within cells, hash tie-break) whose size is derived from the remaining call budget; audit/seed-audit.json states the selection basis. Before pool selection, the top lane candidates receive a key-metrics-ttm quality probe (ROIC, FCF yield, EV/FCF, leverage, SBC) and a probe-resolved row with SBC-adjusted FCF yield below 1% cannot enter any lane except high_growth_exception. Exact 20-day ADDV work is prioritized by the four economic lanes, not by ticker order. Read references/claude-code-execution.md and references/migration-v3.6-to-v3.6.1.md for the full execution contract.
Collect only fields suitable for broad coverage:
Do not substitute a share-volume floor for an ADDV threshold. If an API can filter only by share volume, fetch broadly, calculate price × average volume, and apply the dollar-liquidity rule locally.
Target at least 95% listing-field completeness. Prove enumeration using provider totals and exhausted pagination or exhausted gap-free market-cap bands. Matching only the requested lower and upper market-cap endpoints is not proof of completeness.
Choose the best route in this order:
build_provider_prefilter_pool.py. Retrieve broad rows separately for core GARP, P/E 21–30 high growth, low-P/E quality near misses, and cyclicals requiring normalization; union and audit the lanes instead of using one narrow P/E≤20 + revenue≥8% + low-cycle query.build_discovery_pool.py, followed by enrichment.For a bounded live run, target at least 30 resolved pool rows and at least three represented lanes unless the provider is demonstrably exhausted. A smaller convenience pool may be diagnostic but should not be described as a high-recall GARP search.
State the economic scope honestly. run-summary.json separates listing_enumeration_complete from economic_screen_scope_complete and reports estimate_seed_coverage_pct / valid_estimate_coverage_pct; on the bounded per-symbol fallback path the economic scope is never complete and the discovery audit records provider_exhausted_scope: estimate_seed. Describe such a result as "N seeded names evaluated with consensus estimates", never as a market-wide conclusion. Only screen-full-snapshot with a deeply verified full-universe classification and bound verification digest may emit final_marketwide on the per-symbol route.
Do not stop because a TTM or statement endpoint is plan-gated. Switch routes automatically.
guideline_misses.screen_fail_reasons only for severe disqualifiers such as non-positive standard FCF when required, negative ROIC, excessive leverage, extreme valuation unsupported by growth, or negative forward growth.near_miss_review when valuation is attractive and per-share growth remains credible despite a soft revenue-growth miss.mid_cycle_normalization_required; do not automatically reject the row.peak_profit_risk=true, require normalization regardless of the numeric cyclicality score.For selected symbols only, verify material facts with SEC filings and company IR. Vendors may supply discovery and consensus data, but primary sources must support actual revenue, cash flow, debt, shares, SBC, guidance, corporate actions, and accounting adjustments whenever available.
Use this hierarchy:
Every source requires:
unique source ID
tier and kind
publication timestamp
retrieval timestamp
data_as_of when different
URL
non-empty supports[] arrayOfficial-source labels must match official domains. A third-party transcript is never company IR. Dynamic market fields are tested against their underlying data date, not just retrieval time.
Use:
standard FCF = operating cash flow − capex cash outflowCapex is a positive cash outflow. Build TTM cash flow through one documented method:
Every component period must have resolving source IDs. Do not double-count cumulative 10-Q cash-flow values.
For ordinary operating companies, normalize reported cash and equivalents to corporate_cash; separately identify eligible marketable securities. For payments, custodial, marketplace, broker, or money-movement businesses, explicitly separate corporate cash from settlement/customer funds and restricted cash. Enterprise value and net debt use only shareholder-available cash.
Do not validate a forecast by dividing a numerator that was merely set equal to EPS × shares.
For EPS, independently reconstruct:
forecast operating income = forecast revenue × forecast operating margin
forecast pretax income = operating income + net interest/other income
forecast GAAP net income = pretax income × (1 − tax rate)
forecast adjusted net income = GAAP net income + sourced after-tax adjustments
forecast EPS = forecast net income ÷ forecast diluted sharesFor FCF per share, derive standard FCF from OCF and capex or a fully sourced revenue/FCF-margin model, then divide by forecast diluted shares.
The driver result must tie to the claimed metric within tolerance. Supplied numerator/denominator fields are cross-checks only. Adjusted periods must also tie the driver-derived GAAP metric and after-tax adjustments to the GAAP reconciliation.
Store the basis separately for current, year 2, and year 3. Mixed bases block the formal scenario. Recurrent “one-time” exclusions, SBC, acquisition costs, and intangible amortization must be described and reflected in quality/risk assessment.
ROIC and EBITDA used in scoring or leverage calculations require source-linked inputs or a transparent analyst calculation. Missing evidence caps data quality and blocks an unsupported 100 score.
Normalize aliases such as biopharma, pharma, biotechnology, royalty_biopharma, and drug_delivery_platform to commercial_biopharma when the company has commercial product/royalty exposure.
Require:
Missing structural-risk evidence produces review_required and a quality cap.
If cyclicality is 3–5 or peak_profit_risk=true, require a sourced normalization object with mid-cycle revenue/margin/EPS/FCF or a documented reason the current economics are sustainable. A risk flag without normalization is not enough for eligible.
For Claude Code, start with the direct runner above. It creates the run directory, listing and candidate-pool audits, compact candidate packets, run-summary.json, and NEXT_ACTION.json. Follow NEXT_ACTION.json without asking the user for confirmation. The manual commands below remain the fallback for hosts that cannot execute direct HTTP code.
reports/us-undervalued-growth-screener/<run-id>/
├── market-context.json
├── global-sources.json
├── universe.jsonl
├── discovery/
├── broad-screen/
├── run/
└── final/Never copy values, URLs, dates, source IDs, or tickers from synthetic example assets into a live run.
Keep the original user-requested scope in the run contract. If bulk economics are unavailable, build a bounded discovery pool from the fully audited listing universe without narrowing the requested market-cap range. Every listing row used for pool generation must carry validated provider-average or 20+ trading-day liquidity evidence.
When provider screening is available, save one JSONL per lane and combine them deterministically:
python3 skills/us-undervalued-growth-screener/scripts/build_provider_prefilter_pool.py \
--universe reports/us-undervalued-growth-screener/<run-id>/universe.jsonl \
--lane core_garp=reports/us-undervalued-growth-screener/<run-id>/provider/core.jsonl \
--lane high_growth_exception=reports/us-undervalued-growth-screener/<run-id>/provider/high-growth.jsonl \
--lane quality_near_miss=reports/us-undervalued-growth-screener/<run-id>/provider/near-miss.jsonl \
--lane cyclical_normalization=reports/us-undervalued-growth-screener/<run-id>/provider/cyclical.jsonl \
--output-dir reports/us-undervalued-growth-screener/<run-id>/provider \
--analysis-as-of <ISO-8601> \
--source-id <provider-source-id> \
--per-lane 15 --max-pool 60 --minimum-pool 30Use the emitted provider-prefilter-audit.json as --discovery-audit and provider-prefilter-pool.jsonl as the candidate pool.
python3 skills/us-undervalued-growth-screener/scripts/build_discovery_pool.py \
--input reports/us-undervalued-growth-screener/<run-id>/universe.jsonl \
--output-dir reports/us-undervalued-growth-screener/<run-id>/discovery \
--source-id <listing-source-id> \
--min-market-cap 500000000 \
--max-market-cap 20000000000 \
--user-requested-min-market-cap 500000000 \
--user-requested-max-market-cap 20000000000 \
--max-pool 120 \
--per-cell 3Normalize dated annual consensus rows before Broad Screen. --estimate-as-of is mandatory. A company without a resolving NTM/FY1 row keeps its raw outer-year data only for diagnostics and becomes unavailable or remains in enrichment; it cannot receive a current Forward P/E.
python3 skills/us-undervalued-growth-screener/scripts/normalize_estimates.py \
--estimates reports/us-undervalued-growth-screener/<run-id>/discovery/raw-annual-estimates.jsonl \
--listing-input reports/us-undervalued-growth-screener/<run-id>/discovery/discovery-pool.jsonl \
--analysis-as-of <ISO-8601> \
--estimate-as-of <ISO-8601> \
--source-id <estimate-source-id> \
--output reports/us-undervalued-growth-screener/<run-id>/discovery/enriched-candidate-pool.jsonlMerge the normalized estimate rows into the bounded pool, then run screen_universe.py. Supply explicit retrieval bounds and listing enumeration proof. Pass the generation audit with --discovery-audit.
python3 skills/us-undervalued-growth-screener/scripts/screen_universe.py \
--input reports/us-undervalued-growth-screener/<run-id>/universe.jsonl \
--candidate-pool reports/us-undervalued-growth-screener/<run-id>/discovery/enriched-candidate-pool.jsonl \
--discovery-audit reports/us-undervalued-growth-screener/<run-id>/discovery/discovery-audit.json \
--output-dir reports/us-undervalued-growth-screener/<run-id>/broad-screen \
--analysis-as-of <ISO-8601> \
--source-id <listing-source-id> \
--candidate-source-id <estimate-source-id> \
--candidate-generation-mode liquidity_stratified_estimates \
--retrieval-min-market-cap 500000000 \
--retrieval-max-market-cap 20000000000 \
--user-requested-min-market-cap 500000000 \
--user-requested-max-market-cap 20000000000 \
--provider-reported-total <count> \
--pages-fetched <count> \
--pagination-exhausted \
--config skills/us-undervalued-growth-screener/assets/screening-config.example.json \
--max-deep-dives 5If the command exits 2, inspect enrichment-queue.json and broad-screen-audit.json, continue enrichment in the same task, and rerun. Pass --candidate-pool-exhausted only after every row is resolved and the generation audit proves the bounded scope.
Initialize and attach the screening audit:
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py init \
--run-dir reports/us-undervalued-growth-screener/<run-id>/run \
--analysis-as-of <ISO-8601> \
--price-as-of <ISO-8601> \
--session regular_close \
--price-source-id <source-id> \
--market-context reports/us-undervalued-growth-screener/<run-id>/market-context.json \
--global-sources reports/us-undervalued-growth-screener/<run-id>/global-sources.json \
--base-commit <git-sha>
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py set-screening-audit \
--run-dir reports/us-undervalued-growth-screener/<run-id>/run \
--audit reports/us-undervalued-growth-screener/<run-id>/broad-screen/broad-screen-audit.json \
--universe-artifact reports/us-undervalued-growth-screener/<run-id>/broad-screen/universe-audit-results.jsonl \
--candidate-artifact reports/us-undervalued-growth-screener/<run-id>/broad-screen/broad-screen-results.jsonlFor every selected symbol:
verified, even when the final candidate status will be review_required, screened_out, or excluded.python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py save-candidate \
--run-dir reports/us-undervalued-growth-screener/<run-id>/run \
--candidate reports/us-undervalued-growth-screener/<run-id>/candidates/<SYMBOL>.json \
--stage verifiedpython3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py set-status \
--run-dir reports/us-undervalued-growth-screener/<run-id>/run \
complete
python3 skills/us-undervalued-growth-screener/scripts/manage_run_state.py assemble \
--run-dir reports/us-undervalued-growth-screener/<run-id>/run \
--output reports/us-undervalued-growth-screener/<run-id>/final/final-snapshot.jsonpython3 skills/us-undervalued-growth-screener/scripts/evaluate_candidates.py \
--input reports/us-undervalued-growth-screener/<run-id>/final/final-snapshot.json \
--artifact-root reports/us-undervalued-growth-screener/<run-id> \
--output-dir reports/us-undervalued-growth-screener/<run-id>/final \
--language ja \
--strict \
--require-finalDo not present a formal result unless the exit code is 0 and the output contains:
contract.valid = true
ranking_status = final
unprocessed_candidates = []
runtime.contract_revision = 3.5Locate the generated final JSON and Markdown, then run:
python3 skills/us-undervalued-growth-screener/scripts/prepublish_audit.py \
--report-json reports/us-undervalued-growth-screener/<run-id>/final/<report>.json \
--report-md reports/us-undervalued-growth-screener/<run-id>/final/<report>.md \
--artifact-root reports/us-undervalued-growth-screener/<run-id> \
--output reports/us-undervalued-growth-screener/<run-id>/final/prepublish-audit.json
python3 skills/us-undervalued-growth-screener/scripts/bundle_run_artifacts.py \
--run-dir reports/us-undervalued-growth-screener/<run-id> \
--report-json reports/us-undervalued-growth-screener/<run-id>/final/<report>.json \
--report-md reports/us-undervalued-growth-screener/<run-id>/final/<report>.md \
--output reports/us-undervalued-growth-screener/<run-id>/final/us-undervalued-growth-screen-<date>.zipBoth commands must exit 0. Present the self-contained ZIP together with the report.
Generate both JSON and Markdown. The Markdown must include:
Never combine a 2Y base case with a 3Y stress case in one unlabeled column.
references/claude-code-execution.md — direct-FMP execution, cache, compact-context, and handoff contract.references/autonomous-execution.md — same-turn execution, fallback, runtime, and completion contract.references/data-contract.md — schema-v3 / contract-v3.5 source, audit, candidate, and output contract.references/methodology.md and methodology-ja.md — financial and investment methodology.references/research-checklist.md — primary-source underwriting checklist.references/scoring-rubric.md — score, penalties, quality caps, and status gates.references/sector-kpis.md — sector valuation/KPI requirements.references/output-template.md — required JSON/Markdown presentation.references/checkpointing.md — atomic save/resume procedure.references/review-regression-matrix.md — observed failures and preventing tests.references/migration-v3.5-to-v3.6.md — Claude Code direct-FMP migration and operating changes.references/migration-v3.4-to-v3.5.md — prior breaking changes and upgrade steps.scripts/skill_version.py — canonical runtime/version constants.scripts/fmp_client.py — generated stable-first FMP client with SQLite cache and raw-artifact storage.scripts/run_pipeline.py — Claude Code-native direct-FMP discovery runner with compact stdout.scripts/build_provider_prefilter_pool.py — audited four-lane provider pool builder.scripts/build_discovery_pool.py — deterministic fallback pool generation with average-liquidity validation.scripts/normalize_estimates.py — identify and validate current NTM/FY1 consensus horizons.scripts/screening_semantics.py — shared fail-closed liquidity and forward-horizon semantics.scripts/screen_universe.py — listing audit and broad-screen engine.scripts/manage_run_state.py — checkpoint and final snapshot manager.scripts/evaluate_candidates.py — deterministic strict evaluator, quality eligibility gate, and report renderer.scripts/prepublish_audit.py — final artifact/count/scenario/prose audit.scripts/bundle_run_artifacts.py — deterministic self-contained audit bundle builder.© tradermonty, 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 71 other files (scripts, references, assets) in skills/us-undervalued-growth-screener of tradermonty/claude-trading-skills.
Open the folder on GitHubat commit eab8d5c
Us Undervalued Growth Screener 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 |
|---|---|---|---|---|---|---|
| Us Undervalued Growth Screener this skilltradermonty/claude-trading-skills | 3k | — | ~9.6k | Automated safety check: Warn | MIT | |
| Coding Trace Rawuw-syfi/TraceLab | 142 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Bio Proteomics Data ImportGPTomics/bioSkills | 1.2k | 1 repos | ~4.5k | Automated safety check: Pass | MIT | |
| Self AwarenessJimLiu/science-skills | 228 | 2 repos | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Bio Rna Structure Structure ProbingGPTomics/bioSkills | 1.2k | 1 repos | ~4.6k | Automated safety check: Pass | MIT | |
| Notion Pmborghei/Claude-Skills | 891 | — | ~1.7k | Automated safety check: Pass | MIT |
uw-syfi/TraceLab
Read and explain raw Claude Code and Codex CLI session logs in this coding-trace repo.
GPTomics/bioSkills
Loads mass-spectrometry data into Python/R and strips the search engine's bookkeeping before any number is trusted -- removes decoys (REV/Reverse), contaminants (CON/Potential contaminant)…
JimLiu/science-skills
Claude Science's own session database schema and SDK surface for introspection via host.query().
GPTomics/bioSkills
Processes experimental RNA structure probing data (SHAPE-MaP, DMS-MaPseq) into per-nucleotide reactivity profiles with ShapeMapper2, then uses them as soft restraints on thermodynamic folding.
borghei/Claude-Skills
Notion expert for product management workflows. An agent skill from borghei/Claude-Skills.
supabase/agent-skills
Gives the agent Postgres rules to consult before writing or changing tables, queries, indexes, RLS policies or migrations, and when diagnosing slow queries.
tradermonty/claude-trading-skills
This skill should be used when analyzing weekly price charts for stocks, stock indices, cryptocurrencies, or forex pairs.
tradermonty/claude-trading-skills
Detect and analyze trending market themes across sectors. An agent skill from tradermonty/claude-trading-skills.
tradermonty/claude-trading-skills
Track investment theses across their lifecycle — from screening idea to closed position with postmortem.
tradermonty/claude-trading-skills
Critically review strategy drafts from edge-strategy-designer for edge plausibility, overfitting risk, sample size adequacy, and execution realism.
tradermonty/claude-trading-skills
This skill should be used when analyzing sector rotation patterns and market cycle positioning.
tradermonty/claude-trading-skills
Druckenmiller Strategy Synthesizer - Integrates 8 upstream skill outputs (Market Breadth, Uptrend Analysis, Market Top, Macro Regime, FTD Detector, VCP Screener, Theme Detector, CANSLIM Screener)…
Categories
Autonomously screen NYSE, Nasdaq, and NYSE American operating-company stocks for undervalued-growth/GARP opportunities using forward same-basis valuation, driver-derived EPS/FCF forecasts…. Us Undervalued Growth Screener is an agent skill from tradermonty/claude-trading-skills. Autonomously screen NYSE, Nasdaq, and NYSE American operating-company stocks for undervalued-growth/GARP opportunities using forward same-basis valuation, driver-derived EPS/FCF forecasts, primary-source financial verification, SBC and dilution controls, sector and cycle normalization, auditable candidate-pool coverage, and fail-closed final reporting.
Us Undervalued Growth Screener fits situations like: refresh US undervalued-growth stocks; including minimal requests with no ticker list.
Run `npx skills add tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a claude-code`. Or copy the skill folder (skills/us-undervalued-growth-screener in tradermonty/claude-trading-skills) into .claude/skills/us-undervalued-growth-screener in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a codex`. Or copy the skill folder (skills/us-undervalued-growth-screener in tradermonty/claude-trading-skills) into .agents/skills/us-undervalued-growth-screener 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 tradermonty/claude-trading-skills --skill us-undervalued-growth-screener -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/us-undervalued-growth-screener, .gemini/skills/us-undervalued-growth-screener, .github/skills/us-undervalued-growth-screener and .opencode/skills/us-undervalued-growth-screener in your project.
Going by SKILL.md and its folder, Us Undervalued Growth Screener needs the command-line tools its instructions call (python3) and credentials named FMP_API_KEY. Our summary lists: Python 3; A credential in FMP_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): tells the agent its actions are pre-authorized / not to stop for confirmation. Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Us Undervalued Growth Screener is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.6k tokens (SKILL.md is roughly 39k 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 52k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Us Undervalued Growth Screener: Coding Trace Raw (uw-syfi/TraceLab, 142 stars), Bio Proteomics Data Import (GPTomics/bioSkills, 1.2k stars), Self Awareness (JimLiu/science-skills, 228 stars) and Bio Rna Structure Structure Probing (GPTomics/bioSkills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tradermonty (a GitHub user) maintains it in tradermonty/claude-trading-skills, which has 2,977 GitHub stars. The repository holds 74 skills in this directory. The repository was last updated on October 9, 2026.
Source: tradermonty/claude-trading-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.