[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DFK0YRGRX0S7FB79KSKK7F":3,"skill-same:01M7DFK0YRGRX0S7FB79KSKK7F":639},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7DFK0YRGRX0S7FB79KSKK7F","typescript-and-lint-rules",null,"Enforces Pocket Arcade's strict TypeScript 6 tsconfigs, ESLint 9 flat config, Prettier and size limits. Use when writing or splitting .ts\u002F.tsx or fixing a tsc or lint error. Not for gate wiring (quality-gates), names (naming-conventions) or import zones (architecture-and-boundaries).","zakariaf\u002Fpocket-arcade","zakariaf","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2259803?v=4","01M7DEF0YMPS6Y6RQ4WGA0JH9R","Zakaria Fatahi","01M7DEF0ZN5WYWJT595FWW1A0Y",0,"MIT","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: typescript-and-lint-rules\ndescription: Enforces Pocket Arcade's strict TypeScript 6 tsconfigs, ESLint 9 flat config, Prettier and size limits. Use when writing or splitting .ts\u002F.tsx or fixing a tsc or lint error. Not for gate wiring (quality-gates), names (naming-conventions) or import zones (architecture-and-boundaries).\n---\n\n# TypeScript and lint rules\n\nEvery `.ts`\u002F`.tsx` file in the monorepo compiles under one strict tsconfig set and passes one ESLint config with no warnings, no inline disables and hard size limits. No human reviews this code line by line, so style is enforced by machines or it does not exist. This skill holds the configs, the limits, the forbidden patterns, and two checkers that prove the repo still follows them.\n\n## Rules that must hold\n\n1. **Never silence a gate.** No `eslint-disable`, `@ts-ignore` or `@ts-nocheck`; `@ts-expect-error` only where a third-party type is wrong, with a reason of 10+ characters. Why: the most likely failure of an unsupervised agent is silencing a check, and inline config is switched off anyway.\n2. **One strict `tsconfig.base.json` for every workspace.** A workspace `tsconfig.json` sets only `types`, `lib`, `include` and `exclude`. Why: one set of compiler guarantees for all ~26 apps.\n3. **Two worlds never mix.** App code (types `jest`, no Node) never imports a Node-world file, not even with `import type`; Node code (tooling, `packages\u002Fshell\u002Fsrc\u002Fconfig`, `packages\u002Fshell\u002Fplugins`, `app.config.ts`) is never bundled into an app. Why: a type-only import pulls the file into the app program, where `process` and `node:fs` do not type-check.\n4. **One ESLint config, errors only.** `eslint.config.mjs` at the root is the only config; every rule is an error, lint runs with `--max-warnings 0`, only through the npm scripts. An exception is a files-scoped block that rebuilds the rule from the shared lists, with a reason comment and a `Gate-Change:` trailer. Why: CLI flags and fresh short lists silently weaken the gate (a later flat-config block replaces options, it does not merge).\n5. **Stay inside the limits.** 250 code lines per file (400 in tests), 40 per `.ts` function, 80 per `.tsx` component, cyclomatic complexity 10 (`modified`), cognitive 15, nesting 3, 3 parameters (function types too), 3 nested callbacks (4 in tests), JSX depth 5, one component and one class per file. Why: small units are read whole in one read and fail in one place.\n6. **When a limit trips, split by responsibility.** Extract named pure functions, a lookup table, an options object or a sub-component with its own test. Never join lines, never `part-2.ts`, never move logic into JSON; large static data does go in `.json`. Why: the limit detects a symptom; gaming it keeps the problem.\n7. **Erasable TypeScript only.** No `enum` (use an `as const` array and a union), no `namespace`, no constructor parameter properties, `type` instead of `interface` (except merging in `*.d.ts`), no `any`, no non-null `!` in app code. Why: Node type stripping and `erasableSyntaxOnly`; unions work with exhaustive switches.\n8. **Named exports, explicit extensions, no `..\u002F`.** `export default` only in `apps\u002F*\u002Fapp.config.ts`, config plugins and `__mocks__`. Import `.\u002Fx.ts` within a folder and `@e07\u002F\u003Cpackage>\u002F\u003Cpath-under-src>.ts` across folders. Why: greppable names; Node type stripping and the `exports` map need extensions.\n9. **Expected failures are values.** Return `Result\u003CTValue, TError>` with a `kind` union (or `T | null`); throw `new Error(message, { cause })` only for programmer errors. Every `catch` maps, records through `ErrorLogPort` with a fallback, or rethrows with `cause`; no empty catch. Why: the type system forces callers to handle every case, and the local error log is the only trace.\n10. **No floating promises; handlers stay synchronous.** Await, return, or end with `.catch(reportError)`; `void promise` does not count. A `handleX` function or inline `on*` prop is never `async`. Why: React Native's Strict API types `onPress` as returning `unknown`, so an async handler's rejection vanishes.\n11. **Immutable data, pure deterministic rules.** `readonly` everywhere, `as const` tables, new objects instead of mutation; rules, levels and game-kit take time and seeds as values and use only integer-safe math. Why: replays, solvers and daily seeds must match on every device.\n12. **Prettier formats, pinned versions build.** Prettier 3.9.9 is the only formatter; ESLint 9.39.5, TypeScript 6.0.3 and the plugins stay on the verified pins. A limit, pin or baseline change is an owner decision: stop and ask.\n13. **Comments say why.** Line 1 is `\u002F\u002F \u003Crepo-relative path>`; exported game-kit APIs, ports, stores and hooks get a one-sentence TSDoc contract; no `TODO`\u002F`FIXME`\u002F`HACK`, no commented-out code.\n\n## Workflow\n\n1. Pick the task: set up or change configs (step 2), write code (step 3), fix a `tsc` or lint error (step 4), or add an exception (step 5). Then always finish with step 6.\n2. **Configs.** Read [references\u002Ftsconfig-set.md](references\u002Ftsconfig-set.md) and [references\u002Feslint-config-guide.md](references\u002Feslint-config-guide.md). Copy each template to its destination (table below), install the pinned versions from the guide's install command, then run `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-configs.mjs .`.\n3. **Code.** Before writing error handling, async code, a service or a new module, read the matching section of [references\u002Fcode-policies.md](references\u002Fcode-policies.md). Imitate [examples\u002Fparse-level-param.ts](examples\u002Fparse-level-param.ts) (Result), [examples\u002Fwith-timeout.ts](examples\u002Fwith-timeout.ts) (timeouts as values) and [examples\u002Fbuy-button.tsx](examples\u002Fbuy-button.tsx) (synchronous handler). Keep every unit inside the limits from the start.\n4. **Errors.** Find the rule in [references\u002Fforbidden-patterns.md](references\u002Fforbidden-patterns.md) and write the replacement it names. For a limit, read [references\u002Flimits-and-splitting.md](references\u002Flimits-and-splitting.md) and follow [examples\u002Fsplitting-a-long-function.md](examples\u002Fsplitting-a-long-function.md). Never edit the config to make an error go away.\n5. **Exception.** Only for a tool or library contract. Follow \"Adding an exception, step by step\" in [references\u002Feslint-config-guide.md](references\u002Feslint-config-guide.md): a file-exact block, rebuilt from the shared lists, a reason comment, `--print-config` proof, the `quality-gates.json` guardrail still green, and a `Gate-Change:` trailer. A limit or baseline change: stop and ask the owner.\n6. **Check (validation loop).** From the repo root, when `node_modules` exist: `npm run typecheck`, `npm run lint`, `npm run format:check` (before the scripts exist: `npx tsc --noEmit -p \u003Ceach project>`, `npx eslint . --max-warnings 0`, `npx prettier --check .`). Always: `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-source.mjs .` and `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-configs.mjs .`. Fix every `FAIL` line (each names the file, the rule and the fix) and rerun until all print `RESULT: PASS`.\n\nTemplate destinations (the templates are the verified files; the monorepo-bootstrap skill writes the same bytes, because every template below is synced from one canonical copy in the skill library: never edit a copy here, edit the canonical file and run `node skills\u002F_library\u002Fsync-shared.mjs`). The only thing to fill: the pre-existing top-level folders and files that are not monorepo code (knowledge folders, design exports, notes) go into `PRE_EXISTING` in `eslint.config.mjs` (`'handbook\u002F**'`) and replace `__PRE_EXISTING__` in `.prettierignore` (`handbook\u002F`); delete the placeholder line when there are none.\n\n| Template | Destination in the app repo |\n|---|---|\n| `templates\u002Ftsconfig.base.json` | `tsconfig.base.json` |\n| `templates\u002Ftsconfig.root.json` | `tsconfig.json` |\n| `templates\u002Ftsconfig.game-kit.json` | `packages\u002Fgame-kit\u002Ftsconfig.json` |\n| `templates\u002Ftsconfig.shell.json` | `packages\u002Fshell\u002Ftsconfig.json` |\n| `templates\u002Ftsconfig.tooling.json` | `packages\u002Ftooling\u002Ftsconfig.json` |\n| `templates\u002Ftsconfig.app.json` | `apps\u002F\u003Cgame-id>\u002Ftsconfig.json` (every app) |\n| `templates\u002Feslint.config.mjs` | `eslint.config.mjs` |\n| `templates\u002F.prettierrc.json`, `templates\u002F.prettierignore` | `.prettierrc.json`, `.prettierignore` |\n| `templates\u002Fapp-env.d.ts` | `packages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts` |\n| `templates\u002Fresult.ts` | `packages\u002Fgame-kit\u002Fsrc\u002Fcontract\u002Fresult.ts` |\n\n## Definition of done\n\n- [ ] `npm run typecheck` passes for every project (or `npx tsc --noEmit -p` on the root and each `packages\u002F*`, `apps\u002F*`).\n- [ ] `npm run lint` passes with `--max-warnings 0`, and `npm run format:check` passes.\n- [ ] No new `eslint-disable`, `@ts-ignore` or `@ts-nocheck`; any `@ts-expect-error` names a third-party cause.\n- [ ] No file over 250 code lines (400 for tests), no function over 40 lines (80 for a component); every split was made by responsibility.\n- [ ] Every new exported API in game-kit, ports, stores and hooks has a one-sentence TSDoc summary; no TODOs; no commented-out code.\n- [ ] Every expected failure is a `Result` (or `null`) with a `kind` union; every `catch` maps, records or rethrows with `cause`; no floating promise, no `async` handler.\n- [ ] Any config exception is a named, commented, file-exact block committed with a `Gate-Change:` trailer.\n- [ ] `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-configs.mjs .` prints `RESULT: PASS` (the configs match the canonical set).\n- [ ] `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-source.mjs .` prints `RESULT: PASS`\n\n## Anti-patterns\n\n- **Adding `eslint-disable` or `@ts-ignore` \"just this once\".** Inline config is inert and reported; the error is still there. Fix the code, or make a file-exact exception block for a real tool contract.\n- **Raising a limit or turning a rule off in a later block.** `check-configs.mjs` reports `eslint-limit-changed` and `eslint-rule-off`. Split the code instead; limit changes are the owner's call.\n- **Writing a fresh short list in an exception block.** `'no-restricted-imports': ['error', { paths: [x] }]` drops every other ban for those files. Rebuild from `RUNTIME_PATHS` with `without(...)` and `restrictedImports(...)`.\n- **Compressing code to get under a limit.** Joined lines, removed blank lines and nested ternaries make it worse and trip `no-nested-ternary`. Extract named functions or a lookup table.\n- **`import type` from a Node-world file into app code.** It still drags `process` and `node:fs` into the app program. Put shared types in a neutral file.\n- **`onPress={async () => ...}` because it type-checks.** The Strict API hides the rejection. Keep the handler synchronous and end the task with `.catch(reportError)`.\n- **Throwing for a corrupt save or bad outside input.** Callers forget to catch. Return a `Result` with a `kind` union (a move `listMoves` does not list is the exception: the engine contract throws a `RangeError`).\n- **Rewording a lint message or reformatting an option list in the config.** The `quality-gates.json` guardrail compares resolved values, including the `RESTRICTED_PROPERTIES` messages, verbatim; copy the template exactly.\n- **Declaring \"the checkers pass\" without running ESLint and tsc.** The scripts mirror the rules most often broken; `npm run lint` and `npm run typecheck` are still the full gate.\n\n## Files in this skill\n\n| File | What it is | Read\u002Frun when |\n|---|---|---|\n| [references\u002Ftsconfig-set.md](references\u002Ftsconfig-set.md) | Two worlds, the six tsconfig files, every compiler option, `app-env.d.ts`, Node-world rules | Workflow step 2; a missing global or wrong program |\n| [references\u002Feslint-config-guide.md](references\u002Feslint-config-guide.md) | Versions and install, the blocks, file groups, shared lists, exemptions, adding an exception, message codes, Prettier | Workflow steps 2 and 5; an unclear lint message |\n| [references\u002Flimits-and-splitting.md](references\u002Flimits-and-splitting.md) | The limits table with rationale, how lines are counted, the move for each tripped limit | Workflow step 4 for a limit; before a large module |\n| [references\u002Fforbidden-patterns.md](references\u002Fforbidden-patterns.md) | Every rejected pattern, why, which rule, and what to write instead | Workflow step 4 |\n| [references\u002Fcode-policies.md](references\u002Fcode-policies.md) | Comments, error handling, async, immutability, dependency injection, imports | Workflow step 3 |\n| `templates\u002Ftsconfig.base.json` | The shared strict compiler options (all `templates\u002F` files are synced from the library) | Workflow step 2 |\n| `templates\u002Ftsconfig.root.json` | Root program: tests and Node-side config (`jest`, `node`) | Workflow step 2 |\n| `templates\u002Ftsconfig.game-kit.json` | game-kit program (`jest`, `lib: ESNext`) | Workflow step 2 |\n| `templates\u002Ftsconfig.shell.json` | Shell program, without the Node-world `src\u002Fconfig` | Workflow step 2 |\n| `templates\u002Ftsconfig.tooling.json` | Tooling program (`node`, `jest`) | Workflow step 2 |\n| `templates\u002Ftsconfig.app.json` | Program of every game app, with `app-env.d.ts` and the Shell's route types `react-navigation.d.ts` (TS2769 \"parameter of type never\" without it) | Workflow step 2; a new app |\n| `templates\u002Feslint.config.mjs` | The complete, verified ESLint 9 flat config | Workflow steps 2 and 5 |\n| `templates\u002F.prettierrc.json` | Prettier options | Workflow step 2 |\n| `templates\u002F.prettierignore` | Prettier ignore list (generated folders, snapshots, `skills\u002F`, `.claude\u002F`, the `__PRE_EXISTING__` entries) | Workflow step 2 |\n| `templates\u002Fapp-env.d.ts` | `process` and `EXPO_PUBLIC_*` declarations for app programs | Workflow step 2; a new runtime env variable |\n| `templates\u002Fresult.ts` | The shared `Result` type with `ok`\u002F`err` | Workflow step 2 (game-kit setup) |\n| [examples\u002Fparse-level-param.ts](examples\u002Fparse-level-param.ts) | A parser of outside input returning `Result` instead of throwing (rules throw instead: the engine contract) | Workflow step 3 |\n| [examples\u002Fparse-level-param.test.ts](examples\u002Fparse-level-param.test.ts) | Its test: success and each expected failure | Workflow step 3 |\n| [examples\u002Fwith-timeout.ts](examples\u002Fwith-timeout.ts) | A timeout as an expected failure | Workflow step 3 (async adapters) |\n| [examples\u002Fwith-timeout.test.ts](examples\u002Fwith-timeout.test.ts) | Fake-timer tests for it (the `\u002F\u002F allow-fake-timers:` marker names why a logic test may use them) | Workflow step 3 |\n| [examples\u002Fuse-report-error.ts](examples\u002Fuse-report-error.ts) | The rejection handler hook for fire-and-forget work | Workflow step 3 (handlers) |\n| [examples\u002Fbuy-button.tsx](examples\u002Fbuy-button.tsx) | A synchronous handler that starts async work | Workflow step 3 (handlers) |\n| [examples\u002Fsplitting-a-long-function.md](examples\u002Fsplitting-a-long-function.md) | A 44-line, complexity-12 function, its four lint errors, and the split | Workflow step 4 for a limit |\n| [examples\u002Fscore-level.ts](examples\u002Fscore-level.ts) | The split result: options object, lookup tables, named steps | Workflow step 4 |\n| [examples\u002Fscore-level.test.ts](examples\u002Fscore-level.test.ts) | Tests for each extracted piece | Workflow step 4 |\n| `scripts\u002Fcheck-configs.mjs` | Checks tsconfigs, the ESLint config (with the guardrail-compared messages), Prettier and its ignore list, pre-existing top-level folders, pins and lint scripts against the baseline | Workflow steps 2, 5 and 6 |\n| `scripts\u002Fcheck-source.mjs` | Checks every `.ts`\u002F`.tsx` for silenced gates, limits, non-erasable syntax, exports, imports, handlers, errors | Workflow step 6 |\n| `scripts\u002Flib\u002Fsource-scan.mjs` | Dependency-free lexer: comments, strings, imports, functions, parameter lists (synced from the library, shared with naming-conventions and architecture-and-boundaries) | Only when changing a checker |\n| `scripts\u002Flib\u002Fworkspaces.mjs` | Reads the workspace package names, for import-extension checks (synced from the library) | Only when changing a checker |\n| `scripts\u002Fselftest.mjs` | Proves both checkers pass good fixtures and catch every planted bug | After changing a checker, the baseline or a template |\n| `scripts\u002Fcheck-lib.mjs` | Shared script helper, synced from the library (do not edit here) | Never by hand |\n| `assets\u002Fts-lint-baseline.json` | The canonical compiler options, workspace worlds, required ESLint settings, limit values, pins | When a verified setting changes (owner decision) |\n| `assets\u002Fshared.json` | Declares the shared files this skill copies in | When adding a shared file |\n| `tests\u002Ffixtures\u002F` | Good and planted-bad inputs for the self-test (`check-configs\u002Fgood` mirrors the templates) | When adding a rule to a checker |\n\n## Related skills\n\n- `naming-conventions` - file, identifier, testID and key names (the naming rules inside this ESLint config).\n- `architecture-and-boundaries` - which package may import which, app zones, ports and file placement.\n- `quality-gates` - the npm scripts, hooks and the config guardrail that run these checks.\n- `react-components-and-hooks` - the UI lint rules (primitives, memo, styles) in more depth.\n- `unit-and-component-tests` - writing the tests that go with split-out functions.\n","# TypeScript and lint rules\n\nEvery `.ts`\u002F`.tsx` file in the monorepo compiles under one strict tsconfig set and passes one ESLint config with no warnings, no inline disables and hard size limits. No human reviews this code line by line, so style is enforced by machines or it does not exist. This skill holds the configs, the limits, the forbidden patterns, and two checkers that prove the repo still follows them.\n\n## Rules that must hold\n\n1. **Never silence a gate.** No `eslint-disable`, `@ts-ignore` or `@ts-nocheck`; `@ts-expect-error` only where a third-party type is wrong, with a reason of 10+ characters. Why: the most likely failure of an unsupervised agent is silencing a check, and inline config is switched off anyway.\n2. **One strict `tsconfig.base.json` for every workspace.** A workspace `tsconfig.json` sets only `types`, `lib`, `include` and `exclude`. Why: one set of compiler guarantees for all ~26 apps.\n3. **Two worlds never mix.** App code (types `jest`, no Node) never imports a Node-world file, not even with `import type`; Node code (tooling, `packages\u002Fshell\u002Fsrc\u002Fconfig`, `packages\u002Fshell\u002Fplugins`, `app.config.ts`) is never bundled into an app. Why: a type-only import pulls the file into the app program, where `process` and `node:fs` do not type-check.\n4. **One ESLint config, errors only.** `eslint.config.mjs` at the root is the only config; every rule is an error, lint runs with `--max-warnings 0`, only through the npm scripts. An exception is a files-scoped block that rebuilds the rule from the shared lists, with a reason comment and a `Gate-Change:` trailer. Why: CLI flags and fresh short lists silently weaken the gate (a later flat-config block replaces options, it does not merge).\n5. **Stay inside the limits.** 250 code lines per file (400 in tests), 40 per `.ts` function, 80 per `.tsx` component, cyclomatic complexity 10 (`modified`), cognitive 15, nesting 3, 3 parameters (function types too), 3 nested callbacks (4 in tests), JSX depth 5, one component and one class per file. Why: small units are read whole in one read and fail in one place.\n6. **When a limit trips, split by responsibility.** Extract named pure functions, a lookup table, an options object or a sub-component with its own test. Never join lines, never `part-2.ts`, never move logic into JSON; large static data does go in `.json`. Why: the limit detects a symptom; gaming it keeps the problem.\n7. **Erasable TypeScript only.** No `enum` (use an `as const` array and a union), no `namespace`, no constructor parameter properties, `type` instead of `interface` (except merging in `*.d.ts`), no `any`, no non-null `!` in app code. Why: Node type stripping and `erasableSyntaxOnly`; unions work with exhaustive switches.\n8. **Named exports, explicit extensions, no `..\u002F`.** `export default` only in `apps\u002F*\u002Fapp.config.ts`, config plugins and `__mocks__`. Import `.\u002Fx.ts` within a folder and `@e07\u002F\u003Cpackage>\u002F\u003Cpath-under-src>.ts` across folders. Why: greppable names; Node type stripping and the `exports` map need extensions.\n9. **Expected failures are values.** Return `Result\u003CTValue, TError>` with a `kind` union (or `T | null`); throw `new Error(message, { cause })` only for programmer errors. Every `catch` maps, records through `ErrorLogPort` with a fallback, or rethrows with `cause`; no empty catch. Why: the type system forces callers to handle every case, and the local error log is the only trace.\n10. **No floating promises; handlers stay synchronous.** Await, return, or end with `.catch(reportError)`; `void promise` does not count. A `handleX` function or inline `on*` prop is never `async`. Why: React Native's Strict API types `onPress` as returning `unknown`, so an async handler's rejection vanishes.\n11. **Immutable data, pure deterministic rules.** `readonly` everywhere, `as const` tables, new objects instead of mutation; rules, levels and game-kit take time and seeds as values and use only integer-safe math. Why: replays, solvers and daily seeds must match on every device.\n12. **Prettier formats, pinned versions build.** Prettier 3.9.9 is the only formatter; ESLint 9.39.5, TypeScript 6.0.3 and the plugins stay on the verified pins. A limit, pin or baseline change is an owner decision: stop and ask.\n13. **Comments say why.** Line 1 is `\u002F\u002F \u003Crepo-relative path>`; exported game-kit APIs, ports, stores and hooks get a one-sentence TSDoc contract; no `TODO`\u002F`FIXME`\u002F`HACK`, no commented-out code.\n\n## Workflow\n\n1. Pick the task: set up or change configs (step 2), write code (step 3), fix a `tsc` or lint error (step 4), or add an exception (step 5). Then always finish with step 6.\n2. **Configs.** Read [references\u002Ftsconfig-set.md](references\u002Ftsconfig-set.md) and [references\u002Feslint-config-guide.md](references\u002Feslint-config-guide.md). Copy each template to its destination (table below), install the pinned versions from the guide's install command, then run `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-configs.mjs .`.\n3. **Code.** Before writing error handling, async code, a service or a new module, read the matching section of [references\u002Fcode-policies.md](references\u002Fcode-policies.md). Imitate [examples\u002Fparse-level-param.ts](examples\u002Fparse-level-param.ts) (Result), [examples\u002Fwith-timeout.ts](examples\u002Fwith-timeout.ts) (timeouts as values) and [examples\u002Fbuy-button.tsx](examples\u002Fbuy-button.tsx) (synchronous handler). Keep every unit inside the limits from the start.\n4. **Errors.** Find the rule in [references\u002Fforbidden-patterns.md](references\u002Fforbidden-patterns.md) and write the replacement it names. For a limit, read [references\u002Flimits-and-splitting.md](references\u002Flimits-and-splitting.md) and follow [examples\u002Fsplitting-a-long-function.md](examples\u002Fsplitting-a-long-function.md). Never edit the config to make an error go away.\n5. **Exception.** Only for a tool or library contract. Follow \"Adding an exception, step by step\" in [references\u002Feslint-config-guide.md](references\u002Feslint-config-guide.md): a file-exact block, rebuilt from the shared lists, a reason comment, `--print-config` proof, the `quality-gates.json` guardrail still green, and a `Gate-Change:` trailer. A limit or baseline change: stop and ask the owner.\n6. **Check (validation loop).** From the repo root, when `node_modules` exist: `npm run typecheck`, `npm run lint`, `npm run format:check` (before the scripts exist: `npx tsc --noEmit -p \u003Ceach project>`, `npx eslint . --max-warnings 0`, `npx prettier --check .`). Always: `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-source.mjs .` and `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-configs.mjs .`. Fix every `FAIL` line (each names the file, the rule and the fix) and rerun until all print `RESULT: PASS`.\n\nTemplate destinations (the templates are the verified files; the monorepo-bootstrap skill writes the same bytes, because every template below is synced from one canonical copy in the skill library: never edit a copy here, edit the canonical file and run `node skills\u002F_library\u002Fsync-shared.mjs`). The only thing to fill: the pre-existing top-level folders and files that are not monorepo code (knowledge folders, design exports, notes) go into `PRE_EXISTING` in `eslint.config.mjs` (`'handbook\u002F**'`) and replace `__PRE_EXISTING__` in `.prettierignore` (`handbook\u002F`); delete the placeholder line when there are none.\n\n| Template | Destination in the app repo |\n|---|---|\n| `templates\u002Ftsconfig.base.json` | `tsconfig.base.json` |\n| `templates\u002Ftsconfig.root.json` | `tsconfig.json` |\n| `templates\u002Ftsconfig.game-kit.json` | `packages\u002Fgame-kit\u002Ftsconfig.json` |\n| `templates\u002Ftsconfig.shell.json` | `packages\u002Fshell\u002Ftsconfig.json` |\n| `templates\u002Ftsconfig.tooling.json` | `packages\u002Ftooling\u002Ftsconfig.json` |\n| `templates\u002Ftsconfig.app.json` | `apps\u002F\u003Cgame-id>\u002Ftsconfig.json` (every app) |\n| `templates\u002Feslint.config.mjs` | `eslint.config.mjs` |\n| `templates\u002F.prettierrc.json`, `templates\u002F.prettierignore` | `.prettierrc.json`, `.prettierignore` |\n| `templates\u002Fapp-env.d.ts` | `packages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts` |\n| `templates\u002Fresult.ts` | `packages\u002Fgame-kit\u002Fsrc\u002Fcontract\u002Fresult.ts` |\n\n## Definition of done\n\n- [ ] `npm run typecheck` passes for every project (or `npx tsc --noEmit -p` on the root and each `packages\u002F*`, `apps\u002F*`).\n- [ ] `npm run lint` passes with `--max-warnings 0`, and `npm run format:check` passes.\n- [ ] No new `eslint-disable`, `@ts-ignore` or `@ts-nocheck`; any `@ts-expect-error` names a third-party cause.\n- [ ] No file over 250 code lines (400 for tests), no function over 40 lines (80 for a component); every split was made by responsibility.\n- [ ] Every new exported API in game-kit, ports, stores and hooks has a one-sentence TSDoc summary; no TODOs; no commented-out code.\n- [ ] Every expected failure is a `Result` (or `null`) with a `kind` union; every `catch` maps, records or rethrows with `cause`; no floating promise, no `async` handler.\n- [ ] Any config exception is a named, commented, file-exact block committed with a `Gate-Change:` trailer.\n- [ ] `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-configs.mjs .` prints `RESULT: PASS` (the configs match the canonical set).\n- [ ] `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-source.mjs .` prints `RESULT: PASS`\n\n## Anti-patterns\n\n- **Adding `eslint-disable` or `@ts-ignore` \"just this once\".** Inline config is inert and reported; the error is still there. Fix the code, or make a file-exact exception block for a real tool contract.\n- **Raising a limit or turning a rule off in a later block.** `check-configs.mjs` reports `eslint-limit-changed` and `eslint-rule-off`. Split the code instead; limit changes are the owner's call.\n- **Writing a fresh short list in an exception block.** `'no-restricted-imports': ['error', { paths: [x] }]` drops every other ban for those files. Rebuild from `RUNTIME_PATHS` with `without(...)` and `restrictedImports(...)`.\n- **Compressing code to get under a limit.** Joined lines, removed blank lines and nested ternaries make it worse and trip `no-nested-ternary`. Extract named functions or a lookup table.\n- **`import type` from a Node-world file into app code.** It still drags `process` and `node:fs` into the app program. Put shared types in a neutral file.\n- **`onPress={async () => ...}` because it type-checks.** The Strict API hides the rejection. Keep the handler synchronous and end the task with `.catch(reportError)`.\n- **Throwing for a corrupt save or bad outside input.** Callers forget to catch. Return a `Result` with a `kind` union (a move `listMoves` does not list is the exception: the engine contract throws a `RangeError`).\n- **Rewording a lint message or reformatting an option list in the config.** The `quality-gates.json` guardrail compares resolved values, including the `RESTRICTED_PROPERTIES` messages, verbatim; copy the template exactly.\n- **Declaring \"the checkers pass\" without running ESLint and tsc.** The scripts mirror the rules most often broken; `npm run lint` and `npm run typecheck` are still the full gate.\n\n## Files in this skill\n\n| File | What it is | Read\u002Frun when |\n|---|---|---|\n| [references\u002Ftsconfig-set.md](references\u002Ftsconfig-set.md) | Two worlds, the six tsconfig files, every compiler option, `app-env.d.ts`, Node-world rules | Workflow step 2; a missing global or wrong program |\n| [references\u002Feslint-config-guide.md](references\u002Feslint-config-guide.md) | Versions and install, the blocks, file groups, shared lists, exemptions, adding an exception, message codes, Prettier | Workflow steps 2 and 5; an unclear lint message |\n| [references\u002Flimits-and-splitting.md](references\u002Flimits-and-splitting.md) | The limits table with rationale, how lines are counted, the move for each tripped limit | Workflow step 4 for a limit; before a large module |\n| [references\u002Fforbidden-patterns.md](references\u002Fforbidden-patterns.md) | Every rejected pattern, why, which rule, and what to write instead | Workflow step 4 |\n| [references\u002Fcode-policies.md](references\u002Fcode-policies.md) | Comments, error handling, async, immutability, dependency injection, imports | Workflow step 3 |\n| `templates\u002Ftsconfig.base.json` | The shared strict compiler options (all `templates\u002F` files are synced from the library) | Workflow step 2 |\n| `templates\u002Ftsconfig.root.json` | Root program: tests and Node-side config (`jest`, `node`) | Workflow step 2 |\n| `templates\u002Ftsconfig.game-kit.json` | game-kit program (`jest`, `lib: ESNext`) | Workflow step 2 |\n| `templates\u002Ftsconfig.shell.json` | Shell program, without the Node-world `src\u002Fconfig` | Workflow step 2 |\n| `templates\u002Ftsconfig.tooling.json` | Tooling program (`node`, `jest`) | Workflow step 2 |\n| `templates\u002Ftsconfig.app.json` | Program of every game app, with `app-env.d.ts` and the Shell's route types `react-navigation.d.ts` (TS2769 \"parameter of type never\" without it) | Workflow step 2; a new app |\n| `templates\u002Feslint.config.mjs` | The complete, verified ESLint 9 flat config | Workflow steps 2 and 5 |\n| `templates\u002F.prettierrc.json` | Prettier options | Workflow step 2 |\n| `templates\u002F.prettierignore` | Prettier ignore list (generated folders, snapshots, `skills\u002F`, `.claude\u002F`, the `__PRE_EXISTING__` entries) | Workflow step 2 |\n| `templates\u002Fapp-env.d.ts` | `process` and `EXPO_PUBLIC_*` declarations for app programs | Workflow step 2; a new runtime env variable |\n| `templates\u002Fresult.ts` | The shared `Result` type with `ok`\u002F`err` | Workflow step 2 (game-kit setup) |\n| [examples\u002Fparse-level-param.ts](examples\u002Fparse-level-param.ts) | A parser of outside input returning `Result` instead of throwing (rules throw instead: the engine contract) | Workflow step 3 |\n| [examples\u002Fparse-level-param.test.ts](examples\u002Fparse-level-param.test.ts) | Its test: success and each expected failure | Workflow step 3 |\n| [examples\u002Fwith-timeout.ts](examples\u002Fwith-timeout.ts) | A timeout as an expected failure | Workflow step 3 (async adapters) |\n| [examples\u002Fwith-timeout.test.ts](examples\u002Fwith-timeout.test.ts) | Fake-timer tests for it (the `\u002F\u002F allow-fake-timers:` marker names why a logic test may use them) | Workflow step 3 |\n| [examples\u002Fuse-report-error.ts](examples\u002Fuse-report-error.ts) | The rejection handler hook for fire-and-forget work | Workflow step 3 (handlers) |\n| [examples\u002Fbuy-button.tsx](examples\u002Fbuy-button.tsx) | A synchronous handler that starts async work | Workflow step 3 (handlers) |\n| [examples\u002Fsplitting-a-long-function.md](examples\u002Fsplitting-a-long-function.md) | A 44-line, complexity-12 function, its four lint errors, and the split | Workflow step 4 for a limit |\n| [examples\u002Fscore-level.ts](examples\u002Fscore-level.ts) | The split result: options object, lookup tables, named steps | Workflow step 4 |\n| [examples\u002Fscore-level.test.ts](examples\u002Fscore-level.test.ts) | Tests for each extracted piece | Workflow step 4 |\n| `scripts\u002Fcheck-configs.mjs` | Checks tsconfigs, the ESLint config (with the guardrail-compared messages), Prettier and its ignore list, pre-existing top-level folders, pins and lint scripts against the baseline | Workflow steps 2, 5 and 6 |\n| `scripts\u002Fcheck-source.mjs` | Checks every `.ts`\u002F`.tsx` for silenced gates, limits, non-erasable syntax, exports, imports, handlers, errors | Workflow step 6 |\n| `scripts\u002Flib\u002Fsource-scan.mjs` | Dependency-free lexer: comments, strings, imports, functions, parameter lists (synced from the library, shared with naming-conventions and architecture-and-boundaries) | Only when changing a checker |\n| `scripts\u002Flib\u002Fworkspaces.mjs` | Reads the workspace package names, for import-extension checks (synced from the library) | Only when changing a checker |\n| `scripts\u002Fselftest.mjs` | Proves both checkers pass good fixtures and catch every planted bug | After changing a checker, the baseline or a template |\n| `scripts\u002Fcheck-lib.mjs` | Shared script helper, synced from the library (do not edit here) | Never by hand |\n| `assets\u002Fts-lint-baseline.json` | The canonical compiler options, workspace worlds, required ESLint settings, limit values, pins | When a verified setting changes (owner decision) |\n| `assets\u002Fshared.json` | Declares the shared files this skill copies in | When adding a shared file |\n| `tests\u002Ffixtures\u002F` | Good and planted-bad inputs for the self-test (`check-configs\u002Fgood` mirrors the templates) | When adding a rule to a checker |\n\n## Related skills\n\n- `naming-conventions` - file, identifier, testID and key names (the naming rules inside this ESLint config).\n- `architecture-and-boundaries` - which package may import which, app zones, ports and file placement.\n- `quality-gates` - the npm scripts, hooks and the config guardrail that run these checks.\n- `react-components-and-hooks` - the UI lint rules (primitives, memo, styles) in more depth.\n- `unit-and-component-tests` - writing the tests that go with split-out functions.\n",{"name":5,"description":7},"main","5d711936a7299f9bb0c0132bfe99d3b43cfbfb48","skills\u002Ftypescript-and-lint-rules","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade","https:\u002F\u002Fgithub.com\u002Fzakariaf","https:\u002F\u002Fzakaria.dev","Seniore Software Engineer","2026-11-05 04:56:14",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add zakariaf\u002Fpocket-arcade --skill typescript-and-lint-rules",{"tool":38,"command":39},"bunx","bunx skills add zakariaf\u002Fpocket-arcade --skill typescript-and-lint-rules",{"tool":41,"command":42},"pnpm","pnpm dlx skills add zakariaf\u002Fpocket-arcade --skill typescript-and-lint-rules","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002FSKILL.md",true,[46,52,56,62,68,72,76,80,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,261,265,269,273,277,281,285,289,292,296,300,304,308,312,316,320,323,327,330,333,337,340,343,346,350,353,356,360,364,368,371,374,377,380,384,387,390,393,396,399,402,405,409,412,416,419,422,425,428,431,435,438,441,445,449,452,455,458,461,464,467,470,473,476,479,482,485,488,491,495,498,501,504,508,512,515,518,522,525,528,532,536,539,542,545,549,553,557,561,565,569,573,577,580,584,588,592,596,599,602,605,608,612,615,619,623,627,631,635],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"assets\u002Fshared.json","ASSET","资产文件",1277,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fassets\u002Fshared.json",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"assets\u002Fts-lint-baseline.json",24917,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fassets\u002Fts-lint-baseline.json",{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"examples\u002Fbuy-button.tsx","OTHER","其他",954,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fbuy-button.tsx",{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"examples\u002Fparse-level-param.test.ts","SCRIPT","脚本",833,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fparse-level-param.test.ts",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"examples\u002Fparse-level-param.ts",1186,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fparse-level-param.ts",{"path":73,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":74,"sourceHtmlUrl":75},"examples\u002Fscore-level.test.ts",1235,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fscore-level.test.ts",{"path":77,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":78,"sourceHtmlUrl":79},"examples\u002Fscore-level.ts",2308,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fscore-level.ts",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"examples\u002Fsplitting-a-long-function.md","REFERENCE","参考文档",4411,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fsplitting-a-long-function.md",{"path":87,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":88,"sourceHtmlUrl":89},"examples\u002Fuse-report-error.ts",474,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fuse-report-error.ts",{"path":91,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":92,"sourceHtmlUrl":93},"examples\u002Fwith-timeout.test.ts",1076,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fwith-timeout.test.ts",{"path":95,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":96,"sourceHtmlUrl":97},"examples\u002Fwith-timeout.ts",875,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fexamples\u002Fwith-timeout.ts",{"path":99,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fcode-policies.md",10242,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Freferences\u002Fcode-policies.md",{"path":103,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Feslint-config-guide.md",16453,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Freferences\u002Feslint-config-guide.md",{"path":107,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fforbidden-patterns.md",14754,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Freferences\u002Fforbidden-patterns.md",{"path":111,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Flimits-and-splitting.md",5672,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Freferences\u002Flimits-and-splitting.md",{"path":115,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Ftsconfig-set.md",12728,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Freferences\u002Ftsconfig-set.md",{"path":119,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fcheck-configs.mjs",23351,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fscripts\u002Fcheck-configs.mjs",{"path":123,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Fcheck-lib.mjs",45444,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fscripts\u002Fcheck-lib.mjs",{"path":127,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Fcheck-source.mjs",13672,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fscripts\u002Fcheck-source.mjs",{"path":131,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":132,"sourceHtmlUrl":133},"scripts\u002Flib\u002Fsource-scan.mjs",16351,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fscripts\u002Flib\u002Fsource-scan.mjs",{"path":135,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":136,"sourceHtmlUrl":137},"scripts\u002Flib\u002Fworkspaces.mjs",1329,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fscripts\u002Flib\u002Fworkspaces.mjs",{"path":139,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":140,"sourceHtmlUrl":141},"scripts\u002Fselftest.mjs",730,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Fscripts\u002Fselftest.mjs",{"path":143,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":144,"sourceHtmlUrl":145},"templates\u002F.prettierignore",528,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002F.prettierignore",{"path":147,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":149},"templates\u002F.prettierrc.json",203,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002F.prettierrc.json",{"path":151,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":152,"sourceHtmlUrl":153},"templates\u002Fapp-env.d.ts",392,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Fapp-env.d.ts",{"path":155,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":156,"sourceHtmlUrl":157},"templates\u002Feslint.config.mjs",35896,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Feslint.config.mjs",{"path":159,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":160,"sourceHtmlUrl":161},"templates\u002Fresult.ts",581,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Fresult.ts",{"path":163,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":164,"sourceHtmlUrl":165},"templates\u002Ftsconfig.app.json",331,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Ftsconfig.app.json",{"path":167,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":168,"sourceHtmlUrl":169},"templates\u002Ftsconfig.base.json",878,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Ftsconfig.base.json",{"path":171,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":172,"sourceHtmlUrl":173},"templates\u002Ftsconfig.game-kit.json",198,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Ftsconfig.game-kit.json",{"path":175,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":176,"sourceHtmlUrl":177},"templates\u002Ftsconfig.root.json",332,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Ftsconfig.root.json",{"path":179,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":180,"sourceHtmlUrl":181},"templates\u002Ftsconfig.shell.json",209,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Ftsconfig.shell.json",{"path":183,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":184,"sourceHtmlUrl":185},"templates\u002Ftsconfig.tooling.json",206,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftemplates\u002Ftsconfig.tooling.json",{"path":187,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":188,"sourceHtmlUrl":189},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-open\u002Feslint.config.mjs",35877,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-open\u002Feslint.config.mjs",{"path":191,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":192,"sourceHtmlUrl":193},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-open\u002FEXPECT.txt",59,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-open\u002FEXPECT.txt",{"path":195,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":196,"sourceHtmlUrl":197},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-unbanned\u002Feslint.config.mjs",35852,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-unbanned\u002Feslint.config.mjs",{"path":199,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":200,"sourceHtmlUrl":201},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-unbanned\u002FEXPECT.txt",35,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-att-unbanned\u002FEXPECT.txt",{"path":203,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":204,"sourceHtmlUrl":205},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-gaps\u002Feslint.config.mjs",36485,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-gaps\u002Feslint.config.mjs",{"path":207,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":208,"sourceHtmlUrl":209},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-gaps\u002FEXPECT.txt",597,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-gaps\u002FEXPECT.txt",{"path":211,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":212,"sourceHtmlUrl":213},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-gaps\u002Fresearch\u002Ftools\u002Fcheck-toy.mjs",74,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-gaps\u002Fresearch\u002Ftools\u002Fcheck-toy.mjs",{"path":215,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":216,"sourceHtmlUrl":217},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-messages\u002Feslint.config.mjs",35857,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-messages\u002Feslint.config.mjs",{"path":219,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":220,"sourceHtmlUrl":221},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-messages\u002FEXPECT.txt",247,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-messages\u002FEXPECT.txt",{"path":223,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":224,"sourceHtmlUrl":225},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002F.eslintrc.json",18,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002F.eslintrc.json",{"path":227,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":228,"sourceHtmlUrl":229},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002Feslint.config.mjs",36194,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002Feslint.config.mjs",{"path":231,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":232,"sourceHtmlUrl":233},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002FEXPECT.txt",183,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002FEXPECT.txt",{"path":235,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":236,"sourceHtmlUrl":237},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002Fpackages\u002Fshell\u002Feslint.config.mjs",19,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-stray\u002Fpackages\u002Fshell\u002Feslint.config.mjs",{"path":239,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":240,"sourceHtmlUrl":241},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-weakened\u002Feslint.config.mjs",36323,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-weakened\u002Feslint.config.mjs",{"path":243,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":244,"sourceHtmlUrl":245},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-weakened\u002FEXPECT.txt",275,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-eslint-weakened\u002FEXPECT.txt",{"path":247,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":248,"sourceHtmlUrl":249},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-package\u002FEXPECT.txt",281,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-package\u002FEXPECT.txt",{"path":251,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":252,"sourceHtmlUrl":253},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-package\u002Fpackage.json",880,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-package\u002Fpackage.json",{"path":255,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":256,"sourceHtmlUrl":257},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002F.prettierignore",511,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002F.prettierignore",{"path":259,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":260},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002F.prettierrc.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002F.prettierrc.json",{"path":262,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":263,"sourceHtmlUrl":264},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002FEXPECT.txt",336,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002FEXPECT.txt",{"path":266,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":267,"sourceHtmlUrl":268},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002Fexports\u002Fboard.html",44,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002Fexports\u002Fboard.html",{"path":270,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":271,"sourceHtmlUrl":272},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002Fnotes.md",8,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier-ignore\u002Fnotes.md",{"path":274,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":275,"sourceHtmlUrl":276},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier\u002F.prettierrc.json",204,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier\u002F.prettierrc.json",{"path":278,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":279,"sourceHtmlUrl":280},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier\u002FEXPECT.txt",139,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier\u002FEXPECT.txt",{"path":282,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":283,"sourceHtmlUrl":284},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier\u002Fprettier.config.js",21,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-prettier\u002Fprettier.config.js",{"path":286,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":287,"sourceHtmlUrl":288},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002F.prettierignore",521,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002F.prettierignore",{"path":290,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":291},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002F.prettierrc.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002F.prettierrc.json",{"path":293,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":295},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fapps\u002Ftile-drop\u002Fpackage.json",114,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":297,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":298,"sourceHtmlUrl":299},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",246,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",{"path":301,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":302,"sourceHtmlUrl":303},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Feslint.config.mjs",35866,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Feslint.config.mjs",{"path":305,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":306,"sourceHtmlUrl":307},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002FEXPECT.txt",124,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002FEXPECT.txt",{"path":309,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":310,"sourceHtmlUrl":311},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fhandbook\u002FREADME.md",75,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fhandbook\u002FREADME.md",{"path":313,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":314,"sourceHtmlUrl":315},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackage.json",879,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackage.json",{"path":317,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":319},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fgame-kit\u002Fpackage.json",111,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":321,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":172,"sourceHtmlUrl":322},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json",{"path":324,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":326},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fshell\u002Fpackage.json",142,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":328,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":152,"sourceHtmlUrl":329},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts",{"path":331,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":180,"sourceHtmlUrl":332},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fshell\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Fshell\u002Ftsconfig.json",{"path":334,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":335,"sourceHtmlUrl":336},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Ftooling\u002Fpackage.json",110,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Ftooling\u002Fpackage.json",{"path":338,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":184,"sourceHtmlUrl":339},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Ftooling\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Fpackages\u002Ftooling\u002Ftsconfig.json",{"path":341,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":168,"sourceHtmlUrl":342},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Ftsconfig.base.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Ftsconfig.base.json",{"path":344,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":176,"sourceHtmlUrl":345},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-app-navigation\u002Ftsconfig.json",{"path":347,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":348,"sourceHtmlUrl":349},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002F.prettierignore",500,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002F.prettierignore",{"path":351,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":352},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002F.prettierrc.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002F.prettierrc.json",{"path":354,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":355},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fapps\u002Ftile-drop\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":357,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":358,"sourceHtmlUrl":359},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",307,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",{"path":361,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":362,"sourceHtmlUrl":363},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Feslint.config.mjs",36245,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Feslint.config.mjs",{"path":365,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":366,"sourceHtmlUrl":367},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002FEXPECT.txt",94,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002FEXPECT.txt",{"path":369,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":314,"sourceHtmlUrl":370},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackage.json",{"path":372,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":373},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fgame-kit\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":375,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":172,"sourceHtmlUrl":376},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json",{"path":378,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":379},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fshell\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":381,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":382,"sourceHtmlUrl":383},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts",46,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts",{"path":385,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":180,"sourceHtmlUrl":386},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fshell\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Fshell\u002Ftsconfig.json",{"path":388,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":335,"sourceHtmlUrl":389},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Ftooling\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Fpackages\u002Ftooling\u002Fpackage.json",{"path":391,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":168,"sourceHtmlUrl":392},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Ftsconfig.base.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Ftsconfig.base.json",{"path":394,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":176,"sourceHtmlUrl":395},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-missing\u002Ftsconfig.json",{"path":397,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":348,"sourceHtmlUrl":398},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002F.prettierignore","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002F.prettierignore",{"path":400,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":401},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002F.prettierrc.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002F.prettierrc.json",{"path":403,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":404},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fapps\u002Ftile-drop\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":406,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":407,"sourceHtmlUrl":408},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",299,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",{"path":410,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":362,"sourceHtmlUrl":411},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Feslint.config.mjs","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Feslint.config.mjs",{"path":413,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":414,"sourceHtmlUrl":415},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002FEXPECT.txt",462,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002FEXPECT.txt",{"path":417,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":314,"sourceHtmlUrl":418},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackage.json",{"path":420,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":421},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fgame-kit\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":423,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":172,"sourceHtmlUrl":424},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json",{"path":426,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":427},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fshell\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":429,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":152,"sourceHtmlUrl":430},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts",{"path":432,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":433,"sourceHtmlUrl":434},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fshell\u002Ftsconfig.json",278,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Fshell\u002Ftsconfig.json",{"path":436,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":335,"sourceHtmlUrl":437},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Ftooling\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Ftooling\u002Fpackage.json",{"path":439,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":184,"sourceHtmlUrl":440},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Ftooling\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Fpackages\u002Ftooling\u002Ftsconfig.json",{"path":442,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":443,"sourceHtmlUrl":444},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Ftsconfig.base.json",887,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Ftsconfig.base.json",{"path":446,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":447,"sourceHtmlUrl":448},"tests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Ftsconfig.json",384,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fbad-tsconfig-weakened\u002Ftsconfig.json",{"path":450,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":287,"sourceHtmlUrl":451},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002F.prettierignore","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002F.prettierignore",{"path":453,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":148,"sourceHtmlUrl":454},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002F.prettierrc.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002F.prettierrc.json",{"path":456,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":457},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fapps\u002Ftile-drop\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":459,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":358,"sourceHtmlUrl":460},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fapps\u002Ftile-drop\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fapps\u002Ftile-drop\u002Ftsconfig.json",{"path":462,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":302,"sourceHtmlUrl":463},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Feslint.config.mjs","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Feslint.config.mjs",{"path":465,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":310,"sourceHtmlUrl":466},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fhandbook\u002FREADME.md","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fhandbook\u002FREADME.md",{"path":468,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":314,"sourceHtmlUrl":469},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackage.json",{"path":471,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":472},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fgame-kit\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":474,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":172,"sourceHtmlUrl":475},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fgame-kit\u002Ftsconfig.json",{"path":477,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":478},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fshell\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":480,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":152,"sourceHtmlUrl":481},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts",{"path":483,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":180,"sourceHtmlUrl":484},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fshell\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Fshell\u002Ftsconfig.json",{"path":486,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":335,"sourceHtmlUrl":487},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Ftooling\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Ftooling\u002Fpackage.json",{"path":489,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":184,"sourceHtmlUrl":490},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Ftooling\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fpackages\u002Ftooling\u002Ftsconfig.json",{"path":492,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":493,"sourceHtmlUrl":494},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fshell-slice.json",68,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Fshell-slice.json",{"path":496,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":168,"sourceHtmlUrl":497},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Ftsconfig.base.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Ftsconfig.base.json",{"path":499,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":176,"sourceHtmlUrl":500},"tests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Ftsconfig.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-configs\u002Fgood\u002Ftsconfig.json",{"path":502,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":503},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fapps\u002Ftile-drop\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":505,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":506,"sourceHtmlUrl":507},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002FEXPECT.txt",412,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002FEXPECT.txt",{"path":509,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":510,"sourceHtmlUrl":511},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackage.json",100,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackage.json",{"path":513,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":514},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fgame-kit\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":516,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":517},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fshell\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":519,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":520,"sourceHtmlUrl":521},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fshell\u002Fsrc\u002Fscreens\u002Fpremium\u002Frestore-button.tsx",582,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fshell\u002Fsrc\u002Fscreens\u002Fpremium\u002Frestore-button.tsx",{"path":523,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":298,"sourceHtmlUrl":524},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fsave\u002Fflush-save.ts","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-async-and-errors\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fsave\u002Fflush-save.ts",{"path":526,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":527},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fapps\u002Ftile-drop\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":529,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":530,"sourceHtmlUrl":531},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fapps\u002Ftile-drop\u002Fsrc\u002Fboard\u002Fdraw-board.ts",357,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fapps\u002Ftile-drop\u002Fsrc\u002Fboard\u002Fdraw-board.ts",{"path":533,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":534,"sourceHtmlUrl":535},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002FEXPECT.txt",263,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002FEXPECT.txt",{"path":537,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":510,"sourceHtmlUrl":538},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fpackage.json",{"path":540,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":541},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fpackages\u002Fgame-kit\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":543,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":544},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fpackages\u002Fshell\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-imports\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":546,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":547,"sourceHtmlUrl":548},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-silenced\u002FEXPECT.txt",237,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-silenced\u002FEXPECT.txt",{"path":550,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":551,"sourceHtmlUrl":552},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-silenced\u002Fpackages\u002Fshell\u002Fsrc\u002Fui\u002Flevel-label.ts",335,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-silenced\u002Fpackages\u002Fshell\u002Fsrc\u002Fui\u002Flevel-label.ts",{"path":554,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":555,"sourceHtmlUrl":556},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-syntax\u002FEXPECT.txt",425,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-syntax\u002FEXPECT.txt",{"path":558,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":559,"sourceHtmlUrl":560},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-syntax\u002Fpackages\u002Fshell\u002Fsrc\u002Fstores\u002Ftheme-mode.ts",476,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-syntax\u002Fpackages\u002Fshell\u002Fsrc\u002Fstores\u002Ftheme-mode.ts",{"path":562,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":563,"sourceHtmlUrl":564},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-too-big\u002Fapps\u002Ftile-drop\u002Fsrc\u002Flevels\u002Flevel-table.ts",1770,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-too-big\u002Fapps\u002Ftile-drop\u002Fsrc\u002Flevels\u002Flevel-table.ts",{"path":566,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":567,"sourceHtmlUrl":568},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-too-big\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fsum-values.ts",1581,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-too-big\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fsum-values.ts",{"path":570,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":571,"sourceHtmlUrl":572},"tests\u002Ffixtures\u002Fcheck-source\u002Fbad-too-big\u002FEXPECT.txt",374,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fbad-too-big\u002FEXPECT.txt",{"path":574,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":575,"sourceHtmlUrl":576},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fapp.config.ts",194,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fapp.config.ts",{"path":578,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":294,"sourceHtmlUrl":579},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fpackage.json",{"path":581,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":582,"sourceHtmlUrl":583},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fapply-move.test.ts",1343,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fapply-move.test.ts",{"path":585,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":586,"sourceHtmlUrl":587},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fapply-move.ts",1475,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fapply-move.ts",{"path":589,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":590,"sourceHtmlUrl":591},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fmany-cases.test.ts",5290,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fmany-cases.test.ts",{"path":593,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":594,"sourceHtmlUrl":595},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fscore-level.ts",2184,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fapps\u002Ftile-drop\u002Fsrc\u002Frules\u002Fscore-level.ts",{"path":597,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":510,"sourceHtmlUrl":598},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackage.json",{"path":600,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":318,"sourceHtmlUrl":601},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fgame-kit\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fgame-kit\u002Fpackage.json",{"path":603,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":160,"sourceHtmlUrl":604},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fgame-kit\u002Fsrc\u002Fcontract\u002Fresult.ts","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fgame-kit\u002Fsrc\u002Fcontract\u002Fresult.ts",{"path":606,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":325,"sourceHtmlUrl":607},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fpackage.json","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fpackage.json",{"path":609,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":610,"sourceHtmlUrl":611},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fplugins\u002Fwith-app-variant-marker.ts",645,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fplugins\u002Fwith-app-variant-marker.ts",{"path":613,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":152,"sourceHtmlUrl":614},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fapp-env.d.ts",{"path":616,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":617,"sourceHtmlUrl":618},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fscreens\u002Fpremium\u002Fbuy-button.tsx",783,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fscreens\u002Fpremium\u002Fbuy-button.tsx",{"path":620,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":621,"sourceHtmlUrl":622},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fasync\u002Fwith-timeout.test.ts",975,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fasync\u002Fwith-timeout.test.ts",{"path":624,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":625,"sourceHtmlUrl":626},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fasync\u002Fwith-timeout.ts",876,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fasync\u002Fwith-timeout.ts",{"path":628,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":629,"sourceHtmlUrl":630},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Ferror-log\u002Fuse-report-error.ts",475,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Ferror-log\u002Fuse-report-error.ts",{"path":632,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":633,"sourceHtmlUrl":634},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fpurchase\u002Fread-revocation.ts",541,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Fshell\u002Fsrc\u002Fservices\u002Fpurchase\u002Fread-revocation.ts",{"path":636,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":637,"sourceHtmlUrl":638},"tests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Ftooling\u002Fsrc\u002Freport\u002Fprint-report.ts",233,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002Ftests\u002Ffixtures\u002Fcheck-source\u002Fgood\u002Fpackages\u002Ftooling\u002Fsrc\u002Freport\u002Fprint-report.ts",[640,647,654,659,666,673],{"skillNo":641,"name":642,"nameZh":6,"description":643,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":644,"categories":645,"keywords":646,"publishedAt":19},"01M7DFK8QE5P9TME3GRJC5716K","unit-and-component-tests","Sets up Jest and writes Pocket Arcade test code - three projects, RNTL 14 async via renderWithShell, root SDK mocks, fakes, fast-check, coverage, Stryker. Use when a test needs the Shell wrapper, a mock or a fake, or Jest fails. Not for the red-green loop (tdd-workflow) or goldens (golden-tests).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Funit-and-component-tests\u002FSKILL.md",[],[],{"skillNo":648,"name":649,"nameZh":6,"description":650,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":651,"categories":652,"keywords":653,"publishedAt":19},"01M7DFJZB14VQ3F8A6A5G8D5BY","demo-skill","Builds a demo. Use when testing the pitfall checker.","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftroubleshooting-playbook\u002Ftests\u002Ffixtures\u002Fcheck-known-pitfalls\u002Fgood\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[],[],{"skillNo":655,"name":649,"nameZh":6,"description":650,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":656,"categories":657,"keywords":658,"publishedAt":19},"01M7DFJXMSA9Y9K6DF4CJJ2XPZ","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftroubleshooting-playbook\u002Ftests\u002Ffixtures\u002Fcheck-known-pitfalls\u002Fbad-configs\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[],[],{"skillNo":660,"name":661,"nameZh":6,"description":662,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":663,"categories":664,"keywords":665,"publishedAt":19},"01M7DFJKZXFJ7403V3YNE83MBS","troubleshooting-playbook","Diagnoses and fixes Pocket Arcade failures with a catalogue of 300+ known ones (symptom, cause, fix). Use when something errors, crashes, hangs or renders wrong, or an error or log needs explaining. Not for gate setup (quality-gates) or running builds (ios-simulator-build, ios-release-testflight).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftroubleshooting-playbook\u002FSKILL.md",[],[],{"skillNo":667,"name":668,"nameZh":6,"description":669,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":670,"categories":671,"keywords":672,"publishedAt":19},"01M7DFJ7FGGWGMV63YW4VT4QPX","toybox-visual-parity","Proves a built Pocket Arcade screen matches its Toybox design screenshot (light\u002Fdark, en\u002Ffa) and drives the fixes: capture, element gates, sheets, sign-off. Use when any screen is built or changed, or for visual parity, design match, screenshot compare. Not for building screens (toybox-screens).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftoybox-visual-parity\u002FSKILL.md",[],[],{"skillNo":674,"name":675,"nameZh":6,"description":676,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":677,"categories":678,"keywords":679,"publishedAt":19},"01M7DFHTSH8JBN6H3JX3FEXK2P","toybox-screens","Builds Pocket Arcade screens S1-S15 to their Toybox specs: layout, spacing, the exact screen-map testIDs, copy keys, every state, banner slots, reference images. Use when building or changing a screen, overlay or dialog. Not for components (toybox-components) or pixel compare (toybox-visual-parity).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftoybox-screens\u002FSKILL.md",[],[]]