Agent skill

Godot Best Practices

by jwynia in jwynia/agent-skills

Guide AI agents through Godot 4.x GDScript coding best practices including scene organization, signals, resources, state machines, and performance optimization.

MITAuto-check passedGame Development

Install Godot Best Practices

skills CLI
$ npx skills add jwynia/agent-skills --skill godot-best-practices -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jwynia/agent-skills godot-best-practices --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jwynia/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tech/game-development/godot/godot-best-practices .claude/skills/godot-best-practices && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
godot-best-practices
GitHub stars
170
Token cost
~3.2k tokens
SKILL.md length
502 words
Files
13 (incl. references, assets)
Skills in repo
111
Repo updated
First seen
Licence
MIT

At a glance

Guide AI agents through Godot 4.x GDScript coding best practices including scene organization, signals, resources, state machines, and performance optimization.

  • Works in 5 steps: Naming Conventions → Type Hints (Static Typing) → Node References → …
  • Asks about Godot patterns
  • SKILL.md covers When to Use This Skill, Core Principles, Quick Reference and Code Generation Guidelines, plus 4 more sections
  • Calls node

What it does

Godot Best Practices is an agent skill from jwynia/agent-skills. Guide AI agents through Godot 4.x GDScript coding best practices including scene organization, signals, resources, state machines, and performance optimization. This skill should be used when generating GDScript code, creating Godot scenes, designing game architecture, implementing state machines, object pooling, save/load systems, or when the user asks about Godot patterns, node structure, or GDScript standards. Keywords: godot, gdscript, game development, signals, resources, scenes, nodes, state machine, object…

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including reference files and assets (for example `assets/templates/autoload-manager.gd.md`, `assets/templates/base-script.gd.md` and `assets/templates/state-machine.gd.md`). Compatibility notes: Requires Godot 4.x project. GDScript only (not C).

It sits in Game Development, covering Game development and Type safety. It works with Godot. The licence is MIT.

When your agent uses it

  • Asks about Godot patterns
  • GDScript standards

Example prompts

  • “/godot-best-practices”

