{"node":{"id":"ac67d1f2-f6ea-41c4-a982-2696e9410fd3","handle":"ac67","type":"note","authorName":"Vincent Yeung","intent":"learning","title":"Tool: rule checker for AI tells (impeccable detect)","aiSummary":null,"content":"## What it does\n- A rule checker with 62 built-in rules. No AI model is involved.\n- Two groups of rules: \"slop\" (AI tells) and \"quality\". Some are only advisory.\n- Drawer 6 lists what it catches.\n\n## When to reach for it\n- You want a quick scan you can repeat, with the same result every time.\n- While an agent edits UI files: the hook checks after each edit.\n- At the end of a build that had no hook.\n- In GitHub Actions.\n\n## How to use it\n**From the command line**\n- `impeccable detect src/` scans source files. JSX and TSX get the pattern rules only.\n- `impeccable detect <url>` renders the page in Chrome or Edge. Rules like low contrast and tiny text need this, so point it at your dev server.\n- `--json` for machine output. `--github` for GitHub Actions notes. `--list-rules` to see every rule.\n- Exit code 2 means findings. Exit code 1 means a target couldn't be scanned.\n\n**As a hook while the agent edits**\n- `/impeccable hooks` turns it on, off, or shows status.\n- After each UI-file edit it runs 12 quick rules: broken images, overflow, contrast and legibility, gradient text, glow shadows, and drift from DESIGN.md.\n- Everything else runs once, in a deeper pass when the agent stops.\n- It never blocks an edit. It leaves a reminder.\n- It runs unsandboxed, with the agent's environment and network access.\n- For server templates (Blade, Twig, ERB, Handlebars), list their extensions under `detector.extensions`.\n\n**When it flags something**\n- Fix real problems.\n- An agent may ignore only one value, with named evidence in `--reason`. Ask the user before ignoring a whole file or rule.\n- Never add an ignore to skip a fix.\n- Waivers that travel with a file: `impeccable-disable <rule>`, `impeccable-disable-line`, `impeccable-disable-next-line`.\n\n**Limits**\n- A clean scan is a floor, not proof the design is good.\n- impeccable says the hook is \"where most slop gets caught\" (asserted, no evidence shown).\n\n## What happened when we used it\n- Not run. We applied its rules by hand instead, which found the same kinds of tells it is built to catch.\n\n## Source\n- Source: impeccable.","capturedAt":"2026-10-29T09:31:15.632Z","createdAt":"2026-10-29T09:31:15.632Z","updatedAt":"2026-10-29T09:31:15.632Z","spanId":null,"contributor":null,"audiences":[{"kind":"public","createdAt":"2026-11-06T04:27:20.286Z"}],"fingerprint":"e339198a7edb93614129a6a94e5ba5b5257c715e4c1bde6d2cca64be2f438878","revisionNo":"1","structureHash":"82afdc94d333b4dc696c834ed2d0f9b552f2fbfdf0092c698725f66ddbd19f3b","page":"https://lattris.com/by/b/memories/ac67d1f2-f6ea-41c4-a982-2696e9410fd3"},"links":[{"direction":"out","verb":"references","reason":"Follow to install it, or to check its licence and cautions before relying on it.","hash":"e40cebc8c0c14edd82a8773b55189ecc76b251ea303b300d6691e5e0eea3da35","node":{"id":"7b1bf5e3-1c32-4b94-8e8a-1436409042a0","handle":"7b1b","type":"note","title":"Source: impeccable","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/7b1bf5e3-1c32-4b94-8e8a-1436409042a0?links=1","fingerprint":"118dd05f30af956d68616de75423a1b8c7180a16da21f5788bf8e6589414c0bd","revisionNo":"3","structureHash":"32d1be7421efd06d67641aa60439c18dac3b6e676e9b31dc5ca978b397c949e0","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/7b1bf5e3-1c32-4b94-8e8a-1436409042a0"}},{"direction":"out","verb":"references","reason":"Follow for the list of tells it catches.","hash":"0351c11899701396a445bc1ac0fc80f9d2ba8b71ec865bb118bab5b85b7b224c","node":{"id":"bf82afc5-032e-4ecd-8a6a-205ab29f22d7","handle":"bf82","type":"note","title":"Drawer 6: Is it any good","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/bf82afc5-032e-4ecd-8a6a-205ab29f22d7?links=1","fingerprint":"1ea050b70d61986658d4c7346ee96979c14c9774d0b6aec5e490cddf0d5d8d57","revisionNo":"2","structureHash":"4d658c915f02ec511a2c0ee3b538c0b53325db079b1e2a9444d2bd2cb0737dd9","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/bf82afc5-032e-4ecd-8a6a-205ab29f22d7"}},{"direction":"in","verb":"references","reason":"Follow for the command-line checker the audit uses on desktop apps.","hash":"2022b74dfba57d446204824c92e98c44866fac0a505442288782942b0ea1bbf7","node":{"id":"088fac12-576b-44c8-9d19-6f1c64d1e9db","handle":"088f","type":"note","title":"Tool: technical audit (impeccable audit)","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/088fac12-576b-44c8-9d19-6f1c64d1e9db?links=1","fingerprint":"7024862c19bda4e5ae0fb26ad3f907a4aa33c2cf99f1b426bdfbcc897e0396ef","revisionNo":"1","structureHash":"019284935b09ef7f00cfa2c7df6bd588ba3f79032124647b34de298e84c06b4c","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/088fac12-576b-44c8-9d19-6f1c64d1e9db"}},{"direction":"in","verb":"references","reason":"Follow to see how to use this capability.","hash":"a94a34332f06a296ff79e45ed378e47100914380aebfe1bdb27714db66d2fffa","node":{"id":"7b1bf5e3-1c32-4b94-8e8a-1436409042a0","handle":"7b1b","type":"note","title":"Source: impeccable","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/7b1bf5e3-1c32-4b94-8e8a-1436409042a0?links=1","fingerprint":"118dd05f30af956d68616de75423a1b8c7180a16da21f5788bf8e6589414c0bd","revisionNo":"3","structureHash":"32d1be7421efd06d67641aa60439c18dac3b6e676e9b31dc5ca978b397c949e0","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/7b1bf5e3-1c32-4b94-8e8a-1436409042a0"}},{"direction":"in","verb":"references","reason":"Pick it for a quick, repeatable scan for AI tells and mechanical faults.","hash":"fd3812a4e76f0daea5a0b6f907334941abeaa95bb72d11a68a047b165c987022","node":{"id":"bf82afc5-032e-4ecd-8a6a-205ab29f22d7","handle":"bf82","type":"note","title":"Drawer 6: Is it any good","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/bf82afc5-032e-4ecd-8a6a-205ab29f22d7?links=1","fingerprint":"1ea050b70d61986658d4c7346ee96979c14c9774d0b6aec5e490cddf0d5d8d57","revisionNo":"2","structureHash":"4d658c915f02ec511a2c0ee3b538c0b53325db079b1e2a9444d2bd2cb0737dd9","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/bf82afc5-032e-4ecd-8a6a-205ab29f22d7"}},{"direction":"in","verb":"references","reason":"Pick it for the last scan before you push.","hash":"d9d767559b92abce13ccf11d6f71777824394708220856f049ffe15266208c6d","node":{"id":"c89881f9-196f-47e1-98ed-d75a4571258d","handle":"c898","type":"note","title":"Drawer 7: Shipping","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/c89881f9-196f-47e1-98ed-d75a4571258d?links=1","fingerprint":"84a05c0f98df15e746ff5d66c0d77e2eda6e2b5fdafc026907c323e7bf6b9777","revisionNo":"1","structureHash":"cc128b64ee43e01d855adc5862ee568da80d0e14712743a7e5c1cbf4594437fc","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/c89881f9-196f-47e1-98ed-d75a4571258d"}},{"direction":"in","verb":"references","reason":"Pick it to catch content left hidden, bounce easing and endless scrolling.","hash":"84b07ac1af7df64ceb7c8006e0146513c781d94c17b700063c444864c6b70710","node":{"id":"d1fb677c-ee19-4031-bfea-72774baaa944","handle":"d1fb","type":"note","title":"Drawer 3: Motion","aiSummary":null,"erased":false,"href":"https://lattris.com/api/lattris/by/b/memories/d1fb677c-ee19-4031-bfea-72774baaa944?links=1","fingerprint":"4737fba3103bacfa85ff73ecc7bd88535ff37c2ffbb06555670987e986aa34da","revisionNo":"2","structureHash":"a254f5077efc5d74424160fdbda8d8b0321093d6433b99164b68d09bd99212d3","intent":"learning","authorName":"Vincent Yeung","page":"https://lattris.com/by/b/memories/d1fb677c-ee19-4031-bfea-72774baaa944"}}],"dictionary":{"lattris":"A personal knowledge base — how a person captures what they know as linked blocks they own and control. To understand how this knowledge base works: https://lattris.com/by/4/memories/lattris-a-memory-store-for-your-life-43ff","intents":"Every block can carry an intent — a label for how far you have taken the idea. The scale runs from noticing something to acting on it: noticed (something caught your attention), learning (you are working it out), truth (you are saying this is how things are), decision (you chose a course), action (you did it). Recipe sits outside that scale — it is not a stronger claim, it is a different kind of thing: a procedure, a how-to, a set of steps that ties other knowledge together. Intent is optional — leaving it blank just means you have not labelled it yet."},"instructions_to_ai":"This is knowledge from a personal knowledge base. Read it and consider how it's relevant to what the person you're talking to needs. Follow the linked blocks to explore further related topics if it might be useful to the user; open each at its page address. Start by letting the user know what this is about and how it may be relevant to them."}