goga 0.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. goga-0.0.0/.github/workflows/docs.yml +26 -0
  2. goga-0.0.0/.github/workflows/lint.yml +19 -0
  3. goga-0.0.0/.github/workflows/publish.yml +17 -0
  4. goga-0.0.0/.github/workflows/strictacode.yml +43 -0
  5. goga-0.0.0/.github/workflows/tests.yml +14 -0
  6. goga-0.0.0/.gitignore +222 -0
  7. goga-0.0.0/.qarium/ai/employees/devops.md +27 -0
  8. goga-0.0.0/.qarium/ai/employees/lead.md +28 -0
  9. goga-0.0.0/.qarium/ai/employees/qa.md +46 -0
  10. goga-0.0.0/.qarium/ai/employees/tech-writer.md +25 -0
  11. goga-0.0.0/.strictacode.yml +3 -0
  12. goga-0.0.0/.usages/codemanifest/dsl.md +526 -0
  13. goga-0.0.0/.usages/development/conventions.md +64 -0
  14. goga-0.0.0/.usages/tools/click.md +183 -0
  15. goga-0.0.0/.usages/tools/ralphex.md +151 -0
  16. goga-0.0.0/Dockerfile +19 -0
  17. goga-0.0.0/PKG-INFO +25 -0
  18. goga-0.0.0/README.md +1 -0
  19. goga-0.0.0/docs/cli-reference.md +1 -0
  20. goga-0.0.0/docs/examples.md +1 -0
  21. goga-0.0.0/docs/getting-started.md +1 -0
  22. goga-0.0.0/docs/index.md +3 -0
  23. goga-0.0.0/docs/overrides/main.html +68 -0
  24. goga-0.0.0/goga/CODEMANIFEST +39 -0
  25. goga-0.0.0/goga/__init__.py +4 -0
  26. goga-0.0.0/goga/__main__.py +4 -0
  27. goga-0.0.0/goga/agent/commands/clarify.md +20 -0
  28. goga-0.0.0/goga/agent/commands/design.md +25 -0
  29. goga-0.0.0/goga/agent/commands/plan.md +22 -0
  30. goga-0.0.0/goga/agent/commands/verify.md +23 -0
  31. goga-0.0.0/goga/agent/skills/clarify-design/SKILL.md +202 -0
  32. goga-0.0.0/goga/agent/skills/design-by-changes/SKILL.md +184 -0
  33. goga-0.0.0/goga/agent/skills/design-by-changes/design-doc-template.md +162 -0
  34. goga-0.0.0/goga/agent/skills/plan-by-design/README.md +42 -0
  35. goga-0.0.0/goga/agent/skills/plan-by-design/SKILL.md +626 -0
  36. goga-0.0.0/goga/agent/skills/plan-by-design/conventions.md +297 -0
  37. goga-0.0.0/goga/agent/skills/plan-by-design/dsl-spec.md +630 -0
  38. goga-0.0.0/goga/agent/skills/plan-by-design/example.md +231 -0
  39. goga-0.0.0/goga/agent/skills/plan-by-design/output-template.md +180 -0
  40. goga-0.0.0/goga/agent/skills/verify-plan/SKILL.md +248 -0
  41. goga-0.0.0/goga/ast/CODEMANIFEST +165 -0
  42. goga-0.0.0/goga/ast/__init__.py +5 -0
  43. goga-0.0.0/goga/ast/analyzer/CODEMANIFEST +45 -0
  44. goga-0.0.0/goga/ast/analyzer/__init__.py +5 -0
  45. goga-0.0.0/goga/ast/analyzer/analyzer.py +27 -0
  46. goga-0.0.0/goga/ast/ast.py +271 -0
  47. goga-0.0.0/goga/ast/errors/CODEMANIFEST +110 -0
  48. goga-0.0.0/goga/ast/errors/__init__.py +11 -0
  49. goga-0.0.0/goga/ast/errors/ast.py +50 -0
  50. goga-0.0.0/goga/ast/errors/base.py +12 -0
  51. goga-0.0.0/goga/ast/errors/document.py +60 -0
  52. goga-0.0.0/goga/ast/factory/CODEMANIFEST +104 -0
  53. goga-0.0.0/goga/ast/factory/__init__.py +5 -0
  54. goga-0.0.0/goga/ast/factory/factory.py +634 -0
  55. goga-0.0.0/goga/ast/nodes/CODEMANIFEST +184 -0
  56. goga-0.0.0/goga/ast/nodes/__init__.py +24 -0
  57. goga-0.0.0/goga/ast/nodes/base.py +13 -0
  58. goga-0.0.0/goga/ast/nodes/body.py +49 -0
  59. goga-0.0.0/goga/ast/nodes/common.py +14 -0
  60. goga-0.0.0/goga/ast/nodes/document.py +47 -0
  61. goga-0.0.0/goga/ast/nodes/footer.py +12 -0
  62. goga-0.0.0/goga/ast/nodes/header.py +37 -0
  63. goga-0.0.0/goga/ast/rules/CODEMANIFEST +411 -0
  64. goga-0.0.0/goga/ast/rules/__init__.py +53 -0
  65. goga-0.0.0/goga/ast/rules/ast.py +171 -0
  66. goga-0.0.0/goga/ast/rules/document.py +841 -0
  67. goga-0.0.0/goga/ast/rules/tools.py +23 -0
  68. goga-0.0.0/goga/ast/visitor/CODEMANIFEST +45 -0
  69. goga-0.0.0/goga/ast/visitor/__init__.py +5 -0
  70. goga-0.0.0/goga/ast/visitor/visitor.py +28 -0
  71. goga-0.0.0/goga/cli.py +15 -0
  72. goga-0.0.0/goga/commands/CODEMANIFEST +194 -0
  73. goga-0.0.0/goga/commands/__init__.py +5 -0
  74. goga-0.0.0/goga/commands/build.py +247 -0
  75. goga-0.0.0/goga/commands/init.py +79 -0
  76. goga-0.0.0/goga/commands/linter.py +41 -0
  77. goga-0.0.0/goga/config/__init__.py +0 -0
  78. goga-0.0.0/goga/config/defaults/agents/documentation.txt +0 -0
  79. goga-0.0.0/goga/config/defaults/agents/implementation.txt +0 -0
  80. goga-0.0.0/goga/config/defaults/agents/quality.txt +0 -0
  81. goga-0.0.0/goga/config/defaults/agents/simplification.txt +0 -0
  82. goga-0.0.0/goga/config/defaults/agents/testing.txt +0 -0
  83. goga-0.0.0/goga/config/defaults/prompts/codex.txt +0 -0
  84. goga-0.0.0/goga/config/defaults/prompts/review_first.txt +0 -0
  85. goga-0.0.0/goga/config/defaults/prompts/review_second.txt +0 -0
  86. goga-0.0.0/goga/config/defaults/prompts/task.txt +0 -0
  87. goga-0.0.0/goga.egg-info/PKG-INFO +25 -0
  88. goga-0.0.0/goga.egg-info/SOURCES.txt +180 -0
  89. goga-0.0.0/goga.egg-info/dependency_links.txt +1 -0
  90. goga-0.0.0/goga.egg-info/entry_points.txt +2 -0
  91. goga-0.0.0/goga.egg-info/requires.txt +11 -0
  92. goga-0.0.0/goga.egg-info/top_level.txt +1 -0
  93. goga-0.0.0/mkdocs.yml +39 -0
  94. goga-0.0.0/pyproject.toml +108 -0
  95. goga-0.0.0/setup.cfg +4 -0
  96. goga-0.0.0/tests/.project/all_usages_is_used/.expected.yaml +6 -0
  97. goga-0.0.0/tests/.project/all_usages_is_used/CODEMANIFEST +15 -0
  98. goga-0.0.0/tests/.project/all_usages_is_used_entity/.expected.yaml +6 -0
  99. goga-0.0.0/tests/.project/all_usages_is_used_entity/CODEMANIFEST +14 -0
  100. goga-0.0.0/tests/.project/all_usages_is_used_method/.expected.yaml +6 -0
  101. goga-0.0.0/tests/.project/all_usages_is_used_method/CODEMANIFEST +13 -0
  102. goga-0.0.0/tests/.project/all_usages_is_used_property/.expected.yaml +6 -0
  103. goga-0.0.0/tests/.project/all_usages_is_used_property/CODEMANIFEST +13 -0
  104. goga-0.0.0/tests/.project/all_usages_is_used_routine/.expected.yaml +6 -0
  105. goga-0.0.0/tests/.project/all_usages_is_used_routine/CODEMANIFEST +12 -0
  106. goga-0.0.0/tests/.project/annotation_links_entity/.expected.yaml +14 -0
  107. goga-0.0.0/tests/.project/annotation_links_entity/CODEMANIFEST +16 -0
  108. goga-0.0.0/tests/.project/annotation_links_exists/.expected.yaml +9 -0
  109. goga-0.0.0/tests/.project/annotation_links_exists/CODEMANIFEST +9 -0
  110. goga-0.0.0/tests/.project/annotation_links_method/.expected.yaml +9 -0
  111. goga-0.0.0/tests/.project/annotation_links_method/CODEMANIFEST +11 -0
  112. goga-0.0.0/tests/.project/annotation_links_property/.expected.yaml +9 -0
  113. goga-0.0.0/tests/.project/annotation_links_property/CODEMANIFEST +11 -0
  114. goga-0.0.0/tests/.project/annotation_links_routine/.expected.yaml +10 -0
  115. goga-0.0.0/tests/.project/annotation_links_routine/CODEMANIFEST +13 -0
  116. goga-0.0.0/tests/.project/embedded_entity_can_not_has_mutations/.expected.yaml +6 -0
  117. goga-0.0.0/tests/.project/embedded_entity_can_not_has_mutations/CODEMANIFEST +19 -0
  118. goga-0.0.0/tests/.project/embedded_entity_can_not_has_mutations/embedded_entity_can_not_has_mutations_helper/CODEMANIFEST +17 -0
  119. goga-0.0.0/tests/.project/embedded_type_has_low_level/CODEMANIFEST +11 -0
  120. goga-0.0.0/tests/.project/embedded_type_has_low_level/embedded_type_has_low_level_helper/.expected.yaml +9 -0
  121. goga-0.0.0/tests/.project/embedded_type_has_low_level/embedded_type_has_low_level_helper/CODEMANIFEST +17 -0
  122. goga-0.0.0/tests/.project/entities_and_routines_has_not_conflicts/.expected.yaml +21 -0
  123. goga-0.0.0/tests/.project/entities_and_routines_has_not_conflicts/CODEMANIFEST +14 -0
  124. goga-0.0.0/tests/.project/entities_and_routines_has_not_conflicts_helper/CODEMANIFEST +8 -0
  125. goga-0.0.0/tests/.project/entity_has_only_valid_keys/.expected.yaml +19 -0
  126. goga-0.0.0/tests/.project/entity_has_only_valid_keys/CODEMANIFEST +15 -0
  127. goga-0.0.0/tests/.project/import_has_not_duplicate/.expected.yaml +53 -0
  128. goga-0.0.0/tests/.project/import_has_not_duplicate/CODEMANIFEST +16 -0
  129. goga-0.0.0/tests/.project/import_has_not_duplicate_helper/CODEMANIFEST +13 -0
  130. goga-0.0.0/tests/.project/import_has_not_duplicate_helper2/CODEMANIFEST +8 -0
  131. goga-0.0.0/tests/.project/import_has_type/.expected.yaml +6 -0
  132. goga-0.0.0/tests/.project/import_has_type/CODEMANIFEST +9 -0
  133. goga-0.0.0/tests/.project/import_has_type/import_has_type_helper/CODEMANIFEST +8 -0
  134. goga-0.0.0/tests/.project/import_has_valid_from_path/CODEMANIFEST +13 -0
  135. goga-0.0.0/tests/.project/import_has_valid_from_path/import_has_valid_from_path_helper/.expected.yaml +46 -0
  136. goga-0.0.0/tests/.project/import_has_valid_from_path/import_has_valid_from_path_helper/CODEMANIFEST +17 -0
  137. goga-0.0.0/tests/.project/import_is_used/.expected.yaml +13 -0
  138. goga-0.0.0/tests/.project/import_is_used/CODEMANIFEST +35 -0
  139. goga-0.0.0/tests/.project/import_is_used_helper/CODEMANIFEST +33 -0
  140. goga-0.0.0/tests/.project/import_type_exists/.expected.yaml +16 -0
  141. goga-0.0.0/tests/.project/import_type_exists/CODEMANIFEST +11 -0
  142. goga-0.0.0/tests/.project/import_type_exists_helper/CODEMANIFEST +8 -0
  143. goga-0.0.0/tests/.project/imports_can_not_be_empty/.expected.yaml +6 -0
  144. goga-0.0.0/tests/.project/imports_can_not_be_empty/CODEMANIFEST +11 -0
  145. goga-0.0.0/tests/.project/imports_has_not_cyclical_deps/.expected.yaml +16 -0
  146. goga-0.0.0/tests/.project/imports_has_not_cyclical_deps/CODEMANIFEST +11 -0
  147. goga-0.0.0/tests/.project/imports_has_not_cyclical_deps_helper/CODEMANIFEST +11 -0
  148. goga-0.0.0/tests/.project/imports_has_only_valid_keys/.expected.yaml +18 -0
  149. goga-0.0.0/tests/.project/imports_has_only_valid_keys/CODEMANIFEST +12 -0
  150. goga-0.0.0/tests/.project/imports_has_only_valid_keys_helper/CODEMANIFEST +8 -0
  151. goga-0.0.0/tests/.project/mutation_exists/.expected.yaml +40 -0
  152. goga-0.0.0/tests/.project/mutation_exists/CODEMANIFEST +43 -0
  153. goga-0.0.0/tests/.project/mutation_is_valid/.expected.yaml +40 -0
  154. goga-0.0.0/tests/.project/mutation_is_valid/CODEMANIFEST +33 -0
  155. goga-0.0.0/tests/.project/return_type_has_link/.expected.yaml +14 -0
  156. goga-0.0.0/tests/.project/return_type_has_link/CODEMANIFEST +16 -0
  157. goga-0.0.0/tests/.project/routine_has_only_valid_keys/.expected.yaml +11 -0
  158. goga-0.0.0/tests/.project/routine_has_only_valid_keys/CODEMANIFEST +9 -0
  159. goga-0.0.0/tests/.project/signature_is_valid/.expected.yaml +24 -0
  160. goga-0.0.0/tests/.project/signature_is_valid/CODEMANIFEST +31 -0
  161. goga-0.0.0/tests/.project/usage_links_has_not_conflicts/.expected.yaml +6 -0
  162. goga-0.0.0/tests/.project/usage_links_has_not_conflicts/CODEMANIFEST +15 -0
  163. goga-0.0.0/tests/.project/usage_links_has_not_conflicts_helper/CODEMANIFEST +8 -0
  164. goga-0.0.0/tests/__init__.py +0 -0
  165. goga-0.0.0/tests/conftest.py +8 -0
  166. goga-0.0.0/tests/goga/__init__.py +0 -0
  167. goga-0.0.0/tests/goga/ast/__init__.py +0 -0
  168. goga-0.0.0/tests/goga/ast/test_analyzer.py +160 -0
  169. goga-0.0.0/tests/goga/ast/test_ast_integration.py +66 -0
  170. goga-0.0.0/tests/goga/ast/test_codemanifest_ast.py +1379 -0
  171. goga-0.0.0/tests/goga/ast/test_errors.py +222 -0
  172. goga-0.0.0/tests/goga/ast/test_factory.py +1380 -0
  173. goga-0.0.0/tests/goga/ast/test_factory_node_props.py +511 -0
  174. goga-0.0.0/tests/goga/ast/test_nodes.py +316 -0
  175. goga-0.0.0/tests/goga/ast/test_rules.py +2003 -0
  176. goga-0.0.0/tests/goga/ast/test_visitor.py +91 -0
  177. goga-0.0.0/tests/goga/commands/__init__.py +0 -0
  178. goga-0.0.0/tests/goga/commands/test_build.py +527 -0
  179. goga-0.0.0/tests/goga/commands/test_init.py +211 -0
  180. goga-0.0.0/tests/goga/commands/test_linter.py +230 -0
  181. goga-0.0.0/tests/goga/test_cli.py +109 -0
  182. goga-0.0.0/tests/test_goga.py +6 -0
