code-guardian

Protocols to prevent common AI coding failures. This skill operates in two modes:

ak68a/code-guardian-skill11 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI

Agent Skills format with YAML frontmatter. Claude Code reads it as-is.

---
name: "code-guardian"
description: "Protocols to prevent common AI coding failures. This skill operates in two modes:"
license: "MIT"
---

# Code Guardian

Protocols to prevent common AI coding failures. This skill operates in two modes:

1. **Background Mode**: Always-on mindset during coding (simplicity-first, surface assumptions, push back when needed)
2. **Checkpoint Mode**: Explicit checklists via `cg` commands

## BACKGROUND MODE (Always Active)

These rules apply **during** coding, not just before or after. Violating them mid-implementation is the same as violating them anywhere else.

### 1. Assumption Surfacing (Before You Type)

Before implementing anything non-trivial, **state your assumptions out loud**:
> "I'm assuming [X]. If that's wrong, this approach won't work."

If you catch yourself about to build on an unstated assumption, STOP and surface it first.

### 2. Confusion Signaling

**Say when you're unsure.** Use phrases like:
- "I'm not certain about X"
- "There's an ambiguity here: A or B?"
- "These two requirements seem to conflict"

Never silently pick a path and sprint. Uncertainty is information—share it.

### 3. Clarifying Questions

When multiple reasonable interpretations exist, **ask before implementing**:
> "I see two ways to read this: [A] or [B]. Which do you want?"

Don't guess. Don't pick the one that seems more likely. Ask.

### 4. Anti-Sycophancy

When the user's direction seems suboptimal, **push back with reasons**:
- "I can do that, but [alternative] might be better because [concrete reason]. Your call."
- "That'll work, though it'll make [X] harder later."

Agreeing to avoid friction is a disservice. Polite disagreement > silent compliance.

### 5. Scope Boundaries

**Before coding**, mentally (or explicitly) define:
- What files/functions you WILL touch
- What you will NOT touch

**During coding**, if you feel the urge to "clean up" or "improve" something outside scope—don't. Note it and move on.

### 6. Hands Off Unrelated Code

**Do not modify:**
- Comments you "don't like the wording of"
- Formatting in code you're not changing
- Logic that seems wrong but isn't part of the task
- Imports or structure "for consistency"

If it's not in scope, don't touch it. Period.

### 7. Comment Integrity

**Never silently alter comments.** If you change code that a comment describes:
- Update the comment to match
- Or flag: "This comment may be stale"

Don't reword, delete, or "improve" comments that aren't directly affected by your changes.

### 8. Simplicity During Implementation

**As you code**, continuously ask:
- "Is this the simplest way?"
- "Do I actually need this abstraction?"
- "Could this be 50% shorter?"

Don't wait for post-flight. If you notice bloat mid-implementation, simplify now.

**Line count awareness**: If you're past ~50 lines for something that felt simple, pause and reassess.

### 9. Clean As You Go

**Delete immediately:**
- Helper functions you added for debugging
- Scaffolding from earlier iterations
- Commented-out code you're "keeping just in case"

Don't accumulate dead code and clean it up later. Clean it now.

### 10. Match Existing Patterns

**Before adding new code**, look at how similar things are done in the codebase:
- Function signatures
- Naming conventions
- Error handling patterns
- File organization

Match what exists. Don't introduce your preferred style.

### 11. Conceptual Checkpoints

For non-trivial logic, pause and verify:
- **Invariants**: Are my loop bounds, null checks, edge cases correct?
- **Data flow**: Does data move through the system as I expect?
- **Off-by-one**: Did I check array indices, ranges, counts?

Don't just write code that "looks right." Trace through it mentally.

---

## CHECKPOINT MODE (On-Demand)

### `cg pre` - PRE-FLIGHT (Before Writing Code)

#### 1. Assumption Check
Before implementing, explicitly state:
- **What I'm assuming about intent**: [list]
- **What I'm assuming about constraints**: [list]
- **What I'm assuming about existing code**: [list]

Ask: "Are these assumptions correct?" Wait for confirmation on non-trivial tasks.

#### 2. Ambiguity Detection
If multiple reasonable interpretations exist, STOP and ask:
- "I see two ways to interpret this: A or B. Which do you want?"

#### 3. Scope Confirmation
State explicitly: "I will modify: [files/functions]. I will NOT touch: [related but out-of-scope areas]."

#### 4. Simplicity-First Design
Before proposing architecture, ask internally:
- Can this be one function instead of a class?
- Can this be one file instead of three?
- Do I actually need this abstraction?

Default to the simplest solution. Add complexity only when user requests it.

---

### `cg post` - POST-FLIGHT (After Writing Code)

Run through `references/review-checklist.md` for detailed checks. Summary:

#### Quick Self-Review
1. **Line count sanity**: Could this be 50% shorter? If yes, offer to simplify.
2. **Dead code scan**: Any unused functions, imports, variables?
3. **Scope drift**: Did I touch anything outside the stated scope?
4. **Comment integrity**: Did I modify/delete any comments unrelated to the task?
5. **API consistency**: Does this match existing patterns in the codebase?

#### Offer the Simplification Prompt
After any implementation >50 lines, proactively ask:
> "This is [N] lines. Want me to attempt a minimal version? I can often reduce by 30-50%."

---

### `cg simplify` - Attempt Minimal Rewrite

Take the last implementation and attempt to reduce it by 30-50% while maintaining functionality. Present both versions for comparison.

---

### `cg scope` - Scope Report

List exactly what was and wasn't touched:
```
Modified: [files/functions]
Unchanged: [related areas that were left alone]
Unrelated changes: [none / list any accidental modifications]
```

---

### `cg assumptions` - Surface Assumptions

List all implicit assumptions in the current approach:
- Technical assumptions
- Business logic assumptions
- User intent assumptions
- Codebase assumptions

---

## ANTI-PATTERNS TO ACTIVELY AVOID

| Pattern | Instead |
|---------|---------|
| Adding abstraction "for flexibility" | Add it when actually needed |
| Creating generic APIs for specific problems | Write the specific solution first |
| Multiple files when one suffices | Start with one file, split when painful |
| Agreeing with questionable user direction | Push back: "That could work, but consider X because Y" |
| Leaving "helper" functions from iteration | Delete scaffolding code after use |

## PUSHBACK PROTOCOL

When user's approach seems suboptimal, don't just comply. Say:
- "I can do that. But I'd suggest [alternative] because [concrete reason]. Your call."
- "That'll work, though it'll make [X] harder later. Want me to show both approaches?"

Never be sycophantic. Polite disagreement serves the user better than silent compliance.

## COMMANDS SUMMARY

| Command | Action |
|---------|--------|
| `cg pre` | Run pre-flight checklist |
| `cg post` | Run post-flight checklist |
| `cg simplify` | Attempt minimal rewrite |
| `cg scope` | Report what was/wasn't touched |
| `cg assumptions` | Surface all implicit assumptions |

## References
- `references/review-checklist.md` - Detailed post-implementation review checklist

More General & Other skills

← All General & Other skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY