StructKit
YAML scaffolding your AI assistant can actually run.
Define a repo once (files, CI, Terraform, app layout). Generate it from the CLI, from CI, or through an assistant over MCP. When the org template on GitHub changes, the next generate picks it up. No golden repo. No separate Cookiecutter tree.
🚀 Quick Start | 📚 Docs | 🤖 MCP / AI Agent Guide | 💬 Discussions
⭐ If StructKit saves you time, please star the repo — it helps others find it.
Try it in 60 seconds
# Install the CLI
pip install structkit
# Preview available bundled structures
structkit list
# Generate a ready-made Terraform module scaffold
structkit generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
# Start MCP server for AI integration
structkit mcp --server
Prefer Docker?
docker run --rm -v "$(pwd):/workdir" ghcr.io/httpdss/structkit:main \
generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
Ecosystem
These are install paths for StructKit, not separate products. Star this repo.
- structkit-setup — install StructKit on
PATHin GitHub Actions (httpdss/structkit-setup@v0), then run anystructkitcommand - GitHub Action — validate, generate, or drift-check in CI (
httpdss/structkit-setup@v0, thenhttpdss/structkit-action@v0) - VS Code / Cursor — schema and autocomplete for
.structkit.yaml - Agent skills — inspect, preview, generate, validate from an assistant
- pre-commit — validate structures before they land
- Homebrew —
brew install httpdss/structkit/structkit - Linux
.deb/.rpm— download from build-linux-packages workflow artifacts (not attached to GitHub Releases), or build locally per packaging/README.md - Backstage — scaffolder actions for platform teams
- Hermes plugin — safe StructKit tools inside Hermes
👤 Who StructKit is for
- Platform / DevEx teams standardizing service layouts, CI baselines, and engineering conventions across many repos.
- DevOps engineers generating repeatable Terraform modules, Kubernetes manifests, GitHub Actions workflows, and config bundles.
- AI coding workflow users who want assistants to scaffold from approved templates instead of inventing project structure.
- Individual developers tired of rebuilding the same files, folders, and docs for every new project.
🤔 Why StructKit?
Project scaffolding tools exist in most ecosystems, but StructKit solves problems the others often leave to copy-paste, template repositories, or custom scripts.
| Feature | cookiecutter | copier | StructKit |
|---|---|---|---|
| Remote content (GitHub, S3, GCS, HTTP) | ❌ | ❌ | ✅ |
| AI / MCP integration | ❌ | ❌ | ✅ |
| Pre/post generation hooks | ✅ | ✅ | ✅ |
| Dry run mode | ❌ | ✅ | ✅ |
| YAML-first (no template repo required) | ❌ | ❌ | ✅ |
| Multiple file conflict strategies | ❌ | ✅ | ✅ |
| IDE schema validation | ❌ | ❌ | ✅ |
Key differentiators:
- Remote-first content: Reference your organization's canonical CI template from GitHub directly in your StructKit config. When the template updates, all new projects get the update — no copy-paste maintenance.
- AI-native via MCP: Start the StructKit MCP server so your AI assistant can generate project scaffolds from natural language using your templates as the source of truth.
- Agent skill ready: Install the companion
httpdss/structkit-skillsworkflow skill so AI assistants consistently inspect, preview, generate, and validate StructKit structures. - YAML-first: Define structures directly in YAML. No separate template repository is required.
- Safe by default: Use dry-run previews and file conflict strategies before writing into existing projects.
✨ Key Features
- 📝 YAML-Based Configuration - Define project structures in simple, readable YAML
- 🔧 Template Variables - Dynamic content with Jinja2 templating and interactive prompts
- 🌐 Remote Content - Fetch files from GitHub, HTTP/HTTPS, S3, and Google Cloud Storage
- 🛡️ Smart File Handling - Multiple strategies for managing existing files (overwrite, skip, backup, etc.)
- 🪝 Automation Hooks - Pre and post-generation shell commands
- 🔒 Hook Safety - Skip hooks (
--no-hooks/STRUCTKIT_NO_HOOKS), confirm interactively, or restrict commands with an allowlist - ⚙️ Config Layering - Merge built-in defaults,
~/.config/struct/config.yaml, optional--config-file, and CLI flags - 🎯 Dry Run Mode - Preview changes before applying them
- ✅ Validation & Schema - Built-in YAML validation and IDE support
- 🤖 MCP Integration - Model Context Protocol support for AI-assisted development workflows
🚀 More usage examples
# Generate a Terraform module structure
structkit generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
# List available structures
structkit list
# Validate a configuration
structkit validate my-config.yaml
# Start MCP server for AI integration
structkit mcp --server
If StructKit saves you setup time, star the repo, try an example, or share your use case in GitHub Discussions.
Example Configuration
files:
- README.md:
content: |
# {{@ project_name @}}
Generated with StructKit
- .gitignore:
file: github://github/gitignore/main/Python.gitignore
folders:
- src/:
struct: project/python
with:
app_name: "{{@ project_name | slugify @}}"
variables:
- project_name:
description: "Name of your project"
type: string
default: "MyProject"
📚 Documentation
Our comprehensive documentation is organized into the following sections:
🏁 Getting Started
- Installation Guide - Multiple installation methods
- Quick Start - Get up and running in minutes
- Basic Usage - Core commands and options
⚙️ Configuration
- YAML Configuration - Complete configuration reference
- Template Variables - Dynamic content and Jinja2 features
- File Handling - Managing files, permissions, and remote content
- Environment Variables -
STRUCTKIT_*defaults and overrides - Schema Reference - YAML validation and IDE support
🔧 Advanced Features
- Hooks - Pre and post-generation automation
- Mappings - External data integration
- GitHub Integration - Automation with GitHub Actions
- MCP / AI Agent Workflow - Model Context Protocol for approved-template scaffolding with AI assistants
- Agent Skills - Installable StructKit workflow skill for AI assistants
- Command-Line Completion - Enhanced CLI experience
👩💻 Development
- Development Setup - Contributing to StructKit
- Known Issues - Current limitations and workarounds
📖 Resources
- Articles & Tutorials - Community content and learning resources
- Examples - Practical examples and use cases
🎯 Use Cases
- Infrastructure as Code - Generate Terraform modules, Kubernetes manifests
- Application Scaffolding - Bootstrap microservices, APIs, frontend projects
- DevOps Automation - CI/CD pipeline templates, configuration management
- Documentation - Consistent project documentation and compliance templates
🤝 Community
- Contributing Guidelines - How to contribute
- GitHub Discussions - Community support
- Articles & Tutorials - Learning resources
📜 License
Apache-2.0 License - see LICENSE for details.
💰 Support
If StructKit helps your workflow, consider supporting the project: patreon/structproject
📚 Complete Documentation | 🐛 Report Issues | 💬 Discussions
Metadata
Release files for structkit 3.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| structkit-3.3.1.tar.gz | 126.9 kB | Without provenance | Details for structkit-3.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| structkit-3.3.1-py3-none-any.whl | Python 3 | none | any | Details for structkit-3.3.1-py3-none-any.whl |
Total release size: 248.4 kB
Release files / structkit-3.3.1.tar.gz
| Download URL | structkit-3.3.1.tar.gz |
|---|---|
| Size | 126.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c00470b5198b61b5136b5a2ed7043ad855b527adebff8d8644fd052498f3fb5e
|
|
BLAKE2b-256 checksum How to use checksums |
cbfa5520a26bdc26ad18225171578013d8e563bffb185b06d0baa7fb05656aa1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / structkit-3.3.1-py3-none-any.whl
| Download URL | structkit-3.3.1-py3-none-any.whl |
|---|---|
| Size | 121.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
82197672fabe2ba26c2dfc51d38aca3bb6be06431cd8fdb35dca679723c09897
|
|
BLAKE2b-256 checksum How to use checksums |
fbea9e86506988a5d6156331fd433db03a607592f70877342cd6fbe3a008eda4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Security for structkit 3.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.