Self-hosted, open-source agent skill registry for enterprises. Publish & version skill packages, govern with RBAC and audit logs, deploy on-premise with Docker or Kubernetes.
This report summarizes scanner evidence for iflytek/skillhub, a Java project with 5,171 GitHub stars. SynthScan examined 342,727 lines of code across 2496 source files, recording 498 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 4.9 (Low 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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 230 finding(s).
Are imports declared and package/API names verified? 191 finding(s).
Are wrappers, guards, and repeated structures necessary? 249 finding(s).
Which changes need focused human review? 498 finding(s).
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.
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.
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.
The scanner identified 498 distinct pattern matches across 13 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | …ek/skillhub/infra/scanner/SkillScannerServiceTest.java | 21 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL⚡ | …ek/skillhub/infra/scanner/SkillScannerServiceTest.java | 24 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL⚡ | …ek/skillhub/infra/scanner/SkillScannerServiceTest.java | 27 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL⚡ | …ek/skillhub/infra/scanner/SkillScannerServiceTest.java | 30 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL | …a/com/iflytek/skillhub/infra/http/WebClientConfig.java | 27 | reactor.netty.http.client.HttpClient reactorClient = reactor.netty.http.client.HttpClient.create() | CODE |
| CRITICAL⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 36 | new com.iflytek.skillhub.auth.session.PlatformSessionService(), | CODE |
| CRITICAL⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 45 | var principal = new com.iflytek.skillhub.auth.rbac.PlatformPrincipal( | CODE |
| CRITICAL⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 79 | new com.iflytek.skillhub.auth.session.PlatformSessionService(), | CODE |
| CRITICAL⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 89 | var principal = new com.iflytek.skillhub.auth.rbac.PlatformPrincipal( | CODE |
| CRITICAL⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 121 | new com.iflytek.skillhub.auth.session.PlatformSessionService(), | CODE |
| CRITICAL⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 131 | var principal = new com.iflytek.skillhub.auth.rbac.PlatformPrincipal( | CODE |
| CRITICAL | …tek/skillhub/auth/oauth/CustomOidcUserServiceTest.java | 186 | new org.springframework.security.oauth2.core.OAuth2Error("access_denied"))); | CODE |
| CRITICAL | …h/oauth/FeishuOAuth2AccessTokenResponseClientTest.java | 185 | org.springframework.security.oauth2.core.endpoint.OAuth2AccessTokenResponse.withToken("github-token") | STRING |
| CRITICAL | …iflytek/skillhub/auth/oauth/GitHubClaimsExtractor.java | 33 | @org.springframework.beans.factory.annotation.Value("${skillhub.auth.github.api-base-ur | CODE |
| CRITICAL | …illhub/repository/SkillSuiteBundlePersistenceTest.java | 190 | var manifest = new com.iflytek.skillhub.domain.suite.bundle.SkillSuiteBundleManifestParser().parse(""" | CODE |
| CRITICAL | …lytek/skillhub/compat/ClawHubCompatAppServiceTest.java | 110 | assertThat(java.nio.charset.StandardCharsets.ISO_8859_1.newEncoder().canEncode(location)).isTrue(); | CODE |
| CRITICAL | …k/skillhub/listener/NotificationEventListenerTest.java | 274 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL | …k/skillhub/listener/NotificationEventListenerTest.java | 349 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL | …k/skillhub/listener/NotificationEventListenerTest.java | 369 | org.assertj.core.api.Assertions.assertThatThrownBy(() -> | CODE |
| CRITICAL | …flytek/skillhub/stream/AbstractStreamConsumerTest.java | 72 | org.assertj.core.api.Assertions.assertThatThrownBy( | CODE |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 86 | .willReturn(List.of(new com.iflytek.skillhub.domain.namespace.NamespaceMember(1L, "owner-1", NamespaceRo | CODE |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 152 | org.springframework.data.domain.PageRequest.of(0, 20), | CODE |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 203 | mockMvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put("/api/v1/namespaces/team | CODE |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 251 | .willReturn(new org.springframework.data.domain.PageImpl<>(List.of(), org.springframework.data.domain.Pa | STRING |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 269 | .willReturn(new org.springframework.data.domain.PageImpl<>(List.of(member), org.springframework.data.dom | STRING |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 335 | mockMvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete("/api/v1/namespaces/t | STRING |
| CRITICAL | …skillhub/controller/NamespacePortalControllerTest.java | 355 | mockMvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put("/api/v1/namespaces/team | STRING |
| CRITICAL | …ytek/skillhub/controller/GovernanceControllerTest.java | 182 | mockMvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post("/api/v1/governance/not | CODE |
| CRITICAL | …ytek/skillhub/controller/GovernanceControllerTest.java | 183 | .with(org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors | CODE |
| CRITICAL | …m/iflytek/skillhub/controller/SkillControllerTest.java | 185 | new com.iflytek.skillhub.domain.skill.service.SkillLifecycleProjectionService.VersionProjection( | STRING |
| CRITICAL | …m/iflytek/skillhub/controller/SkillControllerTest.java | 187 | new com.iflytek.skillhub.domain.skill.service.SkillLifecycleProjectionService.VersionProjection( | STRING |
| CRITICAL | …skillhub/controller/NamespaceWorkflowContractTest.java | 211 | org.springframework.test.util.ReflectionTestUtils.setField(namespace, "id", id); | CODE |
| CRITICAL | …skillhub/controller/NamespaceWorkflowContractTest.java | 215 | org.springframework.test.util.ReflectionTestUtils.setField(member, "id", id); | CODE |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 129 | var token = new com.iflytek.skillhub.auth.entity.ApiToken("user-42", "cli", "sk_123456", "hash-1", "[]"); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 130 | org.springframework.test.util.ReflectionTestUtils.setField(token, "id", 7L); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 131 | org.springframework.test.util.ReflectionTestUtils.setField(token, "createdAt", java.time.Instant.parse("2026-03- | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 159 | new com.iflytek.skillhub.auth.entity.ApiToken("user-42", "cli", "sk_123456", "hash-1", "[]"), | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 160 | new com.iflytek.skillhub.auth.entity.ApiToken("user-42", "deploy", "sk_654321", "hash-2", "[]") | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 167 | org.springframework.test.util.ReflectionTestUtils.setField(first, "id", 7L); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 168 | org.springframework.test.util.ReflectionTestUtils.setField(first, "createdAt", java.time.Instant.parse("2026-03- | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 169 | org.springframework.test.util.ReflectionTestUtils.setField(second, "id", 8L); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 170 | org.springframework.test.util.ReflectionTestUtils.setField(second, "createdAt", java.time.Instant.parse("2026-03 | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 195 | var token = new com.iflytek.skillhub.auth.entity.ApiToken("user-42", "cli", "sk_123456", "hash-1", "[]"); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 196 | org.springframework.test.util.ReflectionTestUtils.setField(token, "id", 7L); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 197 | org.springframework.test.util.ReflectionTestUtils.setField(token, "createdAt", java.time.Instant.parse("2026-03- | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 225 | List.of(new com.iflytek.skillhub.auth.entity.ApiToken("user-42", "cli", "sk_123456", "hash-1", "[]")), | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 230 | org.springframework.test.util.ReflectionTestUtils.setField(token, "id", 7L); | STRING |
| CRITICAL⚡ | …m/iflytek/skillhub/controller/TokenControllerTest.java | 231 | org.springframework.test.util.ReflectionTestUtils.setField(token, "createdAt", java.time.Instant.parse("2026-03- | STRING |
| CRITICAL | …ek/skillhub/controller/ReviewPortalControllerTest.java | 226 | .willThrow(new com.iflytek.skillhub.domain.shared.exception.DomainForbiddenException("review.no_permissi | CODE |
| CRITICAL | …ek/skillhub/controller/ReviewPortalControllerTest.java | 486 | .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.header() | CODE |
| CRITICAL⚡ | …ub/controller/portal/SkillLifecycleControllerTest.java | 422 | org.springframework.test.util.ReflectionTestUtils.setField(namespace, "id", id); | CODE |
| CRITICAL⚡ | …ub/controller/portal/SkillLifecycleControllerTest.java | 426 | org.springframework.test.util.ReflectionTestUtils.setField(skill, "id", id); | CODE |
| CRITICAL⚡ | …ub/controller/portal/SkillLifecycleControllerTest.java | 430 | org.springframework.test.util.ReflectionTestUtils.setField(version, "id", id); | CODE |
| CRITICAL | …portal/SkillApprovalVisibilityFlowIntegrationTest.java | 142 | .thenReturn(List.of(new com.iflytek.skillhub.domain.namespace.NamespaceMember( | CODE |
| CRITICAL | …ek/skillhub/controller/cli/CliSkillControllerTest.java | 139 | var response = new com.iflytek.skillhub.dto.cli.CliNamespaceSyncResponse( | CODE |
| CRITICAL | …ek/skillhub/controller/cli/CliSkillControllerTest.java | 140 | List.of(new com.iflytek.skillhub.dto.cli.CliNamespaceSyncItemResponse( | CODE |
| CRITICAL | …ek/skillhub/controller/cli/CliSkillControllerTest.java | 170 | new com.iflytek.skillhub.dto.cli.CliResolveResponse( | CODE |
| CRITICAL | …ek/skillhub/controller/cli/CliSkillControllerTest.java | 189 | new com.iflytek.skillhub.dto.cli.CliResolveResponse( | CODE |
| CRITICAL | …ek/skillhub/controller/cli/CliSkillControllerTest.java | 246 | )).willReturn(new com.iflytek.skillhub.dto.cli.CliDeleteResponse( | CODE |
| CRITICAL | …flytek/skillhub/service/SkillSearchAppServiceTest.java | 128 | new com.iflytek.skillhub.domain.shared.exception.DomainBadRequestException( | CODE |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/e2e/search-page-full.spec.ts | 29 | // ─── Search Input ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-page-full.spec.ts | 103 | // ─── Sort / Filter ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-page-full.spec.ts | 173 | // ─── Skill Count ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-page-full.spec.ts | 213 | // ─── Search Results ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-page-full.spec.ts | 266 | // ─── Pagination ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-page-full.spec.ts | 300 | // ─── Security ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 107 | // ─── Card Display After Search ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 160 | // ─── Card Content & Search Relevance ───────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 188 | // ─── Card Click Navigation ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 236 | // ─── Sort Switching Updates Cards ──────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 275 | // ─── Pagination Card Updates ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 315 | // ─── Loading State ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 331 | // ─── Responsive Layout ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 392 | // ─── Keyboard Navigation ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | web/e2e/search-card-interaction.spec.ts | 435 | // ─── Error Handling ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 1 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 3 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 5 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 7 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 78 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 80 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 84 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 86 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 95 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 97 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 100 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | charts/skillhub/values.yaml | 102 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 44 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 46 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 62 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 64 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 122 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 124 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 208 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 210 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 300 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 302 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 389 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 391 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 452 | # ============================================================================ | COMMENT |
| MEDIUM | charts/skillhub/values.yaml | 454 | # ============================================================================ | COMMENT |
| MEDIUM | …iflytek/skillhub/domain/user/ProfileReviewService.java | 126 | // ── Private helpers ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 219 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 221 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 229 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 231 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 240 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 242 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 252 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 254 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 262 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/tests/publish-cli-test.sh | 264 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 276 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 278 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 296 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 298 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 337 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 339 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 350 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/tests/publish-cli-test.sh | 352 | # ---------------------------------------------------------------------------- | COMMENT |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/e2e/role-access-control.spec.ts | 5 | async function expectLeaveForbiddenRoute(page: Page, route: string) { | CODE |
| LOW | web/e2e/dashboard-routes.spec.ts | 5 | async function expectRouteOpenOrRedirected(page: Page, route: string, heading: string) { | CODE |
| LOW | web/e2e/promotions-review.spec.ts | 92 | async function installPromotionRouteMock(page: Page, expectedSignatures: string[]) { | CODE |
| LOW | web/e2e/promotions-review.spec.ts | 234 | function expectPromotionRequestsSatisfied() { | CODE |
| LOW | web/e2e/rejected-version-republish.spec.ts | 18 | function withoutKnownMetaCspWarning(messages: string[]): string[] { | CODE |
| LOW | web/e2e/helpers/test-data-builder.ts | 85 | async function runCleanupTaskWithTimeout(task: CleanupTask): Promise<void> { | CODE |
| LOW | web/e2e/helpers/test-data-builder.ts | 126 | function buildSkillPackageZipBuffer(suffix: string, options?: SeedSkillOptions): Buffer { | CODE |
| LOW | web/e2e/helpers/test-data-builder.ts | 148 | function createSkillPackageZipFile(suffix: string, options?: SeedSkillOptions): { filePath: string; cleanup: () => void | CODE |
| LOW | web/e2e/helpers/session.ts | 137 | async function restoreCachedSessionForAccount(page: Page, username: string): Promise<SessionSnapshot | null> { | CODE |
| LOW | web/e2e/helpers/review-seed.ts | 26 | export async function createNamespaceReviewData( | CODE |
| LOW | web/e2e/helpers/search-seed.ts | 57 | async function openProvidedPublisherSession(browser: Browser, testInfo: TestInfo): Promise<PublisherSession> { | CODE |
| LOW | web/e2e/helpers/search-seed.ts | 73 | async function openAdhocPublisherSession(browser: Browser, testInfo: TestInfo): Promise<PublisherSession> { | CODE |
| LOW | web/src/bootstrap.ts | 23 | function ensureRuntimeConfigFallback() { | CODE |
| LOW | web/src/app/layout-main-content.ts | 18 | export function resolveAppMainContentPathname( | CODE |
| LOW | web/src/app/router.tsx | 77 | return function RoleProtectedRouteComponent(props: Record<string, unknown>) { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 4 | export function usePromotionRevocationHistory(sourceSkillId: number, enabled: boolean) { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 12 | export function usePendingPromotionRevocations() { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 19 | export function useAdminPromotionRevocationHistory(page: number, size: number) { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 40 | export function useSubmitPromotionRevocation() { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 45 | export function useDirectPromotionRevocation() { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 50 | export function useApprovePromotionRevocation() { | CODE |
| LOW⚡ | web/src/features/promotion/use-promotion-revocations.ts | 55 | export function useRejectPromotionRevocation() { | CODE |
| LOW | web/src/features/skill/skill-delete-flow.ts | 4 | export function isDeleteSlugConfirmationValid(expectedSlug: string, typedSlug: string) { | CODE |
| LOW | web/src/features/skill/skill-delete-flow.ts | 8 | export function resolveDeletedSkillReturnTo(returnTo?: string) { | CODE |
| LOW | web/src/features/skill/markdown-renderer.tsx | 146 | function MarkdownRendererComponent({ content, className, onLinkClick }: MarkdownRendererProps) { | CODE |
| LOW | web/src/features/skill/install-command.tsx | 44 | export function buildSkillhubInstallCommand( | CODE |
| LOW | web/src/features/skill/code-language.ts | 28 | export function inferMarkdownCodeLanguage(value: string): string | undefined { | CODE |
| LOW | web/src/features/skill/skill-action-error.ts | 1 | export function resolveSkillActionErrorTitle(action: 'download' | 'report') { | CODE |
| LOW | web/src/features/skill/overview-collapse.ts | 5 | export function getOverviewCollapseMaxHeight(viewportWidth: number, viewportHeight: number) { | CODE |
| LOW | web/src/features/skill/overview-collapse.ts | 18 | export function shouldReleaseOverviewLayoutQuiet(activeGeneration: number, scheduledGeneration: number) { | CODE |
| LOW | web/src/features/skill/package-relative-link.ts | 84 | export function resolvePackageRelativeLink( | CODE |
| LOW | web/src/features/auth/use-auth-methods.ts | 8 | export function getAuthMethodsQueryOptions(returnTo?: string) { | CODE |
| LOW | web/src/features/notification/use-notifications.ts | 32 | export function markCachedNotificationRead( | CODE |
| LOW | web/src/features/notification/use-notifications.ts | 46 | export function markAllCachedNotificationsRead( | CODE |
| LOW | web/src/features/notification/use-notifications.ts | 74 | export function getNotificationListQueryOptions( | CODE |
| LOW | web/src/features/notification/use-notifications.ts | 90 | export function getUnreadCountQueryOptions(userId?: string | null) { | CODE |
| LOW | web/src/features/notification/use-notifications.ts | 145 | export function useDeleteReadNotification(userId?: string | null) { | CODE |
| LOW | web/src/features/notification/notification-bell.tsx | 7 | export function resolveNotificationUserId(user?: { userId?: string } | null) { | CODE |
| LOW | web/src/features/notification/notification-content.ts | 29 | export function resolveNotificationDisplay(item: NotificationItem, language: string): NotificationDisplay { | CODE |
| LOW | web/src/features/notification/notification-target.ts | 3 | export function resolveNotificationTarget(item: NotificationItem): string { | CODE |
| LOW | …/features/notification/use-notification-preferences.ts | 11 | export function useNotificationPreferences() { | CODE |
| LOW | …/features/notification/use-notification-preferences.ts | 22 | export function useUpdateNotificationPreferences() { | CODE |
| LOW | web/src/features/notification/notification-page.ts | 11 | export function shouldShowNotificationPagination(total: number, pageSize: number) { | CODE |
| LOW | …features/notification/notification-preference-form.tsx | 39 | export function NotificationPreferenceForm({ showHeader = true }: { showHeader?: boolean }) { | CODE |
| LOW | web/src/features/notification/notification-session.ts | 3 | export function getNotificationQueryKeyScope(userId?: string | null) { | CODE |
| LOW | web/src/features/notification/notification-session.ts | 7 | export function clearSessionScopedQueries(queryClient: QueryClient) { | CODE |
| LOW | web/src/features/admin/use-admin-users.ts | 101 | export function useTriggerUserPasswordReset() { | CODE |
| LOW | web/src/features/admin/use-admin-labels.ts | 45 | export function useUpdateAdminLabelSortOrder() { | CODE |
| LOW | web/src/features/admin/use-admin-namespaces.ts | 43 | export function useAdminNamespaceMemberCandidates(slug: string, search: string, enabled = true) { | CODE |
| LOW | web/src/features/admin/use-admin-namespaces.ts | 51 | function invalidateAdminNamespaceQueries(queryClient: ReturnType<typeof useQueryClient>, slug?: string) { | CODE |
| LOW⚡ | web/src/features/admin/use-admin-namespaces.ts | 62 | export function useAddAdminNamespaceMember() { | CODE |
| LOW⚡ | web/src/features/admin/use-admin-namespaces.ts | 71 | export function useBatchAddAdminNamespaceMembers() { | CODE |
| LOW⚡ | web/src/features/admin/use-admin-namespaces.ts | 79 | export function useUpdateAdminNamespaceMemberRole() { | CODE |
| LOW⚡ | web/src/features/admin/use-admin-namespaces.ts | 88 | export function useRemoveAdminNamespaceMember() { | CODE |
| LOW⚡ | web/src/features/admin/use-admin-namespaces.ts | 96 | export function useTransferAdminNamespaceOwnership() { | CODE |
| LOW⚡ | web/src/features/admin/use-admin-namespaces.ts | 105 | export function useAdminNamespaceLifecycleAction() { | CODE |
| LOW | web/src/features/social/use-skill-reviews.ts | 99 | function useReviewMutationInvalidation(skillId: number) { | CODE |
| LOW | web/src/features/publish/upload-zone.tsx | 13 | export function supportsDirectorySelection(input: HTMLInputElement | null): boolean { | CODE |
| LOW | web/src/features/publish/publish-error-utils.ts | 40 | export function isPrecheckConfirmationMessage(message?: string): boolean { | CODE |
| LOW | web/src/features/publish/publish-error-utils.ts | 44 | export function isFrontmatterFailureMessage(message?: string): boolean { | CODE |
| 112 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/i18n/locales/zh.json | 302 | "placeholder": "搜索技能...", | CODE |
| LOW | web/src/i18n/locales/zh.json | 326 | "placeholder": "搜索技能...", | CODE |
| LOW | web/src/i18n/locales/zh.json | 1596 | "placeholder": "说说使用体验,以及其他用户需要了解的信息。", | CODE |
| LOW | web/src/i18n/locales/ru.json | 302 | "placeholder": "Поиск скиллов...", | CODE |
| LOW | web/src/i18n/locales/ru.json | 326 | "placeholder": "Поиск скиллов...", | CODE |
| LOW | web/src/i18n/locales/ru.json | 1819 | "placeholder": "Расскажите об опыте использования и важных деталях.", | CODE |
| LOW | web/src/i18n/locales/en.json | 302 | "placeholder": "Search skills...", | CODE |
| LOW | web/src/i18n/locales/en.json | 326 | "placeholder": "Search skills...", | CODE |
| LOW | web/src/i18n/locales/en.json | 1597 | "placeholder": "Share what worked well and what others should know.", | CODE |
| LOW | web/src/pages/settings/profile.test.ts | 34 | useAuth: () => ({ user: { displayName: 'Test', avatarUrl: null, email: 'test@test.com', canChangePassword: true } }), | CODE |
| LOW⚡ | web/src/pages/admin/system-config.test.tsx | 130 | setup([{ id: 1, providerCode: 'github', email: 'admin@example.com', roleCode: 'SUPER_ADMIN', status: 'ACTIVE', versi | CODE |
| LOW⚡ | web/src/pages/admin/system-config.test.tsx | 131 | await screen.findByText('admin@example.com') | CODE |
| LOW⚡ | web/src/pages/admin/system-config.test.tsx | 140 | setup([{ id: 1, providerCode: 'github', email: 'admin@example.com', roleCode: 'SUPER_ADMIN', status: 'ACTIVE', versi | CODE |
| LOW⚡ | web/src/pages/admin/system-config.test.tsx | 141 | await screen.findByText('admin@example.com') | CODE |
| LOW | web/src/pages/admin/system-config.tsx | 184 | <Input id="role-grant-email" placeholder="admin@example.com" type="email" value={email} | CODE |
| LOW | …auth/settings/InitialExternalRoleGrantServiceTest.java | 39 | ExternalRoleGrantRule rule = new ExternalRoleGrantRule("github", "admin@example.com", role, null); | CODE |
| LOW | …auth/settings/InitialExternalRoleGrantServiceTest.java | 40 | when(rules.lockByIdentityAndStatus("github", "admin@example.com", ExternalRoleGrantRule.Status.ACTIVE)) | CODE |
| LOW⚡ | …auth/settings/InitialExternalRoleGrantServiceTest.java | 61 | service.grantForNewUser(new OAuthClaims("github", "external-42", "admin@example.com", false, | CODE |
| LOW⚡ | …auth/settings/InitialExternalRoleGrantServiceTest.java | 71 | when(rules.lockByIdentityAndStatus("github", "admin@example.com", ExternalRoleGrantRule.Status.ACTIVE)) | CODE |
| LOW⚡ | …auth/settings/InitialExternalRoleGrantServiceTest.java | 74 | service.grantForNewUser(new OAuthClaims("github", "external-42", "admin@example.com", true, | CODE |
| LOW | …/skillhub/auth/settings/ExternalRoleGrantRuleTest.java | 14 | "github", "admin@example.com", mock(Role.class), "admin"); | CODE |
| LOW⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 46 | "user-1", "User", "user@example.com", null, "github", Set.of() | CODE |
| LOW⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 90 | "user-1", "User", "user@example.com", null, "github", Set.of() | CODE |
| LOW⚡ | …lytek/skillhub/auth/oauth/OAuth2LoginHandlersTest.java | 132 | "user-1", "User", "user@example.com", null, "github", Set.of() | CODE |
| LOW | …tek/skillhub/auth/oauth/CustomOidcUserServiceTest.java | 47 | "email", "user@example.com", | CODE |
| LOW | …tek/skillhub/auth/oauth/CustomOidcUserServiceTest.java | 56 | "user@example.com", | CODE |
| LOW | …tek/skillhub/auth/oauth/CustomOidcUserServiceTest.java | 71 | assertThat(claims.email()).isEqualTo("user@example.com"); | CODE |
| LOW | …skillhub/auth/identity/IdentityBindingServiceTest.java | 181 | OAuthClaims claims = new OAuthClaims("github", "external-1", "admin@example.com", true, "admin", Map.of()); | CODE |
| LOW | …ub/repository/JpaProfileReviewQueryRepositoryTest.java | 47 | UserAccount submitter = new UserAccount("user-1", "NewestName", "user@example.com", null); | CODE |
| LOW | …ub/repository/JpaProfileReviewQueryRepositoryTest.java | 48 | UserAccount reviewer = new UserAccount("admin-1", "Admin Reviewer", "admin@example.com", null); | CODE |
| LOW | …skillhub/controller/UserProfileControllerUnitTest.java | 84 | "user@example.com", | CODE |
| LOW | …skillhub/controller/UserProfileControllerUnitTest.java | 89 | UserAccount user = new UserAccount("user-1", "ApprovedName", "user@example.com", "https://example.com/avatar.png | CODE |
| LOW | …skillhub/controller/UserProfileControllerUnitTest.java | 119 | "user@example.com", | CODE |
| LOW | …skillhub/controller/UserProfileControllerUnitTest.java | 124 | UserAccount user = new UserAccount("user-1", "ApprovedName", "user@example.com", "https://example.com/avatar.png | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 90 | "user-1", "OldName", "user@example.com", | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 122 | var user = new UserAccount("user-1", "OldName", "user@example.com", "https://example.com/avatar.png"); | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 141 | var user = new UserAccount("user-1", "OldName", "user@example.com", "https://example.com/avatar.png"); | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 204 | var user = new UserAccount("user-1", "OldName", "user@example.com", "https://example.com/avatar.png"); | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 221 | var user = new UserAccount("user-1", "CurrentName", "user@example.com", "https://example.com/avatar.png"); | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 234 | .andExpect(jsonPath("$.data.email").value("user@example.com")) | CODE |
| LOW | …tek/skillhub/controller/UserProfileControllerTest.java | 241 | var user = new UserAccount("user-1", "CurrentName", "user@example.com", "https://example.com/avatar.png"); | CODE |
| LOW⚡ | …skillhub/controller/NamespaceWorkflowContractTest.java | 78 | UserAccount adminUser = new UserAccount("user-admin", "Admin", "admin@example.com", null); | CODE |
| LOW⚡ | …skillhub/controller/NamespaceWorkflowContractTest.java | 85 | new UserAccount("user-admin", "Admin", "admin@example.com", null) | CODE |
| LOW⚡ | …skillhub/controller/NamespaceWorkflowContractTest.java | 95 | .willReturn(List.of(new NamespaceCandidateUserResponse("user-admin", "Admin", "admin@example.com", "ACTI | CODE |
| LOW | …skillhub/controller/NamespaceWorkflowContractTest.java | 133 | .andExpect(jsonPath("$.data.email").value("admin@example.com")); | CODE |
| LOW | …skillhub/controller/NamespaceWorkflowContractTest.java | 142 | .andExpect(jsonPath("$.data.items[0].email").value("admin@example.com")); | CODE |
| LOW | …b/controller/admin/AdminSkillReportControllerTest.java | 145 | "admin", "admin", "admin@example.com", "", "github", Set.of("SKILL_ADMIN") | CODE |
| LOW | …b/controller/admin/AdminSkillReportControllerTest.java | 154 | "super-admin", "super-admin", "admin@example.com", "", "github", Set.of("SUPER_ADMIN") | CODE |
| LOW | …controller/admin/SystemAuthSettingsControllerTest.java | 70 | {"providerCode":"feishu","email":"admin@example.com","roleCode":"SUPER_ADMIN"} | CODE |
| LOW | …hub/controller/admin/AdminNamespaceControllerTest.java | 171 | "admin@example.com", | STRING |
| LOW | …controller/admin/AdminProfileReviewControllerTest.java | 62 | var principal = new PlatformPrincipal("admin-1", "Admin", "admin@example.com", "", "github", Set.of("USER_ADMIN" | CODE |
| LOW | …controller/admin/AdminProfileReviewControllerTest.java | 72 | var principal = new PlatformPrincipal("user-1", "User", "user@example.com", "", "github", Set.of("USER")); | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 69 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 134 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 160 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 185 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 208 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 231 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …hub/controller/admin/UserManagementControllerTest.java | 254 | "user-42", "admin", "admin@example.com", "", "github", Set.of("USER_ADMIN") | CODE |
| LOW | …om/iflytek/skillhub/service/AuthMethodCatalogTest.java | 29 | oauthProperties.getRegistration().put("placeholder", registration("PLACEHOLDER", "Placeholder")); | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cli/RELEASE.md | 51 | ### Step 1: Run the publish script | COMMENT |
| LOW | cli/RELEASE.md | 71 | ### Step 2: Merge the PR | COMMENT |
| LOW | cli/RELEASE.md | 75 | ### Step 3: Tag and push | COMMENT |
| LOW | builtin-skills/skills/storytelling-advisor/SKILL.md | 105 | ### Step 1: Clarify the Goal | COMMENT |
| LOW | builtin-skills/skills/storytelling-advisor/SKILL.md | 109 | ### Step 2: Harvest the Raw Material | COMMENT |
| LOW | builtin-skills/skills/storytelling-advisor/SKILL.md | 120 | ### Step 3: Select the Framework | COMMENT |
| LOW⚡ | builtin-skills/skills/storytelling-advisor/SKILL.md | 131 | ### Step 4: Map Content to Structure | COMMENT |
| LOW⚡ | builtin-skills/skills/storytelling-advisor/SKILL.md | 134 | ### Step 5: Add Narrative Devices | COMMENT |
| LOW⚡ | builtin-skills/skills/storytelling-advisor/SKILL.md | 140 | ### Step 6: Refine and Cut | COMMENT |
| LOW⚡ | builtin-skills/skills/storytelling-advisor/SKILL.md | 145 | ### Step 7: End with a Punch | COMMENT |
| LOW | builtin-skills/skills/decision-matrix/SKILL.md | 132 | ### Step 1: Define the Decision Clearly | COMMENT |
| LOW | builtin-skills/skills/decision-matrix/SKILL.md | 139 | ### Step 2: Identify the Decision Type | COMMENT |
| LOW⚡ | builtin-skills/skills/decision-matrix/SKILL.md | 150 | ### Step 3: Collect the Data | COMMENT |
| LOW⚡ | builtin-skills/skills/decision-matrix/SKILL.md | 160 | ### Step 4: Apply the Framework | COMMENT |
| LOW⚡ | builtin-skills/skills/decision-matrix/SKILL.md | 164 | ### Step 5: Check for Bias | COMMENT |
| LOW⚡ | builtin-skills/skills/decision-matrix/SKILL.md | 173 | ### Step 6: Decide and Commit | COMMENT |
| LOW⚡ | builtin-skills/skills/decision-matrix/SKILL.md | 180 | ### Step 7: Review the Outcome | COMMENT |
| LOW⚡ | builtin-skills/skills/daily-standup-journal/SKILL.md | 134 | ### Step 1: Identify the Session Type | COMMENT |
| LOW⚡ | builtin-skills/skills/daily-standup-journal/SKILL.md | 140 | ### Step 2: Generate the Prompts | COMMENT |
| LOW⚡ | builtin-skills/skills/daily-standup-journal/SKILL.md | 147 | ### Step 3: Process the Responses | COMMENT |
| LOW⚡ | builtin-skills/skills/daily-standup-journal/SKILL.md | 157 | ### Step 4: Offer Optional Export | COMMENT |
| LOW⚡ | builtin-skills/skills/daily-standup-journal/SKILL.md | 161 | ### Step 5: Surface Action Items | COMMENT |
| LOW | builtin-skills/skills/meeting-note-summarizer/SKILL.md | 113 | ### Step 1: Receive Input | COMMENT |
| LOW | builtin-skills/skills/meeting-note-summarizer/SKILL.md | 122 | ### Step 2: Classify Meeting Type | COMMENT |
| LOW | builtin-skills/skills/meeting-note-summarizer/SKILL.md | 134 | ### Step 3: Extract Core Categories | COMMENT |
| LOW⚡ | builtin-skills/skills/meeting-note-summarizer/SKILL.md | 146 | ### Step 4: Structure the Summary | COMMENT |
| LOW⚡ | builtin-skills/skills/meeting-note-summarizer/SKILL.md | 153 | ### Step 5: Flag Missed Items | COMMENT |
| LOW⚡ | builtin-skills/skills/meeting-note-summarizer/SKILL.md | 161 | ### Step 6: Provide a TL;DR | COMMENT |
| LOW | builtin-skills/skills/triage-nda/SKILL.md | 17 | ### Step 1: Accept the NDA | COMMENT |
| LOW | builtin-skills/skills/triage-nda/SKILL.md | 29 | ### Step 2: Load NDA Playbook | COMMENT |
| LOW | builtin-skills/skills/triage-nda/SKILL.md | 51 | ### Step 3: Quick Screen | COMMENT |
| LOW | builtin-skills/skills/triage-nda/SKILL.md | 116 | ### Step 4: Classify | COMMENT |
| LOW | builtin-skills/skills/triage-nda/SKILL.md | 172 | ### Step 5: Generate Triage Report | COMMENT |
| LOW | builtin-skills/skills/triage-nda/SKILL.md | 217 | ### Step 6: Routing Suggestion | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | builtin-skills/skills/zero-slop/scripts/slopscore.py | 169 | # scope. Short enough to exempt "delve" or "it's not just X, it's Y"; short | COMMENT |
| MEDIUM⚡ | builtin-skills/skills/zero-slop/scripts/slopscore.py | 505 | # ("delve", "tapestry") almost never appear in honest prose. Rider terms | COMMENT |
| MEDIUM⚡ | builtin-skills/skills/zero-slop/scripts/slopscore.py | 506 | # ("robust", "landscape", "elevated") are ordinary technical vocabulary | COMMENT |
| MEDIUM⚡ | builtin-skills/skills/zero-slop/scripts/slopscore.py | 508 | # so "elevated write volume" in a runbook is silent while "elevate your | COMMENT |
| MEDIUM⚡ | builtin-skills/skills/zero-slop/scripts/slopscore.py | 509 | # brand with our seamless platform" fires. Sentence-scoped, not global. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …le/SkillSuiteBundlePreviewRevalidationServiceTest.java | 0 | apiversion: skillhub.iflytek.com/v1alpha1 kind: skillsuitebundle metadata: namespace: global slug: valid-suite spec: mod | STRING |
| HIGH | …bundle/SkillSuiteBundleConfirmationAppServiceTest.java | 0 | apiversion: skillhub.iflytek.com/v1alpha1 kind: skillsuitebundle metadata: namespace: global slug: valid-suite spec: mod | STRING |
| HIGH | …n/suite/bundle/SkillSuiteBundleManifestParserTest.java | 0 | apiversion: skillhub.iflytek.com/v1alpha1 kind: skillsuitebundle metadata: namespace: global slug: valid-suite spec: mod | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 586 | - **[astron-agent](https://github.com/iflytek/astron-agent)** — Enterprise-grade, commercial-friendly agentic workflow p | CODE |
| MEDIUM | AGENTS.md | 43 | │ │ ├── service/ # App services (workflow orchestration) | CODE |
| MEDIUM | AGENTS.md | 176 | ├── Makefile # Top-level build/test/dev orchestration | CODE |
| MEDIUM | docs/17-backend-annotation-findings.md | 56 | ## 2. Several controllers still perform orchestration that belongs in application services | COMMENT |
| MEDIUM | docs/18-frontend-annotation-findings.md | 39 | ## 3. Some pages still do too much orchestration instead of delegating to feature-level containers | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ervice/bundle/SkillSuiteBundlePackageAnalyzerTest.java | 146 | entry("skills/credential/config.env", "API_KEY=your-api-key-placeholder") | STRING |
| HIGH | …ain/skill/validation/BasicPrePublishValidatorTest.java | 86 | token=YOUR_TOKEN_HERE | STRING |
| HIGH | scanner/docs/configuration.md | 352 | SKILLHUB_SCANNER_AI_DEFENSE_API_KEY: "your-api-key-here" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/docker-entrypoint.d/20-base-path.sh | 1 | #!/bin/sh | COMMENT |
| LOW | deploy/k8s/base/configmap.yaml | 1 | apiVersion: v1 | COMMENT |
| LOW | server/skillhub-app/src/main/resources/application.yml | 221 | # categories: | COMMENT |
| LOW | …superpowers/plans/2026-03-11-phase1-foundation-auth.md | 4401 | # 2. 安装前端依赖 | COMMENT |
| LOW | …specs/2026-03-12-phase2-namespace-skill-core-design.md | 721 | SearchResult search(SearchQuery query) { | COMMENT |
| LOW | cli/test/unit/commands/update-command.test.ts | 1 | import { describe, expect, test } from 'bun:test' | COMMENT |
| LOW | builtin-skills/skills/zero-slop/scripts/slopscore.py | 501 | }) | COMMENT |
| LOW | builtin-skills/skills/zero-slop/scripts/slopscore.py | 621 | # in the stylistic sum below: heavy mid-sentence bold is a real tell in | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/python/example_usage.py | 14 | CODE | |
| LOW | examples/python/skillhub_client.py | 25 | CODE | |
| LOW | scripts/build-builtin-skills.py | 4 | CODE | |
| LOW | scripts/tests/test_zero_slop.py | 4 | CODE | |
| LOW | weekly/scripts/validate_site.py | 4 | CODE | |
| LOW | weekly/scripts/build_site.py | 4 | CODE | |
| LOW | weekly/scripts/sync_report_theme.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/python/skillhub_client.py | 160 | CODE | |
| LOW | builtin-skills/skills/zero-slop/scripts/slopscore.py | 337 | CODE | |
| LOW | builtin-skills/skills/zero-slop/scripts/slopscore.py | 447 | CODE | |
| LOW | builtin-skills/skills/zero-slop/scripts/slopscore.py | 894 | CODE | |
| LOW | builtin-skills/skills/zero-slop/scripts/slopscore.py | 1115 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | builtin-skills/skills/zero-slop/data/patterns.json | 475 | "rx": "\\bas an ai\\b|\\bas a language model\\b", | CODE |