git-repokit 0.9.10__tar.gz → 0.9.11__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 (222) hide show
  1. git_repokit-0.9.11/PKG-INFO +331 -0
  2. git_repokit-0.9.11/README.md +290 -0
  3. git_repokit-0.9.11/git_repokit.egg-info/PKG-INFO +331 -0
  4. {git_repokit-0.9.10 → git_repokit-0.9.11}/git_repokit.egg-info/SOURCES.txt +4 -0
  5. {git_repokit-0.9.10 → git_repokit-0.9.11}/pyproject.toml +3 -3
  6. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/__version__.py +1 -1
  7. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/badges.py +26 -26
  8. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/cli.py +21 -8
  9. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/config.py +1 -1
  10. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/github_setup.py +2 -2
  11. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/LICENSES.md +5 -2
  12. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/__init__.py +44 -13
  13. git_repokit-0.9.11/repokit/licenses/proprietary-evaluation.txt +50 -0
  14. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/repo_manager.py +36 -14
  15. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/template_engine.py +5 -3
  16. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/pyproject.toml +2 -2
  17. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_badges.py +3 -3
  18. git_repokit-0.9.11/tests/test_cli_examples.py +91 -0
  19. git_repokit-0.9.11/tests/test_docs_links.py +35 -0
  20. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_github_owner.py +1 -1
  21. git_repokit-0.9.11/tests/test_license_adopt.py +95 -0
  22. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_license_cli.py +19 -3
  23. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_licenses.py +3 -3
  24. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_packaging.py +32 -4
  25. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_readme_blocks.py +10 -10
  26. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_template_parity.py +3 -3
  27. git_repokit-0.9.10/PKG-INFO +0 -422
  28. git_repokit-0.9.10/README.md +0 -381
  29. git_repokit-0.9.10/git_repokit.egg-info/PKG-INFO +0 -422
  30. {git_repokit-0.9.10 → git_repokit-0.9.11}/LICENSE +0 -0
  31. {git_repokit-0.9.10 → git_repokit-0.9.11}/MANIFEST.in +0 -0
  32. {git_repokit-0.9.10 → git_repokit-0.9.11}/git_repokit.egg-info/dependency_links.txt +0 -0
  33. {git_repokit-0.9.10 → git_repokit-0.9.11}/git_repokit.egg-info/entry_points.txt +0 -0
  34. {git_repokit-0.9.10 → git_repokit-0.9.11}/git_repokit.egg-info/requires.txt +0 -0
  35. {git_repokit-0.9.10 → git_repokit-0.9.11}/git_repokit.egg-info/top_level.txt +0 -0
  36. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/__init__.py +0 -0
  37. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/__main__.py +0 -0
  38. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/__init__.py +0 -0
  39. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/__init__.py +0 -0
  40. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/analyzer.py +0 -0
  41. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/backend.py +0 -0
  42. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/cache.py +0 -0
  43. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/parsers.py +0 -0
  44. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/transports/__init__.py +0 -0
  45. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/transports/cli.py +0 -0
  46. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/transports/openai_compat.py +0 -0
  47. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/transports/prompt_file.py +0 -0
  48. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/_vendor/ailib/types.py +0 -0
  49. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/auth_integration.py +0 -0
  50. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/branch_utils.py +0 -0
  51. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/common_kit.py +0 -0
  52. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/defaults.py +0 -0
  53. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/directory_analyzer.py +0 -0
  54. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/directory_profiles.py +0 -0
  55. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/git_config.py +0 -0
  56. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/github_create.py +0 -0
  57. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/guardrails.py +0 -0
  58. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/history_cleaner.py +0 -0
  59. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/history_protection.py +0 -0
  60. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/hooks/pre-commit-guardrails +0 -0
  61. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/hooks/pre-commit-template +0 -0
  62. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/layers.py +0 -0
  63. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/0bsd.txt +0 -0
  64. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/agpl-3.0.txt +0 -0
  65. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/all-rights-reserved.txt +0 -0
  66. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/apache-2.0.txt +0 -0
  67. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/bsd-2-clause.txt +0 -0
  68. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/bsd-3-clause.txt +0 -0
  69. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/bsl-1.0.txt +0 -0
  70. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/cc-by-4.0.txt +0 -0
  71. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/cc-by-sa-4.0.txt +0 -0
  72. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/cc0-1.0.txt +0 -0
  73. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/epl-2.0.txt +0 -0
  74. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/gpl-2.0.txt +0 -0
  75. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/gpl-3.0.txt +0 -0
  76. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/isc.txt +0 -0
  77. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/lgpl-2.1.txt +0 -0
  78. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/lgpl-3.0.txt +0 -0
  79. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/mit.txt +0 -0
  80. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/mpl-2.0.txt +0 -0
  81. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/licenses/unlicense.txt +0 -0
  82. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/readme_blocks.py +0 -0
  83. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/remote_integration.py +0 -0
  84. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/ai/claude/CLAUDE-nested.md.template +0 -0
  85. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/ai/claude/CLAUDE.md.template +0 -0
  86. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/ai/claude/instructions/step1_context_rebuilder.md +0 -0
  87. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/ai/claude/instructions/step2_dev_workflow_process.md +0 -0
  88. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/ai/claude/instructions/step3_context_bridge.md +0 -0
  89. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/common/CHANGELOG.md.template +0 -0
  90. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/common/CONTRIBUTING.md.template +0 -0
  91. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/common/README.md.template +0 -0
  92. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/common/gitattributes.template +0 -0
  93. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/common/gitignore.template +0 -0
  94. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/FUNDING.yml.template +0 -0
  95. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/ROADMAP.md.template +0 -0
  96. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/dependabot.yml.template +0 -0
  97. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/one-offs-README.md.template +0 -0
  98. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/platform-support.md.template +0 -0
  99. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/pull_request_template.md.template +0 -0
  100. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/release-template.md.template +0 -0
  101. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/settings.json.template +0 -0
  102. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/extras/stale.yml.template +0 -0
  103. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/github/CODEOWNERS.template +0 -0
  104. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/github/ISSUE_TEMPLATE/bug-report.md.template +0 -0
  105. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/github/ISSUE_TEMPLATE/feature-request.md.template +0 -0
  106. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/github/issues/notes.md.template +0 -0
  107. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/github/issues/roadmap.md.template +0 -0
  108. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/hooks/pre-commit.template +0 -0
  109. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/any/claude-plugin/.claude-plugin/marketplace.json +0 -0
  110. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/.claude-plugin/plugin.json +0 -0
  111. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/README.md +0 -0
  112. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.github/workflows/ci-c-cpp.yml +0 -0
  113. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.repokit-common.toml.rkappend +0 -0
  114. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/launch.json +0 -0
  115. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/tasks.json +0 -0
  116. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakeLists.txt +0 -0
  117. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakePresets.json +0 -0
  118. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/cmake/GenerateStamp.cmake +0 -0
  119. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/src/main.cpp +0 -0
  120. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/tests/test_version.cpp +0 -0
  121. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/cmake-app/vcpkg.json +0 -0
  122. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/minimal/.vscode/launch.json +0 -0
  123. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/minimal/Makefile +0 -0
  124. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/minimal/build.bat +0 -0
  125. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/minimal/src/__RK_SNAKE__.c +0 -0
  126. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/launch.json +0 -0
  127. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/tasks.json +0 -0
  128. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.sln +0 -0
  129. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.vcxproj +0 -0
  130. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/c-cpp/msbuild/src/main.cpp +0 -0
  131. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.repokit-common.toml +0 -0
  132. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.vscode/launch.json +0 -0
  133. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/hooks.json +0 -0
  134. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/scripts/session-start.mjs +0 -0
  135. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/tests/manifest.test.js +0 -0
  136. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/node/.repokit-common.toml.rkappend +0 -0
  137. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/node/package.json +0 -0
  138. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/node-package/.github/workflows/release.yml +0 -0
  139. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/node-package/package.json +0 -0
  140. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/node-package/src/index.ts +0 -0
  141. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/node-package/tests/index.test.ts +0 -0
  142. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/script/.vscode/launch.json +0 -0
  143. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/script/__RK_PROJECT__.js +0 -0
  144. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/script/tests/version.test.js +0 -0
  145. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/ts/package.json +0 -0
  146. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/js-ts/ts/tsconfig.json +0 -0
  147. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/.github/workflows/ci-python.yml +0 -0
  148. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/.repokit-common.toml +0 -0
  149. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/.vscode/launch.json +0 -0
  150. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/VERSION +0 -0
  151. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/hooks.json +0 -0
  152. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/run-hook.mjs +0 -0
  153. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/session_start.py +0 -0
  154. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/tests/test_manifest.py +0 -0
  155. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/.github/workflows/release.yml +0 -0
  156. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/.vscode/launch.json +0 -0
  157. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__init__.py +0 -0
  158. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__main__.py +0 -0
  159. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/_version.py +0 -0
  160. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/cli.py +0 -0
  161. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/tests/conftest.py +0 -0
  162. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/pypi/tests/test_version.py +0 -0
  163. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/script/.github/workflows/ci-python.yml +0 -0
  164. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/script/.repokit-common.toml +0 -0
  165. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/script/.vscode/launch.json +0 -0
  166. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/script/VERSION +0 -0
  167. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/script/__RK_PROJECT__.py +0 -0
  168. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/script/tests/test_version.py +0 -0
  169. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/setuppy/requirements.txt +0 -0
  170. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/archetypes/python/setuppy/setup.py +0 -0
  171. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/c-cpp/.gitignore.rkappend +0 -0
  172. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/c-cpp/.repokit-common.toml +0 -0
  173. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/c-cpp/include/__RK_SNAKE__/version.h +0 -0
  174. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/c-cpp/src/app.rc +0 -0
  175. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/js-ts/.editorconfig +0 -0
  176. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/js-ts/.github/workflows/ci-js-ts.yml +0 -0
  177. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/js-ts/.gitignore.rkappend +0 -0
  178. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/js-ts/.repokit-common.toml +0 -0
  179. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/js-ts/.vscode/launch.json +0 -0
  180. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/js-ts/VERSION +0 -0
  181. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/python/.github/workflows/ci-python.yml +0 -0
  182. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/python/.gitignore.rkappend +0 -0
  183. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/languages/python/.vscode/launch.json +0 -0
  184. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/layers/manifest.toml +0 -0
  185. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/CLAUDE.md +0 -0
  186. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/claude/_maps/MOC-project.md +0 -0
  187. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/claude/_oracle/backlinks.md +0 -0
  188. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/claude/_oracle/concepts.md +0 -0
  189. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/claude/_oracle/manifest.md +0 -0
  190. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/claude/_todo/ACTIVE-WORK.md +0 -0
  191. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/templates/vault/claude/_todo/OPEN-LOOPS.md +0 -0
  192. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/utils.py +0 -0
  193. {git_repokit-0.9.10 → git_repokit-0.9.11}/repokit/vault.py +0 -0
  194. {git_repokit-0.9.10 → git_repokit-0.9.11}/setup.cfg +0 -0
  195. {git_repokit-0.9.10 → git_repokit-0.9.11}/setup.py +0 -0
  196. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_branch_strategies.py +0 -0
  197. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_cli_integration.py +0 -0
  198. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_core_functionality.py +0 -0
  199. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_deployment_scenarios.py +0 -0
  200. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_directory_profiles.py +0 -0
  201. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_extras_cli.py +0 -0
  202. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_github_create.py +0 -0
  203. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_github_integration.py +0 -0
  204. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_github_setup.py +0 -0
  205. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_guardrails.py +0 -0
  206. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_hermetic.py +0 -0
  207. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_hook_encoding.py +0 -0
  208. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_hook_patterns.py +0 -0
  209. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layer_action_pins.py +0 -0
  210. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers.py +0 -0
  211. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers_c_cpp.py +0 -0
  212. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers_claude_plugin.py +0 -0
  213. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers_cli.py +0 -0
  214. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers_compositions.py +0 -0
  215. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers_js_ts.py +0 -0
  216. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_layers_vscode.py +0 -0
  217. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_legacy_smoke.py +0 -0
  218. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_new_default.py +0 -0
  219. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_run_tests_driver.py +0 -0
  220. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_utils.py +0 -0
  221. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_vault_bootstrap.py +0 -0
  222. {git_repokit-0.9.10 → git_repokit-0.9.11}/tests/test_vendored_ailib.py +0 -0
