@shakudo/kaji-setup-external 1.0.0

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 (411) hide show
  1. package/README.md +155 -0
  2. package/assets/skills/ci-cd/.claude-plugin/plugin.json +8 -0
  3. package/assets/skills/ci-cd/SKILL.md +573 -0
  4. package/assets/skills/ci-cd/assets/templates/github-actions/docker-build.yml +164 -0
  5. package/assets/skills/ci-cd/assets/templates/github-actions/go-ci.yml +420 -0
  6. package/assets/skills/ci-cd/assets/templates/github-actions/node-ci.yml +313 -0
  7. package/assets/skills/ci-cd/assets/templates/github-actions/python-ci.yml +388 -0
  8. package/assets/skills/ci-cd/assets/templates/github-actions/security-scan.yml +416 -0
  9. package/assets/skills/ci-cd/assets/templates/gitlab-ci/docker-build.yml +298 -0
  10. package/assets/skills/ci-cd/assets/templates/gitlab-ci/go-ci.yml +548 -0
  11. package/assets/skills/ci-cd/assets/templates/gitlab-ci/node-ci.yml +334 -0
  12. package/assets/skills/ci-cd/assets/templates/gitlab-ci/python-ci.yml +472 -0
  13. package/assets/skills/ci-cd/assets/templates/gitlab-ci/security-scan.yml +479 -0
  14. package/assets/skills/ci-cd/references/best_practices.md +675 -0
  15. package/assets/skills/ci-cd/references/devsecops.md +862 -0
  16. package/assets/skills/ci-cd/references/optimization.md +651 -0
  17. package/assets/skills/ci-cd/references/security.md +611 -0
  18. package/assets/skills/ci-cd/references/troubleshooting.md +656 -0
  19. package/assets/skills/ci-cd/scripts/ci_health.py +301 -0
  20. package/assets/skills/ci-cd/scripts/pipeline_analyzer.py +440 -0
  21. package/assets/skills/context-optimization/CONTRIBUTING.md +78 -0
  22. package/assets/skills/context-optimization/LICENSE +22 -0
  23. package/assets/skills/context-optimization/README.md +228 -0
  24. package/assets/skills/context-optimization/SKILL.md +104 -0
  25. package/assets/skills/context-optimization/docs/agentskills.md +1264 -0
  26. package/assets/skills/context-optimization/docs/blogs.md +1230 -0
  27. package/assets/skills/context-optimization/docs/claude_research.md +85 -0
  28. package/assets/skills/context-optimization/docs/compression.md +298 -0
  29. package/assets/skills/context-optimization/docs/gemini_research.md +22 -0
  30. package/assets/skills/context-optimization/docs/hncapsule.md +92 -0
  31. package/assets/skills/context-optimization/docs/netflix_context.md +10 -0
  32. package/assets/skills/context-optimization/docs/vercel_tool.md +140 -0
  33. package/assets/skills/context-optimization/examples/book-sft-pipeline/README.md +78 -0
  34. package/assets/skills/context-optimization/examples/book-sft-pipeline/SKILL.md +380 -0
  35. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/README.md +168 -0
  36. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/dataset_sample.jsonl +5 -0
  37. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/pangram/Screenshot 2025-12-27 at 3.05.04/342/200/257AM.png +0 -0
  38. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/pangram/Screenshot 2025-12-27 at 3.05.36/342/200/257AM.png +0 -0
  39. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/pangram/Screenshot 2025-12-27 at 3.07.18/342/200/257AM.png +0 -0
  40. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/sample_outputs.md +63 -0
  41. package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/training_config.json +80 -0
  42. package/assets/skills/context-optimization/examples/book-sft-pipeline/references/segmentation-strategies.md +324 -0
  43. package/assets/skills/context-optimization/examples/book-sft-pipeline/references/tinker-format.md +211 -0
  44. package/assets/skills/context-optimization/examples/book-sft-pipeline/references/tinker.txt +3176 -0
  45. package/assets/skills/context-optimization/examples/book-sft-pipeline/scripts/pipeline_example.py +187 -0
  46. package/assets/skills/context-optimization/examples/digital-brain-skill/AGENT.md +35 -0
  47. package/assets/skills/context-optimization/examples/digital-brain-skill/HOW-SKILLS-BUILT-THIS.md +407 -0
  48. package/assets/skills/context-optimization/examples/digital-brain-skill/README.md +209 -0
  49. package/assets/skills/context-optimization/examples/digital-brain-skill/SKILL.md +203 -0
  50. package/assets/skills/context-optimization/examples/digital-brain-skill/SKILLS-MAPPING.md +219 -0
  51. package/assets/skills/context-optimization/examples/digital-brain-skill/agents/AGENTS.md +82 -0
  52. package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/content_ideas.py +132 -0
  53. package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/idea_to_draft.py +181 -0
  54. package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/stale_contacts.py +139 -0
  55. package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/weekly_review.py +121 -0
  56. package/assets/skills/context-optimization/examples/digital-brain-skill/content/CONTENT.md +88 -0
  57. package/assets/skills/context-optimization/examples/digital-brain-skill/content/calendar.md +108 -0
  58. package/assets/skills/context-optimization/examples/digital-brain-skill/content/engagement.jsonl +2 -0
  59. package/assets/skills/context-optimization/examples/digital-brain-skill/content/ideas.jsonl +2 -0
  60. package/assets/skills/context-optimization/examples/digital-brain-skill/content/posts.jsonl +2 -0
  61. package/assets/skills/context-optimization/examples/digital-brain-skill/content/templates/linkedin-post.md +102 -0
  62. package/assets/skills/context-optimization/examples/digital-brain-skill/content/templates/newsletter.md +92 -0
  63. package/assets/skills/context-optimization/examples/digital-brain-skill/content/templates/thread.md +73 -0
  64. package/assets/skills/context-optimization/examples/digital-brain-skill/examples/content-workflow.md +204 -0
  65. package/assets/skills/context-optimization/examples/digital-brain-skill/examples/meeting-prep.md +243 -0
  66. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/IDENTITY.md +46 -0
  67. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/bio-variants.md +101 -0
  68. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/brand.md +165 -0
  69. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/prompts/content-generation.xml +46 -0
  70. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/prompts/reply-generator.xml +40 -0
  71. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/values.yaml +60 -0
  72. package/assets/skills/context-optimization/examples/digital-brain-skill/identity/voice.md +165 -0
  73. package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/KNOWLEDGE.md +85 -0
  74. package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/bookmarks.jsonl +2 -0
  75. package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/competitors.md +117 -0
  76. package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/learning.yaml +74 -0
  77. package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/research/_template.md +79 -0
  78. package/assets/skills/context-optimization/examples/digital-brain-skill/network/NETWORK.md +110 -0
  79. package/assets/skills/context-optimization/examples/digital-brain-skill/network/circles.yaml +80 -0
  80. package/assets/skills/context-optimization/examples/digital-brain-skill/network/contacts.jsonl +2 -0
  81. package/assets/skills/context-optimization/examples/digital-brain-skill/network/interactions.jsonl +2 -0
  82. package/assets/skills/context-optimization/examples/digital-brain-skill/network/intros.md +92 -0
  83. package/assets/skills/context-optimization/examples/digital-brain-skill/operations/OPERATIONS.md +75 -0
  84. package/assets/skills/context-optimization/examples/digital-brain-skill/operations/goals.yaml +83 -0
  85. package/assets/skills/context-optimization/examples/digital-brain-skill/operations/meetings.jsonl +2 -0
  86. package/assets/skills/context-optimization/examples/digital-brain-skill/operations/metrics.jsonl +2 -0
  87. package/assets/skills/context-optimization/examples/digital-brain-skill/operations/reviews/_weekly_template.md +114 -0
  88. package/assets/skills/context-optimization/examples/digital-brain-skill/operations/todos.md +76 -0
  89. package/assets/skills/context-optimization/examples/digital-brain-skill/package.json +41 -0
  90. package/assets/skills/context-optimization/examples/digital-brain-skill/references/file-formats.md +386 -0
  91. package/assets/skills/context-optimization/examples/digital-brain-skill/scripts/install.sh +79 -0
  92. package/assets/skills/context-optimization/examples/interleaved_thinking/README.md +620 -0
  93. package/assets/skills/context-optimization/examples/interleaved_thinking/SKILL.md +221 -0
  94. package/assets/skills/context-optimization/examples/interleaved_thinking/docs/agentthinking.md +63 -0
  95. package/assets/skills/context-optimization/examples/interleaved_thinking/docs/interleavedthinking.md +610 -0
  96. package/assets/skills/context-optimization/examples/interleaved_thinking/docs/m2-1.md +224 -0
  97. package/assets/skills/context-optimization/examples/interleaved_thinking/examples/01_basic_capture.py +76 -0
  98. package/assets/skills/context-optimization/examples/interleaved_thinking/examples/02_tool_usage.py +187 -0
  99. package/assets/skills/context-optimization/examples/interleaved_thinking/examples/03_full_optimization.py +1222 -0
  100. package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/SKILL.md +90 -0
  101. package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/references/optimization_summary.json +9 -0
  102. package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/references/optimized_prompt.txt +1 -0
  103. package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/references/patterns_found.json +205 -0
  104. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/final_prompt.txt +67 -0
  105. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/analysis.txt +48 -0
  106. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/optimization.txt +15 -0
  107. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/optimized_prompt.txt +1 -0
  108. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/trace.txt +178 -0
  109. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_10/analysis.txt +47 -0
  110. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_10/trace.txt +162 -0
  111. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/analysis.txt +48 -0
  112. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/optimization.txt +130 -0
  113. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/optimized_prompt.txt +72 -0
  114. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/trace.txt +156 -0
  115. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/analysis.txt +46 -0
  116. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/optimization.txt +147 -0
  117. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/optimized_prompt.txt +84 -0
  118. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/trace.txt +159 -0
  119. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/analysis.txt +46 -0
  120. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/optimization.txt +134 -0
  121. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/optimized_prompt.txt +67 -0
  122. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/trace.txt +165 -0
  123. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/analysis.txt +50 -0
  124. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/optimization.txt +135 -0
  125. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/optimized_prompt.txt +71 -0
  126. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/trace.txt +146 -0
  127. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/analysis.txt +15 -0
  128. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/optimization.txt +15 -0
  129. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/optimized_prompt.txt +1 -0
  130. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/trace.txt +147 -0
  131. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/analysis.txt +46 -0
  132. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/optimization.txt +103 -0
  133. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/optimized_prompt.txt +45 -0
  134. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/trace.txt +134 -0
  135. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/analysis.txt +47 -0
  136. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/optimization.txt +114 -0
  137. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/optimized_prompt.txt +60 -0
  138. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/trace.txt +135 -0
  139. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/analysis.txt +44 -0
  140. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/optimization.txt +106 -0
  141. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/optimized_prompt.txt +51 -0
  142. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/trace.txt +170 -0
  143. package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/summary.json +11 -0
  144. package/assets/skills/context-optimization/examples/interleaved_thinking/pyproject.toml +70 -0
  145. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/__init__.py +53 -0
  146. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/analyzer.py +465 -0
  147. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/capture.py +417 -0
  148. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/cli.py +271 -0
  149. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/loop.py +468 -0
  150. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/models.py +193 -0
  151. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/optimizer.py +449 -0
  152. package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/skill_generator.py +502 -0
  153. package/assets/skills/context-optimization/examples/interleaved_thinking/tests/__init__.py +1 -0
  154. package/assets/skills/context-optimization/examples/interleaved_thinking/tests/test_models.py +144 -0
  155. package/assets/skills/context-optimization/examples/llm-as-judge-skills/.prettierrc +8 -0
  156. package/assets/skills/context-optimization/examples/llm-as-judge-skills/CONTRIBUTING.md +78 -0
  157. package/assets/skills/context-optimization/examples/llm-as-judge-skills/LICENSE +21 -0
  158. package/assets/skills/context-optimization/examples/llm-as-judge-skills/README.md +659 -0
  159. package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/evaluator-agent/evaluator-agent.md +177 -0
  160. package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/index.md +114 -0
  161. package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/orchestrator-agent/orchestrator-agent.md +205 -0
  162. package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/research-agent/research-agent.md +183 -0
  163. package/assets/skills/context-optimization/examples/llm-as-judge-skills/env.example +6 -0
  164. package/assets/skills/context-optimization/examples/llm-as-judge-skills/eslint.config.js +18 -0
  165. package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/basic-evaluation.ts +89 -0
  166. package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/full-evaluation-workflow.ts +136 -0
  167. package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/generate-rubric.ts +67 -0
  168. package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/pairwise-comparison.ts +97 -0
  169. package/assets/skills/context-optimization/examples/llm-as-judge-skills/package.json +79 -0
  170. package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/agent-system/orchestrator-prompt.md +197 -0
  171. package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/evaluation/direct-scoring-prompt.md +153 -0
  172. package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/evaluation/pairwise-comparison-prompt.md +200 -0
  173. package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/index.md +138 -0
  174. package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/research/research-synthesis-prompt.md +171 -0
  175. package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/context-fundamentals/context-fundamentals.md +114 -0
  176. package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/index.md +79 -0
  177. package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/llm-evaluator/llm-evaluator.md +77 -0
  178. package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/tool-design/tool-design.md +198 -0
  179. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/agents/evaluator.ts +112 -0
  180. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/agents/index.ts +3 -0
  181. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/config/index.ts +18 -0
  182. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/index.ts +19 -0
  183. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/direct-score.ts +164 -0
  184. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/generate-rubric.ts +161 -0
  185. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/index.ts +9 -0
  186. package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/pairwise-compare.ts +255 -0
  187. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tests/evaluation.test.ts +233 -0
  188. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tests/setup.ts +27 -0
  189. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tests/skills.test.ts +213 -0
  190. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/evaluation/direct-score.md +159 -0
  191. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/evaluation/generate-rubric.md +189 -0
  192. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/evaluation/pairwise-compare.md +182 -0
  193. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/index.md +141 -0
  194. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/orchestration/delegate-to-agent.md +171 -0
  195. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/research/read-url.md +162 -0
  196. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/research/web-search.md +128 -0
  197. package/assets/skills/context-optimization/examples/llm-as-judge-skills/tsconfig.json +26 -0
  198. package/assets/skills/context-optimization/examples/llm-as-judge-skills/vitest.config.ts +20 -0
  199. package/assets/skills/context-optimization/examples/x-to-book-system/PRD.md +644 -0
  200. package/assets/skills/context-optimization/examples/x-to-book-system/README.md +181 -0
  201. package/assets/skills/context-optimization/examples/x-to-book-system/SKILLS-MAPPING.md +187 -0
  202. package/assets/skills/context-optimization/researcher/example_output.md +75 -0
  203. package/assets/skills/context-optimization/researcher/llm-as-a-judge.md +362 -0
  204. package/assets/skills/context-optimization/skills/advanced-evaluation/SKILL.md +454 -0
  205. package/assets/skills/context-optimization/skills/advanced-evaluation/references/bias-mitigation.md +288 -0
  206. package/assets/skills/context-optimization/skills/advanced-evaluation/references/implementation-patterns.md +315 -0
  207. package/assets/skills/context-optimization/skills/advanced-evaluation/references/metrics-guide.md +331 -0
  208. package/assets/skills/context-optimization/skills/advanced-evaluation/scripts/evaluation_example.py +337 -0
  209. package/assets/skills/context-optimization/skills/bdi-mental-states/SKILL.md +295 -0
  210. package/assets/skills/context-optimization/skills/bdi-mental-states/references/bdi-ontology-core.md +207 -0
  211. package/assets/skills/context-optimization/skills/bdi-mental-states/references/framework-integration.md +582 -0
  212. package/assets/skills/context-optimization/skills/bdi-mental-states/references/rdf-examples.md +315 -0
  213. package/assets/skills/context-optimization/skills/bdi-mental-states/references/sparql-competency.md +420 -0
  214. package/assets/skills/context-optimization/skills/context-compression/SKILL.md +265 -0
  215. package/assets/skills/context-optimization/skills/context-compression/references/evaluation-framework.md +213 -0
  216. package/assets/skills/context-optimization/skills/context-compression/scripts/compression_evaluator.py +658 -0
  217. package/assets/skills/context-optimization/skills/context-degradation/SKILL.md +231 -0
  218. package/assets/skills/context-optimization/skills/context-degradation/references/patterns.md +314 -0
  219. package/assets/skills/context-optimization/skills/context-degradation/scripts/degradation_detector.py +419 -0
  220. package/assets/skills/context-optimization/skills/context-fundamentals/SKILL.md +185 -0
  221. package/assets/skills/context-optimization/skills/context-fundamentals/references/context-components.md +283 -0
  222. package/assets/skills/context-optimization/skills/context-fundamentals/scripts/context_manager.py +370 -0
  223. package/assets/skills/context-optimization/skills/context-optimization/SKILL.md +179 -0
  224. package/assets/skills/context-optimization/skills/context-optimization/references/optimization_techniques.md +272 -0
  225. package/assets/skills/context-optimization/skills/context-optimization/scripts/compaction.py +379 -0
  226. package/assets/skills/context-optimization/skills/evaluation/SKILL.md +231 -0
  227. package/assets/skills/context-optimization/skills/evaluation/references/metrics.md +339 -0
  228. package/assets/skills/context-optimization/skills/evaluation/scripts/evaluator.py +474 -0
  229. package/assets/skills/context-optimization/skills/filesystem-context/SKILL.md +321 -0
  230. package/assets/skills/context-optimization/skills/filesystem-context/references/implementation-patterns.md +549 -0
  231. package/assets/skills/context-optimization/skills/filesystem-context/scripts/filesystem_context.py +353 -0
  232. package/assets/skills/context-optimization/skills/hosted-agents/SKILL.md +279 -0
  233. package/assets/skills/context-optimization/skills/hosted-agents/references/infrastructure-patterns.md +700 -0
  234. package/assets/skills/context-optimization/skills/hosted-agents/scripts/sandbox_manager.py +495 -0
  235. package/assets/skills/context-optimization/skills/memory-systems/SKILL.md +221 -0
  236. package/assets/skills/context-optimization/skills/memory-systems/references/implementation.md +458 -0
  237. package/assets/skills/context-optimization/skills/memory-systems/scripts/memory_store.py +396 -0
  238. package/assets/skills/context-optimization/skills/multi-agent-patterns/SKILL.md +255 -0
  239. package/assets/skills/context-optimization/skills/multi-agent-patterns/references/frameworks.md +433 -0
  240. package/assets/skills/context-optimization/skills/multi-agent-patterns/scripts/coordination.py +439 -0
  241. package/assets/skills/context-optimization/skills/project-development/SKILL.md +342 -0
  242. package/assets/skills/context-optimization/skills/project-development/references/case-studies.md +388 -0
  243. package/assets/skills/context-optimization/skills/project-development/references/pipeline-patterns.md +610 -0
  244. package/assets/skills/context-optimization/skills/project-development/scripts/pipeline_template.py +677 -0
  245. package/assets/skills/context-optimization/skills/tool-design/SKILL.md +311 -0
  246. package/assets/skills/context-optimization/skills/tool-design/references/architectural_reduction.md +210 -0
  247. package/assets/skills/context-optimization/skills/tool-design/references/best_practices.md +176 -0
  248. package/assets/skills/context-optimization/skills/tool-design/scripts/description_generator.py +237 -0
  249. package/assets/skills/context-optimization/template/SKILL.md +98 -0
  250. package/assets/skills/dremio-analytics/SKILL.md +287 -0
  251. package/assets/skills/elevenlabs-voice/SKILL.md +269 -0
  252. package/assets/skills/git-workflow/SKILL.md +266 -0
  253. package/assets/skills/gitops-workflows/.claude-plugin/plugin.json +8 -0
  254. package/assets/skills/gitops-workflows/SKILL.md +568 -0
  255. package/assets/skills/gitops-workflows/assets/applicationsets/cluster-generator.yaml +32 -0
  256. package/assets/skills/gitops-workflows/assets/argocd/install-argocd-3.x.yaml +92 -0
  257. package/assets/skills/gitops-workflows/assets/flux/flux-bootstrap-github.sh +49 -0
  258. package/assets/skills/gitops-workflows/assets/flux/oci-helmrelease.yaml +38 -0
  259. package/assets/skills/gitops-workflows/assets/progressive-delivery/argo-rollouts-canary.yaml +62 -0
  260. package/assets/skills/gitops-workflows/assets/secrets/sops-age-config.yaml +33 -0
  261. package/assets/skills/gitops-workflows/references/argocd_vs_flux.md +243 -0
  262. package/assets/skills/gitops-workflows/references/best_practices.md +160 -0
  263. package/assets/skills/gitops-workflows/references/multi_cluster.md +80 -0
  264. package/assets/skills/gitops-workflows/references/oci_artifacts.md +290 -0
  265. package/assets/skills/gitops-workflows/references/progressive_delivery.md +94 -0
  266. package/assets/skills/gitops-workflows/references/repo_patterns.md +184 -0
  267. package/assets/skills/gitops-workflows/references/secret_management.md +213 -0
  268. package/assets/skills/gitops-workflows/references/troubleshooting.md +134 -0
  269. package/assets/skills/gitops-workflows/scripts/applicationset_generator.py +156 -0
  270. package/assets/skills/gitops-workflows/scripts/check_argocd_health.py +275 -0
  271. package/assets/skills/gitops-workflows/scripts/check_flux_health.py +418 -0
  272. package/assets/skills/gitops-workflows/scripts/oci_artifact_checker.py +150 -0
  273. package/assets/skills/gitops-workflows/scripts/promotion_validator.py +88 -0
  274. package/assets/skills/gitops-workflows/scripts/secret_audit.py +178 -0
  275. package/assets/skills/gitops-workflows/scripts/sync_drift_detector.py +144 -0
  276. package/assets/skills/gitops-workflows/scripts/validate_gitops_repo.py +299 -0
  277. package/assets/skills/iac-terraform/.claude-plugin/plugin.json +8 -0
  278. package/assets/skills/iac-terraform/SKILL.md +653 -0
  279. package/assets/skills/iac-terraform/assets/templates/MODULE_TEMPLATE.md +386 -0
  280. package/assets/skills/iac-terraform/assets/workflows/github-actions-terraform.yml +224 -0
  281. package/assets/skills/iac-terraform/assets/workflows/github-actions-terragrunt.yml +236 -0
  282. package/assets/skills/iac-terraform/assets/workflows/gitlab-ci-terraform.yml +184 -0
  283. package/assets/skills/iac-terraform/references/best_practices.md +709 -0
  284. package/assets/skills/iac-terraform/references/cost_optimization.md +665 -0
  285. package/assets/skills/iac-terraform/references/troubleshooting.md +635 -0
  286. package/assets/skills/iac-terraform/scripts/init_module.py +319 -0
  287. package/assets/skills/iac-terraform/scripts/inspect_state.py +232 -0
  288. package/assets/skills/iac-terraform/scripts/validate_module.py +227 -0
  289. package/assets/skills/k8s-troubleshooter/.claude-plugin/plugin.json +8 -0
  290. package/assets/skills/k8s-troubleshooter/SKILL.md +336 -0
  291. package/assets/skills/k8s-troubleshooter/references/common_issues.md +582 -0
  292. package/assets/skills/k8s-troubleshooter/references/helm_troubleshooting.md +708 -0
  293. package/assets/skills/k8s-troubleshooter/references/incident_response.md +466 -0
  294. package/assets/skills/k8s-troubleshooter/references/performance_troubleshooting.md +687 -0
  295. package/assets/skills/k8s-troubleshooter/scripts/check_namespace.py +500 -0
  296. package/assets/skills/k8s-troubleshooter/scripts/cluster_health.py +223 -0
  297. package/assets/skills/k8s-troubleshooter/scripts/diagnose_pod.py +157 -0
  298. package/assets/skills/mattermost-notify/SKILL.md +248 -0
  299. package/assets/skills/monitoring-observability/SKILL.md +869 -0
  300. package/assets/skills/monitoring-observability/assets/templates/otel-config/collector-config.yaml +227 -0
  301. package/assets/skills/monitoring-observability/assets/templates/prometheus-alerts/kubernetes-alerts.yml +293 -0
  302. package/assets/skills/monitoring-observability/assets/templates/prometheus-alerts/webapp-alerts.yml +243 -0
  303. package/assets/skills/monitoring-observability/assets/templates/runbooks/incident-runbook-template.md +409 -0
  304. package/assets/skills/monitoring-observability/monitoring-observability.skill +0 -0
  305. package/assets/skills/monitoring-observability/references/alerting_best_practices.md +609 -0
  306. package/assets/skills/monitoring-observability/references/datadog_migration.md +649 -0
  307. package/assets/skills/monitoring-observability/references/dql_promql_translation.md +756 -0
  308. package/assets/skills/monitoring-observability/references/logging_guide.md +775 -0
  309. package/assets/skills/monitoring-observability/references/metrics_design.md +406 -0
  310. package/assets/skills/monitoring-observability/references/slo_sla_guide.md +652 -0
  311. package/assets/skills/monitoring-observability/references/tool_comparison.md +697 -0
  312. package/assets/skills/monitoring-observability/references/tracing_guide.md +663 -0
  313. package/assets/skills/monitoring-observability/scripts/alert_quality_checker.py +315 -0
  314. package/assets/skills/monitoring-observability/scripts/analyze_metrics.py +279 -0
  315. package/assets/skills/monitoring-observability/scripts/dashboard_generator.py +395 -0
  316. package/assets/skills/monitoring-observability/scripts/datadog_cost_analyzer.py +477 -0
  317. package/assets/skills/monitoring-observability/scripts/health_check_validator.py +297 -0
  318. package/assets/skills/monitoring-observability/scripts/log_analyzer.py +321 -0
  319. package/assets/skills/monitoring-observability/scripts/slo_calculator.py +365 -0
  320. package/assets/skills/neo4j-graph-rag/SKILL.md +258 -0
  321. package/assets/skills/pagerduty-ops/SKILL.md +380 -0
  322. package/assets/skills/playwright/API_REFERENCE.md +653 -0
  323. package/assets/skills/playwright/SKILL.md +453 -0
  324. package/assets/skills/playwright/lib/helpers.js +441 -0
  325. package/assets/skills/playwright/package.json +26 -0
  326. package/assets/skills/playwright/run.js +228 -0
  327. package/assets/skills/project-memory/README.md +687 -0
  328. package/assets/skills/project-memory/SKILL.md +298 -0
  329. package/assets/skills/project-memory/references/bugs_template.md +41 -0
  330. package/assets/skills/project-memory/references/decisions_template.md +92 -0
  331. package/assets/skills/project-memory/references/issues_template.md +76 -0
  332. package/assets/skills/project-memory/references/key_facts_template.md +158 -0
  333. package/assets/skills/recruit-workflow/SKILL.md +276 -0
  334. package/assets/skills/recruit-workflow/references/email-templates.md +347 -0
  335. package/assets/skills/recruit-workflow/references/workflow-stages.md +395 -0
  336. package/assets/skills/recruit-workflow/scripts/clay_client.py +188 -0
  337. package/assets/skills/recruit-workflow/scripts/lever_client.py +197 -0
  338. package/assets/skills/recruit-workflow/scripts/mailgun_client.py +245 -0
  339. package/assets/skills/recruit-workflow/scripts/minio_client.py +426 -0
  340. package/assets/skills/shakudo-microservice/SKILL.md +215 -0
  341. package/assets/skills/tmux/SKILL.md +631 -0
  342. package/assets/skills/tmux/references/direct-socket-control.md +108 -0
  343. package/assets/skills/tmux/references/session-lifecycle.md +503 -0
  344. package/assets/skills/tmux/references/session-registry.md +1484 -0
  345. package/assets/skills/tmux/tools/cleanup-sessions.sh +263 -0
  346. package/assets/skills/tmux/tools/create-session.sh +224 -0
  347. package/assets/skills/tmux/tools/find-sessions.sh +262 -0
  348. package/assets/skills/tmux/tools/kill-session.sh +308 -0
  349. package/assets/skills/tmux/tools/lib/registry.sh +437 -0
  350. package/assets/skills/tmux/tools/lib/time_utils.sh +54 -0
  351. package/assets/skills/tmux/tools/list-sessions.sh +255 -0
  352. package/assets/skills/tmux/tools/pane-health.sh +424 -0
  353. package/assets/skills/tmux/tools/safe-send.sh +503 -0
  354. package/assets/skills/tmux/tools/wait-for-text.sh +260 -0
  355. package/assets/skills/twilio-sms/SKILL.md +508 -0
  356. package/assets/skills/zellij/SKILL.md +274 -0
  357. package/assets/skills/zellij/references/actions.md +558 -0
  358. package/assets/skills/zellij/references/layouts.md +424 -0
  359. package/bin/cli.ts +46 -0
  360. package/package.json +43 -0
  361. package/src/alias.ts +108 -0
  362. package/src/backup.ts +51 -0
  363. package/src/config.ts +115 -0
  364. package/src/dependencies.ts +163 -0
  365. package/src/errors.ts +77 -0
  366. package/src/index.ts +207 -0
  367. package/src/prompts.ts +142 -0
  368. package/src/schemas.ts +21 -0
  369. package/src/skills.ts +45 -0
  370. package/src/speckit.ts +116 -0
  371. package/src/types.ts +106 -0
  372. package/src/utils.ts +110 -0
  373. package/src/vibe-git.ts +50 -0
  374. package/templates/.specify/memory/constitution.md +109 -0
  375. package/templates/.specify/scripts/bash/check-prerequisites.sh +262 -0
  376. package/templates/.specify/scripts/bash/common.sh +670 -0
  377. package/templates/.specify/scripts/bash/create-new-feature.sh +594 -0
  378. package/templates/.specify/scripts/bash/create-worktree-feature.sh +401 -0
  379. package/templates/.specify/scripts/bash/init-workspace.sh +433 -0
  380. package/templates/.specify/scripts/bash/list-spec-worktrees.sh +198 -0
  381. package/templates/.specify/scripts/bash/setup-plan.sh +105 -0
  382. package/templates/.specify/scripts/bash/test-workspace-rollup.sh +175 -0
  383. package/templates/.specify/scripts/bash/update-agent-context.sh +799 -0
  384. package/templates/.specify/templates/agent-file-template.md +28 -0
  385. package/templates/.specify/templates/checklist-template.md +40 -0
  386. package/templates/.specify/templates/commands/analyze.md +197 -0
  387. package/templates/.specify/templates/commands/checklist.md +306 -0
  388. package/templates/.specify/templates/commands/clarify.md +194 -0
  389. package/templates/.specify/templates/commands/constitution.md +97 -0
  390. package/templates/.specify/templates/commands/implement.md +149 -0
  391. package/templates/.specify/templates/commands/plan.md +123 -0
  392. package/templates/.specify/templates/commands/projects.md +48 -0
  393. package/templates/.specify/templates/commands/rollup.md +66 -0
  394. package/templates/.specify/templates/commands/specify.md +275 -0
  395. package/templates/.specify/templates/commands/specs.md +71 -0
  396. package/templates/.specify/templates/commands/tasks.md +151 -0
  397. package/templates/.specify/templates/commands/taskstoissues.md +35 -0
  398. package/templates/.specify/templates/commands/workspace.md +128 -0
  399. package/templates/.specify/templates/plan-template.md +104 -0
  400. package/templates/.specify/templates/spec-template.md +115 -0
  401. package/templates/.specify/templates/tasks-template.md +251 -0
  402. package/templates/.specify/templates/workspace.yaml +110 -0
  403. package/templates/.specify/workspace.yaml +95 -0
  404. package/templates/AGENTS.md +460 -0
  405. package/templates/oh-my-opencode.json +27 -0
  406. package/templates/opencode.json +383 -0
  407. package/templates/package.json +10 -0
  408. package/templates/project-memory/bugs.md +16 -0
  409. package/templates/project-memory/decisions.md +22 -0
  410. package/templates/project-memory/issues.md +15 -0
  411. package/templates/project-memory/key_facts.md +26 -0
