git-repokit 0.9.12__tar.gz → 0.10.1__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 (232) hide show
  1. {git_repokit-0.9.12/git_repokit.egg-info → git_repokit-0.10.1}/PKG-INFO +6 -3
  2. {git_repokit-0.9.12 → git_repokit-0.10.1}/README.md +5 -2
  3. {git_repokit-0.9.12 → git_repokit-0.10.1/git_repokit.egg-info}/PKG-INFO +6 -3
  4. {git_repokit-0.9.12 → git_repokit-0.10.1}/git_repokit.egg-info/SOURCES.txt +12 -0
  5. {git_repokit-0.9.12 → git_repokit-0.10.1}/pyproject.toml +1 -1
  6. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/common_kit.py +24 -0
  7. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/config.py +2 -3
  8. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/defaults.py +6 -4
  9. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/layers.py +9 -1
  10. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/repo_manager.py +11 -1
  11. git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/ck3/.repokit-common.toml +28 -0
  12. git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/ck3/mod/descriptor.mod +6 -0
  13. git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/clausewitz/mod/localisation/english/__RK_SNAKE___l_english.yml +2 -0
  14. git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/descriptor.mod +9 -0
  15. git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/thumbnail.png +0 -0
  16. git_repokit-0.10.1/repokit/templates/layers/archetypes/paradox/jomini/mod/localization/english/__RK_SNAKE___l_english.yml +2 -0
  17. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.repokit-common.toml +4 -3
  18. git_repokit-0.10.1/repokit/templates/layers/languages/paradox/.gitattributes.rkappend +12 -0
  19. git_repokit-0.10.1/repokit/templates/layers/languages/paradox/.repokit-common.toml +29 -0
  20. git_repokit-0.10.1/repokit/templates/layers/languages/paradox/VERSION +1 -0
  21. git_repokit-0.10.1/repokit/templates/layers/languages/paradox/docs/modding.md +34 -0
  22. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/manifest.toml +113 -0
  23. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/vault.py +8 -0
  24. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_directory_profiles.py +24 -14
  25. git_repokit-0.10.1/tests/test_languages_setting.py +79 -0
  26. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers_claude_plugin.py +3 -3
  27. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers_cli.py +5 -1
  28. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers_compositions.py +29 -1
  29. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers_js_ts.py +3 -1
  30. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers_vscode.py +9 -1
  31. git_repokit-0.10.1/tests/test_paradox.py +177 -0
  32. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_vault_bootstrap.py +20 -0
  33. {git_repokit-0.9.12 → git_repokit-0.10.1}/LICENSE +0 -0
  34. {git_repokit-0.9.12 → git_repokit-0.10.1}/MANIFEST.in +0 -0
  35. {git_repokit-0.9.12 → git_repokit-0.10.1}/git_repokit.egg-info/dependency_links.txt +0 -0
  36. {git_repokit-0.9.12 → git_repokit-0.10.1}/git_repokit.egg-info/entry_points.txt +0 -0
  37. {git_repokit-0.9.12 → git_repokit-0.10.1}/git_repokit.egg-info/requires.txt +0 -0
  38. {git_repokit-0.9.12 → git_repokit-0.10.1}/git_repokit.egg-info/top_level.txt +0 -0
  39. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/__init__.py +0 -0
  40. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/__main__.py +0 -0
  41. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/__version__.py +0 -0
  42. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/__init__.py +0 -0
  43. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/__init__.py +0 -0
  44. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/analyzer.py +0 -0
  45. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/backend.py +0 -0
  46. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/cache.py +0 -0
  47. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/parsers.py +0 -0
  48. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/__init__.py +0 -0
  49. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/cli.py +0 -0
  50. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/openai_compat.py +0 -0
  51. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/transports/prompt_file.py +0 -0
  52. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/_vendor/ailib/types.py +0 -0
  53. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/auth_integration.py +0 -0
  54. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/badges.py +0 -0
  55. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/branch_utils.py +0 -0
  56. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/cli.py +0 -0
  57. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/directory_analyzer.py +0 -0
  58. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/directory_profiles.py +0 -0
  59. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/git_config.py +0 -0
  60. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/github_create.py +0 -0
  61. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/github_setup.py +0 -0
  62. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/guardrails.py +0 -0
  63. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/history_cleaner.py +0 -0
  64. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/history_protection.py +0 -0
  65. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/hooks/pre-commit-guardrails +0 -0
  66. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/hooks/pre-commit-template +0 -0
  67. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/0bsd.txt +0 -0
  68. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/LICENSES.md +0 -0
  69. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/__init__.py +0 -0
  70. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/agpl-3.0.txt +0 -0
  71. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/all-rights-reserved.txt +0 -0
  72. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/apache-2.0.txt +0 -0
  73. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/bsd-2-clause.txt +0 -0
  74. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/bsd-3-clause.txt +0 -0
  75. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/bsl-1.0.txt +0 -0
  76. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/cc-by-4.0.txt +0 -0
  77. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/cc-by-sa-4.0.txt +0 -0
  78. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/cc0-1.0.txt +0 -0
  79. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/epl-2.0.txt +0 -0
  80. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/gpl-2.0.txt +0 -0
  81. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/gpl-3.0.txt +0 -0
  82. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/isc.txt +0 -0
  83. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/lgpl-2.1.txt +0 -0
  84. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/lgpl-3.0.txt +0 -0
  85. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/mit.txt +0 -0
  86. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/mpl-2.0.txt +0 -0
  87. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/proprietary-evaluation.txt +0 -0
  88. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/licenses/unlicense.txt +0 -0
  89. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/readme_blocks.py +0 -0
  90. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/remote_integration.py +0 -0
  91. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/template_engine.py +0 -0
  92. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/ai/claude/CLAUDE-nested.md.template +0 -0
  93. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/ai/claude/CLAUDE.md.template +0 -0
  94. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/ai/claude/instructions/step1_context_rebuilder.md +0 -0
  95. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/ai/claude/instructions/step2_dev_workflow_process.md +0 -0
  96. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/ai/claude/instructions/step3_context_bridge.md +0 -0
  97. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/common/CHANGELOG.md.template +0 -0
  98. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/common/CONTRIBUTING.md.template +0 -0
  99. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/common/README.md.template +0 -0
  100. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/common/gitattributes.template +0 -0
  101. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/common/gitignore.template +0 -0
  102. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/FUNDING.yml.template +0 -0
  103. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/ROADMAP.md.template +0 -0
  104. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/dependabot.yml.template +0 -0
  105. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/one-offs-README.md.template +0 -0
  106. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/platform-support.md.template +0 -0
  107. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/pull_request_template.md.template +0 -0
  108. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/release-template.md.template +0 -0
  109. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/settings.json.template +0 -0
  110. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/extras/stale.yml.template +0 -0
  111. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/github/CODEOWNERS.template +0 -0
  112. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/github/ISSUE_TEMPLATE/bug-report.md.template +0 -0
  113. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/github/ISSUE_TEMPLATE/feature-request.md.template +0 -0
  114. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/github/issues/notes.md.template +0 -0
  115. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/github/issues/roadmap.md.template +0 -0
  116. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/hooks/pre-commit.template +0 -0
  117. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/any/claude-plugin/.claude-plugin/marketplace.json +0 -0
  118. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/.claude-plugin/plugin.json +0 -0
  119. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/any/claude-plugin/plugin/README.md +0 -0
  120. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.github/workflows/ci-c-cpp.yml +0 -0
  121. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.repokit-common.toml.rkappend +0 -0
  122. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/launch.json +0 -0
  123. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/.vscode/tasks.json +0 -0
  124. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakeLists.txt +0 -0
  125. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/CMakePresets.json +0 -0
  126. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/cmake/GenerateStamp.cmake +0 -0
  127. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/src/main.cpp +0 -0
  128. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/tests/test_version.cpp +0 -0
  129. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/cmake-app/vcpkg.json +0 -0
  130. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/.vscode/launch.json +0 -0
  131. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/Makefile +0 -0
  132. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/build.bat +0 -0
  133. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/minimal/src/__RK_SNAKE__.c +0 -0
  134. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/launch.json +0 -0
  135. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/.vscode/tasks.json +0 -0
  136. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.sln +0 -0
  137. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/__RK_PROJECT__.vcxproj +0 -0
  138. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/c-cpp/msbuild/src/main.cpp +0 -0
  139. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.repokit-common.toml +0 -0
  140. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/.vscode/launch.json +0 -0
  141. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/hooks.json +0 -0
  142. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/hooks/scripts/session-start.mjs +0 -0
  143. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/claude-plugin/plugin/tests/manifest.test.js +0 -0
  144. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node/.repokit-common.toml.rkappend +0 -0
  145. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node/package.json +0 -0
  146. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/.github/workflows/release.yml +0 -0
  147. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/package.json +0 -0
  148. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/src/index.ts +0 -0
  149. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/node-package/tests/index.test.ts +0 -0
  150. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/script/.vscode/launch.json +0 -0
  151. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/script/__RK_PROJECT__.js +0 -0
  152. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/script/tests/version.test.js +0 -0
  153. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/ts/package.json +0 -0
  154. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/js-ts/ts/tsconfig.json +0 -0
  155. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/.github/workflows/ci-python.yml +0 -0
  156. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/.repokit-common.toml +0 -0
  157. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/.vscode/launch.json +0 -0
  158. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/VERSION +0 -0
  159. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/hooks.json +0 -0
  160. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/run-hook.mjs +0 -0
  161. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/hooks/scripts/session_start.py +0 -0
  162. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/claude-plugin/plugin/tests/test_manifest.py +0 -0
  163. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/.github/workflows/release.yml +0 -0
  164. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/.vscode/launch.json +0 -0
  165. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__init__.py +0 -0
  166. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/__main__.py +0 -0
  167. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/_version.py +0 -0
  168. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/__RK_SNAKE__/cli.py +0 -0
  169. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/pyproject.toml +0 -0
  170. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/tests/conftest.py +0 -0
  171. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/pypi/tests/test_version.py +0 -0
  172. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/.github/workflows/ci-python.yml +0 -0
  173. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/.repokit-common.toml +0 -0
  174. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/.vscode/launch.json +0 -0
  175. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/VERSION +0 -0
  176. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/__RK_PROJECT__.py +0 -0
  177. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/script/tests/test_version.py +0 -0
  178. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/setuppy/requirements.txt +0 -0
  179. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/archetypes/python/setuppy/setup.py +0 -0
  180. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/.gitignore.rkappend +0 -0
  181. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/.repokit-common.toml +0 -0
  182. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/include/__RK_SNAKE__/version.h +0 -0
  183. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/c-cpp/src/app.rc +0 -0
  184. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.editorconfig +0 -0
  185. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.github/workflows/ci-js-ts.yml +0 -0
  186. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.gitignore.rkappend +0 -0
  187. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/.vscode/launch.json +0 -0
  188. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/js-ts/VERSION +0 -0
  189. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/python/.github/workflows/ci-python.yml +0 -0
  190. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/python/.gitignore.rkappend +0 -0
  191. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/layers/languages/python/.vscode/launch.json +0 -0
  192. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/CLAUDE.md +0 -0
  193. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/claude/_maps/MOC-project.md +0 -0
  194. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/claude/_oracle/backlinks.md +0 -0
  195. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/claude/_oracle/concepts.md +0 -0
  196. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/claude/_oracle/manifest.md +0 -0
  197. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/claude/_todo/ACTIVE-WORK.md +0 -0
  198. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/templates/vault/claude/_todo/OPEN-LOOPS.md +0 -0
  199. {git_repokit-0.9.12 → git_repokit-0.10.1}/repokit/utils.py +0 -0
  200. {git_repokit-0.9.12 → git_repokit-0.10.1}/setup.cfg +0 -0
  201. {git_repokit-0.9.12 → git_repokit-0.10.1}/setup.py +0 -0
  202. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_badges.py +0 -0
  203. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_branch_strategies.py +0 -0
  204. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_cli_examples.py +0 -0
  205. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_cli_integration.py +0 -0
  206. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_core_functionality.py +0 -0
  207. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_deployment_scenarios.py +0 -0
  208. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_docs_links.py +0 -0
  209. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_extras_cli.py +0 -0
  210. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_github_create.py +0 -0
  211. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_github_integration.py +0 -0
  212. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_github_owner.py +0 -0
  213. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_github_setup.py +0 -0
  214. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_guardrails.py +0 -0
  215. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_hermetic.py +0 -0
  216. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_hook_encoding.py +0 -0
  217. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_hook_patterns.py +0 -0
  218. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layer_action_pins.py +0 -0
  219. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers.py +0 -0
  220. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_layers_c_cpp.py +0 -0
  221. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_legacy_smoke.py +0 -0
  222. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_license_adopt.py +0 -0
  223. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_license_cli.py +0 -0
  224. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_licenses.py +0 -0
  225. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_new_default.py +0 -0
  226. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_packaging.py +0 -0
  227. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_private_branch_create.py +0 -0
  228. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_readme_blocks.py +0 -0
  229. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_run_tests_driver.py +0 -0
  230. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_template_parity.py +0 -0
  231. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_utils.py +0 -0
  232. {git_repokit-0.9.12 → git_repokit-0.10.1}/tests/test_vendored_ailib.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: git-repokit
