claudecode-omc 5.6.4 → 5.6.6
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/.local/commands/code-review.md +416 -0
- package/.local/commands/pr.md +250 -0
- package/.local/commands/prp-pr.md +244 -0
- package/.local/guidelines/CLAUDE.md +47 -0
- package/.local/skills/prompt-optimizer/SKILL.md +23 -4
- package/bundled/manifest.json +4 -4
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +120 -58
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +336 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +561 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +442 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +435 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +332 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +389 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +101 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +11 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +60 -48
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +372 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +220 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +211 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +195 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-memory.md +197 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +99 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +114 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-outcomes.md +106 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +67 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +315 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-webhooks.md +110 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +779 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +16 -14
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +45 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +28 -6
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +359 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +1 -1
- package/bundled/upstream/ecc/.omc-source/bundle.json +2 -3
- package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +4 -4
- package/bundled/upstream/ecc/agents/a11y-architect.md +10 -2
- package/bundled/upstream/ecc/agents/architect.md +9 -0
- package/bundled/upstream/ecc/agents/build-error-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/chief-of-staff.md +9 -0
- package/bundled/upstream/ecc/agents/code-architect.md +9 -0
- package/bundled/upstream/ecc/agents/code-explorer.md +10 -1
- package/bundled/upstream/ecc/agents/code-reviewer.md +87 -1
- package/bundled/upstream/ecc/agents/code-simplifier.md +9 -0
- package/bundled/upstream/ecc/agents/comment-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/conversation-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/csharp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/dart-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/database-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/django-build-resolver.md +252 -0
- package/bundled/upstream/ecc/agents/django-reviewer.md +169 -0
- package/bundled/upstream/ecc/agents/doc-updater.md +9 -0
- package/bundled/upstream/ecc/agents/docs-lookup.md +9 -0
- package/bundled/upstream/ecc/agents/e2e-runner.md +9 -0
- package/bundled/upstream/ecc/agents/fastapi-reviewer.md +79 -0
- package/bundled/upstream/ecc/agents/flutter-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/fsharp-reviewer.md +109 -0
- package/bundled/upstream/ecc/agents/gan-evaluator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-generator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-planner.md +9 -0
- package/bundled/upstream/ecc/agents/go-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/go-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/harmonyos-app-resolver.md +182 -0
- package/bundled/upstream/ecc/agents/harness-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/healthcare-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/homelab-architect.md +107 -0
- package/bundled/upstream/ecc/agents/java-build-resolver.md +133 -11
- package/bundled/upstream/ecc/agents/java-reviewer.md +130 -32
- package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/kotlin-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/loop-operator.md +9 -0
- package/bundled/upstream/ecc/agents/mle-reviewer.md +162 -0
- package/bundled/upstream/ecc/agents/network-architect.md +106 -0
- package/bundled/upstream/ecc/agents/network-config-reviewer.md +106 -0
- package/bundled/upstream/ecc/agents/network-troubleshooter.md +128 -0
- package/bundled/upstream/ecc/agents/opensource-forker.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-packager.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-sanitizer.md +9 -0
- package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/planner.md +9 -0
- package/bundled/upstream/ecc/agents/pr-test-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/python-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +12 -3
- package/bundled/upstream/ecc/agents/refactor-cleaner.md +9 -0
- package/bundled/upstream/ecc/agents/rust-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/rust-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/security-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/seo-specialist.md +10 -1
- package/bundled/upstream/ecc/agents/silent-failure-hunter.md +9 -0
- package/bundled/upstream/ecc/agents/swift-build-resolver.md +170 -0
- package/bundled/upstream/ecc/agents/swift-reviewer.md +116 -0
- package/bundled/upstream/ecc/agents/tdd-guide.md +9 -0
- package/bundled/upstream/ecc/agents/type-design-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/typescript-reviewer.md +9 -0
- package/bundled/upstream/ecc/commands/auto-update.md +28 -0
- package/bundled/upstream/ecc/commands/build-fix.md +4 -0
- package/bundled/upstream/ecc/commands/checkpoint.md +4 -0
- package/bundled/upstream/ecc/commands/code-review.md +3 -3
- package/bundled/upstream/ecc/commands/cost-report.md +107 -0
- package/bundled/upstream/ecc/commands/cpp-build.md +1 -1
- package/bundled/upstream/ecc/commands/cpp-test.md +1 -1
- package/bundled/upstream/ecc/commands/ecc-guide.md +93 -0
- package/bundled/upstream/ecc/commands/fastapi-review.md +39 -0
- package/bundled/upstream/ecc/commands/flutter-build.md +1 -1
- package/bundled/upstream/ecc/commands/flutter-test.md +1 -1
- package/bundled/upstream/ecc/commands/gan-build.md +4 -0
- package/bundled/upstream/ecc/commands/gan-design.md +4 -0
- package/bundled/upstream/ecc/commands/go-build.md +1 -1
- package/bundled/upstream/ecc/commands/go-test.md +1 -1
- package/bundled/upstream/ecc/commands/harness-audit.md +4 -0
- package/bundled/upstream/ecc/commands/jira.md +2 -2
- package/bundled/upstream/ecc/commands/kotlin-build.md +1 -1
- package/bundled/upstream/ecc/commands/kotlin-test.md +1 -1
- package/bundled/upstream/ecc/commands/learn.md +4 -0
- package/bundled/upstream/ecc/commands/loop-start.md +4 -0
- package/bundled/upstream/ecc/commands/loop-status.md +54 -1
- package/bundled/upstream/ecc/commands/model-route.md +4 -0
- package/bundled/upstream/ecc/commands/multi-backend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-execute.md +4 -0
- package/bundled/upstream/ecc/commands/multi-frontend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-plan.md +4 -0
- package/bundled/upstream/ecc/commands/multi-workflow.md +4 -0
- package/bundled/upstream/ecc/commands/plan-prd.md +160 -0
- package/bundled/upstream/ecc/commands/plan.md +96 -13
- package/bundled/upstream/ecc/commands/pm2.md +4 -0
- package/bundled/upstream/ecc/commands/pr.md +184 -0
- package/bundled/upstream/ecc/commands/project-init.md +86 -0
- package/bundled/upstream/ecc/commands/python-review.md +1 -1
- package/bundled/upstream/ecc/commands/quality-gate.md +4 -0
- package/bundled/upstream/ecc/commands/refactor-clean.md +4 -0
- package/bundled/upstream/ecc/commands/rust-build.md +1 -1
- package/bundled/upstream/ecc/commands/rust-test.md +1 -1
- package/bundled/upstream/ecc/commands/security-scan.md +92 -0
- package/bundled/upstream/ecc/commands/sessions.md +6 -6
- package/bundled/upstream/ecc/commands/skill-health.md +3 -3
- package/bundled/upstream/ecc/commands/test-coverage.md +4 -0
- package/bundled/upstream/ecc/commands/update-codemaps.md +4 -0
- package/bundled/upstream/ecc/commands/update-docs.md +4 -0
- package/bundled/upstream/ecc/skills/accessibility/SKILL.md +1 -1
- package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
- package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +49 -3
- package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +387 -0
- package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-animations.md +160 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-aria.md +410 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/cli.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-styling.md +91 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/components.md +117 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/creating-services.md +97 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/define-routes.md +67 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/defining-providers.md +72 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/effects.md +83 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/host-elements.md +80 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/injection-context.md +63 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/inputs.md +101 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/linked-signal.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/mcp.md +108 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/outputs.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/resource.md +77 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-animations.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-guards.md +52 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-testing.md +87 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signal-forms.md +795 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signals-overview.md +94 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +8 -45
- package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +31 -14
- package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +19 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +44 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +4 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +5 -1
- package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +21 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +58 -13
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +97 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +34 -0
- package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/deep-research/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/django-celery/SKILL.md +457 -0
- package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +189 -0
- package/bundled/upstream/ecc/skills/error-handling/SKILL.md +376 -0
- package/bundled/upstream/ecc/skills/exa-search/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +327 -0
- package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +496 -0
- package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +92 -0
- package/bundled/upstream/ecc/skills/frontend-slides/animation-patterns.md +122 -0
- package/bundled/upstream/ecc/skills/frontend-slides/html-template.md +419 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/bundled/upstream/ecc/skills/frontend-slides/viewport-base.css +153 -0
- package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +280 -0
- package/bundled/upstream/ecc/skills/gateguard/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +88 -0
- package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
- package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +129 -0
- package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +157 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +241 -5
- package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +346 -0
- package/bundled/upstream/ecc/skills/motion-advanced/SKILL.md +596 -0
- package/bundled/upstream/ecc/skills/motion-foundations/SKILL.md +299 -0
- package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +435 -0
- package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +575 -0
- package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +412 -0
- package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +210 -0
- package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +152 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +1 -9
- package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +262 -0
- package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +371 -0
- package/bundled/upstream/ecc/skills/production-audit/SKILL.md +206 -0
- package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +24 -400
- package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +722 -0
- package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +467 -0
- package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +811 -0
- package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +479 -0
- package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +403 -0
- package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/bundled/upstream/ecc/skills/search-first/SKILL.md +23 -2
- package/bundled/upstream/ecc/skills/security-review/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +28 -3
- package/bundled/upstream/ecc/skills/skill-comply/tests/test_runner.py +172 -0
- package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +140 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +1 -0
- package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +2 -2
- package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +203 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/architecture.md +90 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/database.md +99 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/routing.md +64 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/testing.md +72 -0
- package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +134 -0
- package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +449 -0
- package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
- package/bundled/upstream/ecc/skills/x-api/SKILL.md +4 -0
- package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +20 -0
- package/bundled/upstream/oh-my-claudecode/agents/analyst.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/architect.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +26 -7
- package/bundled/upstream/oh-my-claudecode/agents/critic.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/debugger.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/designer.md +14 -1
- package/bundled/upstream/oh-my-claudecode/agents/document-specialist.md +1 -1
- package/bundled/upstream/oh-my-claudecode/agents/executor.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/explore.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/git-master.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/planner.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/qa-tester.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/scientist.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/test-engineer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/tracer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/verifier.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/writer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/skills/AGENTS.md +4 -3
- package/bundled/upstream/oh-my-claudecode/skills/ai-slop-cleaner/SKILL.md +12 -0
- package/bundled/upstream/oh-my-claudecode/skills/deep-dive/SKILL.md +69 -13
- package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +176 -63
- package/bundled/upstream/oh-my-claudecode/skills/learner/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +22 -3
- package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +2 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +45 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +46 -5
- package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +19 -17
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/config.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/parse.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/azure-devops.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/bitbucket.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitea.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/github.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitlab.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/interface.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/jira.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/session.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/tmux.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/worktree.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/psm.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/tests/test-psm-prompt-injection.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +8 -8
- package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +9 -5
- package/bundled/upstream/oh-my-claudecode/skills/skill/SKILL.md +6 -6
- package/bundled/upstream/oh-my-claudecode/skills/skillify/SKILL.md +19 -3
- package/bundled/upstream/oh-my-claudecode/skills/trace/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +20 -7
- package/bundled/upstream/superpowers/.omc-source/bundle.json +21 -0
- package/bundled/upstream/superpowers/hooks/hooks-cursor.json +1 -1
- package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +1 -1
- package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +93 -42
- package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +7 -9
- package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +107 -85
- package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +3 -1
- package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -3
- package/bundled/upstream/superpowers/skills/systematic-debugging/CREATION-LOG.md +1 -1
- package/bundled/upstream/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
- package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +95 -98
- package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +7 -48
- package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +1 -11
- package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +21 -3
- package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +1 -1
- package/package.json +1 -1
- package/src/cli/index.js +1 -0
- package/src/cli/setup.js +9 -0
- package/src/cli/skill-index.js +209 -0
- package/src/cli/skill.js +4 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +0 -355
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +0 -359
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +0 -297
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +0 -209
- package/bundled/upstream/ecc/commands/agent-sort.md +0 -23
- package/bundled/upstream/ecc/commands/claw.md +0 -23
- package/bundled/upstream/ecc/commands/context-budget.md +0 -23
- package/bundled/upstream/ecc/commands/devfleet.md +0 -23
- package/bundled/upstream/ecc/commands/docs.md +0 -23
- package/bundled/upstream/ecc/commands/e2e.md +0 -268
- package/bundled/upstream/ecc/commands/eval.md +0 -23
- package/bundled/upstream/ecc/commands/orchestrate.md +0 -135
- package/bundled/upstream/ecc/commands/prompt-optimize.md +0 -23
- package/bundled/upstream/ecc/commands/rules-distill.md +0 -20
- package/bundled/upstream/ecc/commands/tdd.md +0 -231
- package/bundled/upstream/ecc/commands/verify.md +0 -23
- package/bundled/upstream/ecc/skills/claude-api/SKILL.md +0 -337
- package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +0 -145
- package/bundled/upstream/superpowers/agents/code-reviewer.md +0 -48
- package/bundled/upstream/superpowers/commands/brainstorm.md +0 -5
- package/bundled/upstream/superpowers/commands/execute-plan.md +0 -5
- package/bundled/upstream/superpowers/commands/write-plan.md +0 -5
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# tinystruct Architecture and Configuration
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Choose **tinystruct** when you need a lightweight, high-performance Java framework that treats CLI and HTTP as equal citizens. Ideal for microservices, CLI utilities, and data-driven applications with a small footprint and zero-dependency JSON handling.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
### Core Architecture
|
|
10
|
+
|
|
11
|
+
The framework operates on a singleton `ActionRegistry` that maps URL patterns (or command strings) to `Action` objects. When a request arrives, the system resolves the path and invokes the corresponding method handle.
|
|
12
|
+
|
|
13
|
+
#### Key Abstractions
|
|
14
|
+
|
|
15
|
+
| Class/Interface | Role |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `AbstractApplication` | Base class for all tinystruct applications. Extend this. |
|
|
18
|
+
| `@Action` annotation | Maps a method to a URI path (web) or command name (CLI). The single routing primitive. |
|
|
19
|
+
| `ActionRegistry` | Singleton that maps URL patterns to `Action` objects via regex. Never instantiate directly. |
|
|
20
|
+
| `Action` | Wraps a `MethodHandle` + regex pattern + priority + `Mode` for dispatch. |
|
|
21
|
+
| `Context` | Per-request state store. Access via `getContext()`. Holds CLI args and HTTP request/response. |
|
|
22
|
+
| `Dispatcher` | CLI entry point (`bin/dispatcher`). Reads `--import` to load applications. |
|
|
23
|
+
| `HttpServer` | Built-in HTTP server. Start with `bin/dispatcher start --import org.tinystruct.system.HttpServer`. |
|
|
24
|
+
|
|
25
|
+
### Package Map
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
org.tinystruct/
|
|
29
|
+
├── AbstractApplication.java ← extend this
|
|
30
|
+
├── Application.java ← interface
|
|
31
|
+
├── ApplicationException.java ← checked exception
|
|
32
|
+
├── ApplicationRuntimeException.java ← unchecked exception
|
|
33
|
+
├── application/
|
|
34
|
+
│ ├── Action.java ← runtime action wrapper
|
|
35
|
+
│ ├── ActionRegistry.java ← singleton route registry
|
|
36
|
+
│ └── Context.java ← request context
|
|
37
|
+
├── system/
|
|
38
|
+
│ ├── annotation/Action.java ← @Action annotation + Mode enum
|
|
39
|
+
│ ├── Dispatcher.java ← CLI dispatcher
|
|
40
|
+
│ ├── HttpServer.java ← built-in HTTP server
|
|
41
|
+
│ ├── EventDispatcher.java ← event bus
|
|
42
|
+
│ └── Settings.java ← reads application.properties
|
|
43
|
+
├── data/
|
|
44
|
+
│ ├── component/Builder.java ← JSON object (use instead of Gson/Jackson)
|
|
45
|
+
│ ├── component/Builders.java ← JSON array
|
|
46
|
+
│ ├── component/AbstractData.java ← base POJO for DB persistence
|
|
47
|
+
│ ├── component/Condition.java ← fluent SQL query builder
|
|
48
|
+
│ ├── component/FieldType.java ← SQL-to-Java type mappings
|
|
49
|
+
│ ├── Mapping.java ← reads .map.xml metadata
|
|
50
|
+
│ ├── DatabaseOperator.java ← low-level JDBC wrapper
|
|
51
|
+
│ └── FileEntity.java ← file upload representation
|
|
52
|
+
├── http/ ← Request, Response, Constants
|
|
53
|
+
│ └── SSEPushManager.java ← Server-Sent Events management
|
|
54
|
+
└── net/ ← URLRequest, HTTPHandler (outbound HTTP)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Template Behavior and Dispatch Flow
|
|
58
|
+
|
|
59
|
+
By default, the framework assumes a view template is required. If `templateRequired` is `true`, `toString()` looks for a `.view` file in `src/main/resources/themes/<ClassName>.view`. Use `setVariable("name", value)` to pass data to templates, which use `{%name%}` for interpolation.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
### Minimal Application Initialization
|
|
64
|
+
```java
|
|
65
|
+
@Override
|
|
66
|
+
public void init() {
|
|
67
|
+
this.setTemplateRequired(false); // Skip .view template lookup for data-only apps
|
|
68
|
+
// Do NOT call setAction() here — use @Action annotation instead
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Action Definition and CLI Invocation
|
|
73
|
+
```java
|
|
74
|
+
@Action("hello")
|
|
75
|
+
public String hello() {
|
|
76
|
+
return "Hello, tinystruct!";
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
**Execution via Dispatcher:**
|
|
80
|
+
```bash
|
|
81
|
+
bin/dispatcher hello
|
|
82
|
+
bin/dispatcher greet/James
|
|
83
|
+
bin/dispatcher echo --words "Hello" --import com.example.HelloApp
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Configuration Access
|
|
87
|
+
Located at `src/main/resources/application.properties`:
|
|
88
|
+
```java
|
|
89
|
+
String port = this.getConfiguration("server.port");
|
|
90
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# tinystruct Data Handling (JSON)
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Prefer `org.tinystruct.data.component.Builder` and `Builders` for lightweight, zero-dependency JSON. Use `Builder` for JSON objects (`{}`), `Builders` for JSON arrays (`[]`). **Always use `Builders` instead of `List<Builder>`** to avoid generic type erasure issues.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
`Builder` provides a key-value interface for creating and reading JSON objects. `Builders` provides an indexed list for JSON arrays. Both integrate directly with `AbstractApplication` result handling.
|
|
10
|
+
|
|
11
|
+
### Why Builder/Builders?
|
|
12
|
+
- **Zero External Dependencies** — lean and fast
|
|
13
|
+
- **Native Integration** — works with framework result handling
|
|
14
|
+
- **Type Safety** — `Builders` serializes properly to `[]`; `List<Builder>` can cause casting issues
|
|
15
|
+
|
|
16
|
+
## Examples
|
|
17
|
+
|
|
18
|
+
### Serialize a Single Object
|
|
19
|
+
```java
|
|
20
|
+
import org.tinystruct.data.component.Builder;
|
|
21
|
+
|
|
22
|
+
Builder response = new Builder();
|
|
23
|
+
response.put("status", "success");
|
|
24
|
+
response.put("count", 42);
|
|
25
|
+
return response.toString(); // {"status":"success","count":42}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Serialize a List using Builders
|
|
29
|
+
```java
|
|
30
|
+
import org.tinystruct.data.component.Builder;
|
|
31
|
+
import org.tinystruct.data.component.Builders;
|
|
32
|
+
|
|
33
|
+
Builders dataList = new Builders();
|
|
34
|
+
for (MyModel item : myCollection) {
|
|
35
|
+
Builder b = new Builder();
|
|
36
|
+
b.put("id", item.getId());
|
|
37
|
+
b.put("name", item.getName());
|
|
38
|
+
dataList.add(b);
|
|
39
|
+
}
|
|
40
|
+
Builder response = new Builder();
|
|
41
|
+
response.put("data", dataList);
|
|
42
|
+
return response.toString(); // {"data":[{"id":1,"name":"X"}]}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Parse a JSON Object
|
|
46
|
+
```java
|
|
47
|
+
Builder parsed = new Builder();
|
|
48
|
+
parsed.parse(jsonString);
|
|
49
|
+
String status = parsed.get("status").toString();
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Parse a JSON Array
|
|
53
|
+
```java
|
|
54
|
+
Builders parsedArray = new Builders();
|
|
55
|
+
parsedArray.parse(jsonArrayString);
|
|
56
|
+
for (int i = 0; i < parsedArray.size(); i++) {
|
|
57
|
+
Builder item = parsedArray.get(i);
|
|
58
|
+
System.out.println(item.get("name"));
|
|
59
|
+
}
|
|
60
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# tinystruct Database Persistence
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Use the built-in ORM-like data layer for database operations. It provides a lightweight alternative to JPA/Hibernate using POJOs extending `AbstractData` and XML mapping files.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
### Architecture
|
|
10
|
+
|
|
11
|
+
Each table is represented by:
|
|
12
|
+
1. **Java POJO**: Extends `AbstractData`, provides getters/setters and `setData(Row)`.
|
|
13
|
+
2. **Mapping XML**: `ClassName.map.xml` in resources, binding Java fields to DB columns.
|
|
14
|
+
|
|
15
|
+
#### Key Base Class: `AbstractData`
|
|
16
|
+
Provides CRUD methods:
|
|
17
|
+
- `append()` / `appendAndGetId()`
|
|
18
|
+
- `update()`
|
|
19
|
+
- `delete()`
|
|
20
|
+
- `findAll()` / `findOneById()` / `findOneByKey(key, value)`
|
|
21
|
+
- `findWith(where, params)`
|
|
22
|
+
- `find(SQL, params)`
|
|
23
|
+
|
|
24
|
+
### POJO Generation (CLI)
|
|
25
|
+
|
|
26
|
+
Introspect a live database table to produce the POJO and mapping file.
|
|
27
|
+
|
|
28
|
+
#### Configuration
|
|
29
|
+
`application.properties`:
|
|
30
|
+
```properties
|
|
31
|
+
driver=com.mysql.cj.jdbc.Driver
|
|
32
|
+
database.url=jdbc:mysql://localhost:3306/mydb
|
|
33
|
+
database.user=root
|
|
34
|
+
database.password=secret
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
#### Command
|
|
38
|
+
```bash
|
|
39
|
+
# Interactive mode
|
|
40
|
+
bin/dispatcher generate
|
|
41
|
+
|
|
42
|
+
# Specify table
|
|
43
|
+
bin/dispatcher generate --tables users
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
|
|
48
|
+
### CRUD Operations
|
|
49
|
+
```java
|
|
50
|
+
// CREATE
|
|
51
|
+
User user = new User();
|
|
52
|
+
user.setUsername("james");
|
|
53
|
+
user.append();
|
|
54
|
+
|
|
55
|
+
// READ
|
|
56
|
+
User user = new User();
|
|
57
|
+
user.setId(42);
|
|
58
|
+
user.findOneById();
|
|
59
|
+
|
|
60
|
+
// UPDATE
|
|
61
|
+
user.setEmail("new@example.com");
|
|
62
|
+
user.update();
|
|
63
|
+
|
|
64
|
+
// DELETE
|
|
65
|
+
user.delete();
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Querying with Conditions
|
|
69
|
+
```java
|
|
70
|
+
User user = new User();
|
|
71
|
+
Table results = user.findWith("username LIKE ?", new Object[]{"%jam%"});
|
|
72
|
+
|
|
73
|
+
// Fluent Condition Builder
|
|
74
|
+
Condition condition = new Condition();
|
|
75
|
+
condition.setRequestFields("id,username");
|
|
76
|
+
Table filtered = user.find(
|
|
77
|
+
condition.select("`users`").and("email LIKE ?").orderBy("id DESC"),
|
|
78
|
+
new Object[]{"%@example.com"}
|
|
79
|
+
);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Mapping XML Structure
|
|
83
|
+
`User.map.xml`:
|
|
84
|
+
```xml
|
|
85
|
+
<mapping>
|
|
86
|
+
<class name="User" table="users">
|
|
87
|
+
<id name="Id" column="id" increment="true" generate="false" length="11" type="int"/>
|
|
88
|
+
<property name="username" column="username" length="50" type="varchar"/>
|
|
89
|
+
<property name="email" column="email" length="100" type="varchar"/>
|
|
90
|
+
</class>
|
|
91
|
+
</mapping>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Important Rules
|
|
95
|
+
|
|
96
|
+
1. **File Placement**: The mapping XML **must** mirror the POJO's package path under `src/main/resources/`.
|
|
97
|
+
2. **Naming**: Table names are singularized for class names (`users` → `User`). Underscored columns become camelCase fields (`created_at` → `createdAt`).
|
|
98
|
+
3. **Setters**: Use `setFieldAsXxx` methods (e.g., `setFieldAsString`) in setters to sync state with the internal field map.
|
|
99
|
+
4. **Id Field**: The primary key field in Java is always named `Id` (inherited from `AbstractData`).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# tinystruct @Action Routing Reference
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Use the `@Action` annotation in your applications to define routes for both CLI commands and HTTP endpoints. It is appropriate whenever you need to map logic to a specific path, handle parameterized requests, or restrict execution to specific HTTP methods while maintaining a consistent command structure across environments.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
The `ActionRegistry` parses `@Action` annotations to build a routing table. For parameterized methods, the framework automatically maps Java parameter types to corresponding regex segments.
|
|
10
|
+
|
|
11
|
+
### Regex Generation Rules
|
|
12
|
+
- `getUser(int id)` → pattern: `^/?user/(-?\d+)$`
|
|
13
|
+
- `search(String query)` → pattern: `^/?search/([^/]+)$`
|
|
14
|
+
|
|
15
|
+
Supported parameter types: `String`, `int/Integer`, `long/Long`, `float/Float`, `double/Double`, `boolean/Boolean`, `char/Character`, `short/Short`, `byte/Byte`, `Date` (parsed as `yyyy-MM-dd HH:mm:ss`).
|
|
16
|
+
|
|
17
|
+
### Mode Values
|
|
18
|
+
|
|
19
|
+
| Mode | When it triggers |
|
|
20
|
+
|---|---|
|
|
21
|
+
| `DEFAULT` | Both CLI and HTTP (GET, POST, etc.) |
|
|
22
|
+
| `CLI` | CLI dispatcher only |
|
|
23
|
+
| `HTTP_GET` | HTTP GET only |
|
|
24
|
+
| `HTTP_POST` | HTTP POST only |
|
|
25
|
+
| `HTTP_PUT` | HTTP PUT only |
|
|
26
|
+
| `HTTP_DELETE` | HTTP DELETE only |
|
|
27
|
+
| `HTTP_PATCH` | HTTP PATCH only |
|
|
28
|
+
|
|
29
|
+
> **Note:** You can map HTTP method names to `Mode` using `Action.Mode.fromName(String methodName)`. Unknown or null values return `Mode.DEFAULT`.
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Basic Action Declaration
|
|
34
|
+
```java
|
|
35
|
+
@Action(
|
|
36
|
+
value = "path/subpath", // required: URI segment or CLI command
|
|
37
|
+
description = "What it does", // shown in --help output
|
|
38
|
+
mode = Mode.DEFAULT, // default: Mode.DEFAULT
|
|
39
|
+
example = "bin/dispatcher path/subpath/42"
|
|
40
|
+
)
|
|
41
|
+
public String myAction(int id) { ... }
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Parameterized Paths
|
|
45
|
+
```java
|
|
46
|
+
@Action("user/{id}")
|
|
47
|
+
public String getUser(int id) { ... }
|
|
48
|
+
// → CLI: bin/dispatcher user/42
|
|
49
|
+
// → HTTP: /?q=user/42
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Dependency Injection
|
|
53
|
+
`ActionRegistry` automatically injects `Request` and/or `Response` from `Context` if they are parameters:
|
|
54
|
+
|
|
55
|
+
```java
|
|
56
|
+
@Action(value = "upload", mode = Mode.HTTP_POST)
|
|
57
|
+
public String upload(Request<?, ?> req, Response<?, ?> res) throws ApplicationException {
|
|
58
|
+
// Access raw request/response if needed
|
|
59
|
+
return "ok";
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Path Matching Priority
|
|
64
|
+
If two methods share the same path, the framework uses the first match in the `ActionRegistry`. Use explicit `Mode` values to disambiguate (e.g., separating a GET for a form and a POST for submission).
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# tinystruct System and Usage Reference
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Use these patterns to handle request state, manage web sessions, implement Server-Sent Events (SSE), handle file uploads, or perform outbound HTTP networking.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
### Context and CLI Arguments
|
|
10
|
+
`Context` is the primary data store for request-specific state. CLI flags passed as `--key value` are stored in `Context` as `"--key"`.
|
|
11
|
+
|
|
12
|
+
### Session Management
|
|
13
|
+
Pluggable architecture. Default is `MemorySessionRepository`. Configure Redis in `application.properties`:
|
|
14
|
+
```properties
|
|
15
|
+
default.session.repository=org.tinystruct.http.RedisSessionRepository
|
|
16
|
+
redis.host=127.0.0.1
|
|
17
|
+
redis.port=6379
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Server-Sent Events (SSE)
|
|
21
|
+
Built-in support for real-time push. The `HttpServer` automatically handles the SSE lifecycle when it detects the `Accept: text/event-stream` header. Connections are tracked by session ID in `SSEPushManager`.
|
|
22
|
+
|
|
23
|
+
### Outbound Networking
|
|
24
|
+
Use `URLRequest` and `HTTPHandler` for making HTTP requests to external services.
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
### Context and CLI Arguments
|
|
29
|
+
```java
|
|
30
|
+
@Action("echo")
|
|
31
|
+
public String echo() {
|
|
32
|
+
// CLI: bin/dispatcher echo --words "Hello World"
|
|
33
|
+
Object words = getContext().getAttribute("--words");
|
|
34
|
+
if (words != null) return words.toString();
|
|
35
|
+
return "No words provided";
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Session Management
|
|
40
|
+
```java
|
|
41
|
+
@Action(value = "login", mode = Mode.HTTP_POST)
|
|
42
|
+
public String login(Request<?, ?> request) {
|
|
43
|
+
request.getSession().setAttribute("userId", "42");
|
|
44
|
+
return "Logged in";
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Server-Sent Events (SSE)
|
|
49
|
+
```java
|
|
50
|
+
@Action("sse/connect")
|
|
51
|
+
public String connect() {
|
|
52
|
+
return "{\"type\":\"connect\",\"message\":\"Connected\"}";
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// In another method or event handler:
|
|
56
|
+
String sessionId = getContext().getId();
|
|
57
|
+
SSEPushManager.getInstance().push(sessionId, new Builder().put("msg", "hello"));
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### File Uploads
|
|
61
|
+
```java
|
|
62
|
+
import org.tinystruct.data.FileEntity;
|
|
63
|
+
|
|
64
|
+
@Action(value = "upload", mode = Mode.HTTP_POST)
|
|
65
|
+
public String upload(Request<?, ?> request) throws ApplicationException {
|
|
66
|
+
List<FileEntity> files = request.getAttachments();
|
|
67
|
+
if (files != null) {
|
|
68
|
+
for (FileEntity file : files) {
|
|
69
|
+
// file.getFilename(), file.getContent()
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return "Uploaded";
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Outbound HTTP
|
|
77
|
+
```java
|
|
78
|
+
import org.tinystruct.net.URLRequest;
|
|
79
|
+
import org.tinystruct.net.handlers.HTTPHandler;
|
|
80
|
+
|
|
81
|
+
URLRequest request = new URLRequest(new URL("https://api.example.com"));
|
|
82
|
+
request.setMethod("POST").setBody("{\"data\":\"val\"}");
|
|
83
|
+
|
|
84
|
+
HTTPHandler handler = new HTTPHandler();
|
|
85
|
+
var response = handler.handleRequest(request);
|
|
86
|
+
if (response.getStatusCode() == 200) {
|
|
87
|
+
String body = response.getBody();
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Event System
|
|
92
|
+
Register handlers in `init()` for asynchronous task execution.
|
|
93
|
+
```java
|
|
94
|
+
EventDispatcher.getInstance().registerHandler(MyEvent.class, event -> {
|
|
95
|
+
CompletableFuture.runAsync(() -> doHeavyWork(event.getPayload()));
|
|
96
|
+
});
|
|
97
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# tinystruct Testing Patterns
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
Use these patterns when writing unit tests for your applications with **JUnit 5**. Essential for verifying action logic, routing registration, and HTTP mode behavior.
|
|
6
|
+
|
|
7
|
+
## How It Works
|
|
8
|
+
|
|
9
|
+
### Unit Testing Applications
|
|
10
|
+
ActionRegistry is a singleton. To test an application:
|
|
11
|
+
1. Instantiate the application.
|
|
12
|
+
2. Provide a `Settings` object (triggers `init()` and annotation processing).
|
|
13
|
+
3. Use `app.invoke(path, args)` to test logic directly.
|
|
14
|
+
|
|
15
|
+
### HTTP Integration Testing
|
|
16
|
+
For tests involving the built-in HTTP server:
|
|
17
|
+
1. Start `HttpServer` in a background thread.
|
|
18
|
+
2. Use `ApplicationManager.call("start", context, Action.Mode.CLI)` to boot.
|
|
19
|
+
3. Wait for the port to be open using a `Socket`.
|
|
20
|
+
4. Use `URLRequest` and `HTTPHandler` to perform actual requests.
|
|
21
|
+
|
|
22
|
+
## Examples
|
|
23
|
+
|
|
24
|
+
### Unit Test
|
|
25
|
+
```java
|
|
26
|
+
import org.junit.jupiter.api.*;
|
|
27
|
+
import org.tinystruct.system.Settings;
|
|
28
|
+
|
|
29
|
+
class MyAppTest {
|
|
30
|
+
private MyApp app;
|
|
31
|
+
|
|
32
|
+
@BeforeEach
|
|
33
|
+
void setUp() {
|
|
34
|
+
app = new MyApp();
|
|
35
|
+
app.setConfiguration(new Settings());
|
|
36
|
+
app.init(); // triggers @Action annotation processing and registers all actions
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@Test
|
|
40
|
+
void testHello() throws Exception {
|
|
41
|
+
Object result = app.invoke("hello");
|
|
42
|
+
Assertions.assertEquals("Hello!", result);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@Test
|
|
46
|
+
void testGreet() throws Exception {
|
|
47
|
+
Object result = app.invoke("greet", new Object[]{"James"});
|
|
48
|
+
Assertions.assertEquals("Hello, James!", result);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### ActionRegistry Match Testing
|
|
54
|
+
```java
|
|
55
|
+
@Test
|
|
56
|
+
void testRouting() {
|
|
57
|
+
ActionRegistry registry = ActionRegistry.getInstance();
|
|
58
|
+
Action action = registry.getAction("greet/James");
|
|
59
|
+
Assertions.assertNotNull(action);
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### HTTP Integration Pattern
|
|
64
|
+
Reference: `src/test/java/org/tinystruct/system/HttpServerHttpModeTest.java`
|
|
65
|
+
|
|
66
|
+
```java
|
|
67
|
+
// Pattern:
|
|
68
|
+
// 1. Start server in thread
|
|
69
|
+
// 2. Poll for port availability
|
|
70
|
+
// 3. Send HTTP request via HTTPHandler
|
|
71
|
+
// 4. Assert response body/status
|
|
72
|
+
```
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-to-vue
|
|
3
|
+
description: Use when the user has UI screenshots or design exports that need batch conversion into Vue 3 components, especially with Vant, Element Plus, or Ant Design Vue.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# UI To Vue
|
|
8
|
+
|
|
9
|
+
Batch-convert UI design screenshots into Vue 3 Composition API component code.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- The user provides a directory of design screenshots or design-export images.
|
|
14
|
+
- The target application is Vue 3.
|
|
15
|
+
- The user wants a first pass of page components, shared components, and router wiring.
|
|
16
|
+
- The user specifies Vant, Element Plus, or Ant Design Vue as the component library.
|
|
17
|
+
|
|
18
|
+
## When Not to Use
|
|
19
|
+
|
|
20
|
+
- The user has only one screenshot and wants a bespoke component.
|
|
21
|
+
- The target project is not Vue.
|
|
22
|
+
- The design requires detailed interaction logic, data flow, or accessibility review.
|
|
23
|
+
- The screenshots contain private customer data that cannot be sent to an external model API.
|
|
24
|
+
|
|
25
|
+
## Inputs
|
|
26
|
+
|
|
27
|
+
Use an input directory that groups screenshots by module and page state:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
screenshots/
|
|
31
|
+
|-- HomePage/
|
|
32
|
+
| |-- List/
|
|
33
|
+
| | |-- HomePage-List-Default@3x.png
|
|
34
|
+
| | `-- cut-images/
|
|
35
|
+
| |-- cut-images/
|
|
36
|
+
| `-- HomePage-Default@3x.png
|
|
37
|
+
`-- cut-images/
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Supported cut-image directory names include `assets`, `icons`, `sprites`, `cut`, `images`, and `cut-images`.
|
|
41
|
+
|
|
42
|
+
## Conversion Model
|
|
43
|
+
|
|
44
|
+
- Page grouping: combine related screenshots into one page component when they represent list, detail, form, loading, or empty states.
|
|
45
|
+
- UI library mapping: map native visual elements to Vant, Element Plus, or Ant Design Vue components where practical.
|
|
46
|
+
- Cut-image priority: prefer page-level assets, then module-level assets, then global shared assets.
|
|
47
|
+
- Component extraction: extract repeated UI regions into shared components when they appear more than once.
|
|
48
|
+
|
|
49
|
+
## CLI Usage
|
|
50
|
+
|
|
51
|
+
Run the converter with `npx` so the documented command works without relying on a global binary:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
export DASHSCOPE_API_KEY=your_key
|
|
55
|
+
npx ui-to-vue-converter@1.0.2 --input ./screenshots --ui vant --output ./src
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
For desktop UI libraries:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx ui-to-vue-converter@1.0.2 --input ./designs --ui element-plus --output ./src
|
|
62
|
+
npx ui-to-vue-converter@1.0.2 --input ./designs --ui antd-vue --output ./src
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
If the package is installed globally, the `ui-to-vue` binary can be used directly:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm install -g ui-to-vue-converter@1.0.2
|
|
69
|
+
ui-to-vue --input ./screenshots --ui vant --output ./src
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Options
|
|
73
|
+
|
|
74
|
+
| Option | Description | Default |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| `--input` | Design image directory | `./screenshots` |
|
|
77
|
+
| `--ui` | UI library: `vant`, `element-plus`, or `antd-vue` | `vant` |
|
|
78
|
+
| `--output` | Output directory | `./src` |
|
|
79
|
+
| `--config` | Config file path | `./.ui-to-vue.config.json` |
|
|
80
|
+
|
|
81
|
+
## API Key Handling
|
|
82
|
+
|
|
83
|
+
The converter can read DashScope credentials from a config file or from the environment. Prefer an environment variable in repositories:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
export DASHSCOPE_API_KEY=your_key
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
If a local config file is required, keep it out of version control:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"apiKey": "your_dashscope_key",
|
|
94
|
+
"input": "./designs",
|
|
95
|
+
"ui": "vant",
|
|
96
|
+
"output": "./src"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```gitignore
|
|
101
|
+
.ui-to-vue.config.json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Security and Privacy
|
|
105
|
+
|
|
106
|
+
- Treat design screenshots as source material that may be sent to an external model API.
|
|
107
|
+
- Do not run this flow on private customer designs without permission.
|
|
108
|
+
- Pin the converter version in repeatable workflows instead of using `@latest`.
|
|
109
|
+
- Review generated Vue code before committing it.
|
|
110
|
+
- Do not commit `.ui-to-vue.config.json`, API keys, generated secrets, or customer screenshots.
|
|
111
|
+
|
|
112
|
+
## Output Review Checklist
|
|
113
|
+
|
|
114
|
+
- [ ] Page components were generated under `views/` or the chosen output directory.
|
|
115
|
+
- [ ] Repeated UI regions were extracted into `components/` only when reuse is clear.
|
|
116
|
+
- [ ] Router output is compatible with the target project's router style.
|
|
117
|
+
- [ ] Generated components use the requested UI library consistently.
|
|
118
|
+
- [ ] Generated CSS units match the design baseline.
|
|
119
|
+
- [ ] The code passes the project's formatter, linter, type checker, and build.
|
|
120
|
+
- [ ] Placeholder copy, mock data, and generated assets were reviewed before commit.
|
|
121
|
+
|
|
122
|
+
## Troubleshooting
|
|
123
|
+
|
|
124
|
+
| Issue | Check |
|
|
125
|
+
| --- | --- |
|
|
126
|
+
| `401` or authentication error | Confirm `DASHSCOPE_API_KEY` is set in the shell running the command. |
|
|
127
|
+
| `command not found: ui-to-vue` | Use the `npx ui-to-vue-converter@1.0.2` form or install the package globally. |
|
|
128
|
+
| Cut images are ignored | Confirm the asset directory name is supported and nested under the matching page or module. |
|
|
129
|
+
| Components ignore the requested UI library | Re-run with an explicit `--ui` value and inspect the generated imports. |
|
|
130
|
+
| Generated layout dimensions look wrong | Confirm the screenshot export width matches the target library baseline. |
|
|
131
|
+
|
|
132
|
+
## References
|
|
133
|
+
|
|
134
|
+
- npm package: `ui-to-vue-converter`
|