kodelyth-ecc 2.17.0 → 2.19.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/.agent/rules/README.md +108 -0
- package/.agent/rules/agent-intent-routing.md +832 -0
- package/.agent/rules/agents.md +50 -0
- package/.agent/rules/code-review.md +124 -0
- package/.agent/rules/coding-style.md +41 -0
- package/.agent/rules/cost-aware-model-routing.md +152 -0
- package/.agent/rules/design-quality.md +63 -0
- package/.agent/rules/development-workflow.md +44 -0
- package/.agent/rules/git-mastery.md +366 -0
- package/.agent/rules/git-workflow.md +24 -0
- package/.agent/rules/hooks.md +23 -0
- package/.agent/rules/kodelyth-quickstart.md +214 -0
- package/.agent/rules/memory-protocol.md +87 -0
- package/.agent/rules/observability.md +390 -0
- package/.agent/rules/patterns.md +71 -0
- package/.agent/rules/performance.md +55 -0
- package/.agent/rules/security.md +56 -0
- package/.agent/rules/self-improvement-workflow.md +141 -0
- package/.agent/rules/shell-portability.md +70 -0
- package/.agent/rules/smart-debug.md +241 -0
- package/.agent/rules/testing.md +65 -0
- package/.agent/skills/api-guardian.md +279 -0
- package/.agent/skills/architect.md +211 -0
- package/.agent/skills/backdoor-hunter.md +260 -0
- package/.agent/skills/build-error-resolver.md +114 -0
- package/.agent/skills/chaos-engineer.md +251 -0
- package/.agent/skills/chief-of-staff.md +151 -0
- package/.agent/skills/code-architect.md +71 -0
- package/.agent/skills/code-explorer.md +69 -0
- package/.agent/skills/code-reviewer.md +258 -0
- package/.agent/skills/code-simplifier.md +47 -0
- package/.agent/skills/code-stealer-detector.md +228 -0
- package/.agent/skills/comment-analyzer.md +45 -0
- package/.agent/skills/conversation-analyzer.md +52 -0
- package/.agent/skills/cpp-build-resolver.md +90 -0
- package/.agent/skills/cpp-reviewer.md +72 -0
- package/.agent/skills/csharp-reviewer.md +101 -0
- package/.agent/skills/dart-build-resolver.md +201 -0
- package/.agent/skills/database-reviewer.md +91 -0
- package/.agent/skills/debug-detective.md +410 -0
- package/.agent/skills/dependency-doctor.md +121 -0
- package/.agent/skills/doc-updater.md +107 -0
- package/.agent/skills/docs-lookup.md +68 -0
- package/.agent/skills/e2e-runner.md +107 -0
- package/.agent/skills/env-debugger.md +154 -0
- package/.agent/skills/flake-hunter.md +142 -0
- package/.agent/skills/flutter-reviewer.md +243 -0
- package/.agent/skills/gan-evaluator.md +209 -0
- package/.agent/skills/gan-generator.md +131 -0
- package/.agent/skills/gan-planner.md +99 -0
- package/.agent/skills/git-rescue.md +133 -0
- package/.agent/skills/go-build-resolver.md +94 -0
- package/.agent/skills/go-reviewer.md +76 -0
- package/.agent/skills/harness-optimizer.md +35 -0
- package/.agent/skills/healthcare-reviewer.md +83 -0
- package/.agent/skills/image-architect.md +190 -0
- package/.agent/skills/incident-commander.md +228 -0
- package/.agent/skills/jailbreak-tester.md +222 -0
- package/.agent/skills/java-build-resolver.md +153 -0
- package/.agent/skills/java-reviewer.md +92 -0
- package/.agent/skills/kodelyth-advisor.md +172 -0
- package/.agent/skills/kodelyth-memory.md +87 -0
- package/.agent/skills/kotlin-build-resolver.md +118 -0
- package/.agent/skills/kotlin-reviewer.md +159 -0
- package/.agent/skills/license-violation-finder.md +212 -0
- package/.agent/skills/load-tester.md +284 -0
- package/.agent/skills/loop-operator.md +36 -0
- package/.agent/skills/migration-guide.md +369 -0
- package/.agent/skills/opensource-forker.md +198 -0
- package/.agent/skills/opensource-packager.md +249 -0
- package/.agent/skills/opensource-sanitizer.md +188 -0
- package/.agent/skills/pair-programmer.md +261 -0
- package/.agent/skills/performance-optimizer.md +446 -0
- package/.agent/skills/planner.md +212 -0
- package/.agent/skills/pr-test-analyzer.md +45 -0
- package/.agent/skills/prompt-injection-hunter.md +126 -0
- package/.agent/skills/python-reviewer.md +98 -0
- package/.agent/skills/pytorch-build-resolver.md +120 -0
- package/.agent/skills/refactor-cleaner.md +85 -0
- package/.agent/skills/release-captain.md +226 -0
- package/.agent/skills/rust-build-resolver.md +148 -0
- package/.agent/skills/rust-reviewer.md +94 -0
- package/.agent/skills/secret-hunter.md +209 -0
- package/.agent/skills/security-reviewer.md +166 -0
- package/.agent/skills/seo-specialist.md +62 -0
- package/.agent/skills/silent-failure-hunter.md +50 -0
- package/.agent/skills/supply-chain-auditor.md +195 -0
- package/.agent/skills/tdd-guide.md +91 -0
- package/.agent/skills/type-design-analyzer.md +41 -0
- package/.agent/skills/typescript-reviewer.md +112 -0
- package/.agent/skills/ux-reviewer.md +483 -0
- package/.agent/workflows/agent-sort.md +23 -0
- package/.agent/workflows/arena.md +136 -0
- package/.agent/workflows/aside.md +164 -0
- package/.agent/workflows/build-fix.md +66 -0
- package/.agent/workflows/checkpoint.md +79 -0
- package/.agent/workflows/claw.md +23 -0
- package/.agent/workflows/code-review.md +289 -0
- package/.agent/workflows/context-budget.md +23 -0
- package/.agent/workflows/cpp-build.md +173 -0
- package/.agent/workflows/cpp-review.md +132 -0
- package/.agent/workflows/cpp-test.md +251 -0
- package/.agent/workflows/dashboard.md +67 -0
- package/.agent/workflows/debug-blitz.md +70 -0
- package/.agent/workflows/devfleet.md +23 -0
- package/.agent/workflows/devil-mode.md +121 -0
- package/.agent/workflows/docs.md +23 -0
- package/.agent/workflows/doctor.md +75 -0
- package/.agent/workflows/e2e.md +268 -0
- package/.agent/workflows/eval.md +23 -0
- package/.agent/workflows/evil-mode.md +106 -0
- package/.agent/workflows/evolve.md +178 -0
- package/.agent/workflows/feature-dev.md +49 -0
- package/.agent/workflows/flutter-build.md +164 -0
- package/.agent/workflows/flutter-review.md +116 -0
- package/.agent/workflows/flutter-test.md +144 -0
- package/.agent/workflows/gan-build.md +104 -0
- package/.agent/workflows/gan-design.md +40 -0
- package/.agent/workflows/go-build.md +183 -0
- package/.agent/workflows/go-review.md +148 -0
- package/.agent/workflows/go-test.md +268 -0
- package/.agent/workflows/god-mode.md +85 -0
- package/.agent/workflows/gradle-build.md +70 -0
- package/.agent/workflows/harness-audit.md +77 -0
- package/.agent/workflows/hookify-configure.md +14 -0
- package/.agent/workflows/hookify-help.md +46 -0
- package/.agent/workflows/hookify-list.md +21 -0
- package/.agent/workflows/hookify.md +50 -0
- package/.agent/workflows/immune.md +89 -0
- package/.agent/workflows/instinct-export.md +66 -0
- package/.agent/workflows/instinct-import.md +114 -0
- package/.agent/workflows/instinct-status.md +59 -0
- package/.agent/workflows/jira.md +106 -0
- package/.agent/workflows/kotlin-build.md +174 -0
- package/.agent/workflows/kotlin-review.md +140 -0
- package/.agent/workflows/kotlin-test.md +312 -0
- package/.agent/workflows/learn-eval.md +116 -0
- package/.agent/workflows/learn.md +74 -0
- package/.agent/workflows/lessons.md +92 -0
- package/.agent/workflows/loop-start.md +37 -0
- package/.agent/workflows/loop-status.md +28 -0
- package/.agent/workflows/memory-evolve.md +71 -0
- package/.agent/workflows/memory.md +62 -0
- package/.agent/workflows/model-route.md +31 -0
- package/.agent/workflows/multi-backend.md +163 -0
- package/.agent/workflows/multi-execute.md +320 -0
- package/.agent/workflows/multi-frontend.md +163 -0
- package/.agent/workflows/multi-plan.md +273 -0
- package/.agent/workflows/multi-workflow.md +196 -0
- package/.agent/workflows/onboard.md +72 -0
- package/.agent/workflows/orchestrate.md +135 -0
- package/.agent/workflows/plan.md +117 -0
- package/.agent/workflows/pm2.md +277 -0
- package/.agent/workflows/pre-release.md +66 -0
- package/.agent/workflows/project-launch.md +91 -0
- package/.agent/workflows/projects.md +39 -0
- package/.agent/workflows/promote.md +41 -0
- package/.agent/workflows/prompt-optimize.md +23 -0
- package/.agent/workflows/prp-commit.md +112 -0
- package/.agent/workflows/prp-implement.md +385 -0
- package/.agent/workflows/prp-plan.md +502 -0
- package/.agent/workflows/prp-pr.md +184 -0
- package/.agent/workflows/prp-prd.md +447 -0
- package/.agent/workflows/prune.md +31 -0
- package/.agent/workflows/python-review.md +297 -0
- package/.agent/workflows/quality-gate.md +33 -0
- package/.agent/workflows/refactor-clean.md +84 -0
- package/.agent/workflows/refactor-sprint.md +77 -0
- package/.agent/workflows/replay.md +61 -0
- package/.agent/workflows/resume-session.md +156 -0
- package/.agent/workflows/review-pr.md +37 -0
- package/.agent/workflows/route-model.md +48 -0
- package/.agent/workflows/rules-distill.md +20 -0
- package/.agent/workflows/rust-build.md +187 -0
- package/.agent/workflows/rust-review.md +142 -0
- package/.agent/workflows/rust-test.md +308 -0
- package/.agent/workflows/santa-loop.md +175 -0
- package/.agent/workflows/save-session.md +275 -0
- package/.agent/workflows/security-audit.md +66 -0
- package/.agent/workflows/sessions.md +333 -0
- package/.agent/workflows/setup-pm.md +80 -0
- package/.agent/workflows/skill-create.md +174 -0
- package/.agent/workflows/skill-health.md +54 -0
- package/.agent/workflows/swarm.md +68 -0
- package/.agent/workflows/tdd.md +231 -0
- package/.agent/workflows/team-review.md +107 -0
- package/.agent/workflows/terse-compress.md +78 -0
- package/.agent/workflows/terse.md +40 -0
- package/.agent/workflows/test-coverage.md +73 -0
- package/.agent/workflows/update-codemaps.md +76 -0
- package/.agent/workflows/update-docs.md +88 -0
- package/.agent/workflows/update.md +92 -0
- package/.agent/workflows/verify-supply-chain.md +59 -0
- package/.agent/workflows/verify.md +23 -0
- package/.agents/rules/antigravity-rtk-rules.md +32 -0
- package/.aider-ecc/agents/api-guardian.md +279 -0
- package/.aider-ecc/agents/architect.md +211 -0
- package/.aider-ecc/agents/backdoor-hunter.md +260 -0
- package/.aider-ecc/agents/build-error-resolver.md +114 -0
- package/.aider-ecc/agents/chaos-engineer.md +251 -0
- package/.aider-ecc/agents/chief-of-staff.md +151 -0
- package/.aider-ecc/agents/code-architect.md +71 -0
- package/.aider-ecc/agents/code-explorer.md +69 -0
- package/.aider-ecc/agents/code-reviewer.md +258 -0
- package/.aider-ecc/agents/code-simplifier.md +47 -0
- package/.aider-ecc/agents/code-stealer-detector.md +228 -0
- package/.aider-ecc/agents/comment-analyzer.md +45 -0
- package/.aider-ecc/agents/conversation-analyzer.md +52 -0
- package/.aider-ecc/agents/cpp-build-resolver.md +90 -0
- package/.aider-ecc/agents/cpp-reviewer.md +72 -0
- package/.aider-ecc/agents/csharp-reviewer.md +101 -0
- package/.aider-ecc/agents/dart-build-resolver.md +201 -0
- package/.aider-ecc/agents/database-reviewer.md +91 -0
- package/.aider-ecc/agents/debug-detective.md +410 -0
- package/.aider-ecc/agents/dependency-doctor.md +121 -0
- package/.aider-ecc/agents/doc-updater.md +107 -0
- package/.aider-ecc/agents/docs-lookup.md +68 -0
- package/.aider-ecc/agents/e2e-runner.md +107 -0
- package/.aider-ecc/agents/env-debugger.md +154 -0
- package/.aider-ecc/agents/flake-hunter.md +142 -0
- package/.aider-ecc/agents/flutter-reviewer.md +243 -0
- package/.aider-ecc/agents/gan-evaluator.md +209 -0
- package/.aider-ecc/agents/gan-generator.md +131 -0
- package/.aider-ecc/agents/gan-planner.md +99 -0
- package/.aider-ecc/agents/git-rescue.md +133 -0
- package/.aider-ecc/agents/go-build-resolver.md +94 -0
- package/.aider-ecc/agents/go-reviewer.md +76 -0
- package/.aider-ecc/agents/harness-optimizer.md +35 -0
- package/.aider-ecc/agents/healthcare-reviewer.md +83 -0
- package/.aider-ecc/agents/image-architect.md +190 -0
- package/.aider-ecc/agents/incident-commander.md +228 -0
- package/.aider-ecc/agents/jailbreak-tester.md +222 -0
- package/.aider-ecc/agents/java-build-resolver.md +153 -0
- package/.aider-ecc/agents/java-reviewer.md +92 -0
- package/.aider-ecc/agents/kodelyth-advisor.md +172 -0
- package/.aider-ecc/agents/kodelyth-memory.md +87 -0
- package/.aider-ecc/agents/kotlin-build-resolver.md +118 -0
- package/.aider-ecc/agents/kotlin-reviewer.md +159 -0
- package/.aider-ecc/agents/license-violation-finder.md +212 -0
- package/.aider-ecc/agents/load-tester.md +284 -0
- package/.aider-ecc/agents/loop-operator.md +36 -0
- package/.aider-ecc/agents/migration-guide.md +369 -0
- package/.aider-ecc/agents/opensource-forker.md +198 -0
- package/.aider-ecc/agents/opensource-packager.md +249 -0
- package/.aider-ecc/agents/opensource-sanitizer.md +188 -0
- package/.aider-ecc/agents/pair-programmer.md +261 -0
- package/.aider-ecc/agents/performance-optimizer.md +446 -0
- package/.aider-ecc/agents/planner.md +212 -0
- package/.aider-ecc/agents/pr-test-analyzer.md +45 -0
- package/.aider-ecc/agents/prompt-injection-hunter.md +126 -0
- package/.aider-ecc/agents/python-reviewer.md +98 -0
- package/.aider-ecc/agents/pytorch-build-resolver.md +120 -0
- package/.aider-ecc/agents/refactor-cleaner.md +85 -0
- package/.aider-ecc/agents/release-captain.md +226 -0
- package/.aider-ecc/agents/rust-build-resolver.md +148 -0
- package/.aider-ecc/agents/rust-reviewer.md +94 -0
- package/.aider-ecc/agents/secret-hunter.md +209 -0
- package/.aider-ecc/agents/security-reviewer.md +166 -0
- package/.aider-ecc/agents/seo-specialist.md +62 -0
- package/.aider-ecc/agents/silent-failure-hunter.md +50 -0
- package/.aider-ecc/agents/supply-chain-auditor.md +195 -0
- package/.aider-ecc/agents/tdd-guide.md +91 -0
- package/.aider-ecc/agents/type-design-analyzer.md +41 -0
- package/.aider-ecc/agents/typescript-reviewer.md +112 -0
- package/.aider-ecc/agents/ux-reviewer.md +483 -0
- package/.aider-ecc/commands/agent-sort.md +23 -0
- package/.aider-ecc/commands/arena.md +136 -0
- package/.aider-ecc/commands/aside.md +164 -0
- package/.aider-ecc/commands/build-fix.md +66 -0
- package/.aider-ecc/commands/checkpoint.md +79 -0
- package/.aider-ecc/commands/claw.md +23 -0
- package/.aider-ecc/commands/code-review.md +289 -0
- package/.aider-ecc/commands/context-budget.md +23 -0
- package/.aider-ecc/commands/cpp-build.md +173 -0
- package/.aider-ecc/commands/cpp-review.md +132 -0
- package/.aider-ecc/commands/cpp-test.md +251 -0
- package/.aider-ecc/commands/dashboard.md +67 -0
- package/.aider-ecc/commands/debug-blitz.md +70 -0
- package/.aider-ecc/commands/devfleet.md +23 -0
- package/.aider-ecc/commands/devil-mode.md +121 -0
- package/.aider-ecc/commands/docs.md +23 -0
- package/.aider-ecc/commands/doctor.md +75 -0
- package/.aider-ecc/commands/e2e.md +268 -0
- package/.aider-ecc/commands/eval.md +23 -0
- package/.aider-ecc/commands/evil-mode.md +106 -0
- package/.aider-ecc/commands/evolve.md +178 -0
- package/.aider-ecc/commands/feature-dev.md +49 -0
- package/.aider-ecc/commands/flutter-build.md +164 -0
- package/.aider-ecc/commands/flutter-review.md +116 -0
- package/.aider-ecc/commands/flutter-test.md +144 -0
- package/.aider-ecc/commands/gan-build.md +104 -0
- package/.aider-ecc/commands/gan-design.md +40 -0
- package/.aider-ecc/commands/go-build.md +183 -0
- package/.aider-ecc/commands/go-review.md +148 -0
- package/.aider-ecc/commands/go-test.md +268 -0
- package/.aider-ecc/commands/god-mode.md +85 -0
- package/.aider-ecc/commands/gradle-build.md +70 -0
- package/.aider-ecc/commands/harness-audit.md +77 -0
- package/.aider-ecc/commands/hookify-configure.md +14 -0
- package/.aider-ecc/commands/hookify-help.md +46 -0
- package/.aider-ecc/commands/hookify-list.md +21 -0
- package/.aider-ecc/commands/hookify.md +50 -0
- package/.aider-ecc/commands/immune.md +89 -0
- package/.aider-ecc/commands/instinct-export.md +66 -0
- package/.aider-ecc/commands/instinct-import.md +114 -0
- package/.aider-ecc/commands/instinct-status.md +59 -0
- package/.aider-ecc/commands/jira.md +106 -0
- package/.aider-ecc/commands/kotlin-build.md +174 -0
- package/.aider-ecc/commands/kotlin-review.md +140 -0
- package/.aider-ecc/commands/kotlin-test.md +312 -0
- package/.aider-ecc/commands/learn-eval.md +116 -0
- package/.aider-ecc/commands/learn.md +74 -0
- package/.aider-ecc/commands/lessons.md +92 -0
- package/.aider-ecc/commands/loop-start.md +37 -0
- package/.aider-ecc/commands/loop-status.md +28 -0
- package/.aider-ecc/commands/memory-evolve.md +71 -0
- package/.aider-ecc/commands/memory.md +62 -0
- package/.aider-ecc/commands/model-route.md +31 -0
- package/.aider-ecc/commands/multi-backend.md +163 -0
- package/.aider-ecc/commands/multi-execute.md +320 -0
- package/.aider-ecc/commands/multi-frontend.md +163 -0
- package/.aider-ecc/commands/multi-plan.md +273 -0
- package/.aider-ecc/commands/multi-workflow.md +196 -0
- package/.aider-ecc/commands/onboard.md +72 -0
- package/.aider-ecc/commands/orchestrate.md +135 -0
- package/.aider-ecc/commands/plan.md +117 -0
- package/.aider-ecc/commands/pm2.md +277 -0
- package/.aider-ecc/commands/pre-release.md +66 -0
- package/.aider-ecc/commands/project-launch.md +91 -0
- package/.aider-ecc/commands/projects.md +39 -0
- package/.aider-ecc/commands/promote.md +41 -0
- package/.aider-ecc/commands/prompt-optimize.md +23 -0
- package/.aider-ecc/commands/prp-commit.md +112 -0
- package/.aider-ecc/commands/prp-implement.md +385 -0
- package/.aider-ecc/commands/prp-plan.md +502 -0
- package/.aider-ecc/commands/prp-pr.md +184 -0
- package/.aider-ecc/commands/prp-prd.md +447 -0
- package/.aider-ecc/commands/prune.md +31 -0
- package/.aider-ecc/commands/python-review.md +297 -0
- package/.aider-ecc/commands/quality-gate.md +33 -0
- package/.aider-ecc/commands/refactor-clean.md +84 -0
- package/.aider-ecc/commands/refactor-sprint.md +77 -0
- package/.aider-ecc/commands/replay.md +61 -0
- package/.aider-ecc/commands/resume-session.md +156 -0
- package/.aider-ecc/commands/review-pr.md +37 -0
- package/.aider-ecc/commands/route-model.md +48 -0
- package/.aider-ecc/commands/rules-distill.md +20 -0
- package/.aider-ecc/commands/rust-build.md +187 -0
- package/.aider-ecc/commands/rust-review.md +142 -0
- package/.aider-ecc/commands/rust-test.md +308 -0
- package/.aider-ecc/commands/santa-loop.md +175 -0
- package/.aider-ecc/commands/save-session.md +275 -0
- package/.aider-ecc/commands/security-audit.md +66 -0
- package/.aider-ecc/commands/sessions.md +333 -0
- package/.aider-ecc/commands/setup-pm.md +80 -0
- package/.aider-ecc/commands/skill-create.md +174 -0
- package/.aider-ecc/commands/skill-health.md +54 -0
- package/.aider-ecc/commands/swarm.md +68 -0
- package/.aider-ecc/commands/tdd.md +231 -0
- package/.aider-ecc/commands/team-review.md +107 -0
- package/.aider-ecc/commands/terse-compress.md +78 -0
- package/.aider-ecc/commands/terse.md +40 -0
- package/.aider-ecc/commands/test-coverage.md +73 -0
- package/.aider-ecc/commands/update-codemaps.md +76 -0
- package/.aider-ecc/commands/update-docs.md +88 -0
- package/.aider-ecc/commands/update.md +92 -0
- package/.aider-ecc/commands/verify-supply-chain.md +59 -0
- package/.aider-ecc/commands/verify.md +23 -0
- package/.aider-ecc/rules/README.md +108 -0
- package/.aider-ecc/rules/agent-intent-routing.md +832 -0
- package/.aider-ecc/rules/agents.md +50 -0
- package/.aider-ecc/rules/code-review.md +124 -0
- package/.aider-ecc/rules/coding-style.md +41 -0
- package/.aider-ecc/rules/cost-aware-model-routing.md +152 -0
- package/.aider-ecc/rules/design-quality.md +63 -0
- package/.aider-ecc/rules/development-workflow.md +44 -0
- package/.aider-ecc/rules/git-workflow.md +24 -0
- package/.aider-ecc/rules/hooks.md +23 -0
- package/.aider-ecc/rules/memory-protocol.md +87 -0
- package/.aider-ecc/rules/patterns.md +71 -0
- package/.aider-ecc/rules/performance.md +55 -0
- package/.aider-ecc/rules/security.md +56 -0
- package/.aider-ecc/rules/self-improvement-workflow.md +141 -0
- package/.aider-ecc/rules/shell-portability.md +70 -0
- package/.aider-ecc/rules/testing.md +65 -0
- package/.aider-ecc/skills/agent-eval/SKILL.md +145 -0
- package/.aider-ecc/skills/agent-handoff/SKILL.md +184 -0
- package/.aider-ecc/skills/agent-harness-construction/SKILL.md +73 -0
- package/.aider-ecc/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/.aider-ecc/skills/agent-payment-x402/SKILL.md +178 -0
- package/.aider-ecc/skills/agent-sort/SKILL.md +215 -0
- package/.aider-ecc/skills/agentic-engineering/SKILL.md +63 -0
- package/.aider-ecc/skills/ai-first-engineering/SKILL.md +51 -0
- package/.aider-ecc/skills/ai-regression-testing/SKILL.md +385 -0
- package/.aider-ecc/skills/android-clean-architecture/SKILL.md +339 -0
- package/.aider-ecc/skills/api-connector-builder/SKILL.md +121 -0
- package/.aider-ecc/skills/api-design/SKILL.md +523 -0
- package/.aider-ecc/skills/architecture-decision-records/SKILL.md +179 -0
- package/.aider-ecc/skills/article-writing/SKILL.md +79 -0
- package/.aider-ecc/skills/automation-audit-ops/SKILL.md +142 -0
- package/.aider-ecc/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.aider-ecc/skills/autonomous-loops/SKILL.md +610 -0
- package/.aider-ecc/skills/backend-patterns/SKILL.md +598 -0
- package/.aider-ecc/skills/benchmark/SKILL.md +93 -0
- package/.aider-ecc/skills/blueprint/SKILL.md +105 -0
- package/.aider-ecc/skills/brand-voice/SKILL.md +97 -0
- package/.aider-ecc/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.aider-ecc/skills/browser-qa/SKILL.md +87 -0
- package/.aider-ecc/skills/bun-runtime/SKILL.md +84 -0
- package/.aider-ecc/skills/canary-watch/SKILL.md +99 -0
- package/.aider-ecc/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.aider-ecc/skills/ck/SKILL.md +147 -0
- package/.aider-ecc/skills/ck/commands/forget.mjs +44 -0
- package/.aider-ecc/skills/ck/commands/info.mjs +24 -0
- package/.aider-ecc/skills/ck/commands/init.mjs +143 -0
- package/.aider-ecc/skills/ck/commands/list.mjs +40 -0
- package/.aider-ecc/skills/ck/commands/migrate.mjs +202 -0
- package/.aider-ecc/skills/ck/commands/resume.mjs +36 -0
- package/.aider-ecc/skills/ck/commands/save.mjs +210 -0
- package/.aider-ecc/skills/ck/commands/shared.mjs +387 -0
- package/.aider-ecc/skills/ck/hooks/session-start.mjs +224 -0
- package/.aider-ecc/skills/claude-api/SKILL.md +337 -0
- package/.aider-ecc/skills/claude-devfleet/SKILL.md +103 -0
- package/.aider-ecc/skills/click-path-audit/SKILL.md +244 -0
- package/.aider-ecc/skills/clickhouse-io/SKILL.md +439 -0
- package/.aider-ecc/skills/code-tour/SKILL.md +236 -0
- package/.aider-ecc/skills/codebase-onboarding/SKILL.md +233 -0
- package/.aider-ecc/skills/coding-standards/SKILL.md +549 -0
- package/.aider-ecc/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.aider-ecc/skills/configure-ecc/SKILL.md +367 -0
- package/.aider-ecc/skills/connections-optimizer/SKILL.md +189 -0
- package/.aider-ecc/skills/content-engine/SKILL.md +131 -0
- package/.aider-ecc/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.aider-ecc/skills/context-budget/SKILL.md +135 -0
- package/.aider-ecc/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.aider-ecc/skills/continuous-learning/SKILL.md +123 -0
- package/.aider-ecc/skills/continuous-learning/config.json +18 -0
- package/.aider-ecc/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.aider-ecc/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.aider-ecc/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.aider-ecc/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.aider-ecc/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.aider-ecc/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.aider-ecc/skills/continuous-learning-v2/config.json +8 -0
- package/.aider-ecc/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.aider-ecc/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.aider-ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.aider-ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/.aider-ecc/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.aider-ecc/skills/cost-aware-model-routing/SKILL.md +153 -0
- package/.aider-ecc/skills/council/SKILL.md +203 -0
- package/.aider-ecc/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.aider-ecc/skills/cpp-testing/SKILL.md +324 -0
- package/.aider-ecc/skills/crosspost/SKILL.md +111 -0
- package/.aider-ecc/skills/csharp-testing/SKILL.md +321 -0
- package/.aider-ecc/skills/customer-billing-ops/SKILL.md +140 -0
- package/.aider-ecc/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.aider-ecc/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.aider-ecc/skills/dashboard-builder/SKILL.md +109 -0
- package/.aider-ecc/skills/data-scraper-agent/SKILL.md +764 -0
- package/.aider-ecc/skills/database-migrations/SKILL.md +429 -0
- package/.aider-ecc/skills/deep-research/SKILL.md +155 -0
- package/.aider-ecc/skills/defi-amm-security/SKILL.md +160 -0
- package/.aider-ecc/skills/deployment-patterns/SKILL.md +427 -0
- package/.aider-ecc/skills/design-system/SKILL.md +82 -0
- package/.aider-ecc/skills/django-patterns/SKILL.md +734 -0
- package/.aider-ecc/skills/django-security/SKILL.md +593 -0
- package/.aider-ecc/skills/django-tdd/SKILL.md +729 -0
- package/.aider-ecc/skills/django-verification/SKILL.md +469 -0
- package/.aider-ecc/skills/dmux-workflows/SKILL.md +191 -0
- package/.aider-ecc/skills/docker-patterns/SKILL.md +364 -0
- package/.aider-ecc/skills/documentation-lookup/SKILL.md +90 -0
- package/.aider-ecc/skills/dotnet-patterns/SKILL.md +321 -0
- package/.aider-ecc/skills/e2e-testing/SKILL.md +326 -0
- package/.aider-ecc/skills/ecc-token-savings/SKILL.md +106 -0
- package/.aider-ecc/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/.aider-ecc/skills/email-ops/SKILL.md +121 -0
- package/.aider-ecc/skills/energy-procurement/SKILL.md +228 -0
- package/.aider-ecc/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.aider-ecc/skills/eval-harness/SKILL.md +270 -0
- package/.aider-ecc/skills/evm-token-decimals/SKILL.md +130 -0
- package/.aider-ecc/skills/exa-search/SKILL.md +103 -0
- package/.aider-ecc/skills/fal-ai-media/SKILL.md +284 -0
- package/.aider-ecc/skills/finance-billing-ops/SKILL.md +127 -0
- package/.aider-ecc/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.aider-ecc/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.aider-ecc/skills/frontend-design/SKILL.md +145 -0
- package/.aider-ecc/skills/frontend-patterns/SKILL.md +642 -0
- package/.aider-ecc/skills/frontend-slides/SKILL.md +184 -0
- package/.aider-ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.aider-ecc/skills/gan-style-harness/SKILL.md +278 -0
- package/.aider-ecc/skills/git-mastery/SKILL.md +366 -0
- package/.aider-ecc/skills/git-workflow/SKILL.md +715 -0
- package/.aider-ecc/skills/github-ops/SKILL.md +144 -0
- package/.aider-ecc/skills/golang-patterns/SKILL.md +674 -0
- package/.aider-ecc/skills/golang-testing/SKILL.md +720 -0
- package/.aider-ecc/skills/google-workspace-ops/SKILL.md +95 -0
- package/.aider-ecc/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.aider-ecc/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.aider-ecc/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.aider-ecc/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.aider-ecc/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.aider-ecc/skills/hipaa-compliance/SKILL.md +78 -0
- package/.aider-ecc/skills/hookify-rules/SKILL.md +128 -0
- package/.aider-ecc/skills/intent-routing/SKILL.md +134 -0
- package/.aider-ecc/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.aider-ecc/skills/investor-materials/SKILL.md +96 -0
- package/.aider-ecc/skills/investor-outreach/SKILL.md +91 -0
- package/.aider-ecc/skills/iterative-retrieval/SKILL.md +211 -0
- package/.aider-ecc/skills/java-coding-standards/SKILL.md +147 -0
- package/.aider-ecc/skills/jira-integration/SKILL.md +293 -0
- package/.aider-ecc/skills/jpa-patterns/SKILL.md +151 -0
- package/.aider-ecc/skills/knowledge-ops/SKILL.md +154 -0
- package/.aider-ecc/skills/kodelyth-memory/SKILL.md +136 -0
- package/.aider-ecc/skills/kodelyth-quickstart/SKILL.md +214 -0
- package/.aider-ecc/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.aider-ecc/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.aider-ecc/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.aider-ecc/skills/kotlin-patterns/SKILL.md +711 -0
- package/.aider-ecc/skills/kotlin-testing/SKILL.md +824 -0
- package/.aider-ecc/skills/laravel-patterns/SKILL.md +415 -0
- package/.aider-ecc/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.aider-ecc/skills/laravel-security/SKILL.md +285 -0
- package/.aider-ecc/skills/laravel-tdd/SKILL.md +283 -0
- package/.aider-ecc/skills/laravel-verification/SKILL.md +179 -0
- package/.aider-ecc/skills/lead-intelligence/SKILL.md +321 -0
- package/.aider-ecc/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.aider-ecc/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.aider-ecc/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.aider-ecc/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.aider-ecc/skills/liquid-glass-design/SKILL.md +279 -0
- package/.aider-ecc/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/.aider-ecc/skills/logistics-exception-management/SKILL.md +222 -0
- package/.aider-ecc/skills/manim-video/SKILL.md +89 -0
- package/.aider-ecc/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/.aider-ecc/skills/market-research/SKILL.md +75 -0
- package/.aider-ecc/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.aider-ecc/skills/messages-ops/SKILL.md +104 -0
- package/.aider-ecc/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.aider-ecc/skills/nestjs-patterns/SKILL.md +230 -0
- package/.aider-ecc/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.aider-ecc/skills/nodejs-keccak256/SKILL.md +102 -0
- package/.aider-ecc/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.aider-ecc/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.aider-ecc/skills/observability/SKILL.md +390 -0
- package/.aider-ecc/skills/observability-dashboard/SKILL.md +119 -0
- package/.aider-ecc/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.aider-ecc/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.aider-ecc/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.aider-ecc/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.aider-ecc/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.aider-ecc/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.aider-ecc/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.aider-ecc/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.aider-ecc/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.aider-ecc/skills/opensource-pipeline/SKILL.md +255 -0
- package/.aider-ecc/skills/perl-patterns/SKILL.md +504 -0
- package/.aider-ecc/skills/perl-security/SKILL.md +503 -0
- package/.aider-ecc/skills/perl-testing/SKILL.md +475 -0
- package/.aider-ecc/skills/plankton-code-quality/SKILL.md +236 -0
- package/.aider-ecc/skills/postgres-patterns/SKILL.md +147 -0
- package/.aider-ecc/skills/product-capability/SKILL.md +141 -0
- package/.aider-ecc/skills/product-lens/SKILL.md +92 -0
- package/.aider-ecc/skills/production-scheduling/SKILL.md +238 -0
- package/.aider-ecc/skills/project-flow-ops/SKILL.md +111 -0
- package/.aider-ecc/skills/prompt-optimizer/SKILL.md +397 -0
- package/.aider-ecc/skills/python-patterns/SKILL.md +750 -0
- package/.aider-ecc/skills/python-testing/SKILL.md +816 -0
- package/.aider-ecc/skills/pytorch-patterns/SKILL.md +396 -0
- package/.aider-ecc/skills/quality-nonconformance/SKILL.md +260 -0
- package/.aider-ecc/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.aider-ecc/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.aider-ecc/skills/remotion-video-creation/SKILL.md +43 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/images.md +130 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.aider-ecc/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.aider-ecc/skills/repo-scan/SKILL.md +78 -0
- package/.aider-ecc/skills/research-ops/SKILL.md +112 -0
- package/.aider-ecc/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.aider-ecc/skills/rules-distill/SKILL.md +264 -0
- package/.aider-ecc/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.aider-ecc/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.aider-ecc/skills/rust-patterns/SKILL.md +499 -0
- package/.aider-ecc/skills/rust-testing/SKILL.md +500 -0
- package/.aider-ecc/skills/safety-guard/SKILL.md +75 -0
- package/.aider-ecc/skills/santa-method/SKILL.md +306 -0
- package/.aider-ecc/skills/search-first/SKILL.md +161 -0
- package/.aider-ecc/skills/security-bounty-hunter/SKILL.md +99 -0
- package/.aider-ecc/skills/security-review/SKILL.md +495 -0
- package/.aider-ecc/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.aider-ecc/skills/security-scan/SKILL.md +165 -0
- package/.aider-ecc/skills/self-evolving-memory/SKILL.md +175 -0
- package/.aider-ecc/skills/seo/SKILL.md +154 -0
- package/.aider-ecc/skills/session-replay/SKILL.md +199 -0
- package/.aider-ecc/skills/skill-comply/SKILL.md +58 -0
- package/.aider-ecc/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/.aider-ecc/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/.aider-ecc/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/.aider-ecc/skills/skill-comply/prompts/classifier.md +24 -0
- package/.aider-ecc/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/.aider-ecc/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/.aider-ecc/skills/skill-comply/pyproject.toml +15 -0
- package/.aider-ecc/skills/skill-comply/scripts/__init__.py +0 -0
- package/.aider-ecc/skills/skill-comply/scripts/classifier.py +85 -0
- package/.aider-ecc/skills/skill-comply/scripts/grader.py +122 -0
- package/.aider-ecc/skills/skill-comply/scripts/parser.py +107 -0
- package/.aider-ecc/skills/skill-comply/scripts/report.py +170 -0
- package/.aider-ecc/skills/skill-comply/scripts/run.py +127 -0
- package/.aider-ecc/skills/skill-comply/scripts/runner.py +161 -0
- package/.aider-ecc/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/.aider-ecc/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/.aider-ecc/skills/skill-comply/scripts/utils.py +13 -0
- package/.aider-ecc/skills/skill-stocktake/SKILL.md +193 -0
- package/.aider-ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.aider-ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.aider-ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.aider-ecc/skills/smart-debug/SKILL.md +241 -0
- package/.aider-ecc/skills/social-graph-ranker/SKILL.md +154 -0
- package/.aider-ecc/skills/springboot-patterns/SKILL.md +314 -0
- package/.aider-ecc/skills/springboot-security/SKILL.md +272 -0
- package/.aider-ecc/skills/springboot-tdd/SKILL.md +158 -0
- package/.aider-ecc/skills/springboot-verification/SKILL.md +231 -0
- package/.aider-ecc/skills/strategic-compact/SKILL.md +131 -0
- package/.aider-ecc/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.aider-ecc/skills/supply-chain-verification/SKILL.md +201 -0
- package/.aider-ecc/skills/swarm-orchestrator/SKILL.md +177 -0
- package/.aider-ecc/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.aider-ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.aider-ecc/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.aider-ecc/skills/swiftui-patterns/SKILL.md +259 -0
- package/.aider-ecc/skills/tdd-workflow/SKILL.md +463 -0
- package/.aider-ecc/skills/team-builder/SKILL.md +168 -0
- package/.aider-ecc/skills/terminal-ops/SKILL.md +109 -0
- package/.aider-ecc/skills/terse-mode/SKILL.md +97 -0
- package/.aider-ecc/skills/token-budget-advisor/SKILL.md +133 -0
- package/.aider-ecc/skills/ui-demo/SKILL.md +465 -0
- package/.aider-ecc/skills/unified-notifications-ops/SKILL.md +187 -0
- package/.aider-ecc/skills/verification-loop/SKILL.md +126 -0
- package/.aider-ecc/skills/video-editing/SKILL.md +310 -0
- package/.aider-ecc/skills/videodb/SKILL.md +374 -0
- package/.aider-ecc/skills/videodb/reference/api-reference.md +550 -0
- package/.aider-ecc/skills/videodb/reference/capture-reference.md +407 -0
- package/.aider-ecc/skills/videodb/reference/capture.md +101 -0
- package/.aider-ecc/skills/videodb/reference/editor.md +443 -0
- package/.aider-ecc/skills/videodb/reference/generative.md +331 -0
- package/.aider-ecc/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.aider-ecc/skills/videodb/reference/rtstream.md +65 -0
- package/.aider-ecc/skills/videodb/reference/search.md +230 -0
- package/.aider-ecc/skills/videodb/reference/streaming.md +406 -0
- package/.aider-ecc/skills/videodb/reference/use-cases.md +118 -0
- package/.aider-ecc/skills/videodb/scripts/ws_listener.py +282 -0
- package/.aider-ecc/skills/visa-doc-translate/README.md +86 -0
- package/.aider-ecc/skills/visa-doc-translate/SKILL.md +117 -0
- package/.aider-ecc/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.aider-ecc/skills/x-api/SKILL.md +230 -0
- package/.clinerules/README.md +108 -0
- package/.clinerules/agent-intent-routing.md +832 -0
- package/.clinerules/agent-sort.md +23 -0
- package/.clinerules/agents.md +50 -0
- package/.clinerules/api-guardian.md +279 -0
- package/.clinerules/architect.md +211 -0
- package/.clinerules/arena.md +136 -0
- package/.clinerules/aside.md +164 -0
- package/.clinerules/backdoor-hunter.md +260 -0
- package/.clinerules/build-error-resolver.md +114 -0
- package/.clinerules/build-fix.md +66 -0
- package/.clinerules/chaos-engineer.md +251 -0
- package/.clinerules/checkpoint.md +79 -0
- package/.clinerules/chief-of-staff.md +151 -0
- package/.clinerules/claw.md +23 -0
- package/.clinerules/code-architect.md +71 -0
- package/.clinerules/code-explorer.md +69 -0
- package/.clinerules/code-review.md +289 -0
- package/.clinerules/code-reviewer.md +258 -0
- package/.clinerules/code-simplifier.md +47 -0
- package/.clinerules/code-stealer-detector.md +228 -0
- package/.clinerules/coding-style.md +41 -0
- package/.clinerules/comment-analyzer.md +45 -0
- package/.clinerules/context-budget.md +23 -0
- package/.clinerules/conversation-analyzer.md +52 -0
- package/.clinerules/cost-aware-model-routing.md +152 -0
- package/.clinerules/cpp-build-resolver.md +90 -0
- package/.clinerules/cpp-build.md +173 -0
- package/.clinerules/cpp-review.md +132 -0
- package/.clinerules/cpp-reviewer.md +72 -0
- package/.clinerules/cpp-test.md +251 -0
- package/.clinerules/csharp-reviewer.md +101 -0
- package/.clinerules/dart-build-resolver.md +201 -0
- package/.clinerules/dashboard.md +67 -0
- package/.clinerules/database-reviewer.md +91 -0
- package/.clinerules/debug-blitz.md +70 -0
- package/.clinerules/debug-detective.md +410 -0
- package/.clinerules/dependency-doctor.md +121 -0
- package/.clinerules/design-quality.md +63 -0
- package/.clinerules/development-workflow.md +44 -0
- package/.clinerules/devfleet.md +23 -0
- package/.clinerules/devil-mode.md +121 -0
- package/.clinerules/doc-updater.md +107 -0
- package/.clinerules/docs-lookup.md +68 -0
- package/.clinerules/docs.md +23 -0
- package/.clinerules/doctor.md +75 -0
- package/.clinerules/e2e-runner.md +107 -0
- package/.clinerules/e2e.md +268 -0
- package/.clinerules/env-debugger.md +154 -0
- package/.clinerules/eval.md +23 -0
- package/.clinerules/evil-mode.md +106 -0
- package/.clinerules/evolve.md +178 -0
- package/.clinerules/feature-dev.md +49 -0
- package/.clinerules/flake-hunter.md +142 -0
- package/.clinerules/flutter-build.md +164 -0
- package/.clinerules/flutter-review.md +116 -0
- package/.clinerules/flutter-reviewer.md +243 -0
- package/.clinerules/flutter-test.md +144 -0
- package/.clinerules/gan-build.md +104 -0
- package/.clinerules/gan-design.md +40 -0
- package/.clinerules/gan-evaluator.md +209 -0
- package/.clinerules/gan-generator.md +131 -0
- package/.clinerules/gan-planner.md +99 -0
- package/.clinerules/git-rescue.md +133 -0
- package/.clinerules/git-workflow.md +24 -0
- package/.clinerules/go-build-resolver.md +94 -0
- package/.clinerules/go-build.md +183 -0
- package/.clinerules/go-review.md +148 -0
- package/.clinerules/go-reviewer.md +76 -0
- package/.clinerules/go-test.md +268 -0
- package/.clinerules/god-mode.md +85 -0
- package/.clinerules/gradle-build.md +70 -0
- package/.clinerules/harness-audit.md +77 -0
- package/.clinerules/harness-optimizer.md +35 -0
- package/.clinerules/healthcare-reviewer.md +83 -0
- package/.clinerules/hookify-configure.md +14 -0
- package/.clinerules/hookify-help.md +46 -0
- package/.clinerules/hookify-list.md +21 -0
- package/.clinerules/hookify.md +50 -0
- package/.clinerules/hooks.md +23 -0
- package/.clinerules/image-architect.md +190 -0
- package/.clinerules/immune.md +89 -0
- package/.clinerules/incident-commander.md +228 -0
- package/.clinerules/instinct-export.md +66 -0
- package/.clinerules/instinct-import.md +114 -0
- package/.clinerules/instinct-status.md +59 -0
- package/.clinerules/jailbreak-tester.md +222 -0
- package/.clinerules/java-build-resolver.md +153 -0
- package/.clinerules/java-reviewer.md +92 -0
- package/.clinerules/jira.md +106 -0
- package/.clinerules/kodelyth-advisor.md +172 -0
- package/.clinerules/kodelyth-memory.md +87 -0
- package/.clinerules/kotlin-build-resolver.md +118 -0
- package/.clinerules/kotlin-build.md +174 -0
- package/.clinerules/kotlin-review.md +140 -0
- package/.clinerules/kotlin-reviewer.md +159 -0
- package/.clinerules/kotlin-test.md +312 -0
- package/.clinerules/learn-eval.md +116 -0
- package/.clinerules/learn.md +74 -0
- package/.clinerules/lessons.md +92 -0
- package/.clinerules/license-violation-finder.md +212 -0
- package/.clinerules/load-tester.md +284 -0
- package/.clinerules/loop-operator.md +36 -0
- package/.clinerules/loop-start.md +37 -0
- package/.clinerules/loop-status.md +28 -0
- package/.clinerules/memory-evolve.md +71 -0
- package/.clinerules/memory-protocol.md +87 -0
- package/.clinerules/memory.md +62 -0
- package/.clinerules/migration-guide.md +369 -0
- package/.clinerules/model-route.md +31 -0
- package/.clinerules/multi-backend.md +163 -0
- package/.clinerules/multi-execute.md +320 -0
- package/.clinerules/multi-frontend.md +163 -0
- package/.clinerules/multi-plan.md +273 -0
- package/.clinerules/multi-workflow.md +196 -0
- package/.clinerules/onboard.md +72 -0
- package/.clinerules/opensource-forker.md +198 -0
- package/.clinerules/opensource-packager.md +249 -0
- package/.clinerules/opensource-sanitizer.md +188 -0
- package/.clinerules/orchestrate.md +135 -0
- package/.clinerules/pair-programmer.md +261 -0
- package/.clinerules/patterns.md +71 -0
- package/.clinerules/performance-optimizer.md +446 -0
- package/.clinerules/performance.md +55 -0
- package/.clinerules/plan.md +117 -0
- package/.clinerules/planner.md +212 -0
- package/.clinerules/pm2.md +277 -0
- package/.clinerules/pr-test-analyzer.md +45 -0
- package/.clinerules/pre-release.md +66 -0
- package/.clinerules/project-launch.md +91 -0
- package/.clinerules/projects.md +39 -0
- package/.clinerules/promote.md +41 -0
- package/.clinerules/prompt-injection-hunter.md +126 -0
- package/.clinerules/prompt-optimize.md +23 -0
- package/.clinerules/prp-commit.md +112 -0
- package/.clinerules/prp-implement.md +385 -0
- package/.clinerules/prp-plan.md +502 -0
- package/.clinerules/prp-pr.md +184 -0
- package/.clinerules/prp-prd.md +447 -0
- package/.clinerules/prune.md +31 -0
- package/.clinerules/python-review.md +297 -0
- package/.clinerules/python-reviewer.md +98 -0
- package/.clinerules/pytorch-build-resolver.md +120 -0
- package/.clinerules/quality-gate.md +33 -0
- package/.clinerules/refactor-clean.md +84 -0
- package/.clinerules/refactor-cleaner.md +85 -0
- package/.clinerules/refactor-sprint.md +77 -0
- package/.clinerules/release-captain.md +226 -0
- package/.clinerules/replay.md +61 -0
- package/.clinerules/resume-session.md +156 -0
- package/.clinerules/review-pr.md +37 -0
- package/.clinerules/route-model.md +48 -0
- package/.clinerules/rules-distill.md +20 -0
- package/.clinerules/rust-build-resolver.md +148 -0
- package/.clinerules/rust-build.md +187 -0
- package/.clinerules/rust-review.md +142 -0
- package/.clinerules/rust-reviewer.md +94 -0
- package/.clinerules/rust-test.md +308 -0
- package/.clinerules/santa-loop.md +175 -0
- package/.clinerules/save-session.md +275 -0
- package/.clinerules/secret-hunter.md +209 -0
- package/.clinerules/security-audit.md +66 -0
- package/.clinerules/security-reviewer.md +166 -0
- package/.clinerules/security.md +56 -0
- package/.clinerules/self-improvement-workflow.md +141 -0
- package/.clinerules/seo-specialist.md +62 -0
- package/.clinerules/sessions.md +333 -0
- package/.clinerules/setup-pm.md +80 -0
- package/.clinerules/shell-portability.md +70 -0
- package/.clinerules/silent-failure-hunter.md +50 -0
- package/.clinerules/skill-create.md +174 -0
- package/.clinerules/skill-health.md +54 -0
- package/.clinerules/supply-chain-auditor.md +195 -0
- package/.clinerules/swarm.md +68 -0
- package/.clinerules/tdd-guide.md +91 -0
- package/.clinerules/tdd.md +231 -0
- package/.clinerules/team-review.md +107 -0
- package/.clinerules/terse-compress.md +78 -0
- package/.clinerules/terse.md +40 -0
- package/.clinerules/test-coverage.md +73 -0
- package/.clinerules/testing.md +65 -0
- package/.clinerules/type-design-analyzer.md +41 -0
- package/.clinerules/typescript-reviewer.md +112 -0
- package/.clinerules/update-codemaps.md +76 -0
- package/.clinerules/update-docs.md +88 -0
- package/.clinerules/update.md +92 -0
- package/.clinerules/ux-reviewer.md +483 -0
- package/.clinerules/verify-supply-chain.md +59 -0
- package/.clinerules/verify.md +23 -0
- package/.cursor/rules/README.md +108 -0
- package/.cursor/rules/agent-intent-routing.md +832 -0
- package/.cursor/rules/agents.md +50 -0
- package/.cursor/rules/code-review.md +124 -0
- package/.cursor/rules/coding-style.md +41 -0
- package/.cursor/rules/cost-aware-model-routing.md +152 -0
- package/.cursor/rules/design-quality.md +63 -0
- package/.cursor/rules/development-workflow.md +44 -0
- package/.cursor/rules/git-workflow.md +24 -0
- package/.cursor/rules/hooks.md +23 -0
- package/.cursor/rules/memory-protocol.md +87 -0
- package/.cursor/rules/patterns.md +71 -0
- package/.cursor/rules/performance.md +55 -0
- package/.cursor/rules/security.md +56 -0
- package/.cursor/rules/self-improvement-workflow.md +141 -0
- package/.cursor/rules/shell-portability.md +70 -0
- package/.cursor/rules/testing.md +65 -0
- package/.cursor/skills/agent-eval/SKILL.md +145 -0
- package/.cursor/skills/agent-handoff/SKILL.md +184 -0
- package/.cursor/skills/agent-harness-construction/SKILL.md +73 -0
- package/.cursor/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/.cursor/skills/agent-payment-x402/SKILL.md +178 -0
- package/.cursor/skills/agent-sort/SKILL.md +215 -0
- package/.cursor/skills/agentic-engineering/SKILL.md +63 -0
- package/.cursor/skills/ai-first-engineering/SKILL.md +51 -0
- package/.cursor/skills/ai-regression-testing/SKILL.md +385 -0
- package/.cursor/skills/android-clean-architecture/SKILL.md +339 -0
- package/.cursor/skills/api-connector-builder/SKILL.md +121 -0
- package/.cursor/skills/api-design/SKILL.md +523 -0
- package/.cursor/skills/architecture-decision-records/SKILL.md +179 -0
- package/.cursor/skills/article-writing/SKILL.md +79 -0
- package/.cursor/skills/automation-audit-ops/SKILL.md +142 -0
- package/.cursor/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.cursor/skills/autonomous-loops/SKILL.md +610 -0
- package/.cursor/skills/backend-patterns/SKILL.md +598 -0
- package/.cursor/skills/benchmark/SKILL.md +93 -0
- package/.cursor/skills/blueprint/SKILL.md +105 -0
- package/.cursor/skills/brand-voice/SKILL.md +97 -0
- package/.cursor/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.cursor/skills/browser-qa/SKILL.md +87 -0
- package/.cursor/skills/bun-runtime/SKILL.md +84 -0
- package/.cursor/skills/canary-watch/SKILL.md +99 -0
- package/.cursor/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.cursor/skills/ck/SKILL.md +147 -0
- package/.cursor/skills/ck/commands/forget.mjs +44 -0
- package/.cursor/skills/ck/commands/info.mjs +24 -0
- package/.cursor/skills/ck/commands/init.mjs +143 -0
- package/.cursor/skills/ck/commands/list.mjs +40 -0
- package/.cursor/skills/ck/commands/migrate.mjs +202 -0
- package/.cursor/skills/ck/commands/resume.mjs +36 -0
- package/.cursor/skills/ck/commands/save.mjs +210 -0
- package/.cursor/skills/ck/commands/shared.mjs +387 -0
- package/.cursor/skills/ck/hooks/session-start.mjs +224 -0
- package/.cursor/skills/claude-api/SKILL.md +337 -0
- package/.cursor/skills/claude-devfleet/SKILL.md +103 -0
- package/.cursor/skills/click-path-audit/SKILL.md +244 -0
- package/.cursor/skills/clickhouse-io/SKILL.md +439 -0
- package/.cursor/skills/code-tour/SKILL.md +236 -0
- package/.cursor/skills/codebase-onboarding/SKILL.md +233 -0
- package/.cursor/skills/coding-standards/SKILL.md +549 -0
- package/.cursor/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.cursor/skills/configure-ecc/SKILL.md +367 -0
- package/.cursor/skills/connections-optimizer/SKILL.md +189 -0
- package/.cursor/skills/content-engine/SKILL.md +131 -0
- package/.cursor/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.cursor/skills/context-budget/SKILL.md +135 -0
- package/.cursor/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.cursor/skills/continuous-learning/SKILL.md +123 -0
- package/.cursor/skills/continuous-learning/config.json +18 -0
- package/.cursor/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.cursor/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.cursor/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.cursor/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.cursor/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.cursor/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.cursor/skills/continuous-learning-v2/config.json +8 -0
- package/.cursor/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.cursor/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.cursor/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.cursor/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/.cursor/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.cursor/skills/cost-aware-model-routing/SKILL.md +153 -0
- package/.cursor/skills/council/SKILL.md +203 -0
- package/.cursor/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.cursor/skills/cpp-testing/SKILL.md +324 -0
- package/.cursor/skills/crosspost/SKILL.md +111 -0
- package/.cursor/skills/csharp-testing/SKILL.md +321 -0
- package/.cursor/skills/customer-billing-ops/SKILL.md +140 -0
- package/.cursor/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.cursor/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.cursor/skills/dashboard-builder/SKILL.md +109 -0
- package/.cursor/skills/data-scraper-agent/SKILL.md +764 -0
- package/.cursor/skills/database-migrations/SKILL.md +429 -0
- package/.cursor/skills/deep-research/SKILL.md +155 -0
- package/.cursor/skills/defi-amm-security/SKILL.md +160 -0
- package/.cursor/skills/deployment-patterns/SKILL.md +427 -0
- package/.cursor/skills/design-system/SKILL.md +82 -0
- package/.cursor/skills/django-patterns/SKILL.md +734 -0
- package/.cursor/skills/django-security/SKILL.md +593 -0
- package/.cursor/skills/django-tdd/SKILL.md +729 -0
- package/.cursor/skills/django-verification/SKILL.md +469 -0
- package/.cursor/skills/dmux-workflows/SKILL.md +191 -0
- package/.cursor/skills/docker-patterns/SKILL.md +364 -0
- package/.cursor/skills/documentation-lookup/SKILL.md +90 -0
- package/.cursor/skills/dotnet-patterns/SKILL.md +321 -0
- package/.cursor/skills/e2e-testing/SKILL.md +326 -0
- package/.cursor/skills/ecc-token-savings/SKILL.md +106 -0
- package/.cursor/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/.cursor/skills/email-ops/SKILL.md +121 -0
- package/.cursor/skills/energy-procurement/SKILL.md +228 -0
- package/.cursor/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.cursor/skills/eval-harness/SKILL.md +270 -0
- package/.cursor/skills/evm-token-decimals/SKILL.md +130 -0
- package/.cursor/skills/exa-search/SKILL.md +103 -0
- package/.cursor/skills/fal-ai-media/SKILL.md +284 -0
- package/.cursor/skills/finance-billing-ops/SKILL.md +127 -0
- package/.cursor/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.cursor/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.cursor/skills/frontend-design/SKILL.md +145 -0
- package/.cursor/skills/frontend-patterns/SKILL.md +642 -0
- package/.cursor/skills/frontend-slides/SKILL.md +184 -0
- package/.cursor/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.cursor/skills/gan-style-harness/SKILL.md +278 -0
- package/.cursor/skills/git-mastery/SKILL.md +366 -0
- package/.cursor/skills/git-workflow/SKILL.md +715 -0
- package/.cursor/skills/github-ops/SKILL.md +144 -0
- package/.cursor/skills/golang-patterns/SKILL.md +674 -0
- package/.cursor/skills/golang-testing/SKILL.md +720 -0
- package/.cursor/skills/google-workspace-ops/SKILL.md +95 -0
- package/.cursor/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.cursor/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.cursor/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.cursor/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.cursor/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.cursor/skills/hipaa-compliance/SKILL.md +78 -0
- package/.cursor/skills/hookify-rules/SKILL.md +128 -0
- package/.cursor/skills/intent-routing/SKILL.md +134 -0
- package/.cursor/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.cursor/skills/investor-materials/SKILL.md +96 -0
- package/.cursor/skills/investor-outreach/SKILL.md +91 -0
- package/.cursor/skills/iterative-retrieval/SKILL.md +211 -0
- package/.cursor/skills/java-coding-standards/SKILL.md +147 -0
- package/.cursor/skills/jira-integration/SKILL.md +293 -0
- package/.cursor/skills/jpa-patterns/SKILL.md +151 -0
- package/.cursor/skills/knowledge-ops/SKILL.md +154 -0
- package/.cursor/skills/kodelyth-memory/SKILL.md +136 -0
- package/.cursor/skills/kodelyth-quickstart/SKILL.md +214 -0
- package/.cursor/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.cursor/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.cursor/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.cursor/skills/kotlin-patterns/SKILL.md +711 -0
- package/.cursor/skills/kotlin-testing/SKILL.md +824 -0
- package/.cursor/skills/laravel-patterns/SKILL.md +415 -0
- package/.cursor/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.cursor/skills/laravel-security/SKILL.md +285 -0
- package/.cursor/skills/laravel-tdd/SKILL.md +283 -0
- package/.cursor/skills/laravel-verification/SKILL.md +179 -0
- package/.cursor/skills/lead-intelligence/SKILL.md +321 -0
- package/.cursor/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.cursor/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.cursor/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.cursor/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.cursor/skills/liquid-glass-design/SKILL.md +279 -0
- package/.cursor/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/.cursor/skills/logistics-exception-management/SKILL.md +222 -0
- package/.cursor/skills/manim-video/SKILL.md +89 -0
- package/.cursor/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/.cursor/skills/market-research/SKILL.md +75 -0
- package/.cursor/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.cursor/skills/messages-ops/SKILL.md +104 -0
- package/.cursor/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.cursor/skills/nestjs-patterns/SKILL.md +230 -0
- package/.cursor/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.cursor/skills/nodejs-keccak256/SKILL.md +102 -0
- package/.cursor/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.cursor/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.cursor/skills/observability/SKILL.md +390 -0
- package/.cursor/skills/observability-dashboard/SKILL.md +119 -0
- package/.cursor/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.cursor/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.cursor/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.cursor/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.cursor/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.cursor/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.cursor/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.cursor/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.cursor/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.cursor/skills/opensource-pipeline/SKILL.md +255 -0
- package/.cursor/skills/perl-patterns/SKILL.md +504 -0
- package/.cursor/skills/perl-security/SKILL.md +503 -0
- package/.cursor/skills/perl-testing/SKILL.md +475 -0
- package/.cursor/skills/plankton-code-quality/SKILL.md +236 -0
- package/.cursor/skills/postgres-patterns/SKILL.md +147 -0
- package/.cursor/skills/product-capability/SKILL.md +141 -0
- package/.cursor/skills/product-lens/SKILL.md +92 -0
- package/.cursor/skills/production-scheduling/SKILL.md +238 -0
- package/.cursor/skills/project-flow-ops/SKILL.md +111 -0
- package/.cursor/skills/prompt-optimizer/SKILL.md +397 -0
- package/.cursor/skills/python-patterns/SKILL.md +750 -0
- package/.cursor/skills/python-testing/SKILL.md +816 -0
- package/.cursor/skills/pytorch-patterns/SKILL.md +396 -0
- package/.cursor/skills/quality-nonconformance/SKILL.md +260 -0
- package/.cursor/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.cursor/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.cursor/skills/remotion-video-creation/SKILL.md +43 -0
- package/.cursor/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.cursor/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.cursor/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.cursor/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.cursor/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.cursor/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.cursor/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.cursor/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.cursor/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.cursor/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.cursor/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.cursor/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.cursor/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.cursor/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.cursor/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.cursor/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.cursor/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.cursor/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.cursor/skills/remotion-video-creation/rules/images.md +130 -0
- package/.cursor/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.cursor/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.cursor/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.cursor/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.cursor/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.cursor/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.cursor/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.cursor/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.cursor/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.cursor/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.cursor/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.cursor/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.cursor/skills/repo-scan/SKILL.md +78 -0
- package/.cursor/skills/research-ops/SKILL.md +112 -0
- package/.cursor/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.cursor/skills/rules-distill/SKILL.md +264 -0
- package/.cursor/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.cursor/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.cursor/skills/rust-patterns/SKILL.md +499 -0
- package/.cursor/skills/rust-testing/SKILL.md +500 -0
- package/.cursor/skills/safety-guard/SKILL.md +75 -0
- package/.cursor/skills/santa-method/SKILL.md +306 -0
- package/.cursor/skills/search-first/SKILL.md +161 -0
- package/.cursor/skills/security-bounty-hunter/SKILL.md +99 -0
- package/.cursor/skills/security-review/SKILL.md +495 -0
- package/.cursor/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.cursor/skills/security-scan/SKILL.md +165 -0
- package/.cursor/skills/self-evolving-memory/SKILL.md +175 -0
- package/.cursor/skills/seo/SKILL.md +154 -0
- package/.cursor/skills/session-replay/SKILL.md +199 -0
- package/.cursor/skills/skill-comply/SKILL.md +58 -0
- package/.cursor/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/.cursor/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/.cursor/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/.cursor/skills/skill-comply/prompts/classifier.md +24 -0
- package/.cursor/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/.cursor/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/.cursor/skills/skill-comply/pyproject.toml +15 -0
- package/.cursor/skills/skill-comply/scripts/__init__.py +0 -0
- package/.cursor/skills/skill-comply/scripts/classifier.py +85 -0
- package/.cursor/skills/skill-comply/scripts/grader.py +122 -0
- package/.cursor/skills/skill-comply/scripts/parser.py +107 -0
- package/.cursor/skills/skill-comply/scripts/report.py +170 -0
- package/.cursor/skills/skill-comply/scripts/run.py +127 -0
- package/.cursor/skills/skill-comply/scripts/runner.py +161 -0
- package/.cursor/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/.cursor/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/.cursor/skills/skill-comply/scripts/utils.py +13 -0
- package/.cursor/skills/skill-stocktake/SKILL.md +193 -0
- package/.cursor/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.cursor/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.cursor/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.cursor/skills/smart-debug/SKILL.md +241 -0
- package/.cursor/skills/social-graph-ranker/SKILL.md +154 -0
- package/.cursor/skills/springboot-patterns/SKILL.md +314 -0
- package/.cursor/skills/springboot-security/SKILL.md +272 -0
- package/.cursor/skills/springboot-tdd/SKILL.md +158 -0
- package/.cursor/skills/springboot-verification/SKILL.md +231 -0
- package/.cursor/skills/strategic-compact/SKILL.md +131 -0
- package/.cursor/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.cursor/skills/supply-chain-verification/SKILL.md +201 -0
- package/.cursor/skills/swarm-orchestrator/SKILL.md +177 -0
- package/.cursor/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.cursor/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.cursor/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.cursor/skills/swiftui-patterns/SKILL.md +259 -0
- package/.cursor/skills/tdd-workflow/SKILL.md +463 -0
- package/.cursor/skills/team-builder/SKILL.md +168 -0
- package/.cursor/skills/terminal-ops/SKILL.md +109 -0
- package/.cursor/skills/terse-mode/SKILL.md +97 -0
- package/.cursor/skills/token-budget-advisor/SKILL.md +133 -0
- package/.cursor/skills/ui-demo/SKILL.md +465 -0
- package/.cursor/skills/unified-notifications-ops/SKILL.md +187 -0
- package/.cursor/skills/verification-loop/SKILL.md +126 -0
- package/.cursor/skills/video-editing/SKILL.md +310 -0
- package/.cursor/skills/videodb/SKILL.md +374 -0
- package/.cursor/skills/videodb/reference/api-reference.md +550 -0
- package/.cursor/skills/videodb/reference/capture-reference.md +407 -0
- package/.cursor/skills/videodb/reference/capture.md +101 -0
- package/.cursor/skills/videodb/reference/editor.md +443 -0
- package/.cursor/skills/videodb/reference/generative.md +331 -0
- package/.cursor/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.cursor/skills/videodb/reference/rtstream.md +65 -0
- package/.cursor/skills/videodb/reference/search.md +230 -0
- package/.cursor/skills/videodb/reference/streaming.md +406 -0
- package/.cursor/skills/videodb/reference/use-cases.md +118 -0
- package/.cursor/skills/videodb/scripts/ws_listener.py +282 -0
- package/.cursor/skills/visa-doc-translate/README.md +86 -0
- package/.cursor/skills/visa-doc-translate/SKILL.md +117 -0
- package/.cursor/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.cursor/skills/x-api/SKILL.md +230 -0
- package/.gemini/GEMINI.md +13 -0
- package/.gemini/agents/api-guardian.md +279 -0
- package/.gemini/agents/architect.md +211 -0
- package/.gemini/agents/backdoor-hunter.md +260 -0
- package/.gemini/agents/build-error-resolver.md +114 -0
- package/.gemini/agents/chaos-engineer.md +251 -0
- package/.gemini/agents/chief-of-staff.md +151 -0
- package/.gemini/agents/code-architect.md +71 -0
- package/.gemini/agents/code-explorer.md +69 -0
- package/.gemini/agents/code-reviewer.md +258 -0
- package/.gemini/agents/code-simplifier.md +47 -0
- package/.gemini/agents/code-stealer-detector.md +228 -0
- package/.gemini/agents/comment-analyzer.md +45 -0
- package/.gemini/agents/conversation-analyzer.md +52 -0
- package/.gemini/agents/cpp-build-resolver.md +90 -0
- package/.gemini/agents/cpp-reviewer.md +72 -0
- package/.gemini/agents/csharp-reviewer.md +101 -0
- package/.gemini/agents/dart-build-resolver.md +201 -0
- package/.gemini/agents/database-reviewer.md +91 -0
- package/.gemini/agents/debug-detective.md +410 -0
- package/.gemini/agents/dependency-doctor.md +121 -0
- package/.gemini/agents/doc-updater.md +107 -0
- package/.gemini/agents/docs-lookup.md +68 -0
- package/.gemini/agents/e2e-runner.md +107 -0
- package/.gemini/agents/env-debugger.md +154 -0
- package/.gemini/agents/flake-hunter.md +142 -0
- package/.gemini/agents/flutter-reviewer.md +243 -0
- package/.gemini/agents/gan-evaluator.md +209 -0
- package/.gemini/agents/gan-generator.md +131 -0
- package/.gemini/agents/gan-planner.md +99 -0
- package/.gemini/agents/git-rescue.md +133 -0
- package/.gemini/agents/go-build-resolver.md +94 -0
- package/.gemini/agents/go-reviewer.md +76 -0
- package/.gemini/agents/harness-optimizer.md +35 -0
- package/.gemini/agents/healthcare-reviewer.md +83 -0
- package/.gemini/agents/image-architect.md +190 -0
- package/.gemini/agents/incident-commander.md +228 -0
- package/.gemini/agents/jailbreak-tester.md +222 -0
- package/.gemini/agents/java-build-resolver.md +153 -0
- package/.gemini/agents/java-reviewer.md +92 -0
- package/.gemini/agents/kodelyth-advisor.md +172 -0
- package/.gemini/agents/kodelyth-memory.md +87 -0
- package/.gemini/agents/kotlin-build-resolver.md +118 -0
- package/.gemini/agents/kotlin-reviewer.md +159 -0
- package/.gemini/agents/license-violation-finder.md +212 -0
- package/.gemini/agents/load-tester.md +284 -0
- package/.gemini/agents/loop-operator.md +36 -0
- package/.gemini/agents/migration-guide.md +369 -0
- package/.gemini/agents/opensource-forker.md +198 -0
- package/.gemini/agents/opensource-packager.md +249 -0
- package/.gemini/agents/opensource-sanitizer.md +188 -0
- package/.gemini/agents/pair-programmer.md +261 -0
- package/.gemini/agents/performance-optimizer.md +446 -0
- package/.gemini/agents/planner.md +212 -0
- package/.gemini/agents/pr-test-analyzer.md +45 -0
- package/.gemini/agents/prompt-injection-hunter.md +126 -0
- package/.gemini/agents/python-reviewer.md +98 -0
- package/.gemini/agents/pytorch-build-resolver.md +120 -0
- package/.gemini/agents/refactor-cleaner.md +85 -0
- package/.gemini/agents/release-captain.md +226 -0
- package/.gemini/agents/rust-build-resolver.md +148 -0
- package/.gemini/agents/rust-reviewer.md +94 -0
- package/.gemini/agents/secret-hunter.md +209 -0
- package/.gemini/agents/security-reviewer.md +166 -0
- package/.gemini/agents/seo-specialist.md +62 -0
- package/.gemini/agents/silent-failure-hunter.md +50 -0
- package/.gemini/agents/supply-chain-auditor.md +195 -0
- package/.gemini/agents/tdd-guide.md +91 -0
- package/.gemini/agents/type-design-analyzer.md +41 -0
- package/.gemini/agents/typescript-reviewer.md +112 -0
- package/.gemini/agents/ux-reviewer.md +483 -0
- package/.gemini/commands/terse-compress.md +78 -0
- package/.gemini/commands/terse.md +40 -0
- package/.gemini/rules/README.md +108 -0
- package/.gemini/rules/agent-intent-routing.md +832 -0
- package/.gemini/rules/agents.md +50 -0
- package/.gemini/rules/code-review.md +124 -0
- package/.gemini/rules/coding-style.md +41 -0
- package/.gemini/rules/cost-aware-model-routing.md +152 -0
- package/.gemini/rules/design-quality.md +63 -0
- package/.gemini/rules/development-workflow.md +44 -0
- package/.gemini/rules/git-workflow.md +24 -0
- package/.gemini/rules/hooks.md +23 -0
- package/.gemini/rules/memory-protocol.md +87 -0
- package/.gemini/rules/patterns.md +71 -0
- package/.gemini/rules/performance.md +55 -0
- package/.gemini/rules/security.md +56 -0
- package/.gemini/rules/self-improvement-workflow.md +141 -0
- package/.gemini/rules/shell-portability.md +70 -0
- package/.gemini/rules/testing.md +65 -0
- package/.gemini/skills/agent-eval/SKILL.md +145 -0
- package/.gemini/skills/agent-handoff/SKILL.md +184 -0
- package/.gemini/skills/agent-harness-construction/SKILL.md +73 -0
- package/.gemini/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/.gemini/skills/agent-payment-x402/SKILL.md +178 -0
- package/.gemini/skills/agent-sort/SKILL.md +215 -0
- package/.gemini/skills/agentic-engineering/SKILL.md +63 -0
- package/.gemini/skills/ai-first-engineering/SKILL.md +51 -0
- package/.gemini/skills/ai-regression-testing/SKILL.md +385 -0
- package/.gemini/skills/android-clean-architecture/SKILL.md +339 -0
- package/.gemini/skills/api-connector-builder/SKILL.md +121 -0
- package/.gemini/skills/api-design/SKILL.md +523 -0
- package/.gemini/skills/architecture-decision-records/SKILL.md +179 -0
- package/.gemini/skills/article-writing/SKILL.md +79 -0
- package/.gemini/skills/automation-audit-ops/SKILL.md +142 -0
- package/.gemini/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.gemini/skills/autonomous-loops/SKILL.md +610 -0
- package/.gemini/skills/backend-patterns/SKILL.md +598 -0
- package/.gemini/skills/benchmark/SKILL.md +93 -0
- package/.gemini/skills/blueprint/SKILL.md +105 -0
- package/.gemini/skills/brand-voice/SKILL.md +97 -0
- package/.gemini/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.gemini/skills/browser-qa/SKILL.md +87 -0
- package/.gemini/skills/bun-runtime/SKILL.md +84 -0
- package/.gemini/skills/canary-watch/SKILL.md +99 -0
- package/.gemini/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.gemini/skills/ck/SKILL.md +147 -0
- package/.gemini/skills/ck/commands/forget.mjs +44 -0
- package/.gemini/skills/ck/commands/info.mjs +24 -0
- package/.gemini/skills/ck/commands/init.mjs +143 -0
- package/.gemini/skills/ck/commands/list.mjs +40 -0
- package/.gemini/skills/ck/commands/migrate.mjs +202 -0
- package/.gemini/skills/ck/commands/resume.mjs +36 -0
- package/.gemini/skills/ck/commands/save.mjs +210 -0
- package/.gemini/skills/ck/commands/shared.mjs +387 -0
- package/.gemini/skills/ck/hooks/session-start.mjs +224 -0
- package/.gemini/skills/claude-api/SKILL.md +337 -0
- package/.gemini/skills/claude-devfleet/SKILL.md +103 -0
- package/.gemini/skills/click-path-audit/SKILL.md +244 -0
- package/.gemini/skills/clickhouse-io/SKILL.md +439 -0
- package/.gemini/skills/code-tour/SKILL.md +236 -0
- package/.gemini/skills/codebase-onboarding/SKILL.md +233 -0
- package/.gemini/skills/coding-standards/SKILL.md +549 -0
- package/.gemini/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.gemini/skills/configure-ecc/SKILL.md +367 -0
- package/.gemini/skills/connections-optimizer/SKILL.md +189 -0
- package/.gemini/skills/content-engine/SKILL.md +131 -0
- package/.gemini/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.gemini/skills/context-budget/SKILL.md +135 -0
- package/.gemini/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.gemini/skills/continuous-learning/SKILL.md +123 -0
- package/.gemini/skills/continuous-learning/config.json +18 -0
- package/.gemini/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.gemini/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.gemini/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.gemini/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.gemini/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.gemini/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.gemini/skills/continuous-learning-v2/config.json +8 -0
- package/.gemini/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.gemini/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.gemini/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.gemini/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/.gemini/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.gemini/skills/cost-aware-model-routing/SKILL.md +153 -0
- package/.gemini/skills/council/SKILL.md +203 -0
- package/.gemini/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.gemini/skills/cpp-testing/SKILL.md +324 -0
- package/.gemini/skills/crosspost/SKILL.md +111 -0
- package/.gemini/skills/csharp-testing/SKILL.md +321 -0
- package/.gemini/skills/customer-billing-ops/SKILL.md +140 -0
- package/.gemini/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.gemini/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.gemini/skills/dashboard-builder/SKILL.md +109 -0
- package/.gemini/skills/data-scraper-agent/SKILL.md +764 -0
- package/.gemini/skills/database-migrations/SKILL.md +429 -0
- package/.gemini/skills/deep-research/SKILL.md +155 -0
- package/.gemini/skills/defi-amm-security/SKILL.md +160 -0
- package/.gemini/skills/deployment-patterns/SKILL.md +427 -0
- package/.gemini/skills/design-system/SKILL.md +82 -0
- package/.gemini/skills/django-patterns/SKILL.md +734 -0
- package/.gemini/skills/django-security/SKILL.md +593 -0
- package/.gemini/skills/django-tdd/SKILL.md +729 -0
- package/.gemini/skills/django-verification/SKILL.md +469 -0
- package/.gemini/skills/dmux-workflows/SKILL.md +191 -0
- package/.gemini/skills/docker-patterns/SKILL.md +364 -0
- package/.gemini/skills/documentation-lookup/SKILL.md +90 -0
- package/.gemini/skills/dotnet-patterns/SKILL.md +321 -0
- package/.gemini/skills/e2e-testing/SKILL.md +326 -0
- package/.gemini/skills/ecc-token-savings/SKILL.md +106 -0
- package/.gemini/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/.gemini/skills/email-ops/SKILL.md +121 -0
- package/.gemini/skills/energy-procurement/SKILL.md +228 -0
- package/.gemini/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.gemini/skills/eval-harness/SKILL.md +270 -0
- package/.gemini/skills/evm-token-decimals/SKILL.md +130 -0
- package/.gemini/skills/exa-search/SKILL.md +103 -0
- package/.gemini/skills/fal-ai-media/SKILL.md +284 -0
- package/.gemini/skills/finance-billing-ops/SKILL.md +127 -0
- package/.gemini/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.gemini/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.gemini/skills/frontend-design/SKILL.md +145 -0
- package/.gemini/skills/frontend-patterns/SKILL.md +642 -0
- package/.gemini/skills/frontend-slides/SKILL.md +184 -0
- package/.gemini/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.gemini/skills/gan-style-harness/SKILL.md +278 -0
- package/.gemini/skills/git-mastery/SKILL.md +366 -0
- package/.gemini/skills/git-workflow/SKILL.md +715 -0
- package/.gemini/skills/github-ops/SKILL.md +144 -0
- package/.gemini/skills/golang-patterns/SKILL.md +674 -0
- package/.gemini/skills/golang-testing/SKILL.md +720 -0
- package/.gemini/skills/google-workspace-ops/SKILL.md +95 -0
- package/.gemini/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.gemini/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.gemini/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.gemini/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.gemini/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.gemini/skills/hipaa-compliance/SKILL.md +78 -0
- package/.gemini/skills/hookify-rules/SKILL.md +128 -0
- package/.gemini/skills/intent-routing/SKILL.md +134 -0
- package/.gemini/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.gemini/skills/investor-materials/SKILL.md +96 -0
- package/.gemini/skills/investor-outreach/SKILL.md +91 -0
- package/.gemini/skills/iterative-retrieval/SKILL.md +211 -0
- package/.gemini/skills/java-coding-standards/SKILL.md +147 -0
- package/.gemini/skills/jira-integration/SKILL.md +293 -0
- package/.gemini/skills/jpa-patterns/SKILL.md +151 -0
- package/.gemini/skills/knowledge-ops/SKILL.md +154 -0
- package/.gemini/skills/kodelyth-memory/SKILL.md +136 -0
- package/.gemini/skills/kodelyth-quickstart/SKILL.md +214 -0
- package/.gemini/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.gemini/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.gemini/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.gemini/skills/kotlin-patterns/SKILL.md +711 -0
- package/.gemini/skills/kotlin-testing/SKILL.md +824 -0
- package/.gemini/skills/laravel-patterns/SKILL.md +415 -0
- package/.gemini/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.gemini/skills/laravel-security/SKILL.md +285 -0
- package/.gemini/skills/laravel-tdd/SKILL.md +283 -0
- package/.gemini/skills/laravel-verification/SKILL.md +179 -0
- package/.gemini/skills/lead-intelligence/SKILL.md +321 -0
- package/.gemini/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.gemini/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.gemini/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.gemini/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.gemini/skills/liquid-glass-design/SKILL.md +279 -0
- package/.gemini/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/.gemini/skills/logistics-exception-management/SKILL.md +222 -0
- package/.gemini/skills/manim-video/SKILL.md +89 -0
- package/.gemini/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/.gemini/skills/market-research/SKILL.md +75 -0
- package/.gemini/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.gemini/skills/messages-ops/SKILL.md +104 -0
- package/.gemini/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.gemini/skills/nestjs-patterns/SKILL.md +230 -0
- package/.gemini/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.gemini/skills/nodejs-keccak256/SKILL.md +102 -0
- package/.gemini/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.gemini/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.gemini/skills/observability/SKILL.md +390 -0
- package/.gemini/skills/observability-dashboard/SKILL.md +119 -0
- package/.gemini/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.gemini/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.gemini/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.gemini/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.gemini/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.gemini/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.gemini/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.gemini/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.gemini/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.gemini/skills/opensource-pipeline/SKILL.md +255 -0
- package/.gemini/skills/perl-patterns/SKILL.md +504 -0
- package/.gemini/skills/perl-security/SKILL.md +503 -0
- package/.gemini/skills/perl-testing/SKILL.md +475 -0
- package/.gemini/skills/plankton-code-quality/SKILL.md +236 -0
- package/.gemini/skills/postgres-patterns/SKILL.md +147 -0
- package/.gemini/skills/product-capability/SKILL.md +141 -0
- package/.gemini/skills/product-lens/SKILL.md +92 -0
- package/.gemini/skills/production-scheduling/SKILL.md +238 -0
- package/.gemini/skills/project-flow-ops/SKILL.md +111 -0
- package/.gemini/skills/prompt-optimizer/SKILL.md +397 -0
- package/.gemini/skills/python-patterns/SKILL.md +750 -0
- package/.gemini/skills/python-testing/SKILL.md +816 -0
- package/.gemini/skills/pytorch-patterns/SKILL.md +396 -0
- package/.gemini/skills/quality-nonconformance/SKILL.md +260 -0
- package/.gemini/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.gemini/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.gemini/skills/remotion-video-creation/SKILL.md +43 -0
- package/.gemini/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.gemini/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.gemini/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.gemini/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.gemini/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.gemini/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.gemini/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.gemini/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.gemini/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.gemini/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.gemini/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.gemini/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.gemini/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.gemini/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.gemini/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.gemini/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.gemini/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.gemini/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.gemini/skills/remotion-video-creation/rules/images.md +130 -0
- package/.gemini/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.gemini/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.gemini/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.gemini/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.gemini/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.gemini/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.gemini/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.gemini/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.gemini/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.gemini/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.gemini/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.gemini/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.gemini/skills/repo-scan/SKILL.md +78 -0
- package/.gemini/skills/research-ops/SKILL.md +112 -0
- package/.gemini/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.gemini/skills/rules-distill/SKILL.md +264 -0
- package/.gemini/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.gemini/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.gemini/skills/rust-patterns/SKILL.md +499 -0
- package/.gemini/skills/rust-testing/SKILL.md +500 -0
- package/.gemini/skills/safety-guard/SKILL.md +75 -0
- package/.gemini/skills/santa-method/SKILL.md +306 -0
- package/.gemini/skills/search-first/SKILL.md +161 -0
- package/.gemini/skills/security-bounty-hunter/SKILL.md +99 -0
- package/.gemini/skills/security-review/SKILL.md +495 -0
- package/.gemini/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.gemini/skills/security-scan/SKILL.md +165 -0
- package/.gemini/skills/self-evolving-memory/SKILL.md +175 -0
- package/.gemini/skills/seo/SKILL.md +154 -0
- package/.gemini/skills/session-replay/SKILL.md +199 -0
- package/.gemini/skills/skill-comply/SKILL.md +58 -0
- package/.gemini/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/.gemini/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/.gemini/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/.gemini/skills/skill-comply/prompts/classifier.md +24 -0
- package/.gemini/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/.gemini/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/.gemini/skills/skill-comply/pyproject.toml +15 -0
- package/.gemini/skills/skill-comply/scripts/__init__.py +0 -0
- package/.gemini/skills/skill-comply/scripts/classifier.py +85 -0
- package/.gemini/skills/skill-comply/scripts/grader.py +122 -0
- package/.gemini/skills/skill-comply/scripts/parser.py +107 -0
- package/.gemini/skills/skill-comply/scripts/report.py +170 -0
- package/.gemini/skills/skill-comply/scripts/run.py +127 -0
- package/.gemini/skills/skill-comply/scripts/runner.py +161 -0
- package/.gemini/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/.gemini/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/.gemini/skills/skill-comply/scripts/utils.py +13 -0
- package/.gemini/skills/skill-stocktake/SKILL.md +193 -0
- package/.gemini/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.gemini/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.gemini/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.gemini/skills/smart-debug/SKILL.md +241 -0
- package/.gemini/skills/social-graph-ranker/SKILL.md +154 -0
- package/.gemini/skills/springboot-patterns/SKILL.md +314 -0
- package/.gemini/skills/springboot-security/SKILL.md +272 -0
- package/.gemini/skills/springboot-tdd/SKILL.md +158 -0
- package/.gemini/skills/springboot-verification/SKILL.md +231 -0
- package/.gemini/skills/strategic-compact/SKILL.md +131 -0
- package/.gemini/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.gemini/skills/supply-chain-verification/SKILL.md +201 -0
- package/.gemini/skills/swarm-orchestrator/SKILL.md +177 -0
- package/.gemini/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.gemini/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.gemini/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.gemini/skills/swiftui-patterns/SKILL.md +259 -0
- package/.gemini/skills/tdd-workflow/SKILL.md +463 -0
- package/.gemini/skills/team-builder/SKILL.md +168 -0
- package/.gemini/skills/terminal-ops/SKILL.md +109 -0
- package/.gemini/skills/terse-mode/SKILL.md +97 -0
- package/.gemini/skills/token-budget-advisor/SKILL.md +133 -0
- package/.gemini/skills/ui-demo/SKILL.md +465 -0
- package/.gemini/skills/unified-notifications-ops/SKILL.md +187 -0
- package/.gemini/skills/verification-loop/SKILL.md +126 -0
- package/.gemini/skills/video-editing/SKILL.md +310 -0
- package/.gemini/skills/videodb/SKILL.md +374 -0
- package/.gemini/skills/videodb/reference/api-reference.md +550 -0
- package/.gemini/skills/videodb/reference/capture-reference.md +407 -0
- package/.gemini/skills/videodb/reference/capture.md +101 -0
- package/.gemini/skills/videodb/reference/editor.md +443 -0
- package/.gemini/skills/videodb/reference/generative.md +331 -0
- package/.gemini/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.gemini/skills/videodb/reference/rtstream.md +65 -0
- package/.gemini/skills/videodb/reference/search.md +230 -0
- package/.gemini/skills/videodb/reference/streaming.md +406 -0
- package/.gemini/skills/videodb/reference/use-cases.md +118 -0
- package/.gemini/skills/videodb/scripts/ws_listener.py +282 -0
- package/.gemini/skills/visa-doc-translate/README.md +86 -0
- package/.gemini/skills/visa-doc-translate/SKILL.md +117 -0
- package/.gemini/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.gemini/skills/x-api/SKILL.md +230 -0
- package/.kimi/agents/api-guardian.md +279 -0
- package/.kimi/agents/architect.md +211 -0
- package/.kimi/agents/backdoor-hunter.md +260 -0
- package/.kimi/agents/build-error-resolver.md +114 -0
- package/.kimi/agents/chaos-engineer.md +251 -0
- package/.kimi/agents/chief-of-staff.md +151 -0
- package/.kimi/agents/code-architect.md +71 -0
- package/.kimi/agents/code-explorer.md +69 -0
- package/.kimi/agents/code-reviewer.md +258 -0
- package/.kimi/agents/code-simplifier.md +47 -0
- package/.kimi/agents/code-stealer-detector.md +228 -0
- package/.kimi/agents/comment-analyzer.md +45 -0
- package/.kimi/agents/conversation-analyzer.md +52 -0
- package/.kimi/agents/cpp-build-resolver.md +90 -0
- package/.kimi/agents/cpp-reviewer.md +72 -0
- package/.kimi/agents/csharp-reviewer.md +101 -0
- package/.kimi/agents/dart-build-resolver.md +201 -0
- package/.kimi/agents/database-reviewer.md +91 -0
- package/.kimi/agents/debug-detective.md +410 -0
- package/.kimi/agents/dependency-doctor.md +121 -0
- package/.kimi/agents/doc-updater.md +107 -0
- package/.kimi/agents/docs-lookup.md +68 -0
- package/.kimi/agents/e2e-runner.md +107 -0
- package/.kimi/agents/env-debugger.md +154 -0
- package/.kimi/agents/flake-hunter.md +142 -0
- package/.kimi/agents/flutter-reviewer.md +243 -0
- package/.kimi/agents/gan-evaluator.md +209 -0
- package/.kimi/agents/gan-generator.md +131 -0
- package/.kimi/agents/gan-planner.md +99 -0
- package/.kimi/agents/git-rescue.md +133 -0
- package/.kimi/agents/go-build-resolver.md +94 -0
- package/.kimi/agents/go-reviewer.md +76 -0
- package/.kimi/agents/harness-optimizer.md +35 -0
- package/.kimi/agents/healthcare-reviewer.md +83 -0
- package/.kimi/agents/image-architect.md +190 -0
- package/.kimi/agents/incident-commander.md +228 -0
- package/.kimi/agents/jailbreak-tester.md +222 -0
- package/.kimi/agents/java-build-resolver.md +153 -0
- package/.kimi/agents/java-reviewer.md +92 -0
- package/.kimi/agents/kodelyth-advisor.md +172 -0
- package/.kimi/agents/kodelyth-memory.md +87 -0
- package/.kimi/agents/kotlin-build-resolver.md +118 -0
- package/.kimi/agents/kotlin-reviewer.md +159 -0
- package/.kimi/agents/license-violation-finder.md +212 -0
- package/.kimi/agents/load-tester.md +284 -0
- package/.kimi/agents/loop-operator.md +36 -0
- package/.kimi/agents/migration-guide.md +369 -0
- package/.kimi/agents/opensource-forker.md +198 -0
- package/.kimi/agents/opensource-packager.md +249 -0
- package/.kimi/agents/opensource-sanitizer.md +188 -0
- package/.kimi/agents/pair-programmer.md +261 -0
- package/.kimi/agents/performance-optimizer.md +446 -0
- package/.kimi/agents/planner.md +212 -0
- package/.kimi/agents/pr-test-analyzer.md +45 -0
- package/.kimi/agents/prompt-injection-hunter.md +126 -0
- package/.kimi/agents/python-reviewer.md +98 -0
- package/.kimi/agents/pytorch-build-resolver.md +120 -0
- package/.kimi/agents/refactor-cleaner.md +85 -0
- package/.kimi/agents/release-captain.md +226 -0
- package/.kimi/agents/rust-build-resolver.md +148 -0
- package/.kimi/agents/rust-reviewer.md +94 -0
- package/.kimi/agents/secret-hunter.md +209 -0
- package/.kimi/agents/security-reviewer.md +166 -0
- package/.kimi/agents/seo-specialist.md +62 -0
- package/.kimi/agents/silent-failure-hunter.md +50 -0
- package/.kimi/agents/supply-chain-auditor.md +195 -0
- package/.kimi/agents/tdd-guide.md +91 -0
- package/.kimi/agents/type-design-analyzer.md +41 -0
- package/.kimi/agents/typescript-reviewer.md +112 -0
- package/.kimi/agents/ux-reviewer.md +483 -0
- package/.kimi/commands/agent-sort.md +23 -0
- package/.kimi/commands/arena.md +136 -0
- package/.kimi/commands/aside.md +164 -0
- package/.kimi/commands/build-fix.md +66 -0
- package/.kimi/commands/checkpoint.md +79 -0
- package/.kimi/commands/claw.md +23 -0
- package/.kimi/commands/code-review.md +289 -0
- package/.kimi/commands/context-budget.md +23 -0
- package/.kimi/commands/cpp-build.md +173 -0
- package/.kimi/commands/cpp-review.md +132 -0
- package/.kimi/commands/cpp-test.md +251 -0
- package/.kimi/commands/dashboard.md +67 -0
- package/.kimi/commands/debug-blitz.md +70 -0
- package/.kimi/commands/devfleet.md +23 -0
- package/.kimi/commands/devil-mode.md +121 -0
- package/.kimi/commands/docs.md +23 -0
- package/.kimi/commands/doctor.md +75 -0
- package/.kimi/commands/e2e.md +268 -0
- package/.kimi/commands/eval.md +23 -0
- package/.kimi/commands/evil-mode.md +106 -0
- package/.kimi/commands/evolve.md +178 -0
- package/.kimi/commands/feature-dev.md +49 -0
- package/.kimi/commands/flutter-build.md +164 -0
- package/.kimi/commands/flutter-review.md +116 -0
- package/.kimi/commands/flutter-test.md +144 -0
- package/.kimi/commands/gan-build.md +104 -0
- package/.kimi/commands/gan-design.md +40 -0
- package/.kimi/commands/go-build.md +183 -0
- package/.kimi/commands/go-review.md +148 -0
- package/.kimi/commands/go-test.md +268 -0
- package/.kimi/commands/god-mode.md +85 -0
- package/.kimi/commands/gradle-build.md +70 -0
- package/.kimi/commands/harness-audit.md +77 -0
- package/.kimi/commands/hookify-configure.md +14 -0
- package/.kimi/commands/hookify-help.md +46 -0
- package/.kimi/commands/hookify-list.md +21 -0
- package/.kimi/commands/hookify.md +50 -0
- package/.kimi/commands/immune.md +89 -0
- package/.kimi/commands/instinct-export.md +66 -0
- package/.kimi/commands/instinct-import.md +114 -0
- package/.kimi/commands/instinct-status.md +59 -0
- package/.kimi/commands/jira.md +106 -0
- package/.kimi/commands/kotlin-build.md +174 -0
- package/.kimi/commands/kotlin-review.md +140 -0
- package/.kimi/commands/kotlin-test.md +312 -0
- package/.kimi/commands/learn-eval.md +116 -0
- package/.kimi/commands/learn.md +74 -0
- package/.kimi/commands/lessons.md +92 -0
- package/.kimi/commands/loop-start.md +37 -0
- package/.kimi/commands/loop-status.md +28 -0
- package/.kimi/commands/memory-evolve.md +71 -0
- package/.kimi/commands/memory.md +62 -0
- package/.kimi/commands/model-route.md +31 -0
- package/.kimi/commands/multi-backend.md +163 -0
- package/.kimi/commands/multi-execute.md +320 -0
- package/.kimi/commands/multi-frontend.md +163 -0
- package/.kimi/commands/multi-plan.md +273 -0
- package/.kimi/commands/multi-workflow.md +196 -0
- package/.kimi/commands/onboard.md +72 -0
- package/.kimi/commands/orchestrate.md +135 -0
- package/.kimi/commands/plan.md +117 -0
- package/.kimi/commands/pm2.md +277 -0
- package/.kimi/commands/pre-release.md +66 -0
- package/.kimi/commands/project-launch.md +91 -0
- package/.kimi/commands/projects.md +39 -0
- package/.kimi/commands/promote.md +41 -0
- package/.kimi/commands/prompt-optimize.md +23 -0
- package/.kimi/commands/prp-commit.md +112 -0
- package/.kimi/commands/prp-implement.md +385 -0
- package/.kimi/commands/prp-plan.md +502 -0
- package/.kimi/commands/prp-pr.md +184 -0
- package/.kimi/commands/prp-prd.md +447 -0
- package/.kimi/commands/prune.md +31 -0
- package/.kimi/commands/python-review.md +297 -0
- package/.kimi/commands/quality-gate.md +33 -0
- package/.kimi/commands/refactor-clean.md +84 -0
- package/.kimi/commands/refactor-sprint.md +77 -0
- package/.kimi/commands/replay.md +61 -0
- package/.kimi/commands/resume-session.md +156 -0
- package/.kimi/commands/review-pr.md +37 -0
- package/.kimi/commands/route-model.md +48 -0
- package/.kimi/commands/rules-distill.md +20 -0
- package/.kimi/commands/rust-build.md +187 -0
- package/.kimi/commands/rust-review.md +142 -0
- package/.kimi/commands/rust-test.md +308 -0
- package/.kimi/commands/santa-loop.md +175 -0
- package/.kimi/commands/save-session.md +275 -0
- package/.kimi/commands/security-audit.md +66 -0
- package/.kimi/commands/sessions.md +333 -0
- package/.kimi/commands/setup-pm.md +80 -0
- package/.kimi/commands/skill-create.md +174 -0
- package/.kimi/commands/skill-health.md +54 -0
- package/.kimi/commands/swarm.md +68 -0
- package/.kimi/commands/tdd.md +231 -0
- package/.kimi/commands/team-review.md +107 -0
- package/.kimi/commands/terse-compress.md +78 -0
- package/.kimi/commands/terse.md +40 -0
- package/.kimi/commands/test-coverage.md +73 -0
- package/.kimi/commands/update-codemaps.md +76 -0
- package/.kimi/commands/update-docs.md +88 -0
- package/.kimi/commands/update.md +92 -0
- package/.kimi/commands/verify-supply-chain.md +59 -0
- package/.kimi/commands/verify.md +23 -0
- package/.kimi/rules/README.md +108 -0
- package/.kimi/rules/agent-intent-routing.md +832 -0
- package/.kimi/rules/agents.md +50 -0
- package/.kimi/rules/code-review.md +124 -0
- package/.kimi/rules/coding-style.md +41 -0
- package/.kimi/rules/cost-aware-model-routing.md +152 -0
- package/.kimi/rules/design-quality.md +63 -0
- package/.kimi/rules/development-workflow.md +44 -0
- package/.kimi/rules/git-workflow.md +24 -0
- package/.kimi/rules/hooks.md +23 -0
- package/.kimi/rules/memory-protocol.md +87 -0
- package/.kimi/rules/patterns.md +71 -0
- package/.kimi/rules/performance.md +55 -0
- package/.kimi/rules/security.md +56 -0
- package/.kimi/rules/self-improvement-workflow.md +141 -0
- package/.kimi/rules/shell-portability.md +70 -0
- package/.kimi/rules/testing.md +65 -0
- package/.kimi/skills/agent-eval/SKILL.md +145 -0
- package/.kimi/skills/agent-handoff/SKILL.md +184 -0
- package/.kimi/skills/agent-harness-construction/SKILL.md +73 -0
- package/.kimi/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/.kimi/skills/agent-payment-x402/SKILL.md +178 -0
- package/.kimi/skills/agent-sort/SKILL.md +215 -0
- package/.kimi/skills/agentic-engineering/SKILL.md +63 -0
- package/.kimi/skills/ai-first-engineering/SKILL.md +51 -0
- package/.kimi/skills/ai-regression-testing/SKILL.md +385 -0
- package/.kimi/skills/android-clean-architecture/SKILL.md +339 -0
- package/.kimi/skills/api-connector-builder/SKILL.md +121 -0
- package/.kimi/skills/api-design/SKILL.md +523 -0
- package/.kimi/skills/architecture-decision-records/SKILL.md +179 -0
- package/.kimi/skills/article-writing/SKILL.md +79 -0
- package/.kimi/skills/automation-audit-ops/SKILL.md +142 -0
- package/.kimi/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.kimi/skills/autonomous-loops/SKILL.md +610 -0
- package/.kimi/skills/backend-patterns/SKILL.md +598 -0
- package/.kimi/skills/benchmark/SKILL.md +93 -0
- package/.kimi/skills/blueprint/SKILL.md +105 -0
- package/.kimi/skills/brand-voice/SKILL.md +97 -0
- package/.kimi/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.kimi/skills/browser-qa/SKILL.md +87 -0
- package/.kimi/skills/bun-runtime/SKILL.md +84 -0
- package/.kimi/skills/canary-watch/SKILL.md +99 -0
- package/.kimi/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.kimi/skills/ck/SKILL.md +147 -0
- package/.kimi/skills/ck/commands/forget.mjs +44 -0
- package/.kimi/skills/ck/commands/info.mjs +24 -0
- package/.kimi/skills/ck/commands/init.mjs +143 -0
- package/.kimi/skills/ck/commands/list.mjs +40 -0
- package/.kimi/skills/ck/commands/migrate.mjs +202 -0
- package/.kimi/skills/ck/commands/resume.mjs +36 -0
- package/.kimi/skills/ck/commands/save.mjs +210 -0
- package/.kimi/skills/ck/commands/shared.mjs +387 -0
- package/.kimi/skills/ck/hooks/session-start.mjs +224 -0
- package/.kimi/skills/claude-api/SKILL.md +337 -0
- package/.kimi/skills/claude-devfleet/SKILL.md +103 -0
- package/.kimi/skills/click-path-audit/SKILL.md +244 -0
- package/.kimi/skills/clickhouse-io/SKILL.md +439 -0
- package/.kimi/skills/code-tour/SKILL.md +236 -0
- package/.kimi/skills/codebase-onboarding/SKILL.md +233 -0
- package/.kimi/skills/coding-standards/SKILL.md +549 -0
- package/.kimi/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.kimi/skills/configure-ecc/SKILL.md +367 -0
- package/.kimi/skills/connections-optimizer/SKILL.md +189 -0
- package/.kimi/skills/content-engine/SKILL.md +131 -0
- package/.kimi/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.kimi/skills/context-budget/SKILL.md +135 -0
- package/.kimi/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.kimi/skills/continuous-learning/SKILL.md +123 -0
- package/.kimi/skills/continuous-learning/config.json +18 -0
- package/.kimi/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.kimi/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.kimi/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.kimi/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.kimi/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.kimi/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.kimi/skills/continuous-learning-v2/config.json +8 -0
- package/.kimi/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.kimi/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.kimi/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.kimi/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/.kimi/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.kimi/skills/cost-aware-model-routing/SKILL.md +153 -0
- package/.kimi/skills/council/SKILL.md +203 -0
- package/.kimi/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.kimi/skills/cpp-testing/SKILL.md +324 -0
- package/.kimi/skills/crosspost/SKILL.md +111 -0
- package/.kimi/skills/csharp-testing/SKILL.md +321 -0
- package/.kimi/skills/customer-billing-ops/SKILL.md +140 -0
- package/.kimi/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.kimi/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.kimi/skills/dashboard-builder/SKILL.md +109 -0
- package/.kimi/skills/data-scraper-agent/SKILL.md +764 -0
- package/.kimi/skills/database-migrations/SKILL.md +429 -0
- package/.kimi/skills/deep-research/SKILL.md +155 -0
- package/.kimi/skills/defi-amm-security/SKILL.md +160 -0
- package/.kimi/skills/deployment-patterns/SKILL.md +427 -0
- package/.kimi/skills/design-system/SKILL.md +82 -0
- package/.kimi/skills/django-patterns/SKILL.md +734 -0
- package/.kimi/skills/django-security/SKILL.md +593 -0
- package/.kimi/skills/django-tdd/SKILL.md +729 -0
- package/.kimi/skills/django-verification/SKILL.md +469 -0
- package/.kimi/skills/dmux-workflows/SKILL.md +191 -0
- package/.kimi/skills/docker-patterns/SKILL.md +364 -0
- package/.kimi/skills/documentation-lookup/SKILL.md +90 -0
- package/.kimi/skills/dotnet-patterns/SKILL.md +321 -0
- package/.kimi/skills/e2e-testing/SKILL.md +326 -0
- package/.kimi/skills/ecc-token-savings/SKILL.md +106 -0
- package/.kimi/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/.kimi/skills/email-ops/SKILL.md +121 -0
- package/.kimi/skills/energy-procurement/SKILL.md +228 -0
- package/.kimi/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.kimi/skills/eval-harness/SKILL.md +270 -0
- package/.kimi/skills/evm-token-decimals/SKILL.md +130 -0
- package/.kimi/skills/exa-search/SKILL.md +103 -0
- package/.kimi/skills/fal-ai-media/SKILL.md +284 -0
- package/.kimi/skills/finance-billing-ops/SKILL.md +127 -0
- package/.kimi/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.kimi/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.kimi/skills/frontend-design/SKILL.md +145 -0
- package/.kimi/skills/frontend-patterns/SKILL.md +642 -0
- package/.kimi/skills/frontend-slides/SKILL.md +184 -0
- package/.kimi/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.kimi/skills/gan-style-harness/SKILL.md +278 -0
- package/.kimi/skills/git-mastery/SKILL.md +366 -0
- package/.kimi/skills/git-workflow/SKILL.md +715 -0
- package/.kimi/skills/github-ops/SKILL.md +144 -0
- package/.kimi/skills/golang-patterns/SKILL.md +674 -0
- package/.kimi/skills/golang-testing/SKILL.md +720 -0
- package/.kimi/skills/google-workspace-ops/SKILL.md +95 -0
- package/.kimi/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.kimi/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.kimi/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.kimi/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.kimi/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.kimi/skills/hipaa-compliance/SKILL.md +78 -0
- package/.kimi/skills/hookify-rules/SKILL.md +128 -0
- package/.kimi/skills/intent-routing/SKILL.md +134 -0
- package/.kimi/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.kimi/skills/investor-materials/SKILL.md +96 -0
- package/.kimi/skills/investor-outreach/SKILL.md +91 -0
- package/.kimi/skills/iterative-retrieval/SKILL.md +211 -0
- package/.kimi/skills/java-coding-standards/SKILL.md +147 -0
- package/.kimi/skills/jira-integration/SKILL.md +293 -0
- package/.kimi/skills/jpa-patterns/SKILL.md +151 -0
- package/.kimi/skills/knowledge-ops/SKILL.md +154 -0
- package/.kimi/skills/kodelyth-memory/SKILL.md +136 -0
- package/.kimi/skills/kodelyth-quickstart/SKILL.md +214 -0
- package/.kimi/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.kimi/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.kimi/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.kimi/skills/kotlin-patterns/SKILL.md +711 -0
- package/.kimi/skills/kotlin-testing/SKILL.md +824 -0
- package/.kimi/skills/laravel-patterns/SKILL.md +415 -0
- package/.kimi/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.kimi/skills/laravel-security/SKILL.md +285 -0
- package/.kimi/skills/laravel-tdd/SKILL.md +283 -0
- package/.kimi/skills/laravel-verification/SKILL.md +179 -0
- package/.kimi/skills/lead-intelligence/SKILL.md +321 -0
- package/.kimi/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.kimi/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.kimi/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.kimi/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.kimi/skills/liquid-glass-design/SKILL.md +279 -0
- package/.kimi/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/.kimi/skills/logistics-exception-management/SKILL.md +222 -0
- package/.kimi/skills/manim-video/SKILL.md +89 -0
- package/.kimi/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/.kimi/skills/market-research/SKILL.md +75 -0
- package/.kimi/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.kimi/skills/messages-ops/SKILL.md +104 -0
- package/.kimi/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.kimi/skills/nestjs-patterns/SKILL.md +230 -0
- package/.kimi/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.kimi/skills/nodejs-keccak256/SKILL.md +102 -0
- package/.kimi/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.kimi/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.kimi/skills/observability/SKILL.md +390 -0
- package/.kimi/skills/observability-dashboard/SKILL.md +119 -0
- package/.kimi/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.kimi/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.kimi/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.kimi/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.kimi/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.kimi/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.kimi/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.kimi/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.kimi/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.kimi/skills/opensource-pipeline/SKILL.md +255 -0
- package/.kimi/skills/perl-patterns/SKILL.md +504 -0
- package/.kimi/skills/perl-security/SKILL.md +503 -0
- package/.kimi/skills/perl-testing/SKILL.md +475 -0
- package/.kimi/skills/plankton-code-quality/SKILL.md +236 -0
- package/.kimi/skills/postgres-patterns/SKILL.md +147 -0
- package/.kimi/skills/product-capability/SKILL.md +141 -0
- package/.kimi/skills/product-lens/SKILL.md +92 -0
- package/.kimi/skills/production-scheduling/SKILL.md +238 -0
- package/.kimi/skills/project-flow-ops/SKILL.md +111 -0
- package/.kimi/skills/prompt-optimizer/SKILL.md +397 -0
- package/.kimi/skills/python-patterns/SKILL.md +750 -0
- package/.kimi/skills/python-testing/SKILL.md +816 -0
- package/.kimi/skills/pytorch-patterns/SKILL.md +396 -0
- package/.kimi/skills/quality-nonconformance/SKILL.md +260 -0
- package/.kimi/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.kimi/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.kimi/skills/remotion-video-creation/SKILL.md +43 -0
- package/.kimi/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.kimi/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.kimi/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.kimi/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.kimi/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.kimi/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.kimi/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.kimi/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.kimi/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.kimi/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.kimi/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.kimi/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.kimi/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.kimi/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.kimi/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.kimi/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.kimi/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.kimi/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.kimi/skills/remotion-video-creation/rules/images.md +130 -0
- package/.kimi/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.kimi/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.kimi/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.kimi/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.kimi/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.kimi/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.kimi/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.kimi/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.kimi/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.kimi/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.kimi/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.kimi/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.kimi/skills/repo-scan/SKILL.md +78 -0
- package/.kimi/skills/research-ops/SKILL.md +112 -0
- package/.kimi/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.kimi/skills/rules-distill/SKILL.md +264 -0
- package/.kimi/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.kimi/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.kimi/skills/rust-patterns/SKILL.md +499 -0
- package/.kimi/skills/rust-testing/SKILL.md +500 -0
- package/.kimi/skills/safety-guard/SKILL.md +75 -0
- package/.kimi/skills/santa-method/SKILL.md +306 -0
- package/.kimi/skills/search-first/SKILL.md +161 -0
- package/.kimi/skills/security-bounty-hunter/SKILL.md +99 -0
- package/.kimi/skills/security-review/SKILL.md +495 -0
- package/.kimi/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.kimi/skills/security-scan/SKILL.md +165 -0
- package/.kimi/skills/self-evolving-memory/SKILL.md +175 -0
- package/.kimi/skills/seo/SKILL.md +154 -0
- package/.kimi/skills/session-replay/SKILL.md +199 -0
- package/.kimi/skills/skill-comply/SKILL.md +58 -0
- package/.kimi/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/.kimi/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/.kimi/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/.kimi/skills/skill-comply/prompts/classifier.md +24 -0
- package/.kimi/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/.kimi/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/.kimi/skills/skill-comply/pyproject.toml +15 -0
- package/.kimi/skills/skill-comply/scripts/__init__.py +0 -0
- package/.kimi/skills/skill-comply/scripts/classifier.py +85 -0
- package/.kimi/skills/skill-comply/scripts/grader.py +122 -0
- package/.kimi/skills/skill-comply/scripts/parser.py +107 -0
- package/.kimi/skills/skill-comply/scripts/report.py +170 -0
- package/.kimi/skills/skill-comply/scripts/run.py +127 -0
- package/.kimi/skills/skill-comply/scripts/runner.py +161 -0
- package/.kimi/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/.kimi/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/.kimi/skills/skill-comply/scripts/utils.py +13 -0
- package/.kimi/skills/skill-stocktake/SKILL.md +193 -0
- package/.kimi/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.kimi/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.kimi/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.kimi/skills/smart-debug/SKILL.md +241 -0
- package/.kimi/skills/social-graph-ranker/SKILL.md +154 -0
- package/.kimi/skills/springboot-patterns/SKILL.md +314 -0
- package/.kimi/skills/springboot-security/SKILL.md +272 -0
- package/.kimi/skills/springboot-tdd/SKILL.md +158 -0
- package/.kimi/skills/springboot-verification/SKILL.md +231 -0
- package/.kimi/skills/strategic-compact/SKILL.md +131 -0
- package/.kimi/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.kimi/skills/supply-chain-verification/SKILL.md +201 -0
- package/.kimi/skills/swarm-orchestrator/SKILL.md +177 -0
- package/.kimi/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.kimi/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.kimi/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.kimi/skills/swiftui-patterns/SKILL.md +259 -0
- package/.kimi/skills/tdd-workflow/SKILL.md +463 -0
- package/.kimi/skills/team-builder/SKILL.md +168 -0
- package/.kimi/skills/terminal-ops/SKILL.md +109 -0
- package/.kimi/skills/terse-mode/SKILL.md +97 -0
- package/.kimi/skills/token-budget-advisor/SKILL.md +133 -0
- package/.kimi/skills/ui-demo/SKILL.md +465 -0
- package/.kimi/skills/unified-notifications-ops/SKILL.md +187 -0
- package/.kimi/skills/verification-loop/SKILL.md +126 -0
- package/.kimi/skills/video-editing/SKILL.md +310 -0
- package/.kimi/skills/videodb/SKILL.md +374 -0
- package/.kimi/skills/videodb/reference/api-reference.md +550 -0
- package/.kimi/skills/videodb/reference/capture-reference.md +407 -0
- package/.kimi/skills/videodb/reference/capture.md +101 -0
- package/.kimi/skills/videodb/reference/editor.md +443 -0
- package/.kimi/skills/videodb/reference/generative.md +331 -0
- package/.kimi/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.kimi/skills/videodb/reference/rtstream.md +65 -0
- package/.kimi/skills/videodb/reference/search.md +230 -0
- package/.kimi/skills/videodb/reference/streaming.md +406 -0
- package/.kimi/skills/videodb/reference/use-cases.md +118 -0
- package/.kimi/skills/videodb/scripts/ws_listener.py +282 -0
- package/.kimi/skills/visa-doc-translate/README.md +86 -0
- package/.kimi/skills/visa-doc-translate/SKILL.md +117 -0
- package/.kimi/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.kimi/skills/x-api/SKILL.md +230 -0
- package/.opencode/rules/README.md +108 -0
- package/.opencode/rules/agent-intent-routing.md +832 -0
- package/.opencode/rules/agents.md +50 -0
- package/.opencode/rules/code-review.md +124 -0
- package/.opencode/rules/coding-style.md +41 -0
- package/.opencode/rules/cost-aware-model-routing.md +152 -0
- package/.opencode/rules/design-quality.md +63 -0
- package/.opencode/rules/development-workflow.md +44 -0
- package/.opencode/rules/git-workflow.md +24 -0
- package/.opencode/rules/hooks.md +23 -0
- package/.opencode/rules/memory-protocol.md +87 -0
- package/.opencode/rules/patterns.md +71 -0
- package/.opencode/rules/performance.md +55 -0
- package/.opencode/rules/security.md +56 -0
- package/.opencode/rules/self-improvement-workflow.md +141 -0
- package/.opencode/rules/shell-portability.md +70 -0
- package/.opencode/rules/testing.md +65 -0
- package/.roo/agents/api-guardian.md +279 -0
- package/.roo/agents/architect.md +211 -0
- package/.roo/agents/backdoor-hunter.md +260 -0
- package/.roo/agents/build-error-resolver.md +114 -0
- package/.roo/agents/chaos-engineer.md +251 -0
- package/.roo/agents/chief-of-staff.md +151 -0
- package/.roo/agents/code-architect.md +71 -0
- package/.roo/agents/code-explorer.md +69 -0
- package/.roo/agents/code-reviewer.md +258 -0
- package/.roo/agents/code-simplifier.md +47 -0
- package/.roo/agents/code-stealer-detector.md +228 -0
- package/.roo/agents/comment-analyzer.md +45 -0
- package/.roo/agents/conversation-analyzer.md +52 -0
- package/.roo/agents/cpp-build-resolver.md +90 -0
- package/.roo/agents/cpp-reviewer.md +72 -0
- package/.roo/agents/csharp-reviewer.md +101 -0
- package/.roo/agents/dart-build-resolver.md +201 -0
- package/.roo/agents/database-reviewer.md +91 -0
- package/.roo/agents/debug-detective.md +410 -0
- package/.roo/agents/dependency-doctor.md +121 -0
- package/.roo/agents/doc-updater.md +107 -0
- package/.roo/agents/docs-lookup.md +68 -0
- package/.roo/agents/e2e-runner.md +107 -0
- package/.roo/agents/env-debugger.md +154 -0
- package/.roo/agents/flake-hunter.md +142 -0
- package/.roo/agents/flutter-reviewer.md +243 -0
- package/.roo/agents/gan-evaluator.md +209 -0
- package/.roo/agents/gan-generator.md +131 -0
- package/.roo/agents/gan-planner.md +99 -0
- package/.roo/agents/git-rescue.md +133 -0
- package/.roo/agents/go-build-resolver.md +94 -0
- package/.roo/agents/go-reviewer.md +76 -0
- package/.roo/agents/harness-optimizer.md +35 -0
- package/.roo/agents/healthcare-reviewer.md +83 -0
- package/.roo/agents/image-architect.md +190 -0
- package/.roo/agents/incident-commander.md +228 -0
- package/.roo/agents/jailbreak-tester.md +222 -0
- package/.roo/agents/java-build-resolver.md +153 -0
- package/.roo/agents/java-reviewer.md +92 -0
- package/.roo/agents/kodelyth-advisor.md +172 -0
- package/.roo/agents/kodelyth-memory.md +87 -0
- package/.roo/agents/kotlin-build-resolver.md +118 -0
- package/.roo/agents/kotlin-reviewer.md +159 -0
- package/.roo/agents/license-violation-finder.md +212 -0
- package/.roo/agents/load-tester.md +284 -0
- package/.roo/agents/loop-operator.md +36 -0
- package/.roo/agents/migration-guide.md +369 -0
- package/.roo/agents/opensource-forker.md +198 -0
- package/.roo/agents/opensource-packager.md +249 -0
- package/.roo/agents/opensource-sanitizer.md +188 -0
- package/.roo/agents/pair-programmer.md +261 -0
- package/.roo/agents/performance-optimizer.md +446 -0
- package/.roo/agents/planner.md +212 -0
- package/.roo/agents/pr-test-analyzer.md +45 -0
- package/.roo/agents/prompt-injection-hunter.md +126 -0
- package/.roo/agents/python-reviewer.md +98 -0
- package/.roo/agents/pytorch-build-resolver.md +120 -0
- package/.roo/agents/refactor-cleaner.md +85 -0
- package/.roo/agents/release-captain.md +226 -0
- package/.roo/agents/rust-build-resolver.md +148 -0
- package/.roo/agents/rust-reviewer.md +94 -0
- package/.roo/agents/secret-hunter.md +209 -0
- package/.roo/agents/security-reviewer.md +166 -0
- package/.roo/agents/seo-specialist.md +62 -0
- package/.roo/agents/silent-failure-hunter.md +50 -0
- package/.roo/agents/supply-chain-auditor.md +195 -0
- package/.roo/agents/tdd-guide.md +91 -0
- package/.roo/agents/type-design-analyzer.md +41 -0
- package/.roo/agents/typescript-reviewer.md +112 -0
- package/.roo/agents/ux-reviewer.md +483 -0
- package/.roo/commands/agent-sort.md +23 -0
- package/.roo/commands/arena.md +136 -0
- package/.roo/commands/aside.md +164 -0
- package/.roo/commands/build-fix.md +66 -0
- package/.roo/commands/checkpoint.md +79 -0
- package/.roo/commands/claw.md +23 -0
- package/.roo/commands/code-review.md +289 -0
- package/.roo/commands/context-budget.md +23 -0
- package/.roo/commands/cpp-build.md +173 -0
- package/.roo/commands/cpp-review.md +132 -0
- package/.roo/commands/cpp-test.md +251 -0
- package/.roo/commands/dashboard.md +67 -0
- package/.roo/commands/debug-blitz.md +70 -0
- package/.roo/commands/devfleet.md +23 -0
- package/.roo/commands/devil-mode.md +121 -0
- package/.roo/commands/docs.md +23 -0
- package/.roo/commands/doctor.md +75 -0
- package/.roo/commands/e2e.md +268 -0
- package/.roo/commands/eval.md +23 -0
- package/.roo/commands/evil-mode.md +106 -0
- package/.roo/commands/evolve.md +178 -0
- package/.roo/commands/feature-dev.md +49 -0
- package/.roo/commands/flutter-build.md +164 -0
- package/.roo/commands/flutter-review.md +116 -0
- package/.roo/commands/flutter-test.md +144 -0
- package/.roo/commands/gan-build.md +104 -0
- package/.roo/commands/gan-design.md +40 -0
- package/.roo/commands/go-build.md +183 -0
- package/.roo/commands/go-review.md +148 -0
- package/.roo/commands/go-test.md +268 -0
- package/.roo/commands/god-mode.md +85 -0
- package/.roo/commands/gradle-build.md +70 -0
- package/.roo/commands/harness-audit.md +77 -0
- package/.roo/commands/hookify-configure.md +14 -0
- package/.roo/commands/hookify-help.md +46 -0
- package/.roo/commands/hookify-list.md +21 -0
- package/.roo/commands/hookify.md +50 -0
- package/.roo/commands/immune.md +89 -0
- package/.roo/commands/instinct-export.md +66 -0
- package/.roo/commands/instinct-import.md +114 -0
- package/.roo/commands/instinct-status.md +59 -0
- package/.roo/commands/jira.md +106 -0
- package/.roo/commands/kotlin-build.md +174 -0
- package/.roo/commands/kotlin-review.md +140 -0
- package/.roo/commands/kotlin-test.md +312 -0
- package/.roo/commands/learn-eval.md +116 -0
- package/.roo/commands/learn.md +74 -0
- package/.roo/commands/lessons.md +92 -0
- package/.roo/commands/loop-start.md +37 -0
- package/.roo/commands/loop-status.md +28 -0
- package/.roo/commands/memory-evolve.md +71 -0
- package/.roo/commands/memory.md +62 -0
- package/.roo/commands/model-route.md +31 -0
- package/.roo/commands/multi-backend.md +163 -0
- package/.roo/commands/multi-execute.md +320 -0
- package/.roo/commands/multi-frontend.md +163 -0
- package/.roo/commands/multi-plan.md +273 -0
- package/.roo/commands/multi-workflow.md +196 -0
- package/.roo/commands/onboard.md +72 -0
- package/.roo/commands/orchestrate.md +135 -0
- package/.roo/commands/plan.md +117 -0
- package/.roo/commands/pm2.md +277 -0
- package/.roo/commands/pre-release.md +66 -0
- package/.roo/commands/project-launch.md +91 -0
- package/.roo/commands/projects.md +39 -0
- package/.roo/commands/promote.md +41 -0
- package/.roo/commands/prompt-optimize.md +23 -0
- package/.roo/commands/prp-commit.md +112 -0
- package/.roo/commands/prp-implement.md +385 -0
- package/.roo/commands/prp-plan.md +502 -0
- package/.roo/commands/prp-pr.md +184 -0
- package/.roo/commands/prp-prd.md +447 -0
- package/.roo/commands/prune.md +31 -0
- package/.roo/commands/python-review.md +297 -0
- package/.roo/commands/quality-gate.md +33 -0
- package/.roo/commands/refactor-clean.md +84 -0
- package/.roo/commands/refactor-sprint.md +77 -0
- package/.roo/commands/replay.md +61 -0
- package/.roo/commands/resume-session.md +156 -0
- package/.roo/commands/review-pr.md +37 -0
- package/.roo/commands/route-model.md +48 -0
- package/.roo/commands/rules-distill.md +20 -0
- package/.roo/commands/rust-build.md +187 -0
- package/.roo/commands/rust-review.md +142 -0
- package/.roo/commands/rust-test.md +308 -0
- package/.roo/commands/santa-loop.md +175 -0
- package/.roo/commands/save-session.md +275 -0
- package/.roo/commands/security-audit.md +66 -0
- package/.roo/commands/sessions.md +333 -0
- package/.roo/commands/setup-pm.md +80 -0
- package/.roo/commands/skill-create.md +174 -0
- package/.roo/commands/skill-health.md +54 -0
- package/.roo/commands/swarm.md +68 -0
- package/.roo/commands/tdd.md +231 -0
- package/.roo/commands/team-review.md +107 -0
- package/.roo/commands/terse-compress.md +78 -0
- package/.roo/commands/terse.md +40 -0
- package/.roo/commands/test-coverage.md +73 -0
- package/.roo/commands/update-codemaps.md +76 -0
- package/.roo/commands/update-docs.md +88 -0
- package/.roo/commands/update.md +92 -0
- package/.roo/commands/verify-supply-chain.md +59 -0
- package/.roo/commands/verify.md +23 -0
- package/.roo/rules/README.md +108 -0
- package/.roo/rules/agent-intent-routing.md +832 -0
- package/.roo/rules/agents.md +50 -0
- package/.roo/rules/code-review.md +124 -0
- package/.roo/rules/coding-style.md +41 -0
- package/.roo/rules/cost-aware-model-routing.md +152 -0
- package/.roo/rules/design-quality.md +63 -0
- package/.roo/rules/development-workflow.md +44 -0
- package/.roo/rules/git-workflow.md +24 -0
- package/.roo/rules/hooks.md +23 -0
- package/.roo/rules/memory-protocol.md +87 -0
- package/.roo/rules/patterns.md +71 -0
- package/.roo/rules/performance.md +55 -0
- package/.roo/rules/security.md +56 -0
- package/.roo/rules/self-improvement-workflow.md +141 -0
- package/.roo/rules/shell-portability.md +70 -0
- package/.roo/rules/testing.md +65 -0
- package/.roo/skills/agent-eval/SKILL.md +145 -0
- package/.roo/skills/agent-handoff/SKILL.md +184 -0
- package/.roo/skills/agent-harness-construction/SKILL.md +73 -0
- package/.roo/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/.roo/skills/agent-payment-x402/SKILL.md +178 -0
- package/.roo/skills/agent-sort/SKILL.md +215 -0
- package/.roo/skills/agentic-engineering/SKILL.md +63 -0
- package/.roo/skills/ai-first-engineering/SKILL.md +51 -0
- package/.roo/skills/ai-regression-testing/SKILL.md +385 -0
- package/.roo/skills/android-clean-architecture/SKILL.md +339 -0
- package/.roo/skills/api-connector-builder/SKILL.md +121 -0
- package/.roo/skills/api-design/SKILL.md +523 -0
- package/.roo/skills/architecture-decision-records/SKILL.md +179 -0
- package/.roo/skills/article-writing/SKILL.md +79 -0
- package/.roo/skills/automation-audit-ops/SKILL.md +142 -0
- package/.roo/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.roo/skills/autonomous-loops/SKILL.md +610 -0
- package/.roo/skills/backend-patterns/SKILL.md +598 -0
- package/.roo/skills/benchmark/SKILL.md +93 -0
- package/.roo/skills/blueprint/SKILL.md +105 -0
- package/.roo/skills/brand-voice/SKILL.md +97 -0
- package/.roo/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.roo/skills/browser-qa/SKILL.md +87 -0
- package/.roo/skills/bun-runtime/SKILL.md +84 -0
- package/.roo/skills/canary-watch/SKILL.md +99 -0
- package/.roo/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.roo/skills/ck/SKILL.md +147 -0
- package/.roo/skills/ck/commands/forget.mjs +44 -0
- package/.roo/skills/ck/commands/info.mjs +24 -0
- package/.roo/skills/ck/commands/init.mjs +143 -0
- package/.roo/skills/ck/commands/list.mjs +40 -0
- package/.roo/skills/ck/commands/migrate.mjs +202 -0
- package/.roo/skills/ck/commands/resume.mjs +36 -0
- package/.roo/skills/ck/commands/save.mjs +210 -0
- package/.roo/skills/ck/commands/shared.mjs +387 -0
- package/.roo/skills/ck/hooks/session-start.mjs +224 -0
- package/.roo/skills/claude-api/SKILL.md +337 -0
- package/.roo/skills/claude-devfleet/SKILL.md +103 -0
- package/.roo/skills/click-path-audit/SKILL.md +244 -0
- package/.roo/skills/clickhouse-io/SKILL.md +439 -0
- package/.roo/skills/code-tour/SKILL.md +236 -0
- package/.roo/skills/codebase-onboarding/SKILL.md +233 -0
- package/.roo/skills/coding-standards/SKILL.md +549 -0
- package/.roo/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.roo/skills/configure-ecc/SKILL.md +367 -0
- package/.roo/skills/connections-optimizer/SKILL.md +189 -0
- package/.roo/skills/content-engine/SKILL.md +131 -0
- package/.roo/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.roo/skills/context-budget/SKILL.md +135 -0
- package/.roo/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.roo/skills/continuous-learning/SKILL.md +123 -0
- package/.roo/skills/continuous-learning/config.json +18 -0
- package/.roo/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.roo/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.roo/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.roo/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.roo/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.roo/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.roo/skills/continuous-learning-v2/config.json +8 -0
- package/.roo/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.roo/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.roo/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.roo/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/.roo/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.roo/skills/cost-aware-model-routing/SKILL.md +153 -0
- package/.roo/skills/council/SKILL.md +203 -0
- package/.roo/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.roo/skills/cpp-testing/SKILL.md +324 -0
- package/.roo/skills/crosspost/SKILL.md +111 -0
- package/.roo/skills/csharp-testing/SKILL.md +321 -0
- package/.roo/skills/customer-billing-ops/SKILL.md +140 -0
- package/.roo/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.roo/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.roo/skills/dashboard-builder/SKILL.md +109 -0
- package/.roo/skills/data-scraper-agent/SKILL.md +764 -0
- package/.roo/skills/database-migrations/SKILL.md +429 -0
- package/.roo/skills/deep-research/SKILL.md +155 -0
- package/.roo/skills/defi-amm-security/SKILL.md +160 -0
- package/.roo/skills/deployment-patterns/SKILL.md +427 -0
- package/.roo/skills/design-system/SKILL.md +82 -0
- package/.roo/skills/django-patterns/SKILL.md +734 -0
- package/.roo/skills/django-security/SKILL.md +593 -0
- package/.roo/skills/django-tdd/SKILL.md +729 -0
- package/.roo/skills/django-verification/SKILL.md +469 -0
- package/.roo/skills/dmux-workflows/SKILL.md +191 -0
- package/.roo/skills/docker-patterns/SKILL.md +364 -0
- package/.roo/skills/documentation-lookup/SKILL.md +90 -0
- package/.roo/skills/dotnet-patterns/SKILL.md +321 -0
- package/.roo/skills/e2e-testing/SKILL.md +326 -0
- package/.roo/skills/ecc-token-savings/SKILL.md +106 -0
- package/.roo/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/.roo/skills/email-ops/SKILL.md +121 -0
- package/.roo/skills/energy-procurement/SKILL.md +228 -0
- package/.roo/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.roo/skills/eval-harness/SKILL.md +270 -0
- package/.roo/skills/evm-token-decimals/SKILL.md +130 -0
- package/.roo/skills/exa-search/SKILL.md +103 -0
- package/.roo/skills/fal-ai-media/SKILL.md +284 -0
- package/.roo/skills/finance-billing-ops/SKILL.md +127 -0
- package/.roo/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.roo/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.roo/skills/frontend-design/SKILL.md +145 -0
- package/.roo/skills/frontend-patterns/SKILL.md +642 -0
- package/.roo/skills/frontend-slides/SKILL.md +184 -0
- package/.roo/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/.roo/skills/gan-style-harness/SKILL.md +278 -0
- package/.roo/skills/git-mastery/SKILL.md +366 -0
- package/.roo/skills/git-workflow/SKILL.md +715 -0
- package/.roo/skills/github-ops/SKILL.md +144 -0
- package/.roo/skills/golang-patterns/SKILL.md +674 -0
- package/.roo/skills/golang-testing/SKILL.md +720 -0
- package/.roo/skills/google-workspace-ops/SKILL.md +95 -0
- package/.roo/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.roo/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.roo/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.roo/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.roo/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.roo/skills/hipaa-compliance/SKILL.md +78 -0
- package/.roo/skills/hookify-rules/SKILL.md +128 -0
- package/.roo/skills/intent-routing/SKILL.md +134 -0
- package/.roo/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.roo/skills/investor-materials/SKILL.md +96 -0
- package/.roo/skills/investor-outreach/SKILL.md +91 -0
- package/.roo/skills/iterative-retrieval/SKILL.md +211 -0
- package/.roo/skills/java-coding-standards/SKILL.md +147 -0
- package/.roo/skills/jira-integration/SKILL.md +293 -0
- package/.roo/skills/jpa-patterns/SKILL.md +151 -0
- package/.roo/skills/knowledge-ops/SKILL.md +154 -0
- package/.roo/skills/kodelyth-memory/SKILL.md +136 -0
- package/.roo/skills/kodelyth-quickstart/SKILL.md +214 -0
- package/.roo/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.roo/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.roo/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.roo/skills/kotlin-patterns/SKILL.md +711 -0
- package/.roo/skills/kotlin-testing/SKILL.md +824 -0
- package/.roo/skills/laravel-patterns/SKILL.md +415 -0
- package/.roo/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.roo/skills/laravel-security/SKILL.md +285 -0
- package/.roo/skills/laravel-tdd/SKILL.md +283 -0
- package/.roo/skills/laravel-verification/SKILL.md +179 -0
- package/.roo/skills/lead-intelligence/SKILL.md +321 -0
- package/.roo/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.roo/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.roo/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.roo/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.roo/skills/liquid-glass-design/SKILL.md +279 -0
- package/.roo/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/.roo/skills/logistics-exception-management/SKILL.md +222 -0
- package/.roo/skills/manim-video/SKILL.md +89 -0
- package/.roo/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/.roo/skills/market-research/SKILL.md +75 -0
- package/.roo/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.roo/skills/messages-ops/SKILL.md +104 -0
- package/.roo/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.roo/skills/nestjs-patterns/SKILL.md +230 -0
- package/.roo/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.roo/skills/nodejs-keccak256/SKILL.md +102 -0
- package/.roo/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.roo/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.roo/skills/observability/SKILL.md +390 -0
- package/.roo/skills/observability-dashboard/SKILL.md +119 -0
- package/.roo/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.roo/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.roo/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.roo/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.roo/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.roo/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.roo/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.roo/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.roo/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.roo/skills/opensource-pipeline/SKILL.md +255 -0
- package/.roo/skills/perl-patterns/SKILL.md +504 -0
- package/.roo/skills/perl-security/SKILL.md +503 -0
- package/.roo/skills/perl-testing/SKILL.md +475 -0
- package/.roo/skills/plankton-code-quality/SKILL.md +236 -0
- package/.roo/skills/postgres-patterns/SKILL.md +147 -0
- package/.roo/skills/product-capability/SKILL.md +141 -0
- package/.roo/skills/product-lens/SKILL.md +92 -0
- package/.roo/skills/production-scheduling/SKILL.md +238 -0
- package/.roo/skills/project-flow-ops/SKILL.md +111 -0
- package/.roo/skills/prompt-optimizer/SKILL.md +397 -0
- package/.roo/skills/python-patterns/SKILL.md +750 -0
- package/.roo/skills/python-testing/SKILL.md +816 -0
- package/.roo/skills/pytorch-patterns/SKILL.md +396 -0
- package/.roo/skills/quality-nonconformance/SKILL.md +260 -0
- package/.roo/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.roo/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.roo/skills/remotion-video-creation/SKILL.md +43 -0
- package/.roo/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.roo/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.roo/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.roo/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.roo/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.roo/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.roo/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.roo/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.roo/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.roo/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.roo/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.roo/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.roo/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.roo/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.roo/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.roo/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.roo/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.roo/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.roo/skills/remotion-video-creation/rules/images.md +130 -0
- package/.roo/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.roo/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.roo/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.roo/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.roo/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.roo/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.roo/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.roo/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.roo/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.roo/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.roo/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.roo/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.roo/skills/repo-scan/SKILL.md +78 -0
- package/.roo/skills/research-ops/SKILL.md +112 -0
- package/.roo/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.roo/skills/rules-distill/SKILL.md +264 -0
- package/.roo/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.roo/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.roo/skills/rust-patterns/SKILL.md +499 -0
- package/.roo/skills/rust-testing/SKILL.md +500 -0
- package/.roo/skills/safety-guard/SKILL.md +75 -0
- package/.roo/skills/santa-method/SKILL.md +306 -0
- package/.roo/skills/search-first/SKILL.md +161 -0
- package/.roo/skills/security-bounty-hunter/SKILL.md +99 -0
- package/.roo/skills/security-review/SKILL.md +495 -0
- package/.roo/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.roo/skills/security-scan/SKILL.md +165 -0
- package/.roo/skills/self-evolving-memory/SKILL.md +175 -0
- package/.roo/skills/seo/SKILL.md +154 -0
- package/.roo/skills/session-replay/SKILL.md +199 -0
- package/.roo/skills/skill-comply/SKILL.md +58 -0
- package/.roo/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/.roo/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/.roo/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/.roo/skills/skill-comply/prompts/classifier.md +24 -0
- package/.roo/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/.roo/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/.roo/skills/skill-comply/pyproject.toml +15 -0
- package/.roo/skills/skill-comply/scripts/__init__.py +0 -0
- package/.roo/skills/skill-comply/scripts/classifier.py +85 -0
- package/.roo/skills/skill-comply/scripts/grader.py +122 -0
- package/.roo/skills/skill-comply/scripts/parser.py +107 -0
- package/.roo/skills/skill-comply/scripts/report.py +170 -0
- package/.roo/skills/skill-comply/scripts/run.py +127 -0
- package/.roo/skills/skill-comply/scripts/runner.py +161 -0
- package/.roo/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/.roo/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/.roo/skills/skill-comply/scripts/utils.py +13 -0
- package/.roo/skills/skill-stocktake/SKILL.md +193 -0
- package/.roo/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.roo/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.roo/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.roo/skills/smart-debug/SKILL.md +241 -0
- package/.roo/skills/social-graph-ranker/SKILL.md +154 -0
- package/.roo/skills/springboot-patterns/SKILL.md +314 -0
- package/.roo/skills/springboot-security/SKILL.md +272 -0
- package/.roo/skills/springboot-tdd/SKILL.md +158 -0
- package/.roo/skills/springboot-verification/SKILL.md +231 -0
- package/.roo/skills/strategic-compact/SKILL.md +131 -0
- package/.roo/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.roo/skills/supply-chain-verification/SKILL.md +201 -0
- package/.roo/skills/swarm-orchestrator/SKILL.md +177 -0
- package/.roo/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.roo/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.roo/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.roo/skills/swiftui-patterns/SKILL.md +259 -0
- package/.roo/skills/tdd-workflow/SKILL.md +463 -0
- package/.roo/skills/team-builder/SKILL.md +168 -0
- package/.roo/skills/terminal-ops/SKILL.md +109 -0
- package/.roo/skills/terse-mode/SKILL.md +97 -0
- package/.roo/skills/token-budget-advisor/SKILL.md +133 -0
- package/.roo/skills/ui-demo/SKILL.md +465 -0
- package/.roo/skills/unified-notifications-ops/SKILL.md +187 -0
- package/.roo/skills/verification-loop/SKILL.md +126 -0
- package/.roo/skills/video-editing/SKILL.md +310 -0
- package/.roo/skills/videodb/SKILL.md +374 -0
- package/.roo/skills/videodb/reference/api-reference.md +550 -0
- package/.roo/skills/videodb/reference/capture-reference.md +407 -0
- package/.roo/skills/videodb/reference/capture.md +101 -0
- package/.roo/skills/videodb/reference/editor.md +443 -0
- package/.roo/skills/videodb/reference/generative.md +331 -0
- package/.roo/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.roo/skills/videodb/reference/rtstream.md +65 -0
- package/.roo/skills/videodb/reference/search.md +230 -0
- package/.roo/skills/videodb/reference/streaming.md +406 -0
- package/.roo/skills/videodb/reference/use-cases.md +118 -0
- package/.roo/skills/videodb/scripts/ws_listener.py +282 -0
- package/.roo/skills/visa-doc-translate/README.md +86 -0
- package/.roo/skills/visa-doc-translate/SKILL.md +117 -0
- package/.roo/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.roo/skills/x-api/SKILL.md +230 -0
- package/.windsurfrules +32 -0
- package/CHANGELOG.md +95 -0
- package/CLAUDE.md +2 -2
- package/CONVENTIONS.md +23 -0
- package/README.md +26 -6
- package/VERSION +1 -1
- package/package.json +4 -3
- package/rules/common/shell-portability.md +70 -0
- package/rules/shell-portability.md +70 -0
|
@@ -0,0 +1,1426 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Instinct CLI - Manage instincts for Continuous Learning v2
|
|
4
|
+
|
|
5
|
+
v2.1: Project-scoped instincts — different projects get different instincts,
|
|
6
|
+
with global instincts applied universally.
|
|
7
|
+
|
|
8
|
+
Commands:
|
|
9
|
+
status - Show all instincts (project + global) and their status
|
|
10
|
+
import - Import instincts from file or URL
|
|
11
|
+
export - Export instincts to file
|
|
12
|
+
evolve - Cluster instincts into skills/commands/agents
|
|
13
|
+
promote - Promote project instincts to global scope
|
|
14
|
+
projects - List all known projects and their instinct counts
|
|
15
|
+
prune - Delete pending instincts older than 30 days (TTL)
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
import argparse
|
|
19
|
+
import json
|
|
20
|
+
import hashlib
|
|
21
|
+
import os
|
|
22
|
+
import subprocess
|
|
23
|
+
import sys
|
|
24
|
+
import re
|
|
25
|
+
import urllib.request
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
from datetime import datetime, timedelta, timezone
|
|
28
|
+
from collections import defaultdict
|
|
29
|
+
from typing import Optional
|
|
30
|
+
|
|
31
|
+
try:
|
|
32
|
+
import fcntl
|
|
33
|
+
_HAS_FCNTL = True
|
|
34
|
+
except ImportError:
|
|
35
|
+
_HAS_FCNTL = False # Windows — skip file locking
|
|
36
|
+
|
|
37
|
+
# ─────────────────────────────────────────────
|
|
38
|
+
# Configuration
|
|
39
|
+
# ─────────────────────────────────────────────
|
|
40
|
+
|
|
41
|
+
HOMUNCULUS_DIR = Path.home() / ".claude" / "homunculus"
|
|
42
|
+
PROJECTS_DIR = HOMUNCULUS_DIR / "projects"
|
|
43
|
+
REGISTRY_FILE = HOMUNCULUS_DIR / "projects.json"
|
|
44
|
+
|
|
45
|
+
# Global (non-project-scoped) paths
|
|
46
|
+
GLOBAL_INSTINCTS_DIR = HOMUNCULUS_DIR / "instincts"
|
|
47
|
+
GLOBAL_PERSONAL_DIR = GLOBAL_INSTINCTS_DIR / "personal"
|
|
48
|
+
GLOBAL_INHERITED_DIR = GLOBAL_INSTINCTS_DIR / "inherited"
|
|
49
|
+
GLOBAL_EVOLVED_DIR = HOMUNCULUS_DIR / "evolved"
|
|
50
|
+
GLOBAL_OBSERVATIONS_FILE = HOMUNCULUS_DIR / "observations.jsonl"
|
|
51
|
+
|
|
52
|
+
# Thresholds for auto-promotion
|
|
53
|
+
PROMOTE_CONFIDENCE_THRESHOLD = 0.8
|
|
54
|
+
PROMOTE_MIN_PROJECTS = 2
|
|
55
|
+
ALLOWED_INSTINCT_EXTENSIONS = (".yaml", ".yml", ".md")
|
|
56
|
+
|
|
57
|
+
# Default TTL for pending instincts (days)
|
|
58
|
+
PENDING_TTL_DAYS = 30
|
|
59
|
+
# Warning threshold: show expiry warning when instinct expires within this many days
|
|
60
|
+
PENDING_EXPIRY_WARNING_DAYS = 7
|
|
61
|
+
|
|
62
|
+
# Ensure global directories exist (deferred to avoid side effects at import time)
|
|
63
|
+
def _ensure_global_dirs():
|
|
64
|
+
for d in [GLOBAL_PERSONAL_DIR, GLOBAL_INHERITED_DIR,
|
|
65
|
+
GLOBAL_EVOLVED_DIR / "skills", GLOBAL_EVOLVED_DIR / "commands", GLOBAL_EVOLVED_DIR / "agents",
|
|
66
|
+
PROJECTS_DIR]:
|
|
67
|
+
d.mkdir(parents=True, exist_ok=True)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# ─────────────────────────────────────────────
|
|
71
|
+
# Path Validation
|
|
72
|
+
# ─────────────────────────────────────────────
|
|
73
|
+
|
|
74
|
+
def _validate_file_path(path_str: str, must_exist: bool = False) -> Path:
|
|
75
|
+
"""Validate and resolve a file path, guarding against path traversal.
|
|
76
|
+
|
|
77
|
+
Raises ValueError if the path is invalid or suspicious.
|
|
78
|
+
"""
|
|
79
|
+
path = Path(path_str).expanduser().resolve()
|
|
80
|
+
|
|
81
|
+
# Block paths that escape into system directories
|
|
82
|
+
# We block specific system paths but allow temp dirs (/var/folders on macOS)
|
|
83
|
+
blocked_prefixes = [
|
|
84
|
+
"/etc", "/usr", "/bin", "/sbin", "/proc", "/sys",
|
|
85
|
+
"/var/log", "/var/run", "/var/lib", "/var/spool",
|
|
86
|
+
# macOS resolves /etc → /private/etc
|
|
87
|
+
"/private/etc",
|
|
88
|
+
"/private/var/log", "/private/var/run", "/private/var/db",
|
|
89
|
+
]
|
|
90
|
+
path_s = str(path)
|
|
91
|
+
for prefix in blocked_prefixes:
|
|
92
|
+
if path_s.startswith(prefix + "/") or path_s == prefix:
|
|
93
|
+
raise ValueError(f"Path '{path}' targets a system directory")
|
|
94
|
+
|
|
95
|
+
if must_exist and not path.exists():
|
|
96
|
+
raise ValueError(f"Path does not exist: {path}")
|
|
97
|
+
|
|
98
|
+
return path
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _validate_instinct_id(instinct_id: str) -> bool:
|
|
102
|
+
"""Validate instinct IDs before using them in filenames."""
|
|
103
|
+
if not instinct_id or len(instinct_id) > 128:
|
|
104
|
+
return False
|
|
105
|
+
if "/" in instinct_id or "\\" in instinct_id:
|
|
106
|
+
return False
|
|
107
|
+
if ".." in instinct_id:
|
|
108
|
+
return False
|
|
109
|
+
if instinct_id.startswith("."):
|
|
110
|
+
return False
|
|
111
|
+
return bool(re.match(r"^[A-Za-z0-9][A-Za-z0-9._-]*$", instinct_id))
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def _yaml_quote(value: str) -> str:
|
|
115
|
+
"""Quote a string for safe YAML frontmatter serialization.
|
|
116
|
+
|
|
117
|
+
Uses double quotes and escapes embedded double-quote characters to
|
|
118
|
+
prevent malformed YAML when the value contains quotes.
|
|
119
|
+
"""
|
|
120
|
+
escaped = value.replace('\\', '\\\\').replace('"', '\\"')
|
|
121
|
+
return f'"{escaped}"'
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
# ─────────────────────────────────────────────
|
|
125
|
+
# Project Detection (Python equivalent of detect-project.sh)
|
|
126
|
+
# ─────────────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
def detect_project() -> dict:
|
|
129
|
+
"""Detect current project context. Returns dict with id, name, root, project_dir."""
|
|
130
|
+
project_root = None
|
|
131
|
+
|
|
132
|
+
# 1. CLAUDE_PROJECT_DIR env var
|
|
133
|
+
env_dir = os.environ.get("CLAUDE_PROJECT_DIR")
|
|
134
|
+
if env_dir and os.path.isdir(env_dir):
|
|
135
|
+
project_root = env_dir
|
|
136
|
+
|
|
137
|
+
# 2. git repo root
|
|
138
|
+
if not project_root:
|
|
139
|
+
try:
|
|
140
|
+
result = subprocess.run(
|
|
141
|
+
["git", "rev-parse", "--show-toplevel"],
|
|
142
|
+
capture_output=True, text=True, timeout=5
|
|
143
|
+
)
|
|
144
|
+
if result.returncode == 0:
|
|
145
|
+
project_root = result.stdout.strip()
|
|
146
|
+
except (subprocess.TimeoutExpired, FileNotFoundError):
|
|
147
|
+
pass
|
|
148
|
+
|
|
149
|
+
# Normalize: strip trailing slashes to keep basename and hash stable
|
|
150
|
+
if project_root:
|
|
151
|
+
project_root = project_root.rstrip("/")
|
|
152
|
+
|
|
153
|
+
# 3. No project — global fallback
|
|
154
|
+
if not project_root:
|
|
155
|
+
return {
|
|
156
|
+
"id": "global",
|
|
157
|
+
"name": "global",
|
|
158
|
+
"root": "",
|
|
159
|
+
"project_dir": HOMUNCULUS_DIR,
|
|
160
|
+
"instincts_personal": GLOBAL_PERSONAL_DIR,
|
|
161
|
+
"instincts_inherited": GLOBAL_INHERITED_DIR,
|
|
162
|
+
"evolved_dir": GLOBAL_EVOLVED_DIR,
|
|
163
|
+
"observations_file": GLOBAL_OBSERVATIONS_FILE,
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
project_name = os.path.basename(project_root)
|
|
167
|
+
|
|
168
|
+
# Derive project ID from git remote URL or path
|
|
169
|
+
remote_url = ""
|
|
170
|
+
try:
|
|
171
|
+
result = subprocess.run(
|
|
172
|
+
["git", "-C", project_root, "remote", "get-url", "origin"],
|
|
173
|
+
capture_output=True, text=True, timeout=5
|
|
174
|
+
)
|
|
175
|
+
if result.returncode == 0:
|
|
176
|
+
remote_url = result.stdout.strip()
|
|
177
|
+
except (subprocess.TimeoutExpired, FileNotFoundError):
|
|
178
|
+
pass
|
|
179
|
+
|
|
180
|
+
hash_source = remote_url if remote_url else project_root
|
|
181
|
+
project_id = hashlib.sha256(hash_source.encode()).hexdigest()[:12]
|
|
182
|
+
|
|
183
|
+
project_dir = PROJECTS_DIR / project_id
|
|
184
|
+
|
|
185
|
+
# Ensure project directory structure
|
|
186
|
+
for d in [
|
|
187
|
+
project_dir / "instincts" / "personal",
|
|
188
|
+
project_dir / "instincts" / "inherited",
|
|
189
|
+
project_dir / "observations.archive",
|
|
190
|
+
project_dir / "evolved" / "skills",
|
|
191
|
+
project_dir / "evolved" / "commands",
|
|
192
|
+
project_dir / "evolved" / "agents",
|
|
193
|
+
]:
|
|
194
|
+
d.mkdir(parents=True, exist_ok=True)
|
|
195
|
+
|
|
196
|
+
# Update registry
|
|
197
|
+
_update_registry(project_id, project_name, project_root, remote_url)
|
|
198
|
+
|
|
199
|
+
return {
|
|
200
|
+
"id": project_id,
|
|
201
|
+
"name": project_name,
|
|
202
|
+
"root": project_root,
|
|
203
|
+
"remote": remote_url,
|
|
204
|
+
"project_dir": project_dir,
|
|
205
|
+
"instincts_personal": project_dir / "instincts" / "personal",
|
|
206
|
+
"instincts_inherited": project_dir / "instincts" / "inherited",
|
|
207
|
+
"evolved_dir": project_dir / "evolved",
|
|
208
|
+
"observations_file": project_dir / "observations.jsonl",
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def _update_registry(pid: str, pname: str, proot: str, premote: str) -> None:
|
|
213
|
+
"""Update the projects.json registry.
|
|
214
|
+
|
|
215
|
+
Uses file locking (where available) to prevent concurrent sessions from
|
|
216
|
+
overwriting each other's updates.
|
|
217
|
+
"""
|
|
218
|
+
REGISTRY_FILE.parent.mkdir(parents=True, exist_ok=True)
|
|
219
|
+
lock_path = REGISTRY_FILE.parent / f".{REGISTRY_FILE.name}.lock"
|
|
220
|
+
lock_fd = None
|
|
221
|
+
|
|
222
|
+
try:
|
|
223
|
+
# Acquire advisory lock to serialize read-modify-write
|
|
224
|
+
if _HAS_FCNTL:
|
|
225
|
+
lock_fd = open(lock_path, "w")
|
|
226
|
+
fcntl.flock(lock_fd, fcntl.LOCK_EX)
|
|
227
|
+
|
|
228
|
+
try:
|
|
229
|
+
with open(REGISTRY_FILE, encoding="utf-8") as f:
|
|
230
|
+
registry = json.load(f)
|
|
231
|
+
except (FileNotFoundError, json.JSONDecodeError):
|
|
232
|
+
registry = {}
|
|
233
|
+
|
|
234
|
+
registry[pid] = {
|
|
235
|
+
"name": pname,
|
|
236
|
+
"root": proot,
|
|
237
|
+
"remote": premote,
|
|
238
|
+
"last_seen": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
tmp_file = REGISTRY_FILE.parent / f".{REGISTRY_FILE.name}.tmp.{os.getpid()}"
|
|
242
|
+
with open(tmp_file, "w", encoding="utf-8") as f:
|
|
243
|
+
json.dump(registry, f, indent=2)
|
|
244
|
+
f.flush()
|
|
245
|
+
os.fsync(f.fileno())
|
|
246
|
+
os.replace(tmp_file, REGISTRY_FILE)
|
|
247
|
+
finally:
|
|
248
|
+
if lock_fd is not None:
|
|
249
|
+
fcntl.flock(lock_fd, fcntl.LOCK_UN)
|
|
250
|
+
lock_fd.close()
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def load_registry() -> dict:
|
|
254
|
+
"""Load the projects registry."""
|
|
255
|
+
try:
|
|
256
|
+
with open(REGISTRY_FILE, encoding="utf-8") as f:
|
|
257
|
+
return json.load(f)
|
|
258
|
+
except (FileNotFoundError, json.JSONDecodeError):
|
|
259
|
+
return {}
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
# ─────────────────────────────────────────────
|
|
263
|
+
# Instinct Parser
|
|
264
|
+
# ─────────────────────────────────────────────
|
|
265
|
+
|
|
266
|
+
def parse_instinct_file(content: str) -> list[dict]:
|
|
267
|
+
"""Parse YAML-like instinct file format.
|
|
268
|
+
|
|
269
|
+
Each instinct is delimited by a pair of ``---`` markers (YAML frontmatter).
|
|
270
|
+
Note: ``---`` is always treated as a frontmatter boundary; instinct body
|
|
271
|
+
content must use ``***`` or ``___`` for horizontal rules to avoid ambiguity.
|
|
272
|
+
"""
|
|
273
|
+
instincts = []
|
|
274
|
+
current = {}
|
|
275
|
+
in_frontmatter = False
|
|
276
|
+
content_lines = []
|
|
277
|
+
|
|
278
|
+
for line in content.split('\n'):
|
|
279
|
+
if line.strip() == '---':
|
|
280
|
+
if in_frontmatter:
|
|
281
|
+
# End of frontmatter - content comes next
|
|
282
|
+
in_frontmatter = False
|
|
283
|
+
else:
|
|
284
|
+
# Start of new frontmatter block
|
|
285
|
+
in_frontmatter = True
|
|
286
|
+
if current:
|
|
287
|
+
current['content'] = '\n'.join(content_lines).strip()
|
|
288
|
+
instincts.append(current)
|
|
289
|
+
current = {}
|
|
290
|
+
content_lines = []
|
|
291
|
+
elif in_frontmatter:
|
|
292
|
+
# Parse YAML-like frontmatter
|
|
293
|
+
if ':' in line:
|
|
294
|
+
key, value = line.split(':', 1)
|
|
295
|
+
key = key.strip()
|
|
296
|
+
value = value.strip()
|
|
297
|
+
# Unescape quoted YAML strings
|
|
298
|
+
if value.startswith('"') and value.endswith('"'):
|
|
299
|
+
value = value[1:-1].replace('\\"', '"').replace('\\\\', '\\')
|
|
300
|
+
elif value.startswith("'") and value.endswith("'"):
|
|
301
|
+
value = value[1:-1].replace("''", "'")
|
|
302
|
+
if key == 'confidence':
|
|
303
|
+
try:
|
|
304
|
+
current[key] = float(value)
|
|
305
|
+
except ValueError:
|
|
306
|
+
current[key] = 0.5 # default on malformed confidence
|
|
307
|
+
else:
|
|
308
|
+
current[key] = value
|
|
309
|
+
else:
|
|
310
|
+
content_lines.append(line)
|
|
311
|
+
|
|
312
|
+
# Don't forget the last instinct
|
|
313
|
+
if current:
|
|
314
|
+
current['content'] = '\n'.join(content_lines).strip()
|
|
315
|
+
instincts.append(current)
|
|
316
|
+
|
|
317
|
+
return [i for i in instincts if i.get('id')]
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def _load_instincts_from_dir(directory: Path, source_type: str, scope_label: str) -> list[dict]:
|
|
321
|
+
"""Load instincts from a single directory."""
|
|
322
|
+
instincts = []
|
|
323
|
+
if not directory.exists():
|
|
324
|
+
return instincts
|
|
325
|
+
files = [
|
|
326
|
+
file for file in sorted(directory.iterdir())
|
|
327
|
+
if file.is_file() and file.suffix.lower() in ALLOWED_INSTINCT_EXTENSIONS
|
|
328
|
+
]
|
|
329
|
+
for file in files:
|
|
330
|
+
try:
|
|
331
|
+
content = file.read_text(encoding="utf-8")
|
|
332
|
+
parsed = parse_instinct_file(content)
|
|
333
|
+
for inst in parsed:
|
|
334
|
+
inst['_source_file'] = str(file)
|
|
335
|
+
inst['_source_type'] = source_type
|
|
336
|
+
inst['_scope_label'] = scope_label
|
|
337
|
+
# Default scope if not set in frontmatter
|
|
338
|
+
if 'scope' not in inst:
|
|
339
|
+
inst['scope'] = scope_label
|
|
340
|
+
instincts.extend(parsed)
|
|
341
|
+
except Exception as e:
|
|
342
|
+
print(f"Warning: Failed to parse {file}: {e}", file=sys.stderr)
|
|
343
|
+
return instincts
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
def load_all_instincts(project: dict, include_global: bool = True) -> list[dict]:
|
|
347
|
+
"""Load all instincts: project-scoped + global.
|
|
348
|
+
|
|
349
|
+
Project-scoped instincts take precedence over global ones when IDs conflict.
|
|
350
|
+
"""
|
|
351
|
+
instincts = []
|
|
352
|
+
|
|
353
|
+
# 1. Load project-scoped instincts (if not already global)
|
|
354
|
+
if project["id"] != "global":
|
|
355
|
+
instincts.extend(_load_instincts_from_dir(
|
|
356
|
+
project["instincts_personal"], "personal", "project"
|
|
357
|
+
))
|
|
358
|
+
instincts.extend(_load_instincts_from_dir(
|
|
359
|
+
project["instincts_inherited"], "inherited", "project"
|
|
360
|
+
))
|
|
361
|
+
|
|
362
|
+
# 2. Load global instincts
|
|
363
|
+
if include_global:
|
|
364
|
+
global_instincts = []
|
|
365
|
+
global_instincts.extend(_load_instincts_from_dir(
|
|
366
|
+
GLOBAL_PERSONAL_DIR, "personal", "global"
|
|
367
|
+
))
|
|
368
|
+
global_instincts.extend(_load_instincts_from_dir(
|
|
369
|
+
GLOBAL_INHERITED_DIR, "inherited", "global"
|
|
370
|
+
))
|
|
371
|
+
|
|
372
|
+
# Deduplicate: project-scoped wins over global when same ID
|
|
373
|
+
project_ids = {i.get('id') for i in instincts}
|
|
374
|
+
for gi in global_instincts:
|
|
375
|
+
if gi.get('id') not in project_ids:
|
|
376
|
+
instincts.append(gi)
|
|
377
|
+
|
|
378
|
+
return instincts
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
def load_project_only_instincts(project: dict) -> list[dict]:
|
|
382
|
+
"""Load only project-scoped instincts (no global).
|
|
383
|
+
|
|
384
|
+
In global fallback mode (no git project), returns global instincts.
|
|
385
|
+
"""
|
|
386
|
+
if project.get("id") == "global":
|
|
387
|
+
instincts = _load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global")
|
|
388
|
+
instincts += _load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global")
|
|
389
|
+
return instincts
|
|
390
|
+
return load_all_instincts(project, include_global=False)
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
# ─────────────────────────────────────────────
|
|
394
|
+
# Status Command
|
|
395
|
+
# ─────────────────────────────────────────────
|
|
396
|
+
|
|
397
|
+
def cmd_status(args) -> int:
|
|
398
|
+
"""Show status of all instincts (project + global)."""
|
|
399
|
+
project = detect_project()
|
|
400
|
+
instincts = load_all_instincts(project)
|
|
401
|
+
|
|
402
|
+
if not instincts:
|
|
403
|
+
print("No instincts found.")
|
|
404
|
+
print(f"\nProject: {project['name']} ({project['id']})")
|
|
405
|
+
print(f" Project instincts: {project['instincts_personal']}")
|
|
406
|
+
print(f" Global instincts: {GLOBAL_PERSONAL_DIR}")
|
|
407
|
+
else:
|
|
408
|
+
# Split by scope
|
|
409
|
+
project_instincts = [i for i in instincts if i.get('_scope_label') == 'project']
|
|
410
|
+
global_instincts = [i for i in instincts if i.get('_scope_label') == 'global']
|
|
411
|
+
|
|
412
|
+
# Print header
|
|
413
|
+
print(f"\n{'='*60}")
|
|
414
|
+
print(f" INSTINCT STATUS - {len(instincts)} total")
|
|
415
|
+
print(f"{'='*60}\n")
|
|
416
|
+
|
|
417
|
+
print(f" Project: {project['name']} ({project['id']})")
|
|
418
|
+
print(f" Project instincts: {len(project_instincts)}")
|
|
419
|
+
print(f" Global instincts: {len(global_instincts)}")
|
|
420
|
+
print()
|
|
421
|
+
|
|
422
|
+
# Print project-scoped instincts
|
|
423
|
+
if project_instincts:
|
|
424
|
+
print(f"## PROJECT-SCOPED ({project['name']})")
|
|
425
|
+
print()
|
|
426
|
+
_print_instincts_by_domain(project_instincts)
|
|
427
|
+
|
|
428
|
+
# Print global instincts
|
|
429
|
+
if global_instincts:
|
|
430
|
+
print("## GLOBAL (apply to all projects)")
|
|
431
|
+
print()
|
|
432
|
+
_print_instincts_by_domain(global_instincts)
|
|
433
|
+
|
|
434
|
+
# Observations stats
|
|
435
|
+
obs_file = project.get("observations_file")
|
|
436
|
+
if obs_file and Path(obs_file).exists():
|
|
437
|
+
with open(obs_file, encoding="utf-8") as f:
|
|
438
|
+
obs_count = sum(1 for _ in f)
|
|
439
|
+
print(f"-" * 60)
|
|
440
|
+
print(f" Observations: {obs_count} events logged")
|
|
441
|
+
print(f" File: {obs_file}")
|
|
442
|
+
|
|
443
|
+
# Pending instinct stats
|
|
444
|
+
pending = _collect_pending_instincts()
|
|
445
|
+
if pending:
|
|
446
|
+
print(f"\n{'-'*60}")
|
|
447
|
+
print(f" Pending instincts: {len(pending)} awaiting review")
|
|
448
|
+
|
|
449
|
+
if len(pending) >= 5:
|
|
450
|
+
print(f"\n \u26a0 {len(pending)} pending instincts awaiting review."
|
|
451
|
+
f" Unreviewed instincts auto-delete after {PENDING_TTL_DAYS} days.")
|
|
452
|
+
|
|
453
|
+
# Show instincts expiring within PENDING_EXPIRY_WARNING_DAYS
|
|
454
|
+
expiry_threshold = PENDING_TTL_DAYS - PENDING_EXPIRY_WARNING_DAYS
|
|
455
|
+
expiring_soon = [p for p in pending
|
|
456
|
+
if p["age_days"] >= expiry_threshold and p["age_days"] < PENDING_TTL_DAYS]
|
|
457
|
+
if expiring_soon:
|
|
458
|
+
print(f"\n Expiring within {PENDING_EXPIRY_WARNING_DAYS} days:")
|
|
459
|
+
for item in expiring_soon:
|
|
460
|
+
days_left = max(0, PENDING_TTL_DAYS - item["age_days"])
|
|
461
|
+
print(f" - {item['name']} ({days_left}d remaining)")
|
|
462
|
+
|
|
463
|
+
print(f"\n{'='*60}\n")
|
|
464
|
+
return 0
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
def _print_instincts_by_domain(instincts: list[dict]) -> None:
|
|
468
|
+
"""Helper to print instincts grouped by domain."""
|
|
469
|
+
by_domain = defaultdict(list)
|
|
470
|
+
for inst in instincts:
|
|
471
|
+
domain = inst.get('domain', 'general')
|
|
472
|
+
by_domain[domain].append(inst)
|
|
473
|
+
|
|
474
|
+
for domain in sorted(by_domain.keys()):
|
|
475
|
+
domain_instincts = by_domain[domain]
|
|
476
|
+
print(f" ### {domain.upper()} ({len(domain_instincts)})")
|
|
477
|
+
print()
|
|
478
|
+
|
|
479
|
+
for inst in sorted(domain_instincts, key=lambda x: -x.get('confidence', 0.5)):
|
|
480
|
+
conf = inst.get('confidence', 0.5)
|
|
481
|
+
conf_bar = '\u2588' * int(conf * 10) + '\u2591' * (10 - int(conf * 10))
|
|
482
|
+
trigger = inst.get('trigger', 'unknown trigger')
|
|
483
|
+
scope_tag = f"[{inst.get('scope', '?')}]"
|
|
484
|
+
|
|
485
|
+
print(f" {conf_bar} {int(conf*100):3d}% {inst.get('id', 'unnamed')} {scope_tag}")
|
|
486
|
+
print(f" trigger: {trigger}")
|
|
487
|
+
|
|
488
|
+
# Extract action from content
|
|
489
|
+
content = inst.get('content', '')
|
|
490
|
+
action_match = re.search(r'## Action\s*\n\s*(.+?)(?:\n\n|\n##|$)', content, re.DOTALL)
|
|
491
|
+
if action_match:
|
|
492
|
+
action = action_match.group(1).strip().split('\n')[0]
|
|
493
|
+
print(f" action: {action[:60]}{'...' if len(action) > 60 else ''}")
|
|
494
|
+
|
|
495
|
+
print()
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
# ─────────────────────────────────────────────
|
|
499
|
+
# Import Command
|
|
500
|
+
# ─────────────────────────────────────────────
|
|
501
|
+
|
|
502
|
+
def cmd_import(args) -> int:
|
|
503
|
+
"""Import instincts from file or URL."""
|
|
504
|
+
project = detect_project()
|
|
505
|
+
source = args.source
|
|
506
|
+
|
|
507
|
+
# Determine target scope
|
|
508
|
+
target_scope = args.scope or "project"
|
|
509
|
+
if target_scope == "project" and project["id"] == "global":
|
|
510
|
+
print("No project detected. Importing as global scope.")
|
|
511
|
+
target_scope = "global"
|
|
512
|
+
|
|
513
|
+
# Fetch content
|
|
514
|
+
if source.startswith('http://') or source.startswith('https://'):
|
|
515
|
+
print(f"Fetching from URL: {source}")
|
|
516
|
+
try:
|
|
517
|
+
with urllib.request.urlopen(source) as response:
|
|
518
|
+
content = response.read().decode('utf-8')
|
|
519
|
+
except Exception as e:
|
|
520
|
+
print(f"Error fetching URL: {e}", file=sys.stderr)
|
|
521
|
+
return 1
|
|
522
|
+
else:
|
|
523
|
+
try:
|
|
524
|
+
path = _validate_file_path(source, must_exist=True)
|
|
525
|
+
except ValueError as e:
|
|
526
|
+
print(f"Invalid path: {e}", file=sys.stderr)
|
|
527
|
+
return 1
|
|
528
|
+
if not path.is_file():
|
|
529
|
+
print(f"Error: '{path}' is not a regular file.", file=sys.stderr)
|
|
530
|
+
return 1
|
|
531
|
+
content = path.read_text(encoding="utf-8")
|
|
532
|
+
|
|
533
|
+
# Parse instincts
|
|
534
|
+
new_instincts = parse_instinct_file(content)
|
|
535
|
+
if not new_instincts:
|
|
536
|
+
print("No valid instincts found in source.")
|
|
537
|
+
return 1
|
|
538
|
+
|
|
539
|
+
print(f"\nFound {len(new_instincts)} instincts to import.")
|
|
540
|
+
print(f"Target scope: {target_scope}")
|
|
541
|
+
if target_scope == "project":
|
|
542
|
+
print(f"Target project: {project['name']} ({project['id']})")
|
|
543
|
+
print()
|
|
544
|
+
|
|
545
|
+
# Load existing instincts for dedup, scoped to the target to avoid
|
|
546
|
+
# cross-scope shadowing (project instincts hiding global ones or vice versa)
|
|
547
|
+
if target_scope == "global":
|
|
548
|
+
existing = _load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global")
|
|
549
|
+
existing += _load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global")
|
|
550
|
+
else:
|
|
551
|
+
existing = load_project_only_instincts(project)
|
|
552
|
+
existing_ids = {i.get('id') for i in existing}
|
|
553
|
+
|
|
554
|
+
# Deduplicate within the import source: keep highest confidence per ID
|
|
555
|
+
best_by_id = {}
|
|
556
|
+
for inst in new_instincts:
|
|
557
|
+
inst_id = inst.get('id')
|
|
558
|
+
if inst_id not in best_by_id or inst.get('confidence', 0.5) > best_by_id[inst_id].get('confidence', 0.5):
|
|
559
|
+
best_by_id[inst_id] = inst
|
|
560
|
+
deduped_instincts = list(best_by_id.values())
|
|
561
|
+
|
|
562
|
+
# Categorize against existing instincts on disk
|
|
563
|
+
to_add = []
|
|
564
|
+
duplicates = []
|
|
565
|
+
to_update = []
|
|
566
|
+
|
|
567
|
+
for inst in deduped_instincts:
|
|
568
|
+
inst_id = inst.get('id')
|
|
569
|
+
if inst_id in existing_ids:
|
|
570
|
+
existing_inst = next((e for e in existing if e.get('id') == inst_id), None)
|
|
571
|
+
if existing_inst:
|
|
572
|
+
if inst.get('confidence', 0) > existing_inst.get('confidence', 0):
|
|
573
|
+
to_update.append(inst)
|
|
574
|
+
else:
|
|
575
|
+
duplicates.append(inst)
|
|
576
|
+
else:
|
|
577
|
+
to_add.append(inst)
|
|
578
|
+
|
|
579
|
+
# Filter by minimum confidence
|
|
580
|
+
min_conf = args.min_confidence if args.min_confidence is not None else 0.0
|
|
581
|
+
to_add = [i for i in to_add if i.get('confidence', 0.5) >= min_conf]
|
|
582
|
+
to_update = [i for i in to_update if i.get('confidence', 0.5) >= min_conf]
|
|
583
|
+
|
|
584
|
+
# Display summary
|
|
585
|
+
if to_add:
|
|
586
|
+
print(f"NEW ({len(to_add)}):")
|
|
587
|
+
for inst in to_add:
|
|
588
|
+
print(f" + {inst.get('id')} (confidence: {inst.get('confidence', 0.5):.2f})")
|
|
589
|
+
|
|
590
|
+
if to_update:
|
|
591
|
+
print(f"\nUPDATE ({len(to_update)}):")
|
|
592
|
+
for inst in to_update:
|
|
593
|
+
print(f" ~ {inst.get('id')} (confidence: {inst.get('confidence', 0.5):.2f})")
|
|
594
|
+
|
|
595
|
+
if duplicates:
|
|
596
|
+
print(f"\nSKIP ({len(duplicates)} - already exists with equal/higher confidence):")
|
|
597
|
+
for inst in duplicates[:5]:
|
|
598
|
+
print(f" - {inst.get('id')}")
|
|
599
|
+
if len(duplicates) > 5:
|
|
600
|
+
print(f" ... and {len(duplicates) - 5} more")
|
|
601
|
+
|
|
602
|
+
if args.dry_run:
|
|
603
|
+
print("\n[DRY RUN] No changes made.")
|
|
604
|
+
return 0
|
|
605
|
+
|
|
606
|
+
if not to_add and not to_update:
|
|
607
|
+
print("\nNothing to import.")
|
|
608
|
+
return 0
|
|
609
|
+
|
|
610
|
+
# Confirm
|
|
611
|
+
if not args.force:
|
|
612
|
+
response = input(f"\nImport {len(to_add)} new, update {len(to_update)}? [y/N] ")
|
|
613
|
+
if response.lower() != 'y':
|
|
614
|
+
print("Cancelled.")
|
|
615
|
+
return 0
|
|
616
|
+
|
|
617
|
+
# Determine output directory based on scope
|
|
618
|
+
if target_scope == "global":
|
|
619
|
+
output_dir = GLOBAL_INHERITED_DIR
|
|
620
|
+
else:
|
|
621
|
+
output_dir = project["instincts_inherited"]
|
|
622
|
+
|
|
623
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
624
|
+
|
|
625
|
+
# Collect stale files for instincts being updated (deleted after new file is written).
|
|
626
|
+
# Allow deletion from any subdirectory (personal/ or inherited/) within the
|
|
627
|
+
# target scope to prevent the same ID existing in both places. Guard against
|
|
628
|
+
# cross-scope deletion by restricting to the scope's instincts root.
|
|
629
|
+
if target_scope == "global":
|
|
630
|
+
scope_root = GLOBAL_INSTINCTS_DIR.resolve()
|
|
631
|
+
else:
|
|
632
|
+
scope_root = (project["project_dir"] / "instincts").resolve() if project["id"] != "global" else GLOBAL_INSTINCTS_DIR.resolve()
|
|
633
|
+
stale_paths = []
|
|
634
|
+
for inst in to_update:
|
|
635
|
+
inst_id = inst.get('id')
|
|
636
|
+
stale = next((e for e in existing if e.get('id') == inst_id), None)
|
|
637
|
+
if stale and stale.get('_source_file'):
|
|
638
|
+
stale_path = Path(stale['_source_file']).resolve()
|
|
639
|
+
if stale_path.exists() and str(stale_path).startswith(str(scope_root) + os.sep):
|
|
640
|
+
stale_paths.append(stale_path)
|
|
641
|
+
|
|
642
|
+
# Write new file first (safe: if this fails, stale files are preserved)
|
|
643
|
+
timestamp = datetime.now().strftime('%Y%m%d-%H%M%S')
|
|
644
|
+
source_name = Path(source).stem if not source.startswith('http') else 'web-import'
|
|
645
|
+
output_file = output_dir / f"{source_name}-{timestamp}.yaml"
|
|
646
|
+
|
|
647
|
+
all_to_write = to_add + to_update
|
|
648
|
+
output_content = f"# Imported from {source}\n# Date: {datetime.now().isoformat()}\n# Scope: {target_scope}\n"
|
|
649
|
+
if target_scope == "project":
|
|
650
|
+
output_content += f"# Project: {project['name']} ({project['id']})\n"
|
|
651
|
+
output_content += "\n"
|
|
652
|
+
|
|
653
|
+
for inst in all_to_write:
|
|
654
|
+
output_content += "---\n"
|
|
655
|
+
output_content += f"id: {inst.get('id')}\n"
|
|
656
|
+
output_content += f"trigger: {_yaml_quote(inst.get('trigger', 'unknown'))}\n"
|
|
657
|
+
output_content += f"confidence: {inst.get('confidence', 0.5)}\n"
|
|
658
|
+
output_content += f"domain: {inst.get('domain', 'general')}\n"
|
|
659
|
+
output_content += "source: inherited\n"
|
|
660
|
+
output_content += f"scope: {target_scope}\n"
|
|
661
|
+
output_content += f"imported_from: {_yaml_quote(source)}\n"
|
|
662
|
+
if target_scope == "project":
|
|
663
|
+
output_content += f"project_id: {project['id']}\n"
|
|
664
|
+
output_content += f"project_name: {project['name']}\n"
|
|
665
|
+
if inst.get('source_repo'):
|
|
666
|
+
output_content += f"source_repo: {inst.get('source_repo')}\n"
|
|
667
|
+
output_content += "---\n\n"
|
|
668
|
+
output_content += inst.get('content', '') + "\n\n"
|
|
669
|
+
|
|
670
|
+
output_file.write_text(output_content, encoding="utf-8")
|
|
671
|
+
|
|
672
|
+
# Remove stale files only after the new file has been written successfully
|
|
673
|
+
for stale_path in stale_paths:
|
|
674
|
+
try:
|
|
675
|
+
stale_path.unlink()
|
|
676
|
+
except OSError:
|
|
677
|
+
pass # best-effort removal
|
|
678
|
+
|
|
679
|
+
print(f"\nImport complete!")
|
|
680
|
+
print(f" Scope: {target_scope}")
|
|
681
|
+
print(f" Added: {len(to_add)}")
|
|
682
|
+
print(f" Updated: {len(to_update)}")
|
|
683
|
+
print(f" Saved to: {output_file}")
|
|
684
|
+
|
|
685
|
+
return 0
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
# ─────────────────────────────────────────────
|
|
689
|
+
# Export Command
|
|
690
|
+
# ─────────────────────────────────────────────
|
|
691
|
+
|
|
692
|
+
def cmd_export(args) -> int:
|
|
693
|
+
"""Export instincts to file."""
|
|
694
|
+
project = detect_project()
|
|
695
|
+
|
|
696
|
+
# Determine what to export based on scope filter
|
|
697
|
+
if args.scope == "project":
|
|
698
|
+
instincts = load_project_only_instincts(project)
|
|
699
|
+
elif args.scope == "global":
|
|
700
|
+
instincts = _load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global")
|
|
701
|
+
instincts += _load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global")
|
|
702
|
+
else:
|
|
703
|
+
instincts = load_all_instincts(project)
|
|
704
|
+
|
|
705
|
+
if not instincts:
|
|
706
|
+
print("No instincts to export.")
|
|
707
|
+
return 1
|
|
708
|
+
|
|
709
|
+
# Filter by domain if specified
|
|
710
|
+
if args.domain:
|
|
711
|
+
instincts = [i for i in instincts if i.get('domain') == args.domain]
|
|
712
|
+
|
|
713
|
+
# Filter by minimum confidence
|
|
714
|
+
if args.min_confidence:
|
|
715
|
+
instincts = [i for i in instincts if i.get('confidence', 0.5) >= args.min_confidence]
|
|
716
|
+
|
|
717
|
+
if not instincts:
|
|
718
|
+
print("No instincts match the criteria.")
|
|
719
|
+
return 1
|
|
720
|
+
|
|
721
|
+
# Generate output
|
|
722
|
+
output = f"# Instincts export\n# Date: {datetime.now().isoformat()}\n# Total: {len(instincts)}\n"
|
|
723
|
+
if args.scope:
|
|
724
|
+
output += f"# Scope: {args.scope}\n"
|
|
725
|
+
if project["id"] != "global":
|
|
726
|
+
output += f"# Project: {project['name']} ({project['id']})\n"
|
|
727
|
+
output += "\n"
|
|
728
|
+
|
|
729
|
+
for inst in instincts:
|
|
730
|
+
output += "---\n"
|
|
731
|
+
for key in ['id', 'trigger', 'confidence', 'domain', 'source', 'scope',
|
|
732
|
+
'project_id', 'project_name', 'source_repo']:
|
|
733
|
+
if inst.get(key):
|
|
734
|
+
value = inst[key]
|
|
735
|
+
if key == 'trigger':
|
|
736
|
+
output += f'{key}: {_yaml_quote(value)}\n'
|
|
737
|
+
else:
|
|
738
|
+
output += f"{key}: {value}\n"
|
|
739
|
+
output += "---\n\n"
|
|
740
|
+
output += inst.get('content', '') + "\n\n"
|
|
741
|
+
|
|
742
|
+
# Write to file or stdout
|
|
743
|
+
if args.output:
|
|
744
|
+
try:
|
|
745
|
+
out_path = _validate_file_path(args.output)
|
|
746
|
+
except ValueError as e:
|
|
747
|
+
print(f"Invalid output path: {e}", file=sys.stderr)
|
|
748
|
+
return 1
|
|
749
|
+
if out_path.is_dir():
|
|
750
|
+
print(f"Error: '{out_path}' is a directory, not a file.", file=sys.stderr)
|
|
751
|
+
return 1
|
|
752
|
+
out_path.parent.mkdir(parents=True, exist_ok=True)
|
|
753
|
+
out_path.write_text(output, encoding="utf-8")
|
|
754
|
+
print(f"Exported {len(instincts)} instincts to {out_path}")
|
|
755
|
+
else:
|
|
756
|
+
print(output)
|
|
757
|
+
|
|
758
|
+
return 0
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
# ─────────────────────────────────────────────
|
|
762
|
+
# Evolve Command
|
|
763
|
+
# ─────────────────────────────────────────────
|
|
764
|
+
|
|
765
|
+
def cmd_evolve(args) -> int:
|
|
766
|
+
"""Analyze instincts and suggest evolutions to skills/commands/agents."""
|
|
767
|
+
project = detect_project()
|
|
768
|
+
instincts = load_all_instincts(project)
|
|
769
|
+
|
|
770
|
+
if len(instincts) < 3:
|
|
771
|
+
print("Need at least 3 instincts to analyze patterns.")
|
|
772
|
+
print(f"Currently have: {len(instincts)}")
|
|
773
|
+
return 1
|
|
774
|
+
|
|
775
|
+
project_instincts = [i for i in instincts if i.get('_scope_label') == 'project']
|
|
776
|
+
global_instincts = [i for i in instincts if i.get('_scope_label') == 'global']
|
|
777
|
+
|
|
778
|
+
print(f"\n{'='*60}")
|
|
779
|
+
print(f" EVOLVE ANALYSIS - {len(instincts)} instincts")
|
|
780
|
+
print(f" Project: {project['name']} ({project['id']})")
|
|
781
|
+
print(f" Project-scoped: {len(project_instincts)} | Global: {len(global_instincts)}")
|
|
782
|
+
print(f"{'='*60}\n")
|
|
783
|
+
|
|
784
|
+
# Group by domain
|
|
785
|
+
by_domain = defaultdict(list)
|
|
786
|
+
for inst in instincts:
|
|
787
|
+
domain = inst.get('domain', 'general')
|
|
788
|
+
by_domain[domain].append(inst)
|
|
789
|
+
|
|
790
|
+
# High-confidence instincts by domain (candidates for skills)
|
|
791
|
+
high_conf = [i for i in instincts if i.get('confidence', 0) >= 0.8]
|
|
792
|
+
print(f"High confidence instincts (>=80%): {len(high_conf)}")
|
|
793
|
+
|
|
794
|
+
# Find clusters (instincts with similar triggers)
|
|
795
|
+
trigger_clusters = defaultdict(list)
|
|
796
|
+
for inst in instincts:
|
|
797
|
+
trigger = inst.get('trigger', '')
|
|
798
|
+
# Normalize trigger
|
|
799
|
+
trigger_key = trigger.lower()
|
|
800
|
+
for keyword in ['when', 'creating', 'writing', 'adding', 'implementing', 'testing']:
|
|
801
|
+
trigger_key = trigger_key.replace(keyword, '').strip()
|
|
802
|
+
trigger_clusters[trigger_key].append(inst)
|
|
803
|
+
|
|
804
|
+
# Find clusters with 2+ instincts (good skill candidates)
|
|
805
|
+
skill_candidates = []
|
|
806
|
+
for trigger, cluster in trigger_clusters.items():
|
|
807
|
+
if len(cluster) >= 2:
|
|
808
|
+
avg_conf = sum(i.get('confidence', 0.5) for i in cluster) / len(cluster)
|
|
809
|
+
skill_candidates.append({
|
|
810
|
+
'trigger': trigger,
|
|
811
|
+
'instincts': cluster,
|
|
812
|
+
'avg_confidence': avg_conf,
|
|
813
|
+
'domains': list(set(i.get('domain', 'general') for i in cluster)),
|
|
814
|
+
'scopes': list(set(i.get('scope', 'project') for i in cluster)),
|
|
815
|
+
})
|
|
816
|
+
|
|
817
|
+
# Sort by cluster size and confidence
|
|
818
|
+
skill_candidates.sort(key=lambda x: (-len(x['instincts']), -x['avg_confidence']))
|
|
819
|
+
|
|
820
|
+
print(f"\nPotential skill clusters found: {len(skill_candidates)}")
|
|
821
|
+
|
|
822
|
+
if skill_candidates:
|
|
823
|
+
print(f"\n## SKILL CANDIDATES\n")
|
|
824
|
+
for i, cand in enumerate(skill_candidates[:5], 1):
|
|
825
|
+
scope_info = ', '.join(cand['scopes'])
|
|
826
|
+
print(f"{i}. Cluster: \"{cand['trigger']}\"")
|
|
827
|
+
print(f" Instincts: {len(cand['instincts'])}")
|
|
828
|
+
print(f" Avg confidence: {cand['avg_confidence']:.0%}")
|
|
829
|
+
print(f" Domains: {', '.join(cand['domains'])}")
|
|
830
|
+
print(f" Scopes: {scope_info}")
|
|
831
|
+
print(f" Instincts:")
|
|
832
|
+
for inst in cand['instincts'][:3]:
|
|
833
|
+
print(f" - {inst.get('id')} [{inst.get('scope', '?')}]")
|
|
834
|
+
print()
|
|
835
|
+
|
|
836
|
+
# Command candidates (workflow instincts with high confidence)
|
|
837
|
+
workflow_instincts = [i for i in instincts if i.get('domain') == 'workflow' and i.get('confidence', 0) >= 0.7]
|
|
838
|
+
if workflow_instincts:
|
|
839
|
+
print(f"\n## COMMAND CANDIDATES ({len(workflow_instincts)})\n")
|
|
840
|
+
for inst in workflow_instincts[:5]:
|
|
841
|
+
trigger = inst.get('trigger', 'unknown')
|
|
842
|
+
cmd_name = trigger.replace('when ', '').replace('implementing ', '').replace('a ', '')
|
|
843
|
+
cmd_name = cmd_name.replace(' ', '-')[:20]
|
|
844
|
+
print(f" /{cmd_name}")
|
|
845
|
+
print(f" From: {inst.get('id')} [{inst.get('scope', '?')}]")
|
|
846
|
+
print(f" Confidence: {inst.get('confidence', 0.5):.0%}")
|
|
847
|
+
print()
|
|
848
|
+
|
|
849
|
+
# Agent candidates (complex multi-step patterns)
|
|
850
|
+
agent_candidates = [c for c in skill_candidates if len(c['instincts']) >= 3 and c['avg_confidence'] >= 0.75]
|
|
851
|
+
if agent_candidates:
|
|
852
|
+
print(f"\n## AGENT CANDIDATES ({len(agent_candidates)})\n")
|
|
853
|
+
for cand in agent_candidates[:3]:
|
|
854
|
+
agent_name = cand['trigger'].replace(' ', '-')[:20] + '-agent'
|
|
855
|
+
print(f" {agent_name}")
|
|
856
|
+
print(f" Covers {len(cand['instincts'])} instincts")
|
|
857
|
+
print(f" Avg confidence: {cand['avg_confidence']:.0%}")
|
|
858
|
+
print()
|
|
859
|
+
|
|
860
|
+
# Promotion candidates (project instincts that could be global)
|
|
861
|
+
_show_promotion_candidates(project)
|
|
862
|
+
|
|
863
|
+
if args.generate:
|
|
864
|
+
evolved_dir = project["evolved_dir"] if project["id"] != "global" else GLOBAL_EVOLVED_DIR
|
|
865
|
+
generated = _generate_evolved(skill_candidates, workflow_instincts, agent_candidates, evolved_dir)
|
|
866
|
+
if generated:
|
|
867
|
+
print(f"\nGenerated {len(generated)} evolved structures:")
|
|
868
|
+
for path in generated:
|
|
869
|
+
print(f" {path}")
|
|
870
|
+
else:
|
|
871
|
+
print("\nNo structures generated (need higher-confidence clusters).")
|
|
872
|
+
|
|
873
|
+
print(f"\n{'='*60}\n")
|
|
874
|
+
return 0
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
# ─────────────────────────────────────────────
|
|
878
|
+
# Promote Command
|
|
879
|
+
# ─────────────────────────────────────────────
|
|
880
|
+
|
|
881
|
+
def _find_cross_project_instincts() -> dict:
|
|
882
|
+
"""Find instincts that appear in multiple projects (promotion candidates).
|
|
883
|
+
|
|
884
|
+
Returns dict mapping instinct ID → list of (project_id, instinct) tuples.
|
|
885
|
+
"""
|
|
886
|
+
registry = load_registry()
|
|
887
|
+
cross_project = defaultdict(list)
|
|
888
|
+
|
|
889
|
+
for pid, pinfo in registry.items():
|
|
890
|
+
project_dir = PROJECTS_DIR / pid
|
|
891
|
+
personal_dir = project_dir / "instincts" / "personal"
|
|
892
|
+
inherited_dir = project_dir / "instincts" / "inherited"
|
|
893
|
+
|
|
894
|
+
# Track instinct IDs already seen for this project to avoid counting
|
|
895
|
+
# the same instinct twice within one project (e.g. in both personal/ and inherited/)
|
|
896
|
+
seen_in_project = set()
|
|
897
|
+
for d, stype in [(personal_dir, "personal"), (inherited_dir, "inherited")]:
|
|
898
|
+
for inst in _load_instincts_from_dir(d, stype, "project"):
|
|
899
|
+
iid = inst.get('id')
|
|
900
|
+
if iid and iid not in seen_in_project:
|
|
901
|
+
seen_in_project.add(iid)
|
|
902
|
+
cross_project[iid].append((pid, pinfo.get('name', pid), inst))
|
|
903
|
+
|
|
904
|
+
# Filter to only those appearing in 2+ unique projects
|
|
905
|
+
return {iid: entries for iid, entries in cross_project.items() if len(entries) >= 2}
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
def _show_promotion_candidates(project: dict) -> None:
|
|
909
|
+
"""Show instincts that could be promoted from project to global."""
|
|
910
|
+
cross = _find_cross_project_instincts()
|
|
911
|
+
|
|
912
|
+
if not cross:
|
|
913
|
+
return
|
|
914
|
+
|
|
915
|
+
# Filter to high-confidence ones not already global
|
|
916
|
+
global_instincts = _load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global")
|
|
917
|
+
global_instincts += _load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global")
|
|
918
|
+
global_ids = {i.get('id') for i in global_instincts}
|
|
919
|
+
|
|
920
|
+
candidates = []
|
|
921
|
+
for iid, entries in cross.items():
|
|
922
|
+
if iid in global_ids:
|
|
923
|
+
continue
|
|
924
|
+
avg_conf = sum(e[2].get('confidence', 0.5) for e in entries) / len(entries)
|
|
925
|
+
if avg_conf >= PROMOTE_CONFIDENCE_THRESHOLD:
|
|
926
|
+
candidates.append({
|
|
927
|
+
'id': iid,
|
|
928
|
+
'projects': [(pid, pname) for pid, pname, _ in entries],
|
|
929
|
+
'avg_confidence': avg_conf,
|
|
930
|
+
'sample': entries[0][2],
|
|
931
|
+
})
|
|
932
|
+
|
|
933
|
+
if candidates:
|
|
934
|
+
print(f"\n## PROMOTION CANDIDATES (project -> global)\n")
|
|
935
|
+
print(f" These instincts appear in {PROMOTE_MIN_PROJECTS}+ projects with high confidence:\n")
|
|
936
|
+
for cand in candidates[:10]:
|
|
937
|
+
proj_names = ', '.join(pname for _, pname in cand['projects'])
|
|
938
|
+
print(f" * {cand['id']} (avg: {cand['avg_confidence']:.0%})")
|
|
939
|
+
print(f" Found in: {proj_names}")
|
|
940
|
+
print()
|
|
941
|
+
print(f" Run `instinct-cli.py promote` to promote these to global scope.\n")
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
def cmd_promote(args) -> int:
|
|
945
|
+
"""Promote project-scoped instincts to global scope."""
|
|
946
|
+
project = detect_project()
|
|
947
|
+
|
|
948
|
+
if args.instinct_id:
|
|
949
|
+
# Promote a specific instinct
|
|
950
|
+
return _promote_specific(project, args.instinct_id, args.force, args.dry_run)
|
|
951
|
+
else:
|
|
952
|
+
# Auto-detect promotion candidates
|
|
953
|
+
return _promote_auto(project, args.force, args.dry_run)
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
def _promote_specific(project: dict, instinct_id: str, force: bool, dry_run: bool = False) -> int:
|
|
957
|
+
"""Promote a specific instinct by ID from current project to global."""
|
|
958
|
+
if not _validate_instinct_id(instinct_id):
|
|
959
|
+
print(f"Invalid instinct ID: '{instinct_id}'.", file=sys.stderr)
|
|
960
|
+
return 1
|
|
961
|
+
|
|
962
|
+
project_instincts = load_project_only_instincts(project)
|
|
963
|
+
target = next((i for i in project_instincts if i.get('id') == instinct_id), None)
|
|
964
|
+
|
|
965
|
+
if not target:
|
|
966
|
+
print(f"Instinct '{instinct_id}' not found in project {project['name']}.")
|
|
967
|
+
return 1
|
|
968
|
+
|
|
969
|
+
# Check if already global
|
|
970
|
+
global_instincts = _load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global")
|
|
971
|
+
global_instincts += _load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global")
|
|
972
|
+
if any(i.get('id') == instinct_id for i in global_instincts):
|
|
973
|
+
print(f"Instinct '{instinct_id}' already exists in global scope.")
|
|
974
|
+
return 1
|
|
975
|
+
|
|
976
|
+
print(f"\nPromoting: {instinct_id}")
|
|
977
|
+
print(f" From: project '{project['name']}'")
|
|
978
|
+
print(f" Confidence: {target.get('confidence', 0.5):.0%}")
|
|
979
|
+
print(f" Domain: {target.get('domain', 'general')}")
|
|
980
|
+
|
|
981
|
+
if dry_run:
|
|
982
|
+
print("\n[DRY RUN] No changes made.")
|
|
983
|
+
return 0
|
|
984
|
+
|
|
985
|
+
if not force:
|
|
986
|
+
response = input(f"\nPromote to global? [y/N] ")
|
|
987
|
+
if response.lower() != 'y':
|
|
988
|
+
print("Cancelled.")
|
|
989
|
+
return 0
|
|
990
|
+
|
|
991
|
+
# Write to global personal directory
|
|
992
|
+
output_file = GLOBAL_PERSONAL_DIR / f"{instinct_id}.yaml"
|
|
993
|
+
output_content = "---\n"
|
|
994
|
+
output_content += f"id: {target.get('id')}\n"
|
|
995
|
+
output_content += f"trigger: {_yaml_quote(target.get('trigger', 'unknown'))}\n"
|
|
996
|
+
output_content += f"confidence: {target.get('confidence', 0.5)}\n"
|
|
997
|
+
output_content += f"domain: {target.get('domain', 'general')}\n"
|
|
998
|
+
output_content += f"source: {target.get('source', 'promoted')}\n"
|
|
999
|
+
output_content += f"scope: global\n"
|
|
1000
|
+
output_content += f"promoted_from: {project['id']}\n"
|
|
1001
|
+
output_content += f"promoted_date: {datetime.now(timezone.utc).isoformat().replace('+00:00', 'Z')}\n"
|
|
1002
|
+
output_content += "---\n\n"
|
|
1003
|
+
output_content += target.get('content', '') + "\n"
|
|
1004
|
+
|
|
1005
|
+
output_file.write_text(output_content, encoding="utf-8")
|
|
1006
|
+
print(f"\nPromoted '{instinct_id}' to global scope.")
|
|
1007
|
+
print(f" Saved to: {output_file}")
|
|
1008
|
+
return 0
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
def _promote_auto(project: dict, force: bool, dry_run: bool) -> int:
|
|
1012
|
+
"""Auto-promote instincts found in multiple projects."""
|
|
1013
|
+
cross = _find_cross_project_instincts()
|
|
1014
|
+
|
|
1015
|
+
global_instincts = _load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global")
|
|
1016
|
+
global_instincts += _load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global")
|
|
1017
|
+
global_ids = {i.get('id') for i in global_instincts}
|
|
1018
|
+
|
|
1019
|
+
candidates = []
|
|
1020
|
+
for iid, entries in cross.items():
|
|
1021
|
+
if iid in global_ids:
|
|
1022
|
+
continue
|
|
1023
|
+
avg_conf = sum(e[2].get('confidence', 0.5) for e in entries) / len(entries)
|
|
1024
|
+
if avg_conf >= PROMOTE_CONFIDENCE_THRESHOLD and len(entries) >= PROMOTE_MIN_PROJECTS:
|
|
1025
|
+
candidates.append({
|
|
1026
|
+
'id': iid,
|
|
1027
|
+
'entries': entries,
|
|
1028
|
+
'avg_confidence': avg_conf,
|
|
1029
|
+
})
|
|
1030
|
+
|
|
1031
|
+
if not candidates:
|
|
1032
|
+
print("No instincts qualify for auto-promotion.")
|
|
1033
|
+
print(f" Criteria: appears in {PROMOTE_MIN_PROJECTS}+ projects, avg confidence >= {PROMOTE_CONFIDENCE_THRESHOLD:.0%}")
|
|
1034
|
+
return 0
|
|
1035
|
+
|
|
1036
|
+
print(f"\n{'='*60}")
|
|
1037
|
+
print(f" AUTO-PROMOTION CANDIDATES - {len(candidates)} found")
|
|
1038
|
+
print(f"{'='*60}\n")
|
|
1039
|
+
|
|
1040
|
+
for cand in candidates:
|
|
1041
|
+
proj_names = ', '.join(pname for _, pname, _ in cand['entries'])
|
|
1042
|
+
print(f" {cand['id']} (avg: {cand['avg_confidence']:.0%})")
|
|
1043
|
+
print(f" Found in {len(cand['entries'])} projects: {proj_names}")
|
|
1044
|
+
|
|
1045
|
+
if dry_run:
|
|
1046
|
+
print(f"\n[DRY RUN] No changes made.")
|
|
1047
|
+
return 0
|
|
1048
|
+
|
|
1049
|
+
if not force:
|
|
1050
|
+
response = input(f"\nPromote {len(candidates)} instincts to global? [y/N] ")
|
|
1051
|
+
if response.lower() != 'y':
|
|
1052
|
+
print("Cancelled.")
|
|
1053
|
+
return 0
|
|
1054
|
+
|
|
1055
|
+
promoted = 0
|
|
1056
|
+
for cand in candidates:
|
|
1057
|
+
if not _validate_instinct_id(cand['id']):
|
|
1058
|
+
print(f"Skipping invalid instinct ID during promotion: {cand['id']}", file=sys.stderr)
|
|
1059
|
+
continue
|
|
1060
|
+
|
|
1061
|
+
# Use the highest-confidence version
|
|
1062
|
+
best_entry = max(cand['entries'], key=lambda e: e[2].get('confidence', 0.5))
|
|
1063
|
+
inst = best_entry[2]
|
|
1064
|
+
|
|
1065
|
+
output_file = GLOBAL_PERSONAL_DIR / f"{cand['id']}.yaml"
|
|
1066
|
+
output_content = "---\n"
|
|
1067
|
+
output_content += f"id: {inst.get('id')}\n"
|
|
1068
|
+
output_content += f"trigger: {_yaml_quote(inst.get('trigger', 'unknown'))}\n"
|
|
1069
|
+
output_content += f"confidence: {cand['avg_confidence']}\n"
|
|
1070
|
+
output_content += f"domain: {inst.get('domain', 'general')}\n"
|
|
1071
|
+
output_content += f"source: auto-promoted\n"
|
|
1072
|
+
output_content += f"scope: global\n"
|
|
1073
|
+
output_content += f"promoted_date: {datetime.now(timezone.utc).isoformat().replace('+00:00', 'Z')}\n"
|
|
1074
|
+
output_content += f"seen_in_projects: {len(cand['entries'])}\n"
|
|
1075
|
+
output_content += "---\n\n"
|
|
1076
|
+
output_content += inst.get('content', '') + "\n"
|
|
1077
|
+
|
|
1078
|
+
output_file.write_text(output_content, encoding="utf-8")
|
|
1079
|
+
promoted += 1
|
|
1080
|
+
|
|
1081
|
+
print(f"\nPromoted {promoted} instincts to global scope.")
|
|
1082
|
+
return 0
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
# ─────────────────────────────────────────────
|
|
1086
|
+
# Projects Command
|
|
1087
|
+
# ─────────────────────────────────────────────
|
|
1088
|
+
|
|
1089
|
+
def cmd_projects(args) -> int:
|
|
1090
|
+
"""List all known projects and their instinct counts."""
|
|
1091
|
+
registry = load_registry()
|
|
1092
|
+
|
|
1093
|
+
if not registry:
|
|
1094
|
+
print("No projects registered yet.")
|
|
1095
|
+
print("Projects are auto-detected when you use Claude Code in a git repo.")
|
|
1096
|
+
return 0
|
|
1097
|
+
|
|
1098
|
+
print(f"\n{'='*60}")
|
|
1099
|
+
print(f" KNOWN PROJECTS - {len(registry)} total")
|
|
1100
|
+
print(f"{'='*60}\n")
|
|
1101
|
+
|
|
1102
|
+
for pid, pinfo in sorted(registry.items(), key=lambda x: x[1].get('last_seen', ''), reverse=True):
|
|
1103
|
+
project_dir = PROJECTS_DIR / pid
|
|
1104
|
+
personal_dir = project_dir / "instincts" / "personal"
|
|
1105
|
+
inherited_dir = project_dir / "instincts" / "inherited"
|
|
1106
|
+
|
|
1107
|
+
personal_count = len(_load_instincts_from_dir(personal_dir, "personal", "project"))
|
|
1108
|
+
inherited_count = len(_load_instincts_from_dir(inherited_dir, "inherited", "project"))
|
|
1109
|
+
obs_file = project_dir / "observations.jsonl"
|
|
1110
|
+
if obs_file.exists():
|
|
1111
|
+
with open(obs_file, encoding="utf-8") as f:
|
|
1112
|
+
obs_count = sum(1 for _ in f)
|
|
1113
|
+
else:
|
|
1114
|
+
obs_count = 0
|
|
1115
|
+
|
|
1116
|
+
print(f" {pinfo.get('name', pid)} [{pid}]")
|
|
1117
|
+
print(f" Root: {pinfo.get('root', 'unknown')}")
|
|
1118
|
+
if pinfo.get('remote'):
|
|
1119
|
+
print(f" Remote: {pinfo['remote']}")
|
|
1120
|
+
print(f" Instincts: {personal_count} personal, {inherited_count} inherited")
|
|
1121
|
+
print(f" Observations: {obs_count} events")
|
|
1122
|
+
print(f" Last seen: {pinfo.get('last_seen', 'unknown')}")
|
|
1123
|
+
print()
|
|
1124
|
+
|
|
1125
|
+
# Global stats
|
|
1126
|
+
global_personal = len(_load_instincts_from_dir(GLOBAL_PERSONAL_DIR, "personal", "global"))
|
|
1127
|
+
global_inherited = len(_load_instincts_from_dir(GLOBAL_INHERITED_DIR, "inherited", "global"))
|
|
1128
|
+
print(f" GLOBAL")
|
|
1129
|
+
print(f" Instincts: {global_personal} personal, {global_inherited} inherited")
|
|
1130
|
+
|
|
1131
|
+
print(f"\n{'='*60}\n")
|
|
1132
|
+
return 0
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
# ─────────────────────────────────────────────
|
|
1136
|
+
# Generate Evolved Structures
|
|
1137
|
+
# ─────────────────────────────────────────────
|
|
1138
|
+
|
|
1139
|
+
def _generate_evolved(skill_candidates: list, workflow_instincts: list, agent_candidates: list, evolved_dir: Path) -> list[str]:
|
|
1140
|
+
"""Generate skill/command/agent files from analyzed instinct clusters."""
|
|
1141
|
+
generated = []
|
|
1142
|
+
|
|
1143
|
+
# Generate skills from top candidates
|
|
1144
|
+
for cand in skill_candidates[:5]:
|
|
1145
|
+
trigger = cand['trigger'].strip()
|
|
1146
|
+
if not trigger:
|
|
1147
|
+
continue
|
|
1148
|
+
name = re.sub(r'[^a-z0-9]+', '-', trigger.lower()).strip('-')[:30]
|
|
1149
|
+
if not name:
|
|
1150
|
+
continue
|
|
1151
|
+
|
|
1152
|
+
skill_dir = evolved_dir / "skills" / name
|
|
1153
|
+
skill_dir.mkdir(parents=True, exist_ok=True)
|
|
1154
|
+
|
|
1155
|
+
content = f"# {name}\n\n"
|
|
1156
|
+
content += f"Evolved from {len(cand['instincts'])} instincts "
|
|
1157
|
+
content += f"(avg confidence: {cand['avg_confidence']:.0%})\n\n"
|
|
1158
|
+
content += f"## When to Apply\n\n"
|
|
1159
|
+
content += f"Trigger: {trigger}\n\n"
|
|
1160
|
+
content += f"## Actions\n\n"
|
|
1161
|
+
for inst in cand['instincts']:
|
|
1162
|
+
inst_content = inst.get('content', '')
|
|
1163
|
+
action_match = re.search(r'## Action\s*\n\s*(.+?)(?:\n\n|\n##|$)', inst_content, re.DOTALL)
|
|
1164
|
+
action = action_match.group(1).strip() if action_match else inst.get('id', 'unnamed')
|
|
1165
|
+
content += f"- {action}\n"
|
|
1166
|
+
|
|
1167
|
+
(skill_dir / "SKILL.md").write_text(content, encoding="utf-8")
|
|
1168
|
+
generated.append(str(skill_dir / "SKILL.md"))
|
|
1169
|
+
|
|
1170
|
+
# Generate commands from workflow instincts
|
|
1171
|
+
for inst in workflow_instincts[:5]:
|
|
1172
|
+
trigger = inst.get('trigger', 'unknown')
|
|
1173
|
+
cmd_name = re.sub(r'[^a-z0-9]+', '-', trigger.lower().replace('when ', '').replace('implementing ', ''))
|
|
1174
|
+
cmd_name = cmd_name.strip('-')[:20]
|
|
1175
|
+
if not cmd_name:
|
|
1176
|
+
continue
|
|
1177
|
+
|
|
1178
|
+
cmd_file = evolved_dir / "commands" / f"{cmd_name}.md"
|
|
1179
|
+
content = f"# {cmd_name}\n\n"
|
|
1180
|
+
content += f"Evolved from instinct: {inst.get('id', 'unnamed')}\n"
|
|
1181
|
+
content += f"Confidence: {inst.get('confidence', 0.5):.0%}\n\n"
|
|
1182
|
+
content += inst.get('content', '')
|
|
1183
|
+
|
|
1184
|
+
cmd_file.write_text(content, encoding="utf-8")
|
|
1185
|
+
generated.append(str(cmd_file))
|
|
1186
|
+
|
|
1187
|
+
# Generate agents from complex clusters
|
|
1188
|
+
for cand in agent_candidates[:3]:
|
|
1189
|
+
trigger = cand['trigger'].strip()
|
|
1190
|
+
agent_name = re.sub(r'[^a-z0-9]+', '-', trigger.lower()).strip('-')[:20]
|
|
1191
|
+
if not agent_name:
|
|
1192
|
+
continue
|
|
1193
|
+
|
|
1194
|
+
agent_file = evolved_dir / "agents" / f"{agent_name}.md"
|
|
1195
|
+
domains = ', '.join(cand['domains'])
|
|
1196
|
+
instinct_ids = [i.get('id', 'unnamed') for i in cand['instincts']]
|
|
1197
|
+
|
|
1198
|
+
content = f"---\nmodel: sonnet\ntools: Read, Grep, Glob\n---\n"
|
|
1199
|
+
content += f"# {agent_name}\n\n"
|
|
1200
|
+
content += f"Evolved from {len(cand['instincts'])} instincts "
|
|
1201
|
+
content += f"(avg confidence: {cand['avg_confidence']:.0%})\n"
|
|
1202
|
+
content += f"Domains: {domains}\n\n"
|
|
1203
|
+
content += f"## Source Instincts\n\n"
|
|
1204
|
+
for iid in instinct_ids:
|
|
1205
|
+
content += f"- {iid}\n"
|
|
1206
|
+
|
|
1207
|
+
agent_file.write_text(content, encoding="utf-8")
|
|
1208
|
+
generated.append(str(agent_file))
|
|
1209
|
+
|
|
1210
|
+
return generated
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
# ─────────────────────────────────────────────
|
|
1214
|
+
# Pending Instinct Helpers
|
|
1215
|
+
# ─────────────────────────────────────────────
|
|
1216
|
+
|
|
1217
|
+
def _collect_pending_dirs() -> list[Path]:
|
|
1218
|
+
"""Return all pending instinct directories (global + per-project)."""
|
|
1219
|
+
dirs = []
|
|
1220
|
+
global_pending = GLOBAL_INSTINCTS_DIR / "pending"
|
|
1221
|
+
if global_pending.is_dir():
|
|
1222
|
+
dirs.append(global_pending)
|
|
1223
|
+
if PROJECTS_DIR.is_dir():
|
|
1224
|
+
for project_dir in sorted(PROJECTS_DIR.iterdir()):
|
|
1225
|
+
if project_dir.is_dir():
|
|
1226
|
+
pending = project_dir / "instincts" / "pending"
|
|
1227
|
+
if pending.is_dir():
|
|
1228
|
+
dirs.append(pending)
|
|
1229
|
+
return dirs
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
def _parse_created_date(file_path: Path) -> Optional[datetime]:
|
|
1233
|
+
"""Parse the 'created' date from YAML frontmatter of an instinct file.
|
|
1234
|
+
|
|
1235
|
+
Falls back to file mtime if no 'created' field is found.
|
|
1236
|
+
"""
|
|
1237
|
+
try:
|
|
1238
|
+
content = file_path.read_text(encoding="utf-8")
|
|
1239
|
+
except (OSError, UnicodeDecodeError):
|
|
1240
|
+
return None
|
|
1241
|
+
|
|
1242
|
+
in_frontmatter = False
|
|
1243
|
+
for line in content.split('\n'):
|
|
1244
|
+
stripped = line.strip()
|
|
1245
|
+
if stripped == '---':
|
|
1246
|
+
if in_frontmatter:
|
|
1247
|
+
break # end of frontmatter without finding created
|
|
1248
|
+
in_frontmatter = True
|
|
1249
|
+
continue
|
|
1250
|
+
if in_frontmatter and ':' in line:
|
|
1251
|
+
key, value = line.split(':', 1)
|
|
1252
|
+
if key.strip() == 'created':
|
|
1253
|
+
date_str = value.strip().strip('"').strip("'")
|
|
1254
|
+
for fmt in (
|
|
1255
|
+
"%Y-%m-%dT%H:%M:%S%z",
|
|
1256
|
+
"%Y-%m-%dT%H:%M:%SZ",
|
|
1257
|
+
"%Y-%m-%dT%H:%M:%S",
|
|
1258
|
+
"%Y-%m-%d",
|
|
1259
|
+
):
|
|
1260
|
+
try:
|
|
1261
|
+
dt = datetime.strptime(date_str, fmt)
|
|
1262
|
+
if dt.tzinfo is None:
|
|
1263
|
+
dt = dt.replace(tzinfo=timezone.utc)
|
|
1264
|
+
return dt
|
|
1265
|
+
except ValueError:
|
|
1266
|
+
continue
|
|
1267
|
+
|
|
1268
|
+
# Fallback: file modification time
|
|
1269
|
+
try:
|
|
1270
|
+
mtime = file_path.stat().st_mtime
|
|
1271
|
+
return datetime.fromtimestamp(mtime, tz=timezone.utc)
|
|
1272
|
+
except OSError:
|
|
1273
|
+
return None
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
def _collect_pending_instincts() -> list[dict]:
|
|
1277
|
+
"""Scan all pending directories and return info about each pending instinct.
|
|
1278
|
+
|
|
1279
|
+
Each dict contains: path, created, age_days, name, parent_dir.
|
|
1280
|
+
"""
|
|
1281
|
+
now = datetime.now(timezone.utc)
|
|
1282
|
+
results = []
|
|
1283
|
+
for pending_dir in _collect_pending_dirs():
|
|
1284
|
+
files = [
|
|
1285
|
+
f for f in sorted(pending_dir.iterdir())
|
|
1286
|
+
if f.is_file() and f.suffix.lower() in ALLOWED_INSTINCT_EXTENSIONS
|
|
1287
|
+
]
|
|
1288
|
+
for file_path in files:
|
|
1289
|
+
created = _parse_created_date(file_path)
|
|
1290
|
+
if created is None:
|
|
1291
|
+
print(f"Warning: could not parse age for pending instinct: {file_path.name}", file=sys.stderr)
|
|
1292
|
+
continue
|
|
1293
|
+
age = now - created
|
|
1294
|
+
results.append({
|
|
1295
|
+
"path": file_path,
|
|
1296
|
+
"created": created,
|
|
1297
|
+
"age_days": age.days,
|
|
1298
|
+
"name": file_path.stem,
|
|
1299
|
+
"parent_dir": str(pending_dir),
|
|
1300
|
+
})
|
|
1301
|
+
return results
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
# ─────────────────────────────────────────────
|
|
1305
|
+
# Prune Command
|
|
1306
|
+
# ─────────────────────────────────────────────
|
|
1307
|
+
|
|
1308
|
+
def cmd_prune(args) -> int:
|
|
1309
|
+
"""Delete pending instincts older than the TTL threshold."""
|
|
1310
|
+
max_age = args.max_age
|
|
1311
|
+
dry_run = args.dry_run
|
|
1312
|
+
quiet = args.quiet
|
|
1313
|
+
|
|
1314
|
+
pending = _collect_pending_instincts()
|
|
1315
|
+
|
|
1316
|
+
expired = [p for p in pending if p["age_days"] >= max_age]
|
|
1317
|
+
remaining = [p for p in pending if p["age_days"] < max_age]
|
|
1318
|
+
|
|
1319
|
+
if dry_run:
|
|
1320
|
+
if not quiet:
|
|
1321
|
+
if expired:
|
|
1322
|
+
print(f"\n[DRY RUN] Would prune {len(expired)} pending instinct(s) older than {max_age} days:\n")
|
|
1323
|
+
for item in expired:
|
|
1324
|
+
print(f" - {item['name']} (age: {item['age_days']}d) — {item['path']}")
|
|
1325
|
+
else:
|
|
1326
|
+
print(f"No pending instincts older than {max_age} days.")
|
|
1327
|
+
print(f"\nSummary: {len(expired)} would be pruned, {len(remaining)} remaining")
|
|
1328
|
+
return 0
|
|
1329
|
+
|
|
1330
|
+
pruned = 0
|
|
1331
|
+
pruned_items = []
|
|
1332
|
+
for item in expired:
|
|
1333
|
+
try:
|
|
1334
|
+
item["path"].unlink()
|
|
1335
|
+
pruned += 1
|
|
1336
|
+
pruned_items.append(item)
|
|
1337
|
+
except OSError as e:
|
|
1338
|
+
if not quiet:
|
|
1339
|
+
print(f"Warning: Failed to delete {item['path']}: {e}", file=sys.stderr)
|
|
1340
|
+
|
|
1341
|
+
if not quiet:
|
|
1342
|
+
if pruned > 0:
|
|
1343
|
+
print(f"\nPruned {pruned} pending instinct(s) older than {max_age} days.")
|
|
1344
|
+
for item in pruned_items:
|
|
1345
|
+
print(f" - {item['name']} (age: {item['age_days']}d)")
|
|
1346
|
+
else:
|
|
1347
|
+
print(f"No pending instincts older than {max_age} days.")
|
|
1348
|
+
failed = len(expired) - pruned
|
|
1349
|
+
remaining_total = len(remaining) + failed
|
|
1350
|
+
print(f"\nSummary: {pruned} pruned, {remaining_total} remaining")
|
|
1351
|
+
|
|
1352
|
+
return 0
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
# ─────────────────────────────────────────────
|
|
1356
|
+
# Main
|
|
1357
|
+
# ─────────────────────────────────────────────
|
|
1358
|
+
|
|
1359
|
+
def main() -> int:
|
|
1360
|
+
_ensure_global_dirs()
|
|
1361
|
+
parser = argparse.ArgumentParser(description='Instinct CLI for Continuous Learning v2.1 (Project-Scoped)')
|
|
1362
|
+
subparsers = parser.add_subparsers(dest='command', help='Available commands')
|
|
1363
|
+
|
|
1364
|
+
# Status
|
|
1365
|
+
status_parser = subparsers.add_parser('status', help='Show instinct status (project + global)')
|
|
1366
|
+
|
|
1367
|
+
# Import
|
|
1368
|
+
import_parser = subparsers.add_parser('import', help='Import instincts')
|
|
1369
|
+
import_parser.add_argument('source', help='File path or URL')
|
|
1370
|
+
import_parser.add_argument('--dry-run', action='store_true', help='Preview without importing')
|
|
1371
|
+
import_parser.add_argument('--force', action='store_true', help='Skip confirmation')
|
|
1372
|
+
import_parser.add_argument('--min-confidence', type=float, help='Minimum confidence threshold')
|
|
1373
|
+
import_parser.add_argument('--scope', choices=['project', 'global'], default='project',
|
|
1374
|
+
help='Import scope (default: project)')
|
|
1375
|
+
|
|
1376
|
+
# Export
|
|
1377
|
+
export_parser = subparsers.add_parser('export', help='Export instincts')
|
|
1378
|
+
export_parser.add_argument('--output', '-o', help='Output file')
|
|
1379
|
+
export_parser.add_argument('--domain', help='Filter by domain')
|
|
1380
|
+
export_parser.add_argument('--min-confidence', type=float, help='Minimum confidence')
|
|
1381
|
+
export_parser.add_argument('--scope', choices=['project', 'global', 'all'], default='all',
|
|
1382
|
+
help='Export scope (default: all)')
|
|
1383
|
+
|
|
1384
|
+
# Evolve
|
|
1385
|
+
evolve_parser = subparsers.add_parser('evolve', help='Analyze and evolve instincts')
|
|
1386
|
+
evolve_parser.add_argument('--generate', action='store_true', help='Generate evolved structures')
|
|
1387
|
+
|
|
1388
|
+
# Promote (new in v2.1)
|
|
1389
|
+
promote_parser = subparsers.add_parser('promote', help='Promote project instincts to global scope')
|
|
1390
|
+
promote_parser.add_argument('instinct_id', nargs='?', help='Specific instinct ID to promote')
|
|
1391
|
+
promote_parser.add_argument('--force', action='store_true', help='Skip confirmation')
|
|
1392
|
+
promote_parser.add_argument('--dry-run', action='store_true', help='Preview without promoting')
|
|
1393
|
+
|
|
1394
|
+
# Projects (new in v2.1)
|
|
1395
|
+
projects_parser = subparsers.add_parser('projects', help='List known projects and instinct counts')
|
|
1396
|
+
|
|
1397
|
+
# Prune (pending instinct TTL)
|
|
1398
|
+
prune_parser = subparsers.add_parser('prune', help='Delete pending instincts older than TTL')
|
|
1399
|
+
prune_parser.add_argument('--max-age', type=int, default=PENDING_TTL_DAYS,
|
|
1400
|
+
help=f'Max age in days before pruning (default: {PENDING_TTL_DAYS})')
|
|
1401
|
+
prune_parser.add_argument('--dry-run', action='store_true', help='Preview without deleting')
|
|
1402
|
+
prune_parser.add_argument('--quiet', action='store_true', help='Suppress output (for automated use)')
|
|
1403
|
+
|
|
1404
|
+
args = parser.parse_args()
|
|
1405
|
+
|
|
1406
|
+
if args.command == 'status':
|
|
1407
|
+
return cmd_status(args)
|
|
1408
|
+
elif args.command == 'import':
|
|
1409
|
+
return cmd_import(args)
|
|
1410
|
+
elif args.command == 'export':
|
|
1411
|
+
return cmd_export(args)
|
|
1412
|
+
elif args.command == 'evolve':
|
|
1413
|
+
return cmd_evolve(args)
|
|
1414
|
+
elif args.command == 'promote':
|
|
1415
|
+
return cmd_promote(args)
|
|
1416
|
+
elif args.command == 'projects':
|
|
1417
|
+
return cmd_projects(args)
|
|
1418
|
+
elif args.command == 'prune':
|
|
1419
|
+
return cmd_prune(args)
|
|
1420
|
+
else:
|
|
1421
|
+
parser.print_help()
|
|
1422
|
+
return 1
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
if __name__ == '__main__':
|
|
1426
|
+
sys.exit(main())
|