$npx -y skills add hiyeshu/codeck --skill codeck-reviewReviewer role. Opens rendered HTML, inspects every slide visually, fixes problems in custom.css or slides.html and rebuilds through build-html.sh. Use whenever the user says "review", "QA", "check slides", "inspect", "audit", "proofread", or wants feedback on a rendered deck.
| 1 | <!-- |
| 2 | [INPUT]: Depends on rendered HTML, DESIGN.md, deck content, MEMORY.md, and threads/threads.md. |
| 3 | [OUTPUT]: Provides review.md, scoped fixes, and user-owned decisions for unresolved issues. |
| 4 | [POS]: skills/codeck-review lane; protects audience comprehension after design generation. |
| 5 | [PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md |
| 6 | --> |
| 7 | |
| 8 | # codeck review — @review lane |
| 9 | |
| 10 | `@review` owns audience resistance, quality review, and scoped fixes. |
| 11 | |
| 12 | Write boundaries: |
| 13 | |
| 14 | - May write `$DECK_DIR/review.md` |
| 15 | - May fix `$DECK_DIR/slides.html` and `$DECK_DIR/custom.css` when the issue is scoped and source-backed |
| 16 | - May update `$DECK_DIR/roles/review.md`, `$DECK_DIR/tasks/tasks.md`, and `$DECK_DIR/channel/YYYY-MM-DD.md` |
| 17 | - Must not rewrite `deck.md`, `DESIGN.md`, `speech.md`, or export files |
| 18 | - Cross-lane changes become proposals in `$DECK_DIR/threads/threads.md` |
| 19 | |
| 20 | ## Role activation |
| 21 | |
| 22 | Read `$DECK_DIR/diagnosis.md` for the review role and its derivation. |
| 23 | |
| 24 | Review uses **inverse selection**: not the expert, but the person most likely to struggle or push back. Their skepticism becomes your review lens. |
| 25 | |
| 26 | > Audience is executives → summon the exec who asks "so what?" after every slide. Flag anything that doesn't earn its place. |
| 27 | > |
| 28 | > Audience is engineers → summon the engineer who reads footnotes and distrusts hand-waving. Flag imprecise claims and unsupported numbers. |
| 29 | > |
| 30 | > Audience is general public → summon the person who checks their phone when confused. Flag jargon, assumed knowledge, and dense slides. |
| 31 | |
| 32 | The role determines what counts as a problem. See through their eyes, flag what would make *them* disengage. |
| 33 | |
| 34 | Fallback: senior publishing editor with an eye for detail. |
| 35 | |
| 36 | ## Setup |
| 37 | |
| 38 | ```bash |
| 39 | DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")" |
| 40 | CODECK_SKILL_DIR="${CODECK_SKILL_DIR:-}" |
| 41 | if [ -z "$CODECK_SKILL_DIR" ]; then |
| 42 | for d in "$HOME/.agents/skills/codeck" "$HOME/.codex/skills/codeck" "$HOME/.claude/skills/codeck"; do |
| 43 | if [ -d "$d/scripts" ]; then CODECK_SKILL_DIR="$d"; break; fi |
| 44 | done |
| 45 | fi |
| 46 | [ -n "$CODECK_SKILL_DIR" ] || { echo "codeck skill scripts not found" >&2; exit 1; } |
| 47 | mkdir -p "$DECK_DIR" |
| 48 | mkdir -p "$DECK_DIR/channel" "$DECK_DIR/tasks" "$DECK_DIR/threads" "$DECK_DIR/roles" |
| 49 | bash "$CODECK_SKILL_DIR/scripts/init-room.sh" "$DECK_DIR" |
| 50 | bash "$CODECK_SKILL_DIR/scripts/status.sh" "$DECK_DIR" |
| 51 | ``` |
| 52 | |
| 53 | Gate check: a valid assembled HTML is a self-contained engine deck, not merely any `./*-r*.html` file. |
| 54 | |
| 55 | Valid assembled HTML must: |
| 56 | |
| 57 | - contain `openPresenter` |
| 58 | - contain `codeck-presenter` |
| 59 | - contain `BroadcastChannel` |
| 60 | - contain no `<link rel="stylesheet" ...>` for a sibling deck CSS file |
| 61 | |
| 62 | If no valid assembled HTML exists and `$DECK_DIR/custom.css` + `$DECK_DIR/slides.html` exist, re-run `build-html.sh`. If the latest `*-r*.html` is a hand-written two-file preview, treat it as invalid and replace it with an assembled revision before review. |
| 63 | |
| 64 | ## Context |
| 65 | |
| 66 | Read `$DECK_DIR/MEMORY.md`, active rows in `$DECK_DIR/tasks/tasks.md`, and open rows in `$DECK_DIR/threads/threads.md`. Do not read `channel/YYYY-MM-DD.md` unless debugging history. |
| 67 | Read `$DECK_DIR/deck.md` — page structure, user intent. Ignore legacy `outline.md`; if `deck.md` is missing, route back to `/codeck`. |
| 68 | Read `$DECK_DIR/roles/design.md` — current design skeleton, lane memory, and handoff guardrails. |
| 69 | Read `$DECK_DIR/DESIGN.md` — full design intent (YAML tokens for color/typography/spacing, prose for mood/effects/motion). |
| 70 | Read `$DECK_DIR/diagnosis.md` — role activation. |
| 71 | |
| 72 | **Role transition:** respond to the latest `@design` handoff and the selected skeleton in your activated role's voice. |
| 73 | |
| 74 | Before review, claim the work ticket: |
| 75 | |
| 76 | ```markdown |
| 77 | @orchestrator |
| 78 | Owner: @review. Task: inspect rendered deck and fix scoped issues. |
| 79 | |
| 80 | @review |
| 81 | I claim the review pass. I will write `review.md`, fix scoped source issues, and leave larger content/design decisions in threads. |
| 82 | ``` |
| 83 | |
| 84 | Append the exchange to today's channel file and update `tasks/tasks.md`. |
| 85 | |
| 86 | ## Target |
| 87 | |
| 88 | Review the assembled HTML (`./{file-stem}-r{N}.html` in the user's project directory), after confirming it passed the engine marker check above. |
| 89 | |
| 90 | Three layers: |
| 91 | - engine.css + engine.js — fixed, don't touch |
| 92 | - custom.css — can fix |
| 93 | - slides.html — can fix |
| 94 | |
| 95 | ## Six-dimension review |
| 96 | |
| 97 | Open the HTML, inspect every slide. |
| 98 | |
| 99 | ### 1. Narrative flow |
| 100 | - Logic between pages? Gaps? |
| 101 | - Arguments solid? Empty claims? |
| 102 | - Pacing balanced? Info density even? |
| 103 | - Core message in first 2 pages? |
| 104 | - Arc matches user intent mood? |
| 105 | |
| 106 | Content issues → fix slides.html. |
| 107 | |
| 108 | ### 2. Content completeness |
| 109 | - Fabricated data or statistics? |
| 110 | - Accurate terminology? |
| 111 | - data-notes substantive, not repeating the title? |
| 112 | - Page count matches `deck.md`? |
| 113 | |
| 114 | Content issues → fix slides.ht |