AnonSkill — Zero-Knowledge GitHub Skill Verification
What it does
AnonSkill lets developers prove their technical skills to employers without ever exposing source code. Connect your GitHub account, and an AI agent analyzes your repository metadata — commit frequency, language distribution, activity signals — and generates a verified skill report. No source code is read. No commit messages. No PII.
Inspiration
Developers often face a frustrating paradox: to get a job, you need to prove your skills, but proving your skills means sharing private code you can't share. We wanted to build a system where an AI agent could act on your behalf — accessing your private GitHub repositories securely — without you ever handing over your credentials or your code.
Auth0 Token Vault made this possible.
How we built it
The core pattern: AI Agent + Token Vault
The key insight is that Auth0 Token Vault acts as a secure credential broker between the user and the AI agent. The agent never holds credentials directly — it requests them through Auth0 at the moment they're needed, uses them for a single request, and they're gone.
Tech stack:
- Frontend: Next.js 14 (App Router)
- Backend: Python 3.13 + FastAPI
- Identity: Auth0 for AI Agents — Token Vault + Connected Accounts
- AI: Google Gemini Flash LTS
- GitHub API: PyGithub
The Token Vault flow
Token Vault storage does NOT happen automatically during login. We implemented the full Connected Accounts flow via Auth0's My Account API:
POST /me/v1/connected-accounts/connectwith PKCE → getconnect_uri- Browser redirects to GitHub for authorization
POST /me/v1/connected-accounts/complete→ Auth0 stores the GitHub token in Token Vault- Token Exchange grant retrieves the GitHub token server-side when the agent needs it
This required configuring Multi-Resource Refresh Tokens (MRRT), enabling the My Account API, and using a GitHub App (not OAuth App) — since only GitHub Apps issue refresh tokens.
The AI pipeline
Once the GitHub token is retrieved from Token Vault, the agent:
- Fetches all accessible repositories (personal + org)
- Collects quantitative metrics only: language byte counts, weekly commit frequency, repo size, CI signals
- Sends metrics to Gemini — no source code, no commit messages
- Returns a structured
VerificationReportwith skill level, security score, languages detected, and AI reasoning
User control
Users configure what gets analyzed before running:
- Step 1: Exclude languages (e.g. HTML, CSS) that don't reflect engineering depth
- Step 2: Choose which repositories to include
- The agent analyzes the top 3 most active repos from the selection
Challenges
Token Vault doesn't populate automatically. The biggest surprise was discovering that logging in via GitHub social connection does not store the token in Token Vault — it requires a separate Connected Accounts flow. Figuring out the MRRT + My Account API + PKCE combination took significant debugging.
GitHub App vs OAuth App. Token Vault requires refresh tokens, and only GitHub Apps issue them. Switching from OAuth App to GitHub App mid-build required reconfiguring Auth0's GitHub connection and updating the entire auth flow.
Org repository access. GitHub App tokens only access org repos where the app is installed, unlike OAuth Apps which use scope-based access. We solved this by having users install the GitHub App on their organizations.
What we learned
Auth0 for AI Agents introduces a new pattern: delegated credential access for AI agents. Instead of agents storing credentials themselves (a major security risk), Token Vault acts as a secure intermediary. The agent proves who it's acting for (via the user's Auth0 token), and Auth0 returns the third-party credential for that single operation.
This pattern is applicable far beyond skill verification — any AI agent that needs to act on a user's behalf (sending emails, managing files, calling APIs) can use Token Vault to do so without credential exposure.
Zero-knowledge guarantees
- Raw source code is never fetched
- GitHub token lives in memory only for the duration of one request
- No commit messages, email addresses, or contributor names are collected
- The GitHub token is never returned to the frontend or written to any log
Built With
- fastapi
- next
Log in or sign up for Devpost to join the conversation.