opencode-agent-kit 1.0.0
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 +796 -0
- package/bin/commands/init.mjs +221 -0
- package/bin/init.mjs +21 -0
- package/package.json +22 -0
- package/template/.opencode/agent-docs/backend/README.md +0 -0
- package/template/.opencode/agent-docs/backend/node/BACKEND_PATTERNS.md +82 -0
- package/template/.opencode/agent-docs/backend/node/BACKEND_QUICK_START.md +49 -0
- package/template/.opencode/agent-docs/frontend/next/README.md +0 -0
- package/template/.opencode/agent-docs/frontend/nuxt/API_PATTERNS.md +807 -0
- package/template/.opencode/agent-docs/frontend/nuxt/CHEATSHEET.md +676 -0
- package/template/.opencode/agent-docs/frontend/nuxt/COMPLETION_REPORT.md +613 -0
- package/template/.opencode/agent-docs/frontend/nuxt/EXAMPLES.md +956 -0
- package/template/.opencode/agent-docs/frontend/nuxt/INDEX.md +596 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MCP_GUIDE.md +881 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_30_DAYS.md +256 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_CHECKLIST.md +156 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_WEEKLY_ASSIGNMENTS.md +191 -0
- package/template/.opencode/agent-docs/frontend/nuxt/QUICK_START.md +509 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README.md +506 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README_AGENTS.md +140 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README_DOCS.md +65 -0
- package/template/.opencode/agent-docs/frontend/nuxt/SUMMARY.md +474 -0
- package/template/.opencode/agent-docs/frontend/nuxt/TEAM_OPERATING_GUIDE.md +54 -0
- package/template/.opencode/agent-docs/frontend/nuxt/TESTING_GUIDE.md +904 -0
- package/template/.opencode/agent-docs/frontend/nuxt/WORKFLOWS.md +758 -0
- package/template/.opencode/agent-docs/frontend/react/API_PATTERNS.md +187 -0
- package/template/.opencode/agent-docs/frontend/react/CHEATSHEET.md +87 -0
- package/template/.opencode/agent-docs/frontend/react/INDEX.md +45 -0
- package/template/.opencode/agent-docs/frontend/react/QUICK_START.md +43 -0
- package/template/.opencode/agent-docs/frontend/react/README.md +159 -0
- package/template/.opencode/agent-docs/frontend/vue/README.md +0 -0
- package/template/.opencode/agent-docs/mobile/android/README.md +45 -0
- package/template/.opencode/agent-docs/mobile/flutter/README.md +44 -0
- package/template/.opencode/agents/android-developer.md +418 -0
- package/template/.opencode/agents/code-igniter-3-fullstack.md +345 -0
- package/template/.opencode/agents/code-reviewer.md +517 -0
- package/template/.opencode/agents/database-specialist.md +455 -0
- package/template/.opencode/agents/devops-specialist.md +562 -0
- package/template/.opencode/agents/flutter-developer.md +556 -0
- package/template/.opencode/agents/it-leader.md +911 -0
- package/template/.opencode/agents/laravel-advanced.md +691 -0
- package/template/.opencode/agents/node-backend-developer.md +343 -0
- package/template/.opencode/agents/nuxt-frontend-developer-mentor.md +402 -0
- package/template/.opencode/agents/nuxt-frontend-developer.md +1573 -0
- package/template/.opencode/agents/react-frontend-developer.md +1017 -0
- package/template/.opencode/agents/seo-specialist.md +681 -0
- package/template/.opencode/agents/ui-ux-designer.md +783 -0
- package/template/.opencode/commands/android-build/command.md +25 -0
- package/template/.opencode/commands/android-test/command.md +23 -0
- package/template/.opencode/commands/build-fix.md +29 -0
- package/template/.opencode/commands/checkpoint.md +74 -0
- package/template/.opencode/commands/code-review.md +40 -0
- package/template/.opencode/commands/e2e.md +363 -0
- package/template/.opencode/commands/eval.md +120 -0
- package/template/.opencode/commands/evolve.md +193 -0
- package/template/.opencode/commands/flutter-build/command.md +25 -0
- package/template/.opencode/commands/flutter-test/command.md +24 -0
- package/template/.opencode/commands/go-build.md +183 -0
- package/template/.opencode/commands/go-review.md +148 -0
- package/template/.opencode/commands/go-test.md +268 -0
- package/template/.opencode/commands/gpc-release/command.md +30 -0
- package/template/.opencode/commands/instinct-export.md +91 -0
- package/template/.opencode/commands/instinct-import.md +142 -0
- package/template/.opencode/commands/instinct-status.md +86 -0
- package/template/.opencode/commands/learn.md +70 -0
- package/template/.opencode/commands/multi-backend.md +158 -0
- package/template/.opencode/commands/multi-execute.md +310 -0
- package/template/.opencode/commands/multi-frontend.md +158 -0
- package/template/.opencode/commands/multi-plan.md +261 -0
- package/template/.opencode/commands/multi-workflow.md +183 -0
- package/template/.opencode/commands/orchestrate.md +172 -0
- package/template/.opencode/commands/plan.md +113 -0
- package/template/.opencode/commands/pm2.md +271 -0
- package/template/.opencode/commands/python-review.md +297 -0
- package/template/.opencode/commands/refactor-clean.md +28 -0
- package/template/.opencode/commands/sessions.md +305 -0
- package/template/.opencode/commands/setup-pm.md +80 -0
- package/template/.opencode/commands/skill-create.md +174 -0
- package/template/.opencode/commands/tdd.md +326 -0
- package/template/.opencode/commands/test-coverage.md +27 -0
- package/template/.opencode/commands/update-codemaps.md +17 -0
- package/template/.opencode/commands/update-docs.md +31 -0
- package/template/.opencode/commands/verify.md +59 -0
- package/template/.opencode/config.example.json +309 -0
- package/template/.opencode/config.json +341 -0
- package/template/.opencode/contexts/dev.md +20 -0
- package/template/.opencode/contexts/research.md +26 -0
- package/template/.opencode/contexts/review.md +22 -0
- package/template/.opencode/hooks/hooks.json +169 -0
- package/template/.opencode/instructions/INSTRUCTIONS.md +388 -0
- package/template/.opencode/package.json +5 -0
- package/template/.opencode/rules/README.md +82 -0
- package/template/.opencode/rules/android/gradle.md +62 -0
- package/template/.opencode/rules/android/testing.md +27 -0
- package/template/.opencode/rules/common/agents.md +49 -0
- package/template/.opencode/rules/common/coding-style.md +48 -0
- package/template/.opencode/rules/common/git-workflow.md +45 -0
- package/template/.opencode/rules/common/hooks.md +30 -0
- package/template/.opencode/rules/common/patterns.md +31 -0
- package/template/.opencode/rules/common/performance.md +55 -0
- package/template/.opencode/rules/common/security.md +29 -0
- package/template/.opencode/rules/common/testing.md +29 -0
- package/template/.opencode/rules/flutter/state-management.md +57 -0
- package/template/.opencode/rules/flutter/testing.md +42 -0
- package/template/.opencode/rules/golang/coding-style.md +26 -0
- package/template/.opencode/rules/golang/hooks.md +11 -0
- package/template/.opencode/rules/golang/patterns.md +39 -0
- package/template/.opencode/rules/golang/security.md +28 -0
- package/template/.opencode/rules/golang/testing.md +25 -0
- package/template/.opencode/rules/mobile/performance.md +36 -0
- package/template/.opencode/rules/python/coding-style.md +37 -0
- package/template/.opencode/rules/python/hooks.md +14 -0
- package/template/.opencode/rules/python/patterns.md +34 -0
- package/template/.opencode/rules/python/security.md +25 -0
- package/template/.opencode/rules/python/testing.md +33 -0
- package/template/.opencode/rules/typescript/coding-style.md +58 -0
- package/template/.opencode/rules/typescript/hooks.md +15 -0
- package/template/.opencode/rules/typescript/patterns.md +45 -0
- package/template/.opencode/rules/typescript/security.md +21 -0
- package/template/.opencode/rules/typescript/testing.md +11 -0
- package/template/.opencode/skills/api-documentation/SKILL.md +188 -0
- package/template/.opencode/skills/backend-patterns/SKILL.md +587 -0
- package/template/.opencode/skills/building-components/SKILL.md +37 -0
- package/template/.opencode/skills/building-components/references/accessibility.mdx +819 -0
- package/template/.opencode/skills/building-components/references/as-child.mdx +324 -0
- package/template/.opencode/skills/building-components/references/composition.mdx +239 -0
- package/template/.opencode/skills/building-components/references/data-attributes.mdx +413 -0
- package/template/.opencode/skills/building-components/references/definitions.mdx +258 -0
- package/template/.opencode/skills/building-components/references/design-tokens.mdx +57 -0
- package/template/.opencode/skills/building-components/references/docs.mdx +155 -0
- package/template/.opencode/skills/building-components/references/marketplaces.mdx +144 -0
- package/template/.opencode/skills/building-components/references/npm.mdx +166 -0
- package/template/.opencode/skills/building-components/references/polymorphism.mdx +583 -0
- package/template/.opencode/skills/building-components/references/principles.mdx +61 -0
- package/template/.opencode/skills/building-components/references/registry.mdx +169 -0
- package/template/.opencode/skills/building-components/references/state.mdx +99 -0
- package/template/.opencode/skills/building-components/references/styling.mdx +286 -0
- package/template/.opencode/skills/building-components/references/types.mdx +191 -0
- package/template/.opencode/skills/clickhouse-io/SKILL.md +429 -0
- package/template/.opencode/skills/coding-standards/SKILL.md +520 -0
- package/template/.opencode/skills/configure-ecc/SKILL.md +298 -0
- package/template/.opencode/skills/continuous-learning/SKILL.md +110 -0
- package/template/.opencode/skills/continuous-learning/config.json +18 -0
- package/template/.opencode/skills/continuous-learning/evaluate-session.sh +60 -0
- package/template/.opencode/skills/continuous-learning-v2/SKILL.md +284 -0
- package/template/.opencode/skills/continuous-learning-v2/agents/observer.md +137 -0
- package/template/.opencode/skills/continuous-learning-v2/agents/start-observer.sh +134 -0
- package/template/.opencode/skills/continuous-learning-v2/config.json +41 -0
- package/template/.opencode/skills/continuous-learning-v2/hooks/observe.sh +153 -0
- package/template/.opencode/skills/continuous-learning-v2/scripts/instinct-cli.py +489 -0
- package/template/.opencode/skills/continuous-learning-v2/scripts/test_parse_instinct.py +82 -0
- package/template/.opencode/skills/dart-add-unit-test/SKILL.md +122 -0
- package/template/.opencode/skills/dart-build-cli-app/SKILL.md +185 -0
- package/template/.opencode/skills/dart-collect-coverage/SKILL.md +141 -0
- package/template/.opencode/skills/dart-fix-runtime-errors/SKILL.md +166 -0
- package/template/.opencode/skills/dart-generate-test-mocks/SKILL.md +155 -0
- package/template/.opencode/skills/dart-migrate-to-checks-package/SKILL.md +126 -0
- package/template/.opencode/skills/dart-resolve-package-conflicts/SKILL.md +116 -0
- package/template/.opencode/skills/dart-run-static-analysis/SKILL.md +104 -0
- package/template/.opencode/skills/dart-use-pattern-matching/SKILL.md +146 -0
- package/template/.opencode/skills/django-patterns/SKILL.md +733 -0
- package/template/.opencode/skills/django-security/SKILL.md +592 -0
- package/template/.opencode/skills/django-tdd/SKILL.md +728 -0
- package/template/.opencode/skills/django-verification/SKILL.md +460 -0
- package/template/.opencode/skills/eval-harness/SKILL.md +227 -0
- package/template/.opencode/skills/firebase-basics/SKILL.md +103 -0
- package/template/.opencode/skills/firebase-basics/references/additional-skills.md +113 -0
- package/template/.opencode/skills/firebase-basics/references/cli-usage.md +31 -0
- package/template/.opencode/skills/firebase-basics/references/client-library-usage.md +45 -0
- package/template/.opencode/skills/firebase-basics/references/core-concepts.md +61 -0
- package/template/.opencode/skills/firebase-basics/references/iac-usage.md +40 -0
- package/template/.opencode/skills/firebase-basics/references/iam-security.md +74 -0
- package/template/.opencode/skills/firebase-basics/references/mcp-usage.md +63 -0
- package/template/.opencode/skills/flutter/SKILL.md +292 -0
- package/template/.opencode/skills/flutter-add-integration-test/SKILL.md +163 -0
- package/template/.opencode/skills/flutter-add-widget-preview/SKILL.md +145 -0
- package/template/.opencode/skills/flutter-add-widget-test/SKILL.md +154 -0
- package/template/.opencode/skills/flutter-apply-architecture-best-practices/SKILL.md +162 -0
- package/template/.opencode/skills/flutter-build-responsive-layout/SKILL.md +139 -0
- package/template/.opencode/skills/flutter-fix-layout-issues/SKILL.md +130 -0
- package/template/.opencode/skills/flutter-implement-json-serialization/SKILL.md +153 -0
- package/template/.opencode/skills/flutter-setup-declarative-routing/SKILL.md +255 -0
- package/template/.opencode/skills/flutter-setup-localization/SKILL.md +210 -0
- package/template/.opencode/skills/flutter-use-http-package/SKILL.md +174 -0
- package/template/.opencode/skills/frontend-design/SKILL.md +89 -0
- package/template/.opencode/skills/frontend-patterns/SKILL.md +631 -0
- package/template/.opencode/skills/golang-patterns/SKILL.md +673 -0
- package/template/.opencode/skills/golang-testing/SKILL.md +719 -0
- package/template/.opencode/skills/impeccable/SKILL.md +165 -0
- package/template/.opencode/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
- package/template/.opencode/skills/impeccable/reference/adapt.md +190 -0
- package/template/.opencode/skills/impeccable/reference/animate.md +175 -0
- package/template/.opencode/skills/impeccable/reference/audit.md +133 -0
- package/template/.opencode/skills/impeccable/reference/bolder.md +113 -0
- package/template/.opencode/skills/impeccable/reference/brand.md +118 -0
- package/template/.opencode/skills/impeccable/reference/clarify.md +174 -0
- package/template/.opencode/skills/impeccable/reference/codex.md +105 -0
- package/template/.opencode/skills/impeccable/reference/cognitive-load.md +106 -0
- package/template/.opencode/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/template/.opencode/skills/impeccable/reference/colorize.md +154 -0
- package/template/.opencode/skills/impeccable/reference/craft.md +123 -0
- package/template/.opencode/skills/impeccable/reference/critique.md +273 -0
- package/template/.opencode/skills/impeccable/reference/delight.md +302 -0
- package/template/.opencode/skills/impeccable/reference/distill.md +111 -0
- package/template/.opencode/skills/impeccable/reference/document.md +427 -0
- package/template/.opencode/skills/impeccable/reference/extract.md +69 -0
- package/template/.opencode/skills/impeccable/reference/harden.md +347 -0
- package/template/.opencode/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/template/.opencode/skills/impeccable/reference/interaction-design.md +195 -0
- package/template/.opencode/skills/impeccable/reference/layout.md +141 -0
- package/template/.opencode/skills/impeccable/reference/live.md +622 -0
- package/template/.opencode/skills/impeccable/reference/motion-design.md +109 -0
- package/template/.opencode/skills/impeccable/reference/onboard.md +234 -0
- package/template/.opencode/skills/impeccable/reference/optimize.md +258 -0
- package/template/.opencode/skills/impeccable/reference/overdrive.md +130 -0
- package/template/.opencode/skills/impeccable/reference/personas.md +179 -0
- package/template/.opencode/skills/impeccable/reference/polish.md +242 -0
- package/template/.opencode/skills/impeccable/reference/product.md +62 -0
- package/template/.opencode/skills/impeccable/reference/quieter.md +99 -0
- package/template/.opencode/skills/impeccable/reference/responsive-design.md +114 -0
- package/template/.opencode/skills/impeccable/reference/shape.md +165 -0
- package/template/.opencode/skills/impeccable/reference/spatial-design.md +100 -0
- package/template/.opencode/skills/impeccable/reference/teach.md +156 -0
- package/template/.opencode/skills/impeccable/reference/typeset.md +124 -0
- package/template/.opencode/skills/impeccable/reference/typography.md +159 -0
- package/template/.opencode/skills/impeccable/reference/ux-writing.md +107 -0
- package/template/.opencode/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/template/.opencode/skills/impeccable/scripts/command-metadata.json +94 -0
- package/template/.opencode/skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/template/.opencode/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/template/.opencode/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/template/.opencode/skills/impeccable/scripts/detect.mjs +21 -0
- package/template/.opencode/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/template/.opencode/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/template/.opencode/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/template/.opencode/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/template/.opencode/skills/impeccable/scripts/live-browser.js +4860 -0
- package/template/.opencode/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/template/.opencode/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/template/.opencode/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/template/.opencode/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/template/.opencode/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/template/.opencode/skills/impeccable/scripts/live-server.mjs +838 -0
- package/template/.opencode/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/template/.opencode/skills/impeccable/scripts/live-status.mjs +47 -0
- package/template/.opencode/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/template/.opencode/skills/impeccable/scripts/live.mjs +247 -0
- package/template/.opencode/skills/impeccable/scripts/load-context.mjs +141 -0
- package/template/.opencode/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/template/.opencode/skills/impeccable/scripts/pin.mjs +214 -0
- package/template/.opencode/skills/iterative-retrieval/SKILL.md +202 -0
- package/template/.opencode/skills/java-coding-standards/SKILL.md +138 -0
- package/template/.opencode/skills/jetpack-compose/.skillfish.json +10 -0
- package/template/.opencode/skills/jetpack-compose/SKILL.md +420 -0
- package/template/.opencode/skills/jpa-patterns/SKILL.md +141 -0
- package/template/.opencode/skills/nutrient-document-processing/SKILL.md +165 -0
- package/template/.opencode/skills/nuxt-ui/SKILL.md +334 -0
- package/template/.opencode/skills/nuxt-ui/references/components.md +377 -0
- package/template/.opencode/skills/nuxt-ui/references/composables.md +127 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/chat.md +266 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/dashboard.md +220 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/docs.md +141 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/editor.md +168 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/page.md +260 -0
- package/template/.opencode/skills/nuxt-ui/references/theming.md +427 -0
- package/template/.opencode/skills/postgres-patterns/SKILL.md +146 -0
- package/template/.opencode/skills/project-guidelines-example/SKILL.md +345 -0
- package/template/.opencode/skills/python-patterns/SKILL.md +749 -0
- package/template/.opencode/skills/python-testing/SKILL.md +815 -0
- package/template/.opencode/skills/security-review/SKILL.md +494 -0
- package/template/.opencode/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/template/.opencode/skills/shadcn-ui/README.md +248 -0
- package/template/.opencode/skills/shadcn-ui/SKILL.md +326 -0
- package/template/.opencode/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/template/.opencode/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/template/.opencode/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/template/.opencode/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/template/.opencode/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/template/.opencode/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/template/.opencode/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/template/.opencode/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/template/.opencode/skills/springboot-patterns/SKILL.md +304 -0
- package/template/.opencode/skills/springboot-security/SKILL.md +119 -0
- package/template/.opencode/skills/springboot-tdd/SKILL.md +157 -0
- package/template/.opencode/skills/springboot-verification/SKILL.md +100 -0
- package/template/.opencode/skills/strategic-compact/SKILL.md +63 -0
- package/template/.opencode/skills/strategic-compact/suggest-compact.sh +52 -0
- package/template/.opencode/skills/tdd-workflow/SKILL.md +409 -0
- package/template/.opencode/skills/vercel-composition-patterns/AGENTS.md +946 -0
- package/template/.opencode/skills/vercel-composition-patterns/SKILL.md +89 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/template/.opencode/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/template/.opencode/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/template/.opencode/skills/verification-loop/SKILL.md +120 -0
- package/template/.opencode/skills/web-design-guidelines/SKILL.md +39 -0
- package/template/AGENTS.md +32 -0
- package/template/opencode.json +354 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Sessions Command
|
|
2
|
+
|
|
3
|
+
Manage Claude Code session history - list, load, alias, and edit sessions stored in `~/.claude/sessions/`.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`/sessions [list|load|alias|info|help] [options]`
|
|
8
|
+
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
### List Sessions
|
|
12
|
+
|
|
13
|
+
Display all sessions with metadata, filtering, and pagination.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
/sessions # List all sessions (default)
|
|
17
|
+
/sessions list # Same as above
|
|
18
|
+
/sessions list --limit 10 # Show 10 sessions
|
|
19
|
+
/sessions list --date 2026-02-01 # Filter by date
|
|
20
|
+
/sessions list --search abc # Search by session ID
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Script:**
|
|
24
|
+
```bash
|
|
25
|
+
node -e "
|
|
26
|
+
const sm = require('./scripts/lib/session-manager');
|
|
27
|
+
const aa = require('./scripts/lib/session-aliases');
|
|
28
|
+
|
|
29
|
+
const result = sm.getAllSessions({ limit: 20 });
|
|
30
|
+
const aliases = aa.listAliases();
|
|
31
|
+
const aliasMap = {};
|
|
32
|
+
for (const a of aliases) aliasMap[a.sessionPath] = a.name;
|
|
33
|
+
|
|
34
|
+
console.log('Sessions (showing ' + result.sessions.length + ' of ' + result.total + '):');
|
|
35
|
+
console.log('');
|
|
36
|
+
console.log('ID Date Time Size Lines Alias');
|
|
37
|
+
console.log('────────────────────────────────────────────────────');
|
|
38
|
+
|
|
39
|
+
for (const s of result.sessions) {
|
|
40
|
+
const alias = aliasMap[s.filename] || '';
|
|
41
|
+
const size = sm.getSessionSize(s.sessionPath);
|
|
42
|
+
const stats = sm.getSessionStats(s.sessionPath);
|
|
43
|
+
const id = s.shortId === 'no-id' ? '(none)' : s.shortId.slice(0, 8);
|
|
44
|
+
const time = s.modifiedTime.toTimeString().slice(0, 5);
|
|
45
|
+
|
|
46
|
+
console.log(id.padEnd(8) + ' ' + s.date + ' ' + time + ' ' + size.padEnd(7) + ' ' + String(stats.lineCount).padEnd(5) + ' ' + alias);
|
|
47
|
+
}
|
|
48
|
+
"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Load Session
|
|
52
|
+
|
|
53
|
+
Load and display a session's content (by ID or alias).
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
/sessions load <id|alias> # Load session
|
|
57
|
+
/sessions load 2026-02-01 # By date (for no-id sessions)
|
|
58
|
+
/sessions load a1b2c3d4 # By short ID
|
|
59
|
+
/sessions load my-alias # By alias name
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Script:**
|
|
63
|
+
```bash
|
|
64
|
+
node -e "
|
|
65
|
+
const sm = require('./scripts/lib/session-manager');
|
|
66
|
+
const aa = require('./scripts/lib/session-aliases');
|
|
67
|
+
const id = process.argv[1];
|
|
68
|
+
|
|
69
|
+
// First try to resolve as alias
|
|
70
|
+
const resolved = aa.resolveAlias(id);
|
|
71
|
+
const sessionId = resolved ? resolved.sessionPath : id;
|
|
72
|
+
|
|
73
|
+
const session = sm.getSessionById(sessionId, true);
|
|
74
|
+
if (!session) {
|
|
75
|
+
console.log('Session not found: ' + id);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const stats = sm.getSessionStats(session.sessionPath);
|
|
80
|
+
const size = sm.getSessionSize(session.sessionPath);
|
|
81
|
+
const aliases = aa.getAliasesForSession(session.filename);
|
|
82
|
+
|
|
83
|
+
console.log('Session: ' + session.filename);
|
|
84
|
+
console.log('Path: ~/.claude/sessions/' + session.filename);
|
|
85
|
+
console.log('');
|
|
86
|
+
console.log('Statistics:');
|
|
87
|
+
console.log(' Lines: ' + stats.lineCount);
|
|
88
|
+
console.log(' Total items: ' + stats.totalItems);
|
|
89
|
+
console.log(' Completed: ' + stats.completedItems);
|
|
90
|
+
console.log(' In progress: ' + stats.inProgressItems);
|
|
91
|
+
console.log(' Size: ' + size);
|
|
92
|
+
console.log('');
|
|
93
|
+
|
|
94
|
+
if (aliases.length > 0) {
|
|
95
|
+
console.log('Aliases: ' + aliases.map(a => a.name).join(', '));
|
|
96
|
+
console.log('');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (session.metadata.title) {
|
|
100
|
+
console.log('Title: ' + session.metadata.title);
|
|
101
|
+
console.log('');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (session.metadata.started) {
|
|
105
|
+
console.log('Started: ' + session.metadata.started);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (session.metadata.lastUpdated) {
|
|
109
|
+
console.log('Last Updated: ' + session.metadata.lastUpdated);
|
|
110
|
+
}
|
|
111
|
+
" "$ARGUMENTS"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Create Alias
|
|
115
|
+
|
|
116
|
+
Create a memorable alias for a session.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
/sessions alias <id> <name> # Create alias
|
|
120
|
+
/sessions alias 2026-02-01 today-work # Create alias named "today-work"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Script:**
|
|
124
|
+
```bash
|
|
125
|
+
node -e "
|
|
126
|
+
const sm = require('./scripts/lib/session-manager');
|
|
127
|
+
const aa = require('./scripts/lib/session-aliases');
|
|
128
|
+
|
|
129
|
+
const sessionId = process.argv[1];
|
|
130
|
+
const aliasName = process.argv[2];
|
|
131
|
+
|
|
132
|
+
if (!sessionId || !aliasName) {
|
|
133
|
+
console.log('Usage: /sessions alias <id> <name>');
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Get session filename
|
|
138
|
+
const session = sm.getSessionById(sessionId);
|
|
139
|
+
if (!session) {
|
|
140
|
+
console.log('Session not found: ' + sessionId);
|
|
141
|
+
process.exit(1);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const result = aa.setAlias(aliasName, session.filename);
|
|
145
|
+
if (result.success) {
|
|
146
|
+
console.log('✓ Alias created: ' + aliasName + ' → ' + session.filename);
|
|
147
|
+
} else {
|
|
148
|
+
console.log('✗ Error: ' + result.error);
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
" "$ARGUMENTS"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Remove Alias
|
|
155
|
+
|
|
156
|
+
Delete an existing alias.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
/sessions alias --remove <name> # Remove alias
|
|
160
|
+
/sessions unalias <name> # Same as above
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Script:**
|
|
164
|
+
```bash
|
|
165
|
+
node -e "
|
|
166
|
+
const aa = require('./scripts/lib/session-aliases');
|
|
167
|
+
|
|
168
|
+
const aliasName = process.argv[1];
|
|
169
|
+
if (!aliasName) {
|
|
170
|
+
console.log('Usage: /sessions alias --remove <name>');
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const result = aa.deleteAlias(aliasName);
|
|
175
|
+
if (result.success) {
|
|
176
|
+
console.log('✓ Alias removed: ' + aliasName);
|
|
177
|
+
} else {
|
|
178
|
+
console.log('✗ Error: ' + result.error);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
" "$ARGUMENTS"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Session Info
|
|
185
|
+
|
|
186
|
+
Show detailed information about a session.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
/sessions info <id|alias> # Show session details
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Script:**
|
|
193
|
+
```bash
|
|
194
|
+
node -e "
|
|
195
|
+
const sm = require('./scripts/lib/session-manager');
|
|
196
|
+
const aa = require('./scripts/lib/session-aliases');
|
|
197
|
+
|
|
198
|
+
const id = process.argv[1];
|
|
199
|
+
const resolved = aa.resolveAlias(id);
|
|
200
|
+
const sessionId = resolved ? resolved.sessionPath : id;
|
|
201
|
+
|
|
202
|
+
const session = sm.getSessionById(sessionId, true);
|
|
203
|
+
if (!session) {
|
|
204
|
+
console.log('Session not found: ' + id);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const stats = sm.getSessionStats(session.sessionPath);
|
|
209
|
+
const size = sm.getSessionSize(session.sessionPath);
|
|
210
|
+
const aliases = aa.getAliasesForSession(session.filename);
|
|
211
|
+
|
|
212
|
+
console.log('Session Information');
|
|
213
|
+
console.log('════════════════════');
|
|
214
|
+
console.log('ID: ' + (session.shortId === 'no-id' ? '(none)' : session.shortId));
|
|
215
|
+
console.log('Filename: ' + session.filename);
|
|
216
|
+
console.log('Date: ' + session.date);
|
|
217
|
+
console.log('Modified: ' + session.modifiedTime.toISOString().slice(0, 19).replace('T', ' '));
|
|
218
|
+
console.log('');
|
|
219
|
+
console.log('Content:');
|
|
220
|
+
console.log(' Lines: ' + stats.lineCount);
|
|
221
|
+
console.log(' Total items: ' + stats.totalItems);
|
|
222
|
+
console.log(' Completed: ' + stats.completedItems);
|
|
223
|
+
console.log(' In progress: ' + stats.inProgressItems);
|
|
224
|
+
console.log(' Size: ' + size);
|
|
225
|
+
if (aliases.length > 0) {
|
|
226
|
+
console.log('Aliases: ' + aliases.map(a => a.name).join(', '));
|
|
227
|
+
}
|
|
228
|
+
" "$ARGUMENTS"
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### List Aliases
|
|
232
|
+
|
|
233
|
+
Show all session aliases.
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
/sessions aliases # List all aliases
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Script:**
|
|
240
|
+
```bash
|
|
241
|
+
node -e "
|
|
242
|
+
const aa = require('./scripts/lib/session-aliases');
|
|
243
|
+
|
|
244
|
+
const aliases = aa.listAliases();
|
|
245
|
+
console.log('Session Aliases (' + aliases.length + '):');
|
|
246
|
+
console.log('');
|
|
247
|
+
|
|
248
|
+
if (aliases.length === 0) {
|
|
249
|
+
console.log('No aliases found.');
|
|
250
|
+
} else {
|
|
251
|
+
console.log('Name Session File Title');
|
|
252
|
+
console.log('─────────────────────────────────────────────────────────────');
|
|
253
|
+
for (const a of aliases) {
|
|
254
|
+
const name = a.name.padEnd(12);
|
|
255
|
+
const file = (a.sessionPath.length > 30 ? a.sessionPath.slice(0, 27) + '...' : a.sessionPath).padEnd(30);
|
|
256
|
+
const title = a.title || '';
|
|
257
|
+
console.log(name + ' ' + file + ' ' + title);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
"
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Arguments
|
|
264
|
+
|
|
265
|
+
$ARGUMENTS:
|
|
266
|
+
- `list [options]` - List sessions
|
|
267
|
+
- `--limit <n>` - Max sessions to show (default: 50)
|
|
268
|
+
- `--date <YYYY-MM-DD>` - Filter by date
|
|
269
|
+
- `--search <pattern>` - Search in session ID
|
|
270
|
+
- `load <id|alias>` - Load session content
|
|
271
|
+
- `alias <id> <name>` - Create alias for session
|
|
272
|
+
- `alias --remove <name>` - Remove alias
|
|
273
|
+
- `unalias <name>` - Same as `--remove`
|
|
274
|
+
- `info <id|alias>` - Show session statistics
|
|
275
|
+
- `aliases` - List all aliases
|
|
276
|
+
- `help` - Show this help
|
|
277
|
+
|
|
278
|
+
## Examples
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# List all sessions
|
|
282
|
+
/sessions list
|
|
283
|
+
|
|
284
|
+
# Create an alias for today's session
|
|
285
|
+
/sessions alias 2026-02-01 today
|
|
286
|
+
|
|
287
|
+
# Load session by alias
|
|
288
|
+
/sessions load today
|
|
289
|
+
|
|
290
|
+
# Show session info
|
|
291
|
+
/sessions info today
|
|
292
|
+
|
|
293
|
+
# Remove alias
|
|
294
|
+
/sessions alias --remove today
|
|
295
|
+
|
|
296
|
+
# List all aliases
|
|
297
|
+
/sessions aliases
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Notes
|
|
301
|
+
|
|
302
|
+
- Sessions are stored as markdown files in `~/.claude/sessions/`
|
|
303
|
+
- Aliases are stored in `~/.claude/session-aliases.json`
|
|
304
|
+
- Session IDs can be shortened (first 4-8 characters usually unique enough)
|
|
305
|
+
- Use aliases for frequently referenced sessions
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Configure your preferred package manager (npm/pnpm/yarn/bun)
|
|
3
|
+
disable-model-invocation: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Package Manager Setup
|
|
7
|
+
|
|
8
|
+
Configure your preferred package manager for this project or globally.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Detect current package manager
|
|
14
|
+
node scripts/setup-package-manager.js --detect
|
|
15
|
+
|
|
16
|
+
# Set global preference
|
|
17
|
+
node scripts/setup-package-manager.js --global pnpm
|
|
18
|
+
|
|
19
|
+
# Set project preference
|
|
20
|
+
node scripts/setup-package-manager.js --project bun
|
|
21
|
+
|
|
22
|
+
# List available package managers
|
|
23
|
+
node scripts/setup-package-manager.js --list
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Detection Priority
|
|
27
|
+
|
|
28
|
+
When determining which package manager to use, the following order is checked:
|
|
29
|
+
|
|
30
|
+
1. **Environment variable**: `CLAUDE_PACKAGE_MANAGER`
|
|
31
|
+
2. **Project config**: `.claude/package-manager.json`
|
|
32
|
+
3. **package.json**: `packageManager` field
|
|
33
|
+
4. **Lock file**: Presence of package-lock.json, yarn.lock, pnpm-lock.yaml, or bun.lockb
|
|
34
|
+
5. **Global config**: `~/.claude/package-manager.json`
|
|
35
|
+
6. **Fallback**: First available package manager (pnpm > bun > yarn > npm)
|
|
36
|
+
|
|
37
|
+
## Configuration Files
|
|
38
|
+
|
|
39
|
+
### Global Configuration
|
|
40
|
+
```json
|
|
41
|
+
// ~/.claude/package-manager.json
|
|
42
|
+
{
|
|
43
|
+
"packageManager": "pnpm"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Project Configuration
|
|
48
|
+
```json
|
|
49
|
+
// .claude/package-manager.json
|
|
50
|
+
{
|
|
51
|
+
"packageManager": "bun"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### package.json
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"packageManager": "pnpm@8.6.0"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Environment Variable
|
|
63
|
+
|
|
64
|
+
Set `CLAUDE_PACKAGE_MANAGER` to override all other detection methods:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Windows (PowerShell)
|
|
68
|
+
$env:CLAUDE_PACKAGE_MANAGER = "pnpm"
|
|
69
|
+
|
|
70
|
+
# macOS/Linux
|
|
71
|
+
export CLAUDE_PACKAGE_MANAGER=pnpm
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Run the Detection
|
|
75
|
+
|
|
76
|
+
To see current package manager detection results, run:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
node scripts/setup-package-manager.js --detect
|
|
80
|
+
```
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-create
|
|
3
|
+
description: Analyze local git history to extract coding patterns and generate SKILL.md files. Local version of the Skill Creator GitHub App.
|
|
4
|
+
allowed_tools: ["Bash", "Read", "Write", "Grep", "Glob"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /skill-create - Local Skill Generation
|
|
8
|
+
|
|
9
|
+
Analyze your repository's git history to extract coding patterns and generate SKILL.md files that teach Claude your team's practices.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
/skill-create # Analyze current repo
|
|
15
|
+
/skill-create --commits 100 # Analyze last 100 commits
|
|
16
|
+
/skill-create --output ./skills # Custom output directory
|
|
17
|
+
/skill-create --instincts # Also generate instincts for continuous-learning-v2
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## What It Does
|
|
21
|
+
|
|
22
|
+
1. **Parses Git History** - Analyzes commits, file changes, and patterns
|
|
23
|
+
2. **Detects Patterns** - Identifies recurring workflows and conventions
|
|
24
|
+
3. **Generates SKILL.md** - Creates valid Claude Code skill files
|
|
25
|
+
4. **Optionally Creates Instincts** - For the continuous-learning-v2 system
|
|
26
|
+
|
|
27
|
+
## Analysis Steps
|
|
28
|
+
|
|
29
|
+
### Step 1: Gather Git Data
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Get recent commits with file changes
|
|
33
|
+
git log --oneline -n ${COMMITS:-200} --name-only --pretty=format:"%H|%s|%ad" --date=short
|
|
34
|
+
|
|
35
|
+
# Get commit frequency by file
|
|
36
|
+
git log --oneline -n 200 --name-only | grep -v "^$" | grep -v "^[a-f0-9]" | sort | uniq -c | sort -rn | head -20
|
|
37
|
+
|
|
38
|
+
# Get commit message patterns
|
|
39
|
+
git log --oneline -n 200 | cut -d' ' -f2- | head -50
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Step 2: Detect Patterns
|
|
43
|
+
|
|
44
|
+
Look for these pattern types:
|
|
45
|
+
|
|
46
|
+
| Pattern | Detection Method |
|
|
47
|
+
|---------|-----------------|
|
|
48
|
+
| **Commit conventions** | Regex on commit messages (feat:, fix:, chore:) |
|
|
49
|
+
| **File co-changes** | Files that always change together |
|
|
50
|
+
| **Workflow sequences** | Repeated file change patterns |
|
|
51
|
+
| **Architecture** | Folder structure and naming conventions |
|
|
52
|
+
| **Testing patterns** | Test file locations, naming, coverage |
|
|
53
|
+
|
|
54
|
+
### Step 3: Generate SKILL.md
|
|
55
|
+
|
|
56
|
+
Output format:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
---
|
|
60
|
+
name: {repo-name}-patterns
|
|
61
|
+
description: Coding patterns extracted from {repo-name}
|
|
62
|
+
version: 1.0.0
|
|
63
|
+
source: local-git-analysis
|
|
64
|
+
analyzed_commits: {count}
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
# {Repo Name} Patterns
|
|
68
|
+
|
|
69
|
+
## Commit Conventions
|
|
70
|
+
{detected commit message patterns}
|
|
71
|
+
|
|
72
|
+
## Code Architecture
|
|
73
|
+
{detected folder structure and organization}
|
|
74
|
+
|
|
75
|
+
## Workflows
|
|
76
|
+
{detected repeating file change patterns}
|
|
77
|
+
|
|
78
|
+
## Testing Patterns
|
|
79
|
+
{detected test conventions}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 4: Generate Instincts (if --instincts)
|
|
83
|
+
|
|
84
|
+
For continuous-learning-v2 integration:
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
---
|
|
88
|
+
id: {repo}-commit-convention
|
|
89
|
+
trigger: "when writing a commit message"
|
|
90
|
+
confidence: 0.8
|
|
91
|
+
domain: git
|
|
92
|
+
source: local-repo-analysis
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
# Use Conventional Commits
|
|
96
|
+
|
|
97
|
+
## Action
|
|
98
|
+
Prefix commits with: feat:, fix:, chore:, docs:, test:, refactor:
|
|
99
|
+
|
|
100
|
+
## Evidence
|
|
101
|
+
- Analyzed {n} commits
|
|
102
|
+
- {percentage}% follow conventional commit format
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Example Output
|
|
106
|
+
|
|
107
|
+
Running `/skill-create` on a TypeScript project might produce:
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
---
|
|
111
|
+
name: my-app-patterns
|
|
112
|
+
description: Coding patterns from my-app repository
|
|
113
|
+
version: 1.0.0
|
|
114
|
+
source: local-git-analysis
|
|
115
|
+
analyzed_commits: 150
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
# My App Patterns
|
|
119
|
+
|
|
120
|
+
## Commit Conventions
|
|
121
|
+
|
|
122
|
+
This project uses **conventional commits**:
|
|
123
|
+
- `feat:` - New features
|
|
124
|
+
- `fix:` - Bug fixes
|
|
125
|
+
- `chore:` - Maintenance tasks
|
|
126
|
+
- `docs:` - Documentation updates
|
|
127
|
+
|
|
128
|
+
## Code Architecture
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
src/
|
|
132
|
+
├── components/ # React components (PascalCase.tsx)
|
|
133
|
+
├── hooks/ # Custom hooks (use*.ts)
|
|
134
|
+
├── utils/ # Utility functions
|
|
135
|
+
├── types/ # TypeScript type definitions
|
|
136
|
+
└── services/ # API and external services
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Workflows
|
|
140
|
+
|
|
141
|
+
### Adding a New Component
|
|
142
|
+
1. Create `src/components/ComponentName.tsx`
|
|
143
|
+
2. Add tests in `src/components/__tests__/ComponentName.test.tsx`
|
|
144
|
+
3. Export from `src/components/index.ts`
|
|
145
|
+
|
|
146
|
+
### Database Migration
|
|
147
|
+
1. Modify `src/db/schema.ts`
|
|
148
|
+
2. Run `pnpm db:generate`
|
|
149
|
+
3. Run `pnpm db:migrate`
|
|
150
|
+
|
|
151
|
+
## Testing Patterns
|
|
152
|
+
|
|
153
|
+
- Test files: `__tests__/` directories or `.test.ts` suffix
|
|
154
|
+
- Coverage target: 80%+
|
|
155
|
+
- Framework: Vitest
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## GitHub App Integration
|
|
159
|
+
|
|
160
|
+
For advanced features (10k+ commits, team sharing, auto-PRs), use the [Skill Creator GitHub App](https://github.com/apps/skill-creator):
|
|
161
|
+
|
|
162
|
+
- Install: [github.com/apps/skill-creator](https://github.com/apps/skill-creator)
|
|
163
|
+
- Comment `/skill-creator analyze` on any issue
|
|
164
|
+
- Receives PR with generated skills
|
|
165
|
+
|
|
166
|
+
## Related Commands
|
|
167
|
+
|
|
168
|
+
- `/instinct-import` - Import generated instincts
|
|
169
|
+
- `/instinct-status` - View learned instincts
|
|
170
|
+
- `/evolve` - Cluster instincts into skills/agents
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
*Part of [Everything Claude Code](https://github.com/affaan-m/everything-claude-code)*
|