Context Compression
guanyang/open-agent-hub
This skill should be used when long-running agent sessions need context compression, structured summarization, compaction, token-per-task optimization, or durable handoff summaries that preserve…
Refactor a too-long SKILL.md by progressive disclosure: measure token cost, classify every section KEEP/CUT/MOVE, shorten the body into references/ and scripts/, verify nothing was lost.
$ npx skills add luongnv89/asm --skill skill-shortener -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install luongnv89/asm skill-shortener --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/luongnv89/asm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skill-shortener .claude/skills/skill-shortener && 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 "skill-shortener" agent skill from https://github.com/luongnv89/asm/tree/main/skills/skill-shortener into .claude/skills/skill-shortener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-shortener", 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/luongnv89/asm/tree/main/skills/skill-shortenerType 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 luongnv89/asm --skill skill-shortener -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install luongnv89/asm skill-shortener --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/asm.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/skill-shortener .agents/skills/skill-shortener && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "skill-shortener" agent skill from https://github.com/luongnv89/asm/tree/main/skills/skill-shortener into .agents/skills/skill-shortener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-shortener", 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 luongnv89/asm --skill skill-shortener -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install luongnv89/asm skill-shortener --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/asm.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/skill-shortener .cursor/skills/skill-shortener && 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 "skill-shortener" agent skill from https://github.com/luongnv89/asm/tree/main/skills/skill-shortener into .cursor/skills/skill-shortener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-shortener", 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/luongnv89/asm.git --path skills/skill-shortener--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 luongnv89/asm --skill skill-shortener -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install luongnv89/asm skill-shortener --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/asm.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/skill-shortener .gemini/skills/skill-shortener && 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 "skill-shortener" agent skill from https://github.com/luongnv89/asm/tree/main/skills/skill-shortener into .gemini/skills/skill-shortener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-shortener", 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 luongnv89/asm skill-shortenerInstalls 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 luongnv89/asm --skill skill-shortener -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/luongnv89/asm.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/skill-shortener .github/skills/skill-shortener && 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 "skill-shortener" agent skill from https://github.com/luongnv89/asm/tree/main/skills/skill-shortener into .github/skills/skill-shortener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-shortener", 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 luongnv89/asm --skill skill-shortener -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install luongnv89/asm skill-shortener --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/asm.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/skill-shortener .opencode/skills/skill-shortener && 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 "skill-shortener" agent skill from https://github.com/luongnv89/asm/tree/main/skills/skill-shortener into .opencode/skills/skill-shortener/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-shortener", 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.
skill-shortenerRefactor a too-long SKILL.md by progressive disclosure: measure token cost, classify every section KEEP/CUT/MOVE, shorten the body into references/ and scripts/, verify nothing was lost.
Skill Shortener is an agent skill from luongnv89/asm. Refactor a too-long SKILL.md by progressive disclosure: measure token cost, classify every section KEEP/CUT/MOVE, shorten the body into references/ and scripts/, verify nothing was lost. Don't use for authoring new skills, eval retrofits, or prose.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `docs/README.md`, `evals/evals.json` and `references/behavior-preservation.md`). Compatibility notes: Claude Code; Python 3; skill-creator's quickvalidate.py
It sits in AI & LLM Engineering, covering LLM cost and token optimization. The repository describes itself as: The universal skill manager for AI coding agents. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a01a183. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditGrepGlobFrom allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
gitpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, 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.
Claude Code; Python 3; skill-creator's quick_validate.py
From compatibility in the SKILL.md frontmatter.
Skill Shortener loads about 3.8k tokens when it runs, and up to ~6.4k if it reads all its reference files. Until then it costs about 66 tokens; SKILL.md has 1,546 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Edit, Grep, GlobAutomated 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 luongnv89/asm at commit a01a183, republished under its MIT licence (© luongnv89). 1,546 words, ~3,772 tokens.
.claude/skills/skill-shortener/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Shrink an over-long SKILL.md by progressive disclosure: what the agent needs on every activation stays in the body, everything else moves behind a pointer that says when to load it — or is cut outright.
Three load layers decide where a piece of content belongs:
| Layer | Holds | Costs |
|---|---|---|
| always-loaded | frontmatter name + description | every turn |
| on-trigger | the SKILL.md body | every activation |
| on-demand | references/, scripts/, assets/ | only when read |
The bar is behavior-preserving: the shortened skill drives the same process as the long one. Line count is the score, not the goal — a run that reaches 400 lines by deleting a loop's stop condition has failed, however good the number looks.
Pick one before Phase 0; they diverge at Phase 2.
Every snippet below uses these four. Bash tool calls do not share shell state, so re-declare them at the top of each call that needs them — an empty $SKILL_PATH turns cp -R "$SKILL_PATH/." into a copy of the filesystem root. Capture RUN_EPOCH once and reuse the number; never re-stamp it.
SS="$HOME/.claude/skills/skill-shortener" # this skill
SKILL_PATH="$HOME/.claude/skills/<target>" # the target: the dir holding SKILL.md
QV="$HOME/.claude/skills/skill-creator/scripts/quick_validate.py" # the Phase 4 gate
# RUN_EPOCH: reuse the number the preflight printed, e.g. RUN_EPOCH=1787948450This skill invokes skill-creator: it runs that skill's quick_validate.py as the Phase 4 frontmatter gate. Resolve it before the snapshot below, the first step that changes anything:
RUN_EPOCH="$(date +%s)"; echo "run_started_epoch=$RUN_EPOCH" >&2 # anchors Run stats
QV="$HOME/.claude/skills/skill-creator/scripts/quick_validate.py"
test -f "$QV" || {
echo "Missing required skill: skill-creator" >&2
echo "Install it: asm install skill-creator -p claude --yes" >&2
echo "No asm yet: npm install -g agent-skill-manager" >&2
echo "Verify: asm list -p claude --json | grep 'skill-creator'" >&2
exit 1
}-p claude is not decoration: asm install refuses to guess a provider non-interactively and --yes does not cover that choice, so an install command without it errors instead of installing. On a miss, stop before the first mutation and print those three commands — never continue with a partial run.
Always snapshot first. The most common target — ~/.claude/skills/<name>/ — is not a git repository, so git is not a guaranteed undo path, and this skill rewrites a whole directory rather than one file:
: "${SKILL_PATH:?set SKILL_PATH to the target skill directory}"
: "${RUN_EPOCH:?reuse the epoch captured in the preflight}"
case "$PWD/" in "$SKILL_PATH"/*) echo "cwd is inside $SKILL_PATH — run from outside it, or the workdir is copied into itself" >&2; exit 1;; esac
SNAP=".skill-shortener/snapshot-$RUN_EPOCH"
mkdir -p "$SNAP" && cp -R "$SKILL_PATH/." "$SNAP/"Then sync only if the target directory itself is a git work tree root — rev-parse --git-dir succeeds for any nested path inside a larger repo, and must not trigger fetch/pull of that tree:
toplevel="$(git -C "$SKILL_PATH" rev-parse --show-toplevel 2>/dev/null || true)"
if [ -n "$toplevel" ] && [ "$(cd "$SKILL_PATH" && pwd -P)" = "$toplevel" ]; then
branch="$(git -C "$SKILL_PATH" rev-parse --abbrev-ref HEAD)"
git -C "$SKILL_PATH" fetch origin && git -C "$SKILL_PATH" pull --rebase origin "$branch"
else
echo "note: $SKILL_PATH is not a git work tree root — $SNAP is the only undo path; skip fetch/pull"
fiIf the tree is dirty, git stash, sync, git stash pop. If origin is missing or the pull conflicts, stop and ask the user — never skip or force the sync. In a git repo, suggest adding .skill-shortener/ to .gitignore.
Every section of the body gets exactly one, and each has one reference behind it. Read the reference for the disposition you are about to assign — not all three up front.
| Disposition | Means | Read before assigning it |
|---|---|---|
| KEEP | needed on every activation; stays in the body | read references/behavior-preservation.md before assigning it |
| CUT | deleted; the model already knows it or it changes no behavior | read references/cut-list.md before assigning it |
| MOVE | relocated to references/, scripts/, or assets/, with a pointer | read references/split-patterns.md before assigning it |
Mode 2 — skip snapshot and git sync. Audit-only must not reach fetch / pull --rebase. Run the preflight and the two measure_skill.py commands below, then continue to Phase 1. Do not create $SNAP and do not run the repo-sync block.
Mode 1. Run the preflight, take the snapshot, sync only when $SKILL_PATH is itself the git work tree root (see above), then measure:
python3 "$SS/scripts/measure_skill.py" "$SKILL_PATH" --json --out .skill-shortener/baseline.json
python3 "$SS/scripts/measure_skill.py" "$SKILL_PATH" # the human-readable section tableThe section table, largest first, is where the fat is — read it before reading the body.
Early exit. If the verdict is WITHIN_CAP, stop: print the current footprint and say no shortening is warranted — splitting a body that already fits costs a pointer hop for no saving. The one exception is an existing references/ tree that is chained or orphaned; see Edge cases. The user can override.
Done when: .skill-shortener/baseline.json exists with a non-empty sections array, and the verdict is recorded.
Read the body, then assign every heading from baseline.json exactly one disposition. Write .skill-shortener/manifest.json:
{
"target": "<skill-path>",
"sections": [
{ "heading": "Overview", "disposition": "KEEP" },
{
"heading": "API error codes",
"disposition": "MOVE",
"destination": "references/<topic>.md",
"load_condition": "when the API returns a non-200"
},
{
"heading": "History",
"disposition": "CUT",
"reason": "changelog and attribution; changes no behavior"
}
]
}destination may be a string or a list. load_condition is the clause that goes into the pointer, so write it as the agent will read it: "when X", "before Y", "if Z".
The manifest is the loss-prevention record. Nothing is verified as preserved except through it, so an unclassified section is an unaudited deletion waiting to happen.
Done when: every heading in baseline.json appears in the manifest exactly once; every CUT carries a reason; every MOVE carries a destination and a load_condition. scripts/verify_shorten.py checks all four in Phase 4 — do not defer them.
Present the plan as a table — heading, disposition, destination, lines saved — plus the projected body size against both caps and the always-loaded/on-demand split. Name the biggest three savings first.
Expected output — the plan, before any file is touched:
Plan for skill-x — 812 lines / 5,140 words → projected 190 lines / 1,480 words
heading disposition destination lines
----------------------- ----------- ---------------------------- -----
Azure deployment MOVE references/<branch>.md -180
Error code reference MOVE references/<codes>.txt -140
Release history CUT changelog; changes no behavior -46
Workflow KEEP - 0
always-loaded 64 tokens (unchanged) · on-trigger 12,900 → 3,700 · on-demand +9,100Mode 2 ends here. In Mode 1, stop and wait for an explicit go-ahead. A split is a judgment call and the user is the one who has to live with the result.
Done when: the user has approved the plan, or asked for changes that are folded back into the manifest.
MOVE destination. The moved material must be self-contained — a reader arriving with only the pointer's context can act on it. Add a one-line contents map at the top of any reference over 300 lines.CUT sections, replace each MOVE section with a pointer carrying its load_condition ("Read references/<topic>.md when the API returns a non-200"). A bare "see references/<topic>.md" is relocation, not disclosure, and Phase 4 fails it.metadata.version: minor for pure relocation, major if any CUT removed an instruction or the step sequence changed.When the plan extracts three or more reference files and the Agent tool is available, hand each one to its own worker: the worker's Input is references/split-patterns.md plus that section's text, and it returns the finished file. The body rewrite stays with the main agent, which is the only step that needs the whole picture.
Done when: every MOVE destination exists and is non-empty, the body contains a conditional pointer to each, and the version is bumped.
python3 "$SS/scripts/verify_shorten.py" "$SKILL_PATH" \
--manifest .skill-shortener/manifest.json \
--baseline .skill-shortener/baseline.json
python3 "$QV" "$SKILL_PATH"Then do the read-back, which no script can do for you: open every file the plan created and confirm the material arrived complete and reads as instructions rather than as an excerpt. The script proves the manifest is exhaustive and the wiring is sound; only the read-back proves the content survived the move.
On a failure, fix and re-run — up to 3 rounds, then report what still fails instead of looping. If the result is worse than the original, restore — guarding both variables, because an empty $SNAP leaves a deleted skill and nothing to put back:
: "${SKILL_PATH:?}"; : "${SNAP:?}"; test -d "$SNAP" || { echo "no snapshot at $SNAP" >&2; exit 1; }
rm -rf "$SKILL_PATH" && cp -R "$SNAP" "$SKILL_PATH"Done when: verify_shorten.py exits 0, quick_validate.py exits 0, and every created file has been read back.
Only the ones where judgment reliably goes wrong — everything else, handle on the merits.
references/ → measure it too. A chained or orphaned existing tree is in scope even when the body fits, and it is the one case where a WITHIN_CAP verdict still warrants work.SKILL.md at the root, children have one) → ask which skill. Never span two skills in one manifest.destination takes a list. Split it by sub-topic, never by line range: half a procedure is not self-contained.After each phase, print:
◆ [Phase Name] (phase N of 4 — [context])
··································································
[Check 1]: √ pass
[Check 2]: × fail — [reason]
[Criteria]: √ N/M met
____________________________
Result: PASS | FAIL | PARTIALPer-phase checks: Phase 0 Preflight, Snapshot, Baseline measured, Cap verdict. Phase 1 Every section classified, Reasons given, Load conditions written. Phase 2 Plan presented, Approval received. Phase 3 Destinations written, Pointers conditional, Version bumped. Phase 4 verify_shorten, quick_validate, Read-back.
Close every run — including an early exit, a refused gate, or a failed phase — with this block as the last thing printed:
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
Run stats elapsed 4m 12s · tokens 96,300 · cost $0.31
agents 0 · skills 1 · tool calls 22Fields are fixed and in this order: elapsed, tokens, cost, agents, skills, tool calls. tokens and cost are omitted entirely when the host reported no figure — never estimated. The other four always print; an undeterminable value prints n/a, and 0 is a determined value. elapsed comes from RUN_EPOCH, captured once in the preflight.
| File | Read it when |
|---|---|
references/behavior-preservation.md | you are assigning KEEP — it names the blocks that may never be cut, whatever they cost |
references/cut-list.md | you are assigning CUT — what is safe to delete and how to word the reason |
references/split-patterns.md | you are assigning MOVE — choosing the destination, writing the pointer, flattening |
© luongnv89, 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 8 other files (scripts, references) in skills/skill-shortener of luongnv89/asm.
Open the folder on GitHubat commit a01a183
Skill Shortener 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 |
|---|---|---|---|---|---|---|
| Skill Shortener this skillluongnv89/asm | 954 | — | ~3.8k | Automated safety check: Notes | MIT | |
| Context Compressionguanyang/open-agent-hub | 977 | 2 repos | ~4.6k | Automated safety check: Pass | MIT | |
| Bounty Hunter1sadjlk/bounty-hunter-skill | 282 | 1 repos | ~761 | Automated safety check: Pass | MIT | |
| Fleet Auditoralexgreensh/token-optimizer | 2.5k | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| Context Auditundefined-ui/second-brain-os | 1k | — | ~802 | Automated safety check: Pass | MIT | |
| Headroommomori777/Artemis | 380 | — | ~562 | Automated safety check: Pass | MIT |
guanyang/open-agent-hub
This skill should be used when long-running agent sessions need context compression, structured summarization, compaction, token-per-task optimization, or durable handoff summaries that preserve…
1sadjlk/bounty-hunter-skill
A professional AI bounty hunter persona named Atlas. An agent skill from 1sadjlk/bounty-hunter-skill.
alexgreensh/token-optimizer
Cross-system agent token/cost audit (Claude Code, Codex, OpenClaw, Hermes, OpenCode): idle burns, model misrouting, config bloat, with dollar savings.
undefined-ui/second-brain-os
Audit an agent's context layout against the four places: system prompt, tools, history, tail.
momori777/Artemis
SmartCrusher + CCR context compression — crunch large JSON arrays, tool outputs, and search results to save tokens.
butterbase-ai/butterbase-skills
A skill your agent uses when calling the app's AI gateway from agent tools — chat completions, embeddings, listing models, configuring defaults or BYOK, reading token/cost usage
luongnv89/asm
Create a skill or bring an existing one up to the same standard (validate + asm eval fix loop); run evals, tune triggering.
luongnv89/asm
Find Agent Skills for a goal the user cannot name yet, then export an installable bundle.
luongnv89/asm
Sync every enabled repo in the curated skill index and open a confirmation-gated PR.
luongnv89/asm
Add GitHub skill repos to the ASM index: clone, audit, eval, regenerate index, rebuild catalog, open PR.
luongnv89/asm
Install an improved variant of one named skill: resolve it by local path, repo, or name, run skill-creator's retrofit on a throwaway copy, then install the improved result.
luongnv89/asm
Improve an open-source GitHub skill and open a friendly suggestion PR upstream: fork, run skill-creator's retrofit, attach asm eval before/after metrics.
Categories
Refactor a too-long SKILL.md by progressive disclosure: measure token cost, classify every section KEEP/CUT/MOVE, shorten the body into references/ and scripts/, verify nothing was lost. Skill Shortener is an agent skill from luongnv89/asm.md by progressive disclosure: measure token cost, classify every section KEEP/CUT/MOVE, shorten the body into references/ and scripts/, verify nothing was lost.
Skill Shortener fits situations like: authoring new skills; tasks that involve LLM cost and token optimization.
Run `npx skills add luongnv89/asm --skill skill-shortener -a claude-code`. Or copy the skill folder (skills/skill-shortener in luongnv89/asm) into .claude/skills/skill-shortener in your project. Claude Code loads it when a task matches its description.
Run `npx skills add luongnv89/asm --skill skill-shortener -a codex`. Or copy the skill folder (skills/skill-shortener in luongnv89/asm) into .agents/skills/skill-shortener 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 luongnv89/asm --skill skill-shortener -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-shortener, .gemini/skills/skill-shortener, .github/skills/skill-shortener and .opencode/skills/skill-shortener in your project.
Going by SKILL.md and its folder, Skill Shortener needs Python for the scripts in its folder and the command-line tools its instructions call (git and python3). Our summary lists: Python 3; Node.js. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Grep, Glob. Compatibility (from SKILL.md): Claude Code; Python 3; skill-creator's quick_validate.py.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. 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.
Skill Shortener is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Skill Shortener: Context Compression (guanyang/open-agent-hub, 977 stars), Bounty Hunter (1sadjlk/bounty-hunter-skill, 282 stars), Fleet Auditor (alexgreensh/token-optimizer, 2.5k stars) and Context Audit (undefined-ui/second-brain-os, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
luongnv89 (a GitHub user) maintains it in luongnv89/asm, which has 954 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 6, 2026.
Source: luongnv89/asm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.