> ## Documentation Index
> Fetch the complete documentation index at: https://glide-9da73dea.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Authoring an agent skill

> Partner-PR flow for adding a new agent skill at packages/skills/<id>/. SkillManifest schema, 4-tier policy presets, consent-disclosure guard.

Adding a new agent skill is the second flywheel beyond connectors. Skills sit on the agent platform's money-touching surface, so we ask for pre-PR alignment before you write code.

## Five-step flow

<Steps>
  <Step title="Open a `New skill` issue first">
    Use the [`new-skill` issue template](https://github.com/darshanbathija/axtior-neobank/issues/new?template=new-skill.yml). Include slug, runtimes, scopes, policy template, consent summary, and rationale.
  </Step>

  <Step title="Read `@glideco/skills-base`">
    The `SkillManifest` Zod schema is the source of truth for what a skill manifest must contain — slug, runtime compat, required scopes, policy template, consent summary, trust tier, publisher.

    Closed vocabularies (`SkillTrustTier`, `SkillRuntime`, `SkillCategory`, `SkillScope`) are CODEOWNERS-protected. Adding a new entry requires `@glideco/policy-engine` to understand the same vocabulary.
  </Step>

  <Step title="Scaffold the package">
    ```
    packages/skills/<id>/
    ├── package.json
    ├── tsconfig.json
    ├── icon.svg
    ├── README.md
    ├── src/
    │   ├── manifest.ts            // SkillManifest object
    │   ├── policy.ts              // policy-template + per-tier presets
    │   ├── index.ts               // re-exports
    │   └── __tests__/
    │       └── contract.test.ts
    ```

    Or use the CLI:

    ```bash theme={null}
    glide partner submit ./my-skill --type=skill
    ```

    The 4-tier policy preset pattern (every skill ships these):

    ```ts theme={null}
    export const POLICY_PRESETS = {
      supervise:  { perTxMaxUsdCents: 10_000, dailyCapUsdCents: 100_000, ... },
      rideAlong:  { perTxMaxUsdCents: 25_000, dailyCapUsdCents: 250_000, ... },
      trust:      { perTxMaxUsdCents: 50_000, dailyCapUsdCents: 500_000, ... }, // package default
      veteran:    { perTxMaxUsdCents: 100_000, dailyCapUsdCents: 1_000_000, ... },
    } as const satisfies Record<string, SkillPolicyTemplate>;
    ```

    Per-tier exposure must increase monotonically (`supervise < rideAlong < trust < veteran`). The contract test enforces this.
  </Step>

  <Step title="Write the contract test">
    Extend `SkillContractTestSuite` from `@glideco/skills-base`:

    ```ts theme={null}
    import { SkillContractTestSuite } from '@glideco/skills-base';
    import { manifest } from '../manifest';

    class MySkillSuite extends SkillContractTestSuite {
      readonly manifest = manifest;
    }
    ```

    The suite asserts:

    * Manifest validity vs `SkillManifest` v1.
    * Policy template internal consistency (`perTxMax ≤ dailyCap`; non-zero `velocityCap.maxCount`).
    * Scope sanity (no duplicates).
    * **Consent under-disclosure guard.** If `requiredScopes` includes a money-touching scope (`payments:initiate`, `cards:manage`, `x402:pay`), `consentSummary` MUST mention payments / money / cards / `$` / `usd`.
  </Step>

  <Step title="Author the consent flow copy honestly">
    Per the OSS plan §M5 prompt-injection review: a community-tier skill template that **under-discloses caps** OR **overrides displayed envelope behavior** is a security finding, not a feature.

    The contract test catches the obvious cases. Reviewers catch subtler ones during the verified-tier promotion review.

    Example consent summary that passes the under-disclosure guard:

    > "Claude reads your QuickBooks Online invoices and drafts USD payments to your existing vendors, capped at $2,500 per transaction and $10,000 per day. Each payment requires your explicit approval before broadcast."

    Compare to one that wouldn't pass:

    > "A friendly skill that helps you stay organized." *(no money words; under-discloses)*
  </Step>
</Steps>

## Reading list

* [Agent skills catalog](/oss/skills/index) — every skill currently in the repo.
* [Money-safety contracts](/oss/concepts/money-safety-contracts) — F-rules every skill inherits.
* [Threat model](/oss/security/threat-model) — T10 (malicious skill consent under-disclosure).
