SkillAtlasSkill 详情

html-portal-generator

Mentioned in Awesome Codex CLI

审核状态:已审核Quality 72Security 52

复制安装命令

用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。

复制前请先查看来源、License 和安全提示。

项目 README

来源文件:README.md

抓取于 2026年9月13日

Skrills

Skrills Icon

Crates.io Downloads Docs CI Coverage Audit License: MIT Mentioned in Awesome Codex CLI

Write a skill once, use it everywhere. Skrills validates and syncs skills, commands, agents, MCP servers, and hooks across Claude Code, Codex CLI, GitHub Copilot CLI, and Cursor, all from a single Rust binary.

Install · User Guide · CLI Reference · FAQ · Changelog

Install

macOS / Linux:

curl -LsSf https://raw.githubusercontent.com/athola/skrills/HEAD/scripts/install.sh | sh

Windows PowerShell:

powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command ^
"Remove-Item alias:curl -ErrorAction SilentlyContinue; iwr https://raw.githubusercontent.com/athola/skrills/HEAD/scripts/install.ps1 -UseBasicParsing | iex"

Or cargo install skrills. See the installation guide for HTTP transport and service setup.

Everyday use

Skrills handles the loop of writing skills and keeping every CLI current. The common jobs:

Make your Claude skills work everywhere. Codex and Copilot are strict about frontmatter; Cursor uses its own rule format. Detect and fix the incompatibilities, then push to the other CLIs:

skrills validate --target both --autofix   # fix missing/invalid frontmatter and body
skrills sync-all                            # mirror everything to all four CLIs

Keep two environments in sync. Edit in one, mirror to another. File hashing preserves manual edits on both sides:

skrills sync --from cursor --to claude

Trim context-window cost. Surface your token-heaviest skills with reduction suggestions:

skrills analyze --min-tokens 1000 --suggestions

Watch what's loaded, live. cold-window continuously re-reads your plugins, skills, commands, and subagents, applying per-source token attribution and tiered alerts. Render it as a terminal TUI or a browser dashboard (or both):

skrills cold-window --tui                    # live TUI in this terminal (q / Ctrl-C to quit)
skrills cold-window --browser --port 8888    # same engine, browser dashboard at /dashboard

Keep it always-on in Zellij. Dedicate a pane to the TUI that respawns if it exits. Save as ~/.config/zellij/layouts/skrills.kdl and launch with zellij --layout skrills:

layout {
    tab name="cold-window" focus=true {
        pane command="bash" {
            // Loop respawns the TUI after a crash or reboot.
            args "-c" "until skrills cold-window --tui; do echo restarting...; sleep 2; done"
        }
    }
}

Already inside a Zellij session? Open it in a split without a layout file: zellij run -d down -- bash -c 'until skrills cold-window --tui; do sleep 2; done'.

Skrills cold-window TUI

Let other tools call Skrills. The MCP server exposes 36 tools (validation, sync, intelligence, research) over stdio or HTTP:

skrills serve --http 127.0.0.1:3000 --open

See the quickstart tutorial for a full walkthrough and the CLI reference for every command, including skill lifecycle tools (skill-deprecate, skill-rollback, skill-import, skill-score, skill-catalog).

Skrills Demo

Supported environments

Skrills syncs eight asset types across four CLIs. Each cell reflects what the adapter reads and writes today:

AssetClaude CodeCodex CLICopilot CLICursor
SkillsYYYY
CommandsYY--Y
AgentsY--YY
MCP ServersYYYY
HooksY----Y
Instructions / RulesY--YY
PreferencesYYY--
Plugin AssetsY----Y

A dash means that asset doesn't sync to that CLI, either because the CLI has no equivalent (Copilot CLI has no slash commands) or because the mapping isn't built yet (Cursor preferences). Plugin assets sync to Cursor's plugins/local/ so synced plugins appear installed, and stale entries are pruned automatically. See the sync guide for details.

CI integration

Validate skills on every pull request with the reusable GitHub Action:

- uses: athola/skrills/.github/actions/validate-skills@v0.8.2
  with:
    targets: all
    strict: true
    path: skills/

Configuration

Persistent settings live in ~/.skrills/config.toml (precedence: CLI flags > environment variables > config file):

