@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.
- package/README.md +155 -0
- package/assets/skills/ci-cd/.claude-plugin/plugin.json +8 -0
- package/assets/skills/ci-cd/SKILL.md +573 -0
- package/assets/skills/ci-cd/assets/templates/github-actions/docker-build.yml +164 -0
- package/assets/skills/ci-cd/assets/templates/github-actions/go-ci.yml +420 -0
- package/assets/skills/ci-cd/assets/templates/github-actions/node-ci.yml +313 -0
- package/assets/skills/ci-cd/assets/templates/github-actions/python-ci.yml +388 -0
- package/assets/skills/ci-cd/assets/templates/github-actions/security-scan.yml +416 -0
- package/assets/skills/ci-cd/assets/templates/gitlab-ci/docker-build.yml +298 -0
- package/assets/skills/ci-cd/assets/templates/gitlab-ci/go-ci.yml +548 -0
- package/assets/skills/ci-cd/assets/templates/gitlab-ci/node-ci.yml +334 -0
- package/assets/skills/ci-cd/assets/templates/gitlab-ci/python-ci.yml +472 -0
- package/assets/skills/ci-cd/assets/templates/gitlab-ci/security-scan.yml +479 -0
- package/assets/skills/ci-cd/references/best_practices.md +675 -0
- package/assets/skills/ci-cd/references/devsecops.md +862 -0
- package/assets/skills/ci-cd/references/optimization.md +651 -0
- package/assets/skills/ci-cd/references/security.md +611 -0
- package/assets/skills/ci-cd/references/troubleshooting.md +656 -0
- package/assets/skills/ci-cd/scripts/ci_health.py +301 -0
- package/assets/skills/ci-cd/scripts/pipeline_analyzer.py +440 -0
- package/assets/skills/context-optimization/CONTRIBUTING.md +78 -0
- package/assets/skills/context-optimization/LICENSE +22 -0
- package/assets/skills/context-optimization/README.md +228 -0
- package/assets/skills/context-optimization/SKILL.md +104 -0
- package/assets/skills/context-optimization/docs/agentskills.md +1264 -0
- package/assets/skills/context-optimization/docs/blogs.md +1230 -0
- package/assets/skills/context-optimization/docs/claude_research.md +85 -0
- package/assets/skills/context-optimization/docs/compression.md +298 -0
- package/assets/skills/context-optimization/docs/gemini_research.md +22 -0
- package/assets/skills/context-optimization/docs/hncapsule.md +92 -0
- package/assets/skills/context-optimization/docs/netflix_context.md +10 -0
- package/assets/skills/context-optimization/docs/vercel_tool.md +140 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/README.md +78 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/SKILL.md +380 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/README.md +168 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/dataset_sample.jsonl +5 -0
- 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
- 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
- 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
- package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/sample_outputs.md +63 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/examples/gertrude-stein/training_config.json +80 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/references/segmentation-strategies.md +324 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/references/tinker-format.md +211 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/references/tinker.txt +3176 -0
- package/assets/skills/context-optimization/examples/book-sft-pipeline/scripts/pipeline_example.py +187 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/AGENT.md +35 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/HOW-SKILLS-BUILT-THIS.md +407 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/README.md +209 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/SKILL.md +203 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/SKILLS-MAPPING.md +219 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/agents/AGENTS.md +82 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/content_ideas.py +132 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/idea_to_draft.py +181 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/stale_contacts.py +139 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/agents/scripts/weekly_review.py +121 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/CONTENT.md +88 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/calendar.md +108 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/engagement.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/ideas.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/posts.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/templates/linkedin-post.md +102 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/templates/newsletter.md +92 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/content/templates/thread.md +73 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/examples/content-workflow.md +204 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/examples/meeting-prep.md +243 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/IDENTITY.md +46 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/bio-variants.md +101 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/brand.md +165 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/prompts/content-generation.xml +46 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/prompts/reply-generator.xml +40 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/values.yaml +60 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/identity/voice.md +165 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/KNOWLEDGE.md +85 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/bookmarks.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/competitors.md +117 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/learning.yaml +74 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/knowledge/research/_template.md +79 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/network/NETWORK.md +110 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/network/circles.yaml +80 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/network/contacts.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/network/interactions.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/network/intros.md +92 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/operations/OPERATIONS.md +75 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/operations/goals.yaml +83 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/operations/meetings.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/operations/metrics.jsonl +2 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/operations/reviews/_weekly_template.md +114 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/operations/todos.md +76 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/package.json +41 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/references/file-formats.md +386 -0
- package/assets/skills/context-optimization/examples/digital-brain-skill/scripts/install.sh +79 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/README.md +620 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/SKILL.md +221 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/docs/agentthinking.md +63 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/docs/interleavedthinking.md +610 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/docs/m2-1.md +224 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/examples/01_basic_capture.py +76 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/examples/02_tool_usage.py +187 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/examples/03_full_optimization.py +1222 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/SKILL.md +90 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/references/optimization_summary.json +9 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/references/optimized_prompt.txt +1 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/generated_skills/comprehensive-research-agent/references/patterns_found.json +205 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/final_prompt.txt +67 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/analysis.txt +48 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/optimization.txt +15 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/optimized_prompt.txt +1 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_1/trace.txt +178 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_10/analysis.txt +47 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_10/trace.txt +162 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/analysis.txt +48 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/optimization.txt +130 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/optimized_prompt.txt +72 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_2/trace.txt +156 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/analysis.txt +46 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/optimization.txt +147 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/optimized_prompt.txt +84 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_3/trace.txt +159 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/analysis.txt +46 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/optimization.txt +134 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/optimized_prompt.txt +67 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_4/trace.txt +165 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/analysis.txt +50 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/optimization.txt +135 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/optimized_prompt.txt +71 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_5/trace.txt +146 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/analysis.txt +15 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/optimization.txt +15 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/optimized_prompt.txt +1 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_6/trace.txt +147 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/analysis.txt +46 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/optimization.txt +103 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/optimized_prompt.txt +45 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_7/trace.txt +134 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/analysis.txt +47 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/optimization.txt +114 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/optimized_prompt.txt +60 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_8/trace.txt +135 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/analysis.txt +44 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/optimization.txt +106 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/optimized_prompt.txt +51 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/iteration_9/trace.txt +170 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/optimization_artifacts/summary.json +11 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/pyproject.toml +70 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/__init__.py +53 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/analyzer.py +465 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/capture.py +417 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/cli.py +271 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/loop.py +468 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/models.py +193 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/optimizer.py +449 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/reasoning_trace_optimizer/skill_generator.py +502 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/tests/__init__.py +1 -0
- package/assets/skills/context-optimization/examples/interleaved_thinking/tests/test_models.py +144 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/.prettierrc +8 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/CONTRIBUTING.md +78 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/LICENSE +21 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/README.md +659 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/evaluator-agent/evaluator-agent.md +177 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/index.md +114 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/orchestrator-agent/orchestrator-agent.md +205 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/agents/research-agent/research-agent.md +183 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/env.example +6 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/eslint.config.js +18 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/basic-evaluation.ts +89 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/full-evaluation-workflow.ts +136 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/generate-rubric.ts +67 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/examples/pairwise-comparison.ts +97 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/package.json +79 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/agent-system/orchestrator-prompt.md +197 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/evaluation/direct-scoring-prompt.md +153 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/evaluation/pairwise-comparison-prompt.md +200 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/index.md +138 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/prompts/research/research-synthesis-prompt.md +171 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/context-fundamentals/context-fundamentals.md +114 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/index.md +79 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/llm-evaluator/llm-evaluator.md +77 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/skills/tool-design/tool-design.md +198 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/agents/evaluator.ts +112 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/agents/index.ts +3 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/config/index.ts +18 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/index.ts +19 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/direct-score.ts +164 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/generate-rubric.ts +161 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/index.ts +9 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/src/tools/evaluation/pairwise-compare.ts +255 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tests/evaluation.test.ts +233 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tests/setup.ts +27 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tests/skills.test.ts +213 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/evaluation/direct-score.md +159 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/evaluation/generate-rubric.md +189 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/evaluation/pairwise-compare.md +182 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/index.md +141 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/orchestration/delegate-to-agent.md +171 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/research/read-url.md +162 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tools/research/web-search.md +128 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/tsconfig.json +26 -0
- package/assets/skills/context-optimization/examples/llm-as-judge-skills/vitest.config.ts +20 -0
- package/assets/skills/context-optimization/examples/x-to-book-system/PRD.md +644 -0
- package/assets/skills/context-optimization/examples/x-to-book-system/README.md +181 -0
- package/assets/skills/context-optimization/examples/x-to-book-system/SKILLS-MAPPING.md +187 -0
- package/assets/skills/context-optimization/researcher/example_output.md +75 -0
- package/assets/skills/context-optimization/researcher/llm-as-a-judge.md +362 -0
- package/assets/skills/context-optimization/skills/advanced-evaluation/SKILL.md +454 -0
- package/assets/skills/context-optimization/skills/advanced-evaluation/references/bias-mitigation.md +288 -0
- package/assets/skills/context-optimization/skills/advanced-evaluation/references/implementation-patterns.md +315 -0
- package/assets/skills/context-optimization/skills/advanced-evaluation/references/metrics-guide.md +331 -0
- package/assets/skills/context-optimization/skills/advanced-evaluation/scripts/evaluation_example.py +337 -0
- package/assets/skills/context-optimization/skills/bdi-mental-states/SKILL.md +295 -0
- package/assets/skills/context-optimization/skills/bdi-mental-states/references/bdi-ontology-core.md +207 -0
- package/assets/skills/context-optimization/skills/bdi-mental-states/references/framework-integration.md +582 -0
- package/assets/skills/context-optimization/skills/bdi-mental-states/references/rdf-examples.md +315 -0
- package/assets/skills/context-optimization/skills/bdi-mental-states/references/sparql-competency.md +420 -0
- package/assets/skills/context-optimization/skills/context-compression/SKILL.md +265 -0
- package/assets/skills/context-optimization/skills/context-compression/references/evaluation-framework.md +213 -0
- package/assets/skills/context-optimization/skills/context-compression/scripts/compression_evaluator.py +658 -0
- package/assets/skills/context-optimization/skills/context-degradation/SKILL.md +231 -0
- package/assets/skills/context-optimization/skills/context-degradation/references/patterns.md +314 -0
- package/assets/skills/context-optimization/skills/context-degradation/scripts/degradation_detector.py +419 -0
- package/assets/skills/context-optimization/skills/context-fundamentals/SKILL.md +185 -0
- package/assets/skills/context-optimization/skills/context-fundamentals/references/context-components.md +283 -0
- package/assets/skills/context-optimization/skills/context-fundamentals/scripts/context_manager.py +370 -0
- package/assets/skills/context-optimization/skills/context-optimization/SKILL.md +179 -0
- package/assets/skills/context-optimization/skills/context-optimization/references/optimization_techniques.md +272 -0
- package/assets/skills/context-optimization/skills/context-optimization/scripts/compaction.py +379 -0
- package/assets/skills/context-optimization/skills/evaluation/SKILL.md +231 -0
- package/assets/skills/context-optimization/skills/evaluation/references/metrics.md +339 -0
- package/assets/skills/context-optimization/skills/evaluation/scripts/evaluator.py +474 -0
- package/assets/skills/context-optimization/skills/filesystem-context/SKILL.md +321 -0
- package/assets/skills/context-optimization/skills/filesystem-context/references/implementation-patterns.md +549 -0
- package/assets/skills/context-optimization/skills/filesystem-context/scripts/filesystem_context.py +353 -0
- package/assets/skills/context-optimization/skills/hosted-agents/SKILL.md +279 -0
- package/assets/skills/context-optimization/skills/hosted-agents/references/infrastructure-patterns.md +700 -0
- package/assets/skills/context-optimization/skills/hosted-agents/scripts/sandbox_manager.py +495 -0
- package/assets/skills/context-optimization/skills/memory-systems/SKILL.md +221 -0
- package/assets/skills/context-optimization/skills/memory-systems/references/implementation.md +458 -0
- package/assets/skills/context-optimization/skills/memory-systems/scripts/memory_store.py +396 -0
- package/assets/skills/context-optimization/skills/multi-agent-patterns/SKILL.md +255 -0
- package/assets/skills/context-optimization/skills/multi-agent-patterns/references/frameworks.md +433 -0
- package/assets/skills/context-optimization/skills/multi-agent-patterns/scripts/coordination.py +439 -0
- package/assets/skills/context-optimization/skills/project-development/SKILL.md +342 -0
- package/assets/skills/context-optimization/skills/project-development/references/case-studies.md +388 -0
- package/assets/skills/context-optimization/skills/project-development/references/pipeline-patterns.md +610 -0
- package/assets/skills/context-optimization/skills/project-development/scripts/pipeline_template.py +677 -0
- package/assets/skills/context-optimization/skills/tool-design/SKILL.md +311 -0
- package/assets/skills/context-optimization/skills/tool-design/references/architectural_reduction.md +210 -0
- package/assets/skills/context-optimization/skills/tool-design/references/best_practices.md +176 -0
- package/assets/skills/context-optimization/skills/tool-design/scripts/description_generator.py +237 -0
- package/assets/skills/context-optimization/template/SKILL.md +98 -0
- package/assets/skills/dremio-analytics/SKILL.md +287 -0
- package/assets/skills/elevenlabs-voice/SKILL.md +269 -0
- package/assets/skills/git-workflow/SKILL.md +266 -0
- package/assets/skills/gitops-workflows/.claude-plugin/plugin.json +8 -0
- package/assets/skills/gitops-workflows/SKILL.md +568 -0
- package/assets/skills/gitops-workflows/assets/applicationsets/cluster-generator.yaml +32 -0
- package/assets/skills/gitops-workflows/assets/argocd/install-argocd-3.x.yaml +92 -0
- package/assets/skills/gitops-workflows/assets/flux/flux-bootstrap-github.sh +49 -0
- package/assets/skills/gitops-workflows/assets/flux/oci-helmrelease.yaml +38 -0
- package/assets/skills/gitops-workflows/assets/progressive-delivery/argo-rollouts-canary.yaml +62 -0
- package/assets/skills/gitops-workflows/assets/secrets/sops-age-config.yaml +33 -0
- package/assets/skills/gitops-workflows/references/argocd_vs_flux.md +243 -0
- package/assets/skills/gitops-workflows/references/best_practices.md +160 -0
- package/assets/skills/gitops-workflows/references/multi_cluster.md +80 -0
- package/assets/skills/gitops-workflows/references/oci_artifacts.md +290 -0
- package/assets/skills/gitops-workflows/references/progressive_delivery.md +94 -0
- package/assets/skills/gitops-workflows/references/repo_patterns.md +184 -0
- package/assets/skills/gitops-workflows/references/secret_management.md +213 -0
- package/assets/skills/gitops-workflows/references/troubleshooting.md +134 -0
- package/assets/skills/gitops-workflows/scripts/applicationset_generator.py +156 -0
- package/assets/skills/gitops-workflows/scripts/check_argocd_health.py +275 -0
- package/assets/skills/gitops-workflows/scripts/check_flux_health.py +418 -0
- package/assets/skills/gitops-workflows/scripts/oci_artifact_checker.py +150 -0
- package/assets/skills/gitops-workflows/scripts/promotion_validator.py +88 -0
- package/assets/skills/gitops-workflows/scripts/secret_audit.py +178 -0
- package/assets/skills/gitops-workflows/scripts/sync_drift_detector.py +144 -0
- package/assets/skills/gitops-workflows/scripts/validate_gitops_repo.py +299 -0
- package/assets/skills/iac-terraform/.claude-plugin/plugin.json +8 -0
- package/assets/skills/iac-terraform/SKILL.md +653 -0
- package/assets/skills/iac-terraform/assets/templates/MODULE_TEMPLATE.md +386 -0
- package/assets/skills/iac-terraform/assets/workflows/github-actions-terraform.yml +224 -0
- package/assets/skills/iac-terraform/assets/workflows/github-actions-terragrunt.yml +236 -0
- package/assets/skills/iac-terraform/assets/workflows/gitlab-ci-terraform.yml +184 -0
- package/assets/skills/iac-terraform/references/best_practices.md +709 -0
- package/assets/skills/iac-terraform/references/cost_optimization.md +665 -0
- package/assets/skills/iac-terraform/references/troubleshooting.md +635 -0
- package/assets/skills/iac-terraform/scripts/init_module.py +319 -0
- package/assets/skills/iac-terraform/scripts/inspect_state.py +232 -0
- package/assets/skills/iac-terraform/scripts/validate_module.py +227 -0
- package/assets/skills/k8s-troubleshooter/.claude-plugin/plugin.json +8 -0
- package/assets/skills/k8s-troubleshooter/SKILL.md +336 -0
- package/assets/skills/k8s-troubleshooter/references/common_issues.md +582 -0
- package/assets/skills/k8s-troubleshooter/references/helm_troubleshooting.md +708 -0
- package/assets/skills/k8s-troubleshooter/references/incident_response.md +466 -0
- package/assets/skills/k8s-troubleshooter/references/performance_troubleshooting.md +687 -0
- package/assets/skills/k8s-troubleshooter/scripts/check_namespace.py +500 -0
- package/assets/skills/k8s-troubleshooter/scripts/cluster_health.py +223 -0
- package/assets/skills/k8s-troubleshooter/scripts/diagnose_pod.py +157 -0
- package/assets/skills/mattermost-notify/SKILL.md +248 -0
- package/assets/skills/monitoring-observability/SKILL.md +869 -0
- package/assets/skills/monitoring-observability/assets/templates/otel-config/collector-config.yaml +227 -0
- package/assets/skills/monitoring-observability/assets/templates/prometheus-alerts/kubernetes-alerts.yml +293 -0
- package/assets/skills/monitoring-observability/assets/templates/prometheus-alerts/webapp-alerts.yml +243 -0
- package/assets/skills/monitoring-observability/assets/templates/runbooks/incident-runbook-template.md +409 -0
- package/assets/skills/monitoring-observability/monitoring-observability.skill +0 -0
- package/assets/skills/monitoring-observability/references/alerting_best_practices.md +609 -0
- package/assets/skills/monitoring-observability/references/datadog_migration.md +649 -0
- package/assets/skills/monitoring-observability/references/dql_promql_translation.md +756 -0
- package/assets/skills/monitoring-observability/references/logging_guide.md +775 -0
- package/assets/skills/monitoring-observability/references/metrics_design.md +406 -0
- package/assets/skills/monitoring-observability/references/slo_sla_guide.md +652 -0
- package/assets/skills/monitoring-observability/references/tool_comparison.md +697 -0
- package/assets/skills/monitoring-observability/references/tracing_guide.md +663 -0
- package/assets/skills/monitoring-observability/scripts/alert_quality_checker.py +315 -0
- package/assets/skills/monitoring-observability/scripts/analyze_metrics.py +279 -0
- package/assets/skills/monitoring-observability/scripts/dashboard_generator.py +395 -0
- package/assets/skills/monitoring-observability/scripts/datadog_cost_analyzer.py +477 -0
- package/assets/skills/monitoring-observability/scripts/health_check_validator.py +297 -0
- package/assets/skills/monitoring-observability/scripts/log_analyzer.py +321 -0
- package/assets/skills/monitoring-observability/scripts/slo_calculator.py +365 -0
- package/assets/skills/neo4j-graph-rag/SKILL.md +258 -0
- package/assets/skills/pagerduty-ops/SKILL.md +380 -0
- package/assets/skills/playwright/API_REFERENCE.md +653 -0
- package/assets/skills/playwright/SKILL.md +453 -0
- package/assets/skills/playwright/lib/helpers.js +441 -0
- package/assets/skills/playwright/package.json +26 -0
- package/assets/skills/playwright/run.js +228 -0
- package/assets/skills/project-memory/README.md +687 -0
- package/assets/skills/project-memory/SKILL.md +298 -0
- package/assets/skills/project-memory/references/bugs_template.md +41 -0
- package/assets/skills/project-memory/references/decisions_template.md +92 -0
- package/assets/skills/project-memory/references/issues_template.md +76 -0
- package/assets/skills/project-memory/references/key_facts_template.md +158 -0
- package/assets/skills/recruit-workflow/SKILL.md +276 -0
- package/assets/skills/recruit-workflow/references/email-templates.md +347 -0
- package/assets/skills/recruit-workflow/references/workflow-stages.md +395 -0
- package/assets/skills/recruit-workflow/scripts/clay_client.py +188 -0
- package/assets/skills/recruit-workflow/scripts/lever_client.py +197 -0
- package/assets/skills/recruit-workflow/scripts/mailgun_client.py +245 -0
- package/assets/skills/recruit-workflow/scripts/minio_client.py +426 -0
- package/assets/skills/shakudo-microservice/SKILL.md +215 -0
- package/assets/skills/tmux/SKILL.md +631 -0
- package/assets/skills/tmux/references/direct-socket-control.md +108 -0
- package/assets/skills/tmux/references/session-lifecycle.md +503 -0
- package/assets/skills/tmux/references/session-registry.md +1484 -0
- package/assets/skills/tmux/tools/cleanup-sessions.sh +263 -0
- package/assets/skills/tmux/tools/create-session.sh +224 -0
- package/assets/skills/tmux/tools/find-sessions.sh +262 -0
- package/assets/skills/tmux/tools/kill-session.sh +308 -0
- package/assets/skills/tmux/tools/lib/registry.sh +437 -0
- package/assets/skills/tmux/tools/lib/time_utils.sh +54 -0
- package/assets/skills/tmux/tools/list-sessions.sh +255 -0
- package/assets/skills/tmux/tools/pane-health.sh +424 -0
- package/assets/skills/tmux/tools/safe-send.sh +503 -0
- package/assets/skills/tmux/tools/wait-for-text.sh +260 -0
- package/assets/skills/twilio-sms/SKILL.md +508 -0
- package/assets/skills/zellij/SKILL.md +274 -0
- package/assets/skills/zellij/references/actions.md +558 -0
- package/assets/skills/zellij/references/layouts.md +424 -0
- package/bin/cli.ts +46 -0
- package/package.json +43 -0
- package/src/alias.ts +108 -0
- package/src/backup.ts +51 -0
- package/src/config.ts +115 -0
- package/src/dependencies.ts +163 -0
- package/src/errors.ts +77 -0
- package/src/index.ts +207 -0
- package/src/prompts.ts +142 -0
- package/src/schemas.ts +21 -0
- package/src/skills.ts +45 -0
- package/src/speckit.ts +116 -0
- package/src/types.ts +106 -0
- package/src/utils.ts +110 -0
- package/src/vibe-git.ts +50 -0
- package/templates/.specify/memory/constitution.md +109 -0
- package/templates/.specify/scripts/bash/check-prerequisites.sh +262 -0
- package/templates/.specify/scripts/bash/common.sh +670 -0
- package/templates/.specify/scripts/bash/create-new-feature.sh +594 -0
- package/templates/.specify/scripts/bash/create-worktree-feature.sh +401 -0
- package/templates/.specify/scripts/bash/init-workspace.sh +433 -0
- package/templates/.specify/scripts/bash/list-spec-worktrees.sh +198 -0
- package/templates/.specify/scripts/bash/setup-plan.sh +105 -0
- package/templates/.specify/scripts/bash/test-workspace-rollup.sh +175 -0
- package/templates/.specify/scripts/bash/update-agent-context.sh +799 -0
- package/templates/.specify/templates/agent-file-template.md +28 -0
- package/templates/.specify/templates/checklist-template.md +40 -0
- package/templates/.specify/templates/commands/analyze.md +197 -0
- package/templates/.specify/templates/commands/checklist.md +306 -0
- package/templates/.specify/templates/commands/clarify.md +194 -0
- package/templates/.specify/templates/commands/constitution.md +97 -0
- package/templates/.specify/templates/commands/implement.md +149 -0
- package/templates/.specify/templates/commands/plan.md +123 -0
- package/templates/.specify/templates/commands/projects.md +48 -0
- package/templates/.specify/templates/commands/rollup.md +66 -0
- package/templates/.specify/templates/commands/specify.md +275 -0
- package/templates/.specify/templates/commands/specs.md +71 -0
- package/templates/.specify/templates/commands/tasks.md +151 -0
- package/templates/.specify/templates/commands/taskstoissues.md +35 -0
- package/templates/.specify/templates/commands/workspace.md +128 -0
- package/templates/.specify/templates/plan-template.md +104 -0
- package/templates/.specify/templates/spec-template.md +115 -0
- package/templates/.specify/templates/tasks-template.md +251 -0
- package/templates/.specify/templates/workspace.yaml +110 -0
- package/templates/.specify/workspace.yaml +95 -0
- package/templates/AGENTS.md +460 -0
- package/templates/oh-my-opencode.json +27 -0
- package/templates/opencode.json +383 -0
- package/templates/package.json +10 -0
- package/templates/project-memory/bugs.md +16 -0
- package/templates/project-memory/decisions.md +22 -0
- package/templates/project-memory/issues.md +15 -0
- 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"
|