Tells logo

Tells

Community
AThevon
tells

Internal genjutsu module - the reflexes a model falls into when nothing asked for them (invented data, decorative filler, converged layouts, hollow copy), each named by its evidence and a question back to the validated thesis. Loaded by cast and paint on web stacks, after the thesis gate.

Overview

PublisherAThevon
Repositorygenjutsu
Skill nametells
Stars
687
Forks
52
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by AThevon on GitHub. Read the source before you install it.

Installation

Install the Tells AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/AThevon/genjutsu/tree/main/skills/_jutsu/tells
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AThevon/genjutsu.git /tmp/genjutsu
mkdir -p .claude/skills
cp -r /tmp/genjutsu/skills/_jutsu/tells .claude/skills/tells
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Tells in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Tells on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Tells is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Tells

A tell is a default the thesis never asked for.

That sentence is the module. The rest explains how to recognise one, how to write one down, and what to do with it once found. Nothing here names a replacement: a replacement would only be the next default, and genjutsu does not ship a look.

The rule: the thesis is the only authority

A pattern is a tell when the validated thesis does not name it. Nothing else decides.

  • Named means named. The thesis has to name the pattern itself: "the header shows the Paris and Tokyo clocks, because the studio works across both". A mood word unlocks nothing. "Editorial", "agency", "premium" or "bold" do not name a numbered eyebrow or a display serif, and most tells are precisely the clichés those words summon. In practice the pattern is named in the thesis's Allowed patterns: line, which cast and paint write under the thesis before the user validates it.
  • An explicit request goes through the thesis. When the brief asks for something specific (a weather strip, a version badge, a live counter), write it into the thesis by name before you build it. The thesis is what allows it, not the brief. A request that never reached the thesis still reads as a tell at audit time, because afterwards nobody can tell the two apart.
  • An unvalidated thesis allows nothing. When no human could validate the thesis, every tell counts, and the report says why.

How an entry is written

Every entry, here and in the references, has exactly three fields. Never a fourth.

  • Marker - what you can see: a literal string, a pattern, a structure.
  • Why it is a tell - the model behaviour that produces it. Not a judgement of taste.
  • The question - one question that sends you back to the thesis or to the project's own data. Never a replacement.

Report a tell in the same shape: the marker as found (file:line and the text), then your answer to its question.

The four families

FamilyThe test
Invented informationDoes this datum come from the project, or from a brief request written into the thesis? If neither, it was invented.
Decorative fillerDoes this element carry information, or only texture?
Reflex convergenceDid this choice (layout, type, palette) come from the thesis, or from the model's habit?
Hollow copyDoes this sentence say something true of this project and of no other?

One element can fail two tests. Report it once, under the family whose question it fails first.

Platform coverage

  • Web - references/web.md, loaded together with this file.
  • Compose - not covered yet. There are no entries, and none are to be improvised: a tell is observed in real runs, never deduced.
  • SwiftUI - not covered yet. Same rule.

On a Compose or SwiftUI stack this module is not loaded at all.

Protocol

When it loads. After the thesis gate, before any visual choice is frozen. In cast that is the LOAD step. In paint it is Phase 3, before the design-system query, so that the dataset's proposal passes through it. It gets a shell call of its own: with references/web.md it is too long to share a call with another module without the output being cut.

Right after it loads, read the thesis's Allowed patterns: line against this catalogue. When it allows entries catalogued here, say so to the user in one line at the next gate (paint: with the design system; cast: with the variants, or before implementing when there are none), naming them: "This thesis allows three known reflexes: mono labels, hairline rules, a paper ground." A validated thesis may keep a reflex. It never keeps one unnoticed.

While writing. Read a family's test before writing what it governs: the copy against Hollow copy, every number and name against Invented information, the layout pass against Reflex convergence, each ornament against Decorative filler. The cheapest tell is the one never written.

At audit. audit.py --group tells reports what it can see, and each finding is confronted with the thesis before it counts:

  1. Look for the pattern in the validated thesis's Allowed patterns: line.
  2. Found: list the finding as allowed by the thesis, with that entry quoted.
  3. The detection contradicts the entry's own marker (a loop that reports a real loading state, a modal backdrop, a matched line that is not displayed text): list it as not this tell, with the file:line that proves it. Never on a matter of taste.
  4. Otherwise it is a problem. Fix it only on the lines this run wrote, run the check again (two passes at most), and count what remains with the other problems. A tell that was already in the project is listed for the user, never changed at audit.

The script never makes this call. It files every tell at nice-to-have and leaves them out of its own problem count, because it cannot read the thesis. You can.

What the script sees, and what it does not

audit.py reads the displayed text of JSX, Vue, Svelte, Astro and HTML files: the text between tags, plus alt, title, aria-label and placeholder. It never reads class names or style objects as text. The gradient, glass, glow, blob and perpetual-motion checks are the exceptions: those tells are classes or CSS rules, so they read the source. It does not read strings held in JavaScript either: copy kept in an array or an object (const features = [{ title: "..." }]) and rendered through {...}, or kept in a .ts or .js content file, is invisible to it. A clean text check means the markup is clean, not the page.

CheckFamily
tell-invented-statusInvented information
tell-locale-stripInvented information
tell-placeholder-identityInvented information
tell-fake-codeInvented information
tell-round-numberInvented information
tell-numbered-eyebrowDecorative filler
tell-generic-stepDecorative filler
tell-scroll-cueDecorative filler
tell-dot-runDecorative filler
tell-glowDecorative filler
tell-blobDecorative filler
tell-perpetual-motionDecorative filler
tell-equal-cardsReflex convergence
tell-gradient-textReflex convergence
tell-glassReflex convergence
tell-em-dashReflex convergence
tell-filler-verbHollow copy
tell-duplicate-ctaHollow copy

What stays a manual read, because no pattern can judge it:

  • a fake product drawn in divs: a dashboard, a terminal or a task list built from styled boxes;
  • one layout family repeated from section to section;
  • a headline on one side with a small paragraph floating in the opposite corner;
  • the copy register drifting between sections;
  • monospace spread across labels, navigation and captions, well beyond code and tabular figures;
  • copy held in JavaScript data (arrays, objects, content files) and rendered through expressions: read it against every family.

Read the finished page once for those six, and report what you find in the same three fields. Every other entry of references/web.md that has no check above is a manual read too.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Tells AI skill do?

Internal genjutsu module - the reflexes a model falls into when nothing asked for them (invented data, decorative filler, converged layouts, hollow copy), each named by its evidence and a question back to the validated thesis. Loaded by cast and paint on web stacks, after the thesis gate.

Why use Tells on TypingMind?

Because you install it once and use it with any model. Tells is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Tells in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AThevon/genjutsu/tree/main/skills/_jutsu/tells. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Tells?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Tells?

As many as you like. As long as a model supports skills, you can use Tells with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Tells AI skill free?

It is published on GitHub by AThevon. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