Commit Graph
295 Commits
Author SHA1 Message Date
Paul BakausandClaude Opus 4.6 b858a5889e Add tests for prefix round-trip (detect, undo, re-apply)
Tests the full prefix lifecycle: detecting 'i-' from i-teach-impeccable,
undoing prefix (rename folders + strip from SKILL.md cross-references),
and re-applying prefix after update. Covers the scenario where
npx skills update needs unprefixed names from its lock file.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:37:46 -07:00
Paul BakausandClaude Opus 4.6 4a198d89d8 Handle prefixed skills during npx-skills-managed update
When skills are prefixed (e.g. i-audit), npx skills update would fail
because its lock file tracks unprefixed names. Now detects the prefix
via teach-impeccable naming, temporarily undoes the prefix (renaming
folders + reverting SKILL.md content), runs npx skills update, then
re-applies the prefix. If update fails, prefix is still restored.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:35:46 -07:00
Paul BakausandClaude Opus 4.6 5bb6328ed3 Add e2e tests for skills CLI and fix symlink handling
E2e tests covering: already-installed detection, prefix rename with
cross-reference updates, direct-download update fallback, and full
npx-skills install flow (skipped if npx skills unavailable).

Fixed prefix rename to handle npx-skills symlink layout: real dirs
in .agents/ are renamed and content-prefixed, then symlinks in
.claude/ are recreated to point to the renamed targets. Uses
unlinkSync (not rmSync) for symlinks to directories.

Added -y/--yes flag for non-interactive CI mode, --prefix= flag
for headless prefix selection.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:33:38 -07:00
Paul BakausandClaude Opus 4.6 3530a5740b Prefix all cross-references when renaming skills, not just frontmatter
Mirrors the build pipeline's prefixSkillReferences logic: when prefixing
skills after install, now also replaces /command-name invocations and
"the command-name skill" prose references throughout each SKILL.md body.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:21:30 -07:00
Paul BakausandClaude Opus 4.6 62349fa4f7 Add install guards and prefix support to skills install
- Check for existing installation (looks for teach-impeccable skill),
  bail with message unless --force is passed
- After npx skills add, prompt to prefix commands (default: i-)
  with custom prefix support; renames folders and updates frontmatter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:18:19 -07:00
Paul BakausandClaude Opus 4.6 da8a59e981 Add skills subcommand and fix npm metadata
New `impeccable skills` CLI with three subcommands:
- `skills help`: fetches and displays all 20 commands from the API
- `skills install`: delegates to `npx skills add pbakaus/impeccable`
- `skills update`: tries `npx skills update` first; if skills aren't
  managed by the skills CLI, downloads the universal bundle from
  impeccable.style and overwrites provider folders directly, with
  git-based modification detection and confirmation prompt

Also fixes npm metadata: homepage -> impeccable.style, license -> Apache-2.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:04:43 -07:00
Paul BakausandClaude Opus 4.6 8d0e9de26d Prepare CLI for npm: v2.0.1, Node compat, npm-specific README
- Rename bin/impeccable.mjs to bin/impeccable (npm rejects .mjs in bin)
- Shebang: #!/usr/bin/env node (works without Bun)
- Add README.npm.md with CLI-focused docs, swapped in during publish
- Build browser script to source/ dir so URL scanning works in npm pkg
- Include browser script in files field
- Move website-only deps (archiver, motion, playwright) to devDependencies
- jsdom as dependency, puppeteer as optionalDependency
- Bump version to 2.0.1 across package.json, plugin.json, marketplace.json

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:17:59 -07:00
Paul BakausandClaude Opus 4.6 ce98272ea6 Polish browser overlay UI: label slide, banner scroll, toggle, passthrough
- Replace hover outline-offset with outline-color transition (no flicker)
- Label shows type name by default; on hover, detail slides up to replace
  it ticker-style with a dark background for visual distinction
