# arnautovd/vibecoding-claudecode-project-388 architecture

> Architecture diagram of the GitHub repository arnautovd/vibecoding-claudecode-project-388, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-02). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/arnautovd/vibecoding-claudecode-project-388
- Repository: https://github.com/arnautovd/vibecoding-claudecode-project-388

## Overview

#### Purpose and Entry Points
This repository is a Claude-oriented automation workspace, not a conventional application. Its primary capability is a GitHub activity tracker that collects repository updates, detects changes, summarizes them, and sends Telegram notifications. A secondary skill extracts product prices from configured websites.

Primary operator instructions and behavior contracts are in:
- `.claude/skills/tracker/SKILL.md`
- `.claude/skills/extract-price/SKILL.md`

#### Tracker Orchestration
The tracker skill defines the workflow, target repositories, state expectations, and interaction with GitHub MCP/API tooling:
- `.claude/skills/tracker/SKILL.md`
- `.claude/skills/tracker/targets.yaml`
- `.claude/skills/tracker/KNOWLEDGE.md`

`targets.yaml` is the tracker’s source of truth for monitored entities. `KNOWLEDGE.md` supplies durable domain/context guidance for interpreting updates rather than merely forwarding raw events.

#### Collection and Change Detection
Collection obtains current GitHub data, while diffing compares snapshots or collected results to identify new/changed items:
- `.claude/skills/tracker/scripts/collect.py`
- `.claude/skills/tracker/scripts/diff.py`
- `.claude/skills/tracker/references/github-mcp.md`

The GitHub MCP integration is an external-service boundary. The rest of the pipeline should consume normalized collection output rather than directly coupling every stage to GitHub queries.

#### Transformation and Presentation
Detected updates are transformed into concise human-readable summaries and tabular views:
- `.claude/skills/tracker/scripts/summarize.py`
- `.claude/skills/tracker/scripts/table.py`

This forms the interpretation boundary: raw repository events become structured change records, then a notification-ready narrative or report. It separates collection/diff semantics from output formatting.

#### Delivery
Tracker output is delivered through a sending layer, including an explicit Telegram notifier:
- `.claude/skills/tracker/scripts/send.py`
- `.claude/skills/tracker/scripts/notify_telegram.py`

Telegram is the principal outbound external service. Delivery should remain downstream of collection, diffing, and summarization so notification failures do not alter source-state analysis.

#### Price Extraction Skill
The price-extraction skill runs a Python scraper/extractor against site-specific configuration:
- `.claude/skills/extract-price/scripts/extract_price.py`
- `.claude/skills/extract-price/scripts/sites/www.regard.ru.yaml`
- `.claude/skills/extract-price/requirements.txt`

The generic extraction runtime is separated from per-site selectors/rules in YAML. Its material boundary is the target retailer website; site changes should normally be handled in the site configuration before changing extraction logic.

#### Runtime and Automation
Python is the material execution runtime for both skills. Dependencies for the extraction workflow are declared separately in its requirements file. GitHub Actions provides repository validation/CI:
- `.github/workflows/hexlet-check.yml`
- `.github/workflows/README.md`

There is no evidenced deployed server, database, or web frontend. The repository is driven by skill instructions plus scripts, with GitHub/MCP as an input integration and Telegram as an output integration.

