Hoo import audit
Skill shalintripathi/organic-os/plugin/skills/hoo-import-audit
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-import-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 18 days oldThe repository was created 18 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 to import an external claude-seo audit report or action plan as gated proposals - "import this audit", "turn this audit report into proposals", /organic-os:import-audit. They audit, we operate.
SKILL.md
3.1 KB, as published. Nobody here has run it
Import an external audit (claude-seo shape)
Turns a point-in-time audit report into organic-os proposals without re-deriving the audit. The import trusts but attributes: findings keep their original evidence labels ([Measured]/[Inference]/[Unverified]), the original finding text rides in each proposal verbatim, and anything our own audit dimensions would dispute is flagged for the human, never silently rewritten.
- Input: a file path from the user (a FULL-AUDIT-REPORT.md, an ACTION-PLAN.md, or similar markdown) or report text pasted in chat. Pasted text: write it to a temp file first. Read site-profile.yaml for the approval channel and the site URL.
- Parse and rank with the import module - stdlib only, defensive by
design (the format is theirs and may vary between versions; whatever
matches no item pattern is preserved in
parsed["unparsed"], never dropped):PYTHONPATH="$CLAUDE_PLUGIN_ROOT/lib" python3 -csnippet importinghoo.audit_import-parsed = parse_report(text), thenprops = to_proposals(parsed, max_items=5). - Create each proposal via
create_item(kind=p["kind"], slug=p["slug"], title=p["title"], body=p["body"], target=<the finding's page URL if one appears in it, else parsed["source_meta"]["page_url"], else the profile site URL>, source="import-audit").create_itemis the ONLY birth path - items are bornproposedwith an empty approvals list and are NEVER auto-approved; approval is the human's act, on the normal gate. Each body already carries the verbatim finding (quoted), its evidence label, the attribution line, and the dimension-mapping note: overlap names the onsite-audit dimension (skills/onsite-audit steps 3-4) via theDIMENSION_HINTSmap inplugin/lib/hoo/audit_import.py; an llms.txt finding gets the deliberate-skip note (our position in plugin/docs/evidence.md); no overlap is marked external-only and imported as-is on the source audit's evidence. - Present a summary table in-session:
- imported items: title, source severity, dimension mapping (dimension name | deliberate-skip | external-only)
- skipped items: title + reason (ranked below the max_items cut; re-run with a higher max_items to import them)
- unparsed excerpt count, with a pointer that the excerpts were preserved, not dropped
- Rebuild the queue and route the approval notification through the configured channel exactly like any propose run (skills/onsite-propose step 4, including the is_notified/mark_notified discipline so re-runs never re-notify).
- Append ONE signal recording the import: source audit date
(
parsed["source_meta"]["audit_date"]), items parsed, proposals created, skipped count, unparsed excerpt count.
Pattern credit: claude-seo (https://github.com/AgriciDaniel/claude-seo), credited in README.md since v0.1.0. They audit, we operate.