Answer Alpha Schools academic questions (DRI lookups, policy questions, playbooks for "what do I do if X", document search) by calling the private Alpha Academic API. Use whenever someone references an Alpha subject (Math, Reading, Writing, Social Studies, Science, Language, Vocabulary, Fast Math), platform (Math Academy, Zearn, AlphaRead, AlphaWrite, Freckle, Lalilo, Membean, VocabLoco, DreamUp, Synthesis Tutor, etc.), policy (3-attempt cap, bracketing, hole filling, mastery threshold, custom plans, coaching), or asks "who owns X" / "where's Y doc" / "what do I do if Z".
How this skill is triggered — by the user, by Claude, or both
Slash command
/alpha-academic-remote:ask-alpha-academicThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill answers Alpha academic questions by calling a private HTTPS API. The knowledge base lives server-side — this plugin is a thin client, so it's safe to distribute publicly.
This skill answers Alpha academic questions by calling a private HTTPS API. The knowledge base lives server-side — this plugin is a thin client, so it's safe to distribute publicly.
Two environment variables must be set before the skill will work:
ALPHA_API_URL — the base URL of the Alpha Academic API (e.g. https://alpha-academic.up.railway.app). Tripti provides this.ALPHA_API_KEY — the personal API key issued to this teammate. Tripti provides this via secure channel (not in chat).If either is unset, stop and tell the user:
The Alpha Academic plugin needs two env vars set:
export ALPHA_API_URL="https://<your-api>.railway.app"export ALPHA_API_KEY="<your-key-from-tripti>"Put both in your~/.zshrcor~/.bashrc, reload your shell, and try again.
Run:
test -n "$ALPHA_API_URL" && test -n "$ALPHA_API_KEY" && echo OK || echo MISSING
If MISSING, show the user the instructions above and stop.
curl -sS -X POST "$ALPHA_API_URL/ask" \
-H "Content-Type: application/json" \
-H "X-Alpha-API-Key: $ALPHA_API_KEY" \
-d "$(jq -n --arg q "<user-question>" '{query:$q}')"
The response is JSON with matched_nodes (subjects/platforms/policies/people/decisions/systemic-issues — each with dri_name, dri_email, excerpt, body) and matched_documents (chat-shared files with filename, date, sender, drive_url).
curl -sS -H "X-Alpha-API-Key: $ALPHA_API_KEY" \
"$ALPHA_API_URL/dri/$(python3 -c 'import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1]))' <area>)"
Returns {area, dri_name, dri_email, node}.
curl -sS -G -H "X-Alpha-API-Key: $ALPHA_API_KEY" \
--data-urlencode "q=<search terms>" \
"$ALPHA_API_URL/documents/search"
Returns the top 20 matching files with Drive links.
When the user runs /alpha-academic-remote:feedback or says Claude got something wrong, POST:
curl -sS -X POST "$ALPHA_API_URL/feedback" \
-H "Content-Type: application/json" \
-H "X-Alpha-API-Key: $ALPHA_API_KEY" \
-d '{"kind":"correction","message":"<what they said>","reported_by":"<who>","claude_said":"<what Claude said>","source":"<source if known>"}'
curl -sS -X POST "$ALPHA_API_URL/decisions/pending" \
-H "Content-Type: application/json" \
-H "X-Alpha-API-Key: $ALPHA_API_KEY" \
-d '{"title":"...","context":"...","decision":"...","area":"...","source_of_authority":"..."}'
The decision goes to the server-side pending queue and Tripti routes it to the responsible DRI for approval.
Every answer must include:
matched_documents[*].content_excerpt when has_content=true — these are direct quotes from PDFs (playbooks, manuals, announcements) that the API has extracted text for. These are gold — the actual team policy text, not a paraphrase. Always prefer them.
b. From matched_nodes[*].excerpt or matched_nodes[*].body — the curated knowledge graph (subjects, platforms, policies).
c. Cite dates when the text includes them.dri_name / dri_email. If the top node has no DRI, fall back to the next node that does.matched_documents, show filename (shared date by sender) and the drive_url. Do NOT invent local paths — they don't exist for remote users.If content_excerpt is too short to answer fully and has_content=true, fetch the full text:
curl -sS -G -H "X-Alpha-API-Key: $ALPHA_API_KEY" \
--data-urlencode "path=<content_path>" \
"$ALPHA_API_URL/documents/content"
(The content_path isn't returned in the /ask response — you'd need to grep the manifest separately. Usually the excerpt is enough.)
If a matched document is a playbook, runbook, manual, or guide (filename hints: "Playbook", "Runbook", "Manual", "Guide", "Announcements"), render its content as a step-by-step checklist, not just a quote. Example:
The user asks "how do I proctor a test?" → the Mastery Test Proctoring Playbook is matched with
has_content=true. Parse the excerpt for numbered steps, before/during/after sections, rules, and present them as a skimmable checklist with emoji section headers (🔴 rules, ⏰ before, 🟢 during, 👀 observations, ✅ after).
Combine matched policy + systemic-issue nodes into step-by-step actions:
/alpha-academic-remote:feedback to flag it for Tripti."last_updated is >60 days old, prepend: ⚠ Source last updated [date] — verify with the DRI before acting.X-Alpha-API-Key request header, never in the rendered answer.Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub triptikhetan-max/alpha-public --plugin alpha-academic-remote