3
- Version: 0.9.12
3
+ Version: 0.10.1
4
4
  Summary: Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault
5
5
  Author: Dustin Darcy
6
6
  License-Expression: MIT
@@ -58,10 +58,10 @@ Dynamic: license-file
58
58
  A full create (the [Quick Start](#-quick-start) below) produces:
59
59
 
60
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).
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, a Paradox game mod (Crusader Kings III and others), and more. Each comes with tests, a CI workflow and a VS Code debug configuration where it has something to run, from the first commit. The project's settings name its languages, so the hooks run the right checks. See [Languages and layers](docs/Languages-and-Layers.md).
62
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
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).
64
+ - **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents, postmortems, conversations (`convos/`) and old revisions (`revisions/`); run logs go to `private/logs/`, kept on disk and never versioned. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
65
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
66
 
67
67
  ## 📦 Installation
@@ -173,6 +173,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
173
173
  # A TypeScript npm package
174
174
  repokit create my-lib --language js-ts --license mpl-2.0
175
175
 
176
+ # A Crusader Kings III mod: the mod in mod/, the repository's own files above it
177
+ repokit create my-mod --language paradox --license mit
178
+
176
179
  # A one-file Python script, no packaging, given away to the public domain
177
180
  repokit create my-script --with python/script --license unlicense
