AI Slop Code RIsk Monitor

Tencent/teamai-cli

Make Every Team AI Native

9.1 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Tencent/teamai-cli, a TypeScript project with 5,314 GitHub stars. SynthScan examined 329,385 lines of code across 965 source files, recording 1302 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 9.1 (Moderate 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.

9.1
Adjusted Signal
9.1
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
5.3K
Stars
TypeScript
Language
329.4K
Lines of Code
965
Files
1.3K
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 8.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.3/100 · LOW

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

Agent Over-Engineering Ratio 33.3/100 · MEDIUM

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

PR Review Velocity Impact 36.1/100 · MEDIUM

Which changes need focused human review? 1302 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

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

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 1HIGH 0MEDIUM 819LOW 482

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 1302 distinct pattern matches across 11 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.

Decorative Section Separators805 hits · 2432 pts
SeverityFileLineSnippetContext
MEDIUMexamples/ci/coding-ci-mr-extract.yaml21# ── MR 触发规则(必须在 YAML 中声明,UI 配置无效)────────────COMMENT
MEDIUMexamples/ci/coding-ci-mr-extract.yaml31# ── 密钥与环境变量 ────────────────────────────────────────────COMMENT
MEDIUMexamples/ci/coding-ci-mr-extract.yaml44# ── 流水线阶段 ────────────────────────────────────────────────COMMENT
MEDIUMexamples/ci/coding-ci-mr-extract.yaml47# ── MR 创建/更新时:提炼知识并以 comment 形式展示 ──────────COMMENT
MEDIUMexamples/ci/coding-ci-mr-extract.yaml76# ── MR 合入后:将知识写入团队知识仓库 ─────────────────────COMMENT
MEDIUMexamples/ci/github-actions-mr-extract.yml26 # ── PR 创建/更新时:提炼知识并以 comment 形式展示 ──────────COMMENT
MEDIUMexamples/ci/github-actions-mr-extract.yml53 # ── PR 合入后:将知识写入团队仓库 ─────────────────────────COMMENT
MEDIUMsrc/git-hook.ts352// ─── Recorded failures ─────────────────────────────────COMMENT
MEDIUMsrc/push.ts1351 // ── Handle --skill parameter: filter to a single specific skill ──────COMMENT
MEDIUMsrc/push.ts1539 // ── Step 0: Cross-check against still-open push PRs ────────────────COMMENT
MEDIUMsrc/push.ts1678 // ── Step 1: Display ALL scanned items with numbers ─────────────────COMMENT
MEDIUMsrc/push.ts1712 // ── Step 2: Dry run resolves placement, then exits ──────────────COMMENT
MEDIUMsrc/push.ts1729 // ── Step 3: Item selection (replaces old Y/n confirmation) ─────────COMMENT
MEDIUMsrc/push.ts1745 // ── Step 3b: Split the selection into per-PR groups ────────────────COMMENT
MEDIUMsrc/push.ts1767 // ── Step 5: Push each group — one branch/PR per group ──────────────COMMENT
MEDIUMsrc/clone.ts12// ─── Types ──────────────────────────────────────────────COMMENT
MEDIUMsrc/clone.ts34// ─── Helpers ────────────────────────────────────────────COMMENT
MEDIUMsrc/clone.ts224// ─── Public API ─────────────────────────────────────────COMMENT
MEDIUMsrc/mcp-git-exclude.ts17// ─── Project MCP configs and git ─────────────────────────────COMMENT
MEDIUMsrc/status.ts303 // ── Repo section ────────────────────────────────────COMMENT
MEDIUMsrc/status.ts310 // ── Local agent section (skills only) ───────────────COMMENT
MEDIUMsrc/mr-hint.ts9// ─── MR Hint data flow ──────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts35// ─── Types ───────────────────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts57// ─── Cache helpers ───────────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts114// ─── Git remote detection ────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts138// ─── Remote URL parsing ──────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts188// ─── MR listing ─────────────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts326 // ── Primary: gh CLI ──────────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts356 // ── Fallback: GitHub REST API ────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts360// ─── Hint message builder ────────────────────────────────COMMENT
MEDIUMsrc/mr-hint.ts389// ─── Main entry point ────────────────────────────────────COMMENT
MEDIUMsrc/cache-cmd.ts7// ─── Types ───────────────────────────────────────────────COMMENT
MEDIUMsrc/cache-cmd.ts18// ─── Helpers ────────────────────────────────────────────COMMENT
MEDIUMsrc/cache-cmd.ts57// ─── Command ──────────────────────────────────────────────COMMENT
MEDIUMsrc/instruction-targets.ts750// ─── Planning file contents ────────────────────────────COMMENT
MEDIUMsrc/skill-content.ts10// ─── CLI-served skill content ────────────────────────────COMMENT
MEDIUMsrc/source.ts49// ─── Source repo management ──────────────────────────────COMMENT
MEDIUMsrc/source.ts348// ─── Commands ────────────────────────────────────────────COMMENT
MEDIUMsrc/source.ts705// ─── Pull sources ────────────────────────────────────────COMMENT
MEDIUMsrc/source.ts1099// ─── Helpers ─────────────────────────────────────────────COMMENT
MEDIUMsrc/git-exclude-delivered.ts150// ─── Every live checkout's list ───────────────────────────────COMMENT
MEDIUMsrc/git-exclude-delivered.ts258// ─── Sync ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts43// ─── Event collection data flow ─────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts57// ─── STDIN parsing ──────────────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts69// ─── Transcript reading ─────────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts1390// ─── JSONL persistence ──────────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts1513// ─── Events file lock (#804) ────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts1513// ─── Events file lock (#804) ────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts1784// ─── Session state rebuild ──────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts2182// ─── JSONL compaction ───────────────────────────────────COMMENT
MEDIUMsrc/dashboard-collector.ts2359// ─── CLI entry point ────────────────────────────────────COMMENT
MEDIUMsrc/pid-monitor.ts6// ─── Process tree helpers ──────────────────────────────COMMENT
MEDIUMsrc/save-session.ts94 // ── Team push (opt-in) ─────────────────────────────────COMMENT
MEDIUMsrc/viz.ts32// ─── Public option / data types ──────────────────────────────────────────────COMMENT
MEDIUMsrc/viz.ts114// ─── Internal types ───────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/viz.ts141// ─── Path resolution ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/viz.ts247// ─── Vote aggregation ─────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/viz.ts298// ─── Index loading ────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/viz.ts338// ─── Aggregation helpers ──────────────────────────────────────────────────────COMMENT
MEDIUMsrc/viz.ts392// ─── Core build function ──────────────────────────────────────────────────────COMMENT
745 more matches not shown…
Hyper-Verbose Identifiers234 hits · 228 pts
SeverityFileLineSnippetContext
LOWsrc/git-hook.ts348export function clearGitHookRepositoryEnv(env: NodeJS.ProcessEnv = process.env): void {CODE
LOWsrc/push.ts45export async function filterExistingTopLevelPaths(CODE
LOWsrc/push.ts243async function warnKeptCopiesTheTeamChanged(CODE
LOWsrc/push.ts473function reuseRecordedDestinations(groups: PushGroup[]): void {CODE
LOWsrc/update-policy.ts10export function resolveEffectiveUpdatePolicy(CODE
LOWsrc/mcp-git-exclude.ts56export function carriesLocalAgentCredential(entry: unknown): boolean {CODE
LOWsrc/mr-hint.ts278async function listGitHubMergedMRsViaREST(CODE
LOWsrc/instruction-targets.ts308export function deliversInstructionsByHook(tool: string, scope: Scope): boolean {CODE
LOWsrc/instruction-targets.ts326export async function nativeProjectInstructions(tool: string, projectRoot: string): Promise<string> {CODE
LOWsrc/instruction-targets.ts417export async function instructionHookChannelInstallable(tool: string): Promise<boolean> {CODE
LOWsrc/instruction-targets.ts437export async function instructionChannelProblems(teamConfig: TeamaiConfig, localConfig: LocalConfig): Promise<string[]> CODE
LOWsrc/instruction-targets.ts491export function unreadableRulesFileMessage(tool: string, unreadable: NonNullable<UserRulesFile['unreadable']>): string {CODE
LOWsrc/instruction-targets.ts572export async function isInstructionToolInstalled(tool: string, paths: ToolPaths, localConfig: LocalConfig): Promise<boolCODE
LOWsrc/instruction-targets.ts596export async function resolveInstructionTargets(CODE
LOWsrc/instruction-targets.ts742async function recordOpencodeContextEntry(localConfig: LocalConfig, ref: { config: string; entry: string }, added: booleCODE
LOWsrc/claude-hook-host.ts47export function claudeHookRunsInAnotherHost(tool: string, env: NodeJS.ProcessEnv = process.env): boolean {CODE
LOWsrc/skill-content.ts352async function collectSupplementaryFiles(skillDir: string): Promise<Array<{ relativePath: string; content: string }>> {CODE
LOWsrc/doctor.ts628async function buildTrackedHookIndexCheck(localConfig: LocalConfig): Promise<Check[]> {CODE
LOWsrc/transcript-parser.ts223function extractRecalledDocIdsFromComment(text: string, out: Set<string>): void {CODE
LOWsrc/transcript-parser.ts234function extractRecalledDocIdsFromValue(CODE
LOWsrc/source.ts160async function resolveSourcePhysicalPath(target: string): Promise<string> {CODE
LOWsrc/source.ts182async function resolveSourceCopyDestination(target: string): Promise<{ path: string; replacesSymlink: boolean }> {CODE
LOWsrc/source.ts1268async function assertSourceSkillRootIsNotSymlink(target: string): Promise<void> {CODE
LOWsrc/source.ts1278async function assertSourceDestinationsUnchanged(manifest: SourceInstallManifest, baseDir: string): Promise<void> {CODE
LOWsrc/source.ts1553export async function getSourcePushQuarantineNames(localConfig: LocalConfig): Promise<Set<string>> {CODE
LOWsrc/git-exclude-delivered.ts251export function describeUnreadableGitExcludeSetting(localConfig: LocalConfig): string {CODE
LOWsrc/git-exclude-delivered.ts336export async function reportDeliveredGitExclude(localConfig: LocalConfig, paths: Iterable<string>): Promise<GitExcludeReCODE
LOWsrc/dashboard-collector.ts447function parseCodexCumulativeUsage(entry: { type?: string; payload?: unknown }): CodexTokenSnapshot | null {CODE
LOWsrc/dashboard-collector.ts488async function readLatestCodexUsageFromTail(transcriptPath: string): Promise<CodexTokenSnapshot | null> {CODE
LOWsrc/dashboard-collector.ts604async function readLatestCopilotUsageFromTail(CODE
LOWsrc/dashboard-collector.ts651async function waitForCopilotShutdownUsage(CODE
LOWsrc/dashboard-collector.ts677async function findCopilotRunMarkerAfter(CODE
LOWsrc/dashboard-collector.ts791export function resolveCopilotUsageTranscript(CODE
LOWsrc/dashboard-collector.ts2172export function aggregateSessionInterventions(CODE
LOWsrc/hermes-hooks.ts56export function foreignInstructionsPlugin(): string {CODE
LOWsrc/init.ts896export function buildProjectScopeGitignore(): string {CODE
LOWsrc/init.ts932export function migrateSelfModeGitignoreContent(content: string): { changed: boolean; content: string } {CODE
LOWsrc/projects.ts207export function resolveProjectResourceNamespaces(input: {CODE
LOWsrc/projects.ts244export async function resolveActiveLearningsNamespaces(CODE
LOWsrc/manifest-schema.ts138export function assertSafeFallbackNamespaces(ids: string[], source: string): string[] {CODE
LOWsrc/manifest-schema.ts252export function assertNoCaseAliasedNamespaces(entries: Iterable<NamespaceEntry>, kind: string): void {CODE
LOWsrc/contribute.ts54export async function rebuildIndexAfterContribute(localConfig: LocalConfig): Promise<void> {CODE
LOWsrc/teamai-only-files.ts79export async function describeNoLongerTeamaiOnly(file: string, projectRoot: string): Promise<string> {CODE
LOWsrc/teamai-only-files.ts108async function opencodeInstructionEntries(CODE
LOWsrc/teamai-only-files.ts175async function judgeOpencodeInstructions(teamConfig: TeamaiConfig, localConfig: LocalConfig): Promise<{ file: string; teCODE
LOWsrc/namespaced-entries.ts587export function reportUndeliveredEntryNotices(resolution: Pick<EntryResolution<unknown>, 'notices'>): void {CODE
LOWsrc/stats.ts198function mergeDashboardAndReported(CODE
LOWsrc/doctor-git-exclude.ts136export async function buildDeliveredGitExcludeChecks(ctx: DoctorContext): Promise<Check[]> {CODE
LOWsrc/doctor-git-exclude.ts213export async function buildLocalAgentGitExcludeChecks(): Promise<Check[]> {CODE
LOWsrc/doctor-git-exclude.ts225export async function localAgentGitExcludeNotes(): Promise<string[]> {CODE
LOWsrc/uninstall.ts305function instructionBlocksWrittenBy(tool: string): string[] {CODE
LOWsrc/uninstall.ts1551async function removePlannedGitExcludeBlocks(plan: RemovalPlan, heldMcp: ReadonlySet<string>, incomplete: boolean): PromCODE
LOWsrc/uninstall.ts1666async function removeHomeLocalScopeMcpServers(): Promise<string[]> {CODE
LOWsrc/uninstall.ts1695async function removeHomeGitExcludeBlocks(blocks: HomeGitExcludeBlocks): Promise<void> {CODE
LOWsrc/mcp-reconcile.ts131function describeRemovedServerPreview(target: McpTarget, name: string): string {CODE
LOWsrc/mcp-reconcile.ts599export async function unrecordedUnmappedMcpDefaults(CODE
LOWsrc/mcp-reconcile.ts1053async function shadowedBareCopilotServer(target: McpTarget): Promise<string | undefined> {CODE
LOWsrc/mcp-reconcile.ts1245export async function judgeTeamaiOnlyMcpConfigs(CODE
LOWsrc/mcp-reconcile.ts1544export async function earlierMappedMcpFileEvidence(CODE
LOWsrc/mcp-reconcile.ts1867async function protectResolvedMcpConfigs(CODE
174 more matches not shown…
Over-Commented Block125 hits · 112 pts
SeverityFileLineSnippetContext
LOWexamples/ci/coding-ci-mr-extract.yaml1# TeamAI MR Knowledge Extract — 智研 / Coding CI(TGit / 工蜂)COMMENT
LOW.github/workflows/code-erosion.yml1name: Code ErosionCOMMENT
LOW.github/workflows/codex-review-on-assign.yml1name: Codex Review on AssignCOMMENT
LOW.github/workflows/codex-review-on-assign.yml21# authorized this PR — either the current assigner, or an existing assignee.COMMENT
LOW.github/workflows/codex-review-on-assign.yml241 core.setOutput('prompt-file', promptPath);COMMENT
LOW.github/ast-grep-rules/ts-verbosity.yml1# TypeScript verbosity rules for the code-erosion CI layer.COMMENT
LOWsrc/push.ts801COMMENT
LOWsrc/push.ts841 // hands pushCore a config whose localPath is the worktree's .teamai.COMMENT
LOWsrc/push.ts941 options: GlobalOptions & { all?: boolean; role?: string; project?: string; branch?: string },COMMENT
LOWsrc/push.ts1081 for (const reason of brokenCatalogs) log.error(`Cannot push with an invalid model catalog: ${reason}`);COMMENT
LOWsrc/push.ts1221 log.warn(COMMENT
LOWsrc/push.ts1301 }COMMENT
LOWsrc/push.ts1801 // pushRepoBranch(), which resets and cleans the clone. Re-apply theCOMMENT
LOWsrc/mr-hint.ts1import { spawnSync } from 'node:child_process';COMMENT
LOWsrc/skill-content.ts1import fs from 'node:fs';COMMENT
LOWsrc/migrate.ts201 // adopting (renaming) it FIRST is what keeps the "partition already built"COMMENT
LOWsrc/hooks-cmd.ts141 // build's file and always reported missing.COMMENT
LOWsrc/transcript-parser.ts61 const readerToolUseIds = new Set<string>();COMMENT
LOWsrc/dashboard-collector.ts41import { estimateClaudeRequest } from './model-pricing.js';COMMENT
LOWsrc/dashboard-collector.ts1221 // machine-level events file mixes sessions from every team. Do this beforeCOMMENT
LOWsrc/dashboard-collector.ts1781 });COMMENT
LOWsrc/init.ts1341 } catch (e) {COMMENT
LOWsrc/init.ts2141 const reloadedTeamConfig = await loadTeamConfig(localPath);COMMENT
LOWsrc/codebase-extract.ts801 // not routed through import's cache-dir redirection), it lands straight inCOMMENT
LOWsrc/manifest-schema.ts21// is a name no admin typed on purpose, and it renders as something other thanCOMMENT
LOWsrc/contribute.ts81 docsDir: (await pathExists(docsRepoDir)) ? docsRepoDir : undefined,COMMENT
LOWsrc/votes-judge.ts1// -*- coding: utf-8 -*-COMMENT
LOWsrc/stats.ts241 // Dashboard metrics follow the same scope rules `pull` reports with, so whatCOMMENT
LOWsrc/uninstall.ts2001 if (await reconcileOpencodeInstructions(config, entry, false, 'team instructions')) log.success(`Removed "${entry}COMMENT
LOWsrc/uninstall.ts2421 // Project scope: the managed-mcp manifests are PER-WORKTREE under theCOMMENT
LOWsrc/mcp-reconcile.ts81 trackResolvedMcpFiles,COMMENT
LOWsrc/commands-reference.ts1import type { Command, Option } from 'commander';COMMENT
LOWsrc/hook-dispatch-cli.ts241 // The provider rejects an empty CurrentDirectory with ReturnValue 21, and aCOMMENT
LOWsrc/builtin-skills.ts21// copied to local AI tool skill directories. The workflowCOMMENT
LOWsrc/hook-handlers.ts101COMMENT
LOWsrc/hook-handlers.ts621 );COMMENT
LOWsrc/hook-handlers.ts721COMMENT
LOWsrc/dashboard.ts101 watchDebounce = setTimeout(() => void pushSessions(), 200);COMMENT
LOWsrc/graph-aggregate.ts41 // Once merged, that tag travels with the node/edge forever —COMMENT
LOWsrc/graph-aggregate.ts61 // identity as one already pushed here in an earlierCOMMENT
LOWsrc/graph-aggregate.ts221 // withheld would also discard a DIFFERENT, fully-allowed pair thatCOMMENT
LOWsrc/graph-aggregate.ts261 const raw = JSON.parse(await fs.readFile(graphPath, 'utf8'));COMMENT
LOWsrc/graph-aggregate.ts321 // A slug both sets claim needs its global metadata restored to theCOMMENT
LOWsrc/coauthor-reconcile.ts21//COMMENT
LOWsrc/coauthor-reconcile.ts41// Claude family settings.json attribution.{commit,pr} deterministicCOMMENT
LOWsrc/usage-tracker.ts41}COMMENT
LOWsrc/usage-tracker.ts61// ▼COMMENT
LOWsrc/types.ts281// │ │COMMENT
LOWsrc/types.ts461 // ~/.qoder-cn instead of ~/.qoder, so it needs its own entry rather thanCOMMENT
LOWsrc/types.ts501 },COMMENT
LOWsrc/types.ts521 // Trae CN (domestic.trae.cn) shares every project path with theCOMMENT
LOWsrc/types.ts541 // Markdown (the CLI also reads <project>/.zcode/agents/ per workspace).COMMENT
LOWsrc/types.ts1481// Claude Code sessionCOMMENT
LOWsrc/types.ts1921/** Phase 2: git commit is neutral (no bonus, no penalty) */COMMENT
LOWsrc/todowrite-hint.ts1import path from 'node:path';COMMENT
LOWsrc/code-knowledge-recall.ts521 }COMMENT
LOWsrc/remove.ts141 const allNames = new Set([...teamItems.map(qualified), ...localItems.map((i) => i.name)]);COMMENT
LOWsrc/session-owners.ts41export function snapshotPathIn(dataHome: string, name: ReportedSnapshotName): string {COMMENT
LOWsrc/contribute-check.ts21 CONTRIBUTE_INTERRUPT_WEIGHT,COMMENT
LOWsrc/contribute-check.ts41// │COMMENT
65 more matches not shown…
Structural Annotation Overuse67 hits · 106 pts
SeverityFileLineSnippetContext
LOWskill-data/wiki/references/agents/graph-rag-agent.md22### Step 1: Relationship extractionCOMMENT
LOWskill-data/wiki/references/agents/graph-rag-agent.md55### Step 2: Generate graph documents one by oneCOMMENT
LOWskill-data/wiki/references/agents/graph-rag-agent.md261### Step 3: Generate the graph directory READMECOMMENT
LOWskill-data/wiki/references/agents/graph-rag-agent.md293### Step 4: Return summaryCOMMENT
LOW⚡skill-data/wiki/references/agents/kb-doc-generator.md27### Step 0: Load the methodologyCOMMENT
LOW⚡skill-data/wiki/references/agents/kb-doc-generator.md31### Step 1: Checkpoint checkCOMMENT
LOW⚡skill-data/wiki/references/agents/kb-doc-generator.md37### Step 2: Dispatch strategy decisionCOMMENT
LOWskill-data/wiki/references/agents/kb-doc-generator.md238### Step 3: Self-check (accuracy verification + interface reconciliation)COMMENT
LOWskill-data/wiki/references/agents/kb-doc-generator.md281### Step 4: Return summaryCOMMENT
LOWskill-data/wiki/references/phases/k3-ai-native.md5### Step 1: Inject AI-Native elementsCOMMENT
LOWskill-data/wiki/references/phases/k3-ai-native.md17### Step 2: Graph RAG graph document setCOMMENT
LOWskill-data/wiki/references/phases/k3-ai-native.md46### Step 3: Cross-document consistency checkCOMMENT
LOW⚡…-data/wiki/references/phases/k1-reverse-engineering.md5### Step 1: Optionally run the scan script (recommended)COMMENT
LOW⚡…-data/wiki/references/phases/k1-reverse-engineering.md12### Step 2: Key file extractionCOMMENT
LOW⚡…-data/wiki/references/phases/k1-reverse-engineering.md19### Step 3: Architecture reverse-engineering (see phase1-reverse-engineering.md for details)COMMENT
LOW⚡…-data/wiki/references/phases/k1-reverse-engineering.md25### Step 4: Generate the architecture analysis reportCOMMENT
LOW…-data/wiki/references/phases/k1-reverse-engineering.md56### Step 5: Interface inventory scan (run separately per check type)COMMENT
LOWskill-data/wiki/references/phases/k4-quality.md5### Step 1: Automated validationCOMMENT
LOWskill-data/wiki/references/phases/k4-quality.md22### Step 2: Accuracy auditCOMMENT
LOW⚡skill-data/wiki/references/phases/k4-quality.md45### Step 3: RAG retrieval spot checkCOMMENT
LOW⚡skill-data/wiki/references/phases/k4-quality.md49### Step 4: AI end-to-end validation (E2E Validation)COMMENT
LOWskill-data/wiki/references/phases/k4-quality.md138### Step 5: Generate the quality reportCOMMENT
LOW⚡src/init.ts763 // Step 5: inject hooks (built-in dispatch incl. the reporter) via the sameCOMMENT
LOW⚡src/init.ts768 // Step 6: also initialize local-agent config so the new hook-dispatch --stdinCOMMENT
LOWsrc/init.ts610 // Step 0: scope (same rules as git init — default project)COMMENT
LOWsrc/init.ts661 // Step 1: API key. Persist --token when given (one command sets endpoint+key),COMMENT
LOWsrc/init.ts673 // Step 2: write a minimal local teamai.yaml stub (default toolPaths) to driveCOMMENT
LOWsrc/init.ts688 // Step 4: save local config (kind: http; only the URL is stored, never the key)COMMENT
LOWsrc/init.ts1128 // Step 0: single-repo mode is always project scope, rooted at the business repo.COMMENT
LOWsrc/init.ts1181 // Step 1: derive provider + remote from the business repo's origin.COMMENT
LOWsrc/init.ts1210 // Step 2: authenticate (needed to push reports + open knowledge PRs).COMMENT
LOWsrc/init.ts1223 // Step 3: build the .teamai/ knowledge skeleton on the active tree (committed to main).COMMENT
LOWsrc/init.ts1271 // Step 4: assemble local config (kind: self). dataHome points at the partitionCOMMENT
LOWsrc/init.ts1315 // Step 5: write local config (into the partition via dataHome) + single-repoCOMMENT
LOWsrc/init.ts1409 // Step 6: register member on the reports orphan branch (never touches main / active tree).COMMENT
LOWsrc/init.ts1532 // Step 0: Resolve scope (default project; only explicit --scope user → ~/ )COMMENT
LOWsrc/init.ts1592 // Step 1: Get repo input (positional or --repo alias; prompt if neither)COMMENT
LOWsrc/init.ts1632 // Step 2: Ensure provider tools are installed and authenticateCOMMENT
LOWsrc/init.ts1652 // Step 3: Clone or link repoCOMMENT
LOWsrc/init.ts1844 // Step 4: Load team configCOMMENT
LOWsrc/init.ts1949 // Step 5: member roster on the teamai-reports orphan branch (never theCOMMENT
LOWsrc/init.ts2039 // Step 6: Save local configCOMMENT
LOWsrc/init.ts2140 // Step 7: Inject built-in + team hooks into AI toolsCOMMENT
LOWsrc/init.ts2182 // Step 8: deliver the team's resources now. Rules and MCP are read once atCOMMENT
LOWsrc/enrich-with-ai.ts210 // Step 1: AI enrichment per module (parallel)COMMENT
LOWsrc/enrich-with-ai.ts233 // Step 2: Repo-level domain classification (single call)COMMENT
LOWsrc/enrich-with-ai.ts258 // Step 3: Build manifest V2COMMENT
LOW⚡src/pull.ts2090 // Step 5: Auto-report usage data — handled centrally in pull() to avoidCOMMENT
LOW⚡src/pull.ts2094 // Step 6: Show skill recommendationsCOMMENT
LOWsrc/pull.ts1164 // Step 1: refresh team repo (git pull, or HTTP /repo materialization)COMMENT
LOWsrc/pull.ts1588 // Step 2: Sync each resource typeCOMMENT
LOWsrc/pull.ts1834 // Step 3: Clean up tombstoned resourcesCOMMENT
LOWsrc/pull.ts1959 // Step 4: Deploy CLI built-in skillsCOMMENT
LOW⚡src/__tests__/distilly-roundtrip.test.ts35 // Step 1: the exact deploy call pullSingleSource() makes.COMMENT
LOW⚡src/__tests__/distilly-roundtrip.test.ts38 // Step 2: the exact validation call the push path makes on skills.COMMENT
LOW⚡src/__tests__/pull-tombstone.test.ts709 // Step 1: Pull as hai role — should get common + hai skillsCOMMENT
LOW⚡src/__tests__/pull-tombstone.test.ts716 // Step 2: Switch to pm role (simulate what `roles set pm` does)COMMENT
LOWsrc/__tests__/pull-tombstone.test.ts728 // Step 3: Pull as pm role — should get common + pm, remove hai-onlyCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts649 // Step 1: Uninstall everythingCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts654 // Step 2: Verify cleanup — config.yaml should not existCOMMENT
7 more matches not shown…
Verbosity Indicators45 hits · 67 pts
SeverityFileLineSnippetContext
LOW⚡src/init.ts763 // Step 5: inject hooks (built-in dispatch incl. the reporter) via the sameCOMMENT
LOW⚡src/init.ts768 // Step 6: also initialize local-agent config so the new hook-dispatch --stdinCOMMENT
LOWsrc/init.ts610 // Step 0: scope (same rules as git init — default project)COMMENT
LOWsrc/init.ts661 // Step 1: API key. Persist --token when given (one command sets endpoint+key),COMMENT
LOWsrc/init.ts673 // Step 2: write a minimal local teamai.yaml stub (default toolPaths) to driveCOMMENT
LOWsrc/init.ts688 // Step 4: save local config (kind: http; only the URL is stored, never the key)COMMENT
LOWsrc/init.ts1128 // Step 0: single-repo mode is always project scope, rooted at the business repo.COMMENT
LOWsrc/init.ts1181 // Step 1: derive provider + remote from the business repo's origin.COMMENT
LOWsrc/init.ts1210 // Step 2: authenticate (needed to push reports + open knowledge PRs).COMMENT
LOWsrc/init.ts1223 // Step 3: build the .teamai/ knowledge skeleton on the active tree (committed to main).COMMENT
LOWsrc/init.ts1271 // Step 4: assemble local config (kind: self). dataHome points at the partitionCOMMENT
LOWsrc/init.ts1315 // Step 5: write local config (into the partition via dataHome) + single-repoCOMMENT
LOWsrc/init.ts1409 // Step 6: register member on the reports orphan branch (never touches main / active tree).COMMENT
LOWsrc/init.ts1532 // Step 0: Resolve scope (default project; only explicit --scope user → ~/ )COMMENT
LOWsrc/init.ts1592 // Step 1: Get repo input (positional or --repo alias; prompt if neither)COMMENT
LOWsrc/init.ts1632 // Step 2: Ensure provider tools are installed and authenticateCOMMENT
LOWsrc/init.ts1652 // Step 3: Clone or link repoCOMMENT
LOWsrc/init.ts1844 // Step 4: Load team configCOMMENT
LOWsrc/init.ts1949 // Step 5: member roster on the teamai-reports orphan branch (never theCOMMENT
LOWsrc/init.ts2039 // Step 6: Save local configCOMMENT
LOWsrc/init.ts2140 // Step 7: Inject built-in + team hooks into AI toolsCOMMENT
LOWsrc/init.ts2182 // Step 8: deliver the team's resources now. Rules and MCP are read once atCOMMENT
LOWsrc/enrich-with-ai.ts210 // Step 1: AI enrichment per module (parallel)COMMENT
LOWsrc/enrich-with-ai.ts233 // Step 2: Repo-level domain classification (single call)COMMENT
LOWsrc/enrich-with-ai.ts258 // Step 3: Build manifest V2COMMENT
LOW⚡src/pull.ts2090 // Step 5: Auto-report usage data — handled centrally in pull() to avoidCOMMENT
LOW⚡src/pull.ts2094 // Step 6: Show skill recommendationsCOMMENT
LOWsrc/pull.ts1164 // Step 1: refresh team repo (git pull, or HTTP /repo materialization)COMMENT
LOWsrc/pull.ts1588 // Step 2: Sync each resource typeCOMMENT
LOWsrc/pull.ts1834 // Step 3: Clean up tombstoned resourcesCOMMENT
LOWsrc/pull.ts1959 // Step 4: Deploy CLI built-in skillsCOMMENT
LOW⚡src/__tests__/distilly-roundtrip.test.ts35 // Step 1: the exact deploy call pullSingleSource() makes.COMMENT
LOW⚡src/__tests__/distilly-roundtrip.test.ts38 // Step 2: the exact validation call the push path makes on skills.COMMENT
LOW⚡src/__tests__/pull-tombstone.test.ts709 // Step 1: Pull as hai role — should get common + hai skillsCOMMENT
LOW⚡src/__tests__/pull-tombstone.test.ts716 // Step 2: Switch to pm role (simulate what `roles set pm` does)COMMENT
LOWsrc/__tests__/pull-tombstone.test.ts728 // Step 3: Pull as pm role — should get common + pm, remove hai-onlyCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts649 // Step 1: Uninstall everythingCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts654 // Step 2: Verify cleanup — config.yaml should not existCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts658 // Step 3: Restore for subsequent tests (uninstall removed the clone)COMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts671 // Step 1: Check if the test repo has a roles manifestCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts678 // Step 2: Parse available role ids from the outputCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts706 // Step 4: Switch to role B and pullCOMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts715 // Step 5: Verify skill count changed (different roles → different skill sets)COMMENT
LOW⚡src/__tests__/e2e/e2e.test.ts721 // Step 6: Restore to role A for subsequent testsCOMMENT
LOWsrc/__tests__/e2e/e2e.test.ts693 // Step 3: Set role A and pullCOMMENT
Modern AI Meta-Vocabulary12 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUM…a/wiki/references/methodology/phase2-document-types.md213## Type-9: Graph Document Set (Graph RAG)COMMENT
MEDIUM…ill-data/wiki/references/methodology/phase4-quality.md27## RAG Retrieval Test CasesCOMMENT
MEDIUM…ill-data/wiki/references/methodology/phase4-quality.md164### Phase 3b Checklist: Graph Document Set (Graph RAG)COMMENT
MEDIUM…a/wiki/references/methodology/phase3-ai-enhancement.md114# Graph Document Set (Graph RAG)COMMENT
MEDIUMskill-data/wiki/references/agents/graph-rag-agent.md1# Graph RAG AgentCOMMENT
MEDIUMskill-data/wiki/references/agents/graph-rag-agent.md265# {project_name} Graph Document Set (Graph RAG)COMMENT
MEDIUM…ill-data/wiki/references/templates/project-overview.md122### Graph document set (Graph RAG)COMMENT
MEDIUMskill-data/wiki/references/phases/k3-ai-native.md17### Step 2: Graph RAG graph document setCOMMENT
MEDIUM⚡skill-data/wiki/references/phases/k4-quality.md45### Step 3: RAG retrieval spot checkCOMMENT
MEDIUMskill-data/wiki/references/phases/k4-quality.md167## RAG Retrieval Spot CheckCOMMENT
MEDIUMsrc/__tests__/copilot-adapter.test.ts189 await fse.writeFile(expectedPath(), native.replace('# Guardrails', '# Updated guardrails'));CODE
MEDIUMsrc/__tests__/copilot-adapter.test.ts199 expect(pushed).toContain('# Updated guardrails');CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALsrc/__tests__/reports-branch-readonly.test.ts130 const orphanAdds = mocks.repoGit.raw.mock.calls.filter(([args]) => (args as string[]).includes('--orphan'));CODE
Fake / Example Data6 hits · 8 pts
SeverityFileLineSnippetContext
LOWsrc/__tests__/generic-git-provider.test.ts113 expect(normalizeGitIdentity('Jane Doe')).toBe('Jane-Doe');CODE
LOWsrc/__tests__/iwiki-review-apply.test.ts106 token: 'fake-token',CODE
LOWsrc/__tests__/iwiki-review-apply.test.ts133 token: 'fake-token',CODE
LOW⚡src/__tests__/gh-org.test.ts17 getGitHubToken: vi.fn().mockReturnValue('fake-token-xyz'),CODE
LOW⚡src/__tests__/gh-org.test.ts46 vi.mocked(getGitHubToken).mockReturnValue('fake-token-xyz');CODE
LOW⚡src/__tests__/gh-org.test.ts50 vi.mocked(getGitHubToken).mockReturnValue('fake-token-xyz');CODE
Excessive Try-Catch Wrapping2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMskill-data/wiki/scripts/scan_repo.py214 print(f"Error: {repo_path} is not a valid directory", file=sys.stderr)CODE
MEDIUMskill-data/wiki/scripts/validate_kb.py139 print(f"Error: {kb_dir} is not a valid directory", file=sys.stderr)CODE
Deep Nesting3 hits · 3 pts
SeverityFileLineSnippetContext
LOWskill-data/wiki/scripts/scan_repo.py93CODE
LOWskill-data/wiki/scripts/scan_repo.py143CODE
LOWskill-data/wiki/scripts/validate_kb.py131CODE
Unused Imports2 hits · 2 pts
SeverityFileLineSnippetContext
LOWskill-data/wiki/scripts/validate_kb.py22CODE
LOW.github/scripts/erosion-summary.py13CODE