Skip to content
Agentmart
Submit a tool

glyphsteer

Use when steering retrieval with hidden in-band glyph markers — an LLM annotates a corpus with a controlled emoji/glyph vocabulary that biases search (lexical…

Skill by sancovp

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/sancovp-glyphsteer

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when steering retrieval with hidden in-band glyph markers — an LLM annotates a corpus with a controlled emoji/glyph vocabulary that biases search (lexical facet + dense direction) but is stripped from returned text; also for grading a RAG corpus and searching with grade badges, and for authoring/persisting a glyph "legend". Triggers on "glyphsteer", "emoji annotation", "hidden retrieval markers", "steer RAG", "grade a corpus", "facet by sentiment/grade", "glyph legend", "annotate corpus for search".

Use cases: ml

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/glyphsteer

What's inside

Skill name
glyphsteer
Description
Use when steering retrieval with hidden in-band glyph markers — an LLM annotates a corpus with a controlled emoji/glyph vocabulary that biases search (lexical facet + dense direction) but is stripped from returned text; also for grading a RAG corpus and searching with grade badges, and for authoring/persisting a glyph "legend". Triggers on "glyphsteer", "emoji annotation", "hidden retrieval markers", "steer RAG", "grade a corpus", "facet by sentiment/grade", "glyph legend", "annotate corpus for search".
License
MIT
Instructions
132 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# GlyphSteer — how to use it

Dual-regime retrieval steering via **compiled in-band glyph annotations**. An LLM writes a
controlled glyph vocabulary onto a corpus; the markers steer retrieval and then **vanish
from the output**. Package: `glyphsteer`, with its `grammar` extra for the syntax gate.

**Run its Python** from a plugin install with `uv run --no-project --with "glyphsteer[grammar]==0.3.0" --with "agent-skilltree>=0.4.0" python3` — pipe a block in as `python3 - <<'PY'` … `PY` — and from a clone of the public repository where `./install.sh` ran, with the clone's `python3`.

**Run `skilltree`** from a plugin install as `uvx --from "agent-skilltree>=0.4.0" skilltree …`, and from a clone where `./install.sh` ran, as `skilltree …` in the environment it installed into.

> A `packages/...` path below is in a clone of the public repository: run it from the clone's
> root (`.../chaincompiler`).

## The mental model (3 facts)

1. **Sidecar split** — a chunk has two representations that need not match:
   `indexed-form = clean ⊕ glyph_code` (what gets matched) vs `returned-form = clean`
   (what the reader sees). The marker steers findability, then disappears.
2. **One axis, two renderings** — FTS5's tokenizer **drops emoji**, so each axis carries
   BOTH: a **glyph** (emoji = the *dense* marker, a learned direction) AND a **tag** (ASCII
   sentinel like `gsxnegative` = the *lexical* marker, a rare max-IDF facet). You facet with
   the glyph; the library resolves it to its tag internally.
3. **The vocabulary is the gate** — annotation only counts if the glyph is in the vocab;
   unknown glyphs are dropped (syntax-only discipline, like the `*CC` compilers).

## Quickstart — annotate, index, facet, return clean (zero deps)

```python
from glyphsteer import SENTIMENT, Chunk, RuleAnnotator, annotate_chunk, build_index, search

corpus = [Chunk("a", "the deploy pipeline passed and works great"),
          Chunk("b", "the deploy pipeline crashed, this is broken and terrible")]

ann = RuleAnnotator.keyword(SENTIMENT, {
    SENTIMENT.by_name("positive").glyph: ["great", "works", "passed"],
    SENTIMENT.by_name("negative").glyph: ["broken", "terrible", "crashed"],
})
chunks = [annotate_chunk(c, ann, SENTIMENT) for c in corpus]   # attaches the glyph code
con = build_index(chunks, SENTIMENT)                            # 2nd arg = the vocab
neg = SENTIMENT.by_name("negative").glyph
hits = search(con, "deploy", facet=neg, vocab=SENTIMENT)       # facet by a glyph
print(hits[0]["text"])   # CLEAN text — the glyph is NOT in it (the hide)
```

Key calls: `annotate_chunk(chunk, annotator, vocab)` · `build_index(chunks, vocab)` ·
`search(con, query, facet=glyph, vocab=...)` · `facet_only(con, glyph, vocab=...)`.
The hide invariant: `from glyphsteer import check_hidden; assert check_hidden(chunk, vocab)`.

## Grade a corpus, search shows grades (the flagship)

`GRADE` is a built-in quality vocabulary (🏆 excellent / ✅ good / ⚠️ fair / ❌ poor). An LLM
grades each chunk; search returns the grade badge and can facet to a grade.

```python
from glyphsteer import GRADE, GRADE_RANK, Chunk, build_index, search, grade_label
from glyphsteer.index import facet_only
EXC, POOR = GRADE.by_name("excellent").glyph, GRADE.by_name("poor").glyph
corpus = [Chunk("c1", "use parameterized queries to prevent SQL injection", code=EXC),
          Chunk("c2", "just concatenate user input into the SQL string", code=POOR)]
con = build_index(corpus, GRADE)
for h in search(con, "SQL", vocab=GRADE):
    print(grade_label(GRADE, h["code"]), h["text"])     # badge + clean text
audit = facet_only(con, POOR, vocab=GRADE)              # the "what's bad" view
```
Grading rides the **lexical** regime — a grade is a filter/display label, NOT a semantic
direction (quality ≠ sentiment: a correct chunk can be grim, an upbeat one can be junk).
Runnable demo, from a clone: `python3 packages/glyphsteer/experiments/grade_demo.py`.

## Author your own glyph language + keep a legend

An LLM can invent its own vocabulary, persist it, and accumulate a master legend.

```python
from glyphsteer import author, save_legend, load_legend, merge, render_legend
V = author([                                   # tags auto-derived; raises on collision
    {"name": "claim",    "glyph": "📌", "description": "a factual assertion"},
    {"name": "evidence", "glyph": "🔬", "description": "supporting data"},
])
save_legend(V, "legend.json")                  # persist the glyph↔meaning↔tag table
V2 = load_legend("legend.json")
master = merge(V, author([{"name": "risk", "glyph": "☢️"}]))   # last-author-wins
print(render_legend(master))
```

## Wire it into ChainCompiler's skill search

`skilltree.search` facets the skill corpus by glyph (SkillTree is `agent-skilltree`, which
the uv line above names). **The legend you pass MUST contain the
glyph you facet on** — here we use the built-in `GRADE` vocab (which defines 🏆) and save it
as the legend. Put `glyphs: 🏆` in a SKILL.md's frontmatter, then:

```python
from skilltree.search import build_index, search
from glyphsteer import GRADE, save_legend
save_legend(GRADE, "grade_legend.json")                   # the facet glyph (🏆) lives here
con = build_index("path/to/skill/tree", vocab=GRADE)      # reads `glyphs:` frontmatter → tags
trusted = search(con, "deploy", facet="🏆", vocab=GRADE)   # only 🏆-graded skills; badge returned
```
CLI: `skilltree search ROOT "query" --facet 🏆 --legend grade_legend.json`.
(Facet on any glyph defined in the legend — your own authored vocab works the same way.)

## Syntax consistency (rulecatcher under it)

A glyph code is a little DSL, so it goes through ChainCompiler's lint/gate engine
(**rulecatcher**, via `chaincompiler.bridge`) — the same gate the `*CC` compilers use; the
`grammar` extra brings ChainCompiler and rulecatcher (the uv line above names it). Three verdicts:
`ok` · `orthogonal` (known glyphs, wrong order → steerable) · `syntax_break` (foreign token → fatal).

```python
from glyphsteer import GlyphGrammar, SENTIMENT
with GlyphGrammar(SENTIMENT) as gg:
    gg.lint(SENTIMENT.code([SENTIMENT.by_name("positive").glyph,
                            SENTIMENT.by_name("urgent").glyph])).verdict   # "ok"
    lint = gg.lint("🔥😊")           # urgent before positive
    lint.verdict, lint.fix          # "orthogonal", "😊🔥"  (canonical reorder)
    gg.lint_chain("gsxpositive -> gsxbogus").verdict                       # "syntax_break"
```
Gating is over the ASCII **tag** rendering (rulecatcher drops emoji, same as FTS5), so `lint`
first refuses, as `syntax_break`, whatever in a code is neither a vocabulary glyph nor the

From sancovp/chaincompiler, MIT.

More from sancovp/chaincompiler

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Oct 23, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from sancovp

Cite this page

glyphsteer skill. Agent Mart. https://agentmart.dev/skills/sancovp-glyphsteer (last updated 2026-10-24)