@funnycode/myclaude 0.1.69 → 0.1.71
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/LICENSE +21 -21
- package/dist/SKILL-r7zmg5v7.md +3 -0
- package/dist/cli-mvr5k580.md +3 -0
- package/dist/myclaude.js +8870 -14056
- package/dist/myclaude.mjs +8870 -14056
- package/dist/server-zyhc2a9z.md +3 -0
- package/package.json +125 -125
- package/seed/marketplaces/ecc/.opencode/package-lock.json +169 -169
- package/seed/marketplaces/ecc/commands/aside.md +164 -164
- package/seed/marketplaces/ecc/commands/auto-update.md +28 -28
- package/seed/marketplaces/ecc/commands/build-fix.md +66 -66
- package/seed/marketplaces/ecc/commands/checkpoint.md +78 -78
- package/seed/marketplaces/ecc/commands/code-review.md +289 -289
- package/seed/marketplaces/ecc/commands/cost-report.md +107 -107
- package/seed/marketplaces/ecc/commands/cpp-build.md +173 -173
- package/seed/marketplaces/ecc/commands/cpp-review.md +132 -132
- package/seed/marketplaces/ecc/commands/cpp-test.md +251 -251
- package/seed/marketplaces/ecc/commands/ecc-guide.md +93 -93
- package/seed/marketplaces/ecc/commands/evolve.md +178 -178
- package/seed/marketplaces/ecc/commands/fastapi-review.md +39 -39
- package/seed/marketplaces/ecc/commands/feature-dev.md +49 -49
- package/seed/marketplaces/ecc/commands/flutter-build.md +164 -164
- package/seed/marketplaces/ecc/commands/flutter-review.md +116 -116
- package/seed/marketplaces/ecc/commands/flutter-test.md +144 -144
- package/seed/marketplaces/ecc/commands/gan-build.md +103 -103
- package/seed/marketplaces/ecc/commands/gan-design.md +39 -39
- package/seed/marketplaces/ecc/commands/go-build.md +183 -183
- package/seed/marketplaces/ecc/commands/go-review.md +148 -148
- package/seed/marketplaces/ecc/commands/go-test.md +268 -268
- package/seed/marketplaces/ecc/commands/gradle-build.md +70 -70
- package/seed/marketplaces/ecc/commands/harness-audit.md +84 -84
- package/seed/marketplaces/ecc/commands/hookify-configure.md +14 -14
- package/seed/marketplaces/ecc/commands/hookify-help.md +46 -46
- package/seed/marketplaces/ecc/commands/hookify-list.md +21 -21
- package/seed/marketplaces/ecc/commands/hookify.md +50 -50
- package/seed/marketplaces/ecc/commands/instinct-export.md +66 -66
- package/seed/marketplaces/ecc/commands/instinct-import.md +114 -114
- package/seed/marketplaces/ecc/commands/instinct-status.md +59 -59
- package/seed/marketplaces/ecc/commands/jira.md +106 -106
- package/seed/marketplaces/ecc/commands/kotlin-build.md +174 -174
- package/seed/marketplaces/ecc/commands/kotlin-review.md +140 -140
- package/seed/marketplaces/ecc/commands/kotlin-test.md +312 -312
- package/seed/marketplaces/ecc/commands/learn-eval.md +116 -116
- package/seed/marketplaces/ecc/commands/learn.md +74 -74
- package/seed/marketplaces/ecc/commands/loop-start.md +36 -36
- package/seed/marketplaces/ecc/commands/loop-status.md +77 -77
- package/seed/marketplaces/ecc/commands/marketing-campaign.md +129 -129
- package/seed/marketplaces/ecc/commands/model-route.md +30 -30
- package/seed/marketplaces/ecc/commands/multi-backend.md +162 -162
- package/seed/marketplaces/ecc/commands/multi-execute.md +319 -319
- package/seed/marketplaces/ecc/commands/multi-frontend.md +162 -162
- package/seed/marketplaces/ecc/commands/multi-plan.md +272 -272
- package/seed/marketplaces/ecc/commands/multi-workflow.md +195 -195
- package/seed/marketplaces/ecc/commands/plan-prd.md +160 -160
- package/seed/marketplaces/ecc/commands/plan.md +200 -200
- package/seed/marketplaces/ecc/commands/pm2.md +276 -276
- package/seed/marketplaces/ecc/commands/pr.md +184 -184
- package/seed/marketplaces/ecc/commands/project-init.md +86 -86
- package/seed/marketplaces/ecc/commands/projects.md +39 -39
- package/seed/marketplaces/ecc/commands/promote.md +41 -41
- package/seed/marketplaces/ecc/commands/prp-commit.md +112 -112
- package/seed/marketplaces/ecc/commands/prp-implement.md +385 -385
- package/seed/marketplaces/ecc/commands/prp-plan.md +502 -502
- package/seed/marketplaces/ecc/commands/prp-pr.md +184 -184
- package/seed/marketplaces/ecc/commands/prp-prd.md +447 -447
- package/seed/marketplaces/ecc/commands/prune.md +31 -31
- package/seed/marketplaces/ecc/commands/python-review.md +297 -297
- package/seed/marketplaces/ecc/commands/quality-gate.md +33 -33
- package/seed/marketplaces/ecc/commands/refactor-clean.md +84 -84
- package/seed/marketplaces/ecc/commands/resume-session.md +156 -156
- package/seed/marketplaces/ecc/commands/review-pr.md +37 -37
- package/seed/marketplaces/ecc/commands/rust-build.md +187 -187
- package/seed/marketplaces/ecc/commands/rust-review.md +142 -142
- package/seed/marketplaces/ecc/commands/rust-test.md +308 -308
- package/seed/marketplaces/ecc/commands/santa-loop.md +175 -175
- package/seed/marketplaces/ecc/commands/save-session.md +275 -275
- package/seed/marketplaces/ecc/commands/security-scan.md +92 -92
- package/seed/marketplaces/ecc/commands/sessions.md +339 -339
- package/seed/marketplaces/ecc/commands/setup-pm.md +80 -80
- package/seed/marketplaces/ecc/commands/skill-create.md +174 -174
- package/seed/marketplaces/ecc/commands/skill-health.md +54 -54
- package/seed/marketplaces/ecc/commands/test-coverage.md +73 -73
- package/seed/marketplaces/ecc/commands/update-codemaps.md +76 -76
- package/seed/marketplaces/ecc/commands/update-docs.md +88 -88
- package/seed/marketplaces/ecc/skills/accessibility/SKILL.md +146 -146
- package/seed/marketplaces/ecc/skills/agent-architecture-audit/SKILL.md +256 -256
- package/seed/marketplaces/ecc/skills/agent-eval/SKILL.md +145 -145
- package/seed/marketplaces/ecc/skills/agent-harness-construction/SKILL.md +73 -73
- package/seed/marketplaces/ecc/skills/agent-introspection-debugging/SKILL.md +153 -153
- package/seed/marketplaces/ecc/skills/agent-payment-x402/SKILL.md +224 -224
- package/seed/marketplaces/ecc/skills/agent-sort/SKILL.md +215 -215
- package/seed/marketplaces/ecc/skills/agentic-engineering/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/agentic-os/SKILL.md +387 -387
- package/seed/marketplaces/ecc/skills/ai-first-engineering/SKILL.md +51 -51
- package/seed/marketplaces/ecc/skills/ai-regression-testing/SKILL.md +385 -385
- package/seed/marketplaces/ecc/skills/android-clean-architecture/SKILL.md +339 -339
- package/seed/marketplaces/ecc/skills/angular-developer/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/angular-developer/references/angular-animations.md +160 -160
- package/seed/marketplaces/ecc/skills/angular-developer/references/angular-aria.md +410 -410
- package/seed/marketplaces/ecc/skills/angular-developer/references/cli.md +86 -86
- package/seed/marketplaces/ecc/skills/angular-developer/references/component-harnesses.md +59 -59
- package/seed/marketplaces/ecc/skills/angular-developer/references/component-styling.md +91 -91
- package/seed/marketplaces/ecc/skills/angular-developer/references/components.md +117 -117
- package/seed/marketplaces/ecc/skills/angular-developer/references/creating-services.md +97 -97
- package/seed/marketplaces/ecc/skills/angular-developer/references/data-resolvers.md +69 -69
- package/seed/marketplaces/ecc/skills/angular-developer/references/define-routes.md +67 -67
- package/seed/marketplaces/ecc/skills/angular-developer/references/defining-providers.md +72 -72
- package/seed/marketplaces/ecc/skills/angular-developer/references/di-fundamentals.md +120 -120
- package/seed/marketplaces/ecc/skills/angular-developer/references/e2e-testing.md +56 -56
- package/seed/marketplaces/ecc/skills/angular-developer/references/effects.md +83 -83
- package/seed/marketplaces/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -43
- package/seed/marketplaces/ecc/skills/angular-developer/references/host-elements.md +80 -80
- package/seed/marketplaces/ecc/skills/angular-developer/references/injection-context.md +63 -63
- package/seed/marketplaces/ecc/skills/angular-developer/references/inputs.md +101 -101
- package/seed/marketplaces/ecc/skills/angular-developer/references/linked-signal.md +59 -59
- package/seed/marketplaces/ecc/skills/angular-developer/references/loading-strategies.md +61 -61
- package/seed/marketplaces/ecc/skills/angular-developer/references/mcp.md +108 -108
- package/seed/marketplaces/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -69
- package/seed/marketplaces/ecc/skills/angular-developer/references/outputs.md +86 -86
- package/seed/marketplaces/ecc/skills/angular-developer/references/reactive-forms.md +122 -122
- package/seed/marketplaces/ecc/skills/angular-developer/references/rendering-strategies.md +44 -44
- package/seed/marketplaces/ecc/skills/angular-developer/references/resource.md +77 -77
- package/seed/marketplaces/ecc/skills/angular-developer/references/route-animations.md +56 -56
- package/seed/marketplaces/ecc/skills/angular-developer/references/route-guards.md +52 -52
- package/seed/marketplaces/ecc/skills/angular-developer/references/router-lifecycle.md +45 -45
- package/seed/marketplaces/ecc/skills/angular-developer/references/router-testing.md +87 -87
- package/seed/marketplaces/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -68
- package/seed/marketplaces/ecc/skills/angular-developer/references/signal-forms.md +795 -795
- package/seed/marketplaces/ecc/skills/angular-developer/references/signals-overview.md +94 -94
- package/seed/marketplaces/ecc/skills/angular-developer/references/tailwind-css.md +69 -69
- package/seed/marketplaces/ecc/skills/angular-developer/references/template-driven-forms.md +114 -114
- package/seed/marketplaces/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -65
- package/seed/marketplaces/ecc/skills/api-connector-builder/SKILL.md +120 -120
- package/seed/marketplaces/ecc/skills/api-design/SKILL.md +523 -523
- package/seed/marketplaces/ecc/skills/architecture-decision-records/SKILL.md +179 -179
- package/seed/marketplaces/ecc/skills/article-writing/SKILL.md +79 -79
- package/seed/marketplaces/ecc/skills/automation-audit-ops/SKILL.md +142 -142
- package/seed/marketplaces/ecc/skills/autonomous-agent-harness/SKILL.md +273 -273
- package/seed/marketplaces/ecc/skills/autonomous-loops/SKILL.md +610 -610
- package/seed/marketplaces/ecc/skills/backend-patterns/SKILL.md +561 -561
- package/seed/marketplaces/ecc/skills/benchmark/SKILL.md +93 -93
- package/seed/marketplaces/ecc/skills/benchmark-optimization-loop/SKILL.md +69 -69
- package/seed/marketplaces/ecc/skills/blender-motion-state-inspection/SKILL.md +164 -164
- package/seed/marketplaces/ecc/skills/blueprint/SKILL.md +105 -105
- package/seed/marketplaces/ecc/skills/brand-voice/SKILL.md +97 -97
- package/seed/marketplaces/ecc/skills/brand-voice/references/voice-profile-schema.md +55 -55
- package/seed/marketplaces/ecc/skills/browser-qa/SKILL.md +87 -87
- package/seed/marketplaces/ecc/skills/bun-runtime/SKILL.md +84 -84
- package/seed/marketplaces/ecc/skills/canary-watch/SKILL.md +107 -107
- package/seed/marketplaces/ecc/skills/carrier-relationship-management/SKILL.md +212 -212
- package/seed/marketplaces/ecc/skills/cisco-ios-patterns/SKILL.md +163 -163
- package/seed/marketplaces/ecc/skills/ck/SKILL.md +147 -147
- package/seed/marketplaces/ecc/skills/ck/commands/forget.mjs +44 -44
- package/seed/marketplaces/ecc/skills/ck/commands/info.mjs +24 -24
- package/seed/marketplaces/ecc/skills/ck/commands/init.mjs +143 -143
- package/seed/marketplaces/ecc/skills/ck/commands/list.mjs +40 -40
- package/seed/marketplaces/ecc/skills/ck/commands/migrate.mjs +202 -202
- package/seed/marketplaces/ecc/skills/ck/commands/resume.mjs +36 -36
- package/seed/marketplaces/ecc/skills/ck/commands/save.mjs +210 -210
- package/seed/marketplaces/ecc/skills/ck/commands/shared.mjs +387 -387
- package/seed/marketplaces/ecc/skills/ck/hooks/session-start.mjs +224 -224
- package/seed/marketplaces/ecc/skills/claude-devfleet/SKILL.md +103 -103
- package/seed/marketplaces/ecc/skills/click-path-audit/SKILL.md +244 -244
- package/seed/marketplaces/ecc/skills/clickhouse-io/SKILL.md +439 -439
- package/seed/marketplaces/ecc/skills/code-tour/SKILL.md +236 -236
- package/seed/marketplaces/ecc/skills/codebase-onboarding/SKILL.md +233 -233
- package/seed/marketplaces/ecc/skills/coding-standards/SKILL.md +549 -549
- package/seed/marketplaces/ecc/skills/compose-multiplatform-patterns/SKILL.md +299 -299
- package/seed/marketplaces/ecc/skills/configure-ecc/SKILL.md +384 -384
- package/seed/marketplaces/ecc/skills/connections-optimizer/SKILL.md +189 -189
- package/seed/marketplaces/ecc/skills/content-engine/SKILL.md +131 -131
- package/seed/marketplaces/ecc/skills/content-hash-cache-pattern/SKILL.md +161 -161
- package/seed/marketplaces/ecc/skills/context-budget/SKILL.md +135 -135
- package/seed/marketplaces/ecc/skills/continuous-agent-loop/SKILL.md +45 -45
- package/seed/marketplaces/ecc/skills/continuous-learning/SKILL.md +131 -131
- package/seed/marketplaces/ecc/skills/continuous-learning/config.json +18 -18
- package/seed/marketplaces/ecc/skills/continuous-learning/evaluate-session.sh +69 -69
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/SKILL.md +360 -360
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +322 -322
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/observer.md +198 -198
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/session-guardian.sh +150 -150
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/start-observer.sh +248 -248
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/config.json +8 -8
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/hooks/observe.sh +498 -498
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +322 -322
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +1826 -1826
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -31
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -62
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -1018
- package/seed/marketplaces/ecc/skills/cost-aware-llm-pipeline/SKILL.md +183 -183
- package/seed/marketplaces/ecc/skills/cost-tracking/SKILL.md +147 -147
- package/seed/marketplaces/ecc/skills/council/SKILL.md +203 -203
- package/seed/marketplaces/ecc/skills/cpp-coding-standards/SKILL.md +723 -723
- package/seed/marketplaces/ecc/skills/cpp-testing/SKILL.md +324 -324
- package/seed/marketplaces/ecc/skills/crosspost/SKILL.md +111 -111
- package/seed/marketplaces/ecc/skills/csharp-testing/SKILL.md +321 -321
- package/seed/marketplaces/ecc/skills/customer-billing-ops/SKILL.md +140 -140
- package/seed/marketplaces/ecc/skills/customs-trade-compliance/SKILL.md +263 -263
- package/seed/marketplaces/ecc/skills/dart-flutter-patterns/SKILL.md +563 -563
- package/seed/marketplaces/ecc/skills/dashboard-builder/SKILL.md +108 -108
- package/seed/marketplaces/ecc/skills/data-scraper-agent/SKILL.md +764 -764
- package/seed/marketplaces/ecc/skills/data-throughput-accelerator/SKILL.md +72 -72
- package/seed/marketplaces/ecc/skills/database-migrations/SKILL.md +429 -429
- package/seed/marketplaces/ecc/skills/deep-research/SKILL.md +159 -159
- package/seed/marketplaces/ecc/skills/defi-amm-security/SKILL.md +166 -166
- package/seed/marketplaces/ecc/skills/deployment-patterns/SKILL.md +427 -427
- package/seed/marketplaces/ecc/skills/design-system/SKILL.md +82 -82
- package/seed/marketplaces/ecc/skills/django-celery/SKILL.md +457 -457
- package/seed/marketplaces/ecc/skills/django-patterns/SKILL.md +734 -734
- package/seed/marketplaces/ecc/skills/django-security/SKILL.md +593 -593
- package/seed/marketplaces/ecc/skills/django-tdd/SKILL.md +729 -729
- package/seed/marketplaces/ecc/skills/django-verification/SKILL.md +469 -469
- package/seed/marketplaces/ecc/skills/dmux-workflows/SKILL.md +191 -191
- package/seed/marketplaces/ecc/skills/docker-patterns/SKILL.md +364 -364
- package/seed/marketplaces/ecc/skills/documentation-lookup/SKILL.md +90 -90
- package/seed/marketplaces/ecc/skills/dotnet-patterns/SKILL.md +321 -321
- package/seed/marketplaces/ecc/skills/e2e-testing/SKILL.md +326 -326
- package/seed/marketplaces/ecc/skills/ecc-guide/SKILL.md +189 -189
- package/seed/marketplaces/ecc/skills/ecc-tools-cost-audit/SKILL.md +160 -160
- package/seed/marketplaces/ecc/skills/email-ops/SKILL.md +121 -121
- package/seed/marketplaces/ecc/skills/energy-procurement/SKILL.md +228 -228
- package/seed/marketplaces/ecc/skills/enterprise-agent-ops/SKILL.md +50 -50
- package/seed/marketplaces/ecc/skills/error-handling/SKILL.md +376 -376
- package/seed/marketplaces/ecc/skills/eval-harness/SKILL.md +270 -270
- package/seed/marketplaces/ecc/skills/evm-token-decimals/SKILL.md +130 -130
- package/seed/marketplaces/ecc/skills/exa-search/SKILL.md +107 -107
- package/seed/marketplaces/ecc/skills/fal-ai-media/SKILL.md +288 -288
- package/seed/marketplaces/ecc/skills/fastapi-patterns/SKILL.md +327 -327
- package/seed/marketplaces/ecc/skills/finance-billing-ops/SKILL.md +127 -127
- package/seed/marketplaces/ecc/skills/flox-environments/SKILL.md +496 -496
- package/seed/marketplaces/ecc/skills/flutter-dart-code-review/SKILL.md +435 -435
- package/seed/marketplaces/ecc/skills/foundation-models-on-device/SKILL.md +243 -243
- package/seed/marketplaces/ecc/skills/frontend-a11y/SKILL.md +446 -446
- package/seed/marketplaces/ecc/skills/frontend-design-direction/SKILL.md +92 -92
- package/seed/marketplaces/ecc/skills/frontend-patterns/SKILL.md +642 -642
- package/seed/marketplaces/ecc/skills/frontend-slides/SKILL.md +184 -184
- package/seed/marketplaces/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -330
- package/seed/marketplaces/ecc/skills/frontend-slides/animation-patterns.md +122 -122
- package/seed/marketplaces/ecc/skills/frontend-slides/html-template.md +419 -419
- package/seed/marketplaces/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -418
- package/seed/marketplaces/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -96
- package/seed/marketplaces/ecc/skills/frontend-slides/viewport-base.css +153 -153
- package/seed/marketplaces/ecc/skills/fsharp-testing/SKILL.md +280 -280
- package/seed/marketplaces/ecc/skills/gan-style-harness/SKILL.md +278 -278
- package/seed/marketplaces/ecc/skills/gateguard/SKILL.md +125 -125
- package/seed/marketplaces/ecc/skills/git-workflow/SKILL.md +715 -715
- package/seed/marketplaces/ecc/skills/github-ops/SKILL.md +144 -144
- package/seed/marketplaces/ecc/skills/golang-patterns/SKILL.md +674 -674
- package/seed/marketplaces/ecc/skills/golang-testing/SKILL.md +720 -720
- package/seed/marketplaces/ecc/skills/google-workspace-ops/SKILL.md +95 -95
- package/seed/marketplaces/ecc/skills/healthcare-cdss-patterns/SKILL.md +245 -245
- package/seed/marketplaces/ecc/skills/healthcare-emr-patterns/SKILL.md +159 -159
- package/seed/marketplaces/ecc/skills/healthcare-eval-harness/SKILL.md +207 -207
- package/seed/marketplaces/ecc/skills/healthcare-phi-compliance/SKILL.md +145 -145
- package/seed/marketplaces/ecc/skills/hermes-imports/SKILL.md +88 -88
- package/seed/marketplaces/ecc/skills/hexagonal-architecture/SKILL.md +276 -276
- package/seed/marketplaces/ecc/skills/hipaa-compliance/SKILL.md +78 -78
- package/seed/marketplaces/ecc/skills/homelab-network-readiness/SKILL.md +169 -169
- package/seed/marketplaces/ecc/skills/homelab-network-setup/SKILL.md +129 -129
- package/seed/marketplaces/ecc/skills/homelab-pihole-dns/SKILL.md +274 -274
- package/seed/marketplaces/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -311
- package/seed/marketplaces/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -305
- package/seed/marketplaces/ecc/skills/hookify-rules/SKILL.md +128 -128
- package/seed/marketplaces/ecc/skills/inventory-demand-planning/SKILL.md +247 -247
- package/seed/marketplaces/ecc/skills/investor-materials/SKILL.md +96 -96
- package/seed/marketplaces/ecc/skills/investor-outreach/SKILL.md +91 -91
- package/seed/marketplaces/ecc/skills/ios-icon-gen/SKILL.md +157 -157
- package/seed/marketplaces/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -258
- package/seed/marketplaces/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -235
- package/seed/marketplaces/ecc/skills/iterative-retrieval/SKILL.md +211 -211
- package/seed/marketplaces/ecc/skills/ito-basket-compare/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/ito-data-atlas-agent/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/ito-market-intelligence/SKILL.md +60 -60
- package/seed/marketplaces/ecc/skills/ito-trade-planner/SKILL.md +67 -67
- package/seed/marketplaces/ecc/skills/java-coding-standards/SKILL.md +383 -383
- package/seed/marketplaces/ecc/skills/jira-integration/SKILL.md +293 -293
- package/seed/marketplaces/ecc/skills/jpa-patterns/SKILL.md +151 -151
- package/seed/marketplaces/ecc/skills/knowledge-ops/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/kotlin-coroutines-flows/SKILL.md +284 -284
- package/seed/marketplaces/ecc/skills/kotlin-exposed-patterns/SKILL.md +719 -719
- package/seed/marketplaces/ecc/skills/kotlin-ktor-patterns/SKILL.md +689 -689
- package/seed/marketplaces/ecc/skills/kotlin-patterns/SKILL.md +711 -711
- package/seed/marketplaces/ecc/skills/kotlin-testing/SKILL.md +824 -824
- package/seed/marketplaces/ecc/skills/laravel-patterns/SKILL.md +415 -415
- package/seed/marketplaces/ecc/skills/laravel-plugin-discovery/SKILL.md +229 -229
- package/seed/marketplaces/ecc/skills/laravel-security/SKILL.md +285 -285
- package/seed/marketplaces/ecc/skills/laravel-tdd/SKILL.md +283 -283
- package/seed/marketplaces/ecc/skills/laravel-verification/SKILL.md +179 -179
- package/seed/marketplaces/ecc/skills/latency-critical-systems/SKILL.md +73 -73
- package/seed/marketplaces/ecc/skills/lead-intelligence/SKILL.md +321 -321
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/enrichment-agent.md +85 -85
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/mutual-mapper.md +75 -75
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/outreach-drafter.md +98 -98
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/signal-scorer.md +60 -60
- package/seed/marketplaces/ecc/skills/liquid-glass-design/SKILL.md +279 -279
- package/seed/marketplaces/ecc/skills/llm-trading-agent-security/SKILL.md +146 -146
- package/seed/marketplaces/ecc/skills/logistics-exception-management/SKILL.md +222 -222
- package/seed/marketplaces/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -151
- package/seed/marketplaces/ecc/skills/manim-video/SKILL.md +89 -89
- package/seed/marketplaces/ecc/skills/manim-video/assets/network_graph_scene.py +52 -52
- package/seed/marketplaces/ecc/skills/market-research/SKILL.md +75 -75
- package/seed/marketplaces/ecc/skills/marketing-campaign/SKILL.md +113 -113
- package/seed/marketplaces/ecc/skills/mcp-server-patterns/SKILL.md +69 -69
- package/seed/marketplaces/ecc/skills/messages-ops/SKILL.md +104 -104
- package/seed/marketplaces/ecc/skills/mle-workflow/SKILL.md +346 -346
- package/seed/marketplaces/ecc/skills/motion-advanced/SKILL.md +596 -596
- package/seed/marketplaces/ecc/skills/motion-foundations/SKILL.md +299 -299
- package/seed/marketplaces/ecc/skills/motion-patterns/SKILL.md +435 -435
- package/seed/marketplaces/ecc/skills/motion-ui/SKILL.md +575 -575
- package/seed/marketplaces/ecc/skills/mysql-patterns/SKILL.md +412 -412
- package/seed/marketplaces/ecc/skills/nanoclaw-repl/SKILL.md +33 -33
- package/seed/marketplaces/ecc/skills/nestjs-patterns/SKILL.md +230 -230
- package/seed/marketplaces/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -173
- package/seed/marketplaces/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -167
- package/seed/marketplaces/ecc/skills/network-config-validation/SKILL.md +210 -210
- package/seed/marketplaces/ecc/skills/network-interface-health/SKILL.md +152 -152
- package/seed/marketplaces/ecc/skills/nextjs-turbopack/SKILL.md +57 -57
- package/seed/marketplaces/ecc/skills/nodejs-keccak256/SKILL.md +102 -102
- package/seed/marketplaces/ecc/skills/nutrient-document-processing/SKILL.md +167 -167
- package/seed/marketplaces/ecc/skills/nuxt4-patterns/SKILL.md +100 -100
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/SKILL.md +288 -288
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/gacha.py +224 -224
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/gacha.sh +5 -5
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/avatar-style.md +124 -124
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/boundary-rules.md +53 -53
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/error-handling.md +53 -53
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/identity-tension.md +48 -48
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/naming-system.md +39 -39
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/output-template.md +166 -166
- package/seed/marketplaces/ecc/skills/opensource-pipeline/SKILL.md +255 -255
- package/seed/marketplaces/ecc/skills/parallel-execution-optimizer/SKILL.md +72 -72
- package/seed/marketplaces/ecc/skills/perl-patterns/SKILL.md +504 -504
- package/seed/marketplaces/ecc/skills/perl-security/SKILL.md +503 -503
- package/seed/marketplaces/ecc/skills/perl-testing/SKILL.md +475 -475
- package/seed/marketplaces/ecc/skills/plan-orchestrate/SKILL.md +262 -262
- package/seed/marketplaces/ecc/skills/plankton-code-quality/SKILL.md +236 -236
- package/seed/marketplaces/ecc/skills/postgres-patterns/SKILL.md +147 -147
- package/seed/marketplaces/ecc/skills/prediction-market-oracle-research/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/prediction-market-risk-review/SKILL.md +60 -60
- package/seed/marketplaces/ecc/skills/prisma-patterns/SKILL.md +371 -371
- package/seed/marketplaces/ecc/skills/product-capability/SKILL.md +141 -141
- package/seed/marketplaces/ecc/skills/product-lens/SKILL.md +92 -92
- package/seed/marketplaces/ecc/skills/production-audit/SKILL.md +206 -206
- package/seed/marketplaces/ecc/skills/production-scheduling/SKILL.md +238 -238
- package/seed/marketplaces/ecc/skills/project-flow-ops/SKILL.md +111 -111
- package/seed/marketplaces/ecc/skills/prompt-optimizer/SKILL.md +398 -398
- package/seed/marketplaces/ecc/skills/python-patterns/SKILL.md +750 -750
- package/seed/marketplaces/ecc/skills/python-testing/SKILL.md +816 -816
- package/seed/marketplaces/ecc/skills/pytorch-patterns/SKILL.md +396 -396
- package/seed/marketplaces/ecc/skills/quality-nonconformance/SKILL.md +260 -260
- package/seed/marketplaces/ecc/skills/quarkus-patterns/SKILL.md +722 -722
- package/seed/marketplaces/ecc/skills/quarkus-security/SKILL.md +467 -467
- package/seed/marketplaces/ecc/skills/quarkus-tdd/SKILL.md +811 -811
- package/seed/marketplaces/ecc/skills/quarkus-verification/SKILL.md +479 -479
- package/seed/marketplaces/ecc/skills/ralphinho-rfc-pipeline/SKILL.md +67 -67
- package/seed/marketplaces/ecc/skills/recsys-pipeline-architect/SKILL.md +114 -114
- package/seed/marketplaces/ecc/skills/recursive-decision-ledger/SKILL.md +79 -79
- package/seed/marketplaces/ecc/skills/redis-patterns/SKILL.md +403 -403
- package/seed/marketplaces/ecc/skills/regex-vs-llm-structured-text/SKILL.md +220 -220
- package/seed/marketplaces/ecc/skills/remotion-video-creation/SKILL.md +43 -43
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/3d.md +86 -86
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/animations.md +29 -29
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -173
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -100
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -108
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets.md +78 -78
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/audio.md +172 -172
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/calculate-metadata.md +104 -104
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/can-decode.md +75 -75
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/charts.md +58 -58
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/compositions.md +146 -146
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/display-captions.md +126 -126
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/extract-frames.md +229 -229
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/fonts.md +152 -152
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/get-audio-duration.md +58 -58
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -68
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/get-video-duration.md +58 -58
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/gifs.md +138 -138
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/images.md +130 -130
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/import-srt-captions.md +67 -67
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/lottie.md +67 -67
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -34
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/measuring-text.md +143 -143
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/sequencing.md +106 -106
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/tailwind.md +11 -11
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/text-animations.md +20 -20
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/timing.md +179 -179
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/transcribe-captions.md +19 -19
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/transitions.md +122 -122
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/trimming.md +52 -52
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/videos.md +171 -171
- package/seed/marketplaces/ecc/skills/repo-scan/SKILL.md +78 -78
- package/seed/marketplaces/ecc/skills/research-ops/SKILL.md +112 -112
- package/seed/marketplaces/ecc/skills/returns-reverse-logistics/SKILL.md +240 -240
- package/seed/marketplaces/ecc/skills/rules-distill/SKILL.md +264 -264
- package/seed/marketplaces/ecc/skills/rules-distill/scripts/scan-rules.sh +58 -58
- package/seed/marketplaces/ecc/skills/rules-distill/scripts/scan-skills.sh +129 -129
- package/seed/marketplaces/ecc/skills/rust-patterns/SKILL.md +499 -499
- package/seed/marketplaces/ecc/skills/rust-testing/SKILL.md +500 -500
- package/seed/marketplaces/ecc/skills/safety-guard/SKILL.md +75 -75
- package/seed/marketplaces/ecc/skills/santa-method/SKILL.md +306 -306
- package/seed/marketplaces/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -175
- package/seed/marketplaces/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -177
- package/seed/marketplaces/ecc/skills/scientific-pkg-gget/SKILL.md +166 -166
- package/seed/marketplaces/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -192
- package/seed/marketplaces/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -160
- package/seed/marketplaces/ecc/skills/search-first/SKILL.md +182 -182
- package/seed/marketplaces/ecc/skills/security-bounty-hunter/SKILL.md +99 -99
- package/seed/marketplaces/ecc/skills/security-review/SKILL.md +503 -503
- package/seed/marketplaces/ecc/skills/security-review/cloud-infrastructure-security.md +361 -361
- package/seed/marketplaces/ecc/skills/security-scan/SKILL.md +165 -165
- package/seed/marketplaces/ecc/skills/seo/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/skill-comply/SKILL.md +58 -58
- package/seed/marketplaces/ecc/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -5
- package/seed/marketplaces/ecc/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -3
- package/seed/marketplaces/ecc/skills/skill-comply/fixtures/tdd_spec.yaml +44 -44
- package/seed/marketplaces/ecc/skills/skill-comply/prompts/classifier.md +24 -24
- package/seed/marketplaces/ecc/skills/skill-comply/prompts/scenario_generator.md +62 -62
- package/seed/marketplaces/ecc/skills/skill-comply/prompts/spec_generator.md +42 -42
- package/seed/marketplaces/ecc/skills/skill-comply/pyproject.toml +15 -15
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/classifier.py +85 -85
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/grader.py +124 -124
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/parser.py +107 -107
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/report.py +170 -170
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/run.py +127 -127
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/runner.py +186 -186
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/scenario_generator.py +70 -70
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/spec_generator.py +72 -72
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/utils.py +13 -13
- package/seed/marketplaces/ecc/skills/skill-comply/tests/test_grader.py +197 -197
- package/seed/marketplaces/ecc/skills/skill-comply/tests/test_parser.py +90 -90
- package/seed/marketplaces/ecc/skills/skill-comply/tests/test_runner.py +172 -172
- package/seed/marketplaces/ecc/skills/skill-scout/SKILL.md +140 -140
- package/seed/marketplaces/ecc/skills/skill-stocktake/SKILL.md +194 -194
- package/seed/marketplaces/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -87
- package/seed/marketplaces/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -56
- package/seed/marketplaces/ecc/skills/skill-stocktake/scripts/scan.sh +170 -170
- package/seed/marketplaces/ecc/skills/social-graph-ranker/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/social-publisher/SKILL.md +115 -115
- package/seed/marketplaces/ecc/skills/springboot-patterns/SKILL.md +314 -314
- package/seed/marketplaces/ecc/skills/springboot-security/SKILL.md +272 -272
- package/seed/marketplaces/ecc/skills/springboot-tdd/SKILL.md +158 -158
- package/seed/marketplaces/ecc/skills/springboot-verification/SKILL.md +231 -231
- package/seed/marketplaces/ecc/skills/strategic-compact/SKILL.md +131 -131
- package/seed/marketplaces/ecc/skills/swift-actor-persistence/SKILL.md +143 -143
- package/seed/marketplaces/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -216
- package/seed/marketplaces/ecc/skills/swift-protocol-di-testing/SKILL.md +190 -190
- package/seed/marketplaces/ecc/skills/swiftui-patterns/SKILL.md +259 -259
- package/seed/marketplaces/ecc/skills/tdd-workflow/SKILL.md +463 -463
- package/seed/marketplaces/ecc/skills/team-builder/SKILL.md +168 -168
- package/seed/marketplaces/ecc/skills/terminal-ops/SKILL.md +109 -109
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/SKILL.md +203 -203
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/architecture.md +90 -90
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -60
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/database.md +99 -99
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/routing.md +64 -64
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -97
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/testing.md +72 -72
- package/seed/marketplaces/ecc/skills/token-budget-advisor/SKILL.md +133 -133
- package/seed/marketplaces/ecc/skills/ui-demo/SKILL.md +465 -465
- package/seed/marketplaces/ecc/skills/ui-to-vue/SKILL.md +134 -134
- package/seed/marketplaces/ecc/skills/uncloud/SKILL.md +343 -343
- package/seed/marketplaces/ecc/skills/unified-notifications-ops/SKILL.md +187 -187
- package/seed/marketplaces/ecc/skills/verification-loop/SKILL.md +126 -126
- package/seed/marketplaces/ecc/skills/video-editing/SKILL.md +310 -310
- package/seed/marketplaces/ecc/skills/videodb/SKILL.md +374 -374
- package/seed/marketplaces/ecc/skills/videodb/reference/api-reference.md +550 -550
- package/seed/marketplaces/ecc/skills/videodb/reference/capture-reference.md +407 -407
- package/seed/marketplaces/ecc/skills/videodb/reference/capture.md +101 -101
- package/seed/marketplaces/ecc/skills/videodb/reference/editor.md +443 -443
- package/seed/marketplaces/ecc/skills/videodb/reference/generative.md +331 -331
- package/seed/marketplaces/ecc/skills/videodb/reference/rtstream-reference.md +564 -564
- package/seed/marketplaces/ecc/skills/videodb/reference/rtstream.md +65 -65
- package/seed/marketplaces/ecc/skills/videodb/reference/search.md +230 -230
- package/seed/marketplaces/ecc/skills/videodb/reference/streaming.md +406 -406
- package/seed/marketplaces/ecc/skills/videodb/reference/use-cases.md +118 -118
- package/seed/marketplaces/ecc/skills/videodb/scripts/ws_listener.py +282 -282
- package/seed/marketplaces/ecc/skills/visa-doc-translate/README.md +86 -86
- package/seed/marketplaces/ecc/skills/visa-doc-translate/SKILL.md +117 -117
- package/seed/marketplaces/ecc/skills/vite-patterns/SKILL.md +449 -449
- package/seed/marketplaces/ecc/skills/windows-desktop-e2e/SKILL.md +887 -887
- package/seed/marketplaces/ecc/skills/workspace-surface-audit/SKILL.md +125 -125
- package/seed/marketplaces/ecc/skills/x-api/SKILL.md +234 -234
- package/seed/marketplaces/ecc/.claude/commands/add-language-rules.md +0 -39
- package/seed/marketplaces/ecc/.claude/commands/database-migration.md +0 -36
- package/seed/marketplaces/ecc/.claude/commands/feature-development.md +0 -38
- package/seed/marketplaces/ecc/.claude/ecc-tools.json +0 -334
- package/seed/marketplaces/ecc/.claude/enterprise/controls.md +0 -15
- package/seed/marketplaces/ecc/.claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml +0 -162
- package/seed/marketplaces/ecc/.claude/identity.json +0 -14
- package/seed/marketplaces/ecc/.claude/package-manager.json +0 -4
- package/seed/marketplaces/ecc/.claude/research/everything-claude-code-research-playbook.md +0 -21
- package/seed/marketplaces/ecc/.claude/rules/everything-claude-code-guardrails.md +0 -43
- package/seed/marketplaces/ecc/.claude/rules/node.md +0 -56
- package/seed/marketplaces/ecc/.claude/skills/everything-claude-code/SKILL.md +0 -442
- package/seed/marketplaces/ecc/.claude/team/everything-claude-code-team-config.json +0 -15
- package/seed/marketplaces/ecc/.vscode/settings.json +0 -17
|
@@ -1,203 +1,203 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tinystruct-patterns
|
|
3
|
-
description: Expert guidance for developing with the tinystruct Java framework. Use when working on the tinystruct codebase or any project built on tinystruct — including creating Application classes, @Action-mapped routes, unit tests, ActionRegistry, HTTP/CLI dual-mode handling, the built-in HTTP server, the event system, JSON with Builder/Builders, database persistence with AbstractData, POJO generation, Server-Sent Events (SSE), file uploads, and outbound HTTP networking.
|
|
4
|
-
origin: ECC
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# tinystruct Development Patterns
|
|
8
|
-
|
|
9
|
-
Architecture and implementation patterns for building modules with the **tinystruct** Java framework – a lightweight, high-performance framework that treats CLI and HTTP as equal citizens, requiring no `main()` method and minimal configuration.
|
|
10
|
-
|
|
11
|
-
## Core Principle
|
|
12
|
-
|
|
13
|
-
**CLI and HTTP are equal citizens.** Every method annotated with `@Action` should ideally be runnable from both a terminal and a web browser without modification. This "dual-mode" capability is the core design philosophy of tinystruct.
|
|
14
|
-
|
|
15
|
-
## When to Activate
|
|
16
|
-
|
|
17
|
-
### When to Use
|
|
18
|
-
|
|
19
|
-
- Creating new `Application` modules by extending `AbstractApplication`.
|
|
20
|
-
- Defining routes and command-line actions using `@Action`.
|
|
21
|
-
- Handling per-request state via `Context`.
|
|
22
|
-
- Performing JSON serialization using the native `Builder` and `Builders` components.
|
|
23
|
-
- Working with database persistence via `AbstractData` POJOs.
|
|
24
|
-
- Generating POJOs from database tables using the `generate` command.
|
|
25
|
-
- Implementing Server-Sent Events (SSE) for real-time push.
|
|
26
|
-
- Handling file uploads via multipart data.
|
|
27
|
-
- Making outbound HTTP requests with `URLRequest` and `HTTPHandler`.
|
|
28
|
-
- Configuring database connections or system settings in `application.properties`.
|
|
29
|
-
- Debugging routing conflicts (Actions) or CLI argument parsing.
|
|
30
|
-
|
|
31
|
-
## How It Works
|
|
32
|
-
|
|
33
|
-
The tinystruct framework treats any method annotated with `@Action` as a routable endpoint for both terminal and web environments. Applications are created by extending `AbstractApplication`, which provides core lifecycle hooks like `init()` and access to the request `Context`.
|
|
34
|
-
|
|
35
|
-
Routing is handled by the `ActionRegistry`, which automatically maps path segments to method arguments and injects dependencies. For data-only services, the native `Builder` and `Builders` components should be used for JSON serialization to maintain a zero-dependency footprint. The database layer uses `AbstractData` POJOs paired with XML mapping files for CRUD operations without external ORM libraries.
|
|
36
|
-
|
|
37
|
-
## Examples
|
|
38
|
-
|
|
39
|
-
### Basic Application (MyService)
|
|
40
|
-
```java
|
|
41
|
-
public class MyService extends AbstractApplication {
|
|
42
|
-
@Override
|
|
43
|
-
public void init() {
|
|
44
|
-
this.setTemplateRequired(false); // Disable .view lookup for data/API apps
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@Override public String version() { return "1.0.0"; }
|
|
48
|
-
|
|
49
|
-
@Action("greet")
|
|
50
|
-
public String greet() {
|
|
51
|
-
return "Hello from tinystruct!";
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Path parameter: GET /?q=greet/James OR bin/dispatcher greet/James
|
|
55
|
-
@Action("greet")
|
|
56
|
-
public String greet(String name) {
|
|
57
|
-
return "Hello, " + name + "!";
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### HTTP Mode Disambiguation (login)
|
|
63
|
-
```java
|
|
64
|
-
@Action(value = "login", mode = Mode.HTTP_POST)
|
|
65
|
-
public String doLogin(Request<?, ?> request) throws ApplicationException {
|
|
66
|
-
request.getSession().setAttribute("userId", "42");
|
|
67
|
-
return "Logged in";
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Native JSON Data Handling (Builder + Builders)
|
|
72
|
-
```java
|
|
73
|
-
import org.tinystruct.data.component.Builder;
|
|
74
|
-
import org.tinystruct.data.component.Builders;
|
|
75
|
-
|
|
76
|
-
@Action("api/data")
|
|
77
|
-
public String getData() throws ApplicationException {
|
|
78
|
-
Builders dataList = new Builders();
|
|
79
|
-
Builder item = new Builder();
|
|
80
|
-
item.put("id", 1);
|
|
81
|
-
item.put("name", "James");
|
|
82
|
-
dataList.add(item);
|
|
83
|
-
|
|
84
|
-
Builder response = new Builder();
|
|
85
|
-
response.put("status", "success");
|
|
86
|
-
response.put("data", dataList);
|
|
87
|
-
return response.toString(); // {"status":"success","data":[{"id":1,"name":"James"}]}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### SSE (Server-Sent Events)
|
|
92
|
-
```java
|
|
93
|
-
import org.tinystruct.http.SSEPushManager;
|
|
94
|
-
|
|
95
|
-
@Action("sse/connect")
|
|
96
|
-
public String connect() {
|
|
97
|
-
return "{\"type\":\"connect\",\"message\":\"Connected to SSE\"}";
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Push to a specific client
|
|
101
|
-
String sessionId = getContext().getId();
|
|
102
|
-
Builder msg = new Builder();
|
|
103
|
-
msg.put("text", "Hello, user!");
|
|
104
|
-
SSEPushManager.getInstance().push(sessionId, msg);
|
|
105
|
-
|
|
106
|
-
// Broadcast to all
|
|
107
|
-
// Broadcast to all
|
|
108
|
-
SSEPushManager.getInstance().broadcast(msg);
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### File Upload
|
|
112
|
-
```java
|
|
113
|
-
import org.tinystruct.data.FileEntity;
|
|
114
|
-
|
|
115
|
-
@Action(value = "upload", mode = Mode.HTTP_POST)
|
|
116
|
-
public String upload(Request<?, ?> request) throws ApplicationException {
|
|
117
|
-
List<FileEntity> files = request.getAttachments();
|
|
118
|
-
if (files != null) {
|
|
119
|
-
for (FileEntity file : files) {
|
|
120
|
-
System.out.println("Uploaded: " + file.getFilename());
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return "Upload OK";
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Configuration
|
|
128
|
-
|
|
129
|
-
Settings are managed in `src/main/resources/application.properties`.
|
|
130
|
-
|
|
131
|
-
```properties
|
|
132
|
-
# Database
|
|
133
|
-
driver=org.h2.Driver
|
|
134
|
-
database.url=jdbc:h2:~/mydb
|
|
135
|
-
database.user=sa
|
|
136
|
-
database.password=
|
|
137
|
-
|
|
138
|
-
# Server
|
|
139
|
-
default.home.page=hello
|
|
140
|
-
server.port=8080
|
|
141
|
-
|
|
142
|
-
# Locale
|
|
143
|
-
default.language=en_US
|
|
144
|
-
|
|
145
|
-
# Session (Redis for clustered environments)
|
|
146
|
-
# default.session.repository=org.tinystruct.http.RedisSessionRepository
|
|
147
|
-
# redis.host=127.0.0.1
|
|
148
|
-
# redis.port=6379
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Access config values in your application:
|
|
152
|
-
```java
|
|
153
|
-
String port = this.getConfiguration("server.port");
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Red Flags & Anti-patterns
|
|
157
|
-
|
|
158
|
-
| Symptom | Correct Pattern |
|
|
159
|
-
|---|---|
|
|
160
|
-
| Importing `com.google.gson` or `com.fasterxml.jackson` | Use `org.tinystruct.data.component.Builder` / `Builders`. |
|
|
161
|
-
| Using `List<Builder>` for JSON arrays | Use `Builders` to avoid generic type erasure issues. |
|
|
162
|
-
| `ApplicationRuntimeException: template not found` | Call `setTemplateRequired(false)` in `init()` for API-only apps. |
|
|
163
|
-
| Annotating `private` methods with `@Action` | Actions must be `public` to be registered by the framework. |
|
|
164
|
-
| Hardcoding `main(String[] args)` in apps | Use `bin/dispatcher` as the entry point for all modules. |
|
|
165
|
-
| Manual `ActionRegistry` registration | Prefer the `@Action` annotation for automatic discovery. |
|
|
166
|
-
| Action not found at runtime | Ensure class is imported via `--import` or listed in `application.properties`. |
|
|
167
|
-
| CLI arg not visible | Pass with `--key value`; access via `getContext().getAttribute("--key")`. |
|
|
168
|
-
| Two methods same path, wrong one fires | Set explicit `mode` (e.g., `HTTP_GET` vs `HTTP_POST`) to disambiguate. |
|
|
169
|
-
|
|
170
|
-
## Best Practices
|
|
171
|
-
|
|
172
|
-
1. **Granular Applications**: Break logic into smaller, focused applications rather than one monolithic class.
|
|
173
|
-
2. **Setup in `init()`**: Leverage `init()` for setup (config, DB) rather than the constructor. Do NOT call `setAction()` — use `@Action` annotation.
|
|
174
|
-
3. **Mode Awareness**: Use the `Mode` parameter in `@Action` to restrict sensitive operations to `CLI` only or specific HTTP methods.
|
|
175
|
-
4. **Context over Params**: For optional CLI flags, use `getContext().getAttribute("--flag")` rather than adding parameters to the method signature.
|
|
176
|
-
5. **Asynchronous Events**: For heavy tasks triggered by events, use `CompletableFuture.runAsync()` inside the event handler.
|
|
177
|
-
|
|
178
|
-
## Technical Reference
|
|
179
|
-
|
|
180
|
-
Detailed guides are available in the `references/` directory:
|
|
181
|
-
|
|
182
|
-
- [Architecture & Config](references/architecture.md) — Abstractions, Package Map, Properties
|
|
183
|
-
- [Routing & @Action](references/routing.md) — Annotation details, Modes, Parameters
|
|
184
|
-
- [Data Handling](references/data-handling.md) — Builder, Builders, JSON serialization & parsing
|
|
185
|
-
- [Database Persistence](references/database.md) — AbstractData POJOs, CRUD, mapping XML, POJO generation
|
|
186
|
-
- [System & Usage](references/system-usage.md) — Context, Sessions, SSE, File Uploads, Events, Networking
|
|
187
|
-
- [Testing Patterns](references/testing.md) — JUnit 5 unit and HTTP integration testing
|
|
188
|
-
|
|
189
|
-
## Reference Source Files (Internal)
|
|
190
|
-
|
|
191
|
-
- `src/main/java/org/tinystruct/AbstractApplication.java` — Core base class with lifecycle hooks
|
|
192
|
-
- `src/main/java/org/tinystruct/system/annotation/Action.java` — Annotation & Modes
|
|
193
|
-
- `src/main/java/org/tinystruct/application/ActionRegistry.java` — Routing Engine
|
|
194
|
-
- `src/main/java/org/tinystruct/data/component/Builder.java` — JSON object serializer
|
|
195
|
-
- `src/main/java/org/tinystruct/data/component/Builders.java` — JSON array serializer
|
|
196
|
-
- `src/main/java/org/tinystruct/data/component/AbstractData.java` — Base POJO class with CRUD
|
|
197
|
-
- `src/main/java/org/tinystruct/data/Mapping.java` — Mapping XML parser
|
|
198
|
-
- `src/main/java/org/tinystruct/data/tools/MySQLGenerator.java` — POJO generator reference
|
|
199
|
-
- `src/main/java/org/tinystruct/data/component/FieldType.java` — SQL-to-Java type mappings
|
|
200
|
-
- `src/main/java/org/tinystruct/data/component/Condition.java` — Fluent SQL query builder
|
|
201
|
-
- `src/main/java/org/tinystruct/http/SSEPushManager.java` — SSE connection management
|
|
202
|
-
- `src/test/java/org/tinystruct/application/ActionRegistryTest.java` — Registry test examples
|
|
203
|
-
- `src/test/java/org/tinystruct/system/HttpServerHttpModeTest.java` — HTTP integration test patterns
|
|
1
|
+
---
|
|
2
|
+
name: tinystruct-patterns
|
|
3
|
+
description: Expert guidance for developing with the tinystruct Java framework. Use when working on the tinystruct codebase or any project built on tinystruct — including creating Application classes, @Action-mapped routes, unit tests, ActionRegistry, HTTP/CLI dual-mode handling, the built-in HTTP server, the event system, JSON with Builder/Builders, database persistence with AbstractData, POJO generation, Server-Sent Events (SSE), file uploads, and outbound HTTP networking.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# tinystruct Development Patterns
|
|
8
|
+
|
|
9
|
+
Architecture and implementation patterns for building modules with the **tinystruct** Java framework – a lightweight, high-performance framework that treats CLI and HTTP as equal citizens, requiring no `main()` method and minimal configuration.
|
|
10
|
+
|
|
11
|
+
## Core Principle
|
|
12
|
+
|
|
13
|
+
**CLI and HTTP are equal citizens.** Every method annotated with `@Action` should ideally be runnable from both a terminal and a web browser without modification. This "dual-mode" capability is the core design philosophy of tinystruct.
|
|
14
|
+
|
|
15
|
+
## When to Activate
|
|
16
|
+
|
|
17
|
+
### When to Use
|
|
18
|
+
|
|
19
|
+
- Creating new `Application` modules by extending `AbstractApplication`.
|
|
20
|
+
- Defining routes and command-line actions using `@Action`.
|
|
21
|
+
- Handling per-request state via `Context`.
|
|
22
|
+
- Performing JSON serialization using the native `Builder` and `Builders` components.
|
|
23
|
+
- Working with database persistence via `AbstractData` POJOs.
|
|
24
|
+
- Generating POJOs from database tables using the `generate` command.
|
|
25
|
+
- Implementing Server-Sent Events (SSE) for real-time push.
|
|
26
|
+
- Handling file uploads via multipart data.
|
|
27
|
+
- Making outbound HTTP requests with `URLRequest` and `HTTPHandler`.
|
|
28
|
+
- Configuring database connections or system settings in `application.properties`.
|
|
29
|
+
- Debugging routing conflicts (Actions) or CLI argument parsing.
|
|
30
|
+
|
|
31
|
+
## How It Works
|
|
32
|
+
|
|
33
|
+
The tinystruct framework treats any method annotated with `@Action` as a routable endpoint for both terminal and web environments. Applications are created by extending `AbstractApplication`, which provides core lifecycle hooks like `init()` and access to the request `Context`.
|
|
34
|
+
|
|
35
|
+
Routing is handled by the `ActionRegistry`, which automatically maps path segments to method arguments and injects dependencies. For data-only services, the native `Builder` and `Builders` components should be used for JSON serialization to maintain a zero-dependency footprint. The database layer uses `AbstractData` POJOs paired with XML mapping files for CRUD operations without external ORM libraries.
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Basic Application (MyService)
|
|
40
|
+
```java
|
|
41
|
+
public class MyService extends AbstractApplication {
|
|
42
|
+
@Override
|
|
43
|
+
public void init() {
|
|
44
|
+
this.setTemplateRequired(false); // Disable .view lookup for data/API apps
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override public String version() { return "1.0.0"; }
|
|
48
|
+
|
|
49
|
+
@Action("greet")
|
|
50
|
+
public String greet() {
|
|
51
|
+
return "Hello from tinystruct!";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Path parameter: GET /?q=greet/James OR bin/dispatcher greet/James
|
|
55
|
+
@Action("greet")
|
|
56
|
+
public String greet(String name) {
|
|
57
|
+
return "Hello, " + name + "!";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### HTTP Mode Disambiguation (login)
|
|
63
|
+
```java
|
|
64
|
+
@Action(value = "login", mode = Mode.HTTP_POST)
|
|
65
|
+
public String doLogin(Request<?, ?> request) throws ApplicationException {
|
|
66
|
+
request.getSession().setAttribute("userId", "42");
|
|
67
|
+
return "Logged in";
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Native JSON Data Handling (Builder + Builders)
|
|
72
|
+
```java
|
|
73
|
+
import org.tinystruct.data.component.Builder;
|
|
74
|
+
import org.tinystruct.data.component.Builders;
|
|
75
|
+
|
|
76
|
+
@Action("api/data")
|
|
77
|
+
public String getData() throws ApplicationException {
|
|
78
|
+
Builders dataList = new Builders();
|
|
79
|
+
Builder item = new Builder();
|
|
80
|
+
item.put("id", 1);
|
|
81
|
+
item.put("name", "James");
|
|
82
|
+
dataList.add(item);
|
|
83
|
+
|
|
84
|
+
Builder response = new Builder();
|
|
85
|
+
response.put("status", "success");
|
|
86
|
+
response.put("data", dataList);
|
|
87
|
+
return response.toString(); // {"status":"success","data":[{"id":1,"name":"James"}]}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### SSE (Server-Sent Events)
|
|
92
|
+
```java
|
|
93
|
+
import org.tinystruct.http.SSEPushManager;
|
|
94
|
+
|
|
95
|
+
@Action("sse/connect")
|
|
96
|
+
public String connect() {
|
|
97
|
+
return "{\"type\":\"connect\",\"message\":\"Connected to SSE\"}";
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Push to a specific client
|
|
101
|
+
String sessionId = getContext().getId();
|
|
102
|
+
Builder msg = new Builder();
|
|
103
|
+
msg.put("text", "Hello, user!");
|
|
104
|
+
SSEPushManager.getInstance().push(sessionId, msg);
|
|
105
|
+
|
|
106
|
+
// Broadcast to all
|
|
107
|
+
// Broadcast to all
|
|
108
|
+
SSEPushManager.getInstance().broadcast(msg);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### File Upload
|
|
112
|
+
```java
|
|
113
|
+
import org.tinystruct.data.FileEntity;
|
|
114
|
+
|
|
115
|
+
@Action(value = "upload", mode = Mode.HTTP_POST)
|
|
116
|
+
public String upload(Request<?, ?> request) throws ApplicationException {
|
|
117
|
+
List<FileEntity> files = request.getAttachments();
|
|
118
|
+
if (files != null) {
|
|
119
|
+
for (FileEntity file : files) {
|
|
120
|
+
System.out.println("Uploaded: " + file.getFilename());
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return "Upload OK";
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Configuration
|
|
128
|
+
|
|
129
|
+
Settings are managed in `src/main/resources/application.properties`.
|
|
130
|
+
|
|
131
|
+
```properties
|
|
132
|
+
# Database
|
|
133
|
+
driver=org.h2.Driver
|
|
134
|
+
database.url=jdbc:h2:~/mydb
|
|
135
|
+
database.user=sa
|
|
136
|
+
database.password=
|
|
137
|
+
|
|
138
|
+
# Server
|
|
139
|
+
default.home.page=hello
|
|
140
|
+
server.port=8080
|
|
141
|
+
|
|
142
|
+
# Locale
|
|
143
|
+
default.language=en_US
|
|
144
|
+
|
|
145
|
+
# Session (Redis for clustered environments)
|
|
146
|
+
# default.session.repository=org.tinystruct.http.RedisSessionRepository
|
|
147
|
+
# redis.host=127.0.0.1
|
|
148
|
+
# redis.port=6379
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Access config values in your application:
|
|
152
|
+
```java
|
|
153
|
+
String port = this.getConfiguration("server.port");
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Red Flags & Anti-patterns
|
|
157
|
+
|
|
158
|
+
| Symptom | Correct Pattern |
|
|
159
|
+
|---|---|
|
|
160
|
+
| Importing `com.google.gson` or `com.fasterxml.jackson` | Use `org.tinystruct.data.component.Builder` / `Builders`. |
|
|
161
|
+
| Using `List<Builder>` for JSON arrays | Use `Builders` to avoid generic type erasure issues. |
|
|
162
|
+
| `ApplicationRuntimeException: template not found` | Call `setTemplateRequired(false)` in `init()` for API-only apps. |
|
|
163
|
+
| Annotating `private` methods with `@Action` | Actions must be `public` to be registered by the framework. |
|
|
164
|
+
| Hardcoding `main(String[] args)` in apps | Use `bin/dispatcher` as the entry point for all modules. |
|
|
165
|
+
| Manual `ActionRegistry` registration | Prefer the `@Action` annotation for automatic discovery. |
|
|
166
|
+
| Action not found at runtime | Ensure class is imported via `--import` or listed in `application.properties`. |
|
|
167
|
+
| CLI arg not visible | Pass with `--key value`; access via `getContext().getAttribute("--key")`. |
|
|
168
|
+
| Two methods same path, wrong one fires | Set explicit `mode` (e.g., `HTTP_GET` vs `HTTP_POST`) to disambiguate. |
|
|
169
|
+
|
|
170
|
+
## Best Practices
|
|
171
|
+
|
|
172
|
+
1. **Granular Applications**: Break logic into smaller, focused applications rather than one monolithic class.
|
|
173
|
+
2. **Setup in `init()`**: Leverage `init()` for setup (config, DB) rather than the constructor. Do NOT call `setAction()` — use `@Action` annotation.
|
|
174
|
+
3. **Mode Awareness**: Use the `Mode` parameter in `@Action` to restrict sensitive operations to `CLI` only or specific HTTP methods.
|
|
175
|
+
4. **Context over Params**: For optional CLI flags, use `getContext().getAttribute("--flag")` rather than adding parameters to the method signature.
|
|
176
|
+
5. **Asynchronous Events**: For heavy tasks triggered by events, use `CompletableFuture.runAsync()` inside the event handler.
|
|
177
|
+
|
|
178
|
+
## Technical Reference
|
|
179
|
+
|
|
180
|
+
Detailed guides are available in the `references/` directory:
|
|
181
|
+
|
|
182
|
+
- [Architecture & Config](references/architecture.md) — Abstractions, Package Map, Properties
|
|
183
|
+
- [Routing & @Action](references/routing.md) — Annotation details, Modes, Parameters
|
|
184
|
+
- [Data Handling](references/data-handling.md) — Builder, Builders, JSON serialization & parsing
|
|
185
|
+
- [Database Persistence](references/database.md) — AbstractData POJOs, CRUD, mapping XML, POJO generation
|
|
186
|
+
- [System & Usage](references/system-usage.md) — Context, Sessions, SSE, File Uploads, Events, Networking
|
|
187
|
+
- [Testing Patterns](references/testing.md) — JUnit 5 unit and HTTP integration testing
|
|
188
|
+
|
|
189
|
+
## Reference Source Files (Internal)
|
|
190
|
+
|
|
191
|
+
- `src/main/java/org/tinystruct/AbstractApplication.java` — Core base class with lifecycle hooks
|
|
192
|
+
- `src/main/java/org/tinystruct/system/annotation/Action.java` — Annotation & Modes
|
|
193
|
+
- `src/main/java/org/tinystruct/application/ActionRegistry.java` — Routing Engine
|
|
194
|
+
- `src/main/java/org/tinystruct/data/component/Builder.java` — JSON object serializer
|
|
195
|
+
- `src/main/java/org/tinystruct/data/component/Builders.java` — JSON array serializer
|
|
196
|
+
- `src/main/java/org/tinystruct/data/component/AbstractData.java` — Base POJO class with CRUD
|
|
197
|
+
- `src/main/java/org/tinystruct/data/Mapping.java` — Mapping XML parser
|
|
198
|
+
- `src/main/java/org/tinystruct/data/tools/MySQLGenerator.java` — POJO generator reference
|
|
199
|
+
- `src/main/java/org/tinystruct/data/component/FieldType.java` — SQL-to-Java type mappings
|
|
200
|
+
- `src/main/java/org/tinystruct/data/component/Condition.java` — Fluent SQL query builder
|
|
201
|
+
- `src/main/java/org/tinystruct/http/SSEPushManager.java` — SSE connection management
|
|
202
|
+
- `src/test/java/org/tinystruct/application/ActionRegistryTest.java` — Registry test examples
|
|
203
|
+
- `src/test/java/org/tinystruct/system/HttpServerHttpModeTest.java` — HTTP integration test patterns
|
|
@@ -1,90 +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
|
-
```
|
|
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
|
+
```
|