From oh-my-claudecode-research
Compares figure deck against outline document and produces prioritized TODO of gaps (P0/P1/P2). Reads config from CLAUDE.md.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oh-my-claudecode-research:todofigThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Goal: compare what an exported figure deck **currently contains** against what an outline document **prescribes**, and produce a prioritized, actionable TODO so the user knows exactly what to fix.
Goal: compare what an exported figure deck currently contains against what an outline document prescribes, and produce a prioritized, actionable TODO so the user knows exactly what to fix.
When this skill is invoked, immediately execute the workflow below. Do not only restate or summarize these instructions back to the user.
This skill is status + gaps + prioritized actions. For a status-only snapshot (no TODO), use the sync skill (called by /sync).
Read the project's CLAUDE.md for a ## Research stack section. Required fields:
| Field | Purpose | Example |
|---|---|---|
Deck file | Path to the .key / .pptx deck (drives figure refresh via cropfig) | decks/main.key |
Outline file | Canonical outline (markdown) | outline.md |
Figure count | Total figures expected | 8 |
Result pattern | Regex to find result/figure blocks | ^### Result (\d+) |
Report language | Output language | English |
Report output dir | Where to save the TODO report | ./todofig_reports/ |
Optional field:
| Field | Default | Purpose |
|---|---|---|
Figure PNG dir | <dirname(Deck file)>/png/ | Where the cropped per-slide PNGs live. This skill reads these to inspect figure state. Populated by the cropfig skill. |
If any required field is missing, ask the user once for the missing values, then offer to write them into the project's CLAUDE.md as a ## Research stack section. See wiki/Configuration.md for the canonical block format.
Figure refresh is owned by the cropfig skill, not this skill. Run cropfig separately if the PNG dir is stale or empty.
Read Outline file in full. For every block matching Result pattern, extract:
If .claude/agent-memory/supervisor/MEMORY.md exists, read it for unresolved CRITICAL issues. Each unresolved CRITICAL issue that blocks a figure or a main-text claim auto-injects as a P0 item in Step 5, even if the figure looks superficially complete.
List Figure PNG dir/figure*.png in filename order. Each figureNN.png corresponds 1-to-1 with the figure block numbered N in the outline (no slide-to-figure offset — cropfig writes figure-numbered filenames directly).
If Figure PNG dir is empty, cropfig has not been run yet — say so in the report and skip the inspection rather than fabricating panel contents.
For every figure, note:
If .claude/agent-memory/figure-descriptor/color-system.md exists, load it and check every figure against:
supervisor/MEMORY.md flags any contrast as non-significant, ensure no figure asserts it visually as significantBudget note: reading every PNG is token-heavy. If Figure count > 12 and $ARGUMENTS is non-empty, inspect only the focused figure + immediate neighbors; defer the rest unless the gap analysis demands them.
For each figure, build the diff: outline-prescribed contents vs. cropped PNG contents.
Categories to check:
figureNN.png exists that the outline does not describe.Outline file mtime is newer than the deck file mtime (or the latest Figure PNG dir PNG mtime), the outline has probably drifted ahead of the figures. Flag which figures look stale.Deliver the result in Report language using the structure below. Keep figure / panel / condition identifiers in English regardless of Report language.
# Figure-Outline Gap Report — YYYY-MM-DD
## Figure-by-figure
### Fig 1 — [title from outline]
- ✅ ...
- ⚠️ ...
- ❌ ...
- **Next action:** ...
### Fig 2 — [title]
- ✅ ...
- ⚠️ ...
- ❌ ...
- **Next action:** ...
... (through Fig <figure_count>)
## Cross-cutting
- **Missing figures/panels:** ...
- **Orphan slides:** ...
- **Stale (outline newer than deck):** ...
- **Consistency issues:** ...
## Prioritized TODO (this iteration)
1. [P0] ...
2. [P0] ...
3. [P1] ...
4. [P2] ...
## Prioritized TODO (later, before submission)
- ...
Priority rules:
supervisor/MEMORY.md (Step 1.5).Narrative-half balance check (when applicable): after ranking, if the outline structures the project into multiple narrative threads (e.g., two halves of a paper title), check whether P0/P1 items cluster in one thread. If so, flag at the top that the other thread is under-resourced.
Save the full report to ${Report output dir}/todofig_YYYY-MM-DD.md. Create the directory if it doesn't exist (mkdir -p). Do not overwrite any human-maintained TODO file (e.g., a project-level TODO.md).
Inspect $ARGUMENTS (passed through by commands/todofig.md).
If $ARGUMENTS matches a figure identifier (e.g., Fig4, R1, Figure 5, 5), restrict the analysis to that single figure. Skip the cross-cutting and multi-figure sections; produce only the focused figure's ✅ / ⚠️ / ❌ block and a focused TODO.
If $ARGUMENTS is empty, run the full sweep over all Figure count figures.
npx claudepluginhub youngeun1209/oh-my-claudecode-research --plugin oh-my-claudecode-researchReconciles a captured figure deck against an outline document, updates agent memories with factual drifts, and produces a dated status snapshot. For research projects tracking figure progress.
Generates structured Markdown research report from prior phase outputs like brainstorm, plans, code, tests, and plots. Integrates visuals, generates missing plots, verifies claim-evidence integrity.
Audits whether manuscript figures support their claims across 8 rhetorical dimensions: chart-type fit, axis design, visual hierarchy, data density, caption clarity, perceptual accuracy, and narrative arc.