Hoo orchestrator
Skill shalintripathi/organic-os/plugin/skills/hoo-orchestrator
Run an always-on SEO/AEO growth loop on your own site with Claude: pulls GA4 and Search Console signals, proposes fixes with the reasoning attached, applies approved changes to WordPress, verifies they landed, and learns from outcomes. Every write is human-approved. MIT, no telemetry, no scraping.
npx -y skills add shalintripathi/organic-os --skill hoo-orchestratorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 3 stars3 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.
What its author says it does
Copied from the file, not written here
Use for any broad organic-growth request - "audit my organic presence", "what should we do this month", "full SEO/AEO review". Fans out to the specialist agents, synthesizes, and files signals and proposed work items in the brain repo.
SKILL.md
3.7 KB, 848 tokens by cl100k_base, as published. Nobody here has run it
Head of Organic - orchestrator
- Locate the brain repo: try
core.registry.get_active()first (the active site'sbrainpath). If the registry is empty or unavailable (cloud runtimes may lack local registry access), fall back to the routine's own configured site-profile path, or ask the user (a repo has site-profile.yaml at root). Read site-profile.yaml fully. 1a. Runcore.contracts.check_schema(brain_path)before fanning out to any specialist. If not compatible, relay the action string and stop. - Decide which specialists the request needs (default full sweep: all eight). Launch them as parallel agents, each given the profile path + target URLs.
- Synthesize results. Deduplicate findings. Rank by impact x confidence.
3b. Decision check, BEFORE any
create_itemcall. For every brief topic and every on-page fix, search the brain's decision memory:PYTHONPATH="$CLAUDE_PLUGIN_ROOT/lib" python3 -c "..."snippet importingcore.decisions-search(<brain>, [<page path>, <topic or keyword>]). It returns prior decisions newest first withdate,choice,scope,item, and therationale. A hit whosechoiceisrejectedmeans a human already refused that work. Exactly two paths are allowed, never a third:- SKIP it, and say so in step 6's summary: name the topic, the decision date, and the recorded reason.
- Or CREATE it with a line in the item body reading "previously rejected
on <date> because <reason>; proposing again because <what changed>".
What changed must be a concrete new fact from this run - a new signal,
a ranking move, a competitor change - never "worth another look".
Silently re-proposing rejected work is forbidden: an unread rejection is
how a loop wastes a human's attention twice. A hit with any other
choiceis context to quote in the body, not a blocker.
- File outputs through lib/core ONLY:
- observations ->
append_signal(one call per signal line) - content ideas ->
create_item(kind="content-brief", ...); ideas born from comparison-intent queries (vs, alternative, best X for) setbrief_type="comparison"- absence means explainer - on-page fixes ->
create_item(kind="onpage-fix", ...) - run artifacts ->
runs/YYYYMMDD-orchestrator/(numbered raw files + REPORT.md) Items are created ONLY viacreate_item(bornproposed, empty approvals) or the contract CLI - never by writing abriefs/orproposals/file directly, and never with any other status at creation. A brief that ce-produce will later draft still startsproposedand reachesdraftedonly through approved lineage.
- observations ->
- Rebuild the queue (
rebuild_queue) and notify per the profile's approval channel (see skills/onsite-apply for the adapter pattern). Only send items whereis_notified(item)is false; callmark_notified(path)right after a successful send, so re-runs never re-notify the same item. Do NOT apply anything: creating items is free, mutating the site is gated elsewhere. - Tell the user: top 5 actions, what is queued for approval, what was skipped for missing credentials.
Every signal line must be falsifiable: observation + "we are wrong if" + a leading indicator. Reject vague signals.
At each stage boundary, append a one-line progress marker with a UTC timestamp to the run report file before starting the stage - headless runs are watched by tailing that file, not a terminal.