Commit Graph

1818 Commits

Author SHA1 Message Date
Paul Bakaus e3eb40c726 Merge pull request #61 from mvanhorn/docs/dropdown-positioning-guidance
docs: add dropdown positioning guidance to interaction-design reference
2026-03-24 15:59:14 -07:00
Paul Bakaus 633fb2fad4 Merge pull request #55 from rohan-tessl/improve/skill-review-optimization
feat: improve skill descriptions for impeccable
2026-03-24 15:56:52 -07:00
Paul Bakaus bea7315076 Merge main and resolve conflicts for description improvements
Take PR's improved skill descriptions (with "Use when..." trigger
phrases) and combine with main's argument-hint format. Drop old args
blocks and deleted transformer files.

Rebuild all providers so descriptions propagate everywhere.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:52:32 -07:00
Paul Bakaus 8303cbbbe2 Merge pull request #71 from pbakaus/chore/update-develop-docs
Update DEVELOP.md for factory-based build system
2026-03-24 15:49:03 -07:00
Paul Bakaus 19c2610bef Merge main (Trae PR) into docs branch
Resolve DEVELOP.md conflict by keeping our rewritten version which
already covers the factory architecture.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:47:09 -07:00
Paul Bakaus 9e3b87903a Merge pull request #53 from shog86/add-trae-support
Add trae support
2026-03-24 15:46:30 -07:00
Paul Bakaus 7dc523d69b Update DEVELOP.md to reflect factory-based build system
Remove references to individual transformer files, args arrays, and
per-provider body transforms. Document the new factory/providers
architecture, provider config options, and how to add new providers.
Point to HARNESSES.md for capabilities details.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:46:28 -07:00
Paul Bakaus 112317fd05 Rebase Trae support onto new factory architecture
Merge main (factory refactor) and adapt Trae to use the config-driven
transformer system instead of a standalone trae.js file. Two provider
entries (trae-cn, trae) replace the custom dual-directory logic.

Also adds placeholderProvider support to the factory for providers that
share placeholder configs but need separate output directories.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:38:25 -07:00
Paul Bakaus 8f5d0b3fc1 Merge pull request #69 from pbakaus/chore/fix-yaml-frontmatter
Fix YAML frontmatter, consolidate transformers, add harness reference
2026-03-24 15:26:35 -07:00
Paul Bakaus 83b01ecfa2 Use {{command_prefix}} for skill invocation references
Skill cross-references like "Use the frontend-design skill" and
"run teach-impeccable" now use {{command_prefix}} so each provider
gets the correct invocation syntax (/ for most, $ for Codex).