[serve]
auth_token = "your-secret-token"
tls_auto = true
cors_origins = "https://app.example.com"

See security docs for TLS setup and the FAQ for environment variables.

Documentation

ResourceDescription
User GuidePrimary documentation (mdBook)
CLI ReferenceAll commands with examples
Sync GuideCross-CLI sync workflows
MCP TutorialServer setup and tool reference
ArchitectureCrate graph and runtime flow
SecurityAuth, TLS, threat model
ChangelogRelease history

Limitations

  • Skrills validates and syncs files; it does not inject skills into prompts at runtime.
  • Session-history mining works best with recent Claude Code / Codex CLI versions.
  • LLM-based skill generation requires ANTHROPIC_API_KEY or OPENAI_API_KEY.

Contributing

make lint test --quiet

Builds on stable Rust. See the development guide and process guidelines. Update docs and tests with code. Report bugs with your OS, skrills --version, and logs (--trace-wire for MCP). For security, see the security policy.

License

MIT

Star History Chart

数据与 AI

高风险

  • 来源需自行核对维护者身份。
  • 包含脚本或命令调用,安装前请复核。
  • 可能需要外部 token、网络权限或第三方服务。
  • 存在潜在风险命令,请谨慎安装。
  • 扫描发现:1 条。

Codex — Git Clone 安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 克隆仓库:git clone https://github.com/athola/skrills.git
  3. 将 "skills/html-portal-generator" 文件夹复制到 Codex 的 skills 目录中。
  4. 重启 Codex 让新的 skill 生效。

Codex — 手动复制安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 从源仓库下载 SKILL.md 及相关文件。
  3. 在 Codex 的 skills 目录中创建新文件夹。
  4. 将所有 skill 文件复制到新文件夹中。
  5. 重启 Codex 让新的 skill 生效。

Claude Code — Git Clone 安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 克隆仓库:git clone https://github.com/athola/skrills.git
  3. 将 "skills/html-portal-generator" 文件夹复制到 Claude Code 的 skills 目录中。
  4. 重启 Claude Code 让新的 skill 生效。

Claude Code — 手动复制安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 从源仓库下载 SKILL.md 及相关文件。
  3. 在 Claude Code 的 skills 目录中创建新文件夹。
  4. 将所有 skill 文件复制到新文件夹中。
  5. 重启 Claude Code 让新的 skill 生效。

Cursor — Git Clone 安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 克隆仓库:git clone https://github.com/athola/skrills.git
  3. 将 "skills/html-portal-generator" 文件夹复制到 Cursor 的 skills 目录中。
  4. 重启 Cursor 让新的 skill 生效。

Cursor — 手动复制安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 从源仓库下载 SKILL.md 及相关文件。
  3. 在 Cursor 的 skills 目录中创建新文件夹。
  4. 将所有 skill 文件复制到新文件夹中。
  5. 重启 Cursor 让新的 skill 生效。

GitHub Copilot — Git Clone 安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 克隆仓库:git clone https://github.com/athola/skrills.git
  3. 将 "skills/html-portal-generator" 文件夹复制到 GitHub Copilot 的 skills 目录中。
  4. 重启 GitHub Copilot 让新的 skill 生效。

GitHub Copilot — 手动复制安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 从源仓库下载 SKILL.md 及相关文件。
  3. 在 GitHub Copilot 的 skills 目录中创建新文件夹。
  4. 将所有 skill 文件复制到新文件夹中。
  5. 重启 GitHub Copilot 让新的 skill 生效。

Windsurf — Git Clone 安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 克隆仓库:git clone https://github.com/athola/skrills.git
  3. 将 "skills/html-portal-generator" 文件夹复制到 Windsurf 的 skills 目录中。
  4. 重启 Windsurf 让新的 skill 生效。

Windsurf — 手动复制安装

  1. 安装前请先查看来源仓库和风险报告。
  2. 从源仓库下载 SKILL.md 及相关文件。
  3. 在 Windsurf 的 skills 目录中创建新文件夹。
  4. 将所有 skill 文件复制到新文件夹中。
  5. 重启 Windsurf 让新的 skill 生效。
