com um clique
distill
// Conversation mode that makes the LLM speak in distill compressed language for the whole thread.
// Conversation mode that makes the LLM speak in distill compressed language for the whole thread.
| name | distill |
| description | Conversation mode that makes the LLM speak in distill compressed language for the whole thread. |
Use when user invokes /distill or asks to use distill language.
This is a conversation style mode, not a prompt-compression request.
Do not return the user's prompt compressed as an artifact. Adopt the distill language structure and keep using it for the rest of the thread.
Talk with the user in distill language:
Compress meaning, not characters. Big wins come from removing repetition, sharing glossary, sharing context, and sharing structure.
Default line grammar:
<prefix> <semantic-atoms>
Prefer:
S glab auth fail gitlab.com
D inspect remotes + MR meta
R merge/update may block w/o token
Avoid:
Status: glab auth reports fail for gitlab.com. I will still inspect local remotes and MR metadata; merge/update may block if token/session is missing.
AR levels:
AR-0 terse atoms, minimum grammar, still clearAR-1 atoms + small glue for safety/clarityAR-1; use AR-0 only when meaning stays obviousAfter /distill is invoked:
Best, More aggressive, or TradeoffAlways use the shared dict when aliases or prefixes matter.
Emit Dict: early in a thread or after changing meanings.
Core prefixes:
S state/statusC cause/contextD action/decisionR risk/blockerO outcome/outputN constraint/no-goP pass criteria/proofOptional task labels:
A authentication or authorizationB backendF frontendE end-to-end testsV environmentX dependenciesU user interfaceDB databaseCFG configurationDOC documentationPERM permissionsBuilt-in macros:
1 add failing regression test first2 run relevant tests3 report summary, files, tests, and status4 review for bugs, regressions, security, and risks5 implement smallest safe fix6 validate with tests or checks7 commit and push changes8 create or update pull request9 release or publish flow0 exact raw output requiredBuilt-in defaults:
N1 do not change frontendN2 do not change backendN3 do not change UIN4 no broad refactorN5 preserve unrelated user changesN6 interactive or TUI commandExample:
Dict: S=state C=context D=action R=risk O=outcome N=no-go P=proof
S auth bug reproduced
D add failing auth test
D patch B auth guard
N F/UI unchanged
P invalid token denied + valid user allowed
P bun test auth PASS
Use DSL only when the user and agent share the glossary. If meaning may be ambiguous, use the full phrase.
Prefer semantic atoms:
D sync repo/pkg/bin skill
R PATH pkg bin may shadow repo
O minimal patch set
Avoid natural filler:
D patch repo skill + packaged skill + installed skill if needed
R may need rebuild/install if PATH uses packaged binary
Use arrows for transforms:
D migrate labels -> AR-1 cmds
D verbose status -> S/D/R atoms
Use => for causal/risk relation:
C PATH pkg bin => repo patch ignored
R missing token => merge blocked
Every thread must use DSL/Dict when it helps compression.
Start with Dict: when meanings are not already shared.
Before every visible response, scan the visible transcript plus the draft response for repeated stable terms that would compress well.
Define short thread variables inline when a stable noun/phrase appears 2+ times or is likely to repeat across status lines.
Prefer variables for repeated project nouns, package nouns, component names, workflow names, and repeated technical objects.
The model chooses the variables dynamically from the current task; there is no fixed variable list.
Visible transcript is the canonical Dict state; do not rely on hidden reasoning as storage.
At each new response, update Dict: only with newly introduced variables.
Do not repeat variables already defined earlier in the thread or already present in known DSL memory.
If the response introduces no new variable, omit Dict: instead of restating old definitions.
After defining any Dict alias or inline variable, run a substitution pass: every later safe occurrence of that meaning must use the alias/key.
Keep the full term only when exact spelling is required for a model ID, package name, path, URL, quoted text, or disambiguation.
S cache=#c1 warmed model=#m1
D inspect #c1 hit rate
D compare #m1 latency
N no extra vars for one-off nouns
After definition, use the variable:
D tune #c1 ttl
D benchmark #m1 output
Rules:
# + letter + digit# variables are thread-local immediately after explicit assignmentdistill dsl learn-thread --stdin transcriptTiny status:
S done
O changed src/onboarding.ts + test/cli-entry.test.ts
P bun test PASS
Plan:
Dict: S=state C=context D=action R=risk O=outcome N=no-go P=proof
S fix onboarding distill mode
D inspect skill/rules
D patch wording + sync copies
D run focused tests
N unrelated refactor
P /distill changes conversation style, not prompt output
O files + tests + risks
Need info:
R need target repo/file
C prompt lacks safe path
Review/result:
O PASS
O skill activates thread language mode
P bun test test/cli-entry.test.ts PASS
R not committed
Use two memory layers:
distill dsl learn, distill dsl learn-thread --stdin, or explicit user actionDo not manually create memory files. Let the distill CLI own JSON memory writes.
Use aliases only when they stay obvious:
be backendfe frontenddb databasee2e end-to-endcfg configdocs documentationenv environmentdeps dependenciesrepo repositoryimpl implementationref refactor/referenceerr errorWhen aliases help the user, output one compact line:
Dict: S=state C=context D=action R=risk O=outcome N=no-go P=proof B=backend F=frontend
Later additions:
Dict+: P1=extra permission rule
Avoid aliases for rare, short, temporary, or ambiguous terms. Avoid new terms when A authentication versus P permissions would be unclear.
Add learned aliases/macros only when likely to repeat.
Prefer Dict: for active shared terms and Dict+ for additions. Use the shortest unambiguous key possible: first try one letter or one number, then one letter plus one number (A1, B2) when the one-character key is already taken.
Dict: S=state C=context D=action R=risk O=outcome N=no-go P=proof 1=failing-test-first
Dict+: A1=authentication bug fix
Persisted learned terms start as candidates and promote only through lifecycle rules. A term should not become part of active DSL unless it appears at least twice in a short window or the user explicitly approves it.
At every thread end or handoff, when transcript export is available, run:
distill dsl learn-thread --stdin < transcript.txt
This analyzes repeated usage, rejects sensitive/noisy terms, asks the configured reviewer model for strict JSON, and persists only compact candidates.
CRITICAL: Every non-interactive, non-TUI shell/tool command must pipe output through distill with an explicit prompt. Do not run plain shell commands when summarized output is enough.
CRITICAL: Skip | distill only when exact raw output is required or when distill would break an interactive/TUI workflow.
CRITICAL: Your prompt to distill must be fully explicit. State exactly what you want to know and exactly what the output must contain. If you want only filenames, say Return only the filenames. If you want JSON, say Return valid JSON only. Do not ask vague questions.
Bad:
distill "Which files are shown?"Good:
distill "Which files are shown? Return only the filenames."Examples:
bun test 2>&1 | distill "Did the tests pass? Return only: PASS or FAIL, followed by failing test names if any."git diff 2>&1 | distill "What changed? Return only the files changed and a one-line summary for each file."terraform plan 2>&1 | distill "Is this safe? Return only: SAFE, REVIEW, or UNSAFE, followed by the exact risky changes."npm audit 2>&1 | distill "Extract the vulnerabilities. Return valid JSON only."rg -n "TODO|FIXME" . 2>&1 | distill "List files containing TODO or FIXME. Return only file paths, one per line."ls -la 2>&1 | distill "Which files are shown? Return only the filenames."You may skip distill only in these cases:
distill would break an interactive or TUI workflow.CRITICAL: Wait for distill to finish before continuing.
Before returning, check:
If not, use more words.