heraspec 0.1.13 → 0.1.15
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 +209 -22
- package/README.md +205 -137
- package/bin/heraspec.js +4950 -1161
- package/bin/heraspec.js.map +4 -4
- package/dist/core/templates/skills/CHANGELOG.md +117 -117
- package/dist/core/templates/skills/README-template.md +58 -58
- package/dist/core/templates/skills/README.md +35 -32
- package/dist/core/templates/skills/campaign-plan/skill.md +76 -0
- package/dist/core/templates/skills/campaign-plan/skill.vi.md +76 -0
- package/dist/core/templates/skills/campaign-plan-skill.md +76 -0
- package/dist/core/templates/skills/campaign-plan-skill.vi.md +76 -0
- package/dist/core/templates/skills/code-review/skill.md +70 -0
- package/dist/core/templates/skills/code-review/skill.vi.md +70 -0
- package/dist/core/templates/skills/code-review-skill.md +70 -0
- package/dist/core/templates/skills/code-review-skill.vi.md +70 -0
- package/dist/core/templates/skills/content-creation/skill.md +69 -0
- package/dist/core/templates/skills/content-creation/skill.vi.md +69 -0
- package/dist/core/templates/skills/content-creation-skill.md +69 -0
- package/dist/core/templates/skills/content-creation-skill.vi.md +69 -0
- package/dist/core/templates/skills/content-optimization/skill.md +104 -0
- package/dist/core/templates/skills/content-optimization-skill.md +104 -104
- package/dist/core/templates/skills/data/design-systems.csv +54 -0
- package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
- package/dist/core/templates/skills/data/pages.csv +9 -9
- package/dist/core/templates/skills/data/typography.csv +57 -57
- package/dist/core/templates/skills/debug/skill.md +69 -0
- package/dist/core/templates/skills/debug/skill.vi.md +69 -0
- package/dist/core/templates/skills/debug-skill.md +69 -0
- package/dist/core/templates/skills/debug-skill.vi.md +69 -0
- package/dist/core/templates/skills/deploy-documentation/skill.md +408 -0
- package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/airbnb/DESIGN.md +246 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/airtable/DESIGN.md +89 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/apple/DESIGN.md +313 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/bmw/DESIGN.md +180 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/cal/DESIGN.md +259 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/claude/DESIGN.md +312 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/clay/DESIGN.md +304 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/cohere/DESIGN.md +266 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/coinbase/DESIGN.md +129 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/composio/DESIGN.md +307 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/cursor/DESIGN.md +309 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/expo/DESIGN.md +281 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/figma/DESIGN.md +220 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/framer/DESIGN.md +246 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/ibm/DESIGN.md +332 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/index.json +72 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/intercom/DESIGN.md +146 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/kraken/DESIGN.md +125 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/linear.app/DESIGN.md +367 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/lovable/DESIGN.md +298 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/minimax/DESIGN.md +257 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/mintlify/DESIGN.md +326 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/miro/DESIGN.md +108 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/mongodb/DESIGN.md +266 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/notion/DESIGN.md +309 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/nvidia/DESIGN.md +293 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/ollama/DESIGN.md +267 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/pinterest/DESIGN.md +230 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/posthog/DESIGN.md +256 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/raycast/DESIGN.md +268 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/replicate/DESIGN.md +261 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/resend/DESIGN.md +303 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/revolut/DESIGN.md +185 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/runwayml/DESIGN.md +244 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/sanity/DESIGN.md +357 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/sentry/DESIGN.md +262 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/spacex/DESIGN.md +194 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/spotify/DESIGN.md +246 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/stripe/DESIGN.md +322 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/supabase/DESIGN.md +255 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/superhuman/DESIGN.md +252 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/together.ai/DESIGN.md +263 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/uber/DESIGN.md +295 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/vercel/DESIGN.md +310 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/voltagent/DESIGN.md +323 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/warp/DESIGN.md +253 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/webflow/DESIGN.md +92 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/wise/DESIGN.md +173 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/x.ai/DESIGN.md +257 -0
- package/dist/core/templates/skills/design-system/knowledge/design-systems/zapier/DESIGN.md +328 -0
- package/dist/core/templates/skills/design-system/skill.md +176 -0
- package/dist/core/templates/skills/design-system-skill.md +176 -0
- package/dist/core/templates/skills/documents/skill.md +104 -0
- package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
- package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
- package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
- package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
- package/dist/core/templates/skills/documents/templates/script.js +56 -56
- package/dist/core/templates/skills/documents/templates/style.css +155 -155
- package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
- package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
- package/dist/core/templates/skills/documents-skill.md +104 -104
- package/dist/core/templates/skills/e2e-test/skill.md +119 -0
- package/dist/core/templates/skills/e2e-test-skill.md +119 -119
- package/dist/core/templates/skills/email-sequence/skill.md +68 -0
- package/dist/core/templates/skills/email-sequence/skill.vi.md +68 -0
- package/dist/core/templates/skills/email-sequence-skill.md +68 -0
- package/dist/core/templates/skills/email-sequence-skill.vi.md +68 -0
- package/dist/core/templates/skills/git-embed/skill.md +57 -0
- package/dist/core/templates/skills/git-embed-skill.md +57 -0
- package/dist/core/templates/skills/integration-test/skill.md +118 -0
- package/dist/core/templates/skills/integration-test-skill.md +118 -118
- package/dist/core/templates/skills/knowledge/README.md +63 -0
- package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
- package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
- package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
- package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
- package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
- package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
- package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
- package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
- package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
- package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
- package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
- package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
- package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
- package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
- package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
- package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
- package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
- package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
- package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
- package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
- package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
- package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
- package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
- package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
- package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
- package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
- package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
- package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
- package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
- package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
- package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
- package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
- package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
- package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
- package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
- package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
- package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
- package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
- package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
- package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
- package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
- package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
- package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
- package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
- package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
- package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
- package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
- package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
- package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
- package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
- package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
- package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
- package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
- package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
- package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
- package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
- package/dist/core/templates/skills/knowledge/index.json +65 -0
- package/dist/core/templates/skills/module-codebase-skill.md +110 -110
- package/dist/core/templates/skills/perfex-module/module-codebase/skill.md +110 -0
- package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
- package/dist/core/templates/skills/project-memory/skill.md +222 -0
- package/dist/core/templates/skills/project-memory/skill.vi.md +223 -0
- package/dist/core/templates/skills/project-memory-skill.md +222 -0
- package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
- package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
- package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
- package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
- package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
- package/dist/core/templates/skills/scripts/core.py +391 -385
- package/dist/core/templates/skills/scripts/search.py +1 -1
- package/dist/core/templates/skills/seo-audit/skill.md +75 -0
- package/dist/core/templates/skills/seo-audit/skill.vi.md +75 -0
- package/dist/core/templates/skills/seo-audit-skill.md +75 -0
- package/dist/core/templates/skills/seo-audit-skill.vi.md +75 -0
- package/dist/core/templates/skills/smart-explore/skill.md +141 -0
- package/dist/core/templates/skills/smart-explore-skill.md +141 -0
- package/dist/core/templates/skills/sourcecode-analyzer/skill.md +210 -0
- package/dist/core/templates/skills/sourcecode-analyzer/skill.vi.md +210 -0
- package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
- package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
- package/dist/core/templates/skills/spec-writer/skill.md +61 -0
- package/dist/core/templates/skills/spec-writer/skill.vi.md +61 -0
- package/dist/core/templates/skills/spec-writer-skill.md +61 -0
- package/dist/core/templates/skills/spec-writer-skill.vi.md +61 -0
- package/dist/core/templates/skills/sql-queries/skill.md +67 -0
- package/dist/core/templates/skills/sql-queries/skill.vi.md +67 -0
- package/dist/core/templates/skills/sql-queries-skill.md +67 -0
- package/dist/core/templates/skills/sql-queries-skill.vi.md +67 -0
- package/dist/core/templates/skills/suggestion/skill.md +118 -0
- package/dist/core/templates/skills/suggestion-skill.md +118 -118
- package/dist/core/templates/skills/system-design/skill.md +70 -0
- package/dist/core/templates/skills/system-design/skill.vi.md +70 -0
- package/dist/core/templates/skills/system-design-skill.md +70 -0
- package/dist/core/templates/skills/system-design-skill.vi.md +70 -0
- package/dist/core/templates/skills/tech-debt/skill.md +70 -0
- package/dist/core/templates/skills/tech-debt/skill.vi.md +70 -0
- package/dist/core/templates/skills/tech-debt-skill.md +70 -0
- package/dist/core/templates/skills/tech-debt-skill.vi.md +70 -0
- package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
- package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
- package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
- package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
- package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
- package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
- package/dist/core/templates/skills/templates/responsive-design.md +40 -40
- package/dist/core/templates/skills/ui-ux/data/charts.csv +26 -0
- package/dist/core/templates/skills/ui-ux/data/colors.csv +97 -0
- package/dist/core/templates/skills/ui-ux/data/design-systems.csv +54 -0
- package/dist/core/templates/skills/ui-ux/data/landing.csv +31 -0
- package/dist/core/templates/skills/ui-ux/data/pages-proposed.csv +22 -0
- package/dist/core/templates/skills/ui-ux/data/pages.csv +10 -0
- package/dist/core/templates/skills/ui-ux/data/products.csv +97 -0
- package/dist/core/templates/skills/ui-ux/data/prompts.csv +24 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/flutter.csv +53 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/html-tailwind.csv +56 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/nextjs.csv +53 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/react-native.csv +52 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/react.csv +54 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/svelte.csv +54 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/swiftui.csv +51 -0
- package/dist/core/templates/skills/ui-ux/data/stacks/vue.csv +50 -0
- package/dist/core/templates/skills/ui-ux/data/styles.csv +59 -0
- package/dist/core/templates/skills/ui-ux/data/typography.csv +58 -0
- package/dist/core/templates/skills/ui-ux/data/ux-guidelines.csv +100 -0
- package/dist/core/templates/skills/ui-ux/scripts/CODE_EXPLANATION.md +394 -0
- package/dist/core/templates/skills/ui-ux/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -0
- package/dist/core/templates/skills/ui-ux/scripts/SEARCH_MODES_GUIDE.md +238 -0
- package/dist/core/templates/skills/ui-ux/scripts/core.py +391 -0
- package/dist/core/templates/skills/ui-ux/scripts/search.py +73 -0
- package/dist/core/templates/skills/ui-ux/skill.md +595 -0
- package/dist/core/templates/skills/ui-ux/templates/accessibility-checklist.md +40 -0
- package/dist/core/templates/skills/ui-ux/templates/example-prompt-full-theme.md +333 -0
- package/dist/core/templates/skills/ui-ux/templates/page-types-guide.md +338 -0
- package/dist/core/templates/skills/ui-ux/templates/pages-proposed-summary.md +273 -0
- package/dist/core/templates/skills/ui-ux/templates/pre-delivery-checklist.md +42 -0
- package/dist/core/templates/skills/ui-ux/templates/prompt-template-full-theme.md +313 -0
- package/dist/core/templates/skills/ui-ux/templates/responsive-design.md +40 -0
- package/dist/core/templates/skills/ui-ux-skill.md +595 -584
- package/dist/core/templates/skills/unit-test/skill.md +111 -0
- package/dist/core/templates/skills/unit-test-skill.md +111 -111
- package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
- package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
- package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
- package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
- package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
- package/dist/core/templates/skills/ux-element-skill.md +83 -83
- package/dist/core/templates/skills/wordpress/plugin-check/skill.md +151 -0
- package/dist/core/templates/skills/wordpress/plugin-directory/skill.md +396 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/skill.md +100 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/admin-dashboard.php +47 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/admin-settings.php +60 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/assets/admin-css.css +22 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/assets/admin-js.js +15 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/plugin-main.php +169 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/readme.txt +41 -0
- package/dist/core/templates/skills/wordpress/plugin-standard/templates/uninstall.php +21 -0
- package/dist/core/templates/skills/wordpress/ux-element/skill.md +83 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Controller.php +50 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Shortcode.php +23 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Template.html +20 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/Thumbnail.svg +8 -0
- package/dist/core/templates/skills/wordpress/ux-element/templates/View.php +21 -0
- package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -151
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
- package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
- package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
- package/dist/index.js +4237 -331
- package/package.json +75 -72
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
No,Category,Issue,Platform,Description,Do,Don't,Code Example Good,Code Example Bad,Severity
|
|
2
|
+
1,Navigation,Smooth Scroll,Web,Anchor links should scroll smoothly to target section,Use scroll-behavior: smooth on html element,Jump directly without transition,html { scroll-behavior: smooth; },<a href='#section'> without CSS,High
|
|
3
|
+
2,Navigation,Sticky Navigation,Web,Fixed nav should not obscure content,Add padding-top to body equal to nav height,Let nav overlap first section content,pt-20 (if nav is h-20),No padding compensation,Medium
|
|
4
|
+
3,Navigation,Active State,All,Current page/section should be visually indicated,Highlight active nav item with color/underline,No visual feedback on current location,text-primary border-b-2,All links same style,Medium
|
|
5
|
+
4,Navigation,Back Button,Mobile,Users expect back to work predictably,Preserve navigation history properly,Break browser/app back button behavior,history.pushState(),location.replace(),High
|
|
6
|
+
5,Navigation,Deep Linking,All,URLs should reflect current state for sharing,Update URL on state/view changes,Static URLs for dynamic content,Use query params or hash,Single URL for all states,Medium
|
|
7
|
+
6,Navigation,Breadcrumbs,Web,Show user location in site hierarchy,Use for sites with 3+ levels of depth,Use for flat single-level sites,Home > Category > Product,Only on deep nested pages,Low
|
|
8
|
+
7,Animation,Excessive Motion,All,Too many animations cause distraction and motion sickness,Animate 1-2 key elements per view maximum,Animate everything that moves,Single hero animation,animate-bounce on 5+ elements,High
|
|
9
|
+
8,Animation,Duration Timing,All,Animations should feel responsive not sluggish,Use 150-300ms for micro-interactions,Use animations longer than 500ms for UI,transition-all duration-200,duration-1000,Medium
|
|
10
|
+
9,Animation,Reduced Motion,All,Respect user's motion preferences,Check prefers-reduced-motion media query,Ignore accessibility motion settings,@media (prefers-reduced-motion: reduce),No motion query check,High
|
|
11
|
+
10,Animation,Loading States,All,Show feedback during async operations,Use skeleton screens or spinners,Leave UI frozen with no feedback,animate-pulse skeleton,Blank screen while loading,High
|
|
12
|
+
11,Animation,Hover vs Tap,All,Hover effects don't work on touch devices,Use click/tap for primary interactions,Rely only on hover for important actions,onClick handler,onMouseEnter only,High
|
|
13
|
+
12,Animation,Continuous Animation,All,Infinite animations are distracting,Use for loading indicators only,Use for decorative elements,animate-spin on loader,animate-bounce on icons,Medium
|
|
14
|
+
13,Animation,Transform Performance,Web,Some CSS properties trigger expensive repaints,Use transform and opacity for animations,Animate width/height/top/left properties,transform: translateY(),top: 10px animation,Medium
|
|
15
|
+
14,Animation,Easing Functions,All,Linear motion feels robotic,Use ease-out for entering ease-in for exiting,Use linear for UI transitions,ease-out,linear,Low
|
|
16
|
+
15,Layout,Z-Index Management,Web,Stacking context conflicts cause hidden elements,Define z-index scale system (10 20 30 50),Use arbitrary large z-index values,z-10 z-20 z-50,z-[9999],High
|
|
17
|
+
16,Layout,Overflow Hidden,Web,Hidden overflow can clip important content,Test all content fits within containers,Blindly apply overflow-hidden,overflow-auto with scroll,overflow-hidden truncating content,Medium
|
|
18
|
+
17,Layout,Fixed Positioning,Web,Fixed elements can overlap or be inaccessible,Account for safe areas and other fixed elements,Stack multiple fixed elements carelessly,Fixed nav + fixed bottom with gap,Multiple overlapping fixed elements,Medium
|
|
19
|
+
18,Layout,Stacking Context,Web,New stacking contexts reset z-index,Understand what creates new stacking context,Expect z-index to work across contexts,Parent with z-index isolates children,z-index: 9999 not working,Medium
|
|
20
|
+
19,Layout,Content Jumping,Web,Layout shift when content loads is jarring,Reserve space for async content,Let images/content push layout around,aspect-ratio or fixed height,No dimensions on images,High
|
|
21
|
+
20,Layout,Viewport Units,Web,100vh can be problematic on mobile browsers,Use dvh or account for mobile browser chrome,Use 100vh for full-screen mobile layouts,min-h-dvh or min-h-screen,h-screen on mobile,Medium
|
|
22
|
+
21,Layout,Container Width,Web,Content too wide is hard to read,Limit max-width for text content (65-75ch),Let text span full viewport width,max-w-prose or max-w-3xl,Full width paragraphs,Medium
|
|
23
|
+
22,Touch,Touch Target Size,Mobile,Small buttons are hard to tap accurately,Minimum 44x44px touch targets,Tiny clickable areas,min-h-[44px] min-w-[44px],w-6 h-6 buttons,High
|
|
24
|
+
23,Touch,Touch Spacing,Mobile,Adjacent touch targets need adequate spacing,Minimum 8px gap between touch targets,Tightly packed clickable elements,gap-2 between buttons,gap-0 or gap-1,Medium
|
|
25
|
+
24,Touch,Gesture Conflicts,Mobile,Custom gestures can conflict with system,Avoid horizontal swipe on main content,Override system gestures,Vertical scroll primary,Horizontal swipe carousel only,Medium
|
|
26
|
+
25,Touch,Tap Delay,Mobile,300ms tap delay feels laggy,Use touch-action CSS or fastclick,Default mobile tap handling,touch-action: manipulation,No touch optimization,Medium
|
|
27
|
+
26,Touch,Pull to Refresh,Mobile,Accidental refresh is frustrating,Disable where not needed,Enable by default everywhere,overscroll-behavior: contain,Default overscroll,Low
|
|
28
|
+
27,Touch,Haptic Feedback,Mobile,Tactile feedback improves interaction feel,Use for confirmations and important actions,Overuse vibration feedback,navigator.vibrate(10),Vibrate on every tap,Low
|
|
29
|
+
28,Interaction,Focus States,All,Keyboard users need visible focus indicators,Use visible focus rings on interactive elements,Remove focus outline without replacement,focus:ring-2 focus:ring-blue-500,outline-none without alternative,High
|
|
30
|
+
29,Interaction,Hover States,Web,Visual feedback on interactive elements,Change cursor and add subtle visual change,No hover feedback on clickable elements,hover:bg-gray-100 cursor-pointer,No hover style,Medium
|
|
31
|
+
30,Interaction,Active States,All,Show immediate feedback on press/click,Add pressed/active state visual change,No feedback during interaction,active:scale-95,No active state,Medium
|
|
32
|
+
31,Interaction,Disabled States,All,Clearly indicate non-interactive elements,Reduce opacity and change cursor,Confuse disabled with normal state,opacity-50 cursor-not-allowed,Same style as enabled,Medium
|
|
33
|
+
32,Interaction,Loading Buttons,All,Prevent double submission during async actions,Disable button and show loading state,Allow multiple clicks during processing,disabled={loading} spinner,Button clickable while loading,High
|
|
34
|
+
33,Interaction,Error Feedback,All,Users need to know when something fails,Show clear error messages near problem,Silent failures with no feedback,Red border + error message,No indication of error,High
|
|
35
|
+
34,Interaction,Success Feedback,All,Confirm successful actions to users,Show success message or visual change,No confirmation of completed action,Toast notification or checkmark,Action completes silently,Medium
|
|
36
|
+
35,Interaction,Confirmation Dialogs,All,Prevent accidental destructive actions,Confirm before delete/irreversible actions,Delete without confirmation,Are you sure modal,Direct delete on click,High
|
|
37
|
+
36,Accessibility,Color Contrast,All,Text must be readable against background,Minimum 4.5:1 ratio for normal text,Low contrast text,#333 on white (7:1),#999 on white (2.8:1),High
|
|
38
|
+
37,Accessibility,Color Only,All,Don't convey information by color alone,Use icons/text in addition to color,Red/green only for error/success,Red text + error icon,Red border only for error,High
|
|
39
|
+
38,Accessibility,Alt Text,All,Images need text alternatives,Descriptive alt text for meaningful images,Empty or missing alt attributes,alt='Dog playing in park',alt='' for content images,High
|
|
40
|
+
39,Accessibility,Heading Hierarchy,Web,Screen readers use headings for navigation,Use sequential heading levels h1-h6,Skip heading levels or misuse for styling,h1 then h2 then h3,h1 then h4,Medium
|
|
41
|
+
40,Accessibility,ARIA Labels,All,Interactive elements need accessible names,Add aria-label for icon-only buttons,Icon buttons without labels,aria-label='Close menu',<button><Icon/></button>,High
|
|
42
|
+
41,Accessibility,Keyboard Navigation,Web,All functionality accessible via keyboard,Tab order matches visual order,Keyboard traps or illogical tab order,tabIndex for custom order,Unreachable elements,High
|
|
43
|
+
42,Accessibility,Screen Reader,All,Content should make sense when read aloud,Use semantic HTML and ARIA properly,Div soup with no semantics,<nav> <main> <article>,<div> for everything,Medium
|
|
44
|
+
43,Accessibility,Form Labels,All,Inputs must have associated labels,Use label with for attribute or wrap input,Placeholder-only inputs,<label for='email'>,placeholder='Email' only,High
|
|
45
|
+
44,Accessibility,Error Messages,All,Error messages must be announced,Use aria-live or role=alert for errors,Visual-only error indication,role='alert',Red border only,High
|
|
46
|
+
45,Accessibility,Skip Links,Web,Allow keyboard users to skip navigation,Provide skip to main content link,No skip link on nav-heavy pages,Skip to main content link,100 tabs to reach content,Medium
|
|
47
|
+
46,Performance,Image Optimization,All,Large images slow page load,Use appropriate size and format (WebP),Unoptimized full-size images,srcset with multiple sizes,4000px image for 400px display,High
|
|
48
|
+
47,Performance,Lazy Loading,All,Load content as needed,Lazy load below-fold images and content,Load everything upfront,loading='lazy',All images eager load,Medium
|
|
49
|
+
48,Performance,Code Splitting,Web,Large bundles slow initial load,Split code by route/feature,Single large bundle,dynamic import(),All code in main bundle,Medium
|
|
50
|
+
49,Performance,Caching,Web,Repeat visits should be fast,Set appropriate cache headers,No caching strategy,Cache-Control headers,Every request hits server,Medium
|
|
51
|
+
50,Performance,Font Loading,Web,Web fonts can block rendering,Use font-display swap or optional,Invisible text during font load,font-display: swap,FOIT (Flash of Invisible Text),Medium
|
|
52
|
+
51,Performance,Third Party Scripts,Web,External scripts can block rendering,Load non-critical scripts async/defer,Synchronous third-party scripts,async or defer attribute,<script src='...'> in head,Medium
|
|
53
|
+
52,Performance,Bundle Size,Web,Large JavaScript slows interaction,Monitor and minimize bundle size,Ignore bundle size growth,Bundle analyzer,No size monitoring,Medium
|
|
54
|
+
53,Performance,Render Blocking,Web,CSS/JS can block first paint,Inline critical CSS defer non-critical,Large blocking CSS files,Critical CSS inline,All CSS in head,Medium
|
|
55
|
+
54,Forms,Input Labels,All,Every input needs a visible label,Always show label above or beside input,Placeholder as only label,<label>Email</label><input>,placeholder='Email' only,High
|
|
56
|
+
55,Forms,Error Placement,All,Errors should appear near the problem,Show error below related input,Single error message at top of form,Error under each field,All errors at form top,Medium
|
|
57
|
+
56,Forms,Inline Validation,All,Validate as user types or on blur,Validate on blur for most fields,Validate only on submit,onBlur validation,Submit-only validation,Medium
|
|
58
|
+
57,Forms,Input Types,All,Use appropriate input types,Use email tel number url etc,Text input for everything,type='email',type='text' for email,Medium
|
|
59
|
+
58,Forms,Autofill Support,Web,Help browsers autofill correctly,Use autocomplete attribute properly,Block or ignore autofill,autocomplete='email',autocomplete='off' everywhere,Medium
|
|
60
|
+
59,Forms,Required Indicators,All,Mark required fields clearly,Use asterisk or (required) text,No indication of required fields,* required indicator,Guess which are required,Medium
|
|
61
|
+
60,Forms,Password Visibility,All,Let users see password while typing,Toggle to show/hide password,No visibility toggle,Show/hide password button,Password always hidden,Medium
|
|
62
|
+
61,Forms,Submit Feedback,All,Confirm form submission status,Show loading then success/error state,No feedback after submit,Loading -> Success message,Button click with no response,High
|
|
63
|
+
62,Forms,Input Affordance,All,Inputs should look interactive,Use distinct input styling,Inputs that look like plain text,Border/background on inputs,Borderless inputs,Medium
|
|
64
|
+
63,Forms,Mobile Keyboards,Mobile,Show appropriate keyboard for input type,Use inputmode attribute,Default keyboard for all inputs,inputmode='numeric',Text keyboard for numbers,Medium
|
|
65
|
+
64,Responsive,Mobile First,Web,Design for mobile then enhance for larger,Start with mobile styles then add breakpoints,Desktop-first causing mobile issues,Default mobile + md: lg: xl:,Desktop default + max-width queries,Medium
|
|
66
|
+
65,Responsive,Breakpoint Testing,Web,Test at all common screen sizes,Test at 320 375 414 768 1024 1440,Only test on your device,Multiple device testing,Single device development,Medium
|
|
67
|
+
66,Responsive,Touch Friendly,Web,Mobile layouts need touch-sized targets,Increase touch targets on mobile,Same tiny buttons on mobile,Larger buttons on mobile,Desktop-sized targets on mobile,High
|
|
68
|
+
67,Responsive,Readable Font Size,All,Text must be readable on all devices,Minimum 16px body text on mobile,Tiny text on mobile,text-base or larger,text-xs for body text,High
|
|
69
|
+
68,Responsive,Viewport Meta,Web,Set viewport for mobile devices,Use width=device-width initial-scale=1,Missing or incorrect viewport,<meta name='viewport'...>,No viewport meta tag,High
|
|
70
|
+
69,Responsive,Horizontal Scroll,Web,Avoid horizontal scrolling,Ensure content fits viewport width,Content wider than viewport,max-w-full overflow-x-hidden,Horizontal scrollbar on mobile,High
|
|
71
|
+
70,Responsive,Image Scaling,Web,Images should scale with container,Use max-width: 100% on images,Fixed width images overflow,max-w-full h-auto,width='800' fixed,Medium
|
|
72
|
+
71,Responsive,Table Handling,Web,Tables can overflow on mobile,Use horizontal scroll or card layout,Wide tables breaking layout,overflow-x-auto wrapper,Table overflows viewport,Medium
|
|
73
|
+
72,Typography,Line Height,All,Adequate line height improves readability,Use 1.5-1.75 for body text,Cramped or excessive line height,leading-relaxed (1.625),leading-none (1),Medium
|
|
74
|
+
73,Typography,Line Length,Web,Long lines are hard to read,Limit to 65-75 characters per line,Full-width text on large screens,max-w-prose,Full viewport width text,Medium
|
|
75
|
+
74,Typography,Font Size Scale,All,Consistent type hierarchy aids scanning,Use consistent modular scale,Random font sizes,Type scale (12 14 16 18 24 32),Arbitrary sizes,Medium
|
|
76
|
+
75,Typography,Font Loading,Web,Fonts should load without layout shift,Reserve space with fallback font,Layout shift when fonts load,font-display: swap + similar fallback,No fallback font,Medium
|
|
77
|
+
76,Typography,Contrast Readability,All,Body text needs good contrast,Use darker text on light backgrounds,Gray text on gray background,text-gray-900 on white,text-gray-400 on gray-100,High
|
|
78
|
+
77,Typography,Heading Clarity,All,Headings should stand out from body,Clear size/weight difference,Headings similar to body text,Bold + larger size,Same size as body,Medium
|
|
79
|
+
78,Feedback,Loading Indicators,All,Show system status during waits,Show spinner/skeleton for operations > 300ms,No feedback during loading,Skeleton or spinner,Frozen UI,High
|
|
80
|
+
79,Feedback,Empty States,All,Guide users when no content exists,Show helpful message and action,Blank empty screens,No items yet. Create one!,Empty white space,Medium
|
|
81
|
+
80,Feedback,Error Recovery,All,Help users recover from errors,Provide clear next steps,Error without recovery path,Try again button + help link,Error message only,Medium
|
|
82
|
+
81,Feedback,Progress Indicators,All,Show progress for multi-step processes,Step indicators or progress bar,No indication of progress,Step 2 of 4 indicator,No step information,Medium
|
|
83
|
+
82,Feedback,Toast Notifications,All,Transient messages for non-critical info,Auto-dismiss after 3-5 seconds,Toasts that never disappear,Auto-dismiss toast,Persistent toast,Medium
|
|
84
|
+
83,Feedback,Confirmation Messages,All,Confirm successful actions,Brief success message,Silent success,Saved successfully toast,No confirmation,Medium
|
|
85
|
+
84,Content,Truncation,All,Handle long content gracefully,Truncate with ellipsis and expand option,Overflow or broken layout,line-clamp-2 with expand,Overflow or cut off,Medium
|
|
86
|
+
85,Content,Date Formatting,All,Use locale-appropriate date formats,Use relative or locale-aware dates,Ambiguous date formats,2 hours ago or locale format,01/02/03,Low
|
|
87
|
+
86,Content,Number Formatting,All,Format large numbers for readability,Use thousand separators or abbreviations,Long unformatted numbers,"1.2K or 1,234",1234567,Low
|
|
88
|
+
87,Content,Placeholder Content,All,Show realistic placeholders during dev,Use realistic sample data,Lorem ipsum everywhere,Real sample content,Lorem ipsum,Low
|
|
89
|
+
88,Onboarding,User Freedom,All,Users should be able to skip tutorials,Provide Skip and Back buttons,Force linear unskippable tour,Skip Tutorial button,Locked overlay until finished,Medium
|
|
90
|
+
89,Search,Autocomplete,Web,Help users find results faster,Show predictions as user types,Require full type and enter,Debounced fetch + dropdown,No suggestions,Medium
|
|
91
|
+
90,Search,No Results,Web,Dead ends frustrate users,Show 'No results' with suggestions,Blank screen or '0 results',Try searching for X instead,No results found.,Medium
|
|
92
|
+
91,Data Entry,Bulk Actions,Web,Editing one by one is tedious,Allow multi-select and bulk edit,Single row actions only,Checkbox column + Action bar,Repeated actions per row,Low
|
|
93
|
+
92,AI Interaction,Disclaimer,All,Users need to know they talk to AI,Clearly label AI generated content,Present AI as human,AI Assistant label,Fake human name without label,High
|
|
94
|
+
93,AI Interaction,Streaming,All,Waiting for full text is slow,Stream text response token by token,Show loading spinner for 10s+,Typewriter effect,Spinner until 100% complete,Medium
|
|
95
|
+
94,Spatial UI,Gaze Hover,VisionOS,Elements should respond to eye tracking before pinch,Scale/highlight element on look,Static element until pinch,hoverEffect(),onTap only,High
|
|
96
|
+
95,Spatial UI,Depth Layering,VisionOS,UI needs Z-depth to separate content from environment,Use glass material and z-offset,Flat opaque panels blocking view,.glassBackgroundEffect(),bg-white,Medium
|
|
97
|
+
96,Sustainability,Auto-Play Video,Web,Video consumes massive data and energy,Click-to-play or pause when off-screen,Auto-play high-res video loops,playsInline muted preload='none',autoplay loop,Medium
|
|
98
|
+
97,Sustainability,Asset Weight,Web,Heavy 3D/Image assets increase carbon footprint,Compress and lazy load 3D models,Load 50MB textures,Draco compression,Raw .obj files,Medium
|
|
99
|
+
98,AI Interaction,Feedback Loop,All,AI needs user feedback to improve,Thumps up/down or 'Regenerate',Static output only,Feedback component,Read-only text,Low
|
|
100
|
+
99,Accessibility,Motion Sensitivity,All,Parallax/Scroll-jacking causes nausea,Respect prefers-reduced-motion,Force scroll effects,@media (prefers-reduced-motion),ScrollTrigger.create(),High
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
# Giải Thích Cách Hoạt Động Của UI/UX Builder Search Engine
|
|
2
|
+
|
|
3
|
+
## Tổng Quan
|
|
4
|
+
|
|
5
|
+
UI/UX Builder là một search engine sử dụng thuật toán **BM25** để tìm kiếm thông tin thiết kế từ các database CSV. Hệ thống gồm 2 file chính:
|
|
6
|
+
|
|
7
|
+
1. **`core.py`** - Core engine với BM25 algorithm và các hàm search
|
|
8
|
+
2. **`search.py`** - CLI interface để sử dụng từ command line
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 📁 Cấu Trúc File
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
scripts/
|
|
16
|
+
├── core.py # Core engine (BM25, search functions)
|
|
17
|
+
└── search.py # CLI interface
|
|
18
|
+
|
|
19
|
+
data/
|
|
20
|
+
├── styles.csv # 57 UI styles
|
|
21
|
+
├── colors.csv # 95 color palettes
|
|
22
|
+
├── typography.csv # 56 font pairings
|
|
23
|
+
├── pages.csv # 9+ page types
|
|
24
|
+
├── products.csv # Product recommendations
|
|
25
|
+
├── landing.csv # Landing page patterns
|
|
26
|
+
├── charts.csv # Chart types
|
|
27
|
+
├── ux-guidelines.csv # 98 UX guidelines
|
|
28
|
+
└── stacks/ # 8 tech stack guidelines
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 🔍 Cách Hoạt Động Chi Tiết
|
|
34
|
+
|
|
35
|
+
### 1. File `core.py` - Core Engine
|
|
36
|
+
|
|
37
|
+
#### A. Configuration (Dòng 13-82)
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
CSV_CONFIG = {
|
|
41
|
+
"style": {
|
|
42
|
+
"file": "styles.csv",
|
|
43
|
+
"search_cols": ["Style Category", "Keywords", ...], # Cột để search
|
|
44
|
+
"output_cols": ["Style Category", "Type", ...] # Cột để trả về
|
|
45
|
+
},
|
|
46
|
+
...
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Chức năng:**
|
|
51
|
+
- Định nghĩa các domain (style, color, typography, pages, etc.)
|
|
52
|
+
- Mỗi domain có:
|
|
53
|
+
- `file`: Tên file CSV
|
|
54
|
+
- `search_cols`: Các cột dùng để tìm kiếm
|
|
55
|
+
- `output_cols`: Các cột trả về trong kết quả
|
|
56
|
+
|
|
57
|
+
**Ví dụ:** Khi search "minimalism" trong domain "style":
|
|
58
|
+
- Tìm trong các cột: "Style Category", "Keywords", "Best For", "Type"
|
|
59
|
+
- Trả về: "Style Category", "Type", "Keywords", "Primary Colors", etc.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
#### B. BM25 Class (Dòng 86-145)
|
|
64
|
+
|
|
65
|
+
**BM25** là thuật toán ranking phổ biến trong information retrieval, tốt hơn TF-IDF.
|
|
66
|
+
|
|
67
|
+
**Các phương thức:**
|
|
68
|
+
|
|
69
|
+
1. **`__init__(k1=1.5, b=0.75)`** (Dòng 89-97)
|
|
70
|
+
- `k1`: Điều chỉnh tần suất từ (term frequency)
|
|
71
|
+
- `b`: Điều chỉnh độ dài document
|
|
72
|
+
- Khởi tạo các biến: corpus, doc_lengths, idf, doc_freqs
|
|
73
|
+
|
|
74
|
+
2. **`tokenize(text)`** (Dòng 99-102)
|
|
75
|
+
```python
|
|
76
|
+
# Input: "Minimalism, Glassmorphism & Dark Mode"
|
|
77
|
+
# Output: ["minimalism", "glassmorphism", "dark", "mode"]
|
|
78
|
+
```
|
|
79
|
+
- Chuyển text thành lowercase
|
|
80
|
+
- Loại bỏ punctuation
|
|
81
|
+
- Chỉ giữ từ có > 2 ký tự
|
|
82
|
+
|
|
83
|
+
3. **`fit(documents)`** (Dòng 104-121)
|
|
84
|
+
- **Bước 1:** Tokenize tất cả documents
|
|
85
|
+
- **Bước 2:** Tính độ dài mỗi document và độ dài trung bình
|
|
86
|
+
- **Bước 3:** Tính document frequency (số documents chứa từ)
|
|
87
|
+
- **Bước 4:** Tính IDF (Inverse Document Frequency):
|
|
88
|
+
```python
|
|
89
|
+
idf[word] = log((N - freq + 0.5) / (freq + 0.5) + 1)
|
|
90
|
+
```
|
|
91
|
+
- Từ hiếm → IDF cao
|
|
92
|
+
- Từ phổ biến → IDF thấp
|
|
93
|
+
|
|
94
|
+
4. **`score(query)`** (Dòng 123-145)
|
|
95
|
+
- **Input:** Query string (ví dụ: "minimal dark mode")
|
|
96
|
+
- **Process:**
|
|
97
|
+
1. Tokenize query
|
|
98
|
+
2. Với mỗi document:
|
|
99
|
+
- Tính term frequency (TF) cho mỗi từ trong query
|
|
100
|
+
- Áp dụng công thức BM25:
|
|
101
|
+
```
|
|
102
|
+
score = Σ IDF(word) × (TF × (k1 + 1)) / (TF + k1 × (1 - b + b × doc_len/avgdl))
|
|
103
|
+
```
|
|
104
|
+
3. Trả về danh sách (index, score) sắp xếp giảm dần
|
|
105
|
+
|
|
106
|
+
**Ví dụ tính toán:**
|
|
107
|
+
```
|
|
108
|
+
Query: "minimal dark"
|
|
109
|
+
Document 1: "Minimalism Dark Mode UI" → score: 2.5
|
|
110
|
+
Document 2: "Glassmorphism Light UI" → score: 0.3
|
|
111
|
+
→ Document 1 được xếp hạng cao hơn
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
#### C. Search Functions (Dòng 148-242)
|
|
117
|
+
|
|
118
|
+
1. **`_load_csv(filepath)`** (Dòng 149-152)
|
|
119
|
+
- Đọc CSV file và trả về list of dictionaries
|
|
120
|
+
- Mỗi row là một dict với keys là column names
|
|
121
|
+
|
|
122
|
+
2. **`_search_csv(...)`** (Dòng 155-177)
|
|
123
|
+
- **Input:**
|
|
124
|
+
- `filepath`: Đường dẫn file CSV
|
|
125
|
+
- `search_cols`: Cột để search
|
|
126
|
+
- `output_cols`: Cột để trả về
|
|
127
|
+
- `query`: Từ khóa tìm kiếm
|
|
128
|
+
- `max_results`: Số kết quả tối đa (mặc định 3)
|
|
129
|
+
|
|
130
|
+
- **Process:**
|
|
131
|
+
1. Load CSV data
|
|
132
|
+
2. Tạo documents từ search columns:
|
|
133
|
+
```python
|
|
134
|
+
# Ví dụ: Nếu search_cols = ["Keywords", "Best For"]
|
|
135
|
+
# Document = "minimalism dark mode" + " " + "modern apps"
|
|
136
|
+
```
|
|
137
|
+
3. Khởi tạo BM25 và fit documents
|
|
138
|
+
4. Score query và lấy top results
|
|
139
|
+
5. Trả về list of dicts với output_cols
|
|
140
|
+
|
|
141
|
+
3. **`detect_domain(query)`** (Dòng 180-198)
|
|
142
|
+
- **Chức năng:** Tự động phát hiện domain phù hợp từ query
|
|
143
|
+
- **Cách hoạt động:**
|
|
144
|
+
```python
|
|
145
|
+
domain_keywords = {
|
|
146
|
+
"color": ["color", "palette", "hex", ...],
|
|
147
|
+
"pages": ["page", "home", "about", ...],
|
|
148
|
+
...
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
- Đếm số từ khóa match trong query
|
|
152
|
+
- Trả về domain có điểm cao nhất
|
|
153
|
+
- **Ví dụ:**
|
|
154
|
+
- Query: "home page design" → domain: "pages"
|
|
155
|
+
- Query: "blue color palette" → domain: "color"
|
|
156
|
+
- Query: "minimalism style" → domain: "style"
|
|
157
|
+
|
|
158
|
+
4. **`search(query, domain=None, max_results=3)`** (Dòng 201-220)
|
|
159
|
+
- **Main search function**
|
|
160
|
+
- **Process:**
|
|
161
|
+
1. Nếu không có domain → tự động detect
|
|
162
|
+
2. Lấy config từ CSV_CONFIG
|
|
163
|
+
3. Tạo filepath: `data/styles.csv`
|
|
164
|
+
4. Gọi `_search_csv()` để tìm kiếm
|
|
165
|
+
5. Trả về dict:
|
|
166
|
+
```python
|
|
167
|
+
{
|
|
168
|
+
"domain": "style",
|
|
169
|
+
"query": "minimalism",
|
|
170
|
+
"file": "styles.csv",
|
|
171
|
+
"count": 3,
|
|
172
|
+
"results": [...]
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
5. **`search_stack(query, stack, max_results=3)`** (Dòng 223-242)
|
|
177
|
+
- Tương tự `search()` nhưng tìm trong thư mục `stacks/`
|
|
178
|
+
- Hỗ trợ 8 stacks: html-tailwind, react, nextjs, vue, svelte, swiftui, react-native, flutter
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
### 2. File `search.py` - CLI Interface
|
|
183
|
+
|
|
184
|
+
#### A. Import và Setup (Dòng 11-12)
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
- Import các hàm và config từ `core.py`
|
|
191
|
+
|
|
192
|
+
#### B. `format_output(result)` (Dòng 15-38)
|
|
193
|
+
|
|
194
|
+
**Chức năng:** Format kết quả thành markdown để AI dễ đọc
|
|
195
|
+
|
|
196
|
+
**Process:**
|
|
197
|
+
1. Kiểm tra có error không
|
|
198
|
+
2. Tạo header với domain/stack và query
|
|
199
|
+
3. Với mỗi result:
|
|
200
|
+
- Tạo section "Result 1", "Result 2", ...
|
|
201
|
+
- Format key-value pairs
|
|
202
|
+
- Giới hạn value length 300 ký tự
|
|
203
|
+
|
|
204
|
+
**Output format:**
|
|
205
|
+
```markdown
|
|
206
|
+
## UI/UX Builder Search Results
|
|
207
|
+
**Domain:** style | **Query:** minimalism
|
|
208
|
+
**Source:** styles.csv | **Found:** 3 results
|
|
209
|
+
|
|
210
|
+
### Result 1
|
|
211
|
+
- **Style Category:** Minimalism
|
|
212
|
+
- **Type:** General
|
|
213
|
+
- **Keywords:** minimal, clean, simple
|
|
214
|
+
...
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
#### C. Main CLI (Dòng 41-61)
|
|
218
|
+
|
|
219
|
+
**Argument Parser:**
|
|
220
|
+
```python
|
|
221
|
+
python search.py "minimalism" --domain style --max-results 5
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Arguments:**
|
|
225
|
+
- `query` (required): Từ khóa tìm kiếm
|
|
226
|
+
- `--domain` / `-d`: Chỉ định domain (style, color, pages, etc.)
|
|
227
|
+
- `--stack` / `-s`: Tìm trong stack guidelines
|
|
228
|
+
- `--max-results` / `-n`: Số kết quả tối đa (default: 3)
|
|
229
|
+
- `--json`: Output dạng JSON thay vì markdown
|
|
230
|
+
|
|
231
|
+
**Logic:**
|
|
232
|
+
1. Parse arguments
|
|
233
|
+
2. Nếu có `--stack` → gọi `search_stack()`
|
|
234
|
+
3. Nếu không → gọi `search()`
|
|
235
|
+
4. Nếu có `--json` → output JSON
|
|
236
|
+
5. Nếu không → format markdown và print
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 🔄 Flow Hoàn Chỉnh
|
|
241
|
+
|
|
242
|
+
### Ví dụ: Search "minimal dark mode"
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
python3 scripts/search.py "minimal dark mode" --domain style
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Step 1:** `search.py` parse arguments
|
|
249
|
+
- `query = "minimal dark mode"`
|
|
250
|
+
- `domain = "style"`
|
|
251
|
+
|
|
252
|
+
**Step 2:** Gọi `search("minimal dark mode", "style", 3)`
|
|
253
|
+
|
|
254
|
+
**Step 3:** `core.py` xử lý:
|
|
255
|
+
1. Lấy config: `CSV_CONFIG["style"]`
|
|
256
|
+
2. Filepath: `data/styles.csv`
|
|
257
|
+
3. Load CSV → list of dicts
|
|
258
|
+
4. Tạo documents từ search_cols:
|
|
259
|
+
```
|
|
260
|
+
Doc 1: "Minimalism General minimal clean simple Modern apps"
|
|
261
|
+
Doc 2: "Dark Mode General dark night oled Modern apps"
|
|
262
|
+
...
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
**Step 4:** BM25 processing:
|
|
266
|
+
1. Tokenize query: `["minimal", "dark", "mode"]`
|
|
267
|
+
2. Tokenize documents
|
|
268
|
+
3. Fit BM25: tính IDF cho tất cả từ
|
|
269
|
+
4. Score mỗi document:
|
|
270
|
+
- Document có "minimal", "dark", "mode" → score cao
|
|
271
|
+
- Document chỉ có 1-2 từ → score thấp
|
|
272
|
+
|
|
273
|
+
**Step 5:** Lấy top 3 results với score > 0
|
|
274
|
+
|
|
275
|
+
**Step 6:** Format output:
|
|
276
|
+
```markdown
|
|
277
|
+
## UI/UX Builder Search Results
|
|
278
|
+
**Domain:** style | **Query:** minimal dark mode
|
|
279
|
+
**Source:** styles.csv | **Found:** 3 results
|
|
280
|
+
|
|
281
|
+
### Result 1
|
|
282
|
+
- **Style Category:** Minimalism
|
|
283
|
+
- **Type:** General
|
|
284
|
+
...
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Step 7:** Print kết quả
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 🎯 Điểm Mạnh Của BM25
|
|
292
|
+
|
|
293
|
+
1. **Tốt hơn TF-IDF:**
|
|
294
|
+
- Xử lý tốt hơn với documents có độ dài khác nhau
|
|
295
|
+
- Công thức BM25 có saturation (từ xuất hiện nhiều lần không tăng điểm vô hạn)
|
|
296
|
+
|
|
297
|
+
2. **Không cần training:**
|
|
298
|
+
- Không cần machine learning model
|
|
299
|
+
- Chỉ cần tính toán thống kê
|
|
300
|
+
|
|
301
|
+
3. **Nhanh:**
|
|
302
|
+
- O(n) với n là số documents
|
|
303
|
+
- Phù hợp với dataset nhỏ-trung bình (< 10,000 records)
|
|
304
|
+
|
|
305
|
+
4. **Dễ hiểu:**
|
|
306
|
+
- Logic rõ ràng, dễ debug
|
|
307
|
+
- Có thể giải thích tại sao document được xếp hạng cao
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## 📊 So Sánh Với Các Phương Pháp Khác
|
|
312
|
+
|
|
313
|
+
| Phương Pháp | Ưu Điểm | Nhược Điểm |
|
|
314
|
+
|------------|---------|------------|
|
|
315
|
+
| **BM25** (hiện tại) | Nhanh, không cần training, kết quả tốt | Không học được semantic meaning |
|
|
316
|
+
| **TF-IDF** | Đơn giản | Kém hơn BM25 với documents dài |
|
|
317
|
+
| **Vector Search (embeddings)** | Hiểu semantic, tìm được synonyms | Cần model, chậm hơn, phức tạp |
|
|
318
|
+
| **Keyword Match** | Rất nhanh | Không có ranking, kết quả kém |
|
|
319
|
+
|
|
320
|
+
**Tại sao chọn BM25:**
|
|
321
|
+
- Dataset nhỏ (hàng trăm records) → BM25 đủ tốt
|
|
322
|
+
- Không cần hiểu semantic (từ khóa rõ ràng)
|
|
323
|
+
- Cần tốc độ và đơn giản
|
|
324
|
+
- Kết quả đủ tốt cho use case này
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## 🔧 Cách Mở Rộng
|
|
329
|
+
|
|
330
|
+
### Thêm Domain Mới:
|
|
331
|
+
|
|
332
|
+
1. Thêm vào `CSV_CONFIG`:
|
|
333
|
+
```python
|
|
334
|
+
"new_domain": {
|
|
335
|
+
"file": "new_domain.csv",
|
|
336
|
+
"search_cols": ["Column1", "Column2"],
|
|
337
|
+
"output_cols": ["Column1", "Column2", "Column3"]
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
2. Thêm keywords vào `detect_domain()`:
|
|
342
|
+
```python
|
|
343
|
+
"new_domain": ["keyword1", "keyword2", ...]
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
3. Tạo file CSV trong `data/`
|
|
347
|
+
|
|
348
|
+
### Thêm Stack Mới:
|
|
349
|
+
|
|
350
|
+
1. Thêm vào `STACK_CONFIG`:
|
|
351
|
+
```python
|
|
352
|
+
"new_stack": {"file": "stacks/new_stack.csv"}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
2. Tạo file CSV trong `data/stacks/`
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## 🐛 Debug Tips
|
|
360
|
+
|
|
361
|
+
1. **Không có kết quả:**
|
|
362
|
+
- Kiểm tra file CSV có tồn tại không
|
|
363
|
+
- Kiểm tra search_cols có đúng tên cột không
|
|
364
|
+
- Thử query đơn giản hơn
|
|
365
|
+
|
|
366
|
+
2. **Kết quả không liên quan:**
|
|
367
|
+
- Kiểm tra domain có đúng không
|
|
368
|
+
- Thử chỉ định domain thay vì auto-detect
|
|
369
|
+
- Kiểm tra keywords trong CSV có match không
|
|
370
|
+
|
|
371
|
+
3. **Performance chậm:**
|
|
372
|
+
- Dataset quá lớn → cân nhắc vector search
|
|
373
|
+
- Hoặc cache BM25 index
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## 📝 Tóm Tắt
|
|
378
|
+
|
|
379
|
+
**UI/UX Builder Search Engine hoạt động như sau:**
|
|
380
|
+
|
|
381
|
+
1. **Input:** Query string + domain (optional)
|
|
382
|
+
2. **Process:**
|
|
383
|
+
- Auto-detect domain nếu không chỉ định
|
|
384
|
+
- Load CSV file tương ứng
|
|
385
|
+
- Tạo documents từ search columns
|
|
386
|
+
- Áp dụng BM25 algorithm để rank
|
|
387
|
+
- Lấy top N results
|
|
388
|
+
3. **Output:** Formatted markdown hoặc JSON với kết quả tìm kiếm
|
|
389
|
+
|
|
390
|
+
**Ưu điểm:**
|
|
391
|
+
- ✅ Nhanh và hiệu quả
|
|
392
|
+
- ✅ Không cần dependencies phức tạp
|
|
393
|
+
- ✅ Dễ mở rộng và maintain
|
|
394
|
+
- ✅ Kết quả tốt cho dataset nhỏ-trung bình
|