Requirements

  • Compatibility (from SKILL.md): Requires Godot 4.x project. GDScript only (not C#).

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Naming Conventions
  2. Type Hints (Static Typing)
  3. Node References
  4. Signal-Driven Architecture
  5. Resource Loading

What it can do on your machine

Read from SKILL.md and the folder at commit e02ec7e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Godot 4.x project. GDScript only (not C#).

    From compatibility in the SKILL.md frontmatter.

Context cost

Godot Best Practices loads about 3.2k tokens when it runs, and up to ~24k if it reads all its reference files. Until then it costs about 148 tokens; SKILL.md has 502 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~148
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~24k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jwynia/agent-skills at commit e02ec7e, republished under its MIT licence (© jwynia). 502 words, ~3,155 tokens.

Download SKILL.mdSave it as .claude/skills/godot-best-practices/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
godot-best-practices
description
Guide AI agents through Godot 4.x GDScript coding best practices including scene organization, signals, resources, state machines, and performance optimization. This skill should be used when generating GDScript code, creating Godot scenes, designing game architecture, implementing state machines, object pooling, save/load systems, or when the user asks about Godot patterns, node structure, or GDScript standards. Keywords: godot, gdscript, game development, signals, resources, scenes, nodes, state machine, object pooling, save system, autoload, export, type hints.
compatibility
Requires Godot 4.x project. GDScript only (not C#).
license
MIT
metadata.author
agent-skills
metadata.version
1.0
metadata.godot_version
4.x
metadata.type
utility
metadata.mode
assistive
metadata.domain
gamedev

Godot 4.x GDScript Best Practices

Guide AI agents in writing high-quality GDScript code for Godot 4.x. This skill provides coding standards, architecture patterns, and templates for game development.

When to Use This Skill

Use this skill when:

  • Generating new GDScript code
  • Creating or organizing Godot scenes
  • Designing game architecture and node hierarchies
  • Implementing state machines, object pools, or save systems
  • Answering questions about GDScript patterns or Godot conventions
  • Reviewing GDScript code for quality issues

Do NOT use this skill when:

  • Working with C# in Godot (use C# patterns)
  • Working with Godot 3.x (syntax differs significantly)
  • Using GDExtension/C++ (different paradigm)
  • Working with Godot's visual scripting

Core Principles

1. Naming Conventions

Follow GDScript naming standards consistently:

gdscript
# Classes: PascalCase
class_name PlayerController
extends CharacterBody2D

# Signals: past_tense_snake_case (describe what happened)
signal health_changed(new_health: int)
signal player_died
signal item_collected(item: Item)

# Constants: SCREAMING_SNAKE_CASE
const MAX_SPEED: float = 200.0
const JUMP_FORCE: int = -400

# Variables and functions: snake_case
var current_health: int = 100
var _private_variable: float = 0.0  # Leading underscore for private

func calculate_damage(base: int, multiplier: float) -> int:
    return int(base * multiplier)

func _private_helper() -> void:  # Leading underscore for private
    pass
2. Type Hints (Static Typing)

Use explicit type hints everywhere for autocomplete and error detection:

gdscript
# Variable declarations
var speed: float = 100.0
var player: CharacterBody2D
var items: Array[Item] = []
var stats: Dictionary = {}

# Function signatures with return types
func get_damage() -> int:
    return _base_damage * _multiplier

func find_nearest_enemy(position: Vector2) -> Enemy:
    # Implementation
    return null

# Typed signals (Godot 4.x)
signal score_updated(new_score: int, old_score: int)
signal target_acquired(target: Node2D, distance: float)

# Node references with types
@onready var sprite: Sprite2D = $Sprite2D
@onready var collision: CollisionShape2D = $CollisionShape2D
@onready var animation_player: AnimationPlayer = %AnimationPlayer
3. Node References

Use modern patterns for stable, refactor-friendly references:

gdscript
# PREFER: @onready with type hints
@onready var health_bar: ProgressBar = $UI/HealthBar
@onready var weapon: Weapon = $WeaponMount/Weapon

# PREFER: Unique names with % for critical nodes
@onready var player: Player = %Player
@onready var game_manager: GameManager = %GameManager

# AVOID: get_node() in _ready()
func _ready() -> void:
    # Don't do this
    var sprite = get_node("Sprite2D")

# AVOID: Deep fragile paths
@onready var thing = $Parent/Child/GrandChild/GreatGrandChild  # Fragile
4. Signal-Driven Architecture

Use signals for decoupled communication. Follow "signal up, call down":

gdscript
# Child node emits signals (doesn't know about parent)
class_name HealthComponent
extends Node

signal health_changed(current: int, maximum: int)
signal died

var _health: int = 100
var _max_health: int = 100

func take_damage(amount: int) -> void:
    _health = max(0, _health - amount)
    health_changed.emit(_health, _max_health)
    if _health <= 0:
        died.emit()
gdscript
# Parent connects to child signals (knows about children)
class_name Player
extends CharacterBody2D

@onready var health: HealthComponent = $HealthComponent
@onready var sprite: Sprite2D = $Sprite2D

func _ready() -> void:
    health.health_changed.connect(_on_health_changed)
    health.died.connect(_on_died)

func _on_health_changed(current: int, maximum: int) -> void:
    # Update UI, play effects, etc.
    pass

func _on_died() -> void:
    sprite.modulate = Color.RED
    queue_free()
5. Resource Loading

Choose the right loading strategy:

gdscript
# preload(): Compile-time loading for critical/small assets
const BULLET_SCENE: PackedScene = preload("res://scenes/bullet.tscn")
const PLAYER_SPRITE: Texture2D = preload("res://sprites/player.png")
const DAMAGE_SOUND: AudioStream = preload("res://audio/damage.wav")

# load(): Runtime loading for optional/large assets
func load_level(level_name: String) -> void:
    var path := "res://levels/%s.tscn" % level_name
    var level_scene: PackedScene = load(path)
    var level := level_scene.instantiate()
    add_child(level)

# ResourceLoader for async loading (prevents stuttering)
func _load_level_async(path: String) -> void:
    ResourceLoader.load_threaded_request(path)
    # Check with: ResourceLoader.load_threaded_get_status(path)
    # Get with: ResourceLoader.load_threaded_get(path)

Quick Reference

CategoryPreferAvoid
Node references@onready var x: Type = $Pathget_node() in _ready()
Unique nodes%UniqueNameDeep paths $A/B/C/D
Resource loadingpreload() for small/criticalload() everywhere
SignalsTyped: signal x(val: int)String: emit_signal("x")
Type safetyExplicit type hintsUntyped variables
Constantsconst or @exportMagic numbers/strings
Null checksis_instance_valid(node)node != null for freed nodes
Coroutinesawaityield (deprecated)
GroupsScene-specific groupsGlobal groups for everything
AutoloadsServices/managers onlyGame logic in autoloads
PropertiesSetters/gettersDirect mutation
CommunicationSignal up, call downChild calling parent methods

Code Generation Guidelines

Script Structure

Order sections consistently:

gdscript
class_name MyClass
extends Node2D
## Brief description of this class.
##
## Longer description if needed, explaining purpose and usage.

# === Signals ===
signal state_changed(new_state: State)

# === Enums ===
enum State { IDLE, RUNNING, JUMPING }

# === Exports ===
@export var speed: float = 100.0
@export_group("Combat")
@export var damage: int = 10
@export var attack_range: float = 50.0

# === Constants ===
const MAX_HEALTH: int = 100

# === Public Variables ===
var current_state: State = State.IDLE

# === Private Variables ===
var _internal_counter: int = 0

# === Onready ===
@onready var sprite: Sprite2D = $Sprite2D
@onready var collision: CollisionShape2D = $CollisionShape2D

# === Lifecycle Methods ===
func _ready() -> void:
    pass

func _process(delta: float) -> void:
    pass

func _physics_process(delta: float) -> void:
    pass

# === Public Methods ===
func take_damage(amount: int) -> void:
    pass

# === Private Methods ===
func _calculate_knockback() -> Vector2:
    return Vector2.ZERO
Export Annotations

Use exports for editor-configurable values:

gdscript
# Basic exports
@export var health: int = 100
@export var speed: float = 200.0
@export var player_name: String = "Player"

# Range constraints
@export_range(0, 100) var percentage: int = 50
@export_range(0.0, 1.0, 0.1) var volume: float = 0.8

# Resource exports
@export var texture: Texture2D
@export var scene: PackedScene
@export var audio: AudioStream

# Grouped exports
@export_group("Movement")
@export var walk_speed: float = 100.0
@export var run_speed: float = 200.0

@export_group("Combat")
@export var attack_damage: int = 10

# Enum exports
@export var difficulty: Difficulty = Difficulty.NORMAL
enum Difficulty { EASY, NORMAL, HARD }

# Flags (multiselect)
@export_flags("Fire", "Water", "Earth", "Air") var elements: int = 0

Common Game Patterns

State Machine (Overview)

Use enum-based state machines for simple cases:

gdscript
enum State { IDLE, WALK, JUMP, ATTACK }

var current_state: State = State.IDLE

func _physics_process(delta: float) -> void:
    match current_state:
        State.IDLE:
            _process_idle(delta)
        State.WALK:
            _process_walk(delta)
        State.JUMP:
            _process_jump(delta)
        State.ATTACK:
            _process_attack(delta)

func change_state(new_state: State) -> void:
    if current_state == new_state:
        return
    _exit_state(current_state)
    current_state = new_state
    _enter_state(new_state)

See references/patterns/state-machine.md for advanced implementations.

Object Pooling (Overview)

Reuse objects to avoid instantiation cost:

gdscript
class_name ObjectPool
extends Node

var _pool: Array[Node] = []
var _scene: PackedScene

func _init(scene: PackedScene, initial_size: int = 10) -> void:
    _scene = scene
    for i in initial_size:
        var obj := _scene.instantiate()
        obj.set_process(false)
        _pool.append(obj)

func acquire() -> Node:
    if _pool.is_empty():
        return _scene.instantiate()
    var obj := _pool.pop_back()
    obj.set_process(true)
    return obj

func release(obj: Node) -> void:
    obj.set_process(false)
    _pool.append(obj)

See references/patterns/object-pooling.md for complete implementation.

Save/Load (Overview)

Use Resources or JSON for save data:

gdscript
# Custom Resource for save data
class_name SaveData
extends Resource

@export var player_position: Vector2
@export var player_health: int
@export var inventory: Array[String]
@export var level_name: String

# Save
func save_game(data: SaveData) -> void:
    ResourceSaver.save(data, "user://save.tres")

# Load
func load_game() -> SaveData:
    if ResourceLoader.exists("user://save.tres"):
        return load("user://save.tres") as SaveData
    return SaveData.new()

See references/patterns/save-load-system.md for comprehensive guide.

Show full SKILL.md (194 more words)Show less

Common Anti-Patterns

Anti-PatternProblemSolution
Polling in _processWastes CPU on unchanged stateUse signals for state changes
get_parent().get_parent()Tight coupling, fragileSignal up, or use groups
Deep node paths $A/B/C/DBreaks on refactorUse %UniqueName
load() in _processStuttering, memory churnpreload() or cache reference
String signals emit_signal("x")Typos, no autocompleteTyped: signal_name.emit()
Untyped @onready var x = $NodeLoses autocompleteAlways add type hint
Logic in autoloadsTesting difficulty, couplingKeep autoloads thin
Magic numbersUnclear meaningUse const or @export
node != null for freed nodesReturns true for freedUse is_instance_valid()
Circular dependenciesLoad errors, unclear flowDependency injection or signals

Additional Resources

Pattern Guides
  • references/patterns/state-machine.md - Full state machine implementations
  • references/patterns/object-pooling.md - Complete pooling system
  • references/patterns/save-load-system.md - Comprehensive save/load guide
  • references/patterns/input-handling.md - Input buffering and rebinding
Architecture
  • references/architecture/project-structure.md - Directory organization
  • references/architecture/scene-composition.md - Scene design patterns
  • references/architecture/node-communication.md - Signals vs direct calls
GDScript Deep Dives
  • references/gdscript/type-system.md - Static typing in depth
  • references/gdscript/coroutines-await.md - Async patterns with await
Templates
  • assets/templates/base-script.gd.md - Standard script template
  • assets/templates/state-machine.gd.md - State machine template
  • assets/templates/autoload-manager.gd.md - Autoload singleton template

Limitations

  • GDScript only (not C#, GDExtension, or VisualScript)
  • Godot 4.x syntax (some patterns differ from 3.x)
  • Game-focused patterns (not editor plugin development)
  • No runtime validation scripts (GDScript requires Godot runtime)

© jwynia, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 12 other files (references, assets) in skills/tech/game-development/godot/godot-best-practices of jwynia/agent-skills.

  • SKILL.md
  • assets/templates/autoload-manager.gd.md
  • assets/templates/base-script.gd.md
  • assets/templates/state-machine.gd.md
  • references/architecture/node-communication.md
  • references/architecture/project-structure.md
  • references/architecture/scene-composition.md
  • references/gdscript/coroutines-await.md
  • references/gdscript/type-system.md
  • references/patterns/input-handling.md
  • references/patterns/object-pooling.md
  • references/patterns/save-load-system.md
  • references/patterns/state-machine.md

Open the folder on GitHubat commit e02ec7e

Compare with similar skills

Godot Best Practices next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Godot Best Practices compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Godot Best Practices this skilljwynia/agent-skills170—~3.2kAutomated safety check: PassMIT
Gdscript Patternsjame581/GodotPrompter805—~3.5kAutomated safety check: PassMIT
Godot Gdscript Masterythedivergentai/GD-Agentic-Skills821—~3.3kAutomated safety check: PassLGPL-3.0
Godot Gdscript Patterns925236118/AlphaAgent10310 repos~5kAutomated safety check: PassMIT
2D Map and Scene Generator0x0funky/agent-sprite-forge4.4k—~2.9kAutomated safety check: PassMIT
Godot UI Integrationzimo-xiao-zheng/godot-ui-integration285—~1.5kAutomated safety check: PassMIT

Similar skills

  • Gdscript Patterns

    jame581/GodotPrompter

    A skill your agent uses when writing GDScript — static typing, await/coroutines, lambdas, match patterns, export annotations, inner classes, and common idioms

    805 GitHub stars~3.5k tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Godot Gdscript Mastery

    thedivergentai/GD-Agentic-Skills

    Expert GDScript landmine guidance: static typing opcodes, signal-up/call-down, %UniqueName/@onready lifecycle, Callable bind/unbind, await sequences, typed collections, and safe Dictionary iteration.

    821 GitHub stars~3.3k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Godot Gdscript Patterns

    925236118/AlphaAgent

    Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.

    103 GitHub starsUsed in 10 repos~5k tokens
    Game DevelopmentAuto-check passed
  • 2D Map and Scene Generator

    0x0funky/agent-sprite-forge

    Plans and builds 2D game maps and scenes, from tilemaps and parallax backgrounds to HD-2D plates, with collision checks, a playable HTML preview and Tiled, Godot or LDtk export.

    4.4k GitHub stars~2.9k tokensUpdated 5 days ago
    Game DevelopmentAuto-check passed
  • Godot UI Integration

    zimo-xiao-zheng/godot-ui-integration

    Build or revise Godot UI from an approved design, separated art, or a visual reference when scene structure, gameplay binding, and runtime visual verification all matter.

    285 GitHub stars~1.5k tokensUpdated 1 mo ago
    Game DevelopmentAuto-check passed
  • Godot Wechat Minigame Adapter

    godothub/godot-minigame

    Apply the bundled self-contained Godot WeChat Mini Game adapter kit to an official Godot checkout.

    187 GitHub stars~1.5k tokensUpdated 25 days ago
    Game DevelopmentAuto-check passed

More from jwynia/agent-skills

All 111 skills in this repo
  • Devcontainer

    jwynia/agent-skills

    Diagnose devcontainer configuration problems and guide development environment setup.

    170 GitHub stars~1.2k tokensUpdated 7 mo ago
    Auto-check: notes
  • Frontend Design

    jwynia/agent-skills

    Create distinctive, production-grade frontend interfaces with high design quality.

    170 GitHub stars~3.2k tokensUpdated 7 mo ago
    Auto-check passed
  • Gitea Workflow

    jwynia/agent-skills

    Orchestrate agile development workflows for Gitea repositories using the tea CLI.

    170 GitHub stars~3.8k tokensUpdated 7 mo ago
    Auto-check passed
  • Godot Asset Generator

    jwynia/agent-skills

    Generate game assets using AI image generation APIs (DALL-E, Replicate, fal.ai) and prepare them for Godot.

    170 GitHub stars~3.8k tokensUpdated 7 mo ago
    Auto-check passed
  • Mastra Hono

    jwynia/agent-skills

    Develop AI agents, tools, and workflows with Mastra v1 Beta and Hono servers.

    170 GitHub stars~2.9k tokensUpdated 7 mo ago
    Auto-check passed
  • PPTX Generator

    jwynia/agent-skills

    Create and manipulate PowerPoint PPTX files programmatically.

    170 GitHub stars~3.1k tokensUpdated 7 mo ago
    Auto-check passed

Works with

Questions about Godot Best Practices

What does Godot Best Practices do?

Guide AI agents through Godot 4.x GDScript coding best practices including scene organization, signals, resources, state machines, and performance optimization. Godot Best Practices is an agent skill from jwynia/agent-skills.x GDScript coding best practices including scene organization, signals, resources, state machines, and performance optimization.

When should I use Godot Best Practices?

Godot Best Practices fits situations like: asks about Godot patterns; GDScript standards.

How do I install Godot Best Practices in Claude Code?

Run `npx skills add jwynia/agent-skills --skill godot-best-practices -a claude-code`. Or copy the skill folder (skills/tech/game-development/godot/godot-best-practices in jwynia/agent-skills) into .claude/skills/godot-best-practices in your project. Claude Code loads it when a task matches its description.

How do I install Godot Best Practices in Codex?

Run `npx skills add jwynia/agent-skills --skill godot-best-practices -a codex`. Or copy the skill folder (skills/tech/game-development/godot/godot-best-practices in jwynia/agent-skills) into .agents/skills/godot-best-practices in your project. Codex loads it when a task matches its description.

Can I use Godot Best Practices in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jwynia/agent-skills --skill godot-best-practices -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/godot-best-practices, .gemini/skills/godot-best-practices, .github/skills/godot-best-practices and .opencode/skills/godot-best-practices in your project.

What does Godot Best Practices need to run?

Going by SKILL.md and its folder, Godot Best Practices needs the command-line tools its instructions call (node). Compatibility (from SKILL.md): Requires Godot 4.x project. GDScript only (not C#)..

Does Godot Best Practices access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Godot Best Practices safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Godot Best Practices use?

Godot Best Practices is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Godot Best Practices use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.

What are the alternatives to Godot Best Practices?

Skills that share tags, products or a category with Godot Best Practices: Gdscript Patterns (jame581/GodotPrompter, 805 stars), Godot Gdscript Mastery (thedivergentai/GD-Agentic-Skills, 821 stars), Godot Gdscript Patterns (925236118/AlphaAgent, 103 stars) and 2D Map and Scene Generator (0x0funky/agent-sprite-forge, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Godot Best Practices?

jwynia (a GitHub user) maintains it in jwynia/agent-skills, which has 170 GitHub stars. The repository holds 111 skills in this directory. The repository was last updated on February 24, 2026.

Source: jwynia/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.