agentleFS
fabioc-alohafabioc-aloha/Alex_ACT_ONE/skills/flint-interactions/SKILL.md

flint-interactions

Skill0 starsChanged 9 days agoMITView on GitHub

Choose and verify interactive Flint chart behavior: highlight, brush, zoom, legend toggles, filters, annotations, keyboard navigation, linked views, and reset. Use when a reader should explore a chart, an agent updates its state, or an app connects to it. Route to Flint's installed interaction grammar; distinguish behavior, state, boards, and application code. Do not add interactions to static-only output.

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. About 0 are common, 13 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈13

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If called by chart authoring, keep its existing input and Chart Brief.

    line 24
  2. Very specific:

    Read flint://interaction-skill or call get_flint_skill({ "skill": "interaction" }) before writing a spec.

    line 31
  3. Distinctive:

    Use its relevant section for the selected workflow.

    line 33
  4. Very specific:

    Call list_chart_types for the backend and list_interaction_presets with the exact chartType.

    line 36
  5. Distinctive:

    If the resource or a required tool is unavailable, report the missing capability.

    line 42
  6. Very specific:

    Do not invent names or silently substitute a static picture for requested interactivity.

    line 43
  7. Distinctive:

    Use semantic field identities, not pixel coordinates or fabricated row IDs.

    line 59
  8. Distinctive:

    Avoid competing drag, double-click, legend-click, or retained-focus handlers.

    line 76
  9. Distinctive:

    Use only names/options supported by the installed grammar.

    line 84
  10. Very specific:

    Call validate_chart with the complete chart and relevant interaction_spec or updates.

    line 88
  11. Distinctive:

    Do not report that behavior as working.

    line 91
  12. Distinctive:

    No server-side chart handle persists between calls: to revise it, preserve relevant current edits/state and send the full updated input …

    line 95
  13. Distinctive:

    If the host cannot display interactive output, report the limitation.

    line 97
  14. Distinctive:

    Check the after state and visible response against the acceptance contract, including linked recipients and preservation of unaffected data.

    line 110
  15. Very specific:

    Prefer available native browser tools, retaining a permitted registered fallback for unsupported cases.

    line 115
  16. Distinctive:

    If the live surface/state cannot be inspected, mark those checks unverified.

    line 118
  17. Distinctive:

    Do not claim all presets, backends, hosts, or accessibility paths were tested.

    line 126
  18. Distinctive:

    Use synthetic fixtures for potentially consequential tests.

    line 131

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

Flint interactions

Turn the reader's question into a small, testable interaction contract. Flint owns its grammar and presets; this skill owns intent selection, authority, and behavioral acceptance. Interactions add behavior to a chart, not new chart types.

When to use

  • Should fire: "Let me brush a period and reset it", "compare series on hover", "filter by region", "link the selection to this other chart", or "highlight these records when the chart opens".
  • Should not fire: a static PNG/PDF export, a bare noninteractive spec, or a title/color-only edit with no requested exploration or behavior.
  • An exploratory session can justify interactions without a named gesture. Identify the reader's actual question; do not install every available preset merely because the user said "interactive".

If called by chart authoring, keep its existing input and Chart Brief. Do not reload the caller or restart framing. For a direct request without a chart, identify the data, exact chart type, encodings, delivery host, and intended reader task before choosing behavior; clarify only material missing decisions.

1. Load the installed authority

Read flint://interaction-skill or call get_flint_skill({ "skill": "interaction" }) before writing a spec. Use its relevant section for the selected workflow; do not copy its preset, option, update-op, or programming-API catalog here.

Call list_chart_types for the backend and list_interaction_presets with the exact chartType. For a selected preset, inspect its options and supported reset gestures. Chart support alone is not enough: actual fields, discrete legends, continuous axes, and faceting can change whether an interaction is admitted.

If the resource or a required tool is unavailable, report the missing capability. Do not invent names or silently substitute a static picture for requested interactivity. The reviewed 1.0.1 interaction workflow targets Vega-Lite; do not infer ECharts/Chart.js or static-output parity from successful rendering.

2. Select the workflow, not just a gesture