178
181
 
@@ -17,10 +17,10 @@
17
17
  A full create (the [Quick Start](#-quick-start) below) produces:
18
18
 
19
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).
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, a Paradox game mod (Crusader Kings III and others), and more. Each comes with tests, a CI workflow and a VS Code debug configuration where it has something to run, from the first commit. The project's settings name its languages, so the hooks run the right checks. See [Languages and layers](docs/Languages-and-Layers.md).
21
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
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).
23
+ - **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents, postmortems, conversations (`convos/`) and old revisions (`revisions/`); run logs go to `private/logs/`, kept on disk and never versioned. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
24
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
25
 
26
26
  ## 📦 Installation
@@ -132,6 +132,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
132
132
  # A TypeScript npm package
133
133
  repokit create my-lib --language js-ts --license mpl-2.0
134
134
 
135
+ # A Crusader Kings III mod: the mod in mod/, the repository's own files above it
136
+ repokit create my-mod --language paradox --license mit
137
+
135
138
  # A one-file Python script, no packaging, given away to the public domain
136
139
  repokit create my-script --with python/script --license unlicense
137
140
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: git-repokit
3
- Version: 0.9.12
3
+ Version: 0.10.1
4
4
  Summary: Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault
5
5
  Author: Dustin Darcy
6
6
  License-Expression: MIT
@@ -58,10 +58,10 @@ Dynamic: license-file
58
58
  A full create (the [Quick Start](#-quick-start) below) produces:
59
59
 
60
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).
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, a Paradox game mod (Crusader Kings III and others), and more. Each comes with tests, a CI workflow and a VS Code debug configuration where it has something to run, from the first commit. The project's settings name its languages, so the hooks run the right checks. See [Languages and layers](docs/Languages-and-Layers.md).
62
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
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).
64
+ - **A private vault:** `private/` is its own git repository, ignored by the project, for notes, design documents, postmortems, conversations (`convos/`) and old revisions (`revisions/`); run logs go to `private/logs/`, kept on disk and never versioned. It starts with a map, an index for an oracle session and a to-do board. See [The vault](docs/The-Vault.md).
65
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
66
 
67
67
  ## 📦 Installation