查看 SKILL.md 原文
name: html-portal-generator
description: Convert a codebase into a self-contained HTML portal app for ingestion into AI application systems. Produces a single deployable HTML file with embedded CSS, JS, and data.
version: 1.0.0

HTML Portal Generator

Convert any codebase into a single, self-contained HTML portal application. The output is one .html file with embedded styles, scripts, and data that works offline, on file:// protocol, and can be uploaded into AI application portals.

When to Use

  • You have a codebase (CLI tool, library, API, framework) and need an interactive HTML representation of its functionality
  • The HTML will be uploaded into a smart AI portal or application integration system
  • You need all features to work standalone without a running server
  • You want users to explore, validate, analyze, and interact with the product from a browser

Process

Follow these phases in order. Each phase builds on the previous.

Phase 1: Codebase Analysis

Understand what the product does before writing any HTML.

  1. Read project documentation: README, CLAUDE.md, architecture docs, changelogs
  2. Identify core crates/packages: Map each module's purpose and public API
  3. Catalog user-facing features: CLI commands, API endpoints, configuration options
  4. Extract data structures: Response types, configuration schemas, enum values
  5. Find existing UI code: Dashboards, templates, stylesheets (reuse their design language)

Produce a mental inventory:

  • Feature list (what the product does)
  • Data catalog (what entities/types exist)
  • Command/API reference (how users interact)
  • Visual identity (colors, fonts, layout patterns from existing UI)

Phase 2: Reference Analysis (if provided)

If the user provides a reference HTML app:

  1. Read the first and last ~3KB to understand structure (large files may be minified)
  2. Identify the design pattern: CSS variables, layout system, component structure
  3. Note the interaction model: controls bar, status bar, grid layout, tab navigation
  4. Extract the color palette and typography from CSS custom properties

Phase 3: Architecture Design

Design the portal as a single-page app with tab navigation.

Required structural elements:

  • Sticky header with product name, version badge, and summary stats
  • Tab navigation bar for switching between views
  • Main container with max-width for readability
  • Sticky status bar footer with links to docs/repo
  • Toast notification system for user feedback

View planning - map each product feature to a view:

Feature TypeView Pattern
Entity browsing (skills, packages, endpoints)Card grid with search/filter/sort and detail panel
Validation/checkingSplit editor (textarea input) and results panel
Analysis/metricsInput, stat cards, and bar charts
Configuration/creationForm inputs, live preview, and download
Format conversionSide-by-side input/output with target selector
Reference docs (commands, APIs)Searchable/filterable list with copy-on-click
Status/compatibilityMatrix grid or table
Dashboard/overviewStat cards, quick actions, and recent items

Every view must work 100% standalone. No external API calls required. Embed demo data. Add optional live-server connection as a bonus.

Phase 4: Data Embedding

Convert real product data into JavaScript arrays embedded in the HTML.

  1. Scan the actual codebase for entities (skills, commands, endpoints, types)
  2. Extract metadata from source files (frontmatter, doc comments, type definitions)
  3. Generate realistic validation states based on actual product rules
  4. Include failure reasons as tooltip/detail text so users understand why things pass/fail
  5. Store as const arrays in the <script> block - no external JSON files

For large datasets (100+ items), use a build script to extract and format the data rather than hand-writing it.

If the product has local files users might want to scan:

  • Add a "Scan Local" button using the File System Access API (showDirectoryPicker)
  • Walk directories recursively, parse file frontmatter/headers
  • Replace the embedded data with live-scanned results
  • Store full file content on scanned items for downstream analysis

Phase 5: Implementation

Build the HTML file following these rules:

Single-file architecture:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Product - Portal</title>
  <style>/* All CSS here */</style>
</head>
<body>
  <!-- All HTML here -->
  <script>/* All JS here, wrapped in IIFE */</script>
</body>
</html>

CSS requirements:

  • Use CSS custom properties (:root { --bg: ...; }) for theming
  • Support dark mode (default) and light mode via @media (prefers-color-scheme: light)
  • Reuse the product's existing color palette if it has one
  • Mobile-responsive with @media (max-width: ...) breakpoints
  • Style scrollbars, focus states, and transitions

