Verifies code quality including naming conventions, function size, and DRY principles. SUGGESTION gate that offers polish items during /own:done flow.
"Good code is not just code that works. It's code that others can work with."
This gate checks general code quality against engineering standards. Issues are SUGGESTIONS, not blockers — they're polish, not problems.
"Would a new developer understand what
[variable/function]does from its name alone?"
Looking for:
"Can you describe what this function does in one sentence without using 'and'?"
Looking for:
"I see this pattern in a few places. Is it intentional duplication or should it be extracted?"
Looking for:
temp, data, x)is, has, can, should// increment counter)✅ FUNDAMENTALS GATE: PASSED
Code quality is solid:
- Naming is clear and consistent
- Functions are focused
- Good structure overall
All gates passed! Let's move to code review...
💡 FUNDAMENTALS GATE: SUGGESTIONS
A few polish items for consideration:
**Suggestion 1: [Naming]**
`const d = new Date()` → `const createdAt = new Date()`
Why: Descriptive names help future readers
**Suggestion 2: [Function size]**
`processOrder()` is 80 lines. Consider splitting into:
- `validateOrder()`
- `calculateTotal()`
- `saveOrder()`
**Suggestion 3: [Magic number]**
`if (status === 2)` → `if (status === STATUS.ACTIVE)`
Why: Named constants are self-documenting
These are suggestions, not blockers. The code works — this is about polish.
Proceed to code review? Or address these first?
❌ const d = new Date();
const temp = getUser();
const flag = true;
✅ const createdAt = new Date();
const currentUser = getUser();
const isAuthenticated = true;
❌ if (status === 2) { ... }
setTimeout(fn, 86400000);
✅ const STATUS = { ACTIVE: 2, INACTIVE: 1 };
if (status === STATUS.ACTIVE) { ... }
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
setTimeout(fn, ONE_DAY_MS);
❌ function check(user) {
if (user) {
if (user.active) {
if (user.role === 'admin') {
return true;
}
}
}
return false;
}
✅ function check(user) {
if (!user) return false;
if (!user.active) return false;
if (user.role !== 'admin') return false;
return true;
}
❌ function processOrder(order) {
// 100+ lines of validation, calculation, saving, emailing...
}
✅ function processOrder(order) {
validateOrder(order);
const total = calculateTotal(order);
await saveOrder(order, total);
await sendConfirmation(order);
}
❌ // Increment counter
counter++;
// Get user
const user = getUser();
✅ // Rate limit: max 100 requests per minute per user
if (requestCount >= 100) {
throw new RateLimitError();
}
Instead of pointing out fixes, ask:
d stand for? Would a new developer know?"See detailed patterns in:
/standards/global/naming-conventions.md/standards/global/error-handling.md/standards/frontend/component-architecture.md| Type | Pattern | Example |
|------|---------|---------|
| Variable | camelCase, descriptive | userEmail, isLoading |
| Boolean | is/has/can/should prefix | isActive, hasPermission |
| Function | verb + noun | getUser(), handleSubmit() |
| Constant | UPPER_SNAKE_CASE | MAX_RETRIES, API_URL |
| Class | PascalCase | UserService, ApiClient |
Not every suggestion needs addressing:
Fundamentals are about growth, not perfection. Note suggestions for learning, but don't block shipping.
npx skills add DanielPodolsky/fundamentals-gate下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer