expo/skills
A collection of AI agent skills for working with Expo projects and Expo Application Services
Shell★ 3,648+90 that day#7 on trending
B72.7/100
Duplication79
2.6% in bash, typescript, python, javascript, swift, tsxDead code87
0%Complexity60
46.4% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
2.41%duplicated over all files · 704 of 29,200 lines
59clones
278files scanned
Most complex files
- .claude/skills/expo-skill-eval/scripts/generate_viewer.py78 cx
- scripts/check-plugin-version-bump.ts67 cx
- .claude/skills/expo-skill-eval/scripts/snapshot-android.sh60 cx
- plugins/expo/skills/expo-ui/scripts/list-components.js52 cx
- scripts/ci.py51 cx
- scripts/check-skill-limits.ts44 cx
- scripts/check-plugin-version-bump.test.ts41 cx
- .claude/skills/expo-skill-eval/scripts/snapshot-ios.sh29 cx
- scripts/sync-animate-expo.ts29 cx
- plugins/expo/skills/eas-workflows/scripts/fetch.js23 cx
Dead code 0% unused · 0 findings
No dead code found — everything here is reachable.
Only 17 of the files count as code, too few for a code-only percentage; the numbers above cover every file.
Largest clones in the code
- 14 lines in 2 placestypescript72 tokens
20 const summaryPath = process.env.ROUTING_CHECK_SUMMARY_PATH; 21 if (!summaryPath) { 22 return; 23 } 24 25 mkdirSync(dirname(summaryPath), { recursive: true }); 26 writeFileSync(summaryPath, `${markdown}\n`); 27} 28 29function complete(success: boolean, markdown: string): never {First 10 of 14 lines.
- 13 lines in 2 placesbash61 tokens.claude/skills/expo-skill-eval/scripts/snapshot-android.sh:47–59.claude/skills/expo-skill-eval/scripts/snapshot-ios.sh:22–34
47if [[ "$RUNNER" == "dev-build" ]]; then 48 BUNDLE_TIMEOUT="${EXPO_SKILL_EVAL_BUNDLE_TIMEOUT:-900}" # native compile is slow 49else 50 BUNDLE_TIMEOUT="${EXPO_SKILL_EVAL_BUNDLE_TIMEOUT:-240}" 51fi 52LOG="${OUT%.png}.metro.log" 53 54mkdir -p "$(dirname "$OUT")" 55 56# Free the port up front in case a previous run (or a crash) left Metro on it,First 10 of 13 lines.
- 10 lines in 2 placesbash61 tokens
163install_harness_deps 164 165export SKILL_PLUGIN_DIR="$plugin_dir" 166bash ./eval-harness/eval_harness/app_builder/scripts/author-app.sh 167 168AUTHORED_ARTIFACT="$(pwd)/eval-harness" \ 169SCENARIO="$scenario" \ 170OUT_DIR="$out_dir" \ 171PRD_SKILLS="$(pwd)/eval-harness/dataset/prd_skills.json" \ 172bash ./eval-harness/eval_harness/evaluator/skill_invocation/scripts/eval-skill-use.sh
1 more
- 6 lines in 2 placesbash52 tokens
Largest clones over all files, tests and data included
- 9 lines in 14 placesmarkdowndocs and examples98 tokensplugins/expo/skills/eas-app-stores/SKILL.md:167–175plugins/expo/skills/eas-update-insights/SKILL.md:229–237plugins/expo/skills/eas-workflows/SKILL.md:90–98plugins/expo/skills/expo-animation/SKILL.md:265–273plugins/expo/skills/expo-brownfield/SKILL.md:61–69and 9 more
167Check the CLI version before interpreting a missing command: these submission commands are available in 23.2.0 but not in the tested 18.6.0 installation. A pin… 168 169## Submitting Feedback 170If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve: 171```bash 172npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-app-stores" "<actionable feedback>" 173``` 174Only submit when you have something specific and actionable to report. Include as much relevant context as possible. 175If an agent repeatedly fails at an Expo task or the user has to step in, submit a brief report of the task, expected result, and what went wrong using `--categ…229- **Crashes are self-reported**: `failedInstalls` / "Crashes" counts updates that errored during install/launch and were reported on the next update check. Cra… 230 231## Submitting Feedback 232If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve: 233```bash 234npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-update-insights" "<actionable feedback>" 235``` 236Only submit when you have something specific and actionable to report. Include as much relevant context as possible. 237If an agent repeatedly fails at an Expo task or the user has to step in, submit a brief report of the task, expected result, and what went wrong using `--categ… - 7 lines in 11 placesmarkdowndocs and examples97 tokensplugins/expo-experiments/skills/expo-migrate-module/SKILL.md:117–123plugins/expo/skills/eas-app-stores/SKILL.md:169–175plugins/expo/skills/eas-hosting/SKILL.md:424–430plugins/expo/skills/eas-observe/SKILL.md:43–49plugins/expo/skills/eas-simulator/SKILL.md:230–236and 6 more
117## Submitting Feedback 118If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve: 119```bash 120npx --yes @expo/agent-cli@latest feedback --category skills --subject "expo-migrate-module" "<actionable feedback>" 121``` 122Only submit when you have something specific and actionable to report. Include as much relevant context as possible. 123If an agent repeatedly fails at an Expo task or the user has to step in, submit a brief report of the task, expected result, and what went wrong using `--categ…169## Submitting Feedback 170If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve: 171```bash 172npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-app-stores" "<actionable feedback>" 173``` 174Only submit when you have something specific and actionable to report. Include as much relevant context as possible. 175If an agent repeatedly fails at an Expo task or the user has to step in, submit a brief report of the task, expected result, and what went wrong using `--categ… - 20 lines in 3 placesyamldata files185 tokens.eas/workflows/skill-eval-ci.yml:88–107.eas/workflows/skill-eval-ci.yml:193–212.eas/workflows/skill-eval-ci.yml:298–317
88 PRD: dataset/prds/notes/prd/mvp.txt 89 SCENARIO: skills_available_unmentioned 90outputs: 91 report: ${{ steps.run.outputs.report }} 92 expected: ${{ steps.run.outputs.expected }} 93 detected: ${{ steps.run.outputs.detected }} 94 recall: ${{ steps.run.outputs.recall }} 95 precision: ${{ steps.run.outputs.precision }} 96 lexical: ${{ steps.run.outputs.lexical }} 97 structural: ${{ steps.run.outputs.structural }}First 10 of 20 lines.
- 17 lines in 3 placesyamldata files152 tokens
- 12 lines in 2 placesmarkdowndocs and examples232 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| bash | 9 | 988 | 3 | 29 | 2.94% |
| typescript | 4 | 682 | 1 | 14 | 2.05% |
| python | 2 | 823 | 0 | 0 | 0% |
| javascript | 2 | 302 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| markdown | 103 | 18,602 | 29 | 240 | 1.29% |
| yaml | 22 | 948 | 12 | 193 | 20.36% |
| swift | 13 | 925 | 8 | 140 | 15.14% |
| tsx | 32 | 2,935 | 5 | 81 | 2.76% |
| bash | 40 | 1,594 | 3 | 29 | 1.82% |
| typescript | 12 | 1,183 | 1 | 14 | 1.18% |
| javascript | 8 | 503 | 1 | 7 | 1.39% |
| json | 21 | 968 | 0 | 0 | 0% |
| python | 2 | 823 | 0 | 0 | 0% |
| text | 11 | 245 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Oct 29, 2026 | #7 | 3,648 (+90) | 278 | 29,200 | 59 | 2.41% | — | B 72.7 | 05754e7 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.