token-saver-meta 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. token_saver_meta-0.1.0/.claude-plugin/plugin.json +17 -0
  2. token_saver_meta-0.1.0/.gitattributes +9 -0
  3. token_saver_meta-0.1.0/.github/workflows/publish-npm.yml +23 -0
  4. token_saver_meta-0.1.0/.github/workflows/publish-pypi.yml +33 -0
  5. token_saver_meta-0.1.0/.gitignore +25 -0
  6. token_saver_meta-0.1.0/.kilo/agent/repo-syncer.md +34 -0
  7. token_saver_meta-0.1.0/.kilo/command/repo-sync.md +31 -0
  8. token_saver_meta-0.1.0/.kilo/skills/token-saver/caveman/SKILL.md +78 -0
  9. token_saver_meta-0.1.0/.kilo/skills/token-saver/kevin-copilot/SKILL.md +341 -0
  10. token_saver_meta-0.1.0/.kilo/skills/token-saver/kevin-copilot/copilot-instructions.md +88 -0
  11. token_saver_meta-0.1.0/.kilo/skills/token-saver/lg-token-saver/SKILL.md +154 -0
  12. token_saver_meta-0.1.0/.npmignore +46 -0
  13. token_saver_meta-0.1.0/.omo/boulder.json +247 -0
  14. token_saver_meta-0.1.0/.omo/drafts/mcp-system-wide-auto-start.md +130 -0
  15. token_saver_meta-0.1.0/.omo/drafts/standalone-repo-setup.md +110 -0
  16. token_saver_meta-0.1.0/.omo/drafts/unified-naming.md +32 -0
  17. token_saver_meta-0.1.0/.omo/evidence/task-00-caveman-paths.txt +0 -0
  18. token_saver_meta-0.1.0/.omo/evidence/task-00-codesight-help.txt +0 -0
  19. token_saver_meta-0.1.0/.omo/evidence/task-00-contextslim.txt +0 -0
  20. token_saver_meta-0.1.0/.omo/evidence/task-00-kevin-paths.txt +0 -0
  21. token_saver_meta-0.1.0/.omo/evidence/task-00-repomix-help.txt +0 -0
  22. token_saver_meta-0.1.0/.omo/evidence/task-00-rtk-releases.json +0 -0
  23. token_saver_meta-0.1.0/.omo/evidence/task-1-list-platforms.txt +0 -0
  24. token_saver_meta-0.1.0/.omo/evidence/task-1-matrix-valid.txt +0 -0
  25. token_saver_meta-0.1.0/.omo/evidence/task-1-standalone-repo-setup.txt +0 -0
  26. token_saver_meta-0.1.0/.omo/evidence/task-10-standalone-repo-setup.txt +0 -0
  27. token_saver_meta-0.1.0/.omo/evidence/task-11-standalone-repo-setup.txt +0 -0
  28. token_saver_meta-0.1.0/.omo/evidence/task-2-standalone-repo-setup.txt +0 -0
  29. token_saver_meta-0.1.0/.omo/evidence/task-2-verify.py +37 -0
  30. token_saver_meta-0.1.0/.omo/evidence/task-3-standalone-repo-setup.txt +0 -0
  31. token_saver_meta-0.1.0/.omo/evidence/task-4-standalone-repo-setup.txt +0 -0
  32. token_saver_meta-0.1.0/.omo/evidence/task-5-6-7-verify.py +56 -0
  33. token_saver_meta-0.1.0/.omo/evidence/task-5-standalone-repo-setup.txt +0 -0
  34. token_saver_meta-0.1.0/.omo/evidence/task-6-standalone-repo-setup.txt +0 -0
  35. token_saver_meta-0.1.0/.omo/evidence/task-7-standalone-repo-setup.txt +0 -0
  36. token_saver_meta-0.1.0/.omo/evidence/task-9-standalone-repo-setup.txt +0 -0
  37. token_saver_meta-0.1.0/.omo/plans/mcp-system-wide-auto-start.md +612 -0
  38. token_saver_meta-0.1.0/.omo/plans/phase07-core-bundle-implementation.md +1747 -0
  39. token_saver_meta-0.1.0/.omo/plans/standalone-repo-setup.md +344 -0
  40. token_saver_meta-0.1.0/.omo/plans/unified-naming.md +60 -0
  41. token_saver_meta-0.1.0/.omo/run-continuation/ses_120184a41ffeoyBwAl1Cy3KOL5.json +10 -0
  42. token_saver_meta-0.1.0/.omo/run-continuation/ses_1201bfcf0ffep6t7mA8ReK2wBn.json +10 -0
  43. token_saver_meta-0.1.0/.omo/run-continuation/ses_12145d401ffexN8iAUl3lngC01.json +10 -0
  44. token_saver_meta-0.1.0/.omo/run-continuation/ses_12158aa19ffeCDAdbWHTHxsaBx.json +10 -0
  45. token_saver_meta-0.1.0/.omo/run-continuation/ses_121ac6867ffe60IrAL8dWBSW0L.json +10 -0
  46. token_saver_meta-0.1.0/.omo/run-continuation/ses_121aedc07ffe3de3FuSpDQW7K5.json +10 -0
  47. token_saver_meta-0.1.0/.omo/run-continuation/ses_121df67b8ffeUvrKtcg3Ke7BZF.json +10 -0
  48. token_saver_meta-0.1.0/.omo/run-continuation/ses_1230a9ae3ffeMbtq5ugY3PJ6WU.json +10 -0
  49. token_saver_meta-0.1.0/.omo/run-continuation/ses_124ca22b3ffesZNq3scnsZywM6.json +10 -0
  50. token_saver_meta-0.1.0/.omo/run-continuation/ses_13b3e7b26ffejYySYmPAojixKJ.json +10 -0
  51. token_saver_meta-0.1.0/.omo/run-continuation/ses_13e1ba9ffffeojgujkGQnD6nec.json +10 -0
  52. token_saver_meta-0.1.0/.omo/run-continuation/ses_13e286e52ffe7w6uvLiQInLFNz.json +10 -0
  53. token_saver_meta-0.1.0/AGENTS.md +221 -0
  54. token_saver_meta-0.1.0/BESTS.md +100 -0
  55. token_saver_meta-0.1.0/CLAUDE.md +57 -0
  56. token_saver_meta-0.1.0/LICENSE +201 -0
  57. token_saver_meta-0.1.0/MEMORY.md +74 -0
  58. token_saver_meta-0.1.0/PKG-INFO +64 -0
  59. token_saver_meta-0.1.0/README.md +34 -0
  60. token_saver_meta-0.1.0/cli.js +26 -0
  61. token_saver_meta-0.1.0/contextslim-py/.gitignore +6 -0
  62. token_saver_meta-0.1.0/contextslim-py/README.md +3 -0
  63. token_saver_meta-0.1.0/contextslim-py/pyproject.toml +45 -0
  64. token_saver_meta-0.1.0/contextslim-py/src/contextslim/__init__.py +7 -0
  65. token_saver_meta-0.1.0/contextslim-py/src/contextslim/__main__.py +11 -0
  66. token_saver_meta-0.1.0/contextslim-py/src/contextslim/analyzer/__init__.py +0 -0
  67. token_saver_meta-0.1.0/contextslim-py/src/contextslim/analyzer/project_context.py +125 -0
  68. token_saver_meta-0.1.0/contextslim-py/src/contextslim/analyzer/stack_detector.py +206 -0
  69. token_saver_meta-0.1.0/contextslim-py/src/contextslim/cli.py +424 -0
  70. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/__init__.py +0 -0
  71. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/brief.py +49 -0
  72. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/cat.py +85 -0
  73. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/config_cmd.py +203 -0
  74. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/deps.py +174 -0
  75. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/head.py +58 -0
  76. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/imports_cmd.py +61 -0
  77. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/ls_cmd.py +58 -0
  78. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/map_cmd.py +80 -0
  79. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/outline.py +76 -0
  80. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/summary_cmd.py +142 -0
  81. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/tree_cmd.py +69 -0
  82. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/code/types_cmd.py +60 -0
  83. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/db/__init__.py +0 -0
  84. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/db/dbdiff.py +82 -0
  85. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/db/dbquery.py +73 -0
  86. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/db/dbsample.py +66 -0
  87. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/db/dbschema.py +87 -0
  88. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/db/dbstats.py +76 -0
  89. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/git/__init__.py +0 -0
  90. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/git/changes.py +55 -0
  91. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/git/diff.py +98 -0
  92. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/search/__init__.py +0 -0
  93. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/search/errors.py +102 -0
  94. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/search/findfiles.py +65 -0
  95. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/search/grep.py +117 -0
  96. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/search/logs.py +34 -0
  97. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/search/todo.py +123 -0
  98. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/setup/__init__.py +0 -0
  99. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/setup/audit.py +211 -0
  100. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/setup/doctor.py +233 -0
  101. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/setup/init_cmd.py +191 -0
  102. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/__init__.py +0 -0
  103. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/disk.py +94 -0
  104. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/docker.py +128 -0
  105. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/envinfo.py +84 -0
  106. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/netinfo.py +55 -0
  107. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/packages.py +125 -0
  108. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/ports.py +87 -0
  109. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/procs.py +54 -0
  110. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/services.py +134 -0
  111. token_saver_meta-0.1.0/contextslim-py/src/contextslim/commands/system/sysinfo.py +77 -0
  112. token_saver_meta-0.1.0/contextslim-py/src/contextslim/compressor/__init__.py +29 -0
  113. token_saver_meta-0.1.0/contextslim-py/src/contextslim/compressor/code.py +141 -0
  114. token_saver_meta-0.1.0/contextslim-py/src/contextslim/compressor/db.py +97 -0
  115. token_saver_meta-0.1.0/contextslim-py/src/contextslim/compressor/text.py +103 -0
  116. token_saver_meta-0.1.0/contextslim-py/src/contextslim/config.py +85 -0
  117. token_saver_meta-0.1.0/contextslim-py/src/contextslim/generators/__init__.py +0 -0
  118. token_saver_meta-0.1.0/contextslim-py/src/contextslim/generators/ignore.py +134 -0
  119. token_saver_meta-0.1.0/contextslim-py/src/contextslim/generators/rules.py +263 -0
  120. token_saver_meta-0.1.0/contextslim-py/tests/__init__.py +1 -0
  121. token_saver_meta-0.1.0/contextslim-py/tests/commands/__init__.py +0 -0
  122. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_audit.py +164 -0
  123. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_brief.py +105 -0
  124. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_cat.py +171 -0
  125. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_changes.py +82 -0
  126. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_config.py +161 -0
  127. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_dbdiff.py +88 -0
  128. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_dbquery.py +76 -0
  129. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_dbsample.py +67 -0
  130. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_dbschema.py +73 -0
  131. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_dbstats.py +71 -0
  132. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_deps.py +237 -0
  133. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_diff.py +79 -0
  134. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_disk.py +64 -0
  135. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_docker.py +99 -0
  136. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_doctor.py +164 -0
  137. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_envinfo.py +102 -0
  138. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_errors.py +113 -0
  139. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_findfiles.py +87 -0
  140. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_grep.py +144 -0
  141. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_head.py +170 -0
  142. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_imports.py +97 -0
  143. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_init.py +128 -0
  144. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_logs.py +71 -0
  145. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_ls.py +90 -0
  146. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_map.py +210 -0
  147. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_netinfo.py +122 -0
  148. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_outline.py +115 -0
  149. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_packages.py +66 -0
  150. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_ports.py +85 -0
  151. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_procs.py +104 -0
  152. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_services.py +93 -0
  153. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_summary.py +102 -0
  154. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_sysinfo.py +87 -0
  155. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_todo.py +91 -0
  156. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_tree.py +86 -0
  157. token_saver_meta-0.1.0/contextslim-py/tests/commands/test_types.py +97 -0
  158. token_saver_meta-0.1.0/contextslim-py/tests/test_code_compressor.py +253 -0
  159. token_saver_meta-0.1.0/contextslim-py/tests/test_config.py +132 -0
  160. token_saver_meta-0.1.0/contextslim-py/tests/test_db_compressor.py +149 -0
  161. token_saver_meta-0.1.0/contextslim-py/tests/test_ignore.py +172 -0
  162. token_saver_meta-0.1.0/contextslim-py/tests/test_project_context.py +170 -0
  163. token_saver_meta-0.1.0/contextslim-py/tests/test_rules.py +153 -0
  164. token_saver_meta-0.1.0/contextslim-py/tests/test_stack_detector.py +159 -0
  165. token_saver_meta-0.1.0/contextslim-py/tests/test_text_compressor.py +179 -0
  166. token_saver_meta-0.1.0/contextslim-py/uv.lock +654 -0
  167. token_saver_meta-0.1.0/dashboard/index.html +37 -0
  168. token_saver_meta-0.1.0/distribution/README.md +41 -0
  169. token_saver_meta-0.1.0/distribution/agnostic/AGENTS.md +56 -0
  170. token_saver_meta-0.1.0/distribution/claude-code/CLAUDE.md +56 -0
  171. token_saver_meta-0.1.0/distribution/copilot/.github/copilot-instructions.md +56 -0
  172. token_saver_meta-0.1.0/distribution/cursor/.cursor/rules/token-saver.md +56 -0
  173. token_saver_meta-0.1.0/distribution/opencode/AGENTS.md +56 -0
  174. token_saver_meta-0.1.0/distribution/windsurf/.windsurfrules +57 -0
  175. token_saver_meta-0.1.0/docs/architecture-v2.md +598 -0
  176. token_saver_meta-0.1.0/docs/insight_registry.md +187 -0
  177. token_saver_meta-0.1.0/docs/insights_and_synergies.md +495 -0
  178. token_saver_meta-0.1.0/docs/publishing.md +50 -0
  179. token_saver_meta-0.1.0/docs/rewrite-strategy.md +434 -0
  180. token_saver_meta-0.1.0/docs/tool-assumptions.md +52 -0
  181. token_saver_meta-0.1.0/install.sh +85 -0
  182. token_saver_meta-0.1.0/kilo.json +7 -0
  183. token_saver_meta-0.1.0/opencode.jsonc +3 -0
  184. token_saver_meta-0.1.0/package.json +39 -0
  185. token_saver_meta-0.1.0/platforms/matrix.json +384 -0
  186. token_saver_meta-0.1.0/progress_docs/README.md +82 -0
  187. token_saver_meta-0.1.0/progress_docs/current.md +11 -0
  188. token_saver_meta-0.1.0/progress_docs/handovers/2026-06-14_phase05-06-complete_phase07-ready.md +126 -0
  189. token_saver_meta-0.1.0/progress_docs/handovers/phase07-core-bundle-implementation.md +346 -0
  190. token_saver_meta-0.1.0/progress_docs/logs/01-05-research.md +14 -0
  191. token_saver_meta-0.1.0/progress_docs/logs/06-scaffold.md +17 -0
  192. token_saver_meta-0.1.0/progress_docs/plans/07-core-bundle.md +47 -0
  193. token_saver_meta-0.1.0/progress_docs/plans/08-optional-modules.md +29 -0
  194. token_saver_meta-0.1.0/progress_docs/plans/09-distribution.md +27 -0
  195. token_saver_meta-0.1.0/progress_docs/plans/10-testing.md +27 -0
  196. token_saver_meta-0.1.0/progress_docs/plans/full.md +157 -0
  197. token_saver_meta-0.1.0/pyproject.toml +69 -0
  198. token_saver_meta-0.1.0/skills/caveman/SKILL.md +78 -0
  199. token_saver_meta-0.1.0/skills/combo-workflow/SKILL.md +28 -0
  200. token_saver_meta-0.1.0/skills/kevin-copilot/copilot-instructions.md +88 -0
  201. token_saver_meta-0.1.0/skills/kevin-copilot/unslop/SKILL.md +341 -0
  202. token_saver_meta-0.1.0/skills/lg-token-saver/SKILL.md +154 -0
  203. token_saver_meta-0.1.0/skills/token-saver/SKILL.md +61 -0
  204. token_saver_meta-0.1.0/src/__init__.py +0 -0
  205. token_saver_meta-0.1.0/src/agents_injector.py +103 -0
  206. token_saver_meta-0.1.0/src/cgc_installer.py +102 -0
  207. token_saver_meta-0.1.0/src/cli_installer.py +34 -0
  208. token_saver_meta-0.1.0/src/config_gen.py +525 -0
  209. token_saver_meta-0.1.0/src/dashboard.py +30 -0
  210. token_saver_meta-0.1.0/src/indexer.py +92 -0
  211. token_saver_meta-0.1.0/src/installer.py +178 -0
  212. token_saver_meta-0.1.0/src/mcp_installer.py +75 -0
  213. token_saver_meta-0.1.0/src/oneshot_installer.py +120 -0
  214. token_saver_meta-0.1.0/src/prerequisites.py +117 -0
  215. token_saver_meta-0.1.0/src/rtk_installer.py +192 -0
  216. token_saver_meta-0.1.0/src/skill_installer.py +82 -0
  217. token_saver_meta-0.1.0/src/summary.py +110 -0
  218. token_saver_meta-0.1.0/src/uninstall.py +151 -0
  219. token_saver_meta-0.1.0/templates/agents_md_section.md +56 -0
  220. token_saver_meta-0.1.0/tests/conftest.py +47 -0
  221. token_saver_meta-0.1.0/tests/test_agents_md_merge.py +105 -0
  222. token_saver_meta-0.1.0/tests/test_cgc_installer.py +70 -0
  223. token_saver_meta-0.1.0/tests/test_combo_regression.py +46 -0
  224. token_saver_meta-0.1.0/tests/test_e2e_pipeline.py +380 -0
  225. token_saver_meta-0.1.0/tests/test_installer_pipeline.py +268 -0
  226. token_saver_meta-0.1.0/tests/test_oneshot_installer.py +48 -0
  227. token_saver_meta-0.1.0/tests/test_prerequisites.py +98 -0
  228. token_saver_meta-0.1.0/tests/test_rtk_installer.py +83 -0
  229. token_saver_meta-0.1.0/tests/test_summary.py +52 -0
  230. token_saver_meta-0.1.0/tests/test_uninstall.py +93 -0
  231. token_saver_meta-0.1.0/tests/validation_prompt.md +84 -0
  232. token_saver_meta-0.1.0/token-saver-mem/.gitignore +6 -0
  233. token_saver_meta-0.1.0/token-saver-mem/README.md +3 -0
  234. token_saver_meta-0.1.0/token-saver-mem/pyproject.toml +40 -0
  235. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/__init__.py +3 -0
  236. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/__main__.py +5 -0
  237. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/cli.py +105 -0
  238. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/__init__.py +0 -0
  239. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/auto_summary.py +185 -0
  240. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/db.py +156 -0
  241. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/delta.py +104 -0
  242. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/gaps.py +88 -0
  243. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/indexer.py +338 -0
  244. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/models.py +55 -0
  245. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/staleness.py +80 -0
  246. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/code_memory/work_plan.py +161 -0
  247. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/server.py +86 -0
  248. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/__init__.py +0 -0
  249. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/bootstrap.py +369 -0
  250. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/caching.py +124 -0
  251. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/closure.py +117 -0
  252. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/continuity.py +380 -0
  253. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/extractor.py +356 -0
  254. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/session_memory/state.py +352 -0
  255. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/__init__.py +0 -0
  256. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/db.py +44 -0
  257. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/repository/__init__.py +17 -0
  258. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/repository/node_repo.py +129 -0
  259. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/repository/obs_repo.py +68 -0
  260. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/repository/session_repo.py +91 -0
  261. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/store/schema.sql +103 -0
  262. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/__init__.py +0 -0
  263. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/code/__init__.py +121 -0
  264. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/code/get_context.py +65 -0
  265. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/code/get_delta.py +23 -0
  266. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/code/search_symbols.py +102 -0
  267. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/code/store_understanding.py +50 -0
  268. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/session/__init__.py +109 -0
  269. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/session/bootstrap_context.py +40 -0
  270. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/session/completion_check.py +45 -0
  271. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/session/context_pack.py +34 -0
  272. token_saver_meta-0.1.0/token-saver-mem/src/token_saver_mem/tools/session/open_work.py +51 -0
  273. token_saver_meta-0.1.0/token-saver-mem/stress_high_pressure.py +518 -0
  274. token_saver_meta-0.1.0/token-saver-mem/tests/__init__.py +0 -0
  275. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/__init__.py +0 -0
  276. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/conftest.py +199 -0
  277. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/test_auto_summary.py +140 -0
  278. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/test_delta.py +76 -0
  279. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/test_gaps.py +109 -0
  280. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/test_indexer.py +182 -0
  281. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/test_staleness.py +108 -0
  282. token_saver_meta-0.1.0/token-saver-mem/tests/code_memory/test_work_plan.py +104 -0
  283. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/__init__.py +0 -0
  284. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/test_bootstrap.py +258 -0
  285. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/test_caching.py +131 -0
  286. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/test_closure.py +169 -0
  287. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/test_continuity.py +398 -0
  288. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/test_extractor.py +171 -0
  289. token_saver_meta-0.1.0/token-saver-mem/tests/session_memory/test_state.py +273 -0
  290. token_saver_meta-0.1.0/token-saver-mem/tests/test_cli.py +123 -0
  291. token_saver_meta-0.1.0/token-saver-mem/tests/test_db.py +312 -0
  292. token_saver_meta-0.1.0/token-saver-mem/tests/test_integration.py +572 -0
  293. token_saver_meta-0.1.0/token-saver-mem/tests/test_repositories.py +395 -0
  294. token_saver_meta-0.1.0/token-saver-mem/tests/test_server.py +236 -0
  295. token_saver_meta-0.1.0/token-saver-mem/tests/tools/__init__.py +0 -0
  296. token_saver_meta-0.1.0/token-saver-mem/tests/tools/conftest.py +10 -0
  297. token_saver_meta-0.1.0/token-saver-mem/tests/tools/test_code_tools.py +238 -0
  298. token_saver_meta-0.1.0/token-saver-mem/tests/tools/test_session_tools.py +298 -0
  299. token_saver_meta-0.1.0/token-saver-mem/uv.lock +1022 -0
  300. token_saver_meta-0.1.0/token-saver-meta.md +923 -0
  301. token_saver_meta-0.1.0/tscg-py/.gitignore +6 -0
  302. token_saver_meta-0.1.0/tscg-py/README.md +3 -0
  303. token_saver_meta-0.1.0/tscg-py/pyproject.toml +40 -0
  304. token_saver_meta-0.1.0/tscg-py/src/tscg/__init__.py +3 -0
  305. token_saver_meta-0.1.0/tscg-py/src/tscg/__main__.py +5 -0
  306. token_saver_meta-0.1.0/tscg-py/src/tscg/cli.py +197 -0
  307. token_saver_meta-0.1.0/tscg-py/src/tscg/core/__init__.py +1 -0
  308. token_saver_meta-0.1.0/tscg-py/src/tscg/core/compiler.py +323 -0
  309. token_saver_meta-0.1.0/tscg-py/src/tscg/core/profiles.py +216 -0
  310. token_saver_meta-0.1.0/tscg-py/src/tscg/core/transforms.py +421 -0
  311. token_saver_meta-0.1.0/tscg-py/src/tscg/core/utils.py +60 -0
  312. token_saver_meta-0.1.0/tscg-py/src/tscg/proxy/__init__.py +1 -0
  313. token_saver_meta-0.1.0/tscg-py/src/tscg/proxy/compressor.py +289 -0
  314. token_saver_meta-0.1.0/tscg-py/src/tscg/proxy/config.py +74 -0
  315. token_saver_meta-0.1.0/tscg-py/src/tscg/proxy/downstream.py +241 -0
  316. token_saver_meta-0.1.0/tscg-py/src/tscg/proxy/router.py +132 -0
  317. token_saver_meta-0.1.0/tscg-py/src/tscg/proxy/server.py +79 -0
  318. token_saver_meta-0.1.0/tscg-py/stress_high_pressure.py +517 -0
  319. token_saver_meta-0.1.0/tscg-py/tests/__init__.py +1 -0
  320. token_saver_meta-0.1.0/tscg-py/tests/test_cli.py +236 -0
  321. token_saver_meta-0.1.0/tscg-py/tests/test_compiler.py +603 -0
  322. token_saver_meta-0.1.0/tscg-py/tests/test_compressor.py +353 -0
  323. token_saver_meta-0.1.0/tscg-py/tests/test_config.py +105 -0
  324. token_saver_meta-0.1.0/tscg-py/tests/test_downstream.py +217 -0
  325. token_saver_meta-0.1.0/tscg-py/tests/test_integration.py +1012 -0
  326. token_saver_meta-0.1.0/tscg-py/tests/test_profiles.py +214 -0
  327. token_saver_meta-0.1.0/tscg-py/tests/test_router.py +112 -0
  328. token_saver_meta-0.1.0/tscg-py/tests/test_server.py +269 -0
  329. token_saver_meta-0.1.0/tscg-py/tests/test_transforms.py +779 -0
  330. token_saver_meta-0.1.0/tscg-py/tests/test_utils.py +134 -0
  331. token_saver_meta-0.1.0/tscg-py/uv.lock +1022 -0
  332. token_saver_meta-0.1.0/uv.lock +1095 -0
  333. token_saver_meta-0.1.0/whitelist.txt +47 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "token-saver-meta",
