Run maxforge lab
Skill mancaf779-boop/-Max-Geld-Generation/.claude/skills/run-maxforge-lab
Build, load, and drive the Maxforge Lab Claude Code plugin (maxforge-lab) — run its SessionStart hook, launch a headless Claude Code session with the plugin loaded, and verify that skills (researching-topics, analyzing-data, designing-workflows, orchestrating-tasks, using-maxforge) actually auto-trigger. Use when asked to run, test, smoke-test, or verify this plugin/skill package, or to check that the auto-trigger bootstrap works.From its SKILL.md
npx -y skills add mancaf779-boop/-Max-Geld-Generation --skill run-maxforge-labAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.8 KB, as published. Nobody here has run it
Maxforge Lab isn't an app with a GUI or a server — it's a Claude Code plugin
(a SessionStart hook + five skills, no runtime, no build step). "Running" it
means loading it into a real headless Claude Code session and observing two
things: the hook fires and injects the using-maxforge bootstrap, and the
agent actually invokes the right maxforge-lab:<skill> for a matching prompt.
Drive it with .claude/skills/run-maxforge-lab/driver.py — all paths below
are relative to the repo root.
Prerequisites
Nothing to install. The plugin is plain Markdown + one bash hook script.
You need the claude CLI on PATH (it already is, in this environment) and
Python 3 (also already present — the driver only uses the stdlib).
which claude python3 # both must resolve; nothing else is required
Build
No build step. .claude-plugin/plugin.json + .claude-plugin/marketplace.json
at the repo root make this directory a loadable plugin as-is.
Run (agent path)
Two subcommands, cheapest first:
# 1. Fast, free: run the SessionStart hook directly, no API calls.
python3 .claude/skills/run-maxforge-lab/driver.py check
# 2. Real end-to-end: launch a headless session with the plugin loaded,
# stream-parse tool_use events, and confirm the right skill fires.
python3 .claude/skills/run-maxforge-lab/driver.py smoke \
"Analyze this: month,price,units | Jan,10,100 | Feb,12,90 | Mar,15,70. Does raising price hurt sales?" \
analyzing-data --timeout 60
smoke takes "<prompt>" [expected_skill_substring] [--timeout SECONDS]. It
runs claude -p "<prompt>" --plugin-dir <repo-root> --output-format stream-json --verbose,
reads the JSONL stream line by line, and stops the session as soon as it
sees a Skill tool_use whose name starts with maxforge-lab: (matching
expected_skill_substring if given) — it does not wait for the full turn to
finish. Exit code 0 = PASS, 1 = FAIL. Every tool_use seen along the way is
printed, so you can see exactly what the agent reached for.
| subcommand | what it does |
|---|---|
check | Runs hooks/session-start directly via bash, parses its JSON, confirms additionalContext/hookSpecificOutput contains the using-maxforge bootstrap. No network, no model call. |
smoke <prompt> [skill] [--timeout N] | Launches a real claude -p --plugin-dir . session and verifies the hook fired and the expected skill auto-triggered. Default timeout 60s. |
To try a different skill trigger, swap the prompt/expected pair, e.g.:
python3 .claude/skills/run-maxforge-lab/driver.py smoke \
"Look into whether Rust or Go is the better choice for a new CLI tool in 2026" \
researching-topics --timeout 30
Run (human path)
The Quickstart from the README — same idea, but you read the whole reply instead of stopping early:
claude -p "Analyze this: month,price,units | Jan,10,100 | Feb,12,90 | Mar,15,70. Does raising price hurt sales?" \
--plugin-dir .
Test
There is no separate test suite — the smoke subcommand above is the
test: it's the only way to verify "does the hook fire and does the right
skill auto-trigger" outside of a live conversation. Run check then one
smoke call per skill you touched before calling a change to
hooks/session-start, any SKILL.md frontmatter, or .claude-plugin/*.json
done.
Gotchas
hooks/run-hook.cmdhas no shebang — it's a Windows/Unix polyglot (: << 'CMDBLOCK' ... CMDBLOCKskips the batch half on Unix). Running it withsubprocess.run([path, ...])in Python fails withExec format errorbecause Python callsexecvedirectly and there's no interpreter line. Interactivebashgets away with./hooks/run-hook.cmdbecause onENOEXECbash silently re-execs the file under/bin/sh— a courtesy Python'ssubprocessdoesn't extend. Always invoke it asbash hooks/run-hook.cmd session-start, matching whatdriver.py checkdoes.- Don't let
smokewait for full completion on research-shaped prompts. A prompt that triggersresearching-topicsmakes the agent dispatch real parallel subagents andWebSearchcalls and can run for many minutes to a final answer. The driver deliberately stops the moment it observes theSkilltool_use — that's the entire signal you need (auto-trigger worked), and it's what keeps the smoke test fast. Don't "improve" this by waiting for theresultevent. --plugin-dir .must point at the repo root, not the skill dir. The driver resolves it viagit rev-parse --show-toplevel, notcwd, so it works no matter where you invoke it from.
Troubleshooting
OSError: [Errno 8] Exec format erroronrun-hook.cmd: you (or code you wrote) called it directly viasubprocess/execveinstead of through a shell. Prefix withbash.smokereports FAIL: hook fired, but no maxforge-lab skill … was invoked: either the prompt doesn't actually match any skill'sdescriptiontrigger phrases, or the timeout is too short for a slower model — try a prompt closer to the skill's own examples (see eachskills/*/SKILL.mdfrontmatter) or raise--timeout.smokereports FAIL: never observed a SessionStart hook event: the plugin didn't load — check you passed--plugin-dir <repo-root>(the driver does this for you) and that.claude-plugin/plugin.jsonstill parses as valid JSON.