{"id":50181744,"url":"https://github.com/vcjdeboer/v1b1-skills","last_synced_at":"2026-05-25T07:03:30.029Z","repository":{"id":354221590,"uuid":"1222619534","full_name":"vcjdeboer/v1b1-skills","owner":"vcjdeboer","description":"Three Claude Code skills for authoring PyLabRobot devices under the v1b1 capability-architecture: protocol extraction, scaffolding, and review.","archived":false,"fork":false,"pushed_at":"2026-04-27T16:22:03.000Z","size":1710,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-27T18:23:53.062Z","etag":null,"topics":["claude-code","claude-skills","code-review","laboratory-automation","plr","pylabrobot","python","v1b1"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vcjdeboer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-27T14:41:24.000Z","updated_at":"2026-04-27T16:22:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vcjdeboer/v1b1-skills","commit_stats":null,"previous_names":["vcjdeboer/v1b1-skills"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vcjdeboer/v1b1-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcjdeboer%2Fv1b1-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcjdeboer%2Fv1b1-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcjdeboer%2Fv1b1-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcjdeboer%2Fv1b1-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vcjdeboer","download_url":"https://codeload.github.com/vcjdeboer/v1b1-skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vcjdeboer%2Fv1b1-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33464012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T06:32:55.349Z","status":"ssl_error","status_checked_at":"2026-05-25T06:32:35.322Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-skills","code-review","laboratory-automation","plr","pylabrobot","python","v1b1"],"created_at":"2026-05-25T07:03:03.144Z","updated_at":"2026-05-25T07:03:30.022Z","avatar_url":"https://github.com/vcjdeboer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"logo.png\" alt=\"v1b1-skills logo\" align=\"right\" width=\"200\"/\u003e\n\n### v1b1 Skills for Claude Code\n\n[![License: MIT](https://img.shields.io/github/license/vcjdeboer/v1b1-skills)](LICENSE)\n[![Latest release](https://img.shields.io/github/v/release/vcjdeboer/v1b1-skills)](https://github.com/vcjdeboer/v1b1-skills/releases)\n[![Stars](https://img.shields.io/github/stars/vcjdeboer/v1b1-skills?style=flat)](https://github.com/vcjdeboer/v1b1-skills/stargazers)\n[![Last commit](https://img.shields.io/github/last-commit/vcjdeboer/v1b1-skills)](https://github.com/vcjdeboer/v1b1-skills/commits/main)\n[![Built with spec-kit](https://img.shields.io/badge/built%20with-spec--kit-blue)](https://github.com/github/spec-kit)\n\nA trio of [Claude Code](https://claude.com/claude-code) skills for contributors writing PyLabRobot device backends against the **v1b1 capability-architecture** patterns — the architecture set out by Rick Wierenga (PyLabRobot creator) in `creating-capabilities.md` and made concrete in the merged device backends contributed by the PLR community over many PRs.\n\n| Skill | What it does |\n|---|---|\n| [`v1b1-capability`](v1b1-capability/) | Reviews draft Driver / CapabilityBackend / Capability / Device code against v1b1 patterns. Produces a structured violation report with named principle, v1b1 evidence, and suggested fix per finding. **Warns; never blocks.** |\n| [`v1b1-author`](v1b1-author/) | Walks you through a 5-step decision flow to scaffold a new device (driver, backend, device class, optional chatterbox). Generates a structurally-conformant Python scaffold + a markdown decision record. Calls `v1b1-capability` automatically as the final pre-emit check. |\n| [`v1b1-protocol`](v1b1-protocol/) | Extracts a structured command catalog from a vendor device's communication protocol (DLL, server API, or bytestream sniff) so the catalog drops cleanly into a `v1b1-author` scaffold's command-class slot. |\n\nThe three skills cover the full v1b1 device-authoring lifecycle: extract the protocol → scaffold the device → review the result.\n\n## Requirements\n\n- [Claude Code](https://claude.com/claude-code) (CLI, IDE extension, or desktop app — any installation that loads `~/.claude/skills/`).\n- A PyLabRobot working tree (any branch — `v1b1`, `main` post-merge, or a downstream fork) when invoking the skills against real code.\n\n## Install\n\nSkills live in `~/.claude/skills/`. Pick one of the install methods below; both work.\n\n### Method A — Copy (recommended for most users)\n\n```bash\ngit clone https://github.com/vcjdeboer/v1b1-skills.git\ncd v1b1-skills\ncp -r v1b1-capability v1b1-author v1b1-protocol ~/.claude/skills/\n```\n\nRestart Claude Code (or open a new session). The three skills become available — confirm with `/v1b1-capability`, `/v1b1-author`, `/v1b1-protocol` in the slash-command list.\n\n### Method B — Symlink (recommended if you want to track upstream updates)\n\n```bash\ngit clone https://github.com/vcjdeboer/v1b1-skills.git\ncd v1b1-skills\nln -s \"$(pwd)/v1b1-capability\" ~/.claude/skills/v1b1-capability\nln -s \"$(pwd)/v1b1-author\"     ~/.claude/skills/v1b1-author\nln -s \"$(pwd)/v1b1-protocol\"   ~/.claude/skills/v1b1-protocol\n```\n\n`git pull` in the cloned repo now updates all three installed skills.\n\n### Updating\n\n- **Method A**: `git pull`, then re-run the `cp -r` step.\n- **Method B**: `git pull`. Done.\n\n### Uninstall\n\n```bash\nrm -rf ~/.claude/skills/v1b1-capability \\\n       ~/.claude/skills/v1b1-author \\\n       ~/.claude/skills/v1b1-protocol\n```\n\n(Use `rm` not `rm -rf -- ...` if Method B — `rm` removes the symlink, not the source.)\n\n## Use\n\nEach skill is invoked the same way as any Claude Code skill — slash command in the chat:\n\n```\n/v1b1-capability /path/to/your/driver-package/\n/v1b1-author Hamilton STAR\n/v1b1-protocol /path/to/vendor-protocol-dump\n```\n\n`v1b1-capability` also surfaces an **auto-detect offer** when Claude reads or edits Python code that imports `pylabrobot`, defines a `Driver`/`Device`/`Capability`/`CapabilityBackend` subclass, or matches Rick's naming conventions — Claude prompts:\n\n\u003e Want me to run the v1b1 review on this draft?\n\nReply \"yes\" to run; \"no\" debounces for the session.\n\nFor full per-skill instructions and input forms, see each bundle's `README.md`:\n\n- [`v1b1-capability/README.md`](v1b1-capability/README.md)\n- [`v1b1-author/README.md`](v1b1-author/README.md)\n- [`v1b1-protocol/README.md`](v1b1-protocol/README.md)\n\n## What the skills enforce\n\nThe patterns are extracted from two sources:\n\n1. Rick Wierenga's **`creating-capabilities.md`** prose (vendored at `v1b1-capability/creating-capabilities.md`), which sets out the v1b1 architecture and naming conventions.\n2. v1b1-merged device code in upstream PyLabRobot — xArm6, BioShake, Nimbus, STAR, Tecan Infinite, Opentrons OT2 (capability-migration branch) — contributed and refined by the PLR community across many PRs. The merged code is what makes each pattern concrete and verifiable.\n\nEach pattern carries a v1b1 evidence reference (file path, class name, commit hash) that traces back to either Rick's prose, community-contributed device code, or both. See [`v1b1-capability/reference.md`](v1b1-capability/reference.md) for the full pattern table and audit trail.\n\nThe skills are **downstream of Rick's prose and the community's code**. They do not propose changes to v1b1; they enforce what's already there. New patterns are added only with v1b1 evidence (file path, class name, commit hash) following the audit procedure in [`v1b1-capability/audit.md`](v1b1-capability/audit.md).\n\n## Versioning\n\nReleases are tagged on this repo: `v\u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e`. Each release ships all three skills together (their audit cadence is shared). The current per-skill versions are recorded in each skill's frontmatter:\n\n- `v1b1-capability/reference.md` — `skill_version: 1.0`\n- `v1b1-author/SKILL.md` — `skill_version: 0.9-RC`\n- `v1b1-protocol/SKILL.md` — `skill_version: 0.9-RC`\n\nSee [`CHANGELOG.md`](CHANGELOG.md) for release notes.\n\n## Contributing\n\nPattern proposals and skill improvements welcome. Before opening a PR:\n\n1. Find (or write) the v1b1 device that demonstrates the pattern. The skill enforces only patterns with v1b1 evidence — no speculative additions.\n2. Author the pattern entry following the contract in [`v1b1-capability/reference.md`](v1b1-capability/reference.md).\n3. Pair with an anti-pattern fixture under `v1b1-capability/tests/anti-patterns/` if the pattern has a clean signature.\n4. Run the audit: `~/.claude/skills/v1b1-capability/audit.md`. If it passes (vendored-prose parity, citation walk, smoke + anti-pattern corpus, vocabulary leak), open the PR.\n\nThe vocabulary lockdown (`v1b1-capability/vocabulary-lockdown.md`) is **allow-list only**: any term used in skill-authored output must appear in the Emitted Terms table with a precedent in Rick's prose or v1b1 code. Adding a new term means a new row.\n\n## License\n\nMIT — see [`LICENSE`](LICENSE).\n\nThe bundled `creating-capabilities.md` is a vendored copy of Rick Wierenga's prose from upstream PyLabRobot ([`PyLabRobot/pylabrobot`](https://github.com/PyLabRobot/pylabrobot)), also MIT-licensed. See [`NOTICE`](NOTICE) for the attribution.\n\n## Acknowledgements\n\n- **Rick Wierenga** (PyLabRobot creator) for the v1b1 capability architecture and the `creating-capabilities.md` prose this skill bundle distills into a lint pass. The architectural decisions, naming conventions, and merge gating that make v1b1 a coherent thing are his.\n- **The PLR community** — contributors of the BioShake, STAR, Nimbus, xArm6, Tecan Infinite, Opentrons, and other v1b1 device backends — whose merged work makes the patterns real. Every evidence citation in [`v1b1-capability/reference.md`](v1b1-capability/reference.md) traces to a file, class, or method that someone in the community wrote and Rick reviewed and merged. Without that body of code there would be nothing to extract patterns from.\n\nThis skill bundle does not author patterns; it surfaces what is already there.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvcjdeboer%2Fv1b1-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvcjdeboer%2Fv1b1-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvcjdeboer%2Fv1b1-skills/lists"}