Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
A skill your agent uses when working on, discussing, reviewing or debugging the Relink Logs analysis view (the log viewer's Analysis mode) — pins, drilling, grouping, the table/timeline/events…
$ npx skills add villith/relink-logs --skill understanding-the-analysis-view -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install villith/relink-logs understanding-the-analysis-view --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/villith/relink-logs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/understanding-the-analysis-view .claude/skills/understanding-the-analysis-view && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "understanding-the-analysis-view" agent skill from https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-view into .claude/skills/understanding-the-analysis-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understanding-the-analysis-view", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-viewType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add villith/relink-logs --skill understanding-the-analysis-view -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install villith/relink-logs understanding-the-analysis-view --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/villith/relink-logs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/understanding-the-analysis-view .agents/skills/understanding-the-analysis-view && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "understanding-the-analysis-view" agent skill from https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-view into .agents/skills/understanding-the-analysis-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understanding-the-analysis-view", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add villith/relink-logs --skill understanding-the-analysis-view -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install villith/relink-logs understanding-the-analysis-view --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/villith/relink-logs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/understanding-the-analysis-view .cursor/skills/understanding-the-analysis-view && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "understanding-the-analysis-view" agent skill from https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-view into .cursor/skills/understanding-the-analysis-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understanding-the-analysis-view", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/villith/relink-logs.git --path .claude/skills/understanding-the-analysis-view--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add villith/relink-logs --skill understanding-the-analysis-view -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install villith/relink-logs understanding-the-analysis-view --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/villith/relink-logs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/understanding-the-analysis-view .gemini/skills/understanding-the-analysis-view && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "understanding-the-analysis-view" agent skill from https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-view into .gemini/skills/understanding-the-analysis-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understanding-the-analysis-view", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install villith/relink-logs understanding-the-analysis-viewInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add villith/relink-logs --skill understanding-the-analysis-view -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/villith/relink-logs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/understanding-the-analysis-view .github/skills/understanding-the-analysis-view && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "understanding-the-analysis-view" agent skill from https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-view into .github/skills/understanding-the-analysis-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understanding-the-analysis-view", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add villith/relink-logs --skill understanding-the-analysis-view -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install villith/relink-logs understanding-the-analysis-view --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/villith/relink-logs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/understanding-the-analysis-view .opencode/skills/understanding-the-analysis-view && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "understanding-the-analysis-view" agent skill from https://github.com/villith/relink-logs/tree/dev/.claude/skills/understanding-the-analysis-view into .opencode/skills/understanding-the-analysis-view/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "understanding-the-analysis-view", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
understanding-the-analysis-viewA skill your agent uses when working on, discussing, reviewing or debugging the Relink Logs analysis view (the log viewer's Analysis mode) — pins, drilling, grouping, the table/timeline/events…
Understanding The Analysis View is an agent skill from villith/relink-logs. Use when working on, discussing, reviewing or debugging the Relink Logs analysis view (the log viewer's Analysis mode) — pins, drilling, grouping, the table/timeline/events bodies, the chart and its windows, aura filters, hover cards — or when a request uses its vocabulary (source, target, ability, friendlies/enemies, buffs/debuffs, SBA window, Link Time, Break, damage cap, stun value, merge supplementary damage).
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `code-map.md`).
It sits in Development. The repository describes itself as: Relink Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. The licence is MIT.
Read from SKILL.md and the folder at commit 8251151. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Understanding The Analysis View loads about 4.1k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 2,441 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from villith/relink-logs at commit 8251151, republished under its MIT licence (© villith). 2,441 words, ~4,102 tokens.
.claude/skills/understanding-the-analysis-view/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The analysis view (src/pages/logs/view/analysis/) is the log viewer's Warcraft-Logs-style reader for one saved encounter. Its whole state is a URL, and one rule generates the UI:
Three dimensions — source, ability, target — can each be pinned. The view groups its rows by the first dimension nobody has pinned. Clicking a row pins that dimension, which advances the grouping to the next free one. That is "drilling in".
Everything else — which chart is drawn, which columns the table has, which hover card explains a row, which filters are offered — is declared per metric in machine/capabilities.ts and resolved by machine/resolve.ts. The view file itself decides almost nothing.
AnalysisView.tsx is the frame; the bodies below it swap. Use this skill's vocabulary verbatim when talking to the developer — the terms below are the ones the UI, the code and the developer all use.
source, ability, target. The only three axes there are (machine/state.ts, DIMENSIONS).src, abil, tgt), and are set by clicking a row or choosing from a selector. "Pin the source", "clear the ability pin".universeOf). On the buff/debuff tabs the friendly side reads Source as the effect's holder, and the enemy side reads it as the caster (narrowedByPins).abil:skill:…, possibly a skill-group key ending @<child>),taken: + {enemyType, actionId} JSON),status:<effect>:<cause>:<class>) on the aura tabs.
isStatusPin is what tells the third apart, and half a dozen consumers branch on it.side=enemy), sitting above the metric tabs. Not a filter: it swaps which universe source and target draw from, so changing it clears both actor pins. Stun and SBA have no enemy side (their toggle is disabled, not hidden).Six, declared in CAPABILITIES:
| Metric | Rows come from | Enemy side | Notes |
|---|---|---|---|
Damage Done (damage) | group query | yes | the only metric recording supplementary damage |
Damage Taken (taken) | group query | yes | empty on logs recorded before 2026-08-04 |
Stun (stun) | derived meter state | no | no target dimension |
SBA (sba) | derived meter state | no | no target dimension; per-ability split is local player only |
Buffs (buffs) | status intervals | yes | polarity fixed, holders chosen by side |
Debuffs (debuffs) | status intervals | yes | as above |
groups (the backend's GroupQuery aggregation), derived (the reconciled meter state — stun and SBA cannot be re-derived from a raw event walk), intervals (status windows). It decides far more than it looks: only the groups path gets aura filters, stacked group bands and a real "settled" moment after a fetch.isHarmful), not who holds the effect. Holder side is the hostility switch. The two axes are independent, which is why an enemy's own Bloodthirst is reachable under Buffs → Enemies rather than being misfiled as a debuff.groupBy) — the dimension the rows currently ARE. Derived: the first supported, unpinned dimension in the metric's dimensionOrder; with everything pinned it falls back to the last one (the one-row terminal, never a dead view).by in the URL). Any pin clears the override, so drilling resumes advancing.machine/useAutoDrill.ts). Armed by a pin, never standing on its own — otherwise clearing the pin it applied would instantly re-apply it.The tab URL param switches the whole body below the frame. Everything above it — actor bar, side toggle, metric tabs, pin bar, regroup strip, chart, window strip, aura strips — is shared, which is why pins survive switching.
tab absent) — the metric's rows as bars with numeric columns. MetricTable.tsx.tab=timeline) — the SAME rows drawn against fight time, one lane per row. timeline/.tab=events) — the raw event stream, one row per event, with per-column filters and a jump-to-time box. events/.Timeline vocabulary: a lane is a row's track; a mark is one drawn thing on it; a cast is a run of events sharing a cast identity; a lane's shape is buckets (a bar per run, ticks inside per hit), icons (same fold, carrying the ability's art) or spans (real uptime, for status rows).
player: / target: / actor: / enemy: / taken: / skill: / status: / source: grammar in rowKey.ts. One author, parsed once (rowRefOf); every surface dispatches on the parsed union. A forgotten branch does not throw — it prints the raw key ("Normal:1000") or drops the icon, which looks like missing data rather than a bug.abilityRowKey, skillGroupFor). A group key carries its child character, because Id's own kit and his dragonform's share group names.colorSlot — which of the four player colours a row wears; -1 means "no slot" (an enemy, a party-wide row, the SBA remainder).other rollup — the backend appends an other aggregate summing everything past topN (8) without removing the rows it sums. The table drops it; only the chart rolls the tail up. Never add it to a denominator.Four independent narrowings. Keep them apart in conversation:
from/to). Set by dragging on the chart, cleared by double-clicking it or by the ✕ in the pin bar. It narrows every fetch, every table and the uptime denominators.ChartWindow): SBA window (a Skybound Art performance, chains merged), Link Time window, Break window (one enemy in Break; carries that enemy's actor index). Shaded on the chart and selectable as chips in the Windows strip. Several compose by union (windows of one kind never overlap, so intersecting would resolve to nothing). Selecting also zooms the chart to the selection's hull.src: / tgt:) and dies when that pin changes or clears. Damage Done and Damage Taken only.undefined means "no filter"; an empty array is a real mask that admits nothing.GROUP_TOP_N); the rest are marked tail and rolled up as Other, still switchable on from the legend.HoverCard.tsx). Each section shows its top five entries and stays silent about the rest, WCL-style. Control hints are a different thing: the merge switch carries a Mantine Tooltip, and the disabled hostility toggle a native title.useCtrlHeld flips the card to detailed, lifting the five-entry cap so every entry shows. It works on the row cards, the chart tooltip and the timeline marks.shape: "actor", head point).shape: "diamond", head notch).events/cap*.ts derives all of it; the Amount card shows the working.merge_supplementary), not a URL param — how someone reads damage should outlive the log they set it on. Merged figures are landings (an echo counted as part of the hit that caused it); unmerged are raw events. Only Damage Done records any, so the switch is disabled elsewhere.targetEntries. The unit a target pin uses, because actor indexes are recycled.src/pages/Meter); nothing in the analysis view is live.machine/capabilities.ts first, then machine/resolve.ts. A question of the form "why does this tab show/hide/disable X" is nearly always answered by a declaration there, not by a branch in the view.machine/transitions.ts), not a new ternary in AnalysisView.tsx.RowPresentation, and the timeline and events share StreamContext (model/bodyContext.ts). Two bodies must draw one row identically — never resolve a name, an icon or a colour a second time.code-map.md in this skill's directory.| Assumption | Reality |
|---|---|
| "Source means the player" | Source means the acting end. On the enemy side it is an enemy spawn; on the aura tabs' enemy side it is the caster. |
| "The grouping is a setting" | It is derived from which dimensions are pinned. by is only an override, and any pin clears it. |
| "Hostility filters the rows" | It swaps the universes of both actor pins, and clears them. |
| "Auras and battle windows are the same filter" | Different strips, different composition: auras intersect, battle windows union. |
| "The rows on screen answer the current grouping" | On the groups path they answer the previous one until the fetch lands (answeredGroups). Anything reading rows to make a decision must check that first. |
| "Merge Sup DMG is in the URL" | It is a stored setting; the URL carries no supp param any more. |
| "An enemy type row can be pinned" | Type rows merge same-type spawns and cannot choose one, so they are leaves. The hover card decomposes them instead. |
| "Clicking any row pins something" | pinOnClick: null is common — enemy types, enemy attacks on the taken tab, SBA causes, the unattributed remainder. |
© villith, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .claude/skills/understanding-the-analysis-view of villith/relink-logs.
Open the folder on GitHubat commit 8251151
Understanding The Analysis View next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Understanding The Analysis View this skillvillith/relink-logs | 156 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Vercel Composition Patternssupabase/supabase | 111k | 58 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 25 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
rolling-scopes/rsschool-app
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
villith/relink-logs
A skill your agent uses when building, compiling, packaging, or producing an installer/MSI for the GBFR Logs Tauri app, or when a build fails with "path matching hook.dll not found" or build.rs…
villith/relink-logs
A skill your agent uses when a Granblue Fantasy Relink game patch breaks the GBFR Logs hook — signatures no longer match, "Could not find match for pattern" / "Could not find <offset" warnings…
villith/relink-logs
A skill your agent uses when a reverse-engineered table or formula — SBA gauge weights, the damage-cap model, stun values, any per-hit quantity the parser computes — needs verifying against real…
Categories
A skill your agent uses when working on, discussing, reviewing or debugging the Relink Logs analysis view (the log viewer's Analysis mode) — pins, drilling, grouping, the table/timeline/events…. Understanding The Analysis View is an agent skill from villith/relink-logs. Use when working on, discussing, reviewing or debugging the Relink Logs analysis view (the log viewer's Analysis mode) — pins, drilling, grouping, the table/timeline/events bodies, the chart and its windows, aura filters, hover cards — or when a request uses its vocabulary (source, target, ability, friendlies/enemies, buffs/debuffs, SBA window, Link Time, Break, damage cap, stun value, merge supplementary damage).
Understanding The Analysis View fits situations like: debugging the Relink Logs analysis view (the log viewers Analysis mode) — pins; the table/timeline/events bodies; the chart and its windows; A request uses its vocabulary (source.
Run `npx skills add villith/relink-logs --skill understanding-the-analysis-view -a claude-code`. Or copy the skill folder (.claude/skills/understanding-the-analysis-view in villith/relink-logs) into .claude/skills/understanding-the-analysis-view in your project. Claude Code loads it when a task matches its description.
Run `npx skills add villith/relink-logs --skill understanding-the-analysis-view -a codex`. Or copy the skill folder (.claude/skills/understanding-the-analysis-view in villith/relink-logs) into .agents/skills/understanding-the-analysis-view in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add villith/relink-logs --skill understanding-the-analysis-view -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/understanding-the-analysis-view, .gemini/skills/understanding-the-analysis-view, .github/skills/understanding-the-analysis-view and .opencode/skills/understanding-the-analysis-view in your project.
SKILL.md names no scripts, command-line tools or credentials: Understanding The Analysis View is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Understanding The Analysis View is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Understanding The Analysis View: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
villith (a GitHub user) maintains it in villith/relink-logs, which has 156 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 25, 2026.
Source: villith/relink-logs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.