devskill 2.0.2
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/README.md +123 -0
- package/README.vn.md +104 -0
- package/SKILL_GUIDE.vn.md +252 -0
- package/bin/devskill.js +11 -0
- package/meta.ts +123 -0
- package/package.json +21 -0
- package/publish.sh +50 -0
- package/scripts/cli.ts +556 -0
- package/skills/builderx_api-contexts/SKILL.md +63 -0
- package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
- package/skills/builderx_api-controllers/SKILL.md +49 -0
- package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
- package/skills/builderx_api-schemas/SKILL.md +76 -0
- package/skills/builderx_api-schemas/references/core-schema.md +78 -0
- package/skills/builderx_spa-api/SKILL.md +67 -0
- package/skills/builderx_spa-api/references/base-api.md +97 -0
- package/skills/builderx_spa-api/references/fetch.md +70 -0
- package/skills/builderx_spa-design/SKILL.md +82 -0
- package/skills/builderx_spa-design/references/core-text-design.md +64 -0
- package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
- package/skills/builderx_spa-design/references/features-forms.md +91 -0
- package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
- package/skills/builderx_spa-permission/SKILL.md +38 -0
- package/skills/builderx_spa-permission/references/has-permission.md +34 -0
- package/skills/composition-patterns/AGENTS.md +946 -0
- package/skills/composition-patterns/README.md +60 -0
- package/skills/composition-patterns/SKILL.md +89 -0
- package/skills/composition-patterns/SYNC.md +5 -0
- package/skills/composition-patterns/metadata.json +11 -0
- package/skills/composition-patterns/rules/_sections.md +29 -0
- package/skills/composition-patterns/rules/_template.md +24 -0
- package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/deploy-to-vercel/Archive.zip +0 -0
- package/skills/deploy-to-vercel/SKILL.md +296 -0
- package/skills/deploy-to-vercel/SYNC.md +5 -0
- package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
- package/skills/pinia/SKILL.md +105 -0
- package/skills/pinia/references/api-in-composables.md +139 -0
- package/skills/pinia/references/setup-stores.md +105 -0
- package/skills/pinia/references/using-in-components.md +91 -0
- package/skills/pinia-options/SKILL.md +72 -0
- package/skills/pinia-options/references/core-option-stores.md +149 -0
- package/skills/pinia-options/references/using-in-options-api.md +105 -0
- package/skills/react-best-practices/AGENTS.md +3373 -0
- package/skills/react-best-practices/README.md +123 -0
- package/skills/react-best-practices/SKILL.md +143 -0
- package/skills/react-best-practices/SYNC.md +5 -0
- package/skills/react-best-practices/metadata.json +15 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/react-native-skills/AGENTS.md +2897 -0
- package/skills/react-native-skills/README.md +165 -0
- package/skills/react-native-skills/SKILL.md +121 -0
- package/skills/react-native-skills/SYNC.md +5 -0
- package/skills/react-native-skills/metadata.json +16 -0
- package/skills/react-native-skills/rules/_sections.md +86 -0
- package/skills/react-native-skills/rules/_template.md +28 -0
- package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
- package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
- package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
- package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
- package/skills/react-native-skills/rules/list-performance-images.md +53 -0
- package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
- package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
- package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
- package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
- package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
- package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
- package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
- package/skills/react-native-skills/rules/ui-menus.md +174 -0
- package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
- package/skills/react-native-skills/rules/ui-pressable.md +61 -0
- package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/skills/react-native-skills/rules/ui-styling.md +87 -0
- package/skills/slidev/LICENSE.md +21 -0
- package/skills/slidev/README.md +61 -0
- package/skills/slidev/SKILL.md +189 -0
- package/skills/slidev/SYNC.md +5 -0
- package/skills/slidev/references/animation-click-marker.md +37 -0
- package/skills/slidev/references/animation-drawing.md +68 -0
- package/skills/slidev/references/animation-rough-marker.md +53 -0
- package/skills/slidev/references/api-slide-hooks.md +37 -0
- package/skills/slidev/references/build-og-image.md +36 -0
- package/skills/slidev/references/build-pdf.md +40 -0
- package/skills/slidev/references/build-remote-assets.md +34 -0
- package/skills/slidev/references/build-seo-meta.md +43 -0
- package/skills/slidev/references/code-groups.md +64 -0
- package/skills/slidev/references/code-import-snippet.md +55 -0
- package/skills/slidev/references/code-line-highlighting.md +50 -0
- package/skills/slidev/references/code-line-numbers.md +46 -0
- package/skills/slidev/references/code-magic-move.md +57 -0
- package/skills/slidev/references/code-max-height.md +37 -0
- package/skills/slidev/references/code-twoslash.md +42 -0
- package/skills/slidev/references/core-animations.md +196 -0
- package/skills/slidev/references/core-cli.md +140 -0
- package/skills/slidev/references/core-components.md +197 -0
- package/skills/slidev/references/core-exporting.md +148 -0
- package/skills/slidev/references/core-frontmatter.md +195 -0
- package/skills/slidev/references/core-global-context.md +155 -0
- package/skills/slidev/references/core-headmatter.md +188 -0
- package/skills/slidev/references/core-hosting.md +152 -0
- package/skills/slidev/references/core-layouts.md +286 -0
- package/skills/slidev/references/core-syntax.md +155 -0
- package/skills/slidev/references/diagram-latex.md +55 -0
- package/skills/slidev/references/diagram-mermaid.md +44 -0
- package/skills/slidev/references/diagram-plantuml.md +45 -0
- package/skills/slidev/references/editor-monaco-run.md +44 -0
- package/skills/slidev/references/editor-monaco-write.md +24 -0
- package/skills/slidev/references/editor-monaco.md +50 -0
- package/skills/slidev/references/editor-prettier.md +40 -0
- package/skills/slidev/references/editor-side.md +23 -0
- package/skills/slidev/references/editor-vscode.md +55 -0
- package/skills/slidev/references/layout-canvas-size.md +25 -0
- package/skills/slidev/references/layout-draggable.md +57 -0
- package/skills/slidev/references/layout-global-layers.md +50 -0
- package/skills/slidev/references/layout-slots.md +75 -0
- package/skills/slidev/references/layout-transform.md +33 -0
- package/skills/slidev/references/layout-zoom.md +39 -0
- package/skills/slidev/references/presenter-notes-ruby.md +35 -0
- package/skills/slidev/references/presenter-recording.md +30 -0
- package/skills/slidev/references/presenter-remote.md +40 -0
- package/skills/slidev/references/presenter-timer.md +34 -0
- package/skills/slidev/references/style-direction.md +34 -0
- package/skills/slidev/references/style-icons.md +46 -0
- package/skills/slidev/references/style-scoped.md +50 -0
- package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
- package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/syntax-mdc.md +51 -0
- package/skills/slidev/references/tool-eject-theme.md +27 -0
- package/skills/tsdown/LICENSE.md +22 -0
- package/skills/tsdown/README.md +77 -0
- package/skills/tsdown/SKILL.md +407 -0
- package/skills/tsdown/SYNC.md +5 -0
- package/skills/tsdown/references/README.md +139 -0
- package/skills/tsdown/references/advanced-benchmark.md +8 -0
- package/skills/tsdown/references/advanced-ci.md +89 -0
- package/skills/tsdown/references/advanced-hooks.md +363 -0
- package/skills/tsdown/references/advanced-plugins.md +381 -0
- package/skills/tsdown/references/advanced-programmatic.md +378 -0
- package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
- package/skills/tsdown/references/guide-getting-started.md +178 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -0
- package/skills/tsdown/references/option-cjs-default.md +98 -0
- package/skills/tsdown/references/option-cleaning.md +275 -0
- package/skills/tsdown/references/option-config-file.md +281 -0
- package/skills/tsdown/references/option-css.md +301 -0
- package/skills/tsdown/references/option-dependencies.md +385 -0
- package/skills/tsdown/references/option-dts.md +251 -0
- package/skills/tsdown/references/option-entry.md +211 -0
- package/skills/tsdown/references/option-exe.md +120 -0
- package/skills/tsdown/references/option-lint.md +127 -0
- package/skills/tsdown/references/option-log-level.md +91 -0
- package/skills/tsdown/references/option-minification.md +177 -0
- package/skills/tsdown/references/option-output-directory.md +270 -0
- package/skills/tsdown/references/option-output-format.md +181 -0
- package/skills/tsdown/references/option-package-exports.md +320 -0
- package/skills/tsdown/references/option-platform.md +256 -0
- package/skills/tsdown/references/option-root.md +88 -0
- package/skills/tsdown/references/option-shims.md +299 -0
- package/skills/tsdown/references/option-sourcemap.md +301 -0
- package/skills/tsdown/references/option-target.md +222 -0
- package/skills/tsdown/references/option-tree-shaking.md +335 -0
- package/skills/tsdown/references/option-unbundle.md +310 -0
- package/skills/tsdown/references/option-watch-mode.md +261 -0
- package/skills/tsdown/references/recipe-react.md +338 -0
- package/skills/tsdown/references/recipe-solid.md +46 -0
- package/skills/tsdown/references/recipe-svelte.md +54 -0
- package/skills/tsdown/references/recipe-vue.md +387 -0
- package/skills/tsdown/references/recipe-wasm.md +125 -0
- package/skills/tsdown/references/reference-cli.md +472 -0
- package/skills/turborepo/LICENSE.md +7 -0
- package/skills/turborepo/SKILL.md +951 -0
- package/skills/turborepo/SYNC.md +5 -0
- package/skills/turborepo/command/turborepo.md +70 -0
- package/skills/turborepo/references/best-practices/RULE.md +241 -0
- package/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/skills/turborepo/references/best-practices/packages.md +335 -0
- package/skills/turborepo/references/best-practices/structure.md +297 -0
- package/skills/turborepo/references/boundaries/RULE.md +126 -0
- package/skills/turborepo/references/caching/RULE.md +153 -0
- package/skills/turborepo/references/caching/gotchas.md +190 -0
- package/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/skills/turborepo/references/ci/RULE.md +79 -0
- package/skills/turborepo/references/ci/github-actions.md +162 -0
- package/skills/turborepo/references/ci/patterns.md +145 -0
- package/skills/turborepo/references/ci/vercel.md +103 -0
- package/skills/turborepo/references/cli/RULE.md +100 -0
- package/skills/turborepo/references/cli/commands.md +297 -0
- package/skills/turborepo/references/configuration/RULE.md +235 -0
- package/skills/turborepo/references/configuration/global-options.md +239 -0
- package/skills/turborepo/references/configuration/gotchas.md +368 -0
- package/skills/turborepo/references/configuration/tasks.md +325 -0
- package/skills/turborepo/references/environment/RULE.md +123 -0
- package/skills/turborepo/references/environment/gotchas.md +175 -0
- package/skills/turborepo/references/environment/modes.md +101 -0
- package/skills/turborepo/references/filtering/RULE.md +148 -0
- package/skills/turborepo/references/filtering/patterns.md +152 -0
- package/skills/turborepo/references/watch/RULE.md +99 -0
- package/skills/vercel-cli-with-tokens/SKILL.md +328 -0
- package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
- package/skills/vue/SKILL.md +90 -0
- package/skills/vue/references/composables.md +54 -0
- package/skills/vue/references/lifecycle.md +31 -0
- package/skills/vue/references/props-emits.md +62 -0
- package/skills/vue/references/provide-inject.md +47 -0
- package/skills/vue/references/state.md +65 -0
- package/skills/vue-antdv-tailwind/SKILL.md +33 -0
- package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -0
- package/skills/vue-best-practices/LICENSE.md +21 -0
- package/skills/vue-best-practices/SKILL.md +154 -0
- package/skills/vue-best-practices/SYNC.md +5 -0
- package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
- package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
- package/skills/vue-best-practices/references/component-async.md +97 -0
- package/skills/vue-best-practices/references/component-data-flow.md +307 -0
- package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
- package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
- package/skills/vue-best-practices/references/component-slots.md +216 -0
- package/skills/vue-best-practices/references/component-suspense.md +228 -0
- package/skills/vue-best-practices/references/component-teleport.md +108 -0
- package/skills/vue-best-practices/references/component-transition-group.md +128 -0
- package/skills/vue-best-practices/references/component-transition.md +125 -0
- package/skills/vue-best-practices/references/composables.md +290 -0
- package/skills/vue-best-practices/references/directives.md +162 -0
- package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
- package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
- package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
- package/skills/vue-best-practices/references/plugins.md +166 -0
- package/skills/vue-best-practices/references/reactivity.md +344 -0
- package/skills/vue-best-practices/references/render-functions.md +201 -0
- package/skills/vue-best-practices/references/sfc.md +310 -0
- package/skills/vue-best-practices/references/state-management.md +135 -0
- package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
- package/skills/vue-jsx-best-practices/LICENSE.md +21 -0
- package/skills/vue-jsx-best-practices/SKILL.md +12 -0
- package/skills/vue-jsx-best-practices/SYNC.md +5 -0
- package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
- package/skills/vue-options/SKILL.md +98 -0
- package/skills/vue-options/references/lifecycle.md +107 -0
- package/skills/vue-options/references/mixins.md +96 -0
- package/skills/vue-options/references/props-emits.md +106 -0
- package/skills/vue-options/references/provide-inject.md +92 -0
- package/skills/vue-options/references/state.md +115 -0
- package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
- package/skills/vue-options-api-best-practices/SKILL.md +23 -0
- package/skills/vue-options-api-best-practices/SYNC.md +5 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
- package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
- package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
- package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
- package/skills/vue-pinia-best-practices/SKILL.md +21 -0
- package/skills/vue-pinia-best-practices/SYNC.md +5 -0
- package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
- package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
- package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
- package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
- package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
- package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -0
- package/skills/vue-router-best-practices/LICENSE.md +21 -0
- package/skills/vue-router-best-practices/SKILL.md +23 -0
- package/skills/vue-router-best-practices/SYNC.md +5 -0
- package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
- package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
- package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
- package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
- package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
- package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
- package/skills/vue-testing-best-practices/LICENSE.md +21 -0
- package/skills/vue-testing-best-practices/SKILL.md +29 -0
- package/skills/vue-testing-best-practices/SYNC.md +5 -0
- package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
- package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
- package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
- package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
- package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
- package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
- package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
- package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
- package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
- package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
- package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
- package/skills/vueuse-functions/LICENSE.md +21 -0
- package/skills/vueuse-functions/SKILL.md +419 -0
- package/skills/vueuse-functions/SYNC.md +5 -0
- package/skills/vueuse-functions/references/computedAsync.md +195 -0
- package/skills/vueuse-functions/references/computedEager.md +62 -0
- package/skills/vueuse-functions/references/computedInject.md +137 -0
- package/skills/vueuse-functions/references/computedWithControl.md +98 -0
- package/skills/vueuse-functions/references/createEventHook.md +86 -0
- package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
- package/skills/vueuse-functions/references/createGlobalState.md +95 -0
- package/skills/vueuse-functions/references/createInjectionState.md +215 -0
- package/skills/vueuse-functions/references/createProjection.md +31 -0
- package/skills/vueuse-functions/references/createRef.md +54 -0
- package/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
- package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
- package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
- package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
- package/skills/vueuse-functions/references/extendRef.md +76 -0
- package/skills/vueuse-functions/references/from.md +80 -0
- package/skills/vueuse-functions/references/get.md +30 -0
- package/skills/vueuse-functions/references/injectLocal.md +35 -0
- package/skills/vueuse-functions/references/isDefined.md +31 -0
- package/skills/vueuse-functions/references/logicAnd.md +40 -0
- package/skills/vueuse-functions/references/logicNot.md +36 -0
- package/skills/vueuse-functions/references/logicOr.md +40 -0
- package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
- package/skills/vueuse-functions/references/onClickOutside.md +221 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
- package/skills/vueuse-functions/references/onLongPress.md +227 -0
- package/skills/vueuse-functions/references/onStartTyping.md +53 -0
- package/skills/vueuse-functions/references/provideLocal.md +37 -0
- package/skills/vueuse-functions/references/reactify.md +144 -0
- package/skills/vueuse-functions/references/reactifyObject.md +62 -0
- package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
- package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
- package/skills/vueuse-functions/references/reactivePick.md +106 -0
- package/skills/vueuse-functions/references/refAutoReset.md +46 -0
- package/skills/vueuse-functions/references/refDebounced.md +81 -0
- package/skills/vueuse-functions/references/refDefault.md +36 -0
- package/skills/vueuse-functions/references/refManualReset.md +44 -0
- package/skills/vueuse-functions/references/refThrottled.md +99 -0
- package/skills/vueuse-functions/references/refWithControl.md +146 -0
- package/skills/vueuse-functions/references/set.md +30 -0
- package/skills/vueuse-functions/references/syncRef.md +195 -0
- package/skills/vueuse-functions/references/syncRefs.md +128 -0
- package/skills/vueuse-functions/references/templateRef.md +86 -0
- package/skills/vueuse-functions/references/toObserver.md +38 -0
- package/skills/vueuse-functions/references/toReactive.md +41 -0
- package/skills/vueuse-functions/references/toRef.md +75 -0
- package/skills/vueuse-functions/references/toRefs.md +81 -0
- package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
- package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
- package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
- package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
- package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
- package/skills/vueuse-functions/references/unrefElement.md +54 -0
- package/skills/vueuse-functions/references/until.md +161 -0
- package/skills/vueuse-functions/references/useAbs.md +31 -0
- package/skills/vueuse-functions/references/useActiveElement.md +85 -0
- package/skills/vueuse-functions/references/useAnimate.md +181 -0
- package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
- package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
- package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
- package/skills/vueuse-functions/references/useArrayFind.md +50 -0
- package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
- package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
- package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
- package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
- package/skills/vueuse-functions/references/useArrayMap.md +59 -0
- package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
- package/skills/vueuse-functions/references/useArraySome.md +59 -0
- package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
- package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
- package/skills/vueuse-functions/references/useAsyncState.md +185 -0
- package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
- package/skills/vueuse-functions/references/useAuth.md +123 -0
- package/skills/vueuse-functions/references/useAverage.md +36 -0
- package/skills/vueuse-functions/references/useAxios.md +325 -0
- package/skills/vueuse-functions/references/useBase64.md +136 -0
- package/skills/vueuse-functions/references/useBattery.md +78 -0
- package/skills/vueuse-functions/references/useBluetooth.md +175 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
- package/skills/vueuse-functions/references/useCached.md +52 -0
- package/skills/vueuse-functions/references/useCeil.md +31 -0
- package/skills/vueuse-functions/references/useChangeCase.md +79 -0
- package/skills/vueuse-functions/references/useClamp.md +85 -0
- package/skills/vueuse-functions/references/useClipboard.md +123 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +94 -0
- package/skills/vueuse-functions/references/useCloned.md +91 -0
- package/skills/vueuse-functions/references/useColorMode.md +172 -0
- package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
- package/skills/vueuse-functions/references/useCookies.md +162 -0
- package/skills/vueuse-functions/references/useCountdown.md +105 -0
- package/skills/vueuse-functions/references/useCounter.md +86 -0
- package/skills/vueuse-functions/references/useCssSupports.md +35 -0
- package/skills/vueuse-functions/references/useCssVar.md +50 -0
- package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
- package/skills/vueuse-functions/references/useCycleList.md +75 -0
- package/skills/vueuse-functions/references/useDark.md +144 -0
- package/skills/vueuse-functions/references/useDateFormat.md +145 -0
- package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
- package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
- package/skills/vueuse-functions/references/useDeviceMotion.md +86 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
- package/skills/vueuse-functions/references/useDevicesList.md +90 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
- package/skills/vueuse-functions/references/useDraggable.md +317 -0
- package/skills/vueuse-functions/references/useDrauu.md +65 -0
- package/skills/vueuse-functions/references/useDropZone.md +83 -0
- package/skills/vueuse-functions/references/useElementBounding.md +131 -0
- package/skills/vueuse-functions/references/useElementByPoint.md +48 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +78 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +123 -0
- package/skills/vueuse-functions/references/useEventBus.md +101 -0
- package/skills/vueuse-functions/references/useEventListener.md +226 -0
- package/skills/vueuse-functions/references/useEventSource.md +204 -0
- package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
- package/skills/vueuse-functions/references/useEyeDropper.md +71 -0
- package/skills/vueuse-functions/references/useFavicon.md +67 -0
- package/skills/vueuse-functions/references/useFetch.md +546 -0
- package/skills/vueuse-functions/references/useFileDialog.md +91 -0
- package/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
- package/skills/vueuse-functions/references/useFirestore.md +129 -0
- package/skills/vueuse-functions/references/useFloor.md +31 -0
- package/skills/vueuse-functions/references/useFocus.md +99 -0
- package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
- package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
- package/skills/vueuse-functions/references/useFps.md +28 -0
- package/skills/vueuse-functions/references/useFullscreen.md +75 -0
- package/skills/vueuse-functions/references/useFuse.md +107 -0
- package/skills/vueuse-functions/references/useGamepad.md +222 -0
- package/skills/vueuse-functions/references/useGeolocation.md +85 -0
- package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
- package/skills/vueuse-functions/references/useIdle.md +88 -0
- package/skills/vueuse-functions/references/useImage.md +86 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
- package/skills/vueuse-functions/references/useInterval.md +112 -0
- package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
- package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
- package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
- package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
- package/skills/vueuse-functions/references/useJwt.md +57 -0
- package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
- package/skills/vueuse-functions/references/useLastChanged.md +63 -0
- package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
- package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
- package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
- package/skills/vueuse-functions/references/useMath.md +47 -0
- package/skills/vueuse-functions/references/useMax.md +36 -0
- package/skills/vueuse-functions/references/useMediaControls.md +571 -0
- package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
- package/skills/vueuse-functions/references/useMemoize.md +175 -0
- package/skills/vueuse-functions/references/useMemory.md +71 -0
- package/skills/vueuse-functions/references/useMin.md +36 -0
- package/skills/vueuse-functions/references/useMounted.md +38 -0
- package/skills/vueuse-functions/references/useMouse.md +113 -0
- package/skills/vueuse-functions/references/useMouseInElement.md +123 -0
- package/skills/vueuse-functions/references/useMousePressed.md +112 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +61 -0
- package/skills/vueuse-functions/references/useNProgress.md +78 -0
- package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
- package/skills/vueuse-functions/references/useNetwork.md +106 -0
- package/skills/vueuse-functions/references/useNow.md +79 -0
- package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
- package/skills/vueuse-functions/references/useObservable.md +91 -0
- package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
- package/skills/vueuse-functions/references/useOnline.md +41 -0
- package/skills/vueuse-functions/references/usePageLeave.md +42 -0
- package/skills/vueuse-functions/references/useParallax.md +58 -0
- package/skills/vueuse-functions/references/useParentElement.md +54 -0
- package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
- package/skills/vueuse-functions/references/usePermission.md +79 -0
- package/skills/vueuse-functions/references/usePointer.md +89 -0
- package/skills/vueuse-functions/references/usePointerLock.md +60 -0
- package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
- package/skills/vueuse-functions/references/usePrecision.md +49 -0
- package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
- package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
- package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
- package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
- package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
- package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
- package/skills/vueuse-functions/references/usePrevious.md +40 -0
- package/skills/vueuse-functions/references/useProjection.md +38 -0
- package/skills/vueuse-functions/references/useQRCode.md +53 -0
- package/skills/vueuse-functions/references/useRTDB.md +83 -0
- package/skills/vueuse-functions/references/useRafFn.md +68 -0
- package/skills/vueuse-functions/references/useRefHistory.md +285 -0
- package/skills/vueuse-functions/references/useResizeObserver.md +109 -0
- package/skills/vueuse-functions/references/useRound.md +31 -0
- package/skills/vueuse-functions/references/useRouteHash.md +27 -0
- package/skills/vueuse-functions/references/useRouteParams.md +38 -0
- package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
- package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
- package/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
- package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
- package/skills/vueuse-functions/references/useScriptTag.md +116 -0
- package/skills/vueuse-functions/references/useScroll.md +238 -0
- package/skills/vueuse-functions/references/useScrollLock.md +66 -0
- package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
- package/skills/vueuse-functions/references/useShare.md +68 -0
- package/skills/vueuse-functions/references/useSortable.md +235 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
- package/skills/vueuse-functions/references/useStepper.md +137 -0
- package/skills/vueuse-functions/references/useStorage.md +278 -0
- package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
- package/skills/vueuse-functions/references/useStyleTag.md +131 -0
- package/skills/vueuse-functions/references/useSubject.md +77 -0
- package/skills/vueuse-functions/references/useSubscription.md +33 -0
- package/skills/vueuse-functions/references/useSum.md +36 -0
- package/skills/vueuse-functions/references/useSupported.md +29 -0
- package/skills/vueuse-functions/references/useSwipe.md +75 -0
- package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
- package/skills/vueuse-functions/references/useTextDirection.md +75 -0
- package/skills/vueuse-functions/references/useTextSelection.md +40 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
- package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
- package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
- package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
- package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
- package/skills/vueuse-functions/references/useTimeout.md +113 -0
- package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
- package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
- package/skills/vueuse-functions/references/useTimestamp.md +89 -0
- package/skills/vueuse-functions/references/useTitle.md +113 -0
- package/skills/vueuse-functions/references/useToNumber.md +54 -0
- package/skills/vueuse-functions/references/useToString.md +34 -0
- package/skills/vueuse-functions/references/useToggle.md +103 -0
- package/skills/vueuse-functions/references/useTransition.md +265 -0
- package/skills/vueuse-functions/references/useTrunc.md +33 -0
- package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
- package/skills/vueuse-functions/references/useUserMedia.md +1138 -0
- package/skills/vueuse-functions/references/useVModel.md +182 -0
- package/skills/vueuse-functions/references/useVModels.md +67 -0
- package/skills/vueuse-functions/references/useVibrate.md +87 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +50 -0
- package/skills/vueuse-functions/references/useWebNotification.md +176 -0
- package/skills/vueuse-functions/references/useWebSocket.md +299 -0
- package/skills/vueuse-functions/references/useWebWorker.md +60 -0
- package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
- package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
- package/skills/vueuse-functions/references/useWindowScroll.md +61 -0
- package/skills/vueuse-functions/references/useWindowSize.md +76 -0
- package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
- package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
- package/skills/vueuse-functions/references/watchArray.md +53 -0
- package/skills/vueuse-functions/references/watchAtMost.md +55 -0
- package/skills/vueuse-functions/references/watchDebounced.md +101 -0
- package/skills/vueuse-functions/references/watchDeep.md +54 -0
- package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
- package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
- package/skills/vueuse-functions/references/watchImmediate.md +44 -0
- package/skills/vueuse-functions/references/watchOnce.md +41 -0
- package/skills/vueuse-functions/references/watchPausable.md +86 -0
- package/skills/vueuse-functions/references/watchThrottled.md +108 -0
- package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
- package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
- package/skills/vueuse-functions/references/whenever.md +100 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
- package/tsconfig.json +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>🚀 devskill: Supercharge Your AI Agents</h1>
|
|
3
|
+
<p><strong>Curated Coding Expertise for Cursor, GitHub Copilot, & AgentSkills</strong></p>
|
|
4
|
+
<p>
|
|
5
|
+
<a href="README.vn.md">🇻🇳 Read in Vietnamese (Đọc Tiếng Việt)</a> •
|
|
6
|
+
<a href="https://agentskills.io/home" target="_blank">About AgentSkills</a>
|
|
7
|
+
</p>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
## 🤔 The Problem
|
|
11
|
+
|
|
12
|
+
Are you tired of constantly reminding your AI assistant about your team's specific coding standards? Tired of generic Vue components when you need strict Ant Design + Tailwind integrations, or boilerplate REST endpoints when your team uses class-based APIs and Action Fallbacks?
|
|
13
|
+
|
|
14
|
+
## 💡 The Solution
|
|
15
|
+
|
|
16
|
+
**`devskill`** is a curated collection of highly specific, context-rich "Agent Skills" designed to align your AI with your exact development stack. Stop prompting, start building.
|
|
17
|
+
|
|
18
|
+
By feeding your AI specialized `SKILL.md` documents, you **eliminate AI hallucinations** and strictly enforce your project's architecture.
|
|
19
|
+
|
|
20
|
+
## ✨ Why You Need This
|
|
21
|
+
|
|
22
|
+
- 🧠 **Instant Project Onboarding:** One command dumps all necessary context right into your `.agents/skills` folder.
|
|
23
|
+
- 🎯 **Pinpoint Accuracy:** From niche Vue Options API patterns to Elixir Phoenix Ecto.Multi rules, get the code exactly how you want it.
|
|
24
|
+
- ⚡ **Zero-Friction Setup:** Interactive, beautifully designed CLI makes managing skills effortless.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 📦 Installation & Quick Start
|
|
29
|
+
|
|
30
|
+
You can install these skills using the official [Agent Skills CLI](https://github.com/vercel-labs/skills).
|
|
31
|
+
|
|
32
|
+
### Options 1: Install All Skills
|
|
33
|
+
Perfect for getting the full collection into your project:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx skills add vuluu2k/skills --skill='*'
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Options 2: Install Specific Skills
|
|
40
|
+
If you only need a particular expertise:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Install Vue Options API skill
|
|
44
|
+
npx skills add vuluu2k/skills --skill='vue-options'
|
|
45
|
+
|
|
46
|
+
# Install Pinia Options API skill
|
|
47
|
+
npx skills add vuluu2k/skills --skill='pinia-options'
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Options 3: Interactive CLI
|
|
51
|
+
We've also built an elegant, interactive CLI for advanced management (requires cloning this repo):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npx devskill install
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 📚 Curated Collections
|
|
60
|
+
|
|
61
|
+
Pick the exact brain-upgrade your AI needs.
|
|
62
|
+
|
|
63
|
+
| Collection | Focus Area | Included Skills |
|
|
64
|
+
|------------|------------|-----------------|
|
|
65
|
+
| 🏗️ **`builderx_spa`** | Specialized BuilderX Frontend | `vue-options`, `pinia-options`, `builderx_spa-api`, `builderx_spa-permission`, `vue-antdv-tailwind` |
|
|
66
|
+
| ⚙️ **`builderx_api`** | Phoenix Elixir Backend | `builderx_api-schemas`, `builderx_api-controllers`, `builderx_api-contexts` |
|
|
67
|
+
| 🌟 **`vue3-standard`** | Pure Vue 3 Mastery | `vue`, `pinia`, `vue-best-practices`, `vue-router-best-practices`, `vue-testing-best-practices` |
|
|
68
|
+
|
|
69
|
+
## 🛠️ Deep-Dive: Available Skills
|
|
70
|
+
|
|
71
|
+
Some of the primary hand-crafted skills included in our collections:
|
|
72
|
+
|
|
73
|
+
### Frontend & Vue Ecosystem
|
|
74
|
+
- **`vue` / `vue-best-practices`**: Modern Vue 3 Composition API style with script setup, animation techniques, and advanced rendering.
|
|
75
|
+
- **`pinia`**: State management using Composition API.
|
|
76
|
+
- **`vue-options` / `pinia-options`**: The definitive best practices for organizations still leveraging the powerful Vue Options API style.
|
|
77
|
+
- **`vue-router-best-practices`**: Avoid navigation infinite loops and lifecycle gotchas.
|
|
78
|
+
- **`vue-testing-best-practices`**: Blackbox testing, Vitest setups, and E2E Playwright.
|
|
79
|
+
|
|
80
|
+
### Advanced Architectural Patterns
|
|
81
|
+
- **`builderx_spa-api`**: Deep API fetching rules + class-based endpoints pattern overriding standard HTTP.
|
|
82
|
+
- **`builderx_spa-permission`**: Role-based access rules utilizing bitwise permissions.
|
|
83
|
+
- **`vue-antdv-tailwind`**: The definitive guide to cleanly mixing Ant Design Vue components with Tailwind CSS utility classes.
|
|
84
|
+
|
|
85
|
+
### Backend Mastery (Elixir / Phoenix)
|
|
86
|
+
- **`builderx_api-schemas`**: Core Ecto schema conventions including custom json serializers.
|
|
87
|
+
- **`builderx_api-controllers`**: Action fallback and standard tuple responses for Phoenix controllers.
|
|
88
|
+
- **`builderx_api-contexts`**: Ecto.Multi and Outbox pattern usage for complex multi-step transactions.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## ⚙️ Generate & Manage Your Own Skills
|
|
93
|
+
|
|
94
|
+
Want to build your own AI knowledge base? Fork or clone this repository to start creating your team's custom skill collection.
|
|
95
|
+
|
|
96
|
+
1. **Clone the repo:**
|
|
97
|
+
```bash
|
|
98
|
+
git clone https://github.com/vuluu2k/skills
|
|
99
|
+
cd skills
|
|
100
|
+
npm install
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
2. **Update `meta.ts`** with your own projects and sources.
|
|
104
|
+
|
|
105
|
+
3. **Use the powerful CLI** to manage everything:
|
|
106
|
+
```bash
|
|
107
|
+
npm start # Open the interactive menu
|
|
108
|
+
npm start install # Install skill collections to a target project
|
|
109
|
+
npm start init # Clone tracked submodules from meta.ts
|
|
110
|
+
npm start sync # Pull updates + sync vendor skills
|
|
111
|
+
npm start check # Check for available remote updates
|
|
112
|
+
npm start cleanup # Remove stale skills not listed in meta.ts
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
4. **Ask your AI agent to generate skills:**
|
|
116
|
+
> "Generate skills for `<project>` based on the docs in `sources/<project>/`"
|
|
117
|
+
|
|
118
|
+
See [SKILL_GUIDE.md](SKILL_GUIDE.md) for detailed guidelines on writing the perfect AI skills.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
<div align="center">
|
|
122
|
+
<p>Built with ❤️ by vuluu2k. License: MIT</p>
|
|
123
|
+
</div>
|
package/README.vn.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>🚀 devskill: Nâng tầm AI Agent của bạn</h1>
|
|
3
|
+
<p><strong>Kho tri thức lập trình chuyên sâu cho Cursor, GitHub Copilot, & AgentSkills</strong></p>
|
|
4
|
+
<p>
|
|
5
|
+
<a href="README.md">🇺🇸 Read in English (Đọc Tiếng Anh)</a> •
|
|
6
|
+
<a href="https://agentskills.io/home" target="_blank">Về AgentSkills</a>
|
|
7
|
+
</p>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
## 🤔 Vấn đề
|
|
11
|
+
|
|
12
|
+
Bạn mệt mỏi vì phải liên tục nhắc nhở trợ lý AI về các tiêu chuẩn code riêng của team mình? Bạn chán ngấy việc nhận được các Vue component cơ bản khi bạn cần tích hợp chặt chẽ Ant Design + Tailwind, hoặc các REST endpoint mẫu khi team bạn sử dụng class-based API và Action Fallbacks?
|
|
13
|
+
|
|
14
|
+
## 💡 Giải pháp
|
|
15
|
+
|
|
16
|
+
**`devskill`** là một bộ sưu tập các "Agent Skills" được tuyển chọn kỹ lưỡng, giàu ngữ cảnh, được thiết kế để định hướng AI theo đúng stack phát triển của bạn. Ngừng viết prompt thủ công, bắt đầu xây dựng sản phẩm.
|
|
17
|
+
|
|
18
|
+
Bằng cách cung cấp cho AI các tài liệu `SKILL.md` chuyên dụng, bạn sẽ **loại bỏ tình trạng AI "ảo tưởng" (hallucination)** và thực thi nghiêm ngặt kiến trúc dự án của mình.
|
|
19
|
+
|
|
20
|
+
## ✨ Tại sao bạn cần công cụ này
|
|
21
|
+
|
|
22
|
+
- 🧠 **Onboarding dự án tức thì:** Một lệnh duy nhất sẽ đưa toàn bộ ngữ cảnh cần thiết vào thư mục `.agents/skills` của bạn.
|
|
23
|
+
- 🎯 **Độ chính xác tuyệt đối:** Từ các pattern niche của Vue Options API đến các quy tắc Elixir Phoenix Ecto.Multi, nhận code chính xác theo ý bạn.
|
|
24
|
+
- ⚡ **Thiết lập không tốn sức:** CLI tương tác, thiết kế đẹp mắt giúp việc quản lý skills trở nên dễ dàng.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 📦 Cài đặt & Bắt đầu nhanh
|
|
29
|
+
|
|
30
|
+
Quên việc copy thủ công đi. Chúng tôi đã xây dựng một CLI tương tác thanh lịch để đưa kiến thức trực tiếpChạy CLI trong dự án của bạn:
|
|
31
|
+
```bash
|
|
32
|
+
npx devskill install
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> **Mẹo:** Bạn cũng có thể cài đặt mọi skill trên toàn hệ thống bằng công cụ chính thức:
|
|
36
|
+
> `npx skills add vuluu2k/skills --skill='*'`
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 📚 Bộ sưu tập tuyển chọn (Collections)
|
|
41
|
+
|
|
42
|
+
Chọn chính xác "nâng cấp não bộ" mà AI của bạn cần.
|
|
43
|
+
|
|
44
|
+
| Bộ sưu tập | Lĩnh vực trọng tâm | Các Skills bao gồm |
|
|
45
|
+
|------------|------------|-----------------|
|
|
46
|
+
| 🏗️ **`builderx_spa`** | Frontend BuilderX chuyên dụng | `vue-options`, `pinia-options`, `builderx_spa-api`, `builderx_spa-permission`, `vue-antdv-tailwind` |
|
|
47
|
+
| ⚙️ **`builderx_api`** | Backend Phoenix Elixir | `builderx_api-schemas`, `builderx_api-controllers`, `builderx_api-contexts` |
|
|
48
|
+
| 🌟 **`vue3-standard`** | Làm chủ Vue 3 thuần túy | `vue`, `pinia`, `vue-best-practices`, `vue-router-best-practices`, `vue-testing-best-practices` |
|
|
49
|
+
|
|
50
|
+
## 🛠️ Chi tiết: Các Skills hiện có
|
|
51
|
+
|
|
52
|
+
Một số skill được viết tay tỉ mỉ nằm trong các bộ sưu tập:
|
|
53
|
+
|
|
54
|
+
### Hệ sinh thái Frontend & Vue
|
|
55
|
+
- **`vue` / `vue-best-practices`**: Phong cách Modern Vue 3 Composition API với script setup, kỹ thuật animation và rendering nâng cao.
|
|
56
|
+
- **`pinia`**: Quản lý state sử dụng Composition API.
|
|
57
|
+
- **`vue-options` / `pinia-options`**: Các best practices chuẩn mực cho các tổ chức vẫn đang tận dụng sức mạnh của Vue Options API.
|
|
58
|
+
- **`vue-router-best-practices`**: Tránh lỗi vòng lặp điều hướng vô tận và các lỗi vòng đời.
|
|
59
|
+
- **`vue-testing-best-practices`**: Blackbox testing, thiết lập Vitest và E2E Playwright.
|
|
60
|
+
|
|
61
|
+
### Các Pattern Kiến trúc Nâng cao
|
|
62
|
+
- **`builderx_spa-api`**: Các quy tắc fetch API chuyên sâu + pattern class-based endpoint thay thế HTTP tiêu chuẩn.
|
|
63
|
+
- **`builderx_spa-permission`**: Quy tắc phân quyền dựa trên Role sử dụng bitwise permissions.
|
|
64
|
+
- **`vue-antdv-tailwind`**: Hướng dẫn chuẩn để kết hợp mượt mà Ant Design Vue với Tailwind CSS.
|
|
65
|
+
|
|
66
|
+
### Backend (Elixir / Phoenix)
|
|
67
|
+
- **`builderx_api-schemas`**: Các quy ước Ecto schema bao gồm custom json serializers.
|
|
68
|
+
- **`builderx_api-controllers`**: Action fallback và cấu trúc tuple phản hồi chuẩn cho Phoenix controller.
|
|
69
|
+
- **`builderx_api-contexts`**: Sử dụng Ecto.Multi và Outbox pattern cho các transaction phức tạp nhiều bước.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## ⚙️ Tự tạo & Quản lý Skills của riêng bạn
|
|
74
|
+
|
|
75
|
+
Bạn muốn xây dựng kho tri thức AI của riêng mình? Fork hoặc clone repo này để bắt đầu tạo bộ sưu tập skill tùy chỉnh cho team.
|
|
76
|
+
|
|
77
|
+
1. **Clone repo:**
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/vuluu2k/skills
|
|
80
|
+
cd skills
|
|
81
|
+
npm install
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
2. **Cập nhật `meta.ts`** với các dự án và nguồn skill của bạn.
|
|
85
|
+
|
|
86
|
+
3. **Sử dụng CLI mạnh mẽ** để quản lý:
|
|
87
|
+
```bash
|
|
88
|
+
npm start # Mở menu tương tác
|
|
89
|
+
npm start install # Cài đặt bộ sưu tập skill vào dự án đích
|
|
90
|
+
npm start init # Clone các submodule được theo dõi từ meta.ts
|
|
91
|
+
npm start sync # Cập nhật + đồng bộ vendor skills
|
|
92
|
+
npm start check # Kiểm tra cập nhật từ remote
|
|
93
|
+
npm start cleanup # Xóa các skill cũ không có trong meta.ts
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
4. **Yêu cầu AI generate skills:**
|
|
97
|
+
> "Generate skills cho `<project>` dựa trên tài liệu trong `sources/<project>/`"
|
|
98
|
+
|
|
99
|
+
Xem [SKILL_GUIDE.md](SKILL_GUIDE.md) để biết hướng dẫn chi tiết về cách viết một AI skill hoàn hảo.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
<div align="center">
|
|
103
|
+
<p>Xây dựng với ❤️ bởi vuluu2k. License: MIT</p>
|
|
104
|
+
</div>
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# SKILL_GUIDE.md 🌐 [[English](SKILL_GUIDE.md)]
|
|
2
|
+
|
|
3
|
+
Hướng dẫn đầy đủ về cách tạo và quản lý AI agent skills trong repository này.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Skill là gì?
|
|
8
|
+
|
|
9
|
+
Một **skill** là một bộ các tệp Markdown dùng để dạy cho một AI agent cách làm việc với một công nghệ hoặc quy trình cụ thể. Agent sẽ đọc các tệp này trước khi viết mã để đảm bảo nó tuân theo các quy ước chính xác.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Các loại Skill
|
|
14
|
+
|
|
15
|
+
| Loại | Vị trí | Cách quản lý |
|
|
16
|
+
|------|----------|---------------------|
|
|
17
|
+
| **Manual** | `skills/{tên}/` | Viết thủ công |
|
|
18
|
+
| **Generated** | `skills/{tên}/` | AI tạo ra từ `sources/{tên}/docs/` |
|
|
19
|
+
| **Synced** | `skills/{tên}/` | Tự động copy từ `vendor/{tên}/skills/` |
|
|
20
|
+
|
|
21
|
+
Cả ba loại đều tạo ra cấu trúc tệp giống nhau trong thư mục `skills/`.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Cấu trúc thư mục
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
skills/{tên-skill}/
|
|
29
|
+
├── SKILL.md ← Bắt buộc: tệp chỉ mục chính
|
|
30
|
+
├── GENERATION.md ← Cho generated skills: theo dõi source Git SHA
|
|
31
|
+
├── SYNC.md ← Cho synced skills: theo dõi vendor Git SHA
|
|
32
|
+
└── references/
|
|
33
|
+
├── core-*.md ← Các khái niệm cốt lõi (luôn luôn được đọc)
|
|
34
|
+
├── features-*.md ← Các tính năng tùy chọn
|
|
35
|
+
├── advanced-*.md ← Các chủ đề nâng cao
|
|
36
|
+
└── best-practices-*.md ← Các pattern và các lỗi thường gặp
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Định dạng SKILL.md
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
---
|
|
45
|
+
name: tên-skill
|
|
46
|
+
description: Mô tả một dòng — đây là nội dung AI đọc để quyết định có tải skill hay không.
|
|
47
|
+
metadata:
|
|
48
|
+
author: tên-của-bạn
|
|
49
|
+
version: "YYYY.MM.DD"
|
|
50
|
+
source: Viết thủ công / Tạo từ <url>
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
# Tiêu đề Skill
|
|
54
|
+
|
|
55
|
+
> Tóm tắt và ngữ cảnh trong một dòng (ví dụ: phiên bản nào được hỗ trợ, các ràng buộc chính).
|
|
56
|
+
|
|
57
|
+
## Cốt lõi (Core)
|
|
58
|
+
|
|
59
|
+
| Chủ đề | Mô tả | Tham chiếu |
|
|
60
|
+
|-------|-------------|-----------|
|
|
61
|
+
| Tên chủ đề | Mô tả ngắn | [tên-ref](references/tên-ref.md) |
|
|
62
|
+
|
|
63
|
+
## Tính năng (Features) (tùy chọn)
|
|
64
|
+
|
|
65
|
+
| Chủ đề | Mô tả | Tham chiếu |
|
|
66
|
+
|-------|-------------|-----------|
|
|
67
|
+
| Tên tính năng | Mô tả ngắn | [tên-ref](references/tên-ref.md) |
|
|
68
|
+
|
|
69
|
+
## Tra cứu nhanh (Quick Reference)
|
|
70
|
+
|
|
71
|
+
Một ví dụ mã gọn gàng, độc lập hiển thị cách sử dụng phổ biến nhất.
|
|
72
|
+
Phần này nên dễ hiểu mà không cần mở bất kỳ tệp tham chiếu nào.
|
|
73
|
+
```javascript
|
|
74
|
+
// Ví dụ mã ở đây
|
|
75
|
+
```
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Định dạng tệp tham chiếu (Reference File)
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
---
|
|
84
|
+
name: tên-tham-chiếu
|
|
85
|
+
description: Mô tả ngắn gọn về những gì tham chiếu này đề cập.
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
# Tên chủ đề
|
|
89
|
+
|
|
90
|
+
Giới thiệu ngắn gọn — khi nào và tại sao nên sử dụng cái này.
|
|
91
|
+
|
|
92
|
+
## Phần A
|
|
93
|
+
|
|
94
|
+
Giải thích + ví dụ mã.
|
|
95
|
+
|
|
96
|
+
## Phần B
|
|
97
|
+
|
|
98
|
+
Giải thích + ví dụ mã.
|
|
99
|
+
|
|
100
|
+
<!--
|
|
101
|
+
Nguồn tham khảo:
|
|
102
|
+
- https://url-tai-lieu-chinh-thuc.com/topic
|
|
103
|
+
-->
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Cách đặt tên tệp tham chiếu
|
|
109
|
+
|
|
110
|
+
Sử dụng prefix cho các tệp để chỉ định mức độ ưu tiên:
|
|
111
|
+
|
|
112
|
+
| Prefix | Ý nghĩa |
|
|
113
|
+
|--------|---------|
|
|
114
|
+
| `core-` | Các kiến thức nền tảng bắt buộc |
|
|
115
|
+
| `features-` | Các tính năng tùy chọn, tải khi cần |
|
|
116
|
+
| `advanced-` | Các chủ đề phức tạp hoặc hiếm khi sử dụng |
|
|
117
|
+
| `best-practices-` | Các pattern, quy ước, các lỗi thường gặp |
|
|
118
|
+
|
|
119
|
+
Ví dụ: `core-state.md`, `features-transitions.md`, `best-practices-testing.md`
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Thêm một manual skill (Loại 1 — Viết thủ công)
|
|
124
|
+
|
|
125
|
+
1. Tạo thư mục skill:
|
|
126
|
+
```bash
|
|
127
|
+
mkdir -p skills/{tên-skill}/references
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
2. Tạo `skills/{tên-skill}/SKILL.md` — xem định dạng ở trên.
|
|
131
|
+
|
|
132
|
+
3. Tạo các tệp tham chiếu trong `skills/{tên-skill}/references/`.
|
|
133
|
+
|
|
134
|
+
4. Đăng ký tên skill trong `meta.ts` mục `manual`:
|
|
135
|
+
```ts
|
|
136
|
+
export const manual = [
|
|
137
|
+
'vue-options',
|
|
138
|
+
'pinia-options',
|
|
139
|
+
'{tên-skill}', // ← thêm vào đây
|
|
140
|
+
]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Thêm một generated skill (Loại 2 — Từ tài liệu OSS)
|
|
146
|
+
|
|
147
|
+
1. Thêm repo vào `submodules` trong `meta.ts`:
|
|
148
|
+
```ts
|
|
149
|
+
export const submodules = {
|
|
150
|
+
'tên-skill': 'https://github.com/org/repo',
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
2. Clone submodule:
|
|
155
|
+
```bash
|
|
156
|
+
npm start init
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
3. Thêm một tệp hướng dẫn tạo (tùy chọn nhưng nên có):
|
|
160
|
+
```
|
|
161
|
+
instructions/{tên-skill}.md
|
|
162
|
+
```
|
|
163
|
+
Dùng tệp này để định nghĩa các quy ước (ví dụ: ưu tiên TypeScript, tránh các pattern nhất định).
|
|
164
|
+
|
|
165
|
+
4. Đọc tài liệu từ `sources/{tên-skill}/` và viết các tệp skill một cách thủ công vào `skills/{tên-skill}/`.
|
|
166
|
+
|
|
167
|
+
5. Tạo tệp `skills/{tên-skill}/GENERATION.md`:
|
|
168
|
+
```markdown
|
|
169
|
+
# Thông tin tạo (Generation Info)
|
|
170
|
+
|
|
171
|
+
- **Nguồn:** `sources/{tên-skill}`
|
|
172
|
+
- **Git SHA:** `<run: cd sources/{tên-skill} && git rev-parse HEAD>`
|
|
173
|
+
- **Ngày tạo:** YYYY-MM-DD
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Cập nhật một Generated Skill
|
|
177
|
+
|
|
178
|
+
1. Kiểm tra những gì đã thay đổi kể từ lần tạo cuối:
|
|
179
|
+
```bash
|
|
180
|
+
cd sources/{tên-skill}
|
|
181
|
+
git diff {old-sha}..HEAD -- docs/
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
2. Cập nhật các tệp tham chiếu bị ảnh hưởng.
|
|
185
|
+
|
|
186
|
+
3. Cập nhật `GENERATION.md` với Git SHA mới.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Thêm một synced skill (Loại 3 — Vendor)
|
|
191
|
+
|
|
192
|
+
1. Thêm vendor vào `meta.ts`:
|
|
193
|
+
```ts
|
|
194
|
+
export const vendors = {
|
|
195
|
+
'tên-vendor': {
|
|
196
|
+
source: 'https://github.com/org/repo',
|
|
197
|
+
skills: {
|
|
198
|
+
'tên-skill-nguồn': 'tên-skill-đầu-ra',
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
2. Clone vendor submodule:
|
|
205
|
+
```bash
|
|
206
|
+
npm start init
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
3. Đồng bộ skill:
|
|
210
|
+
```bash
|
|
211
|
+
npm start sync
|
|
212
|
+
```
|
|
213
|
+
Việc này sẽ copy tệp từ `vendor/{tên}/skills/{skill}/` vào `skills/{tên-đầu-ra}/` và tạo `SYNC.md`.
|
|
214
|
+
|
|
215
|
+
> ⚠️ **Không** chỉnh sửa trực tiếp các tệp synced skill. Các thay đổi phải được thực hiện ở upstream vendor repo.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Thêm một tệp hướng dẫn (Instruction File)
|
|
220
|
+
|
|
221
|
+
Tạo `instructions/{tên-skill}.md` để định nghĩa các quy ước cho AI-generated hoặc AI-updated skills.
|
|
222
|
+
|
|
223
|
+
```markdown
|
|
224
|
+
- Ưu tiên TypeScript hơn JavaScript.
|
|
225
|
+
- Luôn luôn dùng pattern X, không bao giờ dùng pattern Y.
|
|
226
|
+
- Đối tượng mục tiêu là người dùng Options API, không đề cập đến Composition API.
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Tệp này sẽ được đọc cùng với tài liệu nguồn khi yêu cầu AI tạo hoặc cập nhật skill.
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Các lệnh CLI
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
npm start # Menu tương tác
|
|
237
|
+
npm start init # Clone các submodules được đăng ký trong meta.ts
|
|
238
|
+
npm start sync # Kéo các bản cập nhật + đồng bộ tất cả vendor skills
|
|
239
|
+
npm start check # Kiểm tra xem submodules có bản cập nhật mới không
|
|
240
|
+
npm start cleanup # Xóa các skills/submodules không có trong meta.ts
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Hướng dẫn viết
|
|
246
|
+
|
|
247
|
+
1. **Viết cho agent, không phải cho người** — tránh viết văn dài dòng, ưu tiên các gạch đầu dòng ngắn gọn và các ví dụ mã.
|
|
248
|
+
2. **Một khái niệm cho mỗi tệp** — chia nhỏ các chủ đề lớn thành nhiều tệp tham chiếu.
|
|
249
|
+
3. **Luôn luôn bao gồm mã** — mỗi phần nên có một ví dụ hoạt động được.
|
|
250
|
+
4. **Giải thích các sự đánh đổi** — không chỉ nói *làm thế nào*, mà còn *khi nào* và *tại sao*.
|
|
251
|
+
5. **Đảm bảo tính nhất quán** — sử dụng TypeScript trừ khi skill nhắm mục tiêu cụ thể đến JavaScript.
|
|
252
|
+
6. **Tránh trùng lặp** — nếu hai tham chiếu trùng nhau nhiều, hãy hợp nhất hoặc liên kết chéo chúng.
|
package/bin/devskill.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const cliPath = join(__dirname, '../scripts/cli.ts');
|
|
8
|
+
|
|
9
|
+
const args = ['tsx', cliPath, ...process.argv.slice(2)];
|
|
10
|
+
const result = spawnSync('npx', args, { stdio: 'inherit' });
|
|
11
|
+
process.exit(result.status ?? 1);
|
package/meta.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
export interface VendorSkillMeta {
|
|
2
|
+
official?: boolean
|
|
3
|
+
source: string
|
|
4
|
+
skills: Record<string, string> // sourceSkillName -> outputSkillName
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Repositories to clone as submodules and generate skills from their docs.
|
|
9
|
+
* After cloning, read docs and generate skills manually into skills/{name}/
|
|
10
|
+
* Then update the Git SHA in skills/{name}/GENERATION.md
|
|
11
|
+
*
|
|
12
|
+
* Format: { 'skill-name': 'https://github.com/org/repo' }
|
|
13
|
+
*/
|
|
14
|
+
export const submodules: Record<string, string> = {
|
|
15
|
+
// Example: add repos you want to generate skills from
|
|
16
|
+
// 'react': 'https://github.com/reactjs/react.dev',
|
|
17
|
+
'vue': 'https://github.com/vuejs/docs',
|
|
18
|
+
'pinia': 'https://github.com/vuejs/pinia',
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Repositories that already maintain their own skills directory.
|
|
23
|
+
* The CLI will clone them and sync the specified skills automatically.
|
|
24
|
+
*
|
|
25
|
+
* Format: { 'vendor-name': { source: 'repo-url', skills: { 'source-skill': 'output-skill' } } }
|
|
26
|
+
*/
|
|
27
|
+
export const vendors: Record<string, VendorSkillMeta> = {
|
|
28
|
+
// Example: sync skills from a repo that already has them
|
|
29
|
+
// 'vueuse': {
|
|
30
|
+
// source: 'https://github.com/vueuse/vueuse',
|
|
31
|
+
// skills: { 'vueuse-functions': 'vueuse-functions' }
|
|
32
|
+
// },
|
|
33
|
+
'vuejs-ai': {
|
|
34
|
+
source: 'https://github.com/vuejs-ai/skills',
|
|
35
|
+
skills: {
|
|
36
|
+
'vue-best-practices': 'vue-best-practices',
|
|
37
|
+
'vue-router-best-practices': 'vue-router-best-practices',
|
|
38
|
+
'vue-testing-best-practices': 'vue-testing-best-practices',
|
|
39
|
+
'vue-options-api-best-practices': 'vue-options-api-best-practices',
|
|
40
|
+
'vue-pinia-best-practices': 'vue-pinia-best-practices',
|
|
41
|
+
'vue-jsx-best-practices': 'vue-jsx-best-practices',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
'web-design-guidelines': {
|
|
45
|
+
source: 'https://github.com/vercel-labs/agent-skills',
|
|
46
|
+
skills: {
|
|
47
|
+
'composition-patterns': 'composition-patterns',
|
|
48
|
+
'web-design-guidelines': 'web-design-guidelines',
|
|
49
|
+
'react-best-practices': 'react-best-practices',
|
|
50
|
+
'deploy-to-vercel': 'deploy-to-vercel',
|
|
51
|
+
'react-native-skills': 'react-native-skills',
|
|
52
|
+
'vercel-cli-with-tokens': 'vercel-cli-with-tokens',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
'slidev': {
|
|
56
|
+
official: true,
|
|
57
|
+
source: 'https://github.com/slidevjs/slidev',
|
|
58
|
+
skills: {
|
|
59
|
+
slidev: 'slidev',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
'vueuse': {
|
|
63
|
+
official: true,
|
|
64
|
+
source: 'https://github.com/vueuse/vueuse',
|
|
65
|
+
skills: {
|
|
66
|
+
'vueuse-functions': 'vueuse-functions',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
'tsdown': {
|
|
70
|
+
official: true,
|
|
71
|
+
source: 'https://github.com/rolldown/tsdown',
|
|
72
|
+
skills: {
|
|
73
|
+
tsdown: 'tsdown',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
'turborepo': {
|
|
77
|
+
official: true,
|
|
78
|
+
source: 'https://github.com/vercel/turborepo',
|
|
79
|
+
skills: {
|
|
80
|
+
turborepo: 'turborepo',
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export const manual = [
|
|
86
|
+
'vue-options',
|
|
87
|
+
'pinia-options',
|
|
88
|
+
'pinia',
|
|
89
|
+
'vue',
|
|
90
|
+
'builderx_spa-api',
|
|
91
|
+
'builderx_spa-permission',
|
|
92
|
+
'builderx_spa-design',
|
|
93
|
+
'vue-antdv-tailwind',
|
|
94
|
+
'builderx_api-schemas',
|
|
95
|
+
'builderx_api-controllers',
|
|
96
|
+
'builderx_api-contexts',
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Collections of skills grouped by target projects/repos.
|
|
101
|
+
* Use `npm start install` to quickly copy a batch of skills to a local project.
|
|
102
|
+
*/
|
|
103
|
+
export const collections: Record<string, string[]> = {
|
|
104
|
+
'vue3-standard': [
|
|
105
|
+
'vue',
|
|
106
|
+
'pinia',
|
|
107
|
+
'vue-best-practices',
|
|
108
|
+
'vue-router-best-practices',
|
|
109
|
+
'vue-testing-best-practices'
|
|
110
|
+
],
|
|
111
|
+
'builderx_spa': [
|
|
112
|
+
'vue-options',
|
|
113
|
+
'pinia-options',
|
|
114
|
+
'builderx_spa-api',
|
|
115
|
+
'builderx_spa-permission',
|
|
116
|
+
'builderx_spa-design'
|
|
117
|
+
],
|
|
118
|
+
'builderx_api': [
|
|
119
|
+
'builderx_api-schemas',
|
|
120
|
+
'builderx_api-controllers',
|
|
121
|
+
'builderx_api-contexts'
|
|
122
|
+
]
|
|
123
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "devskill",
|
|
3
|
+
"version": "2.0.2",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"bin": {
|
|
6
|
+
"devskill": "bin/devskill.js"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"start": "tsx scripts/cli.ts",
|
|
10
|
+
"prepare": "git submodule update --init --recursive",
|
|
11
|
+
"release": "npm publish --access public"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@clack/prompts": "^1.1.0",
|
|
15
|
+
"tsx": "^4.0.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^20.0.0",
|
|
19
|
+
"typescript": "^5.5.0"
|
|
20
|
+
}
|
|
21
|
+
}
|
package/publish.sh
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Exit immediately if a command exits with a non-zero status
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "📦 Chuẩn bị Publish package devskill lên NPM..."
|
|
7
|
+
|
|
8
|
+
# 1. Kiểm tra trạng thái đăng nhập NPM
|
|
9
|
+
if ! npm whoami > /dev/null 2>&1; then
|
|
10
|
+
echo "⚠️ Bạn chưa đăng nhập NPM. Hệ thống sẽ tự động bật giao diện đăng nhập (Trình duyệt) ngay sau đây..."
|
|
11
|
+
npm login
|
|
12
|
+
# Check lại xem đăng nhập thành công chưa
|
|
13
|
+
if ! npm whoami > /dev/null 2>&1; then
|
|
14
|
+
echo "❌ LỖI: Đăng nhập thất bại hoặc bị huỷ lệnh. Vui lòng thử lại sau."
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
NPM_USER=$(npm whoami)
|
|
20
|
+
echo "✅ Đã đăng nhập NPM với tài khoản: $NPM_USER"
|
|
21
|
+
|
|
22
|
+
if [[ "$NPM_USER" != "vuluu2k" ]]; then
|
|
23
|
+
echo "⚠️ CẢNH BÁO: Package trong package.json đang được đặt tên là devskill."
|
|
24
|
+
echo "Hãy chắc chắn rằng tài khoản '$NPM_USER' của bạn có quyền publish package 'devskill' trên npmjs.com."
|
|
25
|
+
echo ""
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# 2. Tuỳ chọn tăng Version (Semantic Versioning)
|
|
29
|
+
echo "Bạn có muốn tự động tăng phiên bản (Version Bump) không?"
|
|
30
|
+
echo "Nhập patch (chữa lỗi), minor (tính năng nhỏ), major (thay đổi lớn), hoặc nhấn Enter để bỏ qua:"
|
|
31
|
+
read -p "> " BUMP_TYPE
|
|
32
|
+
|
|
33
|
+
if [ -n "$BUMP_TYPE" ]; then
|
|
34
|
+
npm version "$BUMP_TYPE"
|
|
35
|
+
echo "✅ Đã tăng phiên bản thành công!"
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# 3. Đẩy code lên GitHub (nếu rảnh tay)
|
|
39
|
+
read -p "Đẩy toàn bộ thay đổi và Tag version mới lên GitHub luôn không? (y/N): " PUSH_GIT
|
|
40
|
+
if [[ "$PUSH_GIT" =~ ^[Yy]$ ]]; then
|
|
41
|
+
git push
|
|
42
|
+
git push --tags
|
|
43
|
+
echo "✅ Đã đẩy code an toàn lên GitHub."
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# 4. Tiến hành Publish
|
|
47
|
+
echo "🚀 Đang tiến hành Publish lên NPM Registry..."
|
|
48
|
+
npm publish --access public
|
|
49
|
+
|
|
50
|
+
echo "🎉 CHÚC MỪNG! Đã publish thành công!"
|