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.
Files changed (119) hide show
  1. {structkit-3.0.0/structkit.egg-info → structkit-3.1.0}/PKG-INFO +80 -30
  2. {structkit-3.0.0 → structkit-3.1.0}/README.md +64 -24
  3. {structkit-3.0.0 → structkit-3.1.0}/pyproject.toml +31 -6
  4. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/__init__.py +1 -0
  5. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/completion.py +1 -0
  6. structkit-3.1.0/structkit/commands/explain.py +362 -0
  7. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/generate.py +80 -29
  8. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/generate_schema.py +1 -1
  9. structkit-3.1.0/structkit/commands/graph.py +302 -0
  10. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/import.py +1 -3
  11. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/info.py +8 -3
  12. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/init.py +1 -0
  13. structkit-3.1.0/structkit/commands/lint.py +352 -0
  14. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/list.py +13 -5
  15. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/mcp.py +13 -13
  16. structkit-3.1.0/structkit/commands/search.py +86 -0
  17. structkit-3.1.0/structkit/commands/sources.py +84 -0
  18. {structkit-3.0.0 → structkit-3.1.0}/structkit/commands/validate.py +54 -32
  19. structkit-3.1.0/structkit/commands/vars.py +133 -0
  20. {structkit-3.0.0 → structkit-3.1.0}/structkit/completers.py +1 -0
  21. {structkit-3.0.0 → structkit-3.1.0}/structkit/content_fetcher.py +1 -0
  22. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/release-drafter.yaml +4 -4
  23. {structkit-3.0.0 → structkit-3.1.0}/structkit/file_item.py +14 -3
  24. {structkit-3.0.0 → structkit-3.1.0}/structkit/filters.py +5 -0
  25. structkit-3.1.0/structkit/input_store.py +64 -0
  26. {structkit-3.0.0 → structkit-3.1.0}/structkit/logging_config.py +1 -0
  27. {structkit-3.0.0 → structkit-3.1.0}/structkit/main.py +15 -0
  28. structkit-3.1.0/structkit/mcp_server.py +749 -0
  29. {structkit-3.0.0 → structkit-3.1.0}/structkit/model_wrapper.py +1 -0
  30. structkit-3.1.0/structkit/sources.py +155 -0
  31. {structkit-3.0.0 → structkit-3.1.0}/structkit/template_renderer.py +36 -9
  32. {structkit-3.0.0 → structkit-3.1.0}/structkit/utils.py +3 -0
  33. {structkit-3.0.0 → structkit-3.1.0/structkit.egg-info}/PKG-INFO +80 -30
  34. {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/SOURCES.txt +13 -0
  35. {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/requires.txt +1 -1
  36. {structkit-3.0.0 → structkit-3.1.0}/tests/test_commands.py +140 -1
  37. structkit-3.1.0/tests/test_commands_more.py +534 -0
  38. structkit-3.1.0/tests/test_env_var_cli_args.py +293 -0
  39. structkit-3.1.0/tests/test_env_var_structures_path.py +110 -0
  40. structkit-3.1.0/tests/test_explain_command.py +116 -0
  41. structkit-3.1.0/tests/test_graph_command.py +119 -0
  42. structkit-3.1.0/tests/test_mcp_integration.py +210 -0
  43. structkit-3.1.0/tests/test_search_command.py +154 -0
  44. structkit-3.1.0/tests/test_sources_command.py +135 -0
  45. {structkit-3.0.0 → structkit-3.1.0}/tests/test_template_renderer.py +101 -1
  46. structkit-3.0.0/structkit/input_store.py +0 -35
  47. structkit-3.0.0/structkit/mcp_server.py +0 -347
  48. structkit-3.0.0/tests/test_commands_more.py +0 -219
  49. structkit-3.0.0/tests/test_mcp_integration.py +0 -102
  50. {structkit-3.0.0 → structkit-3.1.0}/LICENSE +0 -0
  51. {structkit-3.0.0 → structkit-3.1.0}/MANIFEST.in +0 -0
  52. {structkit-3.0.0 → structkit-3.1.0}/setup.cfg +0 -0
  53. {structkit-3.0.0 → structkit-3.1.0}/setup.py +0 -0
  54. {structkit-3.0.0 → structkit-3.1.0}/structkit/__init__.py +0 -0
  55. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/README.md +0 -0
  56. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/ansible-playbook.yaml +0 -0
  57. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/chef-cookbook.yaml +0 -0
  58. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/ci-cd-pipelines.yaml +0 -0
  59. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/cloudformation-files.yaml +0 -0
  60. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/chglog.yaml +0 -0
  61. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/codeowners.yaml +0 -0
  62. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/devcontainer.yaml +0 -0
  63. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/editor-config.yaml +0 -0
  64. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/eslint.yaml +0 -0
  65. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/jshint.yaml +0 -0
  66. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/kubectl.yaml +0 -0
  67. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/configs/prettier.yaml +0 -0
  68. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/docker-files.yaml +0 -0
  69. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/documentation-template.yaml +0 -0
  70. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/git-hooks.yaml +0 -0
  71. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/chatmodes/plan.yaml +0 -0
  72. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/instructions/generic.yaml +0 -0
  73. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/generic.yaml +0 -0
  74. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/react-form.yaml +0 -0
  75. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/security-api.yaml +0 -0
  76. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/prompts/struct.yaml +0 -0
  77. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/templates.yaml +0 -0
  78. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/codeql.yaml +0 -0
  79. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/execute-tf-workflow.yaml +0 -0
  80. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/labeler.yaml +0 -0
  81. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/pre-commit.yaml +0 -0
  82. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/run-struct.yaml +0 -0
  83. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/github/workflows/stale.yaml +0 -0
  84. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/helm-chart.yaml +0 -0
  85. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/kubernetes-manifests.yaml +0 -0
  86. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/custom-structures.yaml +0 -0
  87. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/generic.yaml +0 -0
  88. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/go.yaml +0 -0
  89. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/java.yaml +0 -0
  90. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/n8n.yaml +0 -0
  91. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/nodejs.yaml +0 -0
  92. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/python.yaml +0 -0
  93. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/ruby.yaml +0 -0
  94. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/project/rust.yaml +0 -0
  95. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/prompts/run-struct-trigger.yaml +0 -0
  96. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/aws-accounts.yaml +0 -0
  97. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/environments.yaml +0 -0
  98. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/generic.yaml +0 -0
  99. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/github-organization.yaml +0 -0
  100. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/apps/init.yaml +0 -0
  101. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/terraform/modules/generic.yaml +0 -0
  102. {structkit-3.0.0 → structkit-3.1.0}/structkit/contribs/vagrant-files.yaml +0 -0
  103. {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/dependency_links.txt +0 -0
  104. {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/entry_points.txt +0 -0
  105. {structkit-3.0.0 → structkit-3.1.0}/structkit.egg-info/top_level.txt +0 -0
  106. {structkit-3.0.0 → structkit-3.1.0}/tests/test_completers.py +0 -0
  107. {structkit-3.0.0 → structkit-3.1.0}/tests/test_completion_command.py +0 -0
  108. {structkit-3.0.0 → structkit-3.1.0}/tests/test_content_fetcher_more.py +0 -0
  109. {structkit-3.0.0 → structkit-3.1.0}/tests/test_file_item.py +0 -0
  110. {structkit-3.0.0 → structkit-3.1.0}/tests/test_file_item_strategies.py +0 -0
  111. {structkit-3.0.0 → structkit-3.1.0}/tests/test_filters.py +0 -0
  112. {structkit-3.0.0 → structkit-3.1.0}/tests/test_filters_more.py +0 -0
  113. {structkit-3.0.0 → structkit-3.1.0}/tests/test_hooks.py +0 -0
  114. {structkit-3.0.0 → structkit-3.1.0}/tests/test_init_command.py +0 -0
  115. {structkit-3.0.0 → structkit-3.1.0}/tests/test_input_store.py +0 -0
  116. {structkit-3.0.0 → structkit-3.1.0}/tests/test_messages_and_summary.py +0 -0
  117. {structkit-3.0.0 → structkit-3.1.0}/tests/test_model_wrapper.py +0 -0
  118. {structkit-3.0.0 → structkit-3.1.0}/tests/test_template_helpers.py +0 -0
  119. {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.0.0
4
- Summary: A structured data processing tool
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.com/httpdss/structkit
8
- Project-URL: Repository, https://github.com/httpdss/structkit.git
9
- Keywords: data,structure,processing
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: Automated Project Structure Generator
58
+ # 🚀 StructKit: YAML-first scaffolding for teams and AI agents
49
59
 
50
- ![StructKit Logo](./docs/assets/github-hero.gif)
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
- [![codecov](https://codecov.io/github/httpdss/structkit/graph/badge.svg?token=JL5WIO1C9T)](https://codecov.io/github/httpdss/struct)
53
- ![GitHub issues](https://img.shields.io/github/issues/httpdss/struct)
54
- ![GitHub pull requests](https://img.shields.io/github/issues-pr/httpdss/struct)
55
- ![GitHub stars](https://img.shields.io/github/stars/httpdss/struct?style=social)
62
+ ![StructKit demo: generate project structure from YAML](./docs/assets/github-hero.gif)
56
63
 
57
- **StructKit** is a powerful, flexible tool for automating project structure creation through YAML configurations. Generate consistent project layouts, boilerplate code, and configurations with template variables, remote content fetching, and intelligent file handling.
64
+ [![codecov](https://codecov.io/github/httpdss/structkit/graph/badge.svg?token=JL5WIO1C9T)](https://codecov.io/github/httpdss/structkit)
65
+ ![GitHub issues](https://img.shields.io/github/issues/httpdss/structkit)
66
+ ![GitHub pull requests](https://img.shields.io/github/issues-pr/httpdss/structkit)
67
+ ![GitHub stars](https://img.shields.io/github/stars/httpdss/structkit?style=social)
58
68
 
59
- > 📚 **[View Complete Documentation](docs/index.md)** | 🚀 **[Quick Start Guide](docs/quickstart.md)** | 🔧 **[Installation](docs/installation.md)**
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
- ## 🚀 Quick Start
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](example/)** - Practical examples and use cases
207
+ - **[Examples](examples/)** - Practical examples and use cases
158
208
 
159
209
  ## 🎯 Use Cases
160
210
 
@@ -1,15 +1,65 @@
1
- # 🚀 StructKit: Automated Project Structure Generator
1
+ # 🚀 StructKit: YAML-first scaffolding for teams and AI agents
2
2
 
3
- ![StructKit Logo](./docs/assets/github-hero.gif)
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
- [![codecov](https://codecov.io/github/httpdss/structkit/graph/badge.svg?token=JL5WIO1C9T)](https://codecov.io/github/httpdss/struct)
6
- ![GitHub issues](https://img.shields.io/github/issues/httpdss/struct)
7
- ![GitHub pull requests](https://img.shields.io/github/issues-pr/httpdss/struct)
8
- ![GitHub stars](https://img.shields.io/github/stars/httpdss/struct?style=social)
5
+ ![StructKit demo: generate project structure from YAML](./docs/assets/github-hero.gif)
9
6
 
10
- **StructKit** is a powerful, flexible tool for automating project structure creation through YAML configurations. Generate consistent project layouts, boilerplate code, and configurations with template variables, remote content fetching, and intelligent file handling.
7
+ [![codecov](https://codecov.io/github/httpdss/structkit/graph/badge.svg?token=JL5WIO1C9T)](https://codecov.io/github/httpdss/structkit)
8
+ ![GitHub issues](https://img.shields.io/github/issues/httpdss/structkit)
9
+ ![GitHub pull requests](https://img.shields.io/github/issues-pr/httpdss/structkit)
10
+ ![GitHub stars](https://img.shields.io/github/stars/httpdss/structkit?style=social)
11
11
 
12
- > 📚 **[View Complete Documentation](docs/index.md)** | 🚀 **[Quick Start Guide](docs/quickstart.md)** | 🔧 **[Installation](docs/installation.md)**
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
- ## 🚀 Quick Start
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](example/)** - Practical examples and use cases
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.0.0"
8
- description = "A structured data processing tool"
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 = ["data", "structure", "processing"]
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.com/httpdss/structkit"
61
- Repository = "https://github.com/httpdss/structkit.git"
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"
@@ -1,6 +1,7 @@
1
1
  import logging
2
2
  from structkit.completers import log_level_completer
3
3
 
4
+
4
5
  # Base command class
5
6
  class Command:
6
7
  def __init__(self, parser):
@@ -3,6 +3,7 @@ import os
3
3
 
4
4
  SUPPORTED_SHELLS = ["bash", "zsh", "fish"]
5
5
 
6
+
6
7
  class CompletionCommand(Command):
7
8
  def __init__(self, parser):
8
9
  super().__init__(parser)