Skip to content

Skills Academy Integration

Skills Academy Integration

The Skills Academy is part of the main TEEI website (theeducationalequalityinstitute.org/skills-academy/) and provides DataCamp, eCornell, Splunk, and Automation Anywhere courses to TEEI programme participants. Learners are authenticated via a volunteer_session cookie.

How it differs from the main website

The Skills Academy is not a separate Astro project — it lives within the main site. The difference is auth: learners are logged in with a volunteer_session cookie, which means they should receive volunteer-level knowledge content (more than public, but not manager-level).

AspectMain WebsiteSkills Academy
URL base//skills-academy/
AuthNone (public)volunteer_session cookie
Rolepublicvolunteer
Platform valuewebsiteskills-academy

Prerequisites

  • @teei/chat-widget installed
  • Main website already has the widget installed (see Main Website integration)
  • volunteer_session cookie set when learner is authenticated
  • RAG Worker running at https://knowledge-api.theeducationalequalityinstitute.org

Integration approach

The Skills Academy pages use the main site’s base layout. The cleanest integration is to detect the Skills Academy route and swap the platform and role — without requiring a separate layout.

Option A — Route-based detection in BaseLayout.astro (recommended):

---
// In BaseLayout.astro, after existing imports:
import { ChatProvider, ChatWidget } from '@teei/chat-widget';
const path = Astro.url.pathname;
const isSkillsAcademy = path.startsWith('/skills-academy/');
// Check for volunteer session cookie
const volunteerSession = Astro.cookies.get('volunteer_session')?.value;
const isAuthenticated = Boolean(volunteerSession);
// Determine platform and role
const widgetPlatform = isSkillsAcademy ? 'skills-academy' : 'website';
const widgetRole = (isSkillsAcademy && isAuthenticated) ? 'volunteer' : 'public';
const lang = Astro.currentLocale ?? 'en';
---

Then in the body:

{showWidget && (
<ChatProvider
client:idle
apiUrl="https://knowledge-api.theeducationalequalityinstitute.org"
platform={widgetPlatform}
userRole={widgetRole}
language={lang}
>
<ChatWidget
greeting={isSkillsAcademy
? "Hi! I can help you with Skills Academy courses, how to access DataCamp or eCornell, and programme requirements. What do you need?"
: "Hi! I'm the TEEI Knowledge Assistant. What would you like to know?"
}
/>
</ChatProvider>
)}

Option B — Dedicated SkillsAcademyLayout.astro (if the Skills Academy has its own layout):

SkillsAcademyLayout.astro
---
import { ChatProvider, ChatWidget } from '@teei/chat-widget';
import '@teei/chat-widget/styles';
// Read volunteer session
const volunteerSession = Astro.cookies.get('volunteer_session')?.value;
const userRole = volunteerSession ? 'volunteer' : 'public';
const lang = Astro.currentLocale ?? 'en';
---
<html>
<body>
<slot />
<ChatProvider
client:idle
apiUrl="https://knowledge-api.theeducationalequalityinstitute.org"
platform="skills-academy"
userRole={userRole}
language={lang}
>
<ChatWidget
greeting="Hi! I can help with DataCamp, eCornell, Splunk, and Automation Anywhere access, as well as programme requirements and certifications."
/>
</ChatProvider>
</body>
</html>

Skills Academy-specific knowledge content

Tag Skills Academy content for the skills-academy platform and volunteer role in Vectorize. This includes:

  • Course access instructions (DataCamp, eCornell, Splunk, Automation Anywhere, BOOKR Class)
  • Certification pathways and requirements
  • How to access the itslearning LMS
  • Skills Academy programme overview and eligibility
  • Technical troubleshooting (browser requirements, login issues with external platforms)

Ingest this content:

Terminal window
cd teei-knowledge
node scripts/ingest.mjs \
--platform skills-academy \
--role volunteer \
--dir docs/src/content/docs/en/platforms/skills-academy/

Course platform integrations (external)

DataCamp, eCornell, Splunk, and Automation Anywhere are external platforms. The chat widget cannot answer questions about content inside those platforms — only about TEEI’s processes for accessing them.

Clearly document in the knowledge content what the widget can and cannot answer:

Question typeWidget can answer
”How do I get a DataCamp invitation?”Yes
”What courses are available on DataCamp?”Yes (general list)
“How do I solve this DataCamp exercise?”No — DataCamp-specific
”Where is my eCornell certificate?”Yes (eCornell login → Credentials page)
“What does the Splunk course cover?”Yes (overview only)

Verification checklist

  • Widget appears on /skills-academy/ with platform="skills-academy"
  • Unauthenticated visit to /skills-academy/userRole="public" in API request
  • Authenticated visit (with volunteer_session cookie) → userRole="volunteer" in API request
  • Volunteer-specific content returned (course access instructions)
  • Widget on other main site pages still uses platform="website" and userRole="public"
  • No build errors: npx astro check && npm run build

Gotchas

DataCamp cookie name conflict: DataCamp uses cookies for their own session management when embedded. These are third-party cookies on a different domain — they do not conflict with volunteer_session. No action needed.

BOOKR Class iframes: Some Skills Academy pages embed BOOKR Class reading content in iframes. Iframes create a stacking context. If the chat widget panel appears behind a BOOKR iframe, add z-index: -1 to the iframe’s container rather than raising the widget’s z-index.

External platform logins: Learners often ask how to log in to DataCamp, eCornell, etc. These answers depend on the invitation email flow TEEI manages. Ensure the knowledge content includes the exact steps TEEI uses to grant access — not the generic platform onboarding flow.

Certificate verification: eCornell and Automation Anywhere certificates are issued on the external platform. The widget can explain where to find certificates (the external platform’s credential page) but cannot fetch or display them.