Main entry points: [`.claude/skills/tracker/scripts/collect.py`](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/collect.py) (Collect updates), [`.claude/skills/extract-price/scripts/extract_price.py`](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/scripts/extract_price.py) (Extract price), [`.claude/skills/tracker/SKILL.md`](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/SKILL.md) (Tracker instructions), [`.claude/skills/tracker/scripts/diff.py`](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/diff.py) (Detect changes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_tracker["GitHub Tracker"]
  node_tracker_skill["Tracker instructions<br/>skill contract<br/>[SKILL.md]"]
  node_targets["Monitored targets<br/>target registry<br/>[targets.yaml]"]
  node_knowledge["Tracker knowledge<br/>domain guidance<br/>[KNOWLEDGE.md]"]
  node_github_mcp{{"GitHub MCP/API<br/>external integration<br/>[github-mcp.md]"}}
  node_collect["Collect updates<br/>Python collector<br/>[collect.py]"]
  node_diff["Detect changes<br/>Python diff<br/>[diff.py]"]
  node_summarize["Summarize changes<br/>Python transformer<br/>[summarize.py]"]
  node_table["Render table<br/>Python formatter<br/>[table.py]"]
  node_send["Send output<br/>delivery layer<br/>[send.py]"]
  node_telegram_notifier["Telegram notifier<br/>Telegram adapter<br/>[notify_telegram.py]"]
  node_telegram{{"Telegram<br/>external service"}}
end

subgraph group_price["Price Extraction"]
  node_price_skill["Price extraction instructions<br/>skill contract<br/>[SKILL.md]"]
  node_extract_price["Extract price<br/>Python scraper<br/>[extract_price.py]"]
  node_regard_config["Regard site rules<br/>site configuration<br/>[www.regard.ru.yaml]"]
  node_retailer{{"Retailer website<br/>external website"}}
end

subgraph group_automation["Runtime &amp; Validation"]
  node_requirements["Extraction dependencies<br/>Python dependencies<br/>[requirements.txt]"]
  node_ci["GitHub Actions validation<br/>CI workflow<br/>[hexlet-check.yml]"]
  node_ci_docs["CI documentation<br/>workflow guidance<br/>[README.md]"]
end

node_tracker_skill -->|"reads"| node_targets
node_tracker_skill -->|"uses"| node_knowledge
node_tracker_skill -->|"orchestrates"| node_collect
node_targets -->|"defines queries"| node_collect
node_github_mcp -->|"supplies activity"| node_collect
node_collect -->|"normalized results"| node_diff
node_diff -->|"change records"| node_summarize
node_knowledge -->|"interpretation context"| node_summarize
node_diff -->|"change records"| node_table
node_summarize -->|"notification narrative"| node_send
node_table -->|"report view"| node_send
node_send -->|"routes delivery"| node_telegram_notifier
node_telegram_notifier -->|"sends"| node_telegram
node_price_skill -->|"runs"| node_extract_price
node_regard_config -->|"site rules"| node_extract_price
node_retailer -->|"page data"| node_extract_price
node_requirements -.->|"declares dependencies"| node_extract_price
node_ci_docs -.->|"documents"| node_ci

click node_tracker_skill "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/SKILL.md"
click node_targets "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/targets.yaml"
click node_knowledge "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/KNOWLEDGE.md"
click node_github_mcp "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/references/github-mcp.md"
click node_collect "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/collect.py"
click node_diff "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/diff.py"
click node_summarize "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/summarize.py"
click node_table "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/table.py"
click node_send "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/send.py"
click node_telegram_notifier "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/notify_telegram.py"
click node_price_skill "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/SKILL.md"
click node_extract_price "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/scripts/extract_price.py"
click node_regard_config "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/scripts/sites/www.regard.ru.yaml"
click node_requirements "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/requirements.txt"
click node_ci "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.github/workflows/hexlet-check.yml"
click node_ci_docs "https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.github/workflows/README.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_tracker_skill,node_targets,node_knowledge,node_github_mcp,node_collect,node_diff,node_summarize,node_table,node_send,node_telegram_notifier,node_telegram toneBlue
class node_price_skill,node_extract_price,node_regard_config,node_retailer toneAmber
class node_requirements,node_ci,node_ci_docs toneMint
```

## Components

### GitHub Tracker

Skill-driven repository activity pipeline.

- [Tracker instructions](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/SKILL.md): skill contract · Defines workflow, state expectations, and operator behavior. · `.claude/skills/tracker/SKILL.md`
- [Monitored targets](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/targets.yaml): target registry · Source of truth for monitored GitHub entities. · `.claude/skills/tracker/targets.yaml`
- [Tracker knowledge](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/KNOWLEDGE.md): domain guidance · Context for interpreting repository updates. · `.claude/skills/tracker/KNOWLEDGE.md`
- [GitHub MCP/API](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/references/github-mcp.md): external integration · `.claude/skills/tracker/references/github-mcp.md`
- [Collect updates](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/collect.py): Python collector · Normalizes current GitHub activity. · `.claude/skills/tracker/scripts/collect.py`
- [Detect changes](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/diff.py): Python diff · Compares collected results or snapshots. · `.claude/skills/tracker/scripts/diff.py`
- [Summarize changes](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/summarize.py): Python transformer · Turns change records into concise narratives. · `.claude/skills/tracker/scripts/summarize.py`
- [Render table](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/table.py): Python formatter · Produces tabular update views. · `.claude/skills/tracker/scripts/table.py`
- [Send output](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/send.py): delivery layer · Dispatches prepared tracker output. · `.claude/skills/tracker/scripts/send.py`
- [Telegram notifier](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/tracker/scripts/notify_telegram.py): Telegram adapter · `.claude/skills/tracker/scripts/notify_telegram.py`
- **Telegram**: external service · Principal notification destination.

### Price Extraction

Configurable retailer price scraper.

- [Price extraction instructions](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/SKILL.md): skill contract · `.claude/skills/extract-price/SKILL.md`
- [Extract price](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/scripts/extract_price.py): Python scraper · Runs generic extraction against site rules. · `.claude/skills/extract-price/scripts/extract_price.py`
- [Regard site rules](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/scripts/sites/www.regard.ru.yaml): site configuration · Selectors and rules for the retailer. · `.claude/skills/extract-price/scripts/sites/www.regard.ru.yaml`
- **Retailer website**: external website

### Runtime & Validation

- [Extraction dependencies](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.claude/skills/extract-price/requirements.txt): Python dependencies · `.claude/skills/extract-price/requirements.txt`
- [GitHub Actions validation](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.github/workflows/hexlet-check.yml): CI workflow · `.github/workflows/hexlet-check.yml`
- [CI documentation](https://github.com/arnautovd/vibecoding-claudecode-project-388/blob/main/.github/workflows/README.md): workflow guidance · `.github/workflows/README.md`

## Connections

- Tracker instructions → Monitored targets: reads
- Tracker instructions → Tracker knowledge: uses
- Tracker instructions → Collect updates: orchestrates
- Monitored targets → Collect updates: defines queries
- GitHub MCP/API → Collect updates: supplies activity
- Collect updates → Detect changes: normalized results
- Detect changes → Summarize changes: change records
- Tracker knowledge → Summarize changes: interpretation context
- Detect changes → Render table: change records
- Summarize changes → Send output: notification narrative
- Render table → Send output: report view
- Send output → Telegram notifier: routes delivery
- Telegram notifier → Telegram: sends
- Price extraction instructions → Extract price: runs
- Regard site rules → Extract price: site rules
- Retailer website → Extract price: page data
- Extraction dependencies → Extract price: declares dependencies
- CI documentation → GitHub Actions validation: documents
