TE

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.zip

Installs 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.
103 charsno explicit “when” trigger
Intermediate

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

You give it
A request to define a tech node or check researchability
You get back
C# code for `TechNode` `ScriptableObject` or validation logic for research

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 Visual data (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:

  1. Descomenta los tests above
  2. Implementa la funcionalidad mínima para que compile
  3. Ejecuta los tests — deben fallar (RED)
  4. Implementa la funcionalidad real
  5. Verifica que los tests pasen (GREEN)
  6. 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

unity_version: ">=6.0"

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.

SkillInstallsUpdatedSafetyDifficulty
tech-tree-research (this skill)04moReviewIntermediate
software-architecture3336moNo flagsIntermediate
brainstorming934moReviewBeginner
codex322moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

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.

333868

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

93235

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.

32238

game-development

davila7

Game development orchestrator. Routes to platform-specific skills based on project needs.

70195

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.

35110

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.

697

Search skills

Search the agent skills registry