# Get Vtable From Yaml

> Load vtable information from a pre-generated YAML file. Use this skill when you need to get vtable address and size for a class before analyzing virtual functions. This skill checks for existing vtable YAML files and errors out if not found, ensuring the vtable analysis has been done first.

- **Type:** Skill
- **Install:** `agentstack add skill-hlnd2t-cs2-vibesignatures-get-vtable-from-yaml`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [HLND2T](https://agentstack.voostack.com/s/hlnd2t)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [HLND2T](https://github.com/HLND2T)
- **Source:** https://github.com/HLND2T/CS2_VibeSignatures/tree/main/.claude/skills/get-vtable-from-yaml

## Install

```sh
agentstack add skill-hlnd2t-cs2-vibesignatures-get-vtable-from-yaml
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Get VTable from YAML

Load vtable information from a pre-generated `{class_name}_vtable.{platform}.yaml` file beside the binary.

## Parameters

- `class_name`: The class name to look up (e.g., `CCSPlayerController`, `CCSPlayer_WeaponServices`, `CServerSideClient`)

## Method

### 1. Check and Load VTable YAML

Run the following code with the appropriate `class_name`:

```python
mcp__ida-pro-mcp__py_eval code="""
import idaapi
import os

class_name = ""  # Replace with actual class name

input_file = idaapi.get_input_file_path()
dir_path = os.path.dirname(input_file)
platform = 'windows' if input_file.endswith('.dll') else 'linux'

yaml_path = os.path.join(dir_path, f"{class_name}_vtable.{platform}.yaml")

if os.path.exists(yaml_path):
    with open(yaml_path, 'r', encoding='utf-8') as f:
        print(f.read())
    print(f"YAML_EXISTS: True")
else:
    print(f"ERROR: Required file {class_name}_vtable.{platform}.yaml not found.")
"""
```

### 2. Handle Result

**If YAML exists** (`YAML_EXISTS: True`), extract these values from the output:
- `vtable_va`: The vtable virtual address (use as ``)
- `vtable_rva`: The vtable relative virtual address
- `vtable_size`: The vtable size in bytes
- `vtable_numvfunc`: The valid vtable entry count (last valid index = count - 1)
- `vtable_entries`: An array of virtual functions starting from vtable[0].

Example YAML content:
```yaml
vtable_class: CCSPlayerController
vtable_symbol: _ZTV19CCSPlayerController
vtable_va: 0x221fc80
vtable_rva: 0x221fc80
vtable_size: 0xd60
vtable_numvfunc: 428
vtable_entries:
  - 0x9b4bb0
  - 0x9b4bc0
  - 0x9b4bd0
```

**If YAML does NOT exist**, **ERROR OUT** and report to user:
```
ERROR: Required file {class_name}_vtable.{platform}.yaml not found.
Please run `/write-vtable-as-yaml` with class_name={class_name} first to generate the vtable YAML file.
```
Do NOT proceed with any remaining steps in the calling skill.

## Usage in Other Skills

When a skill needs vtable information, use this skill first:

```markdown
### 1. Get {ClassName} VTable Address

**ALWAYS** Use SKILL `/get-vtable-from-yaml` with `class_name={ClassName}`.

If the skill returns an error, stop and report to user.
Otherwise, extract `vtable_va`, `vtable_numvfunc` and `vtable_entries` for subsequent steps.
```

## Expected Output Values

| Field | Description | Example |
|-------|-------------|---------|
| `vtable_class` | Class name | `CCSPlayerController` |
| `vtable_va` | Virtual address of vtable | `0x2114cd0` |
| `vtable_rva` | Relative virtual address | `0x2114cd0` |
| `vtable_size` | Size in bytes | `0xd60` |
| `vtable_numvfunc` | Number of virtual functions | `428` |
| `vtable_entries` | An array of virtual functions starting from vtable[0] | ... |

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [HLND2T](https://github.com/HLND2T)
- **Source:** [HLND2T/CS2_VibeSignatures](https://github.com/HLND2T/CS2_VibeSignatures)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** yes
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-hlnd2t-cs2-vibesignatures-get-vtable-from-yaml
- Seller: https://agentstack.voostack.com/s/hlnd2t
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
