smallnest/goal-workflow3 files

Smell

Detect software architecture bad smells, algorithmic complexity hotspots, and anti-patterns in a codebase. Produces a detailed markdown report identifying violations of architectural principles, design patterns, code quality, and performance complexity. Triggers on: smell, code smell, architecture smell, find anti-patterns, detect bad smells, complexity analysis, 代码坏味道, 架构坏味道, 反模式, 找出坏味道, 复杂度分析.

Specification
Skill ID
smallnest/goal-workflow/smell
Publisher
smallnest
Repository
goal-workflow
Installs
0
Files
3
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

smallnest/goal-workflow/smellInstalls these files
  • README.md
  • SKILL.md
  • test-prompts.json

What this skill tells the agent

Smell — Architecture Bad Smell Detector

Analyze a codebase to find violations of software architecture principles, anti-patterns, code "bad smells," and algorithmic complexity hotspots. Produce a comprehensive, actionable markdown report.

Knowledge base: This skill encodes architectural patterns, anti-patterns, code smells, and algorithmic complexity heuristics drawn from industry research and practice, including the classic code smells catalog by Martin Fowler / Kent Beck (as organized on refactoring.guru: Bloaters, Object-Orientation Abusers, Change Preventers, Dispensables, Couplers).


The Job

  1. Understand the scope — ask what part of the project to analyze (full project, specific module, or recent changes)
  2. Scan the codebase using find, grep, and Agent (Explore subagent) to gather candidate signals and evidence
  3. Validate candidates against context, callers, history, workload, and measurements before confirming findings
  4. Generate a detailed markdown report saved to tasks/smell-report-[timestamp].md
  5. Present a summary of confirmed findings and separate candidates to the user

Step 1: Scope Clarification

Ask the user:

What scope should I analyze?
  A. Entire project (thorough, may take time)
  B. Specific module/directory: [please specify]
  C. Only recently changed files (git diff)
  D. Only architectural-level issues (skip low-level code smells)

If the user doesn't specify, default to option A for small projects (< 100 files) or C for large projects.


Step 2: Evidence Gathering

Use the Explore subagent (Agent with subagent_type: "Explore") to scan the codebase for architectural patterns and anti-patterns. Run multiple parallel explorations:

Exploration Commands

Run these in parallel to gather evidence efficiently:

  1. Project Structure Scan: Map the directory tree, identify the architectural style (layered, modular monolith, microservices, etc.)
  2. Dependency Analysis: Find import/include patterns, check for circular dependencies, identify coupling hotspots
  3. Module/Component Scan: Identify God Objects (files > 500 lines), check cohesion, check single responsibility violations
  4. Pattern Detection: Look for known anti-pattern signatures (static cling, service locator abuse, leaky abstractions)
  5. Testing Scan: Check test coverage patterns, test file locations, test-to-code ratios
  6. Naming & Clarity Scan: Flag misleading names, overly generic names (Manager, Helper, Util), inconsistent naming conventions
  7. Complexity Scan: Detect algorithmic complexity hotspots — nested loops, N+1 queries, repeated scans, sort-in-loop, expensive recomputation in render paths

Key Heuristics

Heuristics are candidate signals, not findings. A line-count, nesting, naming, or Big-O match must be validated against the code's responsibility, callers, change history, workload, and intentional constraints. Do not assign severity from a threshold alone.

CategorySmellDetection Heuristic
ArchitectureBig Ball of MudNo clear directory structure; everything in root or one flat folder; no separation of concerns
ArchitectureViolated Layer BoundariesInner layers importing outer layers; infrastructure code in domain/core layer
ArchitectureMissing ArchitectureNo src/, lib/, core/ separation; SQL inline with UI code; HTTP handlers mixed with business logic
ArchitectureDistributed MonolithMicroservices sharing a database; services that can't deploy independently
ArchitectureAnemic Domain ModelModel/entity classes with only getters/setters and no behavior; all logic in services
ArchitectureCQRS Without NeedSeparate read/write models for simple CRUD; unnecessary complexity
ArchitectureOver-Layered ArchitectureExcessive layers/tiers that add pass-through code with no real value
ArchitectureOver-AbstractionSo many indirections/interfaces/generics that you get lost following the code
ArchitectureFuturistic ArchitectureSpeculative flexibility for requirements that may never come (predicting the future)
ArchitectureTechnology-Enthusiast ArchitectureShiny/unproven tech adopted in production because it's new, not because it fits
ArchitectureOverkill ArchitectureHeavyweight architecture/tech thrown at a simple problem
ArchitectureCloud/Visio ArchitectureDiagrams disconnected from the actual code and runtime reality
CouplingCircular DependenciesModule A imports B, B imports A; detected via import graph analysis
CouplingContent CouplingOne module directly accesses another's internal/private members
CouplingCommon CouplingExcessive global variables/shared mutable state; singleton abuse
CouplingStamp CouplingPassing large data structures when only a few fields are needed
CohesionGod ObjectSingle class/module > 500 lines; > 20 public methods; handles unrelated concerns
CohesionShotgun SurgeryA single change requires touching 5+ files across unrelated modules
CohesionFeature EnvyMethod calls foreign class methods more than its own class methods
CohesionData ClumpsSame group of 3+ parameters appearing together in multiple method signatures
DesignLeaky AbstractionsImplementation details (DB queries, HTTP calls) exposed through interfaces
DesignStatic ClingExcessive use of static methods; static state that prevents testability
DesignService Locator AbuseDI container passed around instead of proper constructor injection
DesignViolated SOLIDSRP violations, OCP violations (switch/if-else chains on types), ISP violations (fat interfaces)
DesignSwitch StatementsSame switch/if-else chain on a type code appearing in multiple places; should be polymorphism
DesignRefused BequestSubclass inherits methods/fields it doesn't use or overrides them to throw/no-op
DesignAlternative Classes w/ Different InterfacesTwo classes do the same thing but have differently-named methods
DesignParallel Inheritance HierarchiesCreating a subclass in one hierarchy forces a matching subclass in another
DesignSpeculative GeneralityUnused abstract classes, hooks, params, or generics "for future needs" (YAGNI)
DesignIncomplete Library ClassWrapping/patching a third-party class because it lacks needed methods
CohesionDivergent ChangeOne module changed for many unrelated reasons (opposite of Shotgun Surgery)
CohesionData ClassClass with only fields + getters/setters, no behavior (anemic data bag)
CohesionLazy ClassClass/module that does too little to justify its existence
CouplingInappropriate IntimacyTwo classes access each other's private/internal parts too much
CouplingMessage ChainsLong call chains a.getB().getC().getD() (Law of Demeter violation)
CouplingMiddle ManClass that only delegates every call to another class
CodeTemporary FieldInstance field set/used only in certain circumstances, empty otherwise
CodeDuplicated CodeIdentical/similar logic appearing in 3+ places; copy-paste patterns
CodeLong MethodMethods > 50 lines; deep nesting (> 3 levels)
CodeLong Parameter ListMethods with > 4 parameters
CodePrimitive ObsessionUsing strings/ints instead of domain types (e.g., string email instead of Email type)
CodeMagic Numbers/StringsHardcoded literals without named constants
CodeComments as DeodorantExcessive comments explaining bad code instead of refactoring
CodeDead CodeUnused imports, unreachable code, commented-out blocks

Use this skill in a project

Open any RiverX project, search the Skills panel for smallnest/goal-workflow/smell, and install it in one click.

Use this skill