Code clean tools: Fallow and skills

Published: May 7, 2026 by Isaac Johnson

I recently came across this YT review of Fallow which is easy to run and similar to desloppify is meant to help cleanup vibe code (but also just code in general). In this post I’ll set it up and explore some of its features and touch on some of the paid ones as well.

Since it really is just focused on JavaScript and Typescript, I then follow that up with a variety of code cleaning skills such as clean code skills from these claude-code-skills.

Let’s start with Fallow.

Fallow

I have a project underway that might be able to use something like this.

(venv) builder@DESKTOP-QADGF36:~/Workspaces/offenquelle$ ls
Dockerfile               helm-chart
HELM_SETUP.md            nanobanana-output
INSTALL.md               offenquelle_landing_page.egg-info
README.md                openapi.yaml
SYSTEM.md                pyproject.toml
app                      pytest.ini
app.db                   tests
build                    venv
example_invvokation.txt

I was legitimately surprised to see that I had no issues at the start

/content/images/2026/05/fallow-01.png

This could be because the bulk of this project is Python and Fallow is really more about HTML and JS frameworks

Let’s pivot over to my Wildtrack repo which I know needs some cleaning as this was the one we did “desloppify” on before

(venv) builder@DESKTOP-QADGF36:~/Workspaces/wildernessapp$ npx fallow
   0.007073804s  WARN node_modules directory not found. Run `npm install` / `pnpm install` first for accurate results.
  note: git churn analysis took 0.6s (cached for next run at same HEAD)

■ Metrics: dead files 6.0% (6 of 100) · dead exports 6.4% (6 of 94) · MI 91.8 (good) · 1 churn hotspot
  100 files analyzed
  17 entry points detected (16 plugin, 1 default index)
  1 refactoring target — start with server.js (untested risk)

── Dead Code ──────────────────────────────────────

── Unused Code ─────────────────────────────────────

● Unused files (6)
  client/src/App.css
  client/src/test/setup.ts
  server/auth.js
  server/database.js
  server/email.js
  server/server.js
  Files not reachable from any entry point — https://docs.fallow.tools/explanations/dead-code#unused-files
  To suppress: // fallow-ignore-next-line unused-files

● Unused exports (2)
  client/src/components/inventory/GearIcon.tsx
    :3 getGearIcon
  client/src/utils/imageUtils.ts
    :3 createImage
  Exported symbols with no known consumers — https://docs.fallow.tools/explanations/dead-code#unused-exports
  (2 more in files already reported as unused)

● Unused type exports (2)
  client/src/hooks/useTrailChat.ts
    :4 Participant
  client/src/hooks/useUserSearch.ts
    :3 UserSearchResult
  Type exports with no known consumers — https://docs.fallow.tools/explanations/dead-code#unused-types

✗ 6 files · 2 exports · 2 types (0.12s)

── Duplication ────────────────────────────────────

● Duplicates (46 clone groups)

     35 lines  3 instances
    client/src/hooks/useTripEditor.ts:107-141
    client/src/hooks/useTripLogistics.ts:38-61
    client/src/hooks/useTripPlanning.ts:94-105

     34 lines  2 instances
    client/src/components/shared/MapWidget.tsx:38-71
    client/src/components/trip-sections/TripMap.tsx:31-63

     27 lines  2 instances
    client/src/components/shared/MapWidget.tsx:177-189
    client/src/hooks/useMapInstance.ts:24-50

     22 lines  2 instances
    client/src/pages/admin/Admin.tsx:37-58
    client/src/pages/general/Settings.tsx:103-116

     19 lines  2 instances
    server/server.js:737-755
    server/server.js:758-773

     17 lines  2 instances
    client/src/components/trip-editor/TripScheduleEditor.tsx:88-103
    client/src/components/trip-sections/TripLogistics.tsx:132-148

     15 lines  2 instances
    client/src/components/trip-editor/TripTeamManager.tsx:65-79
    client/src/pages/trips/TripPlanning.tsx:111-112

     14 lines  3 instances
    client/src/components/shared/MapWidget.tsx:49-62
    client/src/components/trip-sections/TripMap.tsx:42-55
    client/src/utils/mapStyles.ts:6-19

     14 lines  2 instances
    client/src/components/trip-view/TripParticipants.tsx:79-92
    client/src/pages/trips/TripPlanning.tsx:111-112

     14 lines  2 instances
    server/server.js:577-588
    server/server.js:1299-1312

  ... and 36 more clone groups
  Identical code blocks detected via suffix-array analysis — https://docs.fallow.tools/explanations/duplication#clone-groups

● Clone families (7 with multiple groups)

  3 groups, 44 lines across client/src/components/shared/MapWidget.tsx, client/src/hooks/useMapInstance.ts
    → Extract shared function (27 lines) from MapWidget.tsx, useMapInstance.ts
    → Extract shared function (10 lines) from MapWidget.tsx, useMapInstance.ts
    → Extract shared function (7 lines) from MapWidget.tsx, useMapInstance.ts

  2 groups, 14 lines across client/src/components/trip-sections/TripMap.tsx, client/src/hooks/useMapInstance.ts
    → Extract shared function (9 lines) from TripMap.tsx, useMapInstance.ts
    → Extract shared function (5 lines) from TripMap.tsx, useMapInstance.ts

  2 groups, 25 lines across client/src/components/trip-view/TripParticipants.tsx, client/src/pages/trips/TripPlanning.tsx
    → Extract shared function (11 lines) from TripParticipants.tsx, TripPlanning.tsx
    → Extract shared function (14 lines) from TripParticipants.tsx, TripPlanning.tsx

  2 groups, 43 lines across client/src/hooks/useTripEditor.ts, client/src/hooks/useTripLogistics.ts, client/src/hooks/useTripPlanning.ts
    → Extract shared function (35 lines) from useTripEditor.ts, useTripLogistics.ts, useTripPlanning.ts
    → Extract shared function (8 lines) from useTripEditor.ts, useTripLogistics.ts, useTripPlanning.ts

  2 groups, 14 lines across client/src/hooks/useTripEditor.ts, client/src/hooks/useTripPlanning.ts
    → Extract shared function (9 lines) from useTripEditor.ts, useTripPlanning.ts
    → Extract shared function (5 lines) from useTripEditor.ts, useTripPlanning.ts

  2 groups, 14 lines across client/src/pages/gear/Inventory.test.tsx, client/src/pages/general/Settings.test.tsx
    → Extract shared function (7 lines) from Inventory.test.tsx, Settings.test.tsx
    → Extract shared function (7 lines) from Inventory.test.tsx, Settings.test.tsx

  20 groups, 178 lines across server/server.js
    → Extract 20 shared clone groups (178 lines) from server.js into server

  Groups of related clones across the same files — https://docs.fallow.tools/explanations/duplication#clone-families

✗ 870 lines (9.4%) duplicated across 29 files (0.02s)

── Complexity ─────────────────────────────────────

■ Metrics: 9,497 LOC · dead files 6.0% · dead exports 6.4% · avg cyclomatic 2.3 · p90 cyclomatic 4 · maintainability 91.8 (good) · 1 churn hotspot

  Function size: 74% low · 14% medium · 6% high · 6% very high  (1-15 / 16-30 / 31-60 / >60 LOC)

