Skip to content

Configuration reference

boost.php returns a BoostConfigBuilder. Put it in the repository root, or in .config/boost.php if you prefer to keep the root clean. Declaring both is an error.

php
<?php declare(strict_types=1);

use SanderMuller\BoostCore\Config\BoostConfig;
use SanderMuller\BoostCore\Enums\Agent;
use SanderMuller\BoostCore\Enums\Tag;

return BoostConfig::configure()
    ->withAgents([Agent::CLAUDE_CODE, Agent::CURSOR])
    ->withAllowedVendors(['sandermuller/boost-skills'])
    ->withTags([Tag::Php]);

Run vendor/bin/boost install to scaffold the file and pick the agents, the vendor allowlist, and the tags interactively.

Setter semantics

Every with*() method replaces its collection, so calling one twice keeps only the last call. withSkillRenderers() is the exception: it accumulates. withTags() also normalizes and de-duplicates, and withRemoteSkills() rejects a duplicate (source, version, mode) entry.

Methods

MethodDefaultWhat it does
withAgents(list<Agent>)[]The agents that receive files. Nothing is emitted until you name at least one
withAllowedVendors(list<string>)[]Composer packages allowed to supply skills and guidelines, as vendor/package
withTags(list<Tag|string>)[]The topic tags this project wants. A vendor skill ships only when every tag it declares is listed here
withExcludedSkills(list<string>)[]Drop specific vendor skills regardless of tags, as vendor/package:skill-name
withExcludedGuidelines(list<string>)[]The guideline counterpart, as vendor/package:guideline-name. The only lever for an untagged vendor guideline
withRemoteSkills(list<RemoteSkillSource>)[]Non-Composer sources: GitHub .skill release bundles, or cherry-picked subdirectories
withConventions(array)[]Project Conventions slot values that vendor skills read at agent-read time
withSkillRenderers(list<SkillRenderer>)passthrough onlyTemplate renderers for non-.md skill files. Accumulates across calls
withDisabledRenderers(list<string>)[]Drop a renderer by class name. Listing the passthrough renderer is a no-op
withDisabledEmitters(list<string>)[]Skip an emitter class during sync
withGitignoreManagement(bool)trueWhether boost maintains its managed block in .gitignore
withSkillsPath(string).ai/skillsWhere host skills are read from
withGuidelinesPath(string).ai/guidelinesWhere host guidelines are read from
withCommandsPath(string).ai/commandsWhere host command templates are read from

Agents

Agent is an enum, so your IDE completes the list:

Agent::CLAUDE_CODE, Agent::CURSOR, Agent::COPILOT, Agent::CODEX, Agent::GEMINI, Agent::JUNIE, Agent::KIRO, Agent::OPENCODE, Agent::AMP, Agent::ANTIGRAVITY.

De-selecting an agent reaps the files it owned on the next sync. See File ownership.

Tags

Tag cases give you autocompletion, and raw strings are accepted because the vocabulary is open:

php
->withTags([Tag::Php, 'jira'])

vendor/bin/boost tags lists every tag your installed packages declare, and what each one would unlock. The filtering rule is in Tags and dependencies.