Nox-Lumen MfgNox-Lumen Mfg

Code review overview

Two-layer architecture

📦 All 12 skills open-sourced

L2 code-review + ten L1 analyzers + data pipeline bug-import (official path to your own bug history) live on:

github.com/Nox-Lumen-tech/combo-skills

Install from chat:

/skill-install Nox-Lumen-tech/combo-skills/code-review
/skill-install Nox-Lumen-tech/combo-skills/bug-import
/skill-install Nox-Lumen-tech/combo-skills/ruff
/skill-install Nox-Lumen-tech/combo-skills/checkstyle

LTM sinks: bug-pattern pool + feedback pool

Code review gets sharper over time because two paths write LTM:

PathWritermemory_typetags anchorWhen
① Bug patterns (real-time)code-review Step 6 (post-review auto call)factbug_pattern + source:agent_realtimeNew pattern found this review
② Bug patterns (historical rollup)bug-import Phase 3factbug_pattern + source:bug_import_aggregatorPeriodic aggregation after imports
③ False-positive / missed feedbackcode-review Step 6 when user reactserror_patternfalse_positive / missed_issueUser labels a finding

Paths ①② share tags—single fetch in L2 Step 2:

unified_search(sources=["fact"], tags_include=["bug_pattern"], min_confidence=0.7)
unified_search(memory_type="error_pattern", query="<change keywords>")  # Path ③

Hits surface as bug_pattern_match (severity severe).

Why bug patterns aren’t error_pattern facts

Legal memory_type values number five: fact / preference / program / error_pattern / chunk_node. error_pattern covers both review feedback and platform/tool/runtime faults—partitioned softly via tags.
Code bug patterns intentionally use fact + tags=["bug_pattern"] to avoid mixing with “tool keeps failing” noise. bug-import always did this; code-review real-time learning now matches—two writers, one clean pool.

bug_pattern is a tag, not a memory_type” — convention between skills, not a hard-coded platform field. Agents may invent tag vocabulary (module:CarSyncShare, pattern:heartbeat_disconnect, …). See code-review · LTM sink.

combo agent decouples layers:

Rendering diagram…
LayerDoesDoesn’t
L1 staticDeterministic linting (syntax, policy, vuln patterns)Contextual judgement
L2 semanticReq vs code, architecture alignment, bug-pattern hitsStatic checks (that’s L1)

Division of labor

L1 — nine static skills

All emit unified CodeEvidence JSON consumed by L2.

L2 — code-review

LLM-driven review against requirements, design, coding standards, bug history. Does not perform static scans (L1), repo operations (integrations), or config synthesis (standards-converter).

Eight L2 finding categories

CategorySeverity
requirement_not_implementedfatal
requirement_deviationsevere
design_inconsistencysevere
standard_violationgeneral
security_risksevere
performance_issuegeneral
bug_pattern_matchsevere
design_compliance_violationgeneral

Typical scenarios

ScenarioLayersTriggerNotes
A. Single PR / MR / changeL1 + L2Gerrit/GitLab/GitHub/Gitee integrationsDiff scope, seconds–minutes
B. Batch scanL1ScheduledRules only
C. Full-branch / repoL1 full + L2 deepManual / pre-release gateRequires light/heavy indexing; Gerrit adapter unsupported—use GitHub/GitLab/generic git
Security auditsL1 (bandit/semgrep) + L2Scheduled / complianceRecommend heavy index when taint matters
MISRA / ISO 26262L2 + standards-converter configsAutomotive programsHeavy index for cross-TU reasoning
Choose A or C?

Daily flow → A (diff). Reserve C (whole repo) for major releases, repo onboarding, or monthly security/compliance sweeps—it drives deeper retrieval (see three-tier code index).

On this page