- Banner: horizontal scroll with scroll-snap for findings, fixed controls
- Add toggle button to show/hide all overlays
- Overlays use pointer-events:none so page interactions (text selection,
  clicks, links) pass through; hover driven via target mouseenter/leave

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 16:47:22 -07:00
Paul BakausandClaude Opus 4.6 fda447ee8b Merge layout findings into existing overlays instead of stacking
When an element already has an overlay from per-element checks (e.g.
side-tab), layout findings (e.g. nested-cards) now merge into the
same overlay label instead of creating a duplicate stacked on top.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 16:21:25 -07:00
Paul BakausandClaude Opus 4.6 3818073268 Reposition overlays after ancestor CSS transitions (reveal animations)
Use a document-level transitionend listener instead of per-element
listeners, so overlays reposition when a parent's transform transition
ends (e.g. reveal animations with translateY on an ancestor container).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 16:15:12 -07:00
Paul BakausandClaude Opus 4.6 05c9776fd8 Fix overlay positioning for fixed elements and improve test fixture
Overlays for elements inside position:fixed contexts now use
position:fixed with viewport-relative coords, so they stay pinned
on scroll. Extracted shared positionOverlay() helper for consistent
coordinate handling across highlight, reposition, and IO callbacks.

Updated fixture with a real fixed footer scenario.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 23:15:43 -07:00
Paul BakausandClaude Opus 4.6 9ffa802c89 Hide overlays for non-rendered elements using IntersectionObserver
Overlays are now created hidden and revealed by an IntersectionObserver
(rootMargin: 99999px), so they automatically show/hide when their target
becomes visible or invisible -- handles closed <details>, display:none,
hidden modals, overflow:hidden clipping, etc. without polling.

Adds overlay-positioning.html test fixture with 9 scenario groups
covering transforms, closed details, sticky, overflow, position offsets,
flex/grid, containing-block creators, and combinations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 23:12:24 -07:00
Paul BakausandClaude Opus 4.6 3f86b72c88 Isolate browser tabs for critique sub-agents to prevent interference
Each assessment now creates its own tab and labels it ([LLM] or [Human])
so parallel sub-agents don't fight over the same page state.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:30:00 -07:00
Paul BakausandClaude Opus 4.6 efcfd5dadd Merge main into v2.0: consolidate critique skill with scoring, personas, and detection
Merges 54 commits from main including factory-based build system, Trae support,
improved skill descriptions, and security hardening. Consolidates the critique
skill to combine v2.0's sub-agent architecture and automated anti-pattern
detection with main's Nielsen heuristics scoring, cognitive load assessment,
persona-based testing, and structured follow-up workflow. Fixes browser detector
build to create target directory after skill sync.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:04 -07:00
Paul BakausandClaude Opus 4.6 685728b992 Redesign install section as two-step flow with Substack newsletter
Restructure the Install section into a "Get Started" two-step flow:
1. Install the skills (npx as primary, alternatives collapsible)
2. Stay up to date (embedded Substack subscribe form)

