Entry format: - [structkit](https://github.com/httpdss/structkit) - A command-line tool that scaffolds project files and directories from a YAML configuration.
Description is concise and short
Why This Project Is Awesome
Which criterion does it meet? (pick one)
Industry Standard - The go-to tool for a specific use case
Rising Star - 5000+ stars in < 2 years, significant adoption
StructKit sits in a gap that the established scaffolders don't fill cleanly. Cookiecutter requires a nested template repo layout and Python+Jinja knowledge. Yeoman is JS-only. PyScaffold is locked to the Python-package use case. StructKit lets you describe an entire project — files, directories, contents, permissions, even pre/post-generation shell hooks — in a single readable YAML file, regardless of the target language.
Differentiating capabilities:
Single-file YAML config; no nested template directory to learn
Remote content fetching from any HTTP source (GitHub repos, Gists, internal registries) referenced inline in the YAML
Jinja2-style template variables and project-wide variable injection
Lifecycle hooks for running formatters, installers, or git init after generation
Dry-run preview mode that prints the planned tree without writing
Language-agnostic — used today for Python, Terraform, Next.js, Kubernetes, and microservice templates
MIT licensed, actively maintained, v3.0.0
How It Differs
vs cookiecutter - One readable YAML file instead of a template repo with nested directories. Remote content fetching built in. No requirement to learn a separate Cookiecutter template layout.
vs copier - Simpler config model focused purely on initial scaffolding. Copier's strength is project-update workflows; StructKit stays small and composable for the generation step alone.
vs yeoman - Language-agnostic, no Node.js dependency, no generator authoring framework to learn.
vs pyscaffold - Not constrained to the Python-package layout; works for any project type from a Terraform module to a microservice cluster.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/vinta/awesome-python/pull/3096
**Author:** [@httpdss](https://github.com/httpdss)
**Created:** 4/27/2026
**Status:** ❌ Closed
**Base:** `master` ← **Head:** `master`
---
### 📝 Commits (1)
- [`daad77d`](https://github.com/vinta/awesome-python/commit/daad77d9ac231085edc6aefa5c7ed12e6d8d626e) Add structkit to productivity tools list
### 📊 Changes
**1 file changed** (+1 additions, -0 deletions)
<details>
<summary>View changed files</summary>
📝 `README.md` (+1 -0)
</details>
### 📄 Description
## Project
[StructKit](https://github.com/httpdss/structkit)
## Checklist
- [x] One project per PR
- [x] PR title format: `Add structkit`
- [x] Entry format: `- [structkit](https://github.com/httpdss/structkit) - A command-line tool that scaffolds project files and directories from a YAML configuration.`
- [x] Description is concise and short
## Why This Project Is Awesome
Which criterion does it meet? (pick one)
- [ ] **Industry Standard** - The go-to tool for a specific use case
- [ ] **Rising Star** - 5000+ stars in < 2 years, significant adoption
- [x] **Hidden Gem** - Exceptional quality, solves niche problems elegantly
Explain:
StructKit sits in a gap that the established scaffolders don't fill cleanly. Cookiecutter requires a nested template repo layout and Python+Jinja knowledge. Yeoman is JS-only. PyScaffold is locked to the Python-package use case. StructKit lets you describe an entire project — files, directories, contents, permissions, even pre/post-generation shell hooks — in a single readable YAML file, regardless of the target language.
Differentiating capabilities:
- Single-file YAML config; no nested template directory to learn
- Remote content fetching from any HTTP source (GitHub repos, Gists, internal registries) referenced inline in the YAML
- Jinja2-style template variables and project-wide variable injection
- Lifecycle hooks for running formatters, installers, or git init after generation
- Dry-run preview mode that prints the planned tree without writing
- Language-agnostic — used today for Python, Terraform, Next.js, Kubernetes, and microservice templates
- MIT licensed, actively maintained, v3.0.0
## How It Differs
- **vs cookiecutter** - One readable YAML file instead of a template repo with nested directories. Remote content fetching built in. No requirement to learn a separate Cookiecutter template layout.
- **vs copier** - Simpler config model focused purely on initial scaffolding. Copier's strength is project-update workflows; StructKit stays small and composable for the generation step alone.
- **vs yeoman** - Language-agnostic, no Node.js dependency, no generator authoring framework to learn.
- **vs pyscaffold** - Not constrained to the Python-package layout; works for any project type from a Terraform module to a microservice cluster.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/vinta/awesome-python/pull/3096
Author: @httpdss
Created: 4/27/2026
Status: ❌ Closed
Base:
master← Head:master📝 Commits (1)
daad77dAdd structkit to productivity tools list📊 Changes
1 file changed (+1 additions, -0 deletions)
View changed files
📝
README.md(+1 -0)📄 Description
Project
StructKit
Checklist
Add structkit- [structkit](https://github.com/httpdss/structkit) - A command-line tool that scaffolds project files and directories from a YAML configuration.Why This Project Is Awesome
Which criterion does it meet? (pick one)
Explain:
StructKit sits in a gap that the established scaffolders don't fill cleanly. Cookiecutter requires a nested template repo layout and Python+Jinja knowledge. Yeoman is JS-only. PyScaffold is locked to the Python-package use case. StructKit lets you describe an entire project — files, directories, contents, permissions, even pre/post-generation shell hooks — in a single readable YAML file, regardless of the target language.
Differentiating capabilities:
How It Differs
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.