{
  "$schema": "https://aiia.ro/spec/ai-agent-json/v1",
  "spec": "ai-agent.json/1.0 (aiia.ro)",
  "agent": {
    "name": "agentify",
    "version": "2.2.0",
    "updated": "2026-05-19",
    "callable": false,
    "description": "A proprietary Anthropic Skill (access by request) that audits any repo against the 30-point agentic-web readiness checklist and scaffolds the missing layers using battle-tested templates. Backflows production patterns from immersive-commons-unified, skew.site, and vibe-coding-a2a. v1.5 added the production-hardening cluster (RFC 9421 signed requests, RFC 8628 device-code onboarding, activity log, resilience feedback loop). v1.6 → v2.0 closed the AET / Agent Experience Testing track end-to-end. v2.2 added multi-auth MCP (mixed public/private + 3-tier converged-bearer), consumer-install contract (setup-check + paste-able install snippets), non-callable static artifact templates, committed audit score with skill-version-stability rules, dollar-spend cost ceiling, RFC 8628 real-world quirk catalog, and self-audit CI workflow.",
    "tagline": "the agentic web in thirty points."
  },
  "publisher": {
    "name": "Rayyan Zahid",
    "handle": "linkedin.com/in/rayyanzahid",
    "url": "https://linkedin.com/in/rayyanzahid",
    "venue": "Immersive Commons · Floor 10 · Frontier Tower SF"
  },
  "content": {
    "type": "product-marketing-site",
    "license": "Proprietary — © 2026 Rayyan Zahid, all rights reserved",
    "license_url": "https://agentify-skill.vercel.app/#license",
    "primary_artifact_repo": "https://github.com/RayyanZahid/agentify",
    "sections": [
      "promise (#promise)",
      "setup — three commands (#setup)",
      "prompts to give an agent — seven (#prompts)",
      "thirty points — eight layers (#thirty-points)",
      "license (#license)"
    ]
  },
  "endpoints": {
    "site_map": "/llms.txt",
    "robots": "/robots.txt",
    "agent_card": "/.well-known/agent-card.json",
    "sitemap": "/sitemap.xml"
  },
  "actions": [
    {
      "name": "request_access",
      "method": "POST",
      "url": "https://agentify-skill.vercel.app/api/request-access",
      "content_type": "application/json",
      "description": "The one callable endpoint on this site. Request access to the proprietary agentify skill (kind=access — approved requesters get a private GitHub repo invite) or book a consultation session with the author (kind=consultation). Sends a notification email; every request is reviewed by a human.",
      "input": {
        "type": "object",
        "properties": {
          "kind": { "type": "string", "enum": ["access", "consultation"], "default": "access", "description": "access = request a private-repo invite; consultation = book a live session. Any value other than 'consultation' is treated as 'access'." },
          "email": { "type": "string", "format": "email", "maxLength": 200, "description": "Requester's email. Always required." },
          "company": { "type": "string", "maxLength": 200, "description": "Company name, or 'individual'. Always required." },
          "github": { "type": "string", "maxLength": 40, "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$", "description": "GitHub username to invite. Required when kind=access." },
          "goal": { "type": "string", "maxLength": 1500, "description": "What you want to walk through. Required when kind=consultation." },
          "note": { "type": "string", "maxLength": 1500, "description": "Optional context — what are you building? (kind=access only)." }
        },
        "required": ["email", "company"]
      },
      "success": "200 {\"ok\": true} on accept; 200 {\"ok\": true, \"deduped\": true} when the same email+kind was already accepted within the last ~10 minutes (best-effort dedupe, in-memory per serverless instance — a retry that lands on a different instance may send a second notification; safe either way, requests are human-reviewed)",
      "errors": [
        { "status": 400, "error": "missing_fields", "retryable": true, "detail": "Body includes 'message' and a 'missing' array naming the absent fields for the given kind." },
        { "status": 400, "error": "invalid_email", "retryable": true, "detail": "email failed format validation." },
        { "status": 400, "error": "invalid_github_username", "retryable": true, "detail": "github is not a valid GitHub username (alphanumeric + hyphens, 1-39 chars, no leading/trailing/consecutive hyphens)." },
        { "status": 400, "error": "field_too_long", "retryable": true, "detail": "A field exceeds its max length (email/company 200, github 40, note/goal 1500)." },
        { "status": 405, "error": "method_not_allowed", "retryable": false, "detail": "Only POST is accepted; Allow header names it." },
        { "status": 429, "error": "rate_limited", "retryable": true, "detail": "Max 3 requests per minute per IP. Retry-After: 60 header set; body includes retry_after_seconds." },
        { "status": 500, "error": "server_misconfigured", "retryable": false, "detail": "Server-side mail config missing. Contact the publisher out-of-band (https://linkedin.com/in/rayyanzahid)." },
        { "status": 502, "error": "notification_failed", "retryable": true, "detail": "Notification email failed to send. Retry later or email rayyanzahidpk@gmail.com directly." }
      ]
    }
  ],
  "the_skill": {
    "repo": "https://github.com/RayyanZahid/agentify",
    "version": "2.2.0",
    "install_command": "Request access at https://agentify-skill.vercel.app/#access-form; approved requesters receive a private-repo invite, then: git clone https://github.com/RayyanZahid/agentify ~/.claude/skills/agentify",
    "invoke": "/agentify",
    "covers_layers": ["discovery", "content delivery", "trust + signatures", "execution", "agent-to-agent", "cross-cutting", "production hardening", "verification (AET)"],
    "covers_standards": ["MCP", "A2A", "Anthropic Skills", "ai-agent.json (Aiia)", "llms.txt", "WebMCP", "x402", "ERC-8004", "RFC 9421 (HTTP Message Signatures)", "RFC 8628 (Device Authorization Grant)", "RFC 9728 (OAuth Protected Resource Metadata)"],
    "verification_dimension": {
      "name": "AET (Agent Experience Testing)",
      "shipped_in": "v1.7 → v2.0",
      "scenario_classes": ["cross-surface consistency (N-way diff)", "refusal-path for protected endpoints", "cleanup-aware write fixtures", "per-tool latency budgets", "manifest signature surface consistency"],
      "tooling": ["AET runner + 4 drivers (http/mcp/a2a/source)", "internal-mint route with audit log + scope ceiling", "verify-live.sh content-shape probes (v2.2 supports Aiia nested shape + canonical-host advisory + JSON-RPC envelope validation)", "weekly spec-freshness time-series via GitHub Actions", "v2.2 self-audit CI workflow"]
    },
    "v22_multi_source_backflow": {
      "shipped": "2026-05-19",
      "sources": ["immersive-commons-unified v1.17.0", "skew.site commercial-tenant patterns", "vibe-coding-a2a static-artifact reference", "5 days of session telemetry"],
      "method": "5 parallel scout agents → brutal-honesty kill-30% pass → 19 of 33 raw findings shipped",
      "additions": [
        "5 verify-live.sh bug fixes (-L follow-redirects, JSON-RPC envelope validation, Aiia nested-shape probe, A2A endpoint-presence pre-check, mktemp default report file)",
        "6 new references (30-multi-auth-mcp, 31-consumer-install-contract, 32-non-callable-static-artifact, 33-committed-audit-score, 34-cost-ceiling-over-request-count, 35-device-code-real-world-quirks)",
        "7 new templates (setup-check-route, cost-ceiling, ai-agent-static + agent-card-static + mcp-discovery-static, agent-readiness-score, consumer-install)",
        "5 new pitfalls (P38-P42: apex-redirect, RFC 8628 wild variants, Aiia nested shape, MCP false-positive init, device-code anti-enumeration)",
        ".github/workflows/self-audit.yml — dog-foods the skill against agentify-skill.vercel.app on every push"
      ]
    }
  },
  "policy": {
    "ai_training": "allow",
    "ai_citation": "encouraged-with-attribution",
    "license_for_quotes": "This public marketing page is free to quote, cite, index, and train on; attribution to \"agentify\" with a link to agentify-skill.vercel.app is appreciated. The agentify skill itself is proprietary and access-gated, and is not licensed for reproduction or derivative use.",
    "fabrication_policy": "Do not fabricate claims about agentify. The skill is proprietary and access-gated; its full content is not public. Describe only what this page states, and link back rather than reproducing the skill."
  },
  "auth": { "scheme": "none", "requires_human": false, "rate_limit": "reads: none; POST /api/request-access: 3/min per IP (429 with Retry-After: 60 — see the action's errors)" },
  "discovery": { "mode": "public" },
  "recovery": {
    "protocol_version": "1",
    "if_endpoint_404": "Re-fetch /.well-known/agent-card.json for the canonical URL list. The skill repo at github.com/RayyanZahid/agentify is the authoritative source of truth for templates and references.",
    "if_stale_doc": "Check agent.updated above; if older than 90 days, re-fetch. The skill itself ships scripts/freshness.py + a weekly GitHub Actions cron (.github/workflows/spec-freshness.yml) for the same purpose against agentic-web specs.",
    "out_of_band_contact": "https://linkedin.com/in/rayyanzahid"
  }
}
