agentleFS
shub-rajputshub-rajput/design-superskills/skills/research-synthesis/SKILL.md

research-synthesis

Skill10 starsChanged 33 days agoMITView on GitHub

Use when a Figma section holds reference screenshots (competitors, current product, other references) with or without notes and the user wants them turned into one readable document: problem statement, objectives, shared patterns, current state, scope, directions. Triggers include "actionable pointers", "synthesize my research", "problem statement and objectives", "one place to look at all these notes", "turn my stickies into a doc", or a refs section link plus a request for directions.

27 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use competitive-analysis, literature-review and 2 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AnthropicSkill

    competitive-analysis

    Framework for building competitive landscape decks — market positioning, competitor deep-dives, comparative analysis, strategic synthesis. Use when the user asks for a competitive landscape, competitor analysis, peer comparison, market positioning assessment, strategic review, or investment memo deck. Also triggers on "who are the competitors to X", "benchmark X against peers", "build a market map", or any request to systematically evaluate competitive dynamics across an industry.

    Also in 3 projects that use this

  • JDerekLomasSkill

    literature-review

    Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.). This skill should be used when conducting systematic literature reviews, meta-analyses, research synthesis, or comprehensive literature searches across biomedical, scientific, and technical domains. Creates professionally formatted markdown documents and PDFs with verified citations in multiple citation styles (APA, Nature, Vancouver, etc.).

    Also in 3 projects that use this

  • OpenAISkill

    brainstorming

    You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.

    Also in 3 projects that use this

  • BlockSkill

    frontend-design

    Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.

    Also in 4 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. 0 are common, 7 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 25 edited versions we read keep these.

  • 7

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use TaskCreate for each step.

    line 30
  2. Very specific:

    Comments: if the file has comments on the section, note their count (read via get_design_context only if the user asks for them.

    line 59
  3. Distinctive:

    Notes found: Ask one question:

    line 69
  4. Distinctive:

    No notes found: Ask one question with three paths:

    line 76
  5. Distinctive:

    Stop after asking. Do not read notes or draft anything until the user answers.

    line 85
  6. Distinctive:

    Only when stickies exist and they use more than one fill colour.

    line 89
  7. Very specific:

    Keep the transcript in a local data file (research/<slug>-notes.json or inline in the generator script).

    line 113
  8. Distinctive:

    Verify the count: notes transcribed must equal notes inventoried.

    line 115
  9. Distinctive:

    All notes (collapsed by default, grouped by source, verbatim text, screen label, deep link)

    line 137
  10. Very specific:

    Every claim carries a chip that deep-links to the source note: https://www.figma.com/design/<fileKey>/<fileName>?node-id=<A-B>.

    line 140
  11. Very specific:

    Statuses for shared patterns: Use only: Not present, Present, weaker, Present, Open question, Deferred.

    line 142
  12. Distinctive:

    After each round, edit the data structure, rebuild both outputs, republish to the same URL.

    line 159
  13. Very specific:

    Write research/<slug>-research-board.html and .md into the user's project (or the directory they name).

    line 163
  14. Very specific:

    If the Artifact tool is available, publish the HTML there and reuse the same file path on every republish so the URL stays stable.

    line 164

“Common” is measured: kept by at least 6 in 10 of the 25 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Research Synthesis

Turn a canvas of reference screenshots and observations into one document a manager can read in ten minutes: problem, objectives, shared patterns, current state, scope, directions, feature ideas, and a collapsed inventory of every source note. This is the follow-up to design-research: capture puts screens on the canvas, this skill turns what was noticed about them into a synthesis.

The document is the user's audit, written in their voice for their audience. Claude organises and compresses. Claude does not rank, recommend, or decide.

REQUIRED SUB-SKILL: load figma:figma-use before any use_figma call.

Quick Reference

StepWhatKey decision
0PrerequisitesFigma MCP available
1Inventory the sectionScreens, sub-sections, notes of every kind
2Gate on observationsUse existing notes, add more, or gather them
3Gate on colour legendOnly if notes are colour coded
4Read every noteWidgets need screenshots, not the plugin API
5Map notes to screensNearest tile by x within the same sub-section
6Draft the synthesisOne data structure, two outputs
7Review pass with the userVoice, facts, priorities
8PublishArtifact when available, files always

BEFORE YOU START: Create Tasks

Use TaskCreate for each step. Mark in_progress when starting and completed when done.

  1. "Step 0: Prerequisites"
  2. "Step 1: Inventory the section"
  3. "Step 2: Gate on observations"
  4. "Step 3: Gate on colour legend"
  5. "Step 4: Read every note"
  6. "Step 5: Map notes to screens"
  7. "Step 6: Draft the synthesis"
  8. "Step 7: Review pass"
  9. "Step 8: Publish"

Step 0: Prerequisites

  1. Figma MCP (remote server): mcp__figma__get_metadata, mcp__figma__use_figma, mcp__figma__get_screenshot must be available. If not, see shared/common-steps.md, "Figma MCP Setup".
  2. figma-use skill loaded before any use_figma call.
  3. Extract fileKey and nodeId from the URL. node-id=A-B is node A:B.

Step 1: Inventory the Section

One read-only use_figma call. Find the page that owns the node, switch to it, then collect:

  • Sub-sections (one per source: a competitor, the current product, other references) with ids and bounds.
  • Screens: rectangles with an IMAGE fill, or frames, directly inside each sub-section, with their label text (the TEXT node above each tile).
  • Notes of every kind:
    • WIDGET nodes named "Sticky note" (or any widget) with position and size.
    • Instances whose component name contains "note" or "annotation" (dev-note components).
    • Loose TEXT nodes longer than about 25 characters that are not tile labels.
    • Direction or idea stubs: sections or frames whose names look like v1, Option A, Direction.
  • Comments: if the file has comments on the section, note their count (read via get_design_context only if the user asks for them; they are optional input).

get_metadata on a large section can exceed the output limit. When it does, read the saved file in chunks or use use_figma with findAllWithCriteria and return only ids, names, types and bounds.

Report the inventory in one short block: N sources, N screens, N notes by kind, N direction stubs. Name the page.

Step 2: Gate on Observations

Behaviour depends on what Step 1 found.

Notes found. Ask one question:

I found N notes across M sources (K stickies, J dev notes, L text notes). Use these as the observations, or do you want to add more before I read them?

  • Use them as they are
  • I will add more on the canvas and come back
  • Use them, and I will add a few in chat now

No notes found. Ask one question with three paths:

The section has N screens but no observations yet. How do you want to gather them?

  • I will add notes on the canvas and come back
  • I will dictate observations in chat, source by source
  • Review each screen yourself and draft observations for my approval before synthesising

If the user picks the third path: screenshot each tile, write two to four observations per screen as plain factual statements (what is on the screen, what is required, what is hidden, how many steps), present them grouped by source in a table, and wait for approval. Approved observations become the note set. Never move to Step 6 on unapproved drafts.

Stop after asking. Do not read notes or draft anything until the user answers.

Step 3: Gate on Colour Legend

Only when stickies exist and they use more than one fill colour.

Ask once:

Your stickies use these colours: [swatch list with counts]. What does each mean? (For example: observation, problem, strong idea, idea to explore.)

If the user already stated the legend in their request, record it and do not ask again. If there is one colour, or the user says colours carry no meaning, treat every note as an observation and infer sentiment from wording. Never assign a legend without asking.

Step 4: Read Every Note

Stickies are widgets. The plugin API cannot read their text. widgetSyncedState returns {}, findAllWithCriteria does not descend into them, inner node ids from get_metadata resolve to null, and get_design_context on a widget returns "node type not supported". Read them visually:

// One use_figma call. Max 5 ids per call: only the first 5 inline images are returned.
const page = await figma.getNodeByIdAsync('<pageId>');
await figma.setCurrentPageAsync(page);
const ids = ['<widgetId1>','<widgetId2>','<widgetId3>','<widgetId4>','<widgetId5>'];
for (const id of ids) { const n = await figma.getNodeByIdAsync(id); await n.screenshot({ scale: 1.5 }); }
return { order: ids };   // images arrive in this order; map by index
  • Fan the calls out: emit all batches in one message so they run in parallel.
  • Transcribe each note verbatim, including typos. Fix nothing in the inventory. Record the fill colour from the image.
  • Dev-note instances and loose TEXT nodes are readable through characters; read them in one call.
  • Keep the transcript in a local data file (research/<slug>-notes.json or inline in the generator script). Every later step reads from it.

Verify the count: notes transcribed must equal notes inventoried. Report any note that could not be read.

Step 5: Map Notes to Screens

A note belongs to the sub-section that contains it (or whose bounds contain its position if it sits at the parent level). Within that sub-section, the nearest tile by x position is its screen. Record screen as the tile's label text. When a note sits between two tiles, record both labels.

Close-up crops the user added next to a full screen count as screens too.

Step 6: Draft the Synthesis

Build one data structure (notes, patterns, findings, scope, directions, ideas, questions, gaps) and generate both outputs from it: an HTML page and a Markdown copy. Re-runs after the user adds notes are then a data edit and a rebuild, not a rewrite. The output contract and voice rules are in synthesis-template.md. Read it before drafting.

Section order:

  1. Problem (three to four sentences)
  2. Objectives (two to four, the user's own priority first)
  3. Shared patterns (table: pattern, who does it, current product today, neutral status)
  4. Current state (one line per finding, each with a source chip)
  5. Scope: proposed v1, patterns to avoid
  6. Directions (one card per direction stub: summary from the user's text, source references, open questions, optional visual direction, optional schematic wireframe)
  7. Open decisions
  8. Feature ideas, separate track (grouped; enhancements and new features, not flow work)
  9. All notes (collapsed by default, grouped by source, verbatim text, screen label, deep link)
  10. Coverage and gaps (sources without notes, duplicates, unreadable notes)

Every claim carries a chip that deep-links to the source note: https://www.figma.com/design/<fileKey>/<fileName>?node-id=<A-B>.

Statuses for shared patterns. Use only: Not present, Present, weaker, Present, Open question, Deferred. A pattern the current product has in some form is Present, weaker, never Not present.

Directions. Summarise each from the user's own stub text. List the open questions the stub raises. A schematic wireframe (rectangles only, drawn inline as SVG using the page's theme tokens) is optional and must be labelled schematic. No scores, no bars, no fit matrix, no recommendation, no ordering by preference.

Visual direction (optional). Add a one-line visual direction to a card only when the user asks for one, or when the stub or notes talk about look and feel (palette, type, density, mood, a reference product's style). Write it from the user's words with refs, for example "Calm and spacious, neutral greys with one accent, after <competitor>". If the user wants one shared style for all directions, record it once under Scope as "Visual direction" instead. design-first-draft reads these lines when no design system exists.

Claims about the current product. Notes are the user's impressions and can be wrong. Where a note asserts something about the product's behaviour, phrase it as the note's observation, and flag it in the review pass if the screens contradict it.

Step 7: Review Pass

Present the draft and ask for corrections in one message. Expect, and apply without argument, feedback of these kinds:

  • Voice: less negative about the product, no second person, no Claude opinions.
  • Facts: a note was wrong, a competitor does or does not do something, a status is too harsh.
  • Priorities: which objective is primary, what is out of scope, what belongs on a separate track.
  • Order: sections the audience cares about move up.

After each round, edit the data structure, rebuild both outputs, republish to the same URL. Keep a one-line changelog in the reply.

Step 8: Publish

  • Write research/<slug>-research-board.html and .md into the user's project (or the directory they name).
  • If the Artifact tool is available, publish the HTML there and reuse the same file path on every republish so the URL stays stable. Load artifact-design before the first publish.
  • Reply with the link, then a short list of what changed. No summary of the document itself; the document is the summary.

Common Mistakes

MistakeFix
Calling get_design_context on a sticky widgetUnsupported node type. Screenshot the widget inside use_figma, five per call.
Requesting 10+ widget screenshots in one callOnly the first five inline images come back. Batch by five, fan out in parallel.
Inventing a colour legendAsk once. Colours are personal conventions and differ per user.
Drafting before the observation gateStop after the question in Step 2. The user may want to add notes first.
Scoring or ranking directionsDirections are the user's options for their managers. Summarise, list open questions, stop.
"Everyone does X"Count. Name who does it. Note who takes the same approach as the current product.
Marking a weaker version as Not presentIf the product has any form of it, status is Present, weaker.
Second person in the document ("your note", "you asked")Audit voice. "The note on <screen> states…" or drop the attribution.
Reasoning paragraphs explaining why a section existsDelete them. Lists, tables, chips. The reader is skimming.
Recommending which direction to takeOut of scope. Even when asked "what do you think", answer in chat, not in the document.
Correcting a user's note silentlyKeep the verbatim text in the inventory; add a bracketed correction after it once the user confirms.
Em-dashes anywhere in the outputUse commas, full stops or colons.

Chaining

  • Before: design-research (screens on the canvas, optional observations next to them), design-annotations (if the user wants dev-note style observations placed next to screens instead of stickies).
  • After: design-first-draft builds first-draft screens for each direction (the directions section is its brief); the feature ideas section is a backlog seed for the user's task tracker.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.