opencode-skills-collection 3.0.34 → 3.0.36
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/bundled-skills/.antigravity-install-manifest.json +16 -1
- package/bundled-skills/accesslint-audit/SKILL.md +115 -0
- package/bundled-skills/accesslint-diff/SKILL.md +81 -0
- package/bundled-skills/accesslint-scan/SKILL.md +47 -0
- package/bundled-skills/composition-patterns/SKILL.md +87 -0
- package/bundled-skills/composition-patterns/rules/_sections.md +29 -0
- package/bundled-skills/composition-patterns/rules/_template.md +24 -0
- package/bundled-skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/bundled-skills/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/bundled-skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/bundled-skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/bundled-skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/bundled-skills/composition-patterns/rules/state-context-interface.md +191 -0
- package/bundled-skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/bundled-skills/composition-patterns/rules/state-lift-state.md +125 -0
- package/bundled-skills/debugging-toolkit/SKILL.md +35 -0
- package/bundled-skills/deploy-to-vercel/SKILL.md +304 -0
- package/bundled-skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
- package/bundled-skills/deploy-to-vercel/resources/deploy.sh +301 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/backups/README-2026-06-02.md +687 -0
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +4 -4
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +245 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +3 -3
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/plugins.md +21 -13
- package/bundled-skills/docs/users/specialized-plugin-roadmap.md +95 -0
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/mmx-cli/SKILL.md +5 -2
- package/bundled-skills/nextjs-seo-indexing/SKILL.md +3 -3
- package/bundled-skills/polis-protocol/SKILL.md +93 -0
- package/bundled-skills/python-development/SKILL.md +35 -0
- package/bundled-skills/radix-ui-design-system/SKILL.md +2 -2
- package/bundled-skills/react-native-skills/SKILL.md +120 -0
- package/bundled-skills/react-native-skills/rules/_sections.md +86 -0
- package/bundled-skills/react-native-skills/rules/_template.md +28 -0
- package/bundled-skills/react-native-skills/rules/animation-derived-value.md +53 -0
- package/bundled-skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/bundled-skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/bundled-skills/react-native-skills/rules/design-system-compound-components.md +66 -0
- package/bundled-skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/bundled-skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/bundled-skills/react-native-skills/rules/js-hoist-intl.md +61 -0
- package/bundled-skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/bundled-skills/react-native-skills/rules/list-performance-function-references.md +132 -0
- package/bundled-skills/react-native-skills/rules/list-performance-images.md +53 -0
- package/bundled-skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/bundled-skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/bundled-skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/bundled-skills/react-native-skills/rules/list-performance-item-types.md +104 -0
- package/bundled-skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/bundled-skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/bundled-skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/bundled-skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/bundled-skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/bundled-skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/bundled-skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/bundled-skills/react-native-skills/rules/react-state-fallback.md +56 -0
- package/bundled-skills/react-native-skills/rules/react-state-minimize.md +65 -0
- package/bundled-skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/bundled-skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/bundled-skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/bundled-skills/react-native-skills/rules/state-ground-truth.md +80 -0
- package/bundled-skills/react-native-skills/rules/ui-expo-image.md +66 -0
- package/bundled-skills/react-native-skills/rules/ui-image-gallery.md +104 -0
- package/bundled-skills/react-native-skills/rules/ui-measure-views.md +78 -0
- package/bundled-skills/react-native-skills/rules/ui-menus.md +174 -0
- package/bundled-skills/react-native-skills/rules/ui-native-modals.md +77 -0
- package/bundled-skills/react-native-skills/rules/ui-pressable.md +61 -0
- package/bundled-skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/bundled-skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/bundled-skills/react-native-skills/rules/ui-styling.md +87 -0
- package/bundled-skills/schema-markup-generator/SKILL.md +1 -1
- package/bundled-skills/skill-issue/SKILL.md +73 -0
- package/bundled-skills/social-metadata-hardening/SKILL.md +4 -3
- package/bundled-skills/social-post-writer-seo/SKILL.md +19 -0
- package/bundled-skills/tdd-workflows/SKILL.md +35 -0
- package/bundled-skills/user-thoughts/SKILL.md +236 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/README.ai.md +13 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/define.ini +3 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/README.ai.md +25 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/backlog.md +19 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/dev-stack.md +7 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/general.md +7 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/plans.md +7 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/rules.md +7 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/ui/details.md +7 -0
- package/bundled-skills/user-thoughts/assets/Runtime-Template/mdbase/details/ui/outline.md +7 -0
- package/bundled-skills/user-thoughts/references/commands.md +54 -0
- package/bundled-skills/user-thoughts/references/edge-cases.md +84 -0
- package/bundled-skills/user-thoughts/references/safety.md +65 -0
- package/bundled-skills/user-thoughts/references/sortin.md +76 -0
- package/bundled-skills/user-thoughts/scripts/common.py +62 -0
- package/bundled-skills/user-thoughts/scripts/ignore_ops.py +125 -0
- package/bundled-skills/user-thoughts/scripts/init.py +63 -0
- package/bundled-skills/user-thoughts/scripts/show_mdbase.py +93 -0
- package/bundled-skills/user-thoughts/scripts/show_raw.py +42 -0
- package/bundled-skills/user-thoughts/scripts/sortin.py +211 -0
- package/bundled-skills/user-thoughts/scripts/status.py +56 -0
- package/bundled-skills/user-thoughts/scripts/toggle.py +68 -0
- package/bundled-skills/user-thoughts/scripts/write_raw.py +106 -0
- package/bundled-skills/vercel-cli-with-tokens/SKILL.md +361 -0
- package/bundled-skills/vercel-optimize/CONTRIBUTING.md +41 -0
- package/bundled-skills/vercel-optimize/SKILL.md +331 -0
- package/bundled-skills/vercel-optimize/lib/auth-route.mjs +23 -0
- package/bundled-skills/vercel-optimize/lib/budget-summary.mjs +182 -0
- package/bundled-skills/vercel-optimize/lib/citations.mjs +139 -0
- package/bundled-skills/vercel-optimize/lib/cost-coverage.mjs +143 -0
- package/bundled-skills/vercel-optimize/lib/dedup-recs.mjs +325 -0
- package/bundled-skills/vercel-optimize/lib/deep-dive.mjs +350 -0
- package/bundled-skills/vercel-optimize/lib/display-labels.mjs +185 -0
- package/bundled-skills/vercel-optimize/lib/extract-claims.mjs +550 -0
- package/bundled-skills/vercel-optimize/lib/framework-support.mjs +67 -0
- package/bundled-skills/vercel-optimize/lib/gates/build-minutes-fanout.mjs +69 -0
- package/bundled-skills/vercel-optimize/lib/gates/cold-start.mjs +66 -0
- package/bundled-skills/vercel-optimize/lib/gates/contract.mjs +79 -0
- package/bundled-skills/vercel-optimize/lib/gates/cwv-poor.mjs +87 -0
- package/bundled-skills/vercel-optimize/lib/gates/external-api-slow.mjs +55 -0
- package/bundled-skills/vercel-optimize/lib/gates/hard-gates.mjs +73 -0
- package/bundled-skills/vercel-optimize/lib/gates/index.mjs +45 -0
- package/bundled-skills/vercel-optimize/lib/gates/isr-overrevalidation.mjs +62 -0
- package/bundled-skills/vercel-optimize/lib/gates/middleware-heavy.mjs +51 -0
- package/bundled-skills/vercel-optimize/lib/gates/observability-events-attribution.mjs +56 -0
- package/bundled-skills/vercel-optimize/lib/gates/platform-bot-protection.mjs +115 -0
- package/bundled-skills/vercel-optimize/lib/gates/platform-fluid-compute.mjs +83 -0
- package/bundled-skills/vercel-optimize/lib/gates/region-misconfig.mjs +64 -0
- package/bundled-skills/vercel-optimize/lib/gates/route-errors.mjs +80 -0
- package/bundled-skills/vercel-optimize/lib/gates/scanner-driven.mjs +122 -0
- package/bundled-skills/vercel-optimize/lib/gates/select-candidates.mjs +134 -0
- package/bundled-skills/vercel-optimize/lib/gates/slow-route.mjs +88 -0
- package/bundled-skills/vercel-optimize/lib/gates/types.d.ts +38 -0
- package/bundled-skills/vercel-optimize/lib/gates/uncached-route.mjs +93 -0
- package/bundled-skills/vercel-optimize/lib/gates/usage-spike-triage.mjs +121 -0
- package/bundled-skills/vercel-optimize/lib/grade-recommendation.mjs +155 -0
- package/bundled-skills/vercel-optimize/lib/impact-label.mjs +126 -0
- package/bundled-skills/vercel-optimize/lib/impact-magnitude.mjs +60 -0
- package/bundled-skills/vercel-optimize/lib/investigation-brief.mjs +610 -0
- package/bundled-skills/vercel-optimize/lib/observation-safety.mjs +174 -0
- package/bundled-skills/vercel-optimize/lib/project-facts.mjs +99 -0
- package/bundled-skills/vercel-optimize/lib/queries.mjs +315 -0
- package/bundled-skills/vercel-optimize/lib/reconcile-candidates.mjs +372 -0
- package/bundled-skills/vercel-optimize/lib/render-report.mjs +955 -0
- package/bundled-skills/vercel-optimize/lib/repo-root.mjs +86 -0
- package/bundled-skills/vercel-optimize/lib/route-normalize.mjs +220 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs +38 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs +30 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/count-correct.mjs +52 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs +38 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/index.mjs +79 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/middleware-conflict.mjs +36 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/missing-citation.mjs +16 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/pre-release.mjs +74 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/rate-limit.mjs +67 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs +38 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/undeclared-dep.mjs +78 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs +37 -0
- package/bundled-skills/vercel-optimize/lib/sanitizers/window-units.mjs +32 -0
- package/bundled-skills/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs +109 -0
- package/bundled-skills/vercel-optimize/lib/scanners/edge-heavy-import.mjs +94 -0
- package/bundled-skills/vercel-optimize/lib/scanners/force-dynamic.mjs +42 -0
- package/bundled-skills/vercel-optimize/lib/scanners/headers-in-page.mjs +44 -0
- package/bundled-skills/vercel-optimize/lib/scanners/index.mjs +35 -0
- package/bundled-skills/vercel-optimize/lib/scanners/large-static-asset.mjs +92 -0
- package/bundled-skills/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs +42 -0
- package/bundled-skills/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs +55 -0
- package/bundled-skills/vercel-optimize/lib/scanners/missing-cache-headers.mjs +90 -0
- package/bundled-skills/vercel-optimize/lib/scanners/prisma-include-tree.mjs +42 -0
- package/bundled-skills/vercel-optimize/lib/scanners/region-pin-in-config.mjs +88 -0
- package/bundled-skills/vercel-optimize/lib/scanners/source-maps-production.mjs +36 -0
- package/bundled-skills/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs +43 -0
- package/bundled-skills/vercel-optimize/lib/scanners/turbo-force-bypass.mjs +129 -0
- package/bundled-skills/vercel-optimize/lib/scanners/unoptimized-image.mjs +113 -0
- package/bundled-skills/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs +106 -0
- package/bundled-skills/vercel-optimize/lib/support-topics.mjs +355 -0
- package/bundled-skills/vercel-optimize/lib/throttle.mjs +273 -0
- package/bundled-skills/vercel-optimize/lib/util.mjs +17 -0
- package/bundled-skills/vercel-optimize/lib/vercel.mjs +784 -0
- package/bundled-skills/vercel-optimize/lib/verify-claim.mjs +1296 -0
- package/bundled-skills/vercel-optimize/lib/workspace-resolver.mjs +521 -0
- package/bundled-skills/vercel-optimize/references/candidates.md +176 -0
- package/bundled-skills/vercel-optimize/references/data-collection.md +218 -0
- package/bundled-skills/vercel-optimize/references/docs-library.json +683 -0
- package/bundled-skills/vercel-optimize/references/doctrine.md +105 -0
- package/bundled-skills/vercel-optimize/references/observability-plus.md +108 -0
- package/bundled-skills/vercel-optimize/references/playbooks/README.md +53 -0
- package/bundled-skills/vercel-optimize/references/playbooks/ai-application.md +32 -0
- package/bundled-skills/vercel-optimize/references/playbooks/api-service.md +30 -0
- package/bundled-skills/vercel-optimize/references/playbooks/content-site.md +30 -0
- package/bundled-skills/vercel-optimize/references/playbooks/ecommerce.md +30 -0
- package/bundled-skills/vercel-optimize/references/playbooks/marketing.md +30 -0
- package/bundled-skills/vercel-optimize/references/playbooks/saas.md +31 -0
- package/bundled-skills/vercel-optimize/references/playbooks/sveltekit.md +75 -0
- package/bundled-skills/vercel-optimize/references/recommendations.md +203 -0
- package/bundled-skills/vercel-optimize/references/scanner-patterns.md +251 -0
- package/bundled-skills/vercel-optimize/references/scoring.md +205 -0
- package/bundled-skills/vercel-optimize/references/support-topics/README.md +46 -0
- package/bundled-skills/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/auth-preserving-parallelization.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/database-egress-pooling-region.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/dynamic-rendering-traps.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/external-api-critical-path-platform.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/external-api-critical-path.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/fluid-compute-caveats.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/function-duration-io-and-after.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/function-invocation-reduction.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/image-optimization-cost-control.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/next-script-third-party-strategy.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/observability-events-cost-attribution.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/post-response-work-waituntil.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/route-error-durable-offload.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/route-error-runtime-limits.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/usage-spike-triage.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md +23 -0
- package/bundled-skills/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md +22 -0
- package/bundled-skills/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md +23 -0
- package/bundled-skills/vercel-optimize/references/verification.md +102 -0
- package/bundled-skills/vercel-optimize/references/voice.md +76 -0
- package/bundled-skills/vercel-optimize/scripts/budget-summary.mjs +56 -0
- package/bundled-skills/vercel-optimize/scripts/build-docs.mjs +74 -0
- package/bundled-skills/vercel-optimize/scripts/check-citations.mjs +81 -0
- package/bundled-skills/vercel-optimize/scripts/check-docs-fresh.mjs +93 -0
- package/bundled-skills/vercel-optimize/scripts/collect-signals.mjs +576 -0
- package/bundled-skills/vercel-optimize/scripts/collect-sub-agent-outputs.mjs +296 -0
- package/bundled-skills/vercel-optimize/scripts/deep-dive.mjs +319 -0
- package/bundled-skills/vercel-optimize/scripts/gate-investigations.mjs +166 -0
- package/bundled-skills/vercel-optimize/scripts/merge-signals.mjs +192 -0
- package/bundled-skills/vercel-optimize/scripts/prepare-investigation-brief.mjs +231 -0
- package/bundled-skills/vercel-optimize/scripts/reconcile-candidates.mjs +62 -0
- package/bundled-skills/vercel-optimize/scripts/render-report.mjs +437 -0
- package/bundled-skills/vercel-optimize/scripts/scan-codebase.mjs +313 -0
- package/bundled-skills/vercel-optimize/scripts/verify-and-regen.mjs +346 -0
- package/bundled-skills/vercel-optimize/scripts/verify-finding.mjs +19 -0
- package/bundled-skills/vercel-react-view-transitions/SKILL.md +327 -0
- package/bundled-skills/vercel-react-view-transitions/references/css-recipes.md +242 -0
- package/bundled-skills/vercel-react-view-transitions/references/implementation.md +182 -0
- package/bundled-skills/vercel-react-view-transitions/references/nextjs.md +176 -0
- package/bundled-skills/vercel-react-view-transitions/references/patterns.md +262 -0
- package/bundled-skills/vibe-code-cleanup/SKILL.md +4 -4
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +3 -2
- package/package.json +1 -1
- package/skills_index.json +338 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"updatedAt": "2026-06-
|
|
3
|
+
"updatedAt": "2026-06-04T02:31:57.779Z",
|
|
4
4
|
"entries": [
|
|
5
5
|
"00-andruia-consultant",
|
|
6
6
|
"007",
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
"ab-test-setup",
|
|
11
11
|
"acceptance-orchestrator",
|
|
12
12
|
"accessibility-compliance-accessibility-audit",
|
|
13
|
+
"accesslint-audit",
|
|
14
|
+
"accesslint-diff",
|
|
15
|
+
"accesslint-scan",
|
|
13
16
|
"active-directory-attacks",
|
|
14
17
|
"activecampaign-automation",
|
|
15
18
|
"ad-creative",
|
|
@@ -377,6 +380,7 @@
|
|
|
377
380
|
"competitive-landscape",
|
|
378
381
|
"competitor-alternatives",
|
|
379
382
|
"complexity-cuts",
|
|
383
|
+
"composition-patterns",
|
|
380
384
|
"comprehensive-review-full-review",
|
|
381
385
|
"comprehensive-review-pr-enhance",
|
|
382
386
|
"computer-use-agents",
|
|
@@ -458,6 +462,7 @@
|
|
|
458
462
|
"debug-buttercup",
|
|
459
463
|
"debugger",
|
|
460
464
|
"debugging-strategies",
|
|
465
|
+
"debugging-toolkit",
|
|
461
466
|
"debugging-toolkit-smart-debug",
|
|
462
467
|
"decision-navigator",
|
|
463
468
|
"deep-research",
|
|
@@ -465,6 +470,7 @@
|
|
|
465
470
|
"defuddle",
|
|
466
471
|
"dependency-management-deps-audit",
|
|
467
472
|
"dependency-upgrade",
|
|
473
|
+
"deploy-to-vercel",
|
|
468
474
|
"deployment-engineer",
|
|
469
475
|
"deployment-pipeline-design",
|
|
470
476
|
"deployment-procedures",
|
|
@@ -1029,6 +1035,7 @@
|
|
|
1029
1035
|
"plotly",
|
|
1030
1036
|
"podcast-generation",
|
|
1031
1037
|
"polars",
|
|
1038
|
+
"polis-protocol",
|
|
1032
1039
|
"popup-cro",
|
|
1033
1040
|
"posix-shell-pro",
|
|
1034
1041
|
"postgres-best-practices",
|
|
@@ -1073,6 +1080,7 @@
|
|
|
1073
1080
|
"pydantic-ai",
|
|
1074
1081
|
"pydantic-models-py",
|
|
1075
1082
|
"pypict-skill",
|
|
1083
|
+
"python-development",
|
|
1076
1084
|
"python-development-python-scaffold",
|
|
1077
1085
|
"python-fastapi-development",
|
|
1078
1086
|
"python-packaging",
|
|
@@ -1095,6 +1103,7 @@
|
|
|
1095
1103
|
"react-flow-node-ts",
|
|
1096
1104
|
"react-modernization",
|
|
1097
1105
|
"react-native-architecture",
|
|
1106
|
+
"react-native-skills",
|
|
1098
1107
|
"react-nextjs-development",
|
|
1099
1108
|
"react-patterns",
|
|
1100
1109
|
"react-state-management",
|
|
@@ -1240,6 +1249,7 @@
|
|
|
1240
1249
|
"skill-developer",
|
|
1241
1250
|
"skill-improver",
|
|
1242
1251
|
"skill-installer",
|
|
1252
|
+
"skill-issue",
|
|
1243
1253
|
"skill-optimizer",
|
|
1244
1254
|
"skill-rails-upgrade",
|
|
1245
1255
|
"skill-router",
|
|
@@ -1317,6 +1327,7 @@
|
|
|
1317
1327
|
"tcm-constitution-analyzer",
|
|
1318
1328
|
"tdd-orchestrator",
|
|
1319
1329
|
"tdd-workflow",
|
|
1330
|
+
"tdd-workflows",
|
|
1320
1331
|
"tdd-workflows-tdd-cycle",
|
|
1321
1332
|
"tdd-workflows-tdd-green",
|
|
1322
1333
|
"tdd-workflows-tdd-red",
|
|
@@ -1399,6 +1410,7 @@
|
|
|
1399
1410
|
"unsplash-integration",
|
|
1400
1411
|
"upgrading-expo",
|
|
1401
1412
|
"upstash-qstash",
|
|
1413
|
+
"user-thoughts",
|
|
1402
1414
|
"using-git-worktrees",
|
|
1403
1415
|
"using-neon",
|
|
1404
1416
|
"using-superpowers",
|
|
@@ -1416,7 +1428,10 @@
|
|
|
1416
1428
|
"vector-index-tuning",
|
|
1417
1429
|
"vercel-ai-sdk-expert",
|
|
1418
1430
|
"vercel-automation",
|
|
1431
|
+
"vercel-cli-with-tokens",
|
|
1419
1432
|
"vercel-deployment",
|
|
1433
|
+
"vercel-optimize",
|
|
1434
|
+
"vercel-react-view-transitions",
|
|
1420
1435
|
"verification-before-completion",
|
|
1421
1436
|
"vexor",
|
|
1422
1437
|
"vexor-cli",
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accesslint-audit
|
|
3
|
+
description: "Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit→verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to a browser-MCP composition or HTML-string audits."
|
|
4
|
+
risk: safe
|
|
5
|
+
source: "https://github.com/AccessLint/skills"
|
|
6
|
+
date_added: "2026-06-02"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You audit accessibility and optionally fix what's broken.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
- Use this skill when the task matches this description: Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit→verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to a browser-MCP composition or HTML-string audits.
|
|
13
|
+
|
|
14
|
+
## Pick a mode from the user's intent
|
|
15
|
+
|
|
16
|
+
- **Report mode** — "audit my codebase", "review src/components/", "what's wrong with this page?", "give me an a11y report". You audit + write a report. **You do not edit files.**
|
|
17
|
+
- **Fix mode** — "fix the a11y issues in X", "audit and fix", "make this accessible", "verify the contrast fix landed", or hands you a violation report and asks to apply it. You audit → edit → verify.
|
|
18
|
+
|
|
19
|
+
If unsure, ask. Don't default-to-fix when the user only asked for an audit.
|
|
20
|
+
|
|
21
|
+
For very large sweeps where main-thread context cost matters, you can be invoked via `Task` (general-purpose agent) for context isolation. The recipe is the same either way.
|
|
22
|
+
|
|
23
|
+
## Picking a flow
|
|
24
|
+
|
|
25
|
+
Three flows, in order of preference.
|
|
26
|
+
|
|
27
|
+
1. **`audit_live`** — try first for any URL. Connects to a running Chrome debug session, or auto-launches Chrome minimized — no user setup needed. Single call; IIFE bytes don't enter your context.
|
|
28
|
+
2. **`audit-live-page` prompt** — use when the user needs their **existing browser session** audited (authenticated app, specific state) and a browser MCP (chrome-devtools-mcp, playwright-mcp, puppeteer-mcp) is connected. Invoke via `Skill` with `mode: "fix"` or `mode: "plan"`.
|
|
29
|
+
3. **`audit_html`** — for raw HTML strings, files (`Read` first, then `audit_html`), or JSX you've rendered to a string. Pair with `audit_diff({ html })` for fix-mode verification.
|
|
30
|
+
|
|
31
|
+
For non-URL targets, skip straight to flow 3. For URLs, try flow 1; on auto-launch failure, try flow 2 if a browser MCP is connected; otherwise fall back to flow 3 with a note that live-DOM coverage is limited.
|
|
32
|
+
|
|
33
|
+
## Scope handling (report mode)
|
|
34
|
+
|
|
35
|
+
- **Directory path** — analyze all relevant files within.
|
|
36
|
+
- **Multiple files** — analyze the listed files plus imports they reach.
|
|
37
|
+
- **A URL** — audit it. If it's a dev-server URL, that's flow 1 or 2.
|
|
38
|
+
- **No arguments** — ask the user to narrow scope. Whole-codebase sweeps are rarely the right thing.
|
|
39
|
+
|
|
40
|
+
State the scope explicitly at the start of your report.
|
|
41
|
+
|
|
42
|
+
## Approach (report mode)
|
|
43
|
+
|
|
44
|
+
1. **Map the surface.** Glob/Grep to enumerate components, templates, styles. Sample representative files; don't open everything blindly.
|
|
45
|
+
2. **Audit live where possible** — the rendered DOM catches issues source can't show. Use the flow picker above.
|
|
46
|
+
3. **Look for patterns.** If one component fails a rule, similar components likely do too. Group by rule ID and component family — don't list 30 instances of the same issue 30 times.
|
|
47
|
+
4. **Prioritize by user impact.** Critical/serious first. Many low-impact violations of one rule are often a single root-cause fix.
|
|
48
|
+
5. **Use `format: "compact"` for sweep-time calls.** Reserve verbose output for rules you'll expand in the report.
|
|
49
|
+
6. **Trust `Source:` lines.** Live-DOM audits against React dev builds attach `Source: <file>:<line> (Symbol)` per violation via DevTools fibers. Use it as the file pointer instead of grepping selectors. Fall back to stable hooks → visible text → tree position when absent.
|
|
50
|
+
7. **Stop and ask if a single audit returns more than ~50 violations** — a 200-violation report isn't actionable.
|
|
51
|
+
|
|
52
|
+
The engine catches what's mechanically detectable. Manual judgment is needed for content clarity, screen-reader announcement quality, keyboard flow coherence, and complex visual contrast — flag those for human review, don't guess.
|
|
53
|
+
|
|
54
|
+
### Report format
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
# Accessibility audit — <scope>
|
|
58
|
+
|
|
59
|
+
## Summary
|
|
60
|
+
- N critical, M serious, K moderate, J minor (after deduplication)
|
|
61
|
+
- Most impactful patterns: <one-line each, max 3>
|
|
62
|
+
|
|
63
|
+
## Critical (blocks access)
|
|
64
|
+
For each pattern:
|
|
65
|
+
- **Pattern**: <one-line description>
|
|
66
|
+
- **WCAG**: <ID> — <name>
|
|
67
|
+
- **Affected files**: <file:line> (×N if repeated)
|
|
68
|
+
- **Fix**: <directive from engine output, or specific code change>
|
|
69
|
+
- **Why critical**: <user impact>
|
|
70
|
+
|
|
71
|
+
## Serious
|
|
72
|
+
[same shape]
|
|
73
|
+
|
|
74
|
+
## Moderate / Minor
|
|
75
|
+
[Bullet list, deduplicated by rule. Skip per-instance detail unless the fix differs.]
|
|
76
|
+
|
|
77
|
+
## Recommendations
|
|
78
|
+
- Architectural / pattern-level changes that would prevent recurrence.
|
|
79
|
+
- Tooling or component abstractions worth introducing.
|
|
80
|
+
- What to verify manually (screen reader, keyboard, low-vision testing).
|
|
81
|
+
|
|
82
|
+
## Positive findings
|
|
83
|
+
What the codebase does well — short, factual, reinforces practices to keep.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Include rule IDs in every entry. Quote the `Fix:` directive verbatim for `mechanical` rules. For `visual` / `contextual`, leave a `TODO` with the rule ID; don't invent content.
|
|
87
|
+
|
|
88
|
+
## Recipe (fix mode)
|
|
89
|
+
|
|
90
|
+
1. **Baseline.** Audit with `name: "before"` and `format: "compact"`.
|
|
91
|
+
2. **Plan + apply.** For each violation:
|
|
92
|
+
- `Source:` line present → open that file at that line. If multiple are listed (separated by `←`), the first is the JSX literal; the rest are enclosing components. Use `Symbol` to disambiguate.
|
|
93
|
+
- No `Source:` → grep stable hooks (`data-testid`, `id`, `aria-label`), then visible text, then tree position.
|
|
94
|
+
- The violation's `Fixability:` and `Fix:` fields are authoritative — apply mechanical fixes verbatim, leave `TODO`s with the rule ID for `contextual` / `visual`. Never invent content.
|
|
95
|
+
- Group same-file edits into one operation.
|
|
96
|
+
- Confirm scope with the user before touching files outside the obvious target, or before more than ~10 mechanical fixes.
|
|
97
|
+
3. **Verify.** Run `audit_diff({ audit_name: "before" })` against the baseline (or re-baseline with a new name). Confirm `-fixed` covers your targets and `+new` is empty.
|
|
98
|
+
|
|
99
|
+
`Source:` lines come from React DevTools fibers and only appear in live-DOM audits against React dev builds. Static audits won't have them — fall back to selectors.
|
|
100
|
+
|
|
101
|
+
When unsure about a rule, call `explain_rule({ id: "<rule-id>" })` for guidance and `browserHint`.
|
|
102
|
+
|
|
103
|
+
## When to bail (fix mode)
|
|
104
|
+
|
|
105
|
+
- A violation has no `Fix:` directive — leave a `TODO`, don't guess.
|
|
106
|
+
- Verification fails (anything in `+new`, or a targeted rule missing from `-fixed`) — name it and stop. Do not iterate silently.
|
|
107
|
+
|
|
108
|
+
## Output (fix mode)
|
|
109
|
+
|
|
110
|
+
Per cycle: flow used, violations by impact, what was applied (file + rule), what was deferred (`TODO`s + reasons), final diff.
|
|
111
|
+
|
|
112
|
+
## Limitations
|
|
113
|
+
- Use this skill only when the task clearly matches the scope described above.
|
|
114
|
+
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
|
|
115
|
+
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accesslint-diff
|
|
3
|
+
description: "Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [<name>] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use `scan` for a full audit with no diffing."
|
|
4
|
+
risk: safe
|
|
5
|
+
source: "https://github.com/AccessLint/skills"
|
|
6
|
+
date_added: "2026-06-02"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Default branch: !`git symbolic-ref refs/remotes/origin/HEAD --short 2>/dev/null | sed 's|.*/||' || echo main`
|
|
10
|
+
|
|
11
|
+
Report only what changed. Locate; don't fix. If no URL in `$ARGUMENTS`, ask for one.
|
|
12
|
+
|
|
13
|
+
Parse `$ARGUMENTS`: strip `--branch <name>` if present → branch mode. If `--branch` has no value, use the default branch above. Remainder is the URL.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
- Use this skill when the task matches this description: Diff a live page's accessibility violations against a baseline — by default compares uncommitted changes (stash-based), or pass --branch [<name>] to diff against a branch. Reports only new violations introduced, violations fixed, and pre-existing count. Use `scan` for a full audit with no diffing.
|
|
17
|
+
|
|
18
|
+
## 1. Audit
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Stash mode** (default — uncommitted changes). Tell the user first: _"Running in diff mode — stashing your changes to capture a baseline, then restoring. Your working tree will be fully restored."_ If `git stash push` fails, warn and exit.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
git stash push -u -m "accesslint-diff-baseline"
|
|
28
|
+
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot
|
|
29
|
+
git stash pop && sleep 2
|
|
30
|
+
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Branch mode** (`--branch <name>`). Tell the user first: _"Diffing against `<name>` — checking out that branch to capture a baseline, then restoring. Your working tree will be fully restored."_
|
|
34
|
+
|
|
35
|
+
Branch switching triggers a rebuild but not a browser reload — the CLI opens a fresh tab each time so it always reads the current build. Use `--wait-for "<selector>"` to gate the audit until the rebuild is ready; without it, warn the user that a slow build may yield a stale baseline.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
git diff --quiet && git diff --cached --quiet || git stash push -u -m "accesslint-diff-branch"
|
|
39
|
+
git checkout <branch>
|
|
40
|
+
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --update-snapshot [--wait-for "<selector>"]
|
|
41
|
+
git checkout - && git stash pop 2>/dev/null
|
|
42
|
+
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --snapshot accesslint-diff --snapshot-dir /tmp --format json [--wait-for "<selector>"]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Pass `--selector`, `--include-aaa` to **both** runs.
|
|
46
|
+
|
|
47
|
+
## 2. Report
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Accessibility diff — http://localhost:3000/ vs main (94 rules, live DOM)
|
|
51
|
+
2 new · 1 fixed · 4 pre-existing hidden
|
|
52
|
+
|
|
53
|
+
New — Critical
|
|
54
|
+
- color-contrast — 2.1:1 (needs 4.5:1), #bbb on #fff
|
|
55
|
+
where: main > p.subtitle fix: darken to #767676
|
|
56
|
+
Fixed
|
|
57
|
+
- img-alt — <img src="old.jpg"> (no longer present)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Each new violation: **where** (selector verbatim + `file:line (symbol)` if `source` present — never fabricate), **evidence**, **fix** (mechanical change or `NEEDS HUMAN`).
|
|
61
|
+
|
|
62
|
+
Don't edit. For fixes: apply mechanical ones then re-run `accesslint:diff` to verify; for bulk work hand off to `accesslint:audit`.
|
|
63
|
+
|
|
64
|
+
## 3. Tear down
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx -y @accesslint/chrome@latest stop --all # skip if ensure reported "managed":false
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Gotchas
|
|
71
|
+
|
|
72
|
+
- `ensure` always determines the port — never hardcode 9222.
|
|
73
|
+
- CLI exit 2 = bad URL or page never loaded; check the dev server.
|
|
74
|
+
- Stash mode: `sleep 2` covers most HMR cases; if baseline looks identical to current, add `--wait-for "<selector>"`.
|
|
75
|
+
- Branch mode: no HMR — CLI opens a fresh tab each run. `--wait-for` is the rebuild gate.
|
|
76
|
+
- Heavy DOM changes between runs cause selector drift — re-run with `accesslint:scan` for the full picture.
|
|
77
|
+
|
|
78
|
+
## Limitations
|
|
79
|
+
- Use this skill only when the task clearly matches the scope described above.
|
|
80
|
+
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
|
|
81
|
+
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accesslint-scan
|
|
3
|
+
description: "Audit a live page for accessibility issues, locate each WCAG violation precisely, and return a selector-grounded fix worklist without editing."
|
|
4
|
+
risk: safe
|
|
5
|
+
source: "https://github.com/AccessLint/skills"
|
|
6
|
+
date_added: "2026-06-02"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Audit a live page and report what's broken and where. Locate; don't fix. If no URL in `$ARGUMENTS`, ask for one.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
- Use this skill when the task matches this description: Audit a live page for accessibility issues, locate each WCAG violation precisely, and return a selector-grounded fix worklist without editing.
|
|
13
|
+
|
|
14
|
+
## 1. Audit
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
PORT=$(npx -y @accesslint/chrome@latest ensure | node -e 'process.stdin.on("data",d=>process.stdout.write(""+JSON.parse(d).port))')
|
|
18
|
+
npx -y @accesslint/cli@latest "<url>" --port "$PORT" --format json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Flags as needed: `--selector`, `--wait-for "<selector>"`, `--include-aaa`, `--disable <rules>`.
|
|
22
|
+
|
|
23
|
+
## 2. Report
|
|
24
|
+
|
|
25
|
+
Counts by impact, then one entry per violation:
|
|
26
|
+
|
|
27
|
+
- **where** — selector verbatim + `file:line (symbol)` if `source` is present — never fabricate. If no violation has `source`, note "source mapping unavailable — located by selector only".
|
|
28
|
+
- **evidence** — contrast ratio, missing attribute, empty name
|
|
29
|
+
- **fix** — mechanical change or `NEEDS HUMAN`
|
|
30
|
+
|
|
31
|
+
Don't edit. For fixes: apply mechanical ones then re-run to verify; for bulk work hand off to `accesslint:audit`.
|
|
32
|
+
|
|
33
|
+
## 3. Tear down
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx -y @accesslint/chrome@latest stop --all # skip if ensure reported "managed":false
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Gotchas
|
|
40
|
+
|
|
41
|
+
- `ensure` always determines the port — never hardcode 9222.
|
|
42
|
+
- CLI exit 2 = bad URL or page never loaded; check the dev server.
|
|
43
|
+
|
|
44
|
+
## Limitations
|
|
45
|
+
- Use this skill only when the task clearly matches the scope described above.
|
|
46
|
+
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
|
|
47
|
+
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: composition-patterns
|
|
3
|
+
description: "Use when working with composition-patterns tasks or workflows"
|
|
4
|
+
risk: safe
|
|
5
|
+
source: "https://github.com/vercel-labs/agent-skills"
|
|
6
|
+
date_added: "2026-06-02"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# React Composition Patterns
|
|
10
|
+
|
|
11
|
+
Composition patterns for building flexible, maintainable React components. Avoid
|
|
12
|
+
boolean prop proliferation by using compound components, lifting state, and
|
|
13
|
+
composing internals. These patterns make codebases easier for both humans and AI
|
|
14
|
+
agents to work with as they scale.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
Reference these guidelines when:
|
|
18
|
+
|
|
19
|
+
- Refactoring components with many boolean props
|
|
20
|
+
- Building reusable component libraries
|
|
21
|
+
- Designing flexible component APIs
|
|
22
|
+
- Reviewing component architecture
|
|
23
|
+
- Working with compound components or context providers
|
|
24
|
+
|
|
25
|
+
## Rule Categories by Priority
|
|
26
|
+
|
|
27
|
+
| Priority | Category | Impact | Prefix |
|
|
28
|
+
| -------- | ----------------------- | ------ | --------------- |
|
|
29
|
+
| 1 | Component Architecture | HIGH | `architecture-` |
|
|
30
|
+
| 2 | State Management | MEDIUM | `state-` |
|
|
31
|
+
| 3 | Implementation Patterns | MEDIUM | `patterns-` |
|
|
32
|
+
| 4 | React 19 APIs | MEDIUM | `react19-` |
|
|
33
|
+
|
|
34
|
+
## Quick Reference
|
|
35
|
+
|
|
36
|
+
### 1. Component Architecture (HIGH)
|
|
37
|
+
|
|
38
|
+
- `architecture-avoid-boolean-props` - Don't add boolean props to customize
|
|
39
|
+
behavior; use composition
|
|
40
|
+
- `architecture-compound-components` - Structure complex components with shared
|
|
41
|
+
context
|
|
42
|
+
|
|
43
|
+
### 2. State Management (MEDIUM)
|
|
44
|
+
|
|
45
|
+
- `state-decouple-implementation` - Provider is the only place that knows how
|
|
46
|
+
state is managed
|
|
47
|
+
- `state-context-interface` - Define generic interface with state, actions, meta
|
|
48
|
+
for dependency injection
|
|
49
|
+
- `state-lift-state` - Move state into provider components for sibling access
|
|
50
|
+
|
|
51
|
+
### 3. Implementation Patterns (MEDIUM)
|
|
52
|
+
|
|
53
|
+
- `patterns-explicit-variants` - Create explicit variant components instead of
|
|
54
|
+
boolean modes
|
|
55
|
+
- `patterns-children-over-render-props` - Use children for composition instead
|
|
56
|
+
of renderX props
|
|
57
|
+
|
|
58
|
+
### 4. React 19 APIs (MEDIUM)
|
|
59
|
+
|
|
60
|
+
> **⚠️ React 19+ only.** Skip this section if using React 18 or earlier.
|
|
61
|
+
|
|
62
|
+
- `react19-no-forwardref` - Don't use `forwardRef`; use `use()` instead of `useContext()`
|
|
63
|
+
|
|
64
|
+
## How to Use
|
|
65
|
+
|
|
66
|
+
Read individual rule files for detailed explanations and code examples:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
rules/architecture-avoid-boolean-props.md
|
|
70
|
+
rules/state-context-interface.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Each rule file contains:
|
|
74
|
+
|
|
75
|
+
- Brief explanation of why it matters
|
|
76
|
+
- Incorrect code example with explanation
|
|
77
|
+
- Correct code example with explanation
|
|
78
|
+
- Additional context and references
|
|
79
|
+
|
|
80
|
+
## Full Compiled Document
|
|
81
|
+
|
|
82
|
+
For the complete guide with all rules expanded: `AGENTS.md`
|
|
83
|
+
|
|
84
|
+
## Limitations
|
|
85
|
+
- Use this skill only when the task clearly matches the scope described above.
|
|
86
|
+
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
|
|
87
|
+
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Sections
|
|
2
|
+
|
|
3
|
+
This file defines all sections, their ordering, impact levels, and descriptions.
|
|
4
|
+
The section ID (in parentheses) is the filename prefix used to group rules.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Component Architecture (architecture)
|
|
9
|
+
|
|
10
|
+
**Impact:** HIGH
|
|
11
|
+
**Description:** Fundamental patterns for structuring components to avoid prop
|
|
12
|
+
proliferation and enable flexible composition.
|
|
13
|
+
|
|
14
|
+
## 2. State Management (state)
|
|
15
|
+
|
|
16
|
+
**Impact:** MEDIUM
|
|
17
|
+
**Description:** Patterns for lifting state and managing shared context across
|
|
18
|
+
composed components.
|
|
19
|
+
|
|
20
|
+
## 3. Implementation Patterns (patterns)
|
|
21
|
+
|
|
22
|
+
**Impact:** MEDIUM
|
|
23
|
+
**Description:** Specific techniques for implementing compound components and
|
|
24
|
+
context providers.
|
|
25
|
+
|
|
26
|
+
## 4. React 19 APIs (react19)
|
|
27
|
+
|
|
28
|
+
**Impact:** MEDIUM
|
|
29
|
+
**Description:** React 19+ only. Don't use `forwardRef`; use `use()` instead of `useContext()`.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Rule Title Here
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: brief description of impact
|
|
5
|
+
tags: composition, components
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Rule Title Here
|
|
9
|
+
|
|
10
|
+
Brief explanation of the rule and why it matters.
|
|
11
|
+
|
|
12
|
+
**Incorrect:**
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
// Bad code example
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Correct:**
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
// Good code example
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Reference: [Link](https://example.com)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Avoid Boolean Prop Proliferation
|
|
3
|
+
impact: CRITICAL
|
|
4
|
+
impactDescription: prevents unmaintainable component variants
|
|
5
|
+
tags: composition, props, architecture
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Avoid Boolean Prop Proliferation
|
|
9
|
+
|
|
10
|
+
Don't add boolean props like `isThread`, `isEditing`, `isDMThread` to customize
|
|
11
|
+
component behavior. Each boolean doubles possible states and creates
|
|
12
|
+
unmaintainable conditional logic. Use composition instead.
|
|
13
|
+
|
|
14
|
+
**Incorrect (boolean props create exponential complexity):**
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
function Composer({
|
|
18
|
+
onSubmit,
|
|
19
|
+
isThread,
|
|
20
|
+
channelId,
|
|
21
|
+
isDMThread,
|
|
22
|
+
dmId,
|
|
23
|
+
isEditing,
|
|
24
|
+
isForwarding,
|
|
25
|
+
}: Props) {
|
|
26
|
+
return (
|
|
27
|
+
<form>
|
|
28
|
+
<Header />
|
|
29
|
+
<Input />
|
|
30
|
+
{isDMThread ? (
|
|
31
|
+
<AlsoSendToDMField id={dmId} />
|
|
32
|
+
) : isThread ? (
|
|
33
|
+
<AlsoSendToChannelField id={channelId} />
|
|
34
|
+
) : null}
|
|
35
|
+
{isEditing ? (
|
|
36
|
+
<EditActions />
|
|
37
|
+
) : isForwarding ? (
|
|
38
|
+
<ForwardActions />
|
|
39
|
+
) : (
|
|
40
|
+
<DefaultActions />
|
|
41
|
+
)}
|
|
42
|
+
<Footer onSubmit={onSubmit} />
|
|
43
|
+
</form>
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Correct (composition eliminates conditionals):**
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
// Channel composer
|
|
52
|
+
function ChannelComposer() {
|
|
53
|
+
return (
|
|
54
|
+
<Composer.Frame>
|
|
55
|
+
<Composer.Header />
|
|
56
|
+
<Composer.Input />
|
|
57
|
+
<Composer.Footer>
|
|
58
|
+
<Composer.Attachments />
|
|
59
|
+
<Composer.Formatting />
|
|
60
|
+
<Composer.Emojis />
|
|
61
|
+
<Composer.Submit />
|
|
62
|
+
</Composer.Footer>
|
|
63
|
+
</Composer.Frame>
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Thread composer - adds "also send to channel" field
|
|
68
|
+
function ThreadComposer({ channelId }: { channelId: string }) {
|
|
69
|
+
return (
|
|
70
|
+
<Composer.Frame>
|
|
71
|
+
<Composer.Header />
|
|
72
|
+
<Composer.Input />
|
|
73
|
+
<AlsoSendToChannelField id={channelId} />
|
|
74
|
+
<Composer.Footer>
|
|
75
|
+
<Composer.Formatting />
|
|
76
|
+
<Composer.Emojis />
|
|
77
|
+
<Composer.Submit />
|
|
78
|
+
</Composer.Footer>
|
|
79
|
+
</Composer.Frame>
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Edit composer - different footer actions
|
|
84
|
+
function EditComposer() {
|
|
85
|
+
return (
|
|
86
|
+
<Composer.Frame>
|
|
87
|
+
<Composer.Input />
|
|
88
|
+
<Composer.Footer>
|
|
89
|
+
<Composer.Formatting />
|
|
90
|
+
<Composer.Emojis />
|
|
91
|
+
<Composer.CancelEdit />
|
|
92
|
+
<Composer.SaveEdit />
|
|
93
|
+
</Composer.Footer>
|
|
94
|
+
</Composer.Frame>
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Each variant is explicit about what it renders. We can share internals without
|
|
100
|
+
sharing a single monolithic parent.
|