@heyai-rules/pilo-masterkit 1.2.2 → 3.1.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/agents/architect.md +211 -211
- package/.agent/agents/build-error-resolver.md +114 -114
- package/.agent/agents/chief-of-staff.md +151 -151
- package/.agent/agents/code-reviewer.md +237 -237
- package/.agent/agents/cpp-build-resolver.md +90 -90
- package/.agent/agents/cpp-reviewer.md +72 -72
- package/.agent/agents/csharp-reviewer.md +101 -0
- package/.agent/agents/dart-build-resolver.md +201 -0
- package/.agent/agents/database-reviewer.md +91 -91
- package/.agent/agents/doc-updater.md +107 -107
- package/.agent/agents/docs-lookup.md +68 -68
- package/.agent/agents/e2e-runner.md +107 -107
- package/.agent/agents/flutter-reviewer.md +243 -243
- package/.agent/agents/gan-evaluator.md +209 -0
- package/.agent/agents/gan-generator.md +131 -0
- package/.agent/agents/gan-planner.md +99 -0
- package/.agent/agents/go-build-resolver.md +94 -94
- package/.agent/agents/go-reviewer.md +76 -76
- package/.agent/agents/harness-optimizer.md +35 -35
- package/.agent/agents/healthcare-reviewer.md +83 -0
- package/.agent/agents/java-build-resolver.md +153 -153
- package/.agent/agents/java-reviewer.md +92 -92
- package/.agent/agents/kotlin-build-resolver.md +118 -118
- package/.agent/agents/kotlin-reviewer.md +159 -159
- package/.agent/agents/loop-operator.md +36 -36
- package/.agent/agents/opensource-forker.md +198 -0
- package/.agent/agents/opensource-packager.md +249 -0
- package/.agent/agents/opensource-sanitizer.md +188 -0
- package/.agent/agents/performance-optimizer.md +392 -133
- package/.agent/agents/personas/athena-agent/agent.json +10 -0
- package/.agent/agents/personas/athena-agent/athena-backend-logic-architecture-profile.md +189 -0
- package/.agent/agents/personas/athena-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/athena-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/athena-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/athena-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/athena-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/athena-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/da-vinci-agent/agent.json +10 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/da-vinci-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/da-vinci-agent/da-vinci-frontend-ui-ux-design-profile.md +189 -0
- package/.agent/agents/personas/da-vinci-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/da-vinci-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/duong-tang-agent/agent.json +10 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/duong-tang-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/duong-tang-agent/tang-monk-quality-testing-documentation-profile.md +189 -0
- package/.agent/agents/personas/duong-tang-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/duong-tang-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/gia-cat-luong-agent/agent.json +10 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/gia-cat-luong-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/gia-cat-luong-agent/kongming-research-strategy-analysis-profile.md +189 -0
- package/.agent/agents/personas/gia-cat-luong-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/gia-cat-luong-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/mihata-agent/agent.json +10 -0
- package/.agent/agents/personas/mihata-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/mihata-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/mihata-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/mihata-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/mihata-agent/mihata-multi-agent-orchestration-profile.md +189 -0
- package/.agent/agents/personas/mihata-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/mihata-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/tesla-agent/agent.json +10 -0
- package/.agent/agents/personas/tesla-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/tesla-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/tesla-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/tesla-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/tesla-agent/tesla-fullstack-system-optimization-profile.md +189 -0
- package/.agent/agents/personas/tesla-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/tesla-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/tu-ma-y-agent/agent.json +10 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/tu-ma-y-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/tu-ma-y-agent/simayi-feasibility-risk-control-profile.md +189 -0
- package/.agent/agents/personas/tu-ma-y-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/tu-ma-y-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/venti-agent/agent.json +10 -0
- package/.agent/agents/personas/venti-agent/context-files/agents.md +55 -0
- package/.agent/agents/personas/venti-agent/context-files/identity.md +23 -0
- package/.agent/agents/personas/venti-agent/context-files/soul.md +51 -0
- package/.agent/agents/personas/venti-agent/context-files/user-predefined.md +15 -0
- package/.agent/agents/personas/venti-agent/user-context-files/system/bootstrap.md +37 -0
- package/.agent/agents/personas/venti-agent/user-context-files/system/user.md +45 -0
- package/.agent/agents/personas/venti-agent/venti-learning-communication-mentoring-profile.md +189 -0
- package/.agent/agents/planner.md +212 -212
- package/.agent/agents/python-reviewer.md +98 -98
- package/.agent/agents/pytorch-build-resolver.md +120 -120
- package/.agent/agents/refactor-cleaner.md +85 -85
- package/.agent/agents/rust-build-resolver.md +148 -148
- package/.agent/agents/rust-reviewer.md +94 -94
- package/.agent/agents/security-reviewer.md +108 -108
- package/.agent/agents/tdd-guide.md +91 -91
- package/.agent/agents/typescript-reviewer.md +112 -112
- package/.agent/contexts/dev.md +20 -0
- package/.agent/contexts/research.md +26 -0
- package/.agent/contexts/review.md +22 -0
- package/.agent/hooks/hooks.json +395 -0
- package/.agent/hooks/readme.md +222 -0
- package/.agent/mcp-configs/mcp-servers.json +181 -0
- package/.agent/rules/common/agents.md +50 -0
- package/.agent/rules/common/code-review.md +124 -0
- package/.agent/rules/common/coding-style.md +48 -0
- package/.agent/rules/common/development-workflow.md +44 -0
- package/.agent/rules/common/git-workflow.md +24 -0
- package/.agent/rules/common/hooks.md +30 -0
- package/.agent/rules/common/patterns.md +31 -0
- package/.agent/rules/common/performance.md +55 -0
- package/.agent/rules/common/security.md +29 -0
- package/.agent/rules/common/testing.md +29 -0
- package/.agent/rules/cpp/coding-style.md +44 -0
- package/.agent/rules/cpp/hooks.md +39 -0
- package/.agent/rules/cpp/patterns.md +51 -0
- package/.agent/rules/cpp/security.md +51 -0
- package/.agent/rules/cpp/testing.md +44 -0
- package/.agent/rules/csharp/coding-style.md +72 -0
- package/.agent/rules/csharp/hooks.md +25 -0
- package/.agent/rules/csharp/patterns.md +50 -0
- package/.agent/rules/csharp/security.md +58 -0
- package/.agent/rules/csharp/testing.md +46 -0
- package/.agent/rules/dart/coding-style.md +159 -0
- package/.agent/rules/dart/hooks.md +66 -0
- package/.agent/rules/dart/patterns.md +261 -0
- package/.agent/rules/dart/security.md +135 -0
- package/.agent/rules/dart/testing.md +215 -0
- package/.agent/rules/golang/coding-style.md +32 -0
- package/.agent/rules/golang/hooks.md +17 -0
- package/.agent/rules/golang/patterns.md +45 -0
- package/.agent/rules/golang/security.md +34 -0
- package/.agent/rules/golang/testing.md +31 -0
- package/.agent/rules/java/coding-style.md +114 -0
- package/.agent/rules/java/hooks.md +18 -0
- package/.agent/rules/java/patterns.md +146 -0
- package/.agent/rules/java/security.md +100 -0
- package/.agent/rules/java/testing.md +131 -0
- package/.agent/rules/kotlin/coding-style.md +86 -0
- package/.agent/rules/kotlin/hooks.md +17 -0
- package/.agent/rules/kotlin/patterns.md +146 -0
- package/.agent/rules/kotlin/security.md +82 -0
- package/.agent/rules/kotlin/testing.md +128 -0
- package/.agent/rules/perl/coding-style.md +46 -0
- package/.agent/rules/perl/hooks.md +22 -0
- package/.agent/rules/perl/patterns.md +76 -0
- package/.agent/rules/perl/security.md +69 -0
- package/.agent/rules/perl/testing.md +54 -0
- package/.agent/rules/php/coding-style.md +40 -0
- package/.agent/rules/php/hooks.md +24 -0
- package/.agent/rules/php/patterns.md +33 -0
- package/.agent/rules/php/security.md +37 -0
- package/.agent/rules/php/testing.md +39 -0
- package/.agent/rules/python/coding-style.md +42 -0
- package/.agent/rules/python/hooks.md +19 -0
- package/.agent/rules/python/patterns.md +39 -0
- package/.agent/rules/python/security.md +30 -0
- package/.agent/rules/python/testing.md +38 -0
- package/.agent/rules/readme.md +111 -0
- package/.agent/rules/rust/coding-style.md +151 -0
- package/.agent/rules/rust/hooks.md +16 -0
- package/.agent/rules/rust/patterns.md +168 -0
- package/.agent/rules/rust/security.md +141 -0
- package/.agent/rules/rust/testing.md +154 -0
- package/.agent/rules/swift/coding-style.md +47 -0
- package/.agent/rules/swift/hooks.md +20 -0
- package/.agent/rules/swift/patterns.md +66 -0
- package/.agent/rules/swift/security.md +33 -0
- package/.agent/rules/swift/testing.md +45 -0
- package/.agent/rules/typescript/coding-style.md +199 -0
- package/.agent/rules/typescript/hooks.md +22 -0
- package/.agent/rules/typescript/patterns.md +52 -0
- package/.agent/rules/typescript/security.md +28 -0
- package/.agent/rules/typescript/testing.md +18 -0
- package/.agent/rules/web/coding-style.md +96 -0
- package/.agent/rules/web/design-quality.md +63 -0
- package/.agent/rules/web/hooks.md +120 -0
- package/.agent/rules/web/patterns.md +79 -0
- package/.agent/rules/web/performance.md +64 -0
- package/.agent/rules/web/security.md +57 -0
- package/.agent/rules/web/testing.md +55 -0
- package/.agent/rules/zh/agents.md +50 -0
- package/.agent/rules/zh/code-review.md +124 -0
- package/.agent/rules/zh/coding-style.md +48 -0
- package/.agent/rules/zh/development-workflow.md +44 -0
- package/.agent/rules/zh/git-workflow.md +24 -0
- package/.agent/rules/zh/hooks.md +30 -0
- package/.agent/rules/zh/patterns.md +31 -0
- package/.agent/rules/zh/performance.md +55 -0
- package/.agent/rules/zh/readme.md +108 -0
- package/.agent/rules/zh/security.md +29 -0
- package/.agent/rules/zh/testing.md +29 -0
- package/.agent/skills/agent-eval/SKILL.md +145 -0
- package/.agent/skills/agent-harness-construction/SKILL.md +73 -0
- package/.agent/skills/agent-payment-x402/SKILL.md +178 -0
- package/.agent/skills/agentic-engineering/SKILL.md +63 -0
- package/.agent/skills/ai-first-engineering/SKILL.md +51 -0
- package/.agent/skills/ai-regression-testing/SKILL.md +385 -0
- package/.agent/skills/android-clean-architecture/SKILL.md +339 -0
- package/.agent/skills/api-design/SKILL.md +523 -0
- package/.agent/skills/architecture-decision-records/SKILL.md +179 -0
- package/.agent/skills/article-writing/SKILL.md +79 -0
- package/.agent/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/.agent/skills/autonomous-loops/SKILL.md +610 -0
- package/.agent/skills/backend-patterns/SKILL.md +598 -0
- package/.agent/skills/benchmark/SKILL.md +93 -0
- package/.agent/skills/blueprint/SKILL.md +105 -0
- package/.agent/skills/brand-voice/SKILL.md +97 -0
- package/.agent/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/.agent/skills/browser-qa/SKILL.md +87 -0
- package/.agent/skills/bun-runtime/SKILL.md +84 -0
- package/.agent/skills/canary-watch/SKILL.md +99 -0
- package/.agent/skills/carrier-relationship-management/SKILL.md +212 -0
- package/.agent/skills/ck/SKILL.md +147 -0
- package/.agent/skills/ck/commands/forget.mjs +44 -0
- package/.agent/skills/ck/commands/info.mjs +24 -0
- package/.agent/skills/ck/commands/init.mjs +143 -0
- package/.agent/skills/ck/commands/list.mjs +40 -0
- package/.agent/skills/ck/commands/migrate.mjs +202 -0
- package/.agent/skills/ck/commands/resume.mjs +36 -0
- package/.agent/skills/ck/commands/save.mjs +210 -0
- package/.agent/skills/ck/commands/shared.mjs +387 -0
- package/.agent/skills/ck/hooks/session-start.mjs +224 -0
- package/.agent/skills/claude-api/SKILL.md +337 -0
- package/.agent/skills/claude-devfleet/SKILL.md +103 -0
- package/.agent/skills/click-path-audit/SKILL.md +244 -0
- package/.agent/skills/clickhouse-io/SKILL.md +439 -0
- package/.agent/skills/codebase-onboarding/SKILL.md +233 -0
- package/.agent/skills/coding-standards/SKILL.md +530 -0
- package/.agent/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/.agent/skills/configure-ecc/SKILL.md +367 -0
- package/.agent/skills/connections-optimizer/SKILL.md +189 -0
- package/.agent/skills/content-engine/SKILL.md +131 -0
- package/.agent/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/.agent/skills/context-budget/SKILL.md +135 -0
- package/.agent/skills/continuous-agent-loop/SKILL.md +45 -0
- package/.agent/skills/continuous-learning/SKILL.md +119 -0
- package/.agent/skills/continuous-learning/config.json +18 -0
- package/.agent/skills/continuous-learning/evaluate-session.sh +69 -0
- package/.agent/skills/continuous-learning-v2/SKILL.md +365 -0
- package/.agent/skills/continuous-learning-v2/agents/observer-loop.sh +271 -0
- package/.agent/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/.agent/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/.agent/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/.agent/skills/continuous-learning-v2/config.json +8 -0
- package/.agent/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/.agent/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/.agent/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/.agent/skills/continuous-learning-v2/scripts/test-parse-instinct.py +984 -0
- package/.agent/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/.agent/skills/cpp-coding-standards/SKILL.md +723 -0
- package/.agent/skills/cpp-testing/SKILL.md +324 -0
- package/.agent/skills/crosspost/SKILL.md +111 -0
- package/.agent/skills/csharp-testing/SKILL.md +321 -0
- package/.agent/skills/customer-billing-ops/SKILL.md +140 -0
- package/.agent/skills/customs-trade-compliance/SKILL.md +263 -0
- package/.agent/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/.agent/skills/data-scraper-agent/SKILL.md +764 -0
- package/.agent/skills/database-migrations/SKILL.md +429 -0
- package/.agent/skills/deep-research/SKILL.md +155 -0
- package/.agent/skills/deployment-patterns/SKILL.md +427 -0
- package/.agent/skills/design-system/SKILL.md +82 -0
- package/.agent/skills/django-patterns/SKILL.md +734 -0
- package/.agent/skills/django-security/SKILL.md +593 -0
- package/.agent/skills/django-tdd/SKILL.md +729 -0
- package/.agent/skills/django-verification/SKILL.md +469 -0
- package/.agent/skills/dmux-workflows/SKILL.md +191 -0
- package/.agent/skills/docker-patterns/SKILL.md +364 -0
- package/.agent/skills/documentation-lookup/SKILL.md +90 -0
- package/.agent/skills/dotnet-patterns/SKILL.md +321 -0
- package/.agent/skills/e2e-testing/SKILL.md +326 -0
- package/.agent/skills/energy-procurement/SKILL.md +228 -0
- package/.agent/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/.agent/skills/eval-harness/SKILL.md +270 -0
- package/.agent/skills/exa-search/SKILL.md +103 -0
- package/.agent/skills/fal-ai-media/SKILL.md +284 -0
- package/.agent/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/.agent/skills/foundation-models-on-device/SKILL.md +243 -0
- package/.agent/skills/frontend-patterns/SKILL.md +642 -0
- package/.agent/skills/frontend-slides/SKILL.md +184 -0
- package/.agent/skills/frontend-slides/style-presets.md +330 -0
- package/.agent/skills/gan-style-harness/SKILL.md +278 -0
- package/.agent/skills/git-workflow/SKILL.md +715 -0
- package/.agent/skills/golang-patterns/SKILL.md +674 -0
- package/.agent/skills/golang-testing/SKILL.md +720 -0
- package/.agent/skills/google-workspace-ops/SKILL.md +95 -0
- package/.agent/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/.agent/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/.agent/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/.agent/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/.agent/skills/hexagonal-architecture/SKILL.md +276 -0
- package/.agent/skills/inventory-demand-planning/SKILL.md +247 -0
- package/.agent/skills/investor-materials/SKILL.md +96 -0
- package/.agent/skills/investor-outreach/SKILL.md +91 -0
- package/.agent/skills/iterative-retrieval/SKILL.md +211 -0
- package/.agent/skills/java-coding-standards/SKILL.md +147 -0
- package/.agent/skills/jira-integration/SKILL.md +293 -0
- package/.agent/skills/jpa-patterns/SKILL.md +151 -0
- package/.agent/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/.agent/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/.agent/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/.agent/skills/kotlin-patterns/SKILL.md +711 -0
- package/.agent/skills/kotlin-testing/SKILL.md +824 -0
- package/.agent/skills/laravel-patterns/SKILL.md +415 -0
- package/.agent/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/.agent/skills/laravel-security/SKILL.md +285 -0
- package/.agent/skills/laravel-tdd/SKILL.md +283 -0
- package/.agent/skills/laravel-verification/SKILL.md +179 -0
- package/.agent/skills/lead-intelligence/SKILL.md +321 -0
- package/.agent/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/.agent/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/.agent/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/.agent/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/.agent/skills/liquid-glass-design/SKILL.md +279 -0
- package/.agent/skills/logistics-exception-management/SKILL.md +222 -0
- package/.agent/skills/manim-video/SKILL.md +89 -0
- package/.agent/skills/manim-video/assets/network-graph-scene.py +52 -0
- package/.agent/skills/market-research/SKILL.md +75 -0
- package/.agent/skills/mcp-builder/SKILL.md +173 -113
- package/.agent/skills/mcp-builder/license.txt +202 -0
- package/.agent/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agent/skills/mcp-builder/reference/mcp-best-practices.md +249 -0
- package/.agent/skills/mcp-builder/reference/node-mcp-server.md +970 -0
- package/.agent/skills/mcp-builder/reference/python-mcp-server.md +719 -0
- package/.agent/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agent/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agent/skills/mcp-builder/scripts/example-evaluation.xml +22 -0
- package/.agent/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.agent/skills/mcp-server-patterns/SKILL.md +67 -0
- package/.agent/skills/nanoclaw-repl/SKILL.md +33 -0
- package/.agent/skills/nestjs-patterns/SKILL.md +230 -0
- package/.agent/skills/nextjs-turbopack/SKILL.md +44 -0
- package/.agent/skills/nutrient-document-processing/SKILL.md +167 -0
- package/.agent/skills/nuxt4-patterns/SKILL.md +100 -0
- package/.agent/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/.agent/skills/openclaw-persona-forge/gacha.py +224 -0
- package/.agent/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/.agent/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/.agent/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/.agent/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/.agent/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/.agent/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/.agent/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/.agent/skills/opensource-pipeline/SKILL.md +255 -0
- package/.agent/skills/perl-patterns/SKILL.md +504 -0
- package/.agent/skills/perl-security/SKILL.md +503 -0
- package/.agent/skills/perl-testing/SKILL.md +475 -0
- package/.agent/skills/plankton-code-quality/SKILL.md +236 -0
- package/.agent/skills/postgres-patterns/SKILL.md +147 -0
- package/.agent/skills/product-lens/SKILL.md +85 -0
- package/.agent/skills/production-scheduling/SKILL.md +238 -0
- package/.agent/skills/project-flow-ops/SKILL.md +111 -0
- package/.agent/skills/project-guidelines-example/SKILL.md +349 -0
- package/.agent/skills/prompt-optimizer/SKILL.md +397 -0
- package/.agent/skills/python-patterns/SKILL.md +622 -313
- package/.agent/skills/python-testing/SKILL.md +816 -0
- package/.agent/skills/pytorch-patterns/SKILL.md +396 -0
- package/.agent/skills/quality-nonconformance/SKILL.md +260 -0
- package/.agent/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/.agent/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/.agent/skills/remotion-video-creation/SKILL.md +43 -0
- package/.agent/skills/remotion-video-creation/rules/3d.md +86 -0
- package/.agent/skills/remotion-video-creation/rules/animations.md +29 -0
- package/.agent/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agent/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agent/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.agent/skills/remotion-video-creation/rules/assets.md +78 -0
- package/.agent/skills/remotion-video-creation/rules/audio.md +172 -0
- package/.agent/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/.agent/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/.agent/skills/remotion-video-creation/rules/charts.md +58 -0
- package/.agent/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/.agent/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/.agent/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/.agent/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/.agent/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/.agent/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/.agent/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/.agent/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/.agent/skills/remotion-video-creation/rules/images.md +130 -0
- package/.agent/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/.agent/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/.agent/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/.agent/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/.agent/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/.agent/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/.agent/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/.agent/skills/remotion-video-creation/rules/timing.md +179 -0
- package/.agent/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/.agent/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/.agent/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/.agent/skills/remotion-video-creation/rules/videos.md +171 -0
- package/.agent/skills/repo-scan/SKILL.md +78 -0
- package/.agent/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/.agent/skills/rules-distill/SKILL.md +264 -0
- package/.agent/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/.agent/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/.agent/skills/rust-patterns/SKILL.md +499 -0
- package/.agent/skills/rust-testing/SKILL.md +500 -0
- package/.agent/skills/safety-guard/SKILL.md +75 -0
- package/.agent/skills/santa-method/SKILL.md +306 -0
- package/.agent/skills/search-first/SKILL.md +161 -0
- package/.agent/skills/security-review/SKILL.md +495 -0
- package/.agent/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/.agent/skills/security-scan/SKILL.md +165 -0
- package/.agent/skills/skill-comply/SKILL.md +58 -0
- package/.agent/skills/skill-comply/fixtures/compliant-trace.jsonl +5 -0
- package/.agent/skills/skill-comply/fixtures/noncompliant-trace.jsonl +3 -0
- package/.agent/skills/skill-comply/fixtures/tdd-spec.yaml +44 -0
- package/.agent/skills/skill-comply/prompts/classifier.md +24 -0
- package/.agent/skills/skill-comply/prompts/scenario-generator.md +62 -0
- package/.agent/skills/skill-comply/prompts/spec-generator.md +42 -0
- package/.agent/skills/skill-comply/pyproject.toml +15 -0
- package/.agent/skills/skill-comply/scripts/classifier.py +85 -0
- package/.agent/skills/skill-comply/scripts/grader.py +122 -0
- package/.agent/skills/skill-comply/scripts/init.py +0 -0
- package/.agent/skills/skill-comply/scripts/parser.py +107 -0
- package/.agent/skills/skill-comply/scripts/report.py +170 -0
- package/.agent/skills/skill-comply/scripts/run.py +127 -0
- package/.agent/skills/skill-comply/scripts/runner.py +161 -0
- package/.agent/skills/skill-comply/scripts/scenario-generator.py +70 -0
- package/.agent/skills/skill-comply/scripts/spec-generator.py +72 -0
- package/.agent/skills/skill-comply/scripts/utils.py +13 -0
- package/.agent/skills/skill-comply/tests/test-grader.py +137 -0
- package/.agent/skills/skill-comply/tests/test-parser.py +90 -0
- package/.agent/skills/skill-creator/SKILL.md +485 -0
- package/.agent/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agent/skills/skill-creator/agents/comparator.md +202 -0
- package/.agent/skills/skill-creator/agents/grader.md +223 -0
- package/.agent/skills/skill-creator/assets/eval-review.html +146 -0
- package/.agent/skills/skill-creator/eval-viewer/generate-review.py +471 -0
- package/.agent/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agent/skills/skill-creator/license.txt +202 -0
- package/.agent/skills/skill-creator/references/schemas.md +430 -0
- package/.agent/skills/skill-creator/scripts/aggregate-benchmark.py +401 -0
- package/.agent/skills/skill-creator/scripts/generate-report.py +326 -0
- package/.agent/skills/skill-creator/scripts/improve-description.py +247 -0
- package/.agent/skills/skill-creator/scripts/init.py +0 -0
- package/.agent/skills/skill-creator/scripts/package-skill.py +136 -0
- package/.agent/skills/skill-creator/scripts/quick-validate.py +103 -0
- package/.agent/skills/skill-creator/scripts/run-eval.py +310 -0
- package/.agent/skills/skill-creator/scripts/run-loop.py +328 -0
- package/.agent/skills/skill-creator/scripts/utils.py +47 -0
- package/.agent/skills/skill-stocktake/SKILL.md +193 -0
- package/.agent/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/.agent/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/.agent/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/.agent/skills/social-graph-ranker/SKILL.md +154 -0
- package/.agent/skills/springboot-patterns/SKILL.md +314 -0
- package/.agent/skills/springboot-security/SKILL.md +272 -0
- package/.agent/skills/springboot-tdd/SKILL.md +158 -0
- package/.agent/skills/springboot-verification/SKILL.md +231 -0
- package/.agent/skills/strategic-compact/SKILL.md +131 -0
- package/.agent/skills/strategic-compact/suggest-compact.sh +54 -0
- package/.agent/skills/swift-actor-persistence/SKILL.md +143 -0
- package/.agent/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/.agent/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/.agent/skills/swiftui-patterns/SKILL.md +259 -0
- package/.agent/skills/tdd-workflow/SKILL.md +412 -98
- package/.agent/skills/team-builder/SKILL.md +168 -0
- package/.agent/skills/token-budget-advisor/SKILL.md +133 -0
- package/.agent/skills/ui-demo/SKILL.md +465 -0
- package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -26
- package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -97
- package/.agent/skills/ui-ux-pro-max/data/landing.csv +28 -28
- package/.agent/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/.agent/skills/ui-ux-pro-max/data/styles.csv +68 -68
- package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/.agent/skills/ui-ux-pro-max/scripts/search.py +114 -114
- package/.agent/skills/verification-loop/SKILL.md +126 -0
- package/.agent/skills/video-editing/SKILL.md +310 -0
- package/.agent/skills/videodb/SKILL.md +374 -0
- package/.agent/skills/videodb/reference/api-reference.md +550 -0
- package/.agent/skills/videodb/reference/capture-reference.md +407 -0
- package/.agent/skills/videodb/reference/capture.md +101 -0
- package/.agent/skills/videodb/reference/editor.md +443 -0
- package/.agent/skills/videodb/reference/generative.md +331 -0
- package/.agent/skills/videodb/reference/rtstream-reference.md +564 -0
- package/.agent/skills/videodb/reference/rtstream.md +65 -0
- package/.agent/skills/videodb/reference/search.md +230 -0
- package/.agent/skills/videodb/reference/streaming.md +406 -0
- package/.agent/skills/videodb/reference/use-cases.md +118 -0
- package/.agent/skills/videodb/scripts/ws-listener.py +282 -0
- package/.agent/skills/visa-doc-translate/SKILL.md +117 -0
- package/.agent/skills/visa-doc-translate/readme.md +86 -0
- package/.agent/skills/workspace-surface-audit/SKILL.md +125 -0
- package/.agent/skills/x-api/SKILL.md +230 -0
- package/.agent/tasks/two-track-merge-contract.md +29 -0
- package/.agent/workflows/aside.md +164 -164
- package/.agent/workflows/build-fix.md +62 -62
- package/.agent/workflows/checkpoint.md +74 -74
- package/.agent/workflows/claw.md +23 -51
- package/.agent/workflows/clean-memory.md +34 -0
- package/.agent/workflows/code-review.md +289 -40
- package/.agent/workflows/context-budget.md +23 -29
- package/.agent/workflows/cpp-build.md +173 -173
- package/.agent/workflows/cpp-review.md +132 -132
- package/.agent/workflows/cpp-test.md +251 -251
- package/.agent/workflows/devfleet.md +23 -92
- package/.agent/workflows/docs.md +23 -31
- package/.agent/workflows/e2e.md +268 -365
- package/.agent/workflows/eval.md +23 -120
- package/.agent/workflows/evolve.md +178 -178
- 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 +99 -0
- package/.agent/workflows/gan-design.md +35 -0
- package/.agent/workflows/go-build.md +183 -183
- package/.agent/workflows/go-review.md +148 -148
- package/.agent/workflows/go-test.md +268 -268
- package/.agent/workflows/gradle-build.md +70 -70
- package/.agent/workflows/harness-audit.md +73 -71
- package/.agent/workflows/instinct-export.md +66 -66
- package/.agent/workflows/instinct-import.md +114 -114
- package/.agent/workflows/instinct-status.md +59 -59
- package/.agent/workflows/jira.md +106 -0
- package/.agent/workflows/kotlin-build.md +174 -174
- package/.agent/workflows/kotlin-review.md +140 -140
- package/.agent/workflows/kotlin-test.md +312 -312
- package/.agent/workflows/learn-eval.md +116 -116
- package/.agent/workflows/learn.md +70 -70
- package/.agent/workflows/loop-start.md +32 -32
- package/.agent/workflows/loop-status.md +24 -24
- package/.agent/workflows/model-route.md +26 -26
- package/.agent/workflows/multi-backend.md +158 -158
- package/.agent/workflows/multi-execute.md +315 -315
- package/.agent/workflows/multi-frontend.md +158 -158
- package/.agent/workflows/multi-plan.md +268 -268
- package/.agent/workflows/multi-workflow.md +191 -191
- package/.agent/workflows/orchestrate.md +135 -231
- package/.agent/workflows/plan.md +117 -115
- package/.agent/workflows/pm2.md +272 -272
- package/.agent/workflows/projects.md +39 -39
- package/.agent/workflows/promote.md +41 -41
- package/.agent/workflows/prompt-optimize.md +23 -38
- 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 -31
- package/.agent/workflows/python-review.md +297 -297
- package/.agent/workflows/quality-gate.md +29 -29
- package/.agent/workflows/refactor-clean.md +80 -80
- package/.agent/workflows/resume-session.md +156 -156
- package/.agent/workflows/rules-distill.md +20 -11
- package/.agent/workflows/rust-build.md +187 -187
- package/.agent/workflows/rust-review.md +142 -142
- package/.agent/workflows/rust-test.md +308 -308
- package/.agent/workflows/santa-loop.md +175 -0
- package/.agent/workflows/save-session.md +275 -275
- package/.agent/workflows/sessions.md +333 -333
- package/.agent/workflows/setup-pm.md +80 -80
- package/.agent/workflows/skill-create.md +174 -174
- package/.agent/workflows/skill-health.md +54 -54
- package/.agent/workflows/tdd.md +231 -328
- package/.agent/workflows/test-coverage.md +69 -69
- package/.agent/workflows/update-codemaps.md +72 -72
- package/.agent/workflows/update-docs.md +84 -84
- package/.agent/workflows/verify.md +23 -59
- package/LICENSE +176 -176
- package/README.md +28 -20
- package/RELEASE.md +32 -36
- package/package.json +87 -79
- package/scripts/release-check.js +55 -55
- package/src/bin/cli.js +399 -53
- package/src/lib/installer.js +360 -114
- package/src/lib/manifests/stacks.js +122 -0
- package/src/lib/slash-commands.js +28 -0
- package/src/templates/claude/CLAUDE.en.md +42 -0
- package/src/templates/claude/CLAUDE.md +42 -0
- package/src/templates/claude/CLAUDE.vi.md +42 -0
- package/src/templates/codex/AGENTS.en.md +40 -0
- package/src/templates/codex/AGENTS.md +40 -0
- package/src/templates/codex/AGENTS.vi.md +40 -0
- package/src/templates/cursor/pilo-masterkit.mdc +20 -0
- package/src/templates/gemini/GEMINI.en.md +56 -0
- package/src/templates/gemini/GEMINI.md +56 -0
- package/src/templates/gemini/GEMINI.vi.md +56 -0
- package/src/templates/github/copilot-instructions.md +16 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Use Cases
|
|
2
|
+
|
|
3
|
+
Common workflows and what VideoDB enables. For code details, see [api-reference.md](api-reference.md), [capture.md](capture.md), [editor.md](editor.md), and [search.md](search.md).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Video Search & Highlights
|
|
8
|
+
|
|
9
|
+
### Create Highlight Reels
|
|
10
|
+
Upload a long video (conference talk, lecture, meeting recording), search for key moments by topic ("product announcement", "Q&A session", "demo"), and automatically compile matching segments into a shareable highlight reel.
|
|
11
|
+
|
|
12
|
+
### Build Searchable Video Libraries
|
|
13
|
+
Batch upload videos to a collection, index them for spoken word search, then query across the entire library. Find specific topics across hundreds of hours of content instantly.
|
|
14
|
+
|
|
15
|
+
### Extract Specific Clips
|
|
16
|
+
Search for moments matching a query ("budget discussion", "action items") and extract each matching segment as an individual clip with its own stream URL.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Video Enhancement
|
|
21
|
+
|
|
22
|
+
### Add Professional Polish
|
|
23
|
+
Take raw footage and enhance it with:
|
|
24
|
+
- Auto-generated subtitles from speech
|
|
25
|
+
- Custom thumbnails at specific timestamps
|
|
26
|
+
- Background music overlays
|
|
27
|
+
- Intro/outro sequences with generated images
|
|
28
|
+
|
|
29
|
+
### AI-Enhanced Content
|
|
30
|
+
Combine existing video with generative AI:
|
|
31
|
+
- Generate text summaries from transcript
|
|
32
|
+
- Create background music matching video duration
|
|
33
|
+
- Generate title cards and overlay images
|
|
34
|
+
- Mix all elements into a polished final output
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Real-Time Capture (Desktop/Meeting)
|
|
39
|
+
|
|
40
|
+
### Screen + Audio Recording with AI
|
|
41
|
+
Capture screen, microphone, and system audio simultaneously. Get real-time:
|
|
42
|
+
- **Live transcription** - Speech to text as it happens
|
|
43
|
+
- **Audio summaries** - Periodic AI-generated summaries of discussions
|
|
44
|
+
- **Visual indexing** - AI descriptions of screen activity
|
|
45
|
+
|
|
46
|
+
### Meeting Capture with Summarization
|
|
47
|
+
Record meetings with live transcription of all participants. Get periodic summaries with key discussion points, decisions, and action items delivered in real-time.
|
|
48
|
+
|
|
49
|
+
### Screen Activity Tracking
|
|
50
|
+
Track what's happening on screen with AI-generated descriptions:
|
|
51
|
+
- "User is browsing a spreadsheet in Google Sheets"
|
|
52
|
+
- "User switched to a code editor with a Python file"
|
|
53
|
+
- "Video call with screen sharing enabled"
|
|
54
|
+
|
|
55
|
+
### Post-Session Processing
|
|
56
|
+
After capture ends, the recording is exported as a permanent video. Then:
|
|
57
|
+
- Generate searchable transcript
|
|
58
|
+
- Search for specific topics within the recording
|
|
59
|
+
- Extract clips of important moments
|
|
60
|
+
- Share via stream URL or player link
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Live Stream Intelligence (RTSP/RTMP)
|
|
65
|
+
|
|
66
|
+
### Connect External Streams
|
|
67
|
+
Ingest live video from RTSP/RTMP sources (security cameras, encoders, broadcasts). Process and index content in real-time.
|
|
68
|
+
|
|
69
|
+
### Real-Time Event Detection
|
|
70
|
+
Define events to detect in live streams:
|
|
71
|
+
- "Person entering restricted area"
|
|
72
|
+
- "Traffic violation at intersection"
|
|
73
|
+
- "Product visible on shelf"
|
|
74
|
+
|
|
75
|
+
Get alerts via WebSocket or webhook when events occur.
|
|
76
|
+
|
|
77
|
+
### Live Stream Search
|
|
78
|
+
Search across recorded live stream content. Find specific moments and generate clips from hours of continuous footage.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Content Moderation & Safety
|
|
83
|
+
|
|
84
|
+
### Automated Content Review
|
|
85
|
+
Index video scenes with AI and search for problematic content. Flag videos containing violence, inappropriate content, or policy violations.
|
|
86
|
+
|
|
87
|
+
### Profanity Detection
|
|
88
|
+
Detect and locate profanity in audio. Optionally overlay beep sounds at detected timestamps.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Platform Integration
|
|
93
|
+
|
|
94
|
+
### Social Media Formatting
|
|
95
|
+
Reframe videos for different platforms:
|
|
96
|
+
- Vertical (9:16) for TikTok, Reels, Shorts
|
|
97
|
+
- Square (1:1) for Instagram feed
|
|
98
|
+
- Landscape (16:9) for YouTube
|
|
99
|
+
|
|
100
|
+
### Transcode for Delivery
|
|
101
|
+
Change resolution, bitrate, or quality for different delivery targets. Output optimized streams for web, mobile, or broadcast.
|
|
102
|
+
|
|
103
|
+
### Generate Shareable Links
|
|
104
|
+
Every operation produces playable stream URLs. Embed in web players, share directly, or integrate with existing platforms.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Workflow Summary
|
|
109
|
+
|
|
110
|
+
| Goal | VideoDB Approach |
|
|
111
|
+
|------|------------------|
|
|
112
|
+
| Find moments in video | Index spoken words/scenes → Search → Compile clips |
|
|
113
|
+
| Create highlights | Search multiple topics → Build timeline → Generate stream |
|
|
114
|
+
| Add subtitles | Index spoken words → Add subtitle overlay |
|
|
115
|
+
| Record screen + AI | Start capture → Run AI pipelines → Export video |
|
|
116
|
+
| Monitor live streams | Connect RTSP → Index scenes → Create alerts |
|
|
117
|
+
| Reformat for social | Reframe to target aspect ratio |
|
|
118
|
+
| Combine clips | Build timeline with multiple assets → Generate stream |
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
WebSocket event listener for VideoDB with auto-reconnect and graceful shutdown.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
python scripts/ws_listener.py [OPTIONS] [output_dir]
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
output_dir Directory for output files (default: XDG_STATE_HOME/videodb or ~/.local/state/videodb)
|
|
10
|
+
|
|
11
|
+
Options:
|
|
12
|
+
--clear Clear the events file before starting (use when starting a new session)
|
|
13
|
+
|
|
14
|
+
Output files:
|
|
15
|
+
<output_dir>/videodb_events.jsonl - All WebSocket events (JSONL format)
|
|
16
|
+
<output_dir>/videodb_ws_id - WebSocket connection ID
|
|
17
|
+
<output_dir>/videodb_ws_pid - Process ID for easy termination
|
|
18
|
+
|
|
19
|
+
Output (first line, for parsing):
|
|
20
|
+
WS_ID=<connection_id>
|
|
21
|
+
|
|
22
|
+
Examples:
|
|
23
|
+
python scripts/ws_listener.py & # Run in background
|
|
24
|
+
python scripts/ws_listener.py --clear # Clear events and start fresh
|
|
25
|
+
python scripts/ws_listener.py --clear /tmp/mydir # Custom dir with clear
|
|
26
|
+
kill "$(cat ~/.local/state/videodb/videodb_ws_pid)" # Stop the listener
|
|
27
|
+
"""
|
|
28
|
+
import os
|
|
29
|
+
import sys
|
|
30
|
+
import json
|
|
31
|
+
import signal
|
|
32
|
+
import asyncio
|
|
33
|
+
import logging
|
|
34
|
+
import contextlib
|
|
35
|
+
from datetime import datetime, timezone
|
|
36
|
+
from pathlib import Path
|
|
37
|
+
|
|
38
|
+
from dotenv import load_dotenv
|
|
39
|
+
load_dotenv()
|
|
40
|
+
|
|
41
|
+
import videodb
|
|
42
|
+
from videodb.exceptions import AuthenticationError
|
|
43
|
+
|
|
44
|
+
# Retry config
|
|
45
|
+
MAX_RETRIES = 10
|
|
46
|
+
INITIAL_BACKOFF = 1 # seconds
|
|
47
|
+
MAX_BACKOFF = 60 # seconds
|
|
48
|
+
|
|
49
|
+
logging.basicConfig(
|
|
50
|
+
level=logging.INFO,
|
|
51
|
+
format="[%(asctime)s] %(message)s",
|
|
52
|
+
datefmt="%H:%M:%S",
|
|
53
|
+
)
|
|
54
|
+
LOGGER = logging.getLogger(__name__)
|
|
55
|
+
|
|
56
|
+
# Parse arguments
|
|
57
|
+
RETRYABLE_ERRORS = (ConnectionError, TimeoutError)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def default_output_dir() -> Path:
|
|
61
|
+
"""Return a private per-user state directory for listener artifacts."""
|
|
62
|
+
xdg_state_home = os.environ.get("XDG_STATE_HOME")
|
|
63
|
+
if xdg_state_home:
|
|
64
|
+
return Path(xdg_state_home) / "videodb"
|
|
65
|
+
return Path.home() / ".local" / "state" / "videodb"
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def ensure_private_dir(path: Path) -> Path:
|
|
69
|
+
"""Create the listener state directory with private permissions."""
|
|
70
|
+
path.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
71
|
+
try:
|
|
72
|
+
path.chmod(0o700)
|
|
73
|
+
except OSError:
|
|
74
|
+
pass
|
|
75
|
+
return path
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def parse_args() -> tuple[bool, Path]:
|
|
79
|
+
clear = False
|
|
80
|
+
output_dir: str | None = None
|
|
81
|
+
|
|
82
|
+
args = sys.argv[1:]
|
|
83
|
+
for arg in args:
|
|
84
|
+
if arg == "--clear":
|
|
85
|
+
clear = True
|
|
86
|
+
elif arg.startswith("-"):
|
|
87
|
+
raise SystemExit(f"Unknown flag: {arg}")
|
|
88
|
+
elif not arg.startswith("-"):
|
|
89
|
+
output_dir = arg
|
|
90
|
+
|
|
91
|
+
if output_dir is None:
|
|
92
|
+
events_dir = os.environ.get("VIDEODB_EVENTS_DIR")
|
|
93
|
+
if events_dir:
|
|
94
|
+
return clear, ensure_private_dir(Path(events_dir))
|
|
95
|
+
return clear, ensure_private_dir(default_output_dir())
|
|
96
|
+
|
|
97
|
+
return clear, ensure_private_dir(Path(output_dir))
|
|
98
|
+
|
|
99
|
+
CLEAR_EVENTS, OUTPUT_DIR = parse_args()
|
|
100
|
+
EVENTS_FILE = OUTPUT_DIR / "videodb_events.jsonl"
|
|
101
|
+
WS_ID_FILE = OUTPUT_DIR / "videodb_ws_id"
|
|
102
|
+
PID_FILE = OUTPUT_DIR / "videodb_ws_pid"
|
|
103
|
+
|
|
104
|
+
# Track if this is the first connection (for clearing events)
|
|
105
|
+
_first_connection = True
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def log(msg: str):
|
|
109
|
+
"""Log with timestamp."""
|
|
110
|
+
LOGGER.info("%s", msg)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def append_event(event: dict):
|
|
114
|
+
"""Append event to JSONL file with timestamps."""
|
|
115
|
+
now = datetime.now(timezone.utc)
|
|
116
|
+
event["ts"] = now.isoformat()
|
|
117
|
+
event["unix_ts"] = now.timestamp()
|
|
118
|
+
with EVENTS_FILE.open("a", encoding="utf-8") as f:
|
|
119
|
+
f.write(json.dumps(event) + "\n")
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def write_pid():
|
|
123
|
+
"""Write PID file for easy process management."""
|
|
124
|
+
OUTPUT_DIR.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
125
|
+
PID_FILE.write_text(str(os.getpid()))
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def cleanup_pid():
|
|
129
|
+
"""Remove PID file on exit."""
|
|
130
|
+
try:
|
|
131
|
+
PID_FILE.unlink(missing_ok=True)
|
|
132
|
+
except OSError as exc:
|
|
133
|
+
LOGGER.debug("Failed to remove PID file %s: %s", PID_FILE, exc)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def is_fatal_error(exc: Exception) -> bool:
|
|
137
|
+
"""Return True when retrying would hide a permanent configuration error."""
|
|
138
|
+
if isinstance(exc, (AuthenticationError, PermissionError)):
|
|
139
|
+
return True
|
|
140
|
+
status = getattr(exc, "status_code", None)
|
|
141
|
+
if status in {401, 403}:
|
|
142
|
+
return True
|
|
143
|
+
message = str(exc).lower()
|
|
144
|
+
return "401" in message or "403" in message or "auth" in message
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
async def listen_with_retry():
|
|
148
|
+
"""Main listen loop with auto-reconnect and exponential backoff."""
|
|
149
|
+
global _first_connection
|
|
150
|
+
|
|
151
|
+
retry_count = 0
|
|
152
|
+
backoff = INITIAL_BACKOFF
|
|
153
|
+
|
|
154
|
+
while retry_count < MAX_RETRIES:
|
|
155
|
+
try:
|
|
156
|
+
conn = videodb.connect()
|
|
157
|
+
ws_wrapper = conn.connect_websocket()
|
|
158
|
+
ws = await ws_wrapper.connect()
|
|
159
|
+
ws_id = ws.connection_id
|
|
160
|
+
except asyncio.CancelledError:
|
|
161
|
+
log("Shutdown requested")
|
|
162
|
+
raise
|
|
163
|
+
except Exception as e:
|
|
164
|
+
if is_fatal_error(e):
|
|
165
|
+
log(f"Fatal configuration error: {e}")
|
|
166
|
+
raise
|
|
167
|
+
if not isinstance(e, RETRYABLE_ERRORS):
|
|
168
|
+
raise
|
|
169
|
+
retry_count += 1
|
|
170
|
+
log(f"Connection error: {e}")
|
|
171
|
+
|
|
172
|
+
if retry_count >= MAX_RETRIES:
|
|
173
|
+
log(f"Max retries ({MAX_RETRIES}) exceeded, exiting")
|
|
174
|
+
break
|
|
175
|
+
|
|
176
|
+
log(f"Reconnecting in {backoff}s (attempt {retry_count}/{MAX_RETRIES})...")
|
|
177
|
+
await asyncio.sleep(backoff)
|
|
178
|
+
backoff = min(backoff * 2, MAX_BACKOFF)
|
|
179
|
+
continue
|
|
180
|
+
|
|
181
|
+
OUTPUT_DIR.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
182
|
+
|
|
183
|
+
if _first_connection and CLEAR_EVENTS:
|
|
184
|
+
EVENTS_FILE.unlink(missing_ok=True)
|
|
185
|
+
log("Cleared events file")
|
|
186
|
+
_first_connection = False
|
|
187
|
+
|
|
188
|
+
WS_ID_FILE.write_text(ws_id)
|
|
189
|
+
|
|
190
|
+
if retry_count == 0:
|
|
191
|
+
print(f"WS_ID={ws_id}", flush=True)
|
|
192
|
+
log(f"Connected (ws_id={ws_id})")
|
|
193
|
+
|
|
194
|
+
retry_count = 0
|
|
195
|
+
backoff = INITIAL_BACKOFF
|
|
196
|
+
|
|
197
|
+
receiver = ws.receive().__aiter__()
|
|
198
|
+
while True:
|
|
199
|
+
try:
|
|
200
|
+
msg = await anext(receiver)
|
|
201
|
+
except StopAsyncIteration:
|
|
202
|
+
log("Connection closed by server")
|
|
203
|
+
break
|
|
204
|
+
except asyncio.CancelledError:
|
|
205
|
+
log("Shutdown requested")
|
|
206
|
+
raise
|
|
207
|
+
except Exception as e:
|
|
208
|
+
if is_fatal_error(e):
|
|
209
|
+
log(f"Fatal configuration error: {e}")
|
|
210
|
+
raise
|
|
211
|
+
if not isinstance(e, RETRYABLE_ERRORS):
|
|
212
|
+
raise
|
|
213
|
+
retry_count += 1
|
|
214
|
+
log(f"Connection error: {e}")
|
|
215
|
+
|
|
216
|
+
if retry_count >= MAX_RETRIES:
|
|
217
|
+
log(f"Max retries ({MAX_RETRIES}) exceeded, exiting")
|
|
218
|
+
return
|
|
219
|
+
|
|
220
|
+
log(f"Reconnecting in {backoff}s (attempt {retry_count}/{MAX_RETRIES})...")
|
|
221
|
+
await asyncio.sleep(backoff)
|
|
222
|
+
backoff = min(backoff * 2, MAX_BACKOFF)
|
|
223
|
+
break
|
|
224
|
+
|
|
225
|
+
append_event(msg)
|
|
226
|
+
channel = msg.get("channel", msg.get("event", "unknown"))
|
|
227
|
+
text = msg.get("data", {}).get("text", "")
|
|
228
|
+
if text:
|
|
229
|
+
print(f"[{channel}] {text[:80]}", flush=True)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
async def main_async():
|
|
233
|
+
"""Async main with signal handling."""
|
|
234
|
+
loop = asyncio.get_running_loop()
|
|
235
|
+
shutdown_event = asyncio.Event()
|
|
236
|
+
|
|
237
|
+
def handle_signal():
|
|
238
|
+
log("Received shutdown signal")
|
|
239
|
+
shutdown_event.set()
|
|
240
|
+
|
|
241
|
+
# Register signal handlers
|
|
242
|
+
for sig in (signal.SIGINT, signal.SIGTERM):
|
|
243
|
+
with contextlib.suppress(NotImplementedError):
|
|
244
|
+
loop.add_signal_handler(sig, handle_signal)
|
|
245
|
+
|
|
246
|
+
# Run listener with cancellation support
|
|
247
|
+
listen_task = asyncio.create_task(listen_with_retry())
|
|
248
|
+
shutdown_task = asyncio.create_task(shutdown_event.wait())
|
|
249
|
+
|
|
250
|
+
_done, pending = await asyncio.wait(
|
|
251
|
+
[listen_task, shutdown_task],
|
|
252
|
+
return_when=asyncio.FIRST_COMPLETED,
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
if listen_task.done():
|
|
256
|
+
await listen_task
|
|
257
|
+
|
|
258
|
+
# Cancel remaining tasks
|
|
259
|
+
for task in pending:
|
|
260
|
+
task.cancel()
|
|
261
|
+
try:
|
|
262
|
+
await task
|
|
263
|
+
except asyncio.CancelledError:
|
|
264
|
+
pass
|
|
265
|
+
|
|
266
|
+
for sig in (signal.SIGINT, signal.SIGTERM):
|
|
267
|
+
with contextlib.suppress(NotImplementedError):
|
|
268
|
+
loop.remove_signal_handler(sig)
|
|
269
|
+
|
|
270
|
+
log("Shutdown complete")
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def main():
|
|
274
|
+
write_pid()
|
|
275
|
+
try:
|
|
276
|
+
asyncio.run(main_async())
|
|
277
|
+
finally:
|
|
278
|
+
cleanup_pid()
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
if __name__ == "__main__":
|
|
282
|
+
main()
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visa-doc-translate
|
|
3
|
+
description: Translate visa application documents (images) to English and create a bilingual PDF with original and translation
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are helping translate visa application documents for visa applications.
|
|
7
|
+
|
|
8
|
+
## Instructions
|
|
9
|
+
|
|
10
|
+
When the user provides an image file path, AUTOMATICALLY execute the following steps WITHOUT asking for confirmation:
|
|
11
|
+
|
|
12
|
+
1. **Image Conversion**: If the file is HEIC, convert it to PNG using `sips -s format png <input> --out <output>`
|
|
13
|
+
|
|
14
|
+
2. **Image Rotation**:
|
|
15
|
+
- Check EXIF orientation data
|
|
16
|
+
- Automatically rotate the image based on EXIF data
|
|
17
|
+
- If EXIF orientation is 6, rotate 90 degrees counterclockwise
|
|
18
|
+
- Apply additional rotation as needed (test 180 degrees if document appears upside down)
|
|
19
|
+
|
|
20
|
+
3. **OCR Text Extraction**:
|
|
21
|
+
- Try multiple OCR methods automatically:
|
|
22
|
+
- macOS Vision framework (preferred for macOS)
|
|
23
|
+
- EasyOCR (cross-platform, no tesseract required)
|
|
24
|
+
- Tesseract OCR (if available)
|
|
25
|
+
- Extract all text information from the document
|
|
26
|
+
- Identify document type (deposit certificate, employment certificate, retirement certificate, etc.)
|
|
27
|
+
|
|
28
|
+
4. **Translation**:
|
|
29
|
+
- Translate all text content to English professionally
|
|
30
|
+
- Maintain the original document structure and format
|
|
31
|
+
- Use professional terminology appropriate for visa applications
|
|
32
|
+
- Keep proper names in original language with English in parentheses
|
|
33
|
+
- For Chinese names, use pinyin format (e.g., WU Zhengye)
|
|
34
|
+
- Preserve all numbers, dates, and amounts accurately
|
|
35
|
+
|
|
36
|
+
5. **PDF Generation**:
|
|
37
|
+
- Create a Python script using PIL and reportlab libraries
|
|
38
|
+
- Page 1: Display the rotated original image, centered and scaled to fit A4 page
|
|
39
|
+
- Page 2: Display the English translation with proper formatting:
|
|
40
|
+
- Title centered and bold
|
|
41
|
+
- Content left-aligned with appropriate spacing
|
|
42
|
+
- Professional layout suitable for official documents
|
|
43
|
+
- Add a note at the bottom: "This is a certified English translation of the original document"
|
|
44
|
+
- Execute the script to generate the PDF
|
|
45
|
+
|
|
46
|
+
6. **Output**: Create a PDF file named `<original_filename>_Translated.pdf` in the same directory
|
|
47
|
+
|
|
48
|
+
## Supported Documents
|
|
49
|
+
|
|
50
|
+
- Bank deposit certificates (存款证明)
|
|
51
|
+
- Income certificates (收入证明)
|
|
52
|
+
- Employment certificates (在职证明)
|
|
53
|
+
- Retirement certificates (退休证明)
|
|
54
|
+
- Property certificates (房产证明)
|
|
55
|
+
- Business licenses (营业执照)
|
|
56
|
+
- ID cards and passports
|
|
57
|
+
- Other official documents
|
|
58
|
+
|
|
59
|
+
## Technical Implementation
|
|
60
|
+
|
|
61
|
+
### OCR Methods (tried in order)
|
|
62
|
+
|
|
63
|
+
1. **macOS Vision Framework** (macOS only):
|
|
64
|
+
```python
|
|
65
|
+
import Vision
|
|
66
|
+
from Foundation import NSURL
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
2. **EasyOCR** (cross-platform):
|
|
70
|
+
```bash
|
|
71
|
+
pip install easyocr
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
3. **Tesseract OCR** (if available):
|
|
75
|
+
```bash
|
|
76
|
+
brew install tesseract tesseract-lang
|
|
77
|
+
pip install pytesseract
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Required Python Libraries
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
pip install pillow reportlab
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For macOS Vision framework:
|
|
87
|
+
```bash
|
|
88
|
+
pip install pyobjc-framework-Vision pyobjc-framework-Quartz
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Important Guidelines
|
|
92
|
+
|
|
93
|
+
- DO NOT ask for user confirmation at each step
|
|
94
|
+
- Automatically determine the best rotation angle
|
|
95
|
+
- Try multiple OCR methods if one fails
|
|
96
|
+
- Ensure all numbers, dates, and amounts are accurately translated
|
|
97
|
+
- Use clean, professional formatting
|
|
98
|
+
- Complete the entire process and report the final PDF location
|
|
99
|
+
|
|
100
|
+
## Example Usage
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
/visa-doc-translate RetirementCertificate.PNG
|
|
104
|
+
/visa-doc-translate BankStatement.HEIC
|
|
105
|
+
/visa-doc-translate EmploymentLetter.jpg
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Output Example
|
|
109
|
+
|
|
110
|
+
The skill will:
|
|
111
|
+
1. Extract text using available OCR method
|
|
112
|
+
2. Translate to professional English
|
|
113
|
+
3. Generate `<filename>_Translated.pdf` with:
|
|
114
|
+
- Page 1: Original document image
|
|
115
|
+
- Page 2: Professional English translation
|
|
116
|
+
|
|
117
|
+
Perfect for visa applications to Australia, USA, Canada, UK, and other countries requiring translated documents.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Visa Document Translator
|
|
2
|
+
|
|
3
|
+
Automatically translate visa application documents from images to professional English PDFs.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Automatic OCR**: Tries multiple OCR methods (macOS Vision, EasyOCR, Tesseract)
|
|
8
|
+
- **Bilingual PDF**: Original image + professional English translation
|
|
9
|
+
- **Multi-language**: Supports Chinese, and other languages
|
|
10
|
+
- **Professional Format**: Suitable for official visa applications
|
|
11
|
+
- **Fully Automated**: No manual intervention required
|
|
12
|
+
|
|
13
|
+
## Supported Documents
|
|
14
|
+
|
|
15
|
+
- Bank deposit certificates (存款证明)
|
|
16
|
+
- Employment certificates (在职证明)
|
|
17
|
+
- Retirement certificates (退休证明)
|
|
18
|
+
- Income certificates (收入证明)
|
|
19
|
+
- Property certificates (房产证明)
|
|
20
|
+
- Business licenses (营业执照)
|
|
21
|
+
- ID cards and passports
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
/visa-doc-translate <image-file>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Examples
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
/visa-doc-translate RetirementCertificate.PNG
|
|
33
|
+
/visa-doc-translate BankStatement.HEIC
|
|
34
|
+
/visa-doc-translate EmploymentLetter.jpg
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
|
|
39
|
+
Creates `<filename>_Translated.pdf` with:
|
|
40
|
+
- **Page 1**: Original document image (centered, A4 size)
|
|
41
|
+
- **Page 2**: Professional English translation
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
### Python Libraries
|
|
46
|
+
```bash
|
|
47
|
+
pip install pillow reportlab
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### OCR (one of the following)
|
|
51
|
+
|
|
52
|
+
**macOS (recommended)**:
|
|
53
|
+
```bash
|
|
54
|
+
pip install pyobjc-framework-Vision pyobjc-framework-Quartz
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Cross-platform**:
|
|
58
|
+
```bash
|
|
59
|
+
pip install easyocr
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Tesseract**:
|
|
63
|
+
```bash
|
|
64
|
+
brew install tesseract tesseract-lang
|
|
65
|
+
pip install pytesseract
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## How It Works
|
|
69
|
+
|
|
70
|
+
1. Converts HEIC to PNG if needed
|
|
71
|
+
2. Checks and applies EXIF rotation
|
|
72
|
+
3. Extracts text using available OCR method
|
|
73
|
+
4. Translates to professional English
|
|
74
|
+
5. Generates bilingual PDF
|
|
75
|
+
|
|
76
|
+
## Perfect For
|
|
77
|
+
|
|
78
|
+
- Australia visa applications
|
|
79
|
+
- USA visa applications
|
|
80
|
+
- Canada visa applications
|
|
81
|
+
- UK visa applications
|
|
82
|
+
- EU visa applications
|
|
83
|
+
|
|
84
|
+
## License
|
|
85
|
+
|
|
86
|
+
MIT
|