57

/ 100

GradeF

Early-stage engineering. The fastest wins are test coverage and CI.

Higher than 42% of 5,156 graded repos

aily blockly library registry

A low grade is a to-do list, not a judgment of your code

Most gaps here are documentation, tests, and setup, not the code itself. Closing your top 3 gaps alone would lift this repo to B (81).

See your top fixes
Now
F
57
Potential
B
81

Top fixes

Highest-impact changes first, ranked by point weight

18 to address
  1. 1
    Tests18pt

    Set scripts.test in package.json to your actual test command, e.g. "vitest" or "jest".

  2. 2
    CI/CD14pt

    Add a step like `run: npm test`, `run: pytest`, or `run: tox` to your workflow file.

  3. 3
    CI/CD14pt

    Add a lint step to catch style issues automatically.

  4. 4
    CI/CD14pt

    Add `tsc --noEmit`, `mypy`, or `cargo check` to catch type errors before they merge.

Working through the fixes? Let every push regrade itself.

The free GitHub App rescans this repo on every push and posts the grade as a commit check, so the score climbs without coming back to rescan by hand.

Install the GitHub App

Scorecard

Every check, grouped by category and sorted worst-first

Documentation

77

README12pt50

README is present.

Contributing guide5pt72

CONTRIBUTING guide found.

Install and run instructions9pt100

README documents how to install the project.

License6pt100

A license file is present.

Engineering

29

Linting and formatting5pt0

No linter or formatter found.

Add ESLint (eslint.config.js) and/or Prettier (.prettierrc), install them as devDependencies, and add a `lint` script to package.json.

Reproducibility6pt0

No dependency lockfile found (−70 pts).

Commit package-lock.json, pnpm-lock.yaml, yarn.lock, or bun.lock so Node installs are repeatable.

Issue and PR templates6pt0

No issue or PR templates found (−100 pts).

Add .github/ISSUE_TEMPLATE/ with bug_report.md and feature_request.md to guide contributors. It dramatically improves issue quality.

Tests18pt35

Test files detected (.scripts/check-changed-readme-governance.test.js).

CI/CD14pt57

CI is configured (.github/workflows/library-compliance-check.yml).

Project health

95

Dependency manifest6pt83

Dependency manifest found (package.json).

Repository metadata5pt100

Repository has a description.

Activity5pt100

Actively maintained (pushed within the last month).

Housekeeping3pt100

.gitignore present.

Repository health signals

Activity, community, and responsiveness at scan time

Activity

  • -
    Commits (30d / 90d)
  • 29
    Forks
  • 0
    Releases

Community

  • 25% - Weak
    Community health
  • -
    authors own >50% of commits
  • 2,282
    Watchers

Responsiveness

  • 2d 9h
    Median issue response
  • 1h
    Median PR merge time
  • 24
    Open issues
