Install
$ agentstack add skill-dungnotnull-indie-game-match-history-database-agent-skill-indie-game-match-history-database-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
Indie Game Match-History Database Skill Registry
Overview
This skill provides a comprehensive, evidence-backed analytical workflow for Indie Game Match-History Data Engineering. It combines real-time data aggregation, recognized domain methods, academic research, and a production-tested engine into a single orchestrated harness that delivers risk-disclosed, fully-evidenced recommendations.
Architecture Pattern
┌─────────────────────────────────────────────────────────────────────┐
│ MAIN HARNESS │
│ (skills/main.md) │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Pre-Flight: Language Detection (vi/en) │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Step 1: sub-gather-requirements │ │
│ │ → Object, scope, timeframe, inputs, audience, language │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Step 2: sub-evidence-collector │ │
│ │ → Current data, authoritative docs, recent news │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Step 3: sub-core-analysis │ │
│ │ → Data model, tiering, queries, scalability, privacy │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Step 4: sub-knowledge-updater │ │
│ │ → Academic evidence, tiered citations, gap flags │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Step 5: sub-advisor │ │
│ │ → Risk-disclosed conclusion, evidence chain, actions │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Step 6: Quality Gate Review │ │
│ │ → 10 gates (U1-U6 + G1-G4) with auto-fix │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ Deliver Output │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ ENGINE GROUNDING LAYER │
│ (indie_match_history/) │
│ ┌─────────────┬──────────────┬──────────────┬─────────────────┐ │
│ │ models.py │ ratings.py │ storage/ │ leaderboard.py │ │
│ │ (Player, │ (ELO, │ (tiered, │ (ZSET, │ │
│ │ Match, │ Glicko-2) │ sqlite, │ bisect) │ │
│ │ Rating) │ │ memory) │ │ │
│ └─────────────┴──────────────┴──────────────┴─────────────────┘ │
│ ┌──────────────┬──────────────┬──────────────┬───────────────┐ │
│ │ replay.py │ privacy.py │ engine.py │ schema.py │ │
│ │ (gzip, │ (GDPR, │ (facade) │ (migrations) │ │
│ │ SHA-256) │ COPPA) │ │ │ │
│ └──────────────┴──────────────┴──────────────┴───────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ KNOWLEDGE BASE │
│ (SECOND-KNOWLEDGE-BRAIN.md) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Academic papers (Tier 1) - ArXiv, Semantic Scholar │ │
│ │ Industry standards (Tier 2) - GDPR, COPPA, rating docs │ │
│ │ Implementation guides (Tier 3) - Blogs, tutorials │ │
│ │ Update log - Crawl pipeline entries with timestamps │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Skill Registration
Main Skill
File: skills/main.md
Registration:
name: indie-game-match-history-database
description: Historical Match Database Architecture & Engine for Indie Games
Trigger Phrases:
- "Design match-history storage"
- "Which rating system for my game"
- "GDPR compliance for player data"
- "Tiered storage architecture"
- "Leaderboard design patterns"
- "Match data scalability"
Input Schema:
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "User's analysis request"
},
"context": {
"type": "object",
"properties": {
"game_type": {"type": "string"},
"player_count": {"type": "integer"},
"match_volume": {"type": "string"},
"region": {"type": "string"}
}
}
},
"required": ["query"]
}
Output Schema:
{
"type": "object",
"properties": {
"language": {"type": "string", "enum": ["en", "vi"]},
"inputs_and_scope": {
"type": "object",
"properties": {
"object_of_analysis": {"type": "string"},
"scope": {"type": "string"},
"timeframe": {"type": "string"},
"available_inputs": {"type": "array"},
"target_audience": {"type": "string"}
}
},
"evidence_collected": {
"type": "object",
"properties": {
"current_data": {"type": "object"},
"authoritative_docs": {"type": "array"},
"recent_news": {"type": "array"}
}
},
"analysis": {
"type": "object",
"properties": {
"data_model": {"type": "object"},
"tiering": {"type": "object"},
"queries_and_indexes": {"type": "object"},
"scalability": {"type": "object"},
"privacy_and_retention": {"type": "object"}
}
},
"academic_evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"authors": {"type": "array"},
"year": {"type": "integer"},
"tier": {"type": "string", "enum": ["1", "2", "3", "4"]},
"doi": {"type": "string"},
"relevance": {"type": "string"}
}
}
},
"verdict": {
"type": "string",
"enum": [
"Scalable Schema",
"Conditional (scale)",
"Unscalable/Non-private",
"Inconclusive"
]
},
"key_risks": {"type": "array"},
"evidence_chain": {"type": "object"},
"recommended_actions": {"type": "array"},
"disclosure": {"type": "string"}
},
"required": ["language", "verdict", "disclosure"]
}
Sub-Skills
1. sub-gather-requirements
File: skills/sub-gather-requirements.md
Purpose: Clarify object of analysis, constraints, timeframe, inputs, audience, language
Input Schema:
{
"type": "object",
"properties": {
"raw_user_message": {"type": "string"},
"provided_materials": {"type": "array"}
}
}
Output Schema:
{
"type": "object",
"properties": {
"object": {"type": "string"},
"scope": {"type": "string"},
"timeframe": {"type": "string"},
"available_inputs": {"type": "array"},
"target_audience": {"type": "string"},
"language": {"type": "string", "enum": ["en", "vi"]},
"analysis_type": {"type": "string"}
},
"required": ["object", "language"]
}
2. sub-evidence-collector
File: skills/sub-evidence-collector.md
Purpose: Fetch authoritative real-time and reference data
Input Schema:
{
"type": "object",
"properties": {
"object": {"type": "string"},
"scope": {"type": "string"},
"timeframe": {"type": "string"},
"language": {"type": "string"}
}
}
Output Schema:
{
"type": "object",
"properties": {
"current_data": {
"type": "object",
"properties": {
"source": {"type": "string"},
"date_fetched": {"type": "string"},
"data": {},
"confidence": {"type": "string"}
}
},
"authoritative_docs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"source": {"type": "string"},
"type": {"type": "string"},
"tier": {"type": "string"},
"key_points": {"type": "array"},
"date_accessed": {"type": "string"}
}
}
},
"recent_news": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"source": {"type": "string"},
"date": {"type": "string"},
"relevance": {"type": "string"}
}
}
},
"knowledge_base_entries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"authors": {"type": "array"},
"year": {"type": "integer"},
"tier": {"type": "string"},
"doi": {"type": "string"},
"relevance_to_analysis": {"type": "string"}
}
}
}
}
}
3. sub-core-analysis
File: skills/sub-core-analysis.md
Purpose: Design storage architecture grounded in engine implementation
Input Schema:
{
"type": "object",
"properties": {
"game": {"type": "string"},
"expected_player_volume": {"type": "integer"},
"expected_match_volume": {"type": "string"},
"leaderboards": {"type": "boolean"},
"replays": {"type": "boolean"},
"language": {"type": "string"}
}
}
Output Schema:
{
"type": "object",
"properties": {
"data_model": {
"type": "object",
"properties": {
"core_entities": {"type": "array"},
"relationships": {"type": "array"},
"constraints": {"type": "array"},
"engine_implementation": {"type": "string"}
}
},
"tiering": {
"type": "object",
"properties": {
"hot_retention_days": {"type": "integer"},
"warm_retention_days": {"type": "integer"},
"cold_retention_days": {"type": "integer"},
"migration_strategy": {"type": "string"},
"cost_estimate": {"type": "string"}
}
},
"queries_and_indexes": {
"type": "object",
"properties": {
"primary_queries": {"type": "array"},
"secondary_indexes": {"type": "array"},
"optimization_patterns": {"type": "array"}
}
},
"scalability": {
"type": "object",
"properties": {
"horizontal_scaling": {"type": "string"},
"vertical_scaling": {"type": "string"},
"bottleneck_analysis": {"type": "array"},
"recommended_architecture": {"type": "string"}
}
},
"privacy_and_retention": {
"type": "object",
"properties": {
"gdpr_compliance": {"type": "boolean"},
"coppa_compliance": {"type": "boolean"},
"retention_aging": {"type": "boolean"},
"right_to_erasure": {"type": "string"},
"engine_implementation": {"type": "string"}
}
}
}
}
4. sub-knowledge-updater
File: skills/sub-knowledge-updater.md
Purpose: Query knowledge base for academic evidence, surface citations, flag gaps
Input Schema:
{
"type": "object",
"properties": {
"topic_keywords": {"type": "array"},
"analysis_type": {"type": "string"}
}
}
Output Schema:
{
"type": "object",
"properties": {
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"authors": {"type": "array"},
"year": {"type": "integer"},
"tier": {"type": "string"},
"doi": {"type": "string"},
"relevance": {"type": "string"},
"key_findings": {"type": "array"}
}
}
},
"coverage_rating": {"type": "string"},
"gaps_flagged": {"type": "array"},
"recommended_search_terms": {"type": "array"}
}
}
5. sub-advisor
File: skills/sub-advisor.md
Purpose: Synthesize risk-disclosed conclusion with evidence chain
Input Schema:
{
"type": "object",
"properties": {
"core_analysis": {"type": "object"},
"evidence_bundle": {"type": "object"},
"knowledge_evidence": {"type": "array"},
"language": {"type": "string"}
}
}
Output Schema:
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"Scalable Schema",
"Conditional (scale)",
"Unscalable/Non-private",
"Inconclusive"
]
},
"confidence": {"type": "string"},
"scenarios": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scenario": {"type": "string"},
"outcome": {"type": "string"},
"probability": {"type": "string"}
}
}
},
"key_risks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"risk": {"type": "string"},
"severity": {"type": "string"},
"mitigation": {"type": "string"}
}
}
},
"evidence_chain": {
"type": "object",
"properties": {
"primary_sources": {"type": "array"},
"secondary_sources": {"type": "array"},
"traceability": {"type": "boolean"}
}
},
"recommended_actions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"action": {"type": "string"},
"priority": {"type": "string"},
"engine_reference": {"type": "string"}
}
}
},
"disclosure": {
"type": "string",
"description": "Must appear BEFORE the verdict"
}
},
"required": ["verdict", "disclosure"]
}
Skill Resolution
Resolution Order
When /indie-game-match-history-database is invoked:
- Main skill loads →
skills/main.md - Pre-flight executes → Language detection (vi/en)
- Sub-skills resolve → Each sub-skill loads on-demand
- Engine loads →
indie_match_history/modules imported - Knowledge base loads →
SECOND-KNOWLEDGE-BRAIN.mdread
Resolution Failures
| Failure Mode | Action | Degradation Level | |--------------|--------|-------------------| | Sub-skill not found | Abort with error | 4 (Harness failed) | | Engine module import failed | Abort
…
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/indie-game-match-history-database-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.