platform3 / caliper / 1edtech / skill_pack

TimeBack Caliper 1EdTech Skill Pack

Instructions-only AI skill for producing real Caliper apps, reports, and probes through the live platform surface. It makes an agent useful by teaching the credential path, exact API perimeter, worked surface-call proof, and binary leak check without carrying private Caliper logic.

Pack Contract

This deliverable is both a hosted canonical page and an installable skill directory. The pack itself has no scripts, no copied Caliper term tables, no schema parser, no normalizer, no hash implementation, and no business rules.

Instructions, not logic

The pack tells an agent how to call the surface and how to decide when to stop. It does not implement anything the Caliper API owns.

Grounded in canonical docs

Every workflow starts by opening the hosted customer website and data dictionary. Field meaning comes from those URLs.

Reproduces a real result

The worked example mints a demo token, writes an event envelope, reads the event projection, and reads the envelope projection through live API calls.

Installable Files

Install the pack/ directory as the skill. The hosted copy is exposed under the same canonical deliverable path so another agent can inspect it without repository access.

PathPurposeLoad rule
pack/SKILL.md Required skill manifest and core workflow. Loaded when the user asks for a Caliper 1EdTech app, report, probe, or deliverable.
pack/agents/openai.yaml UI metadata for skill lists and default invocation. Read by compatible agent runtimes.
references/canonical-surface.md Endpoint, credential, status, and deferred-behavior details. Read when endpoint or contract specifics are needed.
references/worked-example.md Runnable cURL demo that regenerates a Caliper activity receipt. Read before building proof apps, reports, or QA probes.
references/leak-check.md Binary no-leak checklist and stop conditions. Read before final output.

Ten-Minute Install

Claude Code installs filesystem skills under ~/.claude/skills/<skill-name>/SKILL.md. Codex uses ${CODEX_HOME:-~/.codex}/skills/<skill-name>/SKILL.md. Install the whole pack/ directory so the agent gets SKILL.md, OpenAI metadata, and the three references.

Restart the agent session after creating a new top-level skill directory if the runtime watches skill folders only at startup.
export BASE="https://platform3-andymontgomery-9773s-projects.vercel.app/caliper/1edtech/skill_pack"

# Claude Code
export SKILL_ROOT="$HOME/.claude/skills/timeback-caliper-1edtech"
mkdir -p "$SKILL_ROOT/agents" "$SKILL_ROOT/references"
curl -fsSL "$BASE/pack/SKILL.md" -o "$SKILL_ROOT/SKILL.md"
curl -fsSL "$BASE/pack/agents/openai.yaml" -o "$SKILL_ROOT/agents/openai.yaml"
curl -fsSL "$BASE/pack/references/canonical-surface.md" -o "$SKILL_ROOT/references/canonical-surface.md"
curl -fsSL "$BASE/pack/references/worked-example.md" -o "$SKILL_ROOT/references/worked-example.md"
curl -fsSL "$BASE/pack/references/leak-check.md" -o "$SKILL_ROOT/references/leak-check.md"
find "$SKILL_ROOT" -maxdepth 2 -type f | sort

# Codex
export SKILL_ROOT="${CODEX_HOME:-$HOME/.codex}/skills/timeback-caliper-1edtech"
mkdir -p "$SKILL_ROOT/agents" "$SKILL_ROOT/references"
curl -fsSL "$BASE/pack/SKILL.md" -o "$SKILL_ROOT/SKILL.md"
curl -fsSL "$BASE/pack/agents/openai.yaml" -o "$SKILL_ROOT/agents/openai.yaml"
curl -fsSL "$BASE/pack/references/canonical-surface.md" -o "$SKILL_ROOT/references/canonical-surface.md"
curl -fsSL "$BASE/pack/references/worked-example.md" -o "$SKILL_ROOT/references/worked-example.md"
curl -fsSL "$BASE/pack/references/leak-check.md" -o "$SKILL_ROOT/references/leak-check.md"
find "$SKILL_ROOT" -maxdepth 2 -type f | sort
First prompt after install: Use $timeback-caliper-1edtech with my CALIPER_BASE_URL, tenant id, and bearer token. Run the worked example's smallest live proof and report the POST status, envelope hash, event type, profile, action, envelope status, and canonical docs used.

Agent Runtime Paths

The same skill directory works across Claude Code, Codex, Claude API custom skills, and claude.ai upload flows. Credentials are still supplied at runtime; never bake tokens into the pack.

Claude Code

Copy pack/ to ~/.claude/skills/timeback-caliper-1edtech/. The required frontmatter fields are name and description, followed by the Markdown instructions and references.

Codex

Copy pack/ to ${CODEX_HOME:-~/.codex}/skills/timeback-caliper-1edtech/. The local agents/openai.yaml supplies display metadata; SKILL.md controls triggering.

claude.ai

Zip the contents of pack/ with SKILL.md at the archive root, then upload it through the product's skill upload flow. Do not upload a parent directory that hides SKILL.md one level down.

Claude API

Use the Anthropic Skills API pattern: create or reference a skill, pass its skill_id, and send the beta headers required for code execution, skills, and files. The pack stays instructions-only; the API call gives the model access to the files.

# API invocation shape, shown for install planning.
# Use your provider SDK or HTTP client; do not put Caliper tokens in the skill files.
ANTHROPIC_BETA="code-execution-2025-08-25,skills-2025-10-02,files-api-2025-04-14"

{
  "model": "claude-sonnet-4-5",
  "container": {
    "skills": [
      { "skill_id": "timeback-caliper-1edtech", "version": "latest" }
    ]
  },
  "tools": [
    { "type": "code_execution_20250825", "name": "code_execution" }
  ],
  "messages": [
    {
      "role": "user",
      "content": "Use timeback-caliper-1edtech with my CALIPER_BASE_URL, tenant id, and bearer token. Run the worked proof."
    }
  ]
}