@@ -0,0 +1,26 @@
1
+ name: Release docs
2
+ on:
3
+ push:
4
+ branches:
5
+ - '[0-9]+.[0-9]+.x'
6
+
7
+ permissions:
8
+ contents: write
9
+
10
+ jobs:
11
+ deploy:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Configure Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: 3.x
20
+
21
+ - name: Install dependencies
22
+ run: |
23
+ pip install -e ".[docs]"
24
+
25
+ - name: Build and Deploy
26
+ run: mkdocs gh-deploy --force
@@ -0,0 +1,19 @@
1
+ name: Lint
2
+ on:
3
+ push:
4
+ branches:
5
+ - '[0-9]+.[0-9]+.x'
6
+ pull_request:
7
+ branches:
8
+ - '[0-9]+.[0-9]+.x'
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: astral-sh/ruff-action@v3
15
+ with:
16
+ args: check goga/ tests/
17
+ - uses: astral-sh/ruff-action@v3
18
+ with:
19
+ args: format --check goga/ tests/
@@ -0,0 +1,17 @@
1
+ name: Publish Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions:
7
+ contents: write
8
+ id-token: write
9
+
10
+ jobs:
11
+ release:
12
+ uses: qarium/ci/.github/workflows/library-publish.yml@0.0.x
13
+ with:
14
+ src-package: 'goga'
15
+ secrets:
16
+ PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
17
+ ZAI_TOKEN: ${{ secrets.ZAI_TOKEN }}
@@ -0,0 +1,43 @@
1
+ name: Strictacode
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - '[0-9]+.[0-9]+.x'
7
+ pull_request:
8
+ branches:
9
+ - '[0-9]+.[0-9]+.x'
10
+
11
+ jobs:
12
+ analyze:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ with:
17
+ fetch-depth: 0
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.13"
22
+
23
+ - uses: actions/cache@v4
24
+ with:
25
+ path: ~/.cache/pip
26
+ key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
27
+ restore-keys: |
28
+ ${{ runner.os }}-pip-
29
+
30
+ - uses: qarium/strictacode/.github/actions/analyze@0.0.x
31
+ with:
32
+ install-cmd: pip install strictacode
33
+ working-directory: goga
34
+ env:
35
+ STRICTACODE_SCORE: 40
36
+ STRICTACODE_RP: 40
37
+ STRICTACODE_SCORE_DIFF: 3
38
+ STRICTACODE_RP_DIFF: 5
39
+ STRICTACODE_OP: 40
40
+ STRICTACODE_IMB: 35
41
+ STRICTACODE_DENSITY: 30
42
+ STRICTACODE_OP_DIFF: 5
43
+ STRICTACODE_DENSITY_DIFF: 3
@@ -0,0 +1,14 @@
1
+ name: Tests
2
+ on:
3
+ push:
4
+ branches:
5
+ - '[0-9]+.[0-9]+.x'
6
+ pull_request:
7
+ branches:
8
+ - '[0-9]+.[0-9]+.x'
9
+
10
+ jobs:
11
+ test:
12
+ uses: qarium/ci/.github/workflows/library-tests.yml@0.0.x
13
+ with:
14
+ python-versions: '["3.10", "3.11", "3.12", "3.13", "3.14"]'
goga-0.0.0/.gitignore ADDED
@@ -0,0 +1,222 @@
1
+ # goga: ralphex config managed by goga
2
+ .goga/prompts/*.txt
3
+ .goga/agents/*.txt
4
+ .goga/config
5
+
6
+ # Byte-compiled / optimized / DLL files
7
+ __pycache__/
8
+ *.py[codz]
9
+ *$py.class
10
+
11
+ # C extensions
12
+ *.so
13
+
14
+ # Distribution / packaging
15
+ .Python
16
+ build/
17
+ develop-eggs/
18
+ dist/
19
+ downloads/
20
+ eggs/
21
+ .eggs/
22
+ lib/
23
+ lib64/
24
+ parts/
25
+ sdist/
26
+ var/
27
+ wheels/
28
+ share/python-wheels/
29
+ *.egg-info/
30
+ .installed.cfg
31
+ *.egg
32
+ /MANIFEST
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .nox/
48
+ .coverage
49
+ .coverage.*
50
+ .cache
51
+ nosetests.xml
52
+ coverage.xml
53
+ *.cover
54
+ *.py.cover
55
+ .hypothesis/
56
+ .pytest_cache/
57
+ cover/
58
+
59
+ # Translations
60
+ *.mo
61
+ *.pot
62
+
63
+ # Django stuff:
64
+ *.log
65
+ local_settings.py
66
+ db.sqlite3
67
+ db.sqlite3-journal
68
+
69
+ # Flask stuff:
70
+ instance/
71
+ .webassets-cache
72
+
73
+ # Scrapy stuff:
74
+ .scrapy
75
+
76
+ # Sphinx documentation
77
+ docs/_build/
78
+
79
+ # PyBuilder
80
+ .pybuilder/
81
+ target/
82
+
83
+ # Jupyter Notebook
84
+ .ipynb_checkpoints
85
+
86
+ # IPython
87
+ profile_default/
88
+ ipython_config.py
89
+
90
+ # pyenv
91
+ # For a library or package, you might want to ignore these files since the code is
92
+ # intended to run in multiple environments; otherwise, check them in:
93
+ # .python-version
94
+
95
+ # pipenv
96
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
97
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
98
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
99
+ # install all needed dependencies.
100
+ #Pipfile.lock
101
+
102
+ # UV
103
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
104
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
105
+ # commonly ignored for libraries.
106
+ #uv.lock
107
+
108
+ # poetry
109
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
110
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
111
+ # commonly ignored for libraries.
112
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
113
+ #poetry.lock
114
+ #poetry.toml
115
+
116
+ # pdm
117
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
118
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
119
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
120
+ #pdm.lock
121
+ #pdm.toml
122
+ .pdm-python
123
+ .pdm-build/
124
+
125
+ # pixi
126
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
127
+ #pixi.lock
128
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
129
+ # in the .venv directory. It is recommended not to include this directory in version control.
130
+ .pixi
131
+
132
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
133
+ __pypackages__/
134
+
135
+ # Celery stuff
136
+ celerybeat-schedule
137
+ celerybeat.pid
138
+
139
+ # SageMath parsed files
140
+ *.sage.py
141
+
142
+ # Environments
143
+ .env
144
+ .envrc
145
+ .venv
146
+ env/
147
+ venv/
148
+ ENV/
149
+ env.bak/
150
+ venv.bak/
151
+
152
+ # Spyder project settings
153
+ .spyderproject
154
+ .spyproject
155
+
156
+ # Rope project settings
157
+ .ropeproject
158
+
159
+ # mkdocs documentation
160
+ /site
161
+
162
+ # mypy
163
+ .mypy_cache/
164
+ .dmypy.json
165
+ dmypy.json
166
+
167
+ # Pyre type checker
168
+ .pyre/
169
+
170
+ # pytype static type analyzer
171
+ .pytype/
172
+
173
+ # Cython debug symbols
174
+ cython_debug/
175
+
176
+ # PyCharm
177
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
178
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
179
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
180
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
181
+ #.idea/
182
+
183
+ # Abstra
184
+ # Abstra is an AI-powered process automation framework.
185
+ # Ignore directories containing user credentials, local state, and settings.
186
+ # Learn more at https://abstra.io/docs
187
+ .abstra/
188
+
189
+ # Visual Studio Code
190
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
191
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
192
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
193
+ # you could uncomment the following to ignore the entire vscode folder
194
+ # .vscode/
195
+
196
+ # Ruff stuff:
197
+ .ruff_cache/
198
+
199
+ # PyPI configuration file
200
+ .pypirc
201
+
202
+ # Cursor
203
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
204
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
205
+ # refer to https://docs.cursor.com/context/ignore-files
206
+ .cursorignore
207
+ .cursorindexingignore
208
+
209
+ # Marimo
210
+ marimo/_static/
211
+ marimo/_lsp/
212
+ __marimo__/
213
+
214
+ # IDE
215
+ .idea/
216
+
217
+ # AI
218
+ .claude/
219
+ .ralphex/
220
+ docs/plans/
221
+ docs/design/
222
+ docs/superpowers/
@@ -0,0 +1,27 @@
1
+ # DevOps
2
+
3
+ ## Config
4
+
5
+ | Key | Value | Description |
6
+ |----------------|------------------|---------------------------------------------|
7
+ | ci_provider | github-actions | CI provider |
8
+ | trigger_branch | 0.0.x | Default branch for triggers |
9
+ | diff_range | HEAD~5 | Git diff range for auto-analysis in feature |
10
+
11
+ ## Rules
12
+
13
+ ### Workflow Registry
14
+
15
+ | Workflow | File | Trigger | Purpose |
16
+ |-------------|--------------------|----------------------------|--------------------------------|
17
+ | Lint | lint.yml | push/PR to 0.0.x | Ruff lint + format check |
18
+ | Tests | tests.yml | push/PR to 0.0.x | Pytest via reusable workflow |
19
+ | Docs | docs.yml | push to 0.0.x | MkDocs deploy to GitHub Pages |
20
+ | Strictacode | strictacode.yml | push/PR to 0.0.x | Code quality analysis |
21
+
22
+ ### Conventions
23
+
24
+ ## Lessons
25
+
26
+ | Problem | Why | How to prevent |
27
+ |---------|-----|----------------|
@@ -0,0 +1,28 @@
1
+ # Lead
2
+
3
+ ## Config
4
+
5
+ | Key | Value | Description |
6
+ |----------------|--------|----------------------------------------------|
7
+ | default_branch | 0.0.x | Default branch for CI triggers and diff base |
8
+
9
+ ## Architecture & Decisions
10
+ - **setuptools + setuptools-scm for versioning** — automatic version from git tags, no manual version management
11
+ - **MIT license** — permissive license for broad adoption
12
+
13
+ ## Project Structure
14
+ - **goga/ — package root** — source code package matching project name
15
+
16
+ ## Code Patterns
17
+ <!-- empty — no source code to analyze yet -->
18
+
19
+ ## TODO
20
+ <!-- empty -->
21
+
22
+ ## LLM Directives
23
+ <!-- empty -->
24
+
25
+ ## Lessons
26
+
27
+ | Problem | Why | How to prevent |
28
+ |---------|-----|----------------|
@@ -0,0 +1,46 @@
1
+ ## Config
2
+
3
+ | Setting | Value |
4
+ |------------------|------------------------------------|
5
+ | run_tests_cmd | `pytest --tb=short` |
6
+ | lint_cmd | `ruff check goga/ tests/` |
7
+ | lint_fix_cmd | `ruff check --fix goga/ tests/` |
8
+ | format_cmd | `ruff format --check goga/ tests/` |
9
+ | format_fix_cmd | `ruff format goga/ tests/` |
10
+
11
+ ## Rules
12
+
13
+ Project test configuration. Used by the `qarium:employees:qa:feature` skill.
14
+
15
+ ### Mapping
16
+
17
+ | Source path pattern | Test directory | Notes |
18
+ |---------------------|--------------------|---------------|
19
+ | `goga/**/*.py` | `tests/goga/` | Mirror layout |
20
+
21
+ ### Mock Patterns
22
+
23
+ | Pattern | Example |
24
+ |---------|---------|
25
+ | tmp_path for CODEMANIFEST fixtures | `tmp_path / "pkg" / "CODEMANIFEST"` write YAML, pass dir to Factory |
26
+
27
+ ### Helpers
28
+
29
+ | Helper | Location | Purpose |
30
+ |--------|----------|---------|
31
+ | `_write_codemanifest(directory, content) -> str` | `tests/goga/ast/test_factory.py` | Writes a CODEMANIFEST YAML file into a directory and returns the dir path |
32
+ | `_write_codemanifest(directory, content) -> str` | `tests/goga/ast/test_factory_node_props.py` | Same helper — writes a CODEMANIFEST YAML file into a directory |
33
+
34
+ ### Conventions
35
+
36
+ - Naming: `test_<what>_<scenario>`
37
+ - Never mock `builtins.open` — use `tmp_path` fixture
38
+ - Use `pathlib.Path` instead of `os.path` — project enforces PTH rules via ruff
39
+ - Integration tests use `pytest.mark.skipif` when external tools unavailable
40
+ - Python 3.10 compatibility: use `from __future__ import annotations` in source files; use `Optional[X]` not `X | None` in dataclass fields (ruff UP045)
41
+ - `DocumentRuleError` is the canonical name — import from `goga.ast.errors`
42
+
43
+ ## Lessons
44
+
45
+ | Problem | Why | How to prevent |
46
+ |---------|-----|----------------|
@@ -0,0 +1,25 @@
1
+ # Tech Writer Config
2
+
3
+ ## Config
4
+
5
+ | Key | Value | Description |
6
+ |---------------|----------------------------|-------------------------------------|
7
+ | build_cmd | `mkdocs build` | Build validation command |
8
+ | deploy_cmd | `mkdocs gh-deploy --force` | Deploy command |
9
+ | examples_file | `docs/examples.md` | File for usage examples |
10
+ | logo_url | `https://avatars.githubusercontent.com/u/262344922?s=200&v=4` | Standard qarium logo |
11
+ | base_branch | `0.0.x` | Base branch for git diff comparison |
12
+
13
+ ## Rules
14
+
15
+ ### Mapping
16
+
17
+ | Source path | Documentation files |
18
+ |-------------|---------------------|
19
+
20
+ ### Conventions
21
+
22
+ ## Lessons
23
+
24
+ | Problem | Why | How to prevent |
25
+ |---------|-----|----------------|
@@ -0,0 +1,3 @@
1
+ loader:
2
+ exclude:
3
+ - tests