clean-code
暂无简介
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-11
- Stars
- ★ 23
- Forks
- 2
03 SKILL.md 正文
Clean Code (code-deslop)
Obvious comments, excessive defense, any to silence the type checker, deep nesting - patterns that read like machine code.
When to use
- After AI session, before commit
- PR review with generated code
- Explicit request: deslop / clean AI code
- Before code review
Diff or specific file: this skill. Large refactoring: cleancode-refactor subagent.
Process
git diffagainst base (e.g.,main)- Scan the areas below
- Minimal change; same behavior except for clear bugs
- Lint and typecheck
- Summary in 1-3 sentences
Focus Areas (slop patterns)
1. Redundant comments
Repeat the obvious instead of explaining the why.
// BAD - slop
const total = items.length; // Get the total number of items
return total; // Return the total
// GOOD - no comment needed, code is self-explanatory
const total = items.length;
return total;
2. Too much defense
Try/catch or null check in internal path where caller already guarantees valid data.
// BAD - slop (internal helper, caller always passes valid data)
function formatName(user: User): string {
try {
if (!user) throw new Error('User is required');
if (!user.name) throw new Error('Name is required');
return user.name.trim();
} catch (error) {
console.error('Error formatting name:', error);
throw error;
}
}
// GOOD
function formatName(user: User): string {
return user.name.trim();
}
3. any to escape typing
Cast just to silence the checker instead of modeling the correct type.
// BAD - slop
const result = (response as any).data;
// GOOD - use the actual type
const result = (response as ApiResponse).data;
4. Deep nesting
Stacked if/else or try/catch; prefer early return or guard clauses.
// BAD - slop
function process(input: string | null) {
if (input) {
if (input.length > 0) {
if (isValid(input)) {
return transform(input);
}
}
}
return null;
}
// GOOD - early returns
function process(input: string | null) {
if (!input || input.length === 0 || !isValid(input)) return null;
return transform(input);
}
5. Style inconsistent with file
Names, imports, error handling or formatting different from the rest of the file.
6. Em dash ("—") in text
The em dash "—" is one of the strongest marks of AI-generated text. In comments, commit messages, docs, README, HANDOFF and memory, it's slop: replace with hyphen, colon, comma, parentheses or period.
BAD (AI slop, with em dash)
feat: new cache — reduces latency and simplifies flow
the CLI parses — then validates — then saves
GOOD
feat: new cache reduces latency and simplifies flow
the CLI parses, validates and saves
the CLI parses; then validates; then saves
Rule: completely eliminate "—" from commits, text and docs. Only use when mandatory for a concrete reason (e.g., literally quoting external text, data or an API that already contains the character). In these cases, preserve the original.
Note: this applies to the repository and to chat. It's textual slop, not just code; see rules agent-output-hygiene, docs-professional-standard and ux-tone.
Conventions
- Same observable behavior, except for clear bug fixes
- Small edits; align to local style
- Comment that explains why: keep it
- Run linter/typecheck after
Checklist
- [ ] Obvious comments removed
- [ ] Unnecessary try/catch and checks removed where flow is reliable
- [ ]
anyreplaced with appropriate type or removed - [ ] Nesting flattened (early return / guards)
- [ ] Em dash "—" eliminated from comments, commits and touched docs (only keep if mandatory literal quote)
- [ ] Style aligned to file
- [ ] No meta-language / gossip / chat reasoning in comments, commits or touched docs (rule
agent-output-hygiene) - [ ] Lint/typecheck ok; short summary
04 同仓库更多 Skills
qa
Playbook for /qa. Verify a release or bug against CHANGELOG claims, install journey, tests, and hygiene. Invoke via /qa; do not auto-load.
plan-review-triage
Triage plan monitor findings. Select untriaged targets, summarize open residuals, and persist durable triage headings. Invoke via /plan-review-triage; do not auto-load.
plan-external-review
Arm external Claude reviewer for plan audits with autonomous background PTY spawn and freshness-gated wait. Invoke via /plan-external-review; do not auto-load.
hitl-gates
Agent Kit HITL contract, exact Ask questions labels, and numbered-list fallback as path 1. Use when running /start-project, /run-plan, /run-plan-all, /continue-plan, /git-prod, backlog CRUD, /hotfix, /qa, /plan-review-triage, install, or onboard, or when Ask questions is missing. Factory landing wraps /kit-staging and /kit-prod keep their own command-file Asks; they are not consumer default-path inventory. Invoke via the command's own link; do not auto-load.
field-report-resolve
Resolve Field Report attention cards by checking eligibility and dismissing when answered or subject-resolved. Invoke via /field-report-resolve; do not auto-load.
clean-code
暂无简介