SkillAgentSearch skills...

31-micropython

IoT aquarium monitoring with causal inference on Raspberry Pi 5

Install / Use

npx skills add yoshidomekouichi/aquapulse

Installs into whichever agent you are using.

About this skill
šŸ“

Cursor Rules

Cursor IDE rules (v2)

Quality Score

63/100

Category

Operations

Supported Platforms

Cursor

Our assessment of 31-micropython

31-micropython scores 63/100 on our quality scale, 712th of 755 Operations skills we index.

Its Cursor Rules is 4.1 KB long, well organised into 16 sections with 13 code examples: a solid amount of guidance for an agent.

It has no GitHub stars yet, so there is no community track record; judge it on its content.

Substance
26/30
Structure
20/20
Description
12/15
Adoption
0/20
Freshness
5/15

Maintenance, license and trust

  • We could not determine when the repository was last updated.
  • Our last check on 2026-10-18 found the source still online.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

31-micropython compared with similar skills

All 4 of these similar skills score higher than 31-micropython; compare them before choosing.

SkillScoreStarsUpdatedFormat
31-micropython (this skill)by yoshidomekouichi630—Cursor Rules
Agent-Reachby Panniantong100109.7ktodayCLAUDE.md
headroomby headroomlabs-ai10079.0ktodayCLAUDE.md
Scraplingby D4Vinci10098.8k1d agoMCP Server
crawl4aiby unclecode10087.0k2d agoMCP Server

Frequently asked questions

How do I install 31-micropython?
Run npx skills add yoshidomekouichi/aquapulse. The install tabs above show the steps for each supported agent.
Which AI agents does 31-micropython work with?
It is written for Cursor, as a Cursor Rules file. Other agents that read the same format can often use it too.
Is 31-micropython safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is 31-micropython still maintained?
We could not determine when the repository was last updated.

description: MicroPython Coding Standards for ESP32 alwaysApply: false globs:

  • "esp32/**/*.py" metadata: environments: cloud

MicroPython Standards (ESP32)

This file applies only to MicroPython code for ESP32 hardware.

Memory Constraints (CRITICAL)

ESP32 RAM: ~100KB available for MicroPython
Flash: 4MB (code + filesystem)

AVOID:
  - Large imports (import only what you need)
  - Heavy libraries (requests, asyncio extensive use)
  - Large data structures in memory
  
USE:
  - Lightweight u-prefixed libraries
  - Streaming for large data
  - Garbage collection when needed (import gc; gc.collect())

Library Selection

Standard library → u-prefixed version:

# āœ“ Correct
import urequests
import ujson
import utime

# āœ— Wrong (these don't exist in MicroPython)
import requests
import json
import time

Common libraries:

  • urequests - HTTP requests (lightweight)
  • ujson - JSON encoding/decoding
  • utime - Time functions
  • machine - Hardware control (GPIO, Pin, etc.)
  • network - WiFi connectivity

Async/Concurrency

āš ļø LIMITED asyncio support

AVOID:
  - Complex asyncio patterns
  - Multiple concurrent tasks
  - AsyncIO-based libraries
  
OK:
  - Simple asyncio.run() for single async function
  - time.sleep() for delays (blocking is fine)
  
PREFER:
  - Synchronous, blocking code
  - Simple loops with time.sleep()

Error Handling

ALWAYS catch exceptions:

# āœ“ Good
try:
    response = urequests.post(url, data=data)
    print(f'Success: {response.status_code}')
    response.close()
except Exception as e:
    print(f'Error: {e}')
    # Continue or retry

No tracebacks in production:

  • MicroPython prints full tracebacks
  • Catch exceptions to prevent ugly errors
  • Log errors for debugging

Implement reconnection logic:

def connect_wifi():
    retry_count = 0
    max_retries = 3
    
    while retry_count < max_retries:
        try:
            wlan.connect(SSID, PASSWORD)
            # wait for connection
            return True
        except Exception as e:
            print(f'WiFi error: {e}')
            retry_count += 1
            utime.sleep(5)
    
    return False

Hardware Access

Pin configuration:

from machine import Pin

# Output (LED, relay)
led = Pin(2, Pin.OUT)
led.on()
led.off()

# Input (button, sensor)
button = Pin(0, Pin.IN, Pin.PULL_UP)
state = button.value()

DS18B20 Temperature Sensor:

import machine
import onewire
import ds18x20

dat = machine.Pin(4)
ds = ds18x20.DS18X20(onewire.OneWire(dat))
roms = ds.scan()

ds.convert_temp()
utime.sleep_ms(750)
temp = ds.read_temp(roms[0])

Network Operations

WiFi connection:

import network

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)

# Wait for connection
while not wlan.isconnected():
    utime.sleep(1)

print(f'Connected: {wlan.ifconfig()[0]}')

HTTP POST:

import urequests
import ujson

data = {'sensor_id': 'esp32_001', 'value': 25.5}

response = urequests.post(
    'https://example.com/api',
    headers={'Content-Type': 'application/json'},
    data=ujson.dumps(data),
    timeout=10
)

print(f'Status: {response.status_code}')
response.close()  # Always close!

Before Writing MicroPython Code

Self-check:

[ ] Using u-prefixed libraries (urequests, ujson)?
[ ] Memory usage considered?
[ ] Avoid complex asyncio?
[ ] Exception handling implemented?
[ ] WiFi reconnection logic?
[ ] HTTP response.close() called?

Common Mistakes

āœ— Using standard Python libraries (requests, json)
āœ— Not closing HTTP responses (memory leak)
āœ— Complex asyncio patterns
āœ— No exception handling
āœ— No WiFi reconnection logic
āœ— Large data structures in RAM

Debugging

Print debugging:

print(f'Temperature: {temp:.2f}C')
print(f'WiFi status: {wlan.isconnected()}')
print(f'Free memory: {gc.mem_free()} bytes')

REPL access:

  • Connect via USB serial (e.g., screen, picocom)
  • Test code interactively
  • Check errors immediately

Soft reset:

import machine
machine.soft_reset()

Related Skills

View on GitHub
GitHub Stars0
CategoryOperations
UpdatedNaNy ago
Forks0

Trust signals

68/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

2 medium1 low
31-micropython — Cursor Rules: Install & Safety Check | SkillAgent