@@ -173,6 +173,9 @@ repokit create my-app --with c-cpp/msbuild --license gpl-3.0-or-later
173
173
  # A TypeScript npm package
174
174
  repokit create my-lib --language js-ts --license mpl-2.0
175
175
 
176
+ # A Crusader Kings III mod: the mod in mod/, the repository's own files above it
177
+ repokit create my-mod --language paradox --license mit
178
+
176
179
  # A one-file Python script, no packaging, given away to the public domain
177
180
  repokit create my-script --with python/script --license unlicense
178
181
 
@@ -133,6 +133,12 @@ repokit/templates/layers/archetypes/js-ts/script/.vscode/launch.json
133
133
  repokit/templates/layers/archetypes/js-ts/script/tests/version.test.js
134
134
  repokit/templates/layers/archetypes/js-ts/ts/package.json
135
135
  repokit/templates/layers/archetypes/js-ts/ts/tsconfig.json
136
+ repokit/templates/layers/archetypes/paradox/ck3/.repokit-common.toml
137
+ repokit/templates/layers/archetypes/paradox/ck3/mod/descriptor.mod
138
+ repokit/templates/layers/archetypes/paradox/clausewitz/mod/localisation/english/__RK_SNAKE___l_english.yml
139
+ repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/descriptor.mod
140
+ repokit/templates/layers/archetypes/paradox/descriptor-mod/mod/thumbnail.png
141
+ repokit/templates/layers/archetypes/paradox/jomini/mod/localization/english/__RK_SNAKE___l_english.yml
136
142
  repokit/templates/layers/archetypes/python/claude-plugin/.repokit-common.toml
137
143
  repokit/templates/layers/archetypes/python/claude-plugin/VERSION
138
144
  repokit/templates/layers/archetypes/python/claude-plugin/.github/workflows/ci-python.yml
@@ -168,6 +174,10 @@ repokit/templates/layers/languages/js-ts/.repokit-common.toml
168
174
  repokit/templates/layers/languages/js-ts/VERSION
169
175
  repokit/templates/layers/languages/js-ts/.github/workflows/ci-js-ts.yml
170
176
  repokit/templates/layers/languages/js-ts/.vscode/launch.json
177
+ repokit/templates/layers/languages/paradox/.gitattributes.rkappend
178
+ repokit/templates/layers/languages/paradox/.repokit-common.toml
179
+ repokit/templates/layers/languages/paradox/VERSION
180
+ repokit/templates/layers/languages/paradox/docs/modding.md
171
181
  repokit/templates/layers/languages/python/.gitignore.rkappend
172
182
  repokit/templates/layers/languages/python/.github/workflows/ci-python.yml
173
183
  repokit/templates/layers/languages/python/.vscode/launch.json
@@ -195,6 +205,7 @@ tests/test_guardrails.py
195
205
  tests/test_hermetic.py
196
206
  tests/test_hook_encoding.py
197
207
  tests/test_hook_patterns.py
208
+ tests/test_languages_setting.py
198
209
  tests/test_layer_action_pins.py
199
210
  tests/test_layers.py
200
211
  tests/test_layers_c_cpp.py
@@ -209,6 +220,7 @@ tests/test_license_cli.py
209
220
  tests/test_licenses.py
210
221
  tests/test_new_default.py
211
222
  tests/test_packaging.py
223
+ tests/test_paradox.py
212
224
  tests/test_private_branch_create.py
213
225
  tests/test_readme_blocks.py
214
226
  tests/test_run_tests_driver.py
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
8
8
  # PyPI's trusted publisher is registered for this name (DazzleTools/git-repokit,
9
9
  # publish.yml, environment pypi); the command stays `repokit`
10
10
  name = "git-repokit"
11
- version = "0.9.12"
11
+ version = "0.10.1"
12
12
  description = "Create standardized Git repositories: language presets, licenses, GitHub setup, and a private notes vault"
13
13
  readme = "README.md"
14
14
  license = "MIT"