SKILL.md Preview

The installed skill starts with trigger metadata, then forces the agent through canonical docs, credentials, live proof, and leak check. The full file is available at pack/SKILL.md.

---
name: timeback-caliper-1edtech
description: Use when building apps, reports, QA probes, or deliverables against the TimeBack platform3 Caliper 1EdTech surface. The skill teaches an agent to use the live Caliper Analytics 1.2 API, demo token minting, tenant headers, Sensor API envelope writes, and event/envelope read projections without re-implementing Caliper normalization, schema parsing, hashing, enumeration tables, persistence, or business rules.
---

# TimeBack Caliper 1EdTech

First actions:
1. Open the canonical customer website, data dictionary, and architecture.
2. Use CALIPER_BASE_URL or the canonical implementation API.
3. Mint demo credentials or use the operator-supplied bearer token.
4. Run references/worked-example.md.
5. Run references/leak-check.md before final output.

Live Surface Map

The pack is scoped to the approved Caliper 1EdTech surface. It does not broaden the API, and it does not use the older prior-workspace 202-with-body contract.

OperationRequestSuccess evidenceCanonical source
Demo mint POST /dev/mint?tenantId=00000000-0000-4000-8000-00000000ca12 200 JSON containing token, tenantId, and sensorIri. Customer endpoint docs
Envelope ingest POST /caliper/v1p2/events 204 No Content and caliper-envelope-hash response header. CITD-011
Event projection GET /caliper/v1p2/events?eventIri={eventIri} 200 JSON with event type, profile, action, event time, raw event, and event hash. caliper.event
Envelope projection GET /caliper/v1p2/envelopes?hash={hash} 200 JSON with envelope status, sensor IRI, send time, receipt time, and event summaries. caliper.envelope
No list/search endpoints ship on this surface. Agents must keep event IRIs and envelope hashes from their own workflow or from the user; they must not build discovery through private storage.

Worked Proof

The worked example regenerates a real activity receipt through surface calls only. On 2026-06-03 UTC it was re-verified against the approved live API: POST returned 204, the event projection returned AssessmentItemEvent / AssessmentProfile / Completed, and the envelope projection returned processed with one event.

Latest oracle: verified_at=2026-06-03T11:25:00Z, post_status=204, envelope_hash=sha256:65afa1c9636796a75b0815ebf46a108d0edcb9af0223fcb3d77bfe8e297dce82, event_iri=urn:uuid:282351c1-9356-404c-a392-aa54c90e2c44, event_type=AssessmentItemEvent, profile=AssessmentProfile, action=Completed, envelope_status=processed, event_count=1.
The example uses `jq`, `curl`, `uuidgen`, and temporary files as shell helpers. Those helpers parse credentials and display returned JSON; they do not implement Caliper validation, hashing, normalization, or persistence.
export CALIPER_BASE_URL="${CALIPER_BASE_URL:-https://platform3-andymontgomery-9773s-projects.vercel.app/caliper/1edtech/implementation/api}"
export DEMO_TENANT_ID="00000000-0000-4000-8000-00000000ca12"

DEMO_TOKEN_RESPONSE=$(curl -fsS -X POST "$CALIPER_BASE_URL/dev/mint?tenantId=$DEMO_TENANT_ID")
export TOKEN=$(printf '%s' "$DEMO_TOKEN_RESPONSE" | jq -r '.token')
export TENANT=$(printf '%s' "$DEMO_TOKEN_RESPONSE" | jq -r '.tenantId')
export SENSOR_IRI=$(printf '%s' "$DEMO_TOKEN_RESPONSE" | jq -r '.sensorIri')

# Then POST /caliper/v1p2/events, capture caliper-envelope-hash,
# GET /events?eventIri=..., and GET /envelopes?hash=...
# Full runnable version: pack/references/worked-example.md

Binary Leak Gate

The pack only passes if it makes the surface easier to use without replacing surface-owned capabilities. These are hard stop conditions for agents using the pack.

No copied Caliper enum tables as local validation logic.
No local profile inference, canonicalization, deduplication, or SHA-256 hash computation.
No direct database or implementation-source reads for user-facing workflows.
No local Caliper domain persistence outside browser UI state and recent handles.
No invented list, search, cursor, webhook, PATCH, DELETE, or certification behavior.
No raw learner payloads, bearer tokens, IP addresses, or user agents in public evidence.
If an app or report cannot be built without one of those failures, the correct output is a surface gap report, not a workaround.

Provenance and Benchmark

The pack was built from approved platform3 Caliper artifacts and the pinned prior workspace, then checked against the official Anthropic Agent Skills docs and Stripe's agent docs for installability, progressive disclosure, and SaaS-agent usefulness.

InputUse
Caliper architectureDecision axes, non-features, tenant/auth/error/idempotency commitments.
Caliper data dictionaryField meaning links and privacy-sensitive table boundaries.
Caliper customer websiteExecutable endpoint contract and quickstart credential flow.
Caliper implementation APILive demo verification of the worked surface-call example.
Caliper surface QCRelease-gate evidence that the surface is approved and live.
vendor/caliper-prior-workspace/Pinned Caliper 1.2 source bundle and prior workspace context; corrected where approved platform3 docs diverge.
Anthropic Agent Skills docsBenchmark for a skill directory with SKILL.md, discovery metadata, progressive disclosure, and references loaded on demand.
Stripe Agent ToolkitSecondary benchmark for official agent-facing API enablement around a SaaS surface.