ad-sdl/madsci/madsci-nodes
Claude Code and agent skill by ad-sdl/madsci
- community
Checking that the SKILL.md file is still in the repository.
Working with MADSci node modules for laboratory instrument integration. Use when creating, modifying, debugging, or testing node modules that interface with scientific instruments.
Install
npx vskill@latest install ad-sdl/madsci/madsci-nodesSKILL.md
MADSci Node Modules
Node modules are the instrument integration layer of MADSci. Each node wraps a laboratory instrument (robot arm, plate reader, liquid handler, etc.) behind a standard API. The architecture is: AbstractNode (protocol-agnostic base) -> RestNode (FastAPI HTTP server). Both use MadsciClientMixin for lazy access to Event, Resource, and Data clients.
Key Files
| File | Purpose | |
|---|---|---|
src/madsci_node_module/madsci/node_module/abstract_node_module.py | Base class with lifecycle, action dispatch, type analysis | |
src/madsci_node_module/madsci/node_module/rest_node_module.py | FastAPI server, file upload/download, rate limiting | |
src/madsci_node_module/madsci/node_module/helpers.py | @action decorator | |
src/madsci_node_module/madsci/node_module/type_analyzer.py | Recursive type hint analysis (TypeInfo) | |
src/madsci_common/madsci/common/types/node_types.py | NodeConfig, RestNodeConfig, NodeStatus, NodeInfo, NodeCapabilities, NodeIntrinsicLocationDefinition | |
src/madsci_client/madsci/client/node/rest_node_client.py | HTTP client for node communication | |
src/madsci_common/madsci/common/bundled_templates/node/basic/ | madsci new node template |
Creating a Node
1. Scaffold with template
2. Minimal RestNode
3. Configuration
Nodes use NodeConfig (AbstractNode) or RestNodeConfig (RestNode), both inheriting from MadsciBaseSettings:
Config is discovered via walk-up file search (see CLAUDE.md). Override with environment variables using NODE_ prefix or pass directly:
Deprecated: NodeDefinition
NodeDefinition is deprecated as of v0.7.0. Node identity now comes from NodeConfig/RestNodeConfig plus the ID Registry.
- Do not use
NodeDefinitionor*.node.yamldefinition files in new code - Use
NodeConfigorRestNodeConfig(both areMadsciBaseSettingssubclasses) - Run
madsci migrateto convert legacy*.node.yamlfiles
The @action Decorator
Register methods as node actions. Discovered automatically at init.
Parameters:
name(str, optional): Action name (defaults to function name)description(str, optional): Description (defaults to docstring)blocking(bool, defaultTrue): Whether the action blocks concurrent actions via_action_lock
Behind the scenes: Sets __is_madsci_action__ = True on the function. AbstractNode.__init__() scans __class__.__dict__ for this flag and auto-registers via _add_action().
Action Parameters and Return Types
Regular parameters
Standard Python types become JSON-serializable action arguments:
File parameters (use Path, not UploadFile)
Location parameters
Annotated parameters (extra metadata)
Return types
Node Lifecycle
REST API Endpoints (RestNode)
Standard endpoints
| Method | Path | Description | |
|---|---|---|---|
GET | /status | Node operational status | |
GET | /info | Node metadata, actions, capabilities | |
GET | /state | Custom state dict | |
POST | /config | Update config fields | |
GET | /log | EventClient logs | |
POST | /admin/{command} | Admin commands (lock, unlock, shutdown) | |
GET | /action | Action history |
Per-action endpoints (3-phase file upload)
| Method | Path | Description | |
|---|---|---|---|
POST | /action/{name} | Create action, get action_id | |
POST | /action/{name}/{id}/upload/{param} | Upload file(s) for a parameter | |
POST | /action/{name}/{id}/start | Start execution | |
GET | /action/{name}/{id}/status | Poll action status | |
GET | /action/{name}/{id}/result | Get result (files as key list) | |
GET | /action/{id}/download | Download all files as ZIP |
NodeStatus
Resource/Location Template Registration
Declare templates as ClassVar lists for automatic registration at startup:
Datapoint Helpers
Upload data to the Data Manager from within actions:
Testing Nodes
Common Pitfalls
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingsrc/madsci_common/madsci/common/bundled_templates/_skills/madsci-nodes/SKILL.md
Popularity
- Repository stars
- 82
- Repository forks
- 11
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ad-sdl/madsci/madsci-nodes)