skills/ldd-enforcement/SKILL.md
Lint-Driven Development — formatting and syntax gate that runs BEFORE test execution. Violations block TDD entry. Triggers at Phase 4 entry.
npx skillsauth add bigeasyfreeman/adlc ldd-enforcementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
LDD ensures code is structurally sound before testing begins. Run linters, formatters, and type-checkers FIRST. Fix all violations. Only then proceed to TDD.
LDD is the formatting and syntax gate. TDD is the success criteria gate. Both are mandatory, both are sequential, both block.
1. Run all configured linters → collect violations
2. Run all configured formatters → collect formatting issues
3. Run all configured type-checkers → collect type errors
4. Any violations?
YES → Fix all violations → Go to step 1
NO → Proceed to TDD
This is a hard gate. Lint violations block test execution. A task cannot enter TDD until LDD is clean.
| Language | Linters | Formatters | Type Checkers | |----------|---------|------------|--------------| | Python | ruff | black | mypy | | JavaScript | eslint | prettier | — | | TypeScript | eslint | prettier | tsc | | Rust | clippy | rustfmt | (compiler) | | Go | golangci-lint | gofmt | (compiler) |
| Category | Examples | Why It Matters | |----------|---------|---------------| | Code style | Indentation, line length, naming conventions | Consistency reduces cognitive load | | Type safety | Missing type annotations, type mismatches | Catches bugs before runtime | | Import hygiene | Unused imports, circular imports, ordering | Reduces dependency surface | | Dead code | Unreachable code, unused variables/functions | Reduces maintenance burden | | Naming conventions | snake_case vs camelCase consistency | Pattern recognition speed | | File structure | Module organization, init.py completeness | Navigability |
LDD checks outcomes (does the code pass lint?) not process (did the agent format before writing?).
Remove when: Models produce lint-clean code >95% of the time. At that point, this gate becomes a no-op validation — keep it running but it won't block.
adlc:
ldd:
linters:
- ruff
- mypy
formatters:
- black
type_checkers: [] # covered by mypy for Python
block_on_violation: true
auto_fix: true # attempt auto-fix before reporting violations
| Excuse | Rebuttal | |--------|---------| | "Linting slows down iteration" | A 2-second lint check prevents 20-minute debugging sessions | | "The code works, formatting doesn't matter" | Unformatted code increases review time and hides bugs | | "Type annotations are overkill for this" | Types are documentation that the compiler verifies | | "I'll clean it up later" | Later never comes. Lint debt compounds. |
development
Orchestration skill: chains the full ADLC Build Loop. PRD → Brief → Council → Scaffold → Codegen → LDD → TDD → Council → PR. Use when implementing a new feature end-to-end.
development
# Skill: Helm & ArgoCD Deployment > Validates Helm charts and generates ArgoCD Application manifests when the ADLC pipeline produces infrastructure or service code. Ensures every deployable artifact has correct chart structure, environment-specific values, and a GitOps-ready Application manifest before code review. --- ## Why This Exists Without deployment validation in the pipeline, common failures slip through to production: - **Helm charts fail `helm template`** because of missing values,
testing
Decide whether an intersecting verifier actually exercises the semantic change.
development
# Skill: UX Flow Builder > Generates user flow diagrams (Mermaid) from PRD personas and screen specifications. Surfaces dead ends, missing screens, and disconnected flows before design or engineering starts. Helps PMs think in screens, not features. --- ## Trigger - Automatically during PRD Phase 4 (Personas & Flows) to visualize the user journey - On-demand when the PM says "show me the flow" or "map the user journey" - During PRD evaluation to verify screen connectivity --- ## Input ```