RequestOwner-produced resultLoad from Flint
Reader acts on a chartinteraction_spec beside the existing chart inputInteraction skill: Add interactions to the chart
Agent supplies emphasis, annotations, ordering, or viewport stateupdates layers with the full chart inputInteraction skill: Update the chart
Several charts share a selectionBoard link_spec, or application linking code only when requestedBoard skill plus the interaction skill's Link charts section
Application reacts to a chart, or a preset cannot express the behaviorApproved project code using flint-chart/interactiveInteraction skill: application/bespoke sections

Behavior and state are different. Read the current chart input, user edits, selection/filter/viewport state, and existing update layers when available. Preserve unrelated state and panel edits; do not guess an absent state snapshot. Use semantic field identities, not pixel coordinates or fabricated row IDs.

Preserve source data, semantic types, units, and analytical meaning. An explicitly requested filter changes the view, not the underlying dataset. Do not silently drop rows or change a denominator to make an interaction appear useful.

3. Define observable acceptance before authoring

For each selected behavior, record:

  • The reader task and the smallest compatible preset or supported alternative.
  • The target field/marks, gesture or external input, and expected visible/state change.
  • Its reset or neutral-state behavior; for transient interactions, test pointer exit rather than inventing a persistent reset gesture.
  • Keyboard access and activation/reset behavior appropriate to the task, with any host or preset limitation explicit.
  • Gesture ownership, ordering, and conflict resolution when presets compose. Avoid competing drag, double-click, legend-click, or retained-focus handlers.

For linked views, define the fields each chart actually carries, which charts send/receive, and how selection and reset affect the other view. Load the native board grammar rather than inventing a second linking schema.

4. Author, validate, and display

Use only names/options supported by the installed grammar. Preset options belong in their supported options object. A bespoke callback needs an application host that runs code; it is not executable JSON inside an MCP chart.

Call validate_chart with the complete chart and relevant interaction_spec or updates; use validate_board for a linked board. Inspect every error and warning. A valid chart can still have a dropped interaction or a yielded trigger. Do not report that behavior as working. Correct the conflict or explain the unsupported part and agree on a meaningful alternative.

For App UI output, send the same validated complete chart or board to show. No server-side chart handle persists between calls: to revise it, preserve relevant current edits/state and send the full updated input again. If the host cannot display interactive output, report the limitation; provide static output only as an explicitly described alternative.

5. Exercise behavior and reset

Load and follow render-verify for visual/data checks. For themed controls, linked views, filtering, state layers, or narrow boards, load behavioral acceptance before choosing the probes. Test rendered affordances and semantic identity, not assumed DOM shape. Validation is not proof of working interaction. In a visible mounted chart:

  1. Capture the before state and check console errors and baseline values/marks.
  2. Perform each intended gesture, control change, or supported external update.
  3. Check the after state and visible response against the acceptance contract, including linked recipients and preservation of unaffected data.
  4. Perform reset, pointer exit, or return to the stated neutral state. Verify keyboard behavior separately where promised and repeat after any conflict fix.

Prefer available native browser tools, retaining a permitted registered fallback for unsupported cases. A screenshot or accepted show response alone does not establish that a gesture, reset, keyboard path, or linked selection worked. If the live surface/state cannot be inspected, mark those checks unverified; do not infer them from the spec or a static export.

Output and authority

Return the requested spec/update/code or chart, the chosen behavior and reason, resolved warnings/conflicts, and tested versus unverified acceptance cases. For spec-only requests, label runtime behavior unverified and do not force display. Do not claim all presets, backends, hosts, or accessibility paths were tested.

Opening records, changing external app state, sending data, installing packages, or modifying project code requires the corresponding user request and approval. A click handler or chart selection is not blanket consent for those effects. Use synthetic fixtures for potentially consequential tests.

Would revise if

Revise when installed grammar/preset discovery contradicts this routing, validation silently drops a requested behavior, gesture/reset or keyboard tests expose a gap, or linked/app authority becomes ambiguous.

References

Live documentation illustrates intent; the installed runtime remains the exact language authority. This skill changes neither runtime pins nor installation.

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.