Source profileQuality 94/100

dimetron/pi-go/.pi-go/skills/design-review/SKILL.md

design-review

Deep design review of Go codebase — naming, structure, consistency, interfaces, error handling. Scores each dimension and provides actionable fixes.

Source repository stars
144
Declared platforms
0
Static risk flags
0
Last source update
2026-08-24
Source checked
2026-08-25

Decision brief

What it does: where it fits

Perform a comprehensive design review of the Go codebase. Evaluate code quality, naming conventions, consistency, and architectural patterns. Produce a scored report with actionable improvements.

Best for

  • Auditing overall design quality before a major refactor or release
  • Onboarding to an unfamiliar Go codebase and need a structured assessment
  • Comparing codebase against Go idioms after a period of rapid development

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/dimetron/pi-go --skill ".pi-go/skills/design-review"
Safe inspection promptEditorial

Inspect the Agent Skill "design-review" from https://github.com/dimetron/pi-go/blob/b91c13bc90f8e48d6ee73f5fb56e199de0c02630/.pi-go/skills/design-review/SKILL.md at commit b91c13bc90f8e48d6ee73f5fb56e199de0c02630. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Relationship to code-review

    Review the “Relationship to code-review” section in the pinned source before continuing.

    Review and apply the “Relationship to code-review” source section.
  2. 02

    Procedure

    1. Set scope first: - Determine target scope from command args (/design-review, package path, or --focus) - Apply default include/exclude rules from the Scope section - Note any skipped areas explicitly in the report

    Set scope first:Determine target scope from command args (/design-review, package path, or --focus)Apply default include/exclude rules from the Scope section
  3. 03

    When to use

    Use this skill when: - Auditing overall design quality before a major refactor or release - Onboarding to an unfamiliar Go codebase and need a structured assessment - Comparing codebase against Go idioms after a period of rapid development

    Auditing overall design quality before a major refactor or releaseOnboarding to an unfamiliar Go codebase and need a structured assessmentComparing codebase against Go idioms after a period of rapid development
  4. 04

    Dimensions

    Score each dimension 1-10 and provide specific file:line references for issues found.

    Exported types/functions follow Go conventions (MixedCaps, no underscores)Package names are short, lowercase, singular (not utils, helpers, common)Interface names use -er suffix where appropriate (Reader, Writer)
  5. 05

    1. Naming Conventions

    Exported types/functions follow Go conventions (MixedCaps, no underscores)

    Exported types/functions follow Go conventions (MixedCaps, no underscores)Package names are short, lowercase, singular (not utils, helpers, common)Interface names use -er suffix where appropriate (Reader, Writer)

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score94/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars144SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
dimetron/pi-go
Skill path
.pi-go/skills/design-review/SKILL.md
Commit
b91c13bc90f8e48d6ee73f5fb56e199de0c02630
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.md

Design Review

Perform a comprehensive design review of the Go codebase. Evaluate code quality, naming conventions, consistency, and architectural patterns. Produce a scored report with actionable improvements.

When to use

Use this skill when:

  • Auditing overall design quality before a major refactor or release
  • Onboarding to an unfamiliar Go codebase and need a structured assessment
  • Comparing codebase against Go idioms after a period of rapid development

Do NOT use for:

  • Reviewing a single PR or uncommitted diff (use code-review instead)
  • Writing new code or fixing bugs
  • Running linters/tests for CI gating (use code-review instead)

Relationship to code-review

Aspectdesign-reviewcode-review
ScopeEntire codebase or packageChanged files only
ActionRead-only audit, scored reportFix issues, enforce gates
FocusArchitecture, patterns, idiomsCorrectness, coverage, linting
OutputScorecard + recommendationsPass/fail gates + fixes applied

Dimensions

Score each dimension 1-10 and provide specific file:line references for issues found.

1. Naming Conventions

  • Exported types/functions follow Go conventions (MixedCaps, no underscores)
  • Package names are short, lowercase, singular (not utils, helpers, common)
  • Interface names use -er suffix where appropriate (Reader, Writer)
  • Receiver names are short (1-2 chars), consistent within type
  • Variable names: short in small scopes, descriptive in large scopes
  • Acronyms are all-caps (ID, URL, HTTP, not Id, Url, Http)
  • Test function names follow TestFuncName_Scenario pattern
  • Constants use MixedCaps, not SCREAMING_SNAKE

2. Package Design

  • Packages have clear, singular responsibility
  • No circular dependencies
  • Internal packages used appropriately for implementation details
  • Package-level doc comments present
  • No God packages (too many responsibilities)
  • Reasonable file sizes (flag files > 500 lines)

3. Interface Design

  • Interfaces are small (1-3 methods preferred)
  • Interfaces defined where consumed, not where implemented
  • No unnecessary interface pollution (concrete types are fine)
  • Accept interfaces, return structs
  • io.Reader, io.Writer, fmt.Stringer used where applicable

