- Shell 95.8%
- Batchfile 4.2%
| .claude-plugin | ||
| agents | ||
| docs | ||
| hooks | ||
| scripts | ||
| skills | ||
| specs | ||
| templates | ||
| .gitignore | ||
| LICENSE | ||
| plugin.json | ||
| README.md | ||
Lab Director Plugin
A Kimi-native plugin that brings the Reynoza Brothers' pipeline-driven harness to anyone with a homelab account. Works on Kimi CLI; legacy Claude Code support included.
What it does
Drives every actionable request through a Conductor-orchestrated parallel swarm pipeline:
Conductor → Classifier → Router → Research Swarm → Plan Swarm → Review Board → Execution Swarm → Continuous Verification → Tracker(end)
Integrates with Plane (tickets), Outline (docs), Forgejo (PRs), Langfuse (telemetry), and Kubernetes (deployments).
Three modes
- pipeline-only — workflow stages without homelab dependency
- homelab-only — Plane/Outline/Forgejo helpers without pipeline ceremony
- collab — pipeline + homelab fused (default)
See docs/modes.md for details.
Quick Start (Kimi)
1. Install the plugin
kimi plugin install https://forgejo.aaron.reynoza.org/aaron/lab-director-plugin.git
Verify it loaded:
kimi plugin list
# → lab-director-plugin@0.4.0
2. Add hooks to ~/.kimi/config.toml
Copy-paste this into ~/.kimi/config.toml (create it if it doesn't exist).
Important: extra_skill_dirs must come before any [[hooks]] arrays in TOML:
extra_skill_dirs = ["$HOME/.kimi/plugins/lab-director-plugin/skills"]
[[hooks]]
event = "SessionStart"
command = "/Users/aaronvaldez/.kimi/plugins/lab-director-plugin/scripts/session-start-hook.sh"
timeout = 5
[[hooks]]
event = "PostToolUse"
command = "/Users/aaronvaldez/.kimi/plugins/lab-director-plugin/scripts/pre-commit-checks.sh"
matcher = "Shell|WriteFile|StrReplaceFile"
timeout = 10
Why hooks? The SessionStart hook injects the pipeline context into every new session. The PostToolUse hook runs safety checks before every file write. Why
extra_skill_dirsfirst? In TOML, keys after[[arrays]]get parsed as belonging to the last array entry. Ifextra_skill_dirscomes after[[hooks]], Kimi silently ignores it. Note: Kimi parses/commands before hooks fire. Use/skill:nameor natural language instead.
3. Run post-install (optional but recommended)
Symlink the plugin's skills so Kimi discovers them automatically, even without extra_skill_dirs:
bash ~/.kimi/plugins/lab-director-plugin/scripts/post-install.sh
Tip: After installing the plugin, you can also run
scripts/post-install.shto symlink the skills into~/.kimi/skills/lab-director-plugin/. This avoids the need forextra_skill_dirs.
4. Run setup
In any project directory:
/skill:setup
Or use natural language: Run the lab-director-plugin setup skill.
The setup skill:
- Verifies connectivity to your services (Plane, Outline, K8s, etc.)
- Walks you through identity, mode, and credentials
- Generates
~/.kimi/mcp.jsonwith MCP servers - Creates a per-project config at
.lab-director-plugin/config.jsonc - Writes a personalized onboarding doc for you
5. Verify everything works
/skill:setup-verify
Or use natural language: Run the setup-verify tool.
This checks:
- ✅ Plane API reachable
- ✅ Outline API reachable
- ✅ Langfuse API reachable (if configured)
- ✅ Kubernetes cluster reachable
- ✅ MCP config valid
- ✅ Hooks configured
6. Start working
Pipeline: Deploy the new monitoring dashboard
The pipeline takes over: creates a ticket, researches, plans, executes, verifies, and closes it out.
Commands
Use /skill:name or natural language for everything:
| Intent | Command |
|---|---|
| Start pipeline | Pipeline: <context> or /skill:pipeline <context> |
| Run setup | /skill:setup |
| Check services | /skill:setup-verify or Run setup-verify tool. |
| Switch mode | Switch to mode: <name> |
| Conductor entry | /skill:conductor <context> |
| Classify work | /skill:classifier <context> |
| Route swarms | /skill:router <mode> |
For Friends
Forwarding this to someone? Here's the one-liner they need:
kimi plugin install https://forgejo.aaron.reynoza.org/aaron/lab-director-plugin.git
Then they paste the hooks block above into ~/.kimi/config.toml, add extra_skill_dirs, run the setup skill, and they're good to go.
The plugin is zero-build — no npm, no cargo, no docker. Just markdown, bash, and Kimi.
Parallel Swarm Architecture
v0.4.0 introduces a Conductor-driven swarm model:
- Conductor — single entry agent that manages pipeline state and swarm lifecycle
- Classifier — analyzes complexity and selects mode (lightweight / standard / heavy)
- Router — dispatches to parallel swarm factories (Research, Plan, Review, Execution, Verification)
- Swarms — domain-specific subagent groups that run in parallel, reporting summaries back to the Conductor
This replaces the sequential 10-stage flow with parallel execution where safe, reducing wall-clock time for multi-file and multi-repo work while preserving stage-gate quality checks.
Read the full architecture in specs/pipeline-v0.4.0.md.
Legacy Claude Code Support
If you still use Claude Code, the plugin installs the same way as before:
claude marketplace add https://forgejo.aaron.reynoza.org/aaron/lab-director-plugin.git
claude plugin enable lab-director-plugin@lab-director-marketplace
The same repo serves both platforms. Skills and scripts are shared; only the packaging differs.
What's in the box
| Component | Count | Purpose |
|---|---|---|
| Skills | 30+ | Workflow stages, homelab helpers, setup, constraints, swarm factories |
| Tools | 4 | Pipeline trace, Plane comment, pre-commit checks, setup verify |
| Hooks | 2 | SessionStart (context injection), PostToolUse (safety checks) |
| Specs | 30+ | Stage specifications, swarm architecture, verifier sub-specs |
| Templates | 6 | Project identity, spec, MCP config, orchestrator |
License
MIT.