3
+ "version": "0.1.0",
4
+ "description": "Zero-config token-saving protocol for AI coding agents — injects caveman + ponytail + LG-token-saver + kevin-copilot rules",
5
+ "author": {"name": "Im-Busy"},
6
+ "hooks": [
7
+ {
8
+ "type": "InstructionsLoaded",
9
+ "matchers": ["session_start", "compact"]
10
+ },
11
+ {
12
+ "type": "SessionStart",
13
+ "matchers": ["startup", "resume", "clear", "compact"]
14
+ }
15
+ ],
16
+ "skills": ["skills/token-saver/SKILL.md"]
17
+ }
@@ -0,0 +1,9 @@
1
+ * text=auto
2
+ *.py text eol=lf
3
+ *.js text eol=lf
4
+ *.md text eol=lf
5
+ *.json text eol=lf
6
+ *.toml text eol=lf
7
+ *.txt text eol=lf
8
+ *.yml text eol=lf
9
+ *.yaml text eol=lf
@@ -0,0 +1,23 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ id-token: write
13
+ contents: read
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-node@v4
17
+ with:
18
+ node-version: 20
19
+ registry-url: 'https://registry.npmjs.org'
20
+ - name: Publish to npm
21
+ run: npm publish --provenance --access public
22
+ env:
23
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -0,0 +1,33 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - uses: astral-sh/setup-uv@v5
14
+ - name: Install dependencies
15
+ run: uv sync
16
+ - name: Run all tests
17
+ run: uv run pytest tests/ tscg-py/tests/ token-saver-mem/tests/ contextslim-py/tests/ -q
18
+
19
+ build-publish:
20
+ needs: test
21
+ runs-on: ubuntu-latest
22
+ permissions:
23
+ id-token: write
24
+ contents: read
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - uses: astral-sh/setup-uv@v5
28
+ - name: Build package
29
+ run: uv build
30
+ - name: Publish to PyPI
31
+ uses: pypa/gh-action-pypi-publish@release/v1
32
+ with:
33
+ attestations: true
@@ -0,0 +1,25 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ dist/
6
+ .pytest_cache/
7
+ .ruff_cache/
8
+ .venv/
9
+ # Node
10
+ node_modules/
11
+ # Tool output
12
+ CODESIGHT.md
13
+ repomix-output.*
14
+ .repomixignore
15
+ .bak-*
16
+ .codegraph/
17
+ # Cloned reference repos (never track)
18
+ useful-repos/
19
+ # Sub-project coverage
20
+ **/__pycache__/
21
+ **/*.pyc
22
+ **/.pytest_cache/
23
+ **/.venv/
24
+ **/dist/
25
+ **/*.egg-info/
@@ -0,0 +1,34 @@
1
+ # repo-syncer Agent
2
+
3
+ Safely syncs the private `master` branch to the public `public` branch for the curated public mirror.
4
+
5
+ ## Workflow
6
+
7
+ 1. **Verify remotes**: Confirm `private` and `public` remotes are configured
8
+ 2. **Checkout public**: `git checkout public`
9
+ 3. **Merge master**: `git merge master` — bring all private branch changes in
10
+ 4. **Safety check**: Verify NO private files exist on public branch after merge:
11
+ - `git ls-tree --name-only HEAD | grep -E "MEMORY\.md|kilo\.json|opencode\.jsonc|token-saver-meta\.md|progress_docs/|\.kilo/|\.omo/|\.codegraph/"` must return empty
12
+ 5. **Checkout master**: `git checkout master`
13
+ 6. **Push public**: `git push public public`
14
+
15
+ ## Private Files (must never appear on public branch)
16
+
17
+ - `MEMORY.md` — Agent handover state
18
+ - `kilo.json` — Kilo platform config
19
+ - `opencode.jsonc` — OpenCode config
20
+ - `token-saver-meta.md` — Brainstorm doc
21
+ - `.kilo/` — Agent definitions
22
+ - `.omo/` — Plan artifacts
23
+ - `.codegraph/` — Local codegraph index
24
+ - `progress_docs/` — Handover notes, session logs
25
+
26
+ ## Emergency: If private files appear on public remote
27
+
28
+ ```bash
29
+ git checkout public
30
+ git rm --cached -r <leaked-file-or-dir>
31
+ git commit -m "emergency: remove leaked private files"
32
+ git push public public
33
+ ```
34
+ Then review why the safety check failed.
@@ -0,0 +1,31 @@
1
+ # repo-sync Command
2
+
3
+ Slash command for dual-repo sync management.
4
+
5
+ ## Usage
6
+
7
+ ### Full Sync
8
+ ```
9
+ /repo-sync
10
+ ```
11
+ Invokes the `repo-syncer` agent: merge `master` → `public` → safety check → push.
12
+
13
+ ### Safety Check Only
14
+ ```
15
+ /repo-sync check
16
+ ```
17
+ Runs the safety verification without pushing: checks `public` branch for any private files.
18
+
19
+ ### Status
20
+ ```
21
+ /repo-sync status
22
+ ```
23
+ Shows current branch, remote configuration, and last sync state.
24
+
25
+ ## Examples
26
+
27
+ ```
28
+ /repo-sync # Full sync: merge + check + push
29
+ /repo-sync check # Verify no private files on public branch
30
+ /repo-sync status # Show current state
31
+ ```
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: caveman
3
+ description: >
4
+ Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman
5
+ while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,
6
+ wenyan-lite, wenyan-full, wenyan-ultra.
7
+ Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens",
8
+ "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.
9
+ ---
10
+
11
+ Respond terse like smart caveman. All technical substance stay. Only fluff die.
12
+
13
+ ## Persistence
14
+
15
+ ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".
16
+
17
+ Default: **full**. Switch: `/caveman lite|full|ultra`.
18
+
19
+ ## Rules
20
+
21
+ Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked — quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations reader can't decode. Technical terms exact. Code blocks unchanged. Errors quoted exact.
22
+
23
+ Preserve user's dominant language. User write Portuguese → reply Portuguese caveman. User write Spanish → reply Spanish caveman. Compress the style, not the language. No forced English openings or status phrases. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim — unless user explicitly ask for translation.
24
+
25
+ No self-reference. Never name or announce the style. No "caveman mode on", "me caveman think", no third-person caveman tags. Output caveman-only — never normal answer plus "Caveman:" recap. Exception: user explicitly ask what the mode is.
26
+
27
+ Pattern: `[thing] [action] [reason]. [next step].`
28
+
29
+ Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
30
+ Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
31
+
32
+ ## Intensity
33
+
34
+ | Level | What change |
35
+ |-------|------------|
36
+ | **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |
37
+ | **full** | Drop articles, fragments OK, short synonyms. Classic caveman. No tool-call narration, no decorative tables/emoji, no long raw error-log dumps unless asked. Standard acronyms OK; no invented abbreviations |
38
+ | **ultra** | Abbreviate prose words (DB/auth/config/req/res/fn/impl) — prose words only, never real code symbols/function names. Strip conjunctions, arrows for causality (X → Y), one word when one word enough. Code symbols, function names, API names, error strings: never abbreviate |
39
+ | **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |
40
+ | **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |
41
+ | **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |
42
+
43
+ Example — "Why React component re-render?"
44
+ - lite: "Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`."
45
+ - full: "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."
46
+ - ultra: "Inline obj prop → new ref → re-render. `useMemo`."
47
+ - wenyan-lite: "組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。"
48
+ - wenyan-full: "每繪新生對象參照,故重繪;以 useMemo 包之則免。"
49
+ - wenyan-ultra: "新參照→重繪。useMemo Wrap。"
50
+
51
+ Example — "Explain database connection pooling."
52
+ - lite: "Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead."
53
+ - full: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."
54
+ - ultra: "Pool = reuse DB conn. Skip handshake → fast under load."
55
+ - wenyan-full: "池reuse open connection。不每req新開。skip handshake overhead。"
56
+ - wenyan-ultra: "池reuse conn。skip handshake → fast。"
57
+
58
+ ## Auto-Clarity
59
+
60
+ Drop caveman when:
61
+ - Security warnings
62
+ - Irreversible action confirmations
63
+ - Multi-step sequences where fragment order or omitted conjunctions risk misread
64
+ - Compression itself creates technical ambiguity (e.g., `"migrate table drop column backup first"` — order unclear without articles/conjunctions)
65
+ - User asks to clarify or repeats question
66
+
67
+ Resume caveman after clear part done.
68
+
69
+ Example — destructive op:
70
+ > **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
71
+ > ```sql
72
+ > DROP TABLE users;
73
+ > ```
74
+ > Caveman resume. Verify backup exist first.
75
+
76
+ ## Boundaries
77
+
78
+ Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert. Level persist until changed or session end.
@@ -0,0 +1,341 @@
1
+ ---
2
+ name: unslop
3
+ description: "Unified de-slop pass: code simplification + comment rot detection + design slop check. Run after completing features or before PRs to strip AI-generated generic patterns."
4
+ argument-hint: "[blank for recent changes, or file/directory path]"
5
+ ---
6
+
7
+ # /unslop — Strip AI Slop from Your Codebase
8
+
9
+ Three parallel analysis passes that detect and report AI-generated "slop" — generic, template-looking, over-enthusiastic output that makes code, comments, and UI feel artificial.
10
+
11
+ ## When to Use
12
+
13
+ - After completing a feature — check for slop before PR
14
+ - Before code review — pre-clean your changes
15
+ - When code "feels AI-generated" but you can't pinpoint why
16
+ - Periodic codebase hygiene — run on a directory
17
+ - After a long AI-assisted session to audit quality
18
+
19
+ ## Argument Parsing
20
+
21
+ Parse `$ARGUMENTS` for these tokens:
22
+
23
+ | Token | Example | Effect |
24
+ |-------|---------|--------|
25
+ | `fix` | `/unslop fix` | Auto-apply safe fixes after reporting |
26
+ | `<path>` | `/unslop src/components/` | Scope to specific file or directory |
27
+ | (none) | `/unslop` | Analyze all files changed since the base branch |
28
+
29
+ ## Execution Flow
30
+
31
+ ### Stage 1: Determine Scope
32
+
33
+ **If a file or directory path is provided:**
34
+
35
+ Scope to that path. Use `find` or glob to list all code files under it.
36
+
37
+ **If no argument (default):**
38
+
39
+ Determine changed files since the base branch:
40
+
41
+ ```bash
42
+ BASE=$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD origin/master 2>/dev/null || echo "HEAD~10")
43
+ echo "FILES:" && git diff --name-only $BASE
44
+ echo "DIFF:" && git diff -U5 $BASE
45
+ ```
46
+
47
+ **Classify files in scope:**
48
+
49
+ | File extensions | Passes to run |
50
+ |----------------|---------------|
51
+ | `.ts`, `.tsx`, `.js`, `.jsx`, `.py`, `.go`, `.rb`, `.rs`, `.java`, `.cs`, `.swift`, `.kt` | Code Slop + Comment Rot |
52
+ | `.css`, `.scss`, `.less`, `.tsx`, `.jsx`, `.html`, `.vue`, `.svelte` | + Design Slop |
53
+ | `.json`, `.yaml`, `.yml`, `.toml`, `.md` | Code Slop + Comment Rot only |
54
+
55
+ If no UI/style files are in scope, skip the Design Slop pass entirely.
56
+
57
+ Announce the scope:
58
+
59
+ ```
60
+ De-slop scope: 14 files changed since origin/main
61
+ Passes: Code Slop | Comment Rot | Design Slop (3 UI files detected)
62
+ ```
63
+
64
+ ### Stage 2: Parallel Analysis
65
+
66
+ Launch three sub-agents IN PARALLEL. Each receives the file list and diff content, and returns structured findings as text.
67
+
68
+ <parallel_tasks>
69
+
70
+ #### Pass 1: Code Slop Detector
71
+
72
+ You are a code simplification expert. Analyze the provided files for AI-generated slop patterns. Focus ONLY on slop — not correctness, security, or architecture.
73
+
74
+ **What to flag:**
75
+
76
+ 1. **Unnecessary complexity**
77
+ - Deep nesting (>3 levels) that could use early returns
78
+ - Nested ternary operators — use if/else or switch
79
+ - Dense one-liners that sacrifice readability for brevity
80
+
81
+ 2. **Redundant abstractions**
82
+ - Interfaces/types used only once — inline them
83
+ - Wrapper functions that add no logic — call the wrapped function directly
84
+ - Abstract base classes with a single implementation
85
+ - Premature generalization ("just in case" extensibility points)
86
+
87
+ 3. **YAGNI violations**
88
+ - Features not required by current use cases
89
+ - Configuration options nobody uses
90
+ - Generic solutions for specific problems
91
+ - "Future-proofing" code that adds complexity now
92
+
93
+ 4. **Dead weight**
94
+ - Commented-out code blocks (>3 lines)
95
+ - Unused imports, variables, or functions
96
+ - Duplicate error checks (caller already validates)
97
+ - Defensive code that can never trigger (type system prevents it)
98
+
99
+ 5. **Over-engineering**
100
+ - Factory patterns for creating a single type
101
+ - Strategy patterns with one strategy
102
+ - Event systems for synchronous single-consumer flows
103
+ - Dependency injection where direct instantiation is clearer
104
+
105
+ **Return format:**
106
+ ```json
107
+ {
108
+ "pass": "code-slop",
109
+ "findings": [
110
+ {
111
+ "file": "src/auth.ts",
112
+ "line": 42,
113
+ "issue": "Nested ternary — use if/else for readability",
114
+ "severity": "medium",
115
+ "fix_safe": true,
116
+ "suggested_fix": "Replace ternary chain with if/else block"
117
+ }
118
+ ]
119
+ }
120
+ ```
121
+
122
+ #### Pass 2: Comment Rot Detector
123
+
124
+ You are a technical documentation expert specializing in comment quality. Analyze the provided files for comment rot — inaccurate, redundant, or AI-generated filler comments.
125
+
126
+ **What to flag:**
127
+
128
+ 1. **Obvious restatements**
129
+ - `// increment counter` above `counter++`
130
+ - `// return the result` above `return result`
131
+ - `// set the name` above `this.name = name`
132
+ - Comments that repeat the function/variable name in prose
133
+
134
+ 2. **AI-generated filler phrases** (hard bans — flag these immediately)
135
+ - "This function is responsible for handling..."
136
+ - "The following code implements..."
137
+ - "This is a comprehensive solution that..."
138
+ - "This method provides a robust and scalable..."
139
+ - "leverages" or "utilizes" (when "uses" works fine)
140
+ - "seamlessly integrates"
141
+ - "In today's rapidly evolving..."
142
+ - "game-changer", "revolutionary", "cutting-edge"
143
+ - "This class encapsulates the logic for..."
144
+ - "Ensures proper handling of..."
145
+
146
+ 3. **Factual inaccuracy**
147
+ - Documented parameters that don't match the function signature
148
+ - Return type descriptions that don't match the actual return
149
+ - Described behavior that doesn't match the code logic
150
+ - Edge case documentation for cases not actually handled
151
+
152
+ 4. **Stale comments**
153
+ - TODOs/FIXMEs for work that's already been done
154
+ - References to removed/renamed functions, classes, or files
155
+ - Version-specific notes for versions no longer supported
156
+ - "Temporary" markers on permanent code
157
+
158
+ 5. **Over-documentation**
159
+ - JSDoc/docstrings on trivial getters/setters
160
+ - Multi-line comments on self-explanatory one-liners
161
+ - Repeating type information already in the signature
162
+ - Section divider comments (`// ==================`)
163
+
164
+ **Return format:**
165
+ ```json
166
+ {
167
+ "pass": "comment-rot",
168
+ "findings": [
169
+ {
170
+ "file": "src/auth.ts",
171
+ "line": 10,
172
+ "issue": "\"This function handles authentication\" — restates the function name",
173
+ "severity": "low",
174
+ "fix_safe": true,
175
+ "suggested_fix": "Remove comment — function name is self-documenting"
176
+ }
177
+ ]
178
+ }
179
+ ```
180
+
181
+ #### Pass 3: Design Slop Detector
182
+
183
+ **Only run this pass when UI/style files are in scope.**
184
+
185
+ You are a design quality expert. Analyze the provided UI files for AI-generated visual slop — generic, template-looking patterns that signal "an AI made this, not a designer."
186
+
187
+ **What to flag:**
188
+
189
+ 1. **Generic color patterns**
190
+ - Purple-to-blue gradients (the AI default palette)
191
+ - Gratuitous gradients on everything (buttons, cards, backgrounds)
192
+ - Safe gray-on-white with one decorative accent color
193
+ - Unintentional color usage (decorative, not semantic)
194
+
195
+ 2. **Template layouts**
196
+ - Default card grids with uniform spacing and no hierarchy
197
+ - Generic hero: centered headline + subtitle + gradient blob + CTA
198
+ - Dashboard-by-numbers: sidebar + cards + charts with no point of view
199
+ - Uniform radius, spacing, and shadows across every component
200
+
201
+ 3. **Missing interaction states**
202
+ - No hover states on interactive elements
203
+ - No focus states (accessibility gap)
204
+ - No active/pressed states
205
+ - No loading/empty/error states
206
+
207
+ 4. **Lazy defaults**
208
+ - Unmodified library defaults (default shadcn/Tailwind without customization)
209
+ - Default font stacks with no intentional pairing
210
+ - Glassmorphism cards that serve no UI purpose
211
+ - Rounded corners on elements that shouldn't be rounded (tables, code blocks)
212
+ - Excessive scroll-triggered animations
213
+
214
+ 5. **No visual hierarchy**
215
+ - Flat layouts with no layering, depth, or motion
216
+ - Uniform emphasis on everything (nothing stands out)
217
+ - No intentional rhythm in spacing
218
+
219
+ **Return format:**
220
+ ```json
221
+ {
222
+ "pass": "design-slop",
223
+ "findings": [
224
+ {
225
+ "file": "src/Hero.tsx",
226
+ "line": 22,
227
+ "issue": "Generic purple-to-blue gradient — replace with brand palette",
228
+ "severity": "medium",
229
+ "fix_safe": false,
230
+ "suggested_fix": "Define an intentional brand gradient in design tokens"
231
+ }
232
+ ]
233
+ }
234
+ ```
235
+
236
+ </parallel_tasks>
237
+
238
+ ### Stage 3: Merge & Deduplicate
239
+
240
+ **WAIT for all Stage 2 sub-agents to complete.**
241
+
242
+ 1. Collect findings from all passes that ran
243
+ 2. Deduplicate: if two passes flag the same file+line (within 3 lines), keep the more specific finding and note both passes
244
+ 3. Sort by severity: High → Medium → Low
245
+ 4. Group by pass for the report
246
+
247
+ ### Stage 4: Present Report
248
+
249
+ Format the consolidated report using pipe-delimited markdown tables:
250
+
251
+ ```
252
+ De-slop Report
253
+ ==============
254
+ Scope: [N] files changed since [base]
255
+ Passes: Code Slop [✓|✗] | Comment Rot [✓|✗] | Design Slop [✓|skipped]
256
+
257
+ ## Code Slop ([N] findings)
258
+
259
+ | # | File | Line | Issue | Severity |
260
+ |---|------|------|-------|----------|
261
+ | 1 | path | line | description | High/Medium/Low |
262
+
263
+ ## Comment Rot ([N] findings)
264
+
265
+ | # | File | Line | Issue | Severity |
266
+ |---|------|------|-------|----------|
267
+ | 1 | path | line | description | High/Medium/Low |
268
+
269
+ ## Design Slop ([N] findings)
270
+
271
+ | # | File | Line | Issue | Severity |
272
+ |---|------|------|-------|----------|
273
+ | 1 | path | line | description | High/Medium/Low |
274
+
275
+ ─────────────────────────────
276
+ Summary: [N] findings ([H] High, [M] Medium, [L] Low)
277
+ Potential LOC reduction: ~[N] lines
278
+ ```
279
+
280
+ Omit any pass section with zero findings. If all passes return zero findings:
281
+
282
+ ```
283
+ De-slop Report: Clean! No slop detected in [N] files.
284
+ ```
285
+
286
+ ### Stage 5: Auto-Fix (only if `fix` argument was provided)
287
+
288
+ If the user invoked `/unslop fix`:
289
+
290
+ 1. Collect all findings where `fix_safe: true`
291
+ 2. Apply fixes in file order:
292
+ - **Code Slop safe fixes:** Remove commented-out code blocks, remove unused imports
293
+ - **Comment Rot safe fixes:** Delete obvious restatement comments, remove stale TODOs
294
+ 3. Do NOT auto-fix:
295
+ - Design slop (requires design judgment)
296
+ - Factually inaccurate comments (requires understanding intent)
297
+ - YAGNI violations (requires knowing the roadmap)
298
+ - Abstractions (requires understanding the broader architecture)
299
+ 4. Report what was fixed:
300
+
301
+ ```
302
+ Auto-fix applied:
303
+ ✓ Removed 3 commented-out code blocks (42 lines)
304
+ ✓ Deleted 5 obvious-restatement comments
305
+ ✓ Removed 2 stale TODOs
306
+
307
+ Remaining (manual review needed): 4 findings
308
+ ```
309
+
310
+ If `fix` was NOT provided but fixable findings exist, suggest it:
311
+
312
+ ```
313
+ Tip: Run /unslop fix to auto-apply [N] safe fixes
314
+ ```
315
+
316
+ ## Severity Guide
317
+
318
+ | Level | Meaning | Examples |
319
+ |-------|---------|---------|
320
+ | **High** | Actively misleading or creates maintenance burden | Inaccurate comment, missing hover states, large dead code block |
321
+ | **Medium** | Noticeable slop that reduces quality | Unnecessary abstraction, AI filler phrase, generic gradient |
322
+ | **Low** | Minor quality improvement | Restatement comment, unused import, over-documentation |
323
+
324
+ Slop is never "Critical" — it's a quality concern, not a correctness or security issue.
325
+
326
+ ## Quality Gates
327
+
328
+ Before presenting findings:
329
+
330
+ 1. **Every finding must be actionable.** Don't say "could be simpler" — say what to change and where.
331
+ 2. **No false positives from skimming.** Verify the abstraction isn't used elsewhere before flagging it. Verify the comment is truly redundant.
332
+ 3. **Line numbers must be accurate.** Check each cited line against file content.
333
+ 4. **Respect project conventions.** If the project uses JSDoc everywhere, don't flag JSDoc as over-documentation.
334
+ 5. **Don't flag generated code.** Skip files in `dist/`, `build/`, `node_modules/`, `.next/`, `vendor/`, or similar generated directories.
335
+
336
+ ## Notes
337
+
338
+ - This skill is read-only by default. It reports but does not edit files unless `fix` is specified.
339
+ - Design Slop pass is automatically skipped for backend-only projects.
340
+ - Works on any language/framework — the slop patterns are universal.
341
+ - Pairs well with `/ce-review` (which checks correctness) — `/unslop` checks aesthetics and quality.
@@ -0,0 +1,88 @@
1
+ # Project Conventions
2
+
3
+ This project uses the ATV (Agentic Tool & Workflow) Starter Kit.
4
+
5
+ ## Available Workflows
6
+
7
+ - `/ce-brainstorm` — Explore what to build through collaborative dialogue
8
+ - `/ce-plan` — Create a structured implementation plan
9
+ - `/ce-work` — Execute the plan with quality checks
10
+ - `/ce-review` — Multi-agent code review
11
+ - `/ce-compound` — Document solutions for future reference
12
+ - `/lfg` — Full autonomous pipeline (plan → work → review)
13
+
14
+ ## Documentation Structure
15
+
16
+ - `docs/plans/` — Implementation plans (living documents with checkboxes)
17
+ - `docs/brainstorms/` — Brainstorm documents (what to build decisions)
18
+ - `docs/solutions/` — Documented solutions (institutional knowledge)
19
+
20
+ ## gstack Skills (if installed)
21
+
22
+ - `/office-hours` — YC-style forcing questions to reframe your product
23
+ - `/plan-ceo-review` — Rethink the problem; find the 10-star product
24
+ - `/plan-eng-review` — Lock architecture, data flow, edge cases
25
+ - `/review` — Staff-level code review; auto-fix obvious issues
26
+ - `/qa` — Test app in real browser, find and fix bugs (requires Bun)
27
+ - `/ship` — Sync main, run tests, push, open PR
28
+ - `/cso` — OWASP Top 10 + STRIDE threat model
29
+ - `/careful` — Warn before destructive commands
30
+ - `/investigate` — Systematic root-cause debugging
31
+ - `/retro` — Weekly retrospective with trends
32
+
33
+ ## Browser Automation (if installed)
34
+
35
+ - `agent-browser` — Vercel's headless browser CLI for AI agents (Rust native, fast)
36
+ - Core workflow: `agent-browser open <url>` → `snapshot -i` → interact with `@refs` → re-snapshot
37
+ - Install: `npm install -g agent-browser && agent-browser install`
38
+ - Use for QA testing, form filling, screenshots, data extraction, and web automation
39
+
40
+ ## ATV Override Rules
41
+
42
+ When both ATV and gstack provide similar functionality, ATV takes priority:
43
+
44
+ - **Design docs**: Write to `docs/brainstorms/` (ATV), not `DESIGN.md` (gstack)
45
+ - **Solutions**: Document via `/ce-compound` into `docs/solutions/` (ATV), not gstack's `/retro`
46
+ - **Plans**: Use `docs/plans/` with ATV naming (`YYYY-MM-DD-NNN-type-name-plan.md`)
47
+ - **Reviews**: ATV's `/ce-review` agent selection governs; gstack's `/review` runs alongside
48
+ - **Protected artifacts**: Never flag `docs/plans/`, `docs/solutions/`, `docs/brainstorms/`, `compound-engineering.local.md`, or `.github/skills/gstack/` for deletion
49
+
50
+ ## Coding Conventions
51
+
52
+ - Follow existing patterns in the codebase
53
+ - Write tests for new functionality
54
+ - Use conventional commit messages (`feat:`, `fix:`, `refactor:`)
55
+
56
+ ## Continuous Learning Pipeline
57
+
58
+ This project uses ATV's continuous learning system to capture and evolve patterns.
59
+
60
+ ### Learning Commands
61
+
62
+ - `/learn` — Extract patterns from recent work into instincts
63
+ - `/instincts` — View all learned patterns with confidence scores
64
+ - `/evolve` — Promote mature instincts (confidence > 0.8) into full skills
65
+ - `/observe` — Run a focused observation session on a specific domain
66
+ - `/unslop` — Unified de-slop pass: strip AI-generated code slop, comment rot, and design slop
67
+
68
+ ### How It Works
69
+
70
+ 1. **Observer hooks** automatically capture tool use data to `.atv/observations.jsonl`
71
+ 2. **`/learn`** analyzes recent work and creates instincts in `.atv/instincts/project.yaml`
72
+ 3. **Instincts** build confidence over time through repeated observation
73
+ 4. **`/evolve`** promotes mature instincts into discoverable skills in `.github/skills/learned-*/`
74
+
75
+ ### Key Files
76
+
77
+ - `.atv/observations.jsonl` — Raw tool use log (gitignored, ephemeral)
78
+ - `.atv/instincts/project.yaml` — Learned patterns (committed, shared with team)
79
+ - `.github/hooks/copilot-hooks.json` — Observer hook configuration
80
+ - `.github/skills/learned-*/` — Auto-generated skills from evolved instincts
81
+
82
+ ### Best Practices
83
+
84
+ - Run `/learn` after completing features or at session end
85
+ - Run `/instincts` to check what patterns the project has learned
86
+ - Run `/evolve` periodically to graduate well-established conventions
87
+ - Run `/unslop` before PRs to strip AI-generated slop from code, comments, and UI
88
+ - Review generated skills before committing — they're a starting point