@@ -0,0 +1,331 @@
1
+ Metadata-Version: 2.4
2
+ Name: git-repokit
3
+ Version: 0.9.11
4
+ Summary: Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault
5
+ Author: Dustin Darcy
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/DazzleTools/git-repokit
8
+ Project-URL: Repository, https://github.com/DazzleTools/git-repokit
9
+ Project-URL: Issues, https://github.com/DazzleTools/git-repokit/issues
10
+ Project-URL: Changelog, https://github.com/DazzleTools/git-repokit/blob/main/CHANGELOG.md
11
+ Keywords: git,repository,scaffolding,template,project-generator,github
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Version Control :: Git
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: requests>=2.25.0
26
+ Requires-Dist: tomli>=1.1; python_version < "3.11"
27
+ Provides-Extra: test
28
+ Requires-Dist: pytest>=7.0.0; extra == "test"
29
+ Requires-Dist: python-dotenv>=1.0.0; extra == "test"
30
+ Requires-Dist: pyyaml>=6.0; extra == "test"
31
+ Requires-Dist: build>=1.0; extra == "test"
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
34
+ Requires-Dist: python-dotenv>=1.0.0; extra == "dev"
35
+ Requires-Dist: pyyaml>=6.0; extra == "dev"
36
+ Requires-Dist: build>=1.0; extra == "dev"
37
+ Requires-Dist: black>=23.0.0; extra == "dev"
38
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
39
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
40
+ Dynamic: license-file
41
+
42
+ # git-repokit
43
+
44
+ [![PyPI](https://img.shields.io/pypi/v/git-repokit?color=green)](https://pypi.org/project/git-repokit/)
45
+ [![Release Date](https://img.shields.io/github/release-date/DazzleTools/git-repokit?color=green)](https://github.com/DazzleTools/git-repokit/releases)
46
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/git-repokit?period=total&units=international_system&left_color=black&right_color=green&left_text=downloads)](https://pypistats.org/packages/git-repokit)
47
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
48
+ [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
49
+ [![GitHub Discussions](https://img.shields.io/github/discussions/DazzleTools/git-repokit)](https://github.com/DazzleTools/git-repokit/discussions)
50
+ [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)](docs/platform-support.md)
51
+
52
+ **One `repokit` command creates a project that is ready to work in (including the structure, the code for its language, the tooling and hooks, a private notes vault, a license, and the repository on GitHub with its labels and first issues).**
53
+
54
+ `repokit create` replaces the hand-run route of copying a template repository, running its setup, then setting up GitHub and the notes by hand. Every piece is optional and configurable, so your own house style lives in one config file, and a create becomes one short command.
55
+
56
+ ## What a project gets
57
+
58
+ A full create (the [Quick Start](#-quick-start) below) produces:
59
+
60
+ - **The structure:** README, CONTRIBUTING, CHANGELOG, LICENSE, `.gitignore`, `.gitattributes`, `docs/`, `tests/`, `scripts/`, and, if you ask for them, ROADMAP, a funding file, Dependabot, a stale-issue policy and PR and release templates.
61
+ - **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, and more. Each comes with tests, a CI workflow and a VS Code debug configuration that work from the first commit. See [Languages and layers](docs/Languages-and-Layers.md).
62
+ - **A README that names the project:** the real GitHub owner, badges for the release, the Python or Node minimum and the license, install and test commands for the preset, and a License section at the end.
63
+ - **The tooling:** [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) vendored at `scripts/repokit-common/`, with git hooks that keep version numbers in step, keep private files out of public commits, and run the tests before a push.
64
+ - **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents and postmortems. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
65
+ - **The repository on GitHub** (with `--github`): created with your `gh` login and pushed. It gets the standard labels, Roadmap and Quick Notes as issues #1 and #2 (pinned), discussions and topics. See [GitHub setup](docs/GitHub-Setup.md).
66
+
67
+ ## 📦 Installation
68
+
69
+ Python 3.10 or newer. The command is `repokit`.
70
+
71
+ ```bash
72
+ pip install git-repokit
73
+ # or the same tool under its DazzleTools alias
74
+ pip install dazzle-git-repokit
75
+ ```
76
+
77
+ `--github` also needs the [GitHub CLI](https://cli.github.com/), logged in once with `gh auth login`.
78
+
79
+ From source:
80
+
81
+ ```bash
82
+ git clone https://github.com/DazzleTools/git-repokit.git
83
+ cd git-repokit
84
+ pip install -e ".[dev]" # with the test and lint tools
85
+ ```
86
+
87
+ ## 🎯 Quick Start
88
+
89
+ ### A full project, on GitHub
90
+
91
+ This is the most common create: a Python package with everything turned on, published to GitHub with its labels, first issues and topics.
92
+
93
+ ```bash
94
+ repokit create my-tool --language python --license gpl-3.0-or-later \
95
+ --description "What my-tool does, in one sentence" \
96
+ --extras all \
97
+ --github --github-setup labels,issues,pin,discussions,topics \
98
+ --topics cli,python
99
+ ```
100
+
101
+ You get a private GitHub repository under your `gh` login (add `--public` for a public one, `--org MyOrg` for an organization), with `main` pushed, the labels made, and issues #1 (Roadmap) and #2 (Quick Notes) pinned. Locally, `my-tool/` holds the project and its vault in `my-tool/private/`. [GitHub setup](docs/GitHub-Setup.md) lists the few steps that are still done by hand afterwards.
102
+
103
+ ### The same create from your house config
104
+
105
+ Put the choices you make every time in `~/.repokit/config.json`:
106
+
107
+ ```json
108
+ {
109
+ "license": "gpl-3.0-or-later",
110
+ "license_private": "all-rights-reserved",
111
+ "extras": ["all"],
112
+ "github_setup": ["labels", "issues", "pin", "discussions", "topics"],
113
+ "github": {"username": "your-login"}
114
+ }
115
+ ```
116
+
117
+ Then the full create is:
118
+
119
+ ```bash
120
+ repokit create my-tool --language python --github \
121
+ --description "What my-tool does, in one sentence" --topics cli,python
122
+ ```
123
+
124
+ Every key is listed in [Configuration](docs/Configuration.md).
125
+
126
+ ### A multi-branch project
127
+
128
+ The private-branch model keeps all your working history on a local-only `private` branch, and moves finished work to public branches that are checked out beside it:
129
+
130
+ ```bash
131
+ repokit create my-app --branch-strategy standard --language python --license mit --github
132
+ ```
133
+
134
+ ```
135
+ my-app/
136
+ local/ the repository, on the private branch: work here
137
+ dev/ the dev branch
138
+ github/ the main branch
139
+ ```
140
+
141
+ Then the day-to-day loop is:
142
+
143
+ ```bash
144
+ cd my-app/local # work and commit on private, notes and all
145
+ git add -A && git commit -m "Add the parser"
146
+
147
+ cd ../dev # bring the work to dev, without the private files
148
+ repokit safe-merge private --preview
149
+ repokit safe-merge private
150
+ git commit -m "Add the parser"
151
+
152
+ cd ../github # and on to main when it is ready
153
+ repokit safe-merge dev
154
+ git commit -m "Release the parser"
155
+ git push
156
+ ```
157
+
158
+ `safe-merge` leaves out the private content (`private/`, `CLAUDE.md`, `revisions/`, ...), and the hooks refuse it on a public branch if it ever gets staged. `--github` pushes only the public branches. Other layouts: `simple` (private, dev, main), `gitflow`, `github-flow`, and your own with `--branches` and `--worktrees`; see [Branch strategies](#branch-strategies) below.
159
+
160
+ > **Known issue in 0.9.11:** this create prints `fatal: ambiguous argument 'private'` once per public branch, and `dev/` and `github/` start with only the README and `.github/`. The loop above still brings the work across. The fix is tracked in [#16](https://github.com/DazzleTools/git-repokit/issues/16).
161
+
162
+ ### Other common creates
163
+
164
+ ```bash
165
+ # Local only: no GitHub, nothing pushed
166
+ repokit create my-tool --language python --license mit
167
+
168
+ # A Claude Code plugin (hooks in JavaScript; add --language python for Python hooks)
169
+ repokit create my-plugin --with claude-plugin --license apache-2.0 --github
170
+
171
+ # A C/C++ app with CMake, or a Visual Studio solution
172
+ repokit create my-app --language c-cpp --license bsd-3-clause
173
+ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
174
+
175
+ # A TypeScript npm package
176
+ repokit create my-lib --language js-ts --license mpl-2.0
177
+
178
+ # A one-file Python script, no packaging, given away to the public domain
179
+ repokit create my-script --with python/script --license unlicense
180
+
181
+ # Several pieces in one --with, comma-separated; repokit puts them in order
182
+ repokit create my-plugin --with claude-plugin,ts --license mit # a Claude Code plugin in TypeScript
183
+ repokit create my-lib --with node,ts,node-package --license isc # the same layers as --with js-ts/node-package
184
+ repokit create my-app --with c-cpp/cmake-app,python/script --license mit # two languages, a preset for each
185
+
186
+ # A private project: all rights reserved, evaluation-only, your own terms, or no LICENSE at all
187
+ repokit create my-work --language python --license all-rights-reserved
188
+ repokit create my-work --language python --license proprietary-evaluation
189
+ repokit create my-work --language python --license file=../terms/client-terms.txt
190
+ repokit create my-sketch --license none
191
+
192
+ # What every language offers, and the license catalogue
193
+ repokit list
194
+ ```
195
+
196
+ The catalogue has every license GitHub and GitLab offer when you create a repository, beyond the ones above: `lgpl-3.0`, `agpl-3.0`, `epl-2.0`, `0bsd`, `cc0-1.0` and more, with the texts from [choosealicense.com](https://choosealicense.com/licenses/), which also helps you pick one. `repokit list` prints every id, ready to copy. Two more are for software you are not giving away: `all-rights-reserved`, and `proprietary-evaluation`, which allows evaluation and non-commercial use until you revoke it, forbids everything else, and optionally provides an email for permission requests.
197
+
198
+ ## Choosing the code type
199
+
200
+ `--language` picks the language: `python`, `c-cpp`, `js-ts`, or `generic` (the default, which adds no code). Each language has a default preset, and `--with` picks another one, such as `python/claude-plugin` or `c-cpp/msbuild`. `--with` also takes a comma-separated list of presets and single layers (`--with claude-plugin,ts`). A name can be bare when only one language has it, and is qualified when two do: `script` is refused as ambiguous, `python/script` is not. `repokit list` shows every preset and layer, including the planned ones.
201
+
202
+ | Language | Default preset | Other presets |
203
+ |---|---|---|
204
+ | `python` | `python/pypi`: a package with `pyproject.toml`, a CLI, tests, and publish-on-release | `python/script`, `python/setuppy`, `python/claude-plugin` |
205
+ | `c-cpp` | `c-cpp/cmake-app`: CMake presets, vcpkg, CTest, a version header | `c-cpp/msbuild`, `c-cpp/minimal` |
206
+ | `js-ts` | `js-ts/node-package`: a TypeScript npm package with `node:test` | `js-ts/script`, `js-ts/claude-plugin` |
207
+
208
+ Several languages stack: `--language python,c-cpp`. The details, and how to add a language, are in [Languages and layers](docs/Languages-and-Layers.md).
209
+
210
+ ## The license
211
+
212
+ A license is required. `--license <id>` writes `LICENSE` from a catalogue of the licenses GitHub and GitLab offer (`mit`, `apache-2.0`, `gpl-3.0`, `gpl-3.0-or-later`, `bsd-3-clause`, ...), plus `all-rights-reserved` and `proprietary-evaluation` for a private project. `--license file=<path>` copies a text as it is, and `--license none` writes no file. The holder and year come from your git identity and the clock, and the license also populates in `pyproject.toml` or the plugin manifest. With `license` set in the config, you can leave the flag off.
213
+
214
+ ## Branch strategies
215
+
216
+ repokit has two ways to keep private work private:
217
+
218
+ - **`main-only` (the default):** the project folder is the repository, on `main`, and `private/` is its own nested git repository that the project ignores. One branch, no merging rules to learn.
219
+ - **The private-branch model:** your working history lives on a local-only `private` branch in `<name>/local/`, and the public branches are git worktrees in sibling folders. You move finished work across with `repokit safe-merge`, which leaves the private content behind. This is the model repokit was first built for, and it suits projects with several release stages or several people.
220
+
221
+ | `--branch-strategy` | Public branches | Checked out in folders | Flow |
222
+ |---|---|---|---|
223
+ | `main-only` | main | the project folder itself | commit on main |
224
+ | `standard` | dev, staging, test, live, main | `dev/`, `github/` (main) | private -> dev -> test / staging -> main -> live |
225
+ | `simple` | dev, main | `github/` (main) | private -> dev -> main |
226
+ | `gitflow` | develop, release, hotfix, main | `develop/`, `github/` (main) | private -> develop -> release -> main, with hotfixes |
227
+ | `github-flow` | main | `github/` (main) | private -> main |
228
+ | `minimal` | main | none (switch branches in `local/`) | private -> main |
229
+
230
+ ```bash
231
+ # A GitFlow project on GitHub
232
+ repokit create my-lib --branch-strategy gitflow --language python --license mit --github
233
+
234
+ # Your own branches, with worktrees for two of them (name a private-branch
235
+ # strategy too, or the project gets no private branch)
236
+ repokit create my-app --branch-strategy simple --branches main,develop,qa,production \
237
+ --worktrees main,develop --license mit
238
+ ```
239
+
240
+ The guards for the private-branch model: `repokit check-guardrails` shows what is protected, `repokit setup-guardrails` installs the hooks in a project repokit did not make, and `repokit safe-merge-dev` merges between development branches while keeping their history out of the public ones. The [Branch strategies](docs/Branch-Strategies.md) guide covers each layout, and the [Workflow guide](docs/Workflow-Guide.md) covers the day-to-day work.
241
+
242
+ ## Existing projects
243
+
244
+ ```bash
245
+ repokit analyze ./my-project # what repokit would do, changing nothing
246
+ repokit adopt ./my-project --dry-run # preview adopting a git repository in place
247
+ repokit adopt ./my-project --language python --migration-strategy safe --backup
248
+ repokit migrate ./my-folder --dry-run # add repokit's folders and files to a folder
249
+ ```
250
+
251
+ `adopt` fills in what the project lacks. It keeps the project's own license file (`LICENSE`, `LICENSE.md`, `COPYING`, ...); with none, it writes the license your config names, or adopts the project without one and says so. `--license` is only for choosing one (it replaces the project's own file). It keeps the repository's history and sets up the private-branch layout (`--branch-strategy standard` unless you name another): your folder stays on the `private` branch, with `main` and `dev` checked out in sibling folders. The `safe` strategy keeps every existing file and adds what is missing beside it. `repokit setup-guardrails` adds the private-content hooks to a project repokit did not create. The [Adoption guide](docs/Adoption-Guide.md) and the [Migration guide](docs/Migration-Guide.md) walk through each case.
252
+
253
+ ## All commands
254
+
255
+ | Command | What it does |
256
+ |---|---|
257
+ | `create` | Create a new project |
258
+ | `list` | List the languages, presets and layers |
259
+ | `analyze` | Report what repokit would do with an existing folder |
260
+ | `adopt` | Add repokit's structure to an existing git repository, in place |
261
+ | `migrate` | Add repokit's standard folders, files and hooks to an existing folder |
262
+ | `publish` | Publish an existing repository to GitHub or GitLab |
263
+ | `bootstrap` | Write a script that sets repokit up |
264
+ | `init-config` | Write a `.repokit.json` |
265
+ | `store-credentials` | Store a GitHub or GitLab token for `--publish-to` |
266
+ | `setup-guardrails`, `check-guardrails` | Install, or check, the private-content protection |
267
+ | `safe-merge`, `safe-merge-dev` | Merge branches without carrying private content across |
268
+ | `clean-history`, `analyze-history` | Find, or remove, sensitive data in a repository's history |
269
+ | `manage-gitkeep` | Add or remove `.gitkeep` files |
270
+ | `list-templates` | List the template files |
271
+
272
+ `repokit <command> --help` shows each command's options and examples.
273
+
274
+ ## 🧪 Testing
275
+
276
+ ```bash
277
+ python -m pytest -q # the full suite, about ten minutes
278
+ python -m pytest -q -m unit # the unit tests, a few seconds
279
+ ```
280
+
281
+ Every run is isolated from your git config, home directory and tokens. A `git push` runs the unit tests through the vendored pre-push hook; CI runs the unit tests on Python 3.10 to 3.13, on Linux and Windows. [tests/README.md](tests/README.md) covers the test classes and the live GitHub tests.
282
+
283
+ ## 📚 Documentation
284
+
285
+ - [Configuration](docs/Configuration.md): every config key, and the flag that matches it
286
+ - [Languages and layers](docs/Languages-and-Layers.md): presets, `--with`, and adding a language
287
+ - [GitHub setup](docs/GitHub-Setup.md): `--github`, `--github-setup`, and what GitHub has no API for
288
+ - [The vault](docs/The-Vault.md): `private/`, its first files, and the sessions that use it
289
+ - [Branch strategies](docs/Branch-Strategies.md): main-only and the private-branch model
290
+ - [Workflow guide](docs/Workflow-Guide.md): day-to-day work under the private-branch strategies
291
+ - [Deployment demo](docs/Deployment-Demo.md): worked examples, from a new project to GitHub
292
+ - [Adoption guide](docs/Adoption-Guide.md) and [Migration guide](docs/Migration-Guide.md): existing projects
293
+ - [Recipes and how-tos](docs/Recipes-And-Howtos.md): commands for common cases
294
+ - [Auth guide](docs/Auth-Guide.md): the `gh` login, and tokens for `--publish-to`
295
+ - [Platform support](docs/platform-support.md): what runs where, and what each platform needs
296
+ - [Why repokit exists](docs/Why-RepoKit-Exists.md)
297
+
298
+ The [documentation guide](docs/README.md) suggests a reading order.
299
+
300
+ ## Contributing
301
+
302
+ Contributions are welcome! See the [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
303
+
304
+ Like the project?
305
+
306
+ [!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/djdarcy)
307
+
308
+ ## Related Projects
309
+
310
+ - [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) - The shared scripts and git hooks every project gets at `scripts/repokit-common/`: version sync, private-content checks, tests before a push, `gh_issue_full.py`. repokit vendors it into each project it creates, and into itself
311
+ - [git-repokit-template](https://github.com/DazzleTools/git-repokit-template) - The template repository repokit grew from: copy it, run its setup, then finish GitHub and the notes by hand. `repokit create --language python` reproduces its project tree, and a regression test keeps the two in step
312
+ - [dazzlecmd](https://github.com/DazzleTools/dazzlecmd) - The DazzleTools CLI (`dz`). Its `dz private-init` first made `private/` its own repository; repokit's vault is a port of it
313
+ - [github-traffic-tracker](https://github.com/djdarcy/github-traffic-tracker) - Traffic history beyond GitHub's 14 days (`ghtraf`). `--github-setup traffic` prints its setup commands, and the `installs` and `views` badges read its counts
314
+
315
+ ## Acknowledgments
316
+
317
+ - Inspired by modern DevOps practices and GitOps workflows
318
+ - https://nvie.com/posts/a-successful-git-branching-model/
319
+ - https://trunkbaseddevelopment.com/
320
+ - https://docs.github.com/en/get-started/quickstart/github-flow
321
+ - https://martinfowler.com/articles/continuousIntegration.html
322
+ - https://www.atlassian.com/continuous-delivery
323
+ - https://www.perforce.com/blog/vcs/best-branching-strategies-high-velocity-development
324
+ - Built for developers who value consistency and automation
325
+ - Special thanks to the open-source community writ large
326
+
327
+ ## License
328
+
329
+ git-repokit, Copyright (C) 2025-2026 Dustin Darcy
330
+
331
+ Licensed under the MIT License (MIT) -- see [LICENSE](LICENSE).
@@ -0,0 +1,290 @@
1
+ # git-repokit
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/git-repokit?color=green)](https://pypi.org/project/git-repokit/)
4
+ [![Release Date](https://img.shields.io/github/release-date/DazzleTools/git-repokit?color=green)](https://github.com/DazzleTools/git-repokit/releases)
5
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/git-repokit?period=total&units=international_system&left_color=black&right_color=green&left_text=downloads)](https://pypistats.org/packages/git-repokit)
6
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+ [![GitHub Discussions](https://img.shields.io/github/discussions/DazzleTools/git-repokit)](https://github.com/DazzleTools/git-repokit/discussions)
9
+ [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg)](docs/platform-support.md)
10
+
11
+ **One `repokit` command creates a project that is ready to work in (including the structure, the code for its language, the tooling and hooks, a private notes vault, a license, and the repository on GitHub with its labels and first issues).**
12
+
13
+ `repokit create` replaces the hand-run route of copying a template repository, running its setup, then setting up GitHub and the notes by hand. Every piece is optional and configurable, so your own house style lives in one config file, and a create becomes one short command.
14
+
15
+ ## What a project gets
16
+
17
+ A full create (the [Quick Start](#-quick-start) below) produces:
18
+
19
+ - **The structure:** README, CONTRIBUTING, CHANGELOG, LICENSE, `.gitignore`, `.gitattributes`, `docs/`, `tests/`, `scripts/`, and, if you ask for them, ROADMAP, a funding file, Dependabot, a stale-issue policy and PR and release templates.
20
+ - **The code for its language:** a Python package with `pyproject.toml` and a CLI, a CMake or Visual Studio C/C++ project, a TypeScript npm package, a Claude Code plugin, and more. Each comes with tests, a CI workflow and a VS Code debug configuration that work from the first commit. See [Languages and layers](docs/Languages-and-Layers.md).
21
+ - **A README that names the project:** the real GitHub owner, badges for the release, the Python or Node minimum and the license, install and test commands for the preset, and a License section at the end.
22
+ - **The tooling:** [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) vendored at `scripts/repokit-common/`, with git hooks that keep version numbers in step, keep private files out of public commits, and run the tests before a push.
23
+ - **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents and postmortems. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
24
+ - **The repository on GitHub** (with `--github`): created with your `gh` login and pushed. It gets the standard labels, Roadmap and Quick Notes as issues #1 and #2 (pinned), discussions and topics. See [GitHub setup](docs/GitHub-Setup.md).
25
+
26
+ ## 📦 Installation
27
+
28
+ Python 3.10 or newer. The command is `repokit`.
29
+
30
+ ```bash
31
+ pip install git-repokit
32
+ # or the same tool under its DazzleTools alias
33
+ pip install dazzle-git-repokit
34
+ ```
35
+
36
+ `--github` also needs the [GitHub CLI](https://cli.github.com/), logged in once with `gh auth login`.
37
+
38
+ From source:
39
+
40
+ ```bash
41
+ git clone https://github.com/DazzleTools/git-repokit.git
42
+ cd git-repokit
43
+ pip install -e ".[dev]" # with the test and lint tools
44
+ ```
45
+
46
+ ## 🎯 Quick Start
47
+
48
+ ### A full project, on GitHub
49
+
50
+ This is the most common create: a Python package with everything turned on, published to GitHub with its labels, first issues and topics.
51
+
52
+ ```bash
53
+ repokit create my-tool --language python --license gpl-3.0-or-later \
54
+ --description "What my-tool does, in one sentence" \
55
+ --extras all \
56
+ --github --github-setup labels,issues,pin,discussions,topics \
57
+ --topics cli,python
58
+ ```
59
+
60
+ You get a private GitHub repository under your `gh` login (add `--public` for a public one, `--org MyOrg` for an organization), with `main` pushed, the labels made, and issues #1 (Roadmap) and #2 (Quick Notes) pinned. Locally, `my-tool/` holds the project and its vault in `my-tool/private/`. [GitHub setup](docs/GitHub-Setup.md) lists the few steps that are still done by hand afterwards.
61
+
62
+ ### The same create from your house config
63
+
64
+ Put the choices you make every time in `~/.repokit/config.json`:
65
+
66
+ ```json
67
+ {
68
+ "license": "gpl-3.0-or-later",
69
+ "license_private": "all-rights-reserved",
70
+ "extras": ["all"],
71
+ "github_setup": ["labels", "issues", "pin", "discussions", "topics"],
72
+ "github": {"username": "your-login"}
73
+ }
74
+ ```
75
+
76
+ Then the full create is:
77
+
78
+ ```bash
79
+ repokit create my-tool --language python --github \
80
+ --description "What my-tool does, in one sentence" --topics cli,python
81
+ ```
82
+
83
+ Every key is listed in [Configuration](docs/Configuration.md).
84
+
85
+ ### A multi-branch project
86
+
87
+ The private-branch model keeps all your working history on a local-only `private` branch, and moves finished work to public branches that are checked out beside it:
88
+
89
+ ```bash
90
+ repokit create my-app --branch-strategy standard --language python --license mit --github
91
+ ```
92
+
93
+ ```
94
+ my-app/
95
+ local/ the repository, on the private branch: work here
96
+ dev/ the dev branch
97
+ github/ the main branch
98
+ ```
99
+
100
+ Then the day-to-day loop is:
101
+
102
+ ```bash
103
+ cd my-app/local # work and commit on private, notes and all
104
+ git add -A && git commit -m "Add the parser"
105
+
106
+ cd ../dev # bring the work to dev, without the private files
107
+ repokit safe-merge private --preview
108
+ repokit safe-merge private
109
+ git commit -m "Add the parser"
110
+
111
+ cd ../github # and on to main when it is ready
112
+ repokit safe-merge dev
113
+ git commit -m "Release the parser"
114
+ git push
115
+ ```
116
+
117
+ `safe-merge` leaves out the private content (`private/`, `CLAUDE.md`, `revisions/`, ...), and the hooks refuse it on a public branch if it ever gets staged. `--github` pushes only the public branches. Other layouts: `simple` (private, dev, main), `gitflow`, `github-flow`, and your own with `--branches` and `--worktrees`; see [Branch strategies](#branch-strategies) below.
118
+
119
+ > **Known issue in 0.9.11:** this create prints `fatal: ambiguous argument 'private'` once per public branch, and `dev/` and `github/` start with only the README and `.github/`. The loop above still brings the work across. The fix is tracked in [#16](https://github.com/DazzleTools/git-repokit/issues/16).
120
+
121
+ ### Other common creates
122
+
123
+ ```bash
124
+ # Local only: no GitHub, nothing pushed
125
+ repokit create my-tool --language python --license mit
126
+
127
+ # A Claude Code plugin (hooks in JavaScript; add --language python for Python hooks)
128
+ repokit create my-plugin --with claude-plugin --license apache-2.0 --github
129
+
130
+ # A C/C++ app with CMake, or a Visual Studio solution
131
+ repokit create my-app --language c-cpp --license bsd-3-clause
132
+ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
133
+
134
+ # A TypeScript npm package
135
+ repokit create my-lib --language js-ts --license mpl-2.0
136
+
137
+ # A one-file Python script, no packaging, given away to the public domain
138
+ repokit create my-script --with python/script --license unlicense
139
+
140
+ # Several pieces in one --with, comma-separated; repokit puts them in order
141
+ repokit create my-plugin --with claude-plugin,ts --license mit # a Claude Code plugin in TypeScript
142
+ repokit create my-lib --with node,ts,node-package --license isc # the same layers as --with js-ts/node-package
143
+ repokit create my-app --with c-cpp/cmake-app,python/script --license mit # two languages, a preset for each
144
+
145
+ # A private project: all rights reserved, evaluation-only, your own terms, or no LICENSE at all
146
+ repokit create my-work --language python --license all-rights-reserved
147
+ repokit create my-work --language python --license proprietary-evaluation
148
+ repokit create my-work --language python --license file=../terms/client-terms.txt
149
+ repokit create my-sketch --license none
150
+
151
+ # What every language offers, and the license catalogue
152
+ repokit list
153
+ ```
154
+
155
+ The catalogue has every license GitHub and GitLab offer when you create a repository, beyond the ones above: `lgpl-3.0`, `agpl-3.0`, `epl-2.0`, `0bsd`, `cc0-1.0` and more, with the texts from [choosealicense.com](https://choosealicense.com/licenses/), which also helps you pick one. `repokit list` prints every id, ready to copy. Two more are for software you are not giving away: `all-rights-reserved`, and `proprietary-evaluation`, which allows evaluation and non-commercial use until you revoke it, forbids everything else, and optionally provides an email for permission requests.
156
+
157
+ ## Choosing the code type
158
+
159
+ `--language` picks the language: `python`, `c-cpp`, `js-ts`, or `generic` (the default, which adds no code). Each language has a default preset, and `--with` picks another one, such as `python/claude-plugin` or `c-cpp/msbuild`. `--with` also takes a comma-separated list of presets and single layers (`--with claude-plugin,ts`). A name can be bare when only one language has it, and is qualified when two do: `script` is refused as ambiguous, `python/script` is not. `repokit list` shows every preset and layer, including the planned ones.
160
+
161
+ | Language | Default preset | Other presets |
162
+ |---|---|---|
163
+ | `python` | `python/pypi`: a package with `pyproject.toml`, a CLI, tests, and publish-on-release | `python/script`, `python/setuppy`, `python/claude-plugin` |
164
+ | `c-cpp` | `c-cpp/cmake-app`: CMake presets, vcpkg, CTest, a version header | `c-cpp/msbuild`, `c-cpp/minimal` |
165
+ | `js-ts` | `js-ts/node-package`: a TypeScript npm package with `node:test` | `js-ts/script`, `js-ts/claude-plugin` |
166
+
167
+ Several languages stack: `--language python,c-cpp`. The details, and how to add a language, are in [Languages and layers](docs/Languages-and-Layers.md).
168
+
169
+ ## The license
170
+
171
+ A license is required. `--license <id>` writes `LICENSE` from a catalogue of the licenses GitHub and GitLab offer (`mit`, `apache-2.0`, `gpl-3.0`, `gpl-3.0-or-later`, `bsd-3-clause`, ...), plus `all-rights-reserved` and `proprietary-evaluation` for a private project. `--license file=<path>` copies a text as it is, and `--license none` writes no file. The holder and year come from your git identity and the clock, and the license also populates in `pyproject.toml` or the plugin manifest. With `license` set in the config, you can leave the flag off.
172
+
173
+ ## Branch strategies
174
+
175
+ repokit has two ways to keep private work private:
176
+
177
+ - **`main-only` (the default):** the project folder is the repository, on `main`, and `private/` is its own nested git repository that the project ignores. One branch, no merging rules to learn.
178
+ - **The private-branch model:** your working history lives on a local-only `private` branch in `<name>/local/`, and the public branches are git worktrees in sibling folders. You move finished work across with `repokit safe-merge`, which leaves the private content behind. This is the model repokit was first built for, and it suits projects with several release stages or several people.
179
+
180
+ | `--branch-strategy` | Public branches | Checked out in folders | Flow |
181
+ |---|---|---|---|
182
+ | `main-only` | main | the project folder itself | commit on main |
183
+ | `standard` | dev, staging, test, live, main | `dev/`, `github/` (main) | private -> dev -> test / staging -> main -> live |
184
+ | `simple` | dev, main | `github/` (main) | private -> dev -> main |
185
+ | `gitflow` | develop, release, hotfix, main | `develop/`, `github/` (main) | private -> develop -> release -> main, with hotfixes |
186
+ | `github-flow` | main | `github/` (main) | private -> main |
187
+ | `minimal` | main | none (switch branches in `local/`) | private -> main |
188
+
189
+ ```bash
190
+ # A GitFlow project on GitHub
191
+ repokit create my-lib --branch-strategy gitflow --language python --license mit --github
192
+
193
+ # Your own branches, with worktrees for two of them (name a private-branch
194
+ # strategy too, or the project gets no private branch)
195
+ repokit create my-app --branch-strategy simple --branches main,develop,qa,production \
196
+ --worktrees main,develop --license mit
197
+ ```
198
+
199
+ The guards for the private-branch model: `repokit check-guardrails` shows what is protected, `repokit setup-guardrails` installs the hooks in a project repokit did not make, and `repokit safe-merge-dev` merges between development branches while keeping their history out of the public ones. The [Branch strategies](docs/Branch-Strategies.md) guide covers each layout, and the [Workflow guide](docs/Workflow-Guide.md) covers the day-to-day work.
200
+
201
+ ## Existing projects
202
+
203
+ ```bash
204
+ repokit analyze ./my-project # what repokit would do, changing nothing
205
+ repokit adopt ./my-project --dry-run # preview adopting a git repository in place
206
+ repokit adopt ./my-project --language python --migration-strategy safe --backup
207
+ repokit migrate ./my-folder --dry-run # add repokit's folders and files to a folder
208
+ ```
209
+
210
+ `adopt` fills in what the project lacks. It keeps the project's own license file (`LICENSE`, `LICENSE.md`, `COPYING`, ...); with none, it writes the license your config names, or adopts the project without one and says so. `--license` is only for choosing one (it replaces the project's own file). It keeps the repository's history and sets up the private-branch layout (`--branch-strategy standard` unless you name another): your folder stays on the `private` branch, with `main` and `dev` checked out in sibling folders. The `safe` strategy keeps every existing file and adds what is missing beside it. `repokit setup-guardrails` adds the private-content hooks to a project repokit did not create. The [Adoption guide](docs/Adoption-Guide.md) and the [Migration guide](docs/Migration-Guide.md) walk through each case.
211
+
212
+ ## All commands
213
+
214
+ | Command | What it does |
215
+ |---|---|
216
+ | `create` | Create a new project |
217
+ | `list` | List the languages, presets and layers |
218
+ | `analyze` | Report what repokit would do with an existing folder |
219
+ | `adopt` | Add repokit's structure to an existing git repository, in place |
220
+ | `migrate` | Add repokit's standard folders, files and hooks to an existing folder |
221
+ | `publish` | Publish an existing repository to GitHub or GitLab |
222
+ | `bootstrap` | Write a script that sets repokit up |
223
+ | `init-config` | Write a `.repokit.json` |
224
+ | `store-credentials` | Store a GitHub or GitLab token for `--publish-to` |
225
+ | `setup-guardrails`, `check-guardrails` | Install, or check, the private-content protection |
226
+ | `safe-merge`, `safe-merge-dev` | Merge branches without carrying private content across |
227
+ | `clean-history`, `analyze-history` | Find, or remove, sensitive data in a repository's history |
228
+ | `manage-gitkeep` | Add or remove `.gitkeep` files |
229
+ | `list-templates` | List the template files |
230
+
231
+ `repokit <command> --help` shows each command's options and examples.
232
+
233
+ ## 🧪 Testing
234
+
235
+ ```bash
236
+ python -m pytest -q # the full suite, about ten minutes
237
+ python -m pytest -q -m unit # the unit tests, a few seconds
238
+ ```
239
+
240
+ Every run is isolated from your git config, home directory and tokens. A `git push` runs the unit tests through the vendored pre-push hook; CI runs the unit tests on Python 3.10 to 3.13, on Linux and Windows. [tests/README.md](tests/README.md) covers the test classes and the live GitHub tests.
241
+
242
+ ## 📚 Documentation
243
+
244
+ - [Configuration](docs/Configuration.md): every config key, and the flag that matches it
245
+ - [Languages and layers](docs/Languages-and-Layers.md): presets, `--with`, and adding a language
246
+ - [GitHub setup](docs/GitHub-Setup.md): `--github`, `--github-setup`, and what GitHub has no API for
247
+ - [The vault](docs/The-Vault.md): `private/`, its first files, and the sessions that use it
248
+ - [Branch strategies](docs/Branch-Strategies.md): main-only and the private-branch model
249
+ - [Workflow guide](docs/Workflow-Guide.md): day-to-day work under the private-branch strategies
250
+ - [Deployment demo](docs/Deployment-Demo.md): worked examples, from a new project to GitHub
251
+ - [Adoption guide](docs/Adoption-Guide.md) and [Migration guide](docs/Migration-Guide.md): existing projects
252
+ - [Recipes and how-tos](docs/Recipes-And-Howtos.md): commands for common cases
253
+ - [Auth guide](docs/Auth-Guide.md): the `gh` login, and tokens for `--publish-to`
254
+ - [Platform support](docs/platform-support.md): what runs where, and what each platform needs
255
+ - [Why repokit exists](docs/Why-RepoKit-Exists.md)
256
+
257
+ The [documentation guide](docs/README.md) suggests a reading order.
258
+
259
+ ## Contributing
260
+
261
+ Contributions are welcome! See the [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
262
+
263
+ Like the project?
264
+
265
+ [!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/djdarcy)
266
+
267
+ ## Related Projects
268
+
269
+ - [git-repokit-common](https://github.com/DazzleTools/git-repokit-common) - The shared scripts and git hooks every project gets at `scripts/repokit-common/`: version sync, private-content checks, tests before a push, `gh_issue_full.py`. repokit vendors it into each project it creates, and into itself
270
+ - [git-repokit-template](https://github.com/DazzleTools/git-repokit-template) - The template repository repokit grew from: copy it, run its setup, then finish GitHub and the notes by hand. `repokit create --language python` reproduces its project tree, and a regression test keeps the two in step
271
+ - [dazzlecmd](https://github.com/DazzleTools/dazzlecmd) - The DazzleTools CLI (`dz`). Its `dz private-init` first made `private/` its own repository; repokit's vault is a port of it
272
+ - [github-traffic-tracker](https://github.com/djdarcy/github-traffic-tracker) - Traffic history beyond GitHub's 14 days (`ghtraf`). `--github-setup traffic` prints its setup commands, and the `installs` and `views` badges read its counts
273
+
274
+ ## Acknowledgments
275
+
276
+ - Inspired by modern DevOps practices and GitOps workflows
277
+ - https://nvie.com/posts/a-successful-git-branching-model/
278
+ - https://trunkbaseddevelopment.com/
279
+ - https://docs.github.com/en/get-started/quickstart/github-flow
280
+ - https://martinfowler.com/articles/continuousIntegration.html
281
+ - https://www.atlassian.com/continuous-delivery
282
+ - https://www.perforce.com/blog/vcs/best-branching-strategies-high-velocity-development
283
+ - Built for developers who value consistency and automation
284
+ - Special thanks to the open-source community writ large
285
+
286
+ ## License
287
+
288
+ git-repokit, Copyright (C) 2025-2026 Dustin Darcy
289
+
290
+ Licensed under the MIT License (MIT) -- see [LICENSE](LICENSE).