بنقرة واحدة
write-gdd
Author/update a Godot project's GDD as a docs/gdd/ Obsidian folder (index + section notes).
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Author/update a Godot project's GDD as a docs/gdd/ Obsidian folder (index + section notes).
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Compose concept-art briefs from the project's GDD and run the generate→review→lock/regen loop on a persistent concept board (docs/concept-art/board.md).
Check recent Godot code changes against the project's GDD + design pillars for alignment.
Fetch a YouTube video as readable markdown (title, channel, description, clean transcript). WebFetch can't read YouTube — this wraps a tested yt-dlp pipeline.
Scaffold a new Godot scene + script following this project's existing layout + conventions.
Debug Godot 4.x errors, crashes, and Godot-3→4 API confusion.
Godot 4.x GDScript architecture patterns + naming/typing conventions.
| name | write-gdd |
| description | Author/update a Godot project's GDD as a docs/gdd/ Obsidian folder (index + section notes). |
| model | sonnet |
| allowed-tools | Read, Write, Edit, Glob |
| argument-hint | [section or topic] |
Author and maintain a Godot project's Game Design Document as a self-contained Obsidian
"mini-vault" folder at docs/gdd/. The dev opens that folder directly in Obsidian, so every
note must be a first-class Obsidian citizen (valid frontmatter, folder-local links) — and it's
versioned with the code. This skill is generic; the project supplies only the content.
docs/gdd/ is opened as its own vault. Links resolve within the
folder — so up: points at the local index "[[GDD - {codename}]]", never a main-vault
[[Project MOC]]. There is no Templater here: emit literal frontmatter (real
YYYY-MM-DD HH:mm timestamps, the known up-link), not <% tp.* %> placeholders.up: silently drops a note from the index. Get it right on the first write.docs/gdd/
├─ GDD - {codename}.md # master index / hub (one-page discipline)
├─ {PREFIX} - Design Pillars.md # ─┐
├─ {PREFIX} - Game Loops.md # │ Core — the STABLE spine (rarely changes)
├─ {PREFIX} - Player Progression.md # ─┘
├─ {PREFIX} - {Feature}.md # Features — mechanics that span the game (evolve freely)
├─ {PREFIX} - {Content}.md # Content — narrative / characters / levels (variable)
└─ archive/{PREFIX} - {Old}.md # deprecated sections, MOVED not deleted
{codename} = the project's stable codename; {PREFIX} = its short tag (IC, BK, …).A cross-cutting backlog — the Open Questions note, or any register aggregating items owned by
many notes — has one canonical home: each item's full text + status lives there under a
stable ID (Q3, D1, R2…) that the rest of the vault references. Each owning note carries a
one-line pointer back (the IDs that touch it + a link), never a re-typed copy — re-typing
the item in both places is the trap: the two drift, and the reader can't tell which is current.
(A status legend + an at-a-glance table in the canonical note is the recommended trackability
layer, but that format is project taste; the single-source rule is the law.)
Shape the canonical note as a prioritized top-down work-queue — the dev solves it from the top,
one item at a time. Rank items dependency-first, severity-second (an upstream schema/economy node
blocks the ones below it). Tag each with a Mode — 🔨 forge (a live design call) · ✍️ scribe (fix
drift, no new thinking) · ⏸ plan/gate (not a design node) · 🧪 prototype (needs playtest data) — so
the reader knows how each closes. Keep Parked (prototype-gated leans), Deferred
(planning/gate), and Resolved (traceability) as sections outside the active queue. IDs may
encode origin (Q# question · D# reef · R# risk · G# spec-gap · C# contradiction · S#
status). NB these Mode/Status glyphs are local to the note — the index reuses 🔴/🟡/🟢 for
section-completeness; don't conflate them.
Templates (read them, fill literally — do not copy the Templater syntax):
Load context — docs/gdd/GDD - {codename}.md (index) + the relevant section notes. If
docs/gdd/ doesn't exist yet, ask before scaffolding it from the templates (a new GDD folder is
a decision, not a default). Also read docs/STATUS.md (project phase) and the
{PREFIX} - Design Pillars.md note (the constraints).
Find the target from $ARGUMENTS (a section name or topic). If absent, ask what to
write/update.
Existing section → read its note, show the current content, ask what to change, update
in-place (preserve frontmatter; bump updated: to now). New section → create
{PREFIX} - {Section}.md from the section template with literal frontmatter, place it in the
right taxonomy group, and add a row to the index's section table (the Dataview block
auto-lists it, but the human-readable layered table is hand-curated — add the wikilink + status).
Guard the pillars — read {PREFIX} - Design Pillars.md; if a change works against a stated
pillar, flag it before writing. Don't silently encode a contradiction.
Deprecate, don't delete — when a section leaves the active design, MOVE its note to
archive/ (keep the frontmatter; set status accordingly) and drop it from the index's live table.
Reflect status — when a system moves design state, update that note's status:
(idea → in-progress → complete) and, if it shifts the project's phase, note it in docs/STATUS.md
(the godot-status skill owns that dashboard — cross-link, don't duplicate).
Bilingual (VN/EN) — match the language the user writes.
Summarize what changed: which note(s), what moved, any pillar tension raised.
created / updated: exactly YYYY-MM-DD HH:mm (24-hour, no T, no seconds, unquoted).up:: a quoted wikilink → up: "[[GDD - {codename}]]".tags:: inline array → [gdd, project/gamedev].# {PREFIX} - {Section}).docs/gdd/; only archive/ (and asset dirs) nest.