Prose references to skill content ("guidelines in the frontend-design
skill") are left unchanged since they're not invocation instructions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:24:29 -07:00
Paul Bakaus 7c208cdfbb Merge main and integrate command_prefix support into factory
Resolve conflict from codex.js (deleted in our branch, modified on main
for command_prefix). The command_prefix feature from main is preserved
in factory.js via PROVIDER_PLACEHOLDERS lookup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:19:13 -07:00
Paul Bakaus 2d4c7899dd Update provider configs from official docs, add HARNESSES.md reference
Research each harness's official documentation to verify and correct
provider frontmatter configs. Remove Codex/Gemini body transforms that
targeted their commands systems, not skills.

- Add compatibility + metadata to Cursor and Agents (Copilot)
- Add allowed-tools to Pi
- Remove Codex $ARGNAME and Gemini {{args}} body transforms
- Add HARNESSES.md as source of truth for harness capabilities

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 10:46:59 -07:00
Paul Bakaus 6de73abf1b Fix invalid YAML frontmatter and consolidate build transformers
Fixes #67: argument-hint values starting with [ were parsed as YAML flow
sequences. Replace structured args arrays in source files with pre-formatted
argument-hint strings, and quote values starting with [ or { in
generateYamlFrontmatter().

Also consolidates 8 nearly-identical transformer files into a single
config-driven createTransformer() factory. Adding a new provider now
requires only a config object in providers.js instead of a full file.

- Replace args source frontmatter with argument-hint strings
- Add YAML quoting for values starting with [ or {
- Add quote stripping to parseFrontmatter() for round-trip support
- Create factory.js + providers.js, delete 8 individual transformers
- Replace 16 explicit build.js calls with a loop over PROVIDERS
- Consolidate 8 test files into 2 (factory + providers)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:48:42 -07:00
everforge ca43d5ccf7 Escape API-driven text before injecting it into tab/panel markup to reduce XSS risk, and add a robust clipboard fallback plus safer tab panel selection for edge-case category names. 2026-03-24 09:58:59 -05:00
Paul Bakaus e9ab330a61 Merge pull request #65 from gabelul/fix/codex-prefix-from-upstream-main
fix: show $ instead of / for Codex command references
2026-03-23 19:43:59 -07:00
Gabi 2b68f01ea3 feat: give critique and audit actual teeth — scoring, personas, cognitive load
Critique was vibes-only before. Now it scores against Nielsen's 10 heuristics
(0-4 each, /40 total) so you get a number, not just feelings. Added 5 user
personas that auto-select based on the interface type — a power user and a
first-timer break different things, turns out. Cognitive load checklist catches
the "why does this screen make my brain hurt" problems.

Audit gets the same treatment: 0-4 per dimension, /20 total, P0-P3 severity
instead of the vague Critical/High/Medium/Low labels nobody agrees on.

Both now present recommendations inline — no plan file, no /next or /fix-all
commands. Just tell the AI what to fix and it does it. Simpler.

New reference files: heuristics-scoring, personas, cognitive-load.
2026-03-24 00:13:00 +01:00
Gabi e97a73446d fix: repair placeholder syntax for codex prefix 2026-03-23 22:01:29 +01:00
Gabi d67d69d342 fix: Codex was showing / instead of $ for command references
The build system hardcoded `/` as the command prefix for every provider,
but Codex CLI uses `$`. Added command_prefix to PROVIDER_PLACEHOLDERS
so replacePlaceholders and prefixSkillReferences use the right one.
Now `$normalize` shows up in Codex output instead of `/normalize`.
2026-03-23 21:59:42 +01:00
rohan-tessl 05f061d247 fix: use user-invocable everywhere; remove pr_description.md. 2026-03-23 11:50:35 +05:30
rohan-tessl bec84bd2e6 Merge branch 'main' into improve/skill-review-optimization 2026-03-23 11:48:39 +05:30
Paul Bakaus c878f7db5a Merge branch 'main' into add-trae-support 2026-03-21 21:29:42 -07:00
shog86 9faa690047 Fix Trae output format and add tests 2026-03-22 12:12:24 +08:00
Paul Bakaus e9ac702849 Merge pull request #62 from pbakaus/feat/google-analytics
Add Google Analytics tracking
2026-03-21 19:16:12 -07:00
Paul Bakaus 33fcca03e3 Add Google Analytics to index and cheatsheet pages
Adds the gtag.js snippet (G-TEXGHC7V34) to both HTML pages for
tracking pageviews and usage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 19:14:01 -07:00
Matt Van Horn 773a1c37ac docs: add dropdown positioning guidance to interaction-design reference
Adds a new "Dropdown & Overlay Positioning" section covering the overflow
clipping problem, CSS Anchor Positioning API, popover + anchor combo,
portal/teleport patterns, fixed positioning fallback, and anti-patterns.

Closes #48

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 08:37:33 -07:00
Paul Bakaus cd919235c1 Merge pull request #60 from pbakaus/fix/revert-antigravity-note
Remove Antigravity slash command limitation note
2026-03-21 00:47:34 -07:00
Paul Bakaus e2f25e2886 Remove Antigravity slash command limitation note
Slash commands do work in Antigravity, so the asterisk and tooltip
warning on the Antigravity badge were incorrect. Removes both.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 00:47:13 -07:00
Paul Bakaus df62662dcc Merge pull request #59 from pbakaus/feat/sync-all-providers
Sync all provider skill directories to project root
2026-03-21 00:38:51 -07:00
Paul Bakaus 4a5b8e0e65 Merge pull request #58 from pbakaus/fix/antigravity-tooltip-docs
Document Antigravity slash command limitation
2026-03-21 00:38:12 -07:00
Paul Bakaus 02e21cb4d3 Sync all provider skill directories to project root on build
Previously only .claude/skills/ was synced from dist after build. Now
all 8 provider directories are synced (.claude, .cursor, .gemini, .codex,
.agents, .kiro, .opencode, .pi) so each provider's output can be tested
directly in this repo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 00:37:16 -07:00
Paul Bakaus 624cb0b33b Add Antigravity limitation note and provider name tooltips
Addresses #51 -- Antigravity doesn't support slash commands, only
auto-activated skills. Adds a tooltip on the Antigravity* badge in the
downloads section explaining the limitation and how to invoke skills by
name. Also adds hover tooltips showing provider names on the hero logo
icons.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 00:33:44 -07:00
Paul Bakaus 65ca494549 Merge pull request #47 from JasonOA888/docs/slash-command-examples
docs: add usage examples for slash commands
2026-03-20 23:40:35 -07:00
Paul Bakaus 998dd0c68a Merge pull request #52 from Gujiassh/fix/preserve-prefixed-article-casing
fix: preserve article casing in prefixed skill references
2026-03-20 23:39:37 -07:00
Paul Bakaus df1551e9a1 Merge pull request #57 from pbakaus/fix/user-invocable-spelling
Fix user-invokable -> user-invocable spelling across entire codebase
2026-03-20 23:36:47 -07:00
Paul Bakaus 4305dfd362 Add .impeccable.md to .gitignore
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 23:33:46 -07:00
Paul Bakaus df1c26ce63 Fix user-invokable -> user-invocable spelling across entire codebase
PR #50 fixed the output SKILL.md files but the source files, build
scripts, tests, docs, and server code still used the wrong spelling.
Claude Code expects `user-invocable` (with c) for slash command
autocomplete to work.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 23:33:22 -07:00
Paul Bakaus 61426faac2 Add .impeccable.md to .gitignore
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 23:21:00 -07:00
Paul Bakaus 3d0400cbd3 Fix CI: use bun run test to split unit/fixture tests correctly
CI was running `bun test` which ran jsdom fixture tests in bun, causing
timeouts. Now uses `bun run test` which runs unit tests in bun and fixture
tests in node.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:36:48 -07:00
Paul Bakaus 2201d86af0 Add test fixture for short text in wide containers, document test runner
- Add short-text-in-wide-container examples to quality-should-pass fixture
- Add Testing section to CLAUDE.md
- Revert unnecessary line-length estimatedLines guard (textLen > 80 already sufficient)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:34:42 -07:00
Paul Bakaus 1260c2350e Remove small-target detection (too aggressive for regular links)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:17:25 -07:00
Paul Bakaus 122dddb686 Fix CLI docs and browser detector bugs
- Fix README CLI examples to use `bun bin/impeccable.mjs` instead of `npx impeccable`
- Fix classList.match() crash in Node/jsdom by converting DOMTokenList to string
- Fix overlapping page-level banners by merging all findings into a single banner

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:15:37 -07:00
Paul Bakaus ce64404248 Merge remote-tracking branch 'origin/main' into v2.0
# Conflicts:
#	.claude/skills/critique/SKILL.md
2026-03-20 09:20:17 -07:00
Paul Bakaus 958383722d Bump version to 2.0.0, add changelog entry
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:13:39 -07:00
rohan-tessl 430909da38 feat: improve skill descriptions for impeccable
## Summary

Hey @pbakaus 👋

I ran your skills through `tessl skill review` at work and found some targeted improvements. Here's the full before/after:

| Skill | Before | After | Change |
|-------|--------|-------|--------|
| distill | 31% | 80% | +49% |
| delight | 32% | 74% | +42% |
| polish | 44% | 80% | +36% |
| animate | 55% | 89% | +34% |
| clarify | 49% | 83% | +34% |
| critique | 51% | 85% | +34% |
| normalize | 46% | 80% | +34% |
| optimize | 49% | 83% | +34% |
| adapt | 48% | 81% | +33% |
| extract | 48% | 81% | +33% |
| harden | 49% | 79% | +30% |
| arrange | 51% | 76% | +25% |
| bolder | 51% | 76% | +25% |
| colorize | 48% | 72% | +24% |
| overdrive | 48% | 70% | +22% |
| typeset | 64% | 85% | +21% |
| audit | 61% | 81% | +20% |
| onboard | 56% | 75% | +19% |
| quieter | 59% | 76% | +17% |
| teach-impeccable | 68% | 80% | +12% |
| frontend-design | 76% | 76% | +0% |

**Note:** These skills are auto-generated from `source/skills/` via your build system, so the changes target the source files directly. The `dist/` outputs were regenerated with `bun run build`.

<details>
<summary>Changes made</summary>

All changes are limited to the `description` field in each skill's YAML frontmatter (in `source/skills/*/SKILL.md`). No skill body content was modified.

The consistent improvement across all skills was adding:
- **"Use when..." clauses** with explicit trigger terms — the #1 issue flagged by the reviewer. Without these, agents have no clear signal for when to select a skill from a large library.
- **Natural user keywords** — terms users would actually say (e.g., "too bold", "laggy", "spacing issues") rather than abstract descriptors.
- **Specific concrete actions** — listing what the skill actually does rather than describing outcomes in vague terms.
- **Quoted string format** — ensuring descriptions use standard YAML quoted strings.

`frontend-design` was already well-scored and left unchanged.

</details>

## Type of change

- [x] New / updated skill reference

## Checklist

- [x] Source files updated in `source/`
- [x] `bun run build` ran successfully
- [x] `bun test` passes
- [ ] Tested with at least one provider (Cursor / Claude Code / Gemini CLI / Codex / Copilot / Kiro / OpenCode)
- [ ] README / DEVELOP.md updated if needed

---

Honest disclosure — I work at @tesslio where we build tooling around skills like these. Not a pitch - just saw room for improvement and wanted to contribute.

Want to self-improve your skills? Just point your agent (Claude Code, Codex, etc.) at [this Tessl guide](https://docs.tessl.io/evaluate/optimize-a-skill-using-best-practices) and ask it to optimize your skill. Ping me - [@rohan-tessl](https://github.com/rohan-tessl) - if you hit any snags.

Thanks in advance 🙏
2026-03-20 12:46:14 +05:30
Paul Bakaus 4f18ddaf52 Improve critique skill: sub-agents, scripts_path, browser overlays
- Add {{scripts_path}} build placeholder that resolves per-provider
  (${CLAUDE_PLUGIN_ROOT}/scripts for Claude Code, relative paths for others)
- Restructure critique into sub-agent architecture: LLM review and
  detector run independently to avoid bias, results synthesized at end
- Browser overlay is now a visual aid for the user only -- agent reads
  findings from console via [impeccable] prefix instead of scrolling
- Add scroll-to-top instruction before overlay injection
- Add allowed-tools frontmatter for detector bash commands
- Fix YAML parser to handle simple string arrays (not just - name: objects)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 19:29:22 -07:00
Paul Bakaus a243cbfdcb Stronger guardrail: detector must run after LLM review
Claude was running the detector in parallel with the LLM review
despite the section ordering. Added explicit instruction: "Do not
run the detector before or in parallel with your LLM review."

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 18:12:18 -07:00
Paul Bakaus 87067cad7e Clarify detector accepts markup files, not CSS-only
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 18:10:54 -07:00
Paul Bakaus cda5e42fa9 Flip critique order: LLM assessment first, detector second
The detector findings were anchoring the LLM's thinking too heavily,
making the critique feel detector-driven rather than design-driven.
Now the LLM forms its own assessment first, then the detector runs
to catch anything missed. The report structure reflects this: LLM
assessment comes before deterministic scan in the Anti-Patterns
Verdict.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 18:05:48 -07:00
Paul Bakaus 699c1043cc Fix critique skill from real-world testing
Detection fixes:
- Cramped padding: skip small elements (labels/badges < 100x30px)
  and require >20 chars of text content
- Skip browser extension elements (claude-*, cic-*) from scan loop
  and quality checks to avoid flagging the Claude Chrome indicator

Skill prompt fixes:
- Use python HTTP server + script tag injection instead of direct
  javascript_tool evaluation (avoids CORS issues)
- Add cleanup step for the HTTP server

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:21:38 -07:00
Paul Bakaus a24328a0fa Skip CLI detector for URLs (avoids Puppeteer install)
URLs should use browser visualization + LLM analysis instead of
the CLI detector, which would need to install Puppeteer and its
dependencies first.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 13:12:31 -07:00