JavaScript requirements:

  • Wrap everything in an IIFE: (function() { 'use strict'; ... })();
  • No inline onclick handlers - use addEventListener exclusively
  • Clipboard operations must fall back to document.execCommand('copy') for file:// protocol
  • Every click should produce visible feedback (toast, navigation, highlight)
  • Autocomplete/datalist for name inputs that reference the embedded data
  • Tab navigation via data-view attributes and .active class toggling

Interactivity checklist - every element the user can see must do something when clicked:

  • Cards/list items: select, show detail, or navigate
  • Buttons: perform action with toast feedback
  • Reference items: copy to clipboard on click
  • Status indicators: show tooltip with explanation on hover
  • External links: open in new tab with target="_blank" rel="noopener"
  • Quick actions: run in-browser if possible, otherwise copy CLI command and link to docs

Phase 6: Feature Implementation Patterns

Entity Browser (the main catalog view):

- Search input (filters by name and description)
- Source/category dropdown filter
- Quality/status dropdown filter
- Sort selector (alpha, by source, by status)
- Card grid with: name, source badge, description, validation tags
- Validation tags with hover tooltips showing failure reasons
- Detail panel (sticky sidebar) with full metadata on click
- Export button (download as JSON)
- Local scan button (File System Access API)

Validator:

- Target selector (individual CLI or "All")
- Textarea for pasting content
- Validate button - runs client-side validation logic
- Autofix button - actually modifies content:
  - Fills missing frontmatter fields
  - Converts names to kebab-case
  - Scaffolds body sections if too short
  - Adds target-specific fields (e.g., globs for Cursor)
- Quality score panel (0-100 with visual ring)
- Download button for the validated/fixed file
- Load Sample button with realistic example content

Token/Size Analyzer:

- Name input with datalist autocomplete from catalog
- Load button to pull content from catalog by name
- Textarea for content
- Stat cards: tokens, words, lines, characters
- Progress bar with percentage (label outside bar for small values)
- Size category with color coding
- Optimization suggestions list

Format Converter:

- Source format selector
- Target format selector
- Convert button (single target)
- Convert All button (generates all formats with tab switcher)
- Download button
- Side-by-side input/output layout

Creator/Builder:

- Form fields for metadata (name, description, version, deps)
- Target-specific fields shown/hidden based on selection
- Body textarea with placeholder template
- Live preview panel (pre element)
- File path display showing where to save for each CLI
- Dependency graph visualization
- Download and Send-to-Validator buttons

Reference views (commands, tools, APIs):

- Search input
- Category filter
- Each item shows: name/command, description, usage guidance
- Click to copy, with toast confirmation
- Usage guidance paragraph below each item explaining when/how to use it

Dashboard:

- Stat cards row (total items, categories, etc.)
- Quick Actions panel:
  - In-browser actions (green "runs here" badge): actually execute
  - CLI-only actions (muted "CLI only" badge): copy command and link to docs
- Supporting info panels with clickable items
- Recent items grid linking to the browser view

Phase 7: Quality Checks

Before delivering, verify:

  1. JS syntax: node -e "new Function(scriptContent)" parses without error
  2. All tabs work: Each data-view has a matching id="view-..." element
  3. No emdashes: Replace all — with - (AI slop reduction)
  4. No dead clicks: Every visible element does something on click
  5. Clipboard works on file://: All copy operations use the execCommand fallback
  6. Tooltips on status indicators: Hover explains why something passed/failed
  7. Responsive: Views stack on mobile
  8. Open in browser: open filename.html and manually test each tab

Phase 8: Iteration

The user will test and request changes. Common requests:

  • "X doesn't do anything when I click it" - Add click handler with visible feedback
  • "Information is missing" - Add data fields, tooltips, or guidance text
  • "It should use my actual data" - Scan real files and embed or add local scan
  • "Autofix doesn't change anything" - Make it fix more issues, scaffold content
  • "The percentage doesn't show" - Move labels outside narrow bars
  • "Link to docs" - Add target="_blank" links to product documentation

Output

A single .html file (typically 60-120KB) that:

  • Works by double-clicking in Finder/Explorer
  • Works on file:// protocol in any browser
  • Optionally connects to a live server for real-time data
  • Optionally scans local files via browser directory picker
  • Can be uploaded directly into AI application portals

发现问题?提交给管理员复核

评分:

评论 (0)

暂无评论,成为第一个评论者吧!