Install
$ agentstack add skill-dungnotnull-esports-theorycrafting-meta-analysis-agent-skill-esports-theorycrafting-meta-analysis-agent-skill ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
SKILL Registry - esports-theorycrafting-meta-analysis
Overview
This document defines the complete skill registry, resolution protocol, execution flow, and validation standards for the esports-theorycrafting-meta-analysis harness skill. It serves as the canonical reference for how the skill system operates, how skills are registered, resolved, executed, and validated.
Skill Identity
name: esports-theorycrafting-meta-analysis
version: 1.1.0
domain: Esports Competitive Analysis & Theorycrafting
status: PRODUCTION_READY
architecture: Harness (orchestrator + sub-skills)
Skill Registration Protocol
Registration Schema
Skills are registered via YAML frontmatter in each .md file:
---
name: {skill-identifier}
description: {one-line trigger description}
---
Required fields:
name: Unique skill identifier (kebab-case)description: When to trigger, what it does (primary triggering mechanism)
Optional metadata (added to skill card via comments):
version: Skill versiondomain: Domain categorycompatibility: Required tools/dependenciesauthor: Author attribution
Skill Registry Structure
skills/
├── main.md # Main orchestrator (entry point)
├── sub-gather-requirements.md # Sub-skill 1: Requirements parsing
├── sub-evidence-collector.md # Sub-skill 2: Evidence collection
├── sub-core-analysis.md # Sub-skill 3: Core analysis
├── sub-knowledge-updater.md # Sub-skill 4: Knowledge base query
└── sub-advisor.md # Sub-skill 5: Advisory synthesis
Skill Resolution Protocol
- Trigger Detection: Claude analyzes user input against skill
descriptionfields - Skill Selection: Matching skill(s) are loaded into context
- Sub-skill Resolution: Main skill invokes sub-skills via
Skill()tool calls - Execution Order: Sequential execution following harness protocol
Resolution Logic:
user_query → skill.description_match → skill.load()
main_skill → sub_skill_invocation → sequential_execution
Input/Output JSON Schemas
Main Harness Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free-form analysis query from user",
"example": "Analyze LoL patch 14.10 jungle meta"
},
"audience": {
"type": "string",
"enum": ["analyst", "coach", "player", "broadcaster", "researcher", "learner"],
"default": "analyst",
"description": "Target audience for the report"
},
"language": {
"type": "string",
"enum": ["en", "vi"],
"description": "Output language (auto-detected if not specified)"
},
"inputs": {
"type": "object",
"properties": {
"heroes_json": {"type": "string", "description": "Path to heroes data JSON"},
"matchups_json": {"type": "string", "description": "Path to matchups data JSON"},
"builds_json": {"type": "string", "description": "Path to builds data JSON"},
"before_stats_json": {"type": "string", "description": "Path to previous patch stats JSON"}
}
}
},
"required": ["query"]
}
Requirements Output Schema (Step 1)
{
"type": "object",
"properties": {
"object_of_analysis": {"type": "string"},
"scope": {"type": "string", "enum": ["meta", "hero", "build", "counter", "patch", "combined"]},
"timeframe": {"type": "string"},
"target_audience": {"type": "string"},
"language": {"type": "string", "enum": ["en", "vi"]},
"analysis_type": {"type": "string"},
"keywords": {"type": "array", "items": {"type": "string"}},
"inputs": {"type": "object"},
"assumptions": {"type": "array", "items": {"type": "string"}},
"open_questions": {"type": "array", "items": {"type": "string"}}
},
"required": ["object_of_analysis", "language"]
}
Evidence Bundle Output Schema (Step 2)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {"type": "string"},
"url": {"type": "string", "format": "uri"},
"tier": {"type": "integer", "enum": [1, 2, 3, 4]},
"snippet": {"type": "string"},
"access_date": {"type": "string", "format": "date-time"},
"relevance_score": {"type": "number", "minimum": 0, "maximum": 10}
}
}
},
"tier_counts": {"type": "object", "patternProperties": {"^[1-4]$": {"type": "integer"}}},
"coverage_rating": {"type": "string", "enum": ["Strong", "Moderate", "Weak"]},
"degradation_level": {"type": "integer", "minimum": 0, "maximum": 4},
"limitations": {"type": "array", "items": {"type": "string"}},
"collected_at": {"type": "string", "format": "date-time"}
},
"required": ["items", "degradation_level", "coverage_rating"]
}
Core Analysis Output Schema (Step 3)
{
"type": "object",
"properties": {
"hero_stats": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"win_rate": {"type": "number", "minimum": 0, "maximum": 1},
"pick_rate": {"type": "number", "minimum": 0, "maximum": 1},
"ban_rate": {"type": "number", "minimum": 0, "maximum": 1},
"games": {"type": "integer", "minimum": 0},
"tier": {"type": "string", "pattern": "^[SABC?]$"},
"ci": {
"type": "object",
"properties": {
"lower": {"type": "number"},
"upper": {"type": "number"},
"center": {"type": "number"},
"confidence": {"type": "number"}
}
}
}
}
},
"build_rankings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {"type": "integer"},
"name": {"type": "string"},
"effective_dps": {"type": "number"},
"effective_ehp": {"type": "number"},
"ttk_vs_reference": {"type": "number"},
"composite_score": {"type": "number"},
"synergy": {"type": "number"}
}
}
},
"counters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"target": {"type": "string"},
"counter": {"type": "string"},
"advantage": {"type": "number"},
"evidence_games": {"type": "integer", "minimum": 0}
}
}
},
"patch_deltas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"win_rate_before": {"type": "number"},
"win_rate_after": {"type": "number"},
"win_rate_delta": {"type": "number"},
"pick_rate_delta": {"type": "number"},
"direction": {"type": "string", "enum": ["buff", "nerf", "neutral"]}
}
}
},
"scenarios": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {"type": "string"},
"confidence": {"type": "number", "minimum": 0, "maximum": 1},
"description": {"type": "string"},
"expected_top_builds": {"type": "array", "items": {"type": "string"}},
"expected_tier_movements": {"type": "array", "items": {"type": "string"}}
}
}
}
}
}
Knowledge Query Output Schema (Step 4)
{
"type": "object",
"properties": {
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"authors": {"type": "string"},
"year": {"type": "integer"},
"venue": {"type": "string"},
"doi_or_url": {"type": "string"},
"tier": {"type": "integer", "enum": [1, 2, 3, 4]},
"relevance": {"type": "string", "enum": ["H", "M", "L"]},
"key_finding": {"type": "string"}
}
}
},
"gaps": {"type": "array", "items": {"type": "string"}},
"coverage": {"type": "string", "enum": ["Strong", "Moderate", "Weak"]}
}
}
Final Report Output Schema (Step 5-6)
{
"type": "object",
"properties": {
"requirements": {"type": "object"},
"evidence": {"$ref": "#/definitions/EvidenceBundle"},
"hero_stats": {"type": "array"},
"build_rankings": {"type": "array"},
"counters": {"type": "array"},
"patch_deltas": {"type": "array"},
"scenarios": {"type": "array"},
"knowledge_citations": {"type": "array"},
"knowledge_gaps": {"type": "array"},
"coverage_rating": {"type": "string"},
"degradation_level": {"type": "integer"},
"limitations": {"type": "array"},
"risks": {"type": "array"},
"remediation": {"type": "array"},
"verdict": {"type": "string", "enum": ["Strong Meta Plan", "Conditional (meta shifting)", "Insufficient Data", "Inconclusive"]},
"gates": {"type": "array"},
"language": {"type": "string"},
"generated_at": {"type": "string", "format": "date-time"}
},
"required": ["verdict", "gates", "language", "generated_at"]
}
Skill Execution Protocol
Harness Execution Flow
┌─────────────────────────────────────────────────────────────────┐
│ USER INPUT │
│ /esports-theorycrafting-meta-analysis "Analyze LoL jungle meta" │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ PRE-FLIGHT: Language Detection │
│ Detect en/vi from diacritics + keywords → LANG │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ STEP 1: sub-gather-requirements │
│ Input: user query │
│ Internal Gate: At least one object of analysis confirmed │
│ Output: Requirements object │
│ Auto-fix: Ask up to 2 clarifying questions │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ STEP 2: sub-evidence-collector │
│ Input: Requirements object │
│ Tool: evidence_collector.py (EvidenceCollector) │
│ Internal Gate: Current data + 1 authoritative doc OR flag │
│ Output: EvidenceBundle (tier-labeled) │
│ Auto-fix: Fallback to SECOND-KNOWLEDGE-BRAIN.md, escalate degr. │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ STEP 3: sub-core-analysis │
│ Input: Requirements, EvidenceBundle, optional JSON inputs │
│ Tool: theorycraft_engine.py │
│ Internal Gates: G1 (formulas+match data), G2 (counters->top5), │
│ G3 (sources dated + deltas), G4 (Tier =1 academic/authoritative source │
│ Output: KnowledgeQuery (citations + gaps + coverage) │
│ Auto-fix: WebSearch gap-fill (max 2 queries) │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ STEP 5: sub-advisor │
│ Input: All prior outputs │
│ Tool: harness_runner.py: derive_verdict/risks/remediation │
│ Internal Gate: Verdict ∈ {4 declared categories}, disclosure pre │
│ Output: verdict, scenarios, risks, remediation, evidence chain │
│ Auto-fix: Force to "Inconclusive" if invalid verdict │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ STEP 6: Quality Gate Review (Main Harness) │
│ Input: All outputs, Requirements, EvidenceBundle │
│ Tool: harness_runner.py:evaluate_gates() │
│ Gates: U1-U6 (universal) + G1-G4 (domain) = 10 total │
│ Output: GateResult[] with pass/fail + limitation notes │
│ Auto-fix: 2 retry attempts per gate; emit limitation if fail │
└────────────────────────────┬────────────────────────────────────┘
│
v
┌─────────────────────────────────────────────────────────────────┐
│ FINAL REPORT │
│ JSON: logs/harness_report.json │
│ Markdown: logs/harness_report.md │
│ Includes: Post-Execution Gate Checklist (U1-U6 + G1-G4) │
└─────────────────────────────────────────────────────────────────┘
Skill Invocation Patterns
Pattern 1: Main Skill (Entry Point)
User: /esports-theorycrafting-meta-analysis "Analyze LoL patch 14.10"
↓
Claude: Loads skills/main.md
↓
main.md orchestrates Steps 1-6 sequentially
Pattern 2: Sub-Skill Invocation (from main.md)
main.md Step 1:
↓
Skill("sub-gather-requirements")
↓
sub-gather-requirements.md executes
↓
Returns Requirements object
Pattern 3: CLI Execution (bypassing Claude)
python tools/harness_runner.py \
--query "Analyze LoL patch 14.10 jungle meta" \
--heroes-json inputs/heroes.json \
--output-md logs/report.md
Skill Validation Protocol
Validation Levels
- Structural Validation (
tools/validate_project.py)
- 8-File Contract compliance
- Directory structure
- YAML frontmatter validity
- UTF-8 encoding (no BOM)
- Cross-reference consistency
- Functional Validation (
tests/test_*.py)
- Unit tests for each module
- Integration tests for harness
- End-to-end scenario tests
- Quality Gate Validation (runtime)
- U1-U6 universal gates
- G1-G4 domain gates
- Auto-fix attempts
- Limitation emission
Validation Checklist
Pre-Flight Validation (before skill execution):
- [ ] All skill files exist (main.md + 5 sub-*.md)
- [ ] YAML frontmatter valid in all files
- [ ] SECOND-KNOWLEDGE-BRAIN.md accessible
- [ ] Python modules compile without syntax errors
Runtime Validation (during skill execution):
- [ ] Each step completes before next begins
- [ ] Internal gates pass or auto-fix attempted
- [ ] Degradation level tracked accurately
- [ ] Language detection consistent
Post-Execution Validation (after skill execution):
- [ ] All 10 gates evaluated
- [ ] Verdict is one of 4 declared categories
- [ ] Disclosure present before verdict
- [ ] JSON and Markdown outputs generated
- [ ] Post-Execution Gate Checklist complete
Validation Error Handling
| Error Type | Detection | Recovery | |------------|-----------|----------| | Missing skill file | File not found | Log error, skip sub-skill, escalate degradation | | Invalid frontmatter | YAML parse error | Use default metadata, log warning | | Internal gate failure | Gate check returns False | Auto-fix (2 retries), then emit limitation | | Verdict invalid | Verdict ∉ {4 categories} | Force to "Inconclusive", flag | | Output write failure | IO error | Log error, return exit code 2 |
Skill Extension Protocol
Adding New Sub-Skills
- Create
skills/sub-{name}.mdwith proper frontmatter - Implement correspon
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: dungnotnull
- Source: dungnotnull/esports-theorycrafting-meta-analysis-agent-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.