@@ -0,0 +1,502 @@
1
+ """
2
+ SkillGenerator: Converts optimization insights into shareable Agent Skills.
3
+
4
+ Transforms the learnings from optimization loops into reusable skills
5
+ following the Agent Skills template format.
6
+ """
7
+
8
+ import json
9
+ import os
10
+ from datetime import datetime
11
+ from pathlib import Path
12
+ from typing import Any
13
+
14
+ import anthropic
15
+
16
+ from reasoning_trace_optimizer.models import (
17
+ AnalysisResult,
18
+ LoopResult,
19
+ Pattern,
20
+ PatternType,
21
+ )
22
+
23
+
24
+ SKILL_TEMPLATE = '''---
25
+ name: {skill_name}
26
+ description: "{description}"
27
+ ---
28
+
29
+ # {title}
30
+
31
+ {intro}
32
+
33
+ ## When to Activate
34
+
35
+ {activation}
36
+
37
+ ## Core Concepts
38
+
39
+ {concepts}
40
+
41
+ ## Patterns to Avoid
42
+
43
+ {anti_patterns}
44
+
45
+ ## Recommended Practices
46
+
47
+ {practices}
48
+
49
+ ## Guidelines
50
+
51
+ {guidelines}
52
+
53
+ ## Examples
54
+
55
+ {examples}
56
+
57
+ ---
58
+
59
+ ## Skill Metadata
60
+
61
+ **Generated**: {date}
62
+ **Source**: Reasoning Trace Optimizer
63
+ **Optimization Iterations**: {iterations}
64
+ **Score Improvement**: {initial_score:.1f} → {final_score:.1f} (+{improvement:.1f}%)
65
+ '''
66
+
67
+
68
+ GENERATOR_SYSTEM_PROMPT = """You are an expert at converting agent optimization insights into reusable skills.
69
+
70
+ Your task is to analyze optimization results and generate a shareable Agent Skill that
71
+ captures the learnings so other developers can benefit.
72
+
73
+ The skill should:
74
+ 1. Describe WHEN to use these learnings (activation triggers)
75
+ 2. Explain the PATTERNS to avoid (anti-patterns found)
76
+ 3. Provide CONCRETE practices that improved performance
77
+ 4. Give VERIFIABLE guidelines (things that can be checked)
78
+ 5. Include EXAMPLES showing before/after improvements
79
+
80
+ Write in a clear, direct style. Focus on actionable guidance, not theory."""
81
+
82
+
83
+ def _format_list_to_markdown(items: list | str) -> str:
84
+ """Convert a list to markdown bullet points."""
85
+ if isinstance(items, str):
86
+ return items
87
+ if not items:
88
+ return ""
89
+
90
+ import re
91
+ formatted = []
92
+ for item in items:
93
+ # Strip any existing leading bullet points/dashes to avoid duplication
94
+ cleaned = re.sub(r'^[-*•]\s*', '', str(item).strip())
95
+ formatted.append(f"- {cleaned}")
96
+ return "\n".join(formatted)
97
+
98
+
99
+ def _format_numbered_list_to_markdown(items: list | str) -> str:
100
+ """Convert a list to markdown numbered list."""
101
+ if isinstance(items, str):
102
+ return items
103
+ if not items:
104
+ return ""
105
+
106
+ import re
107
+ formatted = []
108
+ for i, item in enumerate(items):
109
+ # Strip any existing leading numbers (e.g., "1. ", "2. ") to avoid duplication
110
+ cleaned = re.sub(r'^\d+\.\s*', '', str(item).strip())
111
+ formatted.append(f"{i+1}. {cleaned}")
112
+ return "\n".join(formatted)
113
+
114
+
115
+ def _format_examples_to_markdown(examples: list | str) -> str:
116
+ """Convert example dicts to markdown format."""
117
+ if isinstance(examples, str):
118
+ return examples
119
+ if not examples:
120
+ return ""
121
+
122
+ parts = []
123
+ for i, ex in enumerate(examples):
124
+ if isinstance(ex, dict):
125
+ parts.append(f"### Example {i+1}: {ex.get('context', 'Scenario')}")
126
+ if ex.get('before'):
127
+ parts.append(f"\n**Before:**\n```\n{ex['before']}\n```")
128
+ if ex.get('after'):
129
+ parts.append(f"\n**After:**\n```\n{ex['after']}\n```")
130
+ if ex.get('improvement'):
131
+ parts.append(f"\n**Improvement:** {ex['improvement']}")
132
+ parts.append("")
133
+ else:
134
+ parts.append(f"- {ex}")
135
+ return "\n".join(parts)
136
+
137
+
138
+ class SkillGenerator:
139
+ """
140
+ Generates shareable Agent Skills from optimization results.
141
+
142
+ Converts the learnings from optimization loops into the standard
143
+ Agent Skills format for sharing with other developers.
144
+
145
+ Example:
146
+ ```python
147
+ generator = SkillGenerator()
148
+ skill_path = generator.generate(
149
+ result=loop_result,
150
+ skill_name="web-search-agent",
151
+ output_dir="./generated_skills"
152
+ )
153
+ print(f"Generated skill at: {skill_path}")
154
+ ```
155
+ """
156
+
157
+ def __init__(
158
+ self,
159
+ api_key: str | None = None,
160
+ base_url: str = "https://api.minimax.io/anthropic",
161
+ model: str = "MiniMax-M2.1",
162
+ ):
163
+ """
164
+ Initialize SkillGenerator.
165
+
166
+ Args:
167
+ api_key: MiniMax API key
168
+ base_url: API endpoint
169
+ model: Model for skill generation
170
+ """
171
+ self.model = model
172
+ self.client = anthropic.Anthropic(
173
+ api_key=api_key or os.environ.get("ANTHROPIC_API_KEY"),
174
+ base_url=base_url,
175
+ )
176
+
177
+ def generate(
178
+ self,
179
+ result: LoopResult,
180
+ skill_name: str,
181
+ output_dir: str = "./generated_skills",
182
+ title: str | None = None,
183
+ ) -> str:
184
+ """
185
+ Generate an Agent Skill from optimization results.
186
+
187
+ Args:
188
+ result: The optimization loop result
189
+ skill_name: Name for the skill (lowercase-with-hyphens)
190
+ output_dir: Directory to save the skill
191
+ title: Optional human-readable title
192
+
193
+ Returns:
194
+ Path to the generated SKILL.md file
195
+ """
196
+ # Extract insights from all iterations
197
+ all_patterns = self._collect_patterns(result)
198
+ all_recommendations = self._collect_recommendations(result)
199
+ key_changes = self._collect_key_changes(result)
200
+
201
+ # Generate skill content using M2.1
202
+ content = self._generate_skill_content(
203
+ task=result.task,
204
+ patterns=all_patterns,
205
+ recommendations=all_recommendations,
206
+ key_changes=key_changes,
207
+ initial_prompt=result.iterations[0].trace.system_prompt if result.iterations else "",
208
+ final_prompt=result.final_prompt,
209
+ )
210
+
211
+ # Format content - convert lists to markdown
212
+ formatted_content = {
213
+ "activation": _format_list_to_markdown(content.get("activation", "")),
214
+ "concepts": _format_list_to_markdown(content.get("concepts", "")),
215
+ "anti_patterns": _format_list_to_markdown(content.get("anti_patterns", "")),
216
+ "practices": _format_list_to_markdown(content.get("practices", "")),
217
+ "guidelines": _format_numbered_list_to_markdown(content.get("guidelines", "")),
218
+ "examples": _format_examples_to_markdown(content.get("examples", "")),
219
+ }
220
+
221
+ # Format using template
222
+ skill_content = SKILL_TEMPLATE.format(
223
+ skill_name=skill_name,
224
+ description=content.get("description", f"Optimized practices for {skill_name}"),
225
+ title=title or content.get("title", skill_name.replace("-", " ").title()),
226
+ intro=content.get("intro", ""),
227
+ activation=formatted_content["activation"],
228
+ concepts=formatted_content["concepts"],
229
+ anti_patterns=formatted_content["anti_patterns"],
230
+ practices=formatted_content["practices"],
231
+ guidelines=formatted_content["guidelines"],
232
+ examples=formatted_content["examples"],
233
+ date=datetime.now().strftime("%Y-%m-%d"),
234
+ iterations=result.total_iterations,
235
+ initial_score=result.initial_score,
236
+ final_score=result.final_score,
237
+ improvement=result.improvement_percentage,
238
+ )
239
+
240
+ # Save skill
241
+ skill_dir = Path(output_dir) / skill_name
242
+ skill_dir.mkdir(parents=True, exist_ok=True)
243
+
244
+ skill_path = skill_dir / "SKILL.md"
245
+ with open(skill_path, "w") as f:
246
+ f.write(skill_content)
247
+
248
+ # Save optimization data as reference
249
+ self._save_references(skill_dir, result, content)
250
+
251
+ return str(skill_path)
252
+
253
+ def generate_from_analysis(
254
+ self,
255
+ analyses: list[AnalysisResult],
256
+ skill_name: str,
257
+ task_description: str,
258
+ output_dir: str = "./generated_skills",
259
+ ) -> str:
260
+ """
261
+ Generate a skill from multiple analysis results (without full loop).
262
+
263
+ Useful when you have analysis data but didn't run the full optimization loop.
264
+
265
+ Args:
266
+ analyses: List of analysis results
267
+ skill_name: Name for the skill
268
+ task_description: Description of the task context
269
+ output_dir: Output directory
270
+
271
+ Returns:
272
+ Path to generated skill
273
+ """
274
+ # Aggregate patterns and recommendations
275
+ all_patterns = []
276
+ all_recommendations = []
277
+
278
+ for analysis in analyses:
279
+ all_patterns.extend(analysis.patterns)
280
+ all_recommendations.extend(analysis.recommendations)
281
+
282
+ content = self._generate_skill_content(
283
+ task=task_description,
284
+ patterns=all_patterns,
285
+ recommendations=list(set(all_recommendations)),
286
+ key_changes=[],
287
+ initial_prompt="",
288
+ final_prompt="",
289
+ )
290
+
291
+ # Calculate average score
292
+ avg_score = sum(a.overall_score for a in analyses) / len(analyses) if analyses else 0
293
+
294
+ skill_content = SKILL_TEMPLATE.format(
295
+ skill_name=skill_name,
296
+ description=content.get("description", f"Learnings for {skill_name}"),
297
+ title=content.get("title", skill_name.replace("-", " ").title()),
298
+ intro=content.get("intro", ""),
299
+ activation=content.get("activation", ""),
300
+ concepts=content.get("concepts", ""),
301
+ anti_patterns=content.get("anti_patterns", ""),
302
+ practices=content.get("practices", ""),
303
+ guidelines=content.get("guidelines", ""),
304
+ examples=content.get("examples", ""),
305
+ date=datetime.now().strftime("%Y-%m-%d"),
306
+ iterations=len(analyses),
307
+ initial_score=avg_score,
308
+ final_score=avg_score,
309
+ improvement=0,
310
+ )
311
+
312
+ skill_dir = Path(output_dir) / skill_name
313
+ skill_dir.mkdir(parents=True, exist_ok=True)
314
+
315
+ skill_path = skill_dir / "SKILL.md"
316
+ with open(skill_path, "w") as f:
317
+ f.write(skill_content)
318
+
319
+ return str(skill_path)
320
+
321
+ def _collect_patterns(self, result: LoopResult) -> list[Pattern]:
322
+ """Collect all unique patterns from iterations."""
323
+ patterns = []
324
+ seen = set()
325
+
326
+ for iteration in result.iterations:
327
+ for pattern in iteration.analysis.patterns:
328
+ key = (pattern.type, pattern.description[:50])
329
+ if key not in seen:
330
+ patterns.append(pattern)
331
+ seen.add(key)
332
+
333
+ return patterns
334
+
335
+ def _collect_recommendations(self, result: LoopResult) -> list[str]:
336
+ """Collect all unique recommendations."""
337
+ recommendations = []
338
+ seen = set()
339
+
340
+ for iteration in result.iterations:
341
+ for rec in iteration.analysis.recommendations:
342
+ if rec not in seen:
343
+ recommendations.append(rec)
344
+ seen.add(rec)
345
+
346
+ return recommendations
347
+
348
+ def _collect_key_changes(self, result: LoopResult) -> list[str]:
349
+ """Collect all key changes from optimizations."""
350
+ changes = []
351
+
352
+ for iteration in result.iterations:
353
+ if iteration.optimization:
354
+ changes.extend(iteration.optimization.key_changes)
355
+
356
+ return changes
357
+
358
+ def _generate_skill_content(
359
+ self,
360
+ task: str,
361
+ patterns: list[Pattern],
362
+ recommendations: list[str],
363
+ key_changes: list[str],
364
+ initial_prompt: str,
365
+ final_prompt: str,
366
+ ) -> dict[str, str]:
367
+ """Use M2.1 to generate skill content sections."""
368
+ patterns_text = "\n".join(
369
+ f"- [{p.severity.value}] {p.type.value}: {p.description}"
370
+ for p in patterns
371
+ )
372
+
373
+ recommendations_text = "\n".join(f"- {r}" for r in recommendations)
374
+ changes_text = "\n".join(f"- {c}" for c in key_changes)
375
+
376
+ prompt = f"""Generate an Agent Skill based on these optimization insights:
377
+
378
+ ## Task Context
379
+ {task}
380
+
381
+ ## Patterns Detected (Anti-patterns to avoid)
382
+ {patterns_text or "No significant patterns detected"}
383
+
384
+ ## Recommendations from Analysis
385
+ {recommendations_text or "No specific recommendations"}
386
+
387
+ ## Key Changes That Improved Performance
388
+ {changes_text or "No recorded changes"}
389
+
390
+ ## Prompt Evolution
391
+ Initial: {initial_prompt[:500] if initial_prompt else "N/A"}...
392
+ Final: {final_prompt[:500] if final_prompt else "N/A"}...
393
+
394
+ ---
395
+
396
+ Generate skill content as JSON:
397
+ ```json
398
+ {{
399
+ "title": "Human-readable skill title",
400
+ "description": "One-line description for skill discovery (what triggers this skill)",
401
+ "intro": "2-3 sentence introduction explaining what this skill teaches",
402
+ "activation": "Bullet points of when to activate this skill (specific keywords, task types)",
403
+ "concepts": "Core concepts this skill covers (3-5 key ideas)",
404
+ "anti_patterns": "Patterns to AVOID - formatted as markdown list with descriptions",
405
+ "practices": "Recommended practices - formatted as markdown list",
406
+ "guidelines": "Numbered verifiable guidelines (things that can be checked)",
407
+ "examples": "1-2 concrete before/after examples showing improvement"
408
+ }}
409
+ ```"""
410
+
411
+ response = self.client.messages.create(
412
+ model=self.model,
413
+ max_tokens=4096,
414
+ system=GENERATOR_SYSTEM_PROMPT,
415
+ messages=[{"role": "user", "content": prompt}],
416
+ )
417
+
418
+ # Parse response
419
+ for block in response.content:
420
+ if block.type == "text":
421
+ try:
422
+ text = block.text
423
+ if "```json" in text:
424
+ text = text.split("```json")[1].split("```")[0]
425
+ return json.loads(text)
426
+ except json.JSONDecodeError:
427
+ pass
428
+
429
+ # Return defaults if parsing fails
430
+ return {
431
+ "title": "Generated Agent Skill",
432
+ "description": f"Optimized practices for {task}",
433
+ "intro": "This skill contains learnings from automated prompt optimization.",
434
+ "activation": "- When working on similar tasks\n- When debugging agent failures",
435
+ "concepts": "See recommendations section.",
436
+ "anti_patterns": patterns_text or "No patterns identified.",
437
+ "practices": recommendations_text or "No specific practices.",
438
+ "guidelines": "1. Review the anti-patterns before implementation\n2. Apply recommended practices",
439
+ "examples": "See optimization artifacts for detailed examples.",
440
+ }
441
+
442
+ def _save_references(
443
+ self,
444
+ skill_dir: Path,
445
+ result: LoopResult,
446
+ content: dict[str, str],
447
+ ) -> None:
448
+ """Save reference materials alongside the skill."""
449
+ refs_dir = skill_dir / "references"
450
+ refs_dir.mkdir(exist_ok=True)
451
+
452
+ # Save optimization summary
453
+ summary = {
454
+ "task": result.task,
455
+ "iterations": result.total_iterations,
456
+ "initial_score": result.initial_score,
457
+ "final_score": result.final_score,
458
+ "improvement": result.improvement_percentage,
459
+ "converged": result.converged,
460
+ "generated_at": datetime.now().isoformat(),
461
+ }
462
+ with open(refs_dir / "optimization_summary.json", "w") as f:
463
+ json.dump(summary, f, indent=2)
464
+
465
+ # Save final optimized prompt
466
+ with open(refs_dir / "optimized_prompt.txt", "w") as f:
467
+ f.write(result.final_prompt)
468
+
469
+ # Save all patterns found
470
+ patterns_data = []
471
+ for iteration in result.iterations:
472
+ for p in iteration.analysis.patterns:
473
+ patterns_data.append({
474
+ "type": p.type.value,
475
+ "severity": p.severity.value,
476
+ "description": p.description,
477
+ "suggestion": p.suggestion,
478
+ "iteration": iteration.iteration,
479
+ })
480
+
481
+ with open(refs_dir / "patterns_found.json", "w") as f:
482
+ json.dump(patterns_data, f, indent=2)
483
+
484
+
485
+ def generate_skill_from_loop(
486
+ result: LoopResult,
487
+ skill_name: str,
488
+ output_dir: str = "./generated_skills",
489
+ ) -> str:
490
+ """
491
+ Quick helper to generate a skill from optimization results.
492
+
493
+ Args:
494
+ result: Optimization loop result
495
+ skill_name: Name for the skill
496
+ output_dir: Output directory
497
+
498
+ Returns:
499
+ Path to generated skill
500
+ """
501
+ generator = SkillGenerator()
502
+ return generator.generate(result, skill_name, output_dir)
@@ -0,0 +1 @@
1
+ """Tests for Reasoning Trace Optimizer."""
@@ -0,0 +1,144 @@
1
+ """Tests for data models."""
2
+
3
+ from datetime import datetime
4
+
5
+ from reasoning_trace_optimizer.models import (
6
+ AnalysisResult,
7
+ LoopResult,
8
+ OptimizationResult,
9
+ Pattern,
10
+ PatternType,
11
+ PromptDiff,
12
+ ReasoningTrace,
13
+ Severity,
14
+ ThinkingBlock,
15
+ ToolCall,
16
+ )
17
+
18
+
19
+ def test_thinking_block_creation():
20
+ """Test ThinkingBlock creation with defaults."""
21
+ block = ThinkingBlock(
22
+ content="This is a test thinking block.",
23
+ turn_index=0,
24
+ )
25
+ assert block.content == "This is a test thinking block."
26
+ assert block.turn_index == 0
27
+ assert block.token_count == 0
28
+ assert isinstance(block.timestamp, datetime)
29
+
30
+
31
+ def test_tool_call_creation():
32
+ """Test ToolCall creation."""
33
+ tc = ToolCall(
34
+ id="call_123",
35
+ name="get_weather",
36
+ input={"location": "San Francisco"},
37
+ turn_index=1,
38
+ )
39
+ assert tc.id == "call_123"
40
+ assert tc.name == "get_weather"
41
+ assert tc.input["location"] == "San Francisco"
42
+ assert tc.success is None
43
+
44
+
45
+ def test_reasoning_trace_creation():
46
+ """Test ReasoningTrace creation and methods."""
47
+ trace = ReasoningTrace(
48
+ session_id="test-session",
49
+ task="Test task",
50
+ system_prompt="Test prompt",
51
+ )
52
+
53
+ # Add thinking block
54
+ block = ThinkingBlock(content="Thinking...", turn_index=0)
55
+ trace.thinking_blocks.append(block)
56
+
57
+ # Add tool call
58
+ tc = ToolCall(
59
+ id="call_1",
60
+ name="test_tool",
61
+ input={},
62
+ turn_index=0,
63
+ )
64
+ trace.tool_calls.append(tc)
65
+
66
+ # Test methods
67
+ assert trace.get_thinking_at_turn(0) == block
68
+ assert trace.get_thinking_at_turn(1) is None
69
+ assert len(trace.get_tool_calls_at_turn(0)) == 1
70
+ assert len(trace.get_tool_calls_at_turn(1)) == 0
71
+
72
+
73
+ def test_pattern_creation():
74
+ """Test Pattern creation."""
75
+ pattern = Pattern(
76
+ type=PatternType.CONTEXT_DEGRADATION,
77
+ severity=Severity.HIGH,
78
+ description="Model lost track of goal",
79
+ evidence=["Evidence 1", "Evidence 2"],
80
+ turn_indices=[2, 3],
81
+ suggestion="Add explicit reminders",
82
+ confidence=0.85,
83
+ )
84
+ assert pattern.type == PatternType.CONTEXT_DEGRADATION
85
+ assert pattern.severity == Severity.HIGH
86
+ assert pattern.confidence == 0.85
87
+
88
+
89
+ def test_analysis_result_creation():
90
+ """Test AnalysisResult creation."""
91
+ result = AnalysisResult(trace_id="test-trace")
92
+ assert result.overall_score == 0.0
93
+ assert len(result.patterns) == 0
94
+ assert len(result.recommendations) == 0
95
+
96
+
97
+ def test_optimization_result_creation():
98
+ """Test OptimizationResult creation."""
99
+ result = OptimizationResult(
100
+ original_prompt="Original",
101
+ optimized_prompt="Optimized",
102
+ )
103
+ result.diffs.append(PromptDiff(
104
+ section="instructions",
105
+ original="Original text",
106
+ optimized="Improved text",
107
+ reason="Better clarity",
108
+ ))
109
+ assert len(result.diffs) == 1
110
+ assert result.diffs[0].section == "instructions"
111
+
112
+
113
+ def test_loop_result_creation():
114
+ """Test LoopResult creation."""
115
+ result = LoopResult(task="Test task")
116
+ assert result.total_iterations == 0
117
+ assert result.converged is False
118
+ assert result.improvement_percentage == 0.0
119
+
120
+
121
+ def test_pattern_types():
122
+ """Test all PatternType values exist."""
123
+ expected_types = [
124
+ "context_degradation",
125
+ "tool_confusion",
126
+ "instruction_drift",
127
+ "hallucination",
128
+ "incomplete_reasoning",
129
+ "tool_misuse",
130
+ "goal_abandonment",
131
+ "circular_reasoning",
132
+ "premature_conclusion",
133
+ "missing_validation",
134
+ ]
135
+ for type_name in expected_types:
136
+ assert PatternType(type_name) is not None
137
+
138
+
139
+ def test_severity_levels():
140
+ """Test all Severity levels exist."""
141
+ assert Severity.LOW.value == "low"
142
+ assert Severity.MEDIUM.value == "medium"
143
+ assert Severity.HIGH.value == "high"
144
+ assert Severity.CRITICAL.value == "critical"
@@ -0,0 +1,8 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": true,
4
+ "tabWidth": 2,
5
+ "trailingComma": "es5",
6
+ "printWidth": 100
7
+ }
8
+