Agent Skills: AAIF Governance × ASI Interleave

Bridge layer connecting the Agentic AI Foundation (AAIF) governance structure — Linux Foundation stewardship of MCP, goose, AGENTS.md — to the plurigrid/asi skill graph. Formalizes AAIF-compatible skill registration, IPSIE identity profiles, and the cross-protocol interoperability surface. Maps the AAIF platinum member ecosystem (AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, OpenAI) to specific ASI skill integration points.

UncategorizedID: plurigrid/asi/aaif-governance-interleave

Install this agent skill to your local

pnpm dlx add-skill https://github.com/plurigrid/asi/tree/HEAD/skills/aaif-governance-interleave

Skill Files

Browse the full folder contents for aaif-governance-interleave.

Download Skill

Loading file tree…

skills/aaif-governance-interleave/SKILL.md

Skill Metadata

Name
aaif-governance-interleave
Description
Bridge layer connecting the Agentic AI Foundation (AAIF) governance structure — Linux Foundation stewardship of MCP, goose, AGENTS.md — to the plurigrid/asi skill graph. Formalizes AAIF-compatible skill registration, IPSIE identity profiles, and the cross-protocol interoperability surface. Maps the AAIF platinum member ecosystem (AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, OpenAI) to specific ASI skill integration points.

AAIF Governance × ASI Interleave

Bridge connecting the Agentic AI Foundation (AAIF) governance ecosystem to the plurigrid/asi skill graph.

AAIF Structure (as of December 2025)

======= description: > Bridge connecting the Agentic AI Foundation (AAIF) governance ecosystem to skill graphs. Triggers: AAIF compatibility, IPSIE identity profiles, cross-protocol interoperability (MCP/A2A/AGNTCY), enterprise agent identity, goose integration, AGENTS.md skill integration.

AAIF Governance Interleave

Bridge connecting the Agentic AI Foundation (AAIF) governance structure (Linux Foundation stewardship of MCP, goose, AGENTS.md) to skill graphs. Maps the AAIF platinum member ecosystem (AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, OpenAI) to specific integration points.

AAIF Structure

origin/main

Linux Foundation
├── AAIF (Agentic AI Foundation)
│   ├── MCP (Model Context Protocol)        -- Anthropic-originated
│   ├── goose                               -- agentic framework
│   └── AGENTS.md                           -- agent behavior specification
├── A2A Protocol Project                     -- Google-led, sibling project
├── LF AI & Data                            -- absorbed ACP from IBM
└── AGNTCY Project                          -- Cisco-led, 65+ companies
<<<<<<< HEAD

AAIF Platinum Members:
  AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, OpenAI

GF(3) Tripartite Tag

ipsie-oracle(-1) ⊗ aaif-governance-interleave(0) ⊗ agent-protocol-interleave(+1) = 0

Validation (-1) × Governance (0) × Integration (+1) = balanced protocol governance.


AAIF Compatibility Layer

# Make any ASI skill AAIF-compatible
# Requirement: SKILL.md with valid frontmatter (name, trit, role, version)
# Postcondition: skill is registerable with MCP, A2A, and AGNTCY OASF

from dataclasses import dataclass
from typing import Optional
=======

AAIF Compatibility Layer

from dataclasses import dataclass
>>>>>>> origin/main
import yaml, json

@dataclass
class AAIFDescriptor:
<<<<<<< HEAD
    """AAIF-compatible skill descriptor covering all three protocol layers."""
    name: str
    description: str
    version: str
    trit: int
    role: str
    # Protocol-specific schemas
=======
    """AAIF-compatible skill descriptor covering MCP, A2A, and AGNTCY."""
    name: str
    description: str
>>>>>>> origin/main
    mcp_schema: dict           # JSON-RPC tool schema
    a2a_skill_descriptor: dict # OpenAPI skill descriptor for Agent Card
    agntcy_oasf: dict          # OASF descriptor for AGNTCY discovery
    ipsie_profile: str         # "public" | "enterprise" | "federated"
<<<<<<< HEAD
    aaif_version: str = "1.0"
=======
>>>>>>> origin/main

