| Crates.io | skeletor |
| lib.rs | skeletor |
| version | 0.3.7 |
| created_at | 2016-05-27 18:09:57.846536+00 |
| updated_at | 2025-09-18 03:34:47.246136+00 |
| description | A blazing-fast Rust scaffolding tool with YAML-driven snapshots. |
| homepage | https://github.com/thegeekist/skeletor |
| repository | https://github.com/thegeekist/skeletor |
| max_upload_size | |
| id | 5207 |
| size | 226,383 |
A blazing-fast Rust scaffolding tool.
Generate thousands of files and directories with file contents from a YAML configuration in milliseconds.
Capture existing nested folders as YAML templates with snapshot mode.
Skeletor simplifies project scaffolding with an easy-to-use YAML configuration.
.skeletorrc fileskeletor apply
skeletor apply custom.yml
Create a YAML file (.skeletorrc) to define the directory structure:
directories:
src:
main.rs: |
fn main() {
println!("Hello, Skeletor!");
}
lib.rs: ""
tests:
integration.rs: |
#[test]
fn sample_test() {
assert_eq!(2 + 2, 4);
}
Cargo.toml: |
[package]
name = "my_project"
version = "0.1.0"
Apply the Configuration
skeletor apply
This will generate the entire folder structure instantly!
Use a Custom Template
skeletor apply my-template.yml
Preview Before Running
# Quick summary of what would be created
skeletor apply --dry-run
# With custom template
skeletor apply my-template.yml --dry-run
# Detailed listing of all operations (useful for debugging)
skeletor apply --dry-run --verbose
skeletor apply my-template.yml --dry-run --verbose
curl -fsSL https://raw.githubusercontent.com/theGeekist/skeletor/main/install.sh | bash
tip: Review the script before running to ensure security.
brew tap theGeekist/skeletor
brew install skeletor
Easiest method if Homebrew is installed.
cargo install skeletor
Installs directly from crates.io.
git clone https://github.com/theGeekist/skeletor.git
cd skeletor
cargo install --path .
Rust & Cargo need to be installed on your system.
Capture a YAML snapshot of an existing folder.
Create a Snapshot
# Print YAML to stdout
skeletor snapshot .
# Save to file
skeletor snapshot . -o my-template.yml
Ignore files and add a note
skeletor snapshot -n "Initial snapshot" -i .gitignore -i .git/ .
Preview Before Creating
# Quick summary of what would be captured
skeletor snapshot --dry-run .
# Detailed listing with ignore pattern matching
skeletor snapshot --dry-run --verbose .
Common Options
-o custom.yml → Save snapshot to file (prints to stdout if omitted)-i "*.log" → Exclude files based on patterns (can be used multiple times)-i .gitignore → Use .gitignore file patterns for exclusion-n "Initial snapshot" → Add custom notes to the snapshot--include-contents → Include file contents for text files (binary files will be empty)--verbose → Show detailed ignore pattern matching and file processing infoDisplay metadata from a .skeletorrc file.
# Show info for .skeletorrc
skeletor info
# Show info for custom file
skeletor info my-template.yml
Skeletor can be used as a Rust library for programmatic scaffolding in your applications.
[dependencies]
skeletor = "0.3"
use skeletor::{SkeletorConfig, apply_config};
use std::path::Path;
// Load configuration from YAML string
let config = SkeletorConfig::from_yaml_str(r#"
directories:
src:
main.rs: |
fn main() {
println!("Hello, world!");
}
tests:
test.rs: "// Test content"
"#)?;
// Apply configuration to target directory
let result = apply_config(&config, Path::new("./my-project"), false, false)?;
println!("Created {} files and {} directories in {:?}",
result.files_created, result.dirs_created, result.duration);
See examples/library_demo.rs for a complete example.
Contributions are welcome! Open an issue or submit a pull request.
For comprehensive development guidelines, see DEVELOPMENT.md.
# Clone and set up development environment
git clone https://github.com/theGeekist/skeletor.git
cd skeletor
./scripts/setup-git-hooks.sh
# Run tests and quality checks
cargo test
cargo clippy -- -D warnings
This project uses cargo-release for automated releases:
# Dry-run (see what would happen)
cargo release patch # 0.3.1 → 0.3.2
cargo release minor # 0.3.1 → 0.4.0
cargo release major # 0.3.1 → 1.0.0
# Actual release (maintainers only)
cargo release patch --execute
⚠️ CRITICAL: Never manually edit version numbers! Use cargo release only.
See DEVELOPMENT.md for complete version management guidelines.
This project is licensed under the MIT License. Enjoy effortless scaffolding with Skeletor!
Proudly brought to you by @theGeekist and @pipewrk