my-coding-style
SKILL.md
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.tsortypes/*.ts - Constants extraction: Move constants to a dedicated
constants.jsfile
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
typeorinterfacedeclarations
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.js→foo.test.js(same directory) - Use
describe/itAPI (nottest) - Use
toMatchSnapshotfor complex outputs - Use
toMatchFileSnapshotwith explicit path for language-specific snapshots
App Development
Framework Selection
| Use Case | Choice |
|---|---|
| Frontend | Vite + Vue |
| Backend | Nestjs + Prisma ORM v7 + PostgreSQL |
Vue Conventions
| Convention | Preference |
|---|---|
| Script syntax | Always <script setup> |
| State | Prefer shallowRef() over ref() |
| Objects | Use ref(), avoid reactive() |
| Styling | UnoCSS |
| Utilities | VueUse, 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>
Weekly Installs
7
Repository
sonvee/ai-skillsGitHub Stars
1
First Seen
11 days ago
Security Audits
Installed on
github-copilot6
codex6
kimi-cli6
gemini-cli6
cursor6
opencode6