Universal Login Page logo

Universal Login Page

Community
jiushiwon
universal-login-page

第三方授权鉴权体系。账户互通、绑定、解绑、多系统账户统一管理。服务于广大 VibeCoder,让多个系统的账户可以绑定互通。触发词:"第三方授权"、"账户互通"、"多系统登录"、"绑定账户"、"解绑账户"、"统一登录"、"VibeCode 鉴权"。

Overview

Publisherjiushiwon
Repositorywg-skills
Skill nameuniversal-login-page
Stars
123
Forks
38
Bundled files
1
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by jiushiwon on GitHub. Read the source before you install it.

Installation

Install the Universal Login Page AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/jiushiwon/wg-skills/tree/main/vibeCoding/frontend/vue/vue-base-skill/universal-login-page
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/jiushiwon/wg-skills.git /tmp/wg-skills
mkdir -p .claude/skills
cp -r /tmp/wg-skills/vibeCoding/frontend/vue/vue-base-skill/universal-login-page .claude/skills/universal-login-page
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Universal Login Page in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Universal Login Page on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Universal Login Page is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

universal-login-page

第三方授权鉴权体系技能。实现多系统账户绑定互通,服务于 VibeCoder。

定位

  • 用途:多系统账户统一鉴权 + 绑定互通
  • 目标用户:VibeCoder(个人开发者、小团队)
  • 核心价值:一个账户可以绑定多个系统的账户,实现单点登录

核心概念

概念说明
主账户鉴权体系中的唯一身份(手机/邮箱/用户名)
第三方账户各业务系统的账户(通过 AppID 区分)
绑定主账户与第三方账户的关联关系
应用接入鉴权体系的业务系统

功能清单

#功能说明
1主账户注册/登录手机/邮箱/用户名密码
2第三方账户绑定绑定已有账户或创建新账户
3第三方账户解绑解除绑定关系
4绑定列表查看所有已绑定的账户
5应用管理注册/管理接入的应用
6API 密钥应用调用 API 的凭证
7权限管理角色/权限 CRUD

组件结构

universal-login-page/
├── SKILL.md                    # 本文件
├── README.md                   # 使用文档
├── templates/
│   ├── UniversalLogin.vue       # 统一登录入口(支持多模式)
│   ├── LoginPage.vue           # 主账户登录页
│   ├── RegisterPage.vue       # 主账户注册页
│   ├── BindAccountPage.vue     # 账户绑定页
│   ├── BindListPage.vue       # 绑定列表页
│   ├── AppManagePage.vue      # 应用管理页
│   └── AccountSettings.vue     # 账户设置页
└── references/
    └── login-contract.md       # 登录契约

使用场景

场景 1:账户绑定

VibCoder 开发了 3 个系统:
- 系统 A:博客系统
- 系统 B:电商系统
- 系统 C:后台管理系统

用户可以用不同账户登录不同系统,然后通过"账户绑定"功能将它们关联起来。

场景 2:统一登录

用户首次登录系统 A,创建主账户。
后续登录系统 B 时,可以选择"使用已绑定的账户登录"或"绑定到现有主账户"。

场景 3:应用接入

其他 VibCoder 开发了新系统,可以:
1. 在鉴权体系注册应用,获取 AppID + AppSecret
2. 接入登录 API,实现第三方登录
3. 用户可以在任意已绑定的应用间切换

统一入口组件

vue
<template>
  <UniversalAuth
    mode="login"                    <!-- login/register/bind/list/settings -->
    :api-base="'/api/auth'"
    :app-id="'system-a'"           <!-- 当前应用 ID -->
    @success="handleSuccess"
    @error="handleError"
  />
</template>

Props

prop类型默认值说明
modestring'login'模式:login/register/bind/list/settings
apiBasestring'/api/auth'API 基础路径
appIdstring-当前应用 ID
showAppsbooleantrue是否显示应用选择
titlestring'统一登录'标题

Events

事件参数说明
success{ token, user, appId }登录成功
error{ code, message }登录失败
bind-success{ provider, account }绑定成功
unbind-success{ provider }解绑成功

页面组件

1. 账户绑定页 (BindAccountPage)

vue
<!-- 绑定流程:选择绑定方式 → 验证身份 → 确认绑定 -->
<template>
  <BindAccountPage
    :main-account="currentUser"
    @bind="handleBind"
    @cancel="handleCancel"
  />
</template>

<!-- 支持的绑定方式 -->
<!-- 1. 扫码绑定:主账户生成二维码,第三方应用扫码确认 -->
<!-- 2. 验证码绑定:输入手机/邮箱验证码 -->
<!-- 3. 密码绑定:输入主账户密码确认 -->

2. 绑定列表页 (BindListPage)

vue
<template>
  <BindListPage
    :bindings="bindingList"
    @unbind="handleUnbind"
    @set-default="handleSetDefault"
  />
</template>

<!-- 显示:应用图标 + 账户名 + 绑定时间 + 操作 -->

3. 应用管理页 (AppManagePage)

vue
<template>
  <AppManagePage
    :apps="myApps"
    @create="handleCreateApp"
    @edit="handleEditApp"
    @delete="handleDeleteApp"
  />
</template>

<!-- 应用列表:AppName + AppID + Status + CreatedAt -->
<!-- 操作:编辑 / 删除 / 查看密钥 -->

契约权威源

表单字段类型 → 组件映射规范见 vue-form-skill/references/form-contract.md

接口契约见 frontend-request-skill/references/api-contract.md

验证技能清单

本技能用于验证以下技能协同:

验证项技能
表单契约驱动vue-form-skill
字段类型映射 (subType)vue-form-skill
图片上传vue-upload-skill
表格展示vue-table-skill
列表页vue-list-page-skill
API 调用frontend-request-skill

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Universal Login Page AI skill do?

第三方授权鉴权体系。账户互通、绑定、解绑、多系统账户统一管理。服务于广大 VibeCoder,让多个系统的账户可以绑定互通。触发词:"第三方授权"、"账户互通"、"多系统登录"、"绑定账户"、"解绑账户"、"统一登录"、"VibeCode 鉴权"。

Why use Universal Login Page on TypingMind?

Because you install it once and use it with any model. Universal Login Page is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Universal Login Page in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jiushiwon/wg-skills/tree/main/vibeCoding/frontend/vue/vue-base-skill/universal-login-page. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Universal Login Page?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Universal Login Page?

As many as you like. As long as a model supports skills, you can use Universal Login Page with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Universal Login Page AI skill free?

Yes. It is published on GitHub by jiushiwon under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