You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2026-10-08T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 3 found | 3 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 3 issues requested
ci-review scan: skilld-dev/skilld.dev
Coverage: incomplete. Window 2026-10-01T21:00Z..2026-10-08T21:00Z. The repository has 1142 workflow runs in the window (API total); the scan limit of 100 newest runs was reached, covering 2026-10-07T06:01Z..2026-10-08T16:21Z. Excluded by the limit: ~1042 older in-window runs (mostly PR Test runs and by-design Deploy noop runs). Open PRs #321/#320/#318 last ran checks 2026-09-30, outside the window. gh run view --log returned empty output for this token, so per-job logs were fetched through the jobs REST endpoint instead: full logs for all 128 success/failure jobs of the 32 selected runs (15 push-main Test runs, 16 success Deploy runs, PR #560 Test run 37579712127), all attempt 1. Cancelled Test runs (4) and skipped Deploy noop runs (~13 in scope) were not log-reviewed: both outcomes are the workflows' documented concurrency behavior. No failed or timed-out run exists in the reviewed scope.
Reviewed runs (attempt 1, all conclusions success unless noted)
Test PR docs(work): add Reddit launch brief #560: 37579712127. Deploy noop example 37807978559 (skipped; controller log evidence unavailable, no diagnostic value: job skips by condition).
Candidates (repo repairs)
SkillBehaviors undefined prop — Run 37763046034 (attempt 1, first seen) through 37807825636 (attempt 1, latest main 324d014), job site / test, step Run pnpm test:run: stderr of test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts shows [Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefined at <SkillBehaviors behaviors=undefined> (3 per run since 2026-10-08T10:22Z; introduced with 6b120f6fix(registry): preserve root Skill snapshots #573, which renders the panel for raw snapshots whose sourceFacts lack behaviors). Current HEAD still binds :behaviors="data.sourceFacts.behaviors" under v-if="data.raw || behaviors.length". Fix: coalesce to null at the binding (and optionally type the field optional).
Mdxg router spec outside setup — every reviewed Test run from 37579687657 (2026-10-07T06:06Z) onward, attempt 1, job site / test, step Run pnpm test:run: stderr of modules/mdxg/test/document-router.spec.ts shows [Vue warn]: onBeforeUnmount is called when there is no active component instance (7 per run, 112 total). The spec calls useMdxgDocumentRouter() bare, so its onBeforeUnmount never registers and each test leaks a popstate listener. Fix: run the composable inside a component instance (withSetup-style helper) in the spec.
Extensionless TS imports force jiti fallback — every reviewed run's postinstall/prepare, e.g. 37807825636 attempt 1 job site / test step Run pnpm install/dev:prepare and deploy job 37808195339 postinstall: [NUXT_B5023] nuxt.config.ts ... Cannot find module 'layers/marketing/app/utils/agent-pages', [NUXT_B8023] modules/og-static-fonts ... './sync', [NUXT_B8023] modules/file-icons ... '../../shared/file-icons' (up to 5 emissions per run). Cause: extensionless relative TS imports; Nuxt native loading fails and jiti re-transforms. Fix: explicit .ts extensions in nuxt.config.ts, modules/og-static-fonts/module.ts, modules/file-icons/module.ts.
No matching open or closed issue exists for any candidate (searched open issues plus closed-issue keyword matches; prior ci-review run in #563 was skipped and filed nothing).
Accepted noise (no repo change)
Canceled Test runs / skipped Deploy runs: documented concurrency behavior in .github/workflows (test cancel-in-progress; deploy noop groups). Evidence: workflow comments and outcome pattern.
Deploy ::error/::warning strings in job logs: echoed script text of the nuxt-dx budget step, not emitted annotations.
eslint warnings, 142→147 across 16 lint runs: harlanzw/ai-deslop-* doc-style rules plus a few jsdoc/prefer-satisfies advisories over 43 files, dominated by immutable ADRs and historical ops ledgers (docs/adr/, docs/ops/); AGENTS.md marks ADRs immutable. A repair would exceed the 5-file candidate limit. Trend is upward ~1 warning per doc PR; worth a policy decision later, not a defect.
pnpm v10 layout warning (every job, pnpm/action-setup shim refresh): runner tooling, next actor is the pinned actions in harlan-zw/harlan-nuxt or pnpm/action-setup, not this repo.
DEP0005 Buffer() deprecation (16 deploy jobs, nuxt-dx budget artifact download): external @harlan-zw/nuxt-dx CLI, next actor that repo.
mcp-toolkit "No MCP definitions found" (98 emissions, prepare in every job): upstream loader totals only file-based tools/resources/prompts/handlers and ignores the loaded default handler; this repo serves MCP through layers/mcp/server/mcp/index.ts via defineMcpHandler (verified in source and by passing webmcp tests). Next actor: @nuxtjs/mcp-toolkit upstream.
nuxt-ai-ready "SPA mode" / og-image "SSR disabled" (test jobs): vitest Nuxt environment advisories; production deploys build SSR with prerender.
skew-protection "No previous versions found" (once, deploy build 2026-10-07T06:xx): cold skew cache; the next deploy restored nuxt-skew-prod-* and saved a fresh key (run 37808195339 log).
INEFFECTIVE_DYNAMIC_IMPORT TrendingBoardItem (26 build emissions): deliberate eager head row plus Lazy tail in BoardRankedList.vue; the compiler statically imports the eager form either way, and hydrate-on-visible still defers tail hydration, so the stated perf goal holds.
wrangler posture warnings on every deploy build (cpu-limit-raised 300s; queue max_retries 100/4; workers-cache-assets-billable; observability logs head_sampling_rate 1; nitro assets override): each is a documented deliberate choice with rationale comments in wrangler.jsonc and the workflow; cost posture is a human decision, next actor Harlan.
plaintext-secret-var for ARTIFACT_KEY_WRAP_KEY_(ACTIVE_SLOT|PRIMARY_ID|SECONDARY_ID): heuristic name match; inspected the named settings only and confirmed they hold non-secret identifiers (a slot label and key IDs), not key material. No secret value is present, so no repair proposed; rotation runbook depends on these vars.
Edge cache MISS→HIT pairs and "Harness Worker matches 430914d" in deploy logs: expected first-visit/hit proof and unchanged-worker skip, by design.
Verdict
AMBER: every CI check in scope passed and every deploy succeeded, but three warning-level repository defects are current on main (one runtime prop warning, one test-hygiene warning with a listener leak, one build-hydration noise class). Coverage is incomplete per the 100-run cap stated above.
Since run 37763046034 (attempt 1, 2026-10-08T10:22Z, commit 6b120f6#573) through latest main run 37807825636 (attempt 1), job site / test, step Run pnpm test:run, test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts logs [Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefined at <SkillBehaviors behaviors=undefined>, because SkillDetail.vue binds :behaviors="data.sourceFacts.behaviors" under v-if="data.raw || behaviors.length" and raw snapshots lack the field; the binding must coalesce undefined to null.
Verify with:pnpm exec vitest run test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts 2>&1 | grep -c 'Invalid prop: type check failed for prop "behaviors"' returns 0
Estimated to change 1 file.
In every reviewed Test run from 37579687657 (attempt 1, 2026-10-07T06:06Z) to 37807825636 (attempt 1), job site / test, step Run pnpm test:run, modules/mdxg/test/document-router.spec.ts emits [Vue warn]: onBeforeUnmount is called when there is no active component instance 7 times per run (112 total) because the spec calls useMdxgDocumentRouter outside setup, so the cleanup hook never registers and each test leaks a popstate listener on window.
Target:modules/mdxg/test/document-router.spec.ts
Verify with:pnpm exec vitest run modules/mdxg/test/document-router.spec.ts 2>&1 | grep -c 'onBeforeUnmount is called' returns 0
Estimated to change 1 file.
Every reviewed run's install/prepare step (e.g. run 37807825636 attempt 1, job site / test, steps Run pnpm install --frozen-lockfile --ignore-scripts and Run pnpm dev:prepare; also deploy job of 37808195339) emits NUXT_B5023 for nuxt.config.ts importing ./layers/marketing/app/utils/agent-pages and NUXT_B8023 for modules/og-static-fonts/module.ts importing ./sync and modules/file-icons/module.ts importing ../../shared/file-icons, all extensionless TS paths that Node native loading cannot resolve, so Nuxt re-transforms them through jiti; adding explicit .ts extensions restores native loading.
Recurring lint warnings, actionable: latest site / lint reported 154 warnings with no errors. Three current one-file source warnings are Candidates below. They recur in 48 reviewed Test logs.
Other lint warnings, no Candidate: Markdown style, documentation, and broader lint backlog span more than five files. They are non-blocking maintenance and are outside the Candidate file limit.
Node Buffer deprecation, no Candidate: successful deploys, including run 38521163057, emit DEP0005 while GitHub downloads the Nuxt DX artifact. The repository command has already completed. This is action/runtime dependency noise; no repository-owned target was proven.
Deploy failure resolved:run 38378730673, attempt 1, failed deploy → pnpm production:edge-cache because ten cache probes lacked ETags. Run 38392204556, attempt 1, then failed two cache probes by timeout. The later successful deploy completed the same check with warnings: []. No regression evidence.
Operational timeout:Weekly social 38292576693, attempt 1, timed out in weekly (discord) → Publish. The Discord setting existed; X settings did not. This is an external publish failure, not a source defect. Next actor: service owner, inspect the saved run receipt and endpoint health.
Cancelled runs:38336947826 and 38392079927 produced no repository diagnostic before cancellation.
No secrets were displayed.
layers/registry/server/data/clusters.ts#RENAMED_CLUSTER_SLUGS: In successful Test run 38520943548, attempt 1, site / lint warns that RENAMED_CLUSTER_SLUGS: Record<string, string> discards its known keys, so use satisfies to retain the literal key type.
modules/mdxg/src/runtime/components/MdxgPageView.vue#MarkdownDocument-auto-import: In successful Test run 38520943548, attempt 1, site / lint warns that MarkdownDocument is redundantly imported from #components although Nuxt auto-imports it for the template.
scripts/summarize-classifications.ts#buckets: In successful Test run 38520943548, attempt 1, site / lint warns that buckets: Record<string, number> discards its known keys, so use satisfies to retain them.
Activity
harlan-github-agent commentedon Oct 7, 2026
2026-10-01T22:00:00.000Z — Skipped. This run was due more than 6 hours ago, so it was skipped.
harlan-github-agent commentedon Oct 8, 2026
2026-10-08T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 3 found | 3 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 3 issues requested
ci-review scan: skilld-dev/skilld.dev
Coverage: incomplete. Window 2026-10-01T21:00Z..2026-10-08T21:00Z. The repository has 1142 workflow runs in the window (API total); the scan limit of 100 newest runs was reached, covering 2026-10-07T06:01Z..2026-10-08T16:21Z. Excluded by the limit: ~1042 older in-window runs (mostly PR Test runs and by-design Deploy noop runs). Open PRs #321/#320/#318 last ran checks 2026-09-30, outside the window.
gh run view --logreturned empty output for this token, so per-job logs were fetched through the jobs REST endpoint instead: full logs for all 128 success/failure jobs of the 32 selected runs (15 push-main Test runs, 16 success Deploy runs, PR #560 Test run 37579712127), all attempt 1. Cancelled Test runs (4) and skipped Deploy noop runs (~13 in scope) were not log-reviewed: both outcomes are the workflows' documented concurrency behavior. No failed or timed-out run exists in the reviewed scope.Reviewed runs (attempt 1, all conclusions success unless noted)
Candidates (repo repairs)
site / test, stepRun pnpm test:run: stderr of test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts shows[Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefinedat<SkillBehaviors behaviors=undefined>(3 per run since 2026-10-08T10:22Z; introduced with 6b120f6 fix(registry): preserve root Skill snapshots #573, which renders the panel for raw snapshots whose sourceFacts lackbehaviors). Current HEAD still binds:behaviors="data.sourceFacts.behaviors"underv-if="data.raw || behaviors.length". Fix: coalesce to null at the binding (and optionally type the field optional).site / test, stepRun pnpm test:run: stderr of modules/mdxg/test/document-router.spec.ts shows[Vue warn]: onBeforeUnmount is called when there is no active component instance(7 per run, 112 total). The spec callsuseMdxgDocumentRouter()bare, so itsonBeforeUnmountnever registers and each test leaks apopstatelistener. Fix: run the composable inside a component instance (withSetup-style helper) in the spec.site / teststepRun pnpm install/dev:prepareand deploy job 37808195339 postinstall:[NUXT_B5023] nuxt.config.ts ... Cannot find module 'layers/marketing/app/utils/agent-pages',[NUXT_B8023] modules/og-static-fonts ... './sync',[NUXT_B8023] modules/file-icons ... '../../shared/file-icons'(up to 5 emissions per run). Cause: extensionless relative TS imports; Nuxt native loading fails and jiti re-transforms. Fix: explicit.tsextensions in nuxt.config.ts, modules/og-static-fonts/module.ts, modules/file-icons/module.ts.No matching open or closed issue exists for any candidate (searched open issues plus closed-issue keyword matches; prior ci-review run in #563 was skipped and filed nothing).
Accepted noise (no repo change)
::error/::warningstrings in job logs: echoed script text of the nuxt-dx budget step, not emitted annotations.harlanzw/ai-deslop-*doc-style rules plus a fewjsdoc/prefer-satisfiesadvisories over 43 files, dominated by immutable ADRs and historical ops ledgers (docs/adr/, docs/ops/); AGENTS.md marks ADRs immutable. A repair would exceed the 5-file candidate limit. Trend is upward ~1 warning per doc PR; worth a policy decision later, not a defect.@harlan-zw/nuxt-dxCLI, next actor that repo.layers/mcp/server/mcp/index.tsviadefineMcpHandler(verified in source and by passing webmcp tests). Next actor: @nuxtjs/mcp-toolkit upstream.nuxt-skew-prod-*and saved a fresh key (run 37808195339 log).hydrate-on-visiblestill defers tail hydration, so the stated perf goal holds.Verdict
AMBER: every CI check in scope passed and every deploy succeeded, but three warning-level repository defects are current on main (one runtime prop warning, one test-hygiene warning with a listener leak, one build-hydration noise class). Coverage is incomplete per the 100-run cap stated above.
Since run 37763046034 (attempt 1, 2026-10-08T10:22Z, commit 6b120f6 #573) through latest main run 37807825636 (attempt 1), job
site / test, stepRun pnpm test:run, test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts logs[Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefinedat<SkillBehaviors behaviors=undefined>, because SkillDetail.vue binds:behaviors="data.sourceFacts.behaviors"underv-if="data.raw || behaviors.length"and raw snapshots lack the field; the binding must coalesce undefined to null.Target:
layers/registry/app/components/SkillDetail.vueVerify with:
pnpm exec vitest run test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts 2>&1 | grep -c 'Invalid prop: type check failed for prop "behaviors"' returns 0Estimated to change 1 file.
In every reviewed Test run from 37579687657 (attempt 1, 2026-10-07T06:06Z) to 37807825636 (attempt 1), job
site / test, stepRun pnpm test:run, modules/mdxg/test/document-router.spec.ts emits[Vue warn]: onBeforeUnmount is called when there is no active component instance7 times per run (112 total) because the spec calls useMdxgDocumentRouter outside setup, so the cleanup hook never registers and each test leaks a popstate listener on window.Target:
modules/mdxg/test/document-router.spec.tsVerify with:
pnpm exec vitest run modules/mdxg/test/document-router.spec.ts 2>&1 | grep -c 'onBeforeUnmount is called' returns 0Estimated to change 1 file.
Every reviewed run's install/prepare step (e.g. run 37807825636 attempt 1, job
site / test, stepsRun pnpm install --frozen-lockfile --ignore-scriptsandRun pnpm dev:prepare; also deploy job of 37808195339) emits NUXT_B5023 for nuxt.config.ts importing./layers/marketing/app/utils/agent-pagesand NUXT_B8023 for modules/og-static-fonts/module.ts importing./syncand modules/file-icons/module.ts importing../../shared/file-icons, all extensionless TS paths that Node native loading cannot resolve, so Nuxt re-transforms them through jiti; adding explicit.tsextensions restores native loading.Target:
nuxt.config.ts, modules/og-static-fonts/module.ts, modules/file-icons/module.tsVerify with:
pnpm dev:prepare 2>&1 | grep -cE 'NUXT_B(5023|8023)' returns 0Estimated to change 3 files.
harlan-github-agent commentedon Oct 15, 2026
2026-10-15T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
CI review
Coverage: incomplete. Window: 2026-10-08T21:16Z to 2026-10-15T21:16Z.
main.Current baseline
Latest main checks passed:
576710ed, push.576710ed, workflow_run.Findings
site / lintreported 154 warnings with no errors. Three current one-file source warnings are Candidates below. They recur in 48 reviewed Test logs.DEP0005while GitHub downloads the Nuxt DX artifact. The repository command has already completed. This is action/runtime dependency noise; no repository-owned target was proven.deploy→pnpm production:edge-cachebecause ten cache probes lacked ETags. Run 38392204556, attempt 1, then failed two cache probes by timeout. The later successful deploy completed the same check withwarnings: []. No regression evidence.weekly (discord)→Publish. The Discord setting existed; X settings did not. This is an external publish failure, not a source defect. Next actor: service owner, inspect the saved run receipt and endpoint health.No secrets were displayed.
layers/registry/server/data/clusters.ts#RENAMED_CLUSTER_SLUGS: In successful Test run 38520943548, attempt 1,
site / lintwarns thatRENAMED_CLUSTER_SLUGS: Record<string, string>discards its known keys, so usesatisfiesto retain the literal key type.modules/mdxg/src/runtime/components/MdxgPageView.vue#MarkdownDocument-auto-import: In successful Test run 38520943548, attempt 1,
site / lintwarns thatMarkdownDocumentis redundantly imported from#componentsalthough Nuxt auto-imports it for the template.scripts/summarize-classifications.ts#buckets: In successful Test run 38520943548, attempt 1,
site / lintwarns thatbuckets: Record<string, number>discards its known keys, so usesatisfiesto retain them.Target:
layers/registry/server/data/clusters.ts, modules/mdxg/src/runtime/components/MdxgPageView.vue, scripts/summarize-classifications.tsVerify with:
pnpm exec eslint layers/registry/server/data/clusters.ts --max-warnings 0 && pnpm exec eslint modules/mdxg/src/runtime/components/MdxgPageView.vue --max-warnings 0 && pnpm exec eslint scripts/summarize-classifications.ts --max-warnings 0Estimated to change 3 files.