Skip to content

Feature: improve skill descriptions and add reference file support for pest-testing, tailwindcss-development, and saloon-development #659

@jjouellet

Description

@jjouellet

Summary

Three improvements to Boost-managed skills:

  1. Better activation keywords in the saloon-development skill description
  2. Storage::fake() cleanup reference for the pest-testing skill
  3. Project-specific design token reference support for the tailwindcss-development skill

These changes were initially made locally but would be overwritten by boost:update, so they belong upstream.


1. Improved saloon-development skill description

The current frontmatter description is too vague and lacks activation trigger keywords, so Claude Code doesn't reliably activate the skill.

Current:

Build and work with SaloonPHP API integrations, including connectors, requests, and responses.

Proposed:

Builds API integrations using the SaloonPHP framework, including connectors, requests, responses, authentication, and testing. Use when user mentions Saloon, creates API integrations, builds SDK wrappers, or works with external API clients in this project.

The added trigger keywords (Saloon, API integrations, SDK wrappers, external API clients) follow the same pattern used by other skills like pest-testing and pennant-development, which already include explicit activation conditions in their descriptions.


2. pest-testingStorage::fake() cleanup reference

Storage::fake() writes to a real directory at storage/framework/testing/disks/{disk}. When setUp()/beforeEach() calls Storage::fake(), the corresponding teardown must also call it to run cleanDirectory() on that path. Without this, test files leak between runs and can cause flaky failures.

Proposed addition to pest-testing SKILL.md

## Storage::fake() Cleanup

When writing tests that use `Storage::fake()`, consult `references/storage-fake-cleanup.md` for the required teardown pattern to prevent file leakage between tests.

Proposed references/storage-fake-cleanup.md

# Storage::fake() Cleanup Pattern

`Storage::fake()` writes to `storage/framework/testing/disks/{disk}`. Calling it in
teardown runs `cleanDirectory()` on that path, ensuring files created during the test
don't leak into subsequent tests.

## Pest

beforeEach(function (): void {
    Storage::fake();
});

afterEach(function (): void {
    Storage::fake();
});

## PHPUnit

protected function setUp(): void
{
    parent::setUp();
    Storage::fake();
}

protected function tearDown(): void
{
    Storage::fake();
    parent::tearDown();
}

**Rule:** If `setUp()`/`beforeEach()` calls `Storage::fake()`, the corresponding
`tearDown()`/`afterEach()` must also call `Storage::fake()` to clean up.

3. tailwindcss-development — project-specific design token reference support

Many projects define custom design tokens (brand colors, font families, breakpoints, custom utilities) in their Tailwind CSS configuration. The tailwindcss-development skill should support a reference file mechanism so projects can surface their own tokens during styling work.

This pattern already exists in other skills — for example, medialibrary-development uses references/ files for project-specific collection and conversion definitions.

Proposed addition to tailwindcss-development SKILL.md

## Project Design Tokens

Before writing any styles, check for a `references/design-tokens.md` file (or similar
project-specific reference) containing the project's brand colors, font families,
breakpoints, and custom utilities. Always prefer project-specific tokens over default
Tailwind palette colors.

Motivation

  • Skill activation reliability: Adding trigger keywords to descriptions is the established pattern (see pennant-development, pest-testing) and measurably improves skill selection accuracy.
  • Preventing common test bugs: The Storage::fake() cleanup pattern is a known footgun. Surfacing it through the testing skill prevents file leakage bugs before they happen.
  • Design consistency: Projects with custom design systems need a way to make their tokens discoverable to the styling skill. Without this, Claude Code defaults to the standard Tailwind palette, creating inconsistent UIs that require manual correction.
  • boost:update compatibility: All three changes need to live upstream so they survive skill updates.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions