hermes-skills/arifos/arifos-three-surface-audit/SKILL.md
Audit and build the three public surfaces — arif-fazil.com (human root), arifos.arif-fazil.com (MCP Observatory), aaa.arif-fazil.com (A2A gateway). Verify protocol contracts, Caddyfile routing, and documentation drift.
npx skillsauth add ariffazil/openclaw-workspace arifos-three-surface-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit or build the three public surfaces: arif-fazil.com, arifos.arif-fazil.com, aaa.arif-fazil.com. Run this when deploying new endpoints, checking for documentation drift, or verifying protocol compliance.
| Surface | Canonical job | Must have |
|---------|--------------|-----------|
| arif-fazil.com | Human identity root | /, /000, /999, /llms.txt, cross-links to MCP + A2A |
| arifos.arif-fazil.com | MCP Observatory + Streamable HTTP /mcp | /mcp (POST+GET), /mcp-server-card.json, /observatory/, /api/catalog/{tools,resources,prompts}, /api/status/summary |
| aaa.arif-fazil.com | A2A Agent Gateway | /.well-known/agent-card.json, /skills, /validator, message:send + message:stream endpoints |
| mcp.arif-fazil.com | Migration alias only | 308 redirect to arifos.arif-fazil.com/mcp/ |
/root/arifOS/Caddyfile — active on VPS (arifOS compose stack)/root/compose/Caddyfile — federation stack/root/Caddyfile — standalonearifos.arif-fazil.com {
root * /var/www/html/arif/observatory
file_server
@arifosAPI {
header Authorization *Bearer*
header Content-Type application/json
}
handle /api/* {
reverse_proxy localhost:8888
}
}
aaa.arif-fazil.com {
root * /var/www/html/aaa
file_server
@a2aRPC {
header Content-Type application/json
}
handle /message:send* {
reverse_proxy localhost:9999
}
handle /message:stream* {
reverse_proxy localhost:9999
}
}
mcp.arif-fazil.com {
redir https://arifos.arif-fazil.com/mcp/ 308
}
handle PATH matches exactly — handle /api does NOT match /api/foo. Use named matchers with header conditions instead:
@myapi {
path /api/*
}
handle @myapi {
reverse_proxy localhost:8888
}
Hand-curated tool counts, protocol versions, and capability lists drift from live runtime. Every catalog endpoint must be generated from runtime, never hand-written.
The minimum live-generated endpoints needed:
GET /api/catalog/tools — from tools/list MCP callGET /api/catalog/resources — from resources/list MCP callGET /api/catalog/prompts — from prompts/list MCP callGET /api/status/summary — from /health + runtime vitalsThe blueprint flagged: federation-health.json says "A2A v0.3.0" but mcp.arif-fazil.com says "Planned". If /federation-health.json returns HTML, it means the static JSON file is missing from the doc root. Check:
curl -s "https://arif-fazil.com/federation-health.json" | jq .
mkdir -p /var/www/html/aaa /var/www/html/arif/observatory/api/api/ endpoints)docker exec caddy caddy reload or docker restart caddy--max-time suppress errors, check exit codes)# All three surfaces
curl -s https://aaa.arif-fazil.com/ -o /dev/null -w "%{http_code}\n"
curl -s https://arifos.arif-fazil.com/observatory/ -o /dev/null -w "%{http_code}\n"
curl -s https://mcp.arif-fazil.com/ -o /dev/null -w "%{http_code} %{redirect_url}\n"
# Protocol contracts
curl -s https://aaa.arif-fazil.com/.well-known/agent-card.json | jq .
curl -s https://arifos.arif-fazil.com/mcp-server-card.json | jq .
# Runtime catalogs
curl -s https://arifos.arif-fazil.com/api/mcp/tools.json | jq '.tools | length'
curl -s https://arifos.arif-fazil.com/api/catalog/resources | jq .
curl -s https://arifos.arif-fazil.com/api/status/summary | jq .
# A2A endpoints
curl -s https://aaa.arif-fazil.com/a2a -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"message:send","params":{...},"id":1}' \
-w "\nHTTP %{http_code}"
If Cloudflare is proxying and returning stale 404s after Caddy reload:
# Get Cloudflare Zone ID from dashboard, then:
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/purge_cache" \
-H "Authorization: Bearer $CF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"files":["https://arifos.arif-fazil.com/observatory/","https://arifos.arif-fazil.com/mcp-server-card.json"]}'
If token lacks purge rights, use Cloudflare dashboard → Caching → Purge Everything.
development
Governed intelligence skill for AAA as the abstraction, attestation, and abduction control plane across arifOS, APEX, A-FORGE, GEOX, WEALTH, WELL, and the ariffazil profile repository. Use when the user asks to explain or design AAA, route agentic work, reduce chaos/entropy in an arifOS federation task, create AREP/task declarations, classify risk, plan multi-repo changes, review governance boundaries, or translate human intent into evidence-backed, authority-safe, recursively agentic workflows. Provides deterministic F1-F13 floor checking, bounded abduction, and FederationReceipt composition.
development
Check every skill’s “use when” and “do not use when” clauses for collisions, missing negatives, and vague verbs like “help,” “assist,” or “improve.” Load when linting, reviewing, or validating trigger boundaries.
development
Bootstrap, design, and package new skills. Load when capturing user intent for a new skill or drafting its initial instruction framework.
content-media
Diagnose which federation services are up, down, or drifting. Produce a prioritized remediation plan.