From glyphdown
Activate a two-register prompting convention: dense ASCII form for the model's internal reasoning, normal human-readable prose for user-visible output. Triggers on phrases like "use glyphdown", "compact thinking", "dense reasoning", "glyphdown mode", "think compact". The plugin does NOT measure its own impact; see the README for how to instrument an A/B if you want validated numbers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/glyphdown:glyphdown-modeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Dense ASCII form for INTERNAL reasoning. Plain prose for USER-VISIBLE output.**
Dense ASCII form for INTERNAL reasoning. Plain prose for USER-VISIBLE output.
Declares a convention. The model is asked to split its output into two registers:
Internal register (chain-of-thought, scratchpads, tool-call reasoning, intermediate plans, error analysis): dense ASCII form. Symbols, key=val, abbreviations, pipe-separated lists.
External register (the final message the human reads): normal human-readable language. Full sentences. No symbols unless they improve clarity (tables, code blocks, file paths).
| Content type | Register |
|---|---|
| Planning ("first I'll X, then Y") | INTERNAL |
| Step-by-step debugging logs | INTERNAL |
| Tool-call argument reasoning | INTERNAL |
| Self-critique / verification | INTERNAL |
| Direct answer to the user | EXTERNAL |
| Explanation of what you did | EXTERNAL |
| Code blocks | EXTERNAL (the code itself is unchanged) |
| File paths, commands | EXTERNAL |
| Tables presented to user | EXTERNAL |
| Error messages quoted to user | EXTERNAL |
| Commit messages | EXTERNAL |
The vocabulary below is a SINGLE-SOURCE table. Each row carries a
level column. The SessionStart hook reads ~/.ultracos/active-level
and prunes rows whose level exceeds the active intensity. Levels are
cumulative: lite is a subset of full, which is a subset of ultra.
With active-level=lite only lite rows are kept; full keeps
lite + full; ultra keeps all three. off suppresses skill injection
entirely.
This replaces the three duplicated vocab blocks (one per level) that previously lived here; drift between them was the bug internal-ref fixed.
| field | level | value |
|---|---|---|
| arrows | lite | -> ` |
| arrows | full | -> : - @ # = ` |
| arrows | ultra | -> : - @ # = ` |
| state | lite | ok ~ x ? |
| state | full | ok healthy / ~ degraded / x failed / ? not-known |
| state | ultra | `ok |
| prefixes | lite | V=verify A=analyze I=impl R=read W=write F=fix E=error |
| prefixes | full | V=verify A=analyze I=impl R=read W=write F=fix E=error |
| prefixes | ultra | V=verify A=analyze I=impl R=read W=write F=fix E=error |
| abbreviations | full | env=environment cfg=config var=variable max=maximum min=minimum |
| abbreviations | ultra | env cfg var max min loc fn arg ret err st sts (definitions dropped; assumed) |
| grammar | full | -> chain a->b->c / `state name(ok |
| grammar | ultra | `-> (chain: a->b->c) |
A second dialect tuned for the Opus 4.7 tokenizer exists separately and is not bundled in this plugin.
Internal reasoning, prose form:
"I need to first read the file to understand the context, then I'll identify the relevant function, and after that I'll modify it to handle the edge case the user mentioned."
Internal reasoning, dense form:
R:file -> locate:fn -> I:patch edge_case @user_req
Both express the same plan. The dense form is shorter; how much shorter in TOKENS depends on the tokenizer and the specific substitutions, which is why this plugin does not claim a fixed percentage.
External output, dense form (BAD — confuses the user):
"I:patched fn
foo@line:42 ok"
External output, prose (GOOD):
"Patched
fooat line 42. The edge case now returnsNoneinstead of panicking."
Type one of the trigger phrases listed above in a normal prompt.
The companion UserPromptSubmit hook injects the dual-register
directive into the model's context for the rest of the turn.
To deactivate: say stop glyphdown.
See the plugin README for how to instrument your own measurement
across input_tokens, cache_creation_input_tokens,
cache_read_input_tokens, and output_tokens if you want
validated numbers on your traffic.
UserPromptSubmit/glyphdown-mode-detector.py — detects trigger
phrases per turn; injects the dual-register directive.PreCompact/glyphdown-compact-instructions.py — adds a dense-form
mandate to the compaction summary template, with rules to
preserve restart-critical literals (file paths, IDs, commands,
error strings, decisions).PostToolUse/glyphdown_codec.py — lossless tool-result codec
(ANSI strip, JSON minify, blank-line collapse, trailing-marker
truncation, JSON/YAML/TOML data-shape short-circuit, schema-tag
prefix, break-even guard).When a tool_result starts with a line shaped like:
[glyphdown:compact-v1 shape=<text|json|yaml|toml> ratio=<float> applied=<csv>]
it means the payload below was compacted by glyphdown_codec.py
losslessly. The transforms listed in applied= are deterministic
and information-preserving for the declared shape:
ansi-strip — terminal escape sequences removedjson-minify — JSON whitespace removed (round-trip equal)blank-collapse — 3+ consecutive blank lines collapsedtruncate — payload exceeded GLYPHDOWN_TRUNCATE_BYTES; a single
trailing [truncated: N lines / M bytes hidden] marker indicates
the cut. The visible portion is still byte-identical to the
original prefix.ratio is compact_tokens / original_tokens. Values close to 1.0
indicate the codec found little to compact.
Do NOT compensate by being more verbose in your reply. The compaction is lossless on the listed dimensions; no information was rephrased, paraphrased, or summarized. Verbose compensation (observed in similar tools — see rtk issue #582) inflates output tokens by ~50% with zero quality gain. Treat tagged payloads as equivalent to their pre-compaction form.
If you need byte-exact original output (e.g. for a reproducible
artifact like a checksum), ask the user to re-run the command with
GLYPHDOWN_DISABLE=1.
The compaction marker emitted by glyphdown_codec.py is referred to
elsewhere in the codebase (hooks, tests, A/B harness) as the
schema-tag. It is a single line at the very start of a
tool_result payload with this exact shape:
[glyphdown:compact-v1 shape=<text|json|yaml|toml> ratio=<float> applied=<csv>]
Field semantics:
glyphdown:compact-v1 — fixed namespace + version. If the version
bumps (e.g. compact-v2), the transform list semantics may change;
the model should re-read this section.shape — declared data shape of the payload. text is the
default for unstructured output; json/yaml/toml mean the
payload round-trips through the corresponding parser unchanged.ratio — compact_tokens / original_tokens. Lower = more
compaction achieved. ~1.0 means the codec found little to strip.applied — comma-separated list of the lossless transforms that
ran (subset of ansi-strip, json-minify, blank-collapse,
truncate). Order is informational, not load-bearing.The tag prefix is configurable via GLYPHDOWN_TAG_PREFIX (default
[glyphdown:compact-v1); the closing ] and the fields above are
fixed by the codec.
applied= is
information-preserving for the declared shape. Do not ask the
user to re-run "to see the full output" unless they need byte-
exact bytes (checksum, diff artifact) — in which case suggest
GLYPHDOWN_DISABLE=1.applied= contains truncate, the payload was cut at
GLYPHDOWN_TRUNCATE_BYTES. The visible prefix is byte-identical
to the original; only the tail is missing. If the user's task
needs the tail, ask before re-running.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
npx claudepluginhub mikkoparkkola/glyphdown