Skip to content

Make the "Skills Activation" section in generated CLAUDE.md optional or more compact #780

@chrispmcgee

Description

@chrispmcgee

Context

When Boost generates the <laravel-boost-guidelines> block (via vendor/laravel/boost/.ai/foundation.blade.php), it emits a ## Skills Activation section that lists every registered skill along with its full description: frontmatter:

- `laravel-best-practices` — Apply this skill whenever writing, reviewing, or refactoring Laravel PHP code. This includes creating or modifying controllers, models, migrations, form requests, policies, jobs, scheduled commands, service classes, and Eloquent queries. Triggers for N+1 and query performance issues...
- `configuring-horizon` — Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing Horizon (horizon:install, Sail setup), configuring config/horizon.php (supervisor blocks, queue assignments, balancing strategies, minProcesses/maxProcesses)...

On my project, this section alone is ~30 lines / ~5 KB of CLAUDE.md.

The concern

In every supported agent harness I'm aware of (Claude Code, Copilot CLI, Gemini CLI), the skill name + description: is already surfaced to the agent at session start via the platform's own skill-discovery mechanism (e.g., Claude Code's system reminder listing available skills with their descriptions). So the Skills Activation section duplicates information the agent already has — but at the cost of tokens on every turn, plus pushing CLAUDE.md closer to the "large file" warning threshold (~40 KB in Claude Code).

Suggestions (any of these would help)

In rough order of preference:

  1. Remove the section entirely. The agent already gets skill metadata from the harness; Boost doesn't need to re-supply it.
  2. Trim it to a one-line pointer. e.g. "Domain-specific skills are available in .claude/skills/ and .ai/skills/ — invoke the relevant skill when the task matches."
  3. Keep names only, drop descriptions. - `laravel-best-practices` instead of the full description — still a useful "table of contents" but no duplication.
  4. Make it opt-out via config. Something like 'foundation' => ['include_skills_activation' => false] in config/boost.php, mirroring the existing guidelines.exclude pattern.

Why I'm not just editing the generated output

Editing CLAUDE.md manually is whack-a-mole — the next boost:update regenerates the block from the blade template and the section returns. A config option or upstream trim would make this durable.

Template reference

The relevant template is vendor/laravel/boost/.ai/foundation.blade.php, lines 21–29:

@if($assist->hasSkillsEnabled() && $assist->skills()->isNotEmpty())
## Skills Activation

This project has domain-specific skills available. You MUST activate the relevant skill whenever you work in that domain—don't wait until you're stuck.

@foreach($assist->skills() as $skill)
- `{{ $skill->name }}` — {{ $skill->description }}
@endforeach
@endif

Happy to open a PR if the direction is agreed.

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