# Platform 1EdTech Agent Install

Install the whole `pack/` folder from the canonical skill-pack URL. Do not install only `SKILL.md`, because the references carry the runnable workflows and contract map.

## Codex

Place this hosted folder under the local Codex skills root:

```text
$CODEX_HOME/skills/timeback-platform-1edtech/
  SKILL.md
  references/workflows.md
  references/contract-map.md
  references/agent-install.md
  agents/openai.yaml
  checks/verify-skill-pack.mjs
  skill-pack.json
```

If `CODEX_HOME` is not set, use the Codex home shown by the runtime. In this workspace that convention is `~/.codex/skills/timeback-platform-1edtech/`.

Copy-paste install from the canonical URL:

```sh
export SKILL_PACK_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/platform/1edtech/skill_pack"
export SKILL_DIR="${CODEX_HOME:-$HOME/.codex}/skills/timeback-platform-1edtech"
mkdir -p "$SKILL_DIR/references" "$SKILL_DIR/agents" "$SKILL_DIR/checks"
curl -fsSL "$SKILL_PACK_URL/pack/SKILL.md" -o "$SKILL_DIR/SKILL.md"
curl -fsSL "$SKILL_PACK_URL/pack/references/workflows.md" -o "$SKILL_DIR/references/workflows.md"
curl -fsSL "$SKILL_PACK_URL/pack/references/contract-map.md" -o "$SKILL_DIR/references/contract-map.md"
curl -fsSL "$SKILL_PACK_URL/pack/references/agent-install.md" -o "$SKILL_DIR/references/agent-install.md"
curl -fsSL "$SKILL_PACK_URL/pack/agents/openai.yaml" -o "$SKILL_DIR/agents/openai.yaml"
curl -fsSL "$SKILL_PACK_URL/pack/checks/verify-skill-pack.mjs" -o "$SKILL_DIR/checks/verify-skill-pack.mjs"
curl -fsSL "$SKILL_PACK_URL/skill-pack.json" -o "$SKILL_DIR/skill-pack.json"
node "$SKILL_DIR/checks/verify-skill-pack.mjs"
```

Use the trigger phrase `Use $timeback-platform-1edtech` when asking Codex to build an app, report, QA probe, or integration deliverable from the live Platform surface.

## Claude Code

Install the same folder as a project or user skill named `timeback-platform-1edtech`.

Common layouts:

```text
.claude/skills/timeback-platform-1edtech/
~/.claude/skills/timeback-platform-1edtech/
```

Project-local copy-paste install:

```sh
export SKILL_PACK_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/platform/1edtech/skill_pack"
export SKILL_DIR=".claude/skills/timeback-platform-1edtech"
mkdir -p "$SKILL_DIR/references" "$SKILL_DIR/agents" "$SKILL_DIR/checks"
curl -fsSL "$SKILL_PACK_URL/pack/SKILL.md" -o "$SKILL_DIR/SKILL.md"
curl -fsSL "$SKILL_PACK_URL/pack/references/workflows.md" -o "$SKILL_DIR/references/workflows.md"
curl -fsSL "$SKILL_PACK_URL/pack/references/contract-map.md" -o "$SKILL_DIR/references/contract-map.md"
curl -fsSL "$SKILL_PACK_URL/pack/references/agent-install.md" -o "$SKILL_DIR/references/agent-install.md"
curl -fsSL "$SKILL_PACK_URL/pack/agents/openai.yaml" -o "$SKILL_DIR/agents/openai.yaml"
curl -fsSL "$SKILL_PACK_URL/pack/checks/verify-skill-pack.mjs" -o "$SKILL_DIR/checks/verify-skill-pack.mjs"
curl -fsSL "$SKILL_PACK_URL/skill-pack.json" -o "$SKILL_DIR/skill-pack.json"
node "$SKILL_DIR/checks/verify-skill-pack.mjs"
```

Then ask Claude Code to load the skill before making API claims:

```text
Use the timeback-platform-1edtech skill. Mint a demo token, list modules, create a tenant, and write an audit/idempotency report with source links.
```

## Perplexity Comet

Comet-style agents may not expose a filesystem skill directory. In that case, pin this canonical page as the project reference and attach these files as project instructions:

- `SKILL.md`
- `references/workflows.md`
- `references/contract-map.md`
- `references/agent-install.md`
- `checks/verify-skill-pack.mjs`
- `skill-pack.json`

The agent must still obey the same leak check: no copied platform rules, no local tenant store, no JWT parsing, and no idempotency replay logic.

## OpenAI Agent Metadata

`agents/openai.yaml` is metadata for skill-list UIs. It is not a contract by itself. Load it only after `SKILL.md`; the skill's real authority remains the hosted customer website, data dictionary, and live API responses.

## Credential Handoff

Demo lane:

```sh
export PLATFORM_BASE_URL="${PLATFORM_BASE_URL:-https://platform3-andymontgomery-9773s-projects.vercel.app/platform/1edtech/implementation/api}"
export PLATFORM_JWT="$(curl -fsS -X POST "$PLATFORM_BASE_URL/dev/mint?tenantId=demo" | jq -r .token)"
```

Real-tenant lane:

1. During onboarding, TimeBack creates the tenant and issues a scoped operator-minted JWT for that tenant.
2. Store it in the agent runtime as `PLATFORM_JWT` or `PLATFORM_REVIEWER_JWT`.
3. Store the tenant id as `PLATFORM_TENANT_ID`.
4. Never use `/dev/mint` outside `tenantId=demo`.
5. Never print, commit, or embed the real JWT or decoded claims in a public artifact.

Internal loop reviewers use the same real-tenant lane: the driver mints `PLATFORM_REVIEWER_JWT` via `loop/scripts/mint_jwt.mjs` and writes it to `.env.local`. External customers receive their token out-of-band from TimeBack onboarding.

## Verify The Install

Run the proof check after installing:

```sh
node "$SKILL_DIR/checks/verify-skill-pack.mjs"
```

It should print JSON with `"passed": true`. The script calls the live Platform surface and compares create/read/audit/idempotency responses from the same run. It does not include saved release-state answers, schema tables, JWT parsing, or idempotency logic.