● Large functions (10 shown, 53 total)
  server/database.js
    :26 initDb  300 lines
  client/src/components/shared/MapWidget.tsx
    :15 MapWidget  214 lines
  client/src/components/trip-sections/TripFiles.tsx
    :9 TripFiles  181 lines
  client/src/components/trip-sections/TripLinks.tsx
    :9 TripLinks  165 lines
  client/src/hooks/useTripEditor.ts
    :4 useTripEditor  164 lines
  client/src/components/trip-sections/TripMap.tsx
    :11 TripMap  139 lines
  client/src/hooks/useAdminData.ts
    :17 useAdminData  138 lines
  client/src/pages/general/Settings.tsx
    :11 Settings  138 lines
  client/src/pages/trips/TripPlanning.tsx
    :7 TripPlanning  138 lines
  client/src/components/trip-sections/TripLogistics.tsx
    :17 TripLogistics  132 lines
  Functions exceeding 60 lines of code (very high risk): https://docs.fallow.tools/explanations/health#unit-size
  use --top 53 to see all

● High complexity functions (50)
  client/src/pages/general/Settings.tsx
    :11 Settings CRITICAL
          28 cyclomatic   16 cognitive  138 lines
         197.3 CRAP
  client/src/components/auth/AuthCard.tsx
    :27 AuthCard HIGH
          23 cyclomatic   27 cognitive   99 lines
  client/src/hooks/useAuthForm.ts
    :45 handleSubmit HIGH
          16 cyclomatic   19 cognitive   56 lines
          71.3 CRAP
  client/src/components/trip-view/TripParticipants.tsx
    :36 <arrow> HIGH
          16 cyclomatic   13 cognitive   28 lines
          71.3 CRAP
  server/server.js
    :871 <arrow> CRITICAL
          15 cyclomatic   14 cognitive   87 lines
         240.0 CRAP
  client/src/components/trip-sections/TripLogistics.tsx
    :17 TripLogistics
          14 cyclomatic   17 cognitive  132 lines
  server/server.js
    :693 <arrow> CRITICAL
          14 cyclomatic   13 cognitive   43 lines
         210.0 CRAP
  client/src/components/inventory/GearIcon.tsx
    :3 getGearIcon HIGH
          14 cyclomatic    1 cognitive   18 lines
          56.3 CRAP
  client/src/pages/trips/TripPlanning.tsx
    :7 TripPlanning HIGH
          14 cyclomatic   12 cognitive  138 lines
          56.3 CRAP
  client/src/components/chat/ChatWindow.tsx
    :67 <arrow> HIGH
          14 cyclomatic    8 cognitive   21 lines
          56.3 CRAP
  client/src/components/trip-sections/TripChat.tsx
    :42 <arrow> HIGH
          14 cyclomatic    8 cognitive   14 lines
          56.3 CRAP
  client/src/pages/trips/TripDetails.tsx
    :20 TripDetails
          13 cyclomatic    4 cognitive  118 lines
          49.5 CRAP
  client/src/components/trip-sections/TripMap.tsx
    :26 initMapAndRoute
          12 cyclomatic   19 cognitive   83 lines
          43.1 CRAP
  server/server.js
    :662 <arrow> CRITICAL
          11 cyclomatic   10 cognitive   30 lines
         132.0 CRAP
  client/src/components/ui/Sidebar.tsx
    :10 Sidebar
          11 cyclomatic    6 cognitive   89 lines
          37.1 CRAP
  client/src/hooks/useLeaveTrip.ts
    :23 handleLeaveConfirm
          11 cyclomatic   13 cognitive   36 lines
          37.1 CRAP
  client/src/hooks/useMealPlan.ts
    :22 <arrow>
          11 cyclomatic   13 cognitive   52 lines
          37.1 CRAP
  client/src/hooks/useTrailChat.ts
    :83 initChat
          10 cyclomatic   17 cognitive   32 lines
          31.6 CRAP
  server/server.js
    :283 <arrow> CRITICAL
          10 cyclomatic    8 cognitive   41 lines
         110.0 CRAP
  client/src/components/trip-sections/TripNotes.tsx
    :11 TripNotes
           9 cyclomatic   19 cognitive  100 lines
  server/server.js
    :1262 <arrow> HIGH
           9 cyclomatic   10 cognitive   34 lines
          90.0 CRAP
  server/database.js
    :153 <arrow> HIGH
           8 cyclomatic    7 cognitive   34 lines
          72.0 CRAP
  server/server.js
    :634 <arrow> HIGH
           7 cyclomatic    6 cognitive   27 lines
          56.0 CRAP
    :737 <arrow> HIGH
           7 cyclomatic    7 cognitive   20 lines
          56.0 CRAP
    :758 <arrow> HIGH
           7 cyclomatic    6 cognitive   27 lines
          56.0 CRAP
    :1226 <arrow> HIGH
           7 cyclomatic    4 cognitive   27 lines
          56.0 CRAP
    :157 <anonymous>
           6 cyclomatic    5 cognitive   16 lines
          42.0 CRAP
    :1093 <arrow>
           6 cyclomatic    4 cognitive   18 lines
          42.0 CRAP
    :1159 <arrow>
           6 cyclomatic    4 cognitive   12 lines
          42.0 CRAP
    :1210 <arrow>
           6 cyclomatic    4 cognitive    9 lines
          42.0 CRAP
    :1326 <arrow>
           6 cyclomatic    7 cognitive   10 lines
          42.0 CRAP
    :1418 <arrow>
           6 cyclomatic    7 cognitive   11 lines
          42.0 CRAP
  client/src/components/admin/AdminBackups.tsx
    :14 AdminBackups
           6 cyclomatic    5 cognitive   95 lines
          42.0 CRAP
  client/src/pages/admin/Admin.tsx
    :7 Admin
           6 cyclomatic    4 cognitive   62 lines
          42.0 CRAP
  server/auth.js
    :50 <arrow>
           5 cyclomatic    4 cognitive   21 lines
          30.0 CRAP
  server/server.js
    :98 <anonymous>
           5 cyclomatic    4 cognitive   15 lines
          30.0 CRAP
    :822 <anonymous>
           5 cyclomatic    6 cognitive   37 lines
          30.0 CRAP
    :807 <arrow>
           5 cyclomatic    4 cognitive   55 lines
          30.0 CRAP
    :863 <arrow>
           5 cyclomatic    4 cognitive   96 lines
          30.0 CRAP
    :965 <arrow>
           5 cyclomatic    3 cognitive   10 lines
          30.0 CRAP
    :983 <arrow>
           5 cyclomatic    3 cognitive   10 lines
          30.0 CRAP
    :1018 <arrow>
           5 cyclomatic    3 cognitive   10 lines
          30.0 CRAP
    :1034 <arrow>
           5 cyclomatic    3 cognitive   10 lines
          30.0 CRAP
    :1468 <arrow>
           5 cyclomatic    4 cognitive   17 lines
          30.0 CRAP
    :1454 <arrow>
           5 cyclomatic    4 cognitive   32 lines
          30.0 CRAP
  client/src/components/admin/AdminUsers.tsx
    :38 <arrow>
           5 cyclomatic    4 cognitive   26 lines
          30.0 CRAP
  client/src/hooks/useAdminData.ts
    :37 fetchUsers
           5 cyclomatic    5 cognitive   18 lines
          30.0 CRAP
    :61 handleDeleteUser
           5 cyclomatic    4 cognitive   18 lines
          30.0 CRAP
    :95 handleDeleteBackup
           5 cyclomatic    4 cognitive   12 lines
          30.0 CRAP
    :108 handleRestoreBackup
           5 cyclomatic    4 cognitive   27 lines
          30.0 CRAP
  Functions exceeding cyclomatic, cognitive, or CRAP thresholds (https://docs.fallow.tools/explanations/health#complexity-metrics)
  To suppress: // fallow-ignore-next-line complexity

● File health scores (92 files)

   64.3    server/server.js
           1519 LOC    0 fan-in    3 fan-out  100% dead  0.34 density  240.0 risk

   67.9    server/auth.js
             75 LOC    1 fan-in    1 fan-out  100% dead  0.31 density  30.0 risk

   74.0    server/database.js
            328 LOC    2 fan-in    0 fan-out  100% dead  0.20 density  72.0 risk

   76.4    server/email.js
             33 LOC    1 fan-in    0 fan-out  100% dead  0.18 density  12.0 risk

   78.2    client/src/test/setup.ts
             16 LOC    0 fan-in    0 fan-out  100% dead  0.19 density  2.0 risk

   81.0    client/src/components/inventory/GearIcon.tsx
             30 LOC    1 fan-in    0 fan-out   50% dead  0.50 density  56.3 risk

   81.8    client/src/pages/general/Settings.tsx
            149 LOC    2 fan-in    7 fan-out    0% dead  0.33 density  197.3 risk

   83.3    client/src/pages/trips/TripDetails.tsx
            138 LOC    2 fan-in   16 fan-out    0% dead  0.18 density  49.5 risk

   84.0    client/src/pages/trips/TripPlanning.tsx
            145 LOC    2 fan-in    4 fan-out    0% dead  0.32 density  56.3 risk

   84.7    client/src/utils/imageUtils.ts
             42 LOC    1 fan-in    0 fan-out   50% dead  0.21 density  3.0 risk

  ... and 82 more files (--format json for full list)

  Composite file quality scores based on complexity, coupling, and dead code. Risk: low <15, moderate 15-30, high >=30. CRAP estimated from export references (85% direct, 40% indirect, 0% untested). Use --coverage for exact scores. https://docs.fallow.tools/explanations/health#file-health-scores

● Hotspots (5 files, since 6 months)

  100.0 ▼  server/server.js
          25 commits   1688 churn  0.34 density   0 fan-in  ▼ cooling

   44.6 ─  server/database.js
          19 commits    369 churn  0.20 density   2 fan-in  ─ stable

   16.7 ▼  client/src/App.tsx
          13 commits    107 churn  0.11 density   1 fan-in  ▼ cooling

   14.6 ─  server/auth.js
           4 commits     78 churn  0.31 density   1 fan-in  ─ stable

    5.7 ─  client/src/context/AuthContext.tsx
           4 commits     94 churn  0.12 density   7 fan-in  ─ stable

  87 files excluded (< 3 commits)

  Files with high churn and high complexity — https://docs.fallow.tools/explanations/health#hotspot-metrics

● Refactoring targets (1)
  1 high
    score = quick-win ROI (higher = better) · pri = absolute priority

   19.7  pri:59.0    server/server.js
         untested risk · effort:high · confidence:high  25 complex functions lack test coverage path, add tests before modifying

  Prioritized refactoring recommendations based on complexity, churn, and coupling signals — https://docs.fallow.tools/explanations/health#refactoring-targets

✗ 50 above threshold · 833 analyzed · maintainability 91.8 (good) (0.61s)

Failed: dead-code (12 issues), dupes (46 clone groups), health (50 above threshold) — start with server.js

Let’s say we wanted to correct these.

We could use the dry-run first in the part of the repo with JS code

(venv) builder@DESKTOP-QADGF36:~/Workspaces/wildernessapp/client$ npm install

up to date, audited 406 packages in 3s

158 packages are looking for funding
  run `npm fund` for details

9 vulnerabilities (3 moderate, 6 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
(venv) builder@DESKTOP-QADGF36:~/Workspaces/wildernessapp/client$ npx fallow fix --dry-run
Would remove export from src/utils/imageUtils.ts:3 `createImage`
Would remove export from src/components/inventory/GearIcon.tsx:3 `getGearIcon`
Would remove `lucide-react` from dependencies in /home/builder/Workspaces/wildernessapp/client/package.json
Would remove `@tailwindcss/typography` from devDependencies in /home/builder/Workspaces/wildernessapp/client/package.json
Would remove `autoprefixer` from devDependencies in /home/builder/Workspaces/wildernessapp/client/package.json
Dry run complete. No files were modified.

Let me do two things here - an audit fix for CVEs and fallow fix to cleanup code

(venv) builder@DESKTOP-QADGF36:~/Workspaces/wildernessapp/client$ npx fallow fix --dry-run
Would remove export from src/utils/imageUtils.ts:3 `createImage`
Would remove export from src/components/inventory/GearIcon.tsx:3 `getGearIcon`
Would remove `lucide-react` from dependencies in /home/builder/Workspaces/wildernessapp/client/package.json
Would remove `@tailwindcss/typography` from devDependencies in /home/builder/Workspaces/wildernessapp/client/package.json
Would remove `autoprefixer` from devDependencies in /home/builder/Workspaces/wildernessapp/client/package.json
Dry run complete. No files were modified.
(venv) builder@DESKTOP-QADGF36:~/Workspaces/wildernessapp/client$ npm audit fix

changed 13 packages, and audited 405 packages in 6s

158 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
(venv) builder@DESKTOP-QADGF36:~/Workspaces/wildernessapp/client$ npx fallow fix
Fixed 5 issue(s).

This handles exports and dependencies, but not dupes and dead code.

Perhaps we can feed this into Gemini CLI to get it cleaned up?

As we see in the results, Gemini listened to Fallows “dead-code” responses, but wisely noted the test file is actually used by Vite config:

  Cleanup Complete: Finalize dead code cleanup investigation.


✦ I have verified the dead code reported by fallow and performed the following cleanup:

  1. Removed Unused Files
   * src/App.css: This file contained default Vite boilerplate and was not imported or used anywhere in the project. I have deleted
     it.
   * src/test/setup.ts: Note: I have chosen NOT to remove this file. Although fallow flags it as unused, it is explicitly referenced
     in vite.config.ts as a test setup file:

   1     // vite.config.ts
   2     setupFiles: ['./src/test/setup.ts'],

  2. Removed Unused Exports
  I downgraded the following types from export interface to interface because they are only used internally within their respective
  files:
   * Participant in src/hooks/useTrailChat.ts
   * UserSearchResult in src/hooks/useUserSearch.ts

  Verification Results
  After the cleanup, npx fallow dead-code now only reports src/test/setup.ts as unused, confirming that the other dead code has been
  successfully addressed.

Here we can see some of the examples of cleanup that was done including removing unnecessary exports

/content/images/2026/05/fallow-03.png

Let’s just see how Gemini handles Duplications.

Here is a partial recording of that session:

Which wrapped up after a long while with quite a lot of updates

/content/images/2026/05/fallow-07.png

I didn’t test building and running, but i did stash these changes in a branch

/content/images/2026/05/fallow-08.png

Pi

I was curious how well Pi might do.

I cloned the skills

builder@DESKTOP-QADGF36:~/.agents/skills$ git clone https://github.com/fallow-rs/fallow-skills.git fallow-skills
Cloning into 'fallow-skills'...
remote: Enumerating objects: 1419, done.
remote: Counting objects: 100% (86/86), done.
remote: Compressing objects: 100% (59/59), done.
remote: Total 1419 (delta 24), reused 75 (delta 15), pack-reused 1333 (from 1)
Receiving objects: 100% (1419/1419), 381.65 KiB | 3.15 MiB/s, done.
Resolving deltas: 100% (701/701), done.

I then found it nested the “fallow” folder, so I moved that up.

I found Opencode with Minimax Free worked pretty well

/content/images/2026/05/fallow-09.png

But many of the Ollama models seemed to get hung up on the skill

/content/images/2026/05/fallow-10.png

I tried Qwen3 14b which seemed to work

/content/images/2026/05/fallow-11.png

And IBM’s new Granite 4.1 which did not

/content/images/2026/05/fallow-12.png

Plans

There is some static file analysis that can be run with a trial.

I wanted to first understand costs. If we go to the Fallow site and to Pricing we can see that for individuals it is free, but for teams (greater than 2 contributors) it’s US$20/mo/dev

/content/images/2026/05/fallow-05.png

I can do a trial, but free tier will eventually block me and my only choice at that point would be to pay $60/mo (because they require a minimum of 3 users)

/content/images/2026/05/fallow-06.png

I find this rather odd as it would seem there should be some kind of full featured option for just a solo schmo like myself.

Skills: Clean Code

By way of Lobehub, I found these claude-code-skills from Sammasak.

Let’s look at their Claude Code Skills - Clean Code Principals

I’ll clone it down

builder@DESKTOP-QADGF36:~/Workspaces$ git clone https://github.com/sammasak/claude-code-skills.git
Cloning into 'claude-code-skills'...
remote: Enumerating objects: 1018, done.
remote: Counting objects: 100% (376/376), done.
remote: Compressing objects: 100% (229/229), done.
remote: Total 1018 (delta 190), reused 289 (delta 114), pack-reused 642 (from 1)
Receiving objects: 100% (1018/1018), 761.83 KiB | 5.15 MiB/s, done.
Resolving deltas: 100% (427/427), done.

Then sym link it to my skills

builder@DESKTOP-QADGF36:~/Workspaces$ ln -s /home/builder/Workspaces/claude-code-skills/skills/clean-code-principles /home/builder/.agents/skills/clean-code-principals

I tried a couple models in Opencode running in WSL but ultimately found they just got hung up on thinking and quit

/content/images/2026/05/cleancode-01.png

/content/images/2026/05/cleancode-07.png

Continue.dev in VS Code

I had another idea: use the continue.dev plugin in VS Code.

Since that doesn’t have skills (at least my version doesn’t), I instead put the contents in as a rule:

/content/images/2026/05/cleancode-02.png

Then used it to review a file in a different Python repo:

/content/images/2026/05/cleancode-03.png

I tried a larger 27B model in “Ask” mode which also worked

/content/images/2026/05/cleancode-04.png

I also went and tried Gemini Code Assist (GCA) against the skill

/content/images/2026/05/cleancode-05.png

I noticed it quickly picked up that it was a skill

/content/images/2026/05/cleancode-06.png

Antigravity

I tried to reference the skill in Antigravity but Aggy is still just looking in the ~/.gemini folder for skills

/content/images/2026/05/cleancode-10.png

I tried again but this time referenced the exact path

/content/images/2026/05/cleancode-11.png

which seemed to work

/content/images/2026/05/cleancode-12.png

/content/images/2026/05/cleancode-13.png

Gemini CLI

I next tried invoking Gemini CLI on the repo

/content/images/2026/05/cleancode-14.png

It immediately found the skill to activate

/content/images/2026/05/cleancode-15.png

It made some suggestions

/content/images/2026/05/cleancode-16.png

Which came back with several suggestions

/content/images/2026/05/cleancode-17.png

/content/images/2026/05/cleancode-18.png

And it really didn’t use that many tokens

/content/images/2026/05/cleancode-19.png

Summary

Fallow worked pretty well. I found the dead-code feature particularly handy and will likely use this for future JS/TS projects. However, the lack of other language support limited it’s usage for me.

I like skills, I do. And the claude-code-skills I used worked great, but I still find skill support in these local model tools isn’t fantastic. They work great with things like Copilot and Gemini CLI, but not as well with continue.dev in VS Code and Antigravity (Aggy).

I feel like I’m not quite “doing it right” with the local LLM tools so I plan to keep working on those until I find the magic sauce.

GeminiCLI Fallow Opensource Skills Opencode Pi GenAI

Have something to add? Feedback? You can use the feedback form

Isaac Johnson

Isaac Johnson

Cloud Solutions Architect

Isaac is a CSA and DevOps engineer who focuses on cloud migrations and devops processes. He also is a dad to three wonderful daughters (hence the references to Princess King sprinkled throughout the blog).

Theme built by C.S. Rhymes