Repository files587 root entries
  • .docs
    Good: CONTRIBUTING guide found.
    Issue: CONTRIBUTING guide contents could not be read (−28 pts vs a readable file).Fix: Move the file to the repo root or docs/CONTRIBUTING.md so its setup, style, test, and PR sections can be graded.
  • .docs_ai
  • .generators
  • .github
    Good: CI is configured (.github/workflows/library-compliance-check.yml).
  • .scripts
    Good: Test files detected (.scripts/check-changed-readme-governance.test.js).
  • .scripts_git_action
  • 74HC595
  • AccelStepper
  • adafruit_ads122c04
  • adafruit_ADXL345
  • adafruit_AHTX0
  • adafruit_BME280
  • adafruit_BMP280
  • adafruit_bmp3xx
  • adafruit_DHT
  • adafruit_Fingerprint
  • adafruit_GFX
  • adafruit_INA219
  • adafruit_ina228
  • adafruit_ina237_ina238
  • adafruit_ina260
  • adafruit_LEDBackpack
  • adafruit_max31855
  • adafruit_max31856
  • adafruit_max6675
  • adafruit_mcp23x17
  • adafruit_mcp4725
  • adafruit_mcp4728
  • adafruit_mcp9600
  • adafruit_MLX90614
  • adafruit_mlx90640
  • adafruit_MPR121
  • adafruit_mqtt
  • adafruit_NeoPixel
  • adafruit_pca9685
  • adafruit_pcf8574
  • adafruit_PN532
  • adafruit_SGP30
  • adafruit_sgp40
  • adafruit_sgp41
  • adafruit_SHT3x
  • adafruit_SHT4x
  • adafruit_SHTC3
  • adafruit_SI7021
  • adafruit_ssd1331
  • adafruit_tca8418
  • adafruit_tinyusb
  • adafruit_tmag5273
  • adafruit_VL53L0X
  • adafruit_vl53l5cx
  • adafruit_vl53l7cx
  • adafruit-max31865
  • adi_ad9833
  • AGS02MA
  • ai-assistant
  • ai-vox
  • ai-vox-xzai
  • aily_iic
  • aily_servo
  • animated-gif
  • arduino_audio_tools
  • arduino_avr_SoftwareSerial
  • arduino_BLE
  • arduino_ethernet
  • Arduino_GFX
  • arduino_http
  • arduino_iic
  • arduino_keyboard
  • arduino_modbus
  • arduino_mouse
  • arduino_mqtt
  • arduino_r4_AnalogWave
  • arduino_r4_CAN
  • arduino_r4_freertos
  • arduino_r4_io
  • arduino_r4_LED_Matrix
  • arduino_r4_RTC
  • arduino_r4_WDT
  • arduino_r4_WiFiS3
  • arduino_RS485
  • arduino_SD
  • arduino_spi
  • arduino_tone
  • arduino_wifi
  • ArduinoFFT
  • ArduinoJson
  • AS5600
  • async-esp-fs-webserver
  • async-http
  • avr_freertos
  • beginner_a1
  • BH1750
  • ble_serial
  • BLEOTA
  • Blynk
  • bq27220
  • calculator
  • capacitive-sensor
  • ChainableLED
  • chipIntelli_ASR
  • chipIntelli_Audio
  • chipIntelli_CWSL
  • chipIntelli_IR
  • chsc6x
  • Control_Surface
  • core-custom
  • core-EEPROM
  • core-functions
  • core-interrupt
  • core-io
  • core-lists
  • core-logic
  • core-loop
  • core-math
  • core-serial
  • core-string
  • core-text
  • core-time
  • core-variables
  • CST816S
  • cubic_core_car
  • cubic-ps3
  • cubic-robot
  • deepseek-ai
  • dfrobot_64x8dtof
  • dfrobot_Airquality
  • dfrobot_ASR_M
  • dfrobot_bmp58x
  • dfrobot_bmv080
  • dfrobot_c4001
  • dfrobot_c4002
  • dfrobot_ct1780
  • dfrobot_dfplayer
  • dfrobot_ens160
  • dfrobot_eoxygen_sensor
  • dfrobot_gm60
  • dfrobot_gnss
  • dfrobot_gp8xxx
  • dfrobot_human_detection
  • dfrobot_rainfall_sensor
  • dfrobot_scd4x
  • dfrobot_sfa40
  • DFRobot_SpeechSynthesis_M
  • dfrobot_stcc4
  • dfrobot-unihikerexpansion
  • diandeng_blinker
  • ds1302
  • DS18B20
  • dynamixel2arduino
  • ElegantOTA
  • EMailSender
  • emakefun_codexpad
  • emakefun_dm11
  • emakefun_five_line_tracker
  • emakefun_gamepad
  • emakefun_gesture_recognizer
  • emakefun_gpio_expansion_board
  • emakefun_matrix_keyboard
  • emakefun_md40
  • emakefun_motor_driver
  • emakefun_nlcs11
  • emakefun_nlcs21
  • emakefun_speech_recognizer
  • emakefun_tts
  • emakefun_tts20
  • encoder
  • EncoderMotor
  • epub-reader
  • Es8311
  • ES8388
  • esp_tflite_micro
  • esp32_A2DP
  • esp32_arduinoota
  • esp32_async_tcp
  • esp32_asyncudp
  • esp32_audio_i2s
  • esp32_ble
  • esp32_ble_gamepad
  • esp32_ble_gamepad_nimble
  • esp32_ble_keyboard
  • esp32_ble_keyboard_nimble
  • esp32_ble_mouse
  • esp32_ble_mouse_nimble
  • esp32_bluetooth_serial
  • esp32_camera_webserver
  • esp32_CAN
  • esp32_deepsleep
  • esp32_display_panel
  • esp32_dnsserver
  • esp32_eeprom
  • esp32_emodbus
  • esp32_encoder
  • esp32_esp_sr
  • esp32_espnow
  • esp32_ethernet
  • esp32_ffat
  • esp32_freertos
  • esp32_hash
  • esp32_httpclient
  • esp32_httpupdate
  • esp32_httpupdateserver
  • esp32_i2c
  • esp32_i2s
  • esp32_littlefs
  • esp32_matter
  • esp32_mdns
  • esp32_netbios
  • esp32_network
  • esp32_openthread
  • esp32_ppp
  • esp32_preferences
  • esp32_rainmaker
  • esp32_SD
  • esp32_sd_mmc
  • esp32_sleep
  • esp32_spi
  • esp32_spiffs
  • esp32_task
  • esp32_ticker
  • esp32_time
  • esp32_tts
  • esp32_usb
  • esp32_usb_gamepad
  • ESP32_USB_Soft_Host
  • esp32_wdt
  • esp32_webserver
  • esp32_wifi
  • esp32_WiFiManager
  • esp32_wifiprov
  • esp32_zigbee
  • esp32cam
  • esp8266_dnsserver
  • esp8266_eeprom
  • esp8266_hash
  • esp8266_httpclient
  • esp8266_httpupdate
  • esp8266_httpupdateserver
  • esp8266_i2s
  • esp8266_littlefs
  • esp8266_llmnr
  • esp8266_lwip_ethernet
  • esp8266_lwip_ppp
  • esp8266_mdns
  • esp8266_netbios
  • esp8266_sd
  • esp8266_sdfat
  • esp8266_servo
  • esp8266_softwareserial
  • esp8266_spi
  • esp8266_spislave
  • esp8266_ssdp
  • esp8266_system
  • esp8266_ticker
  • esp8266_webserver
  • esp8266_wifi
  • esp8266_wifi_mesh
  • ESPUI
  • FastAccelStepper
  • FastLED
  • firebase-client
  • Firmata
  • FT6336U
  • ggwave
  • GP2Y1010AU0F
  • gpio_viewer
  • GxEPD2
  • heartrate
  • HID_Project
  • home-assistant
  • HomeSpan
  • HT16K33
  • HT16k33_Matrixs
  • http_img_loader
  • huoshan-ai-voice
  • HuskyLens
  • HuskyLensV2
  • HX711
  • icm20948
  • IICMotorDriver
  • IMU9DOF
  • ina226
  • Infineon_dps3xx
  • Infineon_tlx493d
  • Infineon_tlx5012
  • influxdb-client
  • IOBOX_Motor
  • IRremote
  • irremote-esp8266
  • jinyichen-st7789
  • KEYPAD4X4
  • l298n
  • LibSSH_ESP32
  • LineFollower_8
  • linkbit_adafruit_NeoPixel
  • linkbit_bq27220
  • linkbit_GxEPD2
  • linkbit_onebutton
  • LiquidCrystal
  • LiquidCrystal_I2C
  • LM35
  • loborobot_rfidReader
  • LSM303AGR
  • LTR308
  • lvgl
  • m5stack_cardputer
  • m5stack_cores3
  • m5stack_dial
  • m5stack_dinmeter
  • m5stack_ir
  • m5stack_paper
  • m5stack_rs485
  • m5stack_sd
  • m5stack_station
  • m5stack_unified
  • max30102
  • MAX31865
  • MAX7219
  • mbit_matrix
  • mBrick_DCmotor
  • melexis-mlx90642
  • micro_ros_arduino
  • MIDI
  • MMA8653
  • ModbusRTUSlave
  • Motor
  • mp3player
  • MPU6050
  • MT6701
  • nano-modbus
  • nimble
  • nofrendo
  • nrf24l01
  • nrf54_Adafruit_SPIFlash
  • nrf54_ble
  • nrf54_Bluefruit52Lib
  • nrf54_EEPROM
  • nrf54_lowpower
  • nrf54_matter
  • nrf54_Preferences
  • nrf54_thread
  • nrf54_zigbee
  • NTC
  • NTPClient
  • NV170D
  • ojoy_amoled
  • ojoy_bq27220
  • ojoy_es8311
  • ojoy_pcf85063
  • ojoy_qmi8658c
  • ojoy_sd
  • onebutton
  • open-codex-micro
  • openjumper_asr
  • openjumper_iicps3
  • openjumper_tts
  • OpenWeatherMap
  • optical-mouse
  • paj7620
  • pid
  • pir
  • PJON
  • PS2X
  • Ps3Controller
  • pubsubclient
  • QuickESPNow
  • qwen-omni
  • radio
  • rc_switch
  • RemoteControl2G4
  • RFID
  • roboeyes
  • robotxlab
  • rp_ble
  • rp_httpclient
  • rp_webserver
  • rp_wifi
  • RTC
  • schedule-manager
  • SdFat
  • seeed_9dof
  • seeed_ads1115
  • seeed_adxl345
  • seeed_aht20
  • seeed_as5600
  • seeed_b6612fng
  • seeed_bme280
  • seeed_bme68x
  • seeed_bmm150
  • seeed_BMP280
  • seeed_CAN
  • seeed_dht
  • seeed_dopplerradar
  • seeed_freertos
  • seeed_fs
  • seeed_gesture
  • seeed_GFX
  • seeed_gsr
  • seeed_hcho_sensor
  • seeed_HM3301
  • seeed_hmc5883l
  • seeed_ir
  • seeed_lis3dhtr
  • seeed_lora_rf
  • seeed_LSM6DS3
  • seeed_MMA7660
  • seeed_mmwave
  • seeed_pca9685
  • seeed_rpcble
  • seeed_rpcmdns
  • seeed_rpcwifi
  • seeed_rpcwifimanager
  • seeed_rtc
  • seeed_SPA06
  • seeed_SSCMA
  • seeed_SSCMA_Core
  • seeed_tca9548a
  • seeed_ultrasonic
  • seeed_wio_accel
  • seeed_wio_buttons
  • seeed_wio_gfx
  • seeed_wio_ir
  • seeed_wio_lvgl
  • seeed_wio_rtc
  • seeed_wio_sd
  • seeed_wio_sound
  • seekfree_b1_controller
  • sensirion_sen5x
  • sensirion_sps30
  • sentry
  • serial_transfer
  • serial-cmd
  • servo
  • servo360
  • ServoEasing
  • simple-keypad
  • simplefoc
  • spa06
  • sparkfun_5p49v60
  • sparkfun_ads1015
  • sparkfun_ads1219
  • sparkfun_adxl345
  • sparkfun_apds9301
  • sparkfun_apds9960
  • sparkfun_as3935
  • sparkfun_as7265x
  • sparkfun_as726x
  • sparkfun_as7331
  • sparkfun_ateccx08a
  • sparkfun_autodriver
  • sparkfun_bio_sensor_hub
  • sparkfun_bme280
  • sparkfun_bmi270
  • sparkfun_bmp180
  • sparkfun_bmv080
  • sparkfun_bq27441
  • sparkfun_can_bus
  • sparkfun_cap1203
  • sparkfun_ccs811
  • sparkfun_dmx
  • sparkfun_drv2605l
  • sparkfun_ds1307
  • sparkfun_ds3234
  • sparkfun_esp8266at
  • sparkfun_fingerprint_scanner_ttl
  • sparkfun_grideye
  • sparkfun_haptic_da7280
  • sparkfun_hih4030
  • sparkfun_hmc6343
  • sparkfun_htu21d
  • sparkfun_hyperdisplay
  • sparkfun_hyperdisplay_kwh018st01
  • sparkfun_hyperdisplay_ug2856klbag01
  • sparkfun_i2c_gps
  • sparkfun_led_8x7
  • sparkfun_lidar_v4
  • sparkfun_lis3dh
  • sparkfun_lp55231
  • sparkfun_lsm303c
  • sparkfun_lsm6dso
  • sparkfun_lsm9ds1
  • sparkfun_mag3110
  • sparkfun_max30105
  • sparkfun_micro_oled
  • sparkfun_microview
  • sparkfun_minigen
  • sparkfun_mma8452q
  • sparkfun_mpu9250_dmp
  • sparkfun_ms5803
  • sparkfun_my1690
  • sparkfun_nau7802
  • sparkfun_qwiic_buzzer
  • sparkfun_qwiic_joystick
  • sparkfun_qwiic_mp3
  • sparkfun_qwiic_openlog
  • sparkfun_qwiic_otos
  • sparkfun_qwiic_relay
  • sparkfun_qwiic_twist
  • sparkfun_qwiic_ultrasonic
  • sparkfun_qwiic_xm125
  • sparkfun_redbot
  • sparkfun_rfd77402
  • sparkfun_rfid_reader
  • sparkfun_rht03
  • sparkfun_rv1805
  • sparkfun_scmd
  • sparkfun_sevseg
  • sparkfun_shtc3
  • sparkfun_si4703
  • sparkfun_soil_moisture
  • sparkfun_ssd1320
  • sparkfun_tb6612fng
  • sparkfun_teensyview
  • sparkfun_tmp102
  • sparkfun_tmp117
  • sparkfun_ublox
  • sparkfun_vcnl4040
  • sparkfun_veml6030
  • sparkfun_veml6075
  • sparkfun_veml7700
  • sparkfun_vkey
  • sparkfun_vl53l1x
  • sparkfun_wifly
  • sparkfun_wisechip_hud
  • sparkfun_zx_sensor
  • sr04
  • Stepper
  • stepper-controller
  • stm32_freertos
  • su03t
  • Summer_STM_Driver
  • taojingchi
  • taojingchi-stm32
  • TaskScheduler
  • TCS320
  • TCS34725
  • TFT_eSPI
  • thingsboard
  • tiny-gps-plus
  • TinyGSM
  • tjc-serial-screen
  • TM1637
  • TM1650
  • TM16xx
  • TMCStepper
  • todolist
  • TVout
  • u8g2
  • u8g2_AstraUI
    Good: A license file is present.
  • u8g2_MiaoUI
  • u8g2_robot_eyes
  • Ultrasonic
  • unihiker_k10_button
  • unihiker_k10_camera_ai
  • unihiker_k10_display
  • unihiker_k10_led
  • unihiker_k10_music
  • unihiker_k10_sensor
  • unihiker_k10_speech
  • USB_Host_Shield_2_0
  • veml6040
  • WebSockets
  • WiFiOTA
  • winbond_w25qxx
  • Wind_Rain
  • wol
  • ws2812_rgb_matrix
  • ws2812fx
  • xiaomi-mimo
  • xiaomi-mimo-easy
  • xiaozhi_mcp
  • xueersi_esp32_button
  • xueersi_esp32_clock-display
  • xueersi_esp32_countdown-timer
  • xueersi_esp32_lunar-calendar
  • xueersi_esp32_sd
  • xueersi_esp32_tft-screen
  • xueersi_esp32_ui-animation
  • xueersi_esp32_weather-station
  • yahboom_quad_md
  • zhipu-glm
  • .env.template
  • .gitignore
    Good: .gitignore present.
  • error.md
  • package.json
    Good: Dependency manifest found (package.json).
  • readme_zh.md
    Good: README is present.
    Good: README is well structured with multiple sections.
    Issue: No screenshots or images in the README (−20 pts).Fix: Add a GIF, screenshot, or logo image. It is the fastest way to show what your project does.
    Good: README has code examples.
    Issue: No live demo link in the README (−20 pts).Fix: Link to a deployed version, docs site, or demo video. Users want to see it running.
    Issue: No status badges in the README (−10 pts).Fix: Add CI/build status badges from shields.io or your CI provider to signal project health.
    Good: README documents how to install the project.
    Good: README documents how to run the project.
  • readme.md
  • tags.json
RepoGrade badge preview

Add this badge to your README

It updates automatically each time the repo is re-graded.

[![RepoGrade](https://www.repo-grade.com/api/badge/ailyproject/aily-blockly-libraries)](https://www.repo-grade.com/report/ailyproject/aily-blockly-libraries)

More graded JavaScript repos