Moves the protocol from a separate reference file directly into
frontend-design's main SKILL.md to avoid two-level indirection
(skill → frontend-design → reference file) that could cause the
AI to miss it. Also fixes leftover "shipping timeline" in the
built polish output.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Centralizes the duplicated ~15-line MANDATORY PREPARATION blocks from
10 skills into a single shared reference file in frontend-design. Since
all skills already depend on frontend-design, the protocol is
automatically available without build system changes.
Key changes:
- New reference: frontend-design/reference/context-gathering.md with
3-tier gathering: check instructions → check .impeccable.md → auto-
invoke teach-impeccable
- teach-impeccable now writes to .impeccable.md (provider-agnostic),
optionally also to the provider config file
- 8 existing MANDATORY PREPARATION blocks replaced with 1-line pointers
- 4 skills that lacked context gathering now have it (adapt, clarify,
polish, normalize)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
critique:
- Add MANDATORY PREPARATION block with context gathering and
{{ask_instruction}} — it was the only skill with a MANDATORY
PREPARATION section in other skills that lacked one
- Enforce frontend-design skill loading with "Do NOT proceed until..."
onboard:
- Add MANDATORY PREPARATION block — same gap as critique, onboard
jumped straight to assessment without gathering context first
- Add frontend-design skill loading
delight:
- Replace cliched loading messages ("Herding pixels", "Teaching robots
to dance", "Consulting the magic 8-ball") with product-specific
examples — these are exactly the kind of AI-generated copy the
suite's own anti-slop philosophy warns against
- Add explicit WARNING against these cliched patterns
- Change "Checkboxes that bounce" to "scale pulse" — bounce easing
contradicts the suite's consistent stance against bounce/elastic
curves (documented in motion-design reference and every skill
that mentions easing)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The contributor guide had fallen behind the codebase in several ways:
- Documented source/commands/ which no longer exists (skills-only now)
- Only described 4 providers (Cursor, Claude Code, Gemini, Codex) —
added Agents, Kiro, OpenCode, Pi
- Cursor described as "no frontmatter support" but it now uses Agent
Skills with YAML frontmatter
- "What Gets Generated" diagram showed old command-based output paths
- Build system described as "single ~170-line script" but is now modular
(scripts/lib/transformers/*.js)
- Referenced dist/ as committed but it's now gitignored
- Key Functions list missing 4 transformer functions
- Source Format missing user-invokable and args fields
- Referenced npm instead of bun in troubleshooting
- Added OpenCode provider support
- Added Pi provider support
- Recategorized /onboard as an enhancement command
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Project name was "impeccable-style" but the actual CF Pages project
is "impeccable", causing deploy failures.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Downloaded all provider logos locally to public/assets/ to eliminate
external dependency on logo.dev API, which was hitting rate limits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add first-class Pi (pi.dev) provider with transformer, tests, and build integration
- Fix CODEOWNERS username (@paulbakaus → @pbakaus)
- Add missing providers to issue/PR templates (Copilot, Kiro, OpenCode, Pi)
- Add Pi and OpenCode logos to homepage hero and install sections
- Move /onboard from "system" to "enhancement" category
- Update README and DEVELOP.md with all supported providers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Created opencode transformer in scripts/lib/transformers/opencode.js
- Added opencode placeholders to scripts/lib/utils.js
- Integrated opencode into build.js and universal assembly
- Updated README.md and scripts/lib/transformers/index.js with OpenCode support
Fix bug in Kiro transformer where commandNames was incorrectly passed
to replacePlaceholders for reference files. Add dedicated test suites
for Agents and Kiro transformers, and add unit tests for
replacePlaceholders and prefixSkillReferences utilities. (107 → 164 tests)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cloudflare Pages build environment doesn't have the zip CLI tool,
causing zip bundle creation to fail silently. Switched to the archiver
npm package for cross-platform zip generation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Without _routes.json, the SPA fallback was serving index.html instead of
invoking the download Functions, causing zip downloads to return HTML.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Run tests on push and PR to main
- Build project and upload artifacts
- Use Bun for fast JavaScript runtime
This ensures code quality and prevents regressions.
Replace Vercel serverless functions with Cloudflare Pages static
rewrites and lightweight download functions. Pre-generate all API
JSON data at build time for zero-invocation static serving. Also
fix stale simplify→distill rename in framework-viz periodic table.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All API routes serve static content that only changes at deploy time, but had
0% cache hit rate. Adding s-maxage=86400 lets Vercel's CDN cache responses at
the edge, which should take the ~28K daily API requests from 0% to ~99% cache.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The test suite was significantly out of sync with the actual codebase
after a major refactoring from a command+skills architecture to a unified
skills-only architecture.
Changes:
- Updated all transformer tests to match new API:
- Transformers now take (skills, distDir, patterns, options) instead of (commands, skills, distDir)
- Output paths changed (e.g., .cursor/skills/ instead of cursor/commands/)
- Removed tests for GEMINI.md and AGENTS.md files (no longer generated)
- Updated utils.test.js to match readSourceFiles behavior:
- readSourceFiles now returns { skills } only, not { commands, skills }
- Skills are read from directory structure (source/skills/{name}/SKILL.md)
- Fixed reference file ordering expectations (fs.readdirSync is not ordered)
- Updated build.test.js to match new build orchestration
- Fixed expectations for placeholder replacement behavior
- Added missing readPatterns import to utils.test.js
All 107 tests now pass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Kiro transformer and build integration (.kiro/skills/ structure)
- Add Kiro to validation allowlists, API handlers, and homepage badge
- Replace legacy getFilePath in Vercel API with unified skills directory structure
- Remove individual provider ZIP creation (only universal ZIPs needed)
- Simplify bundle API allowlist to universal/universal-prefixed only
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Filter teach-impeccable from {{available_commands}} (setup skill, not a fix)
- Soften wording: "prefer" our commands but also allow other installed skills
the LLM is sure exist, preventing false negatives while still preventing
hallucinated commands
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a dynamic {{available_commands}} placeholder that the build system
replaces with the actual list of user-invokable skill names. Audit and
critique now explicitly instruct the LLM to only suggest from this list,
preventing hallucinated commands like /redesign.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Prefix ALL skills in prefixed bundles, not just user-invokable ones
- Add prefixSkillReferences() to update /skillname and "the skillname skill"
cross-references in skill body text when prefixing
- Add prefix/outputSuffix support to agents transformer
- Move prefix toggle inline next to the download ZIP button for better discoverability
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Re-adds the toggle in the install section that lets users download bundles
with all user-invokable skills prefixed with i- (e.g. /i-audit) to avoid
naming conflicts. Build now produces both unprefixed and prefixed variants
for all providers and universal ZIP.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add shared validation helper (server/lib/validation.js) with ID regex, provider/type allowlists
- Validate all route params against allowlists before filesystem operations to prevent path traversal
- Strip stack traces and error.message from production error responses (generic "Internal server error")
- Sanitize filenames in Content-Disposition headers
- Add X-Content-Type-Options: nosniff and X-Frame-Options: DENY to dev server static responses
- Add path traversal (.. ) checks to all static file handlers and catch-all fetch
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show when to run and what it does instead of a misleading
"visual demo coming soon" placeholder.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The migration to source/skills/{name}/SKILL.md broke the serverless
functions which still expected flat .md files in source/commands/.
Also adds scripts/** to Vercel includeFiles for patterns API.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Combined all post-v1.0 changelog entries into single v1.1.0
- Updated version to 1.1.0 in package.json, plugin.json, marketplace.json
- Added GitHub icon link to hero top-right
- Added README.txt to universal ZIP (macOS hides dotfile-only folders)
- Added versioning instructions to CLAUDE.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All commands are now skills with user-invokable: true. Source lives in
source/skills/{name}/SKILL.md. Added VS Code Copilot (.agents/skills/)
and Google Antigravity (.agent/skills/) transformers. All 6 providers
output to skills directories only — no more commands/prompts dirs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add scripts/generate-og-image.js that renders the OG image with Playwright
using the actual site fonts (Cormorant Garamond, Instrument Sans, Space
Grotesk) and dynamically counts skills/commands from source/. Switch from
PNG to JPEG (512 KB → 25 KB). Run with `bun run og-image`.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds floating corner badges to clarify which side is before/after,
removes the "With Skills" divider label, and extends the slider range
to account for the skewed divider so it can fully reveal each side.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>