Overview
FastSkill uses Rust’s conditional compilation feature flags to allow users to customize which functionality is included in the binary. This enables:- Smaller binaries - Exclude unused features to reduce binary size
- Faster compilation - Skip compiling unnecessary dependencies
- Optional dependencies - Only include dependencies needed for specific use cases
- Reduced attack surface - Disable features not needed for production
Feature flags are compile-time configuration, not runtime configuration. To change features, you must recompile FastSkill.
Available Features
| Feature | Default | Description | Dependencies | When to Use |
|---|---|---|---|---|
filesystem-storage | yes | Filesystem-based skill storage | None | Default, includes base skill storage |
registry-publish | yes | Publishing skills to blob storage with AWS S3 | aws-sdk-s3, aws-config | When publishing to registries |
hot-reload | no | Automatic skill reloading on file changes | notify | Development with hot-reload |
filesystem-storage
Default:yes (always enabled)
This feature provides the core skill storage implementation using the local filesystem:
- File-based skill installation and removal
- Skill metadata caching on disk
- Directory-based skill organization
- Standard file operations (read, write, delete, list)
- Default installations - Most common use case
- Production deployments - Reliable file-based storage
- Development - Direct file access for debugging
.claude/skills/ by default (configurable via skills_directory in .fastskill/config.yaml)
Note: This is a required feature and cannot be disabled. It’s included in the default feature set.
registry-publish
Default:yes (always enabled)
This feature enables publishing skills to external blob storage (e.g., AWS S3):
- Skill packaging into ZIP artifacts
- Publishing to S3-compatible blob storage
- Registry index updates
- Publish job tracking and status checking
- Async validation workflows
aws-sdk-s3- AWS SDK for S3 operationsaws-config- AWS configuration loader
- Running a registry - When you host a public skill registry
- Team registries - Private skill sharing within teams
- Organization publishing - Publishing skills to S3 for distribution
- CI/CD publishing - Automated skill publishing in pipelines
- Lightweight deployments without publishing
- Environments without AWS access
- Reduced binary size for local-only use
hot-reload
Default:no (opt-in)
This feature enables automatic skill reloading when files change:
- File system watching for skill directories
- Automatic reload on file changes
- Debouncing to prevent excessive reloads
- Event-driven skill updates
- Configurable watch paths
notify- Cross-platform file system notification library
- Development - Instant feedback when editing skill files
- Testing - Quick iterations without manual reindexing
- Skill debugging - See changes reflected immediately
- Active development of skills
- Testing skill changes
- Debugging skill behavior
- Production deployments (unnecessary overhead)
- Resource-constrained environments
- Reduced attack surface
Feature Combinations
Default (Recommended for Most Users)
filesystem-storage, registry-publishExcludes:
hot-reload
Best for: General use, production deployments, registry operations
Lightweight (Minimal Binary)
filesystem-storageExcludes:
registry-publish, hot-reload
Best for: Local skill management only, no publishing, minimal binary size
Development (with Hot Reload)
filesystem-storage, hot-reloadExcludes:
registry-publish
Best for: Active development, local testing with hot-reload
Full Feature Set
Excludes: None Best for: Development with hot-reload and registry publishing, complete functionality
Building with Features
Using Cargo
Installing from Crates.io (when published)
Installing from Source
Feature Interaction Matrix
| Feature Combination | Binary Size | Skills Storage | Publishing | Hot Reload |
|---|---|---|---|---|
| Default | Medium | ✅ Filesystem | ✅ AWS S3 | ❌ |
| Lightweight | Small | ✅ Filesystem | ❌ | ❌ |
| Development | Medium | ✅ Filesystem | ❌ | ✅ |
| Full | Large | ✅ Filesystem | ✅ AWS S3 | ✅ |
Runtime Detection
FastSkill can detect which features were compiled in:Performance Impact
Binary Size Comparison
| Feature Set | Binary Size (x86_64-linux) | Size Reduction |
|---|---|---|
| Full (all features) | ~12 MB | 0% (baseline) |
| Default | ~10 MB | 17% smaller |
| Lightweight | ~6 MB | 50% smaller |
Compilation Time Comparison
| Feature Set | Clean Build Time | Incremental Build Time |
|---|---|---|
| Full | ~5 minutes | ~30 seconds |
| Default | ~4 minutes | ~20 seconds |
| Lightweight | ~3 minutes | ~15 seconds |
Runtime Impact
| Feature | Runtime Overhead |
|---|---|
filesystem-storage | Negligible (required) |
registry-publish | Only when publishing (AWS SDK initialization) |
hot-reload | File system watcher thread (~1-2 MB memory, minimal CPU) |
Use Case Examples
Production Deployment
Development with Hot Reload
Local-Only Deployment
Registry Publisher
Troubleshooting
Feature not available at runtime
Feature not available at runtime
Build fails with missing dependencies
Build fails with missing dependencies
Binary too large
Binary too large
Best Practices
Use default features for production
Default features provide complete functionality and are well-tested. Only customize features for specific needs.
Enable hot-reload only for development
Hot-reload adds runtime overhead and is unnecessary in production. Disable it for deployments.
Test feature combinations before committing
Verify that your chosen feature set includes all necessary functionality for your use case.
Document feature requirements in deployment guides
When deploying FastSkill, document which features were used so others know what to expect.
Consider binary size for edge deployments
For edge devices or containers, use
--no-default-features to build smaller binaries.Feature Flag Reference
Complete Feature List
Enabling/Disabling Features
See Also
- Hot Reload - File watching and automatic reloading
- Package Command - Creating skill packages
- Publish Command - Publishing skills to registries
- Service Configuration - Runtime configuration options
- Building from Source - Installation and build instructions