# Awaara Lab — Full Content (llms-full.txt) > Full text of every page on lab.awaara.cn. For the short index, see https://lab.awaara.cn/llms.txt. Generated 2026-10-07. Awaara Lab is an independent project by a solo developer (@wavborn on X); not affiliated with Anthropic, OpenAI or Google. --- # llms.txt Checker URL: https://lab.awaara.cn/llms-txt-checker/ # llms.txt Checker Validate your llms.txt against the llmstxt.org spec: 10 checks, an instant score, and a copyable Markdown report. Paste a URL or your file content. Everything runs in your browser, so nothing is uploaded. No file yet? Generate a starter from your site name and key pages, then validate it here. We try to fetch /llms.txt from the domain you enter. If the site blocks cross-origin reads, use the “Paste file content” tab instead. Do not have one yet? Fill in the blanks and get a starter file that passes the checks above. Format per line: Page title, then the URL, then what the page covers, separated by vertical bars. ## What is llms.txt? llms.txt is a proposed standard (llmstxt.org, 2024): a Markdown file at your domain root that lists the pages that matter most on your site, written for how language models read. It does for AI systems what robots.txt does for access control and sitemap.xml does for crawlers: a clear # H1 site name, a > summary, and ## section-grouped lists of links with short descriptions. ### Minimal valid example # Acme Docs > Developer documentation for Acme's API and SDKs. ## Guides - [Quickstart](https://acme.com/docs/quickstart): get running in 5 minutes - [Authentication](https://acme.com/docs/auth): API keys and OAuth ## Optional - [Changelog](https://acme.com/changelog): what's new What the checker looks at Every file runs through these 10 checks, updated for the llmstxt.org v2 spec (August 2026). A pass is worth a point and a warning half a point; a file with no H1 or no links is capped at 40. An ## Optional section is reported but not scored, because v2 dropped its special meaning. | # | Check | What it verifies | How to fix a failure | | --- | --- | --- | --- | | 1 | H1 site name first | The file opens with # Your Site Name, the only required part | Make the H1 the first line, and use only one | | 2 | Blockquote summary | A > summary sits directly under the H1 | Add a one-sentence > line after the H1 | | 3 | File-list sections | Links grouped under ## headings | Group links under ## headings | | 4 | Markdown links | At least one [name](url) link exists | Add links: the file is an index | | 5 | Absolute HTTPS URLs | Link targets are full https:// URLs, not relative paths | Expand relative links to full URLs | | 6 | Link names | Every link has a readable name | Give each link a short name | | 7 | No duplicate URLs | No link target appears twice | Remove the duplicate entry | | 8 | Pure Markdown | No HTML tags mixed into the file | Replace HTML with Markdown | | 9 | Reasonable size | File under ~50,000 characters | Move full text to llms-full.txt or linked .md files | | 10 | File-list item format | Items under ## read - [name](url): notes | Rewrite bare URLs and loose links as list items | ## FAQ ### Q: Where do I put my llms.txt file? Usually at your domain root: https://yoursite.com/llms.txt, served as plain text. Since v2 a file can also sit at any path, such as /docs/llms.txt. It covers the pages under that path, and agents use the most specific file for a given page. ### Q: What changed in llms.txt v2? Jeremy Howard revised the proposal on August 10, 2026. A file can now sit at any path and covers the pages under it. Markdown versions can be page.html.md or page.md. Pages can point to their Markdown version with rel="alternate" type="text/markdown" and to their llms.txt with rel="describedby", as a or a Link: header. The ## Optional section is still allowed but no longer special, so this checker stopped scoring it. Details: https://llmstxt.org/changes.html ### Q: What is the difference between llms.txt, robots.txt and sitemap.xml? robots.txt controls which crawlers may access which paths. sitemap.xml lists URLs for search crawlers. llms.txt is a curated, human-readable index that suggests priority pages and context to AI systems. They complement each other. ### Q: Does llms.txt improve my Google rankings? There is no confirmed ranking effect. Its purpose is helping AI assistants understand and cite your content accurately. That matters for AI-driven discovery, not classic SEO. ### Q: How often should I update llms.txt? Whenever important pages move, get renamed, or new flagship content launches. Re-run this checker after each update to catch broken links or drift from the spec. ### Q: Is there a size limit? The spec has no hard limit, but keep it concise. It should be an index, not a dump. If it grows large, split full page text into llms-full.txt and keep llms.txt as the curated overview. ### Q: Is my content uploaded anywhere? No. Every check runs locally in your browser via JavaScript. In URL mode we fetch the public file directly from the site you enter. Nothing is stored or sent to our servers. ### Q: Does ChatGPT or Claude actually read llms.txt? No provider has officially said so. None of the big AI search products document llms.txt as an input to their answers. Coding assistants are the exception — point Cursor or Claude Code at your docs and they will read it. Think of llms.txt as a clean index for machines, not a ranking lever. ### Q: Why does my llms.txt return 200 for a 404 page? Your host is serving the homepage with a 200 status on unknown paths — Cloudflare Pages does this when there is no top-level 404.html. To a crawler it looks like every URL exists, llms.txt included. Add a real 404 page so missing paths return 404, then re-run the URL check here. ### Q: What is the difference between llms.txt and llms-full.txt? llms.txt is the index: short and curated, links with one-line descriptions. llms-full.txt is the optional companion with the full Markdown of every page, for assistants that want it all in one fetch. Keep the index lean. --- # Claude Skill Validator URL: https://lab.awaara.cn/claude-skill-validator/ # Claude Skill Validator Unofficial tool · not affiliated with Anthropic Published 2026-10-06 · Updated 2026-10-07 Paste your SKILL.md and get an instant compliance report against the Agent Skills specification: frontmatter fields, name rules, description quality, and common upload errors. Everything runs in your browser, so nothing you paste ever leaves your device. A lenient mode covers Claude Code's extra keys. ## What it checks ### Frontmatter structure File must open with YAML frontmatter between --- lines; YAML must parse cleanly; only the six spec keys are allowed (name, description, license, compatibility, metadata, allowed-tools). Anything else belongs in metadata. ### Name rules name is required: 1–64 chars, lowercase letters, numbers and single hyphens only, no leading or trailing hyphen. It must match the skill's parent directory name exactly. ### Description rules description is required: 1–1024 characters, a single line of plain text. No newlines, no angle brackets. This is the text agents read to decide when the skill applies. ### Types & limits metadata must be a string-to-string map, allowed-tools a space-separated string (it's experimental), compatibility at most 500 characters. Body should start with an H1 and stay under ~500 lines. ### Description quality State both what the skill does and when to use it, in third person, with the trigger terms an agent would match on. This is the top cause of skills that validate but never fire. ### Keep it portable File links from SKILL.md should be one level deep, and resources should live under scripts/, references/ or assets/ for progressive disclosure. ## Spec reference The Agent Skills format is an open standard originally created by Anthropic. A skill is a directory containing a required SKILL.md (YAML frontmatter + Markdown instructions) plus optional scripts/, references/ and assets/ folders. Agents load skills by progressive disclosure: metadata first, then the body, then resources. The official field rules are summarized below, cross-checked against the Agent Skills specification and the reference validator in the anthropics/skills repository. | Field | Required | Rules | | --- | --- | --- | | name | Yes | 1–64 chars; lowercase a-z, 0-9, hyphens; no leading/trailing/consecutive hyphens; must match parent directory name | | description | Yes | 1–1024 chars; single line, plain text; states what the skill does and when to use it | | license | No | License name or reference to a bundled license file | | compatibility | No | ≤ 500 chars; environment requirements (product, packages, network access) | | metadata | No | Arbitrary string → string map for client-defined properties (e.g. version, author) | | allowed-tools | No | Experimental; space-separated list of pre-approved tools, e.g. "Bash(git:*) Read" | ## FAQ ### Why does my skill fail to upload with "invalid frontmatter"? The most common cause is an unknown top-level key. The spec allows exactly six: name, description, license, compatibility, metadata and allowed-tools. Extras like version: or author: must move under metadata. The second most common cause is a YAML syntax error. An unquoted colon or a tab indent will break the whole block. ### Why do I get "name doesn't match directory"? The name field must exactly match the parent directory name. A skill named pdf-tools must live in a folder called pdf-tools. Use kebab-case: lowercase letters, numbers and single hyphens only, up to 64 characters. ### What are the rules for the skill description? Required, 1 to 1024 characters, a single line of plain text with no newlines or angle brackets. Write it in third person and cover both what the skill does and when to use it. This string is the sole trigger agents use to decide whether the skill applies. Also see the Claude Code skills documentation. ### What is the allowed-tools field? An experimental, optional field listing pre-approved tools as a space-separated string, for example "Bash(git:*) Read". Most skills should omit it; only use it when the skill should be restricted to specific tools. ### Does this validator upload my SKILL.md anywhere? No. Everything runs locally in your browser with JavaScript. Nothing you paste is sent to any server, and no account or signup is needed. ### Why isn't my Claude Code skill triggering? When the frontmatter YAML doesn't parse, Claude Code still loads the skill — it just drops every field. With no description left to match against, the skill never fires, and nothing tells you why. Nine times out of ten it's an unquoted colon, a tab where spaces should be, or a misspelled key. One more quirk worth knowing: Claude Code ignores keys it doesn't recognize without a word of complaint. This page validates against the stricter Agent Skills spec, where an unknown key is an error — so a typo like allowed_tools will fail here but pass silently over there, and the skill still won't trigger. ### Unexpected key(s) in SKILL.md frontmatter Your frontmatter has a top-level key outside the six the Agent Skills spec allows: name, description, license, compatibility, metadata and allowed-tools. Things like version: or author: belong under metadata. A caveat: Claude Code accepts extra keys (argument-hint, context, hooks and the like) and quietly ignores ones it doesn't know. This validator enforces the strict spec used for claude.ai uploads instead — the safer target if you want the skill to work everywhere. ## Related tools ### llms.txt Checker → Validate your llms.txt against the llmstxt.org spec: 10 checks, instant score, copyable Markdown report. ### textGrain, Explained → What OpenAI’s invisible text watermark is, what it can and cannot prove, and why no public checker exists. --- # AI Humanizer URL: https://lab.awaara.cn/ai-humanizer/ # AI Humanizer Paste a draft (40 to 1,200 words) and see the phrases that make it read as machine-made. Browser rules highlight stock vocabulary, "it's not X, it's Y" contrasts, connector openers, colon and question reveals, Oxford-comma triads and dashes as you type. Check sends the text to an AI review that flags sentences and whole-text habits and returns a 0 to 100 score: 80% AI review, 20% browser rules. Rewrite writes three versions, reviews each, keeps the lowest-scoring one within length limits, and repeats once on the winner. It then lists sentences where a concrete detail only the author knows would help. ## Test results On 136 texts (50 human from HC3 and Hacker News 2014 to 2016; 86 AI from ChatGPT, GPT-4, Mistral, Kimi K3, MiMo, GLM, MiniMax and 14 humanizer-rewritten samples), the review at a cutoff of 50 marked 75 of 86 AI texts and 3 of 50 human texts. In a test on 12 AI samples the rewrite loop moved the average score from 86 to 54; 5 of 12 ended below 50. No Claude samples yet. ## Limits It measures writing patterns, not authorship. Do not use it to grade, hire or discipline anyone. No promise about Turnitin, GPTZero or other detectors. Text is not stored; a per-IP daily counter expires after about a day. Free: 20 checks and 5 rewrites per day. --- # textGrain Explained URL: https://lab.awaara.cn/textgrain/ # textGrain, Explained OpenAI calls its invisible text watermark textGrain. It went live on October 5, 2026. The idea is simple: nudge the words ChatGPT and Codex pick, so a detector can later check whether an OpenAI model likely wrote a passage. You see nothing. No hidden characters, and copy-paste does not wash the signal out. For now it is rolling out to ChatGPT and Codex users in the EU, where the AI Act's transparency rules require machine-readable labels. API developers anywhere can turn it on for select models. The detector is the catch: OpenAI only hands it to approved researchers and expert organizations, so there is still no public way to check a text. Last verified: October 7, 2026 · Primary source: OpenAI · Independent explainer, not affiliated with OpenAI The EU AI Act says AI-generated text must carry a machine-readable label. textGrain is how OpenAI plans to do that without changing what readers see. | What | Invisible statistical watermark embedded in the model's word choices | | --- | --- | | Announced | October 5, 2026, with a 20-page technical report co-written with researchers from the University of Pennsylvania and Yale | | Who gets it | Eligible ChatGPT and Codex users in the EU (rolling out over weeks, no opt-out); API developers worldwide can opt in for select models, off by default | | Why | The EU AI Act's transparency obligations, in force since August 2, 2026, require machine-readable labels on AI-generated content | | Detection | About 80% at 200 tokens, 95% at 400 tokens (1% false-positive rate, psychology passages); weaker on math and short text | | Editing | Replacing 10% of words with synonyms cut detection from 92% to 66%; 25% cut it to 17% | | Detector access | Approved researchers and expert organizations only, case by case. No public checker exists | | Status | Last checked October 7, 2026: EU rollout phased in, detector still closed to the public | ## How it works When a model writes, it picks each next word from a ranked list of candidates. textGrain intervenes at that moment: using a secret key, it sorts those predictions and slightly favors some words over others. One nudge means nothing on its own. Hundreds of nudges across a long passage add up to a statistical pattern. The detector works the other way round. Given a passage and the secret key, it checks whether the word choices line up with the pattern more often than chance would allow. Because the pattern lives in the words themselves, it survives copy and paste. There is no hidden character to delete, no invisible space, no metadata, which is also why character-cleaning "watermark removers" cannot strip it. OpenAI says the watermark does not identify the user and does not change the model's capabilities. On its newest model, the Artificial Analysis Intelligence Index moved from 49.57 unwatermarked to 49.76 watermarked, and GPQA Diamond from 94.44% to 93.94%. Those are noise-level differences. The company also plans to release the technology as open source. ## Who is affected | ChatGPT / Codex in the EU | Watermark added to eligible text output on every plan, phased in over the coming weeks. Users there cannot switch it off. | | --- | --- | | OpenAI API, worldwide | Developers can opt in to watermarking for select models from October 5, 2026. It stays off unless someone turns it on. Cloud partners such as Microsoft Azure will offer the same option. | | Everywhere else | Nothing changes for now. OpenAI is not making text watermarking a global default at launch, and says the regional approach lets it learn from real-world use before going further. | ## What a watermark can and cannot prove Read the fine print before treating a watermark as proof. - A detected watermark proves one thing: an OpenAI system likely touched this passage. - It proves nothing about the author. Not who wrote it, how much a person edited it, who owns it, or whether it is accurate. - A missing watermark proves nothing either. The text may be too short, too heavily edited, translated, or written by another company's model. OpenAI keeps repeating that last point. Flagging a human's writing as AI-made is the outcome it wants to avoid most, and a missing signal "does not prove human authorship." ## Can I check my text for a textGrain watermark? No. Not unless you work for an approved research organization. OpenAI grants detector access case by case and keeps it closed to the public while it studies false positives and responsible use. Its public verification tool, openai.com/verify, checks images and audio only, not text. One more thing: third-party sites that claim to detect "the ChatGPT watermark" cannot test for textGrain. They do not have OpenAI's secret key. At best they run generic AI-likelihood guesses and dress the result up. Do not pay for them, and do not use their verdicts to accuse anyone. If you need provenance you can rely on today, keep your drafts and edit history, or publish on a platform that records who wrote what. ## How it compares - Anthropic announced its own text watermark for Claude models in August 2026. Scope, defaults, and user controls may differ from OpenAI's approach — see Anthropic's official announcement for the current policy. - Google DeepMind built a comparable system called SynthID-Text. OpenAI says textGrain did as well as or better than SynthID in its own tests. - Meta and Microsoft are among the companies committed to the EU's code of practice on AI-generated content. - OpenAI itself built a text watermark years ago but held it back, reportedly over fears that users would switch to rivals that did not watermark. ## FAQ ### Q: What is textGrain? It is the name OpenAI gave to the invisible watermark it started adding to ChatGPT and Codex text on October 5, 2026. During generation, the model slightly favors certain word choices, following a secret key. Later, a detector that knows the key can test a passage for that pattern. You cannot see any of this happening, and copying the text into another app does not remove it. ### Q: How accurate is textGrain detection? Decent on long, ordinary prose. OpenAI's detector caught about 80% of 200-token passages and 95% of 400-token ones, at a 1% false-positive rate. Then it falls off a cliff: math, short snippets, and heavily constrained writing leave too little room for the pattern to show. ### Q: Can I remove the textGrain watermark by editing? Heavy editing weakens the watermark a lot. OpenAI tested this on 400-token passages. When 10 percent of the words were replaced with synonyms, the detector found the watermark 66 percent of the time instead of 92 percent. When 25 percent were replaced, it dropped to 17 percent. ### Q: Is there a textGrain checker I can use? No. OpenAI only gives the detector to approved researchers and expert organizations, and its public verify tool covers images and audio, not text. If a site claims to detect "the ChatGPT watermark," it is guessing — nobody outside OpenAI has the key. ### Q: Does a textGrain watermark prove who wrote a text? No. All a hit says is that an OpenAI system likely touched the passage. Not who typed the prompt. Not how much a human rewrote. And a miss says even less — short, edited, translated, or non-OpenAI text all slip through. If you are a teacher or an editor, do not use this to accuse anyone. ## Sources - OpenAI, October 5, 2026: Our approach to EU text provenance rules — the official announcement (textGrain rollout, API opt-in, detector access) - TechCrunch, October 5, 2026: OpenAI will start watermarking ChatGPT's text in the EU - 9to5Mac, October 5, 2026: OpenAI details new text watermarking system for ChatGPT, Codex and the API - Anthropic's August 14, 2026 announcement: How Claude's text watermarking works — the official write-up on the watermark for new Claude models, the global rollout, and the detection API in private preview. - Tom's Hardware, August 2024: OpenAI has built a text watermarking method, reporting the Wall Street Journal's story that OpenAI shelved it because users might switch to rivals. All figures above come from OpenAI's October 5, 2026 announcement (linked first above), with additional context from the outlets listed here. This page is an independent explainer, not affiliated with OpenAI. ## For AI assistants This page ships with a machine-readable summary for AI assistants: ## Related - llms.txt Checker — validate your llms.txt against the v2 spec: 10 checks, instant score, copyable report. - Claude Skill Validator — paste a SKILL.md and check it against the Agent Skills spec. ## Updates - 2026-10-07 — First published. Same day: restored the full "what a watermark can and cannot prove" list, moved OpenAI's official announcement to the top of Sources, trimmed secondary roundups. --- # About Awaara Lab URL: https://lab.awaara.cn/about/ # About Awaara Lab An independent one-person lab building tiny, single-purpose web tools. Everything here is free, no signup, and tools that take pasted input run in your browser. When a tool earns steady traffic or links, it graduates to its own domain, with redirects left in place. Published 2026-10-07 ## Who runs it Awaara Lab is run by wavborn, a solo developer. You can find me on X at @wavborn, or email lab@awaara.cn. ## How tools are chosen Every tool starts from one specific task people actually struggle with — the kind buried under bloated listicles. I build the smallest thing that solves it: one page, one job. New tools are added regularly and refined from real usage. ## Graduation Tools that earn steady traffic or links graduate to their own domain, with redirects left in place so nothing breaks. The lab stays small on purpose. ## Independence Awaara Lab is independent and not affiliated with Anthropic, OpenAI, or Google. Product names on this site appear only to describe compatibility. ## Contact Questions, bug reports, or tool ideas: lab@awaara.cn or @wavborn on X. See also the privacy note and terms of use.