@@ -124,6 +124,30 @@ def private_branch_settings(private_branch: Optional[str], private_paths: List[s
124
124
  return settings
125
125
 
126
126
 
127
+ def languages_setting(languages: List[str], layer_folders: List[str]) -> List[str]:
128
+ """The `languages` value a create writes for git-repokit-common's hooks.
129
+
130
+ repokit's language names mapped to repokit-common's, in the composed
131
+ order (the first is primary): js-ts is "typescript" when the ts layer is
132
+ part of the composition, else "javascript"; python, c-cpp and paradox
133
+ are the same names; generic and the `any` pseudo-language add nothing.
134
+ Writing it, rather than leaving the hooks to detect it from the root,
135
+ keeps a project whose markers sit in a subfolder (a plugin in plugin/)
136
+ from reading as Python (design 2026-10-30__08-28-15, Addendum 2).
137
+ """
138
+ out: List[str] = []
139
+ for lang in languages:
140
+ if lang == "js-ts":
141
+ name = "typescript" if any(f.endswith("js-ts/ts") for f in layer_folders) else "javascript"
142
+ elif lang in ("python", "c-cpp", "paradox"):
143
+ name = lang
144
+ else:
145
+ continue
146
+ if name not in out:
147
+ out.append(name)
148
+ return out
149
+
150
+
127
151
  def _toml_list(values: List[str]) -> str:
128
152
  return "[" + ", ".join('"' + v.replace("\\", "\\\\").replace('"', '\\"') + '"' for v in values) + "]"
129
153
 
@@ -59,12 +59,11 @@ class ConfigManager:
59
59
  # replaces them with the chosen strategy's values
60
60
  "branches": list(BRANCH_STRATEGIES[DEFAULT_BRANCH_STRATEGY]["branches"]),
61
61
  "worktrees": list(BRANCH_STRATEGIES[DEFAULT_BRANCH_STRATEGY]["worktrees"]),
62
+ # convos/, revisions/ and logs/ live in private/ since 0.10.0
63
+ # (vault.PRIVATE_STRUCTURE), not at the project root
62
64
  "directories": [
63
- "convos",
64
65
  "docs",
65
- "logs",
66
66
  "private",
67
- "revisions",
68
67
  "scripts",
69
68
  "tests",
70
69
  ],
@@ -180,15 +180,17 @@ def strategy_push_branches(name: str) -> List[str]:
180
180
  DEFAULT_BRANCH_STRATEGIES = {name: strategy_branch_list(name) for name in BRANCH_STRATEGIES}
181
181
 
182
182
  # Default directory profiles - centralized from directory_profiles.py
183
+ # convos/, revisions/ and logs/ are made inside private/ (vault.PRIVATE_STRUCTURE)
184
+ # since 0.10.0, never at the project root; DEFAULT_PRIVATE_DIRS still names
185
+ # them, so a root folder an older project has stays out of public history.
183
186
  DEFAULT_DIRECTORY_PROFILES = {
184
187
  "minimal": ["src", "tests", "docs"],
185
188
  "standard": [
186
- "src", "tests", "docs", "scripts", "config",
187
- "logs", "private", "convos", "revisions"
189
+ "src", "tests", "docs", "scripts", "config", "private"
188
190
  ],
189
191
  "complete": [
190
- "src", "tests", "docs", "scripts", "config", "logs",
191
- "private", "convos", "revisions", "data", "examples",
192
+ "src", "tests", "docs", "scripts", "config",
193
+ "private", "data", "examples",
192
194
  "tools", "resources", "assets"
193
195
  ]
194
196
  }
@@ -376,14 +376,22 @@ def catalogue_lines(manifest: Dict[str, Any], language: Optional[str] = None) ->
376
376
  head = f"{lang}:" + (f" (planned: {entry.get('description', '')})" if entry.get("stub") else "")
377
377
  lines.append(head)
378
378
  default = entry.get("default")
379
+ planned = []
379
380
  for key in sorted(k for k in manifest["archetypes"] if k.startswith(lang + "/")):
380
381
  preset = manifest["archetypes"][key]
381
382
  if preset.get("stub"):
382
- lines.append(f" {key:28} (planned: {preset.get('description', '')})")
383
+ if language:
384
+ lines.append(f" {key:28} (planned: {preset.get('description', '')})")
385
+ else:
386
+ planned.append(key.split("/", 1)[1])
383
387
  else:
384
388
  parts = [f.split("/", 2)[-1] for f in preset.get("layers", [])]
385
389
  mark = " <- default" if key == default else ""
386
390
  lines.append(f" {key:28} = {', '.join(parts)}{mark}")
391
+ if planned:
392
+ # The overview keeps one screen (AC-10): a language's planned presets
393
+ # share a line; `repokit list <lang>` shows each with its description.
394
+ lines.append(f" {'planned:':28} {', '.join(planned)}")
387
395
  for facet, spec in facets:
388
396
  if facet == "language":
389
397
  continue
@@ -247,7 +247,8 @@ class RepoManager:
247
247
  # Create standard subdirectories
248
248
  standard_dirs = self.config.get(
249
249
  "directories",
250
- ["convos", "docs", "logs", "private", "revisions", "scripts", "tests"],
250
+ # convos/, revisions/, logs/: in private/ since 0.10.0 (vault.py)
251
+ ["docs", "private", "scripts", "tests"],
251
252
  )
252
253
 
253
254
  for directory in standard_dirs:
@@ -981,6 +982,15 @@ class RepoManager:
981
982
  print(f"Note: .vscode/ holds {resolution.languages[0]}'s debug configurations; "
982
983
  f"{', '.join(others)}'s were not merged in (add them to .vscode/launch.json by hand)")
983
984
  self.logger.info(f"Code-type layers {', '.join(resolution.layers)}: {len(written)} files")
985
+
986
+ # Say what the project is, for git-repokit-common's hooks: the languages
987
+ # it was composed from, written unless a layer's settings already name
988
+ # them (paradox, c-cpp). Detection stays the hooks' fallback for
989
+ # adopted projects; a created one should not depend on it.
990
+ from . import common_kit
991
+ langs = common_kit.languages_setting(resolution.languages, resolution.layers)
992
+ if langs:
993
+ common_kit.write_settings(self.repo_root, {"languages": langs})
984
994
  for note in resolution.notes:
985
995
  # Once, to the person: a composition no preset vouches for (with
986
996
  # the tokens it was assembled from), or a language left bare.
@@ -0,0 +1,28 @@
1
+ # git-repokit-common settings for __RK_PROJECT__, a Crusader Kings III mod.
2
+ #
3
+ # The mod itself is mod/: the folder the game loads and the one a Workshop
4
+ # upload ships. Everything else (this file, VERSION, scripts/, tests/,
5
+ # private/) stays above it and never reaches the game or the Workshop.
6
+ #
7
+ # The version lives in VERSION; the vendored tool at scripts/repokit-common/
8
+ # keeps mod/descriptor.mod's version line in step with it (a pattern target:
9
+ # only the version text changes, the file's bytes otherwise untouched).
10
+ #
11
+ # The hooks: languages = ["paradox"] runs the paradox profile -- on push
12
+ # ck3-tiger when it is installed (advisory, never blocking), on commit a check
13
+ # that localization .yml files keep their UTF-8 BOM -- and no Python checks.
14
+
15
+ [tool.repokit-common]
16
+ version-source = "VERSION"
17
+ changelog = "CHANGELOG.md"
18
+ repo-url = "https://github.com/__RK_ORG__/__RK_PROJECT__"
19
+ tag-prefix = "v"
20
+ tag-format = "human"
21
+ private-patterns = ["private/", "local/", ".env"]
22
+ languages = ["paradox"]
23
+ paradox-game = "ck3"
24
+
25
+ [[tool.repokit-common.extra-targets]]
26
+ path = "mod/descriptor.mod"
27
+ pattern = '^version="([^"]*)"\r?$'
28
+ format = "base"
@@ -0,0 +1,6 @@
1
+ version="0.1.0"
2
+ tags={
3
+ "Utilities"
4
+ }
5
+ name="__RK_PROJECT__"
6
+ supported_version="1.20.*"
@@ -0,0 +1,9 @@
1
+ # Set supported_version to the game version this mod is made for: "1.20.*" for
2
+ # Crusader Kings III 1.20, for example. "*" loads on any version, with the
3
+ # launcher's warning. version follows the VERSION file (sync-versions.py).
4
+ version="0.1.0"
5
+ tags={
6
+ "Utilities"
7
+ }
8
+ name="__RK_PROJECT__"
9
+ supported_version="*"
@@ -3,9 +3,10 @@
3
3
  # A JavaScript/TypeScript project keeps its version in package.json; the
4
4
  # vendored tooling at scripts/repokit-common/ treats the plain VERSION file as
5
5
  # the source and package.json (and any other manifest a layer adds) as a
6
- # target it keeps in step, so one bump moves every copy. The product
7
- # languages are not listed here on purpose: the hooks detect them from the
8
- # root (package.json -> javascript, tsconfig.json -> typescript).
6
+ # target it keeps in step, so one bump moves every copy. `repokit create`
7
+ # adds the product's `languages` below (typescript with the ts layer, else
8
+ # javascript); the hooks' detection from the root (package.json, tsconfig.json)
9
+ # is only their fallback, and it cannot see a plugin's markers in plugin/.
9
10
 
10
11
  [tool.repokit-common]
11
12
  version-source = "VERSION"
@@ -0,0 +1,12 @@
1
+
2
+ # Paradox mod files: the game reads their bytes as they are -- a localization
3
+ # file without its UTF-8 BOM is skipped, and line endings stay as written --
4
+ # so git must never convert them on checkout or commit.
5
+ mod/**/*.txt -text
6
+ mod/**/*.yml -text
7
+ mod/**/*.mod -text
8
+ mod/**/*.gui -text
9
+ mod/**/*.gfx -text
10
+ mod/**/*.asset -text
11
+ mod/**/*.shader -text
12
+ mod/**/*.csv -text
@@ -0,0 +1,29 @@
1
+ # git-repokit-common settings for __RK_PROJECT__, a Paradox game mod.
2
+ #
3
+ # The mod itself is mod/: the folder the game loads and the one a Workshop
4
+ # upload ships. Everything else (this file, VERSION, scripts/, tests/,
5
+ # private/) stays above it and never reaches the game or the Workshop.
6
+ #
7
+ # The version lives in VERSION; the vendored tool at scripts/repokit-common/
8
+ # keeps mod/descriptor.mod's version line in step with it (a pattern target:
9
+ # only the version text changes, the file's bytes otherwise untouched).
10
+ #
11
+ # The hooks: languages = ["paradox"] runs the paradox profile -- on push the
12
+ # game's Tiger linter when it is installed (advisory, never blocking), on
13
+ # commit a check that localization .yml files keep their UTF-8 BOM -- and
14
+ # no Python checks. Set paradox-game to your game to choose the linter.
15
+
16
+ [tool.repokit-common]
17
+ version-source = "VERSION"
18
+ changelog = "CHANGELOG.md"
19
+ repo-url = "https://github.com/__RK_ORG__/__RK_PROJECT__"
20
+ tag-prefix = "v"
21
+ tag-format = "human"
22
+ private-patterns = ["private/", "local/", ".env"]
23
+ languages = ["paradox"]
24
+ # paradox-game = "ck3" # ck3, vic3 or imperator have a Tiger linter
25
+
26
+ [[tool.repokit-common.extra-targets]]
27
+ path = "mod/descriptor.mod"
28
+ pattern = '^version="([^"]*)"\r?$'
29
+ format = "base"
@@ -0,0 +1,34 @@
1
+ # Working on __RK_PROJECT__
2
+
3
+ This repository holds a Paradox game mod. The mod itself is `mod/`: the folder the game loads, and the folder a Workshop upload ships. Everything else stays above it, so it never reaches the game or the Workshop.
4
+
5
+ ## Load the working copy in the game
6
+
7
+ The game finds a local mod through a small pointer file in its Documents folder, `Documents\Paradox Interactive\<Game>\mod\__RK_PROJECT__.mod`. For Crusader Kings III, `<Game>` is `Crusader Kings III`. Write it once, with any editor:
8
+
9
+ ```
10
+ name="__RK_PROJECT__"
11
+ path="C:/path/to/__RK_PROJECT__/mod"
12
+ supported_version="1.20.*"
13
+ ```
14
+
15
+ `path` names this repository's `mod/` folder, with forward slashes. Then enable the mod in the game's launcher. git-repokit never writes this file, and never touches the launcher's own files: they belong to the game.
16
+
17
+ ## Version
18
+
19
+ The version lives in `VERSION`, and `mod/descriptor.mod`'s `version="..."` line follows it:
20
+
21
+ ```
22
+ python scripts/repokit-common/sync-versions.py --bump patch
23
+ ```
24
+
25
+ Only that line changes. `supported_version`, the encoding and the line endings stay as they were.
26
+
27
+ ## Checks
28
+
29
+ - **On push:** the game's [Tiger](https://github.com/amtep/tiger) linter (`ck3-tiger`, `vic3-tiger`, `imperator-tiger`) runs on the mod when it is on PATH. The push shows Tiger's summary line, and the full report goes to `.git/repokit-<linter>.txt`. Findings never block. Set `paradox-game` in `.repokit-common.toml` to choose the linter.
30
+ - **On commit:** a localization `.yml` saved without a UTF-8 BOM is refused. The game would skip it without an error, and its keys would show raw in the game.
31
+
32
+ ## Encoding
33
+
34
+ Keep localization files as **UTF-8 with BOM**, and script files as the game expects. `.gitattributes` stops git from converting anything under `mod/`.
@@ -63,6 +63,17 @@ default = "c-cpp/cmake-app"
63
63
  layers = ["languages/js-ts"]
64
64
  default = "js-ts/node-package"
65
65
 
66
+ # Paradox game mods (Crusader Kings III, Victoria 3, Stellaris, ...). The mod
67
+ # itself is mod/, the folder the game loads and a Workshop upload ships; the
68
+ # repository's own files stay above it. The facets are the existing ones
69
+ # (design 2026-10-30__08-28-15, Addendum 2): the engine is the script's
70
+ # dialect (jomini, clausewitz), the descriptor kind is how the mod is packaged
71
+ # (build), the game is what it is (purpose) -- ranked so the game's files are
72
+ # applied last and win.
73
+ [languages.paradox]
74
+ layers = ["languages/paradox"]
75
+ default = "paradox/ck3"
76
+
66
77
  # A pseudo-language: the folder prefix for layer files several languages share
67
78
  # (the Claude plugin's manifests and marketplace README). Never a project
68
79
  # language: --language refuses it, `repokit list` and the bare-name lookup do
@@ -211,6 +222,69 @@ facet = "framework"
211
222
  stub = true
212
223
  description = "Qt 6: find_package(Qt6), qt_add_executable, windeployqt"
213
224
 
225
+ # paradox: engine layers carry engine-wide files only (the localization folder,
226
+ # spelled as the engine spells it); the game layer owns the game's descriptor
227
+ # and settings and overrides the generic ones.
228
+
229
+ [layers."paradox/jomini"]
230
+ facet = "dialect"
231
+ description = "the Jomini engine (Crusader Kings III, Imperator, Victoria 3, Europa Universalis V): mod/localization/english/ with a UTF-8 BOM"
232
+
233
+ [layers."paradox/clausewitz"]
234
+ facet = "dialect"
235
+ description = "the Clausewitz engine (Stellaris, Hearts of Iron IV, Europa Universalis IV): mod/localisation/english/ with a UTF-8 BOM"
236
+
237
+ [layers."paradox/descriptor-mod"]
238
+ facet = "build"
239
+ description = "a descriptor.mod in mod/ (version, name, tags, supported_version) and a thumbnail.png"
240
+
241
+ [layers."paradox/metadata-json"]
242
+ facet = "build"
243
+ stub = true
244
+ description = "Victoria 3's .metadata/metadata.json in place of descriptor.mod (planned with paradox/vic3)"
245
+
246
+ [layers."paradox/ck3"]
247
+ facet = "purpose"
248
+ implies = ["jomini", "descriptor-mod"]
249
+ overrides = ["mod/descriptor.mod", ".repokit-common.toml"]
250
+ description = "a Crusader Kings III mod: supported_version 1.20.*, paradox-game = \"ck3\" (ck3-tiger on push)"
251
+
252
+ [layers."paradox/vic3"]
253
+ facet = "purpose"
254
+ stub = true
255
+ implies = ["jomini", "metadata-json"]
256
+ description = "a Victoria 3 mod (planned)"
257
+
258
+ [layers."paradox/imperator"]
259
+ facet = "purpose"
260
+ stub = true
261
+ implies = ["jomini", "descriptor-mod"]
262
+ description = "an Imperator: Rome mod (planned)"
263
+
264
+ [layers."paradox/eu5"]
265
+ facet = "purpose"
266
+ stub = true
267
+ implies = ["jomini"]
268
+ description = "a Europa Universalis V mod (planned; its descriptor is not confirmed)"
269
+
270
+ [layers."paradox/stellaris"]
271
+ facet = "purpose"
272
+ stub = true
273
+ implies = ["clausewitz", "descriptor-mod"]
274
+ description = "a Stellaris mod (planned)"
275
+
276
+ [layers."paradox/hoi4"]
277
+ facet = "purpose"
278
+ stub = true
279
+ implies = ["clausewitz", "descriptor-mod"]
280
+ description = "a Hearts of Iron IV mod (planned; its descriptor must have no BOM)"
281
+
282
+ [layers."paradox/eu4"]
283
+ facet = "purpose"
284
+ stub = true
285
+ implies = ["clausewitz", "descriptor-mod"]
286
+ description = "a Europa Universalis IV mod (planned)"
287
+
214
288
  # ---------------------------------------------------------------- presets
215
289
  # `layers` lists layer folders in apply order; `languages` is implied by the key.
216
290
 
@@ -300,3 +374,42 @@ description = "Library with install/export targets and a package config (starts
300
374
  [archetypes."c-cpp/qt"]
301
375
  stub = true
302
376
  description = "Qt 6 app: find_package(Qt6), qt_add_executable, windeployqt (starts from cmake-app)"
377
+
378
+ [archetypes."paradox/ck3"]
379
+ languages = ["paradox"]
380
+ layers = ["archetypes/paradox/jomini", "archetypes/paradox/descriptor-mod", "archetypes/paradox/ck3"]
381
+ description = "a Crusader Kings III mod in mod/: descriptor.mod for 1.20, English localization with its BOM, a thumbnail; VERSION kept in step with the descriptor; ck3-tiger on push"
382
+
383
+ [archetypes."paradox/jomini"]
384
+ languages = ["paradox"]
385
+ layers = ["archetypes/paradox/jomini", "archetypes/paradox/descriptor-mod"]
386
+ description = "a mod for any Jomini game (Crusader Kings III, Imperator, ...): a generic descriptor.mod (supported_version \"*\") and mod/localization/; set paradox-game for its linter"
387
+
388
+ [archetypes."paradox/clausewitz"]
389
+ languages = ["paradox"]
390
+ layers = ["archetypes/paradox/clausewitz", "archetypes/paradox/descriptor-mod"]
391
+ description = "a mod for any Clausewitz game (Stellaris, Hearts of Iron IV, Europa Universalis IV): a generic descriptor.mod and mod/localisation/"
392
+
393
+ [archetypes."paradox/vic3"]
394
+ stub = true
395
+ description = "a Victoria 3 mod (.metadata/metadata.json)"
396
+
397
+ [archetypes."paradox/imperator"]
398
+ stub = true
399
+ description = "an Imperator: Rome mod"
400
+
401
+ [archetypes."paradox/eu5"]
402
+ stub = true
403
+ description = "a Europa Universalis V mod"
404
+
405
+ [archetypes."paradox/stellaris"]
406
+ stub = true
407
+ description = "a Stellaris mod"
408
+
409
+ [archetypes."paradox/hoi4"]
410
+ stub = true
411
+ description = "a Hearts of Iron IV mod (a descriptor without BOM)"
412
+
413
+ [archetypes."paradox/eu4"]
414
+ stub = true
415
+ description = "a Europa Universalis IV mod"
@@ -24,9 +24,16 @@ PRIVATE_STRUCTURE = [
24
24
  "claude",
25
25
  "claude/commits",
26
26
  "claude/issues",
27
+ "convos",
27
28
  "docs",
29
+ "logs",
28
30
  "notes",
31
+ "revisions",
29
32
  ]
33
+ # convos/, revisions/ and logs/ were project-root folders until 0.10.0, held
34
+ # out of public history only by ignore rules and the pre-commit guard; inside
35
+ # the vault they cannot reach a public remote at all (djdarcy, 2026-10-31).
36
+ # logs/ is run output, so the vault ignores it (PRIVATE_GITIGNORE_SECTIONS).
30
37
 
31
38
  # What the vault ignores (private_init.PRIVATE_GITIGNORE_SECTIONS)
32
39
  PRIVATE_GITIGNORE_SECTIONS = [
@@ -35,6 +42,7 @@ PRIVATE_GITIGNORE_SECTIONS = [
35
42
  ("OS", [".DS_Store", "Thumbs.db", "desktop.ini"]),
36
43
  ("Temp files", ["*.tmp", "*.bak"]),
37
44
  ("Agent working state -- written by tools, never versioned", [".gauntlet/"]),
45
+ ("Run logs -- program output, kept on disk and never versioned", ["logs/"]),
38
46
  ]
39
47
 
40
48
  # What the parent project ignores besides private/ itself
@@ -293,20 +293,30 @@ class TestConfigManagerDirectoryProfiles(unittest.TestCase):
293
293
  self.assertIn("local", private_dirs)
294
294
 
295
295
  def test_backward_compatibility(self):
296
- """Test backward compatibility when no profile is specified."""
297
- # No profile specified, should use defaults
298
- self.config_manager.cli_config = {"name": "testproject"}
299
- self.config_manager.config = self.config_manager._merge_configs()
300
- self.config_manager.resolve_directory_profiles()
301
-
302
- dirs = self.config_manager.config.get("directories", [])
303
- # Should have default directories
304
- self.assertIn("convos", dirs)
305
- self.assertIn("docs", dirs)
306
- self.assertIn("logs", dirs)
307
- self.assertIn("private", dirs)
308
- self.assertIn("scripts", dirs)
309
- self.assertIn("tests", dirs)
296
+ """No profile: the default directories. Run from an empty folder: the
297
+ config manager reads a .repokit.json in the current directory, and in
298
+ git-repokit's own checkout that record (2025) still lists convos/, logs/
299
+ and revisions/ -- which kept this test green whatever the defaults said.
300
+ Since 0.10.0 those three live in private/, never at the project root."""
301
+ cwd = os.getcwd()
302
+ os.chdir(tempfile.mkdtemp())
303
+ try:
304
+ manager = ConfigManager()
305
+ manager.cli_config = {"name": "testproject"}
306
+ manager.config = manager._merge_configs()
307
+ manager.resolve_directory_profiles()
308
+ finally:
309
+ os.chdir(cwd)
310
+ dirs = manager.config.get("directories", [])
311
+ for d in ("docs", "private", "scripts", "tests"):
312
+ self.assertIn(d, dirs)
313
+ for d in ("convos", "logs", "revisions"):
314
+ self.assertNotIn(d, dirs)
315
+ for profile in ("standard", "complete"):
316
+ listed = DirectoryProfileManager().profiles[profile]
317
+ self.assertFalse({"convos", "logs", "revisions"} & set(listed), profile)
318
+ # still protected: an older project's root folders stay out of public history
319
+ self.assertTrue({"convos", "logs", "revisions"} <= set(manager.config["private_dirs"]))
310
320
 
311
321
 
312
322
  if __name__ == "__main__":