Skip to content
Back to skills

Lens Review

ASecurity

Review a design artifact (GDD / vision / ADR / mechanic spec / prototype doc / any design document) through 100 game design lenses. Auto-picks 3-5 most relevant lenses based on artifact type, outputs multi-angle insights + multiple directions with explicit trade-offs (no single prescribed answer). Hedged tone, not preachy. **Triggers**: (1) user says \"过 lens / lens review / use a lens / 用透镜看看 / change the angle / 换个角度评估\" (2) user provides a design artifact path and asks for \"blind spots / ...

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
ai-agentsgotesting

Works with

  • claude code

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add EthanM2025/game-design-lenses --skill lens-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Lens Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Lens Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ethanm2025-lens-review/badge)](https://www.skillsdirectory.com/skills/ethanm2025-lens-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: lens-review
description: "Review a design artifact (GDD / vision / ADR / mechanic spec / prototype doc / any design document) through 100 game design lenses. Auto-picks 3-5 most relevant lenses based on artifact type, outputs multi-angle insights + multiple directions with explicit trade-offs (no single prescribed answer). Hedged tone, not preachy. **Triggers**: (1) user says \"过 lens / lens review / use a lens / 用透镜看看 / change the angle / 换个角度评估\" (2) user provides a design artifact path and asks for \"blind spots / risks / different perspectives / 盲点 / 风险 / 不同视角\" (3) before/after major changes to a vision or proposition-level doc (4) stuck on what to do next, wants reframing (5) user mentions \"lens / game design lens / 设计透镜\". Library lives at lib/100-lenses.{zh,en}.md, shared between Claude Code and Codex / other tools that read it directly. / 用 100 个游戏设计透镜审视设计 artifact,自动选 3-5 个最相关透镜,产出多视角洞察 + 多方向建议(带 trade-off,不指定对错)。"
argument-hint: "<artifact-path> [#N | --category <cat> | --count <3-8>]"
user-invocable: true
allowed-tools: Read, Glob, Grep
version: 1.0.0
---

# Lens Review Skill

Apply 100 classic game design lenses to a design artifact for multi-angle review.

**What makes this skill different**: it does NOT give you "the right answer". It surfaces **perspectives + multiple directions + trade-offs**, leaving the decision to you. Tone is hedged, not preaching.

---

## Language detection

**Always match the user's language** in the response:

1. If the artifact content is mostly Chinese → read [`lib/100-lenses.zh.md`](../../lib/100-lenses.zh.md), respond in Chinese.
2. If the artifact content is mostly English → read [`lib/100-lenses.en.md`](../../lib/100-lenses.en.md), respond in English.
3. If the user's invocation message is in a different language than the artifact, prefer the **invocation language** for the response (user is the audience).
4. If unclear, default to English.

The lens library files are equivalent in content; pick the one matching the response language so the lens names / questions match the rest of the output.

---

## Data source

**Lens library** (single source of truth, shared across Claude Code and Codex):

- [`lib/100-lenses.zh.md`](../../lib/100-lenses.zh.md) — Chinese
- [`lib/100-lenses.en.md`](../../lib/100-lenses.en.md) — English

100 lenses each, 5 static fields per lens: `Category / How to use / Key questions / Elaboration / When to use`. This skill consumes the library; it does not modify it.

Users can extend the library with their own lenses (custom project-specific lenses) by appending entries in the same format.

---

## Invocation modes

| Form | Behavior |
|---|---|
| `/lens-review <artifact>` | Read artifact + auto-pick 3-5 most relevant lenses + full pass |
| `/lens-review <artifact> #N` | Apply a single specific lens (for deep dive on one angle) |
| `/lens-review <artifact> #N,M,K` | Apply multiple specified lenses |
| `/lens-review <artifact> --category <cat>` | Restrict to a category (Designer/Player/Experience/Process/Game) |
| `/lens-review <artifact> --count 5` | Explicit count (default 3-5, can go 3-8) |

---

## Auto-selection heuristics

After reading the artifact, pick lenses based on **artifact type + content keywords**. Default mapping (can layer):

| Artifact type | Suggested lens categories (pick 3-5 from) |
|---|---|
| **Vision / proposition doc** | Experience (#1 Essential / #2 Surprise / #3 Fun / #4 Curiosity) + Designer (#100 Secret Purpose / #11 Infinite Inspiration / #10 Resonance) |
| **GDD - mechanic / combat / balance** | Game / Balance (#30 Fairness / #31 Challenge / #32 Meaningful Choice / #34 Skill vs Chance / #47 Balance) |
| **GDD - puzzle / level** | Game / Puzzle (#50 Parallelism / #52 The Puzzle) + #61 Interest Curve |
| **ADR / architecture decision** | Process (#13 Eight Filters / #14 Risk Mitigation) + Designer (#100 Secret Purpose / #12 Problem Statement) |
| **UX / HUD / Interface spec** | Interface (#53 Control / #54-55 Physical/Virtual Interface / #56 Transparency / #57 Feedback) |
| **Story / Narrative spec** | Story (#65 Story Machine / #68 Hero's Journey / #70 Story / #69 Weirdest Thing) |
| **Character spec** | Character (#75 Avatar / #76 Function / #77 Traits / #81 Transformation) |
| **Prototype spec / early experiment** | Experience + Process (#13 Eight Filters / #91 Playtesting / #15 The Toy) |
| **Audio / Aesthetics spec** | Experience (#10 Resonance / #63 Beauty) + Aesthetics |
| **Multiplayer / Community spec** | Community (#86 Community / #87 Griefing / #89 Team / #36 Competition / #37 Cooperation) |
| **Generic design review (type unclear)** | Pick one from each of 4 major categories + #1 Essential Experience as anchor |

**Selection principles**:
- Prefer matching artifact keywords against each lens's `When to use` field (already in library)
- Don't pick lenses unrelated to the artifact (better fewer than padding)
- If the artifact spans multiple framings, pick across categories
- **Avoid mechanically picking the same 5 every time** — the heuristics above are starting points, not defaults

**Avoid**:
- ❌ Picking all 100 lenses (selectivity is core value)
- ❌ Picking only "famous" lenses (#1/#2/#3) when more specific ones fit better

---

## Output format

For each picked lens, output the following template. **Strictly follow section order and punctuation**:

```markdown
### Lens #N: English Name (中文名 if responding in Chinese)

> **What this lens asks** / **这盏 lens 在问的是**: [one-sentence framing, distilled from library's `How to use` field]

---

**[Observation]** / **【观察】** — What's in the doc

[List factual evidence from the artifact only. No judgment, no interpretation. Cite with file:line anchors like `[doc.md:L42-L48](path/to/doc.md#L42-L48)`.]

---

**[Insight]** / **【洞察】** — What this lens surfaces (one reading, not a verdict)

[Analyze through this lens. **Must be hedged**: "perhaps / possibly / it looks like / one reading / if X happens, Y might follow".

You may reference relevant examples (from the library's `Elaboration` field, or well-known game design touchstones like Wii Sports, Hades, Slay the Spire, etc).

If there's a counter-reading, surface it: "It could also be read the other way: ..." — show this is one lens among many, not THE truth.]

---

**[Directions to consider]** / **【可以走的方向】** — None is "the right one"; pick based on current resources / timeline / risk appetite

- **A. [Direction title]** — [one-line description].
  *Trade-off*: [costs + benefits, neutral phrasing, no leaning].

- **B. [Direction title]** — [one-line description].
  *Trade-off*: ...

- **C. [Direction title]** — [one-line description].
  *Trade-off*: ...

- **D. [Optional 4th direction]** — [one-line description].
  *Trade-off*: ...

---
```

**Direction count**: minimum 3, maximum 4. Fewer than 3 = narrow, violates "multiple directions" principle; more than 4 = decision fatigue.

---

## Tone rules

**Hedged** (required):
- ✅ "The doc looks like it sells X, but element Y *perhaps* creates a hidden gap"
- ✅ "One possible reading is..."
- ✅ "If [condition], the experience *might* drift from A to B"
- ❌ "The doc is clearly wrong"
- ❌ "Players *will* do X"
- ❌ "You must do X"

**Multiple directions** (required):
- ✅ List 3-4 directions, each with `Trade-off`, no preferred answer
- ❌ "I suggest you do X" — single direction
- ❌ "Best practice is Y" — authoritative voice

**Not preaching** (required):
- ✅ "What this lens surfaces is..." (the lens is doing work, not you lecturing)
- ✅ Reference examples by description, not as gospel ("the classic Wii Sports baseball case")
- ❌ "You should realize..." / "You need to..."
- ❌ Packaging "my judgment" as "universal truth"

**Preserve multiple perspectives** (strongly recommended):
- ✅ Actively surface "It could also be read the other way" — show lens is a tool not dogma
- ✅ Acknowledge trade-offs honestly; don't say "A is obviously better than B"

---

## Execution steps

1. **Parse args**: artifact path + optional lens IDs / category / count
2. **Read artifact**: use Read tool on user-provided doc
3. **Detect language** of artifact (and invocation message), pick library file accordingly
4. **Read library** (`lib/100-lenses.zh.md` or `lib/100-lenses.en.md`) — read once, reuse in context
5. **Pick lenses**:
   - Explicit (`#N` / `#N,M,K`) → use as-is
   - `--category` → restrict to that category's lenses
   - Auto → use § "Auto-selection heuristics" + match artifact keywords against each lens's `When to use` field
6. **For each picked lens, emit the output template**:
   - Distill library's `How to use` + `Key questions` into the "What this lens asks" one-liner
   - Read artifact for evidence → [Observation]
   - Analyze through lens; reference `Elaboration` if relevant → [Insight]
   - List 3-4 directions with `Trade-off` → [Directions]
7. **Summary tail** (always include, 4 sub-items):
   - **Picked** — list the N lenses chosen + one-line "why this lens fits"
   - **Avoided** — if there's an explicit reason to skip certain lenses (e.g., user said "exclude X"), list them
   - **Not picked but worth considering** — list 3-5 other relevant lenses + one-line "why they'd be a different angle"
   - **Deep dive hint** — one line: `/lens-review <artifact> #N` form, so user knows how to single-lens drill
8. **Do not modify the artifact** — only surface perspectives; the user decides what to change

---

## What this skill does NOT do

- ❌ Does not modify the artifact / write patches / generate code
- ❌ Does not pick more than 8 lenses (selectivity is core value)
- ❌ Does not assert absolutely, does not preach, does not give a single direction (tone rules enforce)
- ❌ Does not decide for the user — only shows perspectives + trade-offs
- ❌ Does not invent lenses outside the library (if a custom lens is needed, ask user to extend `lib/100-lenses.*.md`)

---

## Extending the library

Users can append project-specific lenses to `lib/100-lenses.{zh,en}.md` using the same 5-field format. Custom lens numbers should use a prefix to distinguish from the canonical 100, e.g., `#P1 The Lens of NL Translation` for a project-specific lens.

The skill will pick up custom lenses automatically since it reads the whole library at runtime.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.