@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,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-registry-bridge
|
|
3
|
+
description: Use when Phase 1 Assess or Phase 5 Iterate detects a new API dependency, API config fails, or the user asks to "register this API" or "check the API registry". Consults api-registry plugin; degrades gracefully if plugin is absent.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
8
|
+
|
|
9
|
+
# api-registry-bridge (inside build-loop)
|
|
10
|
+
|
|
11
|
+
## Activation
|
|
12
|
+
|
|
13
|
+
- **Assess phase:** new API detected in dep diff (new package added to `package.json` / `requirements.txt`) or new vendor-prefixed env key in `.env.example`. Also runs unconditionally as a cheap doc-freshness check (see §"Phase 1 doc-freshness check").
|
|
14
|
+
- **Iterate phase:** API config attempt fails with 401/403/404/timeout/auth error.
|
|
15
|
+
|
|
16
|
+
## Contract
|
|
17
|
+
|
|
18
|
+
1. Check `~/.api-registry/registry.db` exists.
|
|
19
|
+
- If **not**: log `api-registry not present — skipping source verification` and continue build-loop flow. No failure.
|
|
20
|
+
|
|
21
|
+
2. Extract service name from failure message or dep diff.
|
|
22
|
+
|
|
23
|
+
3. Invoke `/api-registry:lookup <name>`.
|
|
24
|
+
- If `found: true` and `deprecated_notes` present: HALT iteration; surface the warning to the user BEFORE retry.
|
|
25
|
+
- If `stale_warning: true`: suggest `/api-registry:refresh <name>` but don't block.
|
|
26
|
+
- If `cooldown.install_blocked: true`: see §"New-dependency cooldown".
|
|
27
|
+
|
|
28
|
+
4. If config question remains, invoke `/api-registry:docs <name> <specific config question>`.
|
|
29
|
+
- api-registry answers from its local doc cache first; Context7 is the fallback path only.
|
|
30
|
+
|
|
31
|
+
5. If lookup returns `found: false`: prompt user once per build-loop run to add the service. Don't re-prompt on every iteration.
|
|
32
|
+
|
|
33
|
+
## Phase 1 doc-freshness check
|
|
34
|
+
|
|
35
|
+
At the start of Phase 1 Assess, after the registry-present check:
|
|
36
|
+
|
|
37
|
+
1. Read `~/.api-registry/staleness.json` (written by api-registry's SessionStart hook / `staleness.ts --marker`).
|
|
38
|
+
- Absent or unreadable → skip silently.
|
|
39
|
+
2. If any `stale[]` entry names a service relevant to this build (its package appears in the dep manifest, or it is a `protocol`-category source and the build touches MCP), the doc is stale (`last_checked` > 7 days).
|
|
40
|
+
3. **Refresh stale docs in-session before planning**: for each relevant stale doc, invoke `/api-registry:docs <service> <topic>` so the cache is re-verified/re-curated before the plan is drafted. This keeps Phase 2 planning grounded in current docs, not a stale cache.
|
|
41
|
+
4. This is advisory — never blocks the build. Log what was refreshed; route the summary to the run report.
|
|
42
|
+
|
|
43
|
+
## New-dependency cooldown
|
|
44
|
+
|
|
45
|
+
When Assess detects a newly added third-party package:
|
|
46
|
+
|
|
47
|
+
1. `/api-registry:lookup <name>` returns a `cooldown` block.
|
|
48
|
+
2. If `cooldown.install_blocked: true` (latest version released < 7 days ago, service not `author_owned`):
|
|
49
|
+
- Surface the `cooldown.reason` to the user.
|
|
50
|
+
- The `pre_bash_dependency_cooldown.sh` PreToolUse hook is the enforcement point — it already rewrites/denies fresh installs at the Bash boundary. The registry verdict is the *advisory* signal that explains *why* a hook rewrite happened; it does not replace the hook.
|
|
51
|
+
- `author_owned: true` services (`@tyroneross/*` scope + the user's own projects) are exempt — `cooldown.install_blocked` is always `false` for them, matching the hook's allowlist.
|
|
52
|
+
3. The 7-day registry cooldown window and the hook's 7-day install cooldown are deliberately the same number (supply-chain dwell time). If they ever diverge, the hook is authoritative for *enforcement*; the registry is authoritative for *explanation*.
|
|
53
|
+
|
|
54
|
+
## What this does NOT do
|
|
55
|
+
|
|
56
|
+
- Does not modify the registry (except via `/api-registry:docs`, which re-curates the cache by design — that is the cache staying fresh, not the bridge mutating registry metadata).
|
|
57
|
+
- Does not block the build if api-registry is absent.
|
|
58
|
+
- Does not fabricate URLs.
|
|
59
|
+
- Does not duplicate the cooldown *enforcement* — that is `pre_bash_dependency_cooldown.sh`'s job.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-loop:architecture-dead
|
|
3
|
+
description: Use when the user asks to "find dead code", "scan for orphaned components", or "clean up unused files", or during Phase 4 Review before a release. Scans for unreachable components and dead code; build-loop's native scan from NavGator's CLI.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
source: NavGator/commands/dead.md
|
|
7
|
+
source_hash: e01c7f0e3c71a2a5c695c1d0ea9d3506672e6032cd58078f8f5b7b49b7b1a75d
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
11
|
+
|
|
12
|
+
# Dead-Code / Orphan Scan
|
|
13
|
+
|
|
14
|
+
Detect orphaned components — those NavGator tracks but with zero incoming AND zero outgoing connections. Use the `mcp__plugin_navgator__dead` MCP tool (or `navgator dead` CLI).
|
|
15
|
+
|
|
16
|
+
> **Divergence note**: NavGator has no discrete SKILL.md for dead-code analysis. The canonical wrapper is `commands/dead.md`. This skill encodes the same workflow.
|
|
17
|
+
|
|
18
|
+
## When to Activate
|
|
19
|
+
|
|
20
|
+
- Phase 4 Review-F Report: orphan scan after build completes — diff against the Phase 1 Assess baseline to surface NEW orphans introduced this build
|
|
21
|
+
- User asks "find dead code", "any orphaned components", "what's unused"
|
|
22
|
+
|
|
23
|
+
## Pre-flight
|
|
24
|
+
|
|
25
|
+
1. If `.navgator/architecture/index.json` does not exist → no-op with `NavGator: no architecture snapshot found — skipping dead-code scan`.
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
1. Run `mcp__plugin_navgator__dead` (or `navgator dead`)
|
|
30
|
+
2. Group findings by type: unused packages, unused DB models, unused queues, unused infra, unused services
|
|
31
|
+
3. For significant findings (unused infra like Heroku/Render configs, unused queues), investigate whether they should be removed
|
|
32
|
+
4. Suggest cleanup actions for clearly dead components
|
|
33
|
+
|
|
34
|
+
## What Counts as Dead
|
|
35
|
+
|
|
36
|
+
- Components detected by NavGator with zero incoming AND zero outgoing connections
|
|
37
|
+
- Only meaningful types are checked (packages, queues, services, infra, database models)
|
|
38
|
+
- Internal code files are NOT flagged (too many to be useful)
|
|
39
|
+
|
|
40
|
+
## Diff Against Baseline
|
|
41
|
+
|
|
42
|
+
If `.build-loop/state.json.architecture.dead.baseline` exists from Phase 1 Assess:
|
|
43
|
+
- Compute `new_orphans = current - baseline`
|
|
44
|
+
- Surface only the new ones in Review-F (existing orphans are pre-existing tech debt, not this build's regression)
|
|
45
|
+
|
|
46
|
+
## Output
|
|
47
|
+
|
|
48
|
+
Write to `.build-loop/state.json.architecture.dead` with `{total_orphans, new_orphans[], by_type{}}`.
|
|
49
|
+
|
|
50
|
+
## Sibling Skills
|
|
51
|
+
|
|
52
|
+
- `build-loop:architecture-scan` — refresh data first
|
|
53
|
+
- `build-loop:architecture-rules` — broader violation check (orphan is one warning category there)
|
|
54
|
+
- `build-loop:architecture-review` — full integrity review
|
|
55
|
+
|
|
56
|
+
*Source: NavGator `commands/dead.md`. The canonical implementation is the CLI / MCP tool. Drift-checked by `build-loop:sync-skills`.*
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-loop:architecture-impact
|
|
3
|
+
description: Use when Phase 1 Assess evaluates top-risk components, Phase 5 Iterate precedes a cross-layer fix, or the user asks "what does changing X break". Blast-radius analysis tracing upstream/downstream dependencies for a component or file before refactor.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
source: NavGator/skills/impact-analysis/SKILL.md
|
|
7
|
+
source_hash: e1eab41fae52db57fd80c996fec0d2480703e4ac407f5cf8e81edb882511a413
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
11
|
+
|
|
12
|
+
# Impact Analysis & Connections
|
|
13
|
+
|
|
14
|
+
Analyze what's affected by a change and map component connections using the NavGator MCP tools (`mcp__plugin_navgator__impact`, `mcp__plugin_navgator__connections`, `mcp__plugin_navgator__trace`). Native to build-loop — content adapted from `NavGator/skills/impact-analysis/SKILL.md`. If NavGator is not installed, no-op with a one-line note.
|
|
15
|
+
|
|
16
|
+
## When to Activate
|
|
17
|
+
|
|
18
|
+
- Phase 1 Assess: after `build-loop:architecture-scan`, run impact on the top 5 highest-risk components and write a compact summary into `.build-loop/state.json.architecture.impact`
|
|
19
|
+
- Phase 5 Iterate: BEFORE any escalation, run impact on the affected component to confirm whether the failing fix is cross-layer
|
|
20
|
+
- User asks what's affected by changing a component or file
|
|
21
|
+
- Before major changes to shared components
|
|
22
|
+
|
|
23
|
+
## Pre-flight
|
|
24
|
+
|
|
25
|
+
1. If `.navgator/architecture/index.json` does not exist → no-op with `NavGator: no architecture snapshot found — skipping impact analysis`. Recommend `build-loop:architecture-scan` first.
|
|
26
|
+
|
|
27
|
+
## Impact Analysis
|
|
28
|
+
|
|
29
|
+
Use `mcp__plugin_navgator__impact` with the component name to analyze blast radius.
|
|
30
|
+
|
|
31
|
+
**Input:** Component name (e.g., "express", "prisma", "/api/users")
|
|
32
|
+
|
|
33
|
+
**Returns:**
|
|
34
|
+
- Component's name, type, and layer
|
|
35
|
+
- **Incoming connections**: components/files that USE this component (may need changes)
|
|
36
|
+
- **Outgoing connections**: components this one depends on
|
|
37
|
+
- Severity assessment (critical/high/medium/low based on dependent count)
|
|
38
|
+
- Specific file paths and line numbers for each connection
|
|
39
|
+
|
|
40
|
+
### File-Based Impact
|
|
41
|
+
|
|
42
|
+
If the user provides a file path instead of a component name:
|
|
43
|
+
1. The tool resolves the file to its parent component automatically via file map lookup
|
|
44
|
+
2. If no component found, suggest running `build-loop:architecture-scan` to refresh data
|
|
45
|
+
|
|
46
|
+
## Connection Mapping
|
|
47
|
+
|
|
48
|
+
Use `mcp__plugin_navgator__connections` to show all connections for a component.
|
|
49
|
+
|
|
50
|
+
**Input:** Component name (required), direction (optional: "in", "out", or "both")
|
|
51
|
+
|
|
52
|
+
**Returns:**
|
|
53
|
+
- All incoming connections (what connects TO this component)
|
|
54
|
+
- All outgoing connections (what this component connects TO)
|
|
55
|
+
- File paths and line numbers for each connection
|
|
56
|
+
|
|
57
|
+
## Dataflow Tracing
|
|
58
|
+
|
|
59
|
+
For deeper data-flow analysis, defer to sibling skill `build-loop:architecture-trace` — same MCP tool family, focused on input→output pipelines.
|
|
60
|
+
|
|
61
|
+
## Decision Tree
|
|
62
|
+
|
|
63
|
+
| User Intent | MCP Tool | Notes |
|
|
64
|
+
|-------------|----------|-------|
|
|
65
|
+
| "What breaks if I change X?" | `mcp__plugin_navgator__impact` | Full blast radius |
|
|
66
|
+
| "Show connections for X" | `mcp__plugin_navgator__connections` | All connections |
|
|
67
|
+
| "What depends on X?" | `mcp__plugin_navgator__connections` (direction: "in") | Incoming only |
|
|
68
|
+
| "What does X use?" | `mcp__plugin_navgator__connections` (direction: "out") | Outgoing only |
|
|
69
|
+
| "Is it safe to modify X?" | `mcp__plugin_navgator__impact` | Check severity |
|
|
70
|
+
|
|
71
|
+
## After Analysis
|
|
72
|
+
|
|
73
|
+
Present results clearly:
|
|
74
|
+
1. Severity level and summary
|
|
75
|
+
2. Direct dependents (most important to review)
|
|
76
|
+
3. Transitive dependents (may be affected)
|
|
77
|
+
4. Recommendation: which files to review before making changes
|
|
78
|
+
|
|
79
|
+
Write summary into `.build-loop/state.json.architecture.impact[<component>]` with fields `{severity, direct_count, transitive_count, layers_crossed}`.
|
|
80
|
+
|
|
81
|
+
## Sibling Skills
|
|
82
|
+
|
|
83
|
+
- `build-loop:architecture-scan` — refresh data first
|
|
84
|
+
- `build-loop:architecture-trace` — pipeline trace
|
|
85
|
+
- `build-loop:architecture-rules` — violation check after change
|
|
86
|
+
- `build-loop:architecture-review` — full integrity review
|
|
87
|
+
|
|
88
|
+
*Source: copied verbatim from NavGator and rewritten for build-loop. Drift-checked by `build-loop:sync-skills`.*
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-loop:architecture-review
|
|
3
|
+
description: Use when Phase 4 Review covers a build that crosses 2+ layers, or the user asks for an "architectural review" or "full integrity check". Covers system flow, component connections, documentation drift, and lessons; heavy-weight, native copy from NavGator.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
source: NavGator/skills/code-review/SKILL.md
|
|
7
|
+
source_hash: 61d49f3329da9dbf059fe54b24b3fe6537050c2d159fcac8d00fadb292dd5d4c
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
11
|
+
|
|
12
|
+
# Architectural Integrity Review
|
|
13
|
+
|
|
14
|
+
Orchestrates impact analysis, data-flow tracing, the rules engine, and the lessons system into a 5-phase architectural review. Native to build-loop — content adapted from `NavGator/skills/code-review/SKILL.md`. This skill is an architectural integrity reviewer — not a linter, not a bug hunter.
|
|
15
|
+
|
|
16
|
+
## What This Skill IS vs. IS NOT
|
|
17
|
+
|
|
18
|
+
**IS:**
|
|
19
|
+
- System flow — how data moves from user input through the system to output
|
|
20
|
+
- Component communication — APIs, data formats, connection patterns between layers
|
|
21
|
+
- API contract validation — interface changes and whether consumers are updated
|
|
22
|
+
- LLM architecture — provider routing, prompt patterns, model selection logic
|
|
23
|
+
- Documentation drift — whether docs reflect what the code actually does
|
|
24
|
+
- Lessons learned — patterns that caused issues, tracked and matched over time
|
|
25
|
+
- Freshness validation — periodic research to avoid stale architectural knowledge
|
|
26
|
+
|
|
27
|
+
**IS NOT:**
|
|
28
|
+
- Code linter or style checker
|
|
29
|
+
- Individual function bug hunter — local logic errors, off-by-one mistakes
|
|
30
|
+
- Security vulnerability scanner — use `security-reviewer` agent or dedicated tools
|
|
31
|
+
- Test coverage auditor
|
|
32
|
+
- TypeScript type error detector — the compiler handles that
|
|
33
|
+
- Performance optimizer — out of scope
|
|
34
|
+
|
|
35
|
+
## When to Activate
|
|
36
|
+
|
|
37
|
+
- Build-orchestrator Phase 4 Review when the build touches 2+ layers (cross-layer change)
|
|
38
|
+
- User asks "review architecture", "is this safe to merge", "what did I break"
|
|
39
|
+
- After a large refactor
|
|
40
|
+
|
|
41
|
+
## Scope Resolution
|
|
42
|
+
|
|
43
|
+
| Invocation | Scope |
|
|
44
|
+
|------------|-------|
|
|
45
|
+
| Default (no flags) | `git diff origin/main..HEAD` — changed files since branch diverged |
|
|
46
|
+
| `--all` | Full architecture review across all components |
|
|
47
|
+
| `<component>` | Focused review on one component and its direct connections |
|
|
48
|
+
| `--validate` | Run Phase 5 freshness validation regardless of age |
|
|
49
|
+
| `learn "..."` | Record a manual lesson, skip full review |
|
|
50
|
+
|
|
51
|
+
When scope is ambiguous, default to `git diff origin/main..HEAD`. If the branch has no divergence from main, ask the user what to review.
|
|
52
|
+
|
|
53
|
+
## Prerequisites
|
|
54
|
+
|
|
55
|
+
1. `.navgator/architecture/index.json` must exist. If not, run `build-loop:architecture-scan` first.
|
|
56
|
+
2. If `generated_at` is >24 hours old, warn before proceeding.
|
|
57
|
+
3. Load `.navgator/architecture/file_map.json` for file-to-component resolution.
|
|
58
|
+
4. Load `.navgator/architecture/graph.json` for connection traversal.
|
|
59
|
+
5. If `.navgator/lessons/lessons.json` is missing, create:
|
|
60
|
+
```json
|
|
61
|
+
{ "schema_version": "1.0.0", "lessons": [] }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Do not proceed without architecture data. Stale data is worse than pausing.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Phase 1 — Structural Changes
|
|
69
|
+
|
|
70
|
+
**Goal:** Identify which components and layers were touched.
|
|
71
|
+
|
|
72
|
+
1. Run `git diff [scope] --stat` to get changed files
|
|
73
|
+
2. For each changed file, look it up in `file_map.json` → parent component ID
|
|
74
|
+
3. Look up component ID in `index.json` → type and layer
|
|
75
|
+
4. Classify each change: new component / modified connection / config change / documentation
|
|
76
|
+
5. Identify which layers were touched: frontend, backend, database, infra, external
|
|
77
|
+
6. Flag any cross-layer change as **higher risk**
|
|
78
|
+
7. Note any new files that don't resolve to any tracked component
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
PHASE 1: STRUCTURAL CHANGES
|
|
82
|
+
N components touched across N layers
|
|
83
|
+
Cross-layer: [ComponentA (frontend→backend), ComponentB (backend→database)]
|
|
84
|
+
New components: [unconnected — needs scan to track]
|
|
85
|
+
Layers: frontend(N) | backend(N) | database(N) | infra(N)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Phase 2 — Connection & Flow Integrity
|
|
91
|
+
|
|
92
|
+
**Goal:** Verify connections valid, data flows intact.
|
|
93
|
+
|
|
94
|
+
For each component from Phase 1:
|
|
95
|
+
|
|
96
|
+
1. Call `build-loop:architecture-impact` (uses `mcp__plugin_navgator__impact`)
|
|
97
|
+
2. Call `build-loop:architecture-trace` direction=both
|
|
98
|
+
3. Call `mcp__plugin_navgator__connections` direction=both
|
|
99
|
+
|
|
100
|
+
| Issue | Severity | Detection |
|
|
101
|
+
|-------|----------|-----------|
|
|
102
|
+
| Orphaned component | Important | New component with 0 incoming AND 0 outgoing connections |
|
|
103
|
+
| Broken reference | Critical | Connection points to a component not in `graph.json` |
|
|
104
|
+
| Layer violation | Critical | Frontend connects directly to database, bypassing backend |
|
|
105
|
+
| High fan-out | Important | Component has >8 outgoing dependencies |
|
|
106
|
+
| Import cycle | Critical | Component A → B → A |
|
|
107
|
+
| API contract mismatch | Critical | Interface changed, consumers not updated |
|
|
108
|
+
| Self-referencing connection | Important | Component listed as its own dependency |
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
PHASE 2: CONNECTION INTEGRITY
|
|
112
|
+
Rules: N violations (N critical, N important, N minor)
|
|
113
|
+
[CRITICAL] Layer violation: ComponentA (frontend) → ComponentB (database)
|
|
114
|
+
File: src/pages/users.tsx:45
|
|
115
|
+
Why: Frontend bypasses API layer, creating tight coupling.
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
If no violations: report "No connection integrity issues found" — do not omit.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Phase 2.5 — LLM Purpose Classification
|
|
123
|
+
|
|
124
|
+
**Goal:** Classify what each LLM call does, not just who it calls.
|
|
125
|
+
|
|
126
|
+
1. Run `mcp__plugin_navgator__llm_map` with `--classify`
|
|
127
|
+
2. For each uncategorized use case: read the primary file, determine purpose (summarization, extraction, search/ranking, generation, embedding, classification, translation, agent/tool-use, validation, analysis, synthesis)
|
|
128
|
+
3. Note system effect (search results, UI charts, DB writes, queue processing, API responses)
|
|
129
|
+
4. Record classifications as lessons in `.navgator/lessons/lessons.json` with category `'llm-architecture'`
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Phase 3 — Documentation Drift
|
|
134
|
+
|
|
135
|
+
**Goal:** Verify docs reflect what code does.
|
|
136
|
+
|
|
137
|
+
1. Read README.md — for each CLI command/flag in implementation, verify it appears in CLI Reference. Run `--help` and compare.
|
|
138
|
+
2. Read CLAUDE.md — verify command table is complete (every `/build-loop:*` slash command listed)
|
|
139
|
+
3. List all directories under `skills/` — for each capability, verify a skill file exists
|
|
140
|
+
4. Read `plugin.json` — verify all referenced directories and entry points exist on disk
|
|
141
|
+
5. For each new/modified capability from Phase 1, check that it appears in README, CLAUDE.md, AND a skill file
|
|
142
|
+
|
|
143
|
+
An **agent-invisible feature** is one in code but absent from agent-readable files (CLAUDE.md or skill files). Highest-priority gap — silently degrades agent capability.
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
PHASE 3: DOCUMENTATION DRIFT
|
|
147
|
+
[AGENT-INVISIBLE] --validate added but not in CLAUDE.md command table
|
|
148
|
+
[STALE] README references `navgator check` (renamed to `/navgator:check`)
|
|
149
|
+
[UNDOCUMENTED] navgator coverage --typespec — no skill file
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
If no drift: report "Documentation matches implementation".
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Phase 4 — Lessons Check
|
|
157
|
+
|
|
158
|
+
**Goal:** Match findings against known patterns; record new ones.
|
|
159
|
+
|
|
160
|
+
### Matching Known Lessons
|
|
161
|
+
|
|
162
|
+
1. Read `.navgator/lessons/lessons.json`
|
|
163
|
+
2. For each lesson, check whether any changed file/component/finding matches `signature` patterns
|
|
164
|
+
3. If a match: flag with recurrence context. Do not silently skip.
|
|
165
|
+
|
|
166
|
+
### Recording New Lessons
|
|
167
|
+
|
|
168
|
+
For each NEW finding (not already in `lessons.json`), append:
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"id": "<sha256(category+pattern) truncated to 8 chars>",
|
|
173
|
+
"category": "layer-violation|orphaned-component|api-contract|doc-drift|import-cycle|triplicated-logic|other",
|
|
174
|
+
"pattern": "human-readable description",
|
|
175
|
+
"signature": ["regex or code fragment to match recurrence"],
|
|
176
|
+
"severity": "critical|important|minor",
|
|
177
|
+
"context": {
|
|
178
|
+
"first_seen": "ISO 8601",
|
|
179
|
+
"last_seen": "ISO 8601",
|
|
180
|
+
"occurrences": 1,
|
|
181
|
+
"files_affected": ["paths"],
|
|
182
|
+
"resolution": "specific fix"
|
|
183
|
+
},
|
|
184
|
+
"example": { "bad": "...", "good": "...", "why": "..." },
|
|
185
|
+
"validation": { "last_validated": "ISO 8601", "source": "agent", "status": "unvalidated" }
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
If a lesson already exists for the pattern (matched by `id` or `signature`), update `last_seen`, increment `occurrences`, merge `files_affected`. Don't duplicate.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Phase 5 — Freshness Validation
|
|
194
|
+
|
|
195
|
+
**Goal:** Lessons referencing external APIs or libraries still reflect current best practice.
|
|
196
|
+
|
|
197
|
+
Trigger only when:
|
|
198
|
+
- User passed `--validate`
|
|
199
|
+
- Lesson references an external API/library/version-specific behavior
|
|
200
|
+
- More than 30 days since `validation.last_validated` on any matched lesson
|
|
201
|
+
|
|
202
|
+
For each lesson needing validation:
|
|
203
|
+
1. WebSearch the referenced API/library/pattern
|
|
204
|
+
2. Verify still recommended approach
|
|
205
|
+
3. Update `validation.last_validated`, `validation.status` (`current`/`stale`), `validation.source` (`web-search`)
|
|
206
|
+
4. If stale, add `validation.note` explaining what changed
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## What to Ignore
|
|
211
|
+
|
|
212
|
+
- Individual function logic — use a debugger
|
|
213
|
+
- Code style/formatting — use a linter
|
|
214
|
+
- Test coverage — use coverage tools
|
|
215
|
+
- Performance — use profiling
|
|
216
|
+
- Security vulnerabilities — use `security-reviewer`
|
|
217
|
+
- TypeScript type errors — compiler handles those
|
|
218
|
+
- Spelling/grammar in comments
|
|
219
|
+
|
|
220
|
+
If a finding falls into one of these, note briefly and redirect: "This is a linter issue — outside architectural review scope." Then move on.
|
|
221
|
+
|
|
222
|
+
## Sibling Skills
|
|
223
|
+
|
|
224
|
+
- `build-loop:architecture-scan` — refresh data first
|
|
225
|
+
- `build-loop:architecture-impact`, `build-loop:architecture-trace`, `build-loop:architecture-rules`, `build-loop:architecture-dead` — sub-steps of this review
|
|
226
|
+
|
|
227
|
+
*Source: copied verbatim from NavGator and rewritten for build-loop. Drift-checked by `build-loop:sync-skills`.*
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-loop:architecture-rules
|
|
3
|
+
description: Use when Phase 4 Review checks architectural integrity, the user asks to "check for violations" or "find circular deps", or before a release. Detects orphans, layer violations, circular dependencies, and hotspots; build-loop's native rules engine from NavGator.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
source: NavGator/commands/test.md
|
|
7
|
+
source_hash: 4a967c08ff3d7cddd408e7caefcd07b09e8931bcaccf9ea70c0f5aa94349e0d1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
11
|
+
|
|
12
|
+
# Architecture Rules / Violation Check
|
|
13
|
+
|
|
14
|
+
Run NavGator's rules engine to detect architectural violations using the `mcp__plugin_navgator__rules` MCP tool. Classifies findings as blocking (circular dependency, layer violation, database isolation breach, frontend-direct-DB at error level) vs warning (hotspot, high-fan-out, orphan).
|
|
15
|
+
|
|
16
|
+
> **Divergence note**: NavGator has no discrete SKILL.md for rules. The canonical wrapper is `commands/test.md`, which orchestrates `navgator rules` + `navgator dead` + pipeline traces. This skill extracts the rules-only workflow.
|
|
17
|
+
|
|
18
|
+
## When to Activate
|
|
19
|
+
|
|
20
|
+
- Phase 4 Review-D Fact-Check: when code changed in this build, run rules to detect new violations
|
|
21
|
+
- Phase 1 Assess: optionally run as a baseline so Review-D can diff
|
|
22
|
+
- User asks "any architecture violations", "is this safe to merge", "what did I break"
|
|
23
|
+
|
|
24
|
+
## Pre-flight
|
|
25
|
+
|
|
26
|
+
1. If `.navgator/architecture/index.json` does not exist → no-op with `NavGator: no architecture snapshot found — skipping rules check`. Recommend `build-loop:architecture-scan`.
|
|
27
|
+
2. Check `index.json` `generated_at` timestamp. If >24 hours old, warn: "Architecture data is N hours old — consider running `build-loop:architecture-scan` first for accurate results."
|
|
28
|
+
|
|
29
|
+
## Rules Workflow
|
|
30
|
+
|
|
31
|
+
1. Run `mcp__plugin_navgator__rules` (or `navgator rules --json`)
|
|
32
|
+
2. Classify each finding:
|
|
33
|
+
|
|
34
|
+
| Severity | Categories |
|
|
35
|
+
|----------|-----------|
|
|
36
|
+
| **Blocking** | `circular-dependency`, `layer-violation`, `database-isolation`, `frontend-direct-db` (error level) |
|
|
37
|
+
| **Warning** | `hotspot`, `high-fan-out`, `orphan` |
|
|
38
|
+
|
|
39
|
+
3. Diff against the Phase 1 baseline if present in `.build-loop/state.json.architecture.rules.baseline`
|
|
40
|
+
4. Flag recurrences against `.navgator/lessons/lessons.json` (lessons with matching `signature`)
|
|
41
|
+
5. Write the result to `.build-loop/state.json.architecture.rules` with `{blocking_count, warning_count, new_violations[], recurrences[]}`
|
|
42
|
+
|
|
43
|
+
## Decision
|
|
44
|
+
|
|
45
|
+
- **Blocking findings** → route back to Phase 5 Iterate with the violation as a fresh criterion
|
|
46
|
+
- **Warning findings** → log to `.build-loop/issues/` and surface in Review-F Report
|
|
47
|
+
- **No new violations** → continue Review pipeline; report "No new architectural violations introduced"
|
|
48
|
+
|
|
49
|
+
## Report Format
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
ARCHITECTURE RULES
|
|
53
|
+
==================
|
|
54
|
+
Blocking: N (N new this build)
|
|
55
|
+
Warnings: N (N new this build)
|
|
56
|
+
Recurrences against lessons: N
|
|
57
|
+
|
|
58
|
+
[BLOCKING] Layer violation: ComponentA (frontend) → ComponentB (database)
|
|
59
|
+
File: src/pages/users.tsx:45
|
|
60
|
+
Recurrence: matches lesson 'frontend-direct-db' (last seen 2026-03-15)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
If no findings: report "No connection-integrity issues found" — do not omit the section.
|
|
64
|
+
|
|
65
|
+
## Sibling Skills
|
|
66
|
+
|
|
67
|
+
- `build-loop:architecture-scan` — refresh data first
|
|
68
|
+
- `build-loop:architecture-impact` — pre-flight blast-radius for any blocking finding's affected component
|
|
69
|
+
- `build-loop:architecture-dead` — orphan-only scan (warnings flagged here too)
|
|
70
|
+
- `build-loop:architecture-review` — runs rules as part of a 5-phase integrity review
|
|
71
|
+
|
|
72
|
+
*Source: NavGator `commands/test.md` (the orchestrator that calls `navgator rules`). The canonical rules engine is the MCP tool. Drift-checked by `build-loop:sync-skills`.*
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-loop:architecture-scan
|
|
3
|
+
description: Use when Phase 1 Assess detects stale architecture state, the user asks for an "architecture scan", or before blast-radius analysis. Refreshes Build Loop's native component and connection data in `.build-loop/architecture/`, with NavGator reserved for escalation-only capabilities.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
source: NavGator/skills/architecture-scan/SKILL.md
|
|
7
|
+
source_hash: 1b4e25d6198373d261502a296dad2ea96abc9e66166115007db940cd48fe7cbb
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
11
|
+
|
|
12
|
+
# Architecture Scan & Status
|
|
13
|
+
|
|
14
|
+
Scan project architecture, check health, and monitor staleness using Build Loop's native architecture engine (`python -m build_loop.architecture scan`). NavGator remains an optional escalation adapter for capabilities not yet ported into the native engine, such as `llm-map`, `schema`, and `diagram`.
|
|
15
|
+
|
|
16
|
+
## When to Activate
|
|
17
|
+
|
|
18
|
+
- Phase 1 Assess: ensure architecture data is fresh (>24h old → re-scan) before sibling skill `build-loop:architecture-impact` consumes it
|
|
19
|
+
- User asks about project architecture, stack, or dependencies
|
|
20
|
+
- After `npm install`, `pip install`, or similar dependency operations
|
|
21
|
+
- User adds/removes dependencies or makes structural changes
|
|
22
|
+
|
|
23
|
+
## Pre-flight
|
|
24
|
+
|
|
25
|
+
1. Prefer the repo-local Build Loop venv when present: `<build-loop>/.venv/bin/python -m build_loop.architecture`.
|
|
26
|
+
2. Run `scan` before `rules`, `dead`, `impact`, or `trace` when `.build-loop/architecture/index.json` is missing or stale.
|
|
27
|
+
3. Use `--mode navgator` only when the requested capability is explicitly NavGator-only or the native command reports that escalation is required.
|
|
28
|
+
|
|
29
|
+
## Scanning
|
|
30
|
+
|
|
31
|
+
Use the native scanner to detect components and connections. It maps source imports and the Gator-derived runtime edges that Build Loop now owns natively: path-alias imports, manifest package use, frontend `/api/...` fetches, and conservative service/LLM calls.
|
|
32
|
+
|
|
33
|
+
**Options:**
|
|
34
|
+
- Default: `python -m build_loop.architecture scan --json`
|
|
35
|
+
- Incremental marker: add `--incremental` when the caller is refreshing after a small change
|
|
36
|
+
|
|
37
|
+
After scanning, present a smart-brevity brief:
|
|
38
|
+
- **Line 1**: "Scanned [project]. [N] components, [N] connections."
|
|
39
|
+
- **Runtime edges**: summarize `connection_counts_by_type` when present
|
|
40
|
+
- **What to watch**: low-confidence detections or missing route/package/service targets
|
|
41
|
+
- **AI routing**: providers and model count if service/LLM calls detected
|
|
42
|
+
|
|
43
|
+
## Status
|
|
44
|
+
|
|
45
|
+
Read `.build-loop/architecture/index.json` and `.build-loop/architecture/manifest.json` to show architecture summary without re-scanning. Returns: component counts, connection counts by type, last scan timestamp, and staleness indicator when available.
|
|
46
|
+
|
|
47
|
+
If no architecture data exists, recommend running scan first.
|
|
48
|
+
|
|
49
|
+
## Health Checks
|
|
50
|
+
|
|
51
|
+
Health information is included in scan output:
|
|
52
|
+
- Outdated packages
|
|
53
|
+
- Security vulnerabilities
|
|
54
|
+
- Orphaned connections (dead-code references)
|
|
55
|
+
- Missing imports and unused dependencies
|
|
56
|
+
|
|
57
|
+
## Decision Tree
|
|
58
|
+
|
|
59
|
+
| User Intent | Tool | Notes |
|
|
60
|
+
|-------------|----------|-------|
|
|
61
|
+
| "Scan my project" | native `scan` | Full scan |
|
|
62
|
+
| "Refresh after edit" | native `scan --incremental` | Marks scan as incremental |
|
|
63
|
+
| "What's my stack?" | read native manifest/index | No re-scan needed |
|
|
64
|
+
| "Any unused packages?" | native `scan`, then `dead` | `dead` checks manifest declarations |
|
|
65
|
+
| "Is architecture data fresh?" | read native manifest/index | Check timestamp |
|
|
66
|
+
|
|
67
|
+
## Output Format
|
|
68
|
+
|
|
69
|
+
Keep output concise. Do NOT dump raw JSON. Summarize into a scannable brief. Write the compact summary into `.build-loop/state.json.architecture.scan` under fields `{component_count, connection_count, connection_counts_by_type, last_scan, staleness, providers}`.
|
|
70
|
+
|
|
71
|
+
## Sibling Skills
|
|
72
|
+
|
|
73
|
+
- `build-loop:architecture-impact` — blast radius for a component
|
|
74
|
+
- `build-loop:architecture-trace` — data flow trace
|
|
75
|
+
- `build-loop:architecture-rules` — violation check
|
|
76
|
+
- `build-loop:architecture-dead` — orphan scan
|
|
77
|
+
- `build-loop:architecture-review` — full integrity review
|
|
78
|
+
|
|
79
|
+
*Source: copied verbatim from NavGator and rewritten for build-loop. Drift-checked by `build-loop:sync-skills`.*
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-loop:architecture-trace
|
|
3
|
+
description: Use when the user asks to "trace data flow", "follow this request end-to-end", or "show how X reaches Y". Follows a component's connections from input to output across the architecture; build-loop's native trace copied from NavGator's CLI.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
user-invocable: false
|
|
6
|
+
source: NavGator/commands/trace.md
|
|
7
|
+
source_hash: d1a62f22ebcf3f19e2f9d52c6df565a4ba5ed53a676b5e02e43e670273f6d9f8
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
|
|
11
|
+
|
|
12
|
+
# Architecture Data-Flow Trace
|
|
13
|
+
|
|
14
|
+
Follow data flow through the architecture using the NavGator `mcp__plugin_navgator__trace` MCP tool. Trace pipelines forward (cron → route → service → DB → queue → LLM) or backward (consumer → producer).
|
|
15
|
+
|
|
16
|
+
> **Divergence note**: NavGator does not ship a discrete SKILL.md for trace — only a slash command (`commands/trace.md`) that wraps the MCP tool. This skill encodes the same workflow as a build-loop-native skill.
|
|
17
|
+
|
|
18
|
+
## When to Activate
|
|
19
|
+
|
|
20
|
+
- Phase 1 Assess: trace pipelines for cron jobs and queue producers when prompts or LLM calls are in scope
|
|
21
|
+
- Phase 5 Iterate: trace forward from a failing endpoint or backward from a downstream symptom to pinpoint the broken link
|
|
22
|
+
- User asks "how does X data flow", "what feeds X", "what does X feed"
|
|
23
|
+
- Component is a cron job, API route, database model, or queue
|
|
24
|
+
|
|
25
|
+
## Pre-flight
|
|
26
|
+
|
|
27
|
+
1. If `.navgator/architecture/index.json` does not exist → no-op with `NavGator: no architecture snapshot found — skipping trace`. Recommend `build-loop:architecture-scan`.
|
|
28
|
+
|
|
29
|
+
## Trace Workflow
|
|
30
|
+
|
|
31
|
+
1. Run `mcp__plugin_navgator__trace` with the component name
|
|
32
|
+
2. If the component is a cron job or API route, trace forward to show the full pipeline
|
|
33
|
+
3. If it's a database model or queue, trace both directions to show producers AND consumers
|
|
34
|
+
4. Present the trace as a readable pipeline:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
/api/cron/refresh-rss [Vercel cron]
|
|
38
|
+
→ route.ts [backend]
|
|
39
|
+
→ rss-ingestion-service [service]
|
|
40
|
+
→ Article [database]
|
|
41
|
+
→ search-enhancement-queue [queue]
|
|
42
|
+
→ OpenAI [LLM provider]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
5. Flag any anomalies in the trace (dead ends, duplicate consumers, missing connections)
|
|
46
|
+
6. If trace returns 0 paths, suggest the component might be orphaned (run `build-loop:architecture-dead`) or data may need refreshing (`build-loop:architecture-scan`)
|
|
47
|
+
|
|
48
|
+
## Tool Options
|
|
49
|
+
|
|
50
|
+
- `direction: "forward" | "backward" | "both"` — one-way or bidirectional trace
|
|
51
|
+
- `production: true` — filter out test/script connections
|
|
52
|
+
- `max_paths: N` — cap path enumeration on highly-connected components
|
|
53
|
+
|
|
54
|
+
## Output
|
|
55
|
+
|
|
56
|
+
Write trace summary into `.build-loop/state.json.architecture.trace[<component>]` with `{paths_count, layer_chain, anomalies[]}`.
|
|
57
|
+
|
|
58
|
+
## Sibling Skills
|
|
59
|
+
|
|
60
|
+
- `build-loop:architecture-scan` — refresh data first
|
|
61
|
+
- `build-loop:architecture-impact` — blast-radius alongside trace
|
|
62
|
+
- `build-loop:architecture-dead` — confirm orphan if trace returns 0 paths
|
|
63
|
+
- `build-loop:architecture-review` — full integrity review
|
|
64
|
+
|
|
65
|
+
*Source: NavGator CLI command (`commands/trace.md`). The canonical implementation is the MCP tool, not a skill file. Drift-checked by `build-loop:sync-skills`.*
|