Install
$ agentstack add skill-fabianvegaa-skills-audit-code ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Audit code as a computational artifact: verify it correctly implements its specification at the appropriate abstraction level.
Foundations
Levels of Abstraction
Every computational artifact exists at a level:
- Intention - What problem are we solving?
- Specification - What should the artifact do?
- Implementation - How does it actually work?
Audit at the right level. Code should correctly implement its specification, not redefine it.
Correctness
A computational artifact is correct when:
- Implementation matches specification
- Specification fulfills intention
- No impossible states exist
Design Principles
Complexity
- Complexity is incremental - Small complexities compound. Eliminate trivial complexity early.
- Working code is not enough - Must be maintainable, not just functional.
- No technical debt - Continuously invest in design.
- Push complexity down - Hide complexity in internal modules, not at boundaries.
- Parsimony - Prefer the simplest solution that works. Do not add elements not strictly necessary. A parsimonious solution matches the specification exactly—it does not solve more than required by the specification.
- Elegance - The right solution. Clear, simple, no unnecessary parts. Elegant code is: transparent (obvious intent), correct (works for all cases), explanatory (documents itself), uniform (consistent patterns), and generic (general-purpose over special-purpose).
Modules
- Deep modules - Small interface, complete implementation. Prefer few deep modules over many shallow ones.
- Information hiding - Encapsulate design decisions. Users should not need to know how internals work.
- General-purpose > Special-purpose - More general interfaces are simpler and deeper. Avoid over-specialization.
- Layers with different abstractions - Each layer provides a distinct abstraction. Don't mix levels.
- Separate general from specific - Specialize without polluting.
Interface Design
- Simple interface - Prioritize common use case. It is more important to have a simple interface than a simple implementation.
- Define errors out of existence - Validate first, don't handle after. Make invalid states unrepresentable.
Process
- Design twice - Consider alternatives. The first design is rarely optimal.
- Strategic > Tactical - Invest in design, not just features. Short-term speed leads to long-term debt.
Code Quality
Readability
- [ ] Descriptive, consistent names
- [ ] Small functions (single responsibility)
- [ ] No duplication (DRY)
- [ ] No unnecessary comments
- [ ] Code in English
- [ ] Parsimonious - No unnecessary code or abstraction
- [ ] Elegant - Transparent, correct, explanatory, uniform, generic
Architecture
- [ ] Separation of concerns
- [ ] Appropriate abstractions
- [ ] Explicit dependencies
- [ ] No unnecessary coupling
Type Safety
- [ ] Explicit type annotations in public APIs
- [ ] No
anyorunknownwithout justification - [ ] Generics used correctly
- [ ] Type-safe data boundaries
- [ ] Ambiguous types eliminated
Correctness Verification
Invariants
- [ ] Object creation: Cannot exist in invalid state
- [ ] State transition: Maintains consistency
- [ ] Deletion: No orphaned records
- [ ] Query: Always returns consistent data
Preconditions & Postconditions
- [ ] Preconditions validated before operation
- [ ] Postconditions guaranteed after operation
- [ ] Impossible states unrepresentable
Properties
- [ ] Totality - Function handles all valid inputs
- [ ] Determinism - Same input → same output
- [ ] Atomicity - Operations are all-or-nothing
- [ ] Consistency - Data never in invalid state
Security & Performance
Security
- [ ] Input validation
- [ ] No injection vulnerabilities
- [ ] No hardcoded secrets
- [ ] No magic numbers (use constants)
Performance
- [ ] No N+1 queries (use eager loading)
- [ ] No queries in loops (use bulk operations)
- [ ] Adequate indexes where needed
Project Rules
- English naming - Functions, variables, classes in English
- Lints required - Run project linters before considering done
- No lint disables - Fix root cause, don't suppress
- No hacks - If a feature requires a hack, workaround, or monkey patch, stop. Fix the root cause properly or be honest that the task cannot be completed without compromising quality.
- No partial solutions - Do not commit code that could break things later or that only works coincidentally.
- No backwards compatibility bias - Fix poorly designed APIs or behaviors properly rather than preserving a flawed design. Correctness over compatibility.
Execution
- Identify modified files:
git diff --name-only - Determine abstraction level: Is this spec, implementation, or intent?
- Verify correctness: Does code at this level match level above?
- Apply design principles: Check complexity, module depth, information hiding
- Run linters: Project-specific commands
- Run type checker:
mypy,tsc --noEmit, etc. - Report findings: Classify by severity
Severity
| Level | Description | |-------|-------------| | 🔴 Critical | Security vulnerability, data loss, breakage, incorrect results, hack or workaround introduced | | 🟠 High | Performance issue, maintainability blocker, type unsafety | | 🟡 Medium | Code smell, improvement opportunity | | 🟢 Low | Style preference, nitpick |
Output Format
[🔴/🟠/🟡/🟢] :
- Problem: ...
- Suggestion: ...
After every audit, explicitly flag any finding that represents a fragile hack or a partial solution — even if it is currently passing tests.
Red Flags
Identify these indicators of poor design:
- Change amplification - Simple change requires modifications in many places
- Cognitive load - Developer needs to know too much to make changes
- Obscurity - Important information not obvious
- Shallow modules - Interface as complex as implementation
- Information leakage - Design decisions exposed at module boundary
- Special-purpose classes - Over-specialized, hard to reuse
- Redundant code - Duplication that could be abstracted
- Hacks & workarounds - Local fixes that paper over deeper issues instead of addressing the root cause
- Partial solutions - Incomplete implementations that pass happy-path but break edge cases
- Coincidental correctness - Code that works for the wrong reasons; fragile under change
Verification Techniques
Data Flow Analysis
- Trace input → output
- Verify no "impossible" states
- Confirm exceptions don't break invariants
State Machine Analysis
For code handling state transitions:
- Identify valid states
- Diagram transitions
- Verify completeness (all transitions handled)
- Verify reachability (no orphaned states)
- Verify safety (invalid states never reached)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: FabianVegaA
- Source: FabianVegaA/skills
- License: BSD-3-Clause
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.