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,190 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: completeness-analyzer-api
|
|
3
|
-
description: Frontend-backend endpoint mismatch analyzer for missing API handlers, orphaned endpoints, method mismatches, and partial CRUD
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Completeness Analyzer: Frontend-Backend API Mismatches
|
|
11
|
-
|
|
12
|
-
You are a specialized completeness analyzer focused on **frontend-backend endpoint mismatches**. Your job is to find cases where the frontend calls an API that doesn't exist on the backend, backend endpoints that nothing calls, HTTP method mismatches, and incomplete CRUD implementations.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Missing backend handlers**: Frontend `fetch('/api/X')` but no backend handler for `/api/X`
|
|
19
|
-
2. **Orphaned backend endpoints**: Backend route exists but no frontend code calls it
|
|
20
|
-
3. **Method mismatches**: Frontend sends POST but backend only handles GET
|
|
21
|
-
4. **Partial CRUD**: Create endpoint exists but no update/delete (or vice versa)
|
|
22
|
-
5. **Wrong response handling**: Frontend expects JSON but endpoint returns HTML, or field name mismatches
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Analysis Process
|
|
27
|
-
|
|
28
|
-
### Step 1: Identify the API Architecture
|
|
29
|
-
|
|
30
|
-
Determine the project's API structure:
|
|
31
|
-
|
|
32
|
-
| Pattern | Key Indicators | API Route Location |
|
|
33
|
-
|---------|---------------|-------------------|
|
|
34
|
-
| **Next.js API Routes (App)** | `app/api/` directory | `app/api/**/route.ts` |
|
|
35
|
-
| **Next.js API Routes (Pages)** | `pages/api/` directory | `pages/api/**/*.ts` |
|
|
36
|
-
| **Express/Fastify** | `app.get()`, `router.post()` | Route handler files |
|
|
37
|
-
| **tRPC** | `createTRPCRouter`, `procedure` | `server/routers/` |
|
|
38
|
-
| **GraphQL** | `resolvers`, `typeDefs`, schema | Schema/resolver files |
|
|
39
|
-
| **REST API (separate)** | `api/` or `server/` directory | Various |
|
|
40
|
-
|
|
41
|
-
### Step 2: Map All Frontend API Calls
|
|
42
|
-
|
|
43
|
-
Find all API call sites:
|
|
44
|
-
- `fetch('/api/...')` or `fetch(\`/api/...\`)`
|
|
45
|
-
- `axios.get('/api/...')`, `axios.post(...)`, etc.
|
|
46
|
-
- Custom API client calls (`api.users.list()`, `apiClient.get(...)`)
|
|
47
|
-
- `useSWR('/api/...')`, `useQuery`, React Query calls
|
|
48
|
-
- tRPC client calls (`trpc.user.create.useMutation()`)
|
|
49
|
-
- GraphQL queries/mutations
|
|
50
|
-
|
|
51
|
-
### Step 3: Map All Backend Endpoints
|
|
52
|
-
|
|
53
|
-
Find all API endpoint definitions:
|
|
54
|
-
- File-based routes (Next.js `route.ts` files)
|
|
55
|
-
- Express/Fastify route registrations
|
|
56
|
-
- tRPC procedure definitions
|
|
57
|
-
- GraphQL resolver definitions
|
|
58
|
-
|
|
59
|
-
### Step 4: Cross-Reference
|
|
60
|
-
|
|
61
|
-
Compare frontend calls against backend endpoints. Check:
|
|
62
|
-
- Does the endpoint exist?
|
|
63
|
-
- Does it handle the correct HTTP method?
|
|
64
|
-
- For CRUD resources, are all expected operations implemented?
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Patterns to Find
|
|
69
|
-
|
|
70
|
-
**Pattern 1: Frontend calls non-existent endpoint**
|
|
71
|
-
```javascript
|
|
72
|
-
// BROKEN: No /api/payments route exists in the backend
|
|
73
|
-
const response = await fetch('/api/payments', {
|
|
74
|
-
method: 'POST',
|
|
75
|
-
body: JSON.stringify(paymentData),
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// BROKEN: Typo in endpoint path
|
|
79
|
-
const users = await fetch('/api/user'); // Backend has /api/users (plural)
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Pattern 2: Orphaned backend endpoint**
|
|
83
|
-
```typescript
|
|
84
|
-
// DORMANT: This endpoint exists but nothing calls it
|
|
85
|
-
// app/api/analytics/route.ts
|
|
86
|
-
export async function GET(request: Request) {
|
|
87
|
-
// Full implementation here
|
|
88
|
-
return Response.json(analyticsData);
|
|
89
|
-
}
|
|
90
|
-
// No frontend code references /api/analytics
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
**Pattern 3: HTTP method mismatch**
|
|
94
|
-
```javascript
|
|
95
|
-
// BROKEN: Frontend sends POST, backend only handles GET
|
|
96
|
-
// Frontend:
|
|
97
|
-
await fetch('/api/settings', { method: 'POST', body: data });
|
|
98
|
-
|
|
99
|
-
// Backend (app/api/settings/route.ts):
|
|
100
|
-
export async function GET(request: Request) { ... }
|
|
101
|
-
// No POST handler exported
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
**Pattern 4: Partial CRUD**
|
|
105
|
-
```typescript
|
|
106
|
-
// INCOMPLETE: Can create users but can't update or delete
|
|
107
|
-
// app/api/users/route.ts exports: GET, POST
|
|
108
|
-
// app/api/users/[id]/route.ts does NOT exist
|
|
109
|
-
// But frontend has:
|
|
110
|
-
await fetch(`/api/users/${id}`, { method: 'PUT', body: updateData }); // 404
|
|
111
|
-
await fetch(`/api/users/${id}`, { method: 'DELETE' }); // 404
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**Pattern 5: Response shape mismatch**
|
|
115
|
-
```javascript
|
|
116
|
-
// INCOMPLETE: Frontend expects { data: [...] } but backend returns [...]
|
|
117
|
-
const { data } = await response.json(); // data is undefined
|
|
118
|
-
// Backend returns: Response.json(users) // flat array, no wrapper
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Output Format
|
|
124
|
-
|
|
125
|
-
For each potential issue found, output:
|
|
126
|
-
|
|
127
|
-
```markdown
|
|
128
|
-
### FINDING-{N}: {Brief Title}
|
|
129
|
-
|
|
130
|
-
**Frontend Location**: `{file}:{line}`
|
|
131
|
-
**Backend Location**: `{file}:{line}` or `MISSING`
|
|
132
|
-
**Endpoint**: `{METHOD} {path}`
|
|
133
|
-
**Severity**: BROKEN | INCOMPLETE | PLACEHOLDER | DORMANT
|
|
134
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
135
|
-
|
|
136
|
-
**Frontend Code**:
|
|
137
|
-
\`\`\`{language}
|
|
138
|
-
{API call code, 3-5 lines}
|
|
139
|
-
\`\`\`
|
|
140
|
-
|
|
141
|
-
**Backend Code** (if exists):
|
|
142
|
-
\`\`\`{language}
|
|
143
|
-
{Route handler code, 3-5 lines}
|
|
144
|
-
\`\`\`
|
|
145
|
-
|
|
146
|
-
**Issue**: {Clear explanation of the mismatch}
|
|
147
|
-
|
|
148
|
-
**User Impact**:
|
|
149
|
-
- What users see: {error, missing data, broken feature}
|
|
150
|
-
- Expected behavior: {what should happen}
|
|
151
|
-
|
|
152
|
-
**Remediation**:
|
|
153
|
-
- **Complete**: {Create the missing endpoint / add the missing method}
|
|
154
|
-
- **Remove**: {Remove the frontend call and associated UI}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Severity Guide
|
|
160
|
-
|
|
161
|
-
| Pattern | Severity | Rationale |
|
|
162
|
-
|---------|----------|-----------|
|
|
163
|
-
| Frontend calls non-existent endpoint | BROKEN | Feature crashes with network error |
|
|
164
|
-
| HTTP method mismatch | BROKEN | 405 Method Not Allowed |
|
|
165
|
-
| Partial CRUD (missing delete/update) | INCOMPLETE | Feature partially works |
|
|
166
|
-
| Orphaned backend endpoint (never called) | DORMANT | Dead code, maintenance burden |
|
|
167
|
-
| Response shape mismatch | INCOMPLETE | Silent data loss |
|
|
168
|
-
| Typo in endpoint path | BROKEN | 404 on API call |
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Important Rules
|
|
173
|
-
|
|
174
|
-
1. **Map both sides**: Always identify both the frontend call site AND the backend handler
|
|
175
|
-
2. **Be framework-aware**: Understand file-based routing conventions (Next.js route.ts, etc.)
|
|
176
|
-
3. **Check middleware**: Some endpoints may be created by middleware or plugins
|
|
177
|
-
4. **Check dynamic segments**: `/api/users/[id]` matches `/api/users/123`
|
|
178
|
-
5. **Consider API versioning**: `/api/v1/users` vs `/api/v2/users`
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## What NOT to Report
|
|
183
|
-
|
|
184
|
-
- Third-party API calls (`https://api.stripe.com/...`, `https://api.github.com/...`)
|
|
185
|
-
- Dynamic/computed endpoints that can't be statically analyzed
|
|
186
|
-
- API calls in test files or mock setups
|
|
187
|
-
- Endpoints defined by external packages or middleware (e.g., `next-auth` routes)
|
|
188
|
-
- GraphQL introspection queries
|
|
189
|
-
- WebSocket connections (unless clearly broken)
|
|
190
|
-
- Server-side only internal service calls
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: completeness-analyzer-conditional
|
|
3
|
-
description: Dead feature branch analyzer for hardcoded false conditions, dead feature flags, unreachable code after return/throw, and large commented-out blocks
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Completeness Analyzer: Dead Feature Branches
|
|
11
|
-
|
|
12
|
-
You are a specialized completeness analyzer focused on **dead feature branches and unreachable code**. Your job is to find code paths that can never execute - hardcoded false conditions, feature flags permanently set to off, code after unconditional returns, and large blocks of commented-out code that represent abandoned features.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Hardcoded false conditions**: `if (false)`, `if (0)`, constant variables always false
|
|
19
|
-
2. **Dead feature flags**: Flags hardcoded to `false` with no env/config mechanism
|
|
20
|
-
3. **Code after unconditional return/throw/break**: Unreachable statements
|
|
21
|
-
4. **Large commented-out code blocks**: 10+ lines of commented code (abandoned features)
|
|
22
|
-
5. **Impossible conditions**: Type-narrowing makes a branch unreachable
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Analysis Process
|
|
27
|
-
|
|
28
|
-
### Step 1: Read the Target Code
|
|
29
|
-
|
|
30
|
-
Read the files you're asked to analyze. Focus on:
|
|
31
|
-
- Feature flag definitions and usage
|
|
32
|
-
- Conditional branches with constant conditions
|
|
33
|
-
- Functions with early returns
|
|
34
|
-
- Large comment blocks
|
|
35
|
-
|
|
36
|
-
### Step 2: Look for These Patterns
|
|
37
|
-
|
|
38
|
-
**Pattern 1: Hardcoded false conditions**
|
|
39
|
-
```javascript
|
|
40
|
-
// DORMANT: Code never executes
|
|
41
|
-
if (false) {
|
|
42
|
-
// 50 lines of premium feature code
|
|
43
|
-
showPremiumDashboard();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// DORMANT: Constant is always false
|
|
47
|
-
const ENABLE_NEW_UI = false;
|
|
48
|
-
if (ENABLE_NEW_UI) {
|
|
49
|
-
renderNewUI();
|
|
50
|
-
} else {
|
|
51
|
-
renderOldUI();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// DORMANT: Logical impossibility
|
|
55
|
-
const x = 5;
|
|
56
|
-
if (x > 10) {
|
|
57
|
-
// Dead code
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Pattern 2: Dead feature flags**
|
|
62
|
-
```javascript
|
|
63
|
-
// DORMANT: Flag hardcoded with no override mechanism
|
|
64
|
-
const featureFlags = {
|
|
65
|
-
newCheckout: false, // No env var, no config service, no API
|
|
66
|
-
darkMode: false, // Permanently off
|
|
67
|
-
betaAnalytics: false, // Never enabled
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
if (featureFlags.newCheckout) {
|
|
71
|
-
// Entire checkout V2 code is dead
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// ALSO DORMANT: Environment variable that's never set
|
|
75
|
-
const ENABLE_AI = process.env.ENABLE_AI === 'true'; // .env has no ENABLE_AI
|
|
76
|
-
if (ENABLE_AI) {
|
|
77
|
-
// Dead code
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Pattern 3: Code after unconditional return/throw**
|
|
82
|
-
```javascript
|
|
83
|
-
// DORMANT: Lines after return can never execute
|
|
84
|
-
function processOrder(order) {
|
|
85
|
-
return { status: 'pending' };
|
|
86
|
-
|
|
87
|
-
// All of this is unreachable
|
|
88
|
-
validateOrder(order);
|
|
89
|
-
chargePayment(order.total);
|
|
90
|
-
sendConfirmation(order.email);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// DORMANT: Code after throw
|
|
94
|
-
function getUser(id) {
|
|
95
|
-
throw new Error('Service temporarily disabled');
|
|
96
|
-
|
|
97
|
-
const user = await db.users.findById(id);
|
|
98
|
-
return user;
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Pattern 4: Large commented-out code blocks**
|
|
103
|
-
```javascript
|
|
104
|
-
// DORMANT: Abandoned feature (30+ lines commented out)
|
|
105
|
-
// function AdminPanel() {
|
|
106
|
-
// const [users, setUsers] = useState([]);
|
|
107
|
-
// const [stats, setStats] = useState(null);
|
|
108
|
-
//
|
|
109
|
-
// useEffect(() => {
|
|
110
|
-
// fetchAdminData().then(data => {
|
|
111
|
-
// setUsers(data.users);
|
|
112
|
-
// setStats(data.stats);
|
|
113
|
-
// });
|
|
114
|
-
// }, []);
|
|
115
|
-
//
|
|
116
|
-
// return (
|
|
117
|
-
// <div className="admin-panel">
|
|
118
|
-
// <h1>Admin Dashboard</h1>
|
|
119
|
-
// <UserTable users={users} />
|
|
120
|
-
// <StatsChart stats={stats} />
|
|
121
|
-
// </div>
|
|
122
|
-
// );
|
|
123
|
-
// }
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**Pattern 5: Boolean short-circuit that's always false**
|
|
127
|
-
```javascript
|
|
128
|
-
// DORMANT: && with known false left side
|
|
129
|
-
const isAdmin = false; // Hardcoded
|
|
130
|
-
{isAdmin && <AdminControls />} // Never renders
|
|
131
|
-
|
|
132
|
-
// DORMANT: Ternary with known condition
|
|
133
|
-
const showBeta = false;
|
|
134
|
-
{showBeta ? <BetaFeature /> : <StableFeature />} // Always stable
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Output Format
|
|
140
|
-
|
|
141
|
-
For each potential issue found, output:
|
|
142
|
-
|
|
143
|
-
```markdown
|
|
144
|
-
### FINDING-{N}: {Brief Title}
|
|
145
|
-
|
|
146
|
-
**Location**: `{file}:{line_start}-{line_end}`
|
|
147
|
-
**Dead Lines**: {count} lines of unreachable code
|
|
148
|
-
**Severity**: BROKEN | INCOMPLETE | PLACEHOLDER | DORMANT
|
|
149
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
150
|
-
|
|
151
|
-
**Code**:
|
|
152
|
-
\`\`\`{language}
|
|
153
|
-
{relevant code snippet showing the dead branch, 5-10 lines}
|
|
154
|
-
\`\`\`
|
|
155
|
-
|
|
156
|
-
**Issue**: {Clear explanation of why code is unreachable}
|
|
157
|
-
|
|
158
|
-
**Dead Feature**: {Description of what the dead code was intended to do}
|
|
159
|
-
|
|
160
|
-
**Remediation**:
|
|
161
|
-
- **Complete**: {Enable the feature - change flag/condition, remove early return}
|
|
162
|
-
- **Remove**: {Delete the dead code and associated references}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Severity Guide
|
|
168
|
-
|
|
169
|
-
| Pattern | Severity | Rationale |
|
|
170
|
-
|---------|----------|-----------|
|
|
171
|
-
| Large commented-out feature (20+ lines) | DORMANT | Abandoned feature cluttering codebase |
|
|
172
|
-
| Feature flag hardcoded false (no override) | DORMANT | Feature exists but permanently disabled |
|
|
173
|
-
| Code after unconditional return | DORMANT | Unreachable implementation |
|
|
174
|
-
| `if (false)` block with real code | DORMANT | Intentionally disabled feature |
|
|
175
|
-
| Feature flag with env var but env var never set | PLACEHOLDER | Feature ready but not configured |
|
|
176
|
-
| Code after `throw new Error('disabled')` | INCOMPLETE | Feature explicitly turned off |
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Important Rules
|
|
181
|
-
|
|
182
|
-
1. **Check for runtime overrides**: Feature flags loaded from API/config at runtime are NOT dead
|
|
183
|
-
2. **Check .env files**: Environment variables may be set in `.env` but not `.env.example`
|
|
184
|
-
3. **Count dead lines**: Report how many lines of code are unreachable (impact indicator)
|
|
185
|
-
4. **Look at git blame**: Recently added dead code is more suspicious than old code
|
|
186
|
-
5. **Check for A/B testing**: Some "dead" branches are A/B test variants
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## What NOT to Report
|
|
191
|
-
|
|
192
|
-
- `if (process.env.NODE_ENV === 'development')` guards - intentional dev-only code
|
|
193
|
-
- `if (process.env.NODE_ENV === 'test')` guards - intentional test-only code
|
|
194
|
-
- Feature flags managed by a config service (LaunchDarkly, Flagsmith, etc.)
|
|
195
|
-
- A/B test branches managed by an experimentation framework
|
|
196
|
-
- TypeScript exhaustive checks (`default: throw new Error('unreachable')`)
|
|
197
|
-
- Assert/invariant patterns (`if (!condition) throw`)
|
|
198
|
-
- Build-time dead code elimination markers (`/* @__PURE__ */`)
|
|
199
|
-
- Code under `#ifdef`/`#ifndef` preprocessor guards
|
|
200
|
-
- Small comments (< 10 lines) - only flag large abandoned blocks
|
|
201
|
-
- Disabled ESLint rules with explanatory comments
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: completeness-analyzer-handlers
|
|
3
|
-
description: Dead/empty event handler analyzer for empty onClick/onSubmit/onChange, console-only handlers, partial handlers, and noop callbacks
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Completeness Analyzer: Dead/Empty Event Handlers
|
|
11
|
-
|
|
12
|
-
You are a specialized completeness analyzer focused on **dead and empty event handlers**. Your job is to find UI event handlers that appear functional but do nothing meaningful - buttons users click that have no effect, forms that submit into the void, and callbacks that silently discard user actions.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Empty event handlers**: `onClick={() => {}}`, `onSubmit={() => {}}`, `onChange={() => {}}`
|
|
19
|
-
2. **Console-only handlers**: Handlers that only `console.log` with no real logic
|
|
20
|
-
3. **Partial handlers**: Set loading state but never complete the operation (no API call, no state update)
|
|
21
|
-
4. **Noop callbacks**: Functions passed as props that do nothing
|
|
22
|
-
5. **Handlers that only `preventDefault`**: `onSubmit={(e) => { e.preventDefault() }}` with no follow-up
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Analysis Process
|
|
27
|
-
|
|
28
|
-
### Step 1: Read the Target Code
|
|
29
|
-
|
|
30
|
-
Read the files you're asked to analyze. Focus on:
|
|
31
|
-
- React/Vue/Svelte component files (`.tsx`, `.jsx`, `.vue`, `.svelte`)
|
|
32
|
-
- Event handler functions and inline arrow functions
|
|
33
|
-
- Form submission handlers
|
|
34
|
-
- Button click handlers
|
|
35
|
-
- Input change handlers
|
|
36
|
-
|
|
37
|
-
### Step 2: Look for These Patterns
|
|
38
|
-
|
|
39
|
-
**Pattern 1: Empty arrow function handlers**
|
|
40
|
-
```javascript
|
|
41
|
-
// BROKEN: Button does nothing when clicked
|
|
42
|
-
<button onClick={() => {}}>Delete Account</button>
|
|
43
|
-
|
|
44
|
-
// BROKEN: Form submits but nothing happens
|
|
45
|
-
<form onSubmit={() => {}}>
|
|
46
|
-
|
|
47
|
-
// BROKEN: Empty handler variable
|
|
48
|
-
const handleClick = () => {};
|
|
49
|
-
<button onClick={handleClick}>Save</button>
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Pattern 2: Console-only handlers**
|
|
53
|
-
```javascript
|
|
54
|
-
// INCOMPLETE: Only logs, no real action
|
|
55
|
-
const handleSubmit = (data) => {
|
|
56
|
-
console.log('submitted', data);
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// INCOMPLETE: Console.log placeholder
|
|
60
|
-
onClick={() => console.log('clicked')}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Pattern 3: Partial handlers (set state but never complete)**
|
|
64
|
-
```javascript
|
|
65
|
-
// INCOMPLETE: Sets loading but never calls API or resets
|
|
66
|
-
const handleSave = async () => {
|
|
67
|
-
setLoading(true);
|
|
68
|
-
// Nothing else - loading spinner forever
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
// INCOMPLETE: Sets loading, tries fetch, no error handling or completion
|
|
72
|
-
const handleDelete = async () => {
|
|
73
|
-
setLoading(true);
|
|
74
|
-
await fetch('/api/delete');
|
|
75
|
-
// Never sets loading back to false, never updates UI
|
|
76
|
-
};
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**Pattern 4: Noop prop callbacks**
|
|
80
|
-
```javascript
|
|
81
|
-
// BROKEN: Passing empty function as required callback
|
|
82
|
-
<Modal onClose={() => {}} />
|
|
83
|
-
<DataTable onRowClick={() => {}} />
|
|
84
|
-
<SearchBar onSearch={() => {}} />
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Pattern 5: preventDefault only**
|
|
88
|
-
```javascript
|
|
89
|
-
// INCOMPLETE: Prevents default but does nothing else
|
|
90
|
-
<form onSubmit={(e) => {
|
|
91
|
-
e.preventDefault();
|
|
92
|
-
}}>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Output Format
|
|
98
|
-
|
|
99
|
-
For each potential issue found, output:
|
|
100
|
-
|
|
101
|
-
```markdown
|
|
102
|
-
### FINDING-{N}: {Brief Title}
|
|
103
|
-
|
|
104
|
-
**Location**: `{file}:{line}`
|
|
105
|
-
**Severity**: BROKEN | INCOMPLETE | PLACEHOLDER | DORMANT
|
|
106
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
107
|
-
|
|
108
|
-
**Code**:
|
|
109
|
-
\`\`\`{language}
|
|
110
|
-
{relevant code snippet, 3-7 lines}
|
|
111
|
-
\`\`\`
|
|
112
|
-
|
|
113
|
-
**Issue**: {Clear explanation of what the user experiences}
|
|
114
|
-
|
|
115
|
-
**User Impact**:
|
|
116
|
-
- What users see: {description of broken experience}
|
|
117
|
-
- Expected behavior: {what should happen}
|
|
118
|
-
|
|
119
|
-
**Remediation**:
|
|
120
|
-
- **Complete**: {How to finish the implementation}
|
|
121
|
-
- **Remove**: {How to safely remove the dead code}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Severity Guide
|
|
127
|
-
|
|
128
|
-
| Pattern | Severity | Rationale |
|
|
129
|
-
|---------|----------|-----------|
|
|
130
|
-
| Empty onClick on visible button | BROKEN | User clicks, nothing happens |
|
|
131
|
-
| Console-only form handler | INCOMPLETE | Form appears to work but data goes nowhere |
|
|
132
|
-
| Loading state set but never cleared | INCOMPLETE | Infinite spinner |
|
|
133
|
-
| Empty noop callback prop | BROKEN | Feature appears but is non-functional |
|
|
134
|
-
| preventDefault only | INCOMPLETE | Form blocked but no replacement action |
|
|
135
|
-
| Empty handler in hidden/disabled element | DORMANT | Not user-facing but dead code |
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Important Rules
|
|
140
|
-
|
|
141
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
142
|
-
2. **Check for delegation**: A handler that calls another function IS complete - check the called function
|
|
143
|
-
3. **Check for context**: Handlers in test files, storybook stories, or example code are NOT findings
|
|
144
|
-
4. **Check for intentional noop**: Some frameworks require empty handlers (e.g., controlled components) - these are NOT findings
|
|
145
|
-
5. **Check for debounce/throttle wrappers**: `onClick={debounce(handleClick, 300)}` IS complete if `handleClick` has logic
|
|
146
|
-
6. **Verify the handler is actually used**: An empty function that's never referenced in JSX is not a handler issue
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## What NOT to Report
|
|
151
|
-
|
|
152
|
-
- Handlers in test files (`__tests__/`, `*.spec.*`, `*.test.*`)
|
|
153
|
-
- Storybook story handlers (`*.stories.*`)
|
|
154
|
-
- Example/demo code in `examples/` directories
|
|
155
|
-
- Intentional noop for controlled components (e.g., `onChange` on read-only inputs)
|
|
156
|
-
- Debounce/throttle wrappers around real handlers
|
|
157
|
-
- Event handlers that dispatch Redux/Zustand actions (these ARE doing something)
|
|
158
|
-
- Handlers that call `navigate()` or `router.push()` (navigation IS the action)
|
|
159
|
-
- Abstract/base class methods meant for override
|