Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/nodealchemy/powernode-platform/campaignnpx skills add nodealchemy/powernode-platform --skill campaigngit clone --depth 1 https://github.com/nodealchemy/powernode-platformWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00027 | $0.01338 |
| Opus 5 | $0.00014 | $0.00669 |
| Sonnet 5 | $0.00005 | $0.00268 |
| Haiku 4.5 | $0.00003 | $0.00134 |
Grade A, and why
campaign scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/campaign — Autonomous Improvement Campaigns
A campaign is a durable, named, repeatable improvement run. It replaces the hand-authored
standing prompt + ~/.claude plan files: a run becomes start(config). The campaign owns its
scope/posture/decision-authority/stop-conditions, the Ralph loop(s) it drives, a decision log, an
async parked-questions queue, and a progress ledger. /campaign run is the Ralph-pattern loop
body — drive it repeatedly with /loop /campaign run <id>.
Aliases: /campaign and /autodev are the same skill. Dual surface — platform agents call the
same actions via the campaign MCP tool (campaign_start/status/answer_question/stop).
Usage
/campaign start <name> # create a campaign + its dedicated loop (interactive config)
/campaign run [<id>] # drive ONE improvement iteration for the campaign (loop body)
/campaign status [<id>] # progress + open questions + recent decisions (all, or one)
/campaign answer <id> # answer a parked question to unblock the campaign
/campaign stop <id> # stop the campaign + pause its loops + record a summary
start
Surface the config, then create. Confirm these with the operator if not given:
- scope — which tree/area (e.g. a private extension,
server/,worker/); stays inconfiguration. - posture/ordering — bugs-first, dead-code, test-gaps, quality; free text in
configuration. - decision_authority — how much the loop decides vs parks (see table below). Default
trusted. - stop_conditions — e.g.
{ "max_failed": 3, "completion_pct": 100 }. Optional.
Call platform.campaign_start(name:, description:, decision_authority:, configuration:, stop_conditions:).
It creates the Ai::Campaign and a dedicated campaign-scoped Ralph loop (branch campaign/<id>),
starts the campaign, and snapshots initial progress. Report the campaign id + loop branch.
run []
One in-scope improvement, end to end — this is the loop body (compose, don't reinvent):
- Read the campaign:
platform.campaign_status(<id>)(or the most recent active campaign if id omitted). Honourdecision_authority,configurationscope/posture, andstop_conditions. - Stop conditions / halt: if the campaign is terminal,
should_stop?is met, or anemergency_halt/ kill-switch is active → report and STOP (end/loopif active). - Refill if dry: if the campaign loop has no queued task, discover within scope —
/improve discover <scope>(verify-before-offer gate), approve the next in-scope offer (individually, never batch — CLAUDE.md bulk rule), which promotes a task onto the campaign loop. If discovery is dry and nothing is pending → snapshot + report queue-empty + STOP. - Drive one task: run the
/dev-loop <campaign-loop>iteration body on the campaign's loop (pull → re-verify claim → branchcampaign/<id>→ test-first red → minimal fix → verify → commit on the loop branch, STAGE-only, no push, no Claude attribution → report). - Record the decision: log what was decided (unblock/skip/build/remove/defer/policy) to the campaign so the operator sees the reasoning, not just the diff.
- Park, don't stall: when blocked on something above your
decision_authority(live-credential, irreversible external, business-policy/pricing value),park_question!on the campaign and move on or stop — never guess. Parked questions are answered async via/campaign answer. - Snapshot progress so the ledger + dashboard reflect the new state.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 88 lines · 0 tokens per session scan A d2562e0dabdc
campaign is a skill published in the GitHub repository nodealchemy/powernode-platform (2 stars, last pushed 3d ago), licensed MIT. It adds 27 tokens to every session and 1,338 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
good-first-issue-batch
File a batch of contributor-ready GitHub issues from the seeds backlog, re-verifying every candidate against HEAD first so no dead issue reaches a contributor. Activate for prompts like "file some good first issues", "open a batch of GFIs", "publish backlog issues to GitHub", "find contributor-ready work", or after an…
seeds-issue-audit
Audit and triage open Seeds (sd) issues — find which can be closed, auto-close high-confidence completed ones, and report borderline cases. Activate for prompts like "audit open issues", "which seeds issues can be closed", "clean up the issue tracker", "triage the seeds backlog".
os-eco-dep-sync
Bump warren onto the latest published @os-eco/ versions across package.json + bun.lock and the Dockerfile CLI pins, then run the gates and open a PR. Use when checking if warren is on the newest burrow/plot/canopy/seeds/mulch/sapling.
release
Prepare, cut, and verify a warren release — tracker audits, version bump, CHANGELOG curation, ROADMAP update, push, then watch the pipeline through to published artifacts.
warren-dogfood-pipeline
Full prioritize → dispatch → shepherd → track pipeline against the live warren instance. Audits the seeds backlog around a focus theme, dispatches the surviving issues to warren agents one at a time, babysits the resulting PRs to merge (update-branch, conflict-repair runs, auto-merge), and closes the loop in the…
canvas
Display HTML content on connected Mayros nodes (Mac app, iOS, Android).