Skip to main content

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.

codecov GitHub issues GitHub pull requests GitHub stars

🚀 Quick Start | 📚 Docs | 🤖 MCP / AI Agent Guide | 💬 Discussions

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.

  • GitHub Action — validate, generate, or drift-check in CI
  • 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 tap httpdss/structkit && brew install structkit
  • 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-skills workflow 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
  • 🎯 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

⚙️ Configuration

🔧 Advanced Features

👩‍💻 Development

📖 Resources

🎯 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

📜 License

MIT 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.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for structkit 3.3.0
File Size Uploaded
structkit-3.3.0.tar.gz 126.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for structkit 3.3.0
File Interpreter ABI Platform
structkit-3.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 247.0 kB

Release files / structkit-3.3.0.tar.gz

Download URL structkit-3.3.0.tar.gz
Size 126.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4b7272f036f3fa6835cb0d5fa6a0df43084a8c07d591f25de99397b0c7603cd2
BLAKE2b-256 checksum
How to use checksums
961f68245bee0ae39a27053b3044cfd7083c6867b3fc71bb62213b9b680ba35b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / structkit-3.3.0-py3-none-any.whl

Download URL structkit-3.3.0-py3-none-any.whl
Size 120.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
663e81283080f872b48507296e05795f19028574cbb37967072d20cac8a74a75
BLAKE2b-256 checksum
How to use checksums
fdaf71b06734fad6e76c42e90b576a21ffbbc324ce33053bc974635b2acf1ed7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

3.3.0 This release

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page