<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-martin-skis-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <front>
    <title abbrev="SKIS">Skill Intake Security Requirements for AI Agents (SKIS)</title>
    <seriesInfo name="Internet-Draft" value="draft-martin-skis-00"/>
    <author initials="Th." surname="Martin" fullname="Thomas Martin">
      <organization>Independent</organization>
      <address>
        <email>thomas.martin@thomasmartin-pmp.de</email>
      </address>
    </author>
    <date year="2026" month="November" day="2"/>
    <keyword>skill</keyword>
    <keyword>agent</keyword>
    <keyword>intake</keyword>
    <keyword>supply chain</keyword>
    <keyword>security</keyword>
    <abstract>
      <t>Skill Intake Security (SKIS) defines how an organization should examine a third-party skill, plugin or agent definition before it is allowed to act: four review levels graded by risk, a verification chain from provenance to a release record, and operational controls for updates, inventory, logging and revocation. AI agents increasingly extend their capabilities with third-party skills: packages of natural-language instructions, metadata and helper scripts that a model reads as authoritative context. Related work addresses agent identity, authorization, discovery and skill-layer risks; this document proposes a consolidated intake procedure with explicit organizational obligations. The verification chain covers provenance, integrity pinning, full-content inspection and comparison of declared versus observed capabilities. SKIS is vendor-neutral and intended to complement existing identity and provenance specifications.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Status of this draft</name>
      <t>This document is an individual contribution and does not represent IETF consensus. It was subject to two rounds of AI-assisted adversarial review; no independent human review is asserted. Figures in Section 1.2 were checked against primary sources on 29 October 2026.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <section anchor="problem">
        <name>Problem</name>
        <t>A skill is text that an agent obeys. Skills combine natural-language instructions, metadata and optional executable content; malicious behavior can originate in any of these components or in their interaction, and conventional code scanning alone does not establish safety. Skills are typically unsigned, published without review, and installable by anyone with a repository account.</t>
      </section>
      <section anchor="evidence">
        <name>Evidence</name>
        <t>Published measurements indicate that the problem is not hypothetical (checked against the primary sources on 29 October 2026, see the informative references):</t>
        <ul spacing="normal">
          <li>A scan of 3,984 skills from ClawHub and skills.sh (5 February 2026) found at least one critical issue in 13.4 percent (534 skills) and at least one security flaw of any severity in 36.82 percent (1,467 skills). It confirmed 76 malicious payloads, 91 percent of which combine prompt injection with conventional malware; prompt injection across all ClawHub skills was 2.6 percent <xref target="SNYK"/>. The 36 percent figure measures flaws of any kind, not prompt injection, although the report's title suggests the latter. These metrics describe different outcomes and populations.</li>
          <li>A static scan of 17,065 skills in 392 public repositories found that 38.8 percent (6,615) contain shell commands, while only 4.0 percent (690) declare Bash in their metadata <xref target="SKILLOCK"/>. Caveats: vendor blog post, not peer reviewed; the sample is the first 500 GitHub search hits, not a random sample; commands assembled at runtime are not counted, so the true surface is likely larger. These are static indicators, not observed execution; 12,280 of the skills were unique by content hash.</li>
          <li>An arXiv preprint on 17,022 skills sampled from 170,226 on SkillsMP found 520 skills with 1,708 credential-leak issues; 466 of the 520 skills (89.6 percent) leak credentials through at least one runtime channel during normal execution, and 481 of 520 (92.5 percent) become exploitable in the execute phase; both use the same denominator and their overlap is not reported. The paper's abstract and introduction tie the absence of elevated privileges to the 92.5 percent figure, Section 4.3 of the paper to the 89.6 percent figure <xref target="CHEN"/>.</li>
          <li>Automated skill-based prompt injection (SkillJect, arXiv preprint) reaches an average attack success rate of 80.7 percent on Claude Code across four victim models, against 0.0 percent for naive direct injection; per model the range is 47.0 to 97.2 percent <xref target="JIA"/>. ASR counts execution of the designated hidden helper script; it does not establish that the intended downstream harm completed.</li>
          <li>Hidden payloads occur in practice. Of 35,878 skills submitted to VirusTotal, 6,637 were malicious; 62 percent of those carry their payload only as plain-language instructions. Ninety skills (1.4 percent of the malicious ones) conceal them by whitespace padding (56), HTML comments (28) or invisible Unicode, namely tag and zero-width characters (6); the authors call these counts lower bounds <xref target="VT"/>. Submission-corpus proportions are not estimates of ecosystem-wide prevalence. An open-source skill scanner initially missed Unicode tag characters and was fixed after a report <xref target="SKILLSPECTOR-169"/>. Bidirectional control characters make displayed text differ from its logical order, shown for source code in 12 languages (Trojan Source, CVE-2021-42574) <xref target="TROJAN"/>; for skills the evidence is descriptive: a Cloud Security Alliance research note recommends rejecting them in skill files and MCP manifests <xref target="CSA"/>, and a scanner issue documented missing bidirectional-control detection in source-file contents; a maintainer follow-up reports that PR #473 addressed this gap on 28 September 2026, while direction marks including U+061C remain excluded by detector policy <xref target="SKILLSPECTOR-39"/>; no measured prevalence in skills has been found.</li>
        </ul>
      </section>
      <section anchor="motivation">
        <name>Motivation: why open standards matter</name>
        <t>The Internet became one network, not a set of incompatible islands, because its core protocols were published openly and could be implemented independently; the RFC series embodied this. Without such documents, closed proprietary networks, as in the 1980s, would plausibly have persisted.</t>
        <t>Skills face a comparable fragmentation: vendor-specific formats, scanners and rules. A neutral, openly documented intake procedure lets an organization apply the same review on any platform and gives auditors a stable, citable reference. The counterfactual above is an illustration, not a measured claim.</t>
      </section>
      <section anchor="gap">
        <name>Gap</name>
        <t>Current individual IETF Internet-Drafts address agent security requirements <xref target="I-D.ni-a2a-ai-agent-security-requirements"/>, credential delegation <xref target="I-D.sweeney-wimse-credential-delegation"/>, OAuth-based agent identity <xref target="I-D.mcguinness-oauth-ai-agent-instance"/>, agent authorization <xref target="I-D.liu-ai-agent-authorization-integration"/> and agent discovery <xref target="I-D.cui-ai-agent-discovery-invocation"/>. A search on 29 October 2026 found none on skill intake. The OWASP Agentic Skills Top 10 <xref target="OWASP-AST10"/> enumerates risks at the skill layer but is an OWASP incubator project (version 1.0, 2026 edition, release targeted for Q4 2026) with evolving risk guidance and a proposed Universal Skill Format rather than a finished specification. This document does not claim that comparable procedures are absent elsewhere; it proposes a consolidated intake procedure with explicit organizational obligations.</t>
        <t>Draft versions are as shown on the IETF Datatracker on 29 October 2026; all of them are individual submissions without IETF endorsement.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document applies to any skill, plugin, tool definition or agent definition obtained from outside the consuming organization, on any platform. It does not define agent identity, transport or runtime sandbox technology.</t>
      </section>
      <section anchor="design-principle">
        <name>Design principle</name>
        <t>Declared permissions are claims, not facts. Classification considers declared behavior, static evidence, runtime observations and the capabilities reachable in the deployment; absence of observed behavior is not evidence of absence, and no single control suffices: human review, automated scanning and isolation are combined.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here. Conformance applies to a consuming organization and its identified enforcement components. A release conforms only if every applicable MUST and MUST NOT is satisfied; each departure from a SHOULD MUST be justified in the release record. Release conformance covers all applicable obligations at approval time. Operational conformance requires continued satisfaction of every applicable runtime and lifecycle obligation in this document, including production containment, confirmation, integrity verification, logging, revocation and re-review. Appendix <xref target="annex-a" format="counter"/> and Appendix <xref target="annex-b" format="counter"/> are informative aids and are not exhaustive.</t>
      <dl newline="false" spacing="normal">
        <dt>Skill:</dt>
        <dd>a package of instructions, metadata and optional scripts or dependencies that extends an agent.</dd>
        <dt>Intake:</dt>
        <dd>the procedure by which a skill from outside the organization is examined and admitted or rejected.</dd>
        <dt>Owner:</dt>
        <dd>the person who accepts responsibility for a skill within the organization.</dd>
        <dt>Reviewer:</dt>
        <dd>the person who performs the examination.</dd>
        <dt>Approver:</dt>
        <dd>the person who releases the skill for use.</dd>
        <dt>Review level:</dt>
        <dd>one of Levels 0 to 3, defined in Section 4.</dd>
        <dt>Release record:</dt>
        <dd>the written decision for one skill version, see Appendix <xref target="annex-b" format="counter"/>.</dd>
      </dl>
    </section>
    <section anchor="threat-model">
      <name>Threat Model</name>
      <t>Attackers publish or compromise skills to obtain code execution, credential theft, data exfiltration or persistent manipulation of the agent. Assumed attack surfaces: the instruction text, hidden characters and comments, helper scripts, dependency manifests, update channels, publisher accounts, and persistent memory or identity files. Threats are mapped to OWASP AST01 to AST10 in Appendix <xref target="annex-c" format="counter"/>. The attacker is assumed to adapt to known scanners. Attack paths include skill chaining, delegated agents, poisoned tool descriptions and results, and authority laundering through shared context.</t>
    </section>
    <section anchor="review-levels">
      <name>Review Levels</name>
      <section anchor="level-general">
        <name>General</name>
        <t>Every third-party skill MUST be assigned exactly one review level before installation. The rejection criteria of Section 4.2 take precedence. Otherwise Level 3 applies if any Level 3 criterion is met, Level 2 if any Level 2 criterion is met, and Level 1 only if every Level 1 criterion is met, judged on the highest capability the skill requests or can reach, whether declared or observed. If declared and observed capabilities differ, the higher level applies. Pending classification is a quarantine state, not a review level, and permits only the intake testing authorized below. If classification remains unresolved after intake testing, Level 0 applies. Before classification, artifacts MUST be acquired into quarantine outside agent discovery paths, and installation, build and initialization hooks MUST NOT run outside containment. A pending artifact MAY execute solely for intake testing under Section 5.6, and only after static inspection finds no Section 4.2 rejection criterion.</t>
      </section>
      <section anchor="level-0">
        <name>Level 0: Blocked</name>
        <t>A skill MUST be assigned Level 0 if any of the following holds: the source is unknown or unverifiable; no owner within the consuming organization has accepted responsibility; executable or agent-consumed content cannot be retrieved and inspected under Section 5.3; or inspection revealed instructions concealed to evade review or misrepresent their effect, undeclared network access to unknown hosts, or credential access unrelated to the stated purpose. A Level 0 skill MUST NOT be installed, activated or executed. The decision and its reason SHOULD be recorded.</t>
      </section>
      <section anchor="level-1">
        <name>Level 1: Read-only</name>
        <t>Level 1 applies to skills that consist solely of instructions, contain no executable files, request no tool access, and cannot reach the network or the file system beyond the working context. Review MUST include a reading of the raw source, not a rendered view, and MUST check for hidden comments, zero-width characters, Unicode tag characters and bidirectional control characters. The reviewer SHOULD also verify that the instructions match the stated purpose. Working context means only the inputs enumerated in the release record; access to sensitive inputs requires Level 3. Level 1 eligibility MUST be established by deployment controls that prevent tool use, network access and access outside that working context; instruction-only packaging or the absence of requested permissions does not establish eligibility.</t>
      </section>
      <section anchor="level-2">
        <name>Level 2: Tool access</name>
        <t>Level 2 applies to skills that bundle scripts, request tools such as shell, file writing or network access, or declare dependencies. In addition to the inspection requirements of Section 4.3, the review MUST cover every file in the skill directory and all dependencies, the static and runtime analyses required by Section 5.5, a written permission list, and a trial run in an isolated environment with network access denied by default. Observed behavior MUST be compared with declared behavior, and every discrepancy MUST receive a documented disposition: undeclared behavior MUST be removed or added to the approved capability list before release, unless Section 4.2 requires rejection. Production execution MUST enforce the approved permission list outside the model and the skill: unlisted tool operations, file access and network destinations MUST be denied. Where the platform cannot enforce the approved boundaries, the skill MUST NOT be released for that deployment. Production containment MUST constrain process execution, host interfaces, filesystem access, network egress and resource consumption according to the approved deployment profile, and the review MUST verify these boundaries in the production configuration. Where multiple skills share an execution context and authority cannot be reliably attributed, the context MUST enforce the intersection of their approved permissions; a broader permission set requires a separately reviewed combined deployment.</t>
      </section>
      <section anchor="level-3">
        <name>Level 3: Sensitive</name>
        <t>Level 3 applies to skills that can reach credentials or sensitive data, modify agent memory or identity files, change privileges, or have effects outside the approved disposable workspace. Local writes confined to that workspace do not alone require Level 3. In addition to the requirements of Section 4.4, approval MUST be given by a person other than the reviewer, every consequential action MUST require human confirmation at runtime, all tool calls MUST be logged in a tamper-evident manner, and secrets MUST be released only through a mediated mechanism. Consequential means disclosure of sensitive data, change of persistent agent state, change of privileges or an externally effective operation. Confirmation MUST be obtained by a mechanism independent of the skill and MUST be bound to the operation, target, data scope and parameters; changed parameters require new confirmation. Confirmation MUST be enforced outside the model and agent process, MUST authorize one identified operation or explicitly bounded transaction, MUST expire after a documented interval, and MUST NOT authorize replay, retries with changed effects or unrelated background operations. Credentials MUST NOT appear in prompts, tool results or logs. Write access to memory and identity files MUST be justified in writing. Persistent writes MUST record the originating skill digest, the approved operation and the affected state; stored skill-derived content MUST retain its trust classification when retrieved, and revocation MUST disable its use as instructions until reviewed. Summaries, merges and other derivatives MUST preserve contributing origins and the most restrictive applicable trust classification; if origin tracking is lost, the affected persistent content MUST be quarantined until reviewed, and revocation handling MUST include such derivatives.</t>
      </section>
      <section anchor="re-review">
        <name>Re-review</name>
        <t>A change of content, version, dependency or requested capability MUST trigger a new level determination. A skill MUST NOT be promoted to a lower level by update alone.</t>
      </section>
      <section anchor="single-person">
        <name>Single-person operations</name>
        <t>A Level 3 skill MUST NOT be released unless the approver is a person other than the reviewer; a waiting period does not substitute for independent approval. Where owner, reviewer and approver are the same person, only Levels 1 and 2 MAY be released, and the checklist MUST still be completed in writing. In that case a waiting period of at least 24 hours between review and release SHOULD be observed for Level 2; if the review is completed on a Friday, the release SHOULD wait until the next working day. The values are a judgment, not an empirical result.</t>
      </section>
    </section>
    <section anchor="verification-chain">
      <name>Verification Chain</name>
      <section anchor="provenance">
        <name>Provenance and ownership</name>
        <t>The publisher and the exact source location MUST be identified. An owner within the organization MUST be named. Where the publisher offers signatures or an attestation, they SHOULD be verified. Absence of a signature MUST be recorded and MUST NOT be treated as evidence of safety. Where signatures are present or required by policy, verification MUST succeed against the approved trust policy before release; an invalid signature MUST NOT be bypassed by source-ownership verification, and an unsigned artifact requires a documented alternative provenance method.</t>
      </section>
      <section anchor="pinning">
        <name>Integrity pinning</name>
        <t>The skill MUST be pinned to an immutable content hash, never to a version range or a mutable branch. All nested dependencies MUST be pinned the same way. The release record MUST name a SHA-256 or stronger digest algorithm and a manifest covering artifact bytes, relative paths, executable modes and transitive dependency digests. External filesystem references MUST be rejected. Each deployment profile MUST specify the manifest encoding, root-digest construction, permitted digest algorithms and path-normalization rules; duplicate paths, path traversal and normalization collisions MUST be rejected, and the release record MUST identify the profile used. The digest MUST be verified at every load, not only at installation; loaded and executed content MUST come from the verified read-only snapshot, and a missing file or digest mismatch MUST prevent loading and execution. External content used as skill instructions, including transitive references, MUST be snapshotted, inspected and digest-pinned before use. All externally obtained content MUST retain its source and trust classification. Content outside the reviewed instruction closure MUST NOT grant permissions, alter approval policy or authorize operations, and tool and delegation controls MUST enforce this independently of model interpretation.</t>
      </section>
      <section anchor="inspection">
        <name>Full-content inspection</name>
        <t>Inspection MUST enumerate every manifest entry, recursively unpack archives, show non-printing characters in an escaped representation and examine executable and agent-consumed content with format-appropriate tools. The record MUST list inspected files, transformations, tool limits and exclusions; uninspectable executable or agent-consumed content requires Level 0. Metadata MUST be parsed with non-executing parsers and validated against an explicit schema before activation, executable deserialization tags MUST be rejected, and parsing MUST run with bounded resources and without production credentials. Acquisition, extraction and inspection MUST enforce limits on expanded size, nesting depth, file count, processing time and memory, and extraction MUST reject path traversal and escaping links; exceeding a limit is an unresolved inspection finding, not a successful scan. Excluded content MUST be shown incapable of execution or consumption by the agent in the approved deployment, otherwise Level 0 applies. Keyword blocklists alone MUST NOT be accepted as inspection, because concealed instructions and obfuscation defeat them.</t>
      </section>
      <section anchor="declared-observed">
        <name>Declared versus observed capabilities</name>
        <t>The reviewer MUST record the observed capability surface: shell commands, network destinations, file reads and writes, and tool grants. This record MUST be compared with the metadata the skill declares. Declared permissions are claims; any observed capability not declared MUST be treated as a finding. The review MUST enumerate reachable skills, agents and tools and evaluate their combined authority. Delegation MUST NOT expand the initiating skill's approved permissions. Changes to tool descriptions, schemas or authorization bindings MUST trigger re-review. Absent declarations MUST be recorded as absent, not inferred from observations. The reviewer MUST establish an organizational capability specification covering statically identified, observed and deployment-reachable capabilities; approval MUST resolve discrepancies against it and preserve the original publisher declarations.</t>
      </section>
      <section anchor="scanning">
        <name>Automated scanning</name>
        <t>At Levels 2 and 3, at least one static analysis and one runtime analysis MUST be performed. Scanning MUST occur at intake and again at each update. Static analysis examines content without executing it. Runtime analysis executes the skill and its scripts in an instrumented environment and records process execution, file access, network connections and tool calls for comparison under Section 5.4; it MAY be performed as part of the isolation trial in Section 5.6. Analyses that call themselves behavioral but do not execute the skill, and language-model review, count as static evidence only. Telemetry that the agent harness reports about itself is useful but is not independent runtime evidence; at least one observation point SHOULD lie outside the harness (for example an API-level proxy or operating-system monitoring in the isolation environment). Scanner output is evidence for the human decision, not a replacement for it. The consuming organization SHOULD NOT rely on a single scanner.</t>
        <t>Informative note: observation points for runtime analysis and logging (Sections 5.5, 5.6 and 6.3) fall into three classes: harness telemetry (for example OpenTelemetry events of the agent runtime), API-level proxies or gateways that record requests and responses, and operating-system monitoring such as eBPF- or audit-based tools inside the isolation environment.</t>
        <t>Log sinks are implementation choices. Where tamper-evident logging is required, the consuming organization MUST demonstrate alteration, deletion and truncation detection for the chosen logging configuration.</t>
      </section>
      <section anchor="isolation">
        <name>Isolation trial</name>
        <t>At Levels 2 and 3, the skill MUST be executed first in an isolated environment with network access denied by default, no access to real credentials, and a disposable file system. Network access MAY be opened per destination, with justification. The trial MUST prevent access to host mounts, control sockets, privileged interfaces and production services, and MUST bound resource consumption. Its record MUST identify test inputs, exercised paths, denied-operation tests, instrumentation gaps and unexplained behavior; unexplained behavior or failed containment MUST prevent release.</t>
      </section>
      <section anchor="release">
        <name>Release</name>
        <t>The approver MUST issue a release record for the exact pinned version. Without a release record, the skill MUST NOT be active in production. The release record MUST bind the artifact digest to the model and runtime versions, tool configuration, permission policy and execution environment evaluated; a change to these bindings MUST trigger impact assessment and re-review of affected controls. Approval conditions MUST be machine-enforced where applicable, and an unmet condition MUST prevent activation. The release record, manifest, approved digests and enforcement policy MUST be authenticated and protected against modification by the skill and the executing agent, and activation MUST verify their binding and authorization before using them as trusted inputs. The release record MUST identify responsible roles and reference evidence for every applicable requirement, including justified departures from a SHOULD. Activation MUST verify that approval has not expired and that all required reviews remain current. At approval expiry or a mandatory review deadline, further affected execution MUST stop until renewed approval is issued.</t>
      </section>
    </section>
    <section anchor="operations">
      <name>Operations</name>
      <section anchor="updates">
        <name>Updates</name>
        <t>Updates MUST NOT be applied automatically. Each update MUST be reviewed as a difference against the approved version and MUST trigger re-review under Section 4.6. Each update MUST have authenticated provenance or independently verified source ownership; signer changes require explicit approval, and rollback to a previously rejected or revoked digest MUST be denied. The owner MUST monitor relevant advisories and record a remediation deadline or withdrawal decision.</t>
      </section>
      <section anchor="inventory">
        <name>Inventory</name>
        <t>The organization MUST keep an inventory of all skills in use, including every directory from which an agent may load skills, with owner, level, pinned hash, release date and review date.</t>
      </section>
      <section anchor="logging">
        <name>Logging</name>
        <t>Skill activations and tool calls SHOULD be logged at Level 2 and MUST be logged at Level 3, including file access, shell commands, network connections and writes to memory. Log records at Level 3 MUST be tamper-evident. Records MUST identify skill digest, session, timestamp, operation, authorization decision and result. Level 3 logs MUST allow detection of alteration, deletion and truncation by the executing skill or agent, verified outside their write authority; sensitive values MUST be redacted or access-controlled, and retention, access and logging-failure behavior MUST be documented. Access control does not permit recording credentials prohibited by Section 4.5. A Level 3 operation MUST NOT execute until its authorization and initiation have been durably recorded outside agent write authority. Failure to record its outcome MUST suspend further affected operations pending reconciliation.</t>
      </section>
      <section anchor="revocation">
        <name>Revocation</name>
        <t>Revocation MUST prevent new loads and further actions by affected active sessions. Each deployment MUST enforce a documented maximum revocation latency. A deployment MAY authorize offline execution using an authenticated cached revocation state only within an explicitly approved validity interval. That interval MUST NOT permit the deployment to exceed its maximum revocation latency. Missing, expired or unverifiable cached state MUST prevent new execution. On expiry, affected active execution MUST stop. Revocation checks and failures MUST be logged. The maximum latency runs from authorized revocation issuance to enforcement; at enforcement, affected contexts, queued operations and delegated authorizations MUST be invalidated. Every release MUST define approval expiry and maximum offline validity, and neither may extend beyond an outstanding review deadline.</t>
      </section>
    </section>
    <section anchor="incident-handling">
      <name>Incident Handling</name>
      <t>On suspicion of a malicious skill, the organization MUST promptly contain affected execution and preserve available evidence without delaying containment. It MUST identify potentially exposed credentials and sessions, revoke or rotate them according to assessed exposure, examine affected hosts, scheduled jobs, configuration, memory and downstream agents for persistence, and review other skills from the same publisher. Scope, uncertainty and recovery actions MUST be recorded. The incident SHOULD be reported to the publisher and, where available, the registry operator.</t>
    </section>
    <section anchor="interoperability">
      <name>Interoperability</name>
      <t>This document is intended to compose with bill-of-materials formats (CycloneDX <xref target="CYCLONEDX"/>, standardized as ECMA-424; SPDX 3 with its AI profile <xref target="SPDX"/>), publisher signatures and attestations, signed operations and tamper-evident audit trails, and agent discovery. Where such mechanisms exist, they SHOULD be used for provenance (Section 5.1), integrity (Section 5.2) and logging (Section 6.3). They do not replace content inspection (Section 5.3) or capability comparison (Section 5.4). Porting a skill to another platform MUST trigger revalidation of permission, signature, isolation and review-level semantics on the destination platform. Unsupported security properties MUST NOT be silently discarded, and numeric risk levels MUST NOT be translated without an explicit semantic mapping.</t>
      <t>This document is not a mapping to risk-management or management-system frameworks such as the NIST AI Risk Management Framework <xref target="NIST-AI-100-1"/> with its Generative AI Profile <xref target="NIST-AI-600-1"/>, or ISO/IEC 42001 <xref target="ISO42001"/>; no clause mapping is made.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>No scanner finds everything. Adversarial research shows that optimized instructions raise attack success substantially <xref target="JIA"/> <xref target="HAO"/> and that obfuscation defeats simple filters. Human reviewers are fallible, fatigued and susceptible to persuasive instructions. Provenance controls establish who published a skill, not whether its content is safe. The combination of human review, scanning and isolation reduces but does not eliminate risk. This procedure is itself an attack target: a compromised reviewer tool or release record process undermines it.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="normative">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="informative">
        <name>Informative References</name>
        <reference anchor="OWASP-AST10" target="https://owasp.org/www-project-agentic-skills-top-10/">
          <front>
            <title>OWASP Agentic Skills Top 10 (AST10), incubator project, version 1.0, 2026 edition, CC BY-SA 4.0</title>
            <author><organization>OWASP</organization></author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SNYK" target="https://snyk.io/blog/toxicskills-malicious-ai-agent-skills-clawhub">
          <front>
            <title>ToxicSkills: Malicious AI Agent Skills in ClawHub</title>
            <author><organization>Snyk</organization></author>
            <date year="2026" month="February" day="5"/>
          </front>
        </reference>
        <reference anchor="SKILLOCK" target="https://dev.to/skillock/we-scanned-17000-claude-code-skills-39-run-shell-commands-only-4-say-so-up-front-5b7e">
          <front>
            <title>We scanned 17,000 Claude Code skills</title>
            <author><organization>skil-lock</organization></author>
            <date year="2026" month="June" day="10"/>
          </front>
          <refcontent>dev.to</refcontent>
        </reference>
        <reference anchor="CHEN" target="https://arxiv.org/abs/2604.03070v2">
          <front>
            <title>How Your Credentials Are Leaked by LLM Agent Skills: An Empirical Study</title>
            <author initials="Z." surname="Chen" fullname="Zhihao Chen"/>
            <author initials="Y." surname="Zhang" fullname="Ying Zhang"/>
            <author initials="Y." surname="Liu" fullname="Yi Liu"/>
            <author initials="G." surname="Deng" fullname="Gelei Deng"/>
            <author initials="Y." surname="Li" fullname="Yuekang Li"/>
            <author initials="Y." surname="Zhang" fullname="Yanjun Zhang"/>
            <author initials="J." surname="Ning" fullname="Jianting Ning"/>
            <author initials="L. Y." surname="Zhang" fullname="Leo Yu Zhang"/>
            <author initials="L." surname="Ma" fullname="Lei Ma"/>
            <author initials="Z." surname="Li" fullname="Zhiqiang Li"/>
            <date year="2026" month="June" day="19"/>
          </front>
          <seriesInfo name="arXiv" value="2604.03070 (v2)"/>
        </reference>
        <reference anchor="JIA" target="https://arxiv.org/abs/2602.14211v3">
          <front>
            <title>SkillJect: Effectively Automating Skill-Based Prompt Injection for Skill-Enabled Agents</title>
            <author initials="X." surname="Jia" fullname="Xiaojun Jia"/>
            <author initials="J." surname="Liao" fullname="Jie Liao"/>
            <author initials="S." surname="Qin" fullname="Simeng Qin"/>
            <author initials="J." surname="Gu" fullname="Jindong Gu"/>
            <author initials="W." surname="Ren" fullname="Wenqi Ren"/>
            <author initials="X." surname="Cao" fullname="Xiaochun Cao"/>
            <author initials="Y." surname="Liu" fullname="Yang Liu"/>
            <author initials="P." surname="Torr" fullname="Philip Torr"/>
            <date year="2026" month="June" day="16"/>
          </front>
          <seriesInfo name="arXiv" value="2602.14211 (v3)"/>
        </reference>
        <reference anchor="HAO" target="https://arxiv.org/abs/2606.07943v3">
          <front>
            <title>One Skill, Two Masters: Serving Users and Attackers through Skill Injection</title>
            <author initials="H." surname="Hao" fullname="Haochang Hao"/>
            <author initials="D." surname="Min" fullname="Dehai Min"/>
            <author initials="Z." surname="Zhang" fullname="Zhifang Zhang"/>
            <author initials="Y." surname="Zhang" fullname="Yunbei Zhang"/>
            <author initials="M." surname="Xu" fullname="Miao Xu"/>
            <author initials="Y." surname="Ge" fullname="Yingqiang Ge"/>
            <author initials="P. S." surname="Yu" fullname="Philip S. Yu"/>
            <author initials="L." surname="Cheng" fullname="Lu Cheng"/>
            <date year="2026" month="October" day="13"/>
          </front>
          <seriesInfo name="arXiv" value="2606.07943 (v3)"/>
        </reference>
        <reference anchor="VT" target="https://blog.virustotal.com/2026/10/how-some-malicious-ai-skills-hide.html">
          <front>
            <title>How Some Malicious AI Skills Hide Instructions from Reviewers</title>
            <author initials="B." surname="Quintero" fullname="Bernardo Quintero"/>
            <date year="2026" month="October" day="21"/>
          </front>
          <refcontent>VirusTotal Blog</refcontent>
        </reference>
        <reference anchor="SKILLSPECTOR-169" target="https://github.com/NVIDIA/SkillSpector/issues/169">
          <front>
            <title>NVIDIA SkillSpector, issue 169</title>
            <author><organization>NVIDIA</organization></author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SKILLSPECTOR-39" target="https://github.com/NVIDIA/SkillSpector/issues/39">
          <front>
            <title>NVIDIA SkillSpector, issue 39</title>
            <author><organization>NVIDIA</organization></author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="CSA" target="https://labs.cloudsecurityalliance.org/research/csa-research-note-unicode-instruction-injection-ai-skills-20/">
          <front>
            <title>Hidden Unicode Instruction Injection in AI Agent Skills</title>
            <author><organization>Cloud Security Alliance AI Safety Initiative</organization></author>
            <date year="2026" month="March" day="10"/>
          </front>
          <refcontent>research note</refcontent>
        </reference>
        <reference anchor="TROJAN" target="https://www.usenix.org/conference/usenixsecurity23/presentation/boucher">
          <front>
            <title>Trojan Source: Invisible Vulnerabilities</title>
            <author initials="N." surname="Boucher" fullname="Nicholas Boucher"/>
            <author initials="R." surname="Anderson" fullname="Ross Anderson"/>
            <date year="2023"/>
          </front>
          <refcontent>USENIX Security 2023, CVE-2021-42574</refcontent>
        </reference>
        <reference anchor="I-D.ni-a2a-ai-agent-security-requirements" target="https://datatracker.ietf.org/doc/html/draft-ni-a2a-ai-agent-security-requirements-02">
          <front>
            <title>Security Requirements for AI Agents</title>
            <author initials="Y." surname="Ni" fullname="Yuan Ni"/>
            <author initials="C. P." surname="Liu" fullname="Chunchi Peter Liu"/>
            <author initials="Q." surname="Gao" fullname="Qiangzhou Gao"/>
            <author initials="Z." surname="Li" fullname="Zhenbin Li"/>
            <author initials="Y." surname="Xu" fullname="Yuna Xu"/>
            <date year="2026" month="October" day="21"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ni-a2a-ai-agent-security-requirements-02"/>
        </reference>
        <reference anchor="I-D.sweeney-wimse-credential-delegation" target="https://datatracker.ietf.org/doc/html/draft-sweeney-wimse-credential-delegation-01">
          <front>
            <title>Credential Delegation Protocol for AI Agents in Multi-System Environments</title>
            <author initials="K." surname="Sweeney" fullname="Kieran Sweeney"/>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sweeney-wimse-credential-delegation-01"/>
        </reference>
        <reference anchor="I-D.mcguinness-oauth-ai-agent-instance" target="https://datatracker.ietf.org/doc/html/draft-mcguinness-oauth-ai-agent-instance-00">
          <front>
            <title>OAuth 2.0 AI Agent Instance Profile</title>
            <author initials="K." surname="McGuinness" fullname="Karl McGuinness"/>
            <date year="2026" month="July" day="4"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-ai-agent-instance-00"/>
        </reference>
        <reference anchor="I-D.liu-ai-agent-authorization-integration" target="https://datatracker.ietf.org/doc/html/draft-liu-ai-agent-authorization-integration-00">
          <front>
            <title>AI Agent Authorization Integration Framework</title>
            <author initials="D." surname="Liu" fullname="Dapeng Liu"/>
            <author initials="J." surname="Zhu" fullname="Judy Zhu"/>
            <author initials="S." surname="Krishnan" fullname="Suresh Krishnan"/>
            <author initials="A." surname="Parecki" fullname="Aaron Parecki"/>
            <author initials="H." surname="Xue" fullname="Hui Xue"/>
            <date year="2026" month="July" day="6"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-ai-agent-authorization-integration-00"/>
        </reference>
        <reference anchor="I-D.cui-ai-agent-discovery-invocation" target="https://datatracker.ietf.org/doc/html/draft-cui-ai-agent-discovery-invocation-02">
          <front>
            <title>AI Agent Discovery and Invocation Protocol</title>
            <author initials="Y." surname="Cui" fullname="Yong Cui"/>
            <author initials="Y." surname="Chao" fullname="Yihan Chao"/>
            <author initials="C." surname="Du" fullname="Chenguang Du"/>
            <date year="2026" month="July"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-cui-ai-agent-discovery-invocation-02"/>
        </reference>
        <reference anchor="CYCLONEDX" target="https://cyclonedx.org/specification/overview/">
          <front>
            <title>CycloneDX 1.7 Specification Overview (ECMA-424)</title>
            <author><organization>OWASP CycloneDX and Ecma TC54</organization></author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SPDX" target="https://spdx.github.io/spdx-spec/v3.0.1/model/AI/AI/">
          <front>
            <title>SPDX 3.0.1, AI profile</title>
            <author><organization>SPDX</organization></author>
            <date year="2026"/>
          </front>
        </reference>
        <!-- ISO/IEC 42001 ist kostenpflichtig und wurde nicht gelesen, es gibt kein Clause-Mapping. -->
        <reference anchor="NIST-AI-100-1" target="https://www.nist.gov/itl/ai-risk-management-framework">
          <front>
            <title>Artificial Intelligence Risk Management Framework (AI RMF 1.0), NIST AI 100-1</title>
            <author><organization>NIST</organization></author>
            <date year="2023" month="January" day="26"/>
          </front>
        </reference>
        <reference anchor="NIST-AI-600-1" target="https://www.nist.gov/itl/ai-risk-management-framework">
          <front>
            <title>Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile, NIST AI 600-1</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="July" day="26"/>
          </front>
        </reference>
        <reference anchor="ISO42001" target="https://www.iso.org/standard/42001">
          <front>
            <title>ISO/IEC 42001:2023, Information technology - Artificial intelligence - Management system (edition 1, 2023-12, 51 pages)</title>
            <author><organization>ISO/IEC JTC 1/SC 42</organization></author>
            <date year="2023" month="December"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="annex-a">
      <name>One-page checklist</name>
      <ol spacing="normal" type="1">
        <li>Source and publisher identified and recorded.</li>
        <li>Owner named.</li>
        <li>Full directory retrieved; raw text read.</li>
        <li>Hidden comments, zero-width, Unicode tag and bidirectional characters checked.</li>
        <li>Observed capabilities listed and compared with declared ones.</li>
        <li>Review level assigned (0 to 3); unclear means Level 0.</li>
        <li>Content hash pinned, including dependencies.</li>
        <li>Static and runtime analysis done (Levels 2 and 3).</li>
        <li>Isolated trial run done, network denied by default (Levels 2 and 3).</li>
        <li>Independent approver recorded (Level 3).</li>
        <li>Release record issued for the exact pinned version.</li>
        <li>Skill entered in inventory; logging active; revocation path known.</li>
      </ol>
    </section>
    <section anchor="annex-b">
      <name>Release record template</name>
      <ul spacing="normal">
        <li>Skill name, publisher and source:</li>
        <li>Provenance / signature verification status (or alternative provenance method):</li>
        <li>Pinned digest, algorithm, manifest and deployment profile; bound model, runtime, tool configuration, environment and working-context inputs:</li>
        <li>Review level:</li>
        <li>Owner / Reviewer / Approver:</li>
        <li>Date of review:</li>
        <li>Observed capabilities (commands, network, files, tools):</li>
        <li>Differences from declared capabilities and their resolution:</li>
        <li>Scanners used and results:</li>
        <li>Isolation trial result:</li>
        <li>Decision (approved, approved with conditions, blocked):</li>
        <li>Conditions (machine-enforced where applicable), justified SHOULD departures, approval expiry, maximum offline validity and review due date:</li>
      </ul>
    </section>
    <section anchor="annex-c">
      <name>Mapping to OWASP AST10 (draft)</name>
      <t>This is a thematic cross-reference, not a claim of complete mitigation or OWASP conformance. It follows the AST10 project text <xref target="OWASP-AST10"/> (v1.0, 2026 edition) as read on 29 October 2026. The source snapshot is commit d6f7d7d0de314f52a83a85d1828e06ab096e595c of OWASP/www-project-agentic-skills-top-10.</t>
      <ul spacing="normal">
        <li>AST01 Malicious Skills: Sections 4.2, 5.3, 5.5.</li>
        <li>AST02 Supply Chain Compromise: Sections 5.1, 5.2, 8.</li>
        <li>AST03 Over-Privileged Skills: Sections 4.1, 4.4 and 5.4; production permission enforcement is required (Section 4.4).</li>
        <li>AST04 Insecure Metadata: Sections 5.3 and 5.4; parser safety and semantic validation are separate requirements.</li>
        <li>AST05 Untrusted External Instructions: Sections 5.2 to 5.4; coverage depends on enforcing the external-instruction boundary.</li>
        <li>AST06 Weak Isolation: Sections 4.4 and 5.6; an intake trial alone does not provide production isolation.</li>
        <li>AST07 Update Drift: Sections 5.2, 6.1.</li>
        <li>AST08 Poor Scanning: Section 5.5.</li>
        <li>AST09 No Governance: Sections 4, 6.2, 6.3, 6.4.</li>
        <li>AST10 Cross-Platform Reuse: Sections 1.5 and 8; destination-platform revalidation.</li>
      </ul>
    </section>
  </back>
</rfc>