4. Error Handling

  • Errors wrapped with context using fmt.Errorf("...: %w", err)
  • Custom error types where callers need to inspect errors
  • No swallowed errors (unchecked err returns)
  • Sentinel errors are var ErrFoo = errors.New(...) not string comparison
  • Error messages are lowercase, no punctuation, no "failed to" prefix

5. Concurrency Patterns

  • Goroutines have clear ownership and lifecycle
  • Channels used for communication, mutexes for state
  • context.Context propagated correctly
  • No goroutine leaks (all goroutines have exit paths)
  • sync.WaitGroup or errgroup used for fan-out

6. API Consistency

  • Similar operations use similar signatures across packages
  • Config structs vs option functions used consistently
  • Constructor functions follow NewFoo pattern
  • Consistent use of pointer vs value receivers within a type
  • Method ordering: constructor, public methods, private methods

7. Code Organization

  • One primary type per file (type + methods)
  • Test files mirror source files (foo.go / foo_test.go)
  • Constants and vars at top of file
  • init() functions avoided (or justified)
  • Build tags and platform files follow conventions

8. Documentation

  • Exported functions have doc comments starting with function name
  • Package doc comments present
  • Complex algorithms have inline comments explaining why
  • No stale/misleading comments
  • Examples in tests for complex APIs

