@heytherevibin/skillforge 0.2.1

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.
Files changed (402) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CODE_OF_CONDUCT.md +34 -0
  3. package/CONTRIBUTING.md +38 -0
  4. package/LICENSE +21 -0
  5. package/README.md +337 -0
  6. package/RELEASING.md +93 -0
  7. package/SECURITY.md +31 -0
  8. package/STRATEGY.md +26 -0
  9. package/bin/cli.js +547 -0
  10. package/lib/packs.js +184 -0
  11. package/package.json +38 -0
  12. package/python/app/__init__.py +0 -0
  13. package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
  14. package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
  15. package/python/app/__pycache__/main.cpython-312.pyc +0 -0
  16. package/python/app/auth.py +63 -0
  17. package/python/app/cli.py +78 -0
  18. package/python/app/db_paths.py +26 -0
  19. package/python/app/events_cli.py +175 -0
  20. package/python/app/main.py +647 -0
  21. package/python/app/materialize.py +138 -0
  22. package/python/app/mcp_server.py +610 -0
  23. package/python/app/route_cli.py +117 -0
  24. package/python/requirements-dev.txt +1 -0
  25. package/python/requirements.txt +7 -0
  26. package/python/tests/test_db_paths.py +41 -0
  27. package/skills/accessibility/SKILL.md +145 -0
  28. package/skills/agent-architecture-audit/SKILL.md +256 -0
  29. package/skills/agent-eval/SKILL.md +144 -0
  30. package/skills/agent-harness-construction/SKILL.md +72 -0
  31. package/skills/agent-introspection-debugging/SKILL.md +152 -0
  32. package/skills/agent-payment-x402/SKILL.md +224 -0
  33. package/skills/agent-sort/SKILL.md +214 -0
  34. package/skills/agentic-engineering/SKILL.md +62 -0
  35. package/skills/agentic-os/SKILL.md +386 -0
  36. package/skills/ai-first-engineering/SKILL.md +50 -0
  37. package/skills/ai-regression-testing/SKILL.md +384 -0
  38. package/skills/android-clean-architecture/SKILL.md +338 -0
  39. package/skills/angular-developer/SKILL.md +153 -0
  40. package/skills/angular-developer/references/angular-animations.md +160 -0
  41. package/skills/angular-developer/references/angular-aria.md +410 -0
  42. package/skills/angular-developer/references/cli.md +86 -0
  43. package/skills/angular-developer/references/component-harnesses.md +59 -0
  44. package/skills/angular-developer/references/component-styling.md +91 -0
  45. package/skills/angular-developer/references/components.md +117 -0
  46. package/skills/angular-developer/references/creating-services.md +97 -0
  47. package/skills/angular-developer/references/data-resolvers.md +69 -0
  48. package/skills/angular-developer/references/define-routes.md +67 -0
  49. package/skills/angular-developer/references/defining-providers.md +72 -0
  50. package/skills/angular-developer/references/di-fundamentals.md +120 -0
  51. package/skills/angular-developer/references/e2e-testing.md +56 -0
  52. package/skills/angular-developer/references/effects.md +83 -0
  53. package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  54. package/skills/angular-developer/references/host-elements.md +80 -0
  55. package/skills/angular-developer/references/injection-context.md +63 -0
  56. package/skills/angular-developer/references/inputs.md +101 -0
  57. package/skills/angular-developer/references/linked-signal.md +59 -0
  58. package/skills/angular-developer/references/loading-strategies.md +61 -0
  59. package/skills/angular-developer/references/mcp.md +108 -0
  60. package/skills/angular-developer/references/navigate-to-routes.md +69 -0
  61. package/skills/angular-developer/references/outputs.md +86 -0
  62. package/skills/angular-developer/references/reactive-forms.md +122 -0
  63. package/skills/angular-developer/references/rendering-strategies.md +44 -0
  64. package/skills/angular-developer/references/resource.md +77 -0
  65. package/skills/angular-developer/references/route-animations.md +56 -0
  66. package/skills/angular-developer/references/route-guards.md +52 -0
  67. package/skills/angular-developer/references/router-lifecycle.md +45 -0
  68. package/skills/angular-developer/references/router-testing.md +87 -0
  69. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  70. package/skills/angular-developer/references/signal-forms.md +795 -0
  71. package/skills/angular-developer/references/signals-overview.md +94 -0
  72. package/skills/angular-developer/references/tailwind-css.md +69 -0
  73. package/skills/angular-developer/references/template-driven-forms.md +114 -0
  74. package/skills/angular-developer/references/testing-fundamentals.md +65 -0
  75. package/skills/api-connector-builder/SKILL.md +120 -0
  76. package/skills/api-design/SKILL.md +522 -0
  77. package/skills/architecture-decision-records/SKILL.md +178 -0
  78. package/skills/article-writing/SKILL.md +78 -0
  79. package/skills/automation-audit-ops/SKILL.md +141 -0
  80. package/skills/autonomous-agent-harness/SKILL.md +272 -0
  81. package/skills/autonomous-loops/SKILL.md +609 -0
  82. package/skills/backend-patterns/SKILL.md +560 -0
  83. package/skills/benchmark/SKILL.md +92 -0
  84. package/skills/blueprint/SKILL.md +104 -0
  85. package/skills/browser-qa/SKILL.md +86 -0
  86. package/skills/bun-runtime/SKILL.md +83 -0
  87. package/skills/canary-watch/SKILL.md +98 -0
  88. package/skills/carrier-relationship-management/SKILL.md +211 -0
  89. package/skills/cisco-ios-patterns/SKILL.md +163 -0
  90. package/skills/ck/SKILL.md +147 -0
  91. package/skills/ck/commands/forget.mjs +44 -0
  92. package/skills/ck/commands/info.mjs +24 -0
  93. package/skills/ck/commands/init.mjs +143 -0
  94. package/skills/ck/commands/list.mjs +40 -0
  95. package/skills/ck/commands/migrate.mjs +202 -0
  96. package/skills/ck/commands/resume.mjs +36 -0
  97. package/skills/ck/commands/save.mjs +210 -0
  98. package/skills/ck/commands/shared.mjs +387 -0
  99. package/skills/ck/hooks/session-start.mjs +224 -0
  100. package/skills/claude-devfleet/SKILL.md +103 -0
  101. package/skills/click-path-audit/SKILL.md +244 -0
  102. package/skills/clickhouse-io/SKILL.md +438 -0
  103. package/skills/code-tour/SKILL.md +235 -0
  104. package/skills/codebase-onboarding/SKILL.md +232 -0
  105. package/skills/coding-standards/SKILL.md +548 -0
  106. package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  107. package/skills/connections-optimizer/SKILL.md +188 -0
  108. package/skills/content-engine/SKILL.md +126 -0
  109. package/skills/content-hash-cache-pattern/SKILL.md +160 -0
  110. package/skills/context-budget/SKILL.md +134 -0
  111. package/skills/continuous-agent-loop/SKILL.md +44 -0
  112. package/skills/continuous-learning/SKILL.md +129 -0
  113. package/skills/continuous-learning/config.json +18 -0
  114. package/skills/continuous-learning/evaluate-session.sh +69 -0
  115. package/skills/continuous-learning-v2/SKILL.md +358 -0
  116. package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
  117. package/skills/continuous-learning-v2/agents/observer.md +198 -0
  118. package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  119. package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  120. package/skills/continuous-learning-v2/config.json +8 -0
  121. package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
  122. package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
  123. package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
  124. package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  125. package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  126. package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
  127. package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  128. package/skills/cost-tracking/SKILL.md +147 -0
  129. package/skills/council/SKILL.md +202 -0
  130. package/skills/cpp-coding-standards/SKILL.md +722 -0
  131. package/skills/cpp-testing/SKILL.md +323 -0
  132. package/skills/crosspost/SKILL.md +110 -0
  133. package/skills/csharp-testing/SKILL.md +320 -0
  134. package/skills/customer-billing-ops/SKILL.md +139 -0
  135. package/skills/customs-trade-compliance/SKILL.md +262 -0
  136. package/skills/dart-flutter-patterns/SKILL.md +562 -0
  137. package/skills/dashboard-builder/SKILL.md +108 -0
  138. package/skills/data-scraper-agent/SKILL.md +764 -0
  139. package/skills/database-migrations/SKILL.md +428 -0
  140. package/skills/deep-research/SKILL.md +158 -0
  141. package/skills/defi-amm-security/SKILL.md +166 -0
  142. package/skills/deployment-patterns/SKILL.md +426 -0
  143. package/skills/design-system/SKILL.md +81 -0
  144. package/skills/django-celery/SKILL.md +456 -0
  145. package/skills/django-patterns/SKILL.md +733 -0
  146. package/skills/django-security/SKILL.md +592 -0
  147. package/skills/django-tdd/SKILL.md +728 -0
  148. package/skills/django-verification/SKILL.md +468 -0
  149. package/skills/dmux-workflows/SKILL.md +190 -0
  150. package/skills/docker-patterns/SKILL.md +363 -0
  151. package/skills/documentation-lookup/SKILL.md +89 -0
  152. package/skills/dotnet-patterns/SKILL.md +320 -0
  153. package/skills/e2e-testing/SKILL.md +325 -0
  154. package/skills/email-ops/SKILL.md +120 -0
  155. package/skills/energy-procurement/SKILL.md +227 -0
  156. package/skills/enterprise-agent-ops/SKILL.md +49 -0
  157. package/skills/error-handling/SKILL.md +375 -0
  158. package/skills/eval-harness/SKILL.md +269 -0
  159. package/skills/evm-token-decimals/SKILL.md +130 -0
  160. package/skills/exa-search/SKILL.md +106 -0
  161. package/skills/fal-ai-media/SKILL.md +287 -0
  162. package/skills/fastapi-patterns/SKILL.md +327 -0
  163. package/skills/finance-billing-ops/SKILL.md +126 -0
  164. package/skills/flox-environments/SKILL.md +496 -0
  165. package/skills/flutter-dart-code-review/SKILL.md +434 -0
  166. package/skills/foundation-models-on-device/SKILL.md +243 -0
  167. package/skills/frontend-design-direction/SKILL.md +92 -0
  168. package/skills/frontend-patterns/SKILL.md +641 -0
  169. package/skills/frontend-slides/SKILL.md +183 -0
  170. package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  171. package/skills/frontend-slides/animation-patterns.md +122 -0
  172. package/skills/frontend-slides/html-template.md +419 -0
  173. package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  174. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  175. package/skills/frontend-slides/viewport-base.css +153 -0
  176. package/skills/fsharp-testing/SKILL.md +279 -0
  177. package/skills/gan-style-harness/SKILL.md +278 -0
  178. package/skills/gateguard/SKILL.md +125 -0
  179. package/skills/git-workflow/SKILL.md +714 -0
  180. package/skills/github-ops/SKILL.md +143 -0
  181. package/skills/golang-patterns/SKILL.md +673 -0
  182. package/skills/golang-testing/SKILL.md +719 -0
  183. package/skills/google-workspace-ops/SKILL.md +94 -0
  184. package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  185. package/skills/healthcare-emr-patterns/SKILL.md +159 -0
  186. package/skills/healthcare-eval-harness/SKILL.md +207 -0
  187. package/skills/healthcare-phi-compliance/SKILL.md +145 -0
  188. package/skills/hermes-imports/SKILL.md +87 -0
  189. package/skills/hexagonal-architecture/SKILL.md +275 -0
  190. package/skills/hipaa-compliance/SKILL.md +78 -0
  191. package/skills/homelab-network-readiness/SKILL.md +169 -0
  192. package/skills/homelab-network-setup/SKILL.md +129 -0
  193. package/skills/homelab-pihole-dns/SKILL.md +274 -0
  194. package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  195. package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  196. package/skills/hookify-rules/SKILL.md +128 -0
  197. package/skills/inventory-demand-planning/SKILL.md +246 -0
  198. package/skills/investor-materials/SKILL.md +95 -0
  199. package/skills/investor-outreach/SKILL.md +90 -0
  200. package/skills/ios-icon-gen/SKILL.md +157 -0
  201. package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  202. package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  203. package/skills/iterative-retrieval/SKILL.md +209 -0
  204. package/skills/java-coding-standards/SKILL.md +382 -0
  205. package/skills/jira-integration/SKILL.md +292 -0
  206. package/skills/jpa-patterns/SKILL.md +150 -0
  207. package/skills/knowledge-ops/SKILL.md +153 -0
  208. package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  209. package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  210. package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  211. package/skills/kotlin-patterns/SKILL.md +710 -0
  212. package/skills/kotlin-testing/SKILL.md +823 -0
  213. package/skills/laravel-patterns/SKILL.md +414 -0
  214. package/skills/laravel-plugin-discovery/SKILL.md +228 -0
  215. package/skills/laravel-security/SKILL.md +284 -0
  216. package/skills/laravel-tdd/SKILL.md +282 -0
  217. package/skills/laravel-verification/SKILL.md +178 -0
  218. package/skills/lead-intelligence/SKILL.md +320 -0
  219. package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  220. package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  221. package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  222. package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  223. package/skills/liquid-glass-design/SKILL.md +279 -0
  224. package/skills/llm-trading-agent-security/SKILL.md +146 -0
  225. package/skills/logistics-exception-management/SKILL.md +221 -0
  226. package/skills/make-interfaces-feel-better/SKILL.md +151 -0
  227. package/skills/manim-video/SKILL.md +88 -0
  228. package/skills/manim-video/assets/network_graph_scene.py +52 -0
  229. package/skills/market-research/SKILL.md +74 -0
  230. package/skills/mcp-server-patterns/SKILL.md +68 -0
  231. package/skills/messages-ops/SKILL.md +103 -0
  232. package/skills/mle-workflow/SKILL.md +345 -0
  233. package/skills/motion-advanced/SKILL.md +596 -0
  234. package/skills/motion-foundations/SKILL.md +299 -0
  235. package/skills/motion-patterns/SKILL.md +435 -0
  236. package/skills/motion-ui/SKILL.md +574 -0
  237. package/skills/mysql-patterns/SKILL.md +411 -0
  238. package/skills/nanoclaw-repl/SKILL.md +32 -0
  239. package/skills/nestjs-patterns/SKILL.md +229 -0
  240. package/skills/netmiko-ssh-automation/SKILL.md +173 -0
  241. package/skills/network-bgp-diagnostics/SKILL.md +167 -0
  242. package/skills/network-config-validation/SKILL.md +210 -0
  243. package/skills/network-interface-health/SKILL.md +152 -0
  244. package/skills/nextjs-turbopack/SKILL.md +43 -0
  245. package/skills/nodejs-keccak256/SKILL.md +102 -0
  246. package/skills/nutrient-document-processing/SKILL.md +166 -0
  247. package/skills/nuxt4-patterns/SKILL.md +99 -0
  248. package/skills/openclaw-persona-forge/SKILL.md +288 -0
  249. package/skills/openclaw-persona-forge/gacha.py +224 -0
  250. package/skills/openclaw-persona-forge/gacha.sh +5 -0
  251. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  252. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  253. package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  254. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  255. package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  256. package/skills/openclaw-persona-forge/references/output-template.md +166 -0
  257. package/skills/opensource-pipeline/SKILL.md +254 -0
  258. package/skills/perl-patterns/SKILL.md +503 -0
  259. package/skills/perl-security/SKILL.md +502 -0
  260. package/skills/perl-testing/SKILL.md +474 -0
  261. package/skills/plan-orchestrate/SKILL.md +253 -0
  262. package/skills/plankton-code-quality/SKILL.md +236 -0
  263. package/skills/postgres-patterns/SKILL.md +146 -0
  264. package/skills/product-capability/SKILL.md +140 -0
  265. package/skills/product-lens/SKILL.md +91 -0
  266. package/skills/production-audit/SKILL.md +206 -0
  267. package/skills/production-scheduling/SKILL.md +237 -0
  268. package/skills/project-flow-ops/SKILL.md +110 -0
  269. package/skills/prompt-optimizer/SKILL.md +398 -0
  270. package/skills/python-patterns/SKILL.md +749 -0
  271. package/skills/python-testing/SKILL.md +815 -0
  272. package/skills/pytorch-patterns/SKILL.md +395 -0
  273. package/skills/quality-nonconformance/SKILL.md +259 -0
  274. package/skills/quarkus-patterns/SKILL.md +721 -0
  275. package/skills/quarkus-security/SKILL.md +466 -0
  276. package/skills/quarkus-tdd/SKILL.md +810 -0
  277. package/skills/quarkus-verification/SKILL.md +478 -0
  278. package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  279. package/skills/redis-patterns/SKILL.md +402 -0
  280. package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  281. package/skills/remotion-video-creation/SKILL.md +43 -0
  282. package/skills/remotion-video-creation/rules/3d.md +86 -0
  283. package/skills/remotion-video-creation/rules/animations.md +29 -0
  284. package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  285. package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  286. package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  287. package/skills/remotion-video-creation/rules/assets.md +78 -0
  288. package/skills/remotion-video-creation/rules/audio.md +172 -0
  289. package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  290. package/skills/remotion-video-creation/rules/can-decode.md +75 -0
  291. package/skills/remotion-video-creation/rules/charts.md +58 -0
  292. package/skills/remotion-video-creation/rules/compositions.md +146 -0
  293. package/skills/remotion-video-creation/rules/display-captions.md +126 -0
  294. package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  295. package/skills/remotion-video-creation/rules/fonts.md +152 -0
  296. package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  297. package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  298. package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  299. package/skills/remotion-video-creation/rules/gifs.md +138 -0
  300. package/skills/remotion-video-creation/rules/images.md +130 -0
  301. package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  302. package/skills/remotion-video-creation/rules/lottie.md +67 -0
  303. package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  304. package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  305. package/skills/remotion-video-creation/rules/sequencing.md +106 -0
  306. package/skills/remotion-video-creation/rules/tailwind.md +11 -0
  307. package/skills/remotion-video-creation/rules/text-animations.md +20 -0
  308. package/skills/remotion-video-creation/rules/timing.md +179 -0
  309. package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  310. package/skills/remotion-video-creation/rules/transitions.md +122 -0
  311. package/skills/remotion-video-creation/rules/trimming.md +52 -0
  312. package/skills/remotion-video-creation/rules/videos.md +171 -0
  313. package/skills/repo-scan/SKILL.md +78 -0
  314. package/skills/research-ops/SKILL.md +111 -0
  315. package/skills/returns-reverse-logistics/SKILL.md +239 -0
  316. package/skills/rules-distill/SKILL.md +263 -0
  317. package/skills/rules-distill/scripts/scan-rules.sh +58 -0
  318. package/skills/rules-distill/scripts/scan-skills.sh +129 -0
  319. package/skills/rust-patterns/SKILL.md +498 -0
  320. package/skills/rust-testing/SKILL.md +499 -0
  321. package/skills/safety-guard/SKILL.md +74 -0
  322. package/skills/santa-method/SKILL.md +306 -0
  323. package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  324. package/skills/scientific-db-uspto-database/SKILL.md +177 -0
  325. package/skills/scientific-pkg-gget/SKILL.md +166 -0
  326. package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  327. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  328. package/skills/search-first/SKILL.md +181 -0
  329. package/skills/security-bounty-hunter/SKILL.md +99 -0
  330. package/skills/security-review/SKILL.md +502 -0
  331. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  332. package/skills/seo/SKILL.md +153 -0
  333. package/skills/skill-comply/SKILL.md +57 -0
  334. package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  335. package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  336. package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  337. package/skills/skill-comply/prompts/classifier.md +24 -0
  338. package/skills/skill-comply/prompts/scenario_generator.md +62 -0
  339. package/skills/skill-comply/prompts/spec_generator.md +42 -0
  340. package/skills/skill-comply/pyproject.toml +15 -0
  341. package/skills/skill-comply/scripts/__init__.py +0 -0
  342. package/skills/skill-comply/scripts/classifier.py +85 -0
  343. package/skills/skill-comply/scripts/grader.py +124 -0
  344. package/skills/skill-comply/scripts/parser.py +107 -0
  345. package/skills/skill-comply/scripts/report.py +170 -0
  346. package/skills/skill-comply/scripts/run.py +127 -0
  347. package/skills/skill-comply/scripts/runner.py +186 -0
  348. package/skills/skill-comply/scripts/scenario_generator.py +70 -0
  349. package/skills/skill-comply/scripts/spec_generator.py +72 -0
  350. package/skills/skill-comply/scripts/utils.py +13 -0
  351. package/skills/skill-comply/tests/test_grader.py +197 -0
  352. package/skills/skill-comply/tests/test_parser.py +90 -0
  353. package/skills/skill-comply/tests/test_runner.py +172 -0
  354. package/skills/skill-scout/SKILL.md +139 -0
  355. package/skills/skill-stocktake/SKILL.md +193 -0
  356. package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  357. package/skills/skill-stocktake/scripts/save-results.sh +56 -0
  358. package/skills/skill-stocktake/scripts/scan.sh +170 -0
  359. package/skills/social-graph-ranker/SKILL.md +153 -0
  360. package/skills/springboot-patterns/SKILL.md +313 -0
  361. package/skills/springboot-security/SKILL.md +271 -0
  362. package/skills/springboot-tdd/SKILL.md +157 -0
  363. package/skills/springboot-verification/SKILL.md +230 -0
  364. package/skills/strategic-compact/SKILL.md +129 -0
  365. package/skills/strategic-compact/suggest-compact.sh +54 -0
  366. package/skills/swift-actor-persistence/SKILL.md +142 -0
  367. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  368. package/skills/swift-protocol-di-testing/SKILL.md +189 -0
  369. package/skills/swiftui-patterns/SKILL.md +259 -0
  370. package/skills/tdd-workflow/SKILL.md +462 -0
  371. package/skills/team-builder/SKILL.md +166 -0
  372. package/skills/terminal-ops/SKILL.md +108 -0
  373. package/skills/tinystruct-patterns/SKILL.md +130 -0
  374. package/skills/tinystruct-patterns/references/architecture.md +77 -0
  375. package/skills/tinystruct-patterns/references/data-handling.md +35 -0
  376. package/skills/tinystruct-patterns/references/routing.md +57 -0
  377. package/skills/tinystruct-patterns/references/system-usage.md +74 -0
  378. package/skills/tinystruct-patterns/references/testing.md +59 -0
  379. package/skills/token-budget-advisor/SKILL.md +133 -0
  380. package/skills/ui-demo/SKILL.md +464 -0
  381. package/skills/ui-to-vue/SKILL.md +134 -0
  382. package/skills/unified-notifications-ops/SKILL.md +186 -0
  383. package/skills/verification-loop/SKILL.md +125 -0
  384. package/skills/video-editing/SKILL.md +309 -0
  385. package/skills/videodb/SKILL.md +373 -0
  386. package/skills/videodb/reference/api-reference.md +550 -0
  387. package/skills/videodb/reference/capture-reference.md +407 -0
  388. package/skills/videodb/reference/capture.md +101 -0
  389. package/skills/videodb/reference/editor.md +443 -0
  390. package/skills/videodb/reference/generative.md +331 -0
  391. package/skills/videodb/reference/rtstream-reference.md +564 -0
  392. package/skills/videodb/reference/rtstream.md +65 -0
  393. package/skills/videodb/reference/search.md +230 -0
  394. package/skills/videodb/reference/streaming.md +406 -0
  395. package/skills/videodb/reference/use-cases.md +118 -0
  396. package/skills/videodb/scripts/ws_listener.py +282 -0
  397. package/skills/visa-doc-translate/README.md +86 -0
  398. package/skills/visa-doc-translate/SKILL.md +117 -0
  399. package/skills/vite-patterns/SKILL.md +448 -0
  400. package/skills/windows-desktop-e2e/SKILL.md +787 -0
  401. package/skills/workspace-surface-audit/SKILL.md +124 -0
  402. package/skills/x-api/SKILL.md +233 -0
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: terminal-ops
3
+ description: Evidence-first repo execution workflow for the toolset. Use when the user wants a command run, a repo checked, a CI failure debugged, or a narrow fix pushed with exact proof of what was executed and verified.
4
+ ---
5
+
6
+ # Terminal Ops
7
+
8
+ Use this when the user wants real repo execution: run commands, inspect git state, debug CI or builds, make a narrow fix, and report exactly what changed and what was verified.
9
+
10
+ This skill is intentionally narrower than general coding guidance. It is an operator workflow for evidence-first terminal execution.
11
+
12
+ ## Skill Stack
13
+
14
+ Pull these the toolset-native skills into the workflow when relevant:
15
+
16
+ - `verification-loop` for exact proving steps after changes
17
+ - `tdd-workflow` when the right fix needs regression coverage
18
+ - `security-review` when secrets, auth, or external inputs are involved
19
+ - `github-ops` when the task depends on CI runs, PR state, or release status
20
+ - `knowledge-ops` when the verified outcome needs to be captured into durable project context
21
+
22
+ ## When to Use
23
+
24
+ - user says "fix", "debug", "run this", "check the repo", or "push it"
25
+ - the task depends on command output, git state, test results, or a verified local fix
26
+ - the answer must distinguish changed locally, verified locally, committed, and pushed
27
+
28
+ ## Guardrails
29
+
30
+ - inspect before editing
31
+ - stay read-only if the user asked for audit/review only
32
+ - prefer repo-local scripts and helpers over improvised ad hoc wrappers
33
+ - do not claim fixed until the proving command was rerun
34
+ - do not claim pushed unless the branch actually moved upstream
35
+
36
+ ## Workflow
37
+
38
+ ### 1. Resolve the working surface
39
+
40
+ Settle:
41
+
42
+ - exact repo path
43
+ - branch
44
+ - local diff state
45
+ - requested mode:
46
+ - inspect
47
+ - fix
48
+ - verify
49
+ - push
50
+
51
+ ### 2. Read the failing surface first
52
+
53
+ Before changing anything:
54
+
55
+ - inspect the error
56
+ - inspect the file or test
57
+ - inspect git state
58
+ - use any already-supplied logs or context before re-reading blindly
59
+
60
+ ### 3. Keep the fix narrow
61
+
62
+ Solve one dominant failure at a time:
63
+
64
+ - use the smallest useful proving command first
65
+ - only escalate to a bigger build/test pass after the local failure is addressed
66
+ - if a command keeps failing with the same signature, stop broad retries and narrow scope
67
+
68
+ ### 4. Report exact execution state
69
+
70
+ Use exact status words:
71
+
72
+ - inspected
73
+ - changed locally
74
+ - verified locally
75
+ - committed
76
+ - pushed
77
+ - blocked
78
+
79
+ ## Output Format
80
+
81
+ ```text
82
+ SURFACE
83
+ - repo
84
+ - branch
85
+ - requested mode
86
+
87
+ EVIDENCE
88
+ - failing command / diff / test
89
+
90
+ ACTION
91
+ - what changed
92
+
93
+ STATUS
94
+ - inspected / changed locally / verified locally / committed / pushed / blocked
95
+ ```
96
+
97
+ ## Pitfalls
98
+
99
+ - do not work from stale memory when the live repo state can be read
100
+ - do not widen a narrow fix into repo-wide churn
101
+ - do not use destructive git commands
102
+ - do not ignore unrelated local work
103
+
104
+ ## Verification
105
+
106
+ - the response names the proving command or test
107
+ - git-related work names the repo path and branch
108
+ - any push claim includes the target branch and exact result
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: tinystruct-patterns
3
+ description: Use when developing application modules or microservices with the tinystruct Java framework. Covers routing, context management, JSON handling with Builder, and CLI/HTTP dual-mode patterns.
4
+ ---
5
+
6
+ # tinystruct Development Patterns
7
+
8
+ Architecture and implementation patterns for building modules with the **tinystruct** Java framework – a lightweight system where CLI and HTTP are equal citizens.
9
+
10
+ ## When to Use
11
+
12
+ - Creating new `Application` modules by extending `AbstractApplication`.
13
+ - Defining routes and command-line actions using `@Action`.
14
+ - Handling per-request state via `Context`.
15
+ - Performing JSON serialization using the native `Builder` component.
16
+ - Configuring database connections or system settings in `application.properties`.
17
+ - Generating or re-generating the standard `bin/dispatcher` entry point via `ApplicationManager.init()`.
18
+ - Debugging routing conflicts (Actions) or CLI argument parsing.
19
+
20
+ ## How It Works
21
+
22
+ 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`.
23
+
24
+ Routing is handled by the `ActionRegistry`, which automatically maps path segments to method arguments and injects dependencies. For data-only services, the native `Builder` component should be used for JSON serialization to maintain a zero-dependency footprint. The framework also includes a utility in `ApplicationManager` to bootstrap the project's execution environment by generating the `bin/dispatcher` script.
25
+
26
+ ## Examples
27
+
28
+ ### Basic Application (MyService)
29
+ ```java
30
+ public class MyService extends AbstractApplication {
31
+ @Override
32
+ public void init() {
33
+ this.setTemplateRequired(false); // Disable .view lookup for data/API apps
34
+ }
35
+
36
+ @Override public String version() { return "1.0.0"; }
37
+
38
+ @Action("greet")
39
+ public String greet() {
40
+ return "Hello from tinystruct!";
41
+ }
42
+ }
43
+ ```
44
+
45
+ ### Parameterized Routing (getUser)
46
+ ```java
47
+ // Handles /api/user/123 (Web) or "bin/dispatcher api/user/123" (CLI)
48
+ @Action("api/user/(\\d+)")
49
+ public String getUser(int userId) {
50
+ return "User ID: " + userId;
51
+ }
52
+ ```
53
+
54
+ ### HTTP Mode Disambiguation (login)
55
+ ```java
56
+ @Action(value = "login", mode = Mode.HTTP_POST)
57
+ public boolean doLogin() {
58
+ // Process login logic
59
+ return true;
60
+ }
61
+ ```
62
+
63
+ ### Native JSON Data Handling (getData)
64
+ ```java
65
+ @Action("api/data")
66
+ public Builder getData() throws ApplicationException {
67
+ Builder builder = new Builder();
68
+ builder.put("status", "success");
69
+ Builder nested = new Builder();
70
+ nested.put("id", 1);
71
+ nested.put("name", "James");
72
+ builder.put("data", nested);
73
+ return builder;
74
+ }
75
+ ```
76
+
77
+ ## Configuration
78
+
79
+ Settings are managed in `src/main/resources/application.properties`.
80
+
81
+ ```properties
82
+ # Database
83
+ driver=org.h2.Driver
84
+ database.url=jdbc:h2:~/mydb
85
+
86
+ # App specific
87
+ my.service.endpoint=https://api.example.com
88
+ ```
89
+
90
+ ## Testing Patterns
91
+
92
+ Use JUnit 5 to test actions by verifying they are registered in the `ActionRegistry`.
93
+
94
+ ```java
95
+ @Test
96
+ void testActionRegistration() {
97
+ Application app = new MyService();
98
+ app.init();
99
+
100
+ ActionRegistry registry = ActionRegistry.getInstance();
101
+ assertNotNull(registry.get("greet"));
102
+ }
103
+ ```
104
+
105
+ ## Red Flags & Anti-patterns
106
+
107
+ | Symptom | Correct Pattern |
108
+ |---|---|
109
+ | Importing `com.google.gson` or `com.fasterxml.jackson` | Use `org.tinystruct.data.component.Builder`. |
110
+ | `FileNotFoundException` for `.view` files | Call `setTemplateRequired(false)` in `init()` for API-only apps. |
111
+ | Annotating `private` methods with `@Action` | Actions must be `public` to be registered by the framework. |
112
+ | Hardcoding `main(String[] args)` in apps | Use `bin/dispatcher` as the entry point for all modules. |
113
+ | Manual `ActionRegistry` registration | Prefer the `@Action` annotation for automatic discovery. |
114
+
115
+ ## Technical Reference
116
+
117
+ Detailed guides are available in the `references/` directory:
118
+
119
+ - [Architecture & Config](references/architecture.md) — Abstractions, Package Map, Properties
120
+ - [Routing & @Action](references/routing.md) — Annotation details, Modes, Parameters
121
+ - [Data Handling](references/data-handling.md) — Using the native `Builder` for JSON
122
+ - [System & Usage](references/system-usage.md) — Context, Sessions, Events, CLI usage
123
+ - [Testing Patterns](references/testing.md) — JUnit 5 integration and ActionRegistry testing
124
+
125
+ ## Reference Source Files (Internal)
126
+
127
+ - `src/main/java/org/tinystruct/AbstractApplication.java` — Core base class
128
+ - `src/main/java/org/tinystruct/system/annotation/Action.java` — Annotation & Modes
129
+ - `src/main/java/org/tinystruct/application/ActionRegistry.java` — Routing Engine
130
+ - `src/main/java/org/tinystruct/data/component/Builder.java` — JSON/Data Serializer
@@ -0,0 +1,77 @@
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. It is ideal for building microservices, command-line utilities, and data-driven applications where a small footprint and zero-dependency JSON handling are required. Use it when you want to write logic once and expose it via both a terminal and a web server without modification.
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 Netty-based 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/component/Builder.java ← JSON serialization (use instead of Gson/Jackson)
44
+ └── http/ ← Request, Response, Constants
45
+ ```
46
+
47
+ ### Template Behavior and Dispatch Flow
48
+
49
+ 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 `getContext()` to manage state and `setVariable("name", value)` to pass data to templates, which use `[%name%]` for interpolation.
50
+
51
+ ## Examples
52
+
53
+ ### Minimal Application Initialization
54
+ ```java
55
+ @Override
56
+ public void init() {
57
+ this.setTemplateRequired(false); // Skip .view template lookup for data-only apps
58
+ }
59
+ ```
60
+
61
+ ### Action Definition and CLI Invocation
62
+ ```java
63
+ @Action("hello")
64
+ public String hello() {
65
+ return "Hello, tinystruct!";
66
+ }
67
+ ```
68
+ **Execution via Dispatcher:**
69
+ ```bash
70
+ bin/dispatcher hello
71
+ ```
72
+
73
+ ### Configuration Access
74
+ Located at `src/main/resources/application.properties`:
75
+ ```java
76
+ String port = this.getConfiguration("server.port");
77
+ ```
@@ -0,0 +1,35 @@
1
+ # tinystruct Data Handling (JSON)
2
+
3
+ ## When to Use
4
+
5
+ Prefer `org.tinystruct.data.component.Builder` in scenarios where you need a lightweight, high-performance JSON solution with **zero external dependencies**. It is specifically designed to keep your tinystruct applications lean and fast, making it the ideal choice for microservices and CLI tools where including heavy libraries like Jackson or Gson would be overkill.
6
+
7
+ ## How It Works
8
+
9
+ The `Builder` class provides a simple key-value interface for both creating and reading JSON structures. It integrates directly with `AbstractApplication` result handling; when an action method returns a `Builder` object, the framework automatically serializes it to the response stream. This prevents the need for manual string conversion and ensures consistent data formatting across your application modules.
10
+
11
+ ## Examples
12
+
13
+ ### Serialization
14
+ ```java
15
+ import org.tinystruct.data.component.Builder;
16
+
17
+ // Create and populate
18
+ Builder response = new Builder();
19
+ response.put("status", "success");
20
+ response.put("count", 42);
21
+ response.put("data", someList);
22
+
23
+ return response; // {"status":"success","count":42,...}
24
+ ```
25
+
26
+ ### Parsing
27
+ ```java
28
+ import org.tinystruct.data.component.Builder;
29
+
30
+ // Parse a JSON string
31
+ Builder parsed = new Builder();
32
+ parsed.parse(jsonString);
33
+
34
+ String status = parsed.get("status").toString();
35
+ ```
@@ -0,0 +1,57 @@
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 (e.g., retrieving a resource by ID), or restrict execution to specific HTTP methods (GET, POST, etc.) 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 (int, String, etc.) to corresponding regex segments to generate an internal matching pattern. For instance, `getUser(int id)` generates a regex targeting digits, while `search(String query)` targets generic path segments.
10
+
11
+ When a request is dispatched, the `ActionRegistry` automatically injects dependencies like `Request` and `Response` into the action method if they are specified as parameters, drawing them directly from the current request's `Context`. Execution is further filtered by the `Mode` value, allowing a single path to invoke different logic depending on whether the trigger was a terminal command or a specific type of HTTP request.
12
+
13
+ ### Mode Values
14
+
15
+ | Mode | When it triggers |
16
+ |---|---|
17
+ | `DEFAULT` | Both CLI and HTTP (GET, POST, etc.) |
18
+ | `CLI` | CLI dispatcher only |
19
+ | `HTTP_GET` | HTTP GET only |
20
+ | `HTTP_POST` | HTTP POST only |
21
+ | `HTTP_PUT` | HTTP PUT only |
22
+ | `HTTP_DELETE` | HTTP DELETE only |
23
+ | `HTTP_PATCH` | HTTP PATCH only |
24
+
25
+ ## Examples
26
+
27
+ ### Basic Action Declaration
28
+ ```java
29
+ @Action(
30
+ value = "path/subpath", // required: URI segment or CLI command
31
+ description = "What it does", // shown in --help output
32
+ mode = Mode.HTTP_POST, // default: Mode.DEFAULT (both CLI + HTTP)
33
+ options = {}, // CLI option flags
34
+ example = "curl -X POST http://localhost:8080/path/subpath/42"
35
+ )
36
+ public String myAction(int id) { ... }
37
+ ```
38
+
39
+ ### Parameterized Paths (Regex Generation)
40
+ ```java
41
+ @Action("user/{id}")
42
+ public String getUser(int id) { ... }
43
+ // → pattern: ^/?user/(-?\d+)$
44
+
45
+ @Action("search")
46
+ public String search(String query) { ... }
47
+ // → pattern: ^/?search/([^/]+)$
48
+ ```
49
+
50
+ ### Request and Response Injection
51
+ ```java
52
+ @Action(value = "upload", mode = Mode.HTTP_POST)
53
+ public String upload(Request<?, ?> req, Response<?, ?> res) throws ApplicationException {
54
+ // req.getParameter("file"), res.setHeader(...), etc.
55
+ return "ok";
56
+ }
57
+ ```
@@ -0,0 +1,74 @@
1
+ # tinystruct System and Usage Reference
2
+
3
+ ## When to Use
4
+
5
+ Use the system and usage patterns described here when you need to handle stateful interactions across CLI and HTTP modes, manage user sessions in web applications, or implement loosely coupled communication between application modules using an event-driven architecture.
6
+
7
+ ## How It Works
8
+
9
+ The framework's `Context` serves as the primary data store for request-specific state. In CLI mode, flags passed as `--key value` are automatically parsed and stored in the `Context` with the `--` prefix, allowing action methods to retrieve command parameters easily. For web applications, the system provides standard session management via the `Request` object, enabling the storage of user data across multiple HTTP requests.
10
+
11
+ The internal `EventDispatcher` facilitates an asynchronous event bus. By defining custom `Event` classes and registering handlers (typically within an application's `init()` method), you can trigger background tasks—such as sending emails or logging audit trails—without blocking the main execution path.
12
+
13
+ ## Examples
14
+
15
+ ### Context and CLI Arguments
16
+ ```java
17
+ @Action("echo")
18
+ public String echo() {
19
+ // CLI: bin/dispatcher echo --words "Hello World"
20
+ Object words = getContext().getAttribute("--words");
21
+ if (words != null) return words.toString();
22
+ return "No words provided";
23
+ }
24
+ ```
25
+
26
+ ### Session Management (Web Mode)
27
+ ```java
28
+ @Action(value = "login", mode = Mode.HTTP_POST)
29
+ public String login(Request request) {
30
+ request.getSession().setAttribute("userId", "42");
31
+ return "Logged in";
32
+ }
33
+
34
+ @Action("profile")
35
+ public String profile(Request request) {
36
+ Object userId = request.getSession().getAttribute("userId");
37
+ if (userId == null) return "Not logged in";
38
+ return "User: " + userId;
39
+ }
40
+ ```
41
+
42
+ ### Event System
43
+ ```java
44
+ // 1. Define an event
45
+ public class OrderCreatedEvent implements org.tinystruct.system.Event<Order> {
46
+ private final Order order;
47
+ public OrderCreatedEvent(Order order) { this.order = order; }
48
+
49
+ @Override public String getName() { return "order_created"; }
50
+ @Override public Order getPayload() { return order; }
51
+ }
52
+
53
+ // 2. Register a handler
54
+ EventDispatcher.getInstance().registerHandler(OrderCreatedEvent.class, event -> {
55
+ CompletableFuture.runAsync(() -> sendConfirmationEmail(event.getPayload()));
56
+ });
57
+
58
+ // 3. Dispatch
59
+ EventDispatcher.getInstance().dispatch(new OrderCreatedEvent(newOrder));
60
+ ```
61
+
62
+ ### Running the Application
63
+ ```bash
64
+ # CLI mode
65
+ bin/dispatcher hello
66
+ bin/dispatcher echo --words "Hello" --import com.example.HelloApp
67
+
68
+ # HTTP server (listens on :8080 by default)
69
+ bin/dispatcher start --import org.tinystruct.system.HttpServer
70
+
71
+ # Database utilities
72
+ bin/dispatcher generate --table users
73
+ bin/dispatcher sql-query "SELECT * FROM users"
74
+ ```
@@ -0,0 +1,59 @@
1
+ # tinystruct Testing Patterns
2
+
3
+ ## When to Use
4
+
5
+ Use the testing patterns described here when writing units tests for your tinystruct applications with **JUnit 5**. These patterns are essential for verifying that your `@Action` methods return the correct results and that your routing logic is properly registered within the singleton `ActionRegistry`.
6
+
7
+ ## How It Works
8
+
9
+ Testing tinystruct applications requires a specific setup to ensure framework-level features like annotation processing and configuration management are active. By creating a new instance of your application and passing it a `Settings` object in the `setUp()` method, you trigger the `init()` lifecycle. This ensures all `@Action` methods are discovered and registered.
10
+
11
+ Because the `ActionRegistry` is a singleton, it is critical to maintain isolation between tests by properly initializing your application state before each test execution, preventing side effects from leaking across the test suite.
12
+
13
+ ## Examples
14
+
15
+ ### Unit Testing an Application
16
+ ```java
17
+ import org.junit.jupiter.api.*;
18
+ import org.tinystruct.application.ActionRegistry;
19
+ import org.tinystruct.system.Settings;
20
+
21
+ class MyAppTest {
22
+
23
+ private MyApp app;
24
+
25
+ @BeforeEach
26
+ void setUp() {
27
+ app = new MyApp();
28
+ Settings config = new Settings();
29
+ app.setConfiguration(config);
30
+ app.init(); // triggers @Action annotation processing
31
+ }
32
+ void testHello() throws Exception {
33
+ // Direct invocation via the application object
34
+ Object result = app.invoke("hello");
35
+ Assertions.assertEquals("Hello, tinystruct!", result);
36
+ }
37
+
38
+ @Test
39
+ void testGreet() throws Exception {
40
+ // Invocation with arguments
41
+ Object result = app.invoke("greet", new Object[]{"James"});
42
+ Assertions.assertEquals("Hello, James!", result);
43
+ }
44
+ }
45
+ ```
46
+
47
+ ### Testing via ActionRegistry
48
+ If you need to test the routing logic itself, use the `ActionRegistry` singleton to verify path matching:
49
+
50
+ ```java
51
+ @Test
52
+ void testRouting() {
53
+ ActionRegistry registry = ActionRegistry.getInstance();
54
+ // Verify a path matches an action
55
+ Action action = registry.getAction("greet/James");
56
+ Assertions.assertNotNull(action);
57
+ }
58
+ ```
59
+ Reference: `src/test/java/org/tinystruct/application/ActionRegistryTest.java`
@@ -0,0 +1,133 @@
1
+ ---
2
+ name: token-budget-advisor
3
+ description: >-
4
+ Offers the user an informed choice about how much response depth to
5
+ consume before answering. Use this skill when the user explicitly
6
+ wants to control response length, depth, or token budget.
7
+ TRIGGER when: "token budget", "token count", "token usage", "token limit",
8
+ "response length", "answer depth", "short version", "brief answer",
9
+ "detailed answer", "exhaustive answer", "respuesta corta vs larga",
10
+ "cuántos tokens", "ahorrar tokens", "responde al 50%", "dame la versión
11
+ corta", "quiero controlar cuánto usas", or clear variants where the
12
+ user is explicitly asking to control answer size or depth.
13
+ DO NOT TRIGGER when: user has already specified a level in the current
14
+ session (maintain it), the request is clearly a one-word answer, or
15
+ "token" refers to auth/session/payment tokens rather than response size.
16
+ origin: community
17
+ ---
18
+
19
+ # Token Budget Advisor (TBA)
20
+
21
+ Intercept the response flow to offer the user a choice about response depth **before** Claude answers.
22
+
23
+ ## When to Use
24
+
25
+ - User wants to control how long or detailed a response is
26
+ - User mentions tokens, budget, depth, or response length
27
+ - User says "short version", "tldr", "brief", "al 25%", "exhaustive", etc.
28
+ - Any time the user wants to choose depth/detail level upfront
29
+
30
+ **Do not trigger** when: user already set a level this session (maintain it silently), or the answer is trivially one line.
31
+
32
+ ## How It Works
33
+
34
+ ### Step 1 — Estimate input tokens
35
+
36
+ Use the repository's canonical context-budget heuristics to estimate the prompt's token count mentally.
37
+
38
+ Use the same calibration guidance as [context-budget](../context-budget/SKILL.md):
39
+
40
+ - prose: `words × 1.3`
41
+ - code-heavy or mixed/code blocks: `chars / 4`
42
+
43
+ For mixed content, use the dominant content type and keep the estimate heuristic.
44
+
45
+ ### Step 2 — Estimate response size by complexity
46
+
47
+ Classify the prompt, then apply the multiplier range to get the full response window:
48
+
49
+ | Complexity | Multiplier range | Example prompts |
50
+ |--------------|------------------|------------------------------------------------------|
51
+ | Simple | 3× – 8× | "What is X?", yes/no, single fact |
52
+ | Medium | 8× – 20× | "How does X work?" |
53
+ | Medium-High | 10× – 25× | Code request with context |
54
+ | Complex | 15× – 40× | Multi-part analysis, comparisons, architecture |
55
+ | Creative | 10× – 30× | Stories, essays, narrative writing |
56
+
57
+ Response window = `input_tokens × mult_min` to `input_tokens × mult_max` (but don’t exceed your model’s configured output-token limit).
58
+
59
+ ### Step 3 — Present depth options
60
+
61
+ Present this block **before** answering, using the actual estimated numbers:
62
+
63
+ ```
64
+ Analyzing your prompt...
65
+
66
+ Input: ~[N] tokens | Type: [type] | Complexity: [level] | Language: [lang]
67
+
68
+ Choose your depth level:
69
+
70
+ [1] Essential (25%) -> ~[tokens] Direct answer only, no preamble
71
+ [2] Moderate (50%) -> ~[tokens] Answer + context + 1 example
72
+ [3] Detailed (75%) -> ~[tokens] Full answer with alternatives
73
+ [4] Exhaustive (100%) -> ~[tokens] Everything, no limits
74
+
75
+ Which level? (1-4 or say "25% depth", "50% depth", "75% depth", "100% depth")
76
+
77
+ Precision: heuristic estimate ~85-90% accuracy (±15%).
78
+ ```
79
+
80
+ Level token estimates (within the response window):
81
+ - 25% → `min + (max - min) × 0.25`
82
+ - 50% → `min + (max - min) × 0.50`
83
+ - 75% → `min + (max - min) × 0.75`
84
+ - 100% → `max`
85
+
86
+ ### Step 4 — Respond at the chosen level
87
+
88
+ | Level | Target length | Include | Omit |
89
+ |------------------|---------------------|-----------------------------------------------------|---------------------------------------------------|
90
+ | 25% Essential | 2-4 sentences max | Direct answer, key conclusion | Context, examples, nuance, alternatives |
91
+ | 50% Moderate | 1-3 paragraphs | Answer + necessary context + 1 example | Deep analysis, edge cases, references |
92
+ | 75% Detailed | Structured response | Multiple examples, pros/cons, alternatives | Extreme edge cases, exhaustive references |
93
+ | 100% Exhaustive | No restriction | Everything — full analysis, all code, all perspectives | Nothing |
94
+
95
+ ## Shortcuts — skip the question
96
+
97
+ If the user already signals a level, respond at that level immediately without asking:
98
+
99
+ | What they say | Level |
100
+ |----------------------------------------------------|-------|
101
+ | "1" / "25% depth" / "short version" / "brief answer" / "tldr" | 25% |
102
+ | "2" / "50% depth" / "moderate depth" / "balanced answer" | 50% |
103
+ | "3" / "75% depth" / "detailed answer" / "thorough answer" | 75% |
104
+ | "4" / "100% depth" / "exhaustive answer" / "full deep dive" | 100% |
105
+
106
+ If the user set a level earlier in the session, **maintain it silently** for subsequent responses unless they change it.
107
+
108
+ ## Precision note
109
+
110
+ This skill uses heuristic estimation — no real tokenizer. Accuracy ~85-90%, variance ±15%. Always show the disclaimer.
111
+
112
+ ## Examples
113
+
114
+ ### Triggers
115
+
116
+ - "Give me the short version first."
117
+ - "How many tokens will your answer use?"
118
+ - "Respond at 50% depth."
119
+ - "I want the exhaustive answer, not the summary."
120
+ - "Dame la version corta y luego la detallada."
121
+
122
+ ### Does Not Trigger
123
+
124
+ - "What is a JWT token?"
125
+ - "The checkout flow uses a payment token."
126
+ - "Is this normal?"
127
+ - "Complete the refactor."
128
+ - Follow-up questions after the user already chose a depth for the session
129
+
130
+ ## Source
131
+
132
+ Standalone skill from [TBA — Token Budget Advisor for Claude Code](https://github.com/Xabilimon1/Token-Budget-Advisor-Claude-Code-).
133
+ Original project also ships a Python estimator script, but this repository keeps the skill self-contained and heuristic-only.