HyperFrames Media Use
heygen-com/hyperframes
Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.
Audit the subordinate copy in a UI — section descriptions, field helper text, hints, card subtitles, empty-state body copy, tooltip bodies — against the secondary-text ruleset, and emit a per-string…
$ npx skills add rome-os/rome --skill secondary-text-audit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rome-os/rome secondary-text-audit --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/rome-os/rome.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/secondary-text-audit .claude/skills/secondary-text-audit && 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 "secondary-text-audit" agent skill from https://github.com/rome-os/rome/tree/main/.claude/skills/secondary-text-audit into .claude/skills/secondary-text-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secondary-text-audit", 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/rome-os/rome/tree/main/.claude/skills/secondary-text-auditType 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 rome-os/rome --skill secondary-text-audit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rome-os/rome secondary-text-audit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rome-os/rome.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/secondary-text-audit .agents/skills/secondary-text-audit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "secondary-text-audit" agent skill from https://github.com/rome-os/rome/tree/main/.claude/skills/secondary-text-audit into .agents/skills/secondary-text-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secondary-text-audit", 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 rome-os/rome --skill secondary-text-audit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rome-os/rome secondary-text-audit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rome-os/rome.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/secondary-text-audit .cursor/skills/secondary-text-audit && 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 "secondary-text-audit" agent skill from https://github.com/rome-os/rome/tree/main/.claude/skills/secondary-text-audit into .cursor/skills/secondary-text-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secondary-text-audit", 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/rome-os/rome.git --path .claude/skills/secondary-text-audit--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 rome-os/rome --skill secondary-text-audit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rome-os/rome secondary-text-audit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rome-os/rome.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/secondary-text-audit .gemini/skills/secondary-text-audit && 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 "secondary-text-audit" agent skill from https://github.com/rome-os/rome/tree/main/.claude/skills/secondary-text-audit into .gemini/skills/secondary-text-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secondary-text-audit", 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 rome-os/rome secondary-text-auditInstalls 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 rome-os/rome --skill secondary-text-audit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rome-os/rome.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/secondary-text-audit .github/skills/secondary-text-audit && 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 "secondary-text-audit" agent skill from https://github.com/rome-os/rome/tree/main/.claude/skills/secondary-text-audit into .github/skills/secondary-text-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secondary-text-audit", 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 rome-os/rome --skill secondary-text-audit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rome-os/rome secondary-text-audit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rome-os/rome.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/secondary-text-audit .opencode/skills/secondary-text-audit && 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 "secondary-text-audit" agent skill from https://github.com/rome-os/rome/tree/main/.claude/skills/secondary-text-audit into .opencode/skills/secondary-text-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "secondary-text-audit", 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.
secondary-text-auditAudit the subordinate copy in a UI — section descriptions, field helper text, hints, card subtitles, empty-state body copy, tooltip bodies — against the secondary-text ruleset, and emit a per-string…
Secondary Text Audit is an agent skill from rome-os/rome. Audit the subordinate copy in a UI — section descriptions, field helper text, hints, card subtitles, empty-state body copy, tooltip bodies — against the secondary-text ruleset, and emit a per-string keep/rewrite/delete verdict table a coding agent can apply. Use this skill whenever the user asks to review, tighten, trim, or clean up UI copy, microcopy, descriptions, helper text, subtitles, hints, or empty states; asks "is this copy necessary?", "does this description earn its place?", "why is our UI so wordy?"…
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts.
It sits in Media & Creative, covering Transcription. The repository describes itself as: A compounding agent OS for recursive agents. Also an open source alternative to Grok Bot and Meta's Muse. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 18057a0. 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.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodepnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
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.
Secondary Text Audit loads about 2.8k tokens when it runs. Until then it costs about 237 tokens; SKILL.md has 1,409 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); the scripts in this folder are not scanned.
The full file from rome-os/rome at commit 18057a0, republished under its MIT licence (© rome-os). 1,409 words, ~2,756 tokens.
.claude/skills/secondary-text-audit/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Extract every piece of subordinate copy in a surface and put each one on trial. The ruleset's premise is that secondary text defaults to absent: it exists only to carry information the user needs before acting that the label, the control's shape, and the surrounding context do not already give them. Most shipped secondary text describes what something is, which the label already did. That text goes.
The output is a verdict table, not prose commentary. Every row resolves to
keep, rewrite, or delete, and every rewrite carries its replacement
string.
Delete is the expected majority outcome. This is the inversion that makes
the skill useful. An audit that keeps most of what it finds has not applied
the ruleset; it has admired the copy. If your table is mostly keep, re-run
the fact test on every keep row and mean it.
Uncertainty resolves to delete, with one exception. When a string sits
between delete and rewrite, choose delete — the primary label almost
always suffices. This is the opposite of the precision-over-recall bias in
ux-semantics-audit, and deliberately so: a wrong keep is permanent noise
on the screen.
The exception is a string carrying a cost, a scope, or a cause. Deleting one
of those does not cost a line of copy, it costs the reader the fact that made
the screen actionable. When the string tells the user what an action breaks,
where a setting stops applying, or why a surface is in a state they did not
choose, uncertainty resolves to rewrite. Trim it to the fact and keep it.
Judge the rendered pair, never the key name. A verdict needs the label
the user actually sees next to the text. A key called *.description may
render as a card subtitle, a tooltip body, a dialog description, or nothing
at all.
Fact before verdict. Name which kind of fact the text carries before
deciding anything. A string carrying none is delete — that is the rule,
not a shortcut.
A rewrite must be a real string. "Tighten this" is not a replacement.
Write the sentence that ships, in the register
docs/ui/VOICE.md fixes. If you cannot write
one that passes the rules, the verdict was delete.
A shorter string is not automatically a better one. Trimming is the means,
not the goal. A replacement that reads as a system log has failed even when
every word left is load-bearing — check it against VOICE.md before it ships.
The unit of analysis is the surface: a page, tab, dialog, drawer, or self-contained section. Secondary text is judged against what renders beside it, so the scope must be something the user sees at once.
node .claude/skills/secondary-text-audit/scripts/extract-secondary-text.mjs --scope settingsThe script collects both carriers Rome uses — i18n locale keys under
packages/web/src/i18n/locales/<locale>/ and literal strings in *Description
components and description= / subtitle= / hint= / helperText= props —
pairs each with its label, resolves it back to the component that renders it,
and prescreens it. --scope <substr> filters by key or location; --json emits
the rows for programmatic use; --root points at another package.
Its flags are advisory triage, not verdicts:
forbidden:* and generic-verb are near-certain delete, but confirm the
match is real before writing it down.no-signal fires on most rows. It means "re-examine", nothing more — real
cost text often has no number.sr-only rows are out of scope entirely. Never delete them.UNRENDERED means no call site was found. Confirm with a grep for the bare
key before calling copy dead, then verdict it delete.dynamic-key and key-ref are the weakest resolutions and can over-match: a
computed key like connections.headings.${role} matches every sibling under
that prefix, including ones the union type never produces. Open the cited line
and check the key can really reach this row before trusting it — a row that
only resolves this way is a delete candidate hiding behind a wildcard.label-inferred means the label shown is a guess from the key path. Read the
component before judging that row.Read docs/ui/VOICE.md first — it fixes the
register, the person, and what a description must carry, and every rewrite
row is written in it. Then read
docs/ui/secondary-text.md in full. It
carries the scope, the five kinds of fact, the four-question test, and the
repo rules. Do not
audit from memory of the kind names.
For each surface, read the component and write down, before judging anything:
This step is what separates a verdict from a guess. Skipping it produces plausible-sounding tables that are wrong about half the rows.
Ask the four questions of every string, in order, stopping at the first
failure. Then, for rewrite rows, check that the replacement passes the four questions on its own and
obeys VOICE.md.
Before emitting, re-examine the table:
keep — name its kind of fact out loud. If naming it takes a paragraph of
justification, it is rewrite or delete.rewrite — read the replacement alone, without the original. Does it
pass the four questions as a new string? Does it lead with the fact?delete — confirm the information is not lost: either it was
restatement, or the surviving payload moved into another row's replacement.
Say which.Use exactly this structure:
# Secondary-Text Audit: <surface>
## Summary
<2-4 sentences: how many strings, the keep/rewrite/delete split, and the single
pattern driving most deletions on this surface.>
## Verdicts
| Location | Label | Secondary text | Fact | Verdict | Replacement |
|---|---|---|---|---|---|
## Notes
<Only rows needing a reason a reader would otherwise dispute: a `keep` that
looks like description, a `delete` whose payload moved elsewhere, a `rewrite`
that changes placement. One line each, referencing the location.>
## Out of scope
<Strings the extractor surfaced that the ruleset excludes — sr-only
descriptions, error messages, placeholders, dev-gallery copy — with the
exclusion that applies. Keeps the next reader from re-litigating them.>Column rules:
file:line of the render site, plus the i18n key when there is
one. The applying agent needs both: the key to edit, the line to check.none.keep, rewrite, or delete.rewrite, empty for delete and keep.Order rows by render order on the surface, not by verdict. The applying agent walks the file top to bottom, and a reader checking your work walks the screen.
When the user asks for the changes and not just the table:
delete on an i18n key removes it from every locale under
packages/web/src/i18n/locales/ — en and zh-CN today. A key deleted from
en alone leaves the other locale still rendering the string.rewrite updates en and marks the other locales for retranslation; do not
hand-translate unless the user asks.<p> or the description={...} prop, not just the key.pnpm typecheck, then look at the surface in the running
dashboard. Copy changes are exactly the class of change a type check cannot
catch: a deleted key that is still rendered fails at runtime as a raw key
string, not at build time.| Question | Skill |
|---|---|
| Should this description exist, and how should it read? | secondary-text-audit |
| Does this view have the right labels, states, and emphasis? | ux-semantics-audit |
| Is the palette itself sound? | color-audit |
The seam with ux-semantics-audit is its consistent-terminology and
label-outcome-clarity rules: those judge the label, this skill judges what
hangs beneath it. When a description only exists because the label is wrong, say
so in Notes and name the ux-semantics-audit follow-up rather than writing a
replacement that props up a bad label.
docs/ui/VOICE.md does.
This skill decides whether a string exists and what it must carry; every
replacement it writes must obey that file.© rome-os, 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 (scripts) in .claude/skills/secondary-text-audit of rome-os/rome.
Open the folder on GitHubat commit 18057a0
Secondary Text Audit 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 |
|---|---|---|---|---|---|---|
| Secondary Text Audit this skillrome-os/rome | 748 | — | ~2.8k | Automated safety check: Pass | MIT | |
| HyperFrames Media Useheygen-com/hyperframes | 60k | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Native Subtitle Quote Imagechengyi-ai/native-subtitle-quote-image | 2.6k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Edu Chem Videowy51ai/edulab | 1.4k | — | ~2.1k | Automated safety check: Notes | Apache-2.0 | |
| Transcription Memory ReconstructionNxcoreAI/EverRoom | 3k | — | ~714 | Automated safety check: Pass | Custom licence | |
| Edu Math Videowy51ai/edulab | 1.4k | — | ~2.5k | Automated safety check: Notes | Apache-2.0 |
heygen-com/hyperframes
Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.
chengyi-ai/native-subtitle-quote-image
将本地视频或用户有权处理的在线视频,经过来源获取、文字稿定位、选题选句、精确取帧、紧凑裁切、拼图和逐张质检,制作成 3:4 或保留画面原比例的视频字幕长图。支持两种明确分开的输出:保留画面内已烧录字幕的原生字幕模式,以及把已审核的时间点与台词绘制到真实视频帧上的脚本字幕模式。用户要求原生字幕截图、字幕帧拼图、YouTube…
wy51ai/edulab
A skill your agent uses when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a chemistry problem (化学题: 氧化还原配平 双线桥 电子守恒, 物质的量计算, 化学平衡 三段式 平衡常数 转化率 反应速率, 离子反应, 电化学, 溶液 滴定…
NxcoreAI/EverRoom
Reconstruct a complete, searchable memory from an untrusted meeting or conversation transcript.
wy51ai/edulab
A skill your agent uses when asked to make an explainer / walkthrough video (讲解视频、解题视频、例题精讲、微课) for a math problem (数学题, geometry, algebra, functions, motion/行程 problems), from a problem screenshot…
JetBrains/skills
Transcribe audio files to text with optional diarization and known-speaker hints.
rome-os/rome
Audit a design system's color palette against measurable color-science disciplines — WCAG/APCA contrast of declared token pairs, perceptual (OKLCH) ramp uniformity, color-blindness safety of…
rome-os/rome
Audit an existing UI/UX design (React/JSX/TSX components, HTML, or generated app code) against a tiered ruleset of verifiable UX principles, and produce structured, evidence-cited findings that a…
rome-os/rome
Add a new Rome-managed OAuth integration for a third-party service so a user can delegate access by clicking Connect, and Rome can act on the service with the delegated token (the GitHub/Slack model…
rome-os/rome
Help users operate the published Composio CLI to find the right tool, connect accounts, inspect schemas, execute tools, subscribe to trigger events with composio listen, script workflows with…
rome-os/rome
File one GitHub issue from a description the user gives — classify it as a bug report, feature request, or task spec, gather what the body needs from the tracker and the code, ask the user only for…
rome-os/rome
Turn a plain-language "do this automatically" request into a routine — either event-triggered ("text me when I get an email from my landlord") or scheduled ("remind me every Friday at 9am").
Categories
Audit the subordinate copy in a UI — section descriptions, field helper text, hints, card subtitles, empty-state body copy, tooltip bodies — against the secondary-text ruleset, and emit a per-string…. Secondary Text Audit is an agent skill from rome-os/rome. Audit the subordinate copy in a UI — section descriptions, field helper text, hints, card subtitles, empty-state body copy, tooltip bodies — against the secondary-text ruleset, and emit a per-string keep/rewrite/delete verdict table a coding agent can apply.
Secondary Text Audit fits situations like: the user asks to review; clean up UI copy; asks is this copy necessary?; does this description earn its place?.
Run `npx skills add rome-os/rome --skill secondary-text-audit -a claude-code`. Or copy the skill folder (.claude/skills/secondary-text-audit in rome-os/rome) into .claude/skills/secondary-text-audit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rome-os/rome --skill secondary-text-audit -a codex`. Or copy the skill folder (.claude/skills/secondary-text-audit in rome-os/rome) into .agents/skills/secondary-text-audit 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 rome-os/rome --skill secondary-text-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/secondary-text-audit, .gemini/skills/secondary-text-audit, .github/skills/secondary-text-audit and .opencode/skills/secondary-text-audit in your project.
Going by SKILL.md and its folder, Secondary Text Audit needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and pnpm). Our summary lists: Node.js.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Secondary Text Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k 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 Secondary Text Audit: HyperFrames Media Use (heygen-com/hyperframes, 60k stars), Native Subtitle Quote Image (chengyi-ai/native-subtitle-quote-image, 2.6k stars), Edu Chem Video (wy51ai/edulab, 1.4k stars) and Transcription Memory Reconstruction (NxcoreAI/EverRoom, 3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rome-os (a GitHub organization) maintains it in rome-os/rome, which has 748 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 11, 2026.
Source: rome-os/rome on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.