Procedure

  1. Set scope first:

    • Determine target scope from command args (/design-review, package path, or --focus)
    • Apply default include/exclude rules from the Scope section
    • Note any skipped areas explicitly in the report
  2. Scan structure: Use Glob (**/*.go) to map the package layout. Use Shell with go list ./... to enumerate packages and wc -l for line counts.

  3. Automated checks: Run in parallel:

    • go vet ./... — catch common mistakes
    • golangci-lint run ./... (if available) — extended lint checks
    • Check for //nolint directives and their justifications
    • If a tool is unavailable, continue review and mark that check as "skipped"
  4. Naming audit: Use Grep to sample each package:

    • Search for naming violations: pattern Id[^s] instead of ID, Url[^s] instead of URL
    • Use Read to check receiver name consistency per type
    • Verify exported function doc comments
    • Check package names against conventions
  5. Interface audit: Use Grep for type \w+ interface to find all interface definitions:

    • Count methods per interface (flag > 5 methods)
    • Check if interfaces are defined at consumer or producer
    • Look for interface embedding depth
  6. Error handling audit: Sample error paths:

    • Grep for unchecked errors: _, _ = or bare function calls
    • Check error wrapping: %w vs %v vs %s
    • Look for string-based error checking vs sentinel/type errors
  7. Consistency audit: Compare patterns across packages:

    • Constructor patterns: Grep for func New across all packages and compare signatures
    • Config patterns (struct vs options)
    • Logging patterns (structured vs printf)
    • Test patterns (table-driven vs individual)
  8. Cross-reference: Use tooling for efficiency:

    • Dead code: Grep for unexported function definitions, then Grep for call sites within the package
    • Duplicates: compare function signatures across packages
    • Inconsistent patterns doing the same thing differently
  9. Validate report before output: Self-check the report against these gates:

    • Every scored dimension has at least one finding with a file:line reference, or an explicit "no issues found" note
    • Every Top 5 item has a before/after code snippet or an exact command to run
    • Key Strengths section has at least 2 entries with file references
    • Overall score matches the weighted average (recalculate to confirm)
    • No dimension is scored without evidence — if you can't find evidence, mark N/A If any gate fails, fix the report before presenting it.

Scope

  • Default include: *.go files in requested scope
  • Default exclude: vendor/, testdata/, generated files (// Code generated), and protobuf outputs (for example *.pb.go) unless explicitly requested
  • Optional focus flags:
    • --include-tests to include test style and coverage patterns in scoring
    • --include-generated to include generated code in analysis
  • If scope is narrowed (for example internal/tui), score only that scope and state this clearly

Project-Specific Checks (pi-go)

In addition to general Go review, check:

  • ADK compliance: uses model.LLM, tool.Tool, session.Service — no custom abstractions wrapping ADK
  • Provider pattern: all providers under internal/provider/ implement the same interface consistently
  • Tool registration: tools created via tool.NewFunctionTool, registered in tools.CoreTools()
  • Session format: JSONL append-only, implements session.Service
  • Error retry: transient LLM errors use internal/agent/retry.go patterns
  • TUI conventions: Bubble Tea v2 imports from charm.land/bubbletea/v2, not the old github.com/charmbracelet/bubbletea path
  • No external runtime deps: binary must be self-contained
  • No init() functions: prefer explicit initialization

Scoring Model

Use these weights for overall score:

  • Naming Conventions: 15%
  • Package Design: 15%
  • Interface Design: 15%
  • Error Handling: 20%
  • Concurrency Patterns: 10%
  • API Consistency: 10%
  • Code Organization: 10%
  • Documentation: 5%

Calibration:

ScoreMeaning
9-10Stdlib/kubernetes quality — exemplary, publishable as reference
7-8Production quality — minor issues, follows idioms well
5-6Functional — noticeable gaps, inconsistencies, or missing patterns
3-4Below standard — systematic issues, needs refactoring
1-2Problematic — fundamental design issues

Rules:

  • Score each dimension 1-10 using the calibration table above
  • Allow N/A when a dimension does not apply to the reviewed scope
  • Compute overall as weighted average of applicable dimensions only
  • Round overall score to 1 decimal place

Output Format

Present results as a scorecard table, then detailed findings per dimension.

## Scorecard

| Dimension           | Score | Notes                           |
|---------------------|-------|---------------------------------|
| Naming Conventions  | X/10  | brief note                      |
| Package Design      | X/10  | brief note                      |
| Interface Design    | X/10  | brief note                      |
| Error Handling      | X/10  | brief note                      |
| Concurrency         | X/10  | brief note                      |
| API Consistency     | X/10  | brief note                      |
| Code Organization   | X/10  | brief note                      |
| Documentation       | X/10  | brief note                      |
|---------------------|-------|---------------------------------|
| **Overall**         | X/10  | weighted average (1 decimal)   |

## Key Strengths
1. **[Title]** — why it's good + `file:line` reference
2. ...
(minimum 2 strengths required)

## Top 5 Actionable Improvements

1. **[Title]** (impact: high/medium/low, effort: high/medium/low)
   - Confidence: high/medium/low
   - What: one-sentence description of the problem
   - Where: `file:line` references (every affected location)
   - Why: what breaks, degrades, or confuses without the fix
   - How: concrete fix — include before/after code snippet

   ```go
   // before
   func GetUserId() string { ... }
   // after
   func GetUserID() string { ... }

... (repeat for each — every item MUST have a before/after snippet or exact command)

Detailed Findings

Naming Conventions (X/10)

Issues (each must have evidence):

#LocationIssueSuggested fix
1file.go:42userId should be userIDRename to userID
............

What's working well: brief note on what this dimension does right.

... (repeat per dimension — every scored dimension MUST have the issues table)


## Guidelines

- DO NOT make changes — this is a read-only audit
- **Evidence is mandatory**: every finding must include a `file:line` reference. For systemic issues, provide at least one concrete example plus a count ("12 occurrences across 4 packages")
- **Fixes must be concrete**: "improve naming" is not a fix; `rename userId to userID in store.go:42` is
- **Before/after required**: every Top 5 improvement must include a code snippet showing the current state and the proposed fix
- Be fair: note strengths as well as weaknesses in every dimension
- Prioritize by impact: focus on issues that affect maintainability
- Prioritize repository conventions and Effective Go first; use stdlib/well-known projects as secondary tie-breakers
- Score honestly — use the calibration table; 7/10 is good, 10/10 means stdlib-quality
- **No empty dimensions**: if a dimension is scored, it must have the issues table populated. If no issues are found, state "no issues found" explicitly and justify the score
- **Report is incomplete if**: any scored dimension lacks evidence, any Top 5 item lacks a before/after snippet, or the weighted average doesn't match the computed overall score

## Parallel Execution Strategy

For codebases with 5+ packages, split work across subagents:
1. **Main agent**: scan structure (step 2), run automated checks (step 3), produce final report
2. **Subagent per package group**: steps 4-7 (naming, interface, error, consistency audits)
   - Group small packages together (< 3 files each)
   - Each subagent returns dimension scores + findings for its packages
3. **Main agent**: merge subagent findings, resolve cross-package issues (step 8), compute final scores

## Examples

- `/design-review` — Full design review of entire codebase
- `/design-review internal/tui` — Review only the TUI package
- `/design-review --focus naming` — Review only naming conventions

Frequently asked questions

What to verify before installation and use

What does the design-review source document cover?

Perform a comprehensive design review of the Go codebase. Evaluate code quality, naming conventions, consistency, and architectural patterns. Produce a scored report with actionable improvements.

How do I install design-review?

The source record exposes this install command: npx skills add https://github.com/dimetron/pi-go --skill ".pi-go/skills/design-review". Inspect the command and pinned source before running it.

Alternatives

Compare before choosing

Computed 997

event4u-app/agent-config

design-review

When the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility and more.

Computed 941,814

GCWing/BitFun

design-review

Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, AI slop patterns, and slow interactions — then fixes them. Iteratively fixes issues in source code, committing each fix atomically and re-verifying with before/after screenshots. For plan-mode design review (before implementation), use /plan-design-review. Use when asked to "audit the design", "visual QA", "check if it looks good", or "design polish". Proactively suggest when the user mentions visual inconsistenci

Computed 92129,512

garrytan/gstack

design-review

Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, AI slop patterns, and slow interactions — then fixes them. (gstack)

Computed 100147

oaustegard/claude-skills

featuring

Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre