43 Commits

Author SHA1 Message Date
Seongjae Ryu f6e2ae32b3 Fix the command chip in tell #34's clean pane (#7) 2026-09-15 16:34:50 +08:00
yetone 96d1ca568a Add a floating table of contents
A right-edge minimap: one hairline tick per entry (short ticks for the
prose sections), grouped like the catalogue, with the current position
inked. Hover or keyboard focus swaps the ticks for a card panel listing
every entry by number and title; a scroll-spy keeps both in sync and
centres the active row unless the pointer is browsing the panel.

Chrome stays monochrome (ink bar, no accent), all four languages ride
the existing <T> mechanism, and the rail only appears ≥82rem where it
has margin of its own beside the 76rem container.
2026-07-26 22:12:01 +08:00
yetone c3bd639c45 Add tell #27 (the wobbling spinner)
A loading spinner that doesn't rotate around its own centre — the ring
limps around a small circle as it spins. Calibrated frame-by-frame
against a real shipping app: rigid rotation, but the rotation centre
sits ~8% of the radius off the ring's visual centre (off-centre glyph
artwork; the rotate-keyframe-clobbers-the-centering-translate bug is
the other spelling).

The demo reproduces the exact mechanism: a near-full ring SVG whose
circle is drawn off the viewBox centre while the box rotates normally.
Verified by circle-fitting rendered frames (slop: 3.1px orbit, constant
radius; clean: ≤0.3px).

Inserted in the motion group as #27; tells 27–34 renumber to 28–35
across taxonomy/detection/fixes/scan.mjs, and the scanner gains
clobbered-translate / off-centre transform-origin leads.
2026-07-26 22:12:00 +08:00
yetone 88cd5446be Add tell #34 (editorial dashboard) and refine the site's craft
Catalogue:
- New evolved-slop tell #34 "the editorial dashboard": a serif "Good
  evening" greeting, serif stat numerals, and cream paper stamped on an
  operational UI. Full update across catalogue + i18n + demo, the skill's
  taxonomy/detection/fixes/scan.mjs, and the 33->34 counts.

Website refinement (craft, not scale — no enlarged type):
- Wire every corner back to the --radius tokens the site already defines;
  the chrome had been hardcoding border-radius:0 against them. Adds
  --radius-sm and nests per the site's own "corners that don't nest" rule.
