This skill should be used when analyzing weekly price charts for stocks, stock indices, cryptocurrencies, or forex pairs. Use this skill when the user provides chart images and requests technical analysis, trend identification, support/resistance levels, scenario planning, or probability assessments based purely on chart data without consideration of news or fundamental factors.
This skill enables comprehensive technical analysis of weekly price charts. Analyze chart images to identify trends, support and resistance levels, moving average relationships, volume patterns, and develop probabilistic scenarios for future price movement. All analysis is conducted objectively using only chart data, without influence from news, fundamentals, or market sentiment.
This skill generates markdown analysis reports saved to the reports/ directory:
[SYMBOL]_technical_analysis_[YYYY-MM-DD].mdWhen the user provides one or more weekly chart images for analysis:
Before beginning analysis, read the comprehensive technical analysis methodology:
Read: references/technical_analysis_framework.mdThis reference contains detailed guidance on:
For each chart image, conduct a systematic analysis following this sequence:
For each analyzed chart, create 2-4 distinct scenarios for future price movement:
Each scenario must include:
Adjust probabilities based on strength of supporting technical factors. Ensure probabilities are realistic and sum to 100%.
For each chart analyzed, create a comprehensive markdown report using the template structure:
Read and use as template: assets/analysis_template.mdThe report must include all sections:
File Naming Convention: Save each analysis as [SYMBOL]_technical_analysis_[YYYY-MM-DD].md
Example: SPY_technical_analysis_2025-11-02.md
If multiple charts are provided:
Do not batch analyses. Complete and save each report before moving to the next chart.
Example 1: Single Chart Analysis
User: "Please analyze this weekly chart of the S&P 500"
[Provides chart image]
Analyst:
1. Confirms receipt of chart image
2. Reads technical_analysis_framework.md for methodology
3. Conducts systematic analysis (trend, S/R, MA, volume, patterns)
4. Develops 3 scenarios with probabilities (e.g., 55% bullish continuation, 30% consolidation, 15% reversal)
5. Generates comprehensive analysis report using template
6. Saves as SPY_technical_analysis_2025-11-02.mdExample 2: Multiple Chart Analysis
User: "Analyze these three charts: Bitcoin, Ethereum, and Nasdaq"
[Provides 3 chart images]
Analyst:
1. Confirms receipt of 3 charts
2. Reads technical_analysis_framework.md
3. Analyzes Bitcoin chart completely → Generates report → Saves as BTC_technical_analysis_2025-11-02.md
4. Analyzes Ethereum chart completely → Generates report → Saves as ETH_technical_analysis_2025-11-02.md
5. Analyzes Nasdaq chart completely → Generates report → Saves as NDX_technical_analysis_2025-11-02.md
6. Notifies user that all three analyses are completeExample 3: Focused Analysis Request
User: "I'm particularly interested in whether this stock will break above resistance. Analyze the chart."
[Provides chart image]
Analyst:
1. Conducts full systematic analysis
2. Pays special attention to resistance levels and breakout probability
3. Develops scenarios with emphasis on breakout vs. rejection possibilities
4. Assigns probabilities based on volume, trend strength, and proximity to resistance
5. Generates complete report with focused scenario analysisThis is an ADDITIVE mode, separate from the pure chart-analysis workflow
above. It activates only on an explicit contrarian-confirmation request —
typically after cot-contrarian-detector (step 1) has flagged a market
crowded and, optionally, news-reaction-failure-analyzer (step 2) has
shown it failed to react to favorable news. A plain "analyze this chart"
request still runs the original workflow (Steps 1-6 above) unchanged.
Confirm whether the WEEKLY chart is showing price-action evidence that a
crowded market is reversing: a weekly key reversal, an intraweek failed
extreme, or a confirmed-then-rejected failed breakout — vetoed by a
continuation check (a new closing extreme in the crowd's direction more
recent than any signal found). See
references/contrarian-confirmation-checklist.md for the full,
word-for-word methodology shared by both chart mode and script mode.
CROWDED_LONG or CROWDED_SHORT — from the user,
or from a prior cot-contrarian-detector report.scripts/check_weekly_price_action.py
when no chart is supplied, or when an auditable, deterministic result is
wanted instead of (or alongside) a visual read.week_of is the FAILURE week, never the breakout
week.stop_reference — the nearest
swing high when fading a crowded LONG, the nearest swing low when
fading a crowded SHORT.Every comparison is a STRICT inequality; window truncation is
per-evaluated-week, not per-run. Full definitions, the direction-mirror
table, worked examples, and the confidence-HIGH rule are in
references/contrarian-confirmation-checklist.md — read it before
producing a chart-mode verdict, so chart and script judge identically.
symbol: BT
direction: CROWDED_LONG
mode: data # "chart" for a Claude chart-image read
verdict: CONFIRMED | NOT_CONFIRMED | INSUFFICIENT_DATA
confidence: HIGH | MEDIUM | LOW # LOW reserved, never emitted in v1
verdict_reason: key_reversal | failed_extreme | failed_breakout |
continuation_intact | no_reversal_evidence |
insufficient_weekly_bars | no_price_source | ...
checks:
weekly_key_reversal:
{ triggered, week_of, swing_window_weeks_used,
extreme_window_weeks_used, is_full_window_extreme, detail }
failed_extreme: { triggered, attempted_level, week_of, window_weeks_used, detail }
failed_breakout: { triggered, breakout_level, week_of, window_weeks_used, detail }
continuation: { new_closing_extreme_with_crowd, week_of, window_weeks_used }
swing_levels:
nearest_swing_high: { price, week_of, fallback }
nearest_swing_low: { price, week_of, fallback }
stop_reference: 0.0
weekly_bars_used: 52
last_completed_week: 2026-07-06
handoff: # consumed by contrarian-setup-gate (#241)
price_action: { verdict, confidence, stop_reference, report_path }
run_context:
{
price_symbol,
price_source,
proxy_used,
as_of,
lookbacks,
recency,
min_weeks,
detector_json,
detector_age_days,
schema_version,
}Invariant: checks (and swing_levels) is null whenever
verdict: INSUFFICIENT_DATA — regardless of the specific reason
(no_price_source, insufficient_weekly_bars, a detector-json refusal,
...). A downstream consumer can check verdict alone before deciding
whether checks.* is safe to read, without branching on
verdict_reason.
File naming: ta_confirmation_<SYMBOL>_<as-of>.json and
ta_confirmation_<SYMBOL>_<as-of>.md, saved to reports/.
Chart images remain the PRIMARY input, consistent with this skill's identity. Run the script instead of (or alongside) a chart read when no chart is supplied, or when an auditable, deterministic result is preferred:
python3 skills/technical-analyst/scripts/check_weekly_price_action.py \
--symbol BT --direction CROWDED_LONG --as-of 2026-07-15 \
--output-dir reports/Or resolve direction from a cot-contrarian-detector report directly:
python3 skills/technical-analyst/scripts/check_weekly_price_action.py \
--symbol BT --detector-json reports/cot_crowding_2026-07-12.json \
--as-of 2026-07-15 --output-dir reports/The script fetches weekly-resampled OHLC via a documented futures-to-ETF
fallback chain (see the module docstring in
scripts/check_weekly_price_action.py), truncates daily bars to --as-of
BEFORE resampling (no lookahead), and fails closed to
INSUFFICIENT_DATA — never a crash — on an unreadable (missing file),
syntactically invalid, stale, or structurally malformed --detector-json,
too little price history (--min-weeks, default 30), or no usable price
source.
If both chart mode and script mode produce a result for the same
symbol/direction and their verdicts DISAGREE, the final verdict is
NOT_CONFIRMED (verdict_reason: mode_disagreement), with both
sub-results attached for review — never silently prefer one mode. If one
mode is INSUFFICIENT_DATA and the other is a clean verdict, the clean
verdict stands.
position-sizer / futures-position-sizer, not this mode.INSUFFICIENT_DATA never advances the pipeline — fail-closed on
every degraded input, always exits 0 with a report written.references/contrarian-confirmation-checklist.md.This skill includes the following bundled resources:
Comprehensive methodology for technical analysis including:
Usage: Read this file before conducting analysis to ensure systematic, objective approach.
Structured template for technical analysis reports with all required sections.
Usage: Use this template structure for every analysis report. Copy the format and populate with specific findings for each chart.
Full methodology for Contrarian Confirmation Mode (Shapiro Step 3): direction convention, window/truncation rules, the 3 signal checks + continuation veto, swing-level (fractal pivot) rules, verdict synthesis, confidence rules, the output contract, a chart-mode walkthrough, and the conservative disagreement rule.
Usage: Read this file before producing a Contrarian Confirmation Mode
verdict — chart mode and scripts/check_weekly_price_action.py must judge
identically, so the same strict definitions apply to both.
Data-driven fallback CLI for Contrarian Confirmation Mode. Fetches
weekly-resampled OHLC (documented futures-to-ETF fallback chain,
--as-of information cutoff applied before resampling), runs the 3
signal checks + continuation veto + swing-level detection, and writes
ta_confirmation_<SYMBOL>_<as-of>.json/.md to reports/.
Usage: Run when no chart image is supplied, or when an auditable, deterministic result is wanted. See the Contrarian Confirmation Mode section above for invocation examples.
62a1635
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.