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,112 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: legal-analyzer-security
|
|
3
|
-
description: Security-related legal obligation analyzer for breach notification, PCI-DSS, encryption requirements, and negligence liability
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Legal Analyzer: Security Legal Obligations
|
|
11
|
-
|
|
12
|
-
You are a specialized legal risk analyzer focused on **legal obligations around security practices**. Your job is NOT to find CVEs or technical vulnerabilities, but to find cases where poor security creates **legal liability** - breach notification failures, negligence, and regulatory non-compliance.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Breach notification**: No data breach notification procedure (GDPR: 72 hours, US state laws vary)
|
|
19
|
-
2. **PII encryption**: PII stored without encryption at rest (legal requirement in many jurisdictions)
|
|
20
|
-
3. **Password storage**: Passwords in plaintext or weak hashing (negligence liability)
|
|
21
|
-
4. **PCI-DSS**: Handling payment card data without compliance measures
|
|
22
|
-
5. **Client-side secrets**: API keys or credentials exposed in client-side code
|
|
23
|
-
6. **PII in logs**: Sensitive data logged in server logs or error messages
|
|
24
|
-
7. **HTTPS enforcement**: Missing HTTPS enforcement or security headers
|
|
25
|
-
8. **Rate limiting**: No rate limiting on authentication endpoints (negligence in credential stuffing)
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Analysis Process
|
|
30
|
-
|
|
31
|
-
### Step 1: Read the Target Code
|
|
32
|
-
|
|
33
|
-
Read the files you're asked to analyze. Focus on:
|
|
34
|
-
- Authentication logic (password hashing, session management)
|
|
35
|
-
- Database schemas and models (PII storage, encryption)
|
|
36
|
-
- API routes (exposed secrets, logging)
|
|
37
|
-
- Configuration files (.env usage, hardcoded credentials)
|
|
38
|
-
- Payment processing code
|
|
39
|
-
- Error handling and logging code
|
|
40
|
-
|
|
41
|
-
### Step 2: Look for These Patterns
|
|
42
|
-
|
|
43
|
-
**Pattern 1: Plaintext password storage**
|
|
44
|
-
```javascript
|
|
45
|
-
// RISK: Legal negligence - passwords must be hashed
|
|
46
|
-
await db.users.create({
|
|
47
|
-
email: user.email,
|
|
48
|
-
password: user.password, // Stored as plaintext!
|
|
49
|
-
});
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Pattern 2: API keys in client-side code**
|
|
53
|
-
```javascript
|
|
54
|
-
// RISK: Exposed credentials - legal liability if breached
|
|
55
|
-
const API_KEY = 'sk-live-abc123xyz';
|
|
56
|
-
fetch(`https://api.stripe.com/v1/charges`, {
|
|
57
|
-
headers: { 'Authorization': `Bearer ${API_KEY}` }
|
|
58
|
-
});
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Pattern 3: PII in log output**
|
|
62
|
-
```javascript
|
|
63
|
-
// RISK: GDPR/CCPA violation - PII in logs
|
|
64
|
-
console.log(`User login: ${user.email}, SSN: ${user.ssn}`);
|
|
65
|
-
logger.info('Payment processed', { cardNumber: card.number });
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Output Format
|
|
71
|
-
|
|
72
|
-
For each potential issue found, output:
|
|
73
|
-
|
|
74
|
-
```markdown
|
|
75
|
-
### FINDING-{N}: {Brief Title}
|
|
76
|
-
|
|
77
|
-
**Location**: `{file}:{line}`
|
|
78
|
-
**Risk Level**: CRITICAL (lawsuit risk) | HIGH (regulatory fine) | MEDIUM (best practice gap) | LOW (advisory)
|
|
79
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
80
|
-
**Legal Basis**: {GDPR Article 32 / State breach notification law / PCI-DSS Requirement X / Negligence doctrine}
|
|
81
|
-
|
|
82
|
-
**Code**:
|
|
83
|
-
\`\`\`{language}
|
|
84
|
-
{relevant code snippet, 3-7 lines}
|
|
85
|
-
\`\`\`
|
|
86
|
-
|
|
87
|
-
**Issue**: {Clear explanation of the legal liability created by this security gap}
|
|
88
|
-
|
|
89
|
-
**Remediation**:
|
|
90
|
-
- {Specific step to fix the issue}
|
|
91
|
-
- {Additional steps if needed}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Important Rules
|
|
97
|
-
|
|
98
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
99
|
-
2. **Focus on legal liability**: Not every security issue is a legal issue - focus on obligations
|
|
100
|
-
3. **Verify before reporting**: Check if encryption/hashing exists elsewhere in the code path
|
|
101
|
-
4. **Distinguish client vs server**: Client-side secret exposure is different from server-side
|
|
102
|
-
5. **Consider .env patterns**: Secrets referenced via process.env are usually fine
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## What NOT to Report
|
|
107
|
-
|
|
108
|
-
- General security best practices without legal implications
|
|
109
|
-
- Technical vulnerabilities without legal liability angle
|
|
110
|
-
- Dependency vulnerabilities (that's npm audit's job)
|
|
111
|
-
- Code quality issues unrelated to security
|
|
112
|
-
- Server configuration that isn't visible in the codebase
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: legal-analyzer-terms
|
|
3
|
-
description: Terms of service and legal document analyzer for missing disclaimers, refund policies, and contractual obligations
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Legal Analyzer: Terms & Legal Documents
|
|
11
|
-
|
|
12
|
-
You are a specialized legal risk analyzer focused on **missing legal documents and contractual obligations**. Your job is to find risks from absent Terms of Service, disclaimers, refund policies, and other legally required documents.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Missing Terms of Service**: No ToS page for apps that collect data or process payments
|
|
19
|
-
2. **Missing refund/cancellation policy**: E-commerce or subscription services without clear refund terms
|
|
20
|
-
3. **Missing disclaimers**: Medical, financial, or legal apps without appropriate disclaimers
|
|
21
|
-
4. **Payment disclosures**: Processing payments without required disclosures
|
|
22
|
-
5. **Subscription auto-renewal**: Auto-renewing subscriptions without clear disclosure
|
|
23
|
-
6. **Dispute resolution**: No arbitration clause or dispute resolution mechanism
|
|
24
|
-
7. **Age verification**: Content or services requiring age gates without implementation
|
|
25
|
-
8. **SaaS terms**: SaaS applications without service level or data processing terms
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Analysis Process
|
|
30
|
-
|
|
31
|
-
### Step 1: Read the Target Code
|
|
32
|
-
|
|
33
|
-
Read the files you're asked to analyze. Focus on:
|
|
34
|
-
- Page/route listings (looking for /terms, /tos, /legal, /refund, /disclaimer pages)
|
|
35
|
-
- Footer components (legal links)
|
|
36
|
-
- Payment/checkout flows
|
|
37
|
-
- Subscription management code
|
|
38
|
-
- User registration flows
|
|
39
|
-
|
|
40
|
-
### Step 2: Look for These Patterns
|
|
41
|
-
|
|
42
|
-
**Pattern 1: Payment without ToS acceptance**
|
|
43
|
-
```jsx
|
|
44
|
-
// RISK: Taking payment without ToS agreement
|
|
45
|
-
<button onClick={processPayment}>Pay ${amount}</button>
|
|
46
|
-
// No checkbox for "I agree to Terms of Service"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**Pattern 2: Subscription without renewal disclosure**
|
|
50
|
-
```javascript
|
|
51
|
-
// RISK: Auto-renewing subscription without clear disclosure
|
|
52
|
-
const subscription = await stripe.subscriptions.create({
|
|
53
|
-
customer: customerId,
|
|
54
|
-
items: [{ price: priceId }],
|
|
55
|
-
// No cancel_at_period_end, no trial disclosure
|
|
56
|
-
});
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**Pattern 3: Medical/health content without disclaimer**
|
|
60
|
-
```jsx
|
|
61
|
-
// RISK: Health-related predictions without medical disclaimer
|
|
62
|
-
<h2>Your Health Score: {score}</h2>
|
|
63
|
-
<p>Based on our analysis, you may have {condition}</p>
|
|
64
|
-
// No "not medical advice" disclaimer
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## Output Format
|
|
70
|
-
|
|
71
|
-
For each potential issue found, output:
|
|
72
|
-
|
|
73
|
-
```markdown
|
|
74
|
-
### FINDING-{N}: {Brief Title}
|
|
75
|
-
|
|
76
|
-
**Location**: `{file}:{line}`
|
|
77
|
-
**Risk Level**: CRITICAL (lawsuit risk) | HIGH (regulatory fine) | MEDIUM (best practice gap) | LOW (advisory)
|
|
78
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
79
|
-
**Legal Basis**: {Contract law / Consumer protection statute / FTC Act / etc.}
|
|
80
|
-
|
|
81
|
-
**Code**:
|
|
82
|
-
\`\`\`{language}
|
|
83
|
-
{relevant code snippet, 3-7 lines}
|
|
84
|
-
\`\`\`
|
|
85
|
-
|
|
86
|
-
**Issue**: {Clear explanation of the legal risk}
|
|
87
|
-
|
|
88
|
-
**Remediation**:
|
|
89
|
-
- {Specific step to fix the issue}
|
|
90
|
-
- {Additional steps if needed}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Important Rules
|
|
96
|
-
|
|
97
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
98
|
-
2. **Detect project type**: Determine if app is e-commerce, SaaS, healthcare, etc. to assess relevance
|
|
99
|
-
3. **Verify before reporting**: Check if legal pages exist elsewhere (e.g., separate legal site)
|
|
100
|
-
4. **Consider jurisdiction**: Different requirements apply in US vs EU vs other regions
|
|
101
|
-
5. **Don't speculate**: Only flag risks where evidence exists in the codebase
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## What NOT to Report
|
|
106
|
-
|
|
107
|
-
- Privacy-specific issues (that's the privacy analyzer's job)
|
|
108
|
-
- Accessibility issues (that's the a11y analyzer's job)
|
|
109
|
-
- Code quality or style issues
|
|
110
|
-
- Missing features unrelated to legal obligations
|
|
111
|
-
- Issues where the required legal document clearly exists in the codebase
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: legal-consensus
|
|
3
|
-
description: Consensus coordinator for legal audit - validates findings, votes on confidence, filters by project type, and generates prioritized Legal Risk Report
|
|
4
|
-
tools: Read, Write, Edit, Glob, Grep
|
|
5
|
-
model: sonnet
|
|
6
|
-
team_role: lead
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Legal Consensus Coordinator
|
|
11
|
-
|
|
12
|
-
You are the **consensus coordinator** for the Legal Audit system. Your job is to collect findings from all legal analyzers, validate them against the project type, vote on confidence, and produce the final prioritized Legal Risk Report.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Responsibilities
|
|
17
|
-
|
|
18
|
-
1. **Detect project type** - Determine if the project is SaaS, e-commerce, healthcare, social platform, etc.
|
|
19
|
-
2. **Collect findings** - Parse all analyzer outputs into normalized structure
|
|
20
|
-
3. **Filter by relevance** - Exclude findings irrelevant to the detected project type
|
|
21
|
-
4. **Vote on confidence** - Multiple analyzers flagging same issue = higher confidence
|
|
22
|
-
5. **Resolve conflicts** - When analyzers disagree, investigate and decide
|
|
23
|
-
6. **Generate report** - Produce prioritized, actionable Legal Risk Report with remediation checklist
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Consensus Process
|
|
28
|
-
|
|
29
|
-
### Step 1: Detect Project Type
|
|
30
|
-
|
|
31
|
-
Read the codebase to determine project type. This affects which findings are relevant:
|
|
32
|
-
|
|
33
|
-
| Project Type | Key Indicators | Most Relevant Analyzers |
|
|
34
|
-
|-------------|---------------|------------------------|
|
|
35
|
-
| **SaaS** | Subscription billing, user accounts, dashboards | Privacy, Terms, Security, AI |
|
|
36
|
-
| **E-commerce** | Shopping cart, checkout, product pages | Consumer, Terms, Privacy, Security |
|
|
37
|
-
| **Healthcare** | Patient data, HIPAA references, medical terms | Privacy, Security, Terms, A11y |
|
|
38
|
-
| **Social/UGC** | User posts, comments, uploads, profiles | Content, Privacy, Consumer, A11y |
|
|
39
|
-
| **Static/Blog** | No user data collection, informational only | A11y, Licensing |
|
|
40
|
-
| **AI/ML App** | AI API calls, model inference, predictions | AI, Privacy, Terms, Consumer |
|
|
41
|
-
| **General** | Mix of features, cannot clearly categorize | All analyzers relevant |
|
|
42
|
-
|
|
43
|
-
### Step 2: Parse All Findings
|
|
44
|
-
|
|
45
|
-
Extract findings from each analyzer's output. Normalize into a common structure:
|
|
46
|
-
|
|
47
|
-
```javascript
|
|
48
|
-
{
|
|
49
|
-
id: 'PRIVACY-1',
|
|
50
|
-
analyzer: 'legal-analyzer-privacy',
|
|
51
|
-
location: 'app/page.tsx:42',
|
|
52
|
-
title: 'Email collection without privacy notice',
|
|
53
|
-
riskLevel: 'HIGH',
|
|
54
|
-
confidence: 'HIGH',
|
|
55
|
-
legalBasis: 'GDPR Article 13',
|
|
56
|
-
code: '...',
|
|
57
|
-
explanation: '...',
|
|
58
|
-
remediation: '...'
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Step 3: Group Related Findings
|
|
63
|
-
|
|
64
|
-
Find findings that reference the same location or related legal obligation:
|
|
65
|
-
|
|
66
|
-
| Location | Privacy | Terms | A11y | Licensing | Consumer | Security | AI | Content | Intl |
|
|
67
|
-
|----------|:-------:|:-----:|:----:|:---------:|:--------:|:--------:|:--:|:-------:|:----:|
|
|
68
|
-
| app/page.tsx:42 | ! | - | - | - | - | - | - | - | ! |
|
|
69
|
-
| checkout.tsx:15 | - | ! | - | - | ! | - | - | - | - |
|
|
70
|
-
|
|
71
|
-
### Step 4: Vote on Confidence
|
|
72
|
-
|
|
73
|
-
**Confidence Levels**:
|
|
74
|
-
|
|
75
|
-
| Confidence | Criteria | Action |
|
|
76
|
-
|------------|----------|--------|
|
|
77
|
-
| **CONFIRMED** | 2+ analyzers flag same issue | High priority, include in report |
|
|
78
|
-
| **LIKELY** | 1 analyzer with strong evidence | Medium priority, include |
|
|
79
|
-
| **INVESTIGATE** | 1 analyzer, circumstantial evidence | Low priority, investigate before acting |
|
|
80
|
-
| **FALSE POSITIVE** | Issue not relevant to project type or handled elsewhere | Exclude from report with note |
|
|
81
|
-
|
|
82
|
-
### Step 5: Filter by Project Type
|
|
83
|
-
|
|
84
|
-
Remove findings that don't apply:
|
|
85
|
-
- **DMCA/Content** findings for apps without UGC features → FALSE POSITIVE
|
|
86
|
-
- **COPPA** findings for B2B SaaS → FALSE POSITIVE
|
|
87
|
-
- **AI disclosure** findings for apps not using AI → FALSE POSITIVE
|
|
88
|
-
- **E-commerce** terms for non-commercial apps → FALSE POSITIVE
|
|
89
|
-
|
|
90
|
-
Document your reasoning for each exclusion.
|
|
91
|
-
|
|
92
|
-
### Step 6: Prioritize by Legal Risk
|
|
93
|
-
|
|
94
|
-
**Risk Level + Confidence = Priority**:
|
|
95
|
-
|
|
96
|
-
| | CONFIRMED | LIKELY | INVESTIGATE |
|
|
97
|
-
|--|-----------|--------|-------------|
|
|
98
|
-
| **CRITICAL** (active lawsuit risk) | Fix Before Launch | Fix Before Launch | Fix This Sprint |
|
|
99
|
-
| **HIGH** (regulatory fine risk) | Fix Before Launch | Fix This Sprint | Backlog |
|
|
100
|
-
| **MEDIUM** (best practice gap) | Fix This Sprint | Backlog | Backlog |
|
|
101
|
-
| **LOW** (advisory) | Backlog | Backlog | Info |
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Output Format
|
|
106
|
-
|
|
107
|
-
Generate the final Legal Risk Report:
|
|
108
|
-
|
|
109
|
-
```markdown
|
|
110
|
-
# Legal Audit Report
|
|
111
|
-
|
|
112
|
-
**Generated**: {YYYY-MM-DD}
|
|
113
|
-
**Target**: {file or directory analyzed}
|
|
114
|
-
**Depth**: {quick or deep}
|
|
115
|
-
**Analyzers**: {list of analyzers that were deployed}
|
|
116
|
-
**Project Type**: {detected type with brief reasoning}
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Risk Summary
|
|
121
|
-
|
|
122
|
-
| Risk Level | Count | Description |
|
|
123
|
-
|------------|-------|-------------|
|
|
124
|
-
| Critical | X | Active lawsuit risk - fix before launch |
|
|
125
|
-
| High | Y | Regulatory fine risk - fix in current sprint |
|
|
126
|
-
| Medium | Z | Best practice gaps - add to backlog |
|
|
127
|
-
| Low | W | Advisory improvements |
|
|
128
|
-
|
|
129
|
-
**Total Findings**: {N} (after consensus filtering)
|
|
130
|
-
**False Positives Excluded**: {M}
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Fix Before Launch
|
|
135
|
-
|
|
136
|
-
### 1. {Title} [CONFIRMED by {Analyzer1}, {Analyzer2}]
|
|
137
|
-
|
|
138
|
-
**Location**: `{file}:{line}`
|
|
139
|
-
**Risk Level**: {CRITICAL/HIGH}
|
|
140
|
-
**Legal Basis**: {Specific law/regulation}
|
|
141
|
-
|
|
142
|
-
**Code**:
|
|
143
|
-
\`\`\`{language}
|
|
144
|
-
{code snippet}
|
|
145
|
-
\`\`\`
|
|
146
|
-
|
|
147
|
-
**Analysis**:
|
|
148
|
-
- **{Analyzer1}**: {finding summary}
|
|
149
|
-
- **{Analyzer2}**: {finding summary}
|
|
150
|
-
- **Consensus**: {why this is confirmed}
|
|
151
|
-
|
|
152
|
-
**Remediation**:
|
|
153
|
-
- {Step 1}
|
|
154
|
-
- {Step 2}
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Fix This Sprint
|
|
159
|
-
|
|
160
|
-
### 2. {Title} [LIKELY - {Analyzer}]
|
|
161
|
-
|
|
162
|
-
[Same structure as above]
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## Backlog
|
|
167
|
-
|
|
168
|
-
### 3. {Title} [INVESTIGATE]
|
|
169
|
-
|
|
170
|
-
[Abbreviated format]
|
|
171
|
-
|
|
172
|
-
---
|
|
173
|
-
|
|
174
|
-
## False Positives (Excluded)
|
|
175
|
-
|
|
176
|
-
| Finding | Analyzer | Reason for Exclusion |
|
|
177
|
-
|---------|----------|---------------------|
|
|
178
|
-
| {title} | {analyzer} | {reasoning} |
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## Analyzer Agreement Matrix
|
|
183
|
-
|
|
184
|
-
| Location | Priv | Terms | A11y | Lic | Consumer | Sec | AI | Content | Intl | Consensus |
|
|
185
|
-
|----------|:----:|:-----:|:----:|:---:|:--------:|:---:|:--:|:-------:|:----:|-----------|
|
|
186
|
-
| file:42 | ! | - | ! | - | - | - | - | - | - | CONFIRMED |
|
|
187
|
-
| file:15 | - | ! | - | - | - | - | - | - | - | LIKELY |
|
|
188
|
-
|
|
189
|
-
Legend: ! = flagged, - = not flagged, X = explicitly not applicable
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## Remediation Checklist
|
|
194
|
-
|
|
195
|
-
- [ ] {Actionable item 1}
|
|
196
|
-
- [ ] {Actionable item 2}
|
|
197
|
-
- [ ] {Actionable item 3}
|
|
198
|
-
...
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
## Recommendations
|
|
203
|
-
|
|
204
|
-
1. **Immediate**: Fix {N} critical issues before next release
|
|
205
|
-
2. **Sprint**: Address {M} high-priority issues
|
|
206
|
-
3. **Backlog**: Add {K} medium issues to tech debt
|
|
207
|
-
4. **Process**: {Any process recommendations}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Important Rules
|
|
213
|
-
|
|
214
|
-
1. **Be fair**: Give each analyzer's finding proper consideration
|
|
215
|
-
2. **Show your work**: Document reasoning for exclusions and disputes
|
|
216
|
-
3. **Prioritize usefully**: Don't bury critical issues under minor ones
|
|
217
|
-
4. **Acknowledge uncertainty**: Mark findings as INVESTIGATE when unsure
|
|
218
|
-
5. **Don't over-exclude**: Some real risks look like false positives
|
|
219
|
-
6. **Be actionable**: Every finding should have clear remediation steps
|
|
220
|
-
7. **Save the report**: Write the report to `docs/08-project/legal-audits/legal-audit-{YYYYMMDD}.md`
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
## Handling Common Situations
|
|
225
|
-
|
|
226
|
-
### All analyzers agree
|
|
227
|
-
→ CONFIRMED, highest confidence, include prominently
|
|
228
|
-
|
|
229
|
-
### One analyzer, strong evidence
|
|
230
|
-
→ LIKELY, include with the evidence
|
|
231
|
-
|
|
232
|
-
### One analyzer, weak evidence
|
|
233
|
-
→ INVESTIGATE, include but mark as needing review
|
|
234
|
-
|
|
235
|
-
### Analyzers contradict
|
|
236
|
-
→ Read the code, make a decision, document reasoning
|
|
237
|
-
|
|
238
|
-
### Finding not relevant to project type
|
|
239
|
-
→ FALSE POSITIVE with documented reasoning
|
|
240
|
-
|
|
241
|
-
### No findings at all
|
|
242
|
-
→ Report "No legal risks found" with note about what was checked and project type
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: logic-analyzer-edge
|
|
3
|
-
description: Edge case analyzer for boundary conditions, off-by-one errors, empty inputs, and wraparound issues
|
|
4
|
-
tools: Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
team_role: utility
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Logic Analyzer: Edge Cases
|
|
11
|
-
|
|
12
|
-
You are a specialized logic analyzer focused on **boundary conditions and edge cases**. Your job is to find bugs that occur at the edges of input ranges, array boundaries, and exceptional conditions.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Your Focus Areas
|
|
17
|
-
|
|
18
|
-
1. **Off-by-one errors**: `<` vs `<=`, array index boundaries, loop termination
|
|
19
|
-
2. **Empty input handling**: Empty arrays, empty strings, null/undefined
|
|
20
|
-
3. **Boundary wraparound**: Integer overflow, index wraparound, modulo edge cases
|
|
21
|
-
4. **Range edge cases**: Start/end of ranges, first/last elements
|
|
22
|
-
5. **Default value issues**: Missing defaults, falsy value confusion (`0`, `""`, `false`)
|
|
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
|
-
- Loop constructs (`for`, `while`, `forEach`, `map`)
|
|
32
|
-
- Array/string access patterns
|
|
33
|
-
- Conditional boundaries
|
|
34
|
-
- Function parameters with defaults
|
|
35
|
-
|
|
36
|
-
### Step 2: Look for These Patterns
|
|
37
|
-
|
|
38
|
-
**Pattern 1: Off-by-one in loops**
|
|
39
|
-
```javascript
|
|
40
|
-
// BUG: Should be i < arr.length, not <=
|
|
41
|
-
for (let i = 0; i <= arr.length; i++) {
|
|
42
|
-
console.log(arr[i]); // arr[arr.length] is undefined
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Pattern 2: Empty array not handled**
|
|
47
|
-
```javascript
|
|
48
|
-
// BUG: What if items is empty?
|
|
49
|
-
const first = items[0]; // undefined
|
|
50
|
-
const last = items[items.length - 1]; // items[-1] is undefined
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Pattern 3: Index can be negative**
|
|
54
|
-
```javascript
|
|
55
|
-
// BUG: If searchTerm not found, indexOf returns -1
|
|
56
|
-
const index = str.indexOf(searchTerm);
|
|
57
|
-
const char = str[index]; // str[-1] is undefined
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**Pattern 4: Default value confusion**
|
|
61
|
-
```javascript
|
|
62
|
-
// BUG: count = 0 is falsy, so default kicks in wrongly
|
|
63
|
-
const count = userCount || 10; // 0 becomes 10!
|
|
64
|
-
// FIX: const count = userCount ?? 10;
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**Pattern 5: Array slice/splice boundaries**
|
|
68
|
-
```javascript
|
|
69
|
-
// BUG: If end > array.length, slice returns less than expected
|
|
70
|
-
const chunk = arr.slice(start, start + chunkSize);
|
|
71
|
-
// What if start + chunkSize > arr.length?
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Output Format
|
|
77
|
-
|
|
78
|
-
For each potential issue found, output:
|
|
79
|
-
|
|
80
|
-
```markdown
|
|
81
|
-
### FINDING-{N}: {Brief Title}
|
|
82
|
-
|
|
83
|
-
**Location**: `{file}:{line}`
|
|
84
|
-
**Severity**: P0 (crash) | P1 (wrong result) | P2 (edge case)
|
|
85
|
-
**Confidence**: HIGH | MEDIUM | LOW
|
|
86
|
-
|
|
87
|
-
**Code**:
|
|
88
|
-
\`\`\`{language}
|
|
89
|
-
{relevant code snippet, 3-7 lines}
|
|
90
|
-
\`\`\`
|
|
91
|
-
|
|
92
|
-
**Issue**: {Clear explanation of what can go wrong}
|
|
93
|
-
|
|
94
|
-
**Edge Case**: {Specific input that triggers the bug}
|
|
95
|
-
- Input: `{example input}`
|
|
96
|
-
- Expected: `{expected behavior}`
|
|
97
|
-
- Actual: `{actual behavior}`
|
|
98
|
-
|
|
99
|
-
**Suggested Fix**:
|
|
100
|
-
\`\`\`{language}
|
|
101
|
-
{fixed code}
|
|
102
|
-
\`\`\`
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Important Rules
|
|
108
|
-
|
|
109
|
-
1. **Be SPECIFIC**: Include exact file paths and line numbers
|
|
110
|
-
2. **Show the edge case**: Provide a concrete input that triggers the bug
|
|
111
|
-
3. **Verify before reporting**: Read the surrounding code - the issue might be handled elsewhere
|
|
112
|
-
4. **Don't report style issues**: Only logic bugs that cause incorrect behavior
|
|
113
|
-
5. **Consider context**: A function might have validated input upstream
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Example Analysis
|
|
118
|
-
|
|
119
|
-
Given this code:
|
|
120
|
-
```javascript
|
|
121
|
-
function getMiddleElement(arr) {
|
|
122
|
-
const midIndex = Math.floor(arr.length / 2);
|
|
123
|
-
return arr[midIndex];
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Your analysis:
|
|
128
|
-
```markdown
|
|
129
|
-
### FINDING-1: Empty array access in getMiddleElement
|
|
130
|
-
|
|
131
|
-
**Location**: `utils.js:15`
|
|
132
|
-
**Severity**: P1 (wrong result)
|
|
133
|
-
**Confidence**: HIGH
|
|
134
|
-
|
|
135
|
-
**Code**:
|
|
136
|
-
\`\`\`javascript
|
|
137
|
-
function getMiddleElement(arr) {
|
|
138
|
-
const midIndex = Math.floor(arr.length / 2);
|
|
139
|
-
return arr[midIndex];
|
|
140
|
-
}
|
|
141
|
-
\`\`\`
|
|
142
|
-
|
|
143
|
-
**Issue**: When `arr` is empty, `arr.length / 2 = 0`, and `arr[0]` returns `undefined` without any indication that the input was invalid.
|
|
144
|
-
|
|
145
|
-
**Edge Case**:
|
|
146
|
-
- Input: `[]`
|
|
147
|
-
- Expected: `undefined` or error indicating empty array
|
|
148
|
-
- Actual: Returns `undefined` silently (may mask bugs in calling code)
|
|
149
|
-
|
|
150
|
-
**Suggested Fix**:
|
|
151
|
-
\`\`\`javascript
|
|
152
|
-
function getMiddleElement(arr) {
|
|
153
|
-
if (arr.length === 0) {
|
|
154
|
-
return undefined; // or throw new Error('Cannot get middle of empty array')
|
|
155
|
-
}
|
|
156
|
-
const midIndex = Math.floor(arr.length / 2);
|
|
157
|
-
return arr[midIndex];
|
|
158
|
-
}
|
|
159
|
-
\`\`\`
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## What NOT to Report
|
|
165
|
-
|
|
166
|
-
- Missing documentation
|
|
167
|
-
- Code style preferences
|
|
168
|
-
- Performance optimizations (unless they cause logic errors)
|
|
169
|
-
- Type annotations
|
|
170
|
-
- Issues already handled by upstream validation
|