- Elevate npx command as the sole primary install method
- Collapse Claude Code marketplace and manual ZIP into expandable alternatives
- Replace hidden prefix toggle with prominent radio card selector
- Download button dynamically updates label based on prefix choice
- Add Substack newsletter embed (impeccablestyle.substack.com)
- Add newsletter link to footer alongside blog link
- Normalize button styles for consistency (square corners for actions)
- Add newsletter icon assets (SVG + PNG) for Substack branding

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:03:30 -07:00
Paul BakausandClaude Opus 4.6 9d368b777d Fix privacy page not loading by adding it to build entrypoints
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 18:05:44 -07:00
Paul BakausandGitHub 727f0a661e Merge pull request #72 from pbakaus/release/v1.6
Bump version to 1.6.0
2026-03-25 09:26:05 -07:00
Paul BakausandClaude Opus 4.6 8d1937d3c9 Homepage UX improvements from design critique
- Add floating bottom section nav (appears after hero, hides at footer)
- Fix hero split comparison to default 50/50 instead of 70/30
- Remove duplicate "Works with" badges from Install section
- Periodic table: restore compact elements, add inline hover tooltips
- Truncate command descriptions in Commands section for scannability
- Collapse older changelog entries behind "View older releases"
- Add GitHub star count (13.3k) next to repo link
- Fix meta theme-color to match light mode
- Reduce hero top padding, update section 03 subtitle
- Clean up footer: remove redundant tagline and anchor links
- Fix divider line accumulation in changelog and FAQ sections
- Center glass terminal vertically in viewport

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:22:12 -07:00
Paul BakausandClaude Opus 4.6 1f484d0f5d Add privacy policy page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 19:07:46 -07:00
Paul BakausandClaude Opus 4.6 6a716263ba Add user-facing changelog guidance to CLAUDE.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:41:46 -07:00
Paul BakausandClaude Opus 4.6 07efc2e761 Trim changelog to user-facing changes only
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:41:12 -07:00
Paul BakausandClaude Opus 4.6 f27bf49b39 Bump version to 1.6.0, add changelog entry
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:40:48 -07:00
Paul BakausandGitHub f27ddf0876 Merge pull request #66 from gabelul/feat/critique-audit-scoring
feat: add scoring, personas, and cognitive load to critique and audit
2026-03-24 18:36:11 -07:00
Paul BakausandClaude Opus 4.6 a9bf70f1ab Refine critique and audit skills based on review feedback
- Collapse inline cognitive load section into reference pointer
- Differentiate audit (technical, code-level) from critique (UX, holistic)
- Add MANDATORY PREPARATION block to audit for context gathering
- Rename Riley persona to "Deliberate Stress Tester", remove pricing focus
- Restore stripped checklist items, persona examples, and emotional journey detail
- Restore "Don't soften criticism" and IMPORTANT/NEVER lines in audit
- Restore constraints question in Phase 3
- Fix em dash formatting (use proper — not --)
- Shorten descriptions while preserving key trigger terms

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:57:47 -07:00
Paul BakausandClaude Opus 4.6 85e6d99fde Merge main and resolve frontmatter conflicts
Combine PR's enhanced descriptions (scoring, personas, cognitive load)
with main's argument-hint format. Rebuild all providers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:07:38 -07:00
Paul BakausandGitHub fcfea0f2ad Merge pull request #68 from everforge/chore/appjs-security-hardening
Harden pattern rendering and clipboard interactions in app.js
2026-03-24 16:03:57 -07:00
Paul BakausandClaude Opus 4.6 6ca80f81a1 Harden pattern rendering and clipboard in app.js
Simplified to substantive changes only (no whitespace reformatting):
- Add escapeHtml() for API-derived text in pattern tab/panel rendering
- Add CSS.escape() + null guard for tab panel selector lookup
- Add clipboard fallback for non-HTTPS / older browsers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:02:40 -07:00
Paul BakausandGitHub 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 BakausandGitHub 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 BakausandClaude Opus 4.6 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 BakausandGitHub 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 BakausandClaude Opus 4.6 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 BakausandGitHub 9e3b87903a Merge pull request #53 from shog86/add-trae-support
Add trae support
2026-03-24 15:46:30 -07:00
Paul BakausandClaude Opus 4.6 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 BakausandClaude Opus 4.6 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 BakausandGitHub 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 BakausandClaude Opus 4.6 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 BakausandClaude Opus 4.6 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 BakausandClaude Opus 4.6 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 BakausandClaude Opus 4.6 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 BakausandGitHub 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-tesslandGitHub bec84bd2e6 Merge branch 'main' into improve/skill-review-optimization 2026-03-23 11:48:39 +05:30
Paul BakausandGitHub 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 BakausandGitHub e9ac702849 Merge pull request #62 from pbakaus/feat/google-analytics
Add Google Analytics tracking
2026-03-21 19:16:12 -07:00