structkit 3.0.0__tar.gz → 3.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {structkit-3.0.0/structkit.egg-info → structkit-3.1.0}/PKG-INFO +80 -30
- {structkit-3.0.0 → structkit-3.1.0}/README.md +64 -24
- {structkit-3.0.0 → structkit-3.1.0}/pyproject.toml +31 -6
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/__init__.py +1 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/completion.py +1 -0
- structkit-3.1.0/structkit/commands/explain.py +362 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/generate.py +80 -29
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/generate_schema.py +1 -1
- structkit-3.1.0/structkit/commands/graph.py +302 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/import.py +1 -3
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/info.py +8 -3
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/init.py +1 -0
- structkit-3.1.0/structkit/commands/lint.py +352 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/list.py +13 -5
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/mcp.py +13 -13
- structkit-3.1.0/structkit/commands/search.py +86 -0
- structkit-3.1.0/structkit/commands/sources.py +84 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/validate.py +54 -32
- structkit-3.1.0/structkit/commands/vars.py +133 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/completers.py +1 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/content_fetcher.py +1 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/release-drafter.yaml +4 -4
- {structkit-3.0.0 → structkit-3.1.0}/structkit/file_item.py +14 -3
- {structkit-3.0.0 → structkit-3.1.0}/structkit/filters.py +5 -0
- structkit-3.1.0/structkit/input_store.py +64 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/logging_config.py +1 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/main.py +15 -0
- structkit-3.1.0/structkit/mcp_server.py +749 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/model_wrapper.py +1 -0
- structkit-3.1.0/structkit/sources.py +155 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/template_renderer.py +36 -9
- {structkit-3.0.0 → structkit-3.1.0}/structkit/utils.py +3 -0
- {structkit-3.0.0 → structkit-3.1.0/structkit.egg-info}/PKG-INFO +80 -30
- {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/SOURCES.txt +13 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/requires.txt +1 -1
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_commands.py +140 -1
- structkit-3.1.0/tests/test_commands_more.py +534 -0
- structkit-3.1.0/tests/test_env_var_cli_args.py +293 -0
- structkit-3.1.0/tests/test_env_var_structures_path.py +110 -0
- structkit-3.1.0/tests/test_explain_command.py +116 -0
- structkit-3.1.0/tests/test_graph_command.py +119 -0
- structkit-3.1.0/tests/test_mcp_integration.py +210 -0
- structkit-3.1.0/tests/test_search_command.py +154 -0
- structkit-3.1.0/tests/test_sources_command.py +135 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_template_renderer.py +101 -1
- structkit-3.0.0/structkit/input_store.py +0 -35
- structkit-3.0.0/structkit/mcp_server.py +0 -347
- structkit-3.0.0/tests/test_commands_more.py +0 -219
- structkit-3.0.0/tests/test_mcp_integration.py +0 -102
- {structkit-3.0.0 → structkit-3.1.0}/LICENSE +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/MANIFEST.in +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/setup.cfg +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/setup.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/__init__.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/README.md +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/ansible-playbook.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/chef-cookbook.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/ci-cd-pipelines.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/cloudformation-files.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/chglog.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/codeowners.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/devcontainer.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/editor-config.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/eslint.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/jshint.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/kubectl.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/prettier.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/docker-files.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/documentation-template.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/git-hooks.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/chatmodes/plan.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/instructions/generic.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/generic.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/react-form.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/security-api.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/struct.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/templates.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/codeql.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/execute-tf-workflow.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/labeler.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/pre-commit.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/run-struct.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/stale.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/helm-chart.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/kubernetes-manifests.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/custom-structures.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/generic.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/go.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/java.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/n8n.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/nodejs.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/python.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/ruby.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/rust.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/prompts/run-struct-trigger.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/aws-accounts.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/environments.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/generic.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/github-organization.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/init.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/modules/generic.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/vagrant-files.yaml +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/dependency_links.txt +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/entry_points.txt +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/top_level.txt +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_completers.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_completion_command.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_content_fetcher_more.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_file_item.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_file_item_strategies.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_filters.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_filters_more.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_hooks.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_init_command.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_input_store.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_messages_and_summary.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_model_wrapper.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_template_helpers.py +0 -0
- {structkit-3.0.0 → structkit-3.1.0}/tests/test_utils_more.py +0 -0
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: structkit
|
|
3
|
-
Version: 3.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 3.1.0
|
|
4
|
+
Summary: YAML-first project scaffolding tool with remote content fetching, AI/MCP integration, and DevOps automation
|
|
5
5
|
Author: httpdss
|
|
6
6
|
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.
|
|
8
|
-
Project-URL: Repository, https://github.com/httpdss/structkit
|
|
9
|
-
|
|
7
|
+
Project-URL: Homepage, https://httpdss.github.io/structkit/
|
|
8
|
+
Project-URL: Repository, https://github.com/httpdss/structkit
|
|
9
|
+
Project-URL: Issues, https://github.com/httpdss/structkit/issues
|
|
10
|
+
Project-URL: Discussions, https://github.com/httpdss/structkit/discussions
|
|
11
|
+
Project-URL: Documentation, https://httpdss.github.io/structkit/docs/
|
|
12
|
+
Project-URL: Funding, https://httpdss.github.io/structkit/docs/funding/
|
|
13
|
+
Keywords: project-scaffolding,project-template,scaffolding,cookiecutter-alternative,copier-alternative,yaml-template,code-generation,devops,mcp,model-context-protocol,devex,platform-engineering,project-structure,boilerplate
|
|
10
14
|
Classifier: Development Status :: 4 - Beta
|
|
11
15
|
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: System Administrators
|
|
12
17
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
18
|
Classifier: Programming Language :: Python :: 3
|
|
14
19
|
Classifier: Programming Language :: Python :: 3.8
|
|
@@ -16,6 +21,11 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
16
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
23
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Environment :: Console
|
|
25
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
26
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
27
|
+
Classifier: Topic :: System :: Systems Administration
|
|
28
|
+
Classifier: Topic :: Utilities
|
|
19
29
|
Requires-Python: >=3.8
|
|
20
30
|
Description-Content-Type: text/markdown
|
|
21
31
|
License-File: LICENSE
|
|
@@ -27,7 +37,7 @@ Requires-Dist: jinja2>=3.1.0
|
|
|
27
37
|
Requires-Dist: PyGithub>=1.58.0
|
|
28
38
|
Requires-Dist: shtab>=1.6.0
|
|
29
39
|
Requires-Dist: colorlog>=6.7.0
|
|
30
|
-
Requires-Dist: pydantic-ai>=0.1.0
|
|
40
|
+
Requires-Dist: pydantic-ai-slim[anthropic,google,openai]>=0.1.0
|
|
31
41
|
Requires-Dist: fastmcp>=2.0.0
|
|
32
42
|
Provides-Extra: s3
|
|
33
43
|
Requires-Dist: boto3>=1.26.0; extra == "s3"
|
|
@@ -45,18 +55,68 @@ Requires-Dist: flake8>=4.0.0; extra == "dev"
|
|
|
45
55
|
Requires-Dist: mypy>=0.990; extra == "dev"
|
|
46
56
|
Dynamic: license-file
|
|
47
57
|
|
|
48
|
-
# 🚀 StructKit:
|
|
58
|
+
# 🚀 StructKit: YAML-first scaffolding for teams and AI agents
|
|
49
59
|
|
|
50
|
-
|
|
60
|
+
> 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.
|
|
51
61
|
|
|
52
|
-
|
|
53
|
-

|
|
54
|
-

|
|
55
|
-

|
|
62
|
+

|
|
56
63
|
|
|
57
|
-
|
|
64
|
+
[](https://codecov.io/github/httpdss/structkit)
|
|
65
|
+

|
|
66
|
+

|
|
67
|
+

|
|
58
68
|
|
|
59
|
-
|
|
69
|
+
**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.
|
|
70
|
+
|
|
71
|
+
> 🚀 **[Quick Start](docs/quickstart.md)** | 📚 **[Docs](docs/index.md)** | 🧩 **[Examples](examples/)** | 🤖 **[MCP Guide](docs/mcp-integration.md)** | 💬 **[Discussions](https://github.com/httpdss/structkit/discussions)**
|
|
72
|
+
|
|
73
|
+
## ⚡ Try it in 60 seconds
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Install the CLI
|
|
77
|
+
pip install structkit
|
|
78
|
+
|
|
79
|
+
# Preview available bundled structures
|
|
80
|
+
structkit list
|
|
81
|
+
|
|
82
|
+
# Generate a ready-made Terraform module scaffold
|
|
83
|
+
structkit generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Prefer Docker?
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
docker run --rm -v "$(pwd):/workdir" ghcr.io/httpdss/structkit:main \
|
|
90
|
+
generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 👤 Who StructKit is for
|
|
94
|
+
|
|
95
|
+
- **Platform / DevEx teams** standardizing service layouts, CI baselines, and engineering conventions across many repos.
|
|
96
|
+
- **DevOps engineers** generating repeatable Terraform modules, Kubernetes manifests, GitHub Actions workflows, and config bundles.
|
|
97
|
+
- **AI coding workflow users** who want assistants to scaffold from approved templates instead of inventing project structure.
|
|
98
|
+
- **Individual developers** tired of rebuilding the same files, folders, and docs for every new project.
|
|
99
|
+
|
|
100
|
+
## 🤔 Why StructKit?
|
|
101
|
+
|
|
102
|
+
Project scaffolding tools exist in most ecosystems, but StructKit solves problems the others often leave to copy-paste, template repositories, or custom scripts.
|
|
103
|
+
|
|
104
|
+
| Feature | cookiecutter | copier | **StructKit** |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| Remote content (GitHub, S3, GCS, HTTP) | ❌ | ❌ | ✅ |
|
|
107
|
+
| AI / MCP integration | ❌ | ❌ | ✅ |
|
|
108
|
+
| Pre/post generation hooks | ✅ | ✅ | ✅ |
|
|
109
|
+
| Dry run mode | ❌ | ✅ | ✅ |
|
|
110
|
+
| YAML-first (no template repo required) | ❌ | ❌ | ✅ |
|
|
111
|
+
| Multiple file conflict strategies | ❌ | ✅ | ✅ |
|
|
112
|
+
| IDE schema validation | ❌ | ❌ | ✅ |
|
|
113
|
+
|
|
114
|
+
**Key differentiators:**
|
|
115
|
+
|
|
116
|
+
- **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.
|
|
117
|
+
- **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.
|
|
118
|
+
- **YAML-first:** Define structures directly in YAML. No separate template repository is required.
|
|
119
|
+
- **Safe by default:** Use dry-run previews and file conflict strategies before writing into existing projects.
|
|
60
120
|
|
|
61
121
|
## ✨ Key Features
|
|
62
122
|
|
|
@@ -69,23 +129,11 @@ Dynamic: license-file
|
|
|
69
129
|
- **✅ Validation & Schema** - Built-in YAML validation and IDE support
|
|
70
130
|
- **🤖 MCP Integration** - Model Context Protocol support for AI-assisted development workflows
|
|
71
131
|
|
|
72
|
-
## 🚀
|
|
73
|
-
|
|
74
|
-
### Installation
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
# Install via pip
|
|
78
|
-
pip install git+https://github.com/httpdss/structkit.git
|
|
79
|
-
|
|
80
|
-
# Or run with Docker
|
|
81
|
-
docker run -v $(pwd):/workdir ghcr.io/httpdss/structkit:main generate my-config.yaml ./output
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Basic Usage
|
|
132
|
+
## 🚀 More usage examples
|
|
85
133
|
|
|
86
134
|
```bash
|
|
87
135
|
# Generate a Terraform module structure
|
|
88
|
-
structkit generate terraform-module ./my-terraform-module
|
|
136
|
+
structkit generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
|
|
89
137
|
|
|
90
138
|
# List available structures
|
|
91
139
|
structkit list
|
|
@@ -95,7 +143,9 @@ structkit validate my-config.yaml
|
|
|
95
143
|
|
|
96
144
|
# Start MCP server for AI integration
|
|
97
145
|
structkit mcp --server
|
|
98
|
-
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
If StructKit saves you setup time, **star the repo**, try an [example](examples/), or share your use case in [GitHub Discussions](https://github.com/httpdss/structkit/discussions).
|
|
99
149
|
|
|
100
150
|
### Example Configuration
|
|
101
151
|
|
|
@@ -154,7 +204,7 @@ Our comprehensive documentation is organized into the following sections:
|
|
|
154
204
|
### 📖 Resources
|
|
155
205
|
|
|
156
206
|
- **[Articles & Tutorials](docs/articles.md)** - Community content and learning resources
|
|
157
|
-
- **[Examples](
|
|
207
|
+
- **[Examples](examples/)** - Practical examples and use cases
|
|
158
208
|
|
|
159
209
|
## 🎯 Use Cases
|
|
160
210
|
|
|
@@ -1,15 +1,65 @@
|
|
|
1
|
-
# 🚀 StructKit:
|
|
1
|
+
# 🚀 StructKit: YAML-first scaffolding for teams and AI agents
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> 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.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-

|
|
7
|
-

|
|
8
|
-

|
|
5
|
+

|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
[](https://codecov.io/github/httpdss/structkit)
|
|
8
|
+

|
|
9
|
+

|
|
10
|
+

|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**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.
|
|
13
|
+
|
|
14
|
+
> 🚀 **[Quick Start](docs/quickstart.md)** | 📚 **[Docs](docs/index.md)** | 🧩 **[Examples](examples/)** | 🤖 **[MCP Guide](docs/mcp-integration.md)** | 💬 **[Discussions](https://github.com/httpdss/structkit/discussions)**
|
|
15
|
+
|
|
16
|
+
## ⚡ Try it in 60 seconds
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Install the CLI
|
|
20
|
+
pip install structkit
|
|
21
|
+
|
|
22
|
+
# Preview available bundled structures
|
|
23
|
+
structkit list
|
|
24
|
+
|
|
25
|
+
# Generate a ready-made Terraform module scaffold
|
|
26
|
+
structkit generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Prefer Docker?
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
docker run --rm -v "$(pwd):/workdir" ghcr.io/httpdss/structkit:main \
|
|
33
|
+
generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 👤 Who StructKit is for
|
|
37
|
+
|
|
38
|
+
- **Platform / DevEx teams** standardizing service layouts, CI baselines, and engineering conventions across many repos.
|
|
39
|
+
- **DevOps engineers** generating repeatable Terraform modules, Kubernetes manifests, GitHub Actions workflows, and config bundles.
|
|
40
|
+
- **AI coding workflow users** who want assistants to scaffold from approved templates instead of inventing project structure.
|
|
41
|
+
- **Individual developers** tired of rebuilding the same files, folders, and docs for every new project.
|
|
42
|
+
|
|
43
|
+
## 🤔 Why StructKit?
|
|
44
|
+
|
|
45
|
+
Project scaffolding tools exist in most ecosystems, but StructKit solves problems the others often leave to copy-paste, template repositories, or custom scripts.
|
|
46
|
+
|
|
47
|
+
| Feature | cookiecutter | copier | **StructKit** |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| Remote content (GitHub, S3, GCS, HTTP) | ❌ | ❌ | ✅ |
|
|
50
|
+
| AI / MCP integration | ❌ | ❌ | ✅ |
|
|
51
|
+
| Pre/post generation hooks | ✅ | ✅ | ✅ |
|
|
52
|
+
| Dry run mode | ❌ | ✅ | ✅ |
|
|
53
|
+
| YAML-first (no template repo required) | ❌ | ❌ | ✅ |
|
|
54
|
+
| Multiple file conflict strategies | ❌ | ✅ | ✅ |
|
|
55
|
+
| IDE schema validation | ❌ | ❌ | ✅ |
|
|
56
|
+
|
|
57
|
+
**Key differentiators:**
|
|
58
|
+
|
|
59
|
+
- **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.
|
|
60
|
+
- **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.
|
|
61
|
+
- **YAML-first:** Define structures directly in YAML. No separate template repository is required.
|
|
62
|
+
- **Safe by default:** Use dry-run previews and file conflict strategies before writing into existing projects.
|
|
13
63
|
|
|
14
64
|
## ✨ Key Features
|
|
15
65
|
|
|
@@ -22,23 +72,11 @@
|
|
|
22
72
|
- **✅ Validation & Schema** - Built-in YAML validation and IDE support
|
|
23
73
|
- **🤖 MCP Integration** - Model Context Protocol support for AI-assisted development workflows
|
|
24
74
|
|
|
25
|
-
## 🚀
|
|
26
|
-
|
|
27
|
-
### Installation
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Install via pip
|
|
31
|
-
pip install git+https://github.com/httpdss/structkit.git
|
|
32
|
-
|
|
33
|
-
# Or run with Docker
|
|
34
|
-
docker run -v $(pwd):/workdir ghcr.io/httpdss/structkit:main generate my-config.yaml ./output
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Basic Usage
|
|
75
|
+
## 🚀 More usage examples
|
|
38
76
|
|
|
39
77
|
```bash
|
|
40
78
|
# Generate a Terraform module structure
|
|
41
|
-
structkit generate terraform-module ./my-terraform-module
|
|
79
|
+
structkit generate --vars module_name=my-terraform-module terraform/modules/generic ./my-terraform-module
|
|
42
80
|
|
|
43
81
|
# List available structures
|
|
44
82
|
structkit list
|
|
@@ -48,7 +86,9 @@ structkit validate my-config.yaml
|
|
|
48
86
|
|
|
49
87
|
# Start MCP server for AI integration
|
|
50
88
|
structkit mcp --server
|
|
51
|
-
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If StructKit saves you setup time, **star the repo**, try an [example](examples/), or share your use case in [GitHub Discussions](https://github.com/httpdss/structkit/discussions).
|
|
52
92
|
|
|
53
93
|
### Example Configuration
|
|
54
94
|
|
|
@@ -107,7 +147,7 @@ Our comprehensive documentation is organized into the following sections:
|
|
|
107
147
|
### 📖 Resources
|
|
108
148
|
|
|
109
149
|
- **[Articles & Tutorials](docs/articles.md)** - Community content and learning resources
|
|
110
|
-
- **[Examples](
|
|
150
|
+
- **[Examples](examples/)** - Practical examples and use cases
|
|
111
151
|
|
|
112
152
|
## 🎯 Use Cases
|
|
113
153
|
|
|
@@ -4,14 +4,15 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "structkit"
|
|
7
|
-
version = "3.
|
|
8
|
-
description = "
|
|
7
|
+
version = "3.1.0"
|
|
8
|
+
description = "YAML-first project scaffolding tool with remote content fetching, AI/MCP integration, and DevOps automation"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
11
11
|
authors = [{name = "httpdss"}]
|
|
12
12
|
classifiers = [
|
|
13
13
|
"Development Status :: 4 - Beta",
|
|
14
14
|
"Intended Audience :: Developers",
|
|
15
|
+
"Intended Audience :: System Administrators",
|
|
15
16
|
"License :: OSI Approved :: MIT License",
|
|
16
17
|
"Programming Language :: Python :: 3",
|
|
17
18
|
"Programming Language :: Python :: 3.8",
|
|
@@ -19,9 +20,29 @@ classifiers = [
|
|
|
19
20
|
"Programming Language :: Python :: 3.10",
|
|
20
21
|
"Programming Language :: Python :: 3.11",
|
|
21
22
|
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Environment :: Console",
|
|
24
|
+
"Topic :: Software Development :: Code Generators",
|
|
25
|
+
"Topic :: Software Development :: Build Tools",
|
|
26
|
+
"Topic :: System :: Systems Administration",
|
|
27
|
+
"Topic :: Utilities",
|
|
22
28
|
]
|
|
23
29
|
requires-python = ">=3.8"
|
|
24
|
-
keywords = [
|
|
30
|
+
keywords = [
|
|
31
|
+
"project-scaffolding",
|
|
32
|
+
"project-template",
|
|
33
|
+
"scaffolding",
|
|
34
|
+
"cookiecutter-alternative",
|
|
35
|
+
"copier-alternative",
|
|
36
|
+
"yaml-template",
|
|
37
|
+
"code-generation",
|
|
38
|
+
"devops",
|
|
39
|
+
"mcp",
|
|
40
|
+
"model-context-protocol",
|
|
41
|
+
"devex",
|
|
42
|
+
"platform-engineering",
|
|
43
|
+
"project-structure",
|
|
44
|
+
"boilerplate",
|
|
45
|
+
]
|
|
25
46
|
|
|
26
47
|
dependencies = [
|
|
27
48
|
"PyYAML>=6.0",
|
|
@@ -32,7 +53,7 @@ dependencies = [
|
|
|
32
53
|
"PyGithub>=1.58.0",
|
|
33
54
|
"shtab>=1.6.0",
|
|
34
55
|
"colorlog>=6.7.0",
|
|
35
|
-
"pydantic-ai>=0.1.0",
|
|
56
|
+
"pydantic-ai-slim[openai,google,anthropic]>=0.1.0",
|
|
36
57
|
"fastmcp>=2.0.0",
|
|
37
58
|
]
|
|
38
59
|
|
|
@@ -57,8 +78,12 @@ dev = [
|
|
|
57
78
|
]
|
|
58
79
|
|
|
59
80
|
[project.urls]
|
|
60
|
-
Homepage = "https://github.
|
|
61
|
-
Repository = "https://github.com/httpdss/structkit
|
|
81
|
+
Homepage = "https://httpdss.github.io/structkit/"
|
|
82
|
+
Repository = "https://github.com/httpdss/structkit"
|
|
83
|
+
Issues = "https://github.com/httpdss/structkit/issues"
|
|
84
|
+
Discussions = "https://github.com/httpdss/structkit/discussions"
|
|
85
|
+
Documentation = "https://httpdss.github.io/structkit/docs/"
|
|
86
|
+
Funding = "https://httpdss.github.io/structkit/docs/funding/"
|
|
62
87
|
|
|
63
88
|
[project.scripts]
|
|
64
89
|
structkit = "structkit.main:main"
|