Skip to main content

YAML-first project scaffolding tool with remote content fetching, AI/MCP integration, and DevOps automation

Project description

๐Ÿš€ StructKit: YAML-first scaffolding for teams and AI agents

Define project structures once in YAML, then generate consistent repos, CI files, docs, Terraform modules, and app layouts locally, in CI, or through an AI assistant via MCP.

StructKit demo: generate project structure from YAML

codecov GitHub issues GitHub pull requests GitHub stars

StructKit replaces copy-pasted boilerplate and aging "golden repos" with reusable YAML structures. It can render template variables, fetch canonical files from remote sources, preview changes before writing, and expose your scaffolds to AI assistants through the Model Context Protocol.

๐Ÿš€ Quick Start | ๐Ÿ“š Docs | ๐Ÿงฉ Examples | ๐Ÿค– MCP 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

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

๐Ÿ‘ค 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.
  • 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

structkit-3.1.0.tar.gz (105.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structkit-3.1.0-py3-none-any.whl (104.0 kB view details)

Uploaded Python 3

File details

Details for the file structkit-3.1.0.tar.gz.

File metadata

  • Download URL: structkit-3.1.0.tar.gz
  • Upload date:
  • Size: 105.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for structkit-3.1.0.tar.gz
Algorithm Hash digest
SHA256 15273735edb1d60f2f5487935e648e4ee1ac11bd1a4a742c9f463b70a90016c0
MD5 013377901d5b7cf01f29454f57df7a72
BLAKE2b-256 f3f71d761c4d399907ed5dce406c7b0680a0f7e778065be30af69f44cf9ae132

See more details on using hashes here.

File details

Details for the file structkit-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: structkit-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 104.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for structkit-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 215a77bc3740466c0421cc65640866b9a05a4bf8db30c09c7b9594cf7c357e63
MD5 5f29bf0f2844cb9f673698619a497bd6
BLAKE2b-256 bfc22354c4944556fbc1fbdbddb55d865ececfc248b87ee02248a24b8932570c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page