pack/.Install
Install the same hosted files into the skill directory your agent reads. These commands create the full pack: SKILL.md, references, agent adapters, verifier, and evidence directory. They do not download data tables.
Claude Code
BASE="https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/skill_pack" DEST="$HOME/.claude/skills/timeback-analytics-alpha" mkdir -p "$DEST/references" "$DEST/checks" "$DEST/agents" "$DEST/evidence" curl -fsS "$BASE/pack/SKILL.md" -o "$DEST/SKILL.md" for file in canonical-surface report-recipes worked-example runnable-check leak-check source-shaped-import response-samples; do curl -fsS "$BASE/pack/references/$file.md" -o "$DEST/references/$file.md" done curl -fsS "$BASE/pack/checks/expected.json" -o "$DEST/checks/expected.json" curl -fsS "$BASE/pack/checks/verify-skill-pack.mjs" -o "$DEST/checks/verify-skill-pack.mjs" for file in openai.yaml claude-code.md codex-cli.md perplexity-computer.md; do curl -fsS "$BASE/pack/agents/$file" -o "$DEST/agents/$file" done (cd "$DEST" && ANALYTICS_BASE_URL=https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/implementation/api node checks/verify-skill-pack.mjs --write-evidence)
Codex CLI
BASE="https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/skill_pack" DEST="$HOME/.codex/skills/timeback-analytics-alpha" mkdir -p "$DEST/references" "$DEST/checks" "$DEST/agents" "$DEST/evidence" curl -fsS "$BASE/pack/SKILL.md" -o "$DEST/SKILL.md" for file in canonical-surface report-recipes worked-example runnable-check leak-check source-shaped-import response-samples; do curl -fsS "$BASE/pack/references/$file.md" -o "$DEST/references/$file.md" done curl -fsS "$BASE/pack/checks/expected.json" -o "$DEST/checks/expected.json" curl -fsS "$BASE/pack/checks/verify-skill-pack.mjs" -o "$DEST/checks/verify-skill-pack.mjs" for file in openai.yaml claude-code.md codex-cli.md perplexity-computer.md; do curl -fsS "$BASE/pack/agents/$file" -o "$DEST/agents/$file" done (cd "$DEST" && ANALYTICS_BASE_URL=https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/implementation/api node checks/verify-skill-pack.mjs --write-evidence)
Credential path: the verifier mints a demo token automatically. For real or reviewer tenants, set ANALYTICS_BASE_URL plus ANALYTICS_TOKEN or ANALYTICS_REVIEWER_JWT; never paste tokens into a prompt transcript.
The canonical page is served without a trailing slash. All links here are root-absolute or fully absolute so they resolve correctly after deployment.
Copy-Runnable Worked Example
This command builds Ada's six Learning Report panels from the live Analytics API. It selects the published demo rows by returned Analytics row id, then renders fields returned by the surface.
For this Ada fixture, the MAP row is growthWindow=winter_to_winter. The optional source-import proof uses a separate student/date and may accumulate repeated demo proof imports; Ada's Learning Report XP panel is a different row.
ANALYTICS_BASE_URL=https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/implementation/api node --input-type=module - <<'NODE'
const baseUrl = process.env.ANALYTICS_BASE_URL;
const mint = await fetch(baseUrl + "/dev/mint?tenantId=demo", { method: "POST" });
const { token, tenantId = "demo" } = await mint.json();
const headers = { authorization: "Bearer " + token, "x-timeback-tenant": tenantId };
const endpoints = {
timeCommitment: {
path: "/alpha/analytics/v1/school-day-minutes?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&startDate=2026-05-01&endDate=2026-06-01&limit=100",
id: "school_day_minutes_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9_math_may"
},
xp: {
path: "/alpha/analytics/v1/xp-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&windowKind=term&startDate=2026-01-01&endDate=2026-06-01&limit=100",
id: "xp_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9_term"
},
accuracy: {
path: "/alpha/analytics/v1/accuracy-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&windowKind=term&startDate=2026-01-01&endDate=2026-06-01&limit=100",
id: "accuracy_rollup_canonical_89ce4e22de47b487fc4150d7"
},
mastery: {
path: "/alpha/analytics/v1/mastery-deltas?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&kcId=kc_math_fraction_equivalence_04&stateDimension=durable_mastery&startDate=2026-05-01&endDate=2026-06-01&limit=100",
id: "mastery_delta_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
},
map: {
path: "/alpha/analytics/v1/map-growth-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&termId=term_2026_winter&growthWindow=winter_to_winter&normsSet=2025",
id: "map_growth_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
},
completion: {
path: "/alpha/analytics/v1/completion-rollups?studentId=student_01HT7G3YZV7QB5N4YKQ1K0Z9A9&subjectId=math&completionScope=course&scopeId=course_math_grade_4_powerpath&startDate=2026-01-01&endDate=2026-06-01",
id: "completion_rollup_demo_student_01ht7g3yzv7qb5n4ykq1k0z9a9"
}
};
async function pinnedRow(name, config) {
const path = config.path;
const response = await fetch(baseUrl + path.replaceAll("&", "&"), { headers });
const text = await response.text();
if (!response.ok) throw new Error(path + " failed " + response.status + ": " + text);
const payload = JSON.parse(text);
if (!Array.isArray(payload.data) || payload.data.length === 0) throw new Error(path + " returned no rows");
const row = payload.data.find((item) => item.id === config.id);
if (!row) throw new Error(name + " did not include pinned demo row " + config.id);
return row;
}
const panels = {};
for (const [name, config] of Object.entries(endpoints)) panels[name] = await pinnedRow(name, config);
console.log(JSON.stringify({
studentId: "student_01HT7G3YZV7QB5N4YKQ1K0Z9A9",
subjectId: "math",
source: "Analytics Alpha surface",
computedLocally: false,
panels
}, null, 2));
NODE
Then run the verifier to compare the same live surface against the live convergence answer key: node checks/verify-skill-pack.mjs --write-evidence.
What It Regenerates
Core call sequence
GET /alpha/analytics/v1/school-day-minutes GET /alpha/analytics/v1/xp-rollups GET /alpha/analytics/v1/accuracy-rollups GET /alpha/analytics/v1/mastery-deltas GET /alpha/analytics/v1/map-growth-rollups GET /alpha/analytics/v1/norms/rit GET /alpha/analytics/v1/norms/percentile GET /alpha/analytics/v1/rit-to-grade GET /alpha/analytics/v1/rit-to-grade/table GET /alpha/analytics/v1/r90 GET /alpha/analytics/v1/r90/table GET /alpha/analytics/v1/school-days-remaining GET /alpha/analytics/v1/grade-level-status GET /alpha/analytics/v1/completion-rollups
Verifier
The verifier mints demo credentials by default, calls the live Analytics implementation, fetches the approved integration convergence key, and optionally writes evidence. checks/expected.json supplies selectors, row ids, endpoint perimeter, and source-import proof config; it is not a local answer table for the Learning Report panels.
ANALYTICS_BASE_URL=https://platform3-andymontgomery-9773s-projects.vercel.app/analytics/alpha/implementation/api \ node pack/checks/verify-skill-pack.mjs --write-evidence
HTTP-only No database reads No client math
Read runnable-check.md · Verifier config · Latest verification evidence
Binary Leak Check
Any local calculation means the surface leaked.
- No active/inactive/waste classification outside Analytics.
- No school-day calendar or enrollment intersection outside Analytics.
- No XP award, penalty, repeat-discount, or reversal formula outside Analytics/Results.
- No mastery, decay, MAP norms/R90, Growth X, accuracy, remaining-school-day, or completion math in the pack.
- No raw Events, Results, Supabase, Postgres, private logs, or implementation source for user-facing work.
Pack Files
- pack/SKILL.md
- pack/references/canonical-surface.md
- pack/references/report-recipes.md
- pack/references/worked-example.md
- pack/references/runnable-check.md
- pack/references/leak-check.md
- pack/references/source-shaped-import.md
- pack/references/response-samples.md
- pack/checks/expected.json
- pack/checks/verify-skill-pack.mjs
- pack/agents/openai.yaml
- pack/agents/claude-code.md
- pack/agents/codex-cli.md
- pack/agents/perplexity-computer.md