def make_aaif_descriptor(skill_path: str) -> AAIFDescriptor:
    """
    Requirement:  SKILL.md exists at skill_path with valid frontmatter
    Postcondition: returns AAIFDescriptor compatible with MCP, A2A, AGNTCY

<<<<<<< HEAD
    Single source of truth: SKILL.md frontmatter → all three protocol formats.
    """
    with open(f"{skill_path}/SKILL.md") as f:
        content = f.read()
    # Parse frontmatter
    meta = yaml.safe_load(content.split("---")[1])
    name, desc, version = meta["name"], meta["description"], meta["version"]
    trit, role = meta["trit"], meta["role"]
=======
    Single source of truth: SKILL.md frontmatter -> all three protocol formats.
    """
    with open(f"{skill_path}/SKILL.md") as f:
        content = f.read()
    meta = yaml.safe_load(content.split("---")[1])
    name, desc = meta["name"], meta["description"]
>>>>>>> origin/main

    mcp_schema = {
        "name": name,
        "description": desc,
        "inputSchema": {
            "type": "object",
            "properties": {
                "query": {"type": "string", "description": "Skill invocation query"}
            }
        }
    }

    a2a_descriptor = {
        "id": name,
        "name": name.replace("-", " ").title(),
        "description": desc,
<<<<<<< HEAD
        "tags": meta.get("tags", []),
=======
>>>>>>> origin/main
        "inputModes": ["text"],
        "outputModes": ["text", "data"],
    }

    oasf = {
        "schema_version": "1.0",
        "name": name,
        "description": desc,
<<<<<<< HEAD
        "version": version,
        "gf3_trit": trit,
        "role": role,
=======
>>>>>>> origin/main
        "aaif_compatible": True,
        "a2a_compatible": True,
        "mcp_compatible": True,
    }

<<<<<<< HEAD
    # IPSIE profile based on role
    ipsie = "enterprise" if role == "VALIDATOR" else "public"

    return AAIFDescriptor(
        name=name, description=desc, version=version, trit=trit, role=role,
        mcp_schema=mcp_schema, a2a_skill_descriptor=a2a_descriptor,
        agntcy_oasf=oasf, ipsie_profile=ipsie
    )

IPSIE Profile Compliance

The Interoperability Profiling for Secure Identity in the Enterprise (IPSIE) working group (OpenID Foundation, Okta-led) profiles OAuth 2.1, OIDC, and SCIM for enterprise agent contexts.

# IPSIE compliance checker for ASI skill invocations
# Requirement: skill invocation carries IPSIE-compliant token
# Postcondition: returns compliance report — NOT a guess, always definite

=======
    return AAIFDescriptor(
        name=name, description=desc,
        mcp_schema=mcp_schema, a2a_skill_descriptor=a2a_descriptor,
        agntcy_oasf=oasf, ipsie_profile="public"
    )

IPSIE Profile Compliance

The Interoperability Profiling for Secure Identity in the Enterprise (IPSIE) working group (OpenID Foundation) profiles OAuth 2.1, OIDC, and SCIM for enterprise agent contexts.

>>>>>>> origin/main
IPSIE_REQUIRED_CLAIMS = {
    "sub",    # subject (agent identifier)
    "iss",    # issuer (enterprise IdP URL)
    "aud",    # audience (skill endpoint)
    "exp",    # expiration (JIT: must be < 15 minutes)
    "scope",  # authorized capabilities
    "azp",    # authorized party (agent client ID)
}

<<<<<<< HEAD
IPSIE_SCIM_ATTRIBUTES = {
    "agent:id",      # unique agent identifier
    "agent:version", # agent version
    "agent:role",    # VALIDATOR | ERGODIC | GENERATOR
    "agent:trit",    # GF(3) trit class
}

def check_ipsie_compliance(jwt_token: str, required_scope: str) -> dict:
    """
    Requirement:  jwt_token is a signed JWT from an enterprise IdP
    Postcondition: returns compliance report with specific violations (NOT 'probably ok')

    Based on arXiv:2510.25819 (OpenID Foundation whitepaper on agentic AI identity).
    Sufficient for SINGLE-TRUST-DOMAIN deployments.
    Multi-domain: see gap G-P7 in agent-protocol-interleave.
    """
    try:
        claims = decode_jwt(jwt_token)  # validates signature
=======
def check_ipsie_compliance(jwt_token: str, required_scope: str) -> dict:
    """
    Requirement:  jwt_token is a signed JWT from an enterprise IdP
    Postcondition: returns compliance report with specific violations

    Based on arXiv:2510.25819 (OpenID Foundation whitepaper on agentic AI identity).
    Sufficient for single-trust-domain deployments.
    """
    import time
    try:
        claims = decode_jwt(jwt_token)
>>>>>>> origin/main
    except Exception as e:
        return {"compliant": False, "violation": f"JWT decode failed: {e}"}

    violations = []
<<<<<<< HEAD

    # Check required claims
=======
>>>>>>> origin/main
    missing = IPSIE_REQUIRED_CLAIMS - set(claims.keys())
    if missing:
        violations.append(f"Missing IPSIE required claims: {missing}")

<<<<<<< HEAD
    # Check expiration (JIT tokens must be short-lived)
    import time
    if claims.get("exp", 0) - time.time() > 900:  # > 15 minutes
        violations.append(f"Token lifetime exceeds IPSIE JIT limit (15 min)")

    # Check scope
=======
    if claims.get("exp", 0) - time.time() > 900:
        violations.append("Token lifetime exceeds IPSIE JIT limit (15 min)")

>>>>>>> origin/main
    granted_scopes = set(claims.get("scope", "").split())
    if required_scope not in granted_scopes:
        violations.append(f"Required scope '{required_scope}' not granted")

    return {
        "compliant": len(violations) == 0,
        "violations": violations,
        "claims_present": list(claims.keys()),
        "expires_in_seconds": claims.get("exp", 0) - time.time(),
<<<<<<< HEAD
        "ipsie_profile": "enterprise",
    }

AGENTS.md Skill Integration

AGENTS.md (part of AAIF alongside MCP) specifies agent behavior constraints. ASI skills can declare AGENTS.md compatibility:

# ~/.claude/skills/[skill-name]/AGENTS.md-extension
agents_md_version: "1.0"
skill_name: "abductive-oracle"
behavior_constraints:
  - never_guess: true              # matches postcondition: returns nothing if unknown
  - deterministic: true            # same input → same output
  - max_response_tokens: 512       # bounded output
  - tool_calls_per_invocation: 3   # max 3 sub-oracle calls
capability_declarations:
  - capability: "abductive_inference"
    trit: -1                        # VALIDATOR
    requires_auth: false
    aaif_compatible: true
memory_profile:
  persistent: false                 # no persistent state between invocations
  shared_context: false             # no cross-agent memory

goose Integration (AAIF Agentic Framework)

goose is Anthropic's agentic framework, now under AAIF. ASI skills register as goose extensions:

# ASI skill as goose extension
# Requirement: goose CLI available
# Postcondition: ASI skill callable from any goose session

GOOSE_SKILL_MANIFEST = {
    "schema": "goose-extension/v1",
    "name": "asi-skill-graph",
    "description": "GF(3)-organized skill graph with 1360+ capabilities via dynamic-sufficiency hub",
    "version": "1.0.0",
    "tools": [
        {
            "name": "invoke_skill",
            "description": "Invoke any ASI skill by name with arguments",
=======
    }

AGENTS.md Skill Integration

# Example AGENTS.md-extension for a skill
agents_md_version: "1.0"
skill_name: "abductive-oracle"
behavior_constraints:
  - never_guess: true
  - deterministic: true
  - max_response_tokens: 512
  - tool_calls_per_invocation: 3
capability_declarations:
  - capability: "abductive_inference"
    requires_auth: false
    aaif_compatible: true

goose Integration

GOOSE_SKILL_MANIFEST = {
    "schema": "goose-extension/v1",
    "name": "asi-skill-graph",
    "description": "Skill graph with capabilities via dynamic-sufficiency hub",
    "tools": [
        {
            "name": "invoke_skill",
            "description": "Invoke any skill by name with arguments",
>>>>>>> origin/main
            "parameters": {
                "skill_name": {"type": "string"},
                "args": {"type": "object"}
            }
        },
        {
            "name": "query_skill_graph",
<<<<<<< HEAD
            "description": "Query the ASI skill graph for capabilities matching a description",
            "parameters": {
                "query": {"type": "string"},
                "trit_filter": {"type": "integer", "enum": [-1, 0, 1]}
=======
            "description": "Query the skill graph for capabilities matching a description",
            "parameters": {
                "query": {"type": "string"},
>>>>>>> origin/main
            }
        }
    ]
}

<<<<<<< HEAD

=======

origin/main

Platform Identity Integration

Microsoft Entra Agent ID

<<<<<<< HEAD
# Microsoft Entra Agent ID (preview, May 2025)
# Assigns enterprise identity to ASI skill graph agent
# JIT scoped tokens, conditional access, least-privilege

=======
>>>>>>> origin/main
ENTRA_AGENT_CONFIG = {
    "agent_id": "asi-skill-graph-agent",
    "display_name": "ASI Skill Graph Agent",
    "app_roles": [
<<<<<<< HEAD
        {"role": "skill:invoke", "trit_classes": [-1, 0, 1]},
        {"role": "skill:query", "trit_classes": [0, 1]},
        {"role": "oracle:gf3", "trit_classes": [-1]},
    ],
    "token_lifetime_minutes": 15,  # JIT tokens, IPSIE compliant
    "conditional_access": {
        "require_mfa_for_validators": True,  # trit=-1 skills require MFA
=======
        {"role": "skill:invoke"},
        {"role": "skill:query"},
        {"role": "oracle:gf3"},
    ],
    "token_lifetime_minutes": 15,  # JIT tokens, IPSIE compliant
    "conditional_access": {
        "require_mfa_for_validators": True,
>>>>>>> origin/main
        "location_policy": "trusted_networks_only",
    }
}

AWS AgentCore

<<<<<<< HEAD
# AWS AgentCore identity configuration
# Entra as IdP for AgentCore Gateway access
AWS_AGENTCORE_CONFIG = {
    "identity_provider": "microsoft_entra",
    "gateway_policy": {
        "tool_calls": "evaluated",      # real-time policy enforcement
        "skill_invocations": "audited", # logged to DuckDB IES
        "cross_agent_calls": "mTLS",    # A2A protocol via mTLS
    },
    "guardrails": {
        "max_tokens_per_skill": 4096,
        "allowed_trit_classes": [-1, 0, 1],  # all classes allowed
        "gf3_conservation_required": True,   # conservation oracle runs pre-call
=======
AWS_AGENTCORE_CONFIG = {
    "identity_provider": "microsoft_entra",
    "gateway_policy": {
        "tool_calls": "evaluated",
        "skill_invocations": "audited",
        "cross_agent_calls": "mTLS",
    },
    "guardrails": {
        "max_tokens_per_skill": 4096,
>>>>>>> origin/main
    }
}

<<<<<<< HEAD

=======

Concrete Affordances

Validate SKILL.md against AAIF descriptor format

Run this one-liner from the repo root to check that a SKILL.md has valid frontmatter with the required name and description fields:

# Usage: validate a single skill
python3 -c "
import yaml, sys, pathlib

skill_path = sys.argv[1]
md = pathlib.Path(skill_path, 'SKILL.md')
if not md.exists():
    print(f'FAIL: {md} not found'); sys.exit(1)
content = md.read_text()
parts = content.split('---')
if len(parts) < 3:
    print(f'FAIL: no YAML frontmatter delimiters in {md}'); sys.exit(1)
meta = yaml.safe_load(parts[1])
required = {'name', 'description'}
missing = required - set(meta.keys())
if missing:
    print(f'FAIL: missing required fields: {missing}'); sys.exit(1)
if not isinstance(meta['name'], str) or not meta['name'].strip():
    print('FAIL: name must be a non-empty string'); sys.exit(1)
if not isinstance(meta['description'], str) or not meta['description'].strip():
    print('FAIL: description must be a non-empty string'); sys.exit(1)
print(f'PASS: {meta[\"name\"]} — AAIF descriptor valid')
print(f'  name:        {meta[\"name\"]}')
print(f'  description: {meta[\"description\"][:80]}...')
" /Users/alice/v/asi/skills/aaif-governance-interleave

Batch-validate all skills in the repo

for d in /Users/alice/v/asi/skills/*/; do
  python3 -c "
import yaml, sys, pathlib
skill_path = sys.argv[1]
md = pathlib.Path(skill_path, 'SKILL.md')
if not md.exists(): print(f'SKIP: {md}'); sys.exit(0)
content = md.read_text()
parts = content.split('---')
if len(parts) < 3: print(f'FAIL: {md} — no frontmatter'); sys.exit(1)
meta = yaml.safe_load(parts[1])
for field in ('name', 'description'):
    if field not in meta or not str(meta[field]).strip():
        print(f'FAIL: {md} — missing or empty \"{field}\"'); sys.exit(1)
print(f'PASS: {meta[\"name\"]}')
" "$d"
done

Generate AAIF descriptor JSON from SKILL.md

# Emit the full AAIFDescriptor as JSON for a given skill
python3 -c "
import yaml, json, sys, pathlib

skill_path = sys.argv[1]
content = pathlib.Path(skill_path, 'SKILL.md').read_text()
meta = yaml.safe_load(content.split('---')[1])
name, desc = meta['name'], meta['description'].strip()

print(json.dumps({
    'name': name,
    'mcp_schema': {
        'name': name, 'description': desc,
        'inputSchema': {'type': 'object', 'properties': {'query': {'type': 'string'}}}
    },
    'a2a_skill_descriptor': {
        'id': name, 'name': name.replace('-', ' ').title(),
        'description': desc, 'inputModes': ['text'], 'outputModes': ['text', 'data']
    },
    'agntcy_oasf': {
        'schema_version': '1.0', 'name': name, 'description': desc,
        'aaif_compatible': True, 'a2a_compatible': True, 'mcp_compatible': True
    },
    'ipsie_profile': 'public'
}, indent=2))
" /Users/alice/v/asi/skills/aaif-governance-interleave

origin/main

Gap Registry

| Gap | What | Resolution Path | |-----|------|-----------------| <<<<<<< HEAD | G-P7 | IPSIE single-trust-domain only; multi-domain is open problem | universal-captp-derivation + captp (OCapN provides cross-domain trust) | | G-P6 | No cross-protocol agent identity revocation | anoma-intents + did-passport-interleave | | G-AAIF1 | goose not yet open-sourced (as of Feb 2026) | When open: direct extension registration | | G-AAIF2 | AGENTS.md spec not yet formalized | bisimulation-oracle for behavioral constraint verification | | G-AAIF3 | No GF(3) trit class in AAIF OASF schema | Propose extension via AAIF working group |


Related Skills

  • agent-protocol-interleave — full protocol ecosystem bridge (sibling skill)
  • did-passport-interleave — W3C DID ↔ passport.gay identity bridge
  • dynamic-sufficiency — 145-ref hub (ASI's AAIF skill router)
  • agent-o-rama — multi-protocol aggregation hub (MCP+A2A+AGNTCY)
  • gf3-conservation-oracle — GF(3) conservation enforcement (AAIF pre-commit hook)
  • bisimulation-oracle — AGENTS.md behavioral constraint verification
  • universal-captp-derivation — OCapN for cross-domain trust (IPSIE multi-domain gap)
  • captp — CapTP protocol (zig-syrup wire layer enabling cross-org capability passing) ======= | G-P7 | IPSIE single-trust-domain only; multi-domain is open problem | OCapN cross-domain trust | | G-P6 | No cross-protocol agent identity revocation | did-passport-interleave | | G-AAIF1 | goose not yet open-sourced | Direct extension registration when available | | G-AAIF2 | AGENTS.md spec not yet formalized | bisimulation-oracle for behavioral constraint verification |

origin/main