dab3f35079
Phase 0 of the handoff plan, as a marketplace rather than a flat skills/ directory. Content moved out of the LyraResearch archive and depersonalised: addresses stay in the archive, recipes ship. - plugins/ue-design-skills: 17 skills, 232 failure-mode entries, each with the six required fields; catalog.json as the harness-neutral source of truth and .claude-plugin/ as one adapter over it. - _gate: 16 rules, one poisoned fixture per rule, plus surface coverage so a declared file cannot silently miss the line rules. - ADR-0002 (harness-neutral bundle behind a marketplace) and ADR-0003 (split licensing: CC BY-ND 4.0 prose, Apache-2.0 code and metadata). - LICENSE files at both levels, CONTRIBUTING.md, docs/licensing-options.md as the material the licence decision grew from. Verified: gate.py 0 violations; test_gate.py 16/16 rules redden on their fixtures with a clean baseline and 2 root files reaching the line rules. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
123 lines
4.9 KiB
Markdown
123 lines
4.9 KiB
Markdown
# ue-design-skills
|
|
|
|
Design-review skills for Unreal Engine 5.6 projects: norms for how to build a
|
|
system, plus reproducible recipes for finding the failures that never announce
|
|
themselves.
|
|
|
|
Every claim here came out of a line-by-line audit of a large first-party
|
|
reference project. What ships is not the audit — it is the recipe. See
|
|
[Provenance](#provenance).
|
|
|
|
## What is in the box
|
|
|
|
`catalog.json` is the index. It is plain JSON with no vendor vocabulary:
|
|
|
|
```json
|
|
{ "skills": [ { "id": "...", "entry": "skills/<id>/SKILL.md", "use_when": "..." } ] }
|
|
```
|
|
|
|
Each skill is a directory:
|
|
|
|
```text
|
|
skills/<skill-id>/
|
|
├── SKILL.md YAML frontmatter + normative body
|
|
└── references/
|
|
├── patterns.md worked classification, measured scale, hygiene
|
|
└── failure-modes.md entries with a Detect recipe you can run
|
|
```
|
|
|
|
## Using it without any particular agent runtime
|
|
|
|
Nothing here needs a specific harness. Three ways in, cheapest first:
|
|
|
|
1. **Read it.** `SKILL.md` is Markdown. Open it.
|
|
2. **Load it as context.** Point your agent at `skills/<id>/` — the frontmatter
|
|
`description` says when the skill applies, `use_when` in `catalog.json` says
|
|
the same thing in one line for routing.
|
|
3. **Route on the catalog.** Parse `catalog.json`, match `use_when` against the
|
|
task, load the matching `entry`.
|
|
|
|
Skill content is checked to contain no harness-specific tokens, so a recipe that
|
|
works for one agent works for the next. The manifest under `.claude-plugin/` is
|
|
one adapter over this catalog, not the source of truth; adding another adapter
|
|
does not touch `skills/`.
|
|
|
|
## Reading a failure-mode entry
|
|
|
|
Each entry carries six fields, in this order:
|
|
|
|
| Field | What it answers |
|
|
|---|---|
|
|
| **Mechanism** | what the code actually does |
|
|
| **Why it is silent** | why nothing crashes, logs or fails a test |
|
|
| **Why the obvious check misses it** | which natural search returns the wrong answer |
|
|
| **Symptom** | what a human reports, in their words |
|
|
| **Detect** | a command you run against your own tree |
|
|
| **Guardrail** | the rule that stops it recurring |
|
|
|
|
The three middle fields are the point. Anyone can write "check that fields have
|
|
writers"; only someone who did the work can say why `grep` answers "yes" when the
|
|
truth is "no".
|
|
|
|
## Detect recipes are meant to be run, not admired
|
|
|
|
Every recipe was executed against the reference project before shipping. That
|
|
caught two recipes which returned the wrong answer in exactly the case they were
|
|
written for — a member declared with an initializer matches every assignment
|
|
pattern you can write, and a character class containing `>` matches the `->`
|
|
operator. Both are documented in place, because the trap teaches more than the
|
|
command.
|
|
|
|
If a recipe returns nothing in your tree, widen it before concluding the problem
|
|
is absent. **An empty search result proves the pattern, not the absence.**
|
|
|
|
## What this bundle does not claim
|
|
|
|
- It is not a defect list for any current engine version. It is a worked example
|
|
of a classification, measured once, on one version, in one workspace.
|
|
- Entries are evidence about *shapes*, not guarantees about your code.
|
|
- The delivery gate checks form — no absolute paths, no dangling links, no
|
|
missing fields. It cannot check whether an entry is true.
|
|
|
|
## Provenance
|
|
|
|
The material comes from a research project that read Epic's Lyra Starter Game on
|
|
Unreal Engine 5.6 as source rather than running it. Source addresses stay in that
|
|
archive: an address in a tree you do not have is not actionable, and a recipe is.
|
|
|
|
Entry identifiers (`RA-01` and up) resolve to the audited locations in the
|
|
archive, so any specific claim can be produced on request.
|
|
|
|
## License
|
|
|
|
Copyright (c) 2026 MagentaDolphin. The prose is
|
|
[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0/); see
|
|
[LICENSE](LICENSE) for the exact boundary and the permissions that widen it.
|
|
|
|
In short:
|
|
|
|
| | |
|
|
|---|---|
|
|
| Read it, apply it, run the recipes on your code | yes, commercial work included |
|
|
| Edit it privately for your studio | yes, no permission needed |
|
|
| Redistribute it unchanged | yes, with attribution |
|
|
| Publish a modified version as your own product | no |
|
|
| Anything you build with it | yours, no claim made |
|
|
|
|
Four things are deliberately outside the NoDerivatives restriction, and all four
|
|
are Apache-2.0 or explicitly granted: `catalog.json` and
|
|
`.claude-plugin/plugin.json`, everything under `_gate/`, the shell commands
|
|
inside `Detect` fields, and format adapters and translations. The reasoning is
|
|
in `LICENSE` next to each grant — a bundle that tells you to verify every recipe
|
|
against your own tree cannot also forbid you to publish the correction.
|
|
|
|
### A request, not a condition
|
|
|
|
If these skills helped you ship something, a credit is welcome:
|
|
|
|
> ue-design-skills by MagentaDolphin
|
|
|
|
Nothing obliges you to give one. Attribution is required only when you
|
|
redistribute the material itself, and that requirement lives in the license
|
|
rather than here.
|