Make AI coding agents write code your way.
Clean, readable, consistent. No manual cleanup afterwards.
npx skills add luxuling/agent-skill-dev -g| Area | Rule | |
|---|---|---|
| 💬 | Comments | None by default. Only TODO, FIX, HACK, WARN, PERF, NOTE, TEST markers |
| 🧯 | Errors | Throw, and catch only at the boundary |
| 🛡️ | Defensive code | No needless null checks, fallback defaults, or optional chaining |
| 🧩 | Abstraction | One job per function, shared on the second use, components only render |
| 📖 | Readability | Blank lines between logical steps, never one dense block |
| 🏷️ | Naming | kebab-case files, folders by layer (components/, hooks/, services/) |
| 🧪 | Testing | Every feature and fix ships with tests in tests/ |
| 🌿 | Git | Conventional Commits, type/short-desc branches, no commit unless asked |
| 🟦 | TypeScript | Arrow functions, named exports, no any / as / !, Zod at the edges |
| 🐹 | Go | Wrapped errors handled at the boundary, consumer-side interfaces, table-driven tests beside the code, chi + validator + pgx/sqlc |
| 🎨 | Tailwind | Canonical classes only, checked and fixed with tailwindcss canonicalize |
| ✋ | Micro-interactions | Password reveal, confirm on hard-to-undo actions, pending buttons, visible outcomes, loading/empty/error |
| 🚀 | CI/CD | Tag deploys to a VPS: GHCR image, self-hosted runner, Docker Compose, host nginx + Certbot, health check with auto rollback |
One folder works in Claude Code, Codex, Gemini CLI, Cursor, and any other agent that supports the Agent Skills spec.
npx skills add luxuling/agent-skill-dev -gUses the skills CLI. Drop -g to install into the current project only.
Claude Code plugin
/plugin marketplace add luxuling/agent-skill-dev
/plugin install lixu@code-standards
Manual (git clone + symlink)
git clone https://github.com/luxuling/agent-skill-dev.git
ln -s "$PWD/agent-skill-dev/skills/code-standards" ~/.claude/skills/code-standards
ln -s "$PWD/agent-skill-dev/skills/micro-interactions" ~/.claude/skills/micro-interactions
ln -s "$PWD/agent-skill-dev/skills/ci-cd" ~/.claude/skills/ci-cdUse ~/.agents/skills/ instead of ~/.claude/skills/ for Codex, Gemini CLI, and other agents.
| Installed with | Run |
|---|---|
| skills CLI | npx skills update -g (npx skills check -g to see what changed, drop -g for a project install) |
| Claude Code plugin | /plugin marketplace update code-standards then /plugin update lixu@code-standards, or enable auto-update in /plugin → Marketplaces |
| Manual | git pull in the clone. The symlink picks it up right away |
Nothing to call. The agent loads the skill on its own whenever it writes, edits, reviews, or tests code, names a branch, or writes a commit message.
> add a users page that fetches /api/users and shows a table
> fix the invoice total rounding bug
> add a login form with email and password
To check it is active, ask what skills do you have? and look for lixu:code-standards, lixu:micro-interactions, and lixu:ci-cd (plugin) or code-standards, micro-interactions, and ci-cd (other installs).
- Change a rule: edit
SKILL.mdor the matching file inreferences/. - Add a language: create
references/<language>.mdand add one pointer line inSKILL.md. - Keep the spec limits:
namematches the folder name,descriptionstays under 1024 characters,SKILL.mdstays under 500 lines. - Test a change: run the
skill-creatorskill. It runs each prompt inevals/evals.jsonwith and without the skill and opens a viewer to compare. Output goes toskills/code-standards-workspace/, which is git-ignored.
📁 Structure
.claude-plugin/
└── marketplace.json # Claude Code plugin listing
skills/code-standards/
├── SKILL.md # rules for every language
├── references/
│ ├── typescript.md # TypeScript, React, Next.js, Node
│ ├── go.md # Go
│ └── tailwind.md # Tailwind canonical classes
└── evals/
└── evals.json # test prompts
skills/micro-interactions/
├── SKILL.md # password reveal, confirms, feedback
└── evals/
└── evals.json # test prompts
skills/ci-cd/
├── SKILL.md # GitHub Actions, Docker, nginx, VPS deploy
└── evals/
└── evals.json # test prompts
Files under references/ load only when the task uses that stack.