tech-tree-research
Handles research and skill tree progression using a Directed Acyclic Graph structure.
Install
mkdir -p .claude/skills/tech-tree-research && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17788" && unzip -o skill.zip -d .claude/skills/tech-tree-research && rm skill.zipInstalls to .claude/skills/tech-tree-research
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Directed Acyclic Graph (DAG) based Tech Tree. Manages unlock states, prerequisites, and research costs.Key capabilities
- →Manage a dependency graph of technologies or upgrades
- →Define Tech Nodes and their Parents using `ScriptableObjects`
- →Check if a technology can be researched based on prerequisites
- →Store visual data like icons and descriptions in Tech Node `ScriptableObjects`
- →Store enable states in a Research Manager at runtime
- →Validate against cyclic dependencies in the tech tree
How it works
The skill manages a dependency graph where `TechNode` `ScriptableObjects` define technologies and their prerequisites. A Research Manager stores enable states and checks researchability by recursively verifying parent nodes.
Inputs & outputs
When to use tech-tree-research
- →Building RPG skill trees
- →Managing RTS research paths
- →Handling dependency validation
About this skill
Tech Tree & Research
Overview
Manages a dependency graph of technologies/upgrades. Uses ScriptableObjects to define Nodes (Techs) and their Parents (Prerequisites).
When to Use
- Use for Civ-like tech trees
- Use for RPG Skill Trees
- Use for unlocking buildings/units in RTS
- Use for persistent meta-progression
- Use for dependency validation
Architecture
┌─────────────────────────────────────────────────────────────┐
│ RESEARCH GRAPH │
├─────────────────────────────────────────────────────────────┤
│ │
│ TECH NODE (SO) RESEARCH MANAGER │
│ ┌────────────────┐ ┌───────────────────────────┐ │
│ │ Name: "Iron" │ │ Unlocked: {Pottery, Iron} │ │
│ │ Cost: 50 Sci │ │ │ │
│ │ Parents: [Pot] │──────▶ IsUnlocked(Nodes) │ │
│ └────────────────┘ │ CanResearch(Node) │ │
│ └─────────────┬─────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────┐ │
│ │ EVENT: OnTechUnlocked │ │
│ └───────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Best Practices
- ✅ Recursively check parents for
IsResearchable(). - ✅ Store
Visualdata (Icon, Description) in the Node SO. - ✅ Store
State(Unlocked/Available) in the Manager (Runtime). - ✅ Use IDs or Object References for saving/loading.
- ❌ NEVER create cyclic dependencies (A requires B, B requires A). Editor Tools should validate this.
- ❌ NEVER hardcode tech trees in C# classes.
Few-Shot Examples
Example 1: Tech Node Data
User: "Create a tech node."
Agent:
[CreateAssetMenu]
public class TechNode : ScriptableObject
{
public string ID;
public List<TechNode> Prerequisites;
public int ResearchCost;
}
Example 2: Validation Logic
User: "Check if I can research Steel."
Agent:
public bool CanResearch(TechNode node)
{
if (IsUnlocked(node)) return false;
// All parents must be unlocked
foreach (var parent in node.Prerequisites)
{
if (!IsUnlocked(parent)) return false;
}
return true;
}
TDD Contract
⚠️ Legacy Skill — Refactor Pending Este skill NO tiene tests automatizados aún. El siguiente boilerplate es un punto de partida.
// Escribe estos tests ANTES de implementar:
// Test 1: should [expected behavior] when [condition]
[Test]
public void TechTreeResearch_Should{ExpectedBehavior}_When{Condition}()
{{
// Arrange
// TODO: Setup test fixtures
// Act
// TODO: Execute system under test
// Assert
Assert.Fail("Not implemented — write test first");
}}
// Test 2: should handle [edge case]
[Test]
public void TechTreeResearch_ShouldHandle{EdgeCase}()
{{
// Arrange
// TODO: Setup edge case scenario
// Act
// TODO: Execute
// Assert
Assert.Fail("Not implemented");
}}
// Test 3: should throw when [invalid input]
[Test]
public void TechTreeResearch_ShouldThrow_When{InvalidInput}()
{{
// Arrange
var invalidInput = default;
// Act & Assert
Assert.Throws<Exception>(() => {{ /* execute */ }});
}}
Pasos para completar el TDD:
- Descomenta los tests above
- Implementa la funcionalidad mínima para que compile
- Ejecuta los tests — deben fallar (RED)
- Implementa la funcionalidad real
- Verifica que los tests pasen (GREEN)
- Refactorea manteniendo los tests verdes
Nota: Este skill fue marcado como tdd_first: false durante la auditoría v2.0.1. La sección TDD fue agregada automáticamente pero requiere customización manual para reflejar el comportamiento real del skill.
Related Skills
@resource-management-system- Paying research costs@save-load-serialization- Saving unlocked tech
When not to use it
- →When the project does not involve a directed acyclic graph for progression
- →When hardcoding tech trees in C# classes is preferred
- →When cyclic dependencies are intentionally part of the design
Prerequisites
Limitations
- →Cyclic dependencies are not allowed
- →Tech trees should not be hardcoded in C# classes
- →Requires Unity version >= 6.0
How it compares
This skill provides a structured, data-driven approach to managing game progression using `ScriptableObjects` and a dependency graph, which avoids hardcoding and allows for flexible tech tree design, unlike direct C# class implementations.
Compared to similar skills
tech-tree-research side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| tech-tree-research (this skill) | 0 | 4mo | Review | Intermediate |
| software-architecture | 333 | 6mo | No flags | Intermediate |
| brainstorming | 93 | 4mo | Review | Beginner |
| codex | 32 | 2mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by nlelouche
View all by nlelouche →You might also like
software-architecture
davila7
Guide for quality focused software architecture. This skill should be used when users want to write code, design architecture, analyze code, in any case that relates to software development.
brainstorming
obra
Use when creating or developing, before writing code or implementation plans - refines rough ideas into fully-formed designs through collaborative questioning, alternative exploration, and incremental validation. Don't use during clear 'mechanical' processes
codex
Lucklyric
Invoke Codex CLI for complex coding tasks requiring high reasoning capabilities. This skill should be invoked when users explicitly mention "Codex", request complex implementation challenges, advanced reasoning, or need high-reasoning model assistance. Automatically triggers on codex-related requests and supports session continuation for iterative development.
game-development
davila7
Game development orchestrator. Routes to platform-specific skills based on project needs.
senior-fullstack
davila7
Comprehensive fullstack development skill for building complete web applications with React, Next.js, Node.js, GraphQL, and PostgreSQL. Includes project scaffolding, code quality analysis, architecture patterns, and complete tech stack guidance. Use when building new projects, analyzing code quality, implementing design patterns, or setting up development workflows.
command-name
anthropics
This skill should be used when the user asks to "create a plugin", "scaffold a plugin", "understand plugin structure", "organize plugin components", "set up plugin.json", "use ${CLAUDE_PLUGIN_ROOT}", "add commands/agents/skills/hooks", "configure auto-discovery", or needs guidance on plugin directory layout, manifest configuration, component organization, file naming conventions, or Claude Code plugin architecture best practices.