@tyroneross/build-loop 0.30.3
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/.agents/plugins/marketplace.json +10 -0
- package/.claude-plugin/marketplace.json +38 -0
- package/.claude-plugin/plugin.json +30 -0
- package/.codex-plugin/plugin.json +41 -0
- package/.cursor/rules/build-loop-surface.mdc +22 -0
- package/AGENTS.md +498 -0
- package/LICENSE +202 -0
- package/README.md +403 -0
- package/agents/alignment-checker.md +124 -0
- package/agents/api-assessor.md +136 -0
- package/agents/architecture-scout.md +185 -0
- package/agents/assessment-orchestrator.md +163 -0
- package/agents/build-orchestrator.md +198 -0
- package/agents/database-assessor.md +133 -0
- package/agents/design-contract-specialist.md +239 -0
- package/agents/fact-checker.md +69 -0
- package/agents/fix-critique.md +161 -0
- package/agents/frontend-assessor.md +136 -0
- package/agents/implementer.md +185 -0
- package/agents/independent-auditor.md +143 -0
- package/agents/mock-scanner.md +78 -0
- package/agents/optimize-runner.md +112 -0
- package/agents/overfitting-reviewer.md +96 -0
- package/agents/performance-assessor.md +159 -0
- package/agents/plan-critic.md +85 -0
- package/agents/promotion-reviewer.md +121 -0
- package/agents/recurring-pattern-detector.md +248 -0
- package/agents/retrospective-synthesizer.md +109 -0
- package/agents/root-cause-investigator.md +285 -0
- package/agents/scope-auditor.md +121 -0
- package/agents/security-reviewer.md +151 -0
- package/agents/self-improvement-architect.md +125 -0
- package/agents/synthesis-critic.md +99 -0
- package/agents/transcript-pattern-miner.md +165 -0
- package/agents/ui-validator.md +193 -0
- package/codex-skills/build-loop/SKILL.md +20 -0
- package/codex-skills/debug-loop/SKILL.md +18 -0
- package/codex-skills/handoff/SKILL.md +22 -0
- package/codex-skills/knowledge/SKILL.md +21 -0
- package/codex-skills/optimize/SKILL.md +18 -0
- package/codex-skills/research/SKILL.md +18 -0
- package/commands/agent-rally-point.md +301 -0
- package/commands/assess.md +41 -0
- package/commands/debug.md +20 -0
- package/commands/debugger-detail.md +34 -0
- package/commands/debugger-scan.md +15 -0
- package/commands/debugger-status.md +20 -0
- package/commands/debugger.md +32 -0
- package/commands/handoff.md +113 -0
- package/commands/knowledge-review.md +16 -0
- package/commands/optimize.md +31 -0
- package/commands/plan-verify.md +39 -0
- package/commands/promote-experiment.md +129 -0
- package/commands/research.md +22 -0
- package/commands/run.md +12 -0
- package/commands/self-review.md +51 -0
- package/commands/start-prd.md +57 -0
- package/commands/test.md +34 -0
- package/dist/src/assessment-orchestrator.d.ts +78 -0
- package/dist/src/assessment-orchestrator.d.ts.map +1 -0
- package/dist/src/assessment-orchestrator.js +304 -0
- package/dist/src/assessment-orchestrator.js.map +1 -0
- package/dist/src/audit-miner.d.ts +21 -0
- package/dist/src/audit-miner.d.ts.map +1 -0
- package/dist/src/audit-miner.js +421 -0
- package/dist/src/audit-miner.js.map +1 -0
- package/dist/src/batch-operations.d.ts +30 -0
- package/dist/src/batch-operations.d.ts.map +1 -0
- package/dist/src/batch-operations.js +339 -0
- package/dist/src/batch-operations.js.map +1 -0
- package/dist/src/config.d.ts +83 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +176 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/context-engine.d.ts +45 -0
- package/dist/src/context-engine.d.ts.map +1 -0
- package/dist/src/context-engine.js +135 -0
- package/dist/src/context-engine.js.map +1 -0
- package/dist/src/debug-wrapper.d.ts +58 -0
- package/dist/src/debug-wrapper.d.ts.map +1 -0
- package/dist/src/debug-wrapper.js +285 -0
- package/dist/src/debug-wrapper.js.map +1 -0
- package/dist/src/index.d.ts +31 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +149 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interactive-verifier.d.ts +26 -0
- package/dist/src/interactive-verifier.d.ts.map +1 -0
- package/dist/src/interactive-verifier.js +435 -0
- package/dist/src/interactive-verifier.js.map +1 -0
- package/dist/src/lessons.d.ts +59 -0
- package/dist/src/lessons.d.ts.map +1 -0
- package/dist/src/lessons.js +172 -0
- package/dist/src/lessons.js.map +1 -0
- package/dist/src/log-reader.d.ts +39 -0
- package/dist/src/log-reader.d.ts.map +1 -0
- package/dist/src/log-reader.js +291 -0
- package/dist/src/log-reader.js.map +1 -0
- package/dist/src/logger.d.ts +59 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +328 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/parallel-retrieval.d.ts +52 -0
- package/dist/src/parallel-retrieval.d.ts.map +1 -0
- package/dist/src/parallel-retrieval.js +309 -0
- package/dist/src/parallel-retrieval.js.map +1 -0
- package/dist/src/pattern-extractor.d.ts +30 -0
- package/dist/src/pattern-extractor.d.ts.map +1 -0
- package/dist/src/pattern-extractor.js +386 -0
- package/dist/src/pattern-extractor.js.map +1 -0
- package/dist/src/result-aggregator.d.ts +44 -0
- package/dist/src/result-aggregator.d.ts.map +1 -0
- package/dist/src/result-aggregator.js +315 -0
- package/dist/src/result-aggregator.js.map +1 -0
- package/dist/src/retrieval.d.ts +139 -0
- package/dist/src/retrieval.d.ts.map +1 -0
- package/dist/src/retrieval.js +724 -0
- package/dist/src/retrieval.js.map +1 -0
- package/dist/src/setup/auto-setup.d.ts +15 -0
- package/dist/src/setup/auto-setup.d.ts.map +1 -0
- package/dist/src/setup/auto-setup.js +157 -0
- package/dist/src/setup/auto-setup.js.map +1 -0
- package/dist/src/setup/configure-hooks.d.ts +8 -0
- package/dist/src/setup/configure-hooks.d.ts.map +1 -0
- package/dist/src/setup/configure-hooks.js +16 -0
- package/dist/src/setup/configure-hooks.js.map +1 -0
- package/dist/src/setup/create-slash-commands.d.ts +8 -0
- package/dist/src/setup/create-slash-commands.d.ts.map +1 -0
- package/dist/src/setup/create-slash-commands.js +101 -0
- package/dist/src/setup/create-slash-commands.js.map +1 -0
- package/dist/src/setup/index.d.ts +8 -0
- package/dist/src/setup/index.d.ts.map +1 -0
- package/dist/src/setup/index.js +17 -0
- package/dist/src/setup/index.js.map +1 -0
- package/dist/src/setup/inject-claude-md.d.ts +10 -0
- package/dist/src/setup/inject-claude-md.d.ts.map +1 -0
- package/dist/src/setup/inject-claude-md.js +150 -0
- package/dist/src/setup/inject-claude-md.js.map +1 -0
- package/dist/src/setup/uninstall.d.ts +22 -0
- package/dist/src/setup/uninstall.d.ts.map +1 -0
- package/dist/src/setup/uninstall.js +235 -0
- package/dist/src/setup/uninstall.js.map +1 -0
- package/dist/src/storage.d.ts +192 -0
- package/dist/src/storage.d.ts.map +1 -0
- package/dist/src/storage.js +1037 -0
- package/dist/src/storage.js.map +1 -0
- package/dist/src/string-similarity.d.ts +8 -0
- package/dist/src/string-similarity.d.ts.map +1 -0
- package/dist/src/string-similarity.js +57 -0
- package/dist/src/string-similarity.js.map +1 -0
- package/dist/src/traces/adapters/browser.d.ts +69 -0
- package/dist/src/traces/adapters/browser.d.ts.map +1 -0
- package/dist/src/traces/adapters/browser.js +280 -0
- package/dist/src/traces/adapters/browser.js.map +1 -0
- package/dist/src/traces/adapters/index.d.ts +23 -0
- package/dist/src/traces/adapters/index.d.ts.map +1 -0
- package/dist/src/traces/adapters/index.js +67 -0
- package/dist/src/traces/adapters/index.js.map +1 -0
- package/dist/src/traces/adapters/langchain.d.ts +42 -0
- package/dist/src/traces/adapters/langchain.d.ts.map +1 -0
- package/dist/src/traces/adapters/langchain.js +151 -0
- package/dist/src/traces/adapters/langchain.js.map +1 -0
- package/dist/src/traces/adapters/opentelemetry.d.ts +46 -0
- package/dist/src/traces/adapters/opentelemetry.d.ts.map +1 -0
- package/dist/src/traces/adapters/opentelemetry.js +164 -0
- package/dist/src/traces/adapters/opentelemetry.js.map +1 -0
- package/dist/src/traces/adapters/sentry.d.ts +58 -0
- package/dist/src/traces/adapters/sentry.d.ts.map +1 -0
- package/dist/src/traces/adapters/sentry.js +212 -0
- package/dist/src/traces/adapters/sentry.js.map +1 -0
- package/dist/src/traces/index.d.ts +10 -0
- package/dist/src/traces/index.d.ts.map +1 -0
- package/dist/src/traces/index.js +45 -0
- package/dist/src/traces/index.js.map +1 -0
- package/dist/src/traces/storage.d.ts +78 -0
- package/dist/src/traces/storage.d.ts.map +1 -0
- package/dist/src/traces/storage.js +399 -0
- package/dist/src/traces/storage.js.map +1 -0
- package/dist/src/traces/summarizer.d.ts +83 -0
- package/dist/src/traces/summarizer.d.ts.map +1 -0
- package/dist/src/traces/summarizer.js +247 -0
- package/dist/src/traces/summarizer.js.map +1 -0
- package/dist/src/traces/types.d.ts +365 -0
- package/dist/src/traces/types.d.ts.map +1 -0
- package/dist/src/traces/types.js +14 -0
- package/dist/src/traces/types.js.map +1 -0
- package/dist/src/types.d.ts +495 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +27 -0
- package/dist/src/types.js.map +1 -0
- package/docs/agent-surface-policy.md +45 -0
- package/docs/memory-setup.md +226 -0
- package/hooks/_arch_scan_bg.py +88 -0
- package/hooks/_plugin_drift_check_bg.py +85 -0
- package/hooks/_session_start_lib.sh +42 -0
- package/hooks/git/pre-push +141 -0
- package/hooks/hooks.json +126 -0
- package/hooks/post-commit +30 -0
- package/hooks/pre-commit +29 -0
- package/hooks/pre-edit-apppulse.sh +6 -0
- package/hooks/pre-edit-architecture.sh +106 -0
- package/hooks/pre-edit-rally-point.sh +92 -0
- package/hooks/session-start-apppulse.sh +6 -0
- package/hooks/session-start-architecture.sh +10 -0
- package/hooks/session-start-git-hooks.sh +12 -0
- package/hooks/session-start-plugin-drift.sh +27 -0
- package/hooks/session-start-rally-point.sh +44 -0
- package/hooks/session-start-retrieval.sh +24 -0
- package/hooks/session-start-worktree-gc.sh +105 -0
- package/hooks/test_apppulse_hooks.sh +6 -0
- package/hooks/test_rally_point_hooks.sh +388 -0
- package/hooks/test_sec008_hooks.sh +66 -0
- package/package.json +111 -0
- package/scripts/README.md +301 -0
- package/scripts/_db_url.py +61 -0
- package/scripts/_paths.py +445 -0
- package/scripts/blm.py +162 -0
- package/scripts/blm_api.py +263 -0
- package/scripts/check_cache_sync.py +490 -0
- package/scripts/embed_backend.py +475 -0
- package/scripts/install_memory.py +556 -0
- package/scripts/lessons_index/__init__.py +77 -0
- package/scripts/lessons_index/__main__.py +135 -0
- package/scripts/lessons_index/ingest.py +288 -0
- package/scripts/lessons_index/query.py +285 -0
- package/scripts/lessons_index/schema.py +114 -0
- package/scripts/memory_context/__init__.py +610 -0
- package/scripts/memory_graph/__init__.py +393 -0
- package/scripts/project_resolver.py +172 -0
- package/scripts/prune_codex_plugin_cache.py +23 -0
- package/scripts/prune_plugin_cache.py +359 -0
- package/scripts/semantic_index/__init__.py +482 -0
- package/scripts/semantic_index/_bench_hybrid.py +175 -0
- package/scripts/semantic_index/backfill.py +263 -0
- package/scripts/semantic_index/hybrid.py +174 -0
- package/scripts/semantic_index/test_backfill.py +292 -0
- package/scripts/semantic_index/test_hybrid.py +541 -0
- package/scripts/sync_navgator_lessons.py +666 -0
- package/scripts/sync_plugin_cache.py +388 -0
- package/skills/agent-rally-point/SKILL.md +165 -0
- package/skills/agent-rally-watcher/SKILL.md +83 -0
- package/skills/api-registry-bridge/SKILL.md +59 -0
- package/skills/architecture/dead/SKILL.md +56 -0
- package/skills/architecture/impact/SKILL.md +88 -0
- package/skills/architecture/review/SKILL.md +227 -0
- package/skills/architecture/rules/SKILL.md +72 -0
- package/skills/architecture/scan/SKILL.md +79 -0
- package/skills/architecture/trace/SKILL.md +65 -0
- package/skills/attribution-standard/SKILL.md +122 -0
- package/skills/authentication/SKILL.md +81 -0
- package/skills/authentication/references/better-auth-magic-link.md +135 -0
- package/skills/authentication/references/better-auth-setup.md +224 -0
- package/skills/authentication/references/google-calendar-sync.md +278 -0
- package/skills/authentication/references/google-cloud-console.md +159 -0
- package/skills/authentication/references/google-geocoding-directions.md +126 -0
- package/skills/authentication/references/google-lessons-example-web-app.md +177 -0
- package/skills/authentication/references/google-maps.md +162 -0
- package/skills/authentication/references/google-oauth-setup.md +343 -0
- package/skills/authentication/references/google-places.md +173 -0
- package/skills/authentication/references/lessons-example-web-app-better-auth.md +126 -0
- package/skills/authentication/references/resend-email.md +227 -0
- package/skills/authentication/references/resend-otp-magic-link.md +153 -0
- package/skills/authentication/references/supabase-auth.md +172 -0
- package/skills/auto-decision-capture/SKILL.md +419 -0
- package/skills/build-loop/SKILL.md +516 -0
- package/skills/build-loop/detect-plugins.mjs +82 -0
- package/skills/build-loop/eval-guide.md +65 -0
- package/skills/build-loop/fallbacks.md +549 -0
- package/skills/build-loop/phases/fact-check.md +42 -0
- package/skills/build-loop/phases/ui-validation.md +267 -0
- package/skills/build-loop/references/apple-native-planning.md +439 -0
- package/skills/build-loop/references/capability-routing.md +181 -0
- package/skills/build-loop/references/codex-subagents.md +98 -0
- package/skills/build-loop/references/coordination.md +161 -0
- package/skills/build-loop/references/correction-aware-capture.md +177 -0
- package/skills/build-loop/references/independent-auditor.md +72 -0
- package/skills/build-loop/references/intent-capability-pack.md +170 -0
- package/skills/build-loop/references/intent-exploration-prompts.md +96 -0
- package/skills/build-loop/references/leadership.md +72 -0
- package/skills/build-loop/references/memory.md +284 -0
- package/skills/build-loop/references/modular-systems-pack.md +96 -0
- package/skills/build-loop/references/output-style.md +129 -0
- package/skills/build-loop/references/pay-it-forward-arch.md +98 -0
- package/skills/build-loop/references/phase-1-assess.md +218 -0
- package/skills/build-loop/references/phase-2-plan.md +77 -0
- package/skills/build-loop/references/phase-3-execute.md +47 -0
- package/skills/build-loop/references/phase-4-review.md +310 -0
- package/skills/build-loop/references/phase-5-iterate.md +71 -0
- package/skills/build-loop/references/phase-6-learn.md +56 -0
- package/skills/build-loop/references/recent-design-structures.md +274 -0
- package/skills/build-loop/references/refactor-history/ASSESSMENT.md +85 -0
- package/skills/build-loop/references/refactor-history/STANDALONE_TEST_RUN.md +149 -0
- package/skills/build-loop/references/refactor-history/scenarios/01-simple-bugfix.md +32 -0
- package/skills/build-loop/references/refactor-history/scenarios/02-ui-build-with-iteration.md +48 -0
- package/skills/build-loop/references/refactor-history/scenarios/03-multi-failure-escalation.md +60 -0
- package/skills/build-loop/references/refactor-history/scenarios/04-ui-build-ibr-absent.md +51 -0
- package/skills/build-loop/references/refactor-history/scenarios/05-refactor-navgator-absent.md +71 -0
- package/skills/build-loop/references/refactor-history/scenarios/06-recurring-bug-debugger-absent.md +52 -0
- package/skills/build-loop/references/refactor-history/trace-comparison.md +202 -0
- package/skills/build-loop/references/self-recursive-dev.md +77 -0
- package/skills/build-loop/references/self-review.md +232 -0
- package/skills/build-loop/references/ui-io-contract.md +116 -0
- package/skills/build-loop/scanners/audit-design-rules.mjs +476 -0
- package/skills/build-loop/scanners/require-visual-evidence.mjs +239 -0
- package/skills/build-loop/templates/backlog-item.md +35 -0
- package/skills/build-loop/templates/codex-worker-prompt.md +89 -0
- package/skills/build-loop/templates/ui-subagent-prompt.md +179 -0
- package/skills/build-loop/templates/ux-fix-plan.md +40 -0
- package/skills/building-with-deepagents/SKILL.md +195 -0
- package/skills/building-with-deepagents/references/anti-patterns.md +141 -0
- package/skills/building-with-deepagents/references/api-quick-reference.md +184 -0
- package/skills/capabilities/SKILL.md +91 -0
- package/skills/debug-loop/SKILL.md +278 -0
- package/skills/debug-loop/references/convergence-rules.md +145 -0
- package/skills/debug-loop/references/swiftui-macos-clunky-ui-debugger.html +823 -0
- package/skills/debugging/assess/SKILL.md +111 -0
- package/skills/debugging/debug-loop/SKILL.md +231 -0
- package/skills/debugging/memory/SKILL.md +147 -0
- package/skills/debugging/store/SKILL.md +153 -0
- package/skills/debugging-memory/SKILL.md +440 -0
- package/skills/debugging-memory/examples/incident-example.json +67 -0
- package/skills/debugging-memory/references/incident-documentation.md +280 -0
- package/skills/debugging-memory/references/ios-notification-alarm-playbook.md +300 -0
- package/skills/debugging-memory/references/pattern-extraction.md +163 -0
- package/skills/debugging-memory/references/subagent-integration.md +312 -0
- package/skills/defenseclaw-bridge/SKILL.md +156 -0
- package/skills/defenseclaw-bridge/references/dc-config-mapping.md +162 -0
- package/skills/defenseclaw-bridge/references/output-format.md +108 -0
- package/skills/handoff/SKILL.md +94 -0
- package/skills/ibr-bridge/SKILL.md +68 -0
- package/skills/knowledge/SKILL.md +127 -0
- package/skills/knowledge/references/recall-integration.md +83 -0
- package/skills/knowledge/templates/madr-minimal.md +56 -0
- package/skills/knowledge-review/SKILL.md +112 -0
- package/skills/logging-tracer/SKILL.md +202 -0
- package/skills/logging-tracer/references/log-analysis.md +128 -0
- package/skills/logging-tracer/references/stack-templates.md +274 -0
- package/skills/logging-tracer-bridge/SKILL.md +70 -0
- package/skills/mcp-builder/SKILL.md +278 -0
- package/skills/mcp-builder/references/mcp-security.md +106 -0
- package/skills/model-tiering/SKILL.md +216 -0
- package/skills/native-ax-driver/SKILL.md +220 -0
- package/skills/native-ax-driver/scripts/layout_fill.py +222 -0
- package/skills/native-ax-driver/scripts/native_driver.py +495 -0
- package/skills/native-ax-driver/swift/bl-ax-driver/Package.swift +20 -0
- package/skills/native-ax-driver/swift/bl-ax-driver/Sources/main.swift +542 -0
- package/skills/optimize/SKILL.md +202 -0
- package/skills/optimize/profiles.md +61 -0
- package/skills/plan-verify/SKILL.md +115 -0
- package/skills/plan-verify/test-fixtures/example-app-v20-findings.json +27 -0
- package/skills/plan-verify/test-fixtures/example-app-v20.md +42 -0
- package/skills/plan-verify/test-fixtures/example-app-v22-findings.json +15 -0
- package/skills/plan-verify/test-fixtures/example-app-v22.md +1608 -0
- package/skills/plan-verify/test-fixtures/unrelated-good-plan-findings.json +15 -0
- package/skills/plan-verify/test-fixtures/unrelated-good-plan.md +55 -0
- package/skills/plugin-builder/SKILL.md +329 -0
- package/skills/plugin-builder/references/authoritative-sources.md +104 -0
- package/skills/plugin-builder/references/build-loop-phase-guidance.md +94 -0
- package/skills/plugin-builder/references/components-guide.md +221 -0
- package/skills/plugin-builder/references/distribution.md +317 -0
- package/skills/plugin-builder/references/dual-host-claude-codex.md +220 -0
- package/skills/plugin-builder/references/hooks-reference.md +210 -0
- package/skills/plugin-builder/references/manifest-schema.md +111 -0
- package/skills/plugin-builder/references/plugin-hygiene-lessons.md +307 -0
- package/skills/plugin-tests/SKILL.md +94 -0
- package/skills/prd-bridge/SKILL.md +135 -0
- package/skills/research/SKILL.md +80 -0
- package/skills/security-methodology/SKILL.md +105 -0
- package/skills/security-methodology/references/cross-source-matrix.md +77 -0
- package/skills/security-methodology/references/mitre-atlas-starter.md +83 -0
- package/skills/security-methodology/references/nist-600-1-mapping.md +119 -0
- package/skills/security-methodology/references/owasp-agentic-top-10.md +157 -0
- package/skills/security-methodology/references/owasp-llm-top-10.md +144 -0
- package/skills/security-methodology/references/owasp-web-top-10.md +65 -0
- package/skills/self-improve/SKILL.md +298 -0
- package/skills/spec-writing/SKILL.md +548 -0
- package/skills/spec-writing/scripts/check_checklist.py +478 -0
- package/skills/sync-skills/SKILL.md +132 -0
- package/skills/telemetry/SKILL.md +66 -0
- package/skills/ui-design/SKILL.md +75 -0
- package/skills/ui-design/references/design-patterns-multi.md +165 -0
- package/skills/ui-design/references/design-preferences-from-owned-apps.md +150 -0
- package/skills/ui-design/references/evidence-capture-policy.md +55 -0
- package/skills/ui-design/references/ui-guidance-sources.md +330 -0
- package/skills/ui-design/references/universal-design-principles.alt.md +182 -0
- package/skills/ui-design/references/universal-design-principles.md +419 -0
- package/templates/memory/MEMORY.md.template +55 -0
- package/templates/memory/constitution.md.template +64 -0
- package/templates/memory/manifest.json +47 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugging-memory
|
|
3
|
+
description: Use when the user asks to "debug this", "fix this bug", "investigate error", "diagnose", "root cause", or reports a crash/exception/failure. Memory-first workflow checks past incidents before investigating.
|
|
4
|
+
version: 1.5.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
9
|
+
|
|
10
|
+
# Debugging Memory Workflow
|
|
11
|
+
|
|
12
|
+
This skill integrates build-loop's native debugging memory into debugging workflows. The core principle: **never solve the same bug twice**.
|
|
13
|
+
|
|
14
|
+
## Memory-First Approach
|
|
15
|
+
|
|
16
|
+
Before investigating any bug, always check build-loop's native debugging memory:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Search `.build-loop/issues/` and invoke `build-loop:debugging-memory-search` with the symptom description.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The search returns a **verdict** with matching incidents and patterns.
|
|
23
|
+
|
|
24
|
+
**Verdict-based decision tree:**
|
|
25
|
+
|
|
26
|
+
1. **KNOWN_FIX**: Apply the documented fix directly only when the strict direct-apply gate (below) passes; otherwise adapt the prior incident as a hypothesis and route to the standard fix flow
|
|
27
|
+
2. **LIKELY_MATCH**: Review the past incident, use it as a starting point — never direct-apply
|
|
28
|
+
3. **WEAK_SIGNAL**: Consider loosely related incidents, but investigate fresh
|
|
29
|
+
4. **NO_MATCH**: Proceed with standard debugging, document the solution afterward
|
|
30
|
+
|
|
31
|
+
## Direct-apply gate (strict)
|
|
32
|
+
|
|
33
|
+
Compressing a failure to a single-line symptom and then applying a historical fix directly can overfit on superficially similar incidents (same error string, different root cause, version, or layer). Direct-apply on a `KNOWN_FIX` is gated behind three independent checks. **All three must hold** or the verdict falls back to "adapted plan, route through the normal fix flow":
|
|
34
|
+
|
|
35
|
+
1. **File match**: at least one of the incident's `files[]` exists at the same path in the current project (suffix match is acceptable — `src/auth/session.ts` matches even if relative vs absolute).
|
|
36
|
+
2. **Version match**: if the incident records a framework/library version (e.g. `next@14`, `prisma@5.8`), the current project's equivalent version must be within the same major (and same minor for libraries with pre-1.0 semver). If no version metadata on the incident, this check defaults to **fail** — no direct-apply.
|
|
37
|
+
3. **Second validation signal**: a non-symptom-string match must also agree. At least one of:
|
|
38
|
+
- An exact stack-frame match (same function name + same file) between current failure and incident
|
|
39
|
+
- A matching error class/type hierarchy (not just the message text)
|
|
40
|
+
- A matching log entry from `read_logs` that ran earlier in the gate
|
|
41
|
+
|
|
42
|
+
If any of the three fails, downgrade to adapted-plan routing and record the downgrade with `direct_apply_blocked_by: "version_mismatch" | "no_file_overlap" | "no_secondary_signal"`.
|
|
43
|
+
|
|
44
|
+
**Why this is strict**: a bad direct-apply mutates the codebase on a lossy match and then Review-F stores the (wrong) outcome back to memory, reinforcing the false association. The cost of occasionally skipping a legitimate direct-apply is small; the cost of one overfit mutation compounding across sessions is large.
|
|
45
|
+
|
|
46
|
+
When `KNOWN_FIX` direct-apply is blocked, the caller should treat the verdict as `LIKELY_MATCH` for routing purposes — load the top incident's detail, adapt the fix to current context, and run it through whatever fix flow the caller normally uses (in build-loop, that's Iterate as an adapted plan).
|
|
47
|
+
|
|
48
|
+
## Progressive Depth Retrieval
|
|
49
|
+
|
|
50
|
+
Results are returned as compact summaries. Drill into matches on demand:
|
|
51
|
+
|
|
52
|
+
1. **Initial search**: Use `build-loop:debugging-memory-search` — returns verdict + compact matches when structured memory exists
|
|
53
|
+
2. **Drill down**: Read the matching `.build-loop/issues/<id>.md` incident note for full context
|
|
54
|
+
3. **Outcome tracking**: Use `build-loop:debugging-store` after verification to record whether the fix worked, failed, or was modified
|
|
55
|
+
|
|
56
|
+
## Visibility
|
|
57
|
+
|
|
58
|
+
When this skill activates, always announce it to the user:
|
|
59
|
+
|
|
60
|
+
1. **Before searching**: Output "Checking debugging memory for similar issues..."
|
|
61
|
+
2. **After search**: Report result briefly:
|
|
62
|
+
- Found match: "Found X matching incident(s) from past debugging sessions"
|
|
63
|
+
- No match: "No matching incidents in debugging memory - starting fresh investigation"
|
|
64
|
+
|
|
65
|
+
This ensures users know the debugger is active and working.
|
|
66
|
+
|
|
67
|
+
## Structured Debugging Process
|
|
68
|
+
|
|
69
|
+
When no past solution applies, follow this systematic approach.
|
|
70
|
+
|
|
71
|
+
### Deep Investigation Mode
|
|
72
|
+
|
|
73
|
+
For non-trivial issues, load the `debug-loop` skill instead of the basic steps below. The trigger is the **verdict category** from memory search, not a numeric confidence score:
|
|
74
|
+
|
|
75
|
+
- **`KNOWN_FIX`** → apply the fix directly, skip the loop
|
|
76
|
+
- **`LIKELY_MATCH`** → enter debug loop (past incidents exist but need verification against current context)
|
|
77
|
+
- **`WEAK_SIGNAL`** → enter debug loop (loosely related, needs fresh investigation)
|
|
78
|
+
- **`NO_MATCH`** → enter debug loop (no prior knowledge, full investigation needed)
|
|
79
|
+
|
|
80
|
+
Also enter the debug loop when:
|
|
81
|
+
- The initial diagnosis feels superficial (treating a symptom as the cause)
|
|
82
|
+
- A previous fix attempt didn't hold — the bug came back
|
|
83
|
+
- The user explicitly asks for root cause analysis or deep investigation
|
|
84
|
+
- Multiple symptoms suggest a shared underlying cause
|
|
85
|
+
|
|
86
|
+
The debug loop provides: causal tree investigation, hypothesis testing, iterative fix-verify-score cycles (up to 5x), fix critique before declaring done, and transparent ✅/⚠️/❓ reporting.
|
|
87
|
+
|
|
88
|
+
### Basic Steps (for simple, clear-cut issues)
|
|
89
|
+
|
|
90
|
+
For straightforward bugs where the cause is immediately apparent, use these steps directly:
|
|
91
|
+
|
|
92
|
+
### 1. Reproduce
|
|
93
|
+
|
|
94
|
+
Establish a reliable reproduction path:
|
|
95
|
+
- Identify exact steps to trigger the bug
|
|
96
|
+
- Note any environmental factors (OS, dependencies, state)
|
|
97
|
+
- Create a minimal reproduction if possible
|
|
98
|
+
|
|
99
|
+
### 2. Isolate
|
|
100
|
+
|
|
101
|
+
Narrow down the problem space:
|
|
102
|
+
- Binary search through recent changes
|
|
103
|
+
- Disable components to find the culprit
|
|
104
|
+
- Check logs and error messages for clues
|
|
105
|
+
|
|
106
|
+
### 3. Diagnose
|
|
107
|
+
|
|
108
|
+
Find the root cause:
|
|
109
|
+
- Trace the execution path
|
|
110
|
+
- Examine state at failure point
|
|
111
|
+
- Identify the specific code causing the issue
|
|
112
|
+
|
|
113
|
+
### 4. Fix
|
|
114
|
+
|
|
115
|
+
Implement the solution:
|
|
116
|
+
- Make minimal, targeted changes
|
|
117
|
+
- Avoid side effects
|
|
118
|
+
- Consider edge cases
|
|
119
|
+
|
|
120
|
+
### 5. Verify
|
|
121
|
+
|
|
122
|
+
Confirm the fix works:
|
|
123
|
+
- Test the original reproduction steps
|
|
124
|
+
- Run related tests
|
|
125
|
+
- Check for regressions
|
|
126
|
+
|
|
127
|
+
## Review-F outcome feedback (closing the memory-first loop)
|
|
128
|
+
|
|
129
|
+
When a build / debugging session completes, close the feedback loop locally. If standalone Coding Debugger supplied cross-project memory for this run, mirror the result there as an optional second step.
|
|
130
|
+
|
|
131
|
+
### Step A — Store resolved incidents (write new knowledge)
|
|
132
|
+
|
|
133
|
+
For each failure resolved during this run, write a native Build Loop incident note:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
mkdir -p .build-loop/issues
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
# <short incident title>
|
|
141
|
+
|
|
142
|
+
## Symptom
|
|
143
|
+
<original failure string>
|
|
144
|
+
|
|
145
|
+
## Root Cause
|
|
146
|
+
<what was wrong>
|
|
147
|
+
|
|
148
|
+
## Fix
|
|
149
|
+
<diff or description>
|
|
150
|
+
|
|
151
|
+
## Verification
|
|
152
|
+
<tests or reproduction checks that passed>
|
|
153
|
+
|
|
154
|
+
## Tags
|
|
155
|
+
build-loop, <project>, <layer>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Use `.build-loop/issues/<stable-slug>.md` as the path. Keep each note concise enough for future local search to surface the symptom, root cause, and verified fix.
|
|
159
|
+
|
|
160
|
+
### Step B — Report outcomes on applied optional memory
|
|
161
|
+
|
|
162
|
+
For each prior gate where standalone Coding Debugger supplied a `KNOWN_FIX` or `LIKELY_MATCH`, report back whether the suggested fix actually worked through that plugin's outcome tool:
|
|
163
|
+
|
|
164
|
+
- `worked`: applied as-is, resolved the criterion on first attempt
|
|
165
|
+
- `modified`: applied the suggested approach but had to adapt substantially (Iterate attempt count > 1 on that criterion)
|
|
166
|
+
- `failed`: applied but criterion still failed; eventually resolved via different fix or not at all
|
|
167
|
+
|
|
168
|
+
This optional training signal belongs to standalone Coding Debugger. Build Loop itself does not register an MCP outcome tool.
|
|
169
|
+
|
|
170
|
+
## Incident Documentation
|
|
171
|
+
|
|
172
|
+
After fixing a bug, store a local `.build-loop/issues/*.md` incident note for future retrieval.
|
|
173
|
+
|
|
174
|
+
The local note should include:
|
|
175
|
+
- **Symptom**: user-facing description of the bug
|
|
176
|
+
- **Root Cause**: technical explanation of why the bug occurred
|
|
177
|
+
- **Fix**: what was done to fix it
|
|
178
|
+
- **Verification**: tests or reproduction checks that passed
|
|
179
|
+
- **Tags**: search keywords for future retrieval
|
|
180
|
+
- **Files Changed**: list of files that were modified
|
|
181
|
+
|
|
182
|
+
### Manual Incident Storage (Alternative)
|
|
183
|
+
|
|
184
|
+
Agents can write incident files directly with the Write tool.
|
|
185
|
+
|
|
186
|
+
**Step 1: Generate incident ID**
|
|
187
|
+
```
|
|
188
|
+
INC_YYYYMMDD_HHMMSS_xxxx
|
|
189
|
+
```
|
|
190
|
+
Where `xxxx` is 4 random alphanumeric characters. Example: `INC_20241231_143052_a7b2`
|
|
191
|
+
|
|
192
|
+
**Step 2: Write JSON file**
|
|
193
|
+
```bash
|
|
194
|
+
.build-loop/issues/INC_20241231_143052_a7b2.md
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Minimal incident structure:**
|
|
198
|
+
```markdown
|
|
199
|
+
# INC_20241231_143052_a7b2
|
|
200
|
+
|
|
201
|
+
## Symptom
|
|
202
|
+
User-facing description of the bug.
|
|
203
|
+
|
|
204
|
+
## Root Cause
|
|
205
|
+
Technical explanation of why the bug occurred.
|
|
206
|
+
|
|
207
|
+
## Fix
|
|
208
|
+
What was done to fix it.
|
|
209
|
+
|
|
210
|
+
## Verification
|
|
211
|
+
- Reproduction now passes
|
|
212
|
+
- Related regression tests pass
|
|
213
|
+
|
|
214
|
+
## Files Changed
|
|
215
|
+
- path/to/file.ts
|
|
216
|
+
|
|
217
|
+
## Tags
|
|
218
|
+
relevant, keywords, search
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Step 3: Ensure directory exists**
|
|
222
|
+
Before writing, create the directory if needed:
|
|
223
|
+
```bash
|
|
224
|
+
mkdir -p .build-loop/issues
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Quality Indicators
|
|
228
|
+
|
|
229
|
+
The memory system scores incidents on:
|
|
230
|
+
- Root cause analysis depth (30%)
|
|
231
|
+
- Fix documentation completeness (30%)
|
|
232
|
+
- Verification status (20%)
|
|
233
|
+
- Tags and metadata (20%)
|
|
234
|
+
|
|
235
|
+
Target 75%+ quality score for effective future retrieval.
|
|
236
|
+
|
|
237
|
+
### Tagging Strategy
|
|
238
|
+
|
|
239
|
+
Apply descriptive tags for better searchability:
|
|
240
|
+
- Technology: `react`, `typescript`, `api`, `database`
|
|
241
|
+
- Category: `logic`, `config`, `dependency`, `performance`
|
|
242
|
+
- Symptom type: `crash`, `render`, `timeout`, `validation`
|
|
243
|
+
|
|
244
|
+
## Using Past Solutions
|
|
245
|
+
|
|
246
|
+
When the memory system finds a match:
|
|
247
|
+
|
|
248
|
+
1. **Review the past incident** - Understand the original context
|
|
249
|
+
2. **Assess applicability** - Consider differences in current situation
|
|
250
|
+
3. **Adapt the fix** - Modify as needed for current codebase
|
|
251
|
+
4. **Verify thoroughly** - The same symptom may have different causes
|
|
252
|
+
|
|
253
|
+
## Pattern Recognition
|
|
254
|
+
|
|
255
|
+
The memory system automatically extracts patterns when 3+ similar incidents exist. Patterns represent reusable solutions with higher reliability than individual incidents.
|
|
256
|
+
|
|
257
|
+
When a pattern matches:
|
|
258
|
+
- Trust the solution template (90%+ confidence)
|
|
259
|
+
- Apply the recommended approach
|
|
260
|
+
- Note any caveats mentioned
|
|
261
|
+
|
|
262
|
+
## Extended capability — global-scope memory + cross-domain assessors
|
|
263
|
+
|
|
264
|
+
If project-local memory misses but cross-project memory might have a hit, re-call this skill with broader scope, or escalate to the assess skill for additional domain assessor coverage:
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
Skill("build-loop:debugging-memory") with input { symptom, scope: "global", calledBy: "debugging-memory" }
|
|
268
|
+
Skill("build-loop:debugging-assess") with input { symptom, scope: "global" }
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Both are native build-loop skills. They search local `.build-loop/issues/` first and may use standalone Coding Debugger only when that plugin is installed and the caller explicitly requests cross-project memory.
|
|
272
|
+
|
|
273
|
+
Use this for:
|
|
274
|
+
- A `NO_MATCH` from project memory where cross-project history might still have a relevant incident
|
|
275
|
+
- An ambiguous verdict where additional assessor input would change the routing decision
|
|
276
|
+
- Coordination state that lives outside the current project and was explicitly requested
|
|
277
|
+
|
|
278
|
+
Do NOT use this for: every memory call (it's escalation, not primary path), or when project memory already returned `KNOWN_FIX` (bundled is enough).
|
|
279
|
+
|
|
280
|
+
## Native Memory Quick Reference
|
|
281
|
+
|
|
282
|
+
| Surface | Purpose |
|
|
283
|
+
|------|---------|
|
|
284
|
+
| `build-loop:debugging-memory-search` | Search memory for similar bugs (returns verdict when available) |
|
|
285
|
+
| `build-loop:debugging-store` | Store a new debugging incident |
|
|
286
|
+
| `.build-loop/issues/<id>.md` | Full incident or pattern detail |
|
|
287
|
+
| `.build-loop/issues/` | Recent incidents and local memory corpus |
|
|
288
|
+
| `build-loop:debugging-assess` | Parallel domain assessment |
|
|
289
|
+
|
|
290
|
+
## Parallel Domain Assessment
|
|
291
|
+
|
|
292
|
+
For complex issues that may span multiple areas (database, frontend, API, performance), use parallel assessment to diagnose all domains simultaneously.
|
|
293
|
+
|
|
294
|
+
### When to Use Parallel Assessment
|
|
295
|
+
|
|
296
|
+
- Symptom is vague or unclear ("app broken", "something wrong")
|
|
297
|
+
- Multiple domains may be involved ("search is slow and returns wrong results")
|
|
298
|
+
- Post-deploy regression with unknown scope
|
|
299
|
+
- Complex issues affecting multiple layers
|
|
300
|
+
|
|
301
|
+
### Domain Assessors
|
|
302
|
+
|
|
303
|
+
Four specialized assessor agents are available:
|
|
304
|
+
|
|
305
|
+
| Assessor | Expertise |
|
|
306
|
+
|----------|-----------|
|
|
307
|
+
| `database-assessor` | Prisma, PostgreSQL, queries, migrations, connection issues |
|
|
308
|
+
| `frontend-assessor` | React, hooks, rendering, state, hydration, SSR |
|
|
309
|
+
| `api-assessor` | Endpoints, REST/GraphQL, auth, middleware, CORS |
|
|
310
|
+
| `performance-assessor` | Latency, memory, CPU, bottlenecks, optimization |
|
|
311
|
+
|
|
312
|
+
### Parallel Execution
|
|
313
|
+
|
|
314
|
+
Launch assessors **in parallel** using the Task tool:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
For: "search is slow and returns wrong results"
|
|
318
|
+
|
|
319
|
+
Launch simultaneously:
|
|
320
|
+
- database-assessor (query performance)
|
|
321
|
+
- api-assessor (endpoint correctness)
|
|
322
|
+
- performance-assessor (latency analysis)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Each assessor returns a JSON assessment with:
|
|
326
|
+
- `confidence`: 0-1 score
|
|
327
|
+
- `probable_causes`: List of likely issues
|
|
328
|
+
- `recommended_actions`: Steps to fix
|
|
329
|
+
- `related_incidents`: Past memory matches
|
|
330
|
+
|
|
331
|
+
### Domain Detection Keywords
|
|
332
|
+
|
|
333
|
+
| Domain | Trigger Keywords |
|
|
334
|
+
|--------|-----------------|
|
|
335
|
+
| Database | query, schema, migration, prisma, sql, connection, constraint, index |
|
|
336
|
+
| Frontend | react, hook, useEffect, render, component, state, hydration, browser |
|
|
337
|
+
| API | endpoint, route, request, response, auth, 500, 404, cors, middleware |
|
|
338
|
+
| Performance | slow, latency, timeout, memory, leak, cpu, bottleneck, optimization |
|
|
339
|
+
|
|
340
|
+
### Result Aggregation
|
|
341
|
+
|
|
342
|
+
After parallel assessments complete:
|
|
343
|
+
1. Rank by confidence score (highest first)
|
|
344
|
+
2. Consider evidence count (more related incidents = higher priority)
|
|
345
|
+
3. Generate priority ranking of recommended actions
|
|
346
|
+
4. Present unified diagnosis with action sequence
|
|
347
|
+
|
|
348
|
+
## Trace Integration
|
|
349
|
+
|
|
350
|
+
The debugger can ingest traces from multiple sources to aid diagnosis:
|
|
351
|
+
|
|
352
|
+
### Supported Trace Sources
|
|
353
|
+
|
|
354
|
+
- **OpenTelemetry (OTLP)**: Distributed tracing spans
|
|
355
|
+
- **Sentry**: Error events and breadcrumbs
|
|
356
|
+
- **Langchain/LangSmith**: LLM operation traces
|
|
357
|
+
- **Browser**: Chrome DevTools, Playwright, console logs
|
|
358
|
+
|
|
359
|
+
### Using Traces for Debugging
|
|
360
|
+
|
|
361
|
+
When traces are available:
|
|
362
|
+
1. Correlate error traces with symptoms
|
|
363
|
+
2. Review performance spans for latency issues
|
|
364
|
+
3. Check LLM traces for AI-related bugs
|
|
365
|
+
4. Examine browser console for frontend errors
|
|
366
|
+
|
|
367
|
+
Traces are summarized to minimize token usage while preserving key diagnostic information.
|
|
368
|
+
|
|
369
|
+
## Token-Efficient Retrieval
|
|
370
|
+
|
|
371
|
+
The memory system uses tiered retrieval to minimize context size:
|
|
372
|
+
|
|
373
|
+
### Retrieval Tiers
|
|
374
|
+
|
|
375
|
+
| Tier | Token Usage | Content |
|
|
376
|
+
|------|-------------|---------|
|
|
377
|
+
| Summary | ~100 tokens | ID, symptom preview, category |
|
|
378
|
+
| Compact | ~200 tokens | Short keys, essential fields |
|
|
379
|
+
| Full | ~550 tokens | Complete incident details |
|
|
380
|
+
|
|
381
|
+
### Automatic Token Budgeting
|
|
382
|
+
|
|
383
|
+
Default budget: 2500 tokens
|
|
384
|
+
- Patterns: 30% (750 tokens)
|
|
385
|
+
- Incidents: 60% (1500 tokens)
|
|
386
|
+
- Metadata: 10% (250 tokens)
|
|
387
|
+
|
|
388
|
+
The system automatically selects the appropriate tier based on available budget.
|
|
389
|
+
|
|
390
|
+
## Subagent Integration
|
|
391
|
+
|
|
392
|
+
When debugging involves subagents (your own or from other plugins), follow these guidelines to ensure debugging memory is utilized.
|
|
393
|
+
|
|
394
|
+
### Automatic Behavior
|
|
395
|
+
|
|
396
|
+
**Before spawning debugging-related subagents:**
|
|
397
|
+
1. Search debugging memory first using `build-loop:debugging-memory-search`
|
|
398
|
+
2. Pass relevant context to the subagent in its prompt
|
|
399
|
+
3. Include any matching incidents or patterns found
|
|
400
|
+
|
|
401
|
+
**Example subagent prompt with debugging context:**
|
|
402
|
+
```
|
|
403
|
+
Investigate the database timeout issue.
|
|
404
|
+
|
|
405
|
+
DEBUGGING MEMORY CONTEXT:
|
|
406
|
+
- Found 2 similar incidents: INC_20241215_db_timeout, INC_20241201_pool_exhaust
|
|
407
|
+
- Pattern PTN_connection_pool suggests checking pool size and idle timeout
|
|
408
|
+
- Previous fix: Increased pool size from 10 to 25 in DATABASE_URL
|
|
409
|
+
|
|
410
|
+
Start your investigation considering this prior knowledge.
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### When Subagents Cannot Access Debugging Memory
|
|
414
|
+
|
|
415
|
+
**Inform the user** when debugging memory cannot be used with subagents:
|
|
416
|
+
|
|
417
|
+
1. **External MCP tools**: "Note: The debugging subagent is using external MCP tools that cannot access local debugging memory. I searched memory beforehand and found [X matching incidents / no matches]."
|
|
418
|
+
|
|
419
|
+
2. **Third-party agents**: "Note: This third-party debugging agent doesn't have access to your project's debugging memory. Consider searching debugging memory first to check for similar past issues."
|
|
420
|
+
|
|
421
|
+
3. **Sandboxed environments**: "Note: The subagent runs in a sandboxed environment without access to debugging memory. I've pre-loaded relevant context from [X] matching incidents."
|
|
422
|
+
|
|
423
|
+
### Coordinating Multiple Debugging Subagents
|
|
424
|
+
|
|
425
|
+
When using parallel assessment or multiple debugging subagents:
|
|
426
|
+
|
|
427
|
+
1. **Pre-query memory once** using `build-loop:debugging-memory-search` before spawning agents
|
|
428
|
+
2. **Distribute context** - each agent gets relevant subset
|
|
429
|
+
3. **Aggregate findings** - collect new insights from all agents
|
|
430
|
+
4. **Store unified incident** - write a native `.build-loop/issues/*.md` note to document the combined diagnosis
|
|
431
|
+
|
|
432
|
+
## Best Practices
|
|
433
|
+
|
|
434
|
+
1. **Always check memory first** - Search local `.build-loop/issues/` before investigating any bug
|
|
435
|
+
2. **Document every fix** - Write a `.build-loop/issues/*.md` note after resolving bugs
|
|
436
|
+
3. **Use descriptive symptoms** - Better matching requires good descriptions
|
|
437
|
+
4. **Include verification status** - Helps prioritize trusted solutions
|
|
438
|
+
5. **Record outcomes** - Use standalone Coding Debugger outcomes only when that optional plugin supplied the prior incident
|
|
439
|
+
6. **Pass context to subagents** - Don't let debugging knowledge stay siloed
|
|
440
|
+
7. **Inform users of limitations** - Be transparent when memory can't be accessed
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"incident_id": "INC_20241225_143052_abc1",
|
|
3
|
+
"timestamp": 1735135852000,
|
|
4
|
+
"session_id": "SESSION_1735135800000_xyz",
|
|
5
|
+
|
|
6
|
+
"symptom": "Search results not displaying after typing in the search box. The input field accepts keystrokes but the results list remains empty.",
|
|
7
|
+
"symptom_type": "ui",
|
|
8
|
+
|
|
9
|
+
"root_cause": {
|
|
10
|
+
"description": "The debounce hook was resetting the search query on every keystroke because the dependency array included a reference-unstable callback. Each render created a new callback reference, triggering the debounce reset. This caused the debounced value to never settle, so the API call was never made.",
|
|
11
|
+
"file": "src/hooks/useDebounce.ts",
|
|
12
|
+
"line_range": [15, 28],
|
|
13
|
+
"code_snippet": "const debouncedValue = useMemo(() => {\n const handler = setTimeout(() => setValue(value), delay);\n return () => clearTimeout(handler);\n}, [value, callback]); // callback was unstable",
|
|
14
|
+
"category": "react-hooks",
|
|
15
|
+
"confidence": 0.95
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
"fix": {
|
|
19
|
+
"approach": "Wrapped the search callback in useCallback with appropriate dependencies to stabilize the reference. Updated the debounce hook to only depend on the memoized callback. This allowed the debounce timer to complete and trigger the API call.",
|
|
20
|
+
"changes": [
|
|
21
|
+
{
|
|
22
|
+
"file": "src/hooks/useDebounce.ts",
|
|
23
|
+
"lines_changed": 8,
|
|
24
|
+
"change_type": "modify",
|
|
25
|
+
"summary": "Removed callback from dependency array, added internal memoization"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"file": "src/components/SearchBar.tsx",
|
|
29
|
+
"lines_changed": 5,
|
|
30
|
+
"change_type": "modify",
|
|
31
|
+
"summary": "Wrapped onSearch handler in useCallback with stable dependencies"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"pattern_used": null,
|
|
35
|
+
"time_to_fix": 25
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
"verification": {
|
|
39
|
+
"status": "verified",
|
|
40
|
+
"regression_tests_passed": true,
|
|
41
|
+
"user_journey_tested": true,
|
|
42
|
+
"tests_run": ["search.test.ts", "useDebounce.test.ts"],
|
|
43
|
+
"success_criteria_met": true
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
"tags": ["react", "hooks", "useMemo", "useCallback", "debounce", "search", "ui"],
|
|
47
|
+
"files_changed": ["src/hooks/useDebounce.ts", "src/components/SearchBar.tsx"],
|
|
48
|
+
"agent_used": "coder",
|
|
49
|
+
|
|
50
|
+
"quality_gates": {
|
|
51
|
+
"guardian_validated": true,
|
|
52
|
+
"tested_e2e": false,
|
|
53
|
+
"tested_from_ui": true,
|
|
54
|
+
"security_reviewed": false,
|
|
55
|
+
"architect_reviewed": false
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
"completeness": {
|
|
59
|
+
"symptom": true,
|
|
60
|
+
"root_cause": true,
|
|
61
|
+
"fix": true,
|
|
62
|
+
"verification": true,
|
|
63
|
+
"quality_score": 0.85
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
"quality_score": 0.85
|
|
67
|
+
}
|