agileflow 3.4.3 → 4.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +238 -473
- package/README.md +22 -114
- package/bin/agileflow.js +15 -0
- package/bin/hooks/pre-bash.js +35 -0
- package/bin/hooks/pre-compact.js +34 -0
- package/bin/hooks/pre-edit.js +32 -0
- package/bin/hooks/pre-write.js +32 -0
- package/bin/hooks/session-start.js +42 -0
- package/bin/hooks/stop.js +34 -0
- package/content/plugins/ads/plugin.yaml +14 -0
- package/content/plugins/audit/plugin.yaml +14 -0
- package/content/plugins/core/hooks/babysit-mentor-injector.js +55 -0
- package/content/plugins/core/hooks/context-loader.js +169 -0
- package/content/plugins/core/hooks/damage-control-bash.js +78 -0
- package/content/plugins/core/hooks/damage-control-edit.js +76 -0
- package/content/plugins/core/hooks/damage-control-patterns.yaml +100 -0
- package/content/plugins/core/hooks/damage-control-write.js +72 -0
- package/content/plugins/core/hooks/pre-compact-state.js +90 -0
- package/content/plugins/core/hooks/session-welcome.js +19 -0
- package/content/plugins/core/plugin.yaml +82 -0
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +144 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +132 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +200 -0
- package/content/plugins/council/plugin.yaml +14 -0
- package/content/plugins/seo/plugin.yaml +14 -0
- package/package.json +29 -49
- package/src/cli/commands/doctor.js +159 -0
- package/src/cli/commands/hook.js +80 -0
- package/src/cli/commands/setup.js +292 -0
- package/src/cli/commands/status.js +47 -0
- package/src/cli/commands/update.js +83 -0
- package/src/cli/index.js +73 -0
- package/src/cli/wizard/behaviors-picker.js +108 -0
- package/src/cli/wizard/ide-picker.js +57 -0
- package/src/cli/wizard/personalization.js +64 -0
- package/src/cli/wizard/plugin-picker.js +106 -0
- package/src/lib/hash.js +41 -0
- package/src/runtime/config/defaults.js +61 -0
- package/src/runtime/config/loader.js +117 -0
- package/src/runtime/config/schema.json +99 -0
- package/src/runtime/config/writer.js +55 -0
- package/src/runtime/hooks/aggregator.js +157 -0
- package/src/runtime/hooks/chain.js +93 -0
- package/src/runtime/hooks/logger.js +68 -0
- package/src/runtime/hooks/manifest-loader.js +228 -0
- package/src/runtime/hooks/orchestrator.js +322 -0
- package/src/runtime/ide/capabilities.js +111 -0
- package/src/runtime/ide/claude-code-settings.js +234 -0
- package/src/runtime/ide/claude-code-skills.js +202 -0
- package/src/runtime/installer/file-index.js +112 -0
- package/src/runtime/installer/install.js +329 -0
- package/src/runtime/installer/stash.js +61 -0
- package/src/runtime/installer/sync-engine.js +205 -0
- package/src/runtime/plugins/registry.js +132 -0
- package/src/runtime/plugins/resolver.js +138 -0
- package/src/runtime/plugins/validator.js +196 -0
- package/src/runtime/skills/validator.js +335 -0
- package/lib/README.md +0 -178
- package/lib/api-routes.js +0 -625
- package/lib/api-server.js +0 -278
- package/lib/cache-provider.js +0 -155
- package/lib/codebase-indexer.js +0 -819
- package/lib/colors.generated.js +0 -117
- package/lib/colors.js +0 -341
- package/lib/consent.js +0 -232
- package/lib/content-sanitizer.js +0 -464
- package/lib/correlation.js +0 -277
- package/lib/drivers/claude-driver.ts +0 -312
- package/lib/drivers/codex-driver.ts +0 -464
- package/lib/drivers/driver-manager.ts +0 -159
- package/lib/drivers/gemini-driver.ts +0 -498
- package/lib/drivers/index.ts +0 -17
- package/lib/error-codes.js +0 -590
- package/lib/errors.js +0 -670
- package/lib/feature-flags.js +0 -171
- package/lib/feedback.js +0 -595
- package/lib/file-cache.js +0 -541
- package/lib/flag-detection.js +0 -344
- package/lib/format-error.js +0 -156
- package/lib/gate-runner.js +0 -282
- package/lib/generator-factory.js +0 -333
- package/lib/git-operations.js +0 -266
- package/lib/lazy-require.js +0 -59
- package/lib/lock-file.js +0 -144
- package/lib/logger.js +0 -106
- package/lib/merge-operations.js +0 -1006
- package/lib/path-resolver.js +0 -544
- package/lib/path-utils.js +0 -49
- package/lib/paths.js +0 -291
- package/lib/placeholder-registry.js +0 -822
- package/lib/process-executor.js +0 -214
- package/lib/progress.js +0 -334
- package/lib/protocol/driver.ts +0 -354
- package/lib/protocol/index.ts +0 -12
- package/lib/protocol/ir.ts +0 -271
- package/lib/registry-cache.js +0 -80
- package/lib/registry-di.js +0 -358
- package/lib/result-schema.js +0 -363
- package/lib/result.js +0 -210
- package/lib/session-display.js +0 -331
- package/lib/session-operations.js +0 -611
- package/lib/session-registry.js +0 -484
- package/lib/session-state-machine.js +0 -465
- package/lib/session-switching.js +0 -191
- package/lib/skill-loader.js +0 -213
- package/lib/smart-json-file.js +0 -682
- package/lib/state-machine.js +0 -286
- package/lib/table-formatter.js +0 -519
- package/lib/template-loader.js +0 -143
- package/lib/transient-status.js +0 -374
- package/lib/ui-manager.js +0 -612
- package/lib/validate-args.js +0 -213
- package/lib/validate-commands.js +0 -308
- package/lib/validate-names.js +0 -143
- package/lib/validate-paths.js +0 -434
- package/lib/validate.js +0 -134
- package/lib/worktree-operations.js +0 -201
- package/lib/yaml-utils.js +0 -164
- package/scripts/README.md +0 -267
- package/scripts/af +0 -34
- package/scripts/agent-loop.js +0 -879
- package/scripts/agileflow-configure.js +0 -368
- package/scripts/agileflow-statusline.sh +0 -857
- package/scripts/agileflow-welcome.js +0 -2246
- package/scripts/api-server-runner.js +0 -177
- package/scripts/archive-completed-stories.sh +0 -308
- package/scripts/auto-self-improve.js +0 -326
- package/scripts/automation-run-due.js +0 -128
- package/scripts/babysit-clear-restore.js +0 -154
- package/scripts/babysit-context-restore.js +0 -89
- package/scripts/backfill-ideation-status.js +0 -128
- package/scripts/batch-pmap-loop.js +0 -551
- package/scripts/check-sessions.js +0 -116
- package/scripts/check-update.js +0 -282
- package/scripts/ci-summary.js +0 -294
- package/scripts/claude-smart.sh +0 -85
- package/scripts/claude-tmux.sh +0 -737
- package/scripts/claude-watchdog.sh +0 -225
- package/scripts/clear-active-command.js +0 -48
- package/scripts/compress-status.sh +0 -116
- package/scripts/context-loader.js +0 -310
- package/scripts/damage-control/bash-tool-damage-control.js +0 -22
- package/scripts/damage-control/edit-tool-damage-control.js +0 -19
- package/scripts/damage-control/patterns.yaml +0 -227
- package/scripts/damage-control/write-tool-damage-control.js +0 -19
- package/scripts/damage-control-bash.js +0 -51
- package/scripts/damage-control-edit.js +0 -48
- package/scripts/damage-control-multi-agent.js +0 -231
- package/scripts/damage-control-write.js +0 -48
- package/scripts/dependency-check.js +0 -311
- package/scripts/document-repl.js +0 -793
- package/scripts/expertise-metrics.sh +0 -264
- package/scripts/generate-all.sh +0 -77
- package/scripts/generate-colors.js +0 -314
- package/scripts/generators/agent-registry.js +0 -183
- package/scripts/generators/command-registry.js +0 -166
- package/scripts/generators/index.js +0 -85
- package/scripts/generators/inject-babysit.js +0 -191
- package/scripts/generators/inject-help.js +0 -125
- package/scripts/generators/inject-readme.js +0 -166
- package/scripts/generators/skill-registry.js +0 -188
- package/scripts/get-env.js +0 -225
- package/scripts/init.sh +0 -76
- package/scripts/lib/README-portable-tasks.md +0 -424
- package/scripts/lib/ac-test-matcher.js +0 -452
- package/scripts/lib/audit-cleanup.js +0 -250
- package/scripts/lib/audit-registry.js +0 -340
- package/scripts/lib/automation-registry.js +0 -544
- package/scripts/lib/automation-runner.js +0 -476
- package/scripts/lib/browser-qa-evidence.js +0 -409
- package/scripts/lib/browser-qa-status.js +0 -192
- package/scripts/lib/bus-utils.js +0 -473
- package/scripts/lib/colors.generated.sh +0 -82
- package/scripts/lib/colors.sh +0 -46
- package/scripts/lib/command-prereqs.js +0 -280
- package/scripts/lib/concurrency-limiter.js +0 -511
- package/scripts/lib/configure-detect.js +0 -596
- package/scripts/lib/configure-features.js +0 -1927
- package/scripts/lib/configure-repair.js +0 -327
- package/scripts/lib/configure-utils.js +0 -114
- package/scripts/lib/context-formatter.js +0 -1158
- package/scripts/lib/context-loader.js +0 -840
- package/scripts/lib/counter.js +0 -103
- package/scripts/lib/damage-control-utils.js +0 -619
- package/scripts/lib/feature-catalog.js +0 -332
- package/scripts/lib/file-lock.js +0 -392
- package/scripts/lib/file-tracking.js +0 -735
- package/scripts/lib/frontmatter-parser.js +0 -133
- package/scripts/lib/gate-enforcer.js +0 -295
- package/scripts/lib/hook-metrics.js +0 -324
- package/scripts/lib/ideation-index.js +0 -1205
- package/scripts/lib/json-utils.sh +0 -162
- package/scripts/lib/lifecycle-detector.js +0 -125
- package/scripts/lib/model-profiles.js +0 -118
- package/scripts/lib/portable-tasks-cli.js +0 -274
- package/scripts/lib/portable-tasks.js +0 -479
- package/scripts/lib/process-cleanup.js +0 -527
- package/scripts/lib/quality-gates.js +0 -788
- package/scripts/lib/scale-detector.js +0 -396
- package/scripts/lib/sessionRegistry.js +0 -678
- package/scripts/lib/signal-detectors.js +0 -867
- package/scripts/lib/skill-catalog.js +0 -557
- package/scripts/lib/skill-recommender.js +0 -311
- package/scripts/lib/state-migrator.js +0 -353
- package/scripts/lib/status-task-bridge.js +0 -522
- package/scripts/lib/status-writer.js +0 -255
- package/scripts/lib/story-claiming.js +0 -704
- package/scripts/lib/story-state-machine.js +0 -437
- package/scripts/lib/sync-ideation-status.js +0 -291
- package/scripts/lib/task-registry-cache.js +0 -490
- package/scripts/lib/task-registry.js +0 -1191
- package/scripts/lib/task-sync.js +0 -230
- package/scripts/lib/tdd-phase-manager.js +0 -455
- package/scripts/lib/team-events.js +0 -510
- package/scripts/lib/tmux-audit-monitor.js +0 -612
- package/scripts/lib/tmux-group-colors.js +0 -113
- package/scripts/lib/tool-registry.yaml +0 -241
- package/scripts/lib/tool-shed.js +0 -441
- package/scripts/lib/validation-registry.js +0 -177
- package/scripts/messaging-bridge.js +0 -561
- package/scripts/migrate-ideation-index.js +0 -553
- package/scripts/native-team-observer.js +0 -219
- package/scripts/obtain-context.js +0 -272
- package/scripts/pre-push-check.sh +0 -46
- package/scripts/precompact-context.sh +0 -306
- package/scripts/query-codebase.js +0 -543
- package/scripts/ralph-loop.js +0 -1278
- package/scripts/resume-session.sh +0 -121
- package/scripts/screenshot-verifier.js +0 -215
- package/scripts/session-boundary.js +0 -138
- package/scripts/session-coordinator.sh +0 -232
- package/scripts/session-manager.js +0 -546
- package/scripts/smart-detect.js +0 -449
- package/scripts/spawn-audit-sessions.js +0 -877
- package/scripts/spawn-parallel.js +0 -751
- package/scripts/strip-ai-attribution.js +0 -63
- package/scripts/task-completed-gate.js +0 -237
- package/scripts/team-manager.js +0 -596
- package/scripts/team-status-display.js +0 -200
- package/scripts/teammate-idle-gate.js +0 -237
- package/scripts/test-session-boundary.js +0 -80
- package/scripts/tmux-close-windows.sh +0 -180
- package/scripts/tmux-restore-window.sh +0 -67
- package/scripts/tmux-save-closed-window.sh +0 -35
- package/scripts/tui/App.js +0 -151
- package/scripts/tui/Dashboard.js +0 -277
- package/scripts/tui/blessed/data/watcher.js +0 -180
- package/scripts/tui/blessed/index.js +0 -244
- package/scripts/tui/blessed/panels/output.js +0 -101
- package/scripts/tui/blessed/panels/sessions.js +0 -150
- package/scripts/tui/blessed/panels/trace.js +0 -97
- package/scripts/tui/blessed/ui/help.js +0 -77
- package/scripts/tui/blessed/ui/screen.js +0 -52
- package/scripts/tui/blessed/ui/statusbar.js +0 -47
- package/scripts/tui/blessed/ui/tabbar.js +0 -99
- package/scripts/tui/index.js +0 -70
- package/scripts/tui/lib/crashRecovery.js +0 -304
- package/scripts/tui/lib/eventStream.js +0 -309
- package/scripts/tui/lib/keyboard.js +0 -261
- package/scripts/tui/lib/loopControl.js +0 -371
- package/scripts/tui/panels/OutputPanel.js +0 -240
- package/scripts/tui/panels/SessionPanel.js +0 -170
- package/scripts/tui/panels/TracePanel.js +0 -298
- package/scripts/tui/simple-tui.js +0 -510
- package/scripts/validate-expertise.sh +0 -263
- package/scripts/validate-tokens.sh +0 -73
- package/scripts/validators/README.md +0 -143
- package/scripts/validators/component-validator.js +0 -239
- package/scripts/validators/json-schema-validator.js +0 -186
- package/scripts/validators/markdown-validator.js +0 -152
- package/scripts/validators/migration-validator.js +0 -129
- package/scripts/validators/security-validator.js +0 -380
- package/scripts/validators/story-format-validator.js +0 -197
- package/scripts/validators/test-result-validator.js +0 -114
- package/scripts/validators/workflow-validator.js +0 -247
- package/scripts/welcome-deferred.js +0 -437
- package/scripts/worktree-create.sh +0 -111
- package/src/core/agents/a11y-analyzer-aria.md +0 -155
- package/src/core/agents/a11y-analyzer-forms.md +0 -162
- package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
- package/src/core/agents/a11y-analyzer-semantic.md +0 -153
- package/src/core/agents/a11y-analyzer-visual.md +0 -158
- package/src/core/agents/a11y-consensus.md +0 -248
- package/src/core/agents/accessibility.md +0 -515
- package/src/core/agents/adr-writer.md +0 -463
- package/src/core/agents/ads-audit-budget.md +0 -181
- package/src/core/agents/ads-audit-compliance.md +0 -169
- package/src/core/agents/ads-audit-creative.md +0 -164
- package/src/core/agents/ads-audit-google.md +0 -226
- package/src/core/agents/ads-audit-meta.md +0 -183
- package/src/core/agents/ads-audit-tracking.md +0 -197
- package/src/core/agents/ads-consensus.md +0 -396
- package/src/core/agents/ads-generate.md +0 -145
- package/src/core/agents/ads-performance-tracker.md +0 -197
- package/src/core/agents/analytics.md +0 -617
- package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
- package/src/core/agents/api-quality-analyzer-docs.md +0 -176
- package/src/core/agents/api-quality-analyzer-errors.md +0 -183
- package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
- package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
- package/src/core/agents/api-quality-consensus.md +0 -214
- package/src/core/agents/api-validator.md +0 -183
- package/src/core/agents/api.md +0 -665
- package/src/core/agents/arch-analyzer-circular.md +0 -148
- package/src/core/agents/arch-analyzer-complexity.md +0 -171
- package/src/core/agents/arch-analyzer-coupling.md +0 -146
- package/src/core/agents/arch-analyzer-layering.md +0 -151
- package/src/core/agents/arch-analyzer-patterns.md +0 -162
- package/src/core/agents/arch-consensus.md +0 -227
- package/src/core/agents/brainstorm-analyzer-features.md +0 -169
- package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
- package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
- package/src/core/agents/brainstorm-analyzer-market.md +0 -147
- package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
- package/src/core/agents/brainstorm-consensus.md +0 -237
- package/src/core/agents/browser-qa.md +0 -328
- package/src/core/agents/ci.md +0 -511
- package/src/core/agents/code-reviewer.md +0 -288
- package/src/core/agents/codebase-query.md +0 -266
- package/src/core/agents/completeness-analyzer-api.md +0 -190
- package/src/core/agents/completeness-analyzer-conditional.md +0 -201
- package/src/core/agents/completeness-analyzer-handlers.md +0 -159
- package/src/core/agents/completeness-analyzer-imports.md +0 -159
- package/src/core/agents/completeness-analyzer-routes.md +0 -182
- package/src/core/agents/completeness-analyzer-state.md +0 -188
- package/src/core/agents/completeness-analyzer-stubs.md +0 -198
- package/src/core/agents/completeness-consensus.md +0 -286
- package/src/core/agents/compliance.md +0 -509
- package/src/core/agents/council-advocate.md +0 -206
- package/src/core/agents/council-analyst.md +0 -252
- package/src/core/agents/council-optimist.md +0 -170
- package/src/core/agents/database.md +0 -601
- package/src/core/agents/datamigration.md +0 -699
- package/src/core/agents/design.md +0 -525
- package/src/core/agents/devops.md +0 -720
- package/src/core/agents/documentation.md +0 -504
- package/src/core/agents/epic-planner.md +0 -480
- package/src/core/agents/error-analyzer.md +0 -201
- package/src/core/agents/integrations.md +0 -603
- package/src/core/agents/legal-analyzer-a11y.md +0 -110
- package/src/core/agents/legal-analyzer-ai.md +0 -117
- package/src/core/agents/legal-analyzer-consumer.md +0 -108
- package/src/core/agents/legal-analyzer-content.md +0 -113
- package/src/core/agents/legal-analyzer-international.md +0 -115
- package/src/core/agents/legal-analyzer-licensing.md +0 -115
- package/src/core/agents/legal-analyzer-privacy.md +0 -108
- package/src/core/agents/legal-analyzer-security.md +0 -112
- package/src/core/agents/legal-analyzer-terms.md +0 -111
- package/src/core/agents/legal-consensus.md +0 -242
- package/src/core/agents/logic-analyzer-edge.md +0 -170
- package/src/core/agents/logic-analyzer-flow.md +0 -253
- package/src/core/agents/logic-analyzer-invariant.md +0 -206
- package/src/core/agents/logic-analyzer-race.md +0 -266
- package/src/core/agents/logic-analyzer-type.md +0 -217
- package/src/core/agents/logic-consensus.md +0 -253
- package/src/core/agents/mentor.md +0 -654
- package/src/core/agents/mobile.md +0 -501
- package/src/core/agents/monitoring.md +0 -537
- package/src/core/agents/multi-expert.md +0 -311
- package/src/core/agents/orchestrator.md +0 -749
- package/src/core/agents/perf-analyzer-assets.md +0 -174
- package/src/core/agents/perf-analyzer-bundle.md +0 -165
- package/src/core/agents/perf-analyzer-caching.md +0 -160
- package/src/core/agents/perf-analyzer-compute.md +0 -165
- package/src/core/agents/perf-analyzer-memory.md +0 -182
- package/src/core/agents/perf-analyzer-network.md +0 -157
- package/src/core/agents/perf-analyzer-queries.md +0 -155
- package/src/core/agents/perf-analyzer-rendering.md +0 -156
- package/src/core/agents/perf-consensus.md +0 -280
- package/src/core/agents/performance.md +0 -492
- package/src/core/agents/product.md +0 -535
- package/src/core/agents/qa.md +0 -765
- package/src/core/agents/readme-updater.md +0 -579
- package/src/core/agents/refactor.md +0 -558
- package/src/core/agents/research.md +0 -453
- package/src/core/agents/rlm-subcore.md +0 -207
- package/src/core/agents/schema-validator.md +0 -454
- package/src/core/agents/security-analyzer-api.md +0 -199
- package/src/core/agents/security-analyzer-auth.md +0 -160
- package/src/core/agents/security-analyzer-authz.md +0 -168
- package/src/core/agents/security-analyzer-deps.md +0 -147
- package/src/core/agents/security-analyzer-infra.md +0 -176
- package/src/core/agents/security-analyzer-injection.md +0 -148
- package/src/core/agents/security-analyzer-input.md +0 -191
- package/src/core/agents/security-analyzer-secrets.md +0 -175
- package/src/core/agents/security-consensus.md +0 -276
- package/src/core/agents/security.md +0 -486
- package/src/core/agents/seo-analyzer-content.md +0 -167
- package/src/core/agents/seo-analyzer-images.md +0 -187
- package/src/core/agents/seo-analyzer-performance.md +0 -206
- package/src/core/agents/seo-analyzer-schema.md +0 -176
- package/src/core/agents/seo-analyzer-sitemap.md +0 -172
- package/src/core/agents/seo-analyzer-technical.md +0 -144
- package/src/core/agents/seo-consensus.md +0 -289
- package/src/core/agents/team-coordinator.md +0 -333
- package/src/core/agents/team-lead.md +0 -171
- package/src/core/agents/test-analyzer-assertions.md +0 -181
- package/src/core/agents/test-analyzer-coverage.md +0 -183
- package/src/core/agents/test-analyzer-fragility.md +0 -185
- package/src/core/agents/test-analyzer-integration.md +0 -155
- package/src/core/agents/test-analyzer-maintenance.md +0 -173
- package/src/core/agents/test-analyzer-mocking.md +0 -178
- package/src/core/agents/test-analyzer-patterns.md +0 -189
- package/src/core/agents/test-analyzer-structure.md +0 -177
- package/src/core/agents/test-consensus.md +0 -294
- package/src/core/agents/testing.md +0 -527
- package/src/core/agents/ui-validator.md +0 -331
- package/src/core/agents/ui.md +0 -1227
- package/src/core/commands/adr/list.md +0 -191
- package/src/core/commands/adr/update.md +0 -258
- package/src/core/commands/adr/view.md +0 -274
- package/src/core/commands/adr.md +0 -394
- package/src/core/commands/ads/audit.md +0 -453
- package/src/core/commands/ads/budget.md +0 -97
- package/src/core/commands/ads/competitor.md +0 -112
- package/src/core/commands/ads/creative.md +0 -85
- package/src/core/commands/ads/generate.md +0 -238
- package/src/core/commands/ads/google.md +0 -112
- package/src/core/commands/ads/health.md +0 -327
- package/src/core/commands/ads/landing.md +0 -119
- package/src/core/commands/ads/linkedin.md +0 -112
- package/src/core/commands/ads/meta.md +0 -91
- package/src/core/commands/ads/microsoft.md +0 -115
- package/src/core/commands/ads/plan.md +0 -321
- package/src/core/commands/ads/test-plan.md +0 -317
- package/src/core/commands/ads/tiktok.md +0 -129
- package/src/core/commands/ads/track.md +0 -288
- package/src/core/commands/ads/youtube.md +0 -124
- package/src/core/commands/ads.md +0 -140
- package/src/core/commands/agent.md +0 -256
- package/src/core/commands/api.md +0 -267
- package/src/core/commands/assign.md +0 -369
- package/src/core/commands/audit.md +0 -531
- package/src/core/commands/auto.md +0 -556
- package/src/core/commands/automate.md +0 -415
- package/src/core/commands/babysit.md +0 -643
- package/src/core/commands/baseline.md +0 -743
- package/src/core/commands/batch.md +0 -551
- package/src/core/commands/blockers.md +0 -602
- package/src/core/commands/board.md +0 -509
- package/src/core/commands/browser-qa.md +0 -240
- package/src/core/commands/changelog.md +0 -582
- package/src/core/commands/choose.md +0 -430
- package/src/core/commands/ci.md +0 -330
- package/src/core/commands/code/accessibility.md +0 -363
- package/src/core/commands/code/api.md +0 -313
- package/src/core/commands/code/architecture.md +0 -313
- package/src/core/commands/code/completeness.md +0 -519
- package/src/core/commands/code/legal.md +0 -509
- package/src/core/commands/code/logic.md +0 -432
- package/src/core/commands/code/performance.md +0 -506
- package/src/core/commands/code/security.md +0 -509
- package/src/core/commands/code/test.md +0 -505
- package/src/core/commands/compress.md +0 -408
- package/src/core/commands/configure.md +0 -1159
- package/src/core/commands/context/export.md +0 -296
- package/src/core/commands/context/full.md +0 -353
- package/src/core/commands/context/note.md +0 -380
- package/src/core/commands/council.md +0 -592
- package/src/core/commands/debt.md +0 -491
- package/src/core/commands/deploy.md +0 -864
- package/src/core/commands/deps.md +0 -728
- package/src/core/commands/diagnose.md +0 -404
- package/src/core/commands/docs.md +0 -469
- package/src/core/commands/epic/edit.md +0 -213
- package/src/core/commands/epic/list.md +0 -190
- package/src/core/commands/epic/view.md +0 -267
- package/src/core/commands/epic.md +0 -477
- package/src/core/commands/export.md +0 -238
- package/src/core/commands/feedback.md +0 -603
- package/src/core/commands/handoff.md +0 -386
- package/src/core/commands/help.md +0 -194
- package/src/core/commands/ideate/brief.md +0 -363
- package/src/core/commands/ideate/discover.md +0 -399
- package/src/core/commands/ideate/features.md +0 -497
- package/src/core/commands/ideate/history.md +0 -403
- package/src/core/commands/ideate/new.md +0 -900
- package/src/core/commands/impact.md +0 -407
- package/src/core/commands/install.md +0 -529
- package/src/core/commands/learn/explain.md +0 -118
- package/src/core/commands/learn/glossary.md +0 -135
- package/src/core/commands/learn/patterns.md +0 -138
- package/src/core/commands/learn/tour.md +0 -126
- package/src/core/commands/maintain.md +0 -558
- package/src/core/commands/metrics.md +0 -844
- package/src/core/commands/migrate/codemods.md +0 -151
- package/src/core/commands/migrate/plan.md +0 -131
- package/src/core/commands/migrate/scan.md +0 -114
- package/src/core/commands/migrate/validate.md +0 -119
- package/src/core/commands/multi-expert.md +0 -447
- package/src/core/commands/packages.md +0 -535
- package/src/core/commands/pr.md +0 -337
- package/src/core/commands/readme-sync.md +0 -329
- package/src/core/commands/research/analyze.md +0 -798
- package/src/core/commands/research/ask.md +0 -864
- package/src/core/commands/research/import.md +0 -1025
- package/src/core/commands/research/list.md +0 -273
- package/src/core/commands/research/synthesize.md +0 -928
- package/src/core/commands/research/view.md +0 -323
- package/src/core/commands/retro.md +0 -795
- package/src/core/commands/review.md +0 -694
- package/src/core/commands/rlm.md +0 -446
- package/src/core/commands/roadmap/analyze.md +0 -400
- package/src/core/commands/rpi.md +0 -633
- package/src/core/commands/seo/audit.md +0 -444
- package/src/core/commands/seo/competitor.md +0 -174
- package/src/core/commands/seo/content.md +0 -107
- package/src/core/commands/seo/geo.md +0 -229
- package/src/core/commands/seo/hreflang.md +0 -140
- package/src/core/commands/seo/images.md +0 -96
- package/src/core/commands/seo/page.md +0 -198
- package/src/core/commands/seo/plan.md +0 -163
- package/src/core/commands/seo/programmatic.md +0 -131
- package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
- package/src/core/commands/seo/references/eeat-framework.md +0 -110
- package/src/core/commands/seo/references/quality-gates.md +0 -91
- package/src/core/commands/seo/references/schema-types.md +0 -102
- package/src/core/commands/seo/schema.md +0 -183
- package/src/core/commands/seo/sitemap.md +0 -97
- package/src/core/commands/seo/technical.md +0 -100
- package/src/core/commands/seo.md +0 -107
- package/src/core/commands/session/cleanup.md +0 -452
- package/src/core/commands/session/end.md +0 -865
- package/src/core/commands/session/history.md +0 -293
- package/src/core/commands/session/init.md +0 -210
- package/src/core/commands/session/new.md +0 -827
- package/src/core/commands/session/resume.md +0 -291
- package/src/core/commands/session/spawn.md +0 -205
- package/src/core/commands/session/status.md +0 -274
- package/src/core/commands/skill/list.md +0 -139
- package/src/core/commands/skill/recommend.md +0 -216
- package/src/core/commands/sprint.md +0 -714
- package/src/core/commands/status/undo.md +0 -191
- package/src/core/commands/status.md +0 -423
- package/src/core/commands/story/edit.md +0 -204
- package/src/core/commands/story/list.md +0 -199
- package/src/core/commands/story/view.md +0 -312
- package/src/core/commands/story-validate.md +0 -491
- package/src/core/commands/story.md +0 -465
- package/src/core/commands/tdd-next.md +0 -238
- package/src/core/commands/tdd.md +0 -211
- package/src/core/commands/team/guide.md +0 -688
- package/src/core/commands/team/list.md +0 -59
- package/src/core/commands/team/start.md +0 -130
- package/src/core/commands/team/status.md +0 -66
- package/src/core/commands/team/stop.md +0 -78
- package/src/core/commands/template.md +0 -644
- package/src/core/commands/tests.md +0 -731
- package/src/core/commands/update.md +0 -591
- package/src/core/commands/validate-expertise.md +0 -305
- package/src/core/commands/velocity.md +0 -630
- package/src/core/commands/verify.md +0 -534
- package/src/core/commands/whats-new.md +0 -201
- package/src/core/commands/workflow.md +0 -449
- package/src/core/council/sessions/.gitkeep +0 -0
- package/src/core/council/shared_reasoning.template.md +0 -106
- package/src/core/experts/README.md +0 -236
- package/src/core/experts/_core-expertise.yaml +0 -105
- package/src/core/experts/accessibility/expertise.yaml +0 -115
- package/src/core/experts/accessibility/question.md +0 -41
- package/src/core/experts/accessibility/self-improve.md +0 -45
- package/src/core/experts/accessibility/workflow.md +0 -59
- package/src/core/experts/adr-writer/expertise.yaml +0 -138
- package/src/core/experts/adr-writer/question.md +0 -56
- package/src/core/experts/adr-writer/self-improve.md +0 -106
- package/src/core/experts/adr-writer/workflow.md +0 -184
- package/src/core/experts/analytics/expertise.yaml +0 -119
- package/src/core/experts/analytics/question.md +0 -74
- package/src/core/experts/analytics/self-improve.md +0 -163
- package/src/core/experts/analytics/workflow.md +0 -272
- package/src/core/experts/api/expertise.yaml +0 -124
- package/src/core/experts/api/question.md +0 -74
- package/src/core/experts/api/self-improve.md +0 -122
- package/src/core/experts/api/workflow.md +0 -248
- package/src/core/experts/ci/expertise.yaml +0 -106
- package/src/core/experts/ci/question.md +0 -69
- package/src/core/experts/ci/self-improve.md +0 -100
- package/src/core/experts/ci/workflow.md +0 -145
- package/src/core/experts/codebase-query/expertise.yaml +0 -121
- package/src/core/experts/codebase-query/question.md +0 -73
- package/src/core/experts/codebase-query/self-improve.md +0 -105
- package/src/core/experts/compliance/expertise.yaml +0 -101
- package/src/core/experts/compliance/question.md +0 -56
- package/src/core/experts/compliance/self-improve.md +0 -106
- package/src/core/experts/compliance/workflow.md +0 -184
- package/src/core/experts/database/expertise.yaml +0 -109
- package/src/core/experts/database/question.md +0 -74
- package/src/core/experts/database/self-improve.md +0 -121
- package/src/core/experts/database/workflow.md +0 -234
- package/src/core/experts/datamigration/expertise.yaml +0 -141
- package/src/core/experts/datamigration/question.md +0 -56
- package/src/core/experts/datamigration/self-improve.md +0 -106
- package/src/core/experts/datamigration/workflow.md +0 -184
- package/src/core/experts/design/expertise.yaml +0 -116
- package/src/core/experts/design/question.md +0 -56
- package/src/core/experts/design/self-improve.md +0 -106
- package/src/core/experts/design/workflow.md +0 -184
- package/src/core/experts/devops/expertise.yaml +0 -116
- package/src/core/experts/devops/question.md +0 -68
- package/src/core/experts/devops/self-improve.md +0 -102
- package/src/core/experts/devops/workflow.md +0 -142
- package/src/core/experts/documentation/expertise.yaml +0 -126
- package/src/core/experts/documentation/question.md +0 -41
- package/src/core/experts/documentation/self-improve.md +0 -45
- package/src/core/experts/documentation/workflow.md +0 -55
- package/src/core/experts/epic-planner/expertise.yaml +0 -144
- package/src/core/experts/epic-planner/question.md +0 -56
- package/src/core/experts/epic-planner/self-improve.md +0 -106
- package/src/core/experts/epic-planner/workflow.md +0 -184
- package/src/core/experts/integrations/expertise.yaml +0 -113
- package/src/core/experts/integrations/question.md +0 -74
- package/src/core/experts/integrations/self-improve.md +0 -151
- package/src/core/experts/integrations/workflow.md +0 -246
- package/src/core/experts/mentor/expertise.yaml +0 -125
- package/src/core/experts/mentor/question.md +0 -56
- package/src/core/experts/mentor/self-improve.md +0 -106
- package/src/core/experts/mentor/workflow.md +0 -184
- package/src/core/experts/mobile/expertise.yaml +0 -136
- package/src/core/experts/mobile/question.md +0 -72
- package/src/core/experts/mobile/self-improve.md +0 -140
- package/src/core/experts/mobile/workflow.md +0 -240
- package/src/core/experts/monitoring/expertise.yaml +0 -132
- package/src/core/experts/monitoring/question.md +0 -76
- package/src/core/experts/monitoring/self-improve.md +0 -150
- package/src/core/experts/monitoring/workflow.md +0 -264
- package/src/core/experts/performance/expertise.yaml +0 -68
- package/src/core/experts/performance/question.md +0 -41
- package/src/core/experts/performance/self-improve.md +0 -45
- package/src/core/experts/performance/workflow.md +0 -61
- package/src/core/experts/product/expertise.yaml +0 -143
- package/src/core/experts/product/question.md +0 -56
- package/src/core/experts/product/self-improve.md +0 -106
- package/src/core/experts/product/workflow.md +0 -184
- package/src/core/experts/qa/expertise.yaml +0 -110
- package/src/core/experts/qa/question.md +0 -56
- package/src/core/experts/qa/self-improve.md +0 -106
- package/src/core/experts/qa/workflow.md +0 -184
- package/src/core/experts/readme-updater/expertise.yaml +0 -141
- package/src/core/experts/readme-updater/question.md +0 -56
- package/src/core/experts/readme-updater/self-improve.md +0 -106
- package/src/core/experts/readme-updater/workflow.md +0 -184
- package/src/core/experts/refactor/expertise.yaml +0 -135
- package/src/core/experts/refactor/question.md +0 -41
- package/src/core/experts/refactor/self-improve.md +0 -45
- package/src/core/experts/refactor/workflow.md +0 -57
- package/src/core/experts/research/expertise.yaml +0 -143
- package/src/core/experts/research/question.md +0 -56
- package/src/core/experts/research/self-improve.md +0 -106
- package/src/core/experts/research/workflow.md +0 -184
- package/src/core/experts/security/expertise.yaml +0 -117
- package/src/core/experts/security/question.md +0 -77
- package/src/core/experts/security/self-improve.md +0 -102
- package/src/core/experts/security/workflow.md +0 -152
- package/src/core/experts/templates/expertise-template.yaml +0 -67
- package/src/core/experts/templates/question-template.md +0 -56
- package/src/core/experts/templates/self-improve-template.md +0 -106
- package/src/core/experts/templates/workflow-template.md +0 -184
- package/src/core/experts/testing/expertise.yaml +0 -112
- package/src/core/experts/testing/question.md +0 -68
- package/src/core/experts/testing/self-improve.md +0 -102
- package/src/core/experts/testing/workflow.md +0 -143
- package/src/core/experts/ui/expertise.yaml +0 -133
- package/src/core/experts/ui/question.md +0 -74
- package/src/core/experts/ui/self-improve.md +0 -122
- package/src/core/experts/ui/workflow.md +0 -262
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
- package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
- package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
- package/src/core/profiles/COMPARISON.md +0 -170
- package/src/core/profiles/README.md +0 -178
- package/src/core/profiles/claude-code.yaml +0 -111
- package/src/core/profiles/codex.yaml +0 -103
- package/src/core/profiles/cursor.yaml +0 -134
- package/src/core/profiles/examples.js +0 -250
- package/src/core/profiles/loader.js +0 -235
- package/src/core/profiles/windsurf.yaml +0 -159
- package/src/core/skills/_learnings/README.md +0 -91
- package/src/core/skills/_learnings/_template.yaml +0 -106
- package/src/core/skills/_learnings/code-review.yaml +0 -118
- package/src/core/skills/_learnings/commit.yaml +0 -69
- package/src/core/skills/_learnings/story-writer.yaml +0 -71
- package/src/core/teams/backend.json +0 -41
- package/src/core/teams/builder-validator.json +0 -51
- package/src/core/teams/code-review.json +0 -41
- package/src/core/teams/frontend.json +0 -41
- package/src/core/teams/fullstack.json +0 -41
- package/src/core/teams/logic-audit.json +0 -53
- package/src/core/teams/perf-audit.json +0 -71
- package/src/core/teams/qa.json +0 -41
- package/src/core/teams/security-audit.json +0 -71
- package/src/core/teams/solo.json +0 -35
- package/src/core/teams/test-audit.json +0 -71
- package/src/core/templates/CONTEXT.md.example +0 -49
- package/src/core/templates/README-template.md +0 -16
- package/src/core/templates/adr-template.md +0 -28
- package/src/core/templates/agent-coordination-pattern.md +0 -38
- package/src/core/templates/agent-profile-template.md +0 -51
- package/src/core/templates/agileflow-metadata.json +0 -150
- package/src/core/templates/browser-qa-spec.yaml +0 -94
- package/src/core/templates/ci-workflow.yml +0 -74
- package/src/core/templates/claude-settings.advanced.example.json +0 -75
- package/src/core/templates/claude-settings.example.json +0 -26
- package/src/core/templates/command-documentation.md +0 -187
- package/src/core/templates/command-prerequisites.yaml +0 -169
- package/src/core/templates/comms-note-template.md +0 -24
- package/src/core/templates/damage-control-patterns.yaml +0 -243
- package/src/core/templates/environment.json +0 -18
- package/src/core/templates/epic-template.md +0 -27
- package/src/core/templates/plan-template.md +0 -125
- package/src/core/templates/preserve-rules-common.md +0 -107
- package/src/core/templates/preserve-rules.json +0 -42
- package/src/core/templates/proactive-action-spec.md +0 -29
- package/src/core/templates/product-brief.md +0 -136
- package/src/core/templates/quality-gate-priorities.md +0 -34
- package/src/core/templates/research-template.md +0 -44
- package/src/core/templates/session-harness-protocol.md +0 -128
- package/src/core/templates/session-state.json +0 -56
- package/src/core/templates/story-lifecycle.md +0 -213
- package/src/core/templates/story-template.md +0 -92
- package/src/core/templates/tdd-test-template.js +0 -241
- package/src/core/templates/worktrees-guide.md +0 -231
- package/tools/agileflow-npx.js +0 -52
- package/tools/cli/agileflow-cli.js +0 -72
- package/tools/cli/commands/config.js +0 -285
- package/tools/cli/commands/doctor.js +0 -496
- package/tools/cli/commands/list.js +0 -385
- package/tools/cli/commands/session.js +0 -1176
- package/tools/cli/commands/setup.js +0 -255
- package/tools/cli/commands/status.js +0 -101
- package/tools/cli/commands/tui.js +0 -56
- package/tools/cli/commands/uninstall.js +0 -155
- package/tools/cli/commands/update.js +0 -299
- package/tools/cli/installers/core/installer.js +0 -892
- package/tools/cli/installers/ide/_base-ide.js +0 -518
- package/tools/cli/installers/ide/_interface.js +0 -238
- package/tools/cli/installers/ide/claude-code.js +0 -432
- package/tools/cli/installers/ide/codex.js +0 -426
- package/tools/cli/installers/ide/cursor.js +0 -217
- package/tools/cli/installers/ide/manager.js +0 -222
- package/tools/cli/installers/ide/windsurf.js +0 -282
- package/tools/cli/lib/command-context.js +0 -382
- package/tools/cli/lib/config-manager.js +0 -446
- package/tools/cli/lib/content-injector.js +0 -969
- package/tools/cli/lib/content-transformer.js +0 -496
- package/tools/cli/lib/docs-setup.js +0 -464
- package/tools/cli/lib/error-handler.js +0 -165
- package/tools/cli/lib/ide-error-factory.js +0 -421
- package/tools/cli/lib/ide-errors.js +0 -367
- package/tools/cli/lib/ide-generator.js +0 -357
- package/tools/cli/lib/ide-health-monitor.js +0 -364
- package/tools/cli/lib/ide-registry.js +0 -297
- package/tools/cli/lib/npm-utils.js +0 -103
- package/tools/cli/lib/self-update.js +0 -148
- package/tools/cli/lib/ui.js +0 -211
- package/tools/cli/lib/utils.js +0 -87
- package/tools/cli/lib/validation-middleware.js +0 -491
- package/tools/cli/lib/version-checker.js +0 -95
- package/tools/postinstall.js +0 -190
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: arch-analyzer-circular
|
|
3
|
-
description: Circular dependency analyzer for import cycles, mutual dependencies, transitive cycles, and barrel file cycles
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Architecture Analyzer: Circular Dependencies
|
|
11
|
-
|
|
12
|
-
You are a specialized architecture analyzer focused on **circular dependencies**. Your job is to find import cycles that create initialization problems, bundle bloat, hard-to-predict behavior, and modules that can't be understood in isolation.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Direct circular imports**: A imports B, B imports A
|
|
19
|
-
2. **Transitive cycles**: A -> B -> C -> A
|
|
20
|
-
3. **Barrel file cycles**: index.ts re-exports creating unexpected cycles
|
|
21
|
-
4. **Type-value mixed cycles**: Type imports that accidentally pull in runtime code
|
|
22
|
-
5. **Initialization order issues**: Circular imports causing undefined values at runtime
|
|
23
|
-
6. **Module boundary violations**: Cycles that cross architectural boundaries
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Analysis Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Read the Target Code
|
|
30
|
-
|
|
31
|
-
Read the files you're asked to analyze. Focus on:
|
|
32
|
-
- Import/require statements across related modules
|
|
33
|
-
- Barrel files (index.ts/index.js) that re-export
|
|
34
|
-
- Files that import from each other
|
|
35
|
-
- Modules that seem to have mutual awareness
|
|
36
|
-
|
|
37
|
-
### Step 2: Look for These Patterns
|
|
38
|
-
|
|
39
|
-
**Pattern 1: Direct circular dependency**
|
|
40
|
-
```javascript
|
|
41
|
-
// user-service.ts
|
|
42
|
-
import { OrderService } from './order-service';
|
|
43
|
-
export class UserService {
|
|
44
|
-
getOrders(userId: string) { return OrderService.findByUser(userId); }
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// order-service.ts
|
|
48
|
-
import { UserService } from './user-service'; // CYCLE!
|
|
49
|
-
export class OrderService {
|
|
50
|
-
getOrderOwner(orderId: string) { return UserService.findById(this.userId); }
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Pattern 2: Barrel file creating cycle**
|
|
55
|
-
```javascript
|
|
56
|
-
// features/index.ts (barrel)
|
|
57
|
-
export { UserService } from './user-service';
|
|
58
|
-
export { OrderService } from './order-service';
|
|
59
|
-
|
|
60
|
-
// features/user-service.ts
|
|
61
|
-
import { OrderService } from './'; // Imports from barrel
|
|
62
|
-
// Barrel imports user-service -> user-service imports barrel -> CYCLE
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**Pattern 3: Transitive cycle**
|
|
66
|
-
```javascript
|
|
67
|
-
// auth.ts imports from user.ts
|
|
68
|
-
import { User } from './user';
|
|
69
|
-
|
|
70
|
-
// user.ts imports from permissions.ts
|
|
71
|
-
import { Permission } from './permissions';
|
|
72
|
-
|
|
73
|
-
// permissions.ts imports from auth.ts -> CYCLE: auth -> user -> permissions -> auth
|
|
74
|
-
import { isAuthenticated } from './auth';
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Pattern 4: Initialization order undefined**
|
|
78
|
-
```javascript
|
|
79
|
-
// config.ts
|
|
80
|
-
import { getDefaultLogger } from './logger';
|
|
81
|
-
export const config = { logger: getDefaultLogger() }; // May be undefined!
|
|
82
|
-
|
|
83
|
-
// logger.ts
|
|
84
|
-
import { config } from './config'; // CYCLE
|
|
85
|
-
export function getDefaultLogger() { return new Logger(config.logLevel); }
|
|
86
|
-
// config.logLevel is undefined because config.ts hasn't finished initializing
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Output Format
|
|
92
|
-
|
|
93
|
-
For each potential issue found, output:
|
|
94
|
-
|
|
95
|
-
```markdown
|
|
96
|
-
### FINDING-{N}: {Brief Title}
|
|
97
|
-
|
|
98
|
-
**Location**: `{file}:{line}`
|
|
99
|
-
**Severity**: STRUCTURAL (runtime errors) | DEGRADED (bundle bloat) | SMELL (design issue) | STYLE
|
|
100
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
101
|
-
**Cycle**: `{A} -> {B} -> {C} -> {A}` (show full cycle path)
|
|
102
|
-
|
|
103
|
-
**Code**:
|
|
104
|
-
\`\`\`{language}
|
|
105
|
-
{relevant import statements from each file in the cycle}
|
|
106
|
-
\`\`\`
|
|
107
|
-
|
|
108
|
-
**Issue**: {Clear explanation of why this cycle is problematic}
|
|
109
|
-
|
|
110
|
-
**Impact**:
|
|
111
|
-
- Runtime: {undefined values, initialization errors}
|
|
112
|
-
- Bundle: {tree-shaking prevented, larger bundles}
|
|
113
|
-
- Comprehension: {can't understand modules in isolation}
|
|
114
|
-
|
|
115
|
-
**Remediation**:
|
|
116
|
-
- {Specific refactoring - extract shared interface, dependency inversion, event system, etc.}
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Cycle Detection Strategy
|
|
122
|
-
|
|
123
|
-
1. **Start with barrel files**: These are the most common cycle creators
|
|
124
|
-
2. **Check mutual imports**: Files that import from each other
|
|
125
|
-
3. **Trace transitive paths**: Follow import chains looking for loops
|
|
126
|
-
4. **Check for `require()` at function level**: Sometimes used to break cycles (a smell itself)
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
## Important Rules
|
|
131
|
-
|
|
132
|
-
1. **Be SPECIFIC**: Include the full cycle path with file names
|
|
133
|
-
2. **Show the imports**: Include the actual import statements from each file
|
|
134
|
-
3. **Distinguish type-only cycles**: `import type { }` doesn't create runtime cycles in TypeScript
|
|
135
|
-
4. **Check for lazy loading**: Dynamic `import()` or function-level `require()` may be intentional cycle-breaking
|
|
136
|
-
5. **Note runtime impact**: Not all cycles cause runtime issues - some are just design smells
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## What NOT to Report
|
|
141
|
-
|
|
142
|
-
- `import type { }` only cycles in TypeScript (these are erased at compile time)
|
|
143
|
-
- Dynamic `import()` that intentionally breaks a cycle
|
|
144
|
-
- Test files importing the modules they test
|
|
145
|
-
- Monorepo package cross-references with proper dependency declarations
|
|
146
|
-
- Coupling metrics (coupling analyzer handles those)
|
|
147
|
-
- Layering violations (layering analyzer handles those)
|
|
148
|
-
- Complexity (complexity analyzer handles those)
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: arch-analyzer-complexity
|
|
3
|
-
description: Code complexity analyzer for cyclomatic complexity, cognitive complexity, file size, function length, and nesting depth
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Architecture Analyzer: Complexity
|
|
11
|
-
|
|
12
|
-
You are a specialized architecture analyzer focused on **code complexity**. Your job is to find functions, classes, and files that have grown too complex, making them difficult to understand, test, and maintain.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Cyclomatic complexity**: Functions with too many branches (if/else/switch/ternary/&&/||)
|
|
19
|
-
2. **Cognitive complexity**: Deeply nested logic that's hard to reason about
|
|
20
|
-
3. **File size**: Files exceeding reasonable line counts
|
|
21
|
-
4. **Function length**: Functions that do too much
|
|
22
|
-
5. **Nesting depth**: Code nested 4+ levels deep
|
|
23
|
-
6. **Parameter count**: Functions with too many parameters
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Analysis Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Read the Target Code
|
|
30
|
-
|
|
31
|
-
Read the files you're asked to analyze. Focus on:
|
|
32
|
-
- Large files (check file sizes first)
|
|
33
|
-
- Functions with many branches
|
|
34
|
-
- Deeply nested code blocks
|
|
35
|
-
- Functions with many parameters
|
|
36
|
-
- Classes with many methods
|
|
37
|
-
|
|
38
|
-
### Step 2: Look for These Patterns
|
|
39
|
-
|
|
40
|
-
**Pattern 1: High cyclomatic complexity**
|
|
41
|
-
```javascript
|
|
42
|
-
// SMELL: 10+ branches in a single function
|
|
43
|
-
function processOrder(order) {
|
|
44
|
-
if (order.type === 'subscription') {
|
|
45
|
-
if (order.interval === 'monthly') {
|
|
46
|
-
if (order.discount) { /* ... */ }
|
|
47
|
-
else if (order.coupon) { /* ... */ }
|
|
48
|
-
else { /* ... */ }
|
|
49
|
-
} else if (order.interval === 'yearly') {
|
|
50
|
-
if (order.discount) { /* ... */ }
|
|
51
|
-
// ... more branches
|
|
52
|
-
}
|
|
53
|
-
} else if (order.type === 'one-time') {
|
|
54
|
-
// ... more branches
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**Pattern 2: Excessive nesting**
|
|
60
|
-
```javascript
|
|
61
|
-
// SMELL: 5+ levels of nesting
|
|
62
|
-
users.forEach(user => {
|
|
63
|
-
if (user.active) {
|
|
64
|
-
user.orders.forEach(order => {
|
|
65
|
-
if (order.status === 'pending') {
|
|
66
|
-
order.items.forEach(item => {
|
|
67
|
-
if (item.inStock) {
|
|
68
|
-
if (item.quantity > 0) {
|
|
69
|
-
// 6 levels deep - very hard to follow
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**Pattern 3: God function**
|
|
80
|
-
```javascript
|
|
81
|
-
// SMELL: Function exceeding 50+ lines with multiple responsibilities
|
|
82
|
-
async function handleCheckout(req, res) {
|
|
83
|
-
// Validate input (10 lines)
|
|
84
|
-
// Calculate prices (15 lines)
|
|
85
|
-
// Apply discounts (20 lines)
|
|
86
|
-
// Check inventory (10 lines)
|
|
87
|
-
// Create order (15 lines)
|
|
88
|
-
// Send emails (10 lines)
|
|
89
|
-
// Update analytics (5 lines)
|
|
90
|
-
// Total: 85+ lines, 7 responsibilities
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**Pattern 4: Too many parameters**
|
|
95
|
-
```javascript
|
|
96
|
-
// SMELL: 6+ parameters - hard to call correctly
|
|
97
|
-
function createUser(name, email, password, role, department, manager, startDate, salary) {
|
|
98
|
-
// Should use an options object
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Pattern 5: Oversized file**
|
|
103
|
-
```
|
|
104
|
-
// SMELL: Single file with 500+ lines of source code
|
|
105
|
-
// Often indicates multiple concerns mixed together
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Output Format
|
|
111
|
-
|
|
112
|
-
For each potential issue found, output:
|
|
113
|
-
|
|
114
|
-
```markdown
|
|
115
|
-
### FINDING-{N}: {Brief Title}
|
|
116
|
-
|
|
117
|
-
**Location**: `{file}:{line}` (function: `{name}`)
|
|
118
|
-
**Severity**: STRUCTURAL (unmaintainable) | DEGRADED (increasing cost) | SMELL (early warning) | STYLE
|
|
119
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
120
|
-
**Metric**: {Cyclomatic: N | Nesting: N | Lines: N | Params: N}
|
|
121
|
-
|
|
122
|
-
**Code**:
|
|
123
|
-
\`\`\`{language}
|
|
124
|
-
{relevant code snippet showing the complexity}
|
|
125
|
-
\`\`\`
|
|
126
|
-
|
|
127
|
-
**Issue**: {Clear explanation of why this complexity is problematic}
|
|
128
|
-
|
|
129
|
-
**Impact**:
|
|
130
|
-
- Comprehension: {how hard it is to understand}
|
|
131
|
-
- Testing: {how many test cases needed to cover all paths}
|
|
132
|
-
- Bug risk: {why bugs hide in complex code}
|
|
133
|
-
|
|
134
|
-
**Remediation**:
|
|
135
|
-
- {Specific refactoring strategy - extract function, early return, strategy pattern, etc.}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Complexity Thresholds
|
|
141
|
-
|
|
142
|
-
| Metric | Warning | Critical | Notes |
|
|
143
|
-
|--------|---------|----------|-------|
|
|
144
|
-
| Cyclomatic complexity | >10 | >20 | Per function |
|
|
145
|
-
| Cognitive complexity | >15 | >25 | Per function |
|
|
146
|
-
| Function length | >40 lines | >80 lines | Excluding comments |
|
|
147
|
-
| File length | >300 lines | >500 lines | Source code only |
|
|
148
|
-
| Nesting depth | >3 levels | >5 levels | - |
|
|
149
|
-
| Parameter count | >4 | >6 | Use options object |
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Important Rules
|
|
154
|
-
|
|
155
|
-
1. **Be SPECIFIC**: Include exact file paths, function names, and metric values
|
|
156
|
-
2. **Count carefully**: Estimate cyclomatic complexity by counting branches
|
|
157
|
-
3. **Consider context**: Configuration files, test files, and generated code may be legitimately long
|
|
158
|
-
4. **Focus on source code**: Don't count comments, blank lines, or imports in line counts
|
|
159
|
-
5. **Suggest specific refactoring**: Name the pattern (extract method, early return, strategy, etc.)
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## What NOT to Report
|
|
164
|
-
|
|
165
|
-
- Generated code (Prisma client, GraphQL codegen, etc.)
|
|
166
|
-
- Configuration/data files (routes config, translations)
|
|
167
|
-
- Test files (long test files with many test cases are acceptable)
|
|
168
|
-
- Type definition files (.d.ts)
|
|
169
|
-
- Migration files
|
|
170
|
-
- Coupling issues (coupling analyzer handles those)
|
|
171
|
-
- Circular dependencies (circular analyzer handles those)
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: arch-analyzer-coupling
|
|
3
|
-
description: Module coupling analyzer for fan-in/fan-out metrics, module independence, dependency count, and tight coupling between components
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Architecture Analyzer: Module Coupling
|
|
11
|
-
|
|
12
|
-
You are a specialized architecture analyzer focused on **module coupling**. Your job is to find code patterns where modules are tightly coupled, creating maintenance burden, testing difficulty, and change propagation risk.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **High fan-out**: Modules that import from too many other modules (>7 imports)
|
|
19
|
-
2. **High fan-in**: Modules that are imported by too many others (fragile shared code)
|
|
20
|
-
3. **Tight coupling**: Modules that directly access internal details of other modules
|
|
21
|
-
4. **Shared mutable state**: Global variables, singletons accessed from multiple modules
|
|
22
|
-
5. **Connector coupling**: Modules passing complex data structures between each other
|
|
23
|
-
6. **Temporal coupling**: Modules that must be called in specific order to function
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Analysis Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Read the Target Code
|
|
30
|
-
|
|
31
|
-
Read the files you're asked to analyze. Focus on:
|
|
32
|
-
- Import/require statements in each file
|
|
33
|
-
- Exports and what other modules consume them
|
|
34
|
-
- Shared state (global variables, context, stores)
|
|
35
|
-
- Function signatures and parameter complexity
|
|
36
|
-
- Direct references to other modules' internal details
|
|
37
|
-
|
|
38
|
-
### Step 2: Look for These Patterns
|
|
39
|
-
|
|
40
|
-
**Pattern 1: High fan-out (too many imports)**
|
|
41
|
-
```javascript
|
|
42
|
-
// SMELL: File imports from 10+ modules - knows too much
|
|
43
|
-
import { auth } from './auth';
|
|
44
|
-
import { db } from './database';
|
|
45
|
-
import { cache } from './cache';
|
|
46
|
-
import { logger } from './logger';
|
|
47
|
-
import { mailer } from './mailer';
|
|
48
|
-
import { queue } from './queue';
|
|
49
|
-
import { config } from './config';
|
|
50
|
-
import { validator } from './validator';
|
|
51
|
-
import { transformer } from './transformer';
|
|
52
|
-
import { notifier } from './notifier';
|
|
53
|
-
import { analytics } from './analytics';
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Pattern 2: Accessing internal details**
|
|
57
|
-
```javascript
|
|
58
|
-
// SMELL: Reaching into another module's internals
|
|
59
|
-
import { userService } from './user-service';
|
|
60
|
-
const users = userService._cache.entries; // Accessing private cache
|
|
61
|
-
userService.db.query('SELECT * FROM users'); // Bypassing the service API
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Pattern 3: Shared mutable singleton**
|
|
65
|
-
```javascript
|
|
66
|
-
// SMELL: Global mutable state accessed everywhere
|
|
67
|
-
// globals.js
|
|
68
|
-
export const appState = { currentUser: null, theme: 'dark', cart: [] };
|
|
69
|
-
|
|
70
|
-
// cart.js
|
|
71
|
-
import { appState } from './globals';
|
|
72
|
-
appState.cart.push(item); // Direct mutation from anywhere
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**Pattern 4: Temporal coupling**
|
|
76
|
-
```javascript
|
|
77
|
-
// SMELL: Must call init() before use(), setup() before start()
|
|
78
|
-
const service = new PaymentService();
|
|
79
|
-
service.setConfig(config); // Must be called first
|
|
80
|
-
service.connect(); // Must be called after setConfig
|
|
81
|
-
service.processPayment(order); // Fails if connect() wasn't called
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Output Format
|
|
87
|
-
|
|
88
|
-
For each potential issue found, output:
|
|
89
|
-
|
|
90
|
-
```markdown
|
|
91
|
-
### FINDING-{N}: {Brief Title}
|
|
92
|
-
|
|
93
|
-
**Location**: `{file}:{line}`
|
|
94
|
-
**Severity**: STRUCTURAL (blocks changes) | DEGRADED (increasing cost) | SMELL (early warning) | STYLE
|
|
95
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
96
|
-
**Metric**: Fan-out: {N} | Fan-in: {N} | Coupling: {type}
|
|
97
|
-
|
|
98
|
-
**Code**:
|
|
99
|
-
\`\`\`{language}
|
|
100
|
-
{relevant code snippet, 3-7 lines}
|
|
101
|
-
\`\`\`
|
|
102
|
-
|
|
103
|
-
**Issue**: {Clear explanation of why this coupling is problematic}
|
|
104
|
-
|
|
105
|
-
**Impact**:
|
|
106
|
-
- Change propagation: {what changes when this module changes}
|
|
107
|
-
- Testing difficulty: {why this is hard to test in isolation}
|
|
108
|
-
|
|
109
|
-
**Remediation**:
|
|
110
|
-
- {Specific refactoring with code example}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Coupling Metrics Reference
|
|
116
|
-
|
|
117
|
-
| Metric | Threshold | Severity |
|
|
118
|
-
|--------|-----------|----------|
|
|
119
|
-
| Fan-out > 10 | STRUCTURAL | File knows too much |
|
|
120
|
-
| Fan-out > 7 | DEGRADED | Consider splitting |
|
|
121
|
-
| Fan-in > 15 | STRUCTURAL | Fragile shared code |
|
|
122
|
-
| Fan-in > 10 | DEGRADED | Stability concern |
|
|
123
|
-
| Internal access | STRUCTURAL | Breaks encapsulation |
|
|
124
|
-
| Shared mutable state | DEGRADED | Hard to reason about |
|
|
125
|
-
| Temporal coupling | SMELL | Fragile initialization |
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Important Rules
|
|
130
|
-
|
|
131
|
-
1. **Be SPECIFIC**: Include exact file paths and import counts
|
|
132
|
-
2. **Distinguish infrastructure from domain**: Logger, config imports are less concerning than domain coupling
|
|
133
|
-
3. **Consider project size**: Small projects naturally have higher relative coupling
|
|
134
|
-
4. **Check for barrel exports**: `index.ts` re-exports may inflate apparent coupling
|
|
135
|
-
5. **Note shared types**: Type-only imports are weaker coupling than value imports
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## What NOT to Report
|
|
140
|
-
|
|
141
|
-
- Utility/helper imports (lodash, date-fns, etc.) - these are stable dependencies
|
|
142
|
-
- Framework imports (React, Express, etc.)
|
|
143
|
-
- Type-only imports in TypeScript
|
|
144
|
-
- Test file imports of the module under test
|
|
145
|
-
- Circular dependencies (circular analyzer handles those)
|
|
146
|
-
- Complexity metrics (complexity analyzer handles those)
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: arch-analyzer-layering
|
|
3
|
-
description: Architectural layering analyzer for layer violations, import direction enforcement, boundary crossing, and separation of concerns
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Architecture Analyzer: Layering & Boundaries
|
|
11
|
-
|
|
12
|
-
You are a specialized architecture analyzer focused on **architectural layering and boundary enforcement**. Your job is to find code patterns where architectural layers are violated, imports flow in the wrong direction, or concerns are mixed inappropriately.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Layer violations**: UI importing from database, business logic importing from UI framework
|
|
19
|
-
2. **Import direction**: Lower layers importing from higher layers (database -> API -> UI should be one-way)
|
|
20
|
-
3. **Boundary crossing**: Features reaching into other features' internal modules
|
|
21
|
-
4. **Mixed concerns**: Business logic in UI components, database queries in route handlers
|
|
22
|
-
5. **Framework leaking**: Framework-specific code in domain/business layer
|
|
23
|
-
6. **Missing abstraction layers**: Direct database calls from route handlers without service layer
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Analysis Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Detect Project Architecture
|
|
30
|
-
|
|
31
|
-
Identify the project's architectural pattern:
|
|
32
|
-
|
|
33
|
-
| Pattern | Directory Structure | Import Rules |
|
|
34
|
-
|---------|-------------------|-------------|
|
|
35
|
-
| **Clean/Hexagonal** | domain/, application/, infrastructure/ | Domain imports nothing, application imports domain only |
|
|
36
|
-
| **MVC** | models/, views/, controllers/ | Models import nothing, controllers import models |
|
|
37
|
-
| **Feature-based** | features/auth/, features/cart/ | Features don't cross-import |
|
|
38
|
-
| **Next.js App Router** | app/, lib/, components/ | Components don't import from app/ |
|
|
39
|
-
| **Express API** | routes/, services/, models/ | Routes -> services -> models |
|
|
40
|
-
|
|
41
|
-
### Step 2: Look for These Patterns
|
|
42
|
-
|
|
43
|
-
**Pattern 1: UI importing database layer**
|
|
44
|
-
```javascript
|
|
45
|
-
// VIOLATION: Component directly accesses database
|
|
46
|
-
import { prisma } from '@/lib/prisma';
|
|
47
|
-
|
|
48
|
-
function UserList() {
|
|
49
|
-
const users = await prisma.user.findMany(); // DB in component
|
|
50
|
-
return <ul>{users.map(u => <li>{u.name}</li>)}</ul>;
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Pattern 2: Business logic in UI component**
|
|
55
|
-
```jsx
|
|
56
|
-
// VIOLATION: Complex business rules in component
|
|
57
|
-
function CheckoutPage() {
|
|
58
|
-
const calculateTax = (items, state) => {
|
|
59
|
-
// 50 lines of tax calculation logic
|
|
60
|
-
if (state === 'CA') return items.total * 0.0725;
|
|
61
|
-
// ... more rules
|
|
62
|
-
};
|
|
63
|
-
// This should be in a service/domain layer
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**Pattern 3: Feature cross-importing**
|
|
68
|
-
```javascript
|
|
69
|
-
// VIOLATION: Auth feature reaching into cart feature's internals
|
|
70
|
-
// features/auth/login.ts
|
|
71
|
-
import { cartStore } from '../cart/store';
|
|
72
|
-
import { mergeAnonymousCart } from '../cart/utils';
|
|
73
|
-
// Should use a public API or event system
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
**Pattern 4: Framework in domain**
|
|
77
|
-
```javascript
|
|
78
|
-
// VIOLATION: React hooks in domain/business logic
|
|
79
|
-
// domain/pricing.ts
|
|
80
|
-
import { useMemo } from 'react'; // Framework in domain!
|
|
81
|
-
|
|
82
|
-
export function calculateDiscount(items) {
|
|
83
|
-
return useMemo(() => { // Should be a pure function
|
|
84
|
-
return items.reduce((acc, item) => acc + item.discount, 0);
|
|
85
|
-
}, [items]);
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
**Pattern 5: Missing service layer**
|
|
90
|
-
```javascript
|
|
91
|
-
// VIOLATION: Route handler doing everything
|
|
92
|
-
app.post('/api/orders', async (req, res) => {
|
|
93
|
-
const user = await db.query('SELECT * FROM users WHERE id = ?', [req.userId]);
|
|
94
|
-
const items = await db.query('SELECT * FROM cart WHERE user_id = ?', [req.userId]);
|
|
95
|
-
const total = items.reduce((sum, i) => sum + i.price * i.qty, 0);
|
|
96
|
-
const tax = total * getTaxRate(user.state);
|
|
97
|
-
await db.query('INSERT INTO orders ...', [user.id, total + tax]);
|
|
98
|
-
await sendEmail(user.email, 'Order confirmed');
|
|
99
|
-
res.json({ success: true });
|
|
100
|
-
});
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Output Format
|
|
106
|
-
|
|
107
|
-
For each potential issue found, output:
|
|
108
|
-
|
|
109
|
-
```markdown
|
|
110
|
-
### FINDING-{N}: {Brief Title}
|
|
111
|
-
|
|
112
|
-
**Location**: `{file}:{line}`
|
|
113
|
-
**Severity**: STRUCTURAL (arch violation) | DEGRADED (boundary erosion) | SMELL (early warning) | STYLE
|
|
114
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
115
|
-
**Layer**: {which layer is violated}
|
|
116
|
-
|
|
117
|
-
**Code**:
|
|
118
|
-
\`\`\`{language}
|
|
119
|
-
{relevant code snippet, 3-7 lines}
|
|
120
|
-
\`\`\`
|
|
121
|
-
|
|
122
|
-
**Issue**: {Clear explanation of the layering violation}
|
|
123
|
-
|
|
124
|
-
**Impact**:
|
|
125
|
-
- Testability: {why this is hard to test}
|
|
126
|
-
- Changeability: {what ripples when things change}
|
|
127
|
-
|
|
128
|
-
**Remediation**:
|
|
129
|
-
- {Specific refactoring with code example}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Important Rules
|
|
135
|
-
|
|
136
|
-
1. **Be SPECIFIC**: Include exact file paths and the import that violates layering
|
|
137
|
-
2. **Detect the pattern first**: Don't assume Clean Architecture if the project uses MVC
|
|
138
|
-
3. **Consider Server Components**: In Next.js, server components can legitimately access DB
|
|
139
|
-
4. **Check for intentional patterns**: Some projects deliberately use a flat structure
|
|
140
|
-
5. **Note the direction**: Always show which direction the import flows
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## What NOT to Report
|
|
145
|
-
|
|
146
|
-
- Next.js Server Components accessing database (this is the intended pattern)
|
|
147
|
-
- Monorepo package imports that follow declared dependencies
|
|
148
|
-
- Type-only imports across layers (types are shared knowledge)
|
|
149
|
-
- Test files importing across layers
|
|
150
|
-
- Import counts (coupling analyzer handles those)
|
|
151
|
-
- Circular dependencies (circular analyzer handles those)
|