Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jubscodes/get-shit-pretty --skill gsp-polishgit clone --depth 1 https://github.com/jubscodes/get-shit-prettyWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jubscodes/get-shit-pretty/gsp-polish)<a href="https://agentmods.dev/skills/jubscodes/get-shit-pretty/gsp-polish"><img src="https://agentmods.dev/badge/skills/jubscodes/get-shit-pretty/gsp-polish/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jubscodes/get-shit-pretty/gsp-polish"><img src="https://agentmods.dev/badge/skills/jubscodes/get-shit-pretty/gsp-polish.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.02070 |
| Opus 5 | $0.00000 | $0.01035 |
| Sonnet 5 | $0.00000 | $0.00414 |
| Haiku 4.5 | $0.00000 | $0.00207 |
Grade A, and why
gsp-polish scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 160 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Operates on actual code, not on design specs. Pattern-matches against a curated library of mechanically-detectable anti-patterns. Each pattern is a self-contained file in patterns/ describing symptom, detection rule, fix, and classification.
Two tiers of fix:
safe-auto— fix is purely additive/reversible (e.g., addmask-imageclassName). Applied automatically, wrapped in a git stash safety net +tsc --noEmitcheck; rolled back if either fails.propose-diff/flag-only— fix is contextual or requires human input. Surfaced inpolish/proposed-fixes.mdfor review.
The skill does not overlap with:
gsp-accessibility(WCAG concerns: focus, contrast, tap targets — any mode)gsp-project-review(QA against design intent)gsp-typography(font choices)gsp-brand-guidelines(token system)
If a pattern would catch something those skills own, it's been stripped from this library.
Input: Codebase (default scope: git diff since HEAD or last polish run) + project config + brand STYLE.md
Output: {project}/polish/ (findings.md, applied-fixes.md, proposed-fixes.md, INDEX.md)
Agent: gsp-polisher
Output volume: Honor skip-if-not-present doctrine — omit any pattern that returned zero findings. If preferences.project_size exists in config, polish writes a single consolidated polish/PHASE.md for compact; emits the full file set for full; returns to chat for chat.
<execution_context> @${CLAUDE_SKILL_DIR}/patterns/INDEX.yml </execution_context>
| Input | Mode |
|---|---|
/gsp-polish (no args) |
Default — scan git diff, apply safe-auto, propose review-required |
/gsp-polish --scan |
Scan only — produce findings.md, no fixes |
/gsp-polish --full |
Scan entire project (not just diff) |
/gsp-polish --scope <path> |
Limit scope to a directory or glob |
/gsp-polish --no-fix |
Scan + propose, never auto-apply |
/gsp-polish --pipeline |
Internal — invoked by gsp-project-build finalize |
/gsp-polish --list-patterns |
Display the pattern library and exit |
What ships with it
12 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- methodology/gsp-polisher.md 5.9 KB
- patterns/default-recharts-palette.md 2.5 KB
- patterns/generic-loading-text.md 2.3 KB
- patterns/image-fill-no-relative-parent.md 2.3 KB
- patterns/INDEX.yml 2.6 KB
- patterns/internal-a-not-link.md 2.3 KB
- patterns/lorem-and-placeholder-copy.md 2.4 KB
- patterns/mask-image-on-scrolling-text.md 2.3 KB
- patterns/missing-empty-state.md 3.0 KB
- patterns/mobile-text-no-clamp.md 2.2 KB
- patterns/raw-hex-colors-outside-tokens.md 3.0 KB
- patterns/transition-all-everywhere.md 2.7 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 160 lines · 0 tokens per session scan A 522cebff4cb7
gsp-polish is a skill published in the GitHub repository jubscodes/get-shit-pretty (54 stars, last pushed 3mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,070 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
vue-application-structure
Establishes or reviews the directory layout, component conventions, composable design, Pinia store structure, and Vue Router configuration for a Vue 3 TypeScript application. Invoked when the user asks to structure a Vue app, set up the project layout, or review Vue architecture.
react-application-structure
Establishes or reviews the directory layout, feature boundaries, state design, routing approach, and data-fetching conventions for a React 18+ TypeScript application. Invoked when the user asks to structure a React app, set up a scalable architecture, or review React project organization.
next-application-structure
Establishes or reviews directory layout, server/client boundaries, routing, data-fetching strategy, and testing structure for Next.js 14+ App Router TypeScript applications. Invoked when the user asks to structure a Next app, set App Router conventions, or review architecture for React parity.
crit-cli
Use when an agent needs to author or reply to crit inline comments programmatically (including multi-agent workflows commenting on shared code/plans/docs/proposals), publish or unpublish a crit review with crit share, sync a crit review to or from a GitHub PR or GitLab MR, or read/interpret a crit review JSON file.…
crit
Review code changes, a plan, a live page (running dev server), or a local HTML file with Crit inline comments and structured human feedback. Use only when the user explicitly invokes /crit or directly asks to use Crit; a generic review request does not count.
crit-story
Author a crit story and continue the interactive review loop only when the user explicitly invokes crit-story or directly asks you to generate a crit story. Do not infer this skill from generic review, PR, or diff-review requests.