AI Slop Code RIsk Monitor

bmad-code-org/BMAD-METHOD

Breakthrough Method for Agile Ai Driven Development

16.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for bmad-code-org/BMAD-METHOD, a Python project with 54,014 GitHub stars. SynthScan examined 89,301 lines of code across 684 source files, recording 1222 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 16.9 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

16.9
Adjusted Signal
16.9
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
54.0K
Stars
Python
Language
89.3K
Lines of Code
684
Files
1.2K
Pattern Hits
2026-10-12
Scan Date
0.06
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 48.5/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1099 finding(s).

Hallucinated Dependency & Supply Chain Risk 8.2/100 · LOW

Are imports declared and package/API names verified? 62 finding(s).

Agent Over-Engineering Ratio 38.9/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 871 finding(s).

PR Review Velocity Impact 56.8/100 · HIGH

Which changes need focused human review? 1222 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 40MEDIUM 39LOW 1143

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 1222 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers808 hits · 702 pts
SeverityFileLineSnippetContext
LOWtools/validate_skills.py156def parse_frontmatter_multiline(content: str) -> dict[str, str] | None:CODE
LOWtools/validate_file_refs.py159def strip_json_example_blocks(content: str) -> str:CODE
LOWtools/validate_file_refs.py325def check_absolute_path_leaks(file_path: str, content: str) -> list[Leak]:CODE
LOW⚡tools/tests/test_validate_file_refs.py96 def test_code_blocks_stripped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py104 def test_json_example_blocks_stripped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py108 def test_unresolvable_refs_skipped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py112 def test_project_root_runtime_variable_skipped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py118 def test_refs_with_lines_and_keys(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py127 def test_unresolvable_skipped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py131 def test_multi_document_yaml_scans_all_documents(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py139 def test_invalid_yaml_returns_empty(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py155 def test_install_only_paths_skipped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py164 def test_install_generated_files_skipped(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py170 def test_leaks_found_with_line_numbers(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py208 def test_skill_root_resolution(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py216 def test_prose_path_not_flagged(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py224 def test_assets_and_samples_are_not_scanned(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py232 def test_stray_file_in_skills_root(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py239 def test_leak_reported_in_run(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py246 def test_default_mode_warns_but_exits_zero(self):CODE
LOW⚡tools/tests/test_validate_file_refs.py254 def test_install_only_ref_not_counted_as_broken(self):CODE
LOWtools/tests/test_validate_file_refs.py79 def test_backtick_prose_forms_skipped(self):CODE
LOWtools/tests/test_validate_file_refs.py188 def test_clean_tree_exits_zero(self):CODE
LOWtools/tests/test_validate_file_refs.py196 def test_broken_vs_unresolved(self):CODE
LOWtools/tests/test_validate_file_refs.py276 def test_github_actions_annotations_and_step_summary(self):CODE
LOWtools/tests/test_validate_file_refs.py290 def test_csv_files_not_scanned(self):CODE
LOW⚡tools/tests/test_knowledge.py98 def test_a_named_skills_list_limits_a_document_and_a_star_or_no_key_covers_the_module(self):CODE
LOW⚡tools/tests/test_knowledge.py107 def test_installed_skills_are_the_listed_skills_whose_folder_exists(self):CODE
LOW⚡tools/tests/test_knowledge.py117 def test_a_single_skill_module_is_its_own_one_member(self):CODE
LOW⚡tools/tests/test_knowledge.py132 def test_a_record_is_found_whatever_its_folder_is_called(self):CODE
LOW⚡tools/tests/test_knowledge.py141 def test_a_second_record_for_a_code_is_a_problem_and_the_first_wins(self):CODE
LOW⚡tools/tests/test_knowledge.py151 def test_a_skill_whose_record_is_absent_has_no_module_and_names_the_install_command(self):CODE
LOW⚡tools/tests/test_knowledge.py177 def test_a_skill_that_names_no_record_is_a_problem(self):CODE
LOW⚡tools/tests/test_knowledge.py186 def test_a_skills_value_of_the_wrong_type_drops_the_document(self):CODE
LOW⚡tools/tests/test_knowledge.py194 def test_help_md_is_read_with_no_entry_and_covers_every_skill(self):CODE
LOW⚡tools/tests/test_knowledge.py206 def test_a_module_without_help_md_offers_no_document_and_no_problem(self):CODE
LOW⚡tools/tests/test_knowledge.py213 def test_an_entry_naming_help_md_is_reported_and_the_file_is_read_once(self):CODE
LOW⚡tools/tests/test_knowledge.py221 def test_topic_files_are_listed_with_their_path_and_never_their_text(self):CODE
LOW⚡tools/tests/test_knowledge.py313 def test_a_named_document_that_is_absent_is_a_problem(self):CODE
LOW⚡tools/tests/test_knowledge.py322 def test_an_unreadable_file_is_named_and_the_rest_continue(self):CODE
LOW⚡tools/tests/test_knowledge.py331 def test_a_folder_without_a_bmod_file_is_ignored(self):CODE
LOW⚡tools/tests/test_knowledge.py340 def test_the_first_root_shadows_later_ones(self):CODE
LOWtools/tests/test_knowledge.py75 def test_a_document_is_reported_once_with_the_modules_skills(self):CODE
LOWtools/tests/test_knowledge.py87 def test_same_filename_in_two_modules_stays_two_documents(self):CODE
LOWtools/tests/test_knowledge.py165 def test_a_named_record_folder_with_no_usable_record_offers_no_install_command(self):CODE
LOWtools/tests/test_knowledge.py243 def test_a_help_file_named_as_a_knowledge_document_is_not_also_a_topic(self):CODE
LOWtools/tests/test_knowledge.py251 def test_a_topic_that_links_outside_the_record_is_a_problem_and_not_listed(self):CODE
LOWtools/tests/test_knowledge.py265 def test_a_path_named_twice_is_reported_and_the_first_entry_is_kept(self):CODE
LOWtools/tests/test_knowledge.py277 def test_a_url_is_reported_as_a_problem_not_read_as_a_path(self):CODE
LOWtools/tests/test_knowledge.py288 def test_traversal_is_refused(self):CODE
LOWtools/tests/test_knowledge.py299 def test_a_document_that_links_outside_the_record_folder_is_refused(self):CODE
LOWtools/tests/test_knowledge.py354 def test_a_record_in_one_root_covers_its_skills_in_another(self):CODE
LOWtools/tests/test_knowledge.py366 def test_content_is_returned_on_request(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3455 def test_no_install_is_offered_when_the_new_name_is_in_another_active_root(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3462 def test_removal_modes_cannot_be_combined_with_other_modes(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3469 def test_status_reports_the_same_and_changes_nothing(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3585 def test_a_name_a_module_still_lists_is_not_retired(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3590 def test_an_unusable_retired_file_is_a_problem_and_setup_carries_on(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3597 def test_bad_retired_lists_are_rejected(self):CODE
LOW⚡tools/tests/test_bmad_setup.py3774 def test_a_module_may_have_no_documents(self):CODE
748 more matches not shown…
Structural Annotation Overuse150 hits · 296 pts
SeverityFileLineSnippetContext
LOW…existing-codebases/set-and-maintain-project-context.md23## Step 1: Run ItCOMMENT
LOW…existing-codebases/set-and-maintain-project-context.md38## Step 2: Tell It What You BringCOMMENT
LOW…existing-codebases/set-and-maintain-project-context.md53## Step 3: It Verifies the RestCOMMENT
LOW…existing-codebases/set-and-maintain-project-context.md64## Step 4: Approve the BlockCOMMENT
LOWskills/bmad-customize/SKILL.md24## Step 1: Classify intentCOMMENT
LOWskills/bmad-customize/SKILL.md31## Step 2: DiscoveryCOMMENT
LOWskills/bmad-customize/SKILL.md43## Step 3: Determine the right surfaceCOMMENT
LOWskills/bmad-customize/SKILL.md62## Step 4: Compose the overrideCOMMENT
LOWskills/bmad-customize/SKILL.md75## Step 5: Team or user placementCOMMENT
LOWskills/bmad-customize/SKILL.md83## Step 6: Show, confirm, write, verifyCOMMENT
LOW⚡skills/bmad-retrospective/workflow.md23### Step 1: Execute Prepend StepsCOMMENT
LOW⚡skills/bmad-retrospective/workflow.md29### Step 2: Load Persistent FactsCOMMENT
LOW⚡skills/bmad-retrospective/workflow.md35### Step 3: Execute Append StepsCOMMENT
LOWskills/bmad-eval/references/description-optimization.md7## Step 1: generate the query setCOMMENT
LOWskills/bmad-eval/references/description-optimization.md20## Step 2: stratified 60/40 splitCOMMENT
LOWskills/bmad-eval/references/description-optimization.md26## Step 3: measure real triggeringCOMMENT
LOW⚡skills/bmad-eval/references/description-optimization.md37## Step 4: improve from train failures, test blindedCOMMENT
LOW⚡skills/bmad-eval/references/description-optimization.md45## Step 5: re-measure and iterateCOMMENT
LOW⚡skills/bmad-eval/references/description-optimization.md49## Step 6: pick the winner by test scoreCOMMENT
LOWskills/bmad-agent-pm/SKILL.md21### Step 1: Resolve the Agent BlockCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md35### Step 2: Execute Prepend StepsCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md39### Step 3: Adopt PersonaCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md45### Step 4: Load Persistent FactsCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md49### Step 5: Load ConfigCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md55### Step 6: Greet the UserCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md61### Step 7: Execute Append StepsCOMMENT
LOW⚡skills/bmad-agent-pm/SKILL.md67### Step 8: Dispatch or Present the MenuCOMMENT
LOWskills/bmad-qa-generate-e2e-tests/SKILL.md21### Step 1: Resolve the Workflow BlockCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md35### Step 2: Execute Prepend StepsCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md39### Step 3: Load Persistent FactsCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md43### Step 4: Load ConfigCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md53### Step 5: Greet the UserCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md57### Step 6: Execute Append StepsCOMMENT
LOWskills/bmad-qa-generate-e2e-tests/SKILL.md71### Step 0: Detect Test FrameworkCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md83### Step 1: Identify FeaturesCOMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md91### Step 2: Generate API Tests (if applicable)COMMENT
LOW⚡skills/bmad-qa-generate-e2e-tests/SKILL.md100### Step 3: Generate E2E Tests (if UI exists)COMMENT
LOWskills/bmad-qa-generate-e2e-tests/SKILL.md111### Step 4: Run TestsCOMMENT
LOWskills/bmad-qa-generate-e2e-tests/SKILL.md117### Step 5: Create SummaryCOMMENT
LOWskills/bmad-agent-ux-designer/SKILL.md21### Step 1: Resolve the Agent BlockCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md35### Step 2: Execute Prepend StepsCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md39### Step 3: Adopt PersonaCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md45### Step 4: Load Persistent FactsCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md49### Step 5: Load ConfigCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md55### Step 6: Greet the UserCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md61### Step 7: Execute Append StepsCOMMENT
LOW⚡skills/bmad-agent-ux-designer/SKILL.md67### Step 8: Dispatch or Present the MenuCOMMENT
LOWskills/bmad-correct-course/SKILL.md21### Step 1: Resolve the Workflow BlockCOMMENT
LOW⚡skills/bmad-correct-course/SKILL.md35### Step 2: Execute Prepend StepsCOMMENT
LOW⚡skills/bmad-correct-course/SKILL.md39### Step 3: Load Persistent FactsCOMMENT
LOW⚡skills/bmad-correct-course/SKILL.md43### Step 4: Load ConfigCOMMENT
LOWskills/bmad-correct-course/SKILL.md54### Step 5: Greet the UserCOMMENT
LOWskills/bmad-correct-course/SKILL.md58### Step 6: Execute Append StepsCOMMENT
LOWskills/bmad-prfaq/SKILL.md31### Step 1: Resolve the Workflow BlockCOMMENT
LOW⚡skills/bmad-prfaq/SKILL.md45### Step 2: Execute Prepend StepsCOMMENT
LOW⚡skills/bmad-prfaq/SKILL.md49### Step 3: Load Persistent FactsCOMMENT
LOW⚡skills/bmad-prfaq/SKILL.md53### Step 4: Load ConfigCOMMENT
LOW⚡skills/bmad-prfaq/SKILL.md61### Step 5: Greet the UserCOMMENT
LOW⚡skills/bmad-prfaq/SKILL.md65### Step 6: Execute Append StepsCOMMENT
LOWskills/bmad-build-auto/step-04-review.md8# Step 4: ReviewCOMMENT
90 more matches not shown…
Cross-Language Confusion19 hits · 112 pts
SeverityFileLineSnippetContext
HIGHskills/bmad-eval/scripts/convert_cases.py12 [{"id": "1", "input": "...", "rubric": [...], "state_prefix": null, "files": [...]}]STRING
HIGHskills/bmad-toolsmith/scripts/registry.py20 "bmad": {"present": bool, "version": str|null},STRING
HIGHskills/bmad-toolsmith/scripts/scan_legacy_module.py23 "setup_skill": name or null,STRING
HIGHskills/bmad-brainstorming/scripts/brain.py250 if (!t) { t = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; }CODE
HIGHskills/bmad-brainstorming/scripts/brain.py423 var sec = null;CODE
HIGHskills/bmad-brainstorming/scripts/brain.py438 if (!b.checked || seen[b.dataset.name]) { return; }CODE
HIGHskills/bmad-brainstorming/scripts/brain.py440 out.push(b);CODE
HIGHskills/bmad-brainstorming/scripts/brain.py468 var show = !act.length || act.some(function(g){ return good.indexOf(g) >= 0; });CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py483 while (out.length < n && a.length){ out.push(a.splice(Math.floor(Math.random() * a.length), 1)[0]); }CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py483 while (out.length < n && a.length){ out.push(a.splice(Math.floor(Math.random() * a.length), 1)[0]); }CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py493 L.push("", 'Techniques to use:');CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py495 L.push((i + 1) + '.' + (t.r ? ' (random pick)' : '') + ' ' + t.n + ' · ' + t.c);CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py496 L.push(' ' + t.d);CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py500 if (state.inv > 0){ extra.push('invent ' + state.inv + ' brand-new technique' + (state.inv > 1 ? 's' : '') + ' on thCODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py501 checkedInvent().forEach(function(b){ extra.push('invent 1 new technique in the spirit of ' + b.dataset.invent); });CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py502 if (state.ai > 0){ extra.push('you choose ' + state.ai + ' more technique' + (state.ai > 1 ? 's' : '') + ' that fit CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py503 if (extra.length){ L.push("", 'Then: ' + extra.join('; and ') + '.'); }CODE
HIGH⚡skills/bmad-brainstorming/scripts/brain.py505 L.push("", state.mode === 'Ideate for me'CODE
HIGHskills/bmad-brainstorming/scripts/brain.py536 if (navigator.clipboard && navigator.clipboard.writeText){CODE
Over-Commented Block90 hits · 90 pts
SeverityFileLineSnippetContext
LOWskills/bmad-prd/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-prd/customize.toml21COMMENT
LOWskills/bmad-prd/customize.toml41# to the product, project type, and domain. Override the path in team/user TOMLCOMMENT
LOWskills/bmad-prd/customize.toml61COMMENT
LOWskills/bmad-prd/customize.toml81#COMMENT
LOWskills/bmad-prd/customize.toml101# a registry consulted on demand and only when the conversation surfaces aCOMMENT
LOWskills/bmad-prd/customize.toml121# Fired once at Finalize step 6, never during Discovery or drafting.COMMENT
LOWskills/bmad-prd/customize.toml141# subagent applying that prompt to the PRDCOMMENT
LOWskills/bmad-retrospective/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-retrospective/customize.toml21activation_steps_append = []COMMENT
LOWskills/bmad-eval/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-ux/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-ux/customize.toml41# visual identity work. The user runs the tool externally and saves outputsCOMMENT
LOWskills/bmad-ux/customize.toml61COMMENT
LOWskills/bmad-ux/customize.toml81# names them; drop it to let bmad-review pick what fits the content.COMMENT
LOWskills/bmad-toolsmith/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOW…h/shapes/rendered-skill/assets/customize-template.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOW…-toolsmith/shapes/agent/assets/customize-template.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOW…ith/shapes/memory-agent/assets/customize-template.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOW…mith/shapes/plain-skill/assets/customize-template.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-product-brief/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-product-brief/customize.toml21COMMENT
LOWskills/bmad-product-brief/customize.toml41# to the product, purpose, and domain. Override the path in team/user TOMLCOMMENT
LOWskills/bmad-product-brief/customize.toml61# 2. Content/voice/conventions (org standards, tone, terminology, compliance)COMMENT
LOWskills/bmad-product-brief/customize.toml81# Examples (set in team/user override TOML):COMMENT
LOWskills/bmad-agent-pm/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-agent-pm/customize.toml21activation_steps_prepend = []COMMENT
LOWskills/bmad-qa-generate-e2e-tests/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-qa-generate-e2e-tests/customize.toml21activation_steps_append = []COMMENT
LOWskills/bmad-forge-idea/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-forge-idea/customize.toml21# (domain constraints, house rules, what's off the table). Each entry is aCOMMENT
LOWskills/bmad-agent-ux-designer/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-agent-ux-designer/customize.toml21activation_steps_prepend = []COMMENT
LOWskills/bmad-spec/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-spec/customize.toml21# Each entry is either a literal sentence, a skill prefixed with `skill:`,COMMENT
LOWskills/bmad-spec/customize.toml41# input-derived slug at activation. Same slug = same folder, so aCOMMENT
LOWskills/bmad-correct-course/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-correct-course/customize.toml21activation_steps_append = []COMMENT
LOWskills/bmad-deep-recon/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-deep-recon/customize.toml21COMMENT
LOWskills/bmad-deep-recon/customize.toml41# pins that knob over the preset. What the user says in the request beatsCOMMENT
LOWskills/bmad-deep-recon/customize.toml61COMMENT
LOWskills/bmad-deep-recon/customize.toml81# plan gate), or "on" (always; headless honors only "on"). high/maxCOMMENT
LOWskills/bmad-deep-recon/customize.toml101# credible; banned sources are never cited (their claims may still be leadsCOMMENT
LOWskills/bmad-deep-recon/customize.toml121# Default audience shaping for the synthesis — freeform, empty = balancedCOMMENT
LOWskills/bmad-deep-recon/customize.toml141# Polish passes applied to the report at finalize. Entries are `skill:NAME`COMMENT
LOWskills/bmad-deep-recon/customize.toml161# two-source classes, downstream bindings) used by all three modes — itCOMMENT
LOWskills/bmad-prfaq/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-prfaq/customize.toml21activation_steps_append = []COMMENT
LOWskills/bmad-party-mode/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-party-mode/customize.toml21COMMENT
LOWskills/bmad-party-mode/customize.toml41# the session; an unsupported mode (e.g. agent-team outside Claude Code) falls backCOMMENT
LOWskills/bmad-party-mode/customize.toml61# ephemeral until saved as a party.COMMENT
LOWskills/bmad-party-mode/customize.toml81# name display nameCOMMENT
LOWskills/bmad-party-mode/customize.toml161# (alias `--group <id>`) or switched to mid-session. Keyed by `id`.COMMENT
LOWskills/bmad-party-mode/customize.toml181# show up on the fly in a remembered party can be saved into its roster at theCOMMENT
LOWskills/bmad-build-auto/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-review/customize.toml1# DO NOT EDIT -- overwritten on every update.COMMENT
LOWskills/bmad-review/customize.toml21COMMENT
LOWskills/bmad-review/customize.toml41# Example:COMMENT
30 more matches not shown…
Cross-File Repetition15 hits · 75 pts
SeverityFileLineSnippetContext
HIGHskills/bmad-build-auto/customize.toml0launch a context-free subagent with this prompt: read `{plan_file}` — the plan holding the acceptance criteria and intenSTRING
HIGHskills/bmad-build/customize.toml0launch a context-free subagent with this prompt: read `{plan_file}` — the plan holding the acceptance criteria and intenSTRING
HIGHskills/bmad-code-review/customize.toml0launch a context-free subagent with this prompt: read `{plan_file}` — the plan holding the acceptance criteria and intenSTRING
HIGHskills/bmad-build-auto/customize.toml0launch a context-free subagent with this prompt: conduct a review of content. look for what's missing, not only what's wSTRING
HIGHskills/bmad-build/customize.toml0launch a context-free subagent with this prompt: conduct a review of content. look for what's missing, not only what's wSTRING
HIGHskills/bmad-code-review/customize.toml0launch a context-free subagent with this prompt: conduct a review of content. look for what's missing, not only what's wSTRING
HIGHskills/bmad-build-auto/customize.toml0launch a context-free subagent with this prompt: read `{skill-root}/review-prompts/edge-case-hunter.md` completely and fSTRING
HIGHskills/bmad-build/customize.toml0launch a context-free subagent with this prompt: read `{skill-root}/review-prompts/edge-case-hunter.md` completely and fSTRING
HIGHskills/bmad-code-review/customize.toml0launch a context-free subagent with this prompt: read `{skill-root}/review-prompts/edge-case-hunter.md` completely and fSTRING
HIGHskills/bmad-build-auto/customize.toml0launch a context-free subagent with this prompt: read `{skill-root}/review-prompts/verification-gap.md` completely and fSTRING
HIGHskills/bmad-build/customize.toml0launch a context-free subagent with this prompt: read `{skill-root}/review-prompts/verification-gap.md` completely and fSTRING
HIGHskills/bmad-code-review/customize.toml0launch a context-free subagent with this prompt: read `{skill-root}/review-prompts/verification-gap.md` completely and fSTRING
HIGHskills/bmad-build-auto/customize.toml0launch a subagent with this prompt: you are an intent-alignment auditor. you have no other context about how this changeSTRING
HIGHskills/bmad-build/customize.toml0launch a subagent with this prompt: you are an intent-alignment auditor. you have no other context about how this changeSTRING
HIGHskills/bmad-code-review/customize.toml0launch a subagent with this prompt: you are an intent-alignment auditor. you have no other context about how this changeSTRING
Decorative Section Separators14 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMdocs-site/scripts/validate-sidebar-order.js27// ── Main ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMdocs-site/scripts/validate-sidebar-order.js101// ── Directory classification ─────────────────────────────────────────────COMMENT
MEDIUMdocs-site/scripts/validate-sidebar-order.js121// ── Per-directory validation ─────────────────────────────────────────────COMMENT
MEDIUMdocs-site/scripts/validate-sidebar-order.js200// ── Cross-language drift ─────────────────────────────────────────────────COMMENT
MEDIUMdocs-site/scripts/validate-sidebar-order.js257// ── Output ───────────────────────────────────────────────────────────────COMMENT
MEDIUMdocs-site/scripts/validate-sidebar-order.js315// ── Leaf helpers ─────────────────────────────────────────────────────────COMMENT
MEDIUMskills/bmad-deep-recon/customize.toml158# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-deep-recon/customize.toml176# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-party-mode/customize.toml74# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-party-mode/customize.toml93# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-party-mode/customize.toml159# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-party-mode/customize.toml197# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-review/customize.toml81# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/bmad-review/customize.toml105# ---------------------------------------------------------------------------COMMENT
Modern AI Meta-Vocabulary13 hits · 40 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md198* **Pass diff inline to the blind-hunter reviewer** (#2463). Diff output is passed inline in the subagent prompt rather COMMENT
MEDIUMskills/bmad-prd/customize.toml23# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-retrospective/customize.toml24# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-product-brief/customize.toml23# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-qa-generate-e2e-tests/customize.toml24# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-correct-course/customize.toml24# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUM⚡skills/bmad-deep-recon/customize.toml86# orchestration when it offers one (e.g. workflows): "off", "offer"COMMENT
MEDIUMskills/bmad-prfaq/customize.toml24# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-build-auto/plan-template.md17warnings: [] # optional: machine-readable warnings for orchestration, e.g. oversized, multiple-goalsCODE
MEDIUMskills/bmad-brainstorming/customize.toml23# (domain constraints, house rules, stylistic guardrails). Each entry is aCOMMENT
MEDIUMskills/bmad-walkthrough/customize.toml19# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-code-review/customize.toml24# (standards, compliance constraints, stylistic guardrails).COMMENT
MEDIUMskills/bmad-architecture/customize.toml23# (approved stacks, banned dependencies, platform constraints, compliance guardrails).COMMENT
Unused Imports33 hits · 32 pts
SeverityFileLineSnippetContext
LOWtools/dogfood.py32CODE
LOWtools/validate_skills.py30CODE
LOWtools/quality.py11CODE
LOWtools/validate_file_refs.py35CODE
LOW…lls/bmad-customize/scripts/list_customizable_skills.py29CODE
LOW…stomize/scripts/tests/test_list_customizable_skills.py19CODE
LOWskills/bmad-eval/scripts/convert_cases.py25CODE
LOWskills/bmad-eval/scripts/run_triggers.py37CODE
LOWskills/bmad-eval/scripts/eval_common.py23CODE
LOWskills/bmad-eval/scripts/aggregate_benchmark.py36CODE
LOWskills/bmad-eval/scripts/run_evals.py43CODE
LOW…lsmith/shapes/script-utility/assets/script-template.py13CODE
LOWskills/bmad-toolsmith/scripts/scan_paths.py35CODE
LOWskills/bmad-toolsmith/scripts/init_skill.py36CODE
LOWskills/bmad-toolsmith/scripts/count_tokens.py20CODE
LOWskills/bmad-toolsmith/scripts/registry.py28CODE
LOWskills/bmad-toolsmith/scripts/read_session_log.py32CODE
LOWskills/bmad-toolsmith/scripts/prepass.py33CODE
LOWskills/bmad-toolsmith/scripts/process_template.py26CODE
LOWskills/bmad-toolsmith/scripts/scan_legacy_module.py33CODE
LOWskills/bmad-toolsmith/scripts/scan_scripts.py30CODE
LOWskills/bmad/scripts/render_skill.py8CODE
LOWskills/bmad/scripts/validate_manifests.py15CODE
LOWskills/bmad/scripts/stamp_release.py30CODE
LOWskills/bmad/scripts/setup_check.py16CODE
LOWskills/bmad/scripts/setup.py7CODE
LOWskills/bmad/scripts/memlog.py73CODE
LOWskills/bmad/scripts/knowledge.py35CODE
LOWskills/bmad/scripts/config_utils.py3CODE
LOWskills/bmad/scripts/roster.py22CODE
LOWskills/bmad/scripts/tests/test_render_skill.py10CODE
LOWskills/bmad-deep-recon/scripts/recon_kit.py32CODE
LOWskills/bmad-architecture/scripts/lint_spine.py25CODE
Empty Error Handlers6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHskills/bmad/scripts/setup.py2173except (ValueError, tomllib.TOMLDecodeError):CODE
HIGHskills/bmad-party-mode/scripts/resolve_party.py128except (OSError, tomllib.TOMLDecodeError):CODE
HIGHskills/bmad-ticket/scripts/tickets.py1279except (TicketError, OSError, ValueError): # a backlog that cannot be read holds no matchCODE
HIGHskills/bmad-ticket/scripts/tickets.py185except ValueError:CODE
HIGHskills/bmad-ticket/scripts/tickets.py879except TicketError: # none set: the store and the project rootCODE
HIGHskills/bmad-ticket/scripts/tickets.py1331except OSError: # keep restoring the rest; the first failure is the one reportedCODE
Excessive Try-Catch Wrapping26 hits · 29 pts
SeverityFileLineSnippetContext
MEDIUMtools/validate_skills.py712 print(f'Error: "{skill_dir}" is not a valid directory.', file=sys.stderr)CODE
LOWskills/bmad-retrospective/scripts/git_evidence.py108 except Exception as exc: # noqa: BLE001CODE
LOWskills/bmad-eval/scripts/run_evals.py332 except Exception as e:CODE
LOWskills/bmad-toolsmith/scripts/count_tokens.py36 except Exception:CODE
LOWskills/bmad-toolsmith/scripts/count_tokens.py40 except Exception:CODE
LOWskills/bmad/scripts/render_skill.py478 except Exception as error:CODE
LOWskills/bmad/scripts/render_skill.py628 except Exception:CODE
LOWskills/bmad/scripts/validate_manifests.py74 except Exception as error:CODE
LOWskills/bmad/scripts/validate_manifests.py87 except Exception as error:CODE
LOWskills/bmad/scripts/validate_manifests.py435 except Exception as error:CODE
MEDIUMskills/bmad/scripts/stamp_release.py114 print(f"Error: {error}", file=sys.stderr)CODE
LOWskills/bmad/scripts/resolve_customization.py162 except Exception:CODE
LOWskills/bmad/scripts/setup_check.py139 except Exception:CODE
LOWskills/bmad/scripts/setup.py998 except Exception:CODE
LOWskills/bmad/scripts/setup.py1022 except Exception:CODE
LOWskills/bmad/scripts/setup.py1175 except Exception as error:CODE
LOWskills/bmad/scripts/setup.py1282 except Exception:CODE
LOWskills/bmad/scripts/setup.py1325 except Exception as error:CODE
LOWskills/bmad/scripts/setup.py1743 except Exception as error:CODE
LOWskills/bmad/scripts/setup.py1827 except Exception as error:CODE
LOWskills/bmad/scripts/setup.py1850 except Exception as error:CODE
LOWskills/bmad/scripts/setup.py2031 except Exception:CODE
LOWskills/bmad/scripts/setup.py2291 except Exception:CODE
LOWskills/bmad/scripts/setup.py2305 except Exception:CODE
LOWskills/bmad/scripts/setup.py2502 except Exception as error:CODE
MEDIUMskills/bmad/scripts/setup.py2499def cli() -> int:CODE
AI Slop Vocabulary9 hits · 28 pts
SeverityFileLineSnippetContext
MEDIUMskills/bmad-eval/scripts/eval_common.py72# --- harness -----------------------------------------------------------------COMMENT
MEDIUM⚡skills/bmad-deep-recon/customize.toml85# Run the acquisition fan-out through the harness's deterministicCOMMENT
MEDIUM⚡skills/bmad-deep-recon/customize.toml92# harness can provide wins; [] lets the harness/skill choose (lead stays onCOMMENT
MEDIUMskills/bmad-project-context/customize.toml15# harness, not through this array. Users append their own standing facts.COMMENT
MEDIUM⚡skills/bmad-brainstorming/assets/brain-selector.html134<section data-cat="Proven &amp; Professional" style="--c:#3d4f73"><h2>Proven &amp; Professional<span class="cnt">29</spaCODE
MEDIUM⚡skills/bmad-brainstorming/assets/brain-selector.html134<section data-cat="Proven &amp; Professional" style="--c:#3d4f73"><h2>Proven &amp; Professional<span class="cnt">29</spaCODE
MEDIUM⚡skills/bmad-brainstorming/assets/brain-selector.html137<section data-cat="Deep" style="--c:#4658c9"><h2>Deep<span class="cnt">13</span></h2><div class="grid"><label class="tecCODE
MEDIUM⚡skills/bmad-brainstorming/assets/brain-selector.html137<section data-cat="Deep" style="--c:#4658c9"><h2>Deep<span class="cnt">13</span></h2><div class="grid"><label class="tecCODE
MEDIUM⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py248 # an unfilled {scope}/{paradigm}/{date} in frontmatter is part of the contract and must lintSTRING
Deep Nesting26 hits · 25 pts
SeverityFileLineSnippetContext
LOWtools/validate_skills.py156CODE
LOWtools/validate_skills.py293CODE
LOWtools/validate_skills.py569CODE
LOWtools/validate_file_refs.py337CODE
LOWtools/tests/test_bmad_setup.py1391CODE
LOW…lls/bmad-customize/scripts/list_customizable_skills.py89CODE
LOWskills/bmad-eval/scripts/run_triggers.py151CODE
LOWskills/bmad-eval/scripts/eval_common.py236CODE
LOWskills/bmad-toolsmith/scripts/init_skill.py200CODE
LOWskills/bmad-toolsmith/scripts/registry.py74CODE
LOWskills/bmad-toolsmith/scripts/read_session_log.py125CODE
LOWskills/bmad-toolsmith/scripts/read_session_log.py171CODE
LOWskills/bmad/scripts/validate_manifests.py226CODE
LOWskills/bmad/scripts/setup_check.py34CODE
LOWskills/bmad/scripts/setup.py1379CODE
LOWskills/bmad/scripts/setup.py1582CODE
LOWskills/bmad/scripts/knowledge.py118CODE
LOWskills/bmad/scripts/config_utils.py38CODE
LOWskills/bmad/scripts/tests/test_render_skill.py303CODE
LOWskills/bmad-review/scripts/word_metrics.py35CODE
LOWskills/bmad-ticket/scripts/tickets.py237CODE
LOWskills/bmad-ticket/scripts/tickets.py602CODE
LOWskills/bmad-ticket/scripts/tickets.py1264CODE
LOWskills/bmad-brainstorming/scripts/brain.py719CODE
LOWskills/bmad-architecture/scripts/lint_spine.py162CODE
LOW…ills/bmad-advanced-elicitation/scripts/pick_methods.py180CODE
Fake / Example Data10 hits · 8 pts
SeverityFileLineSnippetContext
LOWskills/bmad-ticket/references/slice.md69- Split, never shrink: "for now", "placeholder", "simplified", "wired later" is a second story.CODE
LOWskills/bmad-architecture/scripts/lint_spine.py83 "category": "placeholder",CODE
LOWskills/bmad-architecture/scripts/lint_spine.py103 "category": "placeholder",CODE
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py71 assert "placeholder" not in cats(result)STRING
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py77 assert "placeholder" in cats(result)STRING
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py89 assert any(f["category"] == "placeholder" for f in result["findings"])STRING
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py155 toks = [f for f in result["findings"] if f["category"] == "placeholder" and "template token" in f["detail"]]STRING
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py162 assert "placeholder" in cats(result) # TBD caught even with no frontmatterSTRING
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py251 fm = [f for f in result["findings"] if f["category"] == "placeholder" and "frontmatter" in f["detail"]]STRING
LOW⚡…lls/bmad-architecture/scripts/tests/test_lint_spine.py259 f["category"] == "placeholder" and "frontmatter" in f["detail"] and "TBD" in f["detail"]STRING
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtools/validate_file_refs.py405 # Print results — file header appears once, in one placeCOMMENT
AI Structural Patterns2 hits · 1 pts
SeverityFileLineSnippetContext
LOWtools/tests/test_bmad_setup.py179CODE
LOWskills/bmad-ticket/scripts/tests/test_tickets.py15CODE