- Luminous paper + deeper ink + true-white cards on tighter contact shadows.
- Optical sizing, hanging punctuation, refined section eyebrow.
- Refined secondary-button surface; nav underline + hairline-on-scroll.
- Subtle, reduced-motion-safe entrance reveal.
2026-07-21 02:23:04 +08:00
yetone 4ebbc595f4 Add Apache-2.0 license, CI, and scanner coverage/suppression controls (#5)
- LICENSE: Apache-2.0, plus a License section in the README
- CI: run the scanner tests on Node 20/22 for pushes/PRs touching skill/
- scanner: scan .php/.twig templates (WordPress themes/plugins)
- scanner: --only/--skip tell filters, --exclude path filter, and
  deslop-ignore / -next-line / -file comment directives, id-scopable
- scanner: --rules=extra.mjs extension hook for project/language tells,
  with scripts/rules.ru.mjs as a shipped Russian-copy example
- scanner: realpath both roots so the skill-root exclusion survives
  symlinked paths (macOS /var/folders vs /private/var)
2026-07-17 20:49:07 +08:00
yetone 2975f37961 demos: progressive sweep reveal, melodic sweep sound, unified oversized-shadow surfaces
- Slop→Clean now wipes progressively: complementary static masks on
  transform-driven wrapper pairs (WebKit can't animate mask-position and
  clips mask paint to the border box — wrappers enlarge the box via
  negative margin + padding), edge locked to the wipe band's trailing
  edge; tempo eased to 1.35x via --sweep-t
- Sweep sound rebuilt as a musical phrase: one dark panned air swell plus
  a C5→C6 pentatonic run riding the wipe; end-of-clean chime removed
- oversized-shadow demo: both panes share Linear's dark stage/card/ink so
  the only variable left is the shadow itself
2026-07-17 19:51:39 +08:00
yetone 2d21245d3c demo: real GPT Image mascot on the AI-SVG clean pane + optically center the copy button
- clean-icon.png: replace the AI-drawn SVG stand-in with a flat-vector red
  mascot (same brief as the slop blob, executed by a pro hand), answering the
  slop pane on its own terms instead of showing a placeholder icon.
- .sc-copy: SF Mono's tall ascent parks the word ~1px low in a `normal` line
  box; split the vertical padding unevenly to re-center it optically.
2026-07-17 10:35:26 +08:00
Kushida e245651441 Fix scanner reliability and site accessibility (#4) 2026-07-15 01:32:32 +08:00
yetone 579cb8f69e catalogue: add tell #22 "the border that dies at the corner"
A rounded rectangle whose 1px stroke survives on the straight edges but
vanishes at the corners — the radius and the border live on different
boxes (a `rounded-xl overflow-hidden` wrapper clips a square-cornered
child's border ring at every corner). The demo reproduces the bug with
the exact code that causes it, not a mock-up.

- website: new entry (en/zh + ja/ko), before→after demo, scoped CSS
- skill: taxonomy / detection / fixes / scan.mjs entry; renumber the
  old 22–32 → 23–33 (badge-spam onward shift down one, nothing dropped)
- 32 → 33 tells across skill docs; site heading now derives the count
  from catalogue.length instead of hardcoding it
2026-07-14 18:48:00 +08:00
yetone ae17f338ec skill: trim SKILL.md description to fit the 1024-char spec limit
The Agent Skills spec caps the description field at 1024 characters;
ours was 1352. Keep the trigger phrases and a representative slice of
the tell catalogue, drop the exhaustive enumeration — the full list
lives in the skill body and README.

Fixes #3
2026-07-13 05:15:29 +08:00
Sun haowei 606c831a57 清理 BeforeAfter 组件,移除过度的提示和描述文本 (#2) 2026-07-12 22:19:15 +08:00
yetone 56a8904847 ci: deploy website to Cloudflare Pages on push to main 2026-07-12 17:56:00 +08:00
yetone 09e2e4d016 type: optical compensation for CJK — PingFang rounds 480 up to Medium, so ledes and entry descriptions rendered a half-step heavy; drop to 400, zero the Latin tracking, 0.92 size for em-box glyphs 2026-07-12 17:38:53 +08:00
yetone 9db8c7f1ab skill-card: add npx install command with hover copy button, deep-link GitHub 2026-07-12 17:13:23 +08:00
yetone f820719ac0 seo: add robots.txt and sitemap.xml
The live site served neither — requests for /robots.txt and /sitemap.xml
soft-404'd back to the homepage HTML. Ship a real robots.txt that allows
crawling and points to the sitemap, plus a single-URL sitemap for this
one-page static site (no @astrojs/sitemap, keeping the zero-integration build).
2026-07-12 05:16:02 +08:00
yetone bf8810874d demos: make the clean panes win the eye, not just the argument
Readers kept preferring the slop side of many before/afters — because the
clean side only deleted the slop and never spent craft on what remained.
Deletion is not design. Reworked the 12 weakest afters against how Linear
actually handles each case:

- status-dot-glow: 0.85rem whisper → one confident step-2 headline
  (not display — a five-word slogan hasn't earned display scale)
- oversized-hero-headline: clean keeps display size (the entry's own fix:
  'let those be big'), wins on word count / weight 640 / tracking -0.03em;
  escapes the 23rem column so four words sit on one line, balance on wrap
- fake-stat-trio: footnote sentence → label + big 1,847 + source (the real
  number earns the stat treatment)
- feature-grid: the one point at step-3 with conviction
- pastel-icon-tiles: bare list → three hairline-split columns (Linear's
  FIG-row structure without the decorative tiles)
- tinted-icon-tile: three orphan glyphs → icon + label rows, currentColor
- left-border-callout: unstyled list → hairline-ruled editorial rows
- default-semantic-palette: Info/New drop their indistinguishable grey dots
  (not states → no dot); the three real states get saturated dots, the way
  Linear's own label dots are vivid
- atmosphere-gradient: chart bars from invisible grey-on-grey to flat
  Linear indigo — colour spent on data, the one place it's signal
- over-rounded-glass: clean context panel no longer melts into the stage
- warm-cozy-palette: orphaned brown dot → the one warm accent does a job
  (caramel primary button)
- highlighted-keywords: exactly one decided bold

Also: the toggle hint no longer promises 'same content' (several entries'
fixes rewrite the copy by design), and the demos.ts header now states the
rule: the after pane must win the eye, not just the argument.
2026-07-12 04:04:28 +08:00
yetone 9be925c8d1 seo: keywords meta + search-intent title/description 2026-07-12 04:03:56 +08:00
yetone f8b09f9f74 atmosphere-gradient: add the own-accent tinted-card variant
Each stat tile washed in a tint of its own accent (green revenue tile,
purple users tile) — the bento-card flavour of the tell — across the
catalogue entry, its 4-language copy, the skill's taxonomy/detection/fixes
references, and the demo's slop pane.
2026-07-12 04:03:45 +08:00
yetone 90a25223b3 catalogue: second pass vs impeccable.style — 30 → 32
Re-read the source page raw (their own AI-slop vs Quality badges included)
instead of a summarized fetch. Two entries they badge "AI slop" that the
first pass wrongly filed under craft:

  12 flat-type-hierarchy   every size 14–18px, hierarchy left to gray —
                           the inverse of tell 11, same absent decision
  30 monotone-spacing      one gap token everywhere; proximity carries
                           nothing ("Danger zone" floats mid-list)

Eight variants folded into existing tells, each with detect chips, docs
notes, and greppable scanner rules: italic-serif hero → 08, repeating
stripes + dark glow accents → 06, crushed tracking → 11, "X theater"
copy → 14, thick accent ring on rounded cards → 17, giant filler icons
→ 18, ghost card (hairline + wide shadow) → 20, gray-on-tinted text → 03.

Deliberately not added: everything they badge Quality (line length,
contrast, skipped headings…), modal abuse / redundant microcopy (showcase
only, not visual slop), and single-font-for-everything (Quality badge —
and this site's own system stack is exactly that, chosen).

skill/: all four files renumbered and extended to the same 32, verified
1:1 against the catalogue; scanner rules smoke-tested.
2026-07-12 02:37:20 +08:00
yetone bc43cd6dee catalogue: add the 7 tells missing vs impeccable.style — 23 → 30
New entries, each with en/zh/ja/ko copy and a before→after demo:
  10 section-kicker            the kicker above every heading
  11 oversized-hero-headline   the full-sentence display headline
  24 springy-hover             hover:scale + transition-all + bounce (new Motion group)
  26 fake-stat-trio            10k+ / 99.9% / 24/7 invented stats
  27 numbered-sections         ornamental 01/02/03 ordinals
  28 nested-cards              cards inside cards inside cards
  29 overused-font             Inter/Space Grotesk by default (evolved)

Skipped impeccable's generic craft bugs (low contrast, tiny text, broken
images…) — quality defects, not machine-default tells.

Also, tell 11 caught this site's own definition section: the heading was a
whole sentence at display size. Shortened to the four words that carry the
scale (widening the stale 20ch measure), and confessed in the entry's why,
per the decorative-text-lines precedent.

skill/: taxonomy, detection, fixes, and scan.mjs renumbered and extended to
the same 30, verified 1:1 against the catalogue.
2026-07-12 01:58:21 +08:00
yetone 6bfd693c07 status-dot-glow: derive the slop pill from theme tokens
The pill was hardcoded to its dark incarnation, so in light mode it sat
as an alien dark blob on light paper. Build its surface from --card /
--rule / --ink instead (the same convention the one-hue demo uses), so
the tell renders natively in both modes: a floating white marketing
pill on light, the glassy dark pill on dark — same fake 'live' dot
either way.
2026-07-11 19:47:28 +08:00
yetone d0512c9fe5 status-dot-glow: make the before pane the fake-status hero pill
The old before (glowing green ● Online on dark) was a defensible use of
the pattern, so the demo argued for the slop. The before is now the
pattern's least defensible incarnation: a pulsing, haloed green 'live'
dot glued into a dark hero marketing pill, playing status for a tagline
with no state behind it. The after is the same tagline, honest — no
state, so no dot and no pill. Both panes sit directly on the stage, no
private backdrops. Catalogue what/detect/fix (en/zh/ja/ko) and the
skill taxonomy now cover the hero-pill incarnation and the 'no state →
no dot' rule.
2026-07-11 19:41:14 +08:00
Andrew Qu 391d58f18a Include installation via npx skills add (#1) 2026-07-11 15:48:45 +08:00
yetone e330118956 skill/readme: make the paste-to-agent install snippet a copy-pastable code block 2026-07-11 02:40:54 +08:00
yetone 4f2443cad1 readme: break skill install snippet across lines so it's fully visible 2026-07-11 02:38:28 +08:00
yetone 706358b515 demos: make the one-hue status box work in light and dark
The mono-hue-alert demo was hardcoded to dark-only values, so it broke in light mode (now reachable via the theme toggle). Rebuild the slop rows from the hue mixed against the theme tokens — a see-through tint over the current surface, text mixed toward the ink — so the one-hue tell renders pale-on-light and deep-on-dark, same hue either way. Retint the clean toast with --card/--rule/--ink, and drop its drop shadow so it sits flat on the stage (a soft hairline defines it) instead of floating.
2026-07-11 02:32:28 +08:00
yetone 2869050c50 readme: add paste-to-agent skill install snippet 2026-07-11 02:25:17 +08:00
yetone eb4857a3d7 header: language dropdown + theme toggle + GitHub link
Replace the four-button language switch with a compact custom dropdown — a square, ink-on-card menu that matches the chrome, since a native <select>'s popup can't be styled. Focus moves with preventScroll so opening/selecting never jumps the page.

Add a theme toggle (sun/moon) that overrides the OS prefers-color-scheme, persists to localStorage, and is resolved pre-paint to avoid a flash. tokens.css now applies dark for OS-dark-unless-forced-light OR forced-dark, and sets color-scheme so native controls follow the forced theme.

Add a GitHub icon link to the header. The bar stays one line down to a 280px foldable; the wordmark folds to just the mark only below 304px.
2026-07-11 02:17:58 +08:00
yetone ac6827d6a5 chrome: square off the corners across the site
Zero the border-radius on the site's own chrome: hero buttons, the category and Slop/Clean verdict tags, code-signal chips, the skill card and its terminal block, the skip link, legend swatches, and the focus ring. The slop demo specimens keep their rounded, glowing look — that is the tell they exist to show. The brand mark glyph is left as-is.
2026-07-11 01:41:38 +08:00
yetone 3436d5d6e3 switch: recast the Slop/Clean toggle as a flat square control
Drop the raised sliding thumb, the recessed track fill, the inset well and every shadow. The toggle is now a single hairline rectangle with square corners, split down the middle by one divider. The selected segment is marked in place — a faint wash, ink-weight bold, and a lit dot — while the inactive side's dot dims and its label greys out. The thumb-positioning script still runs harmlessly on the now-hidden node.
2026-07-11 01:29:29 +08:00
yetone 74c4a57cf2 demos: de-card the before/after entries + refine the Slop/Clean switch
Drop the outer rounded card (hairline border, 12px radius, contact shadow) from every demo. The catalogue now reads as an editorial document of insets instead of a stack of identical rounded cards — the exact 'rounded card' tell it was drawing fire for, and a return to the site's own token rule (hairline rules, not drop shadows). Each demo sits on a faint recessed plate; the toggle head loses its band.

Rework the segmented Slop/Clean toggle for a more crafted feel: a tight contact shadow plus a per-mode hairline ring on the thumb, a recessed track well, softer 6px corners (still not a pill), and tuned label spacing.
2026-07-11 00:42:53 +08:00
yetone e5896886c2 i18n: refine the Chinese copy and loosen CJK line-height
Rework the zh strings across the hero, principles, and catalogue for a
more natural, idiomatic voice, and give CJK locales a looser line-height
on ledes and headings — their glyphs fill the em box, so the Latin-tuned
values read cramped.
2026-07-10 21:07:06 +08:00
yetone 4af4dd290e demos: rebuild atmosphere-gradient as an original overview panel
Replace the thin Panel mock with an invented "premium dark SaaS"
overview card — glowing page, glass gradient surface, gradient stat
tiles, a gradient bar chart, a glassy segmented control, and a glowing
gradient CTA. The clean pane keeps the identical layout but flattens
every surface to Linear's real dark stack, with a porcelain solid
button and a bright-neutral peak bar (no accent hue) so the green
delta stays the only colour, where it's a real signal.
2026-07-10 21:02:28 +08:00
yetone 686dd1cbb0 demos: unwrap mono-hue-alert, Linear-true clean toast, bigger atmosphere
- mono-hue-alert: drop the enclosing panel (background/padding/radius) so
  only the sample rows remain. Flatten the slop rows' translucent tints to
  opaque (over the old #12161d) so each row is self-contained.
- mono-hue-alert clean: match Linear's real toast (sonner, rich-colours
  off) — neutral #191a1c surface + #212224 ring, 8px radius, soft float
  shadow. The slop side is literally sonner's richColors default.
- atmosphere-gradient: enlarge the backdrop — wider (max-width 34rem) with
  a much thicker glow frame (padding 4.8/4.4rem) so the atmosphere itself
  reads bigger, card stays ~its width.
2026-07-10 20:08:18 +08:00
yetone 69e8636bad demos: drop the mono-hue-alert wrapper panel, flatten row tints to opaque 2026-07-10 19:49:04 +08:00
yetone 364f677211 README: link the live site (killaislop.com) 2026-07-10 19:42:07 +08:00
yetone 2a7fa9f6e9 BeforeAfter: slide the toggle thumb + stop the width twitch
- Replace the hard background-swap with a single white thumb that glides
  between the two tabs (measured live off the active tab, so it tracks the
  per-language label widths; no fly-in on first paint; respects
  prefers-reduced-motion).
- Reserve each label's bold width in both states via a hidden always-bold
  ghost, so selecting a tab no longer resizes it — the switch stays a
  constant width across toggles instead of twitching.
2026-07-10 19:29:50 +08:00
yetone b7bf2ea009 website: concentric card corners + cool palette + phone-width fixes
- BeforeAfter: make the card / switch-track / selected-pill corners
  concentric (each inner radius = outer − its gap) so the corner gaps
  match the straight-edge gaps.
- tokens: shift paper & ink from a warm to a faint-cool cast (same
  lightness, hue only); lift the pine --mark from near-black #2c4a3d to a
  legibly-green emerald #246a50 (~6:1 on paper).
- index: min-width:0 on skill-grid children so the code block scrolls
  internally instead of widening the page on phones.
- Nav: tighter clamp gap so a 320px phone fits everything on one line.
2026-07-10 19:20:16 +08:00
yetone 4d5df34065 Add sweep-sound toggle; tune tokens to Linear's real values
- Sound: a top-right speaker toggle for the Slop→Clean sweep sound.
  New SoundToggle, wired into Nav; preference resolved pre-paint in
  Base (<html data-sound>, persisted to localStorage) so a muted
  visitor never hears a stray sound and the icon never flashes.
- Tokens: reverse-engineer Linear's control radius (8/12px) and its
  tight contact shadows off the running app; match the dark demo
  surfaces (atmosphere-gradient, mono-hue-alert, oversized-shadow)
  to Linear's measured surface stack.
- Nav/lang: keep the wordmark and CJK language labels on one line;
  tighten gaps responsively so controls never crowd the brand.
- Type/copy: loosen CJK heading leading; trim hero padding; refine
  the zh definition line.
- Fix: make the before/after switch's inner pill radius concentric
  with its track (5px inner = 8px outer − 3px padding).
2026-07-10 18:56:04 +08:00
yetone dd515b930d skill: lead SKILL.md with the site's current one-line definition
Mirror the website's definition verbatim — AI slop 'piles on every possible
style and detail without settling on a focus' — so the skill opens with the
same framing the site now leads with. Content already matches the current
23-tell catalogue; this is the one framing gap.
2026-07-10 17:50:05 +08:00
yetone a9c597f045 Remove OpenClaw references; make READMEs agent-agnostic and English-only
- Drop the OpenClaw specimen callouts from the site: the hero specimen line
  (index), the footer reference link, and the OpenClaw mentions in the
  warm-palette and tasteful-terminal entries (en/zh/ja/ko). The catalogue
  stands on the tells themselves, not one named product.
- Rewrite the root README: no Chinese, no OpenClaw, and describe the site as
  the multilingual, all-HTML-rebuild field guide it now is (screenshots were
  already dropped in favour of demos).
- skill/README: install by asking any agent to copy the whole skill directory
  into its own skills folder, instead of hardcoding Claude Code and a file list.
2026-07-10 17:38:16 +08:00
yetone d7c876bb16 Fix AI-drawn-SVG-icon entry: show a real, high-quality icon on the Clean side
The Clean demo showed a monogram 'N', which implied the fix was 'just use a
letter'. Replace it with a genuine flat, on-brand app icon and rewrite the fix
copy (en/zh/ja/ko) to say what it should: get a real, high-quality icon from a
designer or the best image model, refined until crisp. Sync the skill's fix
text (taxonomy/fixes/scanner) to match.
2026-07-10 17:17:27 +08:00
yetone f6fc8406ba Kill AI Slop: bilingual field guide website + kill-ai-slop Agent Skill 2026-07-10 16:59:13 +08:00