my-coding-style

My opinionated tooling and conventions for JavaScript/TypeScript projects.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "my-coding-style" with this command: npx skills add sonvee/ai-skills/sonvee-ai-skills-my-coding-style

Coding Practices

Code Organization

  • Single responsibility: Each source file should have a clear, focused scope/purpose
  • Split large files: Break files when they become large or handle too many concerns
  • Type separation: When using TypeScript, Always separate types and interfaces into types.ts or types/*.ts
  • Constants extraction: Move constants to a dedicated constants.js file

Runtime Environment

  • Prefer isomorphic code: Write runtime-agnostic code that works in Node, browser, and workers whenever possible
  • Clear runtime indicators: When code is environment-specific, add a comment at the top of the file:
// @env node
// @env browser

TypeScript

  • Explicit return types: Declare return types explicitly when possible
  • Avoid complex inline types: Extract complex types into dedicated type or interface declarations

Comments

  • Avoid unnecessary comments: Code should be self-explanatory
  • Explain "why" not "how": Comments should describe the reasoning or intent, not what the code does

Testing (Vitest)

  • Test files: foo.jsfoo.test.js (same directory)
  • Use describe/it API (not test)
  • Use toMatchSnapshot for complex outputs
  • Use toMatchFileSnapshot with explicit path for language-specific snapshots

App Development

Framework Selection

Use CaseChoice
FrontendVite + Vue
BackendNestjs + Prisma ORM v7 + PostgreSQL

Vue Conventions

ConventionPreference
Script syntaxAlways <script setup>
StatePrefer shallowRef() over ref()
ObjectsUse ref(), avoid reactive()
StylingUnoCSS
UtilitiesVueUse, Lodash

Vue Example

<template>
  <div>{{ count }}</div>
</template>

<script setup>
const props = defineProps({
  count: {
    type: Number,
    default: 0
  }
})

const emit = defineEmits(['change'])
</script>

<style lang="scss" scoped></style>

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

typescript-expert

No summary provided by upstream source.

Repository SourceNeeds Review
General

fullstack-init

No summary provided by upstream source.

Repository SourceNeeds Review
General

vue

No summary provided by upstream source.

Repository SourceNeeds Review
General

vueuse-functions

No summary provided by upstream source.

Repository SourceNeeds Review