Skills Manifest System
FastSkill uses a declarative manifest system inspired by modern package managers like Poetry and npm. This system allows you to define which skills should be installed in your project, manage their versions, and ensure reproducible installations.Overview
FastSkill uses a unifiedskill-project.toml file for all project configuration, following industry-standard patterns like pyproject.toml and package.json. The manifest system consists of:
skill-project.toml(project root) - Unified configuration file with[dependencies]section for skill dependencies and[tool.fastskill.repositories]for repository configurationskills.lock(project root) - Lock file recording exact installed state (likepoetry.lock)skill-project.toml(skill directory) - Skill metadata for authors with[metadata]section
Context Detection
FastSkill automatically detects whether you’re working in a skill directory or project root:- Skill-level:
skill-project.tomlin directory withSKILL.md→ requires[metadata]section withidandversion - Project-level:
skill-project.tomlat project root → requires[dependencies]section
skill-project.toml - Project-Level Configuration
Theskill-project.toml file at your project root is the source of truth for which skills should be installed in your skills directory.
Basic Structure
Dependency Source Types
All existing dependency source types are supported in the[dependencies] section:
Git Repository:
Groups
Skills can be organized into groups (like Poetry groups):fastskill install- Installs all skills (default + all groups)fastskill install --without dev- Installs all except dev groupfastskill install --only prod- Installs only prod group
Editable Installs
For local development, you can mark skills as editable:Repository Configuration
Repository configuration is stored in the[tool.fastskill.repositories] section:
skills.lock - Lock File
Theskills.lock file at your project root records the exact installed state of all skills for reproducibility.
Structure
Key Differences from skill-project.toml
| Feature | skill-project.toml | skills.lock |
|---|---|---|
| Purpose | Declarative (what should be) | Exact state (what is installed) |
| Editable | Yes (user edits) | No (auto-generated) |
| Versions | Flexible (branches, ranges) | Exact (specific commits/versions) |
| Commit Hashes | No | Yes (for Git sources) |
| Timestamps | No | Yes (fetched_at) |
| Groups | Yes | Yes (from manifest) |
| Location | Project root | Project root |
When Lock File is Updated
The lock file is automatically updated when you:- Run
fastskill install - Run
fastskill add <skill> - Run
fastskill update - Run
fastskill remove <skill>
Workflow Examples
Development Workflow
Production Deployment
Team Collaboration
Version Management
Semantic Versioning
Skills can use semantic versioning when distributed as ZIP files:Git-Based Versioning
For Git sources, FastSkill tracks:- Branch: The branch being tracked
- Commit Hash: Exact commit installed
- Tag: Optional tag reference
skill-project.toml - Skill-Level Configuration
Skill authors can provide comprehensive metadata inskill-project.toml within their skill directory. This file uses the same name as the project-level configuration but serves a different purpose.
Full structure:
- The
idfield is required and must not contain forward slashes or scope information - The
versionfield is also required - Skill name for display comes from
SKILL.mdfrontmatter, not fromskill-project.toml - Created using
fastskill initcommand in the skill directory - When generating
marketplace.jsonor during skill registration, fields inskill-project.tomltake precedence overSKILL.mdfrontmatter
skill-project.toml exists in a directory containing SKILL.md, requiring the [metadata] section instead of [dependencies].
Best Practices
1. Commit Both Files
Always commit bothskill-project.toml and skills.lock:
2. Use Groups for Environments
Separate development and production skills:3. Lock File for Production
Use--lock flag for reproducible production deployments:
4. Regular Updates
Keep skills up to date:5. Editable for Local Development
Use editable installs for skills you’re developing:Comparison with Other Package Managers
FastSkill’s manifest system is inspired by modern package managers:| Feature | FastSkill | Poetry | npm |
|---|---|---|---|
| Declarative manifest | skill-project.toml | pyproject.toml | package.json |
| Lock file | skills.lock | poetry.lock | package-lock.json |
| Groups | groups = ["dev"] | --group dev | devDependencies |
| Editable installs | editable = true | -e flag | npm link |
| Source tracking | Git, ZIP, local | PyPI, Git, local | npm registry, Git |
Troubleshooting
Lock File Out of Sync
If your lock file doesn’t match installed skills:Missing Skills
If skills are missing aftergit pull: