{"id":"fa0533f7-9590-4cb0-bc4e-17e500b5457e","entityType":"agent","slug":"clawhub-jeminay-leetify","name":"Leetify","canonicalUrl":"https://www.xpersona.co/agent/clawhub-jeminay-leetify","canonicalPath":"/agent/clawhub-jeminay-leetify","generatedAt":"2026-10-10T13:32:27.232Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":null},"description":"Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo... Skill: Leetify Owner: jeminay Summary: Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-02-20T05:56:10.497Z | user Complete rewrite of SKILL.md to remove unicode control chars and neutralise model instructions v1.0.3 | 2026-02-20T05:51:41.309Z | user Fix ang","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170dx4nw2adr8scv090bb28dd84pbe2:leetify","sourceUrl":"https://clawhub.ai/jeminay/leetify","homepage":"https://clawhub.ai/jeminay/skills/leetify","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/jeminay/leetify","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/jeminay/skills/leetify","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":null},"stars":null,"forks":null,"downloads":1465,"packageName":null,"latestVersion":"1.0.4","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T11:27:45.543Z","lastCrawledAt":"2026-10-10T11:27:45.543Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T11:27:45.543Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.4","createdAt":"2026-02-20T05:56:10.497Z","changelog":"Complete rewrite of SKILL.md to remove unicode control chars and neutralise model instructions","fileCount":14,"zipByteSize":26241},{"version":"1.0.3","createdAt":"2026-02-20T05:51:41.309Z","changelog":"Fix angle brackets in description","fileCount":13,"zipByteSize":26948},{"version":"1.0.2","createdAt":"2026-02-20T05:51:25.749Z","changelog":"Remove special characters and fix path/dependency issues","fileCount":13,"zipByteSize":26949},{"version":"1.0.1","createdAt":"2026-02-20T05:51:06.462Z","changelog":"Fix metadata, hardcoded paths, and missing compare_players.py","fileCount":13,"zipByteSize":26996},{"version":"1.0.0","createdAt":"2026-02-20T05:43:51.671Z","changelog":"- Initial release of leetify skill for retrieving and analyzing CS2/CS:GO player stats from the Leetify API. - Supports user-friendly Telegram username → Steam ID mapping. - Provides commands to fetch player statistics, match details, and clan season summaries without demo downloads for basic queries. - Enables in-depth demo analysis on explicit user request, with structured, emoji-rich reports and actionable recommendations. - Incorporates strict guidelines for demo analysis workflow, emphasizing objective feedback and proper position naming. - Includes management tools for Steam IDs and detailed analysis workflow instructions.","fileCount":12,"zipByteSize":26599}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170dx4nw2adr8scv090bb28dd84pbe2:leetify","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T13:32:27.230Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jeminay-leetify/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":null},"readme":"Skill: Leetify\n\nOwner: jeminay\n\nSummary: Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo...\n\nTags: latest:1.0.4\n\nVersion history:\n\nv1.0.4 | 2026-02-20T05:56:10.497Z | user\n\nComplete rewrite of SKILL.md to remove unicode control chars and neutralise model instructions\n\nv1.0.3 | 2026-02-20T05:51:41.309Z | user\n\nFix angle brackets in description\n\nv1.0.2 | 2026-02-20T05:51:25.749Z | user\n\nRemove special characters and fix path/dependency issues\n\nv1.0.1 | 2026-02-20T05:51:06.462Z | user\n\nFix metadata, hardcoded paths, and missing compare_players.py\n\nv1.0.0 | 2026-02-20T05:43:51.671Z | auto\n\n- Initial release of leetify skill for retrieving and analyzing CS2/CS:GO player stats from the Leetify API.\n- Supports user-friendly Telegram username → Steam ID mapping.\n- Provides commands to fetch player statistics, match details, and clan season summaries without demo downloads for basic queries.\n- Enables in-depth demo analysis on explicit user request, with structured, emoji-rich reports and actionable recommendations.\n- Incorporates strict guidelines for demo analysis workflow, emphasizing objective feedback and proper position naming.\n- Includes management tools for Steam IDs and detailed analysis workflow instructions.\n\nArchive index:\n\nArchive v1.0.4: 14 files, 26241 bytes\n\nFiles: data/steam_ids.json (3b), scripts/analyze_last_demo.py (47100b), scripts/compare_by_username.sh (1112b), scripts/compare_players.py (877b), scripts/format_profile.py (5700b), scripts/get_match_details.sh (357b), scripts/get_stats_by_username.sh (669b), scripts/match_details.py (3552b), scripts/profile_with_stats.py (1602b), scripts/season_stats.py (4861b), scripts/steam_ids.py (5326b), skill-card.md (2350b), SKILL.md (2636b), _meta.json (126b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: leetify\ndescription: Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo analysis.\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"requires\":\n          {\n            \"env\": [\"LEETIFY_API_KEY\"],\n            \"bins\": [\"python3\", \"bash\", \"bunzip2\", \"gunzip\"],\n            \"pip\": [\"requests\", \"demoparser2\"],\n          },\n      },\n  }\n---\n\n# Leetify API Skill\n\nAccess CS2 statistics and match data from the Leetify platform.\n\n## Quick Stats\n\nUse these commands for general statistics, ranks, and recent performance.\n\n### Show Statistics\n```bash\nbash scripts/get_stats_by_username.sh USERNAME\n```\nDisplays averages, recent match performance, and ranks.\n\n### Get Match Data\n```bash\nbash scripts/get_match_details.sh USERNAME [INDEX]\n```\nFetches raw JSON statistics for a specific match. When presenting this data, provide a structured report covering shooting, utility usage, and performance metrics.\n\n### Compare Players\n```bash\nbash scripts/compare_by_username.sh USERNAME1 USERNAME2\n```\nCompares two players based on their Leetify profiles.\n\n### Season Stats\n```bash\npython3 scripts/season_stats.py\n```\nProvides a summary table for players tracked in the local database.\n\n## Demo Analysis\n\nUse this workflow for detailed tactical reviews and round-by-round breakdowns.\n\n### 1. Identify the Player\n- Resolve Steam ID: `python3 scripts/steam_ids.py get --username USERNAME`\n- Match the player in the match log using the resolved Steam ID.\n\n### 2. Generate Match Log\n```bash\npython3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]\n```\n- Downloads and parses the demo file (requires significant memory).\n- Generates a text log containing scoreboard and round timeline.\n\n### 3. Analyze Performance\nReview the generated log to assess:\n- Shooting accuracy and trade efficiency.\n- Utility effectiveness (flash duration, grenade damage).\n- Role performance (entry, anchor, support).\n- Tactical highlights and mistakes.\n\nActionable recommendations can be provided based on the observed patterns. Guides or tutorials for specific map positions may be referenced if performance in those areas was suboptimal.\n\n## Data Management\n\n### Manage Steam IDs\n```bash\n# Save a player profile\npython3 scripts/steam_ids.py save --username \"username\" --steam-id \"7656119...\" --name \"Name\"\n\n# List all tracked players\npython3 scripts/steam_ids.py list\n```\n\n## Configuration\n\nThe skill requires the `LEETIFY_API_KEY` environment variable.\nAPI documentation is available at: https://api-public-docs.cs-prod.leetify.com/\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn73589k2rv646tm107cp6d90s81g7xy\",\n  \"slug\": \"leetify\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1771566970497\n}\n\nFile v1.0.4:skill-card.md\n\n## Description:\n\nGet CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo analysis.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[jeminay](https://clawhub.ai/user/jeminay)\n\n### License/Terms of Use:\n\n\n## Use Case:\n\nExternal users and developers use this skill to retrieve CS2 player statistics, compare players, inspect match details, and generate tactical demo-analysis summaries from Leetify data.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Demo-analysis behavior uses API-supplied data for downloads and cache paths, which can create local file, network, and resource-exhaustion risks.\n\nMitigation: Run in a constrained environment; prefer a revised version that sanitizes cache filenames, confines cache reads and writes, allowlists replay hosts, and enforces download, decompression, parsing, and HTTP timeouts.\n\nRisk: The skill requires a Leetify API key and local Steam ID mappings.\n\nMitigation: Provide only a scoped API key, protect local mapping data, and avoid sharing generated logs or JSON outputs without reviewing them for player-identifying details.\n\nRisk: Runtime dependencies are declared but not pinned in the release evidence.\n\nMitigation: Install in an isolated environment and pin dependency versions before repeated or production use.\n\n## Reference(s):\n\n- [Leetify API Documentation](https://api-public-docs.cs-prod.leetify.com/)\n- [Leetify Skill Page](https://clawhub.ai/jeminay/skills/leetify)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands, JSON payloads, and text analysis summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires LEETIFY_API_KEY, local Steam ID mappings, Python dependencies requests and demoparser2, and system utilities bash, bunzip2, and gunzip.]\n\n## Skill Version(s):\n\n1.0.4 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.4:data/steam_ids.json\n\n{}\n\nArchive v1.0.3: 13 files, 26948 bytes\n\nFiles: data/steam_ids.json (3b), scripts/analyze_last_demo.py (47100b), scripts/compare_by_username.sh (1112b), scripts/compare_players.py (877b), scripts/format_profile.py (5700b), scripts/get_match_details.sh (357b), scripts/get_stats_by_username.sh (669b), scripts/match_details.py (3552b), scripts/profile_with_stats.py (1602b), scripts/season_stats.py (4861b), scripts/steam_ids.py (5326b), SKILL.md (7075b), _meta.json (126b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: leetify\ndescription: Get CS2/CS:GO player statistics, match analysis, and gameplay insights from Leetify API. Uses Telegram username to Steam ID mapping for easy access. Use when asked for \"анализ демки\", \"разбор демки\", \"разбор матча\", \"что я сделал не так\", \"demo analysis\".\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"requires\":\n          {\n            \"env\": [\"LEETIFY_API_KEY\"],\n            \"bins\": [\"python3\", \"bash\", \"bunzip2\", \"gunzip\"],\n            \"pip\": [\"requests\", \"demoparser2\"],\n          },\n      },\n  }\n---\n\n# Leetify API Skill\n\nGet CS2/CS:GO statistics from Leetify platform.\n\n## start Quick Stats (Default)\n\nAvoid downloading or analyzing a demo unless explicitly requested (e.g. \"demo analysis\", \"разбор демки\"). For general stat queries, use the commands below to save time and resources.\n\n### Show Statistics\n```bash\nbash scripts/get_stats_by_username.sh USERNAME\n```\n*Shows: Averages (100 games), last 5 matches (K/D/A, ADR, HS, MVPs), ranks, general stats.*\n\n### Get Match Data (JSON for Analysis)\n```bash\nbash scripts/get_match_details.sh USERNAME [INDEX]\n```\n*Outputs: Full raw JSON statistics for a specific match.* \n**Model Instruction:** When presenting this data, ALWAYS format the JSON into a readable report with emojis. Separate logical blocks (e.g., stats General, shooting Shooting, recommendations Utility, mistakes Mistakes).\n\n### Compare Players\n```bash\nbash scripts/compare_by_username.sh USERNAME1 USERNAME2\n```\n\n### Clan Season Stats\n```bash\npython3 scripts/season_stats.py\n```\n*Shows: Summary table for all clan members for the current season.*\n\n## demo Demo Analysis (for \"разбор демки\", \"анализ демки\", \"demo analysis\")\n\n**When the user asks for demo analysis, match breakdown, or tactical review — ALWAYS use this workflow:**\n\n### Step 1: Identify the Player and current In-Game Name (IGN)\n- Get Steam ID: `python3 scripts/steam_ids.py get --username USERNAME`\n- The scoreboard includes Steam IDs in `[steamid]` format next to each player name. Always match the target player by their Steam ID to ensure accuracy.\n- Workflow: get Steam ID -> find the line in SCOREBOARD with that exact Steam ID -> that's your player.\n\n### Step 2: Generate the match log\n```bash\npython3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]\n```\n- Downloads the demo (50-300MB), parses it with demoparser2\n- Outputs a compact text log: scoreboard + round-by-round timeline\n- Caches result in `matches/{match_id}.txt` (use `--no-cache` to re-parse)\n\n### Step 3: Analyze the log\n\nRead the full output and produce a structured analysis for the requested player.\n**Use emojis and beautiful formatting throughout the analysis.**\n\n**Analysis Guidelines (Structure, Tone & Positions):**\n- **Structure:** \n  1. **stats General Stats** — K/D/A, ADR, HS%, KAST%, multikills, clutches.\n  2. **role Role Assessment** — Identify role (Entry, Anchor, Support, Lurker, Sniper, Rifler, Rotator) and evaluate effectiveness.\n  3. **side T-Side** — Utility usage, positioning, key mistakes, entry success/failure.\n  4. **side CT-Side** — Site anchor position, rotations, utility usage.\n  5. **mistakes Mistakes & Failures** — Specific moments of poor play, baiting teammates, or giving away free kills (with timestamps).\n  6. **highlights Highlights** — Key plays, clutches, multikills (with timestamps).\n  7. **positioning Positioning** — Analyze frequently played positions. **MANDATORY if the player failed their role/position:** Search the web for guides/videos (YouTube/Steam Guides/CS2 sites) for these specific positions on the current map and include links. If they played perfectly, guides are optional.\n  8. **recommendations Recommendations** — Concrete, actionable advice.\n  9. **rating Overall Rating** — X/10 score.\n- **Tone & Objectivity:** Be neutral and objective. Do not sugarcoat bad performance. Context is key: do not praise high stats (e.g. HS%) if they had no impact on the round win. Call out bad play explicitly (baiting, hunting for eco frags, playing for stats).\n- **Position Naming:** Translate raw positions. Do not use internal names (e.g. \"SideAlley\", \"BombsiteA\"). Use common community callouts: Mid, Connector, Jungle, Short, Long, Tunnel, etc.\n\n**What to look for in the log:**\n- `KILL` lines: who killed whom, with what weapon, HS/wallbang/smoke/blind tags, <-opening/<-trade annotations\n- `DMG` lines: damage exchanges, health tracking\n- `FLASH` lines: team flashes (marked `TEAM!`), effective enemy flashes (duration)\n- `POS` lines: player positions every ~5s — where the player is relative to teammates and action\n- `NADE` lines: utility usage and timing\n- Economy block: buy type, equipment value, item purchases\n- `RESULT` line: round winner, clutch attempts with ok/fail\n- `HALVES` line: half scores for macro analysis\n\n### Options\n```bash\n# Specific round deep-dive\npython3 scripts/analyze_last_demo.py --username USERNAME --round N\n\n# Older match (0=last, 1=previous, etc.)\npython3 scripts/analyze_last_demo.py --username USERNAME --match-index 1\n\n# Force re-parse (skip cache)\npython3 scripts/analyze_last_demo.py --username USERNAME --no-cache\n```\n\n### warning Memory constraints\n- Server has 2GB RAM — the parser is optimized but large demos may be tight\n- Economy is parsed in chunks of 4 rounds, positions per-round with gc.collect()\n- If OOM occurs, try running without other heavy processes\n\n## tools Management\n\n### Manage Steam IDs\n```bash\n# Save\npython3 scripts/steam_ids.py save --username \"jeminay\" --steam-id \"76561198185608989\" --name \"Дамир\"\n\n# Get\npython3 scripts/steam_ids.py get --username \"jeminay\"\n\n# List all\npython3 scripts/steam_ids.py list\n```\n\n## recommendations Analysis Workflow\n\n1. **Check Steam ID:** `python3 scripts/steam_ids.py get --username USERNAME`\n2. **Run demo parser:** `python3 scripts/analyze_last_demo.py --username USERNAME`\n3. **Read the full log** — identify the target player's team, side, position patterns\n4. **Match teammates:** Cross-reference with `scripts/steam_ids.py list` to identify known players\n5. **Analyze round-by-round:** Track the player's kills, deaths, utility, positions, economy\n6. **Write structured analysis** in Russian (unless specified otherwise). Apply Analysis Guidelines strictly.\n\n**Key rules:**\n- Show script output AS IS when asked for raw data.\n- For analysis: read the log thoroughly and write a precise breakdown.\n- Always mention specific rounds and timestamps (e.g., \"R5 [45s]\").\n- **Web Search Condition:** If the player failed their role or specific positions, use `web_search` to find tutorials or position guides for these primary positions and attach them to the Positioning section.\n- Highlight patterns, trends, and tactical errors, not just isolated events.\n\n## Configuration\n\nSet the `LEETIFY_API_KEY` environment variable with your Leetify API key.\nYou can get it from: https://api-public-docs.cs-prod.leetify.com/\n\n## API Docs\n\nDocs: https://api-public-docs.cs-prod.leetify.com/\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn73589k2rv646tm107cp6d90s81g7xy\",\n  \"slug\": \"leetify\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1771566701309\n}\n\nFile v1.0.3:data/steam_ids.json\n\n{}\n\nArchive v1.0.2: 13 files, 26949 bytes\n\nFiles: data/steam_ids.json (3b), scripts/analyze_last_demo.py (47100b), scripts/compare_by_username.sh (1112b), scripts/compare_players.py (877b), scripts/format_profile.py (5700b), scripts/get_match_details.sh (357b), scripts/get_stats_by_username.sh (669b), scripts/match_details.py (3552b), scripts/profile_with_stats.py (1602b), scripts/season_stats.py (4861b), scripts/steam_ids.py (5326b), SKILL.md (7075b), _meta.json (126b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: leetify\ndescription: Get CS2/CS:GO player statistics, match analysis, and gameplay insights from Leetify API. Uses Telegram username -> Steam ID mapping for easy access. Use when asked for \"анализ демки\", \"разбор демки\", \"разбор матча\", \"что я сделал не так\", \"demo analysis\".\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"requires\":\n          {\n            \"env\": [\"LEETIFY_API_KEY\"],\n            \"bins\": [\"python3\", \"bash\", \"bunzip2\", \"gunzip\"],\n            \"pip\": [\"requests\", \"demoparser2\"],\n          },\n      },\n  }\n---\n\n# Leetify API Skill\n\nGet CS2/CS:GO statistics from Leetify platform.\n\n## start Quick Stats (Default)\n\nAvoid downloading or analyzing a demo unless explicitly requested (e.g. \"demo analysis\", \"разбор демки\"). For general stat queries, use the commands below to save time and resources.\n\n### Show Statistics\n```bash\nbash scripts/get_stats_by_username.sh USERNAME\n```\n*Shows: Averages (100 games), last 5 matches (K/D/A, ADR, HS, MVPs), ranks, general stats.*\n\n### Get Match Data (JSON for Analysis)\n```bash\nbash scripts/get_match_details.sh USERNAME [INDEX]\n```\n*Outputs: Full raw JSON statistics for a specific match.* \n**Model Instruction:** When presenting this data, ALWAYS format the JSON into a readable report with emojis. Separate logical blocks (e.g., stats General, shooting Shooting, recommendations Utility, mistakes Mistakes).\n\n### Compare Players\n```bash\nbash scripts/compare_by_username.sh USERNAME1 USERNAME2\n```\n\n### Clan Season Stats\n```bash\npython3 scripts/season_stats.py\n```\n*Shows: Summary table for all clan members for the current season.*\n\n## demo Demo Analysis (for \"разбор демки\", \"анализ демки\", \"demo analysis\")\n\n**When the user asks for demo analysis, match breakdown, or tactical review — ALWAYS use this workflow:**\n\n### Step 1: Identify the Player and current In-Game Name (IGN)\n- Get Steam ID: `python3 scripts/steam_ids.py get --username USERNAME`\n- The scoreboard includes Steam IDs in `[steamid]` format next to each player name. Always match the target player by their Steam ID to ensure accuracy.\n- Workflow: get Steam ID -> find the line in SCOREBOARD with that exact Steam ID -> that's your player.\n\n### Step 2: Generate the match log\n```bash\npython3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]\n```\n- Downloads the demo (50-300MB), parses it with demoparser2\n- Outputs a compact text log: scoreboard + round-by-round timeline\n- Caches result in `matches/{match_id}.txt` (use `--no-cache` to re-parse)\n\n### Step 3: Analyze the log\n\nRead the full output and produce a structured analysis for the requested player.\n**Use emojis and beautiful formatting throughout the analysis.**\n\n**Analysis Guidelines (Structure, Tone & Positions):**\n- **Structure:** \n  1. **stats General Stats** — K/D/A, ADR, HS%, KAST%, multikills, clutches.\n  2. **role Role Assessment** — Identify role (Entry, Anchor, Support, Lurker, Sniper, Rifler, Rotator) and evaluate effectiveness.\n  3. **side T-Side** — Utility usage, positioning, key mistakes, entry success/failure.\n  4. **side CT-Side** — Site anchor position, rotations, utility usage.\n  5. **mistakes Mistakes & Failures** — Specific moments of poor play, baiting teammates, or giving away free kills (with timestamps).\n  6. **highlights Highlights** — Key plays, clutches, multikills (with timestamps).\n  7. **positioning Positioning** — Analyze frequently played positions. **MANDATORY if the player failed their role/position:** Search the web for guides/videos (YouTube/Steam Guides/CS2 sites) for these specific positions on the current map and include links. If they played perfectly, guides are optional.\n  8. **recommendations Recommendations** — Concrete, actionable advice.\n  9. **rating Overall Rating** — X/10 score.\n- **Tone & Objectivity:** Be neutral and objective. Do not sugarcoat bad performance. Context is key: do not praise high stats (e.g. HS%) if they had no impact on the round win. Call out bad play explicitly (baiting, hunting for eco frags, playing for stats).\n- **Position Naming:** Translate raw positions. Do not use internal names (e.g. \"SideAlley\", \"BombsiteA\"). Use common community callouts: Mid, Connector, Jungle, Short, Long, Tunnel, etc.\n\n**What to look for in the log:**\n- `KILL` lines: who killed whom, with what weapon, HS/wallbang/smoke/blind tags, <-opening/<-trade annotations\n- `DMG` lines: damage exchanges, health tracking\n- `FLASH` lines: team flashes (marked `TEAM!`), effective enemy flashes (duration)\n- `POS` lines: player positions every ~5s — where the player is relative to teammates and action\n- `NADE` lines: utility usage and timing\n- Economy block: buy type, equipment value, item purchases\n- `RESULT` line: round winner, clutch attempts with ok/fail\n- `HALVES` line: half scores for macro analysis\n\n### Options\n```bash\n# Specific round deep-dive\npython3 scripts/analyze_last_demo.py --username USERNAME --round N\n\n# Older match (0=last, 1=previous, etc.)\npython3 scripts/analyze_last_demo.py --username USERNAME --match-index 1\n\n# Force re-parse (skip cache)\npython3 scripts/analyze_last_demo.py --username USERNAME --no-cache\n```\n\n### warning Memory constraints\n- Server has 2GB RAM — the parser is optimized but large demos may be tight\n- Economy is parsed in chunks of 4 rounds, positions per-round with gc.collect()\n- If OOM occurs, try running without other heavy processes\n\n## tools Management\n\n### Manage Steam IDs\n```bash\n# Save\npython3 scripts/steam_ids.py save --username \"jeminay\" --steam-id \"76561198185608989\" --name \"Дамир\"\n\n# Get\npython3 scripts/steam_ids.py get --username \"jeminay\"\n\n# List all\npython3 scripts/steam_ids.py list\n```\n\n## recommendations Analysis Workflow\n\n1. **Check Steam ID:** `python3 scripts/steam_ids.py get --username USERNAME`\n2. **Run demo parser:** `python3 scripts/analyze_last_demo.py --username USERNAME`\n3. **Read the full log** — identify the target player's team, side, position patterns\n4. **Match teammates:** Cross-reference with `scripts/steam_ids.py list` to identify known players\n5. **Analyze round-by-round:** Track the player's kills, deaths, utility, positions, economy\n6. **Write structured analysis** in Russian (unless specified otherwise). Apply Analysis Guidelines strictly.\n\n**Key rules:**\n- Show script output AS IS when asked for raw data.\n- For analysis: read the log thoroughly and write a precise breakdown.\n- Always mention specific rounds and timestamps (e.g., \"R5 [45s]\").\n- **Web Search Condition:** If the player failed their role or specific positions, use `web_search` to find tutorials or position guides for these primary positions and attach them to the Positioning section.\n- Highlight patterns, trends, and tactical errors, not just isolated events.\n\n## Configuration\n\nSet the `LEETIFY_API_KEY` environment variable with your Leetify API key.\nYou can get it from: https://api-public-docs.cs-prod.leetify.com/\n\n## API Docs\n\nDocs: https://api-public-docs.cs-prod.leetify.com/\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn73589k2rv646tm107cp6d90s81g7xy\",\n  \"slug\": \"leetify\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1771566685749\n}\n\nFile v1.0.2:data/steam_ids.json\n\n{}\n\nArchive v1.0.1: 13 files, 26996 bytes\n\nFiles: data/steam_ids.json (3b), scripts/analyze_last_demo.py (47100b), scripts/compare_by_username.sh (1112b), scripts/compare_players.py (877b), scripts/format_profile.py (5700b), scripts/get_match_details.sh (357b), scripts/get_stats_by_username.sh (669b), scripts/match_details.py (3552b), scripts/profile_with_stats.py (1602b), scripts/season_stats.py (4861b), scripts/steam_ids.py (5326b), SKILL.md (7023b), _meta.json (126b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: leetify\ndescription: Get CS2/CS:GO player statistics, match analysis, and gameplay insights from Leetify API. Uses Telegram username → Steam ID mapping for easy access. Use when asked for \"анализ демки\", \"разбор демки\", \"разбор матча\", \"что я сделал не так\", \"demo analysis\".\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"requires\":\n          {\n            \"env\": [\"LEETIFY_API_KEY\"],\n            \"bins\": [\"python3\", \"bash\", \"bunzip2\", \"gunzip\"],\n            \"pip\": [\"requests\", \"demoparser2\"],\n          },\n      },\n  }\n---\n\n# Leetify API Skill\n\nGet CS2/CS:GO statistics from Leetify platform.\n\n## 🚀 Quick Stats (Default)\n\nAvoid downloading or analyzing a demo unless explicitly requested (e.g. \"demo analysis\", \"разбор демки\"). For general stat queries, use the commands below to save time and resources.\n\n### Show Statistics\n```bash\nbash scripts/get_stats_by_username.sh USERNAME\n```\n*Shows: Averages (100 games), last 5 matches (K/D/A, ADR, HS, MVPs), ranks, general stats.*\n\n### Get Match Data (JSON for Analysis)\n```bash\nbash scripts/get_match_details.sh USERNAME [INDEX]\n```\n*Outputs: Full raw JSON statistics for a specific match.* \n**Model Instruction:** When presenting this data, ALWAYS format the JSON into a readable report with emojis. Separate logical blocks (e.g., 📊 General, 🔫 Shooting, 🧠 Utility, 🚫 Mistakes).\n\n### Compare Players\n```bash\nbash scripts/compare_by_username.sh USERNAME1 USERNAME2\n```\n\n### Clan Season Stats\n```bash\npython3 scripts/season_stats.py\n```\n*Shows: Summary table for all clan members for the current season.*\n\n## 🎬 Demo Analysis (for \"разбор демки\", \"анализ демки\", \"demo analysis\")\n\n**When the user asks for demo analysis, match breakdown, or tactical review — ALWAYS use this workflow:**\n\n### Step 1: Identify the Player and current In-Game Name (IGN)\n- Get Steam ID: `python3 scripts/steam_ids.py get --username USERNAME`\n- The scoreboard includes Steam IDs in `[steamid]` format next to each player name. Always match the target player by their Steam ID to ensure accuracy.\n- Workflow: get Steam ID → find the line in SCOREBOARD with that exact Steam ID → that's your player.\n\n### Step 2: Generate the match log\n```bash\npython3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]\n```\n- Downloads the demo (50-300MB), parses it with demoparser2\n- Outputs a compact text log: scoreboard + round-by-round timeline\n- Caches result in `matches/{match_id}.txt` (use `--no-cache` to re-parse)\n\n### Step 3: Analyze the log\n\nRead the full output and produce a structured analysis for the requested player.\n**Use emojis and beautiful formatting throughout the analysis.**\n\n**Analysis Guidelines (Structure, Tone & Positions):**\n- **Structure:** \n  1. **📊 General Stats** — K/D/A, ADR, HS%, KAST%, multikills, clutches.\n  2. **🎭 Role Assessment** — Identify role (Entry, Anchor, Support, Lurker, Sniper, Rifler, Rotator) and evaluate effectiveness.\n  3. **⚔️ T-Side** — Utility usage, positioning, key mistakes, entry success/failure.\n  4. **🛡️ CT-Side** — Site anchor position, rotations, utility usage.\n  5. **🚫 Mistakes & Failures** — Specific moments of poor play, baiting teammates, or giving away free kills (with timestamps).\n  6. **💡 Highlights** — Key plays, clutches, multikills (with timestamps).\n  7. **🗺️ Positioning** — Analyze frequently played positions. **MANDATORY if the player failed their role/position:** Search the web for guides/videos (YouTube/Steam Guides/CS2 sites) for these specific positions on the current map and include links. If they played perfectly, guides are optional.\n  8. **🧠 Recommendations** — Concrete, actionable advice.\n  9. **🏆 Overall Rating** — X/10 score.\n- **Tone & Objectivity:** Be neutral and objective. Do not sugarcoat bad performance. Context is key: do not praise high stats (e.g. HS%) if they had no impact on the round win. Call out bad play explicitly (baiting, hunting for eco frags, playing for stats).\n- **Position Naming:** Translate raw positions. Do not use internal names (e.g. \"SideAlley\", \"BombsiteA\"). Use common community callouts: Mid, Connector, Jungle, Short, Long, Tunnel, etc.\n\n**What to look for in the log:**\n- `KILL` lines: who killed whom, with what weapon, HS/wallbang/smoke/blind tags, ←opening/←trade annotations\n- `DMG` lines: damage exchanges, health tracking\n- `FLASH` lines: team flashes (marked `TEAM!`), effective enemy flashes (duration)\n- `POS` lines: player positions every ~5s — where the player is relative to teammates and action\n- `NADE` lines: utility usage and timing\n- Economy block: buy type, equipment value, item purchases\n- `RESULT` line: round winner, clutch attempts with ✅/❌\n- `HALVES` line: half scores for macro analysis\n\n### Options\n```bash\n# Specific round deep-dive\npython3 scripts/analyze_last_demo.py --username USERNAME --round N\n\n# Older match (0=last, 1=previous, etc.)\npython3 scripts/analyze_last_demo.py --username USERNAME --match-index 1\n\n# Force re-parse (skip cache)\npython3 scripts/analyze_last_demo.py --username USERNAME --no-cache\n```\n\n### ⚠️ Memory constraints\n- Server has 2GB RAM — the parser is optimized but large demos may be tight\n- Economy is parsed in chunks of 4 rounds, positions per-round with gc.collect()\n- If OOM occurs, try running without other heavy processes\n\n## 🛠 Management\n\n### Manage Steam IDs\n```bash\n# Save\npython3 scripts/steam_ids.py save --username \"jeminay\" --steam-id \"76561198185608989\" --name \"Дамир\"\n\n# Get\npython3 scripts/steam_ids.py get --username \"jeminay\"\n\n# List all\npython3 scripts/steam_ids.py list\n```\n\n## 🧠 Analysis Workflow\n\n1. **Check Steam ID:** `python3 scripts/steam_ids.py get --username USERNAME`\n2. **Run demo parser:** `python3 scripts/analyze_last_demo.py --username USERNAME`\n3. **Read the full log** — identify the target player's team, side, position patterns\n4. **Match teammates:** Cross-reference with `scripts/steam_ids.py list` to identify known players\n5. **Analyze round-by-round:** Track the player's kills, deaths, utility, positions, economy\n6. **Write structured analysis** in Russian (unless specified otherwise). Apply Analysis Guidelines strictly.\n\n**Key rules:**\n- Show script output AS IS when asked for raw data.\n- For analysis: read the log thoroughly and write a precise breakdown.\n- Always mention specific rounds and timestamps (e.g., \"R5 [45s]\").\n- **Web Search Condition:** If the player failed their role or specific positions, use `web_search` to find tutorials or position guides for these primary positions and attach them to the Positioning section.\n- Highlight patterns, trends, and tactical errors, not just isolated events.\n\n## Configuration\n\nSet the `LEETIFY_API_KEY` environment variable with your Leetify API key.\nYou can get it from: https://api-public-docs.cs-prod.leetify.com/\n\n## API Docs\n\nDocs: https://api-public-docs.cs-prod.leetify.com/\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn73589k2rv646tm107cp6d90s81g7xy\",\n  \"slug\": \"leetify\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1771566666462\n}\n\nFile v1.0.1:data/steam_ids.json\n\n{}\n\nArchive v1.0.0: 12 files, 26599 bytes\n\nFiles: data/steam_ids.json (3b), scripts/analyze_last_demo.py (47924b), scripts/compare_by_username.sh (1112b), scripts/format_profile.py (5700b), scripts/get_match_details.sh (357b), scripts/get_stats_by_username.sh (669b), scripts/match_details.py (3552b), scripts/profile_with_stats.py (1602b), scripts/season_stats.py (4861b), scripts/steam_ids.py (5326b), SKILL.md (7305b), _meta.json (126b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: leetify\ndescription: Get CS2/CS:GO player statistics, match analysis, and gameplay insights from Leetify API. Uses Telegram username → Steam ID mapping for easy access. Use when asked for \"анализ демки\", \"разбор демки\", \"разбор матча\", \"что я сделал не так\", \"demo analysis\".\n---\n\n# Leetify API Skill\n\nGet CS2/CS:GO statistics from Leetify platform.\n\n## 🚀 Quick Stats (Default)\n\n**⚠️ CRITICAL RULE:** \n**NEVER download or analyze a demo unless the user EXPLICITLY asks for \"demo analysis\", \"разбор демки\", or \"tactical review\".**\nFor all other requests (e.g., \"show stats\", \"my stats\", \"как я сыграл\", \"статистика\"), USE THE COMMANDS BELOW. Do not waste time/resources on demo parsing for simple stat queries.\n\nUse these commands for general questions about stats, ranks, and recent performance. NO demo download required.\n\n### Show Statistics\n```bash\nbash scripts/get_stats_by_username.sh USERNAME\n```\n*Shows: Averages (100 games), last 5 matches (K/D/A, ADR, HS, MVPs), ranks, general stats.*\n\n### Get Match Data (JSON for Analysis)\n```bash\nbash scripts/get_match_details.sh USERNAME [INDEX]\n```\n*Outputs: Full raw JSON statistics for a specific match.* \n**Model Instruction:** When presenting this data, ALWAYS format the JSON into a readable report with emojis. Separate logical blocks (e.g., 📊 General, 🔫 Shooting, 🧠 Utility, 🚫 Mistakes).\n\n### Compare Players\n```bash\nbash scripts/compare_by_username.sh USERNAME1 USERNAME2\n```\n\n### Clan Season Stats\n```bash\npython3 /root/skills/leetify/scripts/season_stats.py\n```\n*Shows: Summary table for all clan members for the current season.*\n\n## 🎬 Demo Analysis (for \"разбор демки\", \"анализ демки\", \"demo analysis\")\n\n**When the user asks for demo analysis, match breakdown, or tactical review — ALWAYS use this workflow:**\n\n### Step 1: Identify the Player and current In-Game Name (IGN)\n- Get Steam ID: `python3 scripts/steam_ids.py get --username USERNAME`\n- **CRITICAL:** The scoreboard now includes Steam IDs in `[steamid]` format next to each player name. **ALWAYS match the target player by their Steam ID, NOT by guessing the IGN.** In-game names change frequently and cannot be relied upon.\n- Workflow: get Steam ID → find the line in SCOREBOARD with that exact Steam ID → that's your player.\n- **DO NOT GUESS** based on stats, position in the scoreboard, or name similarity.\n\n### Step 2: Generate the match log\n```bash\npython3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]\n```\n- Downloads the demo (50-300MB), parses it with demoparser2\n- Outputs a compact text log: scoreboard + round-by-round timeline\n- Caches result in `matches/{match_id}.txt` (use `--no-cache` to re-parse)\n\n### Step 3: Analyze the log\n\nRead the full output and produce a structured analysis for the requested player.\n**Use emojis and beautiful formatting throughout the analysis.**\n\n**Analysis Guidelines (Structure, Tone & Positions):**\n- **Structure:** \n  1. **📊 General Stats** — K/D/A, ADR, HS%, KAST%, multikills, clutches.\n  2. **🎭 Role Assessment** — Identify role (Entry, Anchor, Support, Lurker, Sniper, Rifler, Rotator) and evaluate effectiveness.\n  3. **⚔️ T-Side** — Utility usage, positioning, key mistakes, entry success/failure.\n  4. **🛡️ CT-Side** — Site anchor position, rotations, utility usage.\n  5. **🚫 Mistakes & Failures** — Specific moments of poor play, baiting teammates, or giving away free kills (with timestamps).\n  6. **💡 Highlights** — Key plays, clutches, multikills (with timestamps).\n  7. **🗺️ Positioning** — Analyze frequently played positions. **MANDATORY if the player failed their role/position:** Search the web for guides/videos (YouTube/Steam Guides/CS2 sites) for these specific positions on the current map and include links. If they played perfectly, guides are optional.\n  8. **🧠 Recommendations** — Concrete, actionable advice.\n  9. **🏆 Overall Rating** — X/10 score.\n- **Tone & Objectivity:** Be neutral and objective. Do not sugarcoat bad performance. Context is key: do not praise high stats (e.g. HS%) if they had no impact on the round win. Call out bad play explicitly (baiting, hunting for eco frags, playing for stats).\n- **Position Naming:** Translate raw positions. Do not use internal names (e.g. \"SideAlley\", \"BombsiteA\"). Use common community callouts: Mid, Connector, Jungle, Short, Long, Tunnel, etc.\n\n**What to look for in the log:**\n- `KILL` lines: who killed whom, with what weapon, HS/wallbang/smoke/blind tags, ←opening/←trade annotations\n- `DMG` lines: damage exchanges, health tracking\n- `FLASH` lines: team flashes (marked `TEAM!`), effective enemy flashes (duration)\n- `POS` lines: player positions every ~5s — where the player is relative to teammates and action\n- `NADE` lines: utility usage and timing\n- Economy block: buy type, equipment value, item purchases\n- `RESULT` line: round winner, clutch attempts with ✅/❌\n- `HALVES` line: half scores for macro analysis\n\n### Options\n```bash\n# Specific round deep-dive\npython3 scripts/analyze_last_demo.py --username USERNAME --round N\n\n# Older match (0=last, 1=previous, etc.)\npython3 scripts/analyze_last_demo.py --username USERNAME --match-index 1\n\n# Force re-parse (skip cache)\npython3 scripts/analyze_last_demo.py --username USERNAME --no-cache\n```\n\n### ⚠️ Memory constraints\n- Server has 2GB RAM — the parser is optimized but large demos may be tight\n- Economy is parsed in chunks of 4 rounds, positions per-round with gc.collect()\n- If OOM occurs, try running without other heavy processes\n\n## 🛠 Management\n\n### Manage Steam IDs\n```bash\n# Save\npython3 scripts/steam_ids.py save --username \"jeminay\" --steam-id \"76561198185608989\" --name \"Дамир\"\n\n# Get\npython3 scripts/steam_ids.py get --username \"jeminay\"\n\n# List all\npython3 scripts/steam_ids.py list\n```\n\n## 🧠 Analysis Workflow\n\n1. **Check Steam ID:** `python3 scripts/steam_ids.py get --username USERNAME`\n2. **Run demo parser:** `python3 scripts/analyze_last_demo.py --username USERNAME`\n3. **Read the full log** — identify the target player's team, side, position patterns\n4. **Match teammates:** Cross-reference with `scripts/steam_ids.py list` to identify known players\n5. **Analyze round-by-round:** Track the player's kills, deaths, utility, positions, economy\n6. **Write structured analysis** in Russian (unless specified otherwise). Apply Analysis Guidelines strictly.\n\n**Key rules:**\n- Show script output AS IS when asked for raw data.\n- For analysis: read the log thoroughly and write a precise breakdown.\n- Always mention specific rounds and timestamps (e.g., \"R5 [45s]\").\n- **Web Search Condition:** If the player failed their role or specific positions, use `web_search` to find tutorials or position guides for these primary positions and attach them to the Positioning section. If performance was excellent, guides are optional.\n- Highlight patterns, trends, and tactical errors, not just isolated events.\n\n## Configuration\n\nSet the `LEETIFY_API_KEY` environment variable with your Leetify API key.\nYou can get it from: https://api-public-docs.cs-prod.leetify.com/\n\n## API Docs\n\nDocs: https://api-public-docs.cs-prod.leetify.com/\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn73589k2rv646tm107cp6d90s81g7xy\",\n  \"slug\": \"leetify\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1771566231671\n}\n\nFile v1.0.0:data/steam_ids.json\n\n{}","readmeExcerpt":"Skill: Leetify Owner: jeminay Summary: Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-02-20T05:56:10.497Z | user Complete rewrite of SKILL.md to remove unicode control chars and neutralise model instructions v1.0.3 | 2026-02-20T05:51:41.309Z | user Fix ang","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"bash scripts/get_stats_by_username.sh USERNAME"},{"language":"bash","snippet":"bash scripts/get_match_details.sh USERNAME [INDEX]"},{"language":"bash","snippet":"bash scripts/compare_by_username.sh USERNAME1 USERNAME2"},{"language":"bash","snippet":"python3 scripts/season_stats.py"},{"language":"bash","snippet":"python3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]"},{"language":"bash","snippet":"# Save a player profile\npython3 scripts/steam_ids.py save --username \"username\" --steam-id \"7656119...\" --name \"Name\"\n\n# List all tracked players\npython3 scripts/steam_ids.py list"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: leetify\ndescription: Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo analysis.\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"requires\":\n          {\n            \"env\": [\"LEETIFY_API_KEY\"],\n            \"bins\": [\"python3\", \"bash\", \"bunzip2\", \"gunzip\"],\n            \"pip\": [\"requests\", \"demoparser2\"],\n          },\n      },\n  }\n---\n\n# Leetify API Skill\n\nAccess CS2 statistics and match data from the Leetify platform.\n\n## Quick Stats\n\nUse these commands for general statistics, ranks, and recent performance.\n\n### Show Statistics\n```bash\nbash scripts/get_stats_by_username.sh USERNAME\n```\nDisplays averages, recent match performance, and ranks.\n\n### Get Match Data\n```bash\nbash scripts/get_match_details.sh USERNAME [INDEX]\n```\nFetches raw JSON statistics for a specific match. When presenting this data, provide a structured report covering shooting, utility usage, and performance metrics.\n\n### Compare Players\n```bash\nbash scripts/compare_by_username.sh USERNAME1 USERNAME2\n```\nCompares two players based on their Leetify profiles.\n\n### Season Stats\n```bash\npython3 scripts/season_stats.py\n```\nProvides a summary table for players tracked in the local database.\n\n## Demo Analysis\n\nUse this workflow for detailed tactical reviews and round-by-round breakdowns.\n\n### 1. Identify the Player\n- Resolve Steam ID: `python3 scripts/steam_ids.py get --username USERNAME`\n- Match the player in the match log using the resolved Steam ID.\n\n### 2. Generate Match Log\n```bash\npython3 scripts/analyze_last_demo.py --username USERNAME [--match-index N] [--no-cache]\n```\n- Downloads and parses the demo file (requires significant memory).\n- Generates a text log containing scoreboard and round timeline.\n\n### 3. Analyze Performance\nReview the generated log to assess:\n- Shooting accuracy and trade efficiency.\n- Utility effectiveness (flash duration, grenade damage).\n- Role performance (entry, anchor, support).\n- Tactical highlights and mistakes.\n\nActionable recommendations can be provided based on the observed patterns. Guides or tutorials for specific map positions may be referenced if performance in those areas was suboptimal.\n\n## Data Management\n\n### Manage Steam IDs\n```bash\n# Save a player profile\npython3 scripts/steam_ids.py save --username \"username\" --steam-id \"7656119...\" --name \"Name\"\n\n# List all tracked players\npython3 scripts/steam_ids.py list\n```\n\n## Configuration\n\nThe skill requires the `LEETIFY_API_KEY` environment variable.\nAPI documentation is available at: https://api-public-docs.cs-prod.leetify.com/"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73589k2rv646tm107cp6d90s81g7xy\",\n  \"slug\": \"leetify\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1771566970497\n}"},{"path":"skill-card.md","content":"## Description:\n\nGet CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo analysis.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[jeminay](https://clawhub.ai/user/jeminay)\n\n### License/Terms of Use:\n\n\n## Use Case:\n\nExternal users and developers use this skill to retrieve CS2 player statistics, compare players, inspect match details, and generate tactical demo-analysis summaries from Leetify data.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Demo-analysis behavior uses API-supplied data for downloads and cache paths, which can create local file, network, and resource-exhaustion risks.\n\nMitigation: Run in a constrained environment; prefer a revised version that sanitizes cache filenames, confines cache reads and writes, allowlists replay hosts, and enforces download, decompression, parsing, and HTTP timeouts.\n\nRisk: The skill requires a Leetify API key and local Steam ID mappings.\n\nMitigation: Provide only a scoped API key, protect local mapping data, and avoid sharing generated logs or JSON outputs without reviewing them for player-identifying details.\n\nRisk: Runtime dependencies are declared but not pinned in the release evidence.\n\nMitigation: Install in an isolated environment and pin dependency versions before repeated or production use.\n\n## Reference(s):\n\n- [Leetify API Documentation](https://api-public-docs.cs-prod.leetify.com/)\n- [Leetify Skill Page](https://clawhub.ai/jeminay/skills/leetify)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands, JSON payloads, and text analysis summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires LEETIFY_API_KEY, local Steam ID mappings, Python dependencies requests and demoparser2, and system utilities bash, bunzip2, and gunzip.]\n\n## Skill Version(s):\n\n1.0.4 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"data/steam_ids.json","content":"{}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo... Skill: Leetify Owner: jeminay Summary: Get CS2 player statistics, match analysis, and gameplay insights from Leetify API. Supports player comparison and season stats. Use for stat queries and demo... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-02-20T05:56:10.497Z | user Complete rewrite of SKILL.md to remove unicode control chars and neutralise model instructions v1.0.3 | 2026-02-20T05:51:41.309Z | user Fix ang","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1070,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T11:27